{
  "version": 3,
  "sources": ["../node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.cjs", "../node_modules/@eslint-community/eslint-utils/src/get-innermost-scope.mjs", "../node_modules/@eslint-community/eslint-utils/src/find-variable.mjs", "../node_modules/@eslint-community/eslint-utils/src/token-predicate.mjs", "../node_modules/@eslint-community/eslint-utils/src/get-function-head-location.mjs", "../node_modules/@eslint-community/eslint-utils/src/get-static-value.mjs", "../node_modules/@eslint-community/eslint-utils/src/get-string-if-constant.mjs", "../node_modules/@eslint-community/eslint-utils/src/get-property-name.mjs", "../node_modules/@eslint-community/eslint-utils/src/get-function-name-with-kind.mjs", "../node_modules/@eslint-community/eslint-utils/src/has-side-effect.mjs", "../node_modules/@eslint-community/eslint-utils/src/is-parenthesized.mjs", "../node_modules/@eslint-community/eslint-utils/src/pattern-matcher.mjs", "../node_modules/@eslint-community/eslint-utils/src/reference-tracker.mjs", "../node_modules/@eslint-community/eslint-utils/src/index.mjs", "../node_modules/@typescript-eslint/utils/dist/ast-utils/eslint-utils/astUtilities.js", "../node_modules/@typescript-eslint/utils/dist/ast-utils/eslint-utils/PatternMatcher.js", "../node_modules/@typescript-eslint/utils/dist/ast-utils/eslint-utils/predicates.js", "../node_modules/@typescript-eslint/utils/dist/ast-utils/eslint-utils/ReferenceTracker.js", "../node_modules/@typescript-eslint/utils/dist/ast-utils/eslint-utils/scopeAnalysis.js", "../node_modules/@typescript-eslint/utils/dist/ast-utils/eslint-utils/index.js", "../node_modules/@typescript-eslint/utils/dist/ast-utils/helpers.js", "../node_modules/@typescript-eslint/utils/dist/ast-utils/misc.js", "../node_modules/@typescript-eslint/types/dist/generated/ast-spec.js", "../node_modules/@typescript-eslint/types/dist/lib.js", "../node_modules/@typescript-eslint/types/dist/parser-options.js", "../node_modules/@typescript-eslint/types/dist/ts-estree.js", "../node_modules/@typescript-eslint/types/dist/index.js", "../node_modules/@typescript-eslint/utils/dist/ts-estree.js", "../node_modules/@typescript-eslint/utils/dist/ast-utils/predicates.js", "../node_modules/@typescript-eslint/utils/dist/ast-utils/index.js", "../node_modules/@typescript-eslint/utils/dist/eslint-utils/deepMerge.js", "../node_modules/@typescript-eslint/utils/dist/eslint-utils/applyDefault.js", "../node_modules/@typescript-eslint/utils/dist/eslint-utils/parserSeemsToBeTSESLint.js", "../node_modules/@typescript-eslint/utils/dist/eslint-utils/getParserServices.js", "../node_modules/@typescript-eslint/utils/dist/eslint-utils/InferTypesFromRule.js", "../node_modules/@typescript-eslint/utils/dist/eslint-utils/nullThrows.js", "../node_modules/@typescript-eslint/utils/dist/eslint-utils/RuleCreator.js", "../node_modules/@typescript-eslint/utils/dist/eslint-utils/index.js", "../node_modules/@typescript-eslint/utils/dist/json-schema.js", "../node_modules/@typescript-eslint/utils/dist/ts-eslint/AST.js", "../node_modules/@typescript-eslint/utils/dist/ts-eslint/Config.js", "../node_modules/eslint/package.json", "../node_modules/ms/index.js", "../node_modules/debug/src/common.js", "../node_modules/debug/src/browser.js", "../node_modules/has-flag/index.js", "../node_modules/supports-color/index.js", "../node_modules/debug/src/node.js", "../node_modules/debug/src/index.js", "../node_modules/eslint/lib/rules/utils/lazy-loading-rule-map.js", "../node_modules/eslint/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.cjs", "../node_modules/esutils/lib/ast.js", "../node_modules/esutils/lib/code.js", "../node_modules/esutils/lib/keyword.js", "../node_modules/esutils/lib/utils.js", "../node_modules/acorn/dist/acorn.js", "../node_modules/acorn-jsx/xhtml.js", "../node_modules/acorn-jsx/index.js", "../node_modules/espree/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.cjs", "../node_modules/espree/dist/espree.cjs", "../node_modules/escape-string-regexp/index.js", "../node_modules/eslint/lib/shared/ast-utils.js", "../node_modules/eslint/conf/globals.js", "../node_modules/eslint/conf/ecma-version.js", "../node_modules/eslint/lib/rules/utils/ast-utils.js", "../node_modules/eslint/lib/rules/accessor-pairs.js", "../node_modules/eslint/lib/rules/array-bracket-newline.js", "../node_modules/eslint/lib/rules/array-bracket-spacing.js", "../node_modules/eslint/lib/rules/utils/code-path-utils.js", "../node_modules/eslint/lib/rules/array-callback-return.js", "../node_modules/eslint/lib/rules/array-element-newline.js", "../node_modules/eslint/lib/rules/arrow-body-style.js", "../node_modules/eslint/lib/rules/arrow-parens.js", "../node_modules/eslint/lib/rules/arrow-spacing.js", "../node_modules/eslint/lib/rules/block-scoped-var.js", "../node_modules/eslint/lib/rules/block-spacing.js", "../node_modules/eslint/lib/rules/brace-style.js", "../node_modules/eslint/lib/rules/callback-return.js", "../node_modules/eslint/lib/rules/camelcase.js", "../node_modules/eslint/lib/rules/capitalized-comments.js", "../node_modules/eslint/lib/rules/class-methods-use-this.js", "../node_modules/eslint/lib/rules/comma-dangle.js", "../node_modules/eslint/lib/rules/comma-spacing.js", "../node_modules/eslint/lib/rules/comma-style.js", "../node_modules/eslint/lib/shared/string-utils.js", "../node_modules/eslint/lib/rules/complexity.js", "../node_modules/eslint/lib/rules/computed-property-spacing.js", "../node_modules/eslint/lib/rules/consistent-return.js", "../node_modules/eslint/lib/rules/consistent-this.js", "../node_modules/eslint/lib/rules/constructor-super.js", "../node_modules/eslint/lib/rules/curly.js", "../node_modules/eslint/lib/rules/default-case.js", "../node_modules/eslint/lib/rules/default-case-last.js", "../node_modules/eslint/lib/rules/default-param-last.js", "../node_modules/eslint/lib/rules/dot-location.js", "../node_modules/eslint/lib/rules/utils/keywords.js", "../node_modules/eslint/lib/rules/dot-notation.js", "../node_modules/eslint/lib/rules/eol-last.js", "../node_modules/eslint/lib/rules/eqeqeq.js", "../node_modules/eslint/lib/rules/for-direction.js", "../node_modules/eslint/lib/rules/func-call-spacing.js", "../node_modules/eslint/lib/rules/func-name-matching.js", "../node_modules/eslint/lib/rules/func-names.js", "../node_modules/eslint/lib/rules/func-style.js", "../node_modules/eslint/lib/rules/function-call-argument-newline.js", "../node_modules/eslint/lib/rules/function-paren-newline.js", "../node_modules/eslint/lib/rules/generator-star-spacing.js", "../node_modules/eslint/lib/rules/getter-return.js", "../node_modules/eslint/lib/rules/global-require.js", "../node_modules/eslint/lib/rules/grouped-accessor-pairs.js", "../node_modules/eslint/lib/rules/guard-for-in.js", "../node_modules/eslint/lib/rules/handle-callback-err.js", "../node_modules/eslint/lib/rules/id-blacklist.js", "../node_modules/eslint/lib/rules/id-denylist.js", "../node_modules/eslint/lib/rules/id-length.js", "../node_modules/eslint/lib/rules/id-match.js", "../node_modules/eslint/lib/rules/implicit-arrow-linebreak.js", "../node_modules/eslint/lib/rules/indent.js", "../node_modules/eslint/lib/rules/indent-legacy.js", "../node_modules/eslint/lib/rules/init-declarations.js", "../node_modules/eslint/lib/rules/jsx-quotes.js", "../node_modules/eslint/lib/rules/key-spacing.js", "../node_modules/eslint/lib/rules/keyword-spacing.js", "../node_modules/eslint/lib/rules/line-comment-position.js", "../node_modules/eslint/lib/rules/linebreak-style.js", "../node_modules/eslint/lib/rules/lines-around-comment.js", "../node_modules/eslint/lib/rules/lines-around-directive.js", "../node_modules/eslint/lib/rules/lines-between-class-members.js", "../node_modules/eslint/lib/rules/logical-assignment-operators.js", "../node_modules/eslint/lib/rules/max-classes-per-file.js", "../node_modules/eslint/lib/rules/max-depth.js", "../node_modules/eslint/lib/rules/max-len.js", "../node_modules/eslint/lib/rules/max-lines.js", "../node_modules/eslint/lib/rules/max-lines-per-function.js", "../node_modules/eslint/lib/rules/max-nested-callbacks.js", "../node_modules/eslint/lib/rules/max-params.js", "../node_modules/eslint/lib/rules/max-statements.js", "../node_modules/eslint/lib/rules/max-statements-per-line.js", "../node_modules/eslint/lib/rules/multiline-comment-style.js", "../node_modules/eslint/lib/rules/multiline-ternary.js", "../node_modules/eslint/lib/rules/new-cap.js", "../node_modules/eslint/lib/rules/new-parens.js", "../node_modules/eslint/lib/rules/newline-after-var.js", "../node_modules/eslint/lib/rules/newline-before-return.js", "../node_modules/eslint/lib/rules/newline-per-chained-call.js", "../node_modules/eslint/lib/rules/no-alert.js", "../node_modules/eslint/lib/rules/no-array-constructor.js", "../node_modules/eslint/lib/rules/no-async-promise-executor.js", "../node_modules/eslint/lib/rules/no-await-in-loop.js", "../node_modules/eslint/lib/rules/no-bitwise.js", "../node_modules/eslint/lib/rules/no-buffer-constructor.js", "../node_modules/eslint/lib/rules/no-caller.js", "../node_modules/eslint/lib/rules/no-case-declarations.js", "../node_modules/eslint/lib/rules/no-catch-shadow.js", "../node_modules/eslint/lib/rules/no-class-assign.js", "../node_modules/eslint/lib/rules/no-compare-neg-zero.js", "../node_modules/eslint/lib/rules/no-cond-assign.js", "../node_modules/eslint/lib/rules/no-confusing-arrow.js", "../node_modules/eslint/lib/rules/no-console.js", "../node_modules/eslint/lib/rules/no-const-assign.js", "../node_modules/eslint/lib/rules/no-constant-binary-expression.js", "../node_modules/eslint/lib/rules/no-constant-condition.js", "../node_modules/eslint/lib/rules/no-constructor-return.js", "../node_modules/eslint/lib/rules/no-continue.js", "../node_modules/@eslint-community/regexpp/.temp/src/ecma-versions.ts", "../node_modules/@eslint-community/regexpp/.temp/unicode/src/unicode/ids.ts", "../node_modules/@eslint-community/regexpp/.temp/unicode/src/unicode/properties.ts", "../node_modules/@eslint-community/regexpp/.temp/unicode/src/unicode/index.ts", "../node_modules/@eslint-community/regexpp/.temp/src/group-specifiers.ts", "../node_modules/@eslint-community/regexpp/.temp/src/reader.ts", "../node_modules/@eslint-community/regexpp/.temp/src/regexp-syntax-error.ts", "../node_modules/@eslint-community/regexpp/.temp/src/validator.ts", "../node_modules/@eslint-community/regexpp/.temp/src/parser.ts", "../node_modules/@eslint-community/regexpp/.temp/src/visitor.ts", "../node_modules/@eslint-community/regexpp/.temp/src/index.ts", "../node_modules/eslint/lib/rules/no-control-regex.js", "../node_modules/eslint/lib/rules/no-debugger.js", "../node_modules/eslint/lib/rules/no-delete-var.js", "../node_modules/eslint/lib/rules/no-div-regex.js", "../node_modules/eslint/lib/rules/no-dupe-args.js", "../node_modules/eslint/lib/rules/no-dupe-class-members.js", "../node_modules/eslint/lib/rules/no-dupe-else-if.js", "../node_modules/eslint/lib/rules/no-dupe-keys.js", "../node_modules/eslint/lib/rules/no-duplicate-case.js", "../node_modules/eslint/lib/rules/no-duplicate-imports.js", "../node_modules/eslint/lib/rules/utils/fix-tracker.js", "../node_modules/eslint/lib/rules/no-else-return.js", "../node_modules/eslint/lib/rules/no-empty.js", "../node_modules/eslint/lib/rules/no-empty-character-class.js", "../node_modules/eslint/lib/rules/no-empty-function.js", "../node_modules/eslint/lib/rules/no-empty-pattern.js", "../node_modules/eslint/lib/rules/no-empty-static-block.js", "../node_modules/eslint/lib/rules/no-eq-null.js", "../node_modules/eslint/lib/rules/no-eval.js", "../node_modules/eslint/lib/rules/no-ex-assign.js", "../node_modules/eslint/lib/rules/no-extend-native.js", "../node_modules/eslint/lib/rules/no-extra-bind.js", "../node_modules/eslint/lib/rules/no-extra-boolean-cast.js", "../node_modules/eslint/lib/rules/no-extra-label.js", "../node_modules/eslint/lib/rules/no-extra-parens.js", "../node_modules/eslint/lib/rules/no-extra-semi.js", "../node_modules/eslint/lib/shared/directives.js", "../node_modules/eslint/lib/rules/no-fallthrough.js", "../node_modules/eslint/lib/rules/no-floating-decimal.js", "../node_modules/eslint/lib/rules/no-func-assign.js", "../node_modules/eslint/lib/rules/no-global-assign.js", "../node_modules/eslint/lib/rules/no-implicit-coercion.js", "../node_modules/eslint/lib/rules/no-implicit-globals.js", "../node_modules/eslint/lib/rules/no-implied-eval.js", "../node_modules/eslint/lib/rules/no-import-assign.js", "../node_modules/eslint/lib/rules/no-inline-comments.js", "../node_modules/eslint/lib/rules/no-inner-declarations.js", "../node_modules/eslint/lib/rules/no-invalid-regexp.js", "../node_modules/eslint/lib/rules/no-invalid-this.js", "../node_modules/eslint/lib/rules/no-irregular-whitespace.js", "../node_modules/eslint/lib/rules/no-iterator.js", "../node_modules/eslint/lib/rules/no-label-var.js", "../node_modules/eslint/lib/rules/no-labels.js", "../node_modules/eslint/lib/rules/no-lone-blocks.js", "../node_modules/eslint/lib/rules/no-lonely-if.js", "../node_modules/eslint/lib/rules/no-loop-func.js", "../node_modules/eslint/lib/rules/no-loss-of-precision.js", "../node_modules/eslint/lib/rules/no-magic-numbers.js", "../node_modules/eslint/lib/rules/utils/unicode/is-combining-character.js", "../node_modules/eslint/lib/rules/utils/unicode/is-emoji-modifier.js", "../node_modules/eslint/lib/rules/utils/unicode/is-regional-indicator-symbol.js", "../node_modules/eslint/lib/rules/utils/unicode/is-surrogate-pair.js", "../node_modules/eslint/lib/rules/utils/unicode/index.js", "../node_modules/eslint/lib/rules/utils/regular-expressions.js", "../node_modules/eslint/lib/rules/utils/char-source.js", "../node_modules/eslint/lib/rules/no-misleading-character-class.js", "../node_modules/eslint/lib/rules/no-mixed-operators.js", "../node_modules/eslint/lib/rules/no-mixed-requires.js", "../node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js", "../node_modules/eslint/lib/rules/no-multi-assign.js", "../node_modules/eslint/lib/rules/no-multi-spaces.js", "../node_modules/eslint/lib/rules/no-multi-str.js", "../node_modules/eslint/lib/rules/no-multiple-empty-lines.js", "../node_modules/eslint/lib/rules/no-native-reassign.js", "../node_modules/eslint/lib/rules/no-negated-condition.js", "../node_modules/eslint/lib/rules/no-negated-in-lhs.js", "../node_modules/eslint/lib/rules/no-nested-ternary.js", "../node_modules/eslint/lib/rules/no-new.js", "../node_modules/eslint/lib/rules/no-new-func.js", "../node_modules/eslint/lib/rules/no-new-native-nonconstructor.js", "../node_modules/eslint/lib/rules/no-new-object.js", "../node_modules/eslint/lib/rules/no-new-require.js", "../node_modules/eslint/lib/rules/no-new-symbol.js", "../node_modules/eslint/lib/rules/no-new-wrappers.js", "../node_modules/eslint/lib/rules/no-nonoctal-decimal-escape.js", "../node_modules/eslint/lib/rules/no-obj-calls.js", "../node_modules/eslint/lib/rules/no-object-constructor.js", "../node_modules/eslint/lib/rules/no-octal.js", "../node_modules/eslint/lib/rules/no-octal-escape.js", "../node_modules/eslint/lib/rules/no-param-reassign.js", "../node_modules/eslint/lib/rules/no-path-concat.js", "../node_modules/eslint/lib/rules/no-plusplus.js", "../node_modules/eslint/lib/rules/no-process-env.js", "../node_modules/eslint/lib/rules/no-process-exit.js", "../node_modules/eslint/lib/rules/no-promise-executor-return.js", "../node_modules/eslint/lib/rules/no-proto.js", "../node_modules/eslint/lib/rules/no-prototype-builtins.js", "../node_modules/eslint/lib/rules/no-redeclare.js", "../node_modules/eslint/lib/rules/no-regex-spaces.js", "../node_modules/eslint/lib/rules/no-restricted-exports.js", "../node_modules/eslint/lib/rules/no-restricted-globals.js", "../node_modules/ignore/index.js", "../node_modules/eslint/lib/rules/no-restricted-imports.js", "../node_modules/eslint/lib/rules/no-restricted-modules.js", "../node_modules/eslint/lib/rules/no-restricted-properties.js", "../node_modules/eslint/lib/rules/no-restricted-syntax.js", "../node_modules/eslint/lib/rules/no-return-assign.js", "../node_modules/eslint/lib/rules/no-return-await.js", "../node_modules/eslint/lib/rules/no-script-url.js", "../node_modules/eslint/lib/rules/no-self-assign.js", "../node_modules/eslint/lib/rules/no-self-compare.js", "../node_modules/eslint/lib/rules/no-sequences.js", "../node_modules/eslint/lib/rules/no-setter-return.js", "../node_modules/eslint/lib/rules/no-shadow.js", "../node_modules/eslint/lib/rules/no-shadow-restricted-names.js", "../node_modules/eslint/lib/rules/no-spaced-func.js", "../node_modules/eslint/lib/rules/no-sparse-arrays.js", "../node_modules/eslint/lib/rules/no-sync.js", "../node_modules/eslint/lib/rules/no-tabs.js", "../node_modules/eslint/lib/rules/no-template-curly-in-string.js", "../node_modules/eslint/lib/rules/no-ternary.js", "../node_modules/eslint/lib/rules/no-this-before-super.js", "../node_modules/eslint/lib/rules/no-throw-literal.js", "../node_modules/eslint/lib/rules/no-trailing-spaces.js", "../node_modules/eslint/lib/rules/no-unassigned-vars.js", "../node_modules/eslint/lib/rules/no-undef.js", "../node_modules/eslint/lib/rules/no-undef-init.js", "../node_modules/eslint/lib/rules/no-undefined.js", "../node_modules/eslint/lib/rules/no-underscore-dangle.js", "../node_modules/eslint/lib/rules/no-unexpected-multiline.js", "../node_modules/eslint/lib/shared/traverser.js", "../node_modules/eslint/lib/rules/no-unmodified-loop-condition.js", "../node_modules/eslint/lib/rules/no-unneeded-ternary.js", "../node_modules/eslint/lib/rules/no-unreachable.js", "../node_modules/eslint/lib/rules/no-unreachable-loop.js", "../node_modules/eslint/lib/rules/no-unsafe-finally.js", "../node_modules/eslint/lib/rules/no-unsafe-negation.js", "../node_modules/eslint/lib/rules/no-unsafe-optional-chaining.js", "../node_modules/eslint/lib/rules/no-unused-expressions.js", "../node_modules/eslint/lib/rules/no-unused-labels.js", "../node_modules/eslint/lib/rules/no-unused-private-class-members.js", "../node_modules/eslint/lib/rules/no-unused-vars.js", "../node_modules/eslint/lib/rules/no-use-before-define.js", "../node_modules/eslint/lib/rules/no-useless-assignment.js", "../node_modules/eslint/lib/rules/no-useless-backreference.js", "../node_modules/eslint/lib/rules/no-useless-call.js", "../node_modules/eslint/lib/rules/no-useless-catch.js", "../node_modules/eslint/lib/rules/no-useless-computed-key.js", "../node_modules/eslint/lib/rules/no-useless-concat.js", "../node_modules/eslint/lib/rules/no-useless-constructor.js", "../node_modules/eslint/lib/rules/no-useless-escape.js", "../node_modules/eslint/lib/rules/no-useless-rename.js", "../node_modules/eslint/lib/rules/no-useless-return.js", "../node_modules/eslint/lib/rules/no-var.js", "../node_modules/eslint/lib/rules/no-void.js", "../node_modules/eslint/lib/rules/no-warning-comments.js", "../node_modules/eslint/lib/rules/no-whitespace-before-property.js", "../node_modules/eslint/lib/rules/no-with.js", "../node_modules/eslint/lib/rules/nonblock-statement-body-position.js", "../node_modules/eslint/lib/rules/object-curly-newline.js", "../node_modules/eslint/lib/rules/object-curly-spacing.js", "../node_modules/eslint/lib/rules/object-property-newline.js", "../node_modules/eslint/lib/rules/object-shorthand.js", "../node_modules/eslint/lib/rules/one-var.js", "../node_modules/eslint/lib/rules/one-var-declaration-per-line.js", "../node_modules/eslint/lib/rules/operator-assignment.js", "../node_modules/eslint/lib/rules/operator-linebreak.js", "../node_modules/eslint/lib/rules/padded-blocks.js", "../node_modules/eslint/lib/rules/padding-line-between-statements.js", "../node_modules/eslint/lib/rules/prefer-arrow-callback.js", "../node_modules/eslint/lib/rules/prefer-const.js", "../node_modules/eslint/lib/rules/prefer-destructuring.js", "../node_modules/eslint/lib/rules/prefer-exponentiation-operator.js", "../node_modules/eslint/lib/rules/prefer-named-capture-group.js", "../node_modules/eslint/lib/rules/prefer-numeric-literals.js", "../node_modules/eslint/lib/rules/prefer-object-has-own.js", "../node_modules/eslint/lib/rules/prefer-object-spread.js", "../node_modules/eslint/lib/rules/prefer-promise-reject-errors.js", "../node_modules/eslint/lib/rules/prefer-reflect.js", "../node_modules/eslint/lib/rules/prefer-regex-literals.js", "../node_modules/eslint/lib/rules/prefer-rest-params.js", "../node_modules/eslint/lib/rules/prefer-spread.js", "../node_modules/eslint/lib/rules/prefer-template.js", "../node_modules/eslint/lib/rules/preserve-caught-error.js", "../node_modules/eslint/lib/rules/quote-props.js", "../node_modules/eslint/lib/rules/quotes.js", "../node_modules/eslint/lib/rules/radix.js", "../node_modules/eslint/lib/rules/require-atomic-updates.js", "../node_modules/eslint/lib/rules/require-await.js", "../node_modules/eslint/lib/rules/require-unicode-regexp.js", "../node_modules/eslint/lib/rules/require-yield.js", "../node_modules/eslint/lib/rules/rest-spread-spacing.js", "../node_modules/eslint/lib/rules/semi.js", "../node_modules/eslint/lib/rules/semi-spacing.js", "../node_modules/eslint/lib/rules/semi-style.js", "../node_modules/eslint/lib/rules/sort-imports.js", "../node_modules/natural-compare/index.js", "../node_modules/eslint/lib/rules/sort-keys.js", "../node_modules/eslint/lib/rules/sort-vars.js", "../node_modules/eslint/lib/rules/space-before-blocks.js", "../node_modules/eslint/lib/rules/space-before-function-paren.js", "../node_modules/eslint/lib/rules/space-in-parens.js", "../node_modules/eslint/lib/rules/space-infix-ops.js", "../node_modules/eslint/lib/rules/space-unary-ops.js", "../node_modules/eslint/lib/rules/spaced-comment.js", "../node_modules/eslint/lib/rules/strict.js", "../node_modules/eslint/lib/rules/switch-colon-spacing.js", "../node_modules/eslint/lib/rules/symbol-description.js", "../node_modules/eslint/lib/rules/template-curly-spacing.js", "../node_modules/eslint/lib/rules/template-tag-spacing.js", "../node_modules/eslint/lib/rules/unicode-bom.js", "../node_modules/eslint/lib/rules/use-isnan.js", "../node_modules/eslint/lib/rules/valid-typeof.js", "../node_modules/eslint/lib/rules/vars-on-top.js", "../node_modules/eslint/lib/rules/wrap-iife.js", "../node_modules/eslint/lib/rules/wrap-regex.js", "../node_modules/eslint/lib/rules/yield-star-spacing.js", "../node_modules/eslint/lib/rules/yoda.js", "../node_modules/eslint/lib/rules/index.js", "../node_modules/eslint/lib/shared/assert.js", "../node_modules/eslint/lib/languages/js/source-code/token-store/cursor.js", "../node_modules/eslint/lib/languages/js/source-code/token-store/utils.js", "../node_modules/eslint/lib/languages/js/source-code/token-store/backward-token-comment-cursor.js", "../node_modules/eslint/lib/languages/js/source-code/token-store/backward-token-cursor.js", "../node_modules/eslint/lib/languages/js/source-code/token-store/decorative-cursor.js", "../node_modules/eslint/lib/languages/js/source-code/token-store/filter-cursor.js", "../node_modules/eslint/lib/languages/js/source-code/token-store/forward-token-comment-cursor.js", "../node_modules/eslint/lib/languages/js/source-code/token-store/forward-token-cursor.js", "../node_modules/eslint/lib/languages/js/source-code/token-store/limit-cursor.js", "../node_modules/eslint/lib/languages/js/source-code/token-store/skip-cursor.js", "../node_modules/eslint/lib/languages/js/source-code/token-store/cursors.js", "../node_modules/eslint/lib/languages/js/source-code/token-store/padded-token-cursor.js", "../node_modules/eslint/lib/languages/js/source-code/token-store/index.js", "../node_modules/eslint/lib/linter/code-path-analysis/debug-helpers.js", "../node_modules/eslint/lib/linter/code-path-analysis/code-path-segment.js", "../node_modules/eslint/lib/linter/code-path-analysis/fork-context.js", "../node_modules/eslint/lib/linter/code-path-analysis/code-path-state.js", "../node_modules/eslint/lib/linter/code-path-analysis/id-generator.js", "../node_modules/eslint/lib/linter/code-path-analysis/code-path.js", "../node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js", "../node_modules/prelude-ls/lib/Func.js", "../node_modules/prelude-ls/lib/List.js", "../node_modules/prelude-ls/lib/Obj.js", "../node_modules/prelude-ls/lib/Str.js", "../node_modules/prelude-ls/lib/Num.js", "../node_modules/prelude-ls/lib/index.js", "../node_modules/levn/lib/parse-string.js", "../node_modules/type-check/lib/parse-type.js", "../node_modules/type-check/lib/check.js", "../node_modules/type-check/lib/index.js", "../node_modules/levn/lib/cast.js", "../node_modules/levn/lib/index.js", "../node_modules/@eslint/plugin-kit/dist/cjs/index.cjs", "../node_modules/eslint/lib/languages/js/source-code/source-code.js", "../node_modules/eslint/lib/languages/js/source-code/index.js", "../node_modules/estraverse/estraverse.js", "../node_modules/esrecurse/package.json", "../node_modules/esrecurse/esrecurse.js", "../node_modules/eslint-scope/dist/eslint-scope.cjs", "../node_modules/eslint/lib/languages/js/validate-language-options.js", "../node_modules/eslint/lib/languages/js/index.js", "../node_modules/eslint/lib/config/default-config.js", "../node_modules/eslint/lib/shared/stats.js", "../node_modules/eslint/lib/linter/timing.js", "../node_modules/is-extglob/index.js", "../node_modules/is-glob/index.js", "../node_modules/imurmurhash/imurmurhash.js", "../node_modules/eslint/lib/cli-engine/hash.js", "../node_modules/balanced-match/src/index.ts", "../node_modules/brace-expansion/src/index.ts", "../node_modules/minimatch/src/assert-valid-pattern.ts", "../node_modules/minimatch/src/brace-expressions.ts", "../node_modules/minimatch/src/unescape.ts", "../node_modules/minimatch/src/ast.ts", "../node_modules/minimatch/src/escape.ts", "../node_modules/minimatch/src/index.ts", "../node_modules/glob-parent/index.js", "../node_modules/eslint/lib/shared/deep-merge-arrays.js", "../node_modules/eslint/lib/shared/severity.js", "../node_modules/eslint/lib/config/flat-config-schema.js", "../node_modules/@eslint/config-array/dist/cjs/std__path/posix.cjs", "../node_modules/@eslint/config-array/dist/cjs/std__path/windows.cjs", "../node_modules/@eslint/object-schema/dist/cjs/index.cjs", "../node_modules/@eslint/config-array/dist/cjs/index.cjs", "../node_modules/uri-js/src/index.ts", "../node_modules/uri-js/src/schemes/urn-uuid.ts", "../node_modules/uri-js/src/schemes/urn.ts", "../node_modules/uri-js/src/schemes/mailto.ts", "../node_modules/uri-js/src/schemes/wss.ts", "../node_modules/uri-js/src/schemes/ws.ts", "../node_modules/uri-js/src/schemes/https.ts", "../node_modules/uri-js/src/schemes/http.ts", "../node_modules/uri-js/src/uri.ts", "../node_modules/uri-js/node_modules/punycode/punycode.es6.js", "../node_modules/uri-js/src/regexps-iri.ts", "../node_modules/uri-js/src/regexps-uri.ts", "../node_modules/uri-js/src/util.ts", "../node_modules/fast-deep-equal/index.js", "../node_modules/eslint/node_modules/ajv/lib/compile/ucs2length.js", "../node_modules/eslint/node_modules/ajv/lib/compile/util.js", "../node_modules/eslint/node_modules/ajv/lib/compile/schema_obj.js", "../node_modules/eslint/node_modules/json-schema-traverse/index.js", "../node_modules/eslint/node_modules/ajv/lib/compile/resolve.js", "../node_modules/eslint/node_modules/ajv/lib/compile/error_classes.js", "../node_modules/fast-json-stable-stringify/index.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/validate.js", "../node_modules/eslint/node_modules/ajv/lib/compile/index.js", "../node_modules/eslint/node_modules/ajv/lib/cache.js", "../node_modules/eslint/node_modules/ajv/lib/compile/formats.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/ref.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/allOf.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/anyOf.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/comment.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/const.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/contains.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/dependencies.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/enum.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/format.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/if.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/items.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/_limit.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/_limitItems.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/_limitLength.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/_limitProperties.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/multipleOf.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/not.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/oneOf.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/pattern.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/properties.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/propertyNames.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/required.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/uniqueItems.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/index.js", "../node_modules/eslint/node_modules/ajv/lib/compile/rules.js", "../node_modules/eslint/node_modules/ajv/lib/data.js", "../node_modules/eslint/node_modules/ajv/lib/compile/async.js", "../node_modules/eslint/node_modules/ajv/lib/dotjs/custom.js", "../node_modules/eslint/node_modules/ajv/lib/refs/json-schema-draft-07.json", "../node_modules/eslint/node_modules/ajv/lib/definition_schema.js", "../node_modules/eslint/node_modules/ajv/lib/keyword.js", "../node_modules/eslint/node_modules/ajv/lib/refs/data.json", "../node_modules/eslint/node_modules/ajv/lib/ajv.js", "../node_modules/eslint/node_modules/ajv/lib/refs/json-schema-draft-04.json", "../node_modules/eslint/lib/shared/ajv.js", "../node_modules/eslint/conf/replacements.json", "../node_modules/eslint/lib/config/config.js", "../node_modules/eslint/lib/linter/apply-disable-directives.js", "../node_modules/eslint/lib/linter/source-code-fixer.js", "../node_modules/eslint/lib/linter/source-code-visitor.js", "../node_modules/eslint/lib/config/flat-config-array.js", "../node_modules/eslint/lib/shared/flags.js", "../node_modules/eslint/lib/linter/vfile.js", "../node_modules/eslint/lib/services/parser-service.js", "../node_modules/eslint/lib/linter/file-context.js", "../node_modules/eslint/lib/services/processor-service.js", "../node_modules/eslint/lib/shared/option-utils.js", "../node_modules/eslint/lib/services/warning-service.js", "../node_modules/esquery/node_modules/estraverse/estraverse.js", "../node_modules/esquery/parser.js", "../node_modules/esquery/esquery.js", "../node_modules/eslint/lib/linter/esquery.js", "../node_modules/eslint/lib/linter/source-code-traverser.js", "../node_modules/eslint/lib/linter/rule-fixer.js", "../node_modules/eslint/lib/linter/interpolate.js", "../node_modules/eslint/lib/linter/file-report.js", "../node_modules/eslint/lib/linter/linter.js", "../node_modules/eslint/lib/linter/index.js", "../node_modules/eslint/lib/shared/naming.js", "../node_modules/eslint/lib/shared/message-counts.js", "../node_modules/json-buffer/index.js", "../node_modules/keyv/src/index.js", "../node_modules/flatted/cjs/index.js", "../node_modules/flat-cache/src/utils.js", "../node_modules/flat-cache/src/del.js", "../node_modules/flat-cache/src/cache.js", "../node_modules/file-entry-cache/cache.js", "../node_modules/json-stable-stringify-without-jsonify/index.js", "../node_modules/eslint/lib/cli-engine/lint-result-cache.js", "../node_modules/yocto-queue/index.js", "../node_modules/p-limit/index.js", "../node_modules/p-locate/index.js", "../node_modules/locate-path/index.js", "../node_modules/path-exists/index.js", "../node_modules/find-up/index.js", "../node_modules/jiti/dist/jiti.cjs", "../node_modules/jiti/lib/jiti.mjs", "../node_modules/jiti/package.json", "../node_modules/eslint/lib/config/config-loader.js", "../node_modules/eslint/lib/services/suppressions-service.js", "../node_modules/@humanfs/core/src/hfs.js", "../node_modules/@humanfs/core/src/path.js", "../node_modules/@humanfs/core/src/errors.js", "../node_modules/@humanfs/core/src/index.js", "../node_modules/@humanwhocodes/retry/dist/retrier.js", "../node_modules/@humanfs/node/src/node-hfs.js", "../node_modules/@humanfs/node/src/index.js", "../node_modules/eslint/lib/eslint/eslint-helpers.js", "../node_modules/@humanwhocodes/retry/dist/retrier.cjs", "../node_modules/eslint/lib/shared/relative-module-resolver.js", "../node_modules/eslint/lib/eslint/eslint.js", "../node_modules/eslint/lib/shared/serialization.js", "../node_modules/eslint/lib/rule-tester/rule-tester.js", "../node_modules/eslint/lib/rule-tester/index.js", "../node_modules/eslint/lib/api.js", "../node_modules/eslint/lib/unsupported-api.js", "../node_modules/@typescript-eslint/utils/dist/ts-eslint/eslint/FlatESLint.js", "../node_modules/@typescript-eslint/utils/dist/ts-eslint/eslint/LegacyESLint.js", "../node_modules/@typescript-eslint/utils/dist/ts-eslint/ESLint.js", "../node_modules/@typescript-eslint/utils/dist/ts-eslint/Linter.js", "../node_modules/@typescript-eslint/utils/dist/ts-eslint/Parser.js", "../node_modules/@typescript-eslint/utils/dist/ts-eslint/ParserOptions.js", "../node_modules/@typescript-eslint/utils/dist/ts-eslint/Processor.js", "../node_modules/@typescript-eslint/utils/dist/ts-eslint/Rule.js", "../node_modules/@typescript-eslint/utils/dist/ts-eslint/RuleTester.js", "../node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.cjs", "../node_modules/@typescript-eslint/visitor-keys/dist/get-keys.js", "../node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js", "../node_modules/@typescript-eslint/visitor-keys/dist/index.js", "../node_modules/@typescript-eslint/scope-manager/dist/assert.js", "../node_modules/@typescript-eslint/scope-manager/dist/ID.js", "../node_modules/@typescript-eslint/scope-manager/dist/definition/DefinitionBase.js", "../node_modules/@typescript-eslint/scope-manager/dist/definition/DefinitionType.js", "../node_modules/@typescript-eslint/scope-manager/dist/definition/CatchClauseDefinition.js", "../node_modules/@typescript-eslint/scope-manager/dist/definition/ClassNameDefinition.js", "../node_modules/@typescript-eslint/scope-manager/dist/definition/Definition.js", "../node_modules/@typescript-eslint/scope-manager/dist/definition/FunctionNameDefinition.js", "../node_modules/@typescript-eslint/scope-manager/dist/definition/ImplicitGlobalVariableDefinition.js", "../node_modules/@typescript-eslint/scope-manager/dist/definition/ImportBindingDefinition.js", "../node_modules/@typescript-eslint/scope-manager/dist/definition/ParameterDefinition.js", "../node_modules/@typescript-eslint/scope-manager/dist/definition/TSEnumMemberDefinition.js", "../node_modules/@typescript-eslint/scope-manager/dist/definition/TSEnumNameDefinition.js", "../node_modules/@typescript-eslint/scope-manager/dist/definition/TSModuleNameDefinition.js", "../node_modules/@typescript-eslint/scope-manager/dist/definition/TypeDefinition.js", "../node_modules/@typescript-eslint/scope-manager/dist/definition/VariableDefinition.js", "../node_modules/@typescript-eslint/scope-manager/dist/definition/index.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/base-config.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/decorators.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/decorators.legacy.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es5.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2015.collection.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2015.core.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2015.symbol.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2015.iterable.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2015.generator.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2015.promise.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2015.proxy.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2015.reflect.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2015.symbol.wellknown.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2015.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2018.asynciterable.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/dom.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/dom.asynciterable.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/dom.iterable.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es6.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2016.array.include.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2016.intl.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es7.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2016.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/scripthost.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.importscripts.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2016.full.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2017.arraybuffer.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2017.date.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2017.intl.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2017.object.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2017.sharedmemory.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2017.string.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2017.typedarrays.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2017.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2017.full.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2018.asyncgenerator.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2018.intl.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2018.promise.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2018.regexp.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2018.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2018.full.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.array.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.object.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.string.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.symbol.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.full.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2020.intl.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2020.bigint.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2020.date.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2020.number.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2020.promise.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2020.sharedmemory.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2020.symbol.wellknown.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2020.string.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2020.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2020.full.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2021.intl.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2021.promise.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2021.string.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2021.weakref.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2021.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2021.full.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2022.array.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2022.error.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2022.intl.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2022.object.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2022.regexp.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2022.string.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2022.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2022.full.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.array.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.collection.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.intl.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.full.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2024.arraybuffer.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2024.collection.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2024.object.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2024.promise.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2024.regexp.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2024.sharedmemory.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2024.string.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2024.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2024.full.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2025.collection.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2025.float16.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2025.intl.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2025.iterator.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2025.promise.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2025.regexp.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2025.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/es2025.full.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.array.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.collection.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.temporal.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.date.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.decorators.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.disposable.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.error.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.intl.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.sharedmemory.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.typedarrays.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.asynciterable.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.bigint.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.float16.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.full.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.iterator.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.object.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.promise.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.regexp.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.string.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.symbol.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.weakref.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/lib.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.asynciterable.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.iterable.js", "../node_modules/@typescript-eslint/scope-manager/dist/lib/index.js", "../node_modules/@typescript-eslint/scope-manager/dist/referencer/Reference.js", "../node_modules/@typescript-eslint/scope-manager/dist/variable/VariableBase.js", "../node_modules/@typescript-eslint/scope-manager/dist/variable/ESLintScopeVariable.js", "../node_modules/@typescript-eslint/scope-manager/dist/variable/ImplicitLibVariable.js", "../node_modules/@typescript-eslint/scope-manager/dist/variable/Variable.js", "../node_modules/@typescript-eslint/scope-manager/dist/variable/index.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/ScopeType.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/ScopeBase.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/BlockScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/CatchScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/ClassFieldInitializerScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/ClassScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/ConditionalTypeScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/ForScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/FunctionExpressionNameScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/FunctionScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/FunctionTypeScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/GlobalScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/MappedTypeScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/ModuleScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/Scope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/SwitchScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/TSEnumScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/TSModuleScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/TypeScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/WithScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/index.js", "../node_modules/@typescript-eslint/scope-manager/dist/referencer/VisitorBase.js", "../node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.js", "../node_modules/@typescript-eslint/scope-manager/dist/referencer/Visitor.js", "../node_modules/@typescript-eslint/scope-manager/dist/referencer/TypeVisitor.js", "../node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js", "../node_modules/@typescript-eslint/scope-manager/dist/referencer/ExportVisitor.js", "../node_modules/@typescript-eslint/scope-manager/dist/referencer/ImportVisitor.js", "../node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js", "../node_modules/@typescript-eslint/scope-manager/dist/referencer/index.js", "../node_modules/@typescript-eslint/scope-manager/dist/scope/ClassStaticBlockScope.js", "../node_modules/@typescript-eslint/scope-manager/dist/ScopeManager.js", "../node_modules/@typescript-eslint/scope-manager/dist/analyze.js", "../node_modules/@typescript-eslint/scope-manager/dist/index.js", "../node_modules/@typescript-eslint/utils/dist/ts-eslint/Scope.js", "../node_modules/@typescript-eslint/utils/dist/ts-eslint/SourceCode.js", "../node_modules/@typescript-eslint/utils/dist/ts-eslint/index.js", "../node_modules/@typescript-eslint/utils/dist/ts-utils/isArray.js", "../node_modules/@typescript-eslint/utils/dist/ts-utils/NoInfer.js", "../node_modules/@typescript-eslint/utils/dist/ts-utils/index.js", "../node_modules/@typescript-eslint/utils/dist/index.js", "../node_modules/format/format.js", "../node_modules/extend/index.js", "../node_modules/pluralize/pluralize.js", "../node_modules/normalize-strings/charmap.json", "../node_modules/normalize-strings/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/json5/lib/unicode.js", "../node_modules/json5/lib/util.js", "../node_modules/json5/lib/parse.js", "../node_modules/json5/lib/stringify.js", "../node_modules/json5/lib/index.js", "../node_modules/weasel-words/weasel.js", "../node_modules/passive-voice/passive.js", "../node_modules/adverb-where/matcher.js", "../node_modules/adverb-where/adverbs.js", "../node_modules/too-wordy/matcher.js", "../node_modules/too-wordy/too-wordy.js", "../node_modules/no-cliches/matcher.js", "../node_modules/no-cliches/cliches.js", "../node_modules/e-prime/e-prime.js", "../node_modules/write-good/lib/lexical-illusions.js", "../node_modules/write-good/lib/starts-with-so.js", "../node_modules/write-good/lib/there-is.js", "../node_modules/write-good/lib/annotate.js", "../node_modules/write-good/write-good.js", "../src/plugin.ts", "../node_modules/ts-extras/distribution/safe-cast-to.js", "../node_modules/ts-extras/distribution/array-includes.js", "../node_modules/ts-extras/distribution/array-join.js", "../node_modules/ts-extras/distribution/array-first.js", "../node_modules/ts-extras/distribution/is-defined.js", "../node_modules/ts-extras/distribution/is-empty.js", "../node_modules/ts-extras/distribution/is-integer.js", "../node_modules/ts-extras/distribution/key-in.js", "../node_modules/ts-extras/distribution/object-has-in.js", "../node_modules/ts-extras/distribution/object-has-own.js", "../node_modules/ts-extras/distribution/set-has.js", "../node_modules/ts-extras/distribution/string-split.js", "../package.json", "../node_modules/devlop/lib/default.js", "../node_modules/nlcst-normalize/node_modules/nlcst-to-string/lib/index.js", "../node_modules/nlcst-normalize/lib/index.js", "../node_modules/unist-util-is/lib/index.js", "../node_modules/unist-util-visit-parents/lib/color.node.js", "../node_modules/unist-util-visit-parents/lib/index.js", "../node_modules/unist-util-visit/lib/index.js", "../node_modules/nlcst-is-literal/node_modules/nlcst-to-string/lib/index.js", "../node_modules/nlcst-is-literal/lib/index.js", "../node_modules/nlcst-search/lib/index.js", "../node_modules/retext-equality/node_modules/nlcst-to-string/lib/index.js", "../node_modules/quotation/index.js", "../node_modules/unist-util-position/lib/index.js", "../node_modules/retext-equality/lib/create-plugin.js", "../node_modules/retext-equality/lib/patterns-en.js", "../node_modules/retext-equality/lib/en.js", "../src/_internal/comment-prose.ts", "../src/_internal/default-export.ts", "../node_modules/micromark-util-character/index.js", "../node_modules/fault/index.js", "../node_modules/micromark-extension-frontmatter/lib/to-matters.js", "../node_modules/micromark-extension-frontmatter/lib/syntax.js", "../node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp/index.js", "../node_modules/mdast-util-frontmatter/lib/index.js", "../node_modules/remark-frontmatter/lib/index.js", "../node_modules/ccount/index.js", "../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js", "../node_modules/mdast-util-find-and-replace/lib/index.js", "../node_modules/mdast-util-gfm-autolink-literal/lib/index.js", "../node_modules/micromark-util-normalize-identifier/index.js", "../node_modules/mdast-util-gfm-footnote/lib/index.js", "../node_modules/mdast-util-gfm-strikethrough/lib/index.js", "../node_modules/mdast-util-gfm-table/node_modules/markdown-table/index.js", "../node_modules/mdast-util-to-markdown/lib/handle/blockquote.js", "../node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js", "../node_modules/mdast-util-to-markdown/lib/handle/break.js", "../node_modules/longest-streak/index.js", "../node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js", "../node_modules/mdast-util-to-markdown/lib/util/check-fence.js", "../node_modules/mdast-util-to-markdown/lib/handle/code.js", "../node_modules/mdast-util-to-markdown/lib/util/check-quote.js", "../node_modules/mdast-util-to-markdown/lib/handle/definition.js", "../node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js", "../node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.js", "../node_modules/micromark-util-classify-character/index.js", "../node_modules/mdast-util-to-markdown/lib/util/encode-info.js", "../node_modules/mdast-util-to-markdown/lib/handle/emphasis.js", "../node_modules/mdast-util-to-string/lib/index.js", "../node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js", "../node_modules/mdast-util-to-markdown/lib/handle/heading.js", "../node_modules/mdast-util-to-markdown/lib/handle/html.js", "../node_modules/mdast-util-to-markdown/lib/handle/image.js", "../node_modules/mdast-util-to-markdown/lib/handle/image-reference.js", "../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js", "../node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js", "../node_modules/mdast-util-to-markdown/lib/handle/link.js", "../node_modules/mdast-util-to-markdown/lib/handle/link-reference.js", "../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js", "../node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.js", "../node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.js", "../node_modules/mdast-util-to-markdown/lib/util/check-rule.js", "../node_modules/mdast-util-to-markdown/lib/handle/list.js", "../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js", "../node_modules/mdast-util-to-markdown/lib/handle/list-item.js", "../node_modules/mdast-util-to-markdown/lib/handle/paragraph.js", "../node_modules/mdast-util-phrasing/lib/index.js", "../node_modules/mdast-util-to-markdown/lib/handle/root.js", "../node_modules/mdast-util-to-markdown/lib/util/check-strong.js", "../node_modules/mdast-util-to-markdown/lib/handle/strong.js", "../node_modules/mdast-util-to-markdown/lib/handle/text.js", "../node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.js", "../node_modules/mdast-util-to-markdown/lib/handle/thematic-break.js", "../node_modules/mdast-util-to-markdown/lib/handle/index.js", "../node_modules/character-entities/index.js", "../node_modules/decode-named-character-reference/index.js", "../node_modules/micromark-util-decode-numeric-character-reference/index.js", "../node_modules/micromark-util-decode-string/index.js", "../node_modules/mdast-util-gfm-table/lib/index.js", "../node_modules/mdast-util-gfm-task-list-item/lib/index.js", "../node_modules/mdast-util-gfm/lib/index.js", "../node_modules/micromark-util-chunked/index.js", "../node_modules/micromark-util-combine-extensions/index.js", "../node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js", "../node_modules/micromark-util-resolve-all/index.js", "../node_modules/micromark-core-commonmark/lib/attention.js", "../node_modules/micromark-core-commonmark/lib/autolink.js", "../node_modules/micromark-factory-space/index.js", "../node_modules/micromark-core-commonmark/lib/blank-line.js", "../node_modules/micromark-core-commonmark/lib/block-quote.js", "../node_modules/micromark-core-commonmark/lib/character-escape.js", "../node_modules/micromark-core-commonmark/lib/character-reference.js", "../node_modules/micromark-core-commonmark/lib/code-fenced.js", "../node_modules/micromark-core-commonmark/lib/code-indented.js", "../node_modules/micromark-core-commonmark/lib/code-text.js", "../node_modules/micromark-util-subtokenize/lib/splice-buffer.js", "../node_modules/micromark-util-subtokenize/index.js", "../node_modules/micromark-core-commonmark/lib/content.js", "../node_modules/micromark-factory-destination/index.js", "../node_modules/micromark-factory-label/index.js", "../node_modules/micromark-factory-title/index.js", "../node_modules/micromark-factory-whitespace/index.js", "../node_modules/micromark-core-commonmark/lib/definition.js", "../node_modules/micromark-core-commonmark/lib/hard-break-escape.js", "../node_modules/micromark-core-commonmark/lib/heading-atx.js", "../node_modules/micromark-util-html-tag-name/index.js", "../node_modules/micromark-core-commonmark/lib/html-flow.js", "../node_modules/micromark-core-commonmark/lib/html-text.js", "../node_modules/micromark-core-commonmark/lib/label-end.js", "../node_modules/micromark-core-commonmark/lib/label-start-image.js", "../node_modules/micromark-core-commonmark/lib/label-start-link.js", "../node_modules/micromark-core-commonmark/lib/line-ending.js", "../node_modules/micromark-core-commonmark/lib/thematic-break.js", "../node_modules/micromark-core-commonmark/lib/list.js", "../node_modules/micromark-core-commonmark/lib/setext-underline.js", "../node_modules/micromark-extension-gfm-footnote/lib/syntax.js", "../node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js", "../node_modules/micromark-extension-gfm-table/lib/edit-map.js", "../node_modules/micromark-extension-gfm-table/lib/infer.js", "../node_modules/micromark-extension-gfm-table/lib/syntax.js", "../node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js", "../node_modules/micromark-extension-gfm/index.js", "../node_modules/remark-gfm/lib/index.js", "../node_modules/micromark/lib/initialize/content.js", "../node_modules/micromark/lib/initialize/document.js", "../node_modules/micromark/lib/initialize/flow.js", "../node_modules/micromark/lib/initialize/text.js", "../node_modules/micromark/lib/constructs.js", "../node_modules/micromark/lib/create-tokenizer.js", "../node_modules/micromark/lib/parse.js", "../node_modules/micromark/lib/postprocess.js", "../node_modules/micromark/lib/preprocess.js", "../node_modules/unist-util-stringify-position/lib/index.js", "../node_modules/mdast-util-from-markdown/lib/index.js", "../node_modules/remark-parse/lib/index.js", "../node_modules/parse-english/node_modules/nlcst-to-string/lib/index.js", "../node_modules/parse-latin/node_modules/nlcst-to-string/lib/index.js", "../node_modules/array-iterate/lib/index.js", "../node_modules/unist-util-modify-children/lib/index.js", "../node_modules/parse-latin/lib/plugin/merge-affix-exceptions.js", "../node_modules/parse-latin/lib/expressions.js", "../node_modules/parse-latin/lib/plugin/merge-affix-symbol.js", "../node_modules/parse-latin/lib/plugin/break-implicit-sentences.js", "../node_modules/parse-latin/lib/plugin/make-final-white-space-siblings.js", "../node_modules/unist-util-visit-children/lib/index.js", "../node_modules/parse-latin/lib/plugin/make-initial-white-space-siblings.js", "../node_modules/parse-latin/lib/plugin/merge-final-word-symbol.js", "../node_modules/parse-latin/lib/plugin/merge-initial-digit-sentences.js", "../node_modules/parse-latin/lib/plugin/merge-initial-lower-case-letter-sentences.js", "../node_modules/parse-latin/lib/plugin/merge-initial-word-symbol.js", "../node_modules/parse-latin/lib/plugin/merge-initialisms.js", "../node_modules/parse-latin/lib/plugin/merge-inner-word-symbol.js", "../node_modules/parse-latin/lib/plugin/merge-inner-word-slash.js", "../node_modules/parse-latin/lib/plugin/merge-non-word-sentences.js", "../node_modules/parse-latin/lib/plugin/merge-prefix-exceptions.js", "../node_modules/parse-latin/lib/plugin/merge-remaining-full-stops.js", "../node_modules/parse-latin/lib/plugin/remove-empty-nodes.js", "../node_modules/parse-latin/lib/plugin/patch-position.js", "../node_modules/parse-latin/lib/index.js", "../node_modules/parse-english/lib/regex.js", "../node_modules/parse-english/lib/index.js", "../node_modules/retext-english/lib/index.js", "../node_modules/bail/index.js", "../node_modules/unified/lib/index.js", "../node_modules/is-plain-obj/index.js", "../node_modules/trough/lib/index.js", "../node_modules/vfile-message/lib/index.js", "../node_modules/vfile/lib/minpath.js", "../node_modules/vfile/lib/minproc.js", "../node_modules/vfile/lib/minurl.js", "../node_modules/vfile/lib/minurl.shared.js", "../node_modules/vfile/lib/index.js", "../node_modules/unified/lib/callable-instance.js", "../src/_internal/retext.ts", "../src/rules/inclusive-language-comments.ts", "../node_modules/retext-profanities/lib/en.js", "../node_modules/cuss/index.js", "../node_modules/retext-profanities/node_modules/nlcst-to-string/lib/index.js", "../node_modules/retext-profanities/lib/create-plugin.js", "../src/rules/no-profane-comments.ts", "../node_modules/retext-readability/index.js", "../node_modules/automated-readability/index.js", "../node_modules/coleman-liau/index.js", "../node_modules/dale-chall/index.js", "../node_modules/dale-chall-formula/index.js", "../node_modules/flesch/index.js", "../node_modules/gunning-fog/index.js", "../node_modules/retext-readability/node_modules/nlcst-to-string/lib/index.js", "../node_modules/smog-formula/index.js", "../node_modules/spache/index.js", "../node_modules/spache-formula/index.js", "../node_modules/syllable/index.js", "../node_modules/syllable/problematic.js", "../node_modules/retext-readability/lib/index.js", "../src/rules/readability-comments.ts", "../node_modules/cspell-trie-lib/dist/index.js", "../node_modules/cspell-dictionary/dist/util/text.js", "../node_modules/cspell-dictionary/dist/SpellingDictionary/SpellingDictionaryMethods.js", "../node_modules/cspell-dictionary/dist/util/AutoResolve.js", "../node_modules/cspell-dictionary/dist/util/util.js", "../node_modules/fast-equals/dist/es/index.mjs", "../node_modules/@cspell/cspell-performance-monitor/dist/index.js", "../node_modules/cspell-dictionary/dist/util/simpleCache.js", "../node_modules/cspell-dictionary/dist/SpellingDictionary/SpellingDictionary.js", "../node_modules/cspell-dictionary/dist/util/clean.js", "../node_modules/cspell-dictionary/dist/util/regexHelper.js", "../node_modules/cspell-dictionary/dist/util/repMap.js", "../node_modules/cspell-dictionary/dist/SpellingDictionary/defaults.js", "../node_modules/cspell-dictionary/dist/SpellingDictionary/SpellingDictionaryFromTrie.js", "../node_modules/cspell-dictionary/dist/SpellingDictionary/createSpellingDictionary.js", "../node_modules/@cspell/cspell-pipe/dist/operators/append.js", "../node_modules/@cspell/cspell-pipe/dist/operators/combine.js", "../node_modules/@cspell/cspell-pipe/dist/operators/concatMap.js", "../node_modules/@cspell/cspell-pipe/dist/operators/filter.js", "../node_modules/@cspell/cspell-pipe/dist/operators/map.js", "../node_modules/@cspell/cspell-pipe/dist/pipe.js", "../node_modules/cspell-dictionary/dist/util/textMappers.js", "../node_modules/cspell-dictionary/dist/SpellingDictionary/Typos/util.js", "../node_modules/cspell-dictionary/dist/SpellingDictionary/Typos/typosParser.js", "../node_modules/cspell-dictionary/dist/SpellingDictionary/TyposDictionary.js", "../node_modules/cspell-dictionary/dist/SpellingDictionary/FlagWordsDictionary.js", "../node_modules/cspell-dictionary/dist/SpellingDictionary/IgnoreWordsDictionary.js", "../node_modules/cspell-dictionary/dist/SpellingDictionary/SpellingDictionaryCollection.js", "../node_modules/cspell-dictionary/dist/SpellingDictionary/SuggestDictionary.js", "../node_modules/cspell-dictionary/dist/SpellingDictionary/createInlineSpellingDictionary.js", "../node_modules/@cspell/url/dist/index.js", "../node_modules/cspell-lib/dist/lib/util/util.js", "../node_modules/cspell-io/dist/index.js", "../node_modules/@cspell/cspell-service-bus/dist/esm/request.js", "../node_modules/@cspell/cspell-service-bus/dist/esm/createRequestHandler.js", "../node_modules/@cspell/cspell-service-bus/dist/esm/requestFactory.js", "../node_modules/cspell-lib/dist/lib/util/textRegex.js", "webpack://LIB/node_modules/path-browserify/index.js", "webpack://LIB/webpack/bootstrap", "webpack://LIB/webpack/runtime/define%20property%20getters", "webpack://LIB/webpack/runtime/hasOwnProperty%20shorthand", "webpack://LIB/webpack/runtime/make%20namespace%20object", "webpack://LIB/src/platform.ts", "webpack://LIB/src/uri.ts", "webpack://LIB/src/utils.ts", "../node_modules/cspell-lib/dist/lib/util/Uri.js", "../node_modules/cspell-lib/dist/lib/util/search.js", "../node_modules/cspell-lib/dist/lib/util/text.js", "../node_modules/cspell-lib/dist/lib/util/textApi.js", "../src/_internal/spellcheck-cspell.ts", "../src/_internal/spellcheck-default-words.ts", "../src/rules/spellcheck-comments.ts", "../src/rules/task-comment-format.ts", "../src/_internal/write-good.ts", "../src/rules/write-good-comments.ts"],
  "sourcesContent": ["'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/**\n * @typedef {{ readonly [type: string]: ReadonlyArray<string> }} VisitorKeys\n */\n\n/**\n * @type {VisitorKeys}\n */\nconst KEYS = {\n    ArrayExpression: [\n        \"elements\"\n    ],\n    ArrayPattern: [\n        \"elements\"\n    ],\n    ArrowFunctionExpression: [\n        \"params\",\n        \"body\"\n    ],\n    AssignmentExpression: [\n        \"left\",\n        \"right\"\n    ],\n    AssignmentPattern: [\n        \"left\",\n        \"right\"\n    ],\n    AwaitExpression: [\n        \"argument\"\n    ],\n    BinaryExpression: [\n        \"left\",\n        \"right\"\n    ],\n    BlockStatement: [\n        \"body\"\n    ],\n    BreakStatement: [\n        \"label\"\n    ],\n    CallExpression: [\n        \"callee\",\n        \"arguments\"\n    ],\n    CatchClause: [\n        \"param\",\n        \"body\"\n    ],\n    ChainExpression: [\n        \"expression\"\n    ],\n    ClassBody: [\n        \"body\"\n    ],\n    ClassDeclaration: [\n        \"id\",\n        \"superClass\",\n        \"body\"\n    ],\n    ClassExpression: [\n        \"id\",\n        \"superClass\",\n        \"body\"\n    ],\n    ConditionalExpression: [\n        \"test\",\n        \"consequent\",\n        \"alternate\"\n    ],\n    ContinueStatement: [\n        \"label\"\n    ],\n    DebuggerStatement: [],\n    DoWhileStatement: [\n        \"body\",\n        \"test\"\n    ],\n    EmptyStatement: [],\n    ExperimentalRestProperty: [\n        \"argument\"\n    ],\n    ExperimentalSpreadProperty: [\n        \"argument\"\n    ],\n    ExportAllDeclaration: [\n        \"exported\",\n        \"source\"\n    ],\n    ExportDefaultDeclaration: [\n        \"declaration\"\n    ],\n    ExportNamedDeclaration: [\n        \"declaration\",\n        \"specifiers\",\n        \"source\"\n    ],\n    ExportSpecifier: [\n        \"exported\",\n        \"local\"\n    ],\n    ExpressionStatement: [\n        \"expression\"\n    ],\n    ForInStatement: [\n        \"left\",\n        \"right\",\n        \"body\"\n    ],\n    ForOfStatement: [\n        \"left\",\n        \"right\",\n        \"body\"\n    ],\n    ForStatement: [\n        \"init\",\n        \"test\",\n        \"update\",\n        \"body\"\n    ],\n    FunctionDeclaration: [\n        \"id\",\n        \"params\",\n        \"body\"\n    ],\n    FunctionExpression: [\n        \"id\",\n        \"params\",\n        \"body\"\n    ],\n    Identifier: [],\n    IfStatement: [\n        \"test\",\n        \"consequent\",\n        \"alternate\"\n    ],\n    ImportDeclaration: [\n        \"specifiers\",\n        \"source\"\n    ],\n    ImportDefaultSpecifier: [\n        \"local\"\n    ],\n    ImportExpression: [\n        \"source\"\n    ],\n    ImportNamespaceSpecifier: [\n        \"local\"\n    ],\n    ImportSpecifier: [\n        \"imported\",\n        \"local\"\n    ],\n    JSXAttribute: [\n        \"name\",\n        \"value\"\n    ],\n    JSXClosingElement: [\n        \"name\"\n    ],\n    JSXClosingFragment: [],\n    JSXElement: [\n        \"openingElement\",\n        \"children\",\n        \"closingElement\"\n    ],\n    JSXEmptyExpression: [],\n    JSXExpressionContainer: [\n        \"expression\"\n    ],\n    JSXFragment: [\n        \"openingFragment\",\n        \"children\",\n        \"closingFragment\"\n    ],\n    JSXIdentifier: [],\n    JSXMemberExpression: [\n        \"object\",\n        \"property\"\n    ],\n    JSXNamespacedName: [\n        \"namespace\",\n        \"name\"\n    ],\n    JSXOpeningElement: [\n        \"name\",\n        \"attributes\"\n    ],\n    JSXOpeningFragment: [],\n    JSXSpreadAttribute: [\n        \"argument\"\n    ],\n    JSXSpreadChild: [\n        \"expression\"\n    ],\n    JSXText: [],\n    LabeledStatement: [\n        \"label\",\n        \"body\"\n    ],\n    Literal: [],\n    LogicalExpression: [\n        \"left\",\n        \"right\"\n    ],\n    MemberExpression: [\n        \"object\",\n        \"property\"\n    ],\n    MetaProperty: [\n        \"meta\",\n        \"property\"\n    ],\n    MethodDefinition: [\n        \"key\",\n        \"value\"\n    ],\n    NewExpression: [\n        \"callee\",\n        \"arguments\"\n    ],\n    ObjectExpression: [\n        \"properties\"\n    ],\n    ObjectPattern: [\n        \"properties\"\n    ],\n    PrivateIdentifier: [],\n    Program: [\n        \"body\"\n    ],\n    Property: [\n        \"key\",\n        \"value\"\n    ],\n    PropertyDefinition: [\n        \"key\",\n        \"value\"\n    ],\n    RestElement: [\n        \"argument\"\n    ],\n    ReturnStatement: [\n        \"argument\"\n    ],\n    SequenceExpression: [\n        \"expressions\"\n    ],\n    SpreadElement: [\n        \"argument\"\n    ],\n    StaticBlock: [\n        \"body\"\n    ],\n    Super: [],\n    SwitchCase: [\n        \"test\",\n        \"consequent\"\n    ],\n    SwitchStatement: [\n        \"discriminant\",\n        \"cases\"\n    ],\n    TaggedTemplateExpression: [\n        \"tag\",\n        \"quasi\"\n    ],\n    TemplateElement: [],\n    TemplateLiteral: [\n        \"quasis\",\n        \"expressions\"\n    ],\n    ThisExpression: [],\n    ThrowStatement: [\n        \"argument\"\n    ],\n    TryStatement: [\n        \"block\",\n        \"handler\",\n        \"finalizer\"\n    ],\n    UnaryExpression: [\n        \"argument\"\n    ],\n    UpdateExpression: [\n        \"argument\"\n    ],\n    VariableDeclaration: [\n        \"declarations\"\n    ],\n    VariableDeclarator: [\n        \"id\",\n        \"init\"\n    ],\n    WhileStatement: [\n        \"test\",\n        \"body\"\n    ],\n    WithStatement: [\n        \"object\",\n        \"body\"\n    ],\n    YieldExpression: [\n        \"argument\"\n    ]\n};\n\n// Types.\nconst NODE_TYPES = Object.keys(KEYS);\n\n// Freeze the keys.\nfor (const type of NODE_TYPES) {\n    Object.freeze(KEYS[type]);\n}\nObject.freeze(KEYS);\n\n/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * See LICENSE file in root directory for full license.\n */\n\n/**\n * @typedef {import('./visitor-keys.js').VisitorKeys} VisitorKeys\n */\n\n// List to ignore keys.\nconst KEY_BLACKLIST = new Set([\n    \"parent\",\n    \"leadingComments\",\n    \"trailingComments\"\n]);\n\n/**\n * Check whether a given key should be used or not.\n * @param {string} key The key to check.\n * @returns {boolean} `true` if the key should be used.\n */\nfunction filterKey(key) {\n    return !KEY_BLACKLIST.has(key) && key[0] !== \"_\";\n}\n\n/**\n * Get visitor keys of a given node.\n * @param {object} node The AST node to get keys.\n * @returns {readonly string[]} Visitor keys of the node.\n */\nfunction getKeys(node) {\n    return Object.keys(node).filter(filterKey);\n}\n\n// Disable valid-jsdoc rule because it reports syntax error on the type of @returns.\n// eslint-disable-next-line valid-jsdoc\n/**\n * Make the union set with `KEYS` and given keys.\n * @param {VisitorKeys} additionalKeys The additional keys.\n * @returns {VisitorKeys} The union set.\n */\nfunction unionWith(additionalKeys) {\n    const retv = /** @type {{\n        [type: string]: ReadonlyArray<string>\n    }} */ (Object.assign({}, KEYS));\n\n    for (const type of Object.keys(additionalKeys)) {\n        if (Object.prototype.hasOwnProperty.call(retv, type)) {\n            const keys = new Set(additionalKeys[type]);\n\n            for (const key of retv[type]) {\n                keys.add(key);\n            }\n\n            retv[type] = Object.freeze(Array.from(keys));\n        } else {\n            retv[type] = Object.freeze(Array.from(additionalKeys[type]));\n        }\n    }\n\n    return Object.freeze(retv);\n}\n\nexports.KEYS = KEYS;\nexports.getKeys = getKeys;\nexports.unionWith = unionWith;\n", "/** @typedef {import(\"eslint\").Scope.Scope} Scope */\n/** @typedef {import(\"estree\").Node} Node */\n\n/**\n * Get the innermost scope which contains a given location.\n * @param {Scope} initialScope The initial scope to search.\n * @param {Node} node The location to search.\n * @returns {Scope} The innermost scope.\n */\nexport function getInnermostScope(initialScope, node) {\n    const location = /** @type {[number, number]} */ (node.range)[0]\n\n    let scope = initialScope\n    let found = false\n    do {\n        found = false\n        for (const childScope of scope.childScopes) {\n            const range = /** @type {[number, number]} */ (\n                childScope.block.range\n            )\n\n            if (range[0] <= location && location < range[1]) {\n                scope = childScope\n                found = true\n                break\n            }\n        }\n    } while (found)\n\n    return scope\n}\n", "import { getInnermostScope } from \"./get-innermost-scope.mjs\"\n/** @typedef {import(\"eslint\").Scope.Scope} Scope */\n/** @typedef {import(\"eslint\").Scope.Variable} Variable */\n/** @typedef {import(\"estree\").Identifier} Identifier */\n\n/**\n * Find the variable of a given name.\n * @param {Scope} initialScope The scope to start finding.\n * @param {string|Identifier} nameOrNode The variable name to find. If this is a Node object then it should be an Identifier node.\n * @returns {Variable|null} The found variable or null.\n */\nexport function findVariable(initialScope, nameOrNode) {\n    let name = \"\"\n    /** @type {Scope|null} */\n    let scope = initialScope\n\n    if (typeof nameOrNode === \"string\") {\n        name = nameOrNode\n    } else {\n        name = nameOrNode.name\n        scope = getInnermostScope(scope, nameOrNode)\n    }\n\n    while (scope != null) {\n        const variable = scope.set.get(name)\n        if (variable != null) {\n            return variable\n        }\n        scope = scope.upper\n    }\n\n    return null\n}\n", "/** @typedef {import(\"eslint\").AST.Token} Token */\n/** @typedef {import(\"estree\").Comment} Comment */\n/** @typedef {import(\"./types.mjs\").ArrowToken} ArrowToken */\n/** @typedef {import(\"./types.mjs\").CommaToken} CommaToken */\n/** @typedef {import(\"./types.mjs\").SemicolonToken} SemicolonToken */\n/** @typedef {import(\"./types.mjs\").ColonToken} ColonToken */\n/** @typedef {import(\"./types.mjs\").OpeningParenToken} OpeningParenToken */\n/** @typedef {import(\"./types.mjs\").ClosingParenToken} ClosingParenToken */\n/** @typedef {import(\"./types.mjs\").OpeningBracketToken} OpeningBracketToken */\n/** @typedef {import(\"./types.mjs\").ClosingBracketToken} ClosingBracketToken */\n/** @typedef {import(\"./types.mjs\").OpeningBraceToken} OpeningBraceToken */\n/** @typedef {import(\"./types.mjs\").ClosingBraceToken} ClosingBraceToken */\n/**\n * @template {string} Value\n * @typedef {import(\"./types.mjs\").PunctuatorToken<Value>} PunctuatorToken\n */\n\n/** @typedef {Comment | Token} CommentOrToken */\n\n/**\n * Creates the negate function of the given function.\n * @param {function(CommentOrToken):boolean} f - The function to negate.\n * @returns {function(CommentOrToken):boolean} Negated function.\n */\nfunction negate(f) {\n    return (token) => !f(token)\n}\n\n/**\n * Checks if the given token is a PunctuatorToken with the given value\n * @template {string} Value\n * @param {CommentOrToken} token - The token to check.\n * @param {Value} value - The value to check.\n * @returns {token is PunctuatorToken<Value>} `true` if the token is a PunctuatorToken with the given value.\n */\nfunction isPunctuatorTokenWithValue(token, value) {\n    return token.type === \"Punctuator\" && token.value === value\n}\n\n/**\n * Checks if the given token is an arrow token or not.\n * @param {CommentOrToken} token - The token to check.\n * @returns {token is ArrowToken} `true` if the token is an arrow token.\n */\nexport function isArrowToken(token) {\n    return isPunctuatorTokenWithValue(token, \"=>\")\n}\n\n/**\n * Checks if the given token is a comma token or not.\n * @param {CommentOrToken} token - The token to check.\n * @returns {token is CommaToken} `true` if the token is a comma token.\n */\nexport function isCommaToken(token) {\n    return isPunctuatorTokenWithValue(token, \",\")\n}\n\n/**\n * Checks if the given token is a semicolon token or not.\n * @param {CommentOrToken} token - The token to check.\n * @returns {token is SemicolonToken} `true` if the token is a semicolon token.\n */\nexport function isSemicolonToken(token) {\n    return isPunctuatorTokenWithValue(token, \";\")\n}\n\n/**\n * Checks if the given token is a colon token or not.\n * @param {CommentOrToken} token - The token to check.\n * @returns {token is ColonToken} `true` if the token is a colon token.\n */\nexport function isColonToken(token) {\n    return isPunctuatorTokenWithValue(token, \":\")\n}\n\n/**\n * Checks if the given token is an opening parenthesis token or not.\n * @param {CommentOrToken} token - The token to check.\n * @returns {token is OpeningParenToken} `true` if the token is an opening parenthesis token.\n */\nexport function isOpeningParenToken(token) {\n    return isPunctuatorTokenWithValue(token, \"(\")\n}\n\n/**\n * Checks if the given token is a closing parenthesis token or not.\n * @param {CommentOrToken} token - The token to check.\n * @returns {token is ClosingParenToken} `true` if the token is a closing parenthesis token.\n */\nexport function isClosingParenToken(token) {\n    return isPunctuatorTokenWithValue(token, \")\")\n}\n\n/**\n * Checks if the given token is an opening square bracket token or not.\n * @param {CommentOrToken} token - The token to check.\n * @returns {token is OpeningBracketToken} `true` if the token is an opening square bracket token.\n */\nexport function isOpeningBracketToken(token) {\n    return isPunctuatorTokenWithValue(token, \"[\")\n}\n\n/**\n * Checks if the given token is a closing square bracket token or not.\n * @param {CommentOrToken} token - The token to check.\n * @returns {token is ClosingBracketToken} `true` if the token is a closing square bracket token.\n */\nexport function isClosingBracketToken(token) {\n    return isPunctuatorTokenWithValue(token, \"]\")\n}\n\n/**\n * Checks if the given token is an opening brace token or not.\n * @param {CommentOrToken} token - The token to check.\n * @returns {token is OpeningBraceToken} `true` if the token is an opening brace token.\n */\nexport function isOpeningBraceToken(token) {\n    return isPunctuatorTokenWithValue(token, \"{\")\n}\n\n/**\n * Checks if the given token is a closing brace token or not.\n * @param {CommentOrToken} token - The token to check.\n * @returns {token is ClosingBraceToken} `true` if the token is a closing brace token.\n */\nexport function isClosingBraceToken(token) {\n    return isPunctuatorTokenWithValue(token, \"}\")\n}\n\n/**\n * Checks if the given token is a comment token or not.\n * @param {CommentOrToken} token - The token to check.\n * @returns {token is Comment} `true` if the token is a comment token.\n */\nexport function isCommentToken(token) {\n    return [\"Block\", \"Line\", \"Shebang\"].includes(token.type)\n}\n\nexport const isNotArrowToken = negate(isArrowToken)\nexport const isNotCommaToken = negate(isCommaToken)\nexport const isNotSemicolonToken = negate(isSemicolonToken)\nexport const isNotColonToken = negate(isColonToken)\nexport const isNotOpeningParenToken = negate(isOpeningParenToken)\nexport const isNotClosingParenToken = negate(isClosingParenToken)\nexport const isNotOpeningBracketToken = negate(isOpeningBracketToken)\nexport const isNotClosingBracketToken = negate(isClosingBracketToken)\nexport const isNotOpeningBraceToken = negate(isOpeningBraceToken)\nexport const isNotClosingBraceToken = negate(isClosingBraceToken)\nexport const isNotCommentToken = negate(isCommentToken)\n", "import { isArrowToken, isOpeningParenToken } from \"./token-predicate.mjs\"\n/** @typedef {import(\"eslint\").Rule.Node} RuleNode */\n/** @typedef {import(\"eslint\").SourceCode} SourceCode */\n/** @typedef {import(\"eslint\").AST.Token} Token */\n/** @typedef {import(\"estree\").Function} FunctionNode */\n/** @typedef {import(\"estree\").FunctionDeclaration} FunctionDeclaration */\n/** @typedef {import(\"estree\").FunctionExpression} FunctionExpression */\n/** @typedef {import(\"estree\").SourceLocation} SourceLocation */\n/** @typedef {import(\"estree\").Position} Position */\n\n/**\n * Get the `(` token of the given function node.\n * @param {FunctionExpression | FunctionDeclaration} node - The function node to get.\n * @param {SourceCode} sourceCode - The source code object to get tokens.\n * @returns {Token} `(` token.\n */\nfunction getOpeningParenOfParams(node, sourceCode) {\n    return node.id\n        ? /** @type {Token} */ (\n              sourceCode.getTokenAfter(node.id, isOpeningParenToken)\n          )\n        : /** @type {Token} */ (\n              sourceCode.getFirstToken(node, isOpeningParenToken)\n          )\n}\n\n/**\n * Get the location of the given function node for reporting.\n * @param {FunctionNode} node - The function node to get.\n * @param {SourceCode} sourceCode - The source code object to get tokens.\n * @returns {SourceLocation|null} The location of the function node for reporting.\n */\nexport function getFunctionHeadLocation(node, sourceCode) {\n    const parent = /** @type {RuleNode} */ (node).parent\n\n    /** @type {Position|null} */\n    let start = null\n    /** @type {Position|null} */\n    let end = null\n\n    if (node.type === \"ArrowFunctionExpression\") {\n        const arrowToken = /** @type {Token} */ (\n            sourceCode.getTokenBefore(node.body, isArrowToken)\n        )\n\n        start = arrowToken.loc.start\n        end = arrowToken.loc.end\n    } else if (\n        parent &&\n        (parent.type === \"Property\" ||\n            parent.type === \"MethodDefinition\" ||\n            parent.type === \"PropertyDefinition\")\n    ) {\n        start = /** @type {SourceLocation} */ (parent.loc).start\n        end = getOpeningParenOfParams(node, sourceCode).loc.start\n    } else {\n        start = /** @type {SourceLocation} */ (node.loc).start\n        end = getOpeningParenOfParams(node, sourceCode).loc.start\n    }\n\n    return {\n        start: { ...start },\n        end: { ...end },\n    }\n}\n", "/* globals globalThis, global, self, window */\n\nimport { findVariable } from \"./find-variable.mjs\"\n/** @typedef {import(\"./types.mjs\").StaticValue} StaticValue */\n/** @typedef {import(\"eslint\").Scope.Scope} Scope */\n/** @typedef {import(\"eslint\").Scope.Variable} Variable */\n/** @typedef {import(\"estree\").Node} Node */\n/** @typedef {import(\"@typescript-eslint/types\").TSESTree.Node} TSESTreeNode */\n/** @typedef {import(\"@typescript-eslint/types\").TSESTree.AST_NODE_TYPES} TSESTreeNodeTypes */\n/** @typedef {import(\"@typescript-eslint/types\").TSESTree.MemberExpression} MemberExpression */\n/** @typedef {import(\"@typescript-eslint/types\").TSESTree.Property} Property */\n/** @typedef {import(\"@typescript-eslint/types\").TSESTree.RegExpLiteral} RegExpLiteral */\n/** @typedef {import(\"@typescript-eslint/types\").TSESTree.BigIntLiteral} BigIntLiteral */\n/** @typedef {import(\"@typescript-eslint/types\").TSESTree.Literal} Literal */\n\nconst globalObject =\n    typeof globalThis !== \"undefined\"\n        ? globalThis\n        : // @ts-ignore\n        typeof self !== \"undefined\"\n        ? // @ts-ignore\n          self\n        : // @ts-ignore\n        typeof window !== \"undefined\"\n        ? // @ts-ignore\n          window\n        : typeof global !== \"undefined\"\n        ? global\n        : {}\n\nconst builtinNames = Object.freeze(\n    new Set([\n        \"Array\",\n        \"ArrayBuffer\",\n        \"BigInt\",\n        \"BigInt64Array\",\n        \"BigUint64Array\",\n        \"Boolean\",\n        \"DataView\",\n        \"Date\",\n        \"decodeURI\",\n        \"decodeURIComponent\",\n        \"encodeURI\",\n        \"encodeURIComponent\",\n        \"escape\",\n        \"Float32Array\",\n        \"Float64Array\",\n        \"Function\",\n        \"Infinity\",\n        \"Int16Array\",\n        \"Int32Array\",\n        \"Int8Array\",\n        \"isFinite\",\n        \"isNaN\",\n        \"isPrototypeOf\",\n        \"JSON\",\n        \"Map\",\n        \"Math\",\n        \"NaN\",\n        \"Number\",\n        \"Object\",\n        \"parseFloat\",\n        \"parseInt\",\n        \"Promise\",\n        \"Proxy\",\n        \"Reflect\",\n        \"RegExp\",\n        \"Set\",\n        \"String\",\n        \"Symbol\",\n        \"Uint16Array\",\n        \"Uint32Array\",\n        \"Uint8Array\",\n        \"Uint8ClampedArray\",\n        \"undefined\",\n        \"unescape\",\n        \"WeakMap\",\n        \"WeakSet\",\n    ]),\n)\nconst callAllowed = new Set(\n    [\n        Array.isArray,\n        Array.of,\n        Array.prototype.at,\n        Array.prototype.concat,\n        Array.prototype.entries,\n        Array.prototype.every,\n        Array.prototype.filter,\n        Array.prototype.find,\n        Array.prototype.findIndex,\n        Array.prototype.flat,\n        Array.prototype.includes,\n        Array.prototype.indexOf,\n        Array.prototype.join,\n        Array.prototype.keys,\n        Array.prototype.lastIndexOf,\n        Array.prototype.slice,\n        Array.prototype.some,\n        Array.prototype.toString,\n        Array.prototype.values,\n        typeof BigInt === \"function\" ? BigInt : undefined,\n        Boolean,\n        Date,\n        Date.parse,\n        decodeURI,\n        decodeURIComponent,\n        encodeURI,\n        encodeURIComponent,\n        escape,\n        isFinite,\n        isNaN,\n        // @ts-ignore\n        isPrototypeOf,\n        Map,\n        Map.prototype.entries,\n        Map.prototype.get,\n        Map.prototype.has,\n        Map.prototype.keys,\n        Map.prototype.values,\n        .../** @type {(keyof typeof Math)[]} */ (\n            Object.getOwnPropertyNames(Math)\n        )\n            .filter((k) => k !== \"random\")\n            .map((k) => Math[k])\n            .filter((f) => typeof f === \"function\"),\n        Number,\n        Number.isFinite,\n        Number.isNaN,\n        Number.parseFloat,\n        Number.parseInt,\n        Number.prototype.toExponential,\n        Number.prototype.toFixed,\n        Number.prototype.toPrecision,\n        Number.prototype.toString,\n        Object,\n        Object.entries,\n        Object.is,\n        Object.isExtensible,\n        Object.isFrozen,\n        Object.isSealed,\n        Object.keys,\n        Object.values,\n        parseFloat,\n        parseInt,\n        RegExp,\n        Set,\n        Set.prototype.entries,\n        Set.prototype.has,\n        Set.prototype.keys,\n        Set.prototype.values,\n        String,\n        String.fromCharCode,\n        String.fromCodePoint,\n        String.raw,\n        String.prototype.at,\n        String.prototype.charAt,\n        String.prototype.charCodeAt,\n        String.prototype.codePointAt,\n        String.prototype.concat,\n        String.prototype.endsWith,\n        String.prototype.includes,\n        String.prototype.indexOf,\n        String.prototype.lastIndexOf,\n        String.prototype.normalize,\n        String.prototype.padEnd,\n        String.prototype.padStart,\n        String.prototype.slice,\n        String.prototype.startsWith,\n        String.prototype.substr,\n        String.prototype.substring,\n        String.prototype.toLowerCase,\n        String.prototype.toString,\n        String.prototype.toUpperCase,\n        String.prototype.trim,\n        String.prototype.trimEnd,\n        String.prototype.trimLeft,\n        String.prototype.trimRight,\n        String.prototype.trimStart,\n        Symbol.for,\n        Symbol.keyFor,\n        unescape,\n    ].filter((f) => typeof f === \"function\"),\n)\nconst callPassThrough = new Set([\n    Object.freeze,\n    Object.preventExtensions,\n    Object.seal,\n])\n\n/** @type {ReadonlyArray<readonly [Function, ReadonlySet<string>]>} */\nconst getterAllowed = [\n    [Map, new Set([\"size\"])],\n    [\n        RegExp,\n        new Set([\n            \"dotAll\",\n            \"flags\",\n            \"global\",\n            \"hasIndices\",\n            \"ignoreCase\",\n            \"multiline\",\n            \"source\",\n            \"sticky\",\n            \"unicode\",\n        ]),\n    ],\n    [Set, new Set([\"size\"])],\n]\n\n/**\n * Get the property descriptor.\n * @param {object} object The object to get.\n * @param {string|number|symbol} name The property name to get.\n */\nfunction getPropertyDescriptor(object, name) {\n    let x = object\n    while ((typeof x === \"object\" || typeof x === \"function\") && x !== null) {\n        const d = Object.getOwnPropertyDescriptor(x, name)\n        if (d) {\n            return d\n        }\n        x = Object.getPrototypeOf(x)\n    }\n    return null\n}\n\n/**\n * Check if a property is getter or not.\n * @param {object} object The object to check.\n * @param {string|number|symbol} name The property name to check.\n */\nfunction isGetter(object, name) {\n    const d = getPropertyDescriptor(object, name)\n    return d != null && d.get != null\n}\n\n/**\n * Get the element values of a given node list.\n * @param {(Node|TSESTreeNode|null)[]} nodeList The node list to get values.\n * @param {Scope|undefined|null} initialScope The initial scope to find variables.\n * @returns {any[]|null} The value list if all nodes are constant. Otherwise, null.\n */\nfunction getElementValues(nodeList, initialScope) {\n    const valueList = []\n\n    for (let i = 0; i < nodeList.length; ++i) {\n        const elementNode = nodeList[i]\n\n        if (elementNode == null) {\n            valueList.length = i + 1\n        } else if (elementNode.type === \"SpreadElement\") {\n            const argument = getStaticValueR(elementNode.argument, initialScope)\n            if (argument == null) {\n                return null\n            }\n            valueList.push(.../** @type {Iterable<any>} */ (argument.value))\n        } else {\n            const element = getStaticValueR(elementNode, initialScope)\n            if (element == null) {\n                return null\n            }\n            valueList.push(element.value)\n        }\n    }\n\n    return valueList\n}\n\n/**\n * Checks if a variable is a built-in global.\n * @param {Variable|null} variable The variable to check.\n * @returns {variable is Variable & {defs:[]}}\n */\nfunction isBuiltinGlobal(variable) {\n    return (\n        variable != null &&\n        variable.defs.length === 0 &&\n        builtinNames.has(variable.name) &&\n        variable.name in globalObject\n    )\n}\n\n/**\n * Checks if a variable can be considered as a constant.\n * @param {Variable} variable\n * @returns {variable is Variable & {defs: [import(\"eslint\").Scope.Definition & { type: \"Variable\" }]}} True if the variable can be considered as a constant.\n */\nfunction canBeConsideredConst(variable) {\n    if (variable.defs.length !== 1) {\n        return false\n    }\n    const def = variable.defs[0]\n    return Boolean(\n        def.parent &&\n            def.type === \"Variable\" &&\n            (def.parent.kind === \"const\" || isEffectivelyConst(variable)),\n    )\n}\n\n/**\n * Returns whether the given variable is never written to after initialization.\n * @param {Variable} variable\n * @returns {boolean}\n */\nfunction isEffectivelyConst(variable) {\n    const refs = variable.references\n\n    const inits = refs.filter((r) => r.init).length\n    const reads = refs.filter((r) => r.isReadOnly()).length\n    if (inits === 1 && reads + inits === refs.length) {\n        // there is only one init and all other references only read\n        return true\n    }\n    return false\n}\n\n/**\n * Checks if a variable has mutation in its property.\n * @param {Variable} variable The variable to check.\n * @param {Scope|null} initialScope The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.\n * @returns {boolean} True if the variable has mutation in its property.\n */\nfunction hasMutationInProperty(variable, initialScope) {\n    for (const ref of variable.references) {\n        let node = /** @type {TSESTreeNode} */ (ref.identifier)\n        while (node && node.parent && node.parent.type === \"MemberExpression\") {\n            node = node.parent\n        }\n        if (!node || !node.parent) {\n            continue\n        }\n        if (\n            (node.parent.type === \"AssignmentExpression\" &&\n                node.parent.left === node) ||\n            (node.parent.type === \"UpdateExpression\" &&\n                node.parent.argument === node)\n        ) {\n            // This is a mutation.\n            return true\n        }\n        if (\n            node.parent.type === \"CallExpression\" &&\n            node.parent.callee === node &&\n            node.type === \"MemberExpression\"\n        ) {\n            const methodName = getStaticPropertyNameValue(node, initialScope)\n            if (isNameOfMutationArrayMethod(methodName)) {\n                // This is a mutation.\n                return true\n            }\n        }\n    }\n    return false\n\n    /**\n     * Checks if a method name is one of the mutation array methods.\n     * @param {StaticValue|null} methodName The method name to check.\n     * @returns {boolean} True if the method name is a mutation array method.\n     */\n    function isNameOfMutationArrayMethod(methodName) {\n        if (methodName == null || methodName.value == null) {\n            return false\n        }\n        const name = methodName.value\n        return (\n            name === \"copyWithin\" ||\n            name === \"fill\" ||\n            name === \"pop\" ||\n            name === \"push\" ||\n            name === \"reverse\" ||\n            name === \"shift\" ||\n            name === \"sort\" ||\n            name === \"splice\" ||\n            name === \"unshift\"\n        )\n    }\n}\n\n/**\n * @template {TSESTreeNodeTypes} T\n * @callback VisitorCallback\n * @param {TSESTreeNode & { type: T }} node\n * @param {Scope|undefined|null} initialScope\n * @returns {StaticValue | null}\n */\n/**\n * @typedef { { [K in TSESTreeNodeTypes]?: VisitorCallback<K> } } Operations\n */\n/**\n * @type {Operations}\n */\nconst operations = Object.freeze({\n    ArrayExpression(node, initialScope) {\n        const elements = getElementValues(node.elements, initialScope)\n        return elements != null ? { value: elements } : null\n    },\n\n    AssignmentExpression(node, initialScope) {\n        if (node.operator === \"=\") {\n            return getStaticValueR(node.right, initialScope)\n        }\n        return null\n    },\n\n    //eslint-disable-next-line complexity\n    BinaryExpression(node, initialScope) {\n        if (node.operator === \"in\" || node.operator === \"instanceof\") {\n            // Not supported.\n            return null\n        }\n\n        const left = getStaticValueR(node.left, initialScope)\n        const right = getStaticValueR(node.right, initialScope)\n        if (left != null && right != null) {\n            switch (node.operator) {\n                case \"==\":\n                    return { value: left.value == right.value } //eslint-disable-line eqeqeq\n                case \"!=\":\n                    return { value: left.value != right.value } //eslint-disable-line eqeqeq\n                case \"===\":\n                    return { value: left.value === right.value }\n                case \"!==\":\n                    return { value: left.value !== right.value }\n                case \"<\":\n                    return {\n                        value:\n                            /** @type {any} */ (left.value) <\n                            /** @type {any} */ (right.value),\n                    }\n                case \"<=\":\n                    return {\n                        value:\n                            /** @type {any} */ (left.value) <=\n                            /** @type {any} */ (right.value),\n                    }\n                case \">\":\n                    return {\n                        value:\n                            /** @type {any} */ (left.value) >\n                            /** @type {any} */ (right.value),\n                    }\n                case \">=\":\n                    return {\n                        value:\n                            /** @type {any} */ (left.value) >=\n                            /** @type {any} */ (right.value),\n                    }\n                case \"<<\":\n                    return {\n                        value:\n                            /** @type {any} */ (left.value) <<\n                            /** @type {any} */ (right.value),\n                    }\n                case \">>\":\n                    return {\n                        value:\n                            /** @type {any} */ (left.value) >>\n                            /** @type {any} */ (right.value),\n                    }\n                case \">>>\":\n                    return {\n                        value:\n                            /** @type {any} */ (left.value) >>>\n                            /** @type {any} */ (right.value),\n                    }\n                case \"+\":\n                    return {\n                        value:\n                            /** @type {any} */ (left.value) +\n                            /** @type {any} */ (right.value),\n                    }\n                case \"-\":\n                    return {\n                        value:\n                            /** @type {any} */ (left.value) -\n                            /** @type {any} */ (right.value),\n                    }\n                case \"*\":\n                    return {\n                        value:\n                            /** @type {any} */ (left.value) *\n                            /** @type {any} */ (right.value),\n                    }\n                case \"/\":\n                    return {\n                        value:\n                            /** @type {any} */ (left.value) /\n                            /** @type {any} */ (right.value),\n                    }\n                case \"%\":\n                    return {\n                        value:\n                            /** @type {any} */ (left.value) %\n                            /** @type {any} */ (right.value),\n                    }\n                case \"**\":\n                    return {\n                        value:\n                            /** @type {any} */ (left.value) **\n                            /** @type {any} */ (right.value),\n                    }\n                case \"|\":\n                    return {\n                        value:\n                            /** @type {any} */ (left.value) |\n                            /** @type {any} */ (right.value),\n                    }\n                case \"^\":\n                    return {\n                        value:\n                            /** @type {any} */ (left.value) ^\n                            /** @type {any} */ (right.value),\n                    }\n                case \"&\":\n                    return {\n                        value:\n                            /** @type {any} */ (left.value) &\n                            /** @type {any} */ (right.value),\n                    }\n\n                // no default\n            }\n        }\n\n        return null\n    },\n\n    CallExpression(node, initialScope) {\n        const calleeNode = node.callee\n        const args = getElementValues(node.arguments, initialScope)\n\n        if (args != null) {\n            if (calleeNode.type === \"MemberExpression\") {\n                if (calleeNode.property.type === \"PrivateIdentifier\") {\n                    return null\n                }\n                const object = getStaticValueR(calleeNode.object, initialScope)\n                if (object != null) {\n                    if (\n                        object.value == null &&\n                        (object.optional || node.optional)\n                    ) {\n                        return { value: undefined, optional: true }\n                    }\n                    const property = getStaticPropertyNameValue(\n                        calleeNode,\n                        initialScope,\n                    )\n\n                    if (property != null) {\n                        const receiver =\n                            /** @type {Record<PropertyKey, (...args: any[]) => any>} */ (\n                                object.value\n                            )\n                        const methodName = /** @type {PropertyKey} */ (\n                            property.value\n                        )\n                        if (callAllowed.has(receiver[methodName])) {\n                            return {\n                                value: receiver[methodName](...args),\n                            }\n                        }\n                        if (callPassThrough.has(receiver[methodName])) {\n                            return { value: args[0] }\n                        }\n                    }\n                }\n            } else {\n                const callee = getStaticValueR(calleeNode, initialScope)\n                if (callee != null) {\n                    if (callee.value == null && node.optional) {\n                        return { value: undefined, optional: true }\n                    }\n                    const func = /** @type {(...args: any[]) => any} */ (\n                        callee.value\n                    )\n                    if (callAllowed.has(func)) {\n                        return { value: func(...args) }\n                    }\n                    if (callPassThrough.has(func)) {\n                        return { value: args[0] }\n                    }\n                }\n            }\n        }\n\n        return null\n    },\n\n    ConditionalExpression(node, initialScope) {\n        const test = getStaticValueR(node.test, initialScope)\n        if (test != null) {\n            return test.value\n                ? getStaticValueR(node.consequent, initialScope)\n                : getStaticValueR(node.alternate, initialScope)\n        }\n        return null\n    },\n\n    ExpressionStatement(node, initialScope) {\n        return getStaticValueR(node.expression, initialScope)\n    },\n\n    Identifier(node, initialScope) {\n        if (initialScope != null) {\n            const variable = findVariable(initialScope, node)\n\n            if (variable != null) {\n                // Built-in globals.\n                if (isBuiltinGlobal(variable)) {\n                    return { value: globalObject[variable.name] }\n                }\n\n                // Constants.\n                if (canBeConsideredConst(variable)) {\n                    const def = variable.defs[0]\n                    if (\n                        // TODO(mysticatea): don't support destructuring here.\n                        def.node.id.type === \"Identifier\"\n                    ) {\n                        const init = getStaticValueR(\n                            def.node.init,\n                            initialScope,\n                        )\n                        if (\n                            init &&\n                            typeof init.value === \"object\" &&\n                            init.value !== null\n                        ) {\n                            if (hasMutationInProperty(variable, initialScope)) {\n                                // This variable has mutation in its property.\n                                return null\n                            }\n                        }\n                        return init\n                    }\n                }\n            }\n        }\n        return null\n    },\n\n    Literal(node) {\n        const literal =\n            /** @type {Partial<Literal> & Partial<RegExpLiteral> & Partial<BigIntLiteral>} */ (\n                node\n            )\n        //istanbul ignore if : this is implementation-specific behavior.\n        if (\n            (literal.regex != null || literal.bigint != null) &&\n            literal.value == null\n        ) {\n            // It was a RegExp/BigInt literal, but Node.js didn't support it.\n            return null\n        }\n        return { value: literal.value }\n    },\n\n    LogicalExpression(node, initialScope) {\n        const left = getStaticValueR(node.left, initialScope)\n        if (left != null) {\n            if (\n                (node.operator === \"||\" && Boolean(left.value) === true) ||\n                (node.operator === \"&&\" && Boolean(left.value) === false) ||\n                (node.operator === \"??\" && left.value != null)\n            ) {\n                return left\n            }\n\n            const right = getStaticValueR(node.right, initialScope)\n            if (right != null) {\n                return right\n            }\n        }\n\n        return null\n    },\n\n    MemberExpression(node, initialScope) {\n        if (node.property.type === \"PrivateIdentifier\") {\n            return null\n        }\n        const object = getStaticValueR(node.object, initialScope)\n        if (object != null) {\n            if (object.value == null && (object.optional || node.optional)) {\n                return { value: undefined, optional: true }\n            }\n            const property = getStaticPropertyNameValue(node, initialScope)\n\n            if (property != null) {\n                if (\n                    !isGetter(\n                        /** @type {object} */ (object.value),\n                        /** @type {PropertyKey} */ (property.value),\n                    )\n                ) {\n                    return {\n                        value: /** @type {Record<PropertyKey, unknown>} */ (\n                            object.value\n                        )[/** @type {PropertyKey} */ (property.value)],\n                    }\n                }\n\n                for (const [classFn, allowed] of getterAllowed) {\n                    if (\n                        object.value instanceof classFn &&\n                        allowed.has(/** @type {string} */ (property.value))\n                    ) {\n                        return {\n                            value: /** @type {Record<PropertyKey, unknown>} */ (\n                                object.value\n                            )[/** @type {PropertyKey} */ (property.value)],\n                        }\n                    }\n                }\n            }\n        }\n        return null\n    },\n\n    ChainExpression(node, initialScope) {\n        const expression = getStaticValueR(node.expression, initialScope)\n        if (expression != null) {\n            return { value: expression.value }\n        }\n        return null\n    },\n\n    NewExpression(node, initialScope) {\n        const callee = getStaticValueR(node.callee, initialScope)\n        const args = getElementValues(node.arguments, initialScope)\n\n        if (callee != null && args != null) {\n            const Func = /** @type {new (...args: any[]) => any} */ (\n                callee.value\n            )\n            if (callAllowed.has(Func)) {\n                return { value: new Func(...args) }\n            }\n        }\n\n        return null\n    },\n\n    ObjectExpression(node, initialScope) {\n        /** @type {Record<PropertyKey, unknown>} */\n        const object = {}\n\n        for (const propertyNode of node.properties) {\n            if (propertyNode.type === \"Property\") {\n                if (propertyNode.kind !== \"init\") {\n                    return null\n                }\n                const key = getStaticPropertyNameValue(\n                    propertyNode,\n                    initialScope,\n                )\n                const value = getStaticValueR(propertyNode.value, initialScope)\n                if (key == null || value == null) {\n                    return null\n                }\n                object[/** @type {PropertyKey} */ (key.value)] = value.value\n            } else if (\n                propertyNode.type === \"SpreadElement\" ||\n                // @ts-expect-error -- Backward compatibility\n                propertyNode.type === \"ExperimentalSpreadProperty\"\n            ) {\n                const argument = getStaticValueR(\n                    propertyNode.argument,\n                    initialScope,\n                )\n                if (argument == null) {\n                    return null\n                }\n                Object.assign(object, argument.value)\n            } else {\n                return null\n            }\n        }\n\n        return { value: object }\n    },\n\n    SequenceExpression(node, initialScope) {\n        const last = node.expressions[node.expressions.length - 1]\n        return getStaticValueR(last, initialScope)\n    },\n\n    TaggedTemplateExpression(node, initialScope) {\n        const tag = getStaticValueR(node.tag, initialScope)\n        const expressions = getElementValues(\n            node.quasi.expressions,\n            initialScope,\n        )\n\n        if (tag != null && expressions != null) {\n            const func = /** @type {(...args: any[]) => any} */ (tag.value)\n            /** @type {any[] & { raw?: string[] }} */\n            const strings = node.quasi.quasis.map((q) => q.value.cooked)\n            strings.raw = node.quasi.quasis.map((q) => q.value.raw)\n\n            if (func === String.raw) {\n                return { value: func(strings, ...expressions) }\n            }\n        }\n\n        return null\n    },\n\n    TemplateLiteral(node, initialScope) {\n        const expressions = getElementValues(node.expressions, initialScope)\n        if (expressions != null) {\n            let value = node.quasis[0].value.cooked\n            for (let i = 0; i < expressions.length; ++i) {\n                value += expressions[i]\n                value += /** @type {string} */ (node.quasis[i + 1].value.cooked)\n            }\n            return { value }\n        }\n        return null\n    },\n\n    UnaryExpression(node, initialScope) {\n        if (node.operator === \"delete\") {\n            // Not supported.\n            return null\n        }\n        if (node.operator === \"void\") {\n            return { value: undefined }\n        }\n\n        const arg = getStaticValueR(node.argument, initialScope)\n        if (arg != null) {\n            switch (node.operator) {\n                case \"-\":\n                    return { value: -(/** @type {any} */ (arg.value)) }\n                case \"+\":\n                    return { value: +(/** @type {any} */ (arg.value)) } //eslint-disable-line no-implicit-coercion\n                case \"!\":\n                    return { value: !arg.value }\n                case \"~\":\n                    return { value: ~(/** @type {any} */ (arg.value)) }\n                case \"typeof\":\n                    return { value: typeof arg.value }\n\n                // no default\n            }\n        }\n\n        return null\n    },\n    TSAsExpression(node, initialScope) {\n        return getStaticValueR(node.expression, initialScope)\n    },\n    TSSatisfiesExpression(node, initialScope) {\n        return getStaticValueR(node.expression, initialScope)\n    },\n    TSTypeAssertion(node, initialScope) {\n        return getStaticValueR(node.expression, initialScope)\n    },\n    TSNonNullExpression(node, initialScope) {\n        return getStaticValueR(node.expression, initialScope)\n    },\n    TSInstantiationExpression(node, initialScope) {\n        return getStaticValueR(node.expression, initialScope)\n    },\n})\n\n/**\n * Get the value of a given node if it's a static value.\n * @param {Node|TSESTreeNode|null|undefined} node The node to get.\n * @param {Scope|undefined|null} initialScope The scope to start finding variable.\n * @returns {StaticValue|null} The static value of the node, or `null`.\n */\nfunction getStaticValueR(node, initialScope) {\n    if (node != null && Object.hasOwnProperty.call(operations, node.type)) {\n        return /** @type {VisitorCallback<any>} */ (operations[node.type])(\n            /** @type {TSESTreeNode} */ (node),\n            initialScope,\n        )\n    }\n    return null\n}\n\n/**\n * Get the static value of property name from a MemberExpression node or a Property node.\n * @param {MemberExpression|Property} node The node to get.\n * @param {Scope|null} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.\n * @returns {StaticValue|null} The static value of the property name of the node, or `null`.\n */\nfunction getStaticPropertyNameValue(node, initialScope) {\n    const nameNode = node.type === \"Property\" ? node.key : node.property\n\n    if (node.computed) {\n        return getStaticValueR(nameNode, initialScope)\n    }\n\n    if (nameNode.type === \"Identifier\") {\n        return { value: nameNode.name }\n    }\n\n    if (nameNode.type === \"Literal\") {\n        if (/** @type {Partial<BigIntLiteral>} */ (nameNode).bigint) {\n            return { value: /** @type {BigIntLiteral} */ (nameNode).bigint }\n        }\n        return { value: String(nameNode.value) }\n    }\n\n    return null\n}\n\n/**\n * Get the value of a given node if it's a static value.\n * @param {Node} node The node to get.\n * @param {Scope|null} [initialScope] The scope to start finding variable. Optional. If this scope was given, this tries to resolve identifier references which are in the given node as much as possible.\n * @returns {StaticValue | null} The static value of the node, or `null`.\n */\nexport function getStaticValue(node, initialScope = null) {\n    try {\n        return getStaticValueR(node, initialScope)\n    } catch (_error) {\n        return null\n    }\n}\n", "import { getStaticValue } from \"./get-static-value.mjs\"\n/** @typedef {import(\"eslint\").Scope.Scope} Scope */\n/** @typedef {import(\"estree\").Node} Node */\n/** @typedef {import(\"estree\").RegExpLiteral} RegExpLiteral */\n/** @typedef {import(\"estree\").BigIntLiteral} BigIntLiteral */\n/** @typedef {import(\"estree\").SimpleLiteral} SimpleLiteral */\n\n/**\n * Get the value of a given node if it's a literal or a template literal.\n * @param {Node} node The node to get.\n * @param {Scope|null} [initialScope] The scope to start finding variable. Optional. If the node is an Identifier node and this scope was given, this checks the variable of the identifier, and returns the value of it if the variable is a constant.\n * @returns {string|null} The value of the node, or `null`.\n */\nexport function getStringIfConstant(node, initialScope = null) {\n    // Handle the literals that the platform doesn't support natively.\n    if (node && node.type === \"Literal\" && node.value === null) {\n        const literal =\n            /** @type {Partial<SimpleLiteral> & Partial<RegExpLiteral> & Partial<BigIntLiteral>} */ (\n                node\n            )\n        if (literal.regex) {\n            return `/${literal.regex.pattern}/${literal.regex.flags}`\n        }\n        if (literal.bigint) {\n            return literal.bigint\n        }\n    }\n\n    const evaluated = getStaticValue(node, initialScope)\n\n    if (evaluated) {\n        // `String(Symbol.prototype)` throws error\n        try {\n            return String(evaluated.value)\n        } catch {\n            // No op\n        }\n    }\n\n    return null\n}\n", "import { getStringIfConstant } from \"./get-string-if-constant.mjs\"\n/** @typedef {import(\"eslint\").Scope.Scope} Scope */\n/** @typedef {import(\"estree\").MemberExpression} MemberExpression */\n/** @typedef {import(\"estree\").MethodDefinition} MethodDefinition */\n/** @typedef {import(\"estree\").Property} Property */\n/** @typedef {import(\"estree\").PropertyDefinition} PropertyDefinition */\n/** @typedef {import(\"estree\").Identifier} Identifier */\n\n/**\n * Get the property name from a MemberExpression node or a Property node.\n * @param {MemberExpression | MethodDefinition | Property | PropertyDefinition} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.\n * @returns {string|null|undefined} The property name of the node.\n */\nexport function getPropertyName(node, initialScope) {\n    switch (node.type) {\n        case \"MemberExpression\":\n            if (node.computed) {\n                return getStringIfConstant(node.property, initialScope)\n            }\n            if (node.property.type === \"PrivateIdentifier\") {\n                return null\n            }\n            return /** @type {Partial<Identifier>} */ (node.property).name\n\n        case \"Property\":\n        case \"MethodDefinition\":\n        case \"PropertyDefinition\":\n            if (node.computed) {\n                return getStringIfConstant(node.key, initialScope)\n            }\n            if (node.key.type === \"Literal\") {\n                return String(node.key.value)\n            }\n            if (node.key.type === \"PrivateIdentifier\") {\n                return null\n            }\n            return /** @type {Partial<Identifier>} */ (node.key).name\n\n        default:\n            break\n    }\n\n    return null\n}\n", "import { getPropertyName } from \"./get-property-name.mjs\"\n/** @typedef {import(\"eslint\").Rule.Node} RuleNode */\n/** @typedef {import(\"eslint\").SourceCode} SourceCode */\n/** @typedef {import(\"estree\").Function} FunctionNode */\n/** @typedef {import(\"estree\").FunctionDeclaration} FunctionDeclaration */\n/** @typedef {import(\"estree\").FunctionExpression} FunctionExpression */\n/** @typedef {import(\"estree\").Identifier} Identifier */\n\n/**\n * Get the name and kind of the given function node.\n * @param {FunctionNode} node - The function node to get.\n * @param {SourceCode} [sourceCode] The source code object to get the code of computed property keys.\n * @returns {string} The name and kind of the function node.\n */\n// eslint-disable-next-line complexity\nexport function getFunctionNameWithKind(node, sourceCode) {\n    const parent = /** @type {RuleNode} */ (node).parent\n\n    if (!parent) {\n        return \"\"\n    }\n\n    const tokens = []\n    const isObjectMethod = parent.type === \"Property\" && parent.value === node\n    const isClassMethod =\n        parent.type === \"MethodDefinition\" && parent.value === node\n    const isClassFieldMethod =\n        parent.type === \"PropertyDefinition\" && parent.value === node\n\n    // Modifiers.\n    if (isClassMethod || isClassFieldMethod) {\n        if (parent.static) {\n            tokens.push(\"static\")\n        }\n        if (parent.key.type === \"PrivateIdentifier\") {\n            tokens.push(\"private\")\n        }\n    }\n    if (node.async) {\n        tokens.push(\"async\")\n    }\n    if (node.generator) {\n        tokens.push(\"generator\")\n    }\n\n    // Kinds.\n    if (isObjectMethod || isClassMethod) {\n        if (parent.kind === \"constructor\") {\n            return \"constructor\"\n        }\n        if (parent.kind === \"get\") {\n            tokens.push(\"getter\")\n        } else if (parent.kind === \"set\") {\n            tokens.push(\"setter\")\n        } else {\n            tokens.push(\"method\")\n        }\n    } else if (isClassFieldMethod) {\n        tokens.push(\"method\")\n    } else {\n        if (node.type === \"ArrowFunctionExpression\") {\n            tokens.push(\"arrow\")\n        }\n        tokens.push(\"function\")\n    }\n\n    // Names.\n    if (isObjectMethod || isClassMethod || isClassFieldMethod) {\n        if (parent.key.type === \"PrivateIdentifier\") {\n            tokens.push(`#${parent.key.name}`)\n        } else {\n            const name = getPropertyName(parent)\n            if (name) {\n                tokens.push(`'${name}'`)\n            } else if (sourceCode) {\n                const keyText = sourceCode.getText(parent.key)\n                if (!keyText.includes(\"\\n\")) {\n                    tokens.push(`[${keyText}]`)\n                }\n            }\n        }\n    } else if (hasId(node)) {\n        tokens.push(`'${node.id.name}'`)\n    } else if (\n        parent.type === \"VariableDeclarator\" &&\n        parent.id &&\n        parent.id.type === \"Identifier\"\n    ) {\n        tokens.push(`'${parent.id.name}'`)\n    } else if (\n        (parent.type === \"AssignmentExpression\" ||\n            parent.type === \"AssignmentPattern\") &&\n        parent.left &&\n        parent.left.type === \"Identifier\"\n    ) {\n        tokens.push(`'${parent.left.name}'`)\n    } else if (\n        parent.type === \"ExportDefaultDeclaration\" &&\n        parent.declaration === node\n    ) {\n        tokens.push(\"'default'\")\n    }\n\n    return tokens.join(\" \")\n}\n\n/**\n * @param {FunctionNode} node\n * @returns {node is FunctionDeclaration | FunctionExpression & { id: Identifier }}\n */\nfunction hasId(node) {\n    return Boolean(\n        /** @type {Partial<FunctionDeclaration | FunctionExpression>} */ (node)\n            .id,\n    )\n}\n", "import { getKeys, KEYS } from \"eslint-visitor-keys\"\n/** @typedef {import(\"estree\").Node} Node */\n/** @typedef {import(\"eslint\").SourceCode} SourceCode */\n/** @typedef {import(\"./types.mjs\").HasSideEffectOptions} HasSideEffectOptions */\n/** @typedef {import(\"estree\").BinaryExpression} BinaryExpression */\n/** @typedef {import(\"estree\").MemberExpression} MemberExpression */\n/** @typedef {import(\"estree\").MethodDefinition} MethodDefinition */\n/** @typedef {import(\"estree\").Property} Property */\n/** @typedef {import(\"estree\").PropertyDefinition} PropertyDefinition */\n/** @typedef {import(\"estree\").UnaryExpression} UnaryExpression */\n\nconst typeConversionBinaryOps = Object.freeze(\n    new Set([\n        \"==\",\n        \"!=\",\n        \"<\",\n        \"<=\",\n        \">\",\n        \">=\",\n        \"<<\",\n        \">>\",\n        \">>>\",\n        \"+\",\n        \"-\",\n        \"*\",\n        \"/\",\n        \"%\",\n        \"|\",\n        \"^\",\n        \"&\",\n        \"in\",\n    ]),\n)\nconst typeConversionUnaryOps = Object.freeze(new Set([\"-\", \"+\", \"!\", \"~\"]))\n\n/**\n * Check whether the given value is an ASTNode or not.\n * @param {any} x The value to check.\n * @returns {x is Node} `true` if the value is an ASTNode.\n */\nfunction isNode(x) {\n    return x !== null && typeof x === \"object\" && typeof x.type === \"string\"\n}\n\nconst visitor = Object.freeze(\n    Object.assign(Object.create(null), {\n        /**\n         * @param {Node} node\n         * @param {HasSideEffectOptions} options\n         * @param {Record<string, string[]>} visitorKeys\n         */\n        $visit(node, options, visitorKeys) {\n            const { type } = node\n\n            if (typeof (/** @type {any} */ (this)[type]) === \"function\") {\n                return /** @type {any} */ (this)[type](\n                    node,\n                    options,\n                    visitorKeys,\n                )\n            }\n\n            return this.$visitChildren(node, options, visitorKeys)\n        },\n\n        /**\n         * @param {Node} node\n         * @param {HasSideEffectOptions} options\n         * @param {Record<string, string[]>} visitorKeys\n         */\n        $visitChildren(node, options, visitorKeys) {\n            const { type } = node\n\n            for (const key of /** @type {(keyof Node)[]} */ (\n                visitorKeys[type] || getKeys(node)\n            )) {\n                const value = node[key]\n\n                if (Array.isArray(value)) {\n                    for (const element of value) {\n                        if (\n                            isNode(element) &&\n                            this.$visit(element, options, visitorKeys)\n                        ) {\n                            return true\n                        }\n                    }\n                } else if (\n                    isNode(value) &&\n                    this.$visit(value, options, visitorKeys)\n                ) {\n                    return true\n                }\n            }\n\n            return false\n        },\n\n        ArrowFunctionExpression() {\n            return false\n        },\n        AssignmentExpression() {\n            return true\n        },\n        AwaitExpression() {\n            return true\n        },\n        /**\n         * @param {BinaryExpression} node\n         * @param {HasSideEffectOptions} options\n         * @param {Record<string, string[]>} visitorKeys\n         */\n        BinaryExpression(node, options, visitorKeys) {\n            if (\n                options.considerImplicitTypeConversion &&\n                typeConversionBinaryOps.has(node.operator) &&\n                (node.left.type !== \"Literal\" || node.right.type !== \"Literal\")\n            ) {\n                return true\n            }\n            return this.$visitChildren(node, options, visitorKeys)\n        },\n        CallExpression() {\n            return true\n        },\n        FunctionExpression() {\n            return false\n        },\n        ImportExpression() {\n            return true\n        },\n        /**\n         * @param {MemberExpression} node\n         * @param {HasSideEffectOptions} options\n         * @param {Record<string, string[]>} visitorKeys\n         */\n        MemberExpression(node, options, visitorKeys) {\n            if (options.considerGetters) {\n                return true\n            }\n            if (\n                options.considerImplicitTypeConversion &&\n                node.computed &&\n                node.property.type !== \"Literal\"\n            ) {\n                return true\n            }\n            return this.$visitChildren(node, options, visitorKeys)\n        },\n        /**\n         * @param {MethodDefinition} node\n         * @param {HasSideEffectOptions} options\n         * @param {Record<string, string[]>} visitorKeys\n         */\n        MethodDefinition(node, options, visitorKeys) {\n            if (\n                options.considerImplicitTypeConversion &&\n                node.computed &&\n                node.key.type !== \"Literal\"\n            ) {\n                return true\n            }\n            return this.$visitChildren(node, options, visitorKeys)\n        },\n        NewExpression() {\n            return true\n        },\n        /**\n         * @param {Property} node\n         * @param {HasSideEffectOptions} options\n         * @param {Record<string, string[]>} visitorKeys\n         */\n        Property(node, options, visitorKeys) {\n            if (\n                options.considerImplicitTypeConversion &&\n                node.computed &&\n                node.key.type !== \"Literal\"\n            ) {\n                return true\n            }\n            return this.$visitChildren(node, options, visitorKeys)\n        },\n        /**\n         * @param {PropertyDefinition} node\n         * @param {HasSideEffectOptions} options\n         * @param {Record<string, string[]>} visitorKeys\n         */\n        PropertyDefinition(node, options, visitorKeys) {\n            if (\n                options.considerImplicitTypeConversion &&\n                node.computed &&\n                node.key.type !== \"Literal\"\n            ) {\n                return true\n            }\n            return this.$visitChildren(node, options, visitorKeys)\n        },\n        /**\n         * @param {UnaryExpression} node\n         * @param {HasSideEffectOptions} options\n         * @param {Record<string, string[]>} visitorKeys\n         */\n        UnaryExpression(node, options, visitorKeys) {\n            if (node.operator === \"delete\") {\n                return true\n            }\n            if (\n                options.considerImplicitTypeConversion &&\n                typeConversionUnaryOps.has(node.operator) &&\n                node.argument.type !== \"Literal\"\n            ) {\n                return true\n            }\n            return this.$visitChildren(node, options, visitorKeys)\n        },\n        UpdateExpression() {\n            return true\n        },\n        YieldExpression() {\n            return true\n        },\n    }),\n)\n\n/**\n * Check whether a given node has any side effect or not.\n * @param {Node} node The node to get.\n * @param {SourceCode} sourceCode The source code object.\n * @param {HasSideEffectOptions} [options] The option object.\n * @returns {boolean} `true` if the node has a certain side effect.\n */\nexport function hasSideEffect(node, sourceCode, options = {}) {\n    const { considerGetters = false, considerImplicitTypeConversion = false } =\n        options\n    return visitor.$visit(\n        node,\n        { considerGetters, considerImplicitTypeConversion },\n        sourceCode.visitorKeys || KEYS,\n    )\n}\n", "import { isClosingParenToken, isOpeningParenToken } from \"./token-predicate.mjs\"\n/** @typedef {import(\"estree\").Node} Node */\n/** @typedef {import(\"@typescript-eslint/types\").TSESTree.NewExpression} TSNewExpression */\n/** @typedef {import(\"@typescript-eslint/types\").TSESTree.CallExpression} TSCallExpression */\n/** @typedef {import(\"eslint\").SourceCode} SourceCode */\n/** @typedef {import(\"eslint\").AST.Token} Token */\n/** @typedef {import(\"eslint\").Rule.Node} RuleNode */\n\n/**\n * Get the left parenthesis of the parent node syntax if it exists.\n * E.g., `if (a) {}` then the `(`.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {Token|null} The left parenthesis of the parent node syntax\n */\n// eslint-disable-next-line complexity\nfunction getParentSyntaxParen(node, sourceCode) {\n    const parent = /** @type {RuleNode} */ (node).parent\n\n    if (!parent) {\n        return null\n    }\n\n    switch (parent.type) {\n        case \"CallExpression\":\n        case \"NewExpression\":\n            if (parent.arguments.length === 1 && parent.arguments[0] === node) {\n                return sourceCode.getTokenAfter(\n                    // @ts-expect-error https://github.com/typescript-eslint/typescript-eslint/pull/5384\n                    parent.typeArguments ||\n                        /** @type {RuleNode} */ (\n                            /** @type {unknown} */ (\n                                /** @type {TSNewExpression | TSCallExpression} */ (\n                                    parent\n                                ).typeParameters\n                            )\n                        ) ||\n                        parent.callee,\n                    isOpeningParenToken,\n                )\n            }\n            return null\n\n        case \"DoWhileStatement\":\n            if (parent.test === node) {\n                return sourceCode.getTokenAfter(\n                    parent.body,\n                    isOpeningParenToken,\n                )\n            }\n            return null\n\n        case \"IfStatement\":\n        case \"WhileStatement\":\n            if (parent.test === node) {\n                return sourceCode.getFirstToken(parent, 1)\n            }\n            return null\n\n        case \"ImportExpression\":\n            if (parent.source === node) {\n                return sourceCode.getFirstToken(parent, 1)\n            }\n            return null\n\n        case \"SwitchStatement\":\n            if (parent.discriminant === node) {\n                return sourceCode.getFirstToken(parent, 1)\n            }\n            return null\n\n        case \"WithStatement\":\n            if (parent.object === node) {\n                return sourceCode.getFirstToken(parent, 1)\n            }\n            return null\n\n        default:\n            return null\n    }\n}\n\n/**\n * Check whether a given node is parenthesized or not.\n * @param {number} times The number of parantheses.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {boolean} `true` if the node is parenthesized the given times.\n */\n/**\n * Check whether a given node is parenthesized or not.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {boolean} `true` if the node is parenthesized.\n */\n/**\n * Check whether a given node is parenthesized or not.\n * @param {Node|number} timesOrNode The first parameter.\n * @param {Node|SourceCode} nodeOrSourceCode The second parameter.\n * @param {SourceCode} [optionalSourceCode] The third parameter.\n * @returns {boolean} `true` if the node is parenthesized.\n */\nexport function isParenthesized(\n    timesOrNode,\n    nodeOrSourceCode,\n    optionalSourceCode,\n) {\n    /** @type {number} */\n    let times,\n        /** @type {RuleNode} */\n        node,\n        /** @type {SourceCode} */\n        sourceCode,\n        maybeLeftParen,\n        maybeRightParen\n    if (typeof timesOrNode === \"number\") {\n        times = timesOrNode | 0\n        node = /** @type {RuleNode} */ (nodeOrSourceCode)\n        sourceCode = /** @type {SourceCode} */ (optionalSourceCode)\n        if (!(times >= 1)) {\n            throw new TypeError(\"'times' should be a positive integer.\")\n        }\n    } else {\n        times = 1\n        node = /** @type {RuleNode} */ (timesOrNode)\n        sourceCode = /** @type {SourceCode} */ (nodeOrSourceCode)\n    }\n\n    if (\n        node == null ||\n        // `Program` can't be parenthesized\n        node.parent == null ||\n        // `CatchClause.param` can't be parenthesized, example `try {} catch (error) {}`\n        (node.parent.type === \"CatchClause\" && node.parent.param === node)\n    ) {\n        return false\n    }\n\n    maybeLeftParen = maybeRightParen = node\n    do {\n        maybeLeftParen = sourceCode.getTokenBefore(maybeLeftParen)\n        maybeRightParen = sourceCode.getTokenAfter(maybeRightParen)\n    } while (\n        maybeLeftParen != null &&\n        maybeRightParen != null &&\n        isOpeningParenToken(maybeLeftParen) &&\n        isClosingParenToken(maybeRightParen) &&\n        // Avoid false positive such as `if (a) {}`\n        maybeLeftParen !== getParentSyntaxParen(node, sourceCode) &&\n        --times > 0\n    )\n\n    return times === 0\n}\n", "/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * See LICENSE file in root directory for full license.\n */\n\nconst placeholder = /\\$(?:[$&`']|[1-9][0-9]?)/gu\n\n/** @type {WeakMap<PatternMatcher, {pattern:RegExp,escaped:boolean}>} */\nconst internal = new WeakMap()\n\n/**\n * Check whether a given character is escaped or not.\n * @param {string} str The string to check.\n * @param {number} index The location of the character to check.\n * @returns {boolean} `true` if the character is escaped.\n */\nfunction isEscaped(str, index) {\n    let escaped = false\n    for (let i = index - 1; i >= 0 && str.charCodeAt(i) === 0x5c; --i) {\n        escaped = !escaped\n    }\n    return escaped\n}\n\n/**\n * Replace a given string by a given matcher.\n * @param {PatternMatcher} matcher The pattern matcher.\n * @param {string} str The string to be replaced.\n * @param {string} replacement The new substring to replace each matched part.\n * @returns {string} The replaced string.\n */\nfunction replaceS(matcher, str, replacement) {\n    const chunks = []\n    let index = 0\n\n    /**\n     * @param {string} key The placeholder.\n     * @param {RegExpExecArray} match The matched information.\n     * @returns {string} The replaced string.\n     */\n    function replacer(key, match) {\n        switch (key) {\n            case \"$$\":\n                return \"$\"\n            case \"$&\":\n                return match[0]\n            case \"$`\":\n                return str.slice(0, match.index)\n            case \"$'\":\n                return str.slice(match.index + match[0].length)\n            default: {\n                const i = key.slice(1)\n                if (i in match) {\n                    return match[/** @type {any} */ (i)]\n                }\n                return key\n            }\n        }\n    }\n\n    for (const match of matcher.execAll(str)) {\n        chunks.push(str.slice(index, match.index))\n        chunks.push(\n            replacement.replace(placeholder, (key) => replacer(key, match)),\n        )\n        index = match.index + match[0].length\n    }\n    chunks.push(str.slice(index))\n\n    return chunks.join(\"\")\n}\n\n/**\n * Replace a given string by a given matcher.\n * @param {PatternMatcher} matcher The pattern matcher.\n * @param {string} str The string to be replaced.\n * @param {(substring: string, ...args: any[]) => string} replace The function to replace each matched part.\n * @returns {string} The replaced string.\n */\nfunction replaceF(matcher, str, replace) {\n    const chunks = []\n    let index = 0\n\n    for (const match of matcher.execAll(str)) {\n        chunks.push(str.slice(index, match.index))\n        chunks.push(\n            String(\n                replace(\n                    .../** @type {[string, ...string[]]} */ (\n                        /** @type {string[]} */ (match)\n                    ),\n                    match.index,\n                    match.input,\n                ),\n            ),\n        )\n        index = match.index + match[0].length\n    }\n    chunks.push(str.slice(index))\n\n    return chunks.join(\"\")\n}\n\n/**\n * The class to find patterns as considering escape sequences.\n */\nexport class PatternMatcher {\n    /**\n     * Initialize this matcher.\n     * @param {RegExp} pattern The pattern to match.\n     * @param {{escaped?:boolean}} [options] The options.\n     */\n    constructor(pattern, options = {}) {\n        const { escaped = false } = options\n        if (!(pattern instanceof RegExp)) {\n            throw new TypeError(\"'pattern' should be a RegExp instance.\")\n        }\n        if (!pattern.flags.includes(\"g\")) {\n            throw new Error(\"'pattern' should contains 'g' flag.\")\n        }\n\n        internal.set(this, {\n            pattern: new RegExp(pattern.source, pattern.flags),\n            escaped: Boolean(escaped),\n        })\n    }\n\n    /**\n     * Find the pattern in a given string.\n     * @param {string} str The string to find.\n     * @returns {IterableIterator<RegExpExecArray>} The iterator which iterate the matched information.\n     */\n    *execAll(str) {\n        const { pattern, escaped } =\n            /** @type {{pattern:RegExp,escaped:boolean}} */ (internal.get(this))\n        let match = null\n        let lastIndex = 0\n\n        pattern.lastIndex = 0\n        while ((match = pattern.exec(str)) != null) {\n            if (escaped || !isEscaped(str, match.index)) {\n                lastIndex = pattern.lastIndex\n                yield match\n                pattern.lastIndex = lastIndex\n            }\n        }\n    }\n\n    /**\n     * Check whether the pattern is found in a given string.\n     * @param {string} str The string to check.\n     * @returns {boolean} `true` if the pattern was found in the string.\n     */\n    test(str) {\n        const it = this.execAll(str)\n        const ret = it.next()\n        return !ret.done\n    }\n\n    /**\n     * Replace a given string.\n     * @param {string} str The string to be replaced.\n     * @param {(string|((...strs:string[])=>string))} replacer The string or function to replace. This is the same as the 2nd argument of `String.prototype.replace`.\n     * @returns {string} The replaced string.\n     */\n    [Symbol.replace](str, replacer) {\n        return typeof replacer === \"function\"\n            ? replaceF(this, String(str), replacer)\n            : replaceS(this, String(str), String(replacer))\n    }\n}\n", "import { findVariable } from \"./find-variable.mjs\"\nimport { getPropertyName } from \"./get-property-name.mjs\"\nimport { getStringIfConstant } from \"./get-string-if-constant.mjs\"\n/** @typedef {import(\"eslint\").Scope.Scope} Scope */\n/** @typedef {import(\"eslint\").Scope.Variable} Variable */\n/** @typedef {import(\"eslint\").Rule.Node} RuleNode */\n/** @typedef {import(\"estree\").Node} Node */\n/** @typedef {import(\"estree\").Expression} Expression */\n/** @typedef {import(\"estree\").Pattern} Pattern */\n/** @typedef {import(\"estree\").Identifier} Identifier */\n/** @typedef {import(\"estree\").SimpleCallExpression} CallExpression */\n/** @typedef {import(\"estree\").Program} Program */\n/** @typedef {import(\"estree\").ImportDeclaration} ImportDeclaration */\n/** @typedef {import(\"estree\").ExportAllDeclaration} ExportAllDeclaration */\n/** @typedef {import(\"estree\").ExportDefaultDeclaration} ExportDefaultDeclaration */\n/** @typedef {import(\"estree\").ExportNamedDeclaration} ExportNamedDeclaration */\n/** @typedef {import(\"estree\").ImportSpecifier} ImportSpecifier */\n/** @typedef {import(\"estree\").ImportDefaultSpecifier} ImportDefaultSpecifier */\n/** @typedef {import(\"estree\").ImportNamespaceSpecifier} ImportNamespaceSpecifier */\n/** @typedef {import(\"estree\").ExportSpecifier} ExportSpecifier */\n/** @typedef {import(\"estree\").Property} Property */\n/** @typedef {import(\"estree\").AssignmentProperty} AssignmentProperty */\n/** @typedef {import(\"estree\").Literal} Literal */\n/** @typedef {import(\"@typescript-eslint/types\").TSESTree.Node} TSESTreeNode */\n/** @typedef {import(\"./types.mjs\").ReferenceTrackerOptions} ReferenceTrackerOptions */\n/**\n * @template T\n * @typedef {import(\"./types.mjs\").TraceMap<T>} TraceMap\n */\n/**\n * @template T\n * @typedef {import(\"./types.mjs\").TraceMapObject<T>} TraceMapObject\n */\n/**\n * @template T\n * @typedef {import(\"./types.mjs\").TrackedReferences<T>} TrackedReferences\n */\n\nconst IMPORT_TYPE = /^(?:Import|Export(?:All|Default|Named))Declaration$/u\n\n/**\n * Check whether a given node is an import node or not.\n * @param {Node} node\n * @returns {node is ImportDeclaration|ExportAllDeclaration|ExportNamedDeclaration&{source: Literal}} `true` if the node is an import node.\n */\nfunction isHasSource(node) {\n    return (\n        IMPORT_TYPE.test(node.type) &&\n        /** @type {ImportDeclaration|ExportAllDeclaration|ExportNamedDeclaration} */ (\n            node\n        ).source != null\n    )\n}\nconst has =\n    /** @type {<T>(traceMap: TraceMap<unknown>, v: T) => v is (string extends T ? string : T)} */ (\n        Function.call.bind(Object.hasOwnProperty)\n    )\n\nexport const READ = Symbol(\"read\")\nexport const CALL = Symbol(\"call\")\nexport const CONSTRUCT = Symbol(\"construct\")\nexport const ESM = Symbol(\"esm\")\n\nconst requireCall = { require: { [CALL]: true } }\n\n/**\n * Check whether a given variable is modified or not.\n * @param {Variable|undefined} variable The variable to check.\n * @returns {boolean} `true` if the variable is modified.\n */\nfunction isModifiedGlobal(variable) {\n    return (\n        variable == null ||\n        variable.defs.length !== 0 ||\n        variable.references.some((r) => r.isWrite())\n    )\n}\n\n/**\n * Check if the value of a given node is passed through to the parent syntax as-is.\n * For example, `a` and `b` in (`a || b` and `c ? a : b`) are passed through.\n * @param {Node} node A node to check.\n * @returns {node is RuleNode & {parent: Expression}} `true` if the node is passed through.\n */\nfunction isPassThrough(node) {\n    const parent = /** @type {TSESTreeNode} */ (node).parent\n\n    if (parent) {\n        switch (parent.type) {\n            case \"ConditionalExpression\":\n                return parent.consequent === node || parent.alternate === node\n            case \"LogicalExpression\":\n                return true\n            case \"SequenceExpression\":\n                return (\n                    parent.expressions[parent.expressions.length - 1] === node\n                )\n            case \"ChainExpression\":\n                return true\n            case \"TSAsExpression\":\n            case \"TSSatisfiesExpression\":\n            case \"TSTypeAssertion\":\n            case \"TSNonNullExpression\":\n            case \"TSInstantiationExpression\":\n                return true\n\n            default:\n                return false\n        }\n    }\n    return false\n}\n\n/**\n * The reference tracker.\n */\nexport class ReferenceTracker {\n    /**\n     * Initialize this tracker.\n     * @param {Scope} globalScope The global scope.\n     * @param {object} [options] The options.\n     * @param {\"legacy\"|\"strict\"} [options.mode=\"strict\"] The mode to determine the ImportDeclaration's behavior for CJS modules.\n     * @param {string[]} [options.globalObjectNames=[\"global\",\"globalThis\",\"self\",\"window\"]] The variable names for Global Object.\n     */\n    constructor(globalScope, options = {}) {\n        const {\n            mode = \"strict\",\n            globalObjectNames = [\"global\", \"globalThis\", \"self\", \"window\"],\n        } = options\n        /** @private @type {Variable[]} */\n        this.variableStack = []\n        /** @private */\n        this.globalScope = globalScope\n        /** @private */\n        this.mode = mode\n        /** @private */\n        this.globalObjectNames = globalObjectNames.slice(0)\n    }\n\n    /**\n     * Iterate the references of global variables.\n     * @template T\n     * @param {TraceMap<T>} traceMap The trace map.\n     * @returns {IterableIterator<TrackedReferences<T>>} The iterator to iterate references.\n     */\n    *iterateGlobalReferences(traceMap) {\n        for (const key of Object.keys(traceMap)) {\n            const nextTraceMap = traceMap[key]\n            const path = [key]\n            const variable = this.globalScope.set.get(key)\n\n            if (isModifiedGlobal(variable)) {\n                continue\n            }\n\n            yield* this._iterateVariableReferences(\n                /** @type {Variable} */ (variable),\n                path,\n                nextTraceMap,\n                true,\n            )\n        }\n\n        for (const key of this.globalObjectNames) {\n            /** @type {string[]} */\n            const path = []\n            const variable = this.globalScope.set.get(key)\n\n            if (isModifiedGlobal(variable)) {\n                continue\n            }\n\n            yield* this._iterateVariableReferences(\n                /** @type {Variable} */ (variable),\n                path,\n                traceMap,\n                false,\n            )\n        }\n    }\n\n    /**\n     * Iterate the references of CommonJS modules.\n     * @template T\n     * @param {TraceMap<T>} traceMap The trace map.\n     * @returns {IterableIterator<TrackedReferences<T>>} The iterator to iterate references.\n     */\n    *iterateCjsReferences(traceMap) {\n        for (const { node } of this.iterateGlobalReferences(requireCall)) {\n            const key = getStringIfConstant(\n                /** @type {CallExpression} */ (node).arguments[0],\n            )\n            if (key == null || !has(traceMap, key)) {\n                continue\n            }\n\n            const nextTraceMap = traceMap[key]\n            const path = [key]\n\n            if (nextTraceMap[READ]) {\n                yield {\n                    node,\n                    path,\n                    type: READ,\n                    info: nextTraceMap[READ],\n                }\n            }\n            yield* this._iteratePropertyReferences(\n                /** @type {CallExpression} */ (node),\n                path,\n                nextTraceMap,\n            )\n        }\n    }\n\n    /**\n     * Iterate the references of ES modules.\n     * @template T\n     * @param {TraceMap<T>} traceMap The trace map.\n     * @returns {IterableIterator<TrackedReferences<T>>} The iterator to iterate references.\n     */\n    *iterateEsmReferences(traceMap) {\n        const programNode = /** @type {Program} */ (this.globalScope.block)\n\n        for (const node of programNode.body) {\n            if (!isHasSource(node)) {\n                continue\n            }\n            const moduleId = /** @type {string} */ (node.source.value)\n\n            if (!has(traceMap, moduleId)) {\n                continue\n            }\n            const nextTraceMap = traceMap[moduleId]\n            const path = [moduleId]\n\n            if (nextTraceMap[READ]) {\n                yield {\n                    // eslint-disable-next-line object-shorthand -- apply type\n                    node: /** @type {RuleNode} */ (node),\n                    path,\n                    type: READ,\n                    info: nextTraceMap[READ],\n                }\n            }\n\n            if (node.type === \"ExportAllDeclaration\") {\n                for (const key of Object.keys(nextTraceMap)) {\n                    const exportTraceMap = nextTraceMap[key]\n                    if (exportTraceMap[READ]) {\n                        yield {\n                            // eslint-disable-next-line object-shorthand -- apply type\n                            node: /** @type {RuleNode} */ (node),\n                            path: path.concat(key),\n                            type: READ,\n                            info: exportTraceMap[READ],\n                        }\n                    }\n                }\n            } else {\n                for (const specifier of node.specifiers) {\n                    const esm = has(nextTraceMap, ESM)\n                    const it = this._iterateImportReferences(\n                        specifier,\n                        path,\n                        esm\n                            ? nextTraceMap\n                            : this.mode === \"legacy\"\n                            ? { default: nextTraceMap, ...nextTraceMap }\n                            : { default: nextTraceMap },\n                    )\n\n                    if (esm) {\n                        yield* it\n                    } else {\n                        for (const report of it) {\n                            report.path = report.path.filter(exceptDefault)\n                            if (\n                                report.path.length >= 2 ||\n                                report.type !== READ\n                            ) {\n                                yield report\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    /**\n     * Iterate the property references for a given expression AST node.\n     * @template T\n     * @param {Expression} node The expression AST node to iterate property references.\n     * @param {TraceMap<T>} traceMap The trace map.\n     * @returns {IterableIterator<TrackedReferences<T>>} The iterator to iterate property references.\n     */\n    *iteratePropertyReferences(node, traceMap) {\n        yield* this._iteratePropertyReferences(node, [], traceMap)\n    }\n\n    /**\n     * Iterate the references for a given variable.\n     * @private\n     * @template T\n     * @param {Variable} variable The variable to iterate that references.\n     * @param {string[]} path The current path.\n     * @param {TraceMapObject<T>} traceMap The trace map.\n     * @param {boolean} shouldReport = The flag to report those references.\n     * @returns {IterableIterator<TrackedReferences<T>>} The iterator to iterate references.\n     */\n    *_iterateVariableReferences(variable, path, traceMap, shouldReport) {\n        if (this.variableStack.includes(variable)) {\n            return\n        }\n        this.variableStack.push(variable)\n        try {\n            for (const reference of variable.references) {\n                if (!reference.isRead()) {\n                    continue\n                }\n                const node = /** @type {RuleNode & Identifier} */ (\n                    reference.identifier\n                )\n\n                if (shouldReport && traceMap[READ]) {\n                    yield { node, path, type: READ, info: traceMap[READ] }\n                }\n                yield* this._iteratePropertyReferences(node, path, traceMap)\n            }\n        } finally {\n            this.variableStack.pop()\n        }\n    }\n\n    /**\n     * Iterate the references for a given AST node.\n     * @private\n     * @template T\n     * @param {Expression} rootNode The AST node to iterate references.\n     * @param {string[]} path The current path.\n     * @param {TraceMapObject<T>} traceMap The trace map.\n     * @returns {IterableIterator<TrackedReferences<T>>} The iterator to iterate references.\n     */\n    //eslint-disable-next-line complexity\n    *_iteratePropertyReferences(rootNode, path, traceMap) {\n        let node = rootNode\n        while (isPassThrough(node)) {\n            node = node.parent\n        }\n\n        const parent = /** @type {RuleNode} */ (node).parent\n        if (!parent) {\n            return\n        }\n        if (parent.type === \"MemberExpression\") {\n            if (parent.object === node) {\n                const key = getPropertyName(parent)\n                if (key == null || !has(traceMap, key)) {\n                    return\n                }\n\n                path = path.concat(key) //eslint-disable-line no-param-reassign\n                const nextTraceMap = traceMap[key]\n                if (nextTraceMap[READ]) {\n                    yield {\n                        node: parent,\n                        path,\n                        type: READ,\n                        info: nextTraceMap[READ],\n                    }\n                }\n                yield* this._iteratePropertyReferences(\n                    parent,\n                    path,\n                    nextTraceMap,\n                )\n            }\n            return\n        }\n        if (parent.type === \"CallExpression\") {\n            if (parent.callee === node && traceMap[CALL]) {\n                yield { node: parent, path, type: CALL, info: traceMap[CALL] }\n            }\n            return\n        }\n        if (parent.type === \"NewExpression\") {\n            if (parent.callee === node && traceMap[CONSTRUCT]) {\n                yield {\n                    node: parent,\n                    path,\n                    type: CONSTRUCT,\n                    info: traceMap[CONSTRUCT],\n                }\n            }\n            return\n        }\n        if (parent.type === \"AssignmentExpression\") {\n            if (parent.right === node) {\n                yield* this._iterateLhsReferences(parent.left, path, traceMap)\n                yield* this._iteratePropertyReferences(parent, path, traceMap)\n            }\n            return\n        }\n        if (parent.type === \"AssignmentPattern\") {\n            if (parent.right === node) {\n                yield* this._iterateLhsReferences(parent.left, path, traceMap)\n            }\n            return\n        }\n        if (parent.type === \"VariableDeclarator\") {\n            if (parent.init === node) {\n                yield* this._iterateLhsReferences(parent.id, path, traceMap)\n            }\n        }\n    }\n\n    /**\n     * Iterate the references for a given Pattern node.\n     * @private\n     * @template T\n     * @param {Pattern} patternNode The Pattern node to iterate references.\n     * @param {string[]} path The current path.\n     * @param {TraceMapObject<T>} traceMap The trace map.\n     * @returns {IterableIterator<TrackedReferences<T>>} The iterator to iterate references.\n     */\n    *_iterateLhsReferences(patternNode, path, traceMap) {\n        if (patternNode.type === \"Identifier\") {\n            const variable = findVariable(this.globalScope, patternNode)\n            if (variable != null) {\n                yield* this._iterateVariableReferences(\n                    variable,\n                    path,\n                    traceMap,\n                    false,\n                )\n            }\n            return\n        }\n        if (patternNode.type === \"ObjectPattern\") {\n            for (const property of patternNode.properties) {\n                const key = getPropertyName(\n                    /** @type {AssignmentProperty} */ (property),\n                )\n\n                if (key == null || !has(traceMap, key)) {\n                    continue\n                }\n\n                const nextPath = path.concat(key)\n                const nextTraceMap = traceMap[key]\n                if (nextTraceMap[READ]) {\n                    yield {\n                        node: /** @type {RuleNode} */ (property),\n                        path: nextPath,\n                        type: READ,\n                        info: nextTraceMap[READ],\n                    }\n                }\n                yield* this._iterateLhsReferences(\n                    /** @type {AssignmentProperty} */ (property).value,\n                    nextPath,\n                    nextTraceMap,\n                )\n            }\n            return\n        }\n        if (patternNode.type === \"AssignmentPattern\") {\n            yield* this._iterateLhsReferences(patternNode.left, path, traceMap)\n        }\n    }\n\n    /**\n     * Iterate the references for a given ModuleSpecifier node.\n     * @private\n     * @template T\n     * @param {ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ExportSpecifier} specifierNode The ModuleSpecifier node to iterate references.\n     * @param {string[]} path The current path.\n     * @param {TraceMapObject<T>} traceMap The trace map.\n     * @returns {IterableIterator<TrackedReferences<T>>} The iterator to iterate references.\n     */\n    *_iterateImportReferences(specifierNode, path, traceMap) {\n        const type = specifierNode.type\n\n        if (type === \"ImportSpecifier\" || type === \"ImportDefaultSpecifier\") {\n            const key =\n                type === \"ImportDefaultSpecifier\"\n                    ? \"default\"\n                    : specifierNode.imported.type === \"Identifier\"\n                    ? specifierNode.imported.name\n                    : specifierNode.imported.value\n            if (!has(traceMap, key)) {\n                return\n            }\n\n            path = path.concat(key) //eslint-disable-line no-param-reassign\n            const nextTraceMap = traceMap[key]\n            if (nextTraceMap[READ]) {\n                yield {\n                    node: /** @type {RuleNode} */ (specifierNode),\n                    path,\n                    type: READ,\n                    info: nextTraceMap[READ],\n                }\n            }\n            yield* this._iterateVariableReferences(\n                /** @type {Variable} */ (\n                    findVariable(this.globalScope, specifierNode.local)\n                ),\n                path,\n                nextTraceMap,\n                false,\n            )\n\n            return\n        }\n\n        if (type === \"ImportNamespaceSpecifier\") {\n            yield* this._iterateVariableReferences(\n                /** @type {Variable} */ (\n                    findVariable(this.globalScope, specifierNode.local)\n                ),\n                path,\n                traceMap,\n                false,\n            )\n            return\n        }\n\n        if (type === \"ExportSpecifier\") {\n            const key =\n                specifierNode.local.type === \"Identifier\"\n                    ? specifierNode.local.name\n                    : specifierNode.local.value\n            if (!has(traceMap, key)) {\n                return\n            }\n\n            path = path.concat(key) //eslint-disable-line no-param-reassign\n            const nextTraceMap = traceMap[key]\n            if (nextTraceMap[READ]) {\n                yield {\n                    node: /** @type {RuleNode} */ (specifierNode),\n                    path,\n                    type: READ,\n                    info: nextTraceMap[READ],\n                }\n            }\n        }\n    }\n}\n\nReferenceTracker.READ = READ\nReferenceTracker.CALL = CALL\nReferenceTracker.CONSTRUCT = CONSTRUCT\nReferenceTracker.ESM = ESM\n\n/**\n * This is a predicate function for Array#filter.\n * @param {string} name A name part.\n * @param {number} index The index of the name.\n * @returns {boolean} `false` if it's default.\n */\nfunction exceptDefault(name, index) {\n    return !(index === 1 && name === \"default\")\n}\n", "/** @typedef {import(\"./types.mjs\").StaticValue} StaticValue */\n/** @typedef {import(\"./types.mjs\").StaticValueOptional} StaticValueOptional */\n/** @typedef {import(\"./types.mjs\").StaticValueProvided} StaticValueProvided */\n/** @typedef {import(\"./types.mjs\").ReferenceTrackerOptions} ReferenceTrackerOptions */\n/**\n * @template T\n * @typedef {import(\"./types.mjs\").TraceMap<T>} TraceMap\n */\n/**\n * @template T\n * @typedef {import(\"./types.mjs\").TrackedReferences<T>} TrackedReferences\n */\n/** @typedef {import(\"./types.mjs\").HasSideEffectOptions} HasSideEffectOptions */\n/** @typedef {import(\"./types.mjs\").ArrowToken} ArrowToken */\n/** @typedef {import(\"./types.mjs\").CommaToken} CommaToken */\n/** @typedef {import(\"./types.mjs\").SemicolonToken} SemicolonToken */\n/** @typedef {import(\"./types.mjs\").ColonToken} ColonToken */\n/** @typedef {import(\"./types.mjs\").OpeningParenToken} OpeningParenToken */\n/** @typedef {import(\"./types.mjs\").ClosingParenToken} ClosingParenToken */\n/** @typedef {import(\"./types.mjs\").OpeningBracketToken} OpeningBracketToken */\n/** @typedef {import(\"./types.mjs\").ClosingBracketToken} ClosingBracketToken */\n/** @typedef {import(\"./types.mjs\").OpeningBraceToken} OpeningBraceToken */\n/** @typedef {import(\"./types.mjs\").ClosingBraceToken} ClosingBraceToken */\n\nimport { findVariable } from \"./find-variable.mjs\"\nimport { getFunctionHeadLocation } from \"./get-function-head-location.mjs\"\nimport { getFunctionNameWithKind } from \"./get-function-name-with-kind.mjs\"\nimport { getInnermostScope } from \"./get-innermost-scope.mjs\"\nimport { getPropertyName } from \"./get-property-name.mjs\"\nimport { getStaticValue } from \"./get-static-value.mjs\"\nimport { getStringIfConstant } from \"./get-string-if-constant.mjs\"\nimport { hasSideEffect } from \"./has-side-effect.mjs\"\nimport { isParenthesized } from \"./is-parenthesized.mjs\"\nimport { PatternMatcher } from \"./pattern-matcher.mjs\"\nimport {\n    CALL,\n    CONSTRUCT,\n    ESM,\n    READ,\n    ReferenceTracker,\n} from \"./reference-tracker.mjs\"\nimport {\n    isArrowToken,\n    isClosingBraceToken,\n    isClosingBracketToken,\n    isClosingParenToken,\n    isColonToken,\n    isCommaToken,\n    isCommentToken,\n    isNotArrowToken,\n    isNotClosingBraceToken,\n    isNotClosingBracketToken,\n    isNotClosingParenToken,\n    isNotColonToken,\n    isNotCommaToken,\n    isNotCommentToken,\n    isNotOpeningBraceToken,\n    isNotOpeningBracketToken,\n    isNotOpeningParenToken,\n    isNotSemicolonToken,\n    isOpeningBraceToken,\n    isOpeningBracketToken,\n    isOpeningParenToken,\n    isSemicolonToken,\n} from \"./token-predicate.mjs\"\n\nexport default {\n    CALL,\n    CONSTRUCT,\n    ESM,\n    findVariable,\n    getFunctionHeadLocation,\n    getFunctionNameWithKind,\n    getInnermostScope,\n    getPropertyName,\n    getStaticValue,\n    getStringIfConstant,\n    hasSideEffect,\n    isArrowToken,\n    isClosingBraceToken,\n    isClosingBracketToken,\n    isClosingParenToken,\n    isColonToken,\n    isCommaToken,\n    isCommentToken,\n    isNotArrowToken,\n    isNotClosingBraceToken,\n    isNotClosingBracketToken,\n    isNotClosingParenToken,\n    isNotColonToken,\n    isNotCommaToken,\n    isNotCommentToken,\n    isNotOpeningBraceToken,\n    isNotOpeningBracketToken,\n    isNotOpeningParenToken,\n    isNotSemicolonToken,\n    isOpeningBraceToken,\n    isOpeningBracketToken,\n    isOpeningParenToken,\n    isParenthesized,\n    isSemicolonToken,\n    PatternMatcher,\n    READ,\n    ReferenceTracker,\n}\nexport {\n    CALL,\n    CONSTRUCT,\n    ESM,\n    findVariable,\n    getFunctionHeadLocation,\n    getFunctionNameWithKind,\n    getInnermostScope,\n    getPropertyName,\n    getStaticValue,\n    getStringIfConstant,\n    hasSideEffect,\n    isArrowToken,\n    isClosingBraceToken,\n    isClosingBracketToken,\n    isClosingParenToken,\n    isColonToken,\n    isCommaToken,\n    isCommentToken,\n    isNotArrowToken,\n    isNotClosingBraceToken,\n    isNotClosingBracketToken,\n    isNotClosingParenToken,\n    isNotColonToken,\n    isNotCommaToken,\n    isNotCommentToken,\n    isNotOpeningBraceToken,\n    isNotOpeningBracketToken,\n    isNotOpeningParenToken,\n    isNotSemicolonToken,\n    isOpeningBraceToken,\n    isOpeningBracketToken,\n    isOpeningParenToken,\n    isParenthesized,\n    isSemicolonToken,\n    PatternMatcher,\n    READ,\n    ReferenceTracker,\n}\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n    var ownKeys = function(o) {\n        ownKeys = Object.getOwnPropertyNames || function (o) {\n            var ar = [];\n            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n            return ar;\n        };\n        return ownKeys(o);\n    };\n    return function (mod) {\n        if (mod && mod.__esModule) return mod;\n        var result = {};\n        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n        __setModuleDefault(result, mod);\n        return result;\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isParenthesized = exports.hasSideEffect = exports.getStringIfConstant = exports.getStaticValue = exports.getPropertyName = exports.getFunctionNameWithKind = exports.getFunctionHeadLocation = void 0;\nconst eslintUtils = __importStar(require(\"@eslint-community/eslint-utils\"));\n/**\n * Get the proper location of a given function node to report.\n *\n * @see {@link https://eslint-community.github.io/eslint-utils/api/ast-utils.html#getfunctionheadlocation}\n */\nexports.getFunctionHeadLocation = eslintUtils.getFunctionHeadLocation;\n/**\n * Get the name and kind of a given function node.\n *\n * @see {@link https://eslint-community.github.io/eslint-utils/api/ast-utils.html#getfunctionnamewithkind}\n */\nexports.getFunctionNameWithKind = eslintUtils.getFunctionNameWithKind;\n/**\n * Get the property name of a given property node.\n * If the node is a computed property, this tries to compute the property name by the getStringIfConstant function.\n *\n * @see {@link https://eslint-community.github.io/eslint-utils/api/ast-utils.html#getpropertyname}\n * @returns The property name of the node. If the property name is not constant then it returns `null`.\n */\nexports.getPropertyName = eslintUtils.getPropertyName;\n/**\n * Get the value of a given node if it can decide the value statically.\n * If the 2nd parameter `initialScope` was given, this function tries to resolve identifier references which are in the\n * given node as much as possible. In the resolving way, it does on the assumption that built-in global objects have\n * not been modified.\n * For example, it considers `Symbol.iterator`, `Symbol.for('k')`, ` String.raw``hello`` `, and `Object.freeze({a: 1}).a` as static, but `Symbol('k')` is not static.\n *\n * @see {@link https://eslint-community.github.io/eslint-utils/api/ast-utils.html#getstaticvalue}\n * @returns The `{ value: any }` shaped object. The `value` property is the static value. If it couldn't compute the\n * static value of the node, it returns `null`.\n */\nexports.getStaticValue = eslintUtils.getStaticValue;\n/**\n * Get the string value of a given node.\n * This function is a tiny wrapper of the getStaticValue function.\n *\n * @see {@link https://eslint-community.github.io/eslint-utils/api/ast-utils.html#getstringifconstant}\n */\nexports.getStringIfConstant = eslintUtils.getStringIfConstant;\n/**\n * Check whether a given node has any side effect or not.\n * The side effect means that it may modify a certain variable or object member. This function considers the node which\n * contains the following types as the node which has side effects:\n * - `AssignmentExpression`\n * - `AwaitExpression`\n * - `CallExpression`\n * - `ImportExpression`\n * - `NewExpression`\n * - `UnaryExpression([operator = \"delete\"])`\n * - `UpdateExpression`\n * - `YieldExpression`\n * - When `options.considerGetters` is `true`:\n *   - `MemberExpression`\n * - When `options.considerImplicitTypeConversion` is `true`:\n *   - `BinaryExpression([operator = \"==\" | \"!=\" | \"<\" | \"<=\" | \">\" | \">=\" | \"<<\" | \">>\" | \">>>\" | \"+\" | \"-\" | \"*\" | \"/\" | \"%\" | \"|\" | \"^\" | \"&\" | \"in\"])`\n *   - `MemberExpression([computed = true])`\n *   - `MethodDefinition([computed = true])`\n *   - `Property([computed = true])`\n *   - `UnaryExpression([operator = \"-\" | \"+\" | \"!\" | \"~\"])`\n *\n * @see {@link https://eslint-community.github.io/eslint-utils/api/ast-utils.html#hassideeffect}\n */\nexports.hasSideEffect = eslintUtils.hasSideEffect;\nexports.isParenthesized = eslintUtils.isParenthesized;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n    var ownKeys = function(o) {\n        ownKeys = Object.getOwnPropertyNames || function (o) {\n            var ar = [];\n            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n            return ar;\n        };\n        return ownKeys(o);\n    };\n    return function (mod) {\n        if (mod && mod.__esModule) return mod;\n        var result = {};\n        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n        __setModuleDefault(result, mod);\n        return result;\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PatternMatcher = void 0;\nconst eslintUtils = __importStar(require(\"@eslint-community/eslint-utils\"));\n/**\n * The class to find a pattern in strings as handling escape sequences.\n * It ignores the found pattern if it's escaped with `\\`.\n *\n * @see {@link https://eslint-community.github.io/eslint-utils/api/ast-utils.html#patternmatcher-class}\n */\nexports.PatternMatcher = eslintUtils.PatternMatcher;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n    var ownKeys = function(o) {\n        ownKeys = Object.getOwnPropertyNames || function (o) {\n            var ar = [];\n            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n            return ar;\n        };\n        return ownKeys(o);\n    };\n    return function (mod) {\n        if (mod && mod.__esModule) return mod;\n        var result = {};\n        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n        __setModuleDefault(result, mod);\n        return result;\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNotSemicolonToken = exports.isSemicolonToken = exports.isNotOpeningParenToken = exports.isOpeningParenToken = exports.isNotOpeningBracketToken = exports.isOpeningBracketToken = exports.isNotOpeningBraceToken = exports.isOpeningBraceToken = exports.isNotCommentToken = exports.isCommentToken = exports.isNotCommaToken = exports.isCommaToken = exports.isNotColonToken = exports.isColonToken = exports.isNotClosingParenToken = exports.isClosingParenToken = exports.isNotClosingBracketToken = exports.isClosingBracketToken = exports.isNotClosingBraceToken = exports.isClosingBraceToken = exports.isNotArrowToken = exports.isArrowToken = void 0;\nconst eslintUtils = __importStar(require(\"@eslint-community/eslint-utils\"));\nexports.isArrowToken = eslintUtils.isArrowToken;\nexports.isNotArrowToken = eslintUtils.isNotArrowToken;\nexports.isClosingBraceToken = eslintUtils.isClosingBraceToken;\nexports.isNotClosingBraceToken = eslintUtils.isNotClosingBraceToken;\nexports.isClosingBracketToken = eslintUtils.isClosingBracketToken;\nexports.isNotClosingBracketToken = eslintUtils.isNotClosingBracketToken;\nexports.isClosingParenToken = eslintUtils.isClosingParenToken;\nexports.isNotClosingParenToken = eslintUtils.isNotClosingParenToken;\nexports.isColonToken = eslintUtils.isColonToken;\nexports.isNotColonToken = eslintUtils.isNotColonToken;\nexports.isCommaToken = eslintUtils.isCommaToken;\nexports.isNotCommaToken = eslintUtils.isNotCommaToken;\nexports.isCommentToken = eslintUtils.isCommentToken;\nexports.isNotCommentToken = eslintUtils.isNotCommentToken;\nexports.isOpeningBraceToken = eslintUtils.isOpeningBraceToken;\nexports.isNotOpeningBraceToken = eslintUtils.isNotOpeningBraceToken;\nexports.isOpeningBracketToken = eslintUtils.isOpeningBracketToken;\nexports.isNotOpeningBracketToken = eslintUtils.isNotOpeningBracketToken;\nexports.isOpeningParenToken = eslintUtils.isOpeningParenToken;\nexports.isNotOpeningParenToken = eslintUtils.isNotOpeningParenToken;\nexports.isSemicolonToken = eslintUtils.isSemicolonToken;\nexports.isNotSemicolonToken = eslintUtils.isNotSemicolonToken;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n    var ownKeys = function(o) {\n        ownKeys = Object.getOwnPropertyNames || function (o) {\n            var ar = [];\n            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n            return ar;\n        };\n        return ownKeys(o);\n    };\n    return function (mod) {\n        if (mod && mod.__esModule) return mod;\n        var result = {};\n        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n        __setModuleDefault(result, mod);\n        return result;\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReferenceTracker = void 0;\n/* eslint-disable @typescript-eslint/no-namespace */\nconst eslintUtils = __importStar(require(\"@eslint-community/eslint-utils\"));\nconst ReferenceTrackerREAD = eslintUtils.ReferenceTracker.READ;\nconst ReferenceTrackerCALL = eslintUtils.ReferenceTracker.CALL;\nconst ReferenceTrackerCONSTRUCT = eslintUtils.ReferenceTracker.CONSTRUCT;\nconst ReferenceTrackerESM = eslintUtils.ReferenceTracker.ESM;\n/**\n * The tracker for references. This provides reference tracking for global variables, CommonJS modules, and ES modules.\n *\n * @see {@link https://eslint-community.github.io/eslint-utils/api/scope-utils.html#referencetracker-class}\n */\nexports.ReferenceTracker = eslintUtils.ReferenceTracker;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n    var ownKeys = function(o) {\n        ownKeys = Object.getOwnPropertyNames || function (o) {\n            var ar = [];\n            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n            return ar;\n        };\n        return ownKeys(o);\n    };\n    return function (mod) {\n        if (mod && mod.__esModule) return mod;\n        var result = {};\n        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n        __setModuleDefault(result, mod);\n        return result;\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInnermostScope = exports.findVariable = void 0;\nconst eslintUtils = __importStar(require(\"@eslint-community/eslint-utils\"));\n/**\n * Get the variable of a given name.\n *\n * @see {@link https://eslint-community.github.io/eslint-utils/api/scope-utils.html#findvariable}\n */\nexports.findVariable = eslintUtils.findVariable;\n/**\n * Get the innermost scope which contains a given node.\n *\n * @see {@link https://eslint-community.github.io/eslint-utils/api/scope-utils.html#getinnermostscope}\n * @returns The innermost scope which contains the given node.\n * If such scope doesn't exist then it returns the 1st argument `initialScope`.\n */\nexports.getInnermostScope = eslintUtils.getInnermostScope;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./astUtilities\"), exports);\n__exportStar(require(\"./PatternMatcher\"), exports);\n__exportStar(require(\"./predicates\"), exports);\n__exportStar(require(\"./ReferenceTracker\"), exports);\n__exportStar(require(\"./scopeAnalysis\"), exports);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNotTokenOfTypeWithConditions = exports.isTokenOfTypeWithConditions = exports.isNodeOfTypeWithConditions = exports.isNodeOfTypes = exports.isNodeOfType = void 0;\nconst isNodeOfType = (nodeType) => (node) => node?.type === nodeType;\nexports.isNodeOfType = isNodeOfType;\nconst isNodeOfTypes = (nodeTypes) => (node) => !!node && nodeTypes.includes(node.type);\nexports.isNodeOfTypes = isNodeOfTypes;\nconst isNodeOfTypeWithConditions = (nodeType, conditions) => {\n    const entries = Object.entries(conditions);\n    return (node) => node?.type === nodeType &&\n        entries.every(([key, value]) => node[key] === value);\n};\nexports.isNodeOfTypeWithConditions = isNodeOfTypeWithConditions;\nconst isTokenOfTypeWithConditions = (tokenType, conditions) => {\n    const entries = Object.entries(conditions);\n    return (token) => token?.type === tokenType &&\n        entries.every(([key, value]) => token[key] === value);\n};\nexports.isTokenOfTypeWithConditions = isTokenOfTypeWithConditions;\nconst isNotTokenOfTypeWithConditions = (tokenType, conditions) => (token) => !(0, exports.isTokenOfTypeWithConditions)(tokenType, conditions)(token);\nexports.isNotTokenOfTypeWithConditions = isNotTokenOfTypeWithConditions;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LINEBREAK_MATCHER = void 0;\nexports.isTokenOnSameLine = isTokenOnSameLine;\n/**\n * A regular expression to match line terminators.\n * @see https://tc39.es/ecma262/multipage/ecmascript-language-lexical-grammar.html#prod-LineTerminator\n */\nexports.LINEBREAK_MATCHER = /\\r\\n|[\\r\\n\\u2028\\u2029]/;\n/**\n * Determines whether two adjacent tokens are on the same line\n */\nfunction isTokenOnSameLine(left, right) {\n    return left.loc.end.line === right.loc.start.line;\n}\n", "\"use strict\";\n/**********************************************\n *      DO NOT MODIFY THIS FILE MANUALLY      *\n *                                            *\n *  THIS FILE HAS BEEN COPIED FROM ast-spec.  *\n * ANY CHANGES WILL BE LOST ON THE NEXT BUILD *\n *                                            *\n *   MAKE CHANGES TO ast-spec AND THEN RUN    *\n *                 pnpm run build             *\n **********************************************/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AST_TOKEN_TYPES = exports.AST_NODE_TYPES = void 0;\nvar AST_NODE_TYPES;\n(function (AST_NODE_TYPES) {\n    AST_NODE_TYPES[\"AccessorProperty\"] = \"AccessorProperty\";\n    AST_NODE_TYPES[\"ArrayExpression\"] = \"ArrayExpression\";\n    AST_NODE_TYPES[\"ArrayPattern\"] = \"ArrayPattern\";\n    AST_NODE_TYPES[\"ArrowFunctionExpression\"] = \"ArrowFunctionExpression\";\n    AST_NODE_TYPES[\"AssignmentExpression\"] = \"AssignmentExpression\";\n    AST_NODE_TYPES[\"AssignmentPattern\"] = \"AssignmentPattern\";\n    AST_NODE_TYPES[\"AwaitExpression\"] = \"AwaitExpression\";\n    AST_NODE_TYPES[\"BinaryExpression\"] = \"BinaryExpression\";\n    AST_NODE_TYPES[\"BlockStatement\"] = \"BlockStatement\";\n    AST_NODE_TYPES[\"BreakStatement\"] = \"BreakStatement\";\n    AST_NODE_TYPES[\"CallExpression\"] = \"CallExpression\";\n    AST_NODE_TYPES[\"CatchClause\"] = \"CatchClause\";\n    AST_NODE_TYPES[\"ChainExpression\"] = \"ChainExpression\";\n    AST_NODE_TYPES[\"ClassBody\"] = \"ClassBody\";\n    AST_NODE_TYPES[\"ClassDeclaration\"] = \"ClassDeclaration\";\n    AST_NODE_TYPES[\"ClassExpression\"] = \"ClassExpression\";\n    AST_NODE_TYPES[\"ConditionalExpression\"] = \"ConditionalExpression\";\n    AST_NODE_TYPES[\"ContinueStatement\"] = \"ContinueStatement\";\n    AST_NODE_TYPES[\"DebuggerStatement\"] = \"DebuggerStatement\";\n    AST_NODE_TYPES[\"Decorator\"] = \"Decorator\";\n    AST_NODE_TYPES[\"DoWhileStatement\"] = \"DoWhileStatement\";\n    AST_NODE_TYPES[\"EmptyStatement\"] = \"EmptyStatement\";\n    AST_NODE_TYPES[\"ExportAllDeclaration\"] = \"ExportAllDeclaration\";\n    AST_NODE_TYPES[\"ExportDefaultDeclaration\"] = \"ExportDefaultDeclaration\";\n    AST_NODE_TYPES[\"ExportNamedDeclaration\"] = \"ExportNamedDeclaration\";\n    AST_NODE_TYPES[\"ExportSpecifier\"] = \"ExportSpecifier\";\n    AST_NODE_TYPES[\"ExpressionStatement\"] = \"ExpressionStatement\";\n    AST_NODE_TYPES[\"ForInStatement\"] = \"ForInStatement\";\n    AST_NODE_TYPES[\"ForOfStatement\"] = \"ForOfStatement\";\n    AST_NODE_TYPES[\"ForStatement\"] = \"ForStatement\";\n    AST_NODE_TYPES[\"FunctionDeclaration\"] = \"FunctionDeclaration\";\n    AST_NODE_TYPES[\"FunctionExpression\"] = \"FunctionExpression\";\n    AST_NODE_TYPES[\"Identifier\"] = \"Identifier\";\n    AST_NODE_TYPES[\"IfStatement\"] = \"IfStatement\";\n    AST_NODE_TYPES[\"ImportAttribute\"] = \"ImportAttribute\";\n    AST_NODE_TYPES[\"ImportDeclaration\"] = \"ImportDeclaration\";\n    AST_NODE_TYPES[\"ImportDefaultSpecifier\"] = \"ImportDefaultSpecifier\";\n    AST_NODE_TYPES[\"ImportExpression\"] = \"ImportExpression\";\n    AST_NODE_TYPES[\"ImportNamespaceSpecifier\"] = \"ImportNamespaceSpecifier\";\n    AST_NODE_TYPES[\"ImportSpecifier\"] = \"ImportSpecifier\";\n    AST_NODE_TYPES[\"JSXAttribute\"] = \"JSXAttribute\";\n    AST_NODE_TYPES[\"JSXClosingElement\"] = \"JSXClosingElement\";\n    AST_NODE_TYPES[\"JSXClosingFragment\"] = \"JSXClosingFragment\";\n    AST_NODE_TYPES[\"JSXElement\"] = \"JSXElement\";\n    AST_NODE_TYPES[\"JSXEmptyExpression\"] = \"JSXEmptyExpression\";\n    AST_NODE_TYPES[\"JSXExpressionContainer\"] = \"JSXExpressionContainer\";\n    AST_NODE_TYPES[\"JSXFragment\"] = \"JSXFragment\";\n    AST_NODE_TYPES[\"JSXIdentifier\"] = \"JSXIdentifier\";\n    AST_NODE_TYPES[\"JSXMemberExpression\"] = \"JSXMemberExpression\";\n    AST_NODE_TYPES[\"JSXNamespacedName\"] = \"JSXNamespacedName\";\n    AST_NODE_TYPES[\"JSXOpeningElement\"] = \"JSXOpeningElement\";\n    AST_NODE_TYPES[\"JSXOpeningFragment\"] = \"JSXOpeningFragment\";\n    AST_NODE_TYPES[\"JSXSpreadAttribute\"] = \"JSXSpreadAttribute\";\n    AST_NODE_TYPES[\"JSXSpreadChild\"] = \"JSXSpreadChild\";\n    AST_NODE_TYPES[\"JSXText\"] = \"JSXText\";\n    AST_NODE_TYPES[\"LabeledStatement\"] = \"LabeledStatement\";\n    AST_NODE_TYPES[\"Literal\"] = \"Literal\";\n    AST_NODE_TYPES[\"LogicalExpression\"] = \"LogicalExpression\";\n    AST_NODE_TYPES[\"MemberExpression\"] = \"MemberExpression\";\n    AST_NODE_TYPES[\"MetaProperty\"] = \"MetaProperty\";\n    AST_NODE_TYPES[\"MethodDefinition\"] = \"MethodDefinition\";\n    AST_NODE_TYPES[\"NewExpression\"] = \"NewExpression\";\n    AST_NODE_TYPES[\"ObjectExpression\"] = \"ObjectExpression\";\n    AST_NODE_TYPES[\"ObjectPattern\"] = \"ObjectPattern\";\n    AST_NODE_TYPES[\"PrivateIdentifier\"] = \"PrivateIdentifier\";\n    AST_NODE_TYPES[\"Program\"] = \"Program\";\n    AST_NODE_TYPES[\"Property\"] = \"Property\";\n    AST_NODE_TYPES[\"PropertyDefinition\"] = \"PropertyDefinition\";\n    AST_NODE_TYPES[\"RestElement\"] = \"RestElement\";\n    AST_NODE_TYPES[\"ReturnStatement\"] = \"ReturnStatement\";\n    AST_NODE_TYPES[\"SequenceExpression\"] = \"SequenceExpression\";\n    AST_NODE_TYPES[\"SpreadElement\"] = \"SpreadElement\";\n    AST_NODE_TYPES[\"StaticBlock\"] = \"StaticBlock\";\n    AST_NODE_TYPES[\"Super\"] = \"Super\";\n    AST_NODE_TYPES[\"SwitchCase\"] = \"SwitchCase\";\n    AST_NODE_TYPES[\"SwitchStatement\"] = \"SwitchStatement\";\n    AST_NODE_TYPES[\"TaggedTemplateExpression\"] = \"TaggedTemplateExpression\";\n    AST_NODE_TYPES[\"TemplateElement\"] = \"TemplateElement\";\n    AST_NODE_TYPES[\"TemplateLiteral\"] = \"TemplateLiteral\";\n    AST_NODE_TYPES[\"ThisExpression\"] = \"ThisExpression\";\n    AST_NODE_TYPES[\"ThrowStatement\"] = \"ThrowStatement\";\n    AST_NODE_TYPES[\"TryStatement\"] = \"TryStatement\";\n    AST_NODE_TYPES[\"UnaryExpression\"] = \"UnaryExpression\";\n    AST_NODE_TYPES[\"UpdateExpression\"] = \"UpdateExpression\";\n    AST_NODE_TYPES[\"VariableDeclaration\"] = \"VariableDeclaration\";\n    AST_NODE_TYPES[\"VariableDeclarator\"] = \"VariableDeclarator\";\n    AST_NODE_TYPES[\"WhileStatement\"] = \"WhileStatement\";\n    AST_NODE_TYPES[\"WithStatement\"] = \"WithStatement\";\n    AST_NODE_TYPES[\"YieldExpression\"] = \"YieldExpression\";\n    AST_NODE_TYPES[\"TSAbstractAccessorProperty\"] = \"TSAbstractAccessorProperty\";\n    AST_NODE_TYPES[\"TSAbstractKeyword\"] = \"TSAbstractKeyword\";\n    AST_NODE_TYPES[\"TSAbstractMethodDefinition\"] = \"TSAbstractMethodDefinition\";\n    AST_NODE_TYPES[\"TSAbstractPropertyDefinition\"] = \"TSAbstractPropertyDefinition\";\n    AST_NODE_TYPES[\"TSAnyKeyword\"] = \"TSAnyKeyword\";\n    AST_NODE_TYPES[\"TSArrayType\"] = \"TSArrayType\";\n    AST_NODE_TYPES[\"TSAsExpression\"] = \"TSAsExpression\";\n    AST_NODE_TYPES[\"TSAsyncKeyword\"] = \"TSAsyncKeyword\";\n    AST_NODE_TYPES[\"TSBigIntKeyword\"] = \"TSBigIntKeyword\";\n    AST_NODE_TYPES[\"TSBooleanKeyword\"] = \"TSBooleanKeyword\";\n    AST_NODE_TYPES[\"TSCallSignatureDeclaration\"] = \"TSCallSignatureDeclaration\";\n    AST_NODE_TYPES[\"TSClassImplements\"] = \"TSClassImplements\";\n    AST_NODE_TYPES[\"TSConditionalType\"] = \"TSConditionalType\";\n    AST_NODE_TYPES[\"TSConstructorType\"] = \"TSConstructorType\";\n    AST_NODE_TYPES[\"TSConstructSignatureDeclaration\"] = \"TSConstructSignatureDeclaration\";\n    AST_NODE_TYPES[\"TSDeclareFunction\"] = \"TSDeclareFunction\";\n    AST_NODE_TYPES[\"TSDeclareKeyword\"] = \"TSDeclareKeyword\";\n    AST_NODE_TYPES[\"TSEmptyBodyFunctionExpression\"] = \"TSEmptyBodyFunctionExpression\";\n    AST_NODE_TYPES[\"TSEnumBody\"] = \"TSEnumBody\";\n    AST_NODE_TYPES[\"TSEnumDeclaration\"] = \"TSEnumDeclaration\";\n    AST_NODE_TYPES[\"TSEnumMember\"] = \"TSEnumMember\";\n    AST_NODE_TYPES[\"TSExportAssignment\"] = \"TSExportAssignment\";\n    AST_NODE_TYPES[\"TSExportKeyword\"] = \"TSExportKeyword\";\n    AST_NODE_TYPES[\"TSExternalModuleReference\"] = \"TSExternalModuleReference\";\n    AST_NODE_TYPES[\"TSFunctionType\"] = \"TSFunctionType\";\n    AST_NODE_TYPES[\"TSImportEqualsDeclaration\"] = \"TSImportEqualsDeclaration\";\n    AST_NODE_TYPES[\"TSImportType\"] = \"TSImportType\";\n    AST_NODE_TYPES[\"TSIndexedAccessType\"] = \"TSIndexedAccessType\";\n    AST_NODE_TYPES[\"TSIndexSignature\"] = \"TSIndexSignature\";\n    AST_NODE_TYPES[\"TSInferType\"] = \"TSInferType\";\n    AST_NODE_TYPES[\"TSInstantiationExpression\"] = \"TSInstantiationExpression\";\n    AST_NODE_TYPES[\"TSInterfaceBody\"] = \"TSInterfaceBody\";\n    AST_NODE_TYPES[\"TSInterfaceDeclaration\"] = \"TSInterfaceDeclaration\";\n    AST_NODE_TYPES[\"TSInterfaceHeritage\"] = \"TSInterfaceHeritage\";\n    AST_NODE_TYPES[\"TSIntersectionType\"] = \"TSIntersectionType\";\n    AST_NODE_TYPES[\"TSIntrinsicKeyword\"] = \"TSIntrinsicKeyword\";\n    AST_NODE_TYPES[\"TSLiteralType\"] = \"TSLiteralType\";\n    AST_NODE_TYPES[\"TSMappedType\"] = \"TSMappedType\";\n    AST_NODE_TYPES[\"TSMethodSignature\"] = \"TSMethodSignature\";\n    AST_NODE_TYPES[\"TSModuleBlock\"] = \"TSModuleBlock\";\n    AST_NODE_TYPES[\"TSModuleDeclaration\"] = \"TSModuleDeclaration\";\n    AST_NODE_TYPES[\"TSNamedTupleMember\"] = \"TSNamedTupleMember\";\n    AST_NODE_TYPES[\"TSNamespaceExportDeclaration\"] = \"TSNamespaceExportDeclaration\";\n    AST_NODE_TYPES[\"TSNeverKeyword\"] = \"TSNeverKeyword\";\n    AST_NODE_TYPES[\"TSNonNullExpression\"] = \"TSNonNullExpression\";\n    AST_NODE_TYPES[\"TSNullKeyword\"] = \"TSNullKeyword\";\n    AST_NODE_TYPES[\"TSNumberKeyword\"] = \"TSNumberKeyword\";\n    AST_NODE_TYPES[\"TSObjectKeyword\"] = \"TSObjectKeyword\";\n    AST_NODE_TYPES[\"TSOptionalType\"] = \"TSOptionalType\";\n    AST_NODE_TYPES[\"TSParameterProperty\"] = \"TSParameterProperty\";\n    AST_NODE_TYPES[\"TSPrivateKeyword\"] = \"TSPrivateKeyword\";\n    AST_NODE_TYPES[\"TSPropertySignature\"] = \"TSPropertySignature\";\n    AST_NODE_TYPES[\"TSProtectedKeyword\"] = \"TSProtectedKeyword\";\n    AST_NODE_TYPES[\"TSPublicKeyword\"] = \"TSPublicKeyword\";\n    AST_NODE_TYPES[\"TSQualifiedName\"] = \"TSQualifiedName\";\n    AST_NODE_TYPES[\"TSReadonlyKeyword\"] = \"TSReadonlyKeyword\";\n    AST_NODE_TYPES[\"TSRestType\"] = \"TSRestType\";\n    AST_NODE_TYPES[\"TSSatisfiesExpression\"] = \"TSSatisfiesExpression\";\n    AST_NODE_TYPES[\"TSStaticKeyword\"] = \"TSStaticKeyword\";\n    AST_NODE_TYPES[\"TSStringKeyword\"] = \"TSStringKeyword\";\n    AST_NODE_TYPES[\"TSSymbolKeyword\"] = \"TSSymbolKeyword\";\n    AST_NODE_TYPES[\"TSTemplateLiteralType\"] = \"TSTemplateLiteralType\";\n    AST_NODE_TYPES[\"TSThisType\"] = \"TSThisType\";\n    AST_NODE_TYPES[\"TSTupleType\"] = \"TSTupleType\";\n    AST_NODE_TYPES[\"TSTypeAliasDeclaration\"] = \"TSTypeAliasDeclaration\";\n    AST_NODE_TYPES[\"TSTypeAnnotation\"] = \"TSTypeAnnotation\";\n    AST_NODE_TYPES[\"TSTypeAssertion\"] = \"TSTypeAssertion\";\n    AST_NODE_TYPES[\"TSTypeLiteral\"] = \"TSTypeLiteral\";\n    AST_NODE_TYPES[\"TSTypeOperator\"] = \"TSTypeOperator\";\n    AST_NODE_TYPES[\"TSTypeParameter\"] = \"TSTypeParameter\";\n    AST_NODE_TYPES[\"TSTypeParameterDeclaration\"] = \"TSTypeParameterDeclaration\";\n    AST_NODE_TYPES[\"TSTypeParameterInstantiation\"] = \"TSTypeParameterInstantiation\";\n    AST_NODE_TYPES[\"TSTypePredicate\"] = \"TSTypePredicate\";\n    AST_NODE_TYPES[\"TSTypeQuery\"] = \"TSTypeQuery\";\n    AST_NODE_TYPES[\"TSTypeReference\"] = \"TSTypeReference\";\n    AST_NODE_TYPES[\"TSUndefinedKeyword\"] = \"TSUndefinedKeyword\";\n    AST_NODE_TYPES[\"TSUnionType\"] = \"TSUnionType\";\n    AST_NODE_TYPES[\"TSUnknownKeyword\"] = \"TSUnknownKeyword\";\n    AST_NODE_TYPES[\"TSVoidKeyword\"] = \"TSVoidKeyword\";\n})(AST_NODE_TYPES || (exports.AST_NODE_TYPES = AST_NODE_TYPES = {}));\nvar AST_TOKEN_TYPES;\n(function (AST_TOKEN_TYPES) {\n    AST_TOKEN_TYPES[\"Boolean\"] = \"Boolean\";\n    AST_TOKEN_TYPES[\"Identifier\"] = \"Identifier\";\n    AST_TOKEN_TYPES[\"JSXIdentifier\"] = \"JSXIdentifier\";\n    AST_TOKEN_TYPES[\"PrivateIdentifier\"] = \"PrivateIdentifier\";\n    AST_TOKEN_TYPES[\"JSXText\"] = \"JSXText\";\n    AST_TOKEN_TYPES[\"Keyword\"] = \"Keyword\";\n    AST_TOKEN_TYPES[\"Null\"] = \"Null\";\n    AST_TOKEN_TYPES[\"Numeric\"] = \"Numeric\";\n    AST_TOKEN_TYPES[\"Punctuator\"] = \"Punctuator\";\n    AST_TOKEN_TYPES[\"RegularExpression\"] = \"RegularExpression\";\n    AST_TOKEN_TYPES[\"String\"] = \"String\";\n    AST_TOKEN_TYPES[\"Template\"] = \"Template\";\n    AST_TOKEN_TYPES[\"Block\"] = \"Block\";\n    AST_TOKEN_TYPES[\"Line\"] = \"Line\";\n})(AST_TOKEN_TYPES || (exports.AST_TOKEN_TYPES = AST_TOKEN_TYPES = {}));\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n    var ownKeys = function(o) {\n        ownKeys = Object.getOwnPropertyNames || function (o) {\n            var ar = [];\n            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n            return ar;\n        };\n        return ownKeys(o);\n    };\n    return function (mod) {\n        if (mod && mod.__esModule) return mod;\n        var result = {};\n        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n        __setModuleDefault(result, mod);\n        return result;\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TSESTree = void 0;\nexports.TSESTree = __importStar(require(\"./generated/ast-spec\"));\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AST_TOKEN_TYPES = exports.AST_NODE_TYPES = void 0;\nvar ast_spec_1 = require(\"./generated/ast-spec\");\nObject.defineProperty(exports, \"AST_NODE_TYPES\", { enumerable: true, get: function () { return ast_spec_1.AST_NODE_TYPES; } });\nObject.defineProperty(exports, \"AST_TOKEN_TYPES\", { enumerable: true, get: function () { return ast_spec_1.AST_TOKEN_TYPES; } });\n__exportStar(require(\"./lib\"), exports);\n__exportStar(require(\"./parser-options\"), exports);\n__exportStar(require(\"./ts-estree\"), exports);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TSESTree = exports.AST_TOKEN_TYPES = exports.AST_NODE_TYPES = void 0;\n// for convenience's sake - export the types directly from here so consumers\n// don't need to reference/install both packages in their code\nvar types_1 = require(\"@typescript-eslint/types\");\nObject.defineProperty(exports, \"AST_NODE_TYPES\", { enumerable: true, get: function () { return types_1.AST_NODE_TYPES; } });\nObject.defineProperty(exports, \"AST_TOKEN_TYPES\", { enumerable: true, get: function () { return types_1.AST_TOKEN_TYPES; } });\nObject.defineProperty(exports, \"TSESTree\", { enumerable: true, get: function () { return types_1.TSESTree; } });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isLoop = exports.isImportKeyword = exports.isTypeKeyword = exports.isAwaitKeyword = exports.isAwaitExpression = exports.isIdentifier = exports.isConstructor = exports.isClassOrTypeElement = exports.isTSConstructorType = exports.isTSFunctionType = exports.isFunctionOrFunctionType = exports.isFunctionType = exports.isFunction = exports.isVariableDeclarator = exports.isTypeAssertion = exports.isLogicalOrOperator = exports.isOptionalCallExpression = exports.isNotNonNullAssertionPunctuator = exports.isNonNullAssertionPunctuator = exports.isNotOptionalChainPunctuator = exports.isOptionalChainPunctuator = void 0;\nexports.isSetter = isSetter;\nconst ts_estree_1 = require(\"../ts-estree\");\nconst helpers_1 = require(\"./helpers\");\nexports.isOptionalChainPunctuator = (0, helpers_1.isTokenOfTypeWithConditions)(ts_estree_1.AST_TOKEN_TYPES.Punctuator, { value: '?.' });\nexports.isNotOptionalChainPunctuator = (0, helpers_1.isNotTokenOfTypeWithConditions)(ts_estree_1.AST_TOKEN_TYPES.Punctuator, { value: '?.' });\nexports.isNonNullAssertionPunctuator = (0, helpers_1.isTokenOfTypeWithConditions)(ts_estree_1.AST_TOKEN_TYPES.Punctuator, { value: '!' });\nexports.isNotNonNullAssertionPunctuator = (0, helpers_1.isNotTokenOfTypeWithConditions)(ts_estree_1.AST_TOKEN_TYPES.Punctuator, { value: '!' });\n/**\n * Returns true if and only if the node represents: foo?.() or foo.bar?.()\n */\nexports.isOptionalCallExpression = (0, helpers_1.isNodeOfTypeWithConditions)(ts_estree_1.AST_NODE_TYPES.CallExpression, \n// this flag means the call expression itself is option\n// i.e. it is foo.bar?.() and not foo?.bar()\n{ optional: true });\n/**\n * Returns true if and only if the node represents logical OR\n */\nexports.isLogicalOrOperator = (0, helpers_1.isNodeOfTypeWithConditions)(ts_estree_1.AST_NODE_TYPES.LogicalExpression, { operator: '||' });\n/**\n * Checks if a node is a type assertion:\n * ```\n * x as foo\n * <foo>x\n * ```\n */\nexports.isTypeAssertion = (0, helpers_1.isNodeOfTypes)([\n    ts_estree_1.AST_NODE_TYPES.TSAsExpression,\n    ts_estree_1.AST_NODE_TYPES.TSTypeAssertion,\n]);\nexports.isVariableDeclarator = (0, helpers_1.isNodeOfType)(ts_estree_1.AST_NODE_TYPES.VariableDeclarator);\nconst functionTypes = [\n    ts_estree_1.AST_NODE_TYPES.ArrowFunctionExpression,\n    ts_estree_1.AST_NODE_TYPES.FunctionDeclaration,\n    ts_estree_1.AST_NODE_TYPES.FunctionExpression,\n];\nexports.isFunction = (0, helpers_1.isNodeOfTypes)(functionTypes);\nconst functionTypeTypes = [\n    ts_estree_1.AST_NODE_TYPES.TSCallSignatureDeclaration,\n    ts_estree_1.AST_NODE_TYPES.TSConstructorType,\n    ts_estree_1.AST_NODE_TYPES.TSConstructSignatureDeclaration,\n    ts_estree_1.AST_NODE_TYPES.TSDeclareFunction,\n    ts_estree_1.AST_NODE_TYPES.TSEmptyBodyFunctionExpression,\n    ts_estree_1.AST_NODE_TYPES.TSFunctionType,\n    ts_estree_1.AST_NODE_TYPES.TSMethodSignature,\n];\nexports.isFunctionType = (0, helpers_1.isNodeOfTypes)(functionTypeTypes);\nexports.isFunctionOrFunctionType = (0, helpers_1.isNodeOfTypes)([\n    ...functionTypes,\n    ...functionTypeTypes,\n]);\nexports.isTSFunctionType = (0, helpers_1.isNodeOfType)(ts_estree_1.AST_NODE_TYPES.TSFunctionType);\nexports.isTSConstructorType = (0, helpers_1.isNodeOfType)(ts_estree_1.AST_NODE_TYPES.TSConstructorType);\nexports.isClassOrTypeElement = (0, helpers_1.isNodeOfTypes)([\n    // ClassElement\n    ts_estree_1.AST_NODE_TYPES.PropertyDefinition,\n    ts_estree_1.AST_NODE_TYPES.FunctionExpression,\n    ts_estree_1.AST_NODE_TYPES.MethodDefinition,\n    ts_estree_1.AST_NODE_TYPES.TSAbstractPropertyDefinition,\n    ts_estree_1.AST_NODE_TYPES.TSAbstractMethodDefinition,\n    ts_estree_1.AST_NODE_TYPES.TSEmptyBodyFunctionExpression,\n    ts_estree_1.AST_NODE_TYPES.TSIndexSignature,\n    // TypeElement\n    ts_estree_1.AST_NODE_TYPES.TSCallSignatureDeclaration,\n    ts_estree_1.AST_NODE_TYPES.TSConstructSignatureDeclaration,\n    // AST_NODE_TYPES.TSIndexSignature,\n    ts_estree_1.AST_NODE_TYPES.TSMethodSignature,\n    ts_estree_1.AST_NODE_TYPES.TSPropertySignature,\n]);\n/**\n * Checks if a node is a constructor method.\n */\nexports.isConstructor = (0, helpers_1.isNodeOfTypeWithConditions)(ts_estree_1.AST_NODE_TYPES.MethodDefinition, { kind: 'constructor' });\n/**\n * Checks if a node is a setter method.\n */\nfunction isSetter(node) {\n    return (!!node &&\n        (node.type === ts_estree_1.AST_NODE_TYPES.MethodDefinition ||\n            node.type === ts_estree_1.AST_NODE_TYPES.Property) &&\n        node.kind === 'set');\n}\nexports.isIdentifier = (0, helpers_1.isNodeOfType)(ts_estree_1.AST_NODE_TYPES.Identifier);\n/**\n * Checks if a node represents an `await \u2026` expression.\n */\nexports.isAwaitExpression = (0, helpers_1.isNodeOfType)(ts_estree_1.AST_NODE_TYPES.AwaitExpression);\n/**\n * Checks if a possible token is the `await` keyword.\n */\nexports.isAwaitKeyword = (0, helpers_1.isTokenOfTypeWithConditions)(ts_estree_1.AST_TOKEN_TYPES.Identifier, { value: 'await' });\n/**\n * Checks if a possible token is the `type` keyword.\n */\nexports.isTypeKeyword = (0, helpers_1.isTokenOfTypeWithConditions)(ts_estree_1.AST_TOKEN_TYPES.Identifier, { value: 'type' });\n/**\n * Checks if a possible token is the `import` keyword.\n */\nexports.isImportKeyword = (0, helpers_1.isTokenOfTypeWithConditions)(ts_estree_1.AST_TOKEN_TYPES.Keyword, { value: 'import' });\nexports.isLoop = (0, helpers_1.isNodeOfTypes)([\n    ts_estree_1.AST_NODE_TYPES.DoWhileStatement,\n    ts_estree_1.AST_NODE_TYPES.ForStatement,\n    ts_estree_1.AST_NODE_TYPES.ForInStatement,\n    ts_estree_1.AST_NODE_TYPES.ForOfStatement,\n    ts_estree_1.AST_NODE_TYPES.WhileStatement,\n]);\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./eslint-utils\"), exports);\n__exportStar(require(\"./helpers\"), exports);\n__exportStar(require(\"./misc\"), exports);\n__exportStar(require(\"./predicates\"), exports);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isObjectNotArray = isObjectNotArray;\nexports.deepMerge = deepMerge;\n/**\n * Check if the variable contains an object strictly rejecting arrays\n * @returns `true` if obj is an object\n */\nfunction isObjectNotArray(obj) {\n    return typeof obj === 'object' && obj != null && !Array.isArray(obj);\n}\n/**\n * Pure function - doesn't mutate either parameter!\n * Merges two objects together deeply, overwriting the properties in first with the properties in second\n * @param first The first object\n * @param second The second object\n * @returns a new object\n */\nfunction deepMerge(first = {}, second = {}) {\n    // get the unique set of keys across both objects\n    const keys = new Set([...Object.keys(first), ...Object.keys(second)]);\n    return Object.fromEntries([...keys].map(key => {\n        const firstHasKey = key in first;\n        const secondHasKey = key in second;\n        const firstValue = first[key];\n        const secondValue = second[key];\n        let value;\n        if (firstHasKey && secondHasKey) {\n            if (isObjectNotArray(firstValue) && isObjectNotArray(secondValue)) {\n                // object type\n                value = deepMerge(firstValue, secondValue);\n            }\n            else {\n                // value type\n                value = secondValue;\n            }\n        }\n        else if (firstHasKey) {\n            value = firstValue;\n        }\n        else {\n            value = secondValue;\n        }\n        return [key, value];\n    }));\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.applyDefault = applyDefault;\nconst deepMerge_1 = require(\"./deepMerge\");\n/**\n * Pure function - doesn't mutate either parameter!\n * Uses the default options and overrides with the options provided by the user\n * @param defaultOptions the defaults\n * @param userOptions the user opts\n * @returns the options with defaults\n */\nfunction applyDefault(defaultOptions, userOptions) {\n    // clone defaults\n    const options = structuredClone(defaultOptions);\n    if (userOptions == null) {\n        return options;\n    }\n    // For avoiding the type error\n    //   `This expression is not callable. Type 'unknown' has no call signatures.ts(2349)`\n    options.forEach((opt, i) => {\n        // eslint-disable-next-line @typescript-eslint/internal/eqeq-nullish\n        if (userOptions[i] !== undefined) {\n            const userOpt = userOptions[i];\n            if ((0, deepMerge_1.isObjectNotArray)(userOpt) && (0, deepMerge_1.isObjectNotArray)(opt)) {\n                options[i] = (0, deepMerge_1.deepMerge)(opt, userOpt);\n            }\n            else {\n                options[i] = userOpt;\n            }\n        }\n    });\n    return options;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parserSeemsToBeTSESLint = parserSeemsToBeTSESLint;\nfunction parserSeemsToBeTSESLint(parser) {\n    return !!parser && /(?:typescript-eslint|\\.\\.)[\\w/\\\\]*parser/.test(parser);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getParserServices = getParserServices;\nconst parserSeemsToBeTSESLint_1 = require(\"./parserSeemsToBeTSESLint\");\nconst ERROR_MESSAGE_REQUIRES_PARSER_SERVICES = \"You have used a rule which requires type information, but don't have parserOptions set to generate type information for this file. See https://tseslint.com/typed-linting for enabling linting with type information.\";\nconst ERROR_MESSAGE_UNKNOWN_PARSER = 'Note: detected a parser other than @typescript-eslint/parser. Make sure the parser is configured to forward \"parserOptions.project\" to @typescript-eslint/parser.';\nfunction getParserServices(context, allowWithoutFullTypeInformation = false) {\n    const parser = \n    // eslint-disable-next-line @typescript-eslint/no-deprecated -- For compatibility with ESLint 8\n    context.parserPath || context.languageOptions.parser?.meta?.name;\n    // This check is unnecessary if the user is using the latest version of our parser.\n    //\n    // However the world isn't perfect:\n    // - Users often use old parser versions.\n    //   Old versions of the parser would not return any parserServices unless parserOptions.project was set.\n    // - Users sometimes use parsers that aren't @typescript-eslint/parser\n    //   Other parsers won't return the parser services we expect (if they return any at all).\n    //\n    // This check allows us to handle bad user setups whilst providing a nice user-facing\n    // error message explaining the problem.\n    if (context.sourceCode.parserServices?.esTreeNodeToTSNodeMap == null ||\n        context.sourceCode.parserServices.tsNodeToESTreeNodeMap == null) {\n        throwError(parser);\n    }\n    // if a rule requires full type information, then hard fail if it doesn't exist\n    // this forces the user to supply parserOptions.project\n    if (context.sourceCode.parserServices.program == null &&\n        !allowWithoutFullTypeInformation) {\n        throwError(parser);\n    }\n    return context.sourceCode.parserServices;\n}\n/* eslint-enable @typescript-eslint/unified-signatures */\nfunction throwError(parser) {\n    const messages = [\n        ERROR_MESSAGE_REQUIRES_PARSER_SERVICES,\n        `Parser: ${parser || '(unknown)'}`,\n        !(0, parserSeemsToBeTSESLint_1.parserSeemsToBeTSESLint)(parser) && ERROR_MESSAGE_UNKNOWN_PARSER,\n    ].filter(Boolean);\n    throw new Error(messages.join('\\n'));\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NullThrowsReasons = void 0;\nexports.nullThrows = nullThrows;\n/**\n * A set of common reasons for calling nullThrows\n */\nexports.NullThrowsReasons = {\n    MissingParent: 'Expected node to have a parent.',\n    MissingToken: (token, thing) => `Expected to find a ${token} for the ${thing}.`,\n};\n/**\n * Assert that a value must not be null or undefined.\n * This is a nice explicit alternative to the non-null assertion operator.\n */\nfunction nullThrows(value, message) {\n    if (value == null) {\n        throw new Error(`Non-null Assertion Failed: ${message}`);\n    }\n    return value;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RuleCreator = RuleCreator;\nconst applyDefault_1 = require(\"./applyDefault\");\n/**\n * Creates reusable function to create rules with default options and docs URLs.\n *\n * @param urlCreator Creates a documentation URL for a given rule name.\n * @returns Function to create a rule with the docs URL format.\n */\nfunction RuleCreator(urlCreator) {\n    // This function will get much easier to call when this is merged https://github.com/Microsoft/TypeScript/pull/26349\n    // TODO - when the above PR lands; add type checking for the context.report `data` property\n    return function createNamedRule({ meta, name, ...rule }) {\n        const ruleWithDocs = createRule({\n            meta: {\n                ...meta,\n                docs: {\n                    ...meta.docs,\n                    url: urlCreator(name),\n                },\n            },\n            name,\n            ...rule,\n        });\n        return ruleWithDocs;\n    };\n}\nfunction createRule({ create, \n// Keep accepting deprecated defaultOptions for backward compatibility.\n// eslint-disable-next-line @typescript-eslint/no-deprecated\ndefaultOptions, meta, name, }) {\n    const resolvedDefaultOptions = (meta.defaultOptions ??\n        defaultOptions ??\n        []);\n    return {\n        create(context) {\n            const optionsWithDefault = (0, applyDefault_1.applyDefault)(resolvedDefaultOptions, context.options);\n            return create(context, optionsWithDefault);\n        },\n        defaultOptions,\n        meta,\n        name,\n    };\n}\n/**\n * Creates a well-typed TSESLint custom ESLint rule without a docs URL.\n *\n * @returns Well-typed TSESLint custom ESLint rule.\n * @remarks It is generally better to provide a docs URL function to RuleCreator.\n */\nRuleCreator.withoutDocs = function withoutDocs(args) {\n    return createRule(args);\n};\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./applyDefault\"), exports);\n__exportStar(require(\"./deepMerge\"), exports);\n__exportStar(require(\"./getParserServices\"), exports);\n__exportStar(require(\"./InferTypesFromRule\"), exports);\n__exportStar(require(\"./nullThrows\"), exports);\n__exportStar(require(\"./RuleCreator\"), exports);\n", "\"use strict\";\n/**\n * This is a fork of https://github.com/DefinitelyTyped/DefinitelyTyped/blob/13f63c2eb8d7479caf01ab8d72f9e3683368a8f5/types/json-schema/index.d.ts\n * We intentionally fork this because:\n * - ESLint ***ONLY*** supports JSONSchema v4\n * - We want to provide stricter types\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\n/* eslint-disable @typescript-eslint/no-namespace, no-restricted-syntax */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\n/* eslint-disable  @typescript-eslint/consistent-indexed-object-style,  @typescript-eslint/no-namespace */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "{\n  \"name\": \"eslint\",\n  \"version\": \"10.5.0\",\n  \"author\": \"Nicholas C. Zakas <nicholas+npm@nczconsulting.com>\",\n  \"description\": \"An AST-based pattern checker for JavaScript.\",\n  \"type\": \"commonjs\",\n  \"bin\": {\n    \"eslint\": \"./bin/eslint.js\"\n  },\n  \"main\": \"./lib/api.js\",\n  \"types\": \"./lib/types/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"types\": \"./lib/types/index.d.ts\",\n      \"default\": \"./lib/api.js\"\n    },\n    \"./config\": {\n      \"types\": \"./lib/types/config-api.d.ts\",\n      \"default\": \"./lib/config-api.js\"\n    },\n    \"./package.json\": \"./package.json\",\n    \"./use-at-your-own-risk\": {\n      \"types\": \"./lib/types/use-at-your-own-risk.d.ts\",\n      \"default\": \"./lib/unsupported-api.js\"\n    },\n    \"./rules\": {\n      \"types\": \"./lib/types/rules.d.ts\"\n    },\n    \"./universal\": {\n      \"types\": \"./lib/types/universal.d.ts\",\n      \"default\": \"./lib/universal.js\"\n    }\n  },\n  \"typesVersions\": {\n    \"*\": {\n      \"use-at-your-own-risk\": [\n        \"./lib/types/use-at-your-own-risk.d.ts\"\n      ],\n      \"rules\": [\n        \"./lib/types/rules.d.ts\"\n      ],\n      \"universal\": [\n        \"./lib/types/universal.d.ts\"\n      ],\n      \"config\": [\n        \"./lib/types/config-api.d.ts\"\n      ]\n    }\n  },\n  \"scripts\": {\n    \"build:docs:update-links\": \"node tools/fetch-docs-links.js\",\n    \"build:site\": \"node Makefile.js gensite\",\n    \"build:webpack\": \"node Makefile.js webpack\",\n    \"build:readme\": \"node tools/update-readme.js\",\n    \"build:rules-index\": \"node Makefile.js generateRuleIndexPage\",\n    \"fmt\": \"prettier --write .\",\n    \"fmt:check\": \"prettier --check .\",\n    \"lint\": \"node Makefile.js lint\",\n    \"lint:docs:js\": \"node Makefile.js lintDocsJS\",\n    \"lint:docs:rule-examples\": \"node Makefile.js checkRuleExamples\",\n    \"lint:unused\": \"knip\",\n    \"lint:fix\": \"node Makefile.js lint -- fix\",\n    \"lint:fix:docs:js\": \"node Makefile.js lintDocsJS -- fix\",\n    \"lint:rule-types\": \"node tools/update-rule-type-headers.js --check\",\n    \"lint:types\": \"attw --pack\",\n    \"release:generate:alpha\": \"node Makefile.js generatePrerelease -- alpha\",\n    \"release:generate:beta\": \"node Makefile.js generatePrerelease -- beta\",\n    \"release:generate:latest\": \"node Makefile.js generateRelease -- latest\",\n    \"release:generate:maintenance\": \"node Makefile.js generateRelease -- maintenance\",\n    \"release:generate:rc\": \"node Makefile.js generatePrerelease -- rc\",\n    \"release:publish\": \"node Makefile.js publishRelease\",\n    \"test\": \"node Makefile.js test\",\n    \"test:browser\": \"node Makefile.js cypress\",\n    \"test:cli\": \"mocha\",\n    \"test:ecosystem\": \"node tools/test-ecosystem/index.mjs\",\n    \"test:ecosystem:update\": \"node tools/test-ecosystem/update.mjs\",\n    \"test:emfile\": \"node tools/check-emfile-handling.js\",\n    \"test:fuzz\": \"node Makefile.js fuzz\",\n    \"test:performance\": \"node Makefile.js perf\",\n    \"test:pnpm\": \"cd tests/pnpm && node check.js && pnpm install && pnpm exec tsc\",\n    \"test:types\": \"tsc -p tests/lib/types/tsconfig.json && npm run test:types --workspaces --if-present\",\n    \"test:types:5.3\": \"npx -p typescript@5.3 -y -- tsc -p tsconfig.types-legacy.json\",\n    \"test:types:5.x\": \"npx -p typescript@5.x -y -- tsc -p tsconfig.types.json\",\n    \"test:types:7.x\": \"npx -p @typescript/native-preview@latest -y -- tsgo -p tsconfig.types.json\",\n    \"test:types:all\": \"npm run test:types && npm run test:types:5.3 && npm run test:types:5.x && npm run test:types:7.x\"\n  },\n  \"workspaces\": [\n    \"packages/*\"\n  ],\n  \"gitHooks\": {\n    \"pre-commit\": \"lint-staged\"\n  },\n  \"lint-staged\": {\n    \"*.{js,json,jsonc,json5,yml,yaml}\": [\n      \"eslint --fix\",\n      \"prettier --write\"\n    ],\n    \"docs/src/**/*.md\": [\n      \"markdownlint-cli2 --fix\",\n      \"prettier --write\"\n    ],\n    \"!({{*.,**/*.}{js,json,jsonc,json5,yml,yaml},docs/src/**/*.md})\": \"prettier --write --ignore-unknown\",\n    \"lib/rules/*.js\": [\n      \"node tools/update-eslint-all.js\",\n      \"node tools/update-eslint-recommended.js\",\n      \"node tools/update-rule-type-headers.js\",\n      \"git add packages/js/src/configs/*.js lib/types/rules.d.ts\"\n    ],\n    \"docs/src/rules/*.md\": [\n      \"node tools/check-rule-examples.js\",\n      \"node tools/fetch-docs-links.js\",\n      \"git add docs/src/_data/further_reading_links.json\"\n    ],\n    \"docs/**/*.svg\": \"npx -y svgo -r --multipass\"\n  },\n  \"files\": [\n    \"LICENSE\",\n    \"README.md\",\n    \"bin\",\n    \"conf\",\n    \"lib\",\n    \"messages\"\n  ],\n  \"repository\": \"eslint/eslint\",\n  \"funding\": \"https://eslint.org/donate\",\n  \"homepage\": \"https://eslint.org\",\n  \"bugs\": \"https://github.com/eslint/eslint/issues/\",\n  \"dependencies\": {\n    \"@eslint-community/eslint-utils\": \"^4.8.0\",\n    \"@eslint-community/regexpp\": \"^4.12.2\",\n    \"@eslint/config-array\": \"^0.23.5\",\n    \"@eslint/config-helpers\": \"^0.6.0\",\n    \"@eslint/core\": \"^1.2.1\",\n    \"@eslint/plugin-kit\": \"^0.7.2\",\n    \"@humanfs/node\": \"^0.16.6\",\n    \"@humanwhocodes/module-importer\": \"^1.0.1\",\n    \"@humanwhocodes/retry\": \"^0.4.2\",\n    \"@types/estree\": \"^1.0.6\",\n    \"ajv\": \"^6.14.0\",\n    \"cross-spawn\": \"^7.0.6\",\n    \"debug\": \"^4.3.2\",\n    \"escape-string-regexp\": \"^4.0.0\",\n    \"eslint-scope\": \"^9.1.2\",\n    \"eslint-visitor-keys\": \"^5.0.1\",\n    \"espree\": \"^11.2.0\",\n    \"esquery\": \"^1.7.0\",\n    \"esutils\": \"^2.0.2\",\n    \"fast-deep-equal\": \"^3.1.3\",\n    \"file-entry-cache\": \"^8.0.0\",\n    \"find-up\": \"^5.0.0\",\n    \"glob-parent\": \"^6.0.2\",\n    \"ignore\": \"^5.2.0\",\n    \"imurmurhash\": \"^0.1.4\",\n    \"is-glob\": \"^4.0.0\",\n    \"json-stable-stringify-without-jsonify\": \"^1.0.1\",\n    \"minimatch\": \"^10.2.4\",\n    \"natural-compare\": \"^1.4.0\",\n    \"optionator\": \"^0.9.3\"\n  },\n  \"devDependencies\": {\n    \"@arethetypeswrong/cli\": \"^0.18.3\",\n    \"@babel/core\": \"^7.4.3\",\n    \"@babel/preset-env\": \"^7.4.3\",\n    \"@cypress/webpack-preprocessor\": \"^6.0.2\",\n    \"@eslint/eslintrc\": \"^3.3.5\",\n    \"@eslint/json\": \"^2.0.0\",\n    \"@types/esquery\": \"^1.5.4\",\n    \"@types/node\": \"^22.13.14\",\n    \"@typescript-eslint/parser\": \"^8.58.2\",\n    \"babel-loader\": \"^8.0.5\",\n    \"c8\": \"^11.0.0\",\n    \"chai\": \"^4.0.1\",\n    \"cheerio\": \"^0.22.0\",\n    \"common-tags\": \"^1.8.0\",\n    \"core-js\": \"^3.1.3\",\n    \"cypress\": \"^14.1.0\",\n    \"ejs\": \"^3.0.2\",\n    \"eslint\": \"file:.\",\n    \"eslint-config-eslint\": \"file:packages/eslint-config-eslint\",\n    \"eslint-plugin-eslint-plugin\": \"^7.3.2\",\n    \"eslint-plugin-expect-type\": \"^0.6.0\",\n    \"eslint-plugin-yml\": \"^1.14.0\",\n    \"eslint-release\": \"^3.3.0\",\n    \"eslint-rule-extender\": \"^0.0.1\",\n    \"eslump\": \"^3.0.0\",\n    \"esprima\": \"^4.0.1\",\n    \"fs-teardown\": \"^0.1.3\",\n    \"glob\": \"^10.0.0\",\n    \"globals\": \"^16.2.0\",\n    \"got\": \"^11.8.3\",\n    \"gray-matter\": \"^4.0.3\",\n    \"jiti\": \"^2.6.1\",\n    \"knip\": \"^6.13.1\",\n    \"lint-staged\": \"^11.0.0\",\n    \"markdown-it\": \"^12.2.0\",\n    \"markdown-it-container\": \"^3.0.0\",\n    \"markdownlint-cli2\": \"^0.22.0\",\n    \"marked\": \"^4.0.8\",\n    \"metascraper\": \"^5.25.7\",\n    \"metascraper-description\": \"^5.25.7\",\n    \"metascraper-image\": \"^5.29.3\",\n    \"metascraper-logo\": \"^5.25.7\",\n    \"metascraper-logo-favicon\": \"^5.25.7\",\n    \"metascraper-title\": \"^5.25.7\",\n    \"mocha\": \"^11.7.1\",\n    \"node-polyfill-webpack-plugin\": \"^1.0.3\",\n    \"npm-license\": \"^0.3.3\",\n    \"prettier\": \"3.8.3\",\n    \"progress\": \"^2.0.3\",\n    \"proxyquire\": \"^2.0.1\",\n    \"regenerator-runtime\": \"^0.14.0\",\n    \"semver\": \"^7.5.3\",\n    \"shelljs\": \"^0.10.0\",\n    \"sinon\": \"^11.0.0\",\n    \"typescript\": \"^6.0.3\",\n    \"webpack\": \"^5.23.0\",\n    \"webpack-cli\": \"^4.5.0\",\n    \"yorkie\": \"^2.0.0\"\n  },\n  \"peerDependencies\": {\n    \"jiti\": \"*\"\n  },\n  \"peerDependenciesMeta\": {\n    \"jiti\": {\n      \"optional\": true\n    }\n  },\n  \"keywords\": [\n    \"ast\",\n    \"lint\",\n    \"javascript\",\n    \"ecmascript\",\n    \"espree\"\n  ],\n  \"license\": \"MIT\",\n  \"engines\": {\n    \"node\": \"^20.19.0 || ^22.13.0 || >=24\"\n  }\n}\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n", "/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n", "'use strict';\n\nmodule.exports = (flag, argv = 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", "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(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) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\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\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].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 ('TERM_PROGRAM' in env) {\n\t\tconst version = 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\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\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\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n", "/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = `  ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n", "/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n", "/**\n * @fileoverview `Map` to load rules lazily.\n * @author Toru Nagashima <https://github.com/mysticatea>\n */\n\"use strict\";\n\nconst debug = require(\"debug\")(\"eslint:rules\");\n\n/** @typedef {import(\"../../types\").Rule.RuleModule} Rule */\n\n/**\n * The `Map` object that loads each rule when it's accessed.\n * @example\n * const rules = new LazyLoadingRuleMap([\n *     [\"eqeqeq\", () => require(\"eqeqeq\")],\n *     [\"semi\", () => require(\"semi\")],\n *     [\"no-unused-vars\", () => require(\"no-unused-vars\")]\n * ]);\n *\n * rules.get(\"semi\"); // call `() => require(\"semi\")` here.\n *\n * @extends {Map<string, Rule>}\n */\nclass LazyLoadingRuleMap extends Map {\n\t/**\n\t * Initialize this map.\n\t * @param {Array<[string, function(): Rule]>} loaders The rule loaders.\n\t */\n\tconstructor(loaders) {\n\t\tlet remaining = loaders.length;\n\n\t\tsuper(\n\t\t\tdebug.enabled\n\t\t\t\t? loaders.map(([ruleId, load]) => {\n\t\t\t\t\t\tlet cache = null;\n\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\truleId,\n\t\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t\tif (!cache) {\n\t\t\t\t\t\t\t\t\tdebug(\n\t\t\t\t\t\t\t\t\t\t\"Loading rule %o (remaining=%d)\",\n\t\t\t\t\t\t\t\t\t\truleId,\n\t\t\t\t\t\t\t\t\t\t--remaining,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tcache = load();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn cache;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t})\n\t\t\t\t: loaders,\n\t\t);\n\n\t\t// `super(...iterable)` uses `this.set()`, so disable it here.\n\t\tObject.defineProperty(LazyLoadingRuleMap.prototype, \"set\", {\n\t\t\tconfigurable: true,\n\t\t\tvalue: void 0,\n\t\t});\n\t}\n\n\t/**\n\t * Get a rule.\n\t * Each rule will be loaded on the first access.\n\t * @param {string} ruleId The rule ID to get.\n\t * @returns {Rule|undefined} The rule.\n\t */\n\tget(ruleId) {\n\t\tconst load = super.get(ruleId);\n\n\t\treturn load && load();\n\t}\n\n\t/**\n\t * Iterate rules.\n\t * @returns {IterableIterator<Rule>} Rules.\n\t */\n\t*values() {\n\t\tfor (const load of super.values()) {\n\t\t\tyield load();\n\t\t}\n\t}\n\n\t/**\n\t * Iterate rules.\n\t * @returns {IterableIterator<[string, Rule]>} Rules.\n\t */\n\t*entries() {\n\t\tfor (const [ruleId, load] of super.entries()) {\n\t\t\tyield [ruleId, load()];\n\t\t}\n\t}\n\n\t/**\n\t * Call a function with each rule.\n\t * @param {Function} callbackFn The callback function.\n\t * @param {any} [thisArg] The object to pass to `this` of the callback function.\n\t * @returns {void}\n\t */\n\tforEach(callbackFn, thisArg) {\n\t\tfor (const [ruleId, load] of super.entries()) {\n\t\t\tcallbackFn.call(thisArg, load(), ruleId, this);\n\t\t}\n\t}\n}\n\n// Forbid mutation.\nObject.defineProperties(LazyLoadingRuleMap.prototype, {\n\tclear: { configurable: true, value: void 0 },\n\tdelete: { configurable: true, value: void 0 },\n\t[Symbol.iterator]: {\n\t\tconfigurable: true,\n\t\twritable: true,\n\t\tvalue: LazyLoadingRuleMap.prototype.entries,\n\t},\n});\n\nmodule.exports = { LazyLoadingRuleMap };\n", "'use strict';\n\n/* eslint-disable jsdoc/valid-types -- doesn't allow `readonly`.\n   TODO: remove eslint-disable when https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/164 is fixed\n*/\n/**\n * @typedef {{ readonly [type: string]: ReadonlyArray<string> }} VisitorKeys\n */\n/* eslint-enable jsdoc/valid-types -- doesn't allow `readonly string[]`. TODO: check why */\n\n/**\n * @type {VisitorKeys}\n */\nconst KEYS = {\n\tArrayExpression: [\"elements\"],\n\tArrayPattern: [\"elements\"],\n\tArrowFunctionExpression: [\"params\", \"body\"],\n\tAssignmentExpression: [\"left\", \"right\"],\n\tAssignmentPattern: [\"left\", \"right\"],\n\tAwaitExpression: [\"argument\"],\n\tBinaryExpression: [\"left\", \"right\"],\n\tBlockStatement: [\"body\"],\n\tBreakStatement: [\"label\"],\n\tCallExpression: [\"callee\", \"arguments\"],\n\tCatchClause: [\"param\", \"body\"],\n\tChainExpression: [\"expression\"],\n\tClassBody: [\"body\"],\n\tClassDeclaration: [\"id\", \"superClass\", \"body\"],\n\tClassExpression: [\"id\", \"superClass\", \"body\"],\n\tConditionalExpression: [\"test\", \"consequent\", \"alternate\"],\n\tContinueStatement: [\"label\"],\n\tDebuggerStatement: [],\n\tDoWhileStatement: [\"body\", \"test\"],\n\tEmptyStatement: [],\n\tExperimentalRestProperty: [\"argument\"],\n\tExperimentalSpreadProperty: [\"argument\"],\n\tExportAllDeclaration: [\"exported\", \"source\", \"attributes\"],\n\tExportDefaultDeclaration: [\"declaration\"],\n\tExportNamedDeclaration: [\n\t\t\"declaration\",\n\t\t\"specifiers\",\n\t\t\"source\",\n\t\t\"attributes\",\n\t],\n\tExportSpecifier: [\"local\", \"exported\"],\n\tExpressionStatement: [\"expression\"],\n\tForInStatement: [\"left\", \"right\", \"body\"],\n\tForOfStatement: [\"left\", \"right\", \"body\"],\n\tForStatement: [\"init\", \"test\", \"update\", \"body\"],\n\tFunctionDeclaration: [\"id\", \"params\", \"body\"],\n\tFunctionExpression: [\"id\", \"params\", \"body\"],\n\tIdentifier: [],\n\tIfStatement: [\"test\", \"consequent\", \"alternate\"],\n\tImportAttribute: [\"key\", \"value\"],\n\tImportDeclaration: [\"specifiers\", \"source\", \"attributes\"],\n\tImportDefaultSpecifier: [\"local\"],\n\tImportExpression: [\"source\", \"options\"],\n\tImportNamespaceSpecifier: [\"local\"],\n\tImportSpecifier: [\"imported\", \"local\"],\n\tJSXAttribute: [\"name\", \"value\"],\n\tJSXClosingElement: [\"name\"],\n\tJSXClosingFragment: [],\n\tJSXElement: [\"openingElement\", \"children\", \"closingElement\"],\n\tJSXEmptyExpression: [],\n\tJSXExpressionContainer: [\"expression\"],\n\tJSXFragment: [\"openingFragment\", \"children\", \"closingFragment\"],\n\tJSXIdentifier: [],\n\tJSXMemberExpression: [\"object\", \"property\"],\n\tJSXNamespacedName: [\"namespace\", \"name\"],\n\tJSXOpeningElement: [\"name\", \"attributes\"],\n\tJSXOpeningFragment: [],\n\tJSXSpreadAttribute: [\"argument\"],\n\tJSXSpreadChild: [\"expression\"],\n\tJSXText: [],\n\tLabeledStatement: [\"label\", \"body\"],\n\tLiteral: [],\n\tLogicalExpression: [\"left\", \"right\"],\n\tMemberExpression: [\"object\", \"property\"],\n\tMetaProperty: [\"meta\", \"property\"],\n\tMethodDefinition: [\"key\", \"value\"],\n\tNewExpression: [\"callee\", \"arguments\"],\n\tObjectExpression: [\"properties\"],\n\tObjectPattern: [\"properties\"],\n\tPrivateIdentifier: [],\n\tProgram: [\"body\"],\n\tProperty: [\"key\", \"value\"],\n\tPropertyDefinition: [\"key\", \"value\"],\n\tRestElement: [\"argument\"],\n\tReturnStatement: [\"argument\"],\n\tSequenceExpression: [\"expressions\"],\n\tSpreadElement: [\"argument\"],\n\tStaticBlock: [\"body\"],\n\tSuper: [],\n\tSwitchCase: [\"test\", \"consequent\"],\n\tSwitchStatement: [\"discriminant\", \"cases\"],\n\tTaggedTemplateExpression: [\"tag\", \"quasi\"],\n\tTemplateElement: [],\n\tTemplateLiteral: [\"quasis\", \"expressions\"],\n\tThisExpression: [],\n\tThrowStatement: [\"argument\"],\n\tTryStatement: [\"block\", \"handler\", \"finalizer\"],\n\tUnaryExpression: [\"argument\"],\n\tUpdateExpression: [\"argument\"],\n\tVariableDeclaration: [\"declarations\"],\n\tVariableDeclarator: [\"id\", \"init\"],\n\tWhileStatement: [\"test\", \"body\"],\n\tWithStatement: [\"object\", \"body\"],\n\tYieldExpression: [\"argument\"],\n};\n\n// Types.\nconst NODE_TYPES = Object.keys(KEYS);\n\n// Freeze the keys.\nfor (const type of NODE_TYPES) {\n\tObject.freeze(KEYS[type]);\n}\nObject.freeze(KEYS);\n\n/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * See LICENSE file in root directory for full license.\n */\n\n/**\n * @typedef {import('./visitor-keys.js').VisitorKeys} VisitorKeys\n */\n\n// List to ignore keys.\nconst KEY_BLACKLIST = new Set([\n\t\"parent\",\n\t\"leadingComments\",\n\t\"trailingComments\",\n]);\n\n/**\n * Check whether a given key should be used or not.\n * @param {string} key The key to check.\n * @returns {boolean} `true` if the key should be used.\n */\nfunction filterKey(key) {\n\treturn !KEY_BLACKLIST.has(key) && key[0] !== \"_\";\n}\n\n/* eslint-disable jsdoc/valid-types -- doesn't allow `readonly`.\n   TODO: remove eslint-disable when https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/164 is fixed\n*/\n/**\n * Get visitor keys of a given node.\n * @param {Object} node The AST node to get keys.\n * @returns {readonly string[]} Visitor keys of the node.\n */\nfunction getKeys(node) {\n\treturn Object.keys(node).filter(filterKey);\n}\n/* eslint-enable jsdoc/valid-types -- doesn't allow `readonly` */\n\n/**\n * Make the union set with `KEYS` and given keys.\n * @param {VisitorKeys} additionalKeys The additional keys.\n * @returns {VisitorKeys} The union set.\n */\nfunction unionWith(additionalKeys) {\n\tconst retv =\n\t\t/** @type {{ [type: string]: ReadonlyArray<string> }} */\n\t\t(Object.assign({}, KEYS));\n\n\tfor (const type of Object.keys(additionalKeys)) {\n\t\tif (Object.hasOwn(retv, type)) {\n\t\t\tconst keys = new Set(additionalKeys[type]);\n\n\t\t\tfor (const key of retv[type]) {\n\t\t\t\tkeys.add(key);\n\t\t\t}\n\n\t\t\tretv[type] = Object.freeze(Array.from(keys));\n\t\t} else {\n\t\t\tretv[type] = Object.freeze(Array.from(additionalKeys[type]));\n\t\t}\n\t}\n\n\treturn Object.freeze(retv);\n}\n\nexports.KEYS = KEYS;\nexports.getKeys = getKeys;\nexports.unionWith = unionWith;\n", "/*\n  Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n(function () {\n    'use strict';\n\n    function isExpression(node) {\n        if (node == null) { return false; }\n        switch (node.type) {\n            case 'ArrayExpression':\n            case 'AssignmentExpression':\n            case 'BinaryExpression':\n            case 'CallExpression':\n            case 'ConditionalExpression':\n            case 'FunctionExpression':\n            case 'Identifier':\n            case 'Literal':\n            case 'LogicalExpression':\n            case 'MemberExpression':\n            case 'NewExpression':\n            case 'ObjectExpression':\n            case 'SequenceExpression':\n            case 'ThisExpression':\n            case 'UnaryExpression':\n            case 'UpdateExpression':\n                return true;\n        }\n        return false;\n    }\n\n    function isIterationStatement(node) {\n        if (node == null) { return false; }\n        switch (node.type) {\n            case 'DoWhileStatement':\n            case 'ForInStatement':\n            case 'ForStatement':\n            case 'WhileStatement':\n                return true;\n        }\n        return false;\n    }\n\n    function isStatement(node) {\n        if (node == null) { return false; }\n        switch (node.type) {\n            case 'BlockStatement':\n            case 'BreakStatement':\n            case 'ContinueStatement':\n            case 'DebuggerStatement':\n            case 'DoWhileStatement':\n            case 'EmptyStatement':\n            case 'ExpressionStatement':\n            case 'ForInStatement':\n            case 'ForStatement':\n            case 'IfStatement':\n            case 'LabeledStatement':\n            case 'ReturnStatement':\n            case 'SwitchStatement':\n            case 'ThrowStatement':\n            case 'TryStatement':\n            case 'VariableDeclaration':\n            case 'WhileStatement':\n            case 'WithStatement':\n                return true;\n        }\n        return false;\n    }\n\n    function isSourceElement(node) {\n      return isStatement(node) || node != null && node.type === 'FunctionDeclaration';\n    }\n\n    function trailingStatement(node) {\n        switch (node.type) {\n        case 'IfStatement':\n            if (node.alternate != null) {\n                return node.alternate;\n            }\n            return node.consequent;\n\n        case 'LabeledStatement':\n        case 'ForStatement':\n        case 'ForInStatement':\n        case 'WhileStatement':\n        case 'WithStatement':\n            return node.body;\n        }\n        return null;\n    }\n\n    function isProblematicIfStatement(node) {\n        var current;\n\n        if (node.type !== 'IfStatement') {\n            return false;\n        }\n        if (node.alternate == null) {\n            return false;\n        }\n        current = node.consequent;\n        do {\n            if (current.type === 'IfStatement') {\n                if (current.alternate == null)  {\n                    return true;\n                }\n            }\n            current = trailingStatement(current);\n        } while (current);\n\n        return false;\n    }\n\n    module.exports = {\n        isExpression: isExpression,\n        isStatement: isStatement,\n        isIterationStatement: isIterationStatement,\n        isSourceElement: isSourceElement,\n        isProblematicIfStatement: isProblematicIfStatement,\n\n        trailingStatement: trailingStatement\n    };\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n", "/*\n  Copyright (C) 2013-2014 Yusuke Suzuki <utatane.tea@gmail.com>\n  Copyright (C) 2014 Ivan Nikulin <ifaaan@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n(function () {\n    'use strict';\n\n    var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch;\n\n    // See `tools/generate-identifier-regex.js`.\n    ES5Regex = {\n        // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierStart:\n        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\\u08B6-\\u08BD\\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\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\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-\\u1884\\u1887-\\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\\u1C80-\\u1C88\\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\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\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\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\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-\\uA7AE\\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]/,\n        // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierPart:\n        NonAsciiIdentifierPart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\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\\u08B6-\\u08BD\\u08D4-\\u08E1\\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\\u0C80-\\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\\u0D54-\\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\\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-\\u19D9\\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\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFB-\\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\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\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\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\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-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\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]/\n    };\n\n    ES6Regex = {\n        // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierStart:\n        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\\u08B6-\\u08BD\\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\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\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\\u1C80-\\u1C88\\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-\\uA7AE\\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\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\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[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\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\\uDFE0]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\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\\uDD00-\\uDD43]|\\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        // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierPart:\n        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\\u08B6-\\u08BD\\u08D4-\\u08E1\\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\\u0C80-\\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\\u0D54-\\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\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFB-\\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-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\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\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\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\\uDE3E\\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[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\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]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\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\\uDFE0]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\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]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\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    };\n\n    function isDecimalDigit(ch) {\n        return 0x30 <= ch && ch <= 0x39;  // 0..9\n    }\n\n    function isHexDigit(ch) {\n        return 0x30 <= ch && ch <= 0x39 ||  // 0..9\n            0x61 <= ch && ch <= 0x66 ||     // a..f\n            0x41 <= ch && ch <= 0x46;       // A..F\n    }\n\n    function isOctalDigit(ch) {\n        return ch >= 0x30 && ch <= 0x37;  // 0..7\n    }\n\n    // 7.2 White Space\n\n    NON_ASCII_WHITESPACES = [\n        0x1680,\n        0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A,\n        0x202F, 0x205F,\n        0x3000,\n        0xFEFF\n    ];\n\n    function isWhiteSpace(ch) {\n        return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 ||\n            ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0;\n    }\n\n    // 7.3 Line Terminators\n\n    function isLineTerminator(ch) {\n        return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;\n    }\n\n    // 7.6 Identifier Names and Identifiers\n\n    function fromCodePoint(cp) {\n        if (cp <= 0xFFFF) { return String.fromCharCode(cp); }\n        var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800);\n        var cu2 = String.fromCharCode(((cp - 0x10000) % 0x400) + 0xDC00);\n        return cu1 + cu2;\n    }\n\n    IDENTIFIER_START = new Array(0x80);\n    for(ch = 0; ch < 0x80; ++ch) {\n        IDENTIFIER_START[ch] =\n            ch >= 0x61 && ch <= 0x7A ||  // a..z\n            ch >= 0x41 && ch <= 0x5A ||  // A..Z\n            ch === 0x24 || ch === 0x5F;  // $ (dollar) and _ (underscore)\n    }\n\n    IDENTIFIER_PART = new Array(0x80);\n    for(ch = 0; ch < 0x80; ++ch) {\n        IDENTIFIER_PART[ch] =\n            ch >= 0x61 && ch <= 0x7A ||  // a..z\n            ch >= 0x41 && ch <= 0x5A ||  // A..Z\n            ch >= 0x30 && ch <= 0x39 ||  // 0..9\n            ch === 0x24 || ch === 0x5F;  // $ (dollar) and _ (underscore)\n    }\n\n    function isIdentifierStartES5(ch) {\n        return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));\n    }\n\n    function isIdentifierPartES5(ch) {\n        return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));\n    }\n\n    function isIdentifierStartES6(ch) {\n        return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));\n    }\n\n    function isIdentifierPartES6(ch) {\n        return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));\n    }\n\n    module.exports = {\n        isDecimalDigit: isDecimalDigit,\n        isHexDigit: isHexDigit,\n        isOctalDigit: isOctalDigit,\n        isWhiteSpace: isWhiteSpace,\n        isLineTerminator: isLineTerminator,\n        isIdentifierStartES5: isIdentifierStartES5,\n        isIdentifierPartES5: isIdentifierPartES5,\n        isIdentifierStartES6: isIdentifierStartES6,\n        isIdentifierPartES6: isIdentifierPartES6\n    };\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n", "/*\n  Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n(function () {\n    'use strict';\n\n    var code = require('./code');\n\n    function isStrictModeReservedWordES6(id) {\n        switch (id) {\n        case 'implements':\n        case 'interface':\n        case 'package':\n        case 'private':\n        case 'protected':\n        case 'public':\n        case 'static':\n        case 'let':\n            return true;\n        default:\n            return false;\n        }\n    }\n\n    function isKeywordES5(id, strict) {\n        // yield should not be treated as keyword under non-strict mode.\n        if (!strict && id === 'yield') {\n            return false;\n        }\n        return isKeywordES6(id, strict);\n    }\n\n    function isKeywordES6(id, strict) {\n        if (strict && isStrictModeReservedWordES6(id)) {\n            return true;\n        }\n\n        switch (id.length) {\n        case 2:\n            return (id === 'if') || (id === 'in') || (id === 'do');\n        case 3:\n            return (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try');\n        case 4:\n            return (id === 'this') || (id === 'else') || (id === 'case') ||\n                (id === 'void') || (id === 'with') || (id === 'enum');\n        case 5:\n            return (id === 'while') || (id === 'break') || (id === 'catch') ||\n                (id === 'throw') || (id === 'const') || (id === 'yield') ||\n                (id === 'class') || (id === 'super');\n        case 6:\n            return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n                (id === 'switch') || (id === 'export') || (id === 'import');\n        case 7:\n            return (id === 'default') || (id === 'finally') || (id === 'extends');\n        case 8:\n            return (id === 'function') || (id === 'continue') || (id === 'debugger');\n        case 10:\n            return (id === 'instanceof');\n        default:\n            return false;\n        }\n    }\n\n    function isReservedWordES5(id, strict) {\n        return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict);\n    }\n\n    function isReservedWordES6(id, strict) {\n        return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict);\n    }\n\n    function isRestrictedWord(id) {\n        return id === 'eval' || id === 'arguments';\n    }\n\n    function isIdentifierNameES5(id) {\n        var i, iz, ch;\n\n        if (id.length === 0) { return false; }\n\n        ch = id.charCodeAt(0);\n        if (!code.isIdentifierStartES5(ch)) {\n            return false;\n        }\n\n        for (i = 1, iz = id.length; i < iz; ++i) {\n            ch = id.charCodeAt(i);\n            if (!code.isIdentifierPartES5(ch)) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function decodeUtf16(lead, trail) {\n        return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n    }\n\n    function isIdentifierNameES6(id) {\n        var i, iz, ch, lowCh, check;\n\n        if (id.length === 0) { return false; }\n\n        check = code.isIdentifierStartES6;\n        for (i = 0, iz = id.length; i < iz; ++i) {\n            ch = id.charCodeAt(i);\n            if (0xD800 <= ch && ch <= 0xDBFF) {\n                ++i;\n                if (i >= iz) { return false; }\n                lowCh = id.charCodeAt(i);\n                if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) {\n                    return false;\n                }\n                ch = decodeUtf16(ch, lowCh);\n            }\n            if (!check(ch)) {\n                return false;\n            }\n            check = code.isIdentifierPartES6;\n        }\n        return true;\n    }\n\n    function isIdentifierES5(id, strict) {\n        return isIdentifierNameES5(id) && !isReservedWordES5(id, strict);\n    }\n\n    function isIdentifierES6(id, strict) {\n        return isIdentifierNameES6(id) && !isReservedWordES6(id, strict);\n    }\n\n    module.exports = {\n        isKeywordES5: isKeywordES5,\n        isKeywordES6: isKeywordES6,\n        isReservedWordES5: isReservedWordES5,\n        isReservedWordES6: isReservedWordES6,\n        isRestrictedWord: isRestrictedWord,\n        isIdentifierNameES5: isIdentifierNameES5,\n        isIdentifierNameES6: isIdentifierNameES6,\n        isIdentifierES5: isIdentifierES5,\n        isIdentifierES6: isIdentifierES6\n    };\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n", "/*\n  Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n\n(function () {\n    'use strict';\n\n    exports.ast = require('./ast');\n    exports.code = require('./code');\n    exports.keyword = require('./keyword');\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n", "(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.acorn = {}));\n})(this, (function (exports) { 'use strict';\n\n  // This file was generated. Do not modify manually!\n  var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\n  // This file was generated. Do not modify manually!\n  var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];\n\n  // This file was generated. Do not modify manually!\n  var nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1add\\u1ae0-\\u1aeb\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\n  // This file was generated. Do not modify manually!\n  var nonASCIIidentifierStartChars = \"\\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\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\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\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088f\\u08a0-\\u08c9\\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\\u09fc\\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\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\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-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\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-\\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-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7dc\\ua7f1-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\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-\\uab69\\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\";\n\n  // These are a run-length and offset encoded representation of the\n  // >0xffff code points that are a valid part of identifiers. The\n  // offset starts at 0x10000, and each pair of numbers represents an\n  // offset to the next range, and then a size of the range.\n\n  // Reserved word lists for various dialects of the language\n\n  var reservedWords = {\n    3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n    5: \"class enum extends super const export import\",\n    6: \"enum\",\n    strict: \"implements interface let package private protected public static yield\",\n    strictBind: \"eval arguments\"\n  };\n\n  // And the keywords\n\n  var ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\";\n\n  var keywords$1 = {\n    5: ecma5AndLessKeywords,\n    \"5module\": ecma5AndLessKeywords + \" export import\",\n    6: ecma5AndLessKeywords + \" const class extends export import super\"\n  };\n\n  var keywordRelationalOperator = /^in(stanceof)?$/;\n\n  // ## Character categories\n\n  var nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\n  var nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\n  // This has a complexity linear to the value of the code. The\n  // assumption is that looking up astral identifier characters is\n  // rare.\n  function isInAstralSet(code, set) {\n    var pos = 0x10000;\n    for (var i = 0; i < set.length; i += 2) {\n      pos += set[i];\n      if (pos > code) { return false }\n      pos += set[i + 1];\n      if (pos >= code) { return true }\n    }\n    return false\n  }\n\n  // Test whether a given character code starts an identifier.\n\n  function isIdentifierStart(code, astral) {\n    if (code < 65) { return code === 36 }\n    if (code < 91) { return true }\n    if (code < 97) { return code === 95 }\n    if (code < 123) { return true }\n    if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) }\n    if (astral === false) { return false }\n    return isInAstralSet(code, astralIdentifierStartCodes)\n  }\n\n  // Test whether a given character is part of an identifier.\n\n  function isIdentifierChar(code, astral) {\n    if (code < 48) { return code === 36 }\n    if (code < 58) { return true }\n    if (code < 65) { return false }\n    if (code < 91) { return true }\n    if (code < 97) { return code === 95 }\n    if (code < 123) { return true }\n    if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) }\n    if (astral === false) { return false }\n    return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n  }\n\n  // ## Token types\n\n  // The assignment of fine-grained, information-carrying type objects\n  // allows the tokenizer to store the information it has about a\n  // token in a way that is very cheap for the parser to look up.\n\n  // All token type variables start with an underscore, to make them\n  // easy to recognize.\n\n  // The `beforeExpr` property is used to disambiguate between regular\n  // expressions and divisions. It is set on all token types that can\n  // be followed by an expression (thus, a slash after them would be a\n  // regular expression).\n  //\n  // The `startsExpr` property is used to check if the token ends a\n  // `yield` expression. It is set on all token types that either can\n  // directly start an expression (like a quotation mark) or can\n  // continue an expression (like the body of a string).\n  //\n  // `isLoop` marks a keyword as starting a loop, which is important\n  // to know when parsing a label, in order to allow or disallow\n  // continue jumps to that label.\n\n  var TokenType = function TokenType(label, conf) {\n    if ( conf === void 0 ) conf = {};\n\n    this.label = label;\n    this.keyword = conf.keyword;\n    this.beforeExpr = !!conf.beforeExpr;\n    this.startsExpr = !!conf.startsExpr;\n    this.isLoop = !!conf.isLoop;\n    this.isAssign = !!conf.isAssign;\n    this.prefix = !!conf.prefix;\n    this.postfix = !!conf.postfix;\n    this.binop = conf.binop || null;\n    this.updateContext = null;\n  };\n\n  function binop(name, prec) {\n    return new TokenType(name, {beforeExpr: true, binop: prec})\n  }\n  var beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true};\n\n  // Map keyword names to token types.\n\n  var keywords = {};\n\n  // Succinct definitions of keyword token types\n  function kw(name, options) {\n    if ( options === void 0 ) options = {};\n\n    options.keyword = name;\n    return keywords[name] = new TokenType(name, options)\n  }\n\n  var types$1 = {\n    num: new TokenType(\"num\", startsExpr),\n    regexp: new TokenType(\"regexp\", startsExpr),\n    string: new TokenType(\"string\", startsExpr),\n    name: new TokenType(\"name\", startsExpr),\n    privateId: new TokenType(\"privateId\", startsExpr),\n    eof: new TokenType(\"eof\"),\n\n    // Punctuation token types.\n    bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n    bracketR: new TokenType(\"]\"),\n    braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n    braceR: new TokenType(\"}\"),\n    parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n    parenR: new TokenType(\")\"),\n    comma: new TokenType(\",\", beforeExpr),\n    semi: new TokenType(\";\", beforeExpr),\n    colon: new TokenType(\":\", beforeExpr),\n    dot: new TokenType(\".\"),\n    question: new TokenType(\"?\", beforeExpr),\n    questionDot: new TokenType(\"?.\"),\n    arrow: new TokenType(\"=>\", beforeExpr),\n    template: new TokenType(\"template\"),\n    invalidTemplate: new TokenType(\"invalidTemplate\"),\n    ellipsis: new TokenType(\"...\", beforeExpr),\n    backQuote: new TokenType(\"`\", startsExpr),\n    dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n    // Operators. These carry several kinds of properties to help the\n    // parser use them properly (the presence of these properties is\n    // what categorizes them as operators).\n    //\n    // `binop`, when present, specifies that this operator is a binary\n    // operator, and will refer to its precedence.\n    //\n    // `prefix` and `postfix` mark the operator as a prefix or postfix\n    // unary operator.\n    //\n    // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n    // binary operators with a very low precedence, that should result\n    // in AssignmentExpression nodes.\n\n    eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n    assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n    incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n    prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n    logicalOR: binop(\"||\", 1),\n    logicalAND: binop(\"&&\", 2),\n    bitwiseOR: binop(\"|\", 3),\n    bitwiseXOR: binop(\"^\", 4),\n    bitwiseAND: binop(\"&\", 5),\n    equality: binop(\"==/!=/===/!==\", 6),\n    relational: binop(\"</>/<=/>=\", 7),\n    bitShift: binop(\"<</>>/>>>\", 8),\n    plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n    modulo: binop(\"%\", 10),\n    star: binop(\"*\", 10),\n    slash: binop(\"/\", 10),\n    starstar: new TokenType(\"**\", {beforeExpr: true}),\n    coalesce: binop(\"??\", 1),\n\n    // Keyword token types.\n    _break: kw(\"break\"),\n    _case: kw(\"case\", beforeExpr),\n    _catch: kw(\"catch\"),\n    _continue: kw(\"continue\"),\n    _debugger: kw(\"debugger\"),\n    _default: kw(\"default\", beforeExpr),\n    _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n    _else: kw(\"else\", beforeExpr),\n    _finally: kw(\"finally\"),\n    _for: kw(\"for\", {isLoop: true}),\n    _function: kw(\"function\", startsExpr),\n    _if: kw(\"if\"),\n    _return: kw(\"return\", beforeExpr),\n    _switch: kw(\"switch\"),\n    _throw: kw(\"throw\", beforeExpr),\n    _try: kw(\"try\"),\n    _var: kw(\"var\"),\n    _const: kw(\"const\"),\n    _while: kw(\"while\", {isLoop: true}),\n    _with: kw(\"with\"),\n    _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n    _this: kw(\"this\", startsExpr),\n    _super: kw(\"super\", startsExpr),\n    _class: kw(\"class\", startsExpr),\n    _extends: kw(\"extends\", beforeExpr),\n    _export: kw(\"export\"),\n    _import: kw(\"import\", startsExpr),\n    _null: kw(\"null\", startsExpr),\n    _true: kw(\"true\", startsExpr),\n    _false: kw(\"false\", startsExpr),\n    _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n    _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n    _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n    _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n    _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n  };\n\n  // Matches a whole line break (where CRLF is considered a single\n  // line break). Used to count lines.\n\n  var lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\n  var lineBreakG = new RegExp(lineBreak.source, \"g\");\n\n  function isNewLine(code) {\n    return code === 10 || code === 13 || code === 0x2028 || code === 0x2029\n  }\n\n  function nextLineBreak(code, from, end) {\n    if ( end === void 0 ) end = code.length;\n\n    for (var i = from; i < end; i++) {\n      var next = code.charCodeAt(i);\n      if (isNewLine(next))\n        { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 }\n    }\n    return -1\n  }\n\n  var nonASCIIwhitespace = /[\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n\n  var skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\n  var ref = Object.prototype;\n  var hasOwnProperty = ref.hasOwnProperty;\n  var toString = ref.toString;\n\n  var hasOwn = Object.hasOwn || (function (obj, propName) { return (\n    hasOwnProperty.call(obj, propName)\n  ); });\n\n  var isArray = Array.isArray || (function (obj) { return (\n    toString.call(obj) === \"[object Array]\"\n  ); });\n\n  var regexpCache = Object.create(null);\n\n  function wordsRegexp(words) {\n    return regexpCache[words] || (regexpCache[words] = new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\"))\n  }\n\n  function codePointToString(code) {\n    // UTF-16 Decoding\n    if (code <= 0xFFFF) { return String.fromCharCode(code) }\n    code -= 0x10000;\n    return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n  }\n\n  var loneSurrogate = /(?:[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/;\n\n  // These are used when `options.locations` is on, for the\n  // `startLoc` and `endLoc` properties.\n\n  var Position = function Position(line, col) {\n    this.line = line;\n    this.column = col;\n  };\n\n  Position.prototype.offset = function offset (n) {\n    return new Position(this.line, this.column + n)\n  };\n\n  var SourceLocation = function SourceLocation(p, start, end) {\n    this.start = start;\n    this.end = end;\n    if (p.sourceFile !== null) { this.source = p.sourceFile; }\n  };\n\n  // The `getLineInfo` function is mostly useful when the\n  // `locations` option is off (for performance reasons) and you\n  // want to find the line/column position for a given character\n  // offset. `input` should be the code string that the offset refers\n  // into.\n\n  function getLineInfo(input, offset) {\n    for (var line = 1, cur = 0;;) {\n      var nextBreak = nextLineBreak(input, cur, offset);\n      if (nextBreak < 0) { return new Position(line, offset - cur) }\n      ++line;\n      cur = nextBreak;\n    }\n  }\n\n  // A second argument must be given to configure the parser process.\n  // These options are recognized (only `ecmaVersion` is required):\n\n  var defaultOptions = {\n    // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n    // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10\n    // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `\"latest\"`\n    // (the latest version the library supports). This influences\n    // support for strict mode, the set of reserved words, and support\n    // for new syntax features.\n    ecmaVersion: null,\n    // `sourceType` indicates the mode the code should be parsed in.\n    // Can be either `\"script\"`, `\"module\"` or `\"commonjs\"`. This influences global\n    // strict mode and parsing of `import` and `export` declarations.\n    sourceType: \"script\",\n    // `onInsertedSemicolon` can be a callback that will be called when\n    // a semicolon is automatically inserted. It will be passed the\n    // position of the inserted semicolon as an offset, and if\n    // `locations` is enabled, it is given the location as a `{line,\n    // column}` object as second argument.\n    onInsertedSemicolon: null,\n    // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n    // trailing commas.\n    onTrailingComma: null,\n    // By default, reserved words are only enforced if ecmaVersion >= 5.\n    // Set `allowReserved` to a boolean value to explicitly turn this on\n    // an off. When this option has the value \"never\", reserved words\n    // and keywords can also not be used as property names.\n    allowReserved: null,\n    // When enabled, a return at the top level is not considered an\n    // error.\n    allowReturnOutsideFunction: false,\n    // When enabled, import/export statements are not constrained to\n    // appearing at the top of the program, and an import.meta expression\n    // in a script isn't considered an error.\n    allowImportExportEverywhere: false,\n    // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022.\n    // When enabled, await identifiers are allowed to appear at the top-level scope,\n    // but they are still not allowed in non-async functions.\n    allowAwaitOutsideFunction: null,\n    // When enabled, super identifiers are not constrained to\n    // appearing in methods and do not raise an error when they appear elsewhere.\n    allowSuperOutsideMethod: null,\n    // When enabled, hashbang directive in the beginning of file is\n    // allowed and treated as a line comment. Enabled by default when\n    // `ecmaVersion` >= 2023.\n    allowHashBang: false,\n    // By default, the parser will verify that private properties are\n    // only used in places where they are valid and have been declared.\n    // Set this to false to turn such checks off.\n    checkPrivateFields: true,\n    // When `locations` is on, `loc` properties holding objects with\n    // `start` and `end` properties in `{line, column}` form (with\n    // line being 1-based and column 0-based) will be attached to the\n    // nodes.\n    locations: false,\n    // A function can be passed as `onToken` option, which will\n    // cause Acorn to call that function with object in the same\n    // format as tokens returned from `tokenizer().getToken()`. Note\n    // that you are not allowed to call the parser from the\n    // callback\u2014that will corrupt its internal state.\n    onToken: null,\n    // A function can be passed as `onComment` option, which will\n    // cause Acorn to call that function with `(block, text, start,\n    // end)` parameters whenever a comment is skipped. `block` is a\n    // boolean indicating whether this is a block (`/* */`) comment,\n    // `text` is the content of the comment, and `start` and `end` are\n    // character offsets that denote the start and end of the comment.\n    // When the `locations` option is on, two more parameters are\n    // passed, the full `{line, column}` locations of the start and\n    // end of the comments. Note that you are not allowed to call the\n    // parser from the callback\u2014that will corrupt its internal state.\n    // When this option has an array as value, objects representing the\n    // comments are pushed to it.\n    onComment: null,\n    // Nodes have their start and end characters offsets recorded in\n    // `start` and `end` properties (directly on the node, rather than\n    // the `loc` object, which holds line/column data. To also add a\n    // [semi-standardized][range] `range` property holding a `[start,\n    // end]` array with the same numbers, set the `ranges` option to\n    // `true`.\n    //\n    // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n    ranges: false,\n    // It is possible to parse multiple files into a single AST by\n    // passing the tree produced by parsing the first file as\n    // `program` option in subsequent parses. This will add the\n    // toplevel forms of the parsed file to the `Program` (top) node\n    // of an existing parse tree.\n    program: null,\n    // When `locations` is on, you can pass this to record the source\n    // file in every node's `loc` object.\n    sourceFile: null,\n    // This value, if given, is stored in every node, whether\n    // `locations` is on or off.\n    directSourceFile: null,\n    // When enabled, parenthesized expressions are represented by\n    // (non-standard) ParenthesizedExpression nodes\n    preserveParens: false\n  };\n\n  // Interpret and default an options object\n\n  var warnedAboutEcmaVersion = false;\n\n  function getOptions(opts) {\n    var options = {};\n\n    for (var opt in defaultOptions)\n      { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; }\n\n    if (options.ecmaVersion === \"latest\") {\n      options.ecmaVersion = 1e8;\n    } else if (options.ecmaVersion == null) {\n      if (!warnedAboutEcmaVersion && typeof console === \"object\" && console.warn) {\n        warnedAboutEcmaVersion = true;\n        console.warn(\"Since Acorn 8.0.0, options.ecmaVersion is required.\\nDefaulting to 2020, but this will stop working in the future.\");\n      }\n      options.ecmaVersion = 11;\n    } else if (options.ecmaVersion >= 2015) {\n      options.ecmaVersion -= 2009;\n    }\n\n    if (options.allowReserved == null)\n      { options.allowReserved = options.ecmaVersion < 5; }\n\n    if (!opts || opts.allowHashBang == null)\n      { options.allowHashBang = options.ecmaVersion >= 14; }\n\n    if (isArray(options.onToken)) {\n      var tokens = options.onToken;\n      options.onToken = function (token) { return tokens.push(token); };\n    }\n    if (isArray(options.onComment))\n      { options.onComment = pushComment(options, options.onComment); }\n\n    if (options.sourceType === \"commonjs\" && options.allowAwaitOutsideFunction)\n      { throw new Error(\"Cannot use allowAwaitOutsideFunction with sourceType: commonjs\") }\n\n    return options\n  }\n\n  function pushComment(options, array) {\n    return function(block, text, start, end, startLoc, endLoc) {\n      var comment = {\n        type: block ? \"Block\" : \"Line\",\n        value: text,\n        start: start,\n        end: end\n      };\n      if (options.locations)\n        { comment.loc = new SourceLocation(this, startLoc, endLoc); }\n      if (options.ranges)\n        { comment.range = [start, end]; }\n      array.push(comment);\n    }\n  }\n\n  // Each scope gets a bitset that may contain these flags\n  var\n      SCOPE_TOP = 1,\n      SCOPE_FUNCTION = 2,\n      SCOPE_ASYNC = 4,\n      SCOPE_GENERATOR = 8,\n      SCOPE_ARROW = 16,\n      SCOPE_SIMPLE_CATCH = 32,\n      SCOPE_SUPER = 64,\n      SCOPE_DIRECT_SUPER = 128,\n      SCOPE_CLASS_STATIC_BLOCK = 256,\n      SCOPE_CLASS_FIELD_INIT = 512,\n      SCOPE_SWITCH = 1024,\n      SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK;\n\n  function functionFlags(async, generator) {\n    return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n  }\n\n  // Used in checkLVal* and declareName to determine the type of a binding\n  var\n      BIND_NONE = 0, // Not a binding\n      BIND_VAR = 1, // Var-style binding\n      BIND_LEXICAL = 2, // Let- or const-style binding\n      BIND_FUNCTION = 3, // Function declaration\n      BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n      BIND_OUTSIDE = 5; // Special case for function names as bound inside the function\n\n  var Parser = function Parser(options, input, startPos) {\n    this.options = options = getOptions(options);\n    this.sourceFile = options.sourceFile;\n    this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === \"module\" ? \"5module\" : 5]);\n    var reserved = \"\";\n    if (options.allowReserved !== true) {\n      reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3];\n      if (options.sourceType === \"module\") { reserved += \" await\"; }\n    }\n    this.reservedWords = wordsRegexp(reserved);\n    var reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict;\n    this.reservedWordsStrict = wordsRegexp(reservedStrict);\n    this.reservedWordsStrictBind = wordsRegexp(reservedStrict + \" \" + reservedWords.strictBind);\n    this.input = String(input);\n\n    // Used to signal to callers of `readWord1` whether the word\n    // contained any escape sequences. This is needed because words with\n    // escape sequences must not be interpreted as keywords.\n    this.containsEsc = false;\n\n    // Set up token state\n\n    // The current position of the tokenizer in the input.\n    if (startPos) {\n      this.pos = startPos;\n      this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1;\n      this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length;\n    } else {\n      this.pos = this.lineStart = 0;\n      this.curLine = 1;\n    }\n\n    // Properties of the current token:\n    // Its type\n    this.type = types$1.eof;\n    // For tokens that include more information than their type, the value\n    this.value = null;\n    // Its start and end offset\n    this.start = this.end = this.pos;\n    // And, if locations are used, the {line, column} object\n    // corresponding to those offsets\n    this.startLoc = this.endLoc = this.curPosition();\n\n    // Position information for the previous token\n    this.lastTokEndLoc = this.lastTokStartLoc = null;\n    this.lastTokStart = this.lastTokEnd = this.pos;\n\n    // The context stack is used to superficially track syntactic\n    // context to predict whether a regular expression is allowed in a\n    // given position.\n    this.context = this.initialContext();\n    this.exprAllowed = true;\n\n    // Figure out if it's a module code.\n    this.inModule = options.sourceType === \"module\";\n    this.strict = this.inModule || this.strictDirective(this.pos);\n\n    // Used to signify the start of a potential arrow function\n    this.potentialArrowAt = -1;\n    this.potentialArrowInForAwait = false;\n\n    // Positions to delayed-check that yield/await does not exist in default parameters.\n    this.yieldPos = this.awaitPos = this.awaitIdentPos = 0;\n    // Labels in scope.\n    this.labels = [];\n    // Thus-far undefined exports.\n    this.undefinedExports = Object.create(null);\n\n    // If enabled, skip leading hashbang line.\n    if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n      { this.skipLineComment(2); }\n\n    // Scope tracking for duplicate variable names (see scope.js)\n    this.scopeStack = [];\n    this.enterScope(\n      this.options.sourceType === \"commonjs\"\n        // In commonjs, the top-level scope behaves like a function scope\n        ? SCOPE_FUNCTION\n        : SCOPE_TOP\n    );\n\n    // For RegExp validation\n    this.regexpState = null;\n\n    // The stack of private names.\n    // Each element has two properties: 'declared' and 'used'.\n    // When it exited from the outermost class definition, all used private names must be declared.\n    this.privateNameStack = [];\n  };\n\n  var prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowReturn: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },allowUsing: { configurable: true },inClassStaticBlock: { configurable: true } };\n\n  Parser.prototype.parse = function parse () {\n    var node = this.options.program || this.startNode();\n    this.nextToken();\n    return this.parseTopLevel(node)\n  };\n\n  prototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 };\n\n  prototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 };\n\n  prototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 };\n\n  prototypeAccessors.canAwait.get = function () {\n    for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n      var ref = this.scopeStack[i];\n        var flags = ref.flags;\n      if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT)) { return false }\n      if (flags & SCOPE_FUNCTION) { return (flags & SCOPE_ASYNC) > 0 }\n    }\n    return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction\n  };\n\n  prototypeAccessors.allowReturn.get = function () {\n    if (this.inFunction) { return true }\n    if (this.options.allowReturnOutsideFunction && this.currentVarScope().flags & SCOPE_TOP) { return true }\n    return false\n  };\n\n  prototypeAccessors.allowSuper.get = function () {\n    var ref = this.currentThisScope();\n      var flags = ref.flags;\n    return (flags & SCOPE_SUPER) > 0 || this.options.allowSuperOutsideMethod\n  };\n\n  prototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 };\n\n  prototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) };\n\n  prototypeAccessors.allowNewDotTarget.get = function () {\n    for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n      var ref = this.scopeStack[i];\n        var flags = ref.flags;\n      if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) ||\n          ((flags & SCOPE_FUNCTION) && !(flags & SCOPE_ARROW))) { return true }\n    }\n    return false\n  };\n\n  prototypeAccessors.allowUsing.get = function () {\n    var ref = this.currentScope();\n      var flags = ref.flags;\n    if (flags & SCOPE_SWITCH) { return false }\n    if (!this.inModule && flags & SCOPE_TOP) { return false }\n    return true\n  };\n\n  prototypeAccessors.inClassStaticBlock.get = function () {\n    return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0\n  };\n\n  Parser.extend = function extend () {\n      var plugins = [], len = arguments.length;\n      while ( len-- ) plugins[ len ] = arguments[ len ];\n\n    var cls = this;\n    for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); }\n    return cls\n  };\n\n  Parser.parse = function parse (input, options) {\n    return new this(options, input).parse()\n  };\n\n  Parser.parseExpressionAt = function parseExpressionAt (input, pos, options) {\n    var parser = new this(options, input, pos);\n    parser.nextToken();\n    return parser.parseExpression()\n  };\n\n  Parser.tokenizer = function tokenizer (input, options) {\n    return new this(options, input)\n  };\n\n  Object.defineProperties( Parser.prototype, prototypeAccessors );\n\n  var pp$9 = Parser.prototype;\n\n  // ## Parser utilities\n\n  var literal = /^(?:'((?:\\\\[^]|[^'\\\\])*?)'|\"((?:\\\\[^]|[^\"\\\\])*?)\")/;\n  pp$9.strictDirective = function(start) {\n    if (this.options.ecmaVersion < 5) { return false }\n    for (;;) {\n      // Try to find string literal.\n      skipWhiteSpace.lastIndex = start;\n      start += skipWhiteSpace.exec(this.input)[0].length;\n      var match = literal.exec(this.input.slice(start));\n      if (!match) { return false }\n      if ((match[1] || match[2]) === \"use strict\") {\n        skipWhiteSpace.lastIndex = start + match[0].length;\n        var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length;\n        var next = this.input.charAt(end);\n        return next === \";\" || next === \"}\" ||\n          (lineBreak.test(spaceAfter[0]) &&\n           !(/[(`.[+\\-/*%<>=,?^&]/.test(next) || next === \"!\" && this.input.charAt(end + 1) === \"=\"))\n      }\n      start += match[0].length;\n\n      // Skip semicolon, if any.\n      skipWhiteSpace.lastIndex = start;\n      start += skipWhiteSpace.exec(this.input)[0].length;\n      if (this.input[start] === \";\")\n        { start++; }\n    }\n  };\n\n  // Predicate that tests whether the next token is of the given\n  // type, and if yes, consumes it as a side effect.\n\n  pp$9.eat = function(type) {\n    if (this.type === type) {\n      this.next();\n      return true\n    } else {\n      return false\n    }\n  };\n\n  // Tests whether parsed token is a contextual keyword.\n\n  pp$9.isContextual = function(name) {\n    return this.type === types$1.name && this.value === name && !this.containsEsc\n  };\n\n  // Consumes contextual keyword if possible.\n\n  pp$9.eatContextual = function(name) {\n    if (!this.isContextual(name)) { return false }\n    this.next();\n    return true\n  };\n\n  // Asserts that following token is given contextual keyword.\n\n  pp$9.expectContextual = function(name) {\n    if (!this.eatContextual(name)) { this.unexpected(); }\n  };\n\n  // Test whether a semicolon can be inserted at the current position.\n\n  pp$9.canInsertSemicolon = function() {\n    return this.type === types$1.eof ||\n      this.type === types$1.braceR ||\n      lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n  };\n\n  pp$9.insertSemicolon = function() {\n    if (this.canInsertSemicolon()) {\n      if (this.options.onInsertedSemicolon)\n        { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); }\n      return true\n    }\n  };\n\n  // Consume a semicolon, or, failing that, see if we are allowed to\n  // pretend that there is a semicolon at this position.\n\n  pp$9.semicolon = function() {\n    if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); }\n  };\n\n  pp$9.afterTrailingComma = function(tokType, notNext) {\n    if (this.type === tokType) {\n      if (this.options.onTrailingComma)\n        { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); }\n      if (!notNext)\n        { this.next(); }\n      return true\n    }\n  };\n\n  // Expect a token of a given type. If found, consume it, otherwise,\n  // raise an unexpected token error.\n\n  pp$9.expect = function(type) {\n    this.eat(type) || this.unexpected();\n  };\n\n  // Raise an unexpected token error.\n\n  pp$9.unexpected = function(pos) {\n    this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n  };\n\n  var DestructuringErrors = function DestructuringErrors() {\n    this.shorthandAssign =\n    this.trailingComma =\n    this.parenthesizedAssign =\n    this.parenthesizedBind =\n    this.doubleProto =\n      -1;\n  };\n\n  pp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n    if (!refDestructuringErrors) { return }\n    if (refDestructuringErrors.trailingComma > -1)\n      { this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\"); }\n    var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;\n    if (parens > -1) { this.raiseRecoverable(parens, isAssign ? \"Assigning to rvalue\" : \"Parenthesized pattern\"); }\n  };\n\n  pp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n    if (!refDestructuringErrors) { return false }\n    var shorthandAssign = refDestructuringErrors.shorthandAssign;\n    var doubleProto = refDestructuringErrors.doubleProto;\n    if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 }\n    if (shorthandAssign >= 0)\n      { this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\"); }\n    if (doubleProto >= 0)\n      { this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\"); }\n  };\n\n  pp$9.checkYieldAwaitInDefaultParams = function() {\n    if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n      { this.raise(this.yieldPos, \"Yield expression cannot be a default value\"); }\n    if (this.awaitPos)\n      { this.raise(this.awaitPos, \"Await expression cannot be a default value\"); }\n  };\n\n  pp$9.isSimpleAssignTarget = function(expr) {\n    if (expr.type === \"ParenthesizedExpression\")\n      { return this.isSimpleAssignTarget(expr.expression) }\n    return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n  };\n\n  var pp$8 = Parser.prototype;\n\n  // ### Statement parsing\n\n  // Parse a program. Initializes the parser, reads any number of\n  // statements, and wraps them in a Program node.  Optionally takes a\n  // `program` argument.  If present, the statements will be appended\n  // to its body instead of creating a new node.\n\n  pp$8.parseTopLevel = function(node) {\n    var exports = Object.create(null);\n    if (!node.body) { node.body = []; }\n    while (this.type !== types$1.eof) {\n      var stmt = this.parseStatement(null, true, exports);\n      node.body.push(stmt);\n    }\n    if (this.inModule)\n      { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1)\n        {\n          var name = list[i];\n\n          this.raiseRecoverable(this.undefinedExports[name].start, (\"Export '\" + name + \"' is not defined\"));\n        } }\n    this.adaptDirectivePrologue(node.body);\n    this.next();\n    node.sourceType = this.options.sourceType === \"commonjs\" ? \"script\" : this.options.sourceType;\n    return this.finishNode(node, \"Program\")\n  };\n\n  var loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"};\n\n  pp$8.isLet = function(context) {\n    if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) { return false }\n    skipWhiteSpace.lastIndex = this.pos;\n    var skip = skipWhiteSpace.exec(this.input);\n    var next = this.pos + skip[0].length, nextCh = this.fullCharCodeAt(next);\n    // For ambiguous cases, determine if a LexicalDeclaration (or only a\n    // Statement) is allowed here. If context is not empty then only a Statement\n    // is allowed. However, `let [` is an explicit negative lookahead for\n    // ExpressionStatement, so special-case it first.\n    if (nextCh === 91 || nextCh === 92) { return true } // '[', '\\'\n    if (context) { return false }\n\n    if (nextCh === 123) { return true } // '{'\n    if (isIdentifierStart(nextCh)) {\n      var start = next;\n      do { next += nextCh <= 0xffff ? 1 : 2; }\n      while (isIdentifierChar(nextCh = this.fullCharCodeAt(next)))\n      if (nextCh === 92) { return true }\n      var ident = this.input.slice(start, next);\n      if (!keywordRelationalOperator.test(ident)) { return true }\n    }\n    return false\n  };\n\n  // check 'async [no LineTerminator here] function'\n  // - 'async /*foo*/ function' is OK.\n  // - 'async /*\\n*/ function' is invalid.\n  pp$8.isAsyncFunction = function() {\n    if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n      { return false }\n\n    skipWhiteSpace.lastIndex = this.pos;\n    var skip = skipWhiteSpace.exec(this.input);\n    var next = this.pos + skip[0].length, after;\n    return !lineBreak.test(this.input.slice(this.pos, next)) &&\n      this.input.slice(next, next + 8) === \"function\" &&\n      (next + 8 === this.input.length ||\n       !(isIdentifierChar(after = this.fullCharCodeAt(next + 8)) || after === 92 /* '\\' */))\n  };\n\n  pp$8.isUsingKeyword = function(isAwaitUsing, isFor) {\n    if (this.options.ecmaVersion < 17 || !this.isContextual(isAwaitUsing ? \"await\" : \"using\"))\n      { return false }\n\n    skipWhiteSpace.lastIndex = this.pos;\n    var skip = skipWhiteSpace.exec(this.input);\n    var next = this.pos + skip[0].length;\n\n    if (lineBreak.test(this.input.slice(this.pos, next))) { return false }\n\n    if (isAwaitUsing) {\n      var usingEndPos = next + 5 /* using */, after;\n      if (this.input.slice(next, usingEndPos) !== \"using\" ||\n        usingEndPos === this.input.length ||\n        isIdentifierChar(after = this.fullCharCodeAt(usingEndPos)) ||\n        after === 92 /* '\\' */\n      ) { return false }\n\n      skipWhiteSpace.lastIndex = usingEndPos;\n      var skipAfterUsing = skipWhiteSpace.exec(this.input);\n      next = usingEndPos + skipAfterUsing[0].length;\n      if (skipAfterUsing && lineBreak.test(this.input.slice(usingEndPos, next))) { return false }\n    }\n\n    var ch = this.fullCharCodeAt(next);\n    if (!isIdentifierStart(ch) && ch !== 92 /* '\\' */) { return false }\n    var idStart = next;\n    do { next += ch <= 0xffff ? 1 : 2; }\n    while (isIdentifierChar(ch = this.fullCharCodeAt(next)))\n    if (ch === 92) { return true }\n    var id = this.input.slice(idStart, next);\n    if (keywordRelationalOperator.test(id) || isFor && id === \"of\") { return false }\n    return true\n  };\n\n  pp$8.isAwaitUsing = function(isFor) {\n    return this.isUsingKeyword(true, isFor)\n  };\n\n  pp$8.isUsing = function(isFor) {\n    return this.isUsingKeyword(false, isFor)\n  };\n\n  // Parse a single statement.\n  //\n  // If expecting a statement and finding a slash operator, parse a\n  // regular expression literal. This is to handle cases like\n  // `if (foo) /blah/.exec(foo)`, where looking at the previous token\n  // does not help.\n\n  pp$8.parseStatement = function(context, topLevel, exports) {\n    var starttype = this.type, node = this.startNode(), kind;\n\n    if (this.isLet(context)) {\n      starttype = types$1._var;\n      kind = \"let\";\n    }\n\n    // Most types of statements are recognized by the keyword they\n    // start with. Many are trivial to parse, some require a bit of\n    // complexity.\n\n    switch (starttype) {\n    case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n    case types$1._debugger: return this.parseDebuggerStatement(node)\n    case types$1._do: return this.parseDoStatement(node)\n    case types$1._for: return this.parseForStatement(node)\n    case types$1._function:\n      // Function as sole body of either an if statement or a labeled statement\n      // works, but not when it is part of a labeled statement that is the sole\n      // body of an if statement.\n      if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) { this.unexpected(); }\n      return this.parseFunctionStatement(node, false, !context)\n    case types$1._class:\n      if (context) { this.unexpected(); }\n      return this.parseClass(node, true)\n    case types$1._if: return this.parseIfStatement(node)\n    case types$1._return: return this.parseReturnStatement(node)\n    case types$1._switch: return this.parseSwitchStatement(node)\n    case types$1._throw: return this.parseThrowStatement(node)\n    case types$1._try: return this.parseTryStatement(node)\n    case types$1._const: case types$1._var:\n      kind = kind || this.value;\n      if (context && kind !== \"var\") { this.unexpected(); }\n      return this.parseVarStatement(node, kind)\n    case types$1._while: return this.parseWhileStatement(node)\n    case types$1._with: return this.parseWithStatement(node)\n    case types$1.braceL: return this.parseBlock(true, node)\n    case types$1.semi: return this.parseEmptyStatement(node)\n    case types$1._export:\n    case types$1._import:\n      if (this.options.ecmaVersion > 10 && starttype === types$1._import) {\n        skipWhiteSpace.lastIndex = this.pos;\n        var skip = skipWhiteSpace.exec(this.input);\n        var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n        if (nextCh === 40 || nextCh === 46) // '(' or '.'\n          { return this.parseExpressionStatement(node, this.parseExpression()) }\n      }\n\n      if (!this.options.allowImportExportEverywhere) {\n        if (!topLevel)\n          { this.raise(this.start, \"'import' and 'export' may only appear at the top level\"); }\n        if (!this.inModule)\n          { this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\"); }\n      }\n      return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports)\n\n      // If the statement does not start with a statement keyword or a\n      // brace, it's an ExpressionStatement or LabeledStatement. We\n      // simply start parsing an expression, and afterwards, if the\n      // next token is a colon and the expression was a simple\n      // Identifier node, we switch to interpreting it as a label.\n    default:\n      if (this.isAsyncFunction()) {\n        if (context) { this.unexpected(); }\n        this.next();\n        return this.parseFunctionStatement(node, true, !context)\n      }\n\n      var usingKind = this.isAwaitUsing(false) ? \"await using\" : this.isUsing(false) ? \"using\" : null;\n      if (usingKind) {\n        if (!this.allowUsing) {\n          this.raise(this.start, \"Using declaration cannot appear in the top level when source type is `script` or in the bare case statement\");\n        }\n        if (usingKind === \"await using\") {\n          if (!this.canAwait) {\n            this.raise(this.start, \"Await using cannot appear outside of async function\");\n          }\n          this.next();\n        }\n        this.next();\n        this.parseVar(node, false, usingKind);\n        this.semicolon();\n        return this.finishNode(node, \"VariableDeclaration\")\n      }\n\n      var maybeName = this.value, expr = this.parseExpression();\n      if (starttype === types$1.name && expr.type === \"Identifier\" && this.eat(types$1.colon))\n        { return this.parseLabeledStatement(node, maybeName, expr, context) }\n      else { return this.parseExpressionStatement(node, expr) }\n    }\n  };\n\n  pp$8.parseBreakContinueStatement = function(node, keyword) {\n    var isBreak = keyword === \"break\";\n    this.next();\n    if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; }\n    else if (this.type !== types$1.name) { this.unexpected(); }\n    else {\n      node.label = this.parseIdent();\n      this.semicolon();\n    }\n\n    // Verify that there is an actual destination to break or\n    // continue to.\n    var i = 0;\n    for (; i < this.labels.length; ++i) {\n      var lab = this.labels[i];\n      if (node.label == null || lab.name === node.label.name) {\n        if (lab.kind != null && (isBreak || lab.kind === \"loop\")) { break }\n        if (node.label && isBreak) { break }\n      }\n    }\n    if (i === this.labels.length) { this.raise(node.start, \"Unsyntactic \" + keyword); }\n    return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n  };\n\n  pp$8.parseDebuggerStatement = function(node) {\n    this.next();\n    this.semicolon();\n    return this.finishNode(node, \"DebuggerStatement\")\n  };\n\n  pp$8.parseDoStatement = function(node) {\n    this.next();\n    this.labels.push(loopLabel);\n    node.body = this.parseStatement(\"do\");\n    this.labels.pop();\n    this.expect(types$1._while);\n    node.test = this.parseParenExpression();\n    if (this.options.ecmaVersion >= 6)\n      { this.eat(types$1.semi); }\n    else\n      { this.semicolon(); }\n    return this.finishNode(node, \"DoWhileStatement\")\n  };\n\n  // Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n  // loop is non-trivial. Basically, we have to parse the init `var`\n  // statement or expression, disallowing the `in` operator (see\n  // the second parameter to `parseExpression`), and then check\n  // whether the next token is `in` or `of`. When there is no init\n  // part (semicolon immediately after the opening parenthesis), it\n  // is a regular `for` loop.\n\n  pp$8.parseForStatement = function(node) {\n    this.next();\n    var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual(\"await\")) ? this.lastTokStart : -1;\n    this.labels.push(loopLabel);\n    this.enterScope(0);\n    this.expect(types$1.parenL);\n    if (this.type === types$1.semi) {\n      if (awaitAt > -1) { this.unexpected(awaitAt); }\n      return this.parseFor(node, null)\n    }\n    var isLet = this.isLet();\n    if (this.type === types$1._var || this.type === types$1._const || isLet) {\n      var init$1 = this.startNode(), kind = isLet ? \"let\" : this.value;\n      this.next();\n      this.parseVar(init$1, true, kind);\n      this.finishNode(init$1, \"VariableDeclaration\");\n      return this.parseForAfterInit(node, init$1, awaitAt)\n    }\n    var startsWithLet = this.isContextual(\"let\"), isForOf = false;\n\n    var usingKind = this.isUsing(true) ? \"using\" : this.isAwaitUsing(true) ? \"await using\" : null;\n    if (usingKind) {\n      var init$2 = this.startNode();\n      this.next();\n      if (usingKind === \"await using\") {\n        if (!this.canAwait) {\n          this.raise(this.start, \"Await using cannot appear outside of async function\");\n        }\n        this.next();\n      }\n      this.parseVar(init$2, true, usingKind);\n      this.finishNode(init$2, \"VariableDeclaration\");\n      return this.parseForAfterInit(node, init$2, awaitAt)\n    }\n    var containsEsc = this.containsEsc;\n    var refDestructuringErrors = new DestructuringErrors;\n    var initPos = this.start;\n    var init = awaitAt > -1\n      ? this.parseExprSubscripts(refDestructuringErrors, \"await\")\n      : this.parseExpression(true, refDestructuringErrors);\n    if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n      if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt)\n        if (this.type === types$1._in) { this.unexpected(awaitAt); }\n        node.await = true;\n      } else if (isForOf && this.options.ecmaVersion >= 8) {\n        if (init.start === initPos && !containsEsc && init.type === \"Identifier\" && init.name === \"async\") { this.unexpected(); }\n        else if (this.options.ecmaVersion >= 9) { node.await = false; }\n      }\n      if (startsWithLet && isForOf) { this.raise(init.start, \"The left-hand side of a for-of loop may not start with 'let'.\"); }\n      this.toAssignable(init, false, refDestructuringErrors);\n      this.checkLValPattern(init);\n      return this.parseForIn(node, init)\n    } else {\n      this.checkExpressionErrors(refDestructuringErrors, true);\n    }\n    if (awaitAt > -1) { this.unexpected(awaitAt); }\n    return this.parseFor(node, init)\n  };\n\n  // Helper method to parse for loop after variable initialization\n  pp$8.parseForAfterInit = function(node, init, awaitAt) {\n    if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init.declarations.length === 1) {\n      if (this.options.ecmaVersion >= 9) {\n        if (this.type === types$1._in) {\n          if (awaitAt > -1) { this.unexpected(awaitAt); }\n        } else { node.await = awaitAt > -1; }\n      }\n      return this.parseForIn(node, init)\n    }\n    if (awaitAt > -1) { this.unexpected(awaitAt); }\n    return this.parseFor(node, init)\n  };\n\n  pp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n    this.next();\n    return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n  };\n\n  pp$8.parseIfStatement = function(node) {\n    this.next();\n    node.test = this.parseParenExpression();\n    // allow function declarations in branches, but only in non-strict mode\n    node.consequent = this.parseStatement(\"if\");\n    node.alternate = this.eat(types$1._else) ? this.parseStatement(\"if\") : null;\n    return this.finishNode(node, \"IfStatement\")\n  };\n\n  pp$8.parseReturnStatement = function(node) {\n    if (!this.allowReturn)\n      { this.raise(this.start, \"'return' outside of function\"); }\n    this.next();\n\n    // In `return` (and `break`/`continue`), the keywords with\n    // optional arguments, we eagerly look for a semicolon or the\n    // possibility to insert one.\n\n    if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; }\n    else { node.argument = this.parseExpression(); this.semicolon(); }\n    return this.finishNode(node, \"ReturnStatement\")\n  };\n\n  pp$8.parseSwitchStatement = function(node) {\n    this.next();\n    node.discriminant = this.parseParenExpression();\n    node.cases = [];\n    this.expect(types$1.braceL);\n    this.labels.push(switchLabel);\n    this.enterScope(SCOPE_SWITCH);\n\n    // Statements under must be grouped (by label) in SwitchCase\n    // nodes. `cur` is used to keep the node that we are currently\n    // adding statements to.\n\n    var cur;\n    for (var sawDefault = false; this.type !== types$1.braceR;) {\n      if (this.type === types$1._case || this.type === types$1._default) {\n        var isCase = this.type === types$1._case;\n        if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n        node.cases.push(cur = this.startNode());\n        cur.consequent = [];\n        this.next();\n        if (isCase) {\n          cur.test = this.parseExpression();\n        } else {\n          if (sawDefault) { this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\"); }\n          sawDefault = true;\n          cur.test = null;\n        }\n        this.expect(types$1.colon);\n      } else {\n        if (!cur) { this.unexpected(); }\n        cur.consequent.push(this.parseStatement(null));\n      }\n    }\n    this.exitScope();\n    if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n    this.next(); // Closing brace\n    this.labels.pop();\n    return this.finishNode(node, \"SwitchStatement\")\n  };\n\n  pp$8.parseThrowStatement = function(node) {\n    this.next();\n    if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n      { this.raise(this.lastTokEnd, \"Illegal newline after throw\"); }\n    node.argument = this.parseExpression();\n    this.semicolon();\n    return this.finishNode(node, \"ThrowStatement\")\n  };\n\n  // Reused empty array added for node fields that are always empty.\n\n  var empty$1 = [];\n\n  pp$8.parseCatchClauseParam = function() {\n    var param = this.parseBindingAtom();\n    var simple = param.type === \"Identifier\";\n    this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0);\n    this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL);\n    this.expect(types$1.parenR);\n\n    return param\n  };\n\n  pp$8.parseTryStatement = function(node) {\n    this.next();\n    node.block = this.parseBlock();\n    node.handler = null;\n    if (this.type === types$1._catch) {\n      var clause = this.startNode();\n      this.next();\n      if (this.eat(types$1.parenL)) {\n        clause.param = this.parseCatchClauseParam();\n      } else {\n        if (this.options.ecmaVersion < 10) { this.unexpected(); }\n        clause.param = null;\n        this.enterScope(0);\n      }\n      clause.body = this.parseBlock(false);\n      this.exitScope();\n      node.handler = this.finishNode(clause, \"CatchClause\");\n    }\n    node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null;\n    if (!node.handler && !node.finalizer)\n      { this.raise(node.start, \"Missing catch or finally clause\"); }\n    return this.finishNode(node, \"TryStatement\")\n  };\n\n  pp$8.parseVarStatement = function(node, kind, allowMissingInitializer) {\n    this.next();\n    this.parseVar(node, false, kind, allowMissingInitializer);\n    this.semicolon();\n    return this.finishNode(node, \"VariableDeclaration\")\n  };\n\n  pp$8.parseWhileStatement = function(node) {\n    this.next();\n    node.test = this.parseParenExpression();\n    this.labels.push(loopLabel);\n    node.body = this.parseStatement(\"while\");\n    this.labels.pop();\n    return this.finishNode(node, \"WhileStatement\")\n  };\n\n  pp$8.parseWithStatement = function(node) {\n    if (this.strict) { this.raise(this.start, \"'with' in strict mode\"); }\n    this.next();\n    node.object = this.parseParenExpression();\n    node.body = this.parseStatement(\"with\");\n    return this.finishNode(node, \"WithStatement\")\n  };\n\n  pp$8.parseEmptyStatement = function(node) {\n    this.next();\n    return this.finishNode(node, \"EmptyStatement\")\n  };\n\n  pp$8.parseLabeledStatement = function(node, maybeName, expr, context) {\n    for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1)\n      {\n      var label = list[i$1];\n\n      if (label.name === maybeName)\n        { this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n    } }\n    var kind = this.type.isLoop ? \"loop\" : this.type === types$1._switch ? \"switch\" : null;\n    for (var i = this.labels.length - 1; i >= 0; i--) {\n      var label$1 = this.labels[i];\n      if (label$1.statementStart === node.start) {\n        // Update information about previous labels on this node\n        label$1.statementStart = this.start;\n        label$1.kind = kind;\n      } else { break }\n    }\n    this.labels.push({name: maybeName, kind: kind, statementStart: this.start});\n    node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\");\n    this.labels.pop();\n    node.label = expr;\n    return this.finishNode(node, \"LabeledStatement\")\n  };\n\n  pp$8.parseExpressionStatement = function(node, expr) {\n    node.expression = expr;\n    this.semicolon();\n    return this.finishNode(node, \"ExpressionStatement\")\n  };\n\n  // Parse a semicolon-enclosed block of statements, handling `\"use\n  // strict\"` declarations when `allowStrict` is true (used for\n  // function bodies).\n\n  pp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) {\n    if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;\n    if ( node === void 0 ) node = this.startNode();\n\n    node.body = [];\n    this.expect(types$1.braceL);\n    if (createNewLexicalScope) { this.enterScope(0); }\n    while (this.type !== types$1.braceR) {\n      var stmt = this.parseStatement(null);\n      node.body.push(stmt);\n    }\n    if (exitStrict) { this.strict = false; }\n    this.next();\n    if (createNewLexicalScope) { this.exitScope(); }\n    return this.finishNode(node, \"BlockStatement\")\n  };\n\n  // Parse a regular `for` loop. The disambiguation code in\n  // `parseStatement` will already have parsed the init statement or\n  // expression.\n\n  pp$8.parseFor = function(node, init) {\n    node.init = init;\n    this.expect(types$1.semi);\n    node.test = this.type === types$1.semi ? null : this.parseExpression();\n    this.expect(types$1.semi);\n    node.update = this.type === types$1.parenR ? null : this.parseExpression();\n    this.expect(types$1.parenR);\n    node.body = this.parseStatement(\"for\");\n    this.exitScope();\n    this.labels.pop();\n    return this.finishNode(node, \"ForStatement\")\n  };\n\n  // Parse a `for`/`in` and `for`/`of` loop, which are almost\n  // same from parser's perspective.\n\n  pp$8.parseForIn = function(node, init) {\n    var isForIn = this.type === types$1._in;\n    this.next();\n\n    if (\n      init.type === \"VariableDeclaration\" &&\n      init.declarations[0].init != null &&\n      (\n        !isForIn ||\n        this.options.ecmaVersion < 8 ||\n        this.strict ||\n        init.kind !== \"var\" ||\n        init.declarations[0].id.type !== \"Identifier\"\n      )\n    ) {\n      this.raise(\n        init.start,\n        ((isForIn ? \"for-in\" : \"for-of\") + \" loop variable declaration may not have an initializer\")\n      );\n    }\n    node.left = init;\n    node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();\n    this.expect(types$1.parenR);\n    node.body = this.parseStatement(\"for\");\n    this.exitScope();\n    this.labels.pop();\n    return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\")\n  };\n\n  // Parse a list of variable declarations.\n\n  pp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) {\n    node.declarations = [];\n    node.kind = kind;\n    for (;;) {\n      var decl = this.startNode();\n      this.parseVarId(decl, kind);\n      if (this.eat(types$1.eq)) {\n        decl.init = this.parseMaybeAssign(isFor);\n      } else if (!allowMissingInitializer && kind === \"const\" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n        this.unexpected();\n      } else if (!allowMissingInitializer && (kind === \"using\" || kind === \"await using\") && this.options.ecmaVersion >= 17 && this.type !== types$1._in && !this.isContextual(\"of\")) {\n        this.raise(this.lastTokEnd, (\"Missing initializer in \" + kind + \" declaration\"));\n      } else if (!allowMissingInitializer && decl.id.type !== \"Identifier\" && !(isFor && (this.type === types$1._in || this.isContextual(\"of\")))) {\n        this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\");\n      } else {\n        decl.init = null;\n      }\n      node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n      if (!this.eat(types$1.comma)) { break }\n    }\n    return node\n  };\n\n  pp$8.parseVarId = function(decl, kind) {\n    decl.id = kind === \"using\" || kind === \"await using\"\n      ? this.parseIdent()\n      : this.parseBindingAtom();\n\n    this.checkLValPattern(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false);\n  };\n\n  var FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4;\n\n  // Parse a function declaration or literal (depending on the\n  // `statement & FUNC_STATEMENT`).\n\n  // Remove `allowExpressionBody` for 7.0.0, as it is only called with false\n  pp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) {\n    this.initFunction(node);\n    if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n      if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT))\n        { this.unexpected(); }\n      node.generator = this.eat(types$1.star);\n    }\n    if (this.options.ecmaVersion >= 8)\n      { node.async = !!isAsync; }\n\n    if (statement & FUNC_STATEMENT) {\n      node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent();\n      if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n        // If it is a regular function declaration in sloppy mode, then it is\n        // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n        // mode depends on properties of the current scope (see\n        // treatFunctionsAsVar).\n        { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); }\n    }\n\n    var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n    this.yieldPos = 0;\n    this.awaitPos = 0;\n    this.awaitIdentPos = 0;\n    this.enterScope(functionFlags(node.async, node.generator));\n\n    if (!(statement & FUNC_STATEMENT))\n      { node.id = this.type === types$1.name ? this.parseIdent() : null; }\n\n    this.parseFunctionParams(node);\n    this.parseFunctionBody(node, allowExpressionBody, false, forInit);\n\n    this.yieldPos = oldYieldPos;\n    this.awaitPos = oldAwaitPos;\n    this.awaitIdentPos = oldAwaitIdentPos;\n    return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n  };\n\n  pp$8.parseFunctionParams = function(node) {\n    this.expect(types$1.parenL);\n    node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n    this.checkYieldAwaitInDefaultParams();\n  };\n\n  // Parse a class declaration or literal (depending on the\n  // `isStatement` parameter).\n\n  pp$8.parseClass = function(node, isStatement) {\n    this.next();\n\n    // ecma-262 14.6 Class Definitions\n    // A class definition is always strict mode code.\n    var oldStrict = this.strict;\n    this.strict = true;\n\n    this.parseClassId(node, isStatement);\n    this.parseClassSuper(node);\n    var privateNameMap = this.enterClassBody();\n    var classBody = this.startNode();\n    var hadConstructor = false;\n    classBody.body = [];\n    this.expect(types$1.braceL);\n    while (this.type !== types$1.braceR) {\n      var element = this.parseClassElement(node.superClass !== null);\n      if (element) {\n        classBody.body.push(element);\n        if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n          if (hadConstructor) { this.raiseRecoverable(element.start, \"Duplicate constructor in the same class\"); }\n          hadConstructor = true;\n        } else if (element.key && element.key.type === \"PrivateIdentifier\" && isPrivateNameConflicted(privateNameMap, element)) {\n          this.raiseRecoverable(element.key.start, (\"Identifier '#\" + (element.key.name) + \"' has already been declared\"));\n        }\n      }\n    }\n    this.strict = oldStrict;\n    this.next();\n    node.body = this.finishNode(classBody, \"ClassBody\");\n    this.exitClassBody();\n    return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n  };\n\n  pp$8.parseClassElement = function(constructorAllowsSuper) {\n    if (this.eat(types$1.semi)) { return null }\n\n    var ecmaVersion = this.options.ecmaVersion;\n    var node = this.startNode();\n    var keyName = \"\";\n    var isGenerator = false;\n    var isAsync = false;\n    var kind = \"method\";\n    var isStatic = false;\n\n    if (this.eatContextual(\"static\")) {\n      // Parse static init block\n      if (ecmaVersion >= 13 && this.eat(types$1.braceL)) {\n        this.parseClassStaticBlock(node);\n        return node\n      }\n      if (this.isClassElementNameStart() || this.type === types$1.star) {\n        isStatic = true;\n      } else {\n        keyName = \"static\";\n      }\n    }\n    node.static = isStatic;\n    if (!keyName && ecmaVersion >= 8 && this.eatContextual(\"async\")) {\n      if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) {\n        isAsync = true;\n      } else {\n        keyName = \"async\";\n      }\n    }\n    if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) {\n      isGenerator = true;\n    }\n    if (!keyName && !isAsync && !isGenerator) {\n      var lastValue = this.value;\n      if (this.eatContextual(\"get\") || this.eatContextual(\"set\")) {\n        if (this.isClassElementNameStart()) {\n          kind = lastValue;\n        } else {\n          keyName = lastValue;\n        }\n      }\n    }\n\n    // Parse element name\n    if (keyName) {\n      // 'async', 'get', 'set', or 'static' were not a keyword contextually.\n      // The last token is any of those. Make it the element name.\n      node.computed = false;\n      node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc);\n      node.key.name = keyName;\n      this.finishNode(node.key, \"Identifier\");\n    } else {\n      this.parseClassElementName(node);\n    }\n\n    // Parse element value\n    if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== \"method\" || isGenerator || isAsync) {\n      var isConstructor = !node.static && checkKeyName(node, \"constructor\");\n      var allowsDirectSuper = isConstructor && constructorAllowsSuper;\n      // Couldn't move this check into the 'parseClassMethod' method for backward compatibility.\n      if (isConstructor && kind !== \"method\") { this.raise(node.key.start, \"Constructor can't have get/set modifier\"); }\n      node.kind = isConstructor ? \"constructor\" : kind;\n      this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper);\n    } else {\n      this.parseClassField(node);\n    }\n\n    return node\n  };\n\n  pp$8.isClassElementNameStart = function() {\n    return (\n      this.type === types$1.name ||\n      this.type === types$1.privateId ||\n      this.type === types$1.num ||\n      this.type === types$1.string ||\n      this.type === types$1.bracketL ||\n      this.type.keyword\n    )\n  };\n\n  pp$8.parseClassElementName = function(element) {\n    if (this.type === types$1.privateId) {\n      if (this.value === \"constructor\") {\n        this.raise(this.start, \"Classes can't have an element named '#constructor'\");\n      }\n      element.computed = false;\n      element.key = this.parsePrivateIdent();\n    } else {\n      this.parsePropertyName(element);\n    }\n  };\n\n  pp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n    // Check key and flags\n    var key = method.key;\n    if (method.kind === \"constructor\") {\n      if (isGenerator) { this.raise(key.start, \"Constructor can't be a generator\"); }\n      if (isAsync) { this.raise(key.start, \"Constructor can't be an async method\"); }\n    } else if (method.static && checkKeyName(method, \"prototype\")) {\n      this.raise(key.start, \"Classes may not have a static property named prototype\");\n    }\n\n    // Parse value\n    var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper);\n\n    // Check value\n    if (method.kind === \"get\" && value.params.length !== 0)\n      { this.raiseRecoverable(value.start, \"getter should have no params\"); }\n    if (method.kind === \"set\" && value.params.length !== 1)\n      { this.raiseRecoverable(value.start, \"setter should have exactly one param\"); }\n    if (method.kind === \"set\" && value.params[0].type === \"RestElement\")\n      { this.raiseRecoverable(value.params[0].start, \"Setter cannot use rest params\"); }\n\n    return this.finishNode(method, \"MethodDefinition\")\n  };\n\n  pp$8.parseClassField = function(field) {\n    if (checkKeyName(field, \"constructor\")) {\n      this.raise(field.key.start, \"Classes can't have a field named 'constructor'\");\n    } else if (field.static && checkKeyName(field, \"prototype\")) {\n      this.raise(field.key.start, \"Classes can't have a static field named 'prototype'\");\n    }\n\n    if (this.eat(types$1.eq)) {\n      // To raise SyntaxError if 'arguments' exists in the initializer.\n      this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER);\n      field.value = this.parseMaybeAssign();\n      this.exitScope();\n    } else {\n      field.value = null;\n    }\n    this.semicolon();\n\n    return this.finishNode(field, \"PropertyDefinition\")\n  };\n\n  pp$8.parseClassStaticBlock = function(node) {\n    node.body = [];\n\n    var oldLabels = this.labels;\n    this.labels = [];\n    this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER);\n    while (this.type !== types$1.braceR) {\n      var stmt = this.parseStatement(null);\n      node.body.push(stmt);\n    }\n    this.next();\n    this.exitScope();\n    this.labels = oldLabels;\n\n    return this.finishNode(node, \"StaticBlock\")\n  };\n\n  pp$8.parseClassId = function(node, isStatement) {\n    if (this.type === types$1.name) {\n      node.id = this.parseIdent();\n      if (isStatement)\n        { this.checkLValSimple(node.id, BIND_LEXICAL, false); }\n    } else {\n      if (isStatement === true)\n        { this.unexpected(); }\n      node.id = null;\n    }\n  };\n\n  pp$8.parseClassSuper = function(node) {\n    node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null;\n  };\n\n  pp$8.enterClassBody = function() {\n    var element = {declared: Object.create(null), used: []};\n    this.privateNameStack.push(element);\n    return element.declared\n  };\n\n  pp$8.exitClassBody = function() {\n    var ref = this.privateNameStack.pop();\n    var declared = ref.declared;\n    var used = ref.used;\n    if (!this.options.checkPrivateFields) { return }\n    var len = this.privateNameStack.length;\n    var parent = len === 0 ? null : this.privateNameStack[len - 1];\n    for (var i = 0; i < used.length; ++i) {\n      var id = used[i];\n      if (!hasOwn(declared, id.name)) {\n        if (parent) {\n          parent.used.push(id);\n        } else {\n          this.raiseRecoverable(id.start, (\"Private field '#\" + (id.name) + \"' must be declared in an enclosing class\"));\n        }\n      }\n    }\n  };\n\n  function isPrivateNameConflicted(privateNameMap, element) {\n    var name = element.key.name;\n    var curr = privateNameMap[name];\n\n    var next = \"true\";\n    if (element.type === \"MethodDefinition\" && (element.kind === \"get\" || element.kind === \"set\")) {\n      next = (element.static ? \"s\" : \"i\") + element.kind;\n    }\n\n    // `class { get #a(){}; static set #a(_){} }` is also conflict.\n    if (\n      curr === \"iget\" && next === \"iset\" ||\n      curr === \"iset\" && next === \"iget\" ||\n      curr === \"sget\" && next === \"sset\" ||\n      curr === \"sset\" && next === \"sget\"\n    ) {\n      privateNameMap[name] = \"true\";\n      return false\n    } else if (!curr) {\n      privateNameMap[name] = next;\n      return false\n    } else {\n      return true\n    }\n  }\n\n  function checkKeyName(node, name) {\n    var computed = node.computed;\n    var key = node.key;\n    return !computed && (\n      key.type === \"Identifier\" && key.name === name ||\n      key.type === \"Literal\" && key.value === name\n    )\n  }\n\n  // Parses module export declaration.\n\n  pp$8.parseExportAllDeclaration = function(node, exports) {\n    if (this.options.ecmaVersion >= 11) {\n      if (this.eatContextual(\"as\")) {\n        node.exported = this.parseModuleExportName();\n        this.checkExport(exports, node.exported, this.lastTokStart);\n      } else {\n        node.exported = null;\n      }\n    }\n    this.expectContextual(\"from\");\n    if (this.type !== types$1.string) { this.unexpected(); }\n    node.source = this.parseExprAtom();\n    if (this.options.ecmaVersion >= 16)\n      { node.attributes = this.parseWithClause(); }\n    this.semicolon();\n    return this.finishNode(node, \"ExportAllDeclaration\")\n  };\n\n  pp$8.parseExport = function(node, exports) {\n    this.next();\n    // export * from '...'\n    if (this.eat(types$1.star)) {\n      return this.parseExportAllDeclaration(node, exports)\n    }\n    if (this.eat(types$1._default)) { // export default ...\n      this.checkExport(exports, \"default\", this.lastTokStart);\n      node.declaration = this.parseExportDefaultDeclaration();\n      return this.finishNode(node, \"ExportDefaultDeclaration\")\n    }\n    // export var|const|let|function|class ...\n    if (this.shouldParseExportStatement()) {\n      node.declaration = this.parseExportDeclaration(node);\n      if (node.declaration.type === \"VariableDeclaration\")\n        { this.checkVariableExport(exports, node.declaration.declarations); }\n      else\n        { this.checkExport(exports, node.declaration.id, node.declaration.id.start); }\n      node.specifiers = [];\n      node.source = null;\n      if (this.options.ecmaVersion >= 16)\n        { node.attributes = []; }\n    } else { // export { x, y as z } [from '...']\n      node.declaration = null;\n      node.specifiers = this.parseExportSpecifiers(exports);\n      if (this.eatContextual(\"from\")) {\n        if (this.type !== types$1.string) { this.unexpected(); }\n        node.source = this.parseExprAtom();\n        if (this.options.ecmaVersion >= 16)\n          { node.attributes = this.parseWithClause(); }\n      } else {\n        for (var i = 0, list = node.specifiers; i < list.length; i += 1) {\n          // check for keywords used as local names\n          var spec = list[i];\n\n          this.checkUnreserved(spec.local);\n          // check if export is defined\n          this.checkLocalExport(spec.local);\n\n          if (spec.local.type === \"Literal\") {\n            this.raise(spec.local.start, \"A string literal cannot be used as an exported binding without `from`.\");\n          }\n        }\n\n        node.source = null;\n        if (this.options.ecmaVersion >= 16)\n          { node.attributes = []; }\n      }\n      this.semicolon();\n    }\n    return this.finishNode(node, \"ExportNamedDeclaration\")\n  };\n\n  pp$8.parseExportDeclaration = function(node) {\n    return this.parseStatement(null)\n  };\n\n  pp$8.parseExportDefaultDeclaration = function() {\n    var isAsync;\n    if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) {\n      var fNode = this.startNode();\n      this.next();\n      if (isAsync) { this.next(); }\n      return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync)\n    } else if (this.type === types$1._class) {\n      var cNode = this.startNode();\n      return this.parseClass(cNode, \"nullableID\")\n    } else {\n      var declaration = this.parseMaybeAssign();\n      this.semicolon();\n      return declaration\n    }\n  };\n\n  pp$8.checkExport = function(exports, name, pos) {\n    if (!exports) { return }\n    if (typeof name !== \"string\")\n      { name = name.type === \"Identifier\" ? name.name : name.value; }\n    if (hasOwn(exports, name))\n      { this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\"); }\n    exports[name] = true;\n  };\n\n  pp$8.checkPatternExport = function(exports, pat) {\n    var type = pat.type;\n    if (type === \"Identifier\")\n      { this.checkExport(exports, pat, pat.start); }\n    else if (type === \"ObjectPattern\")\n      { for (var i = 0, list = pat.properties; i < list.length; i += 1)\n        {\n          var prop = list[i];\n\n          this.checkPatternExport(exports, prop);\n        } }\n    else if (type === \"ArrayPattern\")\n      { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {\n        var elt = list$1[i$1];\n\n          if (elt) { this.checkPatternExport(exports, elt); }\n      } }\n    else if (type === \"Property\")\n      { this.checkPatternExport(exports, pat.value); }\n    else if (type === \"AssignmentPattern\")\n      { this.checkPatternExport(exports, pat.left); }\n    else if (type === \"RestElement\")\n      { this.checkPatternExport(exports, pat.argument); }\n  };\n\n  pp$8.checkVariableExport = function(exports, decls) {\n    if (!exports) { return }\n    for (var i = 0, list = decls; i < list.length; i += 1)\n      {\n      var decl = list[i];\n\n      this.checkPatternExport(exports, decl.id);\n    }\n  };\n\n  pp$8.shouldParseExportStatement = function() {\n    return this.type.keyword === \"var\" ||\n      this.type.keyword === \"const\" ||\n      this.type.keyword === \"class\" ||\n      this.type.keyword === \"function\" ||\n      this.isLet() ||\n      this.isAsyncFunction()\n  };\n\n  // Parses a comma-separated list of module exports.\n\n  pp$8.parseExportSpecifier = function(exports) {\n    var node = this.startNode();\n    node.local = this.parseModuleExportName();\n\n    node.exported = this.eatContextual(\"as\") ? this.parseModuleExportName() : node.local;\n    this.checkExport(\n      exports,\n      node.exported,\n      node.exported.start\n    );\n\n    return this.finishNode(node, \"ExportSpecifier\")\n  };\n\n  pp$8.parseExportSpecifiers = function(exports) {\n    var nodes = [], first = true;\n    // export { x, y as z } [from '...']\n    this.expect(types$1.braceL);\n    while (!this.eat(types$1.braceR)) {\n      if (!first) {\n        this.expect(types$1.comma);\n        if (this.afterTrailingComma(types$1.braceR)) { break }\n      } else { first = false; }\n\n      nodes.push(this.parseExportSpecifier(exports));\n    }\n    return nodes\n  };\n\n  // Parses import declaration.\n\n  pp$8.parseImport = function(node) {\n    this.next();\n\n    // import '...'\n    if (this.type === types$1.string) {\n      node.specifiers = empty$1;\n      node.source = this.parseExprAtom();\n    } else {\n      node.specifiers = this.parseImportSpecifiers();\n      this.expectContextual(\"from\");\n      node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected();\n    }\n    if (this.options.ecmaVersion >= 16)\n      { node.attributes = this.parseWithClause(); }\n    this.semicolon();\n    return this.finishNode(node, \"ImportDeclaration\")\n  };\n\n  // Parses a comma-separated list of module imports.\n\n  pp$8.parseImportSpecifier = function() {\n    var node = this.startNode();\n    node.imported = this.parseModuleExportName();\n\n    if (this.eatContextual(\"as\")) {\n      node.local = this.parseIdent();\n    } else {\n      this.checkUnreserved(node.imported);\n      node.local = node.imported;\n    }\n    this.checkLValSimple(node.local, BIND_LEXICAL);\n\n    return this.finishNode(node, \"ImportSpecifier\")\n  };\n\n  pp$8.parseImportDefaultSpecifier = function() {\n    // import defaultObj, { x, y as z } from '...'\n    var node = this.startNode();\n    node.local = this.parseIdent();\n    this.checkLValSimple(node.local, BIND_LEXICAL);\n    return this.finishNode(node, \"ImportDefaultSpecifier\")\n  };\n\n  pp$8.parseImportNamespaceSpecifier = function() {\n    var node = this.startNode();\n    this.next();\n    this.expectContextual(\"as\");\n    node.local = this.parseIdent();\n    this.checkLValSimple(node.local, BIND_LEXICAL);\n    return this.finishNode(node, \"ImportNamespaceSpecifier\")\n  };\n\n  pp$8.parseImportSpecifiers = function() {\n    var nodes = [], first = true;\n    if (this.type === types$1.name) {\n      nodes.push(this.parseImportDefaultSpecifier());\n      if (!this.eat(types$1.comma)) { return nodes }\n    }\n    if (this.type === types$1.star) {\n      nodes.push(this.parseImportNamespaceSpecifier());\n      return nodes\n    }\n    this.expect(types$1.braceL);\n    while (!this.eat(types$1.braceR)) {\n      if (!first) {\n        this.expect(types$1.comma);\n        if (this.afterTrailingComma(types$1.braceR)) { break }\n      } else { first = false; }\n\n      nodes.push(this.parseImportSpecifier());\n    }\n    return nodes\n  };\n\n  pp$8.parseWithClause = function() {\n    var nodes = [];\n    if (!this.eat(types$1._with)) {\n      return nodes\n    }\n    this.expect(types$1.braceL);\n    var attributeKeys = {};\n    var first = true;\n    while (!this.eat(types$1.braceR)) {\n      if (!first) {\n        this.expect(types$1.comma);\n        if (this.afterTrailingComma(types$1.braceR)) { break }\n      } else { first = false; }\n\n      var attr = this.parseImportAttribute();\n      var keyName = attr.key.type === \"Identifier\" ? attr.key.name : attr.key.value;\n      if (hasOwn(attributeKeys, keyName))\n        { this.raiseRecoverable(attr.key.start, \"Duplicate attribute key '\" + keyName + \"'\"); }\n      attributeKeys[keyName] = true;\n      nodes.push(attr);\n    }\n    return nodes\n  };\n\n  pp$8.parseImportAttribute = function() {\n    var node = this.startNode();\n    node.key = this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\");\n    this.expect(types$1.colon);\n    if (this.type !== types$1.string) {\n      this.unexpected();\n    }\n    node.value = this.parseExprAtom();\n    return this.finishNode(node, \"ImportAttribute\")\n  };\n\n  pp$8.parseModuleExportName = function() {\n    if (this.options.ecmaVersion >= 13 && this.type === types$1.string) {\n      var stringLiteral = this.parseLiteral(this.value);\n      if (loneSurrogate.test(stringLiteral.value)) {\n        this.raise(stringLiteral.start, \"An export name cannot include a lone surrogate.\");\n      }\n      return stringLiteral\n    }\n    return this.parseIdent(true)\n  };\n\n  // Set `ExpressionStatement#directive` property for directive prologues.\n  pp$8.adaptDirectivePrologue = function(statements) {\n    for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n      statements[i].directive = statements[i].expression.raw.slice(1, -1);\n    }\n  };\n  pp$8.isDirectiveCandidate = function(statement) {\n    return (\n      this.options.ecmaVersion >= 5 &&\n      statement.type === \"ExpressionStatement\" &&\n      statement.expression.type === \"Literal\" &&\n      typeof statement.expression.value === \"string\" &&\n      // Reject parenthesized strings.\n      (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n    )\n  };\n\n  var pp$7 = Parser.prototype;\n\n  // Convert existing expression atom to assignable pattern\n  // if possible.\n\n  pp$7.toAssignable = function(node, isBinding, refDestructuringErrors) {\n    if (this.options.ecmaVersion >= 6 && node) {\n      switch (node.type) {\n      case \"Identifier\":\n        if (this.inAsync && node.name === \"await\")\n          { this.raise(node.start, \"Cannot use 'await' as identifier inside an async function\"); }\n        break\n\n      case \"ObjectPattern\":\n      case \"ArrayPattern\":\n      case \"AssignmentPattern\":\n      case \"RestElement\":\n        break\n\n      case \"ObjectExpression\":\n        node.type = \"ObjectPattern\";\n        if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n        for (var i = 0, list = node.properties; i < list.length; i += 1) {\n          var prop = list[i];\n\n        this.toAssignable(prop, isBinding);\n          // Early error:\n          //   AssignmentRestProperty[Yield, Await] :\n          //     `...` DestructuringAssignmentTarget[Yield, Await]\n          //\n          //   It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n          if (\n            prop.type === \"RestElement\" &&\n            (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n          ) {\n            this.raise(prop.argument.start, \"Unexpected token\");\n          }\n        }\n        break\n\n      case \"Property\":\n        // AssignmentProperty has type === \"Property\"\n        if (node.kind !== \"init\") { this.raise(node.key.start, \"Object pattern can't contain getter or setter\"); }\n        this.toAssignable(node.value, isBinding);\n        break\n\n      case \"ArrayExpression\":\n        node.type = \"ArrayPattern\";\n        if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n        this.toAssignableList(node.elements, isBinding);\n        break\n\n      case \"SpreadElement\":\n        node.type = \"RestElement\";\n        this.toAssignable(node.argument, isBinding);\n        if (node.argument.type === \"AssignmentPattern\")\n          { this.raise(node.argument.start, \"Rest elements cannot have a default value\"); }\n        break\n\n      case \"AssignmentExpression\":\n        if (node.operator !== \"=\") { this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\"); }\n        node.type = \"AssignmentPattern\";\n        delete node.operator;\n        this.toAssignable(node.left, isBinding);\n        break\n\n      case \"ParenthesizedExpression\":\n        this.toAssignable(node.expression, isBinding, refDestructuringErrors);\n        break\n\n      case \"ChainExpression\":\n        this.raiseRecoverable(node.start, \"Optional chaining cannot appear in left-hand side\");\n        break\n\n      case \"MemberExpression\":\n        if (!isBinding) { break }\n\n      default:\n        this.raise(node.start, \"Assigning to rvalue\");\n      }\n    } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n    return node\n  };\n\n  // Convert list of expression atoms to binding list.\n\n  pp$7.toAssignableList = function(exprList, isBinding) {\n    var end = exprList.length;\n    for (var i = 0; i < end; i++) {\n      var elt = exprList[i];\n      if (elt) { this.toAssignable(elt, isBinding); }\n    }\n    if (end) {\n      var last = exprList[end - 1];\n      if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n        { this.unexpected(last.argument.start); }\n    }\n    return exprList\n  };\n\n  // Parses spread element.\n\n  pp$7.parseSpread = function(refDestructuringErrors) {\n    var node = this.startNode();\n    this.next();\n    node.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n    return this.finishNode(node, \"SpreadElement\")\n  };\n\n  pp$7.parseRestBinding = function() {\n    var node = this.startNode();\n    this.next();\n\n    // RestElement inside of a function parameter must be an identifier\n    if (this.options.ecmaVersion === 6 && this.type !== types$1.name)\n      { this.unexpected(); }\n\n    node.argument = this.parseBindingAtom();\n\n    return this.finishNode(node, \"RestElement\")\n  };\n\n  // Parses lvalue (assignable) atom.\n\n  pp$7.parseBindingAtom = function() {\n    if (this.options.ecmaVersion >= 6) {\n      switch (this.type) {\n      case types$1.bracketL:\n        var node = this.startNode();\n        this.next();\n        node.elements = this.parseBindingList(types$1.bracketR, true, true);\n        return this.finishNode(node, \"ArrayPattern\")\n\n      case types$1.braceL:\n        return this.parseObj(true)\n      }\n    }\n    return this.parseIdent()\n  };\n\n  pp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) {\n    var elts = [], first = true;\n    while (!this.eat(close)) {\n      if (first) { first = false; }\n      else { this.expect(types$1.comma); }\n      if (allowEmpty && this.type === types$1.comma) {\n        elts.push(null);\n      } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n        break\n      } else if (this.type === types$1.ellipsis) {\n        var rest = this.parseRestBinding();\n        this.parseBindingListItem(rest);\n        elts.push(rest);\n        if (this.type === types$1.comma) { this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\"); }\n        this.expect(close);\n        break\n      } else {\n        elts.push(this.parseAssignableListItem(allowModifiers));\n      }\n    }\n    return elts\n  };\n\n  pp$7.parseAssignableListItem = function(allowModifiers) {\n    var elem = this.parseMaybeDefault(this.start, this.startLoc);\n    this.parseBindingListItem(elem);\n    return elem\n  };\n\n  pp$7.parseBindingListItem = function(param) {\n    return param\n  };\n\n  // Parses assignment pattern around given atom if possible.\n\n  pp$7.parseMaybeDefault = function(startPos, startLoc, left) {\n    left = left || this.parseBindingAtom();\n    if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left }\n    var node = this.startNodeAt(startPos, startLoc);\n    node.left = left;\n    node.right = this.parseMaybeAssign();\n    return this.finishNode(node, \"AssignmentPattern\")\n  };\n\n  // The following three functions all verify that a node is an lvalue \u2014\n  // something that can be bound, or assigned to. In order to do so, they perform\n  // a variety of checks:\n  //\n  // - Check that none of the bound/assigned-to identifiers are reserved words.\n  // - Record name declarations for bindings in the appropriate scope.\n  // - Check duplicate argument names, if checkClashes is set.\n  //\n  // If a complex binding pattern is encountered (e.g., object and array\n  // destructuring), the entire pattern is recursively checked.\n  //\n  // There are three versions of checkLVal*() appropriate for different\n  // circumstances:\n  //\n  // - checkLValSimple() shall be used if the syntactic construct supports\n  //   nothing other than identifiers and member expressions. Parenthesized\n  //   expressions are also correctly handled. This is generally appropriate for\n  //   constructs for which the spec says\n  //\n  //   > It is a Syntax Error if AssignmentTargetType of [the production] is not\n  //   > simple.\n  //\n  //   It is also appropriate for checking if an identifier is valid and not\n  //   defined elsewhere, like import declarations or function/class identifiers.\n  //\n  //   Examples where this is used include:\n  //     a += \u2026;\n  //     import a from '\u2026';\n  //   where a is the node to be checked.\n  //\n  // - checkLValPattern() shall be used if the syntactic construct supports\n  //   anything checkLValSimple() supports, as well as object and array\n  //   destructuring patterns. This is generally appropriate for constructs for\n  //   which the spec says\n  //\n  //   > It is a Syntax Error if [the production] is neither an ObjectLiteral nor\n  //   > an ArrayLiteral and AssignmentTargetType of [the production] is not\n  //   > simple.\n  //\n  //   Examples where this is used include:\n  //     (a = \u2026);\n  //     const a = \u2026;\n  //     try { \u2026 } catch (a) { \u2026 }\n  //   where a is the node to be checked.\n  //\n  // - checkLValInnerPattern() shall be used if the syntactic construct supports\n  //   anything checkLValPattern() supports, as well as default assignment\n  //   patterns, rest elements, and other constructs that may appear within an\n  //   object or array destructuring pattern.\n  //\n  //   As a special case, function parameters also use checkLValInnerPattern(),\n  //   as they also support defaults and rest constructs.\n  //\n  // These functions deliberately support both assignment and binding constructs,\n  // as the logic for both is exceedingly similar. If the node is the target of\n  // an assignment, then bindingType should be set to BIND_NONE. Otherwise, it\n  // should be set to the appropriate BIND_* constant, like BIND_VAR or\n  // BIND_LEXICAL.\n  //\n  // If the function is called with a non-BIND_NONE bindingType, then\n  // additionally a checkClashes object may be specified to allow checking for\n  // duplicate argument names. checkClashes is ignored if the provided construct\n  // is an assignment (i.e., bindingType is BIND_NONE).\n\n  pp$7.checkLValSimple = function(expr, bindingType, checkClashes) {\n    if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n    var isBind = bindingType !== BIND_NONE;\n\n    switch (expr.type) {\n    case \"Identifier\":\n      if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n        { this.raiseRecoverable(expr.start, (isBind ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\"); }\n      if (isBind) {\n        if (bindingType === BIND_LEXICAL && expr.name === \"let\")\n          { this.raiseRecoverable(expr.start, \"let is disallowed as a lexically bound name\"); }\n        if (checkClashes) {\n          if (hasOwn(checkClashes, expr.name))\n            { this.raiseRecoverable(expr.start, \"Argument name clash\"); }\n          checkClashes[expr.name] = true;\n        }\n        if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); }\n      }\n      break\n\n    case \"ChainExpression\":\n      this.raiseRecoverable(expr.start, \"Optional chaining cannot appear in left-hand side\");\n      break\n\n    case \"MemberExpression\":\n      if (isBind) { this.raiseRecoverable(expr.start, \"Binding member expression\"); }\n      break\n\n    case \"ParenthesizedExpression\":\n      if (isBind) { this.raiseRecoverable(expr.start, \"Binding parenthesized expression\"); }\n      return this.checkLValSimple(expr.expression, bindingType, checkClashes)\n\n    default:\n      this.raise(expr.start, (isBind ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n    }\n  };\n\n  pp$7.checkLValPattern = function(expr, bindingType, checkClashes) {\n    if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n    switch (expr.type) {\n    case \"ObjectPattern\":\n      for (var i = 0, list = expr.properties; i < list.length; i += 1) {\n        var prop = list[i];\n\n      this.checkLValInnerPattern(prop, bindingType, checkClashes);\n      }\n      break\n\n    case \"ArrayPattern\":\n      for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {\n        var elem = list$1[i$1];\n\n      if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); }\n      }\n      break\n\n    default:\n      this.checkLValSimple(expr, bindingType, checkClashes);\n    }\n  };\n\n  pp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) {\n    if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n    switch (expr.type) {\n    case \"Property\":\n      // AssignmentProperty has type === \"Property\"\n      this.checkLValInnerPattern(expr.value, bindingType, checkClashes);\n      break\n\n    case \"AssignmentPattern\":\n      this.checkLValPattern(expr.left, bindingType, checkClashes);\n      break\n\n    case \"RestElement\":\n      this.checkLValPattern(expr.argument, bindingType, checkClashes);\n      break\n\n    default:\n      this.checkLValPattern(expr, bindingType, checkClashes);\n    }\n  };\n\n  // The algorithm used to determine whether a regexp can appear at a\n  // given point in the program is loosely based on sweet.js' approach.\n  // See https://github.com/mozilla/sweet.js/wiki/design\n\n\n  var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {\n    this.token = token;\n    this.isExpr = !!isExpr;\n    this.preserveSpace = !!preserveSpace;\n    this.override = override;\n    this.generator = !!generator;\n  };\n\n  var types = {\n    b_stat: new TokContext(\"{\", false),\n    b_expr: new TokContext(\"{\", true),\n    b_tmpl: new TokContext(\"${\", false),\n    p_stat: new TokContext(\"(\", false),\n    p_expr: new TokContext(\"(\", true),\n    q_tmpl: new TokContext(\"`\", true, true, function (p) { return p.tryReadTemplateToken(); }),\n    f_stat: new TokContext(\"function\", false),\n    f_expr: new TokContext(\"function\", true),\n    f_expr_gen: new TokContext(\"function\", true, false, null, true),\n    f_gen: new TokContext(\"function\", false, false, null, true)\n  };\n\n  var pp$6 = Parser.prototype;\n\n  pp$6.initialContext = function() {\n    return [types.b_stat]\n  };\n\n  pp$6.curContext = function() {\n    return this.context[this.context.length - 1]\n  };\n\n  pp$6.braceIsBlock = function(prevType) {\n    var parent = this.curContext();\n    if (parent === types.f_expr || parent === types.f_stat)\n      { return true }\n    if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr))\n      { return !parent.isExpr }\n\n    // The check for `tt.name && exprAllowed` detects whether we are\n    // after a `yield` or `of` construct. See the `updateContext` for\n    // `tt.name`.\n    if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed)\n      { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) }\n    if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow)\n      { return true }\n    if (prevType === types$1.braceL)\n      { return parent === types.b_stat }\n    if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name)\n      { return false }\n    return !this.exprAllowed\n  };\n\n  pp$6.inGeneratorContext = function() {\n    for (var i = this.context.length - 1; i >= 1; i--) {\n      var context = this.context[i];\n      if (context.token === \"function\")\n        { return context.generator }\n    }\n    return false\n  };\n\n  pp$6.updateContext = function(prevType) {\n    var update, type = this.type;\n    if (type.keyword && prevType === types$1.dot)\n      { this.exprAllowed = false; }\n    else if (update = type.updateContext)\n      { update.call(this, prevType); }\n    else\n      { this.exprAllowed = type.beforeExpr; }\n  };\n\n  // Used to handle edge cases when token context could not be inferred correctly during tokenization phase\n\n  pp$6.overrideContext = function(tokenCtx) {\n    if (this.curContext() !== tokenCtx) {\n      this.context[this.context.length - 1] = tokenCtx;\n    }\n  };\n\n  // Token-specific context update code\n\n  types$1.parenR.updateContext = types$1.braceR.updateContext = function() {\n    if (this.context.length === 1) {\n      this.exprAllowed = true;\n      return\n    }\n    var out = this.context.pop();\n    if (out === types.b_stat && this.curContext().token === \"function\") {\n      out = this.context.pop();\n    }\n    this.exprAllowed = !out.isExpr;\n  };\n\n  types$1.braceL.updateContext = function(prevType) {\n    this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr);\n    this.exprAllowed = true;\n  };\n\n  types$1.dollarBraceL.updateContext = function() {\n    this.context.push(types.b_tmpl);\n    this.exprAllowed = true;\n  };\n\n  types$1.parenL.updateContext = function(prevType) {\n    var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while;\n    this.context.push(statementParens ? types.p_stat : types.p_expr);\n    this.exprAllowed = true;\n  };\n\n  types$1.incDec.updateContext = function() {\n    // tokExprAllowed stays unchanged\n  };\n\n  types$1._function.updateContext = types$1._class.updateContext = function(prevType) {\n    if (prevType.beforeExpr && prevType !== types$1._else &&\n        !(prevType === types$1.semi && this.curContext() !== types.p_stat) &&\n        !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n        !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat))\n      { this.context.push(types.f_expr); }\n    else\n      { this.context.push(types.f_stat); }\n    this.exprAllowed = false;\n  };\n\n  types$1.colon.updateContext = function() {\n    if (this.curContext().token === \"function\") { this.context.pop(); }\n    this.exprAllowed = true;\n  };\n\n  types$1.backQuote.updateContext = function() {\n    if (this.curContext() === types.q_tmpl)\n      { this.context.pop(); }\n    else\n      { this.context.push(types.q_tmpl); }\n    this.exprAllowed = false;\n  };\n\n  types$1.star.updateContext = function(prevType) {\n    if (prevType === types$1._function) {\n      var index = this.context.length - 1;\n      if (this.context[index] === types.f_expr)\n        { this.context[index] = types.f_expr_gen; }\n      else\n        { this.context[index] = types.f_gen; }\n    }\n    this.exprAllowed = true;\n  };\n\n  types$1.name.updateContext = function(prevType) {\n    var allowed = false;\n    if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) {\n      if (this.value === \"of\" && !this.exprAllowed ||\n          this.value === \"yield\" && this.inGeneratorContext())\n        { allowed = true; }\n    }\n    this.exprAllowed = allowed;\n  };\n\n  // A recursive descent parser operates by defining functions for all\n  // syntactic elements, and recursively calling those, each function\n  // advancing the input stream and returning an AST node. Precedence\n  // of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n  // instead of `(!x)[1]` is handled by the fact that the parser\n  // function that parses unary prefix operators is called first, and\n  // in turn calls the function that parses `[]` subscripts \u2014 that\n  // way, it'll receive the node for `x[1]` already parsed, and wraps\n  // *that* in the unary operator node.\n  //\n  // Acorn uses an [operator precedence parser][opp] to handle binary\n  // operator precedence, because it is much more compact than using\n  // the technique outlined above, which uses different, nesting\n  // functions to specify precedence, for all of the ten binary\n  // precedence levels that JavaScript defines.\n  //\n  // [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n\n  var pp$5 = Parser.prototype;\n\n  // Check if property name clashes with already added.\n  // Object/class getters and setters are not allowed to clash \u2014\n  // either with each other or with an init property \u2014 and in\n  // strict mode, init properties are also not allowed to be repeated.\n\n  pp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n    if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n      { return }\n    if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n      { return }\n    var key = prop.key;\n    var name;\n    switch (key.type) {\n    case \"Identifier\": name = key.name; break\n    case \"Literal\": name = String(key.value); break\n    default: return\n    }\n    var kind = prop.kind;\n    if (this.options.ecmaVersion >= 6) {\n      if (name === \"__proto__\" && kind === \"init\") {\n        if (propHash.proto) {\n          if (refDestructuringErrors) {\n            if (refDestructuringErrors.doubleProto < 0) {\n              refDestructuringErrors.doubleProto = key.start;\n            }\n          } else {\n            this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\");\n          }\n        }\n        propHash.proto = true;\n      }\n      return\n    }\n    name = \"$\" + name;\n    var other = propHash[name];\n    if (other) {\n      var redefinition;\n      if (kind === \"init\") {\n        redefinition = this.strict && other.init || other.get || other.set;\n      } else {\n        redefinition = other.init || other[kind];\n      }\n      if (redefinition)\n        { this.raiseRecoverable(key.start, \"Redefinition of property\"); }\n    } else {\n      other = propHash[name] = {\n        init: false,\n        get: false,\n        set: false\n      };\n    }\n    other[kind] = true;\n  };\n\n  // ### Expression parsing\n\n  // These nest, from the most general expression type at the top to\n  // 'atomic', nondivisible expression types at the bottom. Most of\n  // the functions will simply let the function(s) below them parse,\n  // and, *if* the syntactic construct they handle is present, wrap\n  // the AST node that the inner parser gave them in another node.\n\n  // Parse a full expression. The optional arguments are used to\n  // forbid the `in` operator (in for loops initalization expressions)\n  // and provide reference for storing '=' operator inside shorthand\n  // property assignment in contexts where both object expression\n  // and object pattern might appear (so it's possible to raise\n  // delayed syntax error at correct position).\n\n  pp$5.parseExpression = function(forInit, refDestructuringErrors) {\n    var startPos = this.start, startLoc = this.startLoc;\n    var expr = this.parseMaybeAssign(forInit, refDestructuringErrors);\n    if (this.type === types$1.comma) {\n      var node = this.startNodeAt(startPos, startLoc);\n      node.expressions = [expr];\n      while (this.eat(types$1.comma)) { node.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors)); }\n      return this.finishNode(node, \"SequenceExpression\")\n    }\n    return expr\n  };\n\n  // Parse an assignment expression. This includes applications of\n  // operators like `+=`.\n\n  pp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) {\n    if (this.isContextual(\"yield\")) {\n      if (this.inGenerator) { return this.parseYield(forInit) }\n      // The tokenizer will assume an expression is allowed after\n      // `yield`, but this isn't that kind of yield\n      else { this.exprAllowed = false; }\n    }\n\n    var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1;\n    if (refDestructuringErrors) {\n      oldParenAssign = refDestructuringErrors.parenthesizedAssign;\n      oldTrailingComma = refDestructuringErrors.trailingComma;\n      oldDoubleProto = refDestructuringErrors.doubleProto;\n      refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1;\n    } else {\n      refDestructuringErrors = new DestructuringErrors;\n      ownDestructuringErrors = true;\n    }\n\n    var startPos = this.start, startLoc = this.startLoc;\n    if (this.type === types$1.parenL || this.type === types$1.name) {\n      this.potentialArrowAt = this.start;\n      this.potentialArrowInForAwait = forInit === \"await\";\n    }\n    var left = this.parseMaybeConditional(forInit, refDestructuringErrors);\n    if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); }\n    if (this.type.isAssign) {\n      var node = this.startNodeAt(startPos, startLoc);\n      node.operator = this.value;\n      if (this.type === types$1.eq)\n        { left = this.toAssignable(left, false, refDestructuringErrors); }\n      if (!ownDestructuringErrors) {\n        refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1;\n      }\n      if (refDestructuringErrors.shorthandAssign >= left.start)\n        { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly\n      if (this.type === types$1.eq)\n        { this.checkLValPattern(left); }\n      else\n        { this.checkLValSimple(left); }\n      node.left = left;\n      this.next();\n      node.right = this.parseMaybeAssign(forInit);\n      if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; }\n      return this.finishNode(node, \"AssignmentExpression\")\n    } else {\n      if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); }\n    }\n    if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; }\n    if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; }\n    return left\n  };\n\n  // Parse a ternary conditional (`?:`) operator.\n\n  pp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) {\n    var startPos = this.start, startLoc = this.startLoc;\n    var expr = this.parseExprOps(forInit, refDestructuringErrors);\n    if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n    if (this.eat(types$1.question)) {\n      var node = this.startNodeAt(startPos, startLoc);\n      node.test = expr;\n      node.consequent = this.parseMaybeAssign();\n      this.expect(types$1.colon);\n      node.alternate = this.parseMaybeAssign(forInit);\n      return this.finishNode(node, \"ConditionalExpression\")\n    }\n    return expr\n  };\n\n  // Start the precedence parser.\n\n  pp$5.parseExprOps = function(forInit, refDestructuringErrors) {\n    var startPos = this.start, startLoc = this.startLoc;\n    var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit);\n    if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n    return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit)\n  };\n\n  // Parse binary operators with the operator precedence parsing\n  // algorithm. `left` is the left-hand side of the operator.\n  // `minPrec` provides context that allows the function to stop and\n  // defer further parser to one of its callers when it encounters an\n  // operator that has a lower precedence than the set it is parsing.\n\n  pp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) {\n    var prec = this.type.binop;\n    if (prec != null && (!forInit || this.type !== types$1._in)) {\n      if (prec > minPrec) {\n        var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND;\n        var coalesce = this.type === types$1.coalesce;\n        if (coalesce) {\n          // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n          // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n          prec = types$1.logicalAND.binop;\n        }\n        var op = this.value;\n        this.next();\n        var startPos = this.start, startLoc = this.startLoc;\n        var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit);\n        var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce);\n        if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) {\n          this.raiseRecoverable(this.start, \"Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses\");\n        }\n        return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit)\n      }\n    }\n    return left\n  };\n\n  pp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n    if (right.type === \"PrivateIdentifier\") { this.raise(right.start, \"Private identifier can only be left side of binary expression\"); }\n    var node = this.startNodeAt(startPos, startLoc);\n    node.left = left;\n    node.operator = op;\n    node.right = right;\n    return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n  };\n\n  // Parse unary operators, both prefix and postfix.\n\n  pp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) {\n    var startPos = this.start, startLoc = this.startLoc, expr;\n    if (this.isContextual(\"await\") && this.canAwait) {\n      expr = this.parseAwait(forInit);\n      sawUnary = true;\n    } else if (this.type.prefix) {\n      var node = this.startNode(), update = this.type === types$1.incDec;\n      node.operator = this.value;\n      node.prefix = true;\n      this.next();\n      node.argument = this.parseMaybeUnary(null, true, update, forInit);\n      this.checkExpressionErrors(refDestructuringErrors, true);\n      if (update) { this.checkLValSimple(node.argument); }\n      else if (this.strict && node.operator === \"delete\" && isLocalVariableAccess(node.argument))\n        { this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\"); }\n      else if (node.operator === \"delete\" && isPrivateFieldAccess(node.argument))\n        { this.raiseRecoverable(node.start, \"Private fields can not be deleted\"); }\n      else { sawUnary = true; }\n      expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n    } else if (!sawUnary && this.type === types$1.privateId) {\n      if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); }\n      expr = this.parsePrivateIdent();\n      // only could be private fields in 'in', such as #x in obj\n      if (this.type !== types$1._in) { this.unexpected(); }\n    } else {\n      expr = this.parseExprSubscripts(refDestructuringErrors, forInit);\n      if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n      while (this.type.postfix && !this.canInsertSemicolon()) {\n        var node$1 = this.startNodeAt(startPos, startLoc);\n        node$1.operator = this.value;\n        node$1.prefix = false;\n        node$1.argument = expr;\n        this.checkLValSimple(expr);\n        this.next();\n        expr = this.finishNode(node$1, \"UpdateExpression\");\n      }\n    }\n\n    if (!incDec && this.eat(types$1.starstar)) {\n      if (sawUnary)\n        { this.unexpected(this.lastTokStart); }\n      else\n        { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), \"**\", false) }\n    } else {\n      return expr\n    }\n  };\n\n  function isLocalVariableAccess(node) {\n    return (\n      node.type === \"Identifier\" ||\n      node.type === \"ParenthesizedExpression\" && isLocalVariableAccess(node.expression)\n    )\n  }\n\n  function isPrivateFieldAccess(node) {\n    return (\n      node.type === \"MemberExpression\" && node.property.type === \"PrivateIdentifier\" ||\n      node.type === \"ChainExpression\" && isPrivateFieldAccess(node.expression) ||\n      node.type === \"ParenthesizedExpression\" && isPrivateFieldAccess(node.expression)\n    )\n  }\n\n  // Parse call, dot, and `[]`-subscript expressions.\n\n  pp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) {\n    var startPos = this.start, startLoc = this.startLoc;\n    var expr = this.parseExprAtom(refDestructuringErrors, forInit);\n    if (expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\")\n      { return expr }\n    var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit);\n    if (refDestructuringErrors && result.type === \"MemberExpression\") {\n      if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; }\n      if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; }\n      if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; }\n    }\n    return result\n  };\n\n  pp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) {\n    var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n        this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 &&\n        this.potentialArrowAt === base.start;\n    var optionalChained = false;\n\n    while (true) {\n      var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit);\n\n      if (element.optional) { optionalChained = true; }\n      if (element === base || element.type === \"ArrowFunctionExpression\") {\n        if (optionalChained) {\n          var chainNode = this.startNodeAt(startPos, startLoc);\n          chainNode.expression = element;\n          element = this.finishNode(chainNode, \"ChainExpression\");\n        }\n        return element\n      }\n\n      base = element;\n    }\n  };\n\n  pp$5.shouldParseAsyncArrow = function() {\n    return !this.canInsertSemicolon() && this.eat(types$1.arrow)\n  };\n\n  pp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) {\n    return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit)\n  };\n\n  pp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) {\n    var optionalSupported = this.options.ecmaVersion >= 11;\n    var optional = optionalSupported && this.eat(types$1.questionDot);\n    if (noCalls && optional) { this.raise(this.lastTokStart, \"Optional chaining cannot appear in the callee of new expressions\"); }\n\n    var computed = this.eat(types$1.bracketL);\n    if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) {\n      var node = this.startNodeAt(startPos, startLoc);\n      node.object = base;\n      if (computed) {\n        node.property = this.parseExpression();\n        this.expect(types$1.bracketR);\n      } else if (this.type === types$1.privateId && base.type !== \"Super\") {\n        node.property = this.parsePrivateIdent();\n      } else {\n        node.property = this.parseIdent(this.options.allowReserved !== \"never\");\n      }\n      node.computed = !!computed;\n      if (optionalSupported) {\n        node.optional = optional;\n      }\n      base = this.finishNode(node, \"MemberExpression\");\n    } else if (!noCalls && this.eat(types$1.parenL)) {\n      var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n      this.yieldPos = 0;\n      this.awaitPos = 0;\n      this.awaitIdentPos = 0;\n      var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors);\n      if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) {\n        this.checkPatternErrors(refDestructuringErrors, false);\n        this.checkYieldAwaitInDefaultParams();\n        if (this.awaitIdentPos > 0)\n          { this.raise(this.awaitIdentPos, \"Cannot use 'await' as identifier inside an async function\"); }\n        this.yieldPos = oldYieldPos;\n        this.awaitPos = oldAwaitPos;\n        this.awaitIdentPos = oldAwaitIdentPos;\n        return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit)\n      }\n      this.checkExpressionErrors(refDestructuringErrors, true);\n      this.yieldPos = oldYieldPos || this.yieldPos;\n      this.awaitPos = oldAwaitPos || this.awaitPos;\n      this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;\n      var node$1 = this.startNodeAt(startPos, startLoc);\n      node$1.callee = base;\n      node$1.arguments = exprList;\n      if (optionalSupported) {\n        node$1.optional = optional;\n      }\n      base = this.finishNode(node$1, \"CallExpression\");\n    } else if (this.type === types$1.backQuote) {\n      if (optional || optionalChained) {\n        this.raise(this.start, \"Optional chaining cannot appear in the tag of tagged template expressions\");\n      }\n      var node$2 = this.startNodeAt(startPos, startLoc);\n      node$2.tag = base;\n      node$2.quasi = this.parseTemplate({isTagged: true});\n      base = this.finishNode(node$2, \"TaggedTemplateExpression\");\n    }\n    return base\n  };\n\n  // Parse an atomic expression \u2014 either a single token that is an\n  // expression, an expression started by a keyword like `function` or\n  // `new`, or an expression wrapped in punctuation like `()`, `[]`,\n  // or `{}`.\n\n  pp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) {\n    // If a division operator appears in an expression position, the\n    // tokenizer got confused, and we force it to read a regexp instead.\n    if (this.type === types$1.slash) { this.readRegexp(); }\n\n    var node, canBeArrow = this.potentialArrowAt === this.start;\n    switch (this.type) {\n    case types$1._super:\n      if (!this.allowSuper)\n        { this.raise(this.start, \"'super' keyword outside a method\"); }\n      node = this.startNode();\n      this.next();\n      if (this.type === types$1.parenL && !this.allowDirectSuper)\n        { this.raise(node.start, \"super() call outside constructor of a subclass\"); }\n      // The `super` keyword can appear at below:\n      // SuperProperty:\n      //     super [ Expression ]\n      //     super . IdentifierName\n      // SuperCall:\n      //     super ( Arguments )\n      if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL)\n        { this.unexpected(); }\n      return this.finishNode(node, \"Super\")\n\n    case types$1._this:\n      node = this.startNode();\n      this.next();\n      return this.finishNode(node, \"ThisExpression\")\n\n    case types$1.name:\n      var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc;\n      var id = this.parseIdent(false);\n      if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(types$1._function)) {\n        this.overrideContext(types.f_expr);\n        return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit)\n      }\n      if (canBeArrow && !this.canInsertSemicolon()) {\n        if (this.eat(types$1.arrow))\n          { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) }\n        if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === types$1.name && !containsEsc &&\n            (!this.potentialArrowInForAwait || this.value !== \"of\" || this.containsEsc)) {\n          id = this.parseIdent(false);\n          if (this.canInsertSemicolon() || !this.eat(types$1.arrow))\n            { this.unexpected(); }\n          return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit)\n        }\n      }\n      return id\n\n    case types$1.regexp:\n      var value = this.value;\n      node = this.parseLiteral(value.value);\n      node.regex = {pattern: value.pattern, flags: value.flags};\n      return node\n\n    case types$1.num: case types$1.string:\n      return this.parseLiteral(this.value)\n\n    case types$1._null: case types$1._true: case types$1._false:\n      node = this.startNode();\n      node.value = this.type === types$1._null ? null : this.type === types$1._true;\n      node.raw = this.type.keyword;\n      this.next();\n      return this.finishNode(node, \"Literal\")\n\n    case types$1.parenL:\n      var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit);\n      if (refDestructuringErrors) {\n        if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n          { refDestructuringErrors.parenthesizedAssign = start; }\n        if (refDestructuringErrors.parenthesizedBind < 0)\n          { refDestructuringErrors.parenthesizedBind = start; }\n      }\n      return expr\n\n    case types$1.bracketL:\n      node = this.startNode();\n      this.next();\n      node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors);\n      return this.finishNode(node, \"ArrayExpression\")\n\n    case types$1.braceL:\n      this.overrideContext(types.b_expr);\n      return this.parseObj(false, refDestructuringErrors)\n\n    case types$1._function:\n      node = this.startNode();\n      this.next();\n      return this.parseFunction(node, 0)\n\n    case types$1._class:\n      return this.parseClass(this.startNode(), false)\n\n    case types$1._new:\n      return this.parseNew()\n\n    case types$1.backQuote:\n      return this.parseTemplate()\n\n    case types$1._import:\n      if (this.options.ecmaVersion >= 11) {\n        return this.parseExprImport(forNew)\n      } else {\n        return this.unexpected()\n      }\n\n    default:\n      return this.parseExprAtomDefault()\n    }\n  };\n\n  pp$5.parseExprAtomDefault = function() {\n    this.unexpected();\n  };\n\n  pp$5.parseExprImport = function(forNew) {\n    var node = this.startNode();\n\n    // Consume `import` as an identifier for `import.meta`.\n    // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`.\n    if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword import\"); }\n    this.next();\n\n    if (this.type === types$1.parenL && !forNew) {\n      return this.parseDynamicImport(node)\n    } else if (this.type === types$1.dot) {\n      var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n      meta.name = \"import\";\n      node.meta = this.finishNode(meta, \"Identifier\");\n      return this.parseImportMeta(node)\n    } else {\n      this.unexpected();\n    }\n  };\n\n  pp$5.parseDynamicImport = function(node) {\n    this.next(); // skip `(`\n\n    // Parse node.source.\n    node.source = this.parseMaybeAssign();\n\n    if (this.options.ecmaVersion >= 16) {\n      if (!this.eat(types$1.parenR)) {\n        this.expect(types$1.comma);\n        if (!this.afterTrailingComma(types$1.parenR)) {\n          node.options = this.parseMaybeAssign();\n          if (!this.eat(types$1.parenR)) {\n            this.expect(types$1.comma);\n            if (!this.afterTrailingComma(types$1.parenR)) {\n              this.unexpected();\n            }\n          }\n        } else {\n          node.options = null;\n        }\n      } else {\n        node.options = null;\n      }\n    } else {\n      // Verify ending.\n      if (!this.eat(types$1.parenR)) {\n        var errorPos = this.start;\n        if (this.eat(types$1.comma) && this.eat(types$1.parenR)) {\n          this.raiseRecoverable(errorPos, \"Trailing comma is not allowed in import()\");\n        } else {\n          this.unexpected(errorPos);\n        }\n      }\n    }\n\n    return this.finishNode(node, \"ImportExpression\")\n  };\n\n  pp$5.parseImportMeta = function(node) {\n    this.next(); // skip `.`\n\n    var containsEsc = this.containsEsc;\n    node.property = this.parseIdent(true);\n\n    if (node.property.name !== \"meta\")\n      { this.raiseRecoverable(node.property.start, \"The only valid meta property for import is 'import.meta'\"); }\n    if (containsEsc)\n      { this.raiseRecoverable(node.start, \"'import.meta' must not contain escaped characters\"); }\n    if (this.options.sourceType !== \"module\" && !this.options.allowImportExportEverywhere)\n      { this.raiseRecoverable(node.start, \"Cannot use 'import.meta' outside a module\"); }\n\n    return this.finishNode(node, \"MetaProperty\")\n  };\n\n  pp$5.parseLiteral = function(value) {\n    var node = this.startNode();\n    node.value = value;\n    node.raw = this.input.slice(this.start, this.end);\n    if (node.raw.charCodeAt(node.raw.length - 1) === 110)\n      { node.bigint = node.value != null ? node.value.toString() : node.raw.slice(0, -1).replace(/_/g, \"\"); }\n    this.next();\n    return this.finishNode(node, \"Literal\")\n  };\n\n  pp$5.parseParenExpression = function() {\n    this.expect(types$1.parenL);\n    var val = this.parseExpression();\n    this.expect(types$1.parenR);\n    return val\n  };\n\n  pp$5.shouldParseArrow = function(exprList) {\n    return !this.canInsertSemicolon()\n  };\n\n  pp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) {\n    var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;\n    if (this.options.ecmaVersion >= 6) {\n      this.next();\n\n      var innerStartPos = this.start, innerStartLoc = this.startLoc;\n      var exprList = [], first = true, lastIsComma = false;\n      var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;\n      this.yieldPos = 0;\n      this.awaitPos = 0;\n      // Do not save awaitIdentPos to allow checking awaits nested in parameters\n      while (this.type !== types$1.parenR) {\n        first ? first = false : this.expect(types$1.comma);\n        if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) {\n          lastIsComma = true;\n          break\n        } else if (this.type === types$1.ellipsis) {\n          spreadStart = this.start;\n          exprList.push(this.parseParenItem(this.parseRestBinding()));\n          if (this.type === types$1.comma) {\n            this.raiseRecoverable(\n              this.start,\n              \"Comma is not permitted after the rest element\"\n            );\n          }\n          break\n        } else {\n          exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem));\n        }\n      }\n      var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc;\n      this.expect(types$1.parenR);\n\n      if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) {\n        this.checkPatternErrors(refDestructuringErrors, false);\n        this.checkYieldAwaitInDefaultParams();\n        this.yieldPos = oldYieldPos;\n        this.awaitPos = oldAwaitPos;\n        return this.parseParenArrowList(startPos, startLoc, exprList, forInit)\n      }\n\n      if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); }\n      if (spreadStart) { this.unexpected(spreadStart); }\n      this.checkExpressionErrors(refDestructuringErrors, true);\n      this.yieldPos = oldYieldPos || this.yieldPos;\n      this.awaitPos = oldAwaitPos || this.awaitPos;\n\n      if (exprList.length > 1) {\n        val = this.startNodeAt(innerStartPos, innerStartLoc);\n        val.expressions = exprList;\n        this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n      } else {\n        val = exprList[0];\n      }\n    } else {\n      val = this.parseParenExpression();\n    }\n\n    if (this.options.preserveParens) {\n      var par = this.startNodeAt(startPos, startLoc);\n      par.expression = val;\n      return this.finishNode(par, \"ParenthesizedExpression\")\n    } else {\n      return val\n    }\n  };\n\n  pp$5.parseParenItem = function(item) {\n    return item\n  };\n\n  pp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) {\n    return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit)\n  };\n\n  // New's precedence is slightly tricky. It must allow its argument to\n  // be a `[]` or dot subscript expression, but not a call \u2014 at least,\n  // not without wrapping it in parentheses. Thus, it uses the noCalls\n  // argument to parseSubscripts to prevent it from consuming the\n  // argument list.\n\n  var empty = [];\n\n  pp$5.parseNew = function() {\n    if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword new\"); }\n    var node = this.startNode();\n    this.next();\n    if (this.options.ecmaVersion >= 6 && this.type === types$1.dot) {\n      var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n      meta.name = \"new\";\n      node.meta = this.finishNode(meta, \"Identifier\");\n      this.next();\n      var containsEsc = this.containsEsc;\n      node.property = this.parseIdent(true);\n      if (node.property.name !== \"target\")\n        { this.raiseRecoverable(node.property.start, \"The only valid meta property for new is 'new.target'\"); }\n      if (containsEsc)\n        { this.raiseRecoverable(node.start, \"'new.target' must not contain escaped characters\"); }\n      if (!this.allowNewDotTarget)\n        { this.raiseRecoverable(node.start, \"'new.target' can only be used in functions and class static block\"); }\n      return this.finishNode(node, \"MetaProperty\")\n    }\n    var startPos = this.start, startLoc = this.startLoc;\n    node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false);\n    if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); }\n    else { node.arguments = empty; }\n    return this.finishNode(node, \"NewExpression\")\n  };\n\n  // Parse template expression.\n\n  pp$5.parseTemplateElement = function(ref) {\n    var isTagged = ref.isTagged;\n\n    var elem = this.startNode();\n    if (this.type === types$1.invalidTemplate) {\n      if (!isTagged) {\n        this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\");\n      }\n      elem.value = {\n        raw: this.value.replace(/\\r\\n?/g, \"\\n\"),\n        cooked: null\n      };\n    } else {\n      elem.value = {\n        raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n        cooked: this.value\n      };\n    }\n    this.next();\n    elem.tail = this.type === types$1.backQuote;\n    return this.finishNode(elem, \"TemplateElement\")\n  };\n\n  pp$5.parseTemplate = function(ref) {\n    if ( ref === void 0 ) ref = {};\n    var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false;\n\n    var node = this.startNode();\n    this.next();\n    node.expressions = [];\n    var curElt = this.parseTemplateElement({isTagged: isTagged});\n    node.quasis = [curElt];\n    while (!curElt.tail) {\n      if (this.type === types$1.eof) { this.raise(this.pos, \"Unterminated template literal\"); }\n      this.expect(types$1.dollarBraceL);\n      node.expressions.push(this.parseExpression());\n      this.expect(types$1.braceR);\n      node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged}));\n    }\n    this.next();\n    return this.finishNode(node, \"TemplateLiteral\")\n  };\n\n  pp$5.isAsyncProp = function(prop) {\n    return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n      (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) &&\n      !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n  };\n\n  // Parse an object literal or binding pattern.\n\n  pp$5.parseObj = function(isPattern, refDestructuringErrors) {\n    var node = this.startNode(), first = true, propHash = {};\n    node.properties = [];\n    this.next();\n    while (!this.eat(types$1.braceR)) {\n      if (!first) {\n        this.expect(types$1.comma);\n        if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break }\n      } else { first = false; }\n\n      var prop = this.parseProperty(isPattern, refDestructuringErrors);\n      if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); }\n      node.properties.push(prop);\n    }\n    return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n  };\n\n  pp$5.parseProperty = function(isPattern, refDestructuringErrors) {\n    var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;\n    if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) {\n      if (isPattern) {\n        prop.argument = this.parseIdent(false);\n        if (this.type === types$1.comma) {\n          this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\");\n        }\n        return this.finishNode(prop, \"RestElement\")\n      }\n      // Parse argument.\n      prop.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n      // To disallow trailing comma via `this.toAssignable()`.\n      if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n        refDestructuringErrors.trailingComma = this.start;\n      }\n      // Finish\n      return this.finishNode(prop, \"SpreadElement\")\n    }\n    if (this.options.ecmaVersion >= 6) {\n      prop.method = false;\n      prop.shorthand = false;\n      if (isPattern || refDestructuringErrors) {\n        startPos = this.start;\n        startLoc = this.startLoc;\n      }\n      if (!isPattern)\n        { isGenerator = this.eat(types$1.star); }\n    }\n    var containsEsc = this.containsEsc;\n    this.parsePropertyName(prop);\n    if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n      isAsync = true;\n      isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star);\n      this.parsePropertyName(prop);\n    } else {\n      isAsync = false;\n    }\n    this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc);\n    return this.finishNode(prop, \"Property\")\n  };\n\n  pp$5.parseGetterSetter = function(prop) {\n    var kind = prop.key.name;\n    this.parsePropertyName(prop);\n    prop.value = this.parseMethod(false);\n    prop.kind = kind;\n    var paramCount = prop.kind === \"get\" ? 0 : 1;\n    if (prop.value.params.length !== paramCount) {\n      var start = prop.value.start;\n      if (prop.kind === \"get\")\n        { this.raiseRecoverable(start, \"getter should have no params\"); }\n      else\n        { this.raiseRecoverable(start, \"setter should have exactly one param\"); }\n    } else {\n      if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n        { this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\"); }\n    }\n  };\n\n  pp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n    if ((isGenerator || isAsync) && this.type === types$1.colon)\n      { this.unexpected(); }\n\n    if (this.eat(types$1.colon)) {\n      prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);\n      prop.kind = \"init\";\n    } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) {\n      if (isPattern) { this.unexpected(); }\n      prop.method = true;\n      prop.value = this.parseMethod(isGenerator, isAsync);\n      prop.kind = \"init\";\n    } else if (!isPattern && !containsEsc &&\n               this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n               (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n               (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) {\n      if (isGenerator || isAsync) { this.unexpected(); }\n      this.parseGetterSetter(prop);\n    } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n      if (isGenerator || isAsync) { this.unexpected(); }\n      this.checkUnreserved(prop.key);\n      if (prop.key.name === \"await\" && !this.awaitIdentPos)\n        { this.awaitIdentPos = startPos; }\n      if (isPattern) {\n        prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n      } else if (this.type === types$1.eq && refDestructuringErrors) {\n        if (refDestructuringErrors.shorthandAssign < 0)\n          { refDestructuringErrors.shorthandAssign = this.start; }\n        prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n      } else {\n        prop.value = this.copyNode(prop.key);\n      }\n      prop.kind = \"init\";\n      prop.shorthand = true;\n    } else { this.unexpected(); }\n  };\n\n  pp$5.parsePropertyName = function(prop) {\n    if (this.options.ecmaVersion >= 6) {\n      if (this.eat(types$1.bracketL)) {\n        prop.computed = true;\n        prop.key = this.parseMaybeAssign();\n        this.expect(types$1.bracketR);\n        return prop.key\n      } else {\n        prop.computed = false;\n      }\n    }\n    return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\")\n  };\n\n  // Initialize empty function node.\n\n  pp$5.initFunction = function(node) {\n    node.id = null;\n    if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; }\n    if (this.options.ecmaVersion >= 8) { node.async = false; }\n  };\n\n  // Parse object or class method.\n\n  pp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n    var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n    this.initFunction(node);\n    if (this.options.ecmaVersion >= 6)\n      { node.generator = isGenerator; }\n    if (this.options.ecmaVersion >= 8)\n      { node.async = !!isAsync; }\n\n    this.yieldPos = 0;\n    this.awaitPos = 0;\n    this.awaitIdentPos = 0;\n    this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));\n\n    this.expect(types$1.parenL);\n    node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n    this.checkYieldAwaitInDefaultParams();\n    this.parseFunctionBody(node, false, true, false);\n\n    this.yieldPos = oldYieldPos;\n    this.awaitPos = oldAwaitPos;\n    this.awaitIdentPos = oldAwaitIdentPos;\n    return this.finishNode(node, \"FunctionExpression\")\n  };\n\n  // Parse arrow function expression with given parameters.\n\n  pp$5.parseArrowExpression = function(node, params, isAsync, forInit) {\n    var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n    this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW);\n    this.initFunction(node);\n    if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; }\n\n    this.yieldPos = 0;\n    this.awaitPos = 0;\n    this.awaitIdentPos = 0;\n\n    node.params = this.toAssignableList(params, true);\n    this.parseFunctionBody(node, true, false, forInit);\n\n    this.yieldPos = oldYieldPos;\n    this.awaitPos = oldAwaitPos;\n    this.awaitIdentPos = oldAwaitIdentPos;\n    return this.finishNode(node, \"ArrowFunctionExpression\")\n  };\n\n  // Parse function body and check parameters.\n\n  pp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) {\n    var isExpression = isArrowFunction && this.type !== types$1.braceL;\n    var oldStrict = this.strict, useStrict = false;\n\n    if (isExpression) {\n      node.body = this.parseMaybeAssign(forInit);\n      node.expression = true;\n      this.checkParams(node, false);\n    } else {\n      var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params);\n      if (!oldStrict || nonSimple) {\n        useStrict = this.strictDirective(this.end);\n        // If this is a strict mode function, verify that argument names\n        // are not repeated, and it does not try to bind the words `eval`\n        // or `arguments`.\n        if (useStrict && nonSimple)\n          { this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\"); }\n      }\n      // Start a new scope with regard to labels and the `inFunction`\n      // flag (restore them to their old value afterwards).\n      var oldLabels = this.labels;\n      this.labels = [];\n      if (useStrict) { this.strict = true; }\n\n      // Add the params to varDeclaredNames to ensure that an error is thrown\n      // if a let/const declaration in the function clashes with one of the params.\n      this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params));\n      // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n      if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); }\n      node.body = this.parseBlock(false, undefined, useStrict && !oldStrict);\n      node.expression = false;\n      this.adaptDirectivePrologue(node.body.body);\n      this.labels = oldLabels;\n    }\n    this.exitScope();\n  };\n\n  pp$5.isSimpleParamList = function(params) {\n    for (var i = 0, list = params; i < list.length; i += 1)\n      {\n      var param = list[i];\n\n      if (param.type !== \"Identifier\") { return false\n    } }\n    return true\n  };\n\n  // Checks function params for various disallowed patterns such as using \"eval\"\n  // or \"arguments\" and duplicate parameters.\n\n  pp$5.checkParams = function(node, allowDuplicates) {\n    var nameHash = Object.create(null);\n    for (var i = 0, list = node.params; i < list.length; i += 1)\n      {\n      var param = list[i];\n\n      this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash);\n    }\n  };\n\n  // Parses a comma-separated list of expressions, and returns them as\n  // an array. `close` is the token type that ends the list, and\n  // `allowEmpty` can be turned on to allow subsequent commas with\n  // nothing in between them to be parsed as `null` (which is needed\n  // for array literals).\n\n  pp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n    var elts = [], first = true;\n    while (!this.eat(close)) {\n      if (!first) {\n        this.expect(types$1.comma);\n        if (allowTrailingComma && this.afterTrailingComma(close)) { break }\n      } else { first = false; }\n\n      var elt = (void 0);\n      if (allowEmpty && this.type === types$1.comma)\n        { elt = null; }\n      else if (this.type === types$1.ellipsis) {\n        elt = this.parseSpread(refDestructuringErrors);\n        if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0)\n          { refDestructuringErrors.trailingComma = this.start; }\n      } else {\n        elt = this.parseMaybeAssign(false, refDestructuringErrors);\n      }\n      elts.push(elt);\n    }\n    return elts\n  };\n\n  pp$5.checkUnreserved = function(ref) {\n    var start = ref.start;\n    var end = ref.end;\n    var name = ref.name;\n\n    if (this.inGenerator && name === \"yield\")\n      { this.raiseRecoverable(start, \"Cannot use 'yield' as identifier inside a generator\"); }\n    if (this.inAsync && name === \"await\")\n      { this.raiseRecoverable(start, \"Cannot use 'await' as identifier inside an async function\"); }\n    if (!(this.currentThisScope().flags & SCOPE_VAR) && name === \"arguments\")\n      { this.raiseRecoverable(start, \"Cannot use 'arguments' in class field initializer\"); }\n    if (this.inClassStaticBlock && (name === \"arguments\" || name === \"await\"))\n      { this.raise(start, (\"Cannot use \" + name + \" in class static initialization block\")); }\n    if (this.keywords.test(name))\n      { this.raise(start, (\"Unexpected keyword '\" + name + \"'\")); }\n    if (this.options.ecmaVersion < 6 &&\n      this.input.slice(start, end).indexOf(\"\\\\\") !== -1) { return }\n    var re = this.strict ? this.reservedWordsStrict : this.reservedWords;\n    if (re.test(name)) {\n      if (!this.inAsync && name === \"await\")\n        { this.raiseRecoverable(start, \"Cannot use keyword 'await' outside an async function\"); }\n      this.raiseRecoverable(start, (\"The keyword '\" + name + \"' is reserved\"));\n    }\n  };\n\n  // Parse the next token as an identifier. If `liberal` is true (used\n  // when parsing properties), it will also convert keywords into\n  // identifiers.\n\n  pp$5.parseIdent = function(liberal) {\n    var node = this.parseIdentNode();\n    this.next(!!liberal);\n    this.finishNode(node, \"Identifier\");\n    if (!liberal) {\n      this.checkUnreserved(node);\n      if (node.name === \"await\" && !this.awaitIdentPos)\n        { this.awaitIdentPos = node.start; }\n    }\n    return node\n  };\n\n  pp$5.parseIdentNode = function() {\n    var node = this.startNode();\n    if (this.type === types$1.name) {\n      node.name = this.value;\n    } else if (this.type.keyword) {\n      node.name = this.type.keyword;\n\n      // To fix https://github.com/acornjs/acorn/issues/575\n      // `class` and `function` keywords push new context into this.context.\n      // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n      // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n      if ((node.name === \"class\" || node.name === \"function\") &&\n        (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n        this.context.pop();\n      }\n      this.type = types$1.name;\n    } else {\n      this.unexpected();\n    }\n    return node\n  };\n\n  pp$5.parsePrivateIdent = function() {\n    var node = this.startNode();\n    if (this.type === types$1.privateId) {\n      node.name = this.value;\n    } else {\n      this.unexpected();\n    }\n    this.next();\n    this.finishNode(node, \"PrivateIdentifier\");\n\n    // For validating existence\n    if (this.options.checkPrivateFields) {\n      if (this.privateNameStack.length === 0) {\n        this.raise(node.start, (\"Private field '#\" + (node.name) + \"' must be declared in an enclosing class\"));\n      } else {\n        this.privateNameStack[this.privateNameStack.length - 1].used.push(node);\n      }\n    }\n\n    return node\n  };\n\n  // Parses yield expression inside generator.\n\n  pp$5.parseYield = function(forInit) {\n    if (!this.yieldPos) { this.yieldPos = this.start; }\n\n    var node = this.startNode();\n    this.next();\n    if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) {\n      node.delegate = false;\n      node.argument = null;\n    } else {\n      node.delegate = this.eat(types$1.star);\n      node.argument = this.parseMaybeAssign(forInit);\n    }\n    return this.finishNode(node, \"YieldExpression\")\n  };\n\n  pp$5.parseAwait = function(forInit) {\n    if (!this.awaitPos) { this.awaitPos = this.start; }\n\n    var node = this.startNode();\n    this.next();\n    node.argument = this.parseMaybeUnary(null, true, false, forInit);\n    return this.finishNode(node, \"AwaitExpression\")\n  };\n\n  var pp$4 = Parser.prototype;\n\n  // This function is used to raise exceptions on parse errors. It\n  // takes an offset integer (into the current `input`) to indicate\n  // the location of the error, attaches the position to the end\n  // of the error message, and then raises a `SyntaxError` with that\n  // message.\n\n  pp$4.raise = function(pos, message) {\n    var loc = getLineInfo(this.input, pos);\n    message += \" (\" + loc.line + \":\" + loc.column + \")\";\n    if (this.sourceFile) {\n      message += \" in \" + this.sourceFile;\n    }\n    var err = new SyntaxError(message);\n    err.pos = pos; err.loc = loc; err.raisedAt = this.pos;\n    throw err\n  };\n\n  pp$4.raiseRecoverable = pp$4.raise;\n\n  pp$4.curPosition = function() {\n    if (this.options.locations) {\n      return new Position(this.curLine, this.pos - this.lineStart)\n    }\n  };\n\n  var pp$3 = Parser.prototype;\n\n  var Scope = function Scope(flags) {\n    this.flags = flags;\n    // A list of var-declared names in the current lexical scope\n    this.var = [];\n    // A list of lexically-declared names in the current lexical scope\n    this.lexical = [];\n    // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n    this.functions = [];\n  };\n\n  // The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\n  pp$3.enterScope = function(flags) {\n    this.scopeStack.push(new Scope(flags));\n  };\n\n  pp$3.exitScope = function() {\n    this.scopeStack.pop();\n  };\n\n  // The spec says:\n  // > At the top level of a function, or script, function declarations are\n  // > treated like var declarations rather than like lexical declarations.\n  pp$3.treatFunctionsAsVarInScope = function(scope) {\n    return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)\n  };\n\n  pp$3.declareName = function(name, bindingType, pos) {\n    var redeclared = false;\n    if (bindingType === BIND_LEXICAL) {\n      var scope = this.currentScope();\n      redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;\n      scope.lexical.push(name);\n      if (this.inModule && (scope.flags & SCOPE_TOP))\n        { delete this.undefinedExports[name]; }\n    } else if (bindingType === BIND_SIMPLE_CATCH) {\n      var scope$1 = this.currentScope();\n      scope$1.lexical.push(name);\n    } else if (bindingType === BIND_FUNCTION) {\n      var scope$2 = this.currentScope();\n      if (this.treatFunctionsAsVar)\n        { redeclared = scope$2.lexical.indexOf(name) > -1; }\n      else\n        { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; }\n      scope$2.functions.push(name);\n    } else {\n      for (var i = this.scopeStack.length - 1; i >= 0; --i) {\n        var scope$3 = this.scopeStack[i];\n        if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) ||\n            !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) {\n          redeclared = true;\n          break\n        }\n        scope$3.var.push(name);\n        if (this.inModule && (scope$3.flags & SCOPE_TOP))\n          { delete this.undefinedExports[name]; }\n        if (scope$3.flags & SCOPE_VAR) { break }\n      }\n    }\n    if (redeclared) { this.raiseRecoverable(pos, (\"Identifier '\" + name + \"' has already been declared\")); }\n  };\n\n  pp$3.checkLocalExport = function(id) {\n    // scope.functions must be empty as Module code is always strict.\n    if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n        this.scopeStack[0].var.indexOf(id.name) === -1) {\n      this.undefinedExports[id.name] = id;\n    }\n  };\n\n  pp$3.currentScope = function() {\n    return this.scopeStack[this.scopeStack.length - 1]\n  };\n\n  pp$3.currentVarScope = function() {\n    for (var i = this.scopeStack.length - 1;; i--) {\n      var scope = this.scopeStack[i];\n      if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK)) { return scope }\n    }\n  };\n\n  // Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\n  pp$3.currentThisScope = function() {\n    for (var i = this.scopeStack.length - 1;; i--) {\n      var scope = this.scopeStack[i];\n      if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) &&\n          !(scope.flags & SCOPE_ARROW)) { return scope }\n    }\n  };\n\n  var Node = function Node(parser, pos, loc) {\n    this.type = \"\";\n    this.start = pos;\n    this.end = 0;\n    if (parser.options.locations)\n      { this.loc = new SourceLocation(parser, loc); }\n    if (parser.options.directSourceFile)\n      { this.sourceFile = parser.options.directSourceFile; }\n    if (parser.options.ranges)\n      { this.range = [pos, 0]; }\n  };\n\n  // Start an AST node, attaching a start offset.\n\n  var pp$2 = Parser.prototype;\n\n  pp$2.startNode = function() {\n    return new Node(this, this.start, this.startLoc)\n  };\n\n  pp$2.startNodeAt = function(pos, loc) {\n    return new Node(this, pos, loc)\n  };\n\n  // Finish an AST node, adding `type` and `end` properties.\n\n  function finishNodeAt(node, type, pos, loc) {\n    node.type = type;\n    node.end = pos;\n    if (this.options.locations)\n      { node.loc.end = loc; }\n    if (this.options.ranges)\n      { node.range[1] = pos; }\n    return node\n  }\n\n  pp$2.finishNode = function(node, type) {\n    return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n  };\n\n  // Finish node at given position\n\n  pp$2.finishNodeAt = function(node, type, pos, loc) {\n    return finishNodeAt.call(this, node, type, pos, loc)\n  };\n\n  pp$2.copyNode = function(node) {\n    var newNode = new Node(this, node.start, this.startLoc);\n    for (var prop in node) { newNode[prop] = node[prop]; }\n    return newNode\n  };\n\n  // This file was generated by \"bin/generate-unicode-script-values.js\". Do not modify manually!\n  var scriptValuesAddedInUnicode = \"Berf Beria_Erfe Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sidetic Sidt Sunu Sunuwar Tai_Yo Tayo Todhri Todr Tolong_Siki Tols Tulu_Tigalari Tutg Unknown Zzzz\";\n\n  // This file contains Unicode properties extracted from the ECMAScript specification.\n  // The lists are extracted like so:\n  // $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)\n\n  // #table-binary-unicode-properties\n  var ecma9BinaryProperties = \"ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS\";\n  var ecma10BinaryProperties = ecma9BinaryProperties + \" Extended_Pictographic\";\n  var ecma11BinaryProperties = ecma10BinaryProperties;\n  var ecma12BinaryProperties = ecma11BinaryProperties + \" EBase EComp EMod EPres ExtPict\";\n  var ecma13BinaryProperties = ecma12BinaryProperties;\n  var ecma14BinaryProperties = ecma13BinaryProperties;\n\n  var unicodeBinaryProperties = {\n    9: ecma9BinaryProperties,\n    10: ecma10BinaryProperties,\n    11: ecma11BinaryProperties,\n    12: ecma12BinaryProperties,\n    13: ecma13BinaryProperties,\n    14: ecma14BinaryProperties\n  };\n\n  // #table-binary-unicode-properties-of-strings\n  var ecma14BinaryPropertiesOfStrings = \"Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji\";\n\n  var unicodeBinaryPropertiesOfStrings = {\n    9: \"\",\n    10: \"\",\n    11: \"\",\n    12: \"\",\n    13: \"\",\n    14: ecma14BinaryPropertiesOfStrings\n  };\n\n  // #table-unicode-general-category-values\n  var unicodeGeneralCategoryValues = \"Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu\";\n\n  // #table-unicode-script-values\n  var ecma9ScriptValues = \"Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb\";\n  var ecma10ScriptValues = ecma9ScriptValues + \" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd\";\n  var ecma11ScriptValues = ecma10ScriptValues + \" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho\";\n  var ecma12ScriptValues = ecma11ScriptValues + \" Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi\";\n  var ecma13ScriptValues = ecma12ScriptValues + \" Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith\";\n  var ecma14ScriptValues = ecma13ScriptValues + \" \" + scriptValuesAddedInUnicode;\n\n  var unicodeScriptValues = {\n    9: ecma9ScriptValues,\n    10: ecma10ScriptValues,\n    11: ecma11ScriptValues,\n    12: ecma12ScriptValues,\n    13: ecma13ScriptValues,\n    14: ecma14ScriptValues\n  };\n\n  var data = {};\n  function buildUnicodeData(ecmaVersion) {\n    var d = data[ecmaVersion] = {\n      binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + \" \" + unicodeGeneralCategoryValues),\n      binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]),\n      nonBinary: {\n        General_Category: wordsRegexp(unicodeGeneralCategoryValues),\n        Script: wordsRegexp(unicodeScriptValues[ecmaVersion])\n      }\n    };\n    d.nonBinary.Script_Extensions = d.nonBinary.Script;\n\n    d.nonBinary.gc = d.nonBinary.General_Category;\n    d.nonBinary.sc = d.nonBinary.Script;\n    d.nonBinary.scx = d.nonBinary.Script_Extensions;\n  }\n\n  for (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) {\n    var ecmaVersion = list[i];\n\n    buildUnicodeData(ecmaVersion);\n  }\n\n  var pp$1 = Parser.prototype;\n\n  // Track disjunction structure to determine whether a duplicate\n  // capture group name is allowed because it is in a separate branch.\n  var BranchID = function BranchID(parent, base) {\n    // Parent disjunction branch\n    this.parent = parent;\n    // Identifies this set of sibling branches\n    this.base = base || this;\n  };\n\n  BranchID.prototype.separatedFrom = function separatedFrom (alt) {\n    // A branch is separate from another branch if they or any of\n    // their parents are siblings in a given disjunction\n    for (var self = this; self; self = self.parent) {\n      for (var other = alt; other; other = other.parent) {\n        if (self.base === other.base && self !== other) { return true }\n      }\n    }\n    return false\n  };\n\n  BranchID.prototype.sibling = function sibling () {\n    return new BranchID(this.parent, this.base)\n  };\n\n  var RegExpValidationState = function RegExpValidationState(parser) {\n    this.parser = parser;\n    this.validFlags = \"gim\" + (parser.options.ecmaVersion >= 6 ? \"uy\" : \"\") + (parser.options.ecmaVersion >= 9 ? \"s\" : \"\") + (parser.options.ecmaVersion >= 13 ? \"d\" : \"\") + (parser.options.ecmaVersion >= 15 ? \"v\" : \"\");\n    this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion];\n    this.source = \"\";\n    this.flags = \"\";\n    this.start = 0;\n    this.switchU = false;\n    this.switchV = false;\n    this.switchN = false;\n    this.pos = 0;\n    this.lastIntValue = 0;\n    this.lastStringValue = \"\";\n    this.lastAssertionIsQuantifiable = false;\n    this.numCapturingParens = 0;\n    this.maxBackReference = 0;\n    this.groupNames = Object.create(null);\n    this.backReferenceNames = [];\n    this.branchID = null;\n  };\n\n  RegExpValidationState.prototype.reset = function reset (start, pattern, flags) {\n    var unicodeSets = flags.indexOf(\"v\") !== -1;\n    var unicode = flags.indexOf(\"u\") !== -1;\n    this.start = start | 0;\n    this.source = pattern + \"\";\n    this.flags = flags;\n    if (unicodeSets && this.parser.options.ecmaVersion >= 15) {\n      this.switchU = true;\n      this.switchV = true;\n      this.switchN = true;\n    } else {\n      this.switchU = unicode && this.parser.options.ecmaVersion >= 6;\n      this.switchV = false;\n      this.switchN = unicode && this.parser.options.ecmaVersion >= 9;\n    }\n  };\n\n  RegExpValidationState.prototype.raise = function raise (message) {\n    this.parser.raiseRecoverable(this.start, (\"Invalid regular expression: /\" + (this.source) + \"/: \" + message));\n  };\n\n  // If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n  // Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\n  RegExpValidationState.prototype.at = function at (i, forceU) {\n      if ( forceU === void 0 ) forceU = false;\n\n    var s = this.source;\n    var l = s.length;\n    if (i >= l) {\n      return -1\n    }\n    var c = s.charCodeAt(i);\n    if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n      return c\n    }\n    var next = s.charCodeAt(i + 1);\n    return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c\n  };\n\n  RegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) {\n      if ( forceU === void 0 ) forceU = false;\n\n    var s = this.source;\n    var l = s.length;\n    if (i >= l) {\n      return l\n    }\n    var c = s.charCodeAt(i), next;\n    if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l ||\n        (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) {\n      return i + 1\n    }\n    return i + 2\n  };\n\n  RegExpValidationState.prototype.current = function current (forceU) {\n      if ( forceU === void 0 ) forceU = false;\n\n    return this.at(this.pos, forceU)\n  };\n\n  RegExpValidationState.prototype.lookahead = function lookahead (forceU) {\n      if ( forceU === void 0 ) forceU = false;\n\n    return this.at(this.nextIndex(this.pos, forceU), forceU)\n  };\n\n  RegExpValidationState.prototype.advance = function advance (forceU) {\n      if ( forceU === void 0 ) forceU = false;\n\n    this.pos = this.nextIndex(this.pos, forceU);\n  };\n\n  RegExpValidationState.prototype.eat = function eat (ch, forceU) {\n      if ( forceU === void 0 ) forceU = false;\n\n    if (this.current(forceU) === ch) {\n      this.advance(forceU);\n      return true\n    }\n    return false\n  };\n\n  RegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) {\n      if ( forceU === void 0 ) forceU = false;\n\n    var pos = this.pos;\n    for (var i = 0, list = chs; i < list.length; i += 1) {\n      var ch = list[i];\n\n        var current = this.at(pos, forceU);\n      if (current === -1 || current !== ch) {\n        return false\n      }\n      pos = this.nextIndex(pos, forceU);\n    }\n    this.pos = pos;\n    return true\n  };\n\n  /**\n   * Validate the flags part of a given RegExpLiteral.\n   *\n   * @param {RegExpValidationState} state The state to validate RegExp.\n   * @returns {void}\n   */\n  pp$1.validateRegExpFlags = function(state) {\n    var validFlags = state.validFlags;\n    var flags = state.flags;\n\n    var u = false;\n    var v = false;\n\n    for (var i = 0; i < flags.length; i++) {\n      var flag = flags.charAt(i);\n      if (validFlags.indexOf(flag) === -1) {\n        this.raise(state.start, \"Invalid regular expression flag\");\n      }\n      if (flags.indexOf(flag, i + 1) > -1) {\n        this.raise(state.start, \"Duplicate regular expression flag\");\n      }\n      if (flag === \"u\") { u = true; }\n      if (flag === \"v\") { v = true; }\n    }\n    if (this.options.ecmaVersion >= 15 && u && v) {\n      this.raise(state.start, \"Invalid regular expression flag\");\n    }\n  };\n\n  function hasProp(obj) {\n    for (var _ in obj) { return true }\n    return false\n  }\n\n  /**\n   * Validate the pattern part of a given RegExpLiteral.\n   *\n   * @param {RegExpValidationState} state The state to validate RegExp.\n   * @returns {void}\n   */\n  pp$1.validateRegExpPattern = function(state) {\n    this.regexp_pattern(state);\n\n    // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n    // parsing contains a |GroupName|, reparse with the goal symbol\n    // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n    // exception if _P_ did not conform to the grammar, if any elements of _P_\n    // were not matched by the parse, or if any Early Error conditions exist.\n    if (!state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames)) {\n      state.switchN = true;\n      this.regexp_pattern(state);\n    }\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\n  pp$1.regexp_pattern = function(state) {\n    state.pos = 0;\n    state.lastIntValue = 0;\n    state.lastStringValue = \"\";\n    state.lastAssertionIsQuantifiable = false;\n    state.numCapturingParens = 0;\n    state.maxBackReference = 0;\n    state.groupNames = Object.create(null);\n    state.backReferenceNames.length = 0;\n    state.branchID = null;\n\n    this.regexp_disjunction(state);\n\n    if (state.pos !== state.source.length) {\n      // Make the same messages as V8.\n      if (state.eat(0x29 /* ) */)) {\n        state.raise(\"Unmatched ')'\");\n      }\n      if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) {\n        state.raise(\"Lone quantifier brackets\");\n      }\n    }\n    if (state.maxBackReference > state.numCapturingParens) {\n      state.raise(\"Invalid escape\");\n    }\n    for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) {\n      var name = list[i];\n\n      if (!state.groupNames[name]) {\n        state.raise(\"Invalid named capture referenced\");\n      }\n    }\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\n  pp$1.regexp_disjunction = function(state) {\n    var trackDisjunction = this.options.ecmaVersion >= 16;\n    if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); }\n    this.regexp_alternative(state);\n    while (state.eat(0x7C /* | */)) {\n      if (trackDisjunction) { state.branchID = state.branchID.sibling(); }\n      this.regexp_alternative(state);\n    }\n    if (trackDisjunction) { state.branchID = state.branchID.parent; }\n\n    // Make the same message as V8.\n    if (this.regexp_eatQuantifier(state, true)) {\n      state.raise(\"Nothing to repeat\");\n    }\n    if (state.eat(0x7B /* { */)) {\n      state.raise(\"Lone quantifier brackets\");\n    }\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\n  pp$1.regexp_alternative = function(state) {\n    while (state.pos < state.source.length && this.regexp_eatTerm(state)) {}\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\n  pp$1.regexp_eatTerm = function(state) {\n    if (this.regexp_eatAssertion(state)) {\n      // Handle `QuantifiableAssertion Quantifier` alternative.\n      // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n      // is a QuantifiableAssertion.\n      if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n        // Make the same message as V8.\n        if (state.switchU) {\n          state.raise(\"Invalid quantifier\");\n        }\n      }\n      return true\n    }\n\n    if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n      this.regexp_eatQuantifier(state);\n      return true\n    }\n\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\n  pp$1.regexp_eatAssertion = function(state) {\n    var start = state.pos;\n    state.lastAssertionIsQuantifiable = false;\n\n    // ^, $\n    if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n      return true\n    }\n\n    // \\b \\B\n    if (state.eat(0x5C /* \\ */)) {\n      if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n        return true\n      }\n      state.pos = start;\n    }\n\n    // Lookahead / Lookbehind\n    if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n      var lookbehind = false;\n      if (this.options.ecmaVersion >= 9) {\n        lookbehind = state.eat(0x3C /* < */);\n      }\n      if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n        this.regexp_disjunction(state);\n        if (!state.eat(0x29 /* ) */)) {\n          state.raise(\"Unterminated group\");\n        }\n        state.lastAssertionIsQuantifiable = !lookbehind;\n        return true\n      }\n    }\n\n    state.pos = start;\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\n  pp$1.regexp_eatQuantifier = function(state, noError) {\n    if ( noError === void 0 ) noError = false;\n\n    if (this.regexp_eatQuantifierPrefix(state, noError)) {\n      state.eat(0x3F /* ? */);\n      return true\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\n  pp$1.regexp_eatQuantifierPrefix = function(state, noError) {\n    return (\n      state.eat(0x2A /* * */) ||\n      state.eat(0x2B /* + */) ||\n      state.eat(0x3F /* ? */) ||\n      this.regexp_eatBracedQuantifier(state, noError)\n    )\n  };\n  pp$1.regexp_eatBracedQuantifier = function(state, noError) {\n    var start = state.pos;\n    if (state.eat(0x7B /* { */)) {\n      var min = 0, max = -1;\n      if (this.regexp_eatDecimalDigits(state)) {\n        min = state.lastIntValue;\n        if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n          max = state.lastIntValue;\n        }\n        if (state.eat(0x7D /* } */)) {\n          // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n          if (max !== -1 && max < min && !noError) {\n            state.raise(\"numbers out of order in {} quantifier\");\n          }\n          return true\n        }\n      }\n      if (state.switchU && !noError) {\n        state.raise(\"Incomplete quantifier\");\n      }\n      state.pos = start;\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\n  pp$1.regexp_eatAtom = function(state) {\n    return (\n      this.regexp_eatPatternCharacters(state) ||\n      state.eat(0x2E /* . */) ||\n      this.regexp_eatReverseSolidusAtomEscape(state) ||\n      this.regexp_eatCharacterClass(state) ||\n      this.regexp_eatUncapturingGroup(state) ||\n      this.regexp_eatCapturingGroup(state)\n    )\n  };\n  pp$1.regexp_eatReverseSolidusAtomEscape = function(state) {\n    var start = state.pos;\n    if (state.eat(0x5C /* \\ */)) {\n      if (this.regexp_eatAtomEscape(state)) {\n        return true\n      }\n      state.pos = start;\n    }\n    return false\n  };\n  pp$1.regexp_eatUncapturingGroup = function(state) {\n    var start = state.pos;\n    if (state.eat(0x28 /* ( */)) {\n      if (state.eat(0x3F /* ? */)) {\n        if (this.options.ecmaVersion >= 16) {\n          var addModifiers = this.regexp_eatModifiers(state);\n          var hasHyphen = state.eat(0x2D /* - */);\n          if (addModifiers || hasHyphen) {\n            for (var i = 0; i < addModifiers.length; i++) {\n              var modifier = addModifiers.charAt(i);\n              if (addModifiers.indexOf(modifier, i + 1) > -1) {\n                state.raise(\"Duplicate regular expression modifiers\");\n              }\n            }\n            if (hasHyphen) {\n              var removeModifiers = this.regexp_eatModifiers(state);\n              if (!addModifiers && !removeModifiers && state.current() === 0x3A /* : */) {\n                state.raise(\"Invalid regular expression modifiers\");\n              }\n              for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) {\n                var modifier$1 = removeModifiers.charAt(i$1);\n                if (\n                  removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 ||\n                  addModifiers.indexOf(modifier$1) > -1\n                ) {\n                  state.raise(\"Duplicate regular expression modifiers\");\n                }\n              }\n            }\n          }\n        }\n        if (state.eat(0x3A /* : */)) {\n          this.regexp_disjunction(state);\n          if (state.eat(0x29 /* ) */)) {\n            return true\n          }\n          state.raise(\"Unterminated group\");\n        }\n      }\n      state.pos = start;\n    }\n    return false\n  };\n  pp$1.regexp_eatCapturingGroup = function(state) {\n    if (state.eat(0x28 /* ( */)) {\n      if (this.options.ecmaVersion >= 9) {\n        this.regexp_groupSpecifier(state);\n      } else if (state.current() === 0x3F /* ? */) {\n        state.raise(\"Invalid group\");\n      }\n      this.regexp_disjunction(state);\n      if (state.eat(0x29 /* ) */)) {\n        state.numCapturingParens += 1;\n        return true\n      }\n      state.raise(\"Unterminated group\");\n    }\n    return false\n  };\n  // RegularExpressionModifiers ::\n  //   [empty]\n  //   RegularExpressionModifiers RegularExpressionModifier\n  pp$1.regexp_eatModifiers = function(state) {\n    var modifiers = \"\";\n    var ch = 0;\n    while ((ch = state.current()) !== -1 && isRegularExpressionModifier(ch)) {\n      modifiers += codePointToString(ch);\n      state.advance();\n    }\n    return modifiers\n  };\n  // RegularExpressionModifier :: one of\n  //   `i` `m` `s`\n  function isRegularExpressionModifier(ch) {\n    return ch === 0x69 /* i */ || ch === 0x6d /* m */ || ch === 0x73 /* s */\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\n  pp$1.regexp_eatExtendedAtom = function(state) {\n    return (\n      state.eat(0x2E /* . */) ||\n      this.regexp_eatReverseSolidusAtomEscape(state) ||\n      this.regexp_eatCharacterClass(state) ||\n      this.regexp_eatUncapturingGroup(state) ||\n      this.regexp_eatCapturingGroup(state) ||\n      this.regexp_eatInvalidBracedQuantifier(state) ||\n      this.regexp_eatExtendedPatternCharacter(state)\n    )\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\n  pp$1.regexp_eatInvalidBracedQuantifier = function(state) {\n    if (this.regexp_eatBracedQuantifier(state, true)) {\n      state.raise(\"Nothing to repeat\");\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\n  pp$1.regexp_eatSyntaxCharacter = function(state) {\n    var ch = state.current();\n    if (isSyntaxCharacter(ch)) {\n      state.lastIntValue = ch;\n      state.advance();\n      return true\n    }\n    return false\n  };\n  function isSyntaxCharacter(ch) {\n    return (\n      ch === 0x24 /* $ */ ||\n      ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n      ch === 0x2E /* . */ ||\n      ch === 0x3F /* ? */ ||\n      ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n      ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n    )\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n  // But eat eager.\n  pp$1.regexp_eatPatternCharacters = function(state) {\n    var start = state.pos;\n    var ch = 0;\n    while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n      state.advance();\n    }\n    return state.pos !== start\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\n  pp$1.regexp_eatExtendedPatternCharacter = function(state) {\n    var ch = state.current();\n    if (\n      ch !== -1 &&\n      ch !== 0x24 /* $ */ &&\n      !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n      ch !== 0x2E /* . */ &&\n      ch !== 0x3F /* ? */ &&\n      ch !== 0x5B /* [ */ &&\n      ch !== 0x5E /* ^ */ &&\n      ch !== 0x7C /* | */\n    ) {\n      state.advance();\n      return true\n    }\n    return false\n  };\n\n  // GroupSpecifier ::\n  //   [empty]\n  //   `?` GroupName\n  pp$1.regexp_groupSpecifier = function(state) {\n    if (state.eat(0x3F /* ? */)) {\n      if (!this.regexp_eatGroupName(state)) { state.raise(\"Invalid group\"); }\n      var trackDisjunction = this.options.ecmaVersion >= 16;\n      var known = state.groupNames[state.lastStringValue];\n      if (known) {\n        if (trackDisjunction) {\n          for (var i = 0, list = known; i < list.length; i += 1) {\n            var altID = list[i];\n\n            if (!altID.separatedFrom(state.branchID))\n              { state.raise(\"Duplicate capture group name\"); }\n          }\n        } else {\n          state.raise(\"Duplicate capture group name\");\n        }\n      }\n      if (trackDisjunction) {\n        (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID);\n      } else {\n        state.groupNames[state.lastStringValue] = true;\n      }\n    }\n  };\n\n  // GroupName ::\n  //   `<` RegExpIdentifierName `>`\n  // Note: this updates `state.lastStringValue` property with the eaten name.\n  pp$1.regexp_eatGroupName = function(state) {\n    state.lastStringValue = \"\";\n    if (state.eat(0x3C /* < */)) {\n      if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n        return true\n      }\n      state.raise(\"Invalid capture group name\");\n    }\n    return false\n  };\n\n  // RegExpIdentifierName ::\n  //   RegExpIdentifierStart\n  //   RegExpIdentifierName RegExpIdentifierPart\n  // Note: this updates `state.lastStringValue` property with the eaten name.\n  pp$1.regexp_eatRegExpIdentifierName = function(state) {\n    state.lastStringValue = \"\";\n    if (this.regexp_eatRegExpIdentifierStart(state)) {\n      state.lastStringValue += codePointToString(state.lastIntValue);\n      while (this.regexp_eatRegExpIdentifierPart(state)) {\n        state.lastStringValue += codePointToString(state.lastIntValue);\n      }\n      return true\n    }\n    return false\n  };\n\n  // RegExpIdentifierStart ::\n  //   UnicodeIDStart\n  //   `$`\n  //   `_`\n  //   `\\` RegExpUnicodeEscapeSequence[+U]\n  pp$1.regexp_eatRegExpIdentifierStart = function(state) {\n    var start = state.pos;\n    var forceU = this.options.ecmaVersion >= 11;\n    var ch = state.current(forceU);\n    state.advance(forceU);\n\n    if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n      ch = state.lastIntValue;\n    }\n    if (isRegExpIdentifierStart(ch)) {\n      state.lastIntValue = ch;\n      return true\n    }\n\n    state.pos = start;\n    return false\n  };\n  function isRegExpIdentifierStart(ch) {\n    return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n  }\n\n  // RegExpIdentifierPart ::\n  //   UnicodeIDContinue\n  //   `$`\n  //   `_`\n  //   `\\` RegExpUnicodeEscapeSequence[+U]\n  //   <ZWNJ>\n  //   <ZWJ>\n  pp$1.regexp_eatRegExpIdentifierPart = function(state) {\n    var start = state.pos;\n    var forceU = this.options.ecmaVersion >= 11;\n    var ch = state.current(forceU);\n    state.advance(forceU);\n\n    if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n      ch = state.lastIntValue;\n    }\n    if (isRegExpIdentifierPart(ch)) {\n      state.lastIntValue = ch;\n      return true\n    }\n\n    state.pos = start;\n    return false\n  };\n  function isRegExpIdentifierPart(ch) {\n    return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\n  pp$1.regexp_eatAtomEscape = function(state) {\n    if (\n      this.regexp_eatBackReference(state) ||\n      this.regexp_eatCharacterClassEscape(state) ||\n      this.regexp_eatCharacterEscape(state) ||\n      (state.switchN && this.regexp_eatKGroupName(state))\n    ) {\n      return true\n    }\n    if (state.switchU) {\n      // Make the same message as V8.\n      if (state.current() === 0x63 /* c */) {\n        state.raise(\"Invalid unicode escape\");\n      }\n      state.raise(\"Invalid escape\");\n    }\n    return false\n  };\n  pp$1.regexp_eatBackReference = function(state) {\n    var start = state.pos;\n    if (this.regexp_eatDecimalEscape(state)) {\n      var n = state.lastIntValue;\n      if (state.switchU) {\n        // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n        if (n > state.maxBackReference) {\n          state.maxBackReference = n;\n        }\n        return true\n      }\n      if (n <= state.numCapturingParens) {\n        return true\n      }\n      state.pos = start;\n    }\n    return false\n  };\n  pp$1.regexp_eatKGroupName = function(state) {\n    if (state.eat(0x6B /* k */)) {\n      if (this.regexp_eatGroupName(state)) {\n        state.backReferenceNames.push(state.lastStringValue);\n        return true\n      }\n      state.raise(\"Invalid named reference\");\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\n  pp$1.regexp_eatCharacterEscape = function(state) {\n    return (\n      this.regexp_eatControlEscape(state) ||\n      this.regexp_eatCControlLetter(state) ||\n      this.regexp_eatZero(state) ||\n      this.regexp_eatHexEscapeSequence(state) ||\n      this.regexp_eatRegExpUnicodeEscapeSequence(state, false) ||\n      (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n      this.regexp_eatIdentityEscape(state)\n    )\n  };\n  pp$1.regexp_eatCControlLetter = function(state) {\n    var start = state.pos;\n    if (state.eat(0x63 /* c */)) {\n      if (this.regexp_eatControlLetter(state)) {\n        return true\n      }\n      state.pos = start;\n    }\n    return false\n  };\n  pp$1.regexp_eatZero = function(state) {\n    if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n      state.lastIntValue = 0;\n      state.advance();\n      return true\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\n  pp$1.regexp_eatControlEscape = function(state) {\n    var ch = state.current();\n    if (ch === 0x74 /* t */) {\n      state.lastIntValue = 0x09; /* \\t */\n      state.advance();\n      return true\n    }\n    if (ch === 0x6E /* n */) {\n      state.lastIntValue = 0x0A; /* \\n */\n      state.advance();\n      return true\n    }\n    if (ch === 0x76 /* v */) {\n      state.lastIntValue = 0x0B; /* \\v */\n      state.advance();\n      return true\n    }\n    if (ch === 0x66 /* f */) {\n      state.lastIntValue = 0x0C; /* \\f */\n      state.advance();\n      return true\n    }\n    if (ch === 0x72 /* r */) {\n      state.lastIntValue = 0x0D; /* \\r */\n      state.advance();\n      return true\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\n  pp$1.regexp_eatControlLetter = function(state) {\n    var ch = state.current();\n    if (isControlLetter(ch)) {\n      state.lastIntValue = ch % 0x20;\n      state.advance();\n      return true\n    }\n    return false\n  };\n  function isControlLetter(ch) {\n    return (\n      (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n      (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n    )\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\n  pp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n    var start = state.pos;\n    var switchU = forceU || state.switchU;\n\n    if (state.eat(0x75 /* u */)) {\n      if (this.regexp_eatFixedHexDigits(state, 4)) {\n        var lead = state.lastIntValue;\n        if (switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n          var leadSurrogateEnd = state.pos;\n          if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n            var trail = state.lastIntValue;\n            if (trail >= 0xDC00 && trail <= 0xDFFF) {\n              state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n              return true\n            }\n          }\n          state.pos = leadSurrogateEnd;\n          state.lastIntValue = lead;\n        }\n        return true\n      }\n      if (\n        switchU &&\n        state.eat(0x7B /* { */) &&\n        this.regexp_eatHexDigits(state) &&\n        state.eat(0x7D /* } */) &&\n        isValidUnicode(state.lastIntValue)\n      ) {\n        return true\n      }\n      if (switchU) {\n        state.raise(\"Invalid unicode escape\");\n      }\n      state.pos = start;\n    }\n\n    return false\n  };\n  function isValidUnicode(ch) {\n    return ch >= 0 && ch <= 0x10FFFF\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\n  pp$1.regexp_eatIdentityEscape = function(state) {\n    if (state.switchU) {\n      if (this.regexp_eatSyntaxCharacter(state)) {\n        return true\n      }\n      if (state.eat(0x2F /* / */)) {\n        state.lastIntValue = 0x2F; /* / */\n        return true\n      }\n      return false\n    }\n\n    var ch = state.current();\n    if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n      state.lastIntValue = ch;\n      state.advance();\n      return true\n    }\n\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\n  pp$1.regexp_eatDecimalEscape = function(state) {\n    state.lastIntValue = 0;\n    var ch = state.current();\n    if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n      do {\n        state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n        state.advance();\n      } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n      return true\n    }\n    return false\n  };\n\n  // Return values used by character set parsing methods, needed to\n  // forbid negation of sets that can match strings.\n  var CharSetNone = 0; // Nothing parsed\n  var CharSetOk = 1; // Construct parsed, cannot contain strings\n  var CharSetString = 2; // Construct parsed, can contain strings\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\n  pp$1.regexp_eatCharacterClassEscape = function(state) {\n    var ch = state.current();\n\n    if (isCharacterClassEscape(ch)) {\n      state.lastIntValue = -1;\n      state.advance();\n      return CharSetOk\n    }\n\n    var negate = false;\n    if (\n      state.switchU &&\n      this.options.ecmaVersion >= 9 &&\n      ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */)\n    ) {\n      state.lastIntValue = -1;\n      state.advance();\n      var result;\n      if (\n        state.eat(0x7B /* { */) &&\n        (result = this.regexp_eatUnicodePropertyValueExpression(state)) &&\n        state.eat(0x7D /* } */)\n      ) {\n        if (negate && result === CharSetString) { state.raise(\"Invalid property name\"); }\n        return result\n      }\n      state.raise(\"Invalid property name\");\n    }\n\n    return CharSetNone\n  };\n\n  function isCharacterClassEscape(ch) {\n    return (\n      ch === 0x64 /* d */ ||\n      ch === 0x44 /* D */ ||\n      ch === 0x73 /* s */ ||\n      ch === 0x53 /* S */ ||\n      ch === 0x77 /* w */ ||\n      ch === 0x57 /* W */\n    )\n  }\n\n  // UnicodePropertyValueExpression ::\n  //   UnicodePropertyName `=` UnicodePropertyValue\n  //   LoneUnicodePropertyNameOrValue\n  pp$1.regexp_eatUnicodePropertyValueExpression = function(state) {\n    var start = state.pos;\n\n    // UnicodePropertyName `=` UnicodePropertyValue\n    if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n      var name = state.lastStringValue;\n      if (this.regexp_eatUnicodePropertyValue(state)) {\n        var value = state.lastStringValue;\n        this.regexp_validateUnicodePropertyNameAndValue(state, name, value);\n        return CharSetOk\n      }\n    }\n    state.pos = start;\n\n    // LoneUnicodePropertyNameOrValue\n    if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n      var nameOrValue = state.lastStringValue;\n      return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue)\n    }\n    return CharSetNone\n  };\n\n  pp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n    if (!hasOwn(state.unicodeProperties.nonBinary, name))\n      { state.raise(\"Invalid property name\"); }\n    if (!state.unicodeProperties.nonBinary[name].test(value))\n      { state.raise(\"Invalid property value\"); }\n  };\n\n  pp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n    if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk }\n    if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString }\n    state.raise(\"Invalid property name\");\n  };\n\n  // UnicodePropertyName ::\n  //   UnicodePropertyNameCharacters\n  pp$1.regexp_eatUnicodePropertyName = function(state) {\n    var ch = 0;\n    state.lastStringValue = \"\";\n    while (isUnicodePropertyNameCharacter(ch = state.current())) {\n      state.lastStringValue += codePointToString(ch);\n      state.advance();\n    }\n    return state.lastStringValue !== \"\"\n  };\n\n  function isUnicodePropertyNameCharacter(ch) {\n    return isControlLetter(ch) || ch === 0x5F /* _ */\n  }\n\n  // UnicodePropertyValue ::\n  //   UnicodePropertyValueCharacters\n  pp$1.regexp_eatUnicodePropertyValue = function(state) {\n    var ch = 0;\n    state.lastStringValue = \"\";\n    while (isUnicodePropertyValueCharacter(ch = state.current())) {\n      state.lastStringValue += codePointToString(ch);\n      state.advance();\n    }\n    return state.lastStringValue !== \"\"\n  };\n  function isUnicodePropertyValueCharacter(ch) {\n    return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n  }\n\n  // LoneUnicodePropertyNameOrValue ::\n  //   UnicodePropertyValueCharacters\n  pp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n    return this.regexp_eatUnicodePropertyValue(state)\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\n  pp$1.regexp_eatCharacterClass = function(state) {\n    if (state.eat(0x5B /* [ */)) {\n      var negate = state.eat(0x5E /* ^ */);\n      var result = this.regexp_classContents(state);\n      if (!state.eat(0x5D /* ] */))\n        { state.raise(\"Unterminated character class\"); }\n      if (negate && result === CharSetString)\n        { state.raise(\"Negated character class may contain strings\"); }\n      return true\n    }\n    return false\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassContents\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\n  pp$1.regexp_classContents = function(state) {\n    if (state.current() === 0x5D /* ] */) { return CharSetOk }\n    if (state.switchV) { return this.regexp_classSetExpression(state) }\n    this.regexp_nonEmptyClassRanges(state);\n    return CharSetOk\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\n  pp$1.regexp_nonEmptyClassRanges = function(state) {\n    while (this.regexp_eatClassAtom(state)) {\n      var left = state.lastIntValue;\n      if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n        var right = state.lastIntValue;\n        if (state.switchU && (left === -1 || right === -1)) {\n          state.raise(\"Invalid character class\");\n        }\n        if (left !== -1 && right !== -1 && left > right) {\n          state.raise(\"Range out of order in character class\");\n        }\n      }\n    }\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\n  pp$1.regexp_eatClassAtom = function(state) {\n    var start = state.pos;\n\n    if (state.eat(0x5C /* \\ */)) {\n      if (this.regexp_eatClassEscape(state)) {\n        return true\n      }\n      if (state.switchU) {\n        // Make the same message as V8.\n        var ch$1 = state.current();\n        if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) {\n          state.raise(\"Invalid class escape\");\n        }\n        state.raise(\"Invalid escape\");\n      }\n      state.pos = start;\n    }\n\n    var ch = state.current();\n    if (ch !== 0x5D /* ] */) {\n      state.lastIntValue = ch;\n      state.advance();\n      return true\n    }\n\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\n  pp$1.regexp_eatClassEscape = function(state) {\n    var start = state.pos;\n\n    if (state.eat(0x62 /* b */)) {\n      state.lastIntValue = 0x08; /* <BS> */\n      return true\n    }\n\n    if (state.switchU && state.eat(0x2D /* - */)) {\n      state.lastIntValue = 0x2D; /* - */\n      return true\n    }\n\n    if (!state.switchU && state.eat(0x63 /* c */)) {\n      if (this.regexp_eatClassControlLetter(state)) {\n        return true\n      }\n      state.pos = start;\n    }\n\n    return (\n      this.regexp_eatCharacterClassEscape(state) ||\n      this.regexp_eatCharacterEscape(state)\n    )\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassSetExpression\n  // https://tc39.es/ecma262/#prod-ClassUnion\n  // https://tc39.es/ecma262/#prod-ClassIntersection\n  // https://tc39.es/ecma262/#prod-ClassSubtraction\n  pp$1.regexp_classSetExpression = function(state) {\n    var result = CharSetOk, subResult;\n    if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) {\n      if (subResult === CharSetString) { result = CharSetString; }\n      // https://tc39.es/ecma262/#prod-ClassIntersection\n      var start = state.pos;\n      while (state.eatChars([0x26, 0x26] /* && */)) {\n        if (\n          state.current() !== 0x26 /* & */ &&\n          (subResult = this.regexp_eatClassSetOperand(state))\n        ) {\n          if (subResult !== CharSetString) { result = CharSetOk; }\n          continue\n        }\n        state.raise(\"Invalid character in character class\");\n      }\n      if (start !== state.pos) { return result }\n      // https://tc39.es/ecma262/#prod-ClassSubtraction\n      while (state.eatChars([0x2D, 0x2D] /* -- */)) {\n        if (this.regexp_eatClassSetOperand(state)) { continue }\n        state.raise(\"Invalid character in character class\");\n      }\n      if (start !== state.pos) { return result }\n    } else {\n      state.raise(\"Invalid character in character class\");\n    }\n    // https://tc39.es/ecma262/#prod-ClassUnion\n    for (;;) {\n      if (this.regexp_eatClassSetRange(state)) { continue }\n      subResult = this.regexp_eatClassSetOperand(state);\n      if (!subResult) { return result }\n      if (subResult === CharSetString) { result = CharSetString; }\n    }\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassSetRange\n  pp$1.regexp_eatClassSetRange = function(state) {\n    var start = state.pos;\n    if (this.regexp_eatClassSetCharacter(state)) {\n      var left = state.lastIntValue;\n      if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) {\n        var right = state.lastIntValue;\n        if (left !== -1 && right !== -1 && left > right) {\n          state.raise(\"Range out of order in character class\");\n        }\n        return true\n      }\n      state.pos = start;\n    }\n    return false\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassSetOperand\n  pp$1.regexp_eatClassSetOperand = function(state) {\n    if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk }\n    return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state)\n  };\n\n  // https://tc39.es/ecma262/#prod-NestedClass\n  pp$1.regexp_eatNestedClass = function(state) {\n    var start = state.pos;\n    if (state.eat(0x5B /* [ */)) {\n      var negate = state.eat(0x5E /* ^ */);\n      var result = this.regexp_classContents(state);\n      if (state.eat(0x5D /* ] */)) {\n        if (negate && result === CharSetString) {\n          state.raise(\"Negated character class may contain strings\");\n        }\n        return result\n      }\n      state.pos = start;\n    }\n    if (state.eat(0x5C /* \\ */)) {\n      var result$1 = this.regexp_eatCharacterClassEscape(state);\n      if (result$1) {\n        return result$1\n      }\n      state.pos = start;\n    }\n    return null\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassStringDisjunction\n  pp$1.regexp_eatClassStringDisjunction = function(state) {\n    var start = state.pos;\n    if (state.eatChars([0x5C, 0x71] /* \\q */)) {\n      if (state.eat(0x7B /* { */)) {\n        var result = this.regexp_classStringDisjunctionContents(state);\n        if (state.eat(0x7D /* } */)) {\n          return result\n        }\n      } else {\n        // Make the same message as V8.\n        state.raise(\"Invalid escape\");\n      }\n      state.pos = start;\n    }\n    return null\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents\n  pp$1.regexp_classStringDisjunctionContents = function(state) {\n    var result = this.regexp_classString(state);\n    while (state.eat(0x7C /* | */)) {\n      if (this.regexp_classString(state) === CharSetString) { result = CharSetString; }\n    }\n    return result\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassString\n  // https://tc39.es/ecma262/#prod-NonEmptyClassString\n  pp$1.regexp_classString = function(state) {\n    var count = 0;\n    while (this.regexp_eatClassSetCharacter(state)) { count++; }\n    return count === 1 ? CharSetOk : CharSetString\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassSetCharacter\n  pp$1.regexp_eatClassSetCharacter = function(state) {\n    var start = state.pos;\n    if (state.eat(0x5C /* \\ */)) {\n      if (\n        this.regexp_eatCharacterEscape(state) ||\n        this.regexp_eatClassSetReservedPunctuator(state)\n      ) {\n        return true\n      }\n      if (state.eat(0x62 /* b */)) {\n        state.lastIntValue = 0x08; /* <BS> */\n        return true\n      }\n      state.pos = start;\n      return false\n    }\n    var ch = state.current();\n    if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false }\n    if (isClassSetSyntaxCharacter(ch)) { return false }\n    state.advance();\n    state.lastIntValue = ch;\n    return true\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator\n  function isClassSetReservedDoublePunctuatorCharacter(ch) {\n    return (\n      ch === 0x21 /* ! */ ||\n      ch >= 0x23 /* # */ && ch <= 0x26 /* & */ ||\n      ch >= 0x2A /* * */ && ch <= 0x2C /* , */ ||\n      ch === 0x2E /* . */ ||\n      ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ ||\n      ch === 0x5E /* ^ */ ||\n      ch === 0x60 /* ` */ ||\n      ch === 0x7E /* ~ */\n    )\n  }\n\n  // https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter\n  function isClassSetSyntaxCharacter(ch) {\n    return (\n      ch === 0x28 /* ( */ ||\n      ch === 0x29 /* ) */ ||\n      ch === 0x2D /* - */ ||\n      ch === 0x2F /* / */ ||\n      ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ ||\n      ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n    )\n  }\n\n  // https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\n  pp$1.regexp_eatClassSetReservedPunctuator = function(state) {\n    var ch = state.current();\n    if (isClassSetReservedPunctuator(ch)) {\n      state.lastIntValue = ch;\n      state.advance();\n      return true\n    }\n    return false\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\n  function isClassSetReservedPunctuator(ch) {\n    return (\n      ch === 0x21 /* ! */ ||\n      ch === 0x23 /* # */ ||\n      ch === 0x25 /* % */ ||\n      ch === 0x26 /* & */ ||\n      ch === 0x2C /* , */ ||\n      ch === 0x2D /* - */ ||\n      ch >= 0x3A /* : */ && ch <= 0x3E /* > */ ||\n      ch === 0x40 /* @ */ ||\n      ch === 0x60 /* ` */ ||\n      ch === 0x7E /* ~ */\n    )\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\n  pp$1.regexp_eatClassControlLetter = function(state) {\n    var ch = state.current();\n    if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n      state.lastIntValue = ch % 0x20;\n      state.advance();\n      return true\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\n  pp$1.regexp_eatHexEscapeSequence = function(state) {\n    var start = state.pos;\n    if (state.eat(0x78 /* x */)) {\n      if (this.regexp_eatFixedHexDigits(state, 2)) {\n        return true\n      }\n      if (state.switchU) {\n        state.raise(\"Invalid escape\");\n      }\n      state.pos = start;\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\n  pp$1.regexp_eatDecimalDigits = function(state) {\n    var start = state.pos;\n    var ch = 0;\n    state.lastIntValue = 0;\n    while (isDecimalDigit(ch = state.current())) {\n      state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n      state.advance();\n    }\n    return state.pos !== start\n  };\n  function isDecimalDigit(ch) {\n    return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\n  pp$1.regexp_eatHexDigits = function(state) {\n    var start = state.pos;\n    var ch = 0;\n    state.lastIntValue = 0;\n    while (isHexDigit(ch = state.current())) {\n      state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n      state.advance();\n    }\n    return state.pos !== start\n  };\n  function isHexDigit(ch) {\n    return (\n      (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n      (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n      (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n    )\n  }\n  function hexToInt(ch) {\n    if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n      return 10 + (ch - 0x41 /* A */)\n    }\n    if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n      return 10 + (ch - 0x61 /* a */)\n    }\n    return ch - 0x30 /* 0 */\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n  // Allows only 0-377(octal) i.e. 0-255(decimal).\n  pp$1.regexp_eatLegacyOctalEscapeSequence = function(state) {\n    if (this.regexp_eatOctalDigit(state)) {\n      var n1 = state.lastIntValue;\n      if (this.regexp_eatOctalDigit(state)) {\n        var n2 = state.lastIntValue;\n        if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n          state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue;\n        } else {\n          state.lastIntValue = n1 * 8 + n2;\n        }\n      } else {\n        state.lastIntValue = n1;\n      }\n      return true\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\n  pp$1.regexp_eatOctalDigit = function(state) {\n    var ch = state.current();\n    if (isOctalDigit(ch)) {\n      state.lastIntValue = ch - 0x30; /* 0 */\n      state.advance();\n      return true\n    }\n    state.lastIntValue = 0;\n    return false\n  };\n  function isOctalDigit(ch) {\n    return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n  // And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\n  pp$1.regexp_eatFixedHexDigits = function(state, length) {\n    var start = state.pos;\n    state.lastIntValue = 0;\n    for (var i = 0; i < length; ++i) {\n      var ch = state.current();\n      if (!isHexDigit(ch)) {\n        state.pos = start;\n        return false\n      }\n      state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n      state.advance();\n    }\n    return true\n  };\n\n  // Object type used to represent tokens. Note that normally, tokens\n  // simply exist as properties on the parser object. This is only\n  // used for the onToken callback and the external tokenizer.\n\n  var Token = function Token(p) {\n    this.type = p.type;\n    this.value = p.value;\n    this.start = p.start;\n    this.end = p.end;\n    if (p.options.locations)\n      { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); }\n    if (p.options.ranges)\n      { this.range = [p.start, p.end]; }\n  };\n\n  // ## Tokenizer\n\n  var pp = Parser.prototype;\n\n  // Move to the next token\n\n  pp.next = function(ignoreEscapeSequenceInKeyword) {\n    if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc)\n      { this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + this.type.keyword); }\n    if (this.options.onToken)\n      { this.options.onToken(new Token(this)); }\n\n    this.lastTokEnd = this.end;\n    this.lastTokStart = this.start;\n    this.lastTokEndLoc = this.endLoc;\n    this.lastTokStartLoc = this.startLoc;\n    this.nextToken();\n  };\n\n  pp.getToken = function() {\n    this.next();\n    return new Token(this)\n  };\n\n  // If we're in an ES6 environment, make parsers iterable\n  if (typeof Symbol !== \"undefined\")\n    { pp[Symbol.iterator] = function() {\n      var this$1$1 = this;\n\n      return {\n        next: function () {\n          var token = this$1$1.getToken();\n          return {\n            done: token.type === types$1.eof,\n            value: token\n          }\n        }\n      }\n    }; }\n\n  // Toggle strict mode. Re-reads the next number or string to please\n  // pedantic tests (`\"use strict\"; 010;` should fail).\n\n  // Read a single token, updating the parser object's token-related\n  // properties.\n\n  pp.nextToken = function() {\n    var curContext = this.curContext();\n    if (!curContext || !curContext.preserveSpace) { this.skipSpace(); }\n\n    this.start = this.pos;\n    if (this.options.locations) { this.startLoc = this.curPosition(); }\n    if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) }\n\n    if (curContext.override) { return curContext.override(this) }\n    else { this.readToken(this.fullCharCodeAtPos()); }\n  };\n\n  pp.readToken = function(code) {\n    // Identifier or keyword. '\\uXXXX' sequences are allowed in\n    // identifiers, so '\\' also dispatches to that.\n    if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n      { return this.readWord() }\n\n    return this.getTokenFromCode(code)\n  };\n\n  pp.fullCharCodeAt = function(pos) {\n    var code = this.input.charCodeAt(pos);\n    if (code <= 0xd7ff || code >= 0xdc00) { return code }\n    var next = this.input.charCodeAt(pos + 1);\n    return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00\n  };\n\n  pp.fullCharCodeAtPos = function() {\n    return this.fullCharCodeAt(this.pos)\n  };\n\n  pp.skipBlockComment = function() {\n    var startLoc = this.options.onComment && this.curPosition();\n    var start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2);\n    if (end === -1) { this.raise(this.pos - 2, \"Unterminated comment\"); }\n    this.pos = end + 2;\n    if (this.options.locations) {\n      for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) {\n        ++this.curLine;\n        pos = this.lineStart = nextBreak;\n      }\n    }\n    if (this.options.onComment)\n      { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n                             startLoc, this.curPosition()); }\n  };\n\n  pp.skipLineComment = function(startSkip) {\n    var start = this.pos;\n    var startLoc = this.options.onComment && this.curPosition();\n    var ch = this.input.charCodeAt(this.pos += startSkip);\n    while (this.pos < this.input.length && !isNewLine(ch)) {\n      ch = this.input.charCodeAt(++this.pos);\n    }\n    if (this.options.onComment)\n      { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n                             startLoc, this.curPosition()); }\n  };\n\n  // Called at the start of the parse and after every token. Skips\n  // whitespace and comments, and.\n\n  pp.skipSpace = function() {\n    loop: while (this.pos < this.input.length) {\n      var ch = this.input.charCodeAt(this.pos);\n      switch (ch) {\n      case 32: case 160: // ' '\n        ++this.pos;\n        break\n      case 13:\n        if (this.input.charCodeAt(this.pos + 1) === 10) {\n          ++this.pos;\n        }\n      case 10: case 8232: case 8233:\n        ++this.pos;\n        if (this.options.locations) {\n          ++this.curLine;\n          this.lineStart = this.pos;\n        }\n        break\n      case 47: // '/'\n        switch (this.input.charCodeAt(this.pos + 1)) {\n        case 42: // '*'\n          this.skipBlockComment();\n          break\n        case 47:\n          this.skipLineComment(2);\n          break\n        default:\n          break loop\n        }\n        break\n      default:\n        if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n          ++this.pos;\n        } else {\n          break loop\n        }\n      }\n    }\n  };\n\n  // Called at the end of every token. Sets `end`, `val`, and\n  // maintains `context` and `exprAllowed`, and skips the space after\n  // the token, so that the next one's `start` will point at the\n  // right position.\n\n  pp.finishToken = function(type, val) {\n    this.end = this.pos;\n    if (this.options.locations) { this.endLoc = this.curPosition(); }\n    var prevType = this.type;\n    this.type = type;\n    this.value = val;\n\n    this.updateContext(prevType);\n  };\n\n  // ### Token reading\n\n  // This is the function that is called to fetch the next token. It\n  // is somewhat obscure, because it works in character codes rather\n  // than characters, and because operator parsing has been inlined\n  // into it.\n  //\n  // All in the name of speed.\n  //\n  pp.readToken_dot = function() {\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (next >= 48 && next <= 57) { return this.readNumber(true) }\n    var next2 = this.input.charCodeAt(this.pos + 2);\n    if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n      this.pos += 3;\n      return this.finishToken(types$1.ellipsis)\n    } else {\n      ++this.pos;\n      return this.finishToken(types$1.dot)\n    }\n  };\n\n  pp.readToken_slash = function() { // '/'\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n    if (next === 61) { return this.finishOp(types$1.assign, 2) }\n    return this.finishOp(types$1.slash, 1)\n  };\n\n  pp.readToken_mult_modulo_exp = function(code) { // '%*'\n    var next = this.input.charCodeAt(this.pos + 1);\n    var size = 1;\n    var tokentype = code === 42 ? types$1.star : types$1.modulo;\n\n    // exponentiation operator ** and **=\n    if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n      ++size;\n      tokentype = types$1.starstar;\n      next = this.input.charCodeAt(this.pos + 2);\n    }\n\n    if (next === 61) { return this.finishOp(types$1.assign, size + 1) }\n    return this.finishOp(tokentype, size)\n  };\n\n  pp.readToken_pipe_amp = function(code) { // '|&'\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (next === code) {\n      if (this.options.ecmaVersion >= 12) {\n        var next2 = this.input.charCodeAt(this.pos + 2);\n        if (next2 === 61) { return this.finishOp(types$1.assign, 3) }\n      }\n      return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2)\n    }\n    if (next === 61) { return this.finishOp(types$1.assign, 2) }\n    return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1)\n  };\n\n  pp.readToken_caret = function() { // '^'\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (next === 61) { return this.finishOp(types$1.assign, 2) }\n    return this.finishOp(types$1.bitwiseXOR, 1)\n  };\n\n  pp.readToken_plus_min = function(code) { // '+-'\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (next === code) {\n      if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n          (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n        // A `-->` line comment\n        this.skipLineComment(3);\n        this.skipSpace();\n        return this.nextToken()\n      }\n      return this.finishOp(types$1.incDec, 2)\n    }\n    if (next === 61) { return this.finishOp(types$1.assign, 2) }\n    return this.finishOp(types$1.plusMin, 1)\n  };\n\n  pp.readToken_lt_gt = function(code) { // '<>'\n    var next = this.input.charCodeAt(this.pos + 1);\n    var size = 1;\n    if (next === code) {\n      size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n      if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) }\n      return this.finishOp(types$1.bitShift, size)\n    }\n    if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n        this.input.charCodeAt(this.pos + 3) === 45) {\n      // `<!--`, an XML-style comment that should be interpreted as a line comment\n      this.skipLineComment(4);\n      this.skipSpace();\n      return this.nextToken()\n    }\n    if (next === 61) { size = 2; }\n    return this.finishOp(types$1.relational, size)\n  };\n\n  pp.readToken_eq_excl = function(code) { // '=!'\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (next === 61) { return this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) }\n    if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n      this.pos += 2;\n      return this.finishToken(types$1.arrow)\n    }\n    return this.finishOp(code === 61 ? types$1.eq : types$1.prefix, 1)\n  };\n\n  pp.readToken_question = function() { // '?'\n    var ecmaVersion = this.options.ecmaVersion;\n    if (ecmaVersion >= 11) {\n      var next = this.input.charCodeAt(this.pos + 1);\n      if (next === 46) {\n        var next2 = this.input.charCodeAt(this.pos + 2);\n        if (next2 < 48 || next2 > 57) { return this.finishOp(types$1.questionDot, 2) }\n      }\n      if (next === 63) {\n        if (ecmaVersion >= 12) {\n          var next2$1 = this.input.charCodeAt(this.pos + 2);\n          if (next2$1 === 61) { return this.finishOp(types$1.assign, 3) }\n        }\n        return this.finishOp(types$1.coalesce, 2)\n      }\n    }\n    return this.finishOp(types$1.question, 1)\n  };\n\n  pp.readToken_numberSign = function() { // '#'\n    var ecmaVersion = this.options.ecmaVersion;\n    var code = 35; // '#'\n    if (ecmaVersion >= 13) {\n      ++this.pos;\n      code = this.fullCharCodeAtPos();\n      if (isIdentifierStart(code, true) || code === 92 /* '\\' */) {\n        return this.finishToken(types$1.privateId, this.readWord1())\n      }\n    }\n\n    this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n  };\n\n  pp.getTokenFromCode = function(code) {\n    switch (code) {\n    // The interpretation of a dot depends on whether it is followed\n    // by a digit or another two dots.\n    case 46: // '.'\n      return this.readToken_dot()\n\n    // Punctuation tokens.\n    case 40: ++this.pos; return this.finishToken(types$1.parenL)\n    case 41: ++this.pos; return this.finishToken(types$1.parenR)\n    case 59: ++this.pos; return this.finishToken(types$1.semi)\n    case 44: ++this.pos; return this.finishToken(types$1.comma)\n    case 91: ++this.pos; return this.finishToken(types$1.bracketL)\n    case 93: ++this.pos; return this.finishToken(types$1.bracketR)\n    case 123: ++this.pos; return this.finishToken(types$1.braceL)\n    case 125: ++this.pos; return this.finishToken(types$1.braceR)\n    case 58: ++this.pos; return this.finishToken(types$1.colon)\n\n    case 96: // '`'\n      if (this.options.ecmaVersion < 6) { break }\n      ++this.pos;\n      return this.finishToken(types$1.backQuote)\n\n    case 48: // '0'\n      var next = this.input.charCodeAt(this.pos + 1);\n      if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number\n      if (this.options.ecmaVersion >= 6) {\n        if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number\n        if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number\n      }\n\n    // Anything else beginning with a digit is an integer, octal\n    // number, or float.\n    case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n      return this.readNumber(false)\n\n    // Quotes produce strings.\n    case 34: case 39: // '\"', \"'\"\n      return this.readString(code)\n\n    // Operators are parsed inline in tiny state machines. '=' (61) is\n    // often referred to. `finishOp` simply skips the amount of\n    // characters it is given as second argument, and returns a token\n    // of the type given by its first argument.\n    case 47: // '/'\n      return this.readToken_slash()\n\n    case 37: case 42: // '%*'\n      return this.readToken_mult_modulo_exp(code)\n\n    case 124: case 38: // '|&'\n      return this.readToken_pipe_amp(code)\n\n    case 94: // '^'\n      return this.readToken_caret()\n\n    case 43: case 45: // '+-'\n      return this.readToken_plus_min(code)\n\n    case 60: case 62: // '<>'\n      return this.readToken_lt_gt(code)\n\n    case 61: case 33: // '=!'\n      return this.readToken_eq_excl(code)\n\n    case 63: // '?'\n      return this.readToken_question()\n\n    case 126: // '~'\n      return this.finishOp(types$1.prefix, 1)\n\n    case 35: // '#'\n      return this.readToken_numberSign()\n    }\n\n    this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n  };\n\n  pp.finishOp = function(type, size) {\n    var str = this.input.slice(this.pos, this.pos + size);\n    this.pos += size;\n    return this.finishToken(type, str)\n  };\n\n  pp.readRegexp = function() {\n    var escaped, inClass, start = this.pos;\n    for (;;) {\n      if (this.pos >= this.input.length) { this.raise(start, \"Unterminated regular expression\"); }\n      var ch = this.input.charAt(this.pos);\n      if (lineBreak.test(ch)) { this.raise(start, \"Unterminated regular expression\"); }\n      if (!escaped) {\n        if (ch === \"[\") { inClass = true; }\n        else if (ch === \"]\" && inClass) { inClass = false; }\n        else if (ch === \"/\" && !inClass) { break }\n        escaped = ch === \"\\\\\";\n      } else { escaped = false; }\n      ++this.pos;\n    }\n    var pattern = this.input.slice(start, this.pos);\n    ++this.pos;\n    var flagsStart = this.pos;\n    var flags = this.readWord1();\n    if (this.containsEsc) { this.unexpected(flagsStart); }\n\n    // Validate pattern\n    var state = this.regexpState || (this.regexpState = new RegExpValidationState(this));\n    state.reset(start, pattern, flags);\n    this.validateRegExpFlags(state);\n    this.validateRegExpPattern(state);\n\n    // Create Literal#value property value.\n    var value = null;\n    try {\n      value = new RegExp(pattern, flags);\n    } catch (e) {\n      // ESTree requires null if it failed to instantiate RegExp object.\n      // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n    }\n\n    return this.finishToken(types$1.regexp, {pattern: pattern, flags: flags, value: value})\n  };\n\n  // Read an integer in the given radix. Return null if zero digits\n  // were read, the integer value otherwise. When `len` is given, this\n  // will return `null` unless the integer has exactly `len` digits.\n\n  pp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) {\n    // `len` is used for character escape sequences. In that case, disallow separators.\n    var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined;\n\n    // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b)\n    // and isn't fraction part nor exponent part. In that case, if the first digit\n    // is zero then disallow separators.\n    var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48;\n\n    var start = this.pos, total = 0, lastCode = 0;\n    for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) {\n      var code = this.input.charCodeAt(this.pos), val = (void 0);\n\n      if (allowSeparators && code === 95) {\n        if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed in legacy octal numeric literals\"); }\n        if (lastCode === 95) { this.raiseRecoverable(this.pos, \"Numeric separator must be exactly one underscore\"); }\n        if (i === 0) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed at the first of digits\"); }\n        lastCode = code;\n        continue\n      }\n\n      if (code >= 97) { val = code - 97 + 10; } // a\n      else if (code >= 65) { val = code - 65 + 10; } // A\n      else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9\n      else { val = Infinity; }\n      if (val >= radix) { break }\n      lastCode = code;\n      total = total * radix + val;\n    }\n\n    if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, \"Numeric separator is not allowed at the last of digits\"); }\n    if (this.pos === start || len != null && this.pos - start !== len) { return null }\n\n    return total\n  };\n\n  function stringToNumber(str, isLegacyOctalNumericLiteral) {\n    if (isLegacyOctalNumericLiteral) {\n      return parseInt(str, 8)\n    }\n\n    // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value.\n    return parseFloat(str.replace(/_/g, \"\"))\n  }\n\n  function stringToBigInt(str) {\n    if (typeof BigInt !== \"function\") {\n      return null\n    }\n\n    // `BigInt(value)` throws syntax error if the string contains numeric separators.\n    return BigInt(str.replace(/_/g, \"\"))\n  }\n\n  pp.readRadixNumber = function(radix) {\n    var start = this.pos;\n    this.pos += 2; // 0x\n    var val = this.readInt(radix);\n    if (val == null) { this.raise(this.start + 2, \"Expected number in radix \" + radix); }\n    if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) {\n      val = stringToBigInt(this.input.slice(start, this.pos));\n      ++this.pos;\n    } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n    return this.finishToken(types$1.num, val)\n  };\n\n  // Read an integer, octal integer, or floating-point number.\n\n  pp.readNumber = function(startsWithDot) {\n    var start = this.pos;\n    if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, \"Invalid number\"); }\n    var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n    if (octal && this.strict) { this.raise(start, \"Invalid number\"); }\n    var next = this.input.charCodeAt(this.pos);\n    if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {\n      var val$1 = stringToBigInt(this.input.slice(start, this.pos));\n      ++this.pos;\n      if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n      return this.finishToken(types$1.num, val$1)\n    }\n    if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; }\n    if (next === 46 && !octal) { // '.'\n      ++this.pos;\n      this.readInt(10);\n      next = this.input.charCodeAt(this.pos);\n    }\n    if ((next === 69 || next === 101) && !octal) { // 'eE'\n      next = this.input.charCodeAt(++this.pos);\n      if (next === 43 || next === 45) { ++this.pos; } // '+-'\n      if (this.readInt(10) === null) { this.raise(start, \"Invalid number\"); }\n    }\n    if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n\n    var val = stringToNumber(this.input.slice(start, this.pos), octal);\n    return this.finishToken(types$1.num, val)\n  };\n\n  // Read a string value, interpreting backslash-escapes.\n\n  pp.readCodePoint = function() {\n    var ch = this.input.charCodeAt(this.pos), code;\n\n    if (ch === 123) { // '{'\n      if (this.options.ecmaVersion < 6) { this.unexpected(); }\n      var codePos = ++this.pos;\n      code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos);\n      ++this.pos;\n      if (code > 0x10FFFF) { this.invalidStringToken(codePos, \"Code point out of bounds\"); }\n    } else {\n      code = this.readHexChar(4);\n    }\n    return code\n  };\n\n  pp.readString = function(quote) {\n    var out = \"\", chunkStart = ++this.pos;\n    for (;;) {\n      if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated string constant\"); }\n      var ch = this.input.charCodeAt(this.pos);\n      if (ch === quote) { break }\n      if (ch === 92) { // '\\'\n        out += this.input.slice(chunkStart, this.pos);\n        out += this.readEscapedChar(false);\n        chunkStart = this.pos;\n      } else if (ch === 0x2028 || ch === 0x2029) {\n        if (this.options.ecmaVersion < 10) { this.raise(this.start, \"Unterminated string constant\"); }\n        ++this.pos;\n        if (this.options.locations) {\n          this.curLine++;\n          this.lineStart = this.pos;\n        }\n      } else {\n        if (isNewLine(ch)) { this.raise(this.start, \"Unterminated string constant\"); }\n        ++this.pos;\n      }\n    }\n    out += this.input.slice(chunkStart, this.pos++);\n    return this.finishToken(types$1.string, out)\n  };\n\n  // Reads template string tokens.\n\n  var INVALID_TEMPLATE_ESCAPE_ERROR = {};\n\n  pp.tryReadTemplateToken = function() {\n    this.inTemplateElement = true;\n    try {\n      this.readTmplToken();\n    } catch (err) {\n      if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n        this.readInvalidTemplateToken();\n      } else {\n        throw err\n      }\n    }\n\n    this.inTemplateElement = false;\n  };\n\n  pp.invalidStringToken = function(position, message) {\n    if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n      throw INVALID_TEMPLATE_ESCAPE_ERROR\n    } else {\n      this.raise(position, message);\n    }\n  };\n\n  pp.readTmplToken = function() {\n    var out = \"\", chunkStart = this.pos;\n    for (;;) {\n      if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated template\"); }\n      var ch = this.input.charCodeAt(this.pos);\n      if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n        if (this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate)) {\n          if (ch === 36) {\n            this.pos += 2;\n            return this.finishToken(types$1.dollarBraceL)\n          } else {\n            ++this.pos;\n            return this.finishToken(types$1.backQuote)\n          }\n        }\n        out += this.input.slice(chunkStart, this.pos);\n        return this.finishToken(types$1.template, out)\n      }\n      if (ch === 92) { // '\\'\n        out += this.input.slice(chunkStart, this.pos);\n        out += this.readEscapedChar(true);\n        chunkStart = this.pos;\n      } else if (isNewLine(ch)) {\n        out += this.input.slice(chunkStart, this.pos);\n        ++this.pos;\n        switch (ch) {\n        case 13:\n          if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; }\n        case 10:\n          out += \"\\n\";\n          break\n        default:\n          out += String.fromCharCode(ch);\n          break\n        }\n        if (this.options.locations) {\n          ++this.curLine;\n          this.lineStart = this.pos;\n        }\n        chunkStart = this.pos;\n      } else {\n        ++this.pos;\n      }\n    }\n  };\n\n  // Reads a template token to search for the end, without validating any escape sequences\n  pp.readInvalidTemplateToken = function() {\n    for (; this.pos < this.input.length; this.pos++) {\n      switch (this.input[this.pos]) {\n      case \"\\\\\":\n        ++this.pos;\n        break\n\n      case \"$\":\n        if (this.input[this.pos + 1] !== \"{\") { break }\n        // fall through\n      case \"`\":\n        return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos))\n\n      case \"\\r\":\n        if (this.input[this.pos + 1] === \"\\n\") { ++this.pos; }\n        // fall through\n      case \"\\n\": case \"\\u2028\": case \"\\u2029\":\n        ++this.curLine;\n        this.lineStart = this.pos + 1;\n        break\n      }\n    }\n    this.raise(this.start, \"Unterminated template\");\n  };\n\n  // Used to read escaped characters\n\n  pp.readEscapedChar = function(inTemplate) {\n    var ch = this.input.charCodeAt(++this.pos);\n    ++this.pos;\n    switch (ch) {\n    case 110: return \"\\n\" // 'n' -> '\\n'\n    case 114: return \"\\r\" // 'r' -> '\\r'\n    case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n    case 117: return codePointToString(this.readCodePoint()) // 'u'\n    case 116: return \"\\t\" // 't' -> '\\t'\n    case 98: return \"\\b\" // 'b' -> '\\b'\n    case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n    case 102: return \"\\f\" // 'f' -> '\\f'\n    case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\\r\\n'\n    case 10: // ' \\n'\n      if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n      return \"\"\n    case 56:\n    case 57:\n      if (this.strict) {\n        this.invalidStringToken(\n          this.pos - 1,\n          \"Invalid escape sequence\"\n        );\n      }\n      if (inTemplate) {\n        var codePos = this.pos - 1;\n\n        this.invalidStringToken(\n          codePos,\n          \"Invalid escape sequence in template string\"\n        );\n      }\n    default:\n      if (ch >= 48 && ch <= 55) {\n        var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0];\n        var octal = parseInt(octalStr, 8);\n        if (octal > 255) {\n          octalStr = octalStr.slice(0, -1);\n          octal = parseInt(octalStr, 8);\n        }\n        this.pos += octalStr.length - 1;\n        ch = this.input.charCodeAt(this.pos);\n        if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n          this.invalidStringToken(\n            this.pos - 1 - octalStr.length,\n            inTemplate\n              ? \"Octal literal in template string\"\n              : \"Octal literal in strict mode\"\n          );\n        }\n        return String.fromCharCode(octal)\n      }\n      if (isNewLine(ch)) {\n        // Unicode new line characters after \\ get removed from output in both\n        // template literals and strings\n        if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n        return \"\"\n      }\n      return String.fromCharCode(ch)\n    }\n  };\n\n  // Used to read character escape sequences ('\\x', '\\u', '\\U').\n\n  pp.readHexChar = function(len) {\n    var codePos = this.pos;\n    var n = this.readInt(16, len);\n    if (n === null) { this.invalidStringToken(codePos, \"Bad character escape sequence\"); }\n    return n\n  };\n\n  // Read an identifier, and return it as a string. Sets `this.containsEsc`\n  // to whether the word contained a '\\u' escape.\n  //\n  // Incrementally adds only escaped chars, adding other chunks as-is\n  // as a micro-optimization.\n\n  pp.readWord1 = function() {\n    this.containsEsc = false;\n    var word = \"\", first = true, chunkStart = this.pos;\n    var astral = this.options.ecmaVersion >= 6;\n    while (this.pos < this.input.length) {\n      var ch = this.fullCharCodeAtPos();\n      if (isIdentifierChar(ch, astral)) {\n        this.pos += ch <= 0xffff ? 1 : 2;\n      } else if (ch === 92) { // \"\\\"\n        this.containsEsc = true;\n        word += this.input.slice(chunkStart, this.pos);\n        var escStart = this.pos;\n        if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n          { this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\"); }\n        ++this.pos;\n        var esc = this.readCodePoint();\n        if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n          { this.invalidStringToken(escStart, \"Invalid Unicode escape\"); }\n        word += codePointToString(esc);\n        chunkStart = this.pos;\n      } else {\n        break\n      }\n      first = false;\n    }\n    return word + this.input.slice(chunkStart, this.pos)\n  };\n\n  // Read an identifier or keyword token. Will check for reserved\n  // words when necessary.\n\n  pp.readWord = function() {\n    var word = this.readWord1();\n    var type = types$1.name;\n    if (this.keywords.test(word)) {\n      type = keywords[word];\n    }\n    return this.finishToken(type, word)\n  };\n\n  // Acorn is a tiny, fast JavaScript parser written in JavaScript.\n  //\n  // Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n  // various contributors and released under an MIT license.\n  //\n  // Git repositories for Acorn are available at\n  //\n  //     http://marijnhaverbeke.nl/git/acorn\n  //     https://github.com/acornjs/acorn.git\n  //\n  // Please use the [github bug tracker][ghbt] to report issues.\n  //\n  // [ghbt]: https://github.com/acornjs/acorn/issues\n\n\n  var version = \"8.16.0\";\n\n  Parser.acorn = {\n    Parser: Parser,\n    version: version,\n    defaultOptions: defaultOptions,\n    Position: Position,\n    SourceLocation: SourceLocation,\n    getLineInfo: getLineInfo,\n    Node: Node,\n    TokenType: TokenType,\n    tokTypes: types$1,\n    keywordTypes: keywords,\n    TokContext: TokContext,\n    tokContexts: types,\n    isIdentifierChar: isIdentifierChar,\n    isIdentifierStart: isIdentifierStart,\n    Token: Token,\n    isNewLine: isNewLine,\n    lineBreak: lineBreak,\n    lineBreakG: lineBreakG,\n    nonASCIIwhitespace: nonASCIIwhitespace\n  };\n\n  // The main exported interface (under `self.acorn` when in the\n  // browser) is a `parse` function that takes a code string and returns\n  // an abstract syntax tree as specified by the [ESTree spec][estree].\n  //\n  // [estree]: https://github.com/estree/estree\n\n  function parse(input, options) {\n    return Parser.parse(input, options)\n  }\n\n  // This function tries to parse a single expression at a given\n  // offset in a string. Useful for parsing mixed-language formats\n  // that embed JavaScript expressions.\n\n  function parseExpressionAt(input, pos, options) {\n    return Parser.parseExpressionAt(input, pos, options)\n  }\n\n  // Acorn is organized as a tokenizer and a recursive-descent parser.\n  // The `tokenizer` export provides an interface to the tokenizer.\n\n  function tokenizer(input, options) {\n    return Parser.tokenizer(input, options)\n  }\n\n  exports.Node = Node;\n  exports.Parser = Parser;\n  exports.Position = Position;\n  exports.SourceLocation = SourceLocation;\n  exports.TokContext = TokContext;\n  exports.Token = Token;\n  exports.TokenType = TokenType;\n  exports.defaultOptions = defaultOptions;\n  exports.getLineInfo = getLineInfo;\n  exports.isIdentifierChar = isIdentifierChar;\n  exports.isIdentifierStart = isIdentifierStart;\n  exports.isNewLine = isNewLine;\n  exports.keywordTypes = keywords;\n  exports.lineBreak = lineBreak;\n  exports.lineBreakG = lineBreakG;\n  exports.nonASCIIwhitespace = nonASCIIwhitespace;\n  exports.parse = parse;\n  exports.parseExpressionAt = parseExpressionAt;\n  exports.tokContexts = types;\n  exports.tokTypes = types$1;\n  exports.tokenizer = tokenizer;\n  exports.version = version;\n\n}));\n", "module.exports = {\n  quot: '\\u0022',\n  amp: '&',\n  apos: '\\u0027',\n  lt: '<',\n  gt: '>',\n  nbsp: '\\u00A0',\n  iexcl: '\\u00A1',\n  cent: '\\u00A2',\n  pound: '\\u00A3',\n  curren: '\\u00A4',\n  yen: '\\u00A5',\n  brvbar: '\\u00A6',\n  sect: '\\u00A7',\n  uml: '\\u00A8',\n  copy: '\\u00A9',\n  ordf: '\\u00AA',\n  laquo: '\\u00AB',\n  not: '\\u00AC',\n  shy: '\\u00AD',\n  reg: '\\u00AE',\n  macr: '\\u00AF',\n  deg: '\\u00B0',\n  plusmn: '\\u00B1',\n  sup2: '\\u00B2',\n  sup3: '\\u00B3',\n  acute: '\\u00B4',\n  micro: '\\u00B5',\n  para: '\\u00B6',\n  middot: '\\u00B7',\n  cedil: '\\u00B8',\n  sup1: '\\u00B9',\n  ordm: '\\u00BA',\n  raquo: '\\u00BB',\n  frac14: '\\u00BC',\n  frac12: '\\u00BD',\n  frac34: '\\u00BE',\n  iquest: '\\u00BF',\n  Agrave: '\\u00C0',\n  Aacute: '\\u00C1',\n  Acirc: '\\u00C2',\n  Atilde: '\\u00C3',\n  Auml: '\\u00C4',\n  Aring: '\\u00C5',\n  AElig: '\\u00C6',\n  Ccedil: '\\u00C7',\n  Egrave: '\\u00C8',\n  Eacute: '\\u00C9',\n  Ecirc: '\\u00CA',\n  Euml: '\\u00CB',\n  Igrave: '\\u00CC',\n  Iacute: '\\u00CD',\n  Icirc: '\\u00CE',\n  Iuml: '\\u00CF',\n  ETH: '\\u00D0',\n  Ntilde: '\\u00D1',\n  Ograve: '\\u00D2',\n  Oacute: '\\u00D3',\n  Ocirc: '\\u00D4',\n  Otilde: '\\u00D5',\n  Ouml: '\\u00D6',\n  times: '\\u00D7',\n  Oslash: '\\u00D8',\n  Ugrave: '\\u00D9',\n  Uacute: '\\u00DA',\n  Ucirc: '\\u00DB',\n  Uuml: '\\u00DC',\n  Yacute: '\\u00DD',\n  THORN: '\\u00DE',\n  szlig: '\\u00DF',\n  agrave: '\\u00E0',\n  aacute: '\\u00E1',\n  acirc: '\\u00E2',\n  atilde: '\\u00E3',\n  auml: '\\u00E4',\n  aring: '\\u00E5',\n  aelig: '\\u00E6',\n  ccedil: '\\u00E7',\n  egrave: '\\u00E8',\n  eacute: '\\u00E9',\n  ecirc: '\\u00EA',\n  euml: '\\u00EB',\n  igrave: '\\u00EC',\n  iacute: '\\u00ED',\n  icirc: '\\u00EE',\n  iuml: '\\u00EF',\n  eth: '\\u00F0',\n  ntilde: '\\u00F1',\n  ograve: '\\u00F2',\n  oacute: '\\u00F3',\n  ocirc: '\\u00F4',\n  otilde: '\\u00F5',\n  ouml: '\\u00F6',\n  divide: '\\u00F7',\n  oslash: '\\u00F8',\n  ugrave: '\\u00F9',\n  uacute: '\\u00FA',\n  ucirc: '\\u00FB',\n  uuml: '\\u00FC',\n  yacute: '\\u00FD',\n  thorn: '\\u00FE',\n  yuml: '\\u00FF',\n  OElig: '\\u0152',\n  oelig: '\\u0153',\n  Scaron: '\\u0160',\n  scaron: '\\u0161',\n  Yuml: '\\u0178',\n  fnof: '\\u0192',\n  circ: '\\u02C6',\n  tilde: '\\u02DC',\n  Alpha: '\\u0391',\n  Beta: '\\u0392',\n  Gamma: '\\u0393',\n  Delta: '\\u0394',\n  Epsilon: '\\u0395',\n  Zeta: '\\u0396',\n  Eta: '\\u0397',\n  Theta: '\\u0398',\n  Iota: '\\u0399',\n  Kappa: '\\u039A',\n  Lambda: '\\u039B',\n  Mu: '\\u039C',\n  Nu: '\\u039D',\n  Xi: '\\u039E',\n  Omicron: '\\u039F',\n  Pi: '\\u03A0',\n  Rho: '\\u03A1',\n  Sigma: '\\u03A3',\n  Tau: '\\u03A4',\n  Upsilon: '\\u03A5',\n  Phi: '\\u03A6',\n  Chi: '\\u03A7',\n  Psi: '\\u03A8',\n  Omega: '\\u03A9',\n  alpha: '\\u03B1',\n  beta: '\\u03B2',\n  gamma: '\\u03B3',\n  delta: '\\u03B4',\n  epsilon: '\\u03B5',\n  zeta: '\\u03B6',\n  eta: '\\u03B7',\n  theta: '\\u03B8',\n  iota: '\\u03B9',\n  kappa: '\\u03BA',\n  lambda: '\\u03BB',\n  mu: '\\u03BC',\n  nu: '\\u03BD',\n  xi: '\\u03BE',\n  omicron: '\\u03BF',\n  pi: '\\u03C0',\n  rho: '\\u03C1',\n  sigmaf: '\\u03C2',\n  sigma: '\\u03C3',\n  tau: '\\u03C4',\n  upsilon: '\\u03C5',\n  phi: '\\u03C6',\n  chi: '\\u03C7',\n  psi: '\\u03C8',\n  omega: '\\u03C9',\n  thetasym: '\\u03D1',\n  upsih: '\\u03D2',\n  piv: '\\u03D6',\n  ensp: '\\u2002',\n  emsp: '\\u2003',\n  thinsp: '\\u2009',\n  zwnj: '\\u200C',\n  zwj: '\\u200D',\n  lrm: '\\u200E',\n  rlm: '\\u200F',\n  ndash: '\\u2013',\n  mdash: '\\u2014',\n  lsquo: '\\u2018',\n  rsquo: '\\u2019',\n  sbquo: '\\u201A',\n  ldquo: '\\u201C',\n  rdquo: '\\u201D',\n  bdquo: '\\u201E',\n  dagger: '\\u2020',\n  Dagger: '\\u2021',\n  bull: '\\u2022',\n  hellip: '\\u2026',\n  permil: '\\u2030',\n  prime: '\\u2032',\n  Prime: '\\u2033',\n  lsaquo: '\\u2039',\n  rsaquo: '\\u203A',\n  oline: '\\u203E',\n  frasl: '\\u2044',\n  euro: '\\u20AC',\n  image: '\\u2111',\n  weierp: '\\u2118',\n  real: '\\u211C',\n  trade: '\\u2122',\n  alefsym: '\\u2135',\n  larr: '\\u2190',\n  uarr: '\\u2191',\n  rarr: '\\u2192',\n  darr: '\\u2193',\n  harr: '\\u2194',\n  crarr: '\\u21B5',\n  lArr: '\\u21D0',\n  uArr: '\\u21D1',\n  rArr: '\\u21D2',\n  dArr: '\\u21D3',\n  hArr: '\\u21D4',\n  forall: '\\u2200',\n  part: '\\u2202',\n  exist: '\\u2203',\n  empty: '\\u2205',\n  nabla: '\\u2207',\n  isin: '\\u2208',\n  notin: '\\u2209',\n  ni: '\\u220B',\n  prod: '\\u220F',\n  sum: '\\u2211',\n  minus: '\\u2212',\n  lowast: '\\u2217',\n  radic: '\\u221A',\n  prop: '\\u221D',\n  infin: '\\u221E',\n  ang: '\\u2220',\n  and: '\\u2227',\n  or: '\\u2228',\n  cap: '\\u2229',\n  cup: '\\u222A',\n  'int': '\\u222B',\n  there4: '\\u2234',\n  sim: '\\u223C',\n  cong: '\\u2245',\n  asymp: '\\u2248',\n  ne: '\\u2260',\n  equiv: '\\u2261',\n  le: '\\u2264',\n  ge: '\\u2265',\n  sub: '\\u2282',\n  sup: '\\u2283',\n  nsub: '\\u2284',\n  sube: '\\u2286',\n  supe: '\\u2287',\n  oplus: '\\u2295',\n  otimes: '\\u2297',\n  perp: '\\u22A5',\n  sdot: '\\u22C5',\n  lceil: '\\u2308',\n  rceil: '\\u2309',\n  lfloor: '\\u230A',\n  rfloor: '\\u230B',\n  lang: '\\u2329',\n  rang: '\\u232A',\n  loz: '\\u25CA',\n  spades: '\\u2660',\n  clubs: '\\u2663',\n  hearts: '\\u2665',\n  diams: '\\u2666'\n};\n", "'use strict';\n\nconst XHTMLEntities = require('./xhtml');\n\nconst hexNumber = /^[\\da-fA-F]+$/;\nconst decimalNumber = /^\\d+$/;\n\n// The map to `acorn-jsx` tokens from `acorn` namespace objects.\nconst acornJsxMap = new WeakMap();\n\n// Get the original tokens for the given `acorn` namespace object.\nfunction getJsxTokens(acorn) {\n  acorn = acorn.Parser.acorn || acorn;\n  let acornJsx = acornJsxMap.get(acorn);\n  if (!acornJsx) {\n    const tt = acorn.tokTypes;\n    const TokContext = acorn.TokContext;\n    const TokenType = acorn.TokenType;\n    const tc_oTag = new TokContext('<tag', false);\n    const tc_cTag = new TokContext('</tag', false);\n    const tc_expr = new TokContext('<tag>...</tag>', true, true);\n    const tokContexts = {\n      tc_oTag: tc_oTag,\n      tc_cTag: tc_cTag,\n      tc_expr: tc_expr\n    };\n    const tokTypes = {\n      jsxName: new TokenType('jsxName'),\n      jsxText: new TokenType('jsxText', {beforeExpr: true}),\n      jsxTagStart: new TokenType('jsxTagStart', {startsExpr: true}),\n      jsxTagEnd: new TokenType('jsxTagEnd')\n    };\n\n    tokTypes.jsxTagStart.updateContext = function() {\n      this.context.push(tc_expr); // treat as beginning of JSX expression\n      this.context.push(tc_oTag); // start opening tag context\n      this.exprAllowed = false;\n    };\n    tokTypes.jsxTagEnd.updateContext = function(prevType) {\n      let out = this.context.pop();\n      if (out === tc_oTag && prevType === tt.slash || out === tc_cTag) {\n        this.context.pop();\n        this.exprAllowed = this.curContext() === tc_expr;\n      } else {\n        this.exprAllowed = true;\n      }\n    };\n\n    acornJsx = { tokContexts: tokContexts, tokTypes: tokTypes };\n    acornJsxMap.set(acorn, acornJsx);\n  }\n\n  return acornJsx;\n}\n\n// Transforms JSX element name to string.\n\nfunction getQualifiedJSXName(object) {\n  if (!object)\n    return object;\n\n  if (object.type === 'JSXIdentifier')\n    return object.name;\n\n  if (object.type === 'JSXNamespacedName')\n    return object.namespace.name + ':' + object.name.name;\n\n  if (object.type === 'JSXMemberExpression')\n    return getQualifiedJSXName(object.object) + '.' +\n    getQualifiedJSXName(object.property);\n}\n\nmodule.exports = function(options) {\n  options = options || {};\n  return function(Parser) {\n    return plugin({\n      allowNamespaces: options.allowNamespaces !== false,\n      allowNamespacedObjects: !!options.allowNamespacedObjects\n    }, Parser);\n  };\n};\n\n// This is `tokTypes` of the peer dep.\n// This can be different instances from the actual `tokTypes` this plugin uses.\nObject.defineProperty(module.exports, \"tokTypes\", {\n  get: function get_tokTypes() {\n    return getJsxTokens(require(\"acorn\")).tokTypes;\n  },\n  configurable: true,\n  enumerable: true\n});\n\nfunction plugin(options, Parser) {\n  const acorn = Parser.acorn || require(\"acorn\");\n  const acornJsx = getJsxTokens(acorn);\n  const tt = acorn.tokTypes;\n  const tok = acornJsx.tokTypes;\n  const tokContexts = acorn.tokContexts;\n  const tc_oTag = acornJsx.tokContexts.tc_oTag;\n  const tc_cTag = acornJsx.tokContexts.tc_cTag;\n  const tc_expr = acornJsx.tokContexts.tc_expr;\n  const isNewLine = acorn.isNewLine;\n  const isIdentifierStart = acorn.isIdentifierStart;\n  const isIdentifierChar = acorn.isIdentifierChar;\n\n  return class extends Parser {\n    // Expose actual `tokTypes` and `tokContexts` to other plugins.\n    static get acornJsx() {\n      return acornJsx;\n    }\n\n    // Reads inline JSX contents token.\n    jsx_readToken() {\n      let out = '', chunkStart = this.pos;\n      for (;;) {\n        if (this.pos >= this.input.length)\n          this.raise(this.start, 'Unterminated JSX contents');\n        let ch = this.input.charCodeAt(this.pos);\n\n        switch (ch) {\n        case 60: // '<'\n        case 123: // '{'\n          if (this.pos === this.start) {\n            if (ch === 60 && this.exprAllowed) {\n              ++this.pos;\n              return this.finishToken(tok.jsxTagStart);\n            }\n            return this.getTokenFromCode(ch);\n          }\n          out += this.input.slice(chunkStart, this.pos);\n          return this.finishToken(tok.jsxText, out);\n\n        case 38: // '&'\n          out += this.input.slice(chunkStart, this.pos);\n          out += this.jsx_readEntity();\n          chunkStart = this.pos;\n          break;\n\n        case 62: // '>'\n        case 125: // '}'\n          this.raise(\n            this.pos,\n            \"Unexpected token `\" + this.input[this.pos] + \"`. Did you mean `\" +\n              (ch === 62 ? \"&gt;\" : \"&rbrace;\") + \"` or \" + \"`{\\\"\" + this.input[this.pos] + \"\\\"}\" + \"`?\"\n          );\n\n        default:\n          if (isNewLine(ch)) {\n            out += this.input.slice(chunkStart, this.pos);\n            out += this.jsx_readNewLine(true);\n            chunkStart = this.pos;\n          } else {\n            ++this.pos;\n          }\n        }\n      }\n    }\n\n    jsx_readNewLine(normalizeCRLF) {\n      let ch = this.input.charCodeAt(this.pos);\n      let out;\n      ++this.pos;\n      if (ch === 13 && this.input.charCodeAt(this.pos) === 10) {\n        ++this.pos;\n        out = normalizeCRLF ? '\\n' : '\\r\\n';\n      } else {\n        out = String.fromCharCode(ch);\n      }\n      if (this.options.locations) {\n        ++this.curLine;\n        this.lineStart = this.pos;\n      }\n\n      return out;\n    }\n\n    jsx_readString(quote) {\n      let out = '', chunkStart = ++this.pos;\n      for (;;) {\n        if (this.pos >= this.input.length)\n          this.raise(this.start, 'Unterminated string constant');\n        let ch = this.input.charCodeAt(this.pos);\n        if (ch === quote) break;\n        if (ch === 38) { // '&'\n          out += this.input.slice(chunkStart, this.pos);\n          out += this.jsx_readEntity();\n          chunkStart = this.pos;\n        } else if (isNewLine(ch)) {\n          out += this.input.slice(chunkStart, this.pos);\n          out += this.jsx_readNewLine(false);\n          chunkStart = this.pos;\n        } else {\n          ++this.pos;\n        }\n      }\n      out += this.input.slice(chunkStart, this.pos++);\n      return this.finishToken(tt.string, out);\n    }\n\n    jsx_readEntity() {\n      let str = '', count = 0, entity;\n      let ch = this.input[this.pos];\n      if (ch !== '&')\n        this.raise(this.pos, 'Entity must start with an ampersand');\n      let startPos = ++this.pos;\n      while (this.pos < this.input.length && count++ < 10) {\n        ch = this.input[this.pos++];\n        if (ch === ';') {\n          if (str[0] === '#') {\n            if (str[1] === 'x') {\n              str = str.substr(2);\n              if (hexNumber.test(str))\n                entity = String.fromCharCode(parseInt(str, 16));\n            } else {\n              str = str.substr(1);\n              if (decimalNumber.test(str))\n                entity = String.fromCharCode(parseInt(str, 10));\n            }\n          } else {\n            entity = XHTMLEntities[str];\n          }\n          break;\n        }\n        str += ch;\n      }\n      if (!entity) {\n        this.pos = startPos;\n        return '&';\n      }\n      return entity;\n    }\n\n    // Read a JSX identifier (valid tag or attribute name).\n    //\n    // Optimized version since JSX identifiers can't contain\n    // escape characters and so can be read as single slice.\n    // Also assumes that first character was already checked\n    // by isIdentifierStart in readToken.\n\n    jsx_readWord() {\n      let ch, start = this.pos;\n      do {\n        ch = this.input.charCodeAt(++this.pos);\n      } while (isIdentifierChar(ch) || ch === 45); // '-'\n      return this.finishToken(tok.jsxName, this.input.slice(start, this.pos));\n    }\n\n    // Parse next token as JSX identifier\n\n    jsx_parseIdentifier() {\n      let node = this.startNode();\n      if (this.type === tok.jsxName)\n        node.name = this.value;\n      else if (this.type.keyword)\n        node.name = this.type.keyword;\n      else\n        this.unexpected();\n      this.next();\n      return this.finishNode(node, 'JSXIdentifier');\n    }\n\n    // Parse namespaced identifier.\n\n    jsx_parseNamespacedName() {\n      let startPos = this.start, startLoc = this.startLoc;\n      let name = this.jsx_parseIdentifier();\n      if (!options.allowNamespaces || !this.eat(tt.colon)) return name;\n      var node = this.startNodeAt(startPos, startLoc);\n      node.namespace = name;\n      node.name = this.jsx_parseIdentifier();\n      return this.finishNode(node, 'JSXNamespacedName');\n    }\n\n    // Parses element name in any form - namespaced, member\n    // or single identifier.\n\n    jsx_parseElementName() {\n      if (this.type === tok.jsxTagEnd) return '';\n      let startPos = this.start, startLoc = this.startLoc;\n      let node = this.jsx_parseNamespacedName();\n      if (this.type === tt.dot && node.type === 'JSXNamespacedName' && !options.allowNamespacedObjects) {\n        this.unexpected();\n      }\n      while (this.eat(tt.dot)) {\n        let newNode = this.startNodeAt(startPos, startLoc);\n        newNode.object = node;\n        newNode.property = this.jsx_parseIdentifier();\n        node = this.finishNode(newNode, 'JSXMemberExpression');\n      }\n      return node;\n    }\n\n    // Parses any type of JSX attribute value.\n\n    jsx_parseAttributeValue() {\n      switch (this.type) {\n      case tt.braceL:\n        let node = this.jsx_parseExpressionContainer();\n        if (node.expression.type === 'JSXEmptyExpression')\n          this.raise(node.start, 'JSX attributes must only be assigned a non-empty expression');\n        return node;\n\n      case tok.jsxTagStart:\n      case tt.string:\n        return this.parseExprAtom();\n\n      default:\n        this.raise(this.start, 'JSX value should be either an expression or a quoted JSX text');\n      }\n    }\n\n    // JSXEmptyExpression is unique type since it doesn't actually parse anything,\n    // and so it should start at the end of last read token (left brace) and finish\n    // at the beginning of the next one (right brace).\n\n    jsx_parseEmptyExpression() {\n      let node = this.startNodeAt(this.lastTokEnd, this.lastTokEndLoc);\n      return this.finishNodeAt(node, 'JSXEmptyExpression', this.start, this.startLoc);\n    }\n\n    // Parses JSX expression enclosed into curly brackets.\n\n    jsx_parseExpressionContainer() {\n      let node = this.startNode();\n      this.next();\n      node.expression = this.type === tt.braceR\n        ? this.jsx_parseEmptyExpression()\n        : this.parseExpression();\n      this.expect(tt.braceR);\n      return this.finishNode(node, 'JSXExpressionContainer');\n    }\n\n    // Parses following JSX attribute name-value pair.\n\n    jsx_parseAttribute() {\n      let node = this.startNode();\n      if (this.eat(tt.braceL)) {\n        this.expect(tt.ellipsis);\n        node.argument = this.parseMaybeAssign();\n        this.expect(tt.braceR);\n        return this.finishNode(node, 'JSXSpreadAttribute');\n      }\n      node.name = this.jsx_parseNamespacedName();\n      node.value = this.eat(tt.eq) ? this.jsx_parseAttributeValue() : null;\n      return this.finishNode(node, 'JSXAttribute');\n    }\n\n    // Parses JSX opening tag starting after '<'.\n\n    jsx_parseOpeningElementAt(startPos, startLoc) {\n      let node = this.startNodeAt(startPos, startLoc);\n      node.attributes = [];\n      let nodeName = this.jsx_parseElementName();\n      if (nodeName) node.name = nodeName;\n      while (this.type !== tt.slash && this.type !== tok.jsxTagEnd)\n        node.attributes.push(this.jsx_parseAttribute());\n      node.selfClosing = this.eat(tt.slash);\n      this.expect(tok.jsxTagEnd);\n      return this.finishNode(node, nodeName ? 'JSXOpeningElement' : 'JSXOpeningFragment');\n    }\n\n    // Parses JSX closing tag starting after '</'.\n\n    jsx_parseClosingElementAt(startPos, startLoc) {\n      let node = this.startNodeAt(startPos, startLoc);\n      let nodeName = this.jsx_parseElementName();\n      if (nodeName) node.name = nodeName;\n      this.expect(tok.jsxTagEnd);\n      return this.finishNode(node, nodeName ? 'JSXClosingElement' : 'JSXClosingFragment');\n    }\n\n    // Parses entire JSX element, including it's opening tag\n    // (starting after '<'), attributes, contents and closing tag.\n\n    jsx_parseElementAt(startPos, startLoc) {\n      let node = this.startNodeAt(startPos, startLoc);\n      let children = [];\n      let openingElement = this.jsx_parseOpeningElementAt(startPos, startLoc);\n      let closingElement = null;\n\n      if (!openingElement.selfClosing) {\n        contents: for (;;) {\n          switch (this.type) {\n          case tok.jsxTagStart:\n            startPos = this.start; startLoc = this.startLoc;\n            this.next();\n            if (this.eat(tt.slash)) {\n              closingElement = this.jsx_parseClosingElementAt(startPos, startLoc);\n              break contents;\n            }\n            children.push(this.jsx_parseElementAt(startPos, startLoc));\n            break;\n\n          case tok.jsxText:\n            children.push(this.parseExprAtom());\n            break;\n\n          case tt.braceL:\n            children.push(this.jsx_parseExpressionContainer());\n            break;\n\n          default:\n            this.unexpected();\n          }\n        }\n        if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {\n          this.raise(\n            closingElement.start,\n            'Expected corresponding JSX closing tag for <' + getQualifiedJSXName(openingElement.name) + '>');\n        }\n      }\n      let fragmentOrElement = openingElement.name ? 'Element' : 'Fragment';\n\n      node['opening' + fragmentOrElement] = openingElement;\n      node['closing' + fragmentOrElement] = closingElement;\n      node.children = children;\n      if (this.type === tt.relational && this.value === \"<\") {\n        this.raise(this.start, \"Adjacent JSX elements must be wrapped in an enclosing tag\");\n      }\n      return this.finishNode(node, 'JSX' + fragmentOrElement);\n    }\n\n    // Parse JSX text\n\n    jsx_parseText() {\n      let node = this.parseLiteral(this.value);\n      node.type = \"JSXText\";\n      return node;\n    }\n\n    // Parses entire JSX element from current position.\n\n    jsx_parseElement() {\n      let startPos = this.start, startLoc = this.startLoc;\n      this.next();\n      return this.jsx_parseElementAt(startPos, startLoc);\n    }\n\n    parseExprAtom(refShortHandDefaultPos) {\n      if (this.type === tok.jsxText)\n        return this.jsx_parseText();\n      else if (this.type === tok.jsxTagStart)\n        return this.jsx_parseElement();\n      else\n        return super.parseExprAtom(refShortHandDefaultPos);\n    }\n\n    readToken(code) {\n      let context = this.curContext();\n\n      if (context === tc_expr) return this.jsx_readToken();\n\n      if (context === tc_oTag || context === tc_cTag) {\n        if (isIdentifierStart(code)) return this.jsx_readWord();\n\n        if (code == 62) {\n          ++this.pos;\n          return this.finishToken(tok.jsxTagEnd);\n        }\n\n        if ((code === 34 || code === 39) && context == tc_oTag)\n          return this.jsx_readString(code);\n      }\n\n      if (code === 60 && this.exprAllowed && this.input.charCodeAt(this.pos + 1) !== 33) {\n        ++this.pos;\n        return this.finishToken(tok.jsxTagStart);\n      }\n      return super.readToken(code);\n    }\n\n    updateContext(prevType) {\n      if (this.type == tt.braceL) {\n        var curContext = this.curContext();\n        if (curContext == tc_oTag) this.context.push(tokContexts.b_expr);\n        else if (curContext == tc_expr) this.context.push(tokContexts.b_tmpl);\n        else super.updateContext(prevType);\n        this.exprAllowed = true;\n      } else if (this.type === tt.slash && prevType === tok.jsxTagStart) {\n        this.context.length -= 2; // do not consider JSX expr -> JSX open tag -> ... anymore\n        this.context.push(tc_cTag); // reconsider as closing tag context\n        this.exprAllowed = false;\n      } else {\n        return super.updateContext(prevType);\n      }\n    }\n  };\n}\n", "'use strict';\n\n/* eslint-disable jsdoc/valid-types -- doesn't allow `readonly`.\n   TODO: remove eslint-disable when https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/164 is fixed\n*/\n/**\n * @typedef {{ readonly [type: string]: ReadonlyArray<string> }} VisitorKeys\n */\n/* eslint-enable jsdoc/valid-types -- doesn't allow `readonly string[]`. TODO: check why */\n\n/**\n * @type {VisitorKeys}\n */\nconst KEYS = {\n\tArrayExpression: [\"elements\"],\n\tArrayPattern: [\"elements\"],\n\tArrowFunctionExpression: [\"params\", \"body\"],\n\tAssignmentExpression: [\"left\", \"right\"],\n\tAssignmentPattern: [\"left\", \"right\"],\n\tAwaitExpression: [\"argument\"],\n\tBinaryExpression: [\"left\", \"right\"],\n\tBlockStatement: [\"body\"],\n\tBreakStatement: [\"label\"],\n\tCallExpression: [\"callee\", \"arguments\"],\n\tCatchClause: [\"param\", \"body\"],\n\tChainExpression: [\"expression\"],\n\tClassBody: [\"body\"],\n\tClassDeclaration: [\"id\", \"superClass\", \"body\"],\n\tClassExpression: [\"id\", \"superClass\", \"body\"],\n\tConditionalExpression: [\"test\", \"consequent\", \"alternate\"],\n\tContinueStatement: [\"label\"],\n\tDebuggerStatement: [],\n\tDoWhileStatement: [\"body\", \"test\"],\n\tEmptyStatement: [],\n\tExperimentalRestProperty: [\"argument\"],\n\tExperimentalSpreadProperty: [\"argument\"],\n\tExportAllDeclaration: [\"exported\", \"source\", \"attributes\"],\n\tExportDefaultDeclaration: [\"declaration\"],\n\tExportNamedDeclaration: [\n\t\t\"declaration\",\n\t\t\"specifiers\",\n\t\t\"source\",\n\t\t\"attributes\",\n\t],\n\tExportSpecifier: [\"local\", \"exported\"],\n\tExpressionStatement: [\"expression\"],\n\tForInStatement: [\"left\", \"right\", \"body\"],\n\tForOfStatement: [\"left\", \"right\", \"body\"],\n\tForStatement: [\"init\", \"test\", \"update\", \"body\"],\n\tFunctionDeclaration: [\"id\", \"params\", \"body\"],\n\tFunctionExpression: [\"id\", \"params\", \"body\"],\n\tIdentifier: [],\n\tIfStatement: [\"test\", \"consequent\", \"alternate\"],\n\tImportAttribute: [\"key\", \"value\"],\n\tImportDeclaration: [\"specifiers\", \"source\", \"attributes\"],\n\tImportDefaultSpecifier: [\"local\"],\n\tImportExpression: [\"source\", \"options\"],\n\tImportNamespaceSpecifier: [\"local\"],\n\tImportSpecifier: [\"imported\", \"local\"],\n\tJSXAttribute: [\"name\", \"value\"],\n\tJSXClosingElement: [\"name\"],\n\tJSXClosingFragment: [],\n\tJSXElement: [\"openingElement\", \"children\", \"closingElement\"],\n\tJSXEmptyExpression: [],\n\tJSXExpressionContainer: [\"expression\"],\n\tJSXFragment: [\"openingFragment\", \"children\", \"closingFragment\"],\n\tJSXIdentifier: [],\n\tJSXMemberExpression: [\"object\", \"property\"],\n\tJSXNamespacedName: [\"namespace\", \"name\"],\n\tJSXOpeningElement: [\"name\", \"attributes\"],\n\tJSXOpeningFragment: [],\n\tJSXSpreadAttribute: [\"argument\"],\n\tJSXSpreadChild: [\"expression\"],\n\tJSXText: [],\n\tLabeledStatement: [\"label\", \"body\"],\n\tLiteral: [],\n\tLogicalExpression: [\"left\", \"right\"],\n\tMemberExpression: [\"object\", \"property\"],\n\tMetaProperty: [\"meta\", \"property\"],\n\tMethodDefinition: [\"key\", \"value\"],\n\tNewExpression: [\"callee\", \"arguments\"],\n\tObjectExpression: [\"properties\"],\n\tObjectPattern: [\"properties\"],\n\tPrivateIdentifier: [],\n\tProgram: [\"body\"],\n\tProperty: [\"key\", \"value\"],\n\tPropertyDefinition: [\"key\", \"value\"],\n\tRestElement: [\"argument\"],\n\tReturnStatement: [\"argument\"],\n\tSequenceExpression: [\"expressions\"],\n\tSpreadElement: [\"argument\"],\n\tStaticBlock: [\"body\"],\n\tSuper: [],\n\tSwitchCase: [\"test\", \"consequent\"],\n\tSwitchStatement: [\"discriminant\", \"cases\"],\n\tTaggedTemplateExpression: [\"tag\", \"quasi\"],\n\tTemplateElement: [],\n\tTemplateLiteral: [\"quasis\", \"expressions\"],\n\tThisExpression: [],\n\tThrowStatement: [\"argument\"],\n\tTryStatement: [\"block\", \"handler\", \"finalizer\"],\n\tUnaryExpression: [\"argument\"],\n\tUpdateExpression: [\"argument\"],\n\tVariableDeclaration: [\"declarations\"],\n\tVariableDeclarator: [\"id\", \"init\"],\n\tWhileStatement: [\"test\", \"body\"],\n\tWithStatement: [\"object\", \"body\"],\n\tYieldExpression: [\"argument\"],\n};\n\n// Types.\nconst NODE_TYPES = Object.keys(KEYS);\n\n// Freeze the keys.\nfor (const type of NODE_TYPES) {\n\tObject.freeze(KEYS[type]);\n}\nObject.freeze(KEYS);\n\n/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * See LICENSE file in root directory for full license.\n */\n\n/**\n * @typedef {import('./visitor-keys.js').VisitorKeys} VisitorKeys\n */\n\n// List to ignore keys.\nconst KEY_BLACKLIST = new Set([\n\t\"parent\",\n\t\"leadingComments\",\n\t\"trailingComments\",\n]);\n\n/**\n * Check whether a given key should be used or not.\n * @param {string} key The key to check.\n * @returns {boolean} `true` if the key should be used.\n */\nfunction filterKey(key) {\n\treturn !KEY_BLACKLIST.has(key) && key[0] !== \"_\";\n}\n\n/* eslint-disable jsdoc/valid-types -- doesn't allow `readonly`.\n   TODO: remove eslint-disable when https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/164 is fixed\n*/\n/**\n * Get visitor keys of a given node.\n * @param {Object} node The AST node to get keys.\n * @returns {readonly string[]} Visitor keys of the node.\n */\nfunction getKeys(node) {\n\treturn Object.keys(node).filter(filterKey);\n}\n/* eslint-enable jsdoc/valid-types -- doesn't allow `readonly` */\n\n/**\n * Make the union set with `KEYS` and given keys.\n * @param {VisitorKeys} additionalKeys The additional keys.\n * @returns {VisitorKeys} The union set.\n */\nfunction unionWith(additionalKeys) {\n\tconst retv =\n\t\t/** @type {{ [type: string]: ReadonlyArray<string> }} */\n\t\t(Object.assign({}, KEYS));\n\n\tfor (const type of Object.keys(additionalKeys)) {\n\t\tif (Object.hasOwn(retv, type)) {\n\t\t\tconst keys = new Set(additionalKeys[type]);\n\n\t\t\tfor (const key of retv[type]) {\n\t\t\t\tkeys.add(key);\n\t\t\t}\n\n\t\t\tretv[type] = Object.freeze(Array.from(keys));\n\t\t} else {\n\t\t\tretv[type] = Object.freeze(Array.from(additionalKeys[type]));\n\t\t}\n\t}\n\n\treturn Object.freeze(retv);\n}\n\nexports.KEYS = KEYS;\nexports.getKeys = getKeys;\nexports.unionWith = unionWith;\n", "'use strict';\n\nvar acorn = require('acorn');\nvar jsx = require('acorn-jsx');\nvar eslintVisitorKeys = require('eslint-visitor-keys');\n\nfunction _interopNamespaceDefault(e) {\n\tvar n = Object.create(null);\n\tif (e) {\n\t\tObject.keys(e).forEach(function (k) {\n\t\t\tif (k !== 'default') {\n\t\t\t\tvar d = Object.getOwnPropertyDescriptor(e, k);\n\t\t\t\tObject.defineProperty(n, k, d.get ? d : {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function () { return e[k]; }\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\tn.default = e;\n\treturn Object.freeze(n);\n}\n\nvar acorn__namespace = /*#__PURE__*/_interopNamespaceDefault(acorn);\n\n/**\n * @fileoverview Translates tokens between Acorn format and Esprima format.\n * @author Nicholas C. Zakas\n */\n\n/**\n * @import * as acorn from \"acorn\";\n * @import { EnhancedTokTypes } from \"./espree.js\"\n * @import { NormalizedEcmaVersion } from \"./options.js\";\n * @import { EspreeToken as EsprimaToken } from \"../espree.js\";\n */\n/**\n * Based on the `acorn.Token` class, but without a fixed `type` (since we need\n * it to be a string). Avoiding `type` lets us make one extending interface\n * more strict and another more lax.\n *\n * We could make `value` more strict to `string` even though the original is\n * `any`.\n *\n * `start` and `end` are required in `acorn.Token`\n *\n * `loc` and `range` are from `acorn.Token`\n *\n * Adds `regex`.\n */\n/**\n * @typedef {{\n *   jsxAttrValueToken: boolean;\n *   ecmaVersion: NormalizedEcmaVersion;\n * }} ExtraNoTokens\n * @typedef {{\n *   tokens: EsprimaToken[]\n * } & ExtraNoTokens} Extra\n */\n\n//------------------------------------------------------------------------------\n// Private\n//------------------------------------------------------------------------------\n\n// Esprima Token Types\nconst Token = {\n\tBoolean: \"Boolean\",\n\tEOF: \"<end>\",\n\tIdentifier: \"Identifier\",\n\tPrivateIdentifier: \"PrivateIdentifier\",\n\tKeyword: \"Keyword\",\n\tNull: \"Null\",\n\tNumeric: \"Numeric\",\n\tPunctuator: \"Punctuator\",\n\tString: \"String\",\n\tRegularExpression: \"RegularExpression\",\n\tTemplate: \"Template\",\n\tJSXIdentifier: \"JSXIdentifier\",\n\tJSXText: \"JSXText\",\n};\n\n/**\n * Converts part of a template into an Esprima token.\n * @param {acorn.Token[]} tokens The Acorn tokens representing the template.\n * @param {string} code The source code.\n * @returns {EsprimaToken} The Esprima equivalent of the template token.\n * @private\n */\nfunction convertTemplatePart(tokens, code) {\n\tconst firstToken = tokens[0],\n\t\tlastTemplateToken =\n\t\t\t/** @type {acorn.Token & { loc: acorn.SourceLocation, range: [number, number] }} */ (\n\t\t\t\ttokens.at(-1)\n\t\t\t);\n\n\t/** @type {EsprimaToken} */\n\tconst token = {\n\t\ttype: Token.Template,\n\t\tvalue: code.slice(firstToken.start, lastTemplateToken.end),\n\t};\n\n\tif (firstToken.loc) {\n\t\ttoken.loc = {\n\t\t\tstart: firstToken.loc.start,\n\t\t\tend: lastTemplateToken.loc.end,\n\t\t};\n\t}\n\n\tif (firstToken.range) {\n\t\ttoken.start = firstToken.range[0];\n\t\ttoken.end = lastTemplateToken.range[1];\n\t\ttoken.range = [token.start, token.end];\n\t}\n\n\treturn token;\n}\n\n/* eslint-disable jsdoc/check-types -- The API allows either */\n/**\n * Contains logic to translate Acorn tokens into Esprima tokens.\n */\nclass TokenTranslator {\n\t/**\n\t * Contains logic to translate Acorn tokens into Esprima tokens.\n\t * @param {EnhancedTokTypes} acornTokTypes The Acorn token types.\n\t * @param {string|String} code The source code Acorn is parsing. This is necessary\n\t *      to correct the \"value\" property of some tokens.\n\t */\n\tconstructor(acornTokTypes, code) {\n\t\t/* eslint-enable jsdoc/check-types -- The API allows either */\n\n\t\t// token types\n\t\tthis._acornTokTypes = acornTokTypes;\n\n\t\t// token buffer for templates\n\t\t/** @type {acorn.Token[]} */\n\t\tthis._tokens = [];\n\n\t\t// track the last curly brace\n\t\tthis._curlyBrace = null;\n\n\t\t// the source code\n\t\tthis._code = code;\n\t}\n\n\t/**\n\t * Translates a single Esprima token to a single Acorn token. This may be\n\t * inaccurate due to how templates are handled differently in Esprima and\n\t * Acorn, but should be accurate for all other tokens.\n\t * @param {acorn.Token} token The Acorn token to translate.\n\t * @param {ExtraNoTokens} extra Espree extra object.\n\t * @returns {EsprimaToken} The Esprima version of the token.\n\t */\n\ttranslate(token, extra) {\n\t\tconst type = token.type,\n\t\t\ttt = this._acornTokTypes,\n\t\t\t// We use an unknown type because `acorn.Token` is a class whose\n\t\t\t//   `type` property we cannot override to our desired `string`;\n\t\t\t//   this also allows us to define a stricter `EsprimaToken` with\n\t\t\t//   a string-only `type` property\n\t\t\tunknownTokenType = /** @type {unknown} */ (token),\n\t\t\tnewToken = /** @type {EsprimaToken} */ (unknownTokenType);\n\n\t\tif (type === tt.name) {\n\t\t\tnewToken.type = Token.Identifier;\n\n\t\t\t// TODO: See if this is an Acorn bug\n\t\t\tif (\"value\" in token && token.value === \"static\") {\n\t\t\t\tnewToken.type = Token.Keyword;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\textra.ecmaVersion > 5 &&\n\t\t\t\t\"value\" in token &&\n\t\t\t\t(token.value === \"yield\" || token.value === \"let\")\n\t\t\t) {\n\t\t\t\tnewToken.type = Token.Keyword;\n\t\t\t}\n\t\t} else if (type === tt.privateId) {\n\t\t\tnewToken.type = Token.PrivateIdentifier;\n\t\t} else if (\n\t\t\ttype === tt.semi ||\n\t\t\ttype === tt.comma ||\n\t\t\ttype === tt.parenL ||\n\t\t\ttype === tt.parenR ||\n\t\t\ttype === tt.braceL ||\n\t\t\ttype === tt.braceR ||\n\t\t\ttype === tt.dot ||\n\t\t\ttype === tt.bracketL ||\n\t\t\ttype === tt.colon ||\n\t\t\ttype === tt.question ||\n\t\t\ttype === tt.bracketR ||\n\t\t\ttype === tt.ellipsis ||\n\t\t\ttype === tt.arrow ||\n\t\t\ttype === tt.jsxTagStart ||\n\t\t\ttype === tt.incDec ||\n\t\t\ttype === tt.starstar ||\n\t\t\ttype === tt.jsxTagEnd ||\n\t\t\ttype === tt.prefix ||\n\t\t\ttype === tt.questionDot ||\n\t\t\t(\"binop\" in type && type.binop && !type.keyword) ||\n\t\t\t(\"isAssign\" in type && type.isAssign)\n\t\t) {\n\t\t\tnewToken.type = Token.Punctuator;\n\t\t\tnewToken.value = this._code.slice(token.start, token.end);\n\t\t} else if (type === tt.jsxName) {\n\t\t\tnewToken.type = Token.JSXIdentifier;\n\t\t} else if (type.label === \"jsxText\" || type === tt.jsxAttrValueToken) {\n\t\t\tnewToken.type = Token.JSXText;\n\t\t} else if (type.keyword) {\n\t\t\tif (type.keyword === \"true\" || type.keyword === \"false\") {\n\t\t\t\tnewToken.type = Token.Boolean;\n\t\t\t} else if (type.keyword === \"null\") {\n\t\t\t\tnewToken.type = Token.Null;\n\t\t\t} else {\n\t\t\t\tnewToken.type = Token.Keyword;\n\t\t\t}\n\t\t} else if (type === tt.num) {\n\t\t\tnewToken.type = Token.Numeric;\n\t\t\tnewToken.value = this._code.slice(token.start, token.end);\n\t\t} else if (type === tt.string) {\n\t\t\tif (extra.jsxAttrValueToken) {\n\t\t\t\textra.jsxAttrValueToken = false;\n\t\t\t\tnewToken.type = Token.JSXText;\n\t\t\t} else {\n\t\t\t\tnewToken.type = Token.String;\n\t\t\t}\n\n\t\t\tnewToken.value = this._code.slice(token.start, token.end);\n\t\t} else if (type === tt.regexp) {\n\t\t\tnewToken.type = Token.RegularExpression;\n\t\t\tconst value = /** @type {{flags: string, pattern: string}} */ (\n\t\t\t\t\"value\" in token && token.value\n\t\t\t);\n\n\t\t\tnewToken.regex = {\n\t\t\t\tflags: value.flags,\n\t\t\t\tpattern: value.pattern,\n\t\t\t};\n\t\t\tnewToken.value = `/${value.pattern}/${value.flags}`;\n\t\t}\n\n\t\treturn newToken;\n\t}\n\n\t/**\n\t * Function to call during Acorn's onToken handler.\n\t * @param {acorn.Token} token The Acorn token.\n\t * @param {Extra} extra The Espree extra object.\n\t * @returns {void}\n\t */\n\tonToken(token, extra) {\n\t\tconst tt = this._acornTokTypes,\n\t\t\ttokens = extra.tokens,\n\t\t\ttemplateTokens = this._tokens;\n\n\t\t/**\n\t\t * Flushes the buffered template tokens and resets the template\n\t\t * tracking.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tconst translateTemplateTokens = () => {\n\t\t\ttokens.push(convertTemplatePart(this._tokens, this._code));\n\t\t\tthis._tokens = [];\n\t\t};\n\n\t\tif (token.type === tt.eof) {\n\t\t\t// might be one last curlyBrace\n\t\t\tif (this._curlyBrace) {\n\t\t\t\ttokens.push(this.translate(this._curlyBrace, extra));\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (token.type === tt.backQuote) {\n\t\t\t// if there's already a curly, it's not part of the template\n\t\t\tif (this._curlyBrace) {\n\t\t\t\ttokens.push(this.translate(this._curlyBrace, extra));\n\t\t\t\tthis._curlyBrace = null;\n\t\t\t}\n\n\t\t\ttemplateTokens.push(token);\n\n\t\t\t// it's the end\n\t\t\tif (templateTokens.length > 1) {\n\t\t\t\ttranslateTemplateTokens();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\t\tif (token.type === tt.dollarBraceL) {\n\t\t\ttemplateTokens.push(token);\n\t\t\ttranslateTemplateTokens();\n\t\t\treturn;\n\t\t}\n\t\tif (token.type === tt.braceR) {\n\t\t\t// if there's already a curly, it's not part of the template\n\t\t\tif (this._curlyBrace) {\n\t\t\t\ttokens.push(this.translate(this._curlyBrace, extra));\n\t\t\t}\n\n\t\t\t// store new curly for later\n\t\t\tthis._curlyBrace = token;\n\t\t\treturn;\n\t\t}\n\t\tif (token.type === tt.template || token.type === tt.invalidTemplate) {\n\t\t\tif (this._curlyBrace) {\n\t\t\t\ttemplateTokens.push(this._curlyBrace);\n\t\t\t\tthis._curlyBrace = null;\n\t\t\t}\n\n\t\t\ttemplateTokens.push(token);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._curlyBrace) {\n\t\t\ttokens.push(this.translate(this._curlyBrace, extra));\n\t\t\tthis._curlyBrace = null;\n\t\t}\n\n\t\ttokens.push(this.translate(token, extra));\n\t}\n}\n\n/**\n * @fileoverview A collection of methods for processing Espree's options.\n * @author Kai Cataldo\n */\n\n/**\n * @import { EcmaVersion, Options } from \"../espree.js\";\n */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst SUPPORTED_VERSIONS = /** @type {const} */ ([\n\t3,\n\t5,\n\t6, // 2015\n\t7, // 2016\n\t8, // 2017\n\t9, // 2018\n\t10, // 2019\n\t11, // 2020\n\t12, // 2021\n\t13, // 2022\n\t14, // 2023\n\t15, // 2024\n\t16, // 2025\n\t17, // 2026\n]);\n\n/**\n * @typedef {typeof SUPPORTED_VERSIONS[number]} NormalizedEcmaVersion\n */\n\nconst LATEST_ECMA_VERSION =\n\t/* eslint-disable jsdoc/valid-types -- Bug */\n\t/** @type {typeof SUPPORTED_VERSIONS extends readonly [...unknown[], infer L] ? L : never} */ (\n\t\tSUPPORTED_VERSIONS.at(-1)\n\t\t/* eslint-enable jsdoc/valid-types -- Bug */\n\t);\n\n/**\n * Get the latest ECMAScript version supported by Espree.\n * @returns {typeof LATEST_ECMA_VERSION} The latest ECMAScript version.\n */\nfunction getLatestEcmaVersion() {\n\treturn LATEST_ECMA_VERSION;\n}\n\n/**\n * Get the list of ECMAScript versions supported by Espree.\n * @returns {[...typeof SUPPORTED_VERSIONS]} An array containing the supported ECMAScript versions.\n */\nfunction getSupportedEcmaVersions() {\n\treturn [...SUPPORTED_VERSIONS];\n}\n\n/**\n * Normalize ECMAScript version from the initial config\n * @param {EcmaVersion} ecmaVersion ECMAScript version from the initial config\n * @throws {Error} throws an error if the ecmaVersion is invalid.\n * @returns {NormalizedEcmaVersion} normalized ECMAScript version\n */\nfunction normalizeEcmaVersion(ecmaVersion = 5) {\n\tlet version =\n\t\tecmaVersion === \"latest\" ? getLatestEcmaVersion() : ecmaVersion;\n\n\tif (typeof version !== \"number\") {\n\t\tthrow new Error(\n\t\t\t`ecmaVersion must be a number or \"latest\". Received value of type ${typeof ecmaVersion} instead.`,\n\t\t);\n\t}\n\n\t// Calculate ECMAScript edition number from official year version starting with\n\t// ES2015, which corresponds with ES6 (or a difference of 2009).\n\tif (version >= 2015) {\n\t\tversion -= 2009;\n\t}\n\n\tif (\n\t\t!SUPPORTED_VERSIONS.includes(\n\t\t\t/** @type {NormalizedEcmaVersion} */\n\t\t\t(version),\n\t\t)\n\t) {\n\t\tthrow new Error(\"Invalid ecmaVersion.\");\n\t}\n\n\treturn /** @type {NormalizedEcmaVersion} */ (version);\n}\n\n/**\n * Normalize sourceType from the initial config\n * @param {string} sourceType to normalize\n * @throws {Error} throw an error if sourceType is invalid\n * @returns {\"script\"|\"module\"|\"commonjs\"} normalized sourceType\n */\nfunction normalizeSourceType(sourceType = \"script\") {\n\tif (\n\t\tsourceType === \"script\" ||\n\t\tsourceType === \"module\" ||\n\t\tsourceType === \"commonjs\"\n\t) {\n\t\treturn sourceType;\n\t}\n\n\tthrow new Error(\"Invalid sourceType.\");\n}\n\n/**\n * @typedef {{\n *   ecmaVersion: NormalizedEcmaVersion,\n *   sourceType: \"script\"|\"module\"|\"commonjs\",\n *   range?: boolean,\n *   loc?: boolean,\n *   allowReserved: boolean | \"never\",\n *   ecmaFeatures?: {\n *     jsx?: boolean,\n *     globalReturn?: boolean,\n *     impliedStrict?: boolean\n *   },\n *   ranges: boolean,\n *   locations: boolean,\n *   allowReturnOutsideFunction: boolean,\n *   tokens?: boolean,\n *   comment?: boolean\n * }} NormalizedParserOptions\n */\n\n/**\n * Normalize parserOptions\n * @param {Options} options the parser options to normalize\n * @throws {Error} throw an error if found invalid option.\n * @returns {NormalizedParserOptions} normalized options\n */\nfunction normalizeOptions(options) {\n\tconst ecmaVersion = normalizeEcmaVersion(options.ecmaVersion);\n\tconst sourceType = normalizeSourceType(options.sourceType);\n\tconst ranges = options.range === true;\n\tconst locations = options.loc === true;\n\n\tif (ecmaVersion !== 3 && options.allowReserved) {\n\t\t// a value of `false` is intentionally allowed here, so a shared config can overwrite it when needed\n\t\tthrow new Error(\n\t\t\t\"`allowReserved` is only supported when ecmaVersion is 3\",\n\t\t);\n\t}\n\tif (\n\t\ttypeof options.allowReserved !== \"undefined\" &&\n\t\ttypeof options.allowReserved !== \"boolean\"\n\t) {\n\t\tthrow new Error(\n\t\t\t\"`allowReserved`, when present, must be `true` or `false`\",\n\t\t);\n\t}\n\tconst allowReserved =\n\t\tecmaVersion === 3 ? options.allowReserved || \"never\" : false;\n\tconst ecmaFeatures = options.ecmaFeatures || {};\n\tconst allowReturnOutsideFunction =\n\t\toptions.sourceType === \"commonjs\" || Boolean(ecmaFeatures.globalReturn);\n\n\tif (sourceType === \"module\" && ecmaVersion < 6) {\n\t\tthrow new Error(\n\t\t\t\"sourceType 'module' is not supported when ecmaVersion < 2015. Consider adding `{ ecmaVersion: 2015 }` to the parser options.\",\n\t\t);\n\t}\n\n\treturn Object.assign({}, options, {\n\t\tecmaVersion,\n\t\tsourceType,\n\t\tranges,\n\t\tlocations,\n\t\tallowReserved,\n\t\tallowReturnOutsideFunction,\n\t});\n}\n\n/* eslint no-param-reassign: 0 -- stylistic choice */\n\n\n/**\n * @import {\n *   CommentType,\n *   EspreeParserCtor,\n *   EsprimaNode,\n *   AcornJsxParserCtorEnhanced,\n *   TokTypes\n * } from \"./types.js\";\n * @import {\n *   Options,\n *   EspreeToken as EsprimaToken,\n *   EspreeTokens as EsprimaTokens,\n *   EspreeComment as EsprimaComment\n * } from \"../espree.js\";\n * @import { NormalizedEcmaVersion } from \"./options.js\";\n * @import * as acorn from \"acorn\";\n */\n\n/**\n * @typedef {{\n *   originalSourceType: \"script\" | \"module\" | \"commonjs\" | undefined\n *   tokens: EsprimaToken[] | null,\n *   comments: EsprimaComment[] | null,\n *   impliedStrict: boolean,\n *   ecmaVersion: NormalizedEcmaVersion,\n *   jsxAttrValueToken: boolean,\n *   lastToken: acorn.Token | null,\n *   templateElements: acorn.TemplateElement[]\n * }} State\n */\n\n/**\n * @typedef {{\n *   sourceType?: \"script\"|\"module\"|\"commonjs\";\n *   comments?: EsprimaComment[];\n *   tokens?: EsprimaToken[];\n *   body: acorn.Node[];\n * } & acorn.Program} EsprimaProgramNode\n */\n\n// ----------------------------------------------------------------------------\n// Types exported from file\n// ----------------------------------------------------------------------------\n/**\n * @typedef {{\n *   index?: number;\n *   lineNumber?: number;\n *   column?: number;\n * } & SyntaxError} EnhancedSyntaxError\n */\n\n// We add `jsxAttrValueToken` ourselves.\n/**\n * @typedef {{\n *   jsxAttrValueToken?: acorn.TokenType;\n * } & TokTypes} EnhancedTokTypes\n */\n\nconst STATE = Symbol(\"espree's internal state\");\nconst ESPRIMA_FINISH_NODE = Symbol(\"espree's esprimaFinishNode\");\n\n/**\n * Converts an Acorn comment to a Esprima comment.\n * @param {boolean} block True if it's a block comment, false if not.\n * @param {string} text The text of the comment.\n * @param {number} start The index at which the comment starts.\n * @param {number} end The index at which the comment ends.\n * @param {acorn.Position | undefined} startLoc The location at which the comment starts.\n * @param {acorn.Position | undefined} endLoc The location at which the comment ends.\n * @param {string} code The source code being parsed.\n * @returns {EsprimaComment} The comment object.\n * @private\n */\nfunction convertAcornCommentToEsprimaComment(\n\tblock,\n\ttext,\n\tstart,\n\tend,\n\tstartLoc,\n\tendLoc,\n\tcode,\n) {\n\t/** @type {CommentType} */\n\tlet type;\n\n\tif (block) {\n\t\ttype = \"Block\";\n\t} else if (code.slice(start, start + 2) === \"#!\") {\n\t\ttype = \"Hashbang\";\n\t} else {\n\t\ttype = \"Line\";\n\t}\n\n\t/**\n\t * @type {{\n\t *   type: CommentType,\n\t *   value: string,\n\t *   start?: number,\n\t *   end?: number,\n\t *   range?: [number, number],\n\t *   loc?: {\n\t *     start: acorn.Position | undefined,\n\t *     end: acorn.Position | undefined\n\t *   }\n\t * }}\n\t */\n\tconst comment = {\n\t\ttype,\n\t\tvalue: text,\n\t};\n\n\tif (typeof start === \"number\") {\n\t\tcomment.start = start;\n\t\tcomment.end = end;\n\t\tcomment.range = [start, end];\n\t}\n\n\tif (typeof startLoc === \"object\") {\n\t\tcomment.loc = {\n\t\t\tstart: startLoc,\n\t\t\tend: endLoc,\n\t\t};\n\t}\n\n\treturn comment;\n}\n\n// eslint-disable-next-line arrow-body-style -- For TS\nvar espree = () => {\n\t/**\n\t * Returns the Espree parser.\n\t * @param {AcornJsxParserCtorEnhanced} Parser The Acorn parser. The `acorn` property is missing from acorn's\n\t *   TypeScript but is present statically on the class.\n\t * @returns {EspreeParserCtor} The Espree Parser constructor.\n\t */\n\treturn Parser => {\n\t\tconst tokTypes = /** @type {EnhancedTokTypes} */ (\n\t\t\tObject.assign({}, Parser.acorn.tokTypes)\n\t\t);\n\n\t\tif (Parser.acornJsx) {\n\t\t\tObject.assign(tokTypes, Parser.acornJsx.tokTypes);\n\t\t}\n\n\t\treturn class Espree extends Parser {\n\t\t\t/**\n\t\t\t * @param {Options | null | undefined} opts The parser options\n\t\t\t * @param {string | object} code The code which will be converted to a string.\n\t\t\t */\n\t\t\tconstructor(opts, code) {\n\t\t\t\tif (typeof opts !== \"object\" || opts === null) {\n\t\t\t\t\topts = {};\n\t\t\t\t}\n\t\t\t\tif (typeof code !== \"string\" && !(code instanceof String)) {\n\t\t\t\t\tcode = String(code);\n\t\t\t\t}\n\n\t\t\t\t// save original source type in case of commonjs\n\t\t\t\tconst originalSourceType = opts.sourceType;\n\t\t\t\tconst options = normalizeOptions(opts);\n\t\t\t\tconst ecmaFeatures = options.ecmaFeatures || {};\n\t\t\t\tconst tokenTranslator =\n\t\t\t\t\toptions.tokens === true\n\t\t\t\t\t\t? new TokenTranslator(\n\t\t\t\t\t\t\t\ttokTypes,\n\n\t\t\t\t\t\t\t\t// @ts-expect-error Appears to be a TS bug since the type is indeed string|String\n\t\t\t\t\t\t\t\tcode,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: null;\n\n\t\t\t\t/**\n\t\t\t\t * Data that is unique to Espree and is not represented internally\n\t\t\t\t * in Acorn.\n\t\t\t\t *\n\t\t\t\t * For ES2023 hashbangs, Espree will call `onComment()` during the\n\t\t\t\t * constructor, so we must define state before having access to\n\t\t\t\t * `this`.\n\t\t\t\t * @type {State}\n\t\t\t\t */\n\t\t\t\tconst state = {\n\t\t\t\t\toriginalSourceType:\n\t\t\t\t\t\toriginalSourceType || options.sourceType,\n\t\t\t\t\ttokens: tokenTranslator ? [] : null,\n\t\t\t\t\tcomments: options.comment === true ? [] : null,\n\t\t\t\t\timpliedStrict:\n\t\t\t\t\t\tecmaFeatures.impliedStrict === true &&\n\t\t\t\t\t\toptions.ecmaVersion >= 5,\n\t\t\t\t\tecmaVersion: options.ecmaVersion,\n\t\t\t\t\tjsxAttrValueToken: false,\n\t\t\t\t\tlastToken: null,\n\t\t\t\t\ttemplateElements: [],\n\t\t\t\t};\n\n\t\t\t\t// Initialize acorn parser.\n\t\t\t\tsuper(\n\t\t\t\t\t{\n\t\t\t\t\t\t// do not use spread, because we don't want to pass any unknown options to acorn\n\t\t\t\t\t\tecmaVersion: options.ecmaVersion,\n\t\t\t\t\t\tsourceType: options.sourceType,\n\t\t\t\t\t\tranges: options.ranges,\n\t\t\t\t\t\tlocations: options.locations,\n\t\t\t\t\t\tallowReserved: options.allowReserved,\n\n\t\t\t\t\t\t// Truthy value is true for backward compatibility.\n\t\t\t\t\t\tallowReturnOutsideFunction:\n\t\t\t\t\t\t\toptions.allowReturnOutsideFunction,\n\n\t\t\t\t\t\t// Collect tokens\n\t\t\t\t\t\tonToken(token) {\n\t\t\t\t\t\t\tif (tokenTranslator) {\n\t\t\t\t\t\t\t\t// Use `tokens`, `ecmaVersion`, and `jsxAttrValueToken` in the state.\n\t\t\t\t\t\t\t\ttokenTranslator.onToken(\n\t\t\t\t\t\t\t\t\ttoken,\n\n\t\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t\t * @type {Omit<State, \"tokens\"> & {\n\t\t\t\t\t\t\t\t\t *   tokens: EsprimaToken[]\n\t\t\t\t\t\t\t\t\t * }}\n\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\t(state),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (token.type !== tokTypes.eof) {\n\t\t\t\t\t\t\t\tstate.lastToken = token;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\n\t\t\t\t\t\t// Collect comments\n\t\t\t\t\t\tonComment(block, text, start, end, startLoc, endLoc) {\n\t\t\t\t\t\t\tif (state.comments) {\n\t\t\t\t\t\t\t\tconst comment =\n\t\t\t\t\t\t\t\t\tconvertAcornCommentToEsprimaComment(\n\t\t\t\t\t\t\t\t\t\tblock,\n\t\t\t\t\t\t\t\t\t\ttext,\n\t\t\t\t\t\t\t\t\t\tstart,\n\t\t\t\t\t\t\t\t\t\tend,\n\t\t\t\t\t\t\t\t\t\tstartLoc,\n\t\t\t\t\t\t\t\t\t\tendLoc,\n\n\t\t\t\t\t\t\t\t\t\t// @ts-expect-error Appears to be a TS bug\n\t\t\t\t\t\t\t\t\t\t//   since the type is indeed string|String\n\t\t\t\t\t\t\t\t\t\tcode,\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tstate.comments.push(comment);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t// @ts-expect-error Appears to be a TS bug\n\t\t\t\t\t//   since the type is indeed string|String\n\t\t\t\t\tcode,\n\t\t\t\t);\n\n\t\t\t\t/*\n\t\t\t\t * We put all of this data into a symbol property as a way to avoid\n\t\t\t\t * potential naming conflicts with future versions of Acorn.\n\t\t\t\t */\n\t\t\t\tthis[STATE] = state;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Returns Espree tokens.\n\t\t\t * @returns {EsprimaTokens} The Esprima-compatible tokens\n\t\t\t */\n\t\t\ttokenize() {\n\t\t\t\tdo {\n\t\t\t\t\tthis.next();\n\t\t\t\t} while (this.type !== tokTypes.eof);\n\n\t\t\t\t// Consume the final eof token\n\t\t\t\tthis.next();\n\n\t\t\t\tconst extra = this[STATE];\n\t\t\t\tconst tokens = /** @type {EsprimaTokens} */ (extra.tokens);\n\n\t\t\t\tif (extra.comments) {\n\t\t\t\t\ttokens.comments = extra.comments;\n\t\t\t\t}\n\n\t\t\t\treturn tokens;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Calls parent.\n\t\t\t * @param {acorn.Node} node The node\n\t\t\t * @param {string} type The type\n\t\t\t * @returns {acorn.Node} The altered Node\n\t\t\t */\n\t\t\tfinishNode(node, type) {\n\t\t\t\tconst result = super.finishNode(node, type);\n\n\t\t\t\treturn this[ESPRIMA_FINISH_NODE](result);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Calls parent.\n\t\t\t * @param {acorn.Node} node The node\n\t\t\t * @param {string} type The type\n\t\t\t * @param {number} pos The position\n\t\t\t * @param {acorn.Position} loc The location\n\t\t\t * @returns {acorn.Node} The altered Node\n\t\t\t */\n\t\t\tfinishNodeAt(node, type, pos, loc) {\n\t\t\t\tconst result = super.finishNodeAt(node, type, pos, loc);\n\n\t\t\t\treturn this[ESPRIMA_FINISH_NODE](result);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Parses.\n\t\t\t * @returns {EsprimaProgramNode} The program Node\n\t\t\t */\n\t\t\tparse() {\n\t\t\t\tconst extra = this[STATE];\n\t\t\t\tconst prog = super.parse();\n\n\t\t\t\tconst program = /** @type {EsprimaProgramNode} */ (prog);\n\n\t\t\t\t// @ts-expect-error TS bug? We've already converted to `EsprimaProgramNode`\n\t\t\t\tprogram.sourceType = extra.originalSourceType;\n\n\t\t\t\tif (extra.comments) {\n\t\t\t\t\tprogram.comments = extra.comments;\n\t\t\t\t}\n\t\t\t\tif (extra.tokens) {\n\t\t\t\t\tprogram.tokens = extra.tokens;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * https://github.com/eslint/espree/issues/349\n\t\t\t\t * Ensure that template elements have correct range information.\n\t\t\t\t * This is one location where Acorn produces a different value\n\t\t\t\t * for its start and end properties vs. the values present in the\n\t\t\t\t * range property. In order to avoid confusion, we set the start\n\t\t\t\t * and end properties to the values that are present in range.\n\t\t\t\t * This is done here, instead of in finishNode(), because Acorn\n\t\t\t\t * uses the values of start and end internally while parsing, making\n\t\t\t\t * it dangerous to change those values while parsing is ongoing.\n\t\t\t\t * By waiting until the end of parsing, we can safely change these\n\t\t\t\t * values without affect any other part of the process.\n\t\t\t\t */\n\t\t\t\tthis[STATE].templateElements.forEach(templateElement => {\n\t\t\t\t\tconst startOffset = -1;\n\t\t\t\t\tconst endOffset = templateElement.tail ? 1 : 2;\n\n\t\t\t\t\ttemplateElement.start += startOffset;\n\t\t\t\t\ttemplateElement.end += endOffset;\n\n\t\t\t\t\tif (templateElement.range) {\n\t\t\t\t\t\ttemplateElement.range[0] += startOffset;\n\t\t\t\t\t\ttemplateElement.range[1] += endOffset;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (templateElement.loc) {\n\t\t\t\t\t\ttemplateElement.loc.start.column += startOffset;\n\t\t\t\t\t\ttemplateElement.loc.end.column += endOffset;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn program;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Parses top level.\n\t\t\t * @param {acorn.Node} node AST Node\n\t\t\t * @returns {acorn.Node} The changed node\n\t\t\t */\n\t\t\tparseTopLevel(node) {\n\t\t\t\tif (this[STATE].impliedStrict) {\n\t\t\t\t\tthis.strict = true;\n\t\t\t\t}\n\t\t\t\treturn super.parseTopLevel(node);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Overwrites the default raise method to throw Esprima-style errors.\n\t\t\t * @param {number} pos The position of the error.\n\t\t\t * @param {string} message The error message.\n\t\t\t * @throws {EnhancedSyntaxError} A syntax error.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\traise(pos, message) {\n\t\t\t\tconst loc = Parser.acorn.getLineInfo(this.input, pos);\n\t\t\t\tconst err = /** @type {EnhancedSyntaxError} */ (\n\t\t\t\t\tnew SyntaxError(message)\n\t\t\t\t);\n\n\t\t\t\terr.index = pos;\n\t\t\t\terr.lineNumber = loc.line;\n\t\t\t\terr.column = loc.column + 1; // acorn uses 0-based columns\n\t\t\t\tthrow err;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Overwrites the default raise method to throw Esprima-style errors.\n\t\t\t * @param {number} pos The position of the error.\n\t\t\t * @param {string} message The error message.\n\t\t\t * @throws {SyntaxError} A syntax error.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\traiseRecoverable(pos, message) {\n\t\t\t\tthis.raise(pos, message);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Overwrites the default unexpected method to throw Esprima-style errors.\n\t\t\t * @param {number} pos The position of the error.\n\t\t\t * @throws {SyntaxError} A syntax error.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tunexpected(pos) {\n\t\t\t\tlet message = \"Unexpected token\";\n\n\t\t\t\tif (pos !== null && pos !== void 0) {\n\t\t\t\t\tthis.pos = pos;\n\n\t\t\t\t\tif (this.options.locations) {\n\t\t\t\t\t\twhile (this.pos < this.lineStart) {\n\t\t\t\t\t\t\tthis.lineStart =\n\t\t\t\t\t\t\t\tthis.input.lastIndexOf(\n\t\t\t\t\t\t\t\t\t\"\\n\",\n\t\t\t\t\t\t\t\t\tthis.lineStart - 2,\n\t\t\t\t\t\t\t\t) + 1;\n\t\t\t\t\t\t\t--this.curLine;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.nextToken();\n\t\t\t\t}\n\n\t\t\t\tif (this.end > this.start) {\n\t\t\t\t\tmessage += ` ${this.input.slice(this.start, this.end)}`;\n\t\t\t\t}\n\n\t\t\t\tthis.raise(this.start, message);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Esprima-FB represents JSX strings as tokens called \"JSXText\", but Acorn-JSX\n\t\t\t * uses regular tt.string without any distinction between this and regular JS\n\t\t\t * strings. As such, we intercept an attempt to read a JSX string and set a flag\n\t\t\t * on extra so that when tokens are converted, the next token will be switched\n\t\t\t * to JSXText via onToken.\n\t\t\t * @param {number} quote A character code\n\t\t\t * @returns {void}\n\t\t\t */ // eslint-disable-next-line camelcase -- required by API\n\t\t\tjsx_readString(quote) {\n\t\t\t\tconst result = super.jsx_readString(quote);\n\n\t\t\t\tif (this.type === tokTypes.string) {\n\t\t\t\t\tthis[STATE].jsxAttrValueToken = true;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Performs last-minute Esprima-specific compatibility checks and fixes.\n\t\t\t * @param {acorn.Node} result The node to check.\n\t\t\t * @returns {EsprimaNode} The finished node.\n\t\t\t */\n\t\t\t[ESPRIMA_FINISH_NODE](result) {\n\t\t\t\t// Acorn doesn't count the opening and closing backticks as part of templates\n\t\t\t\t// so we have to adjust ranges/locations appropriately.\n\t\t\t\tif (result.type === \"TemplateElement\") {\n\t\t\t\t\t// save template element references to fix start/end later\n\t\t\t\t\tthis[STATE].templateElements.push(\n\t\t\t\t\t\t/** @type {acorn.TemplateElement} */\n\t\t\t\t\t\t(result),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tresult.type.includes(\"Function\") &&\n\t\t\t\t\t!(\"generator\" in result)\n\t\t\t\t) {\n\t\t\t\t\t/**\n\t\t\t\t\t * @type {acorn.FunctionDeclaration|acorn.FunctionExpression|\n\t\t\t\t\t *   acorn.ArrowFunctionExpression}\n\t\t\t\t\t */\n\t\t\t\t\t(result).generator = false;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t};\n\t};\n};\n\n/**\n * @fileoverview Main Espree file that converts Acorn into Esprima output.\n *\n * This file contains code from the following MIT-licensed projects:\n * 1. Acorn\n * 2. Babylon\n * 3. Babel-ESLint\n *\n * This file also contains code from Esprima, which is BSD licensed.\n *\n * Acorn is Copyright 2012-2015 Acorn Contributors (https://github.com/marijnh/acorn/blob/master/AUTHORS)\n * Babylon is Copyright 2014-2015 various contributors (https://github.com/babel/babel/blob/master/packages/babylon/AUTHORS)\n * Babel-ESLint is Copyright 2014-2015 Sebastian McKenzie <sebmck@gmail.com>\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright\n *   notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n *   notice, this list of conditions and the following disclaimer in the\n *   documentation and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * Esprima is Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n *   * Redistributions of source code must retain the above copyright\n *     notice, this list of conditions and the following disclaimer.\n *   * Redistributions in binary form must reproduce the above copyright\n *     notice, this list of conditions and the following disclaimer in the\n *     documentation and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n\n/**\n * @import { EspreeParserCtor, EspreeParserJsxCtor } from \"./lib/types.js\";\n */\n\n// ----------------------------------------------------------------------------\n// Types exported from file\n// ----------------------------------------------------------------------------\n/**\n * @typedef {3|5|6|7|8|9|10|11|12|13|14|15|16|17|2015|2016|2017|2018|2019|2020|2021|2022|2023|2024|2025|2026|'latest'} EcmaVersion\n */\n\n/**\n * @typedef {{\n *   type: string;\n *   value: any;\n *   start?: number;\n *   end?: number;\n *   loc?: acorn.SourceLocation;\n *   range?: [number, number];\n *   regex?: {flags: string, pattern: string};\n * }} EspreeToken\n */\n\n/**\n * @typedef {{\n *   type: \"Block\" | \"Hashbang\" | \"Line\",\n *   value: string,\n *   range?: [number, number],\n *   start?: number,\n *   end?: number,\n *   loc?: {\n *     start: acorn.Position | undefined,\n *     end: acorn.Position | undefined\n *   }\n * }} EspreeComment\n */\n\n/**\n * @typedef {{\n *   comments?: EspreeComment[]\n * } & EspreeToken[]} EspreeTokens\n */\n\n/**\n * `allowReserved` is as in `acorn.Options`\n *\n * `ecmaVersion` currently as in `acorn.Options` though optional\n *\n * `sourceType` as in `acorn.Options` but also allows `commonjs`\n *\n * `ecmaFeatures`, `range`, `loc`, `tokens` are not in `acorn.Options`\n *\n * `comment` is not in `acorn.Options` and doesn't err without it, but is used\n */\n/**\n * @typedef {{\n *   allowReserved?: boolean,\n *   ecmaVersion?: EcmaVersion,\n *   sourceType?: \"script\"|\"module\"|\"commonjs\",\n *   ecmaFeatures?: {\n *     jsx?: boolean,\n *     globalReturn?: boolean,\n *     impliedStrict?: boolean\n *   },\n *   range?: boolean,\n *   loc?: boolean,\n *   tokens?: boolean,\n *   comment?: boolean,\n * }} Options\n */\n\n// To initialize lazily.\nconst parsers = {\n\t/** @type {EspreeParserCtor|null} */\n\t_regular: null,\n\n\t/** @type {EspreeParserJsxCtor|null} */\n\t_jsx: null,\n\n\t/**\n\t * Returns regular Parser\n\t * @returns {EspreeParserCtor} Regular Acorn parser\n\t */\n\tget regular() {\n\t\tif (this._regular === null) {\n\t\t\tconst espreeParserFactory = /** @type {unknown} */ (espree());\n\n\t\t\tthis._regular = /** @type {EspreeParserCtor} */ (\n\t\t\t\t// Without conversion, types are incompatible, as\n\t\t\t\t// acorn's has a protected constructor\n\t\t\t\t/** @type {unknown} */\n\t\t\t\t(\n\t\t\t\t\tacorn__namespace.Parser.extend(\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * @type {(\n\t\t\t\t\t\t *   BaseParser: typeof acorn.Parser\n\t\t\t\t\t\t * ) => typeof acorn.Parser}\n\t\t\t\t\t\t */ (espreeParserFactory),\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\treturn this._regular;\n\t},\n\n\t/**\n\t * Returns JSX Parser\n\t * @returns {EspreeParserJsxCtor} JSX Acorn parser\n\t */\n\tget jsx() {\n\t\tif (this._jsx === null) {\n\t\t\tconst espreeParserFactory = /** @type {unknown} */ (espree());\n\t\t\tconst jsxFactory = jsx();\n\n\t\t\tthis._jsx = /** @type {EspreeParserJsxCtor} */ (\n\t\t\t\t// Without conversion, types are incompatible, as\n\t\t\t\t// acorn's has a protected constructor\n\t\t\t\t/** @type {unknown} */\n\t\t\t\t(\n\t\t\t\t\tacorn__namespace.Parser.extend(\n\t\t\t\t\t\tjsxFactory,\n\n\t\t\t\t\t\t/** @type {(BaseParser: typeof acorn.Parser) => typeof acorn.Parser} */\n\t\t\t\t\t\t(espreeParserFactory),\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\treturn this._jsx;\n\t},\n\n\t/**\n\t * Gets the parser object based on the supplied options.\n\t * @param {Options} [options] The parser options.\n\t * @returns {EspreeParserJsxCtor|EspreeParserCtor} Regular or JSX Acorn parser\n\t */\n\tget(options) {\n\t\tconst useJsx = Boolean(\n\t\t\toptions && options.ecmaFeatures && options.ecmaFeatures.jsx,\n\t\t);\n\n\t\treturn useJsx ? this.jsx : this.regular;\n\t},\n};\n\n//------------------------------------------------------------------------------\n// Tokenizer\n//------------------------------------------------------------------------------\n\n/**\n * Tokenizes the given code.\n * @param {string} code The code to tokenize.\n * @param {Options} [options] Options defining how to tokenize.\n * @returns {EspreeTokens} An array of tokens.\n * @throws {EnhancedSyntaxError} If the input code is invalid.\n * @private\n */\nfunction tokenize(code, options) {\n\tconst Parser = parsers.get(options);\n\n\t// Ensure to collect tokens.\n\tif (!options || options.tokens !== true) {\n\t\toptions = Object.assign({}, options, { tokens: true }); // eslint-disable-line no-param-reassign -- stylistic choice\n\t}\n\n\treturn /** @type {EspreeTokens} */ (new Parser(options, code).tokenize());\n}\n\n//------------------------------------------------------------------------------\n// Parser\n//------------------------------------------------------------------------------\n\n/**\n * Parses the given code.\n * @param {string} code The code to tokenize.\n * @param {Options} [options] Options defining how to tokenize.\n * @returns {acorn.Program} The \"Program\" AST node.\n * @throws {EnhancedSyntaxError} If the input code is invalid.\n */\nfunction parse(code, options) {\n\tconst Parser = parsers.get(options);\n\n\treturn new Parser(options, code).parse();\n}\n\n//------------------------------------------------------------------------------\n// Public\n//------------------------------------------------------------------------------\n\n/** @type {string} */\nconst version = \"11.2.0\"; // x-release-please-version\nconst name = \"espree\";\n\n// Derive node types from VisitorKeys\nconst Syntax = /* #__PURE__ */ (function () {\n\tlet key,\n\t\t/** @type {Record<string,string>} */\n\t\ttypes = {};\n\n\tif (typeof Object.create === \"function\") {\n\t\ttypes = Object.create(null);\n\t}\n\n\tfor (key in eslintVisitorKeys.KEYS) {\n\t\tif (Object.hasOwn(eslintVisitorKeys.KEYS, key)) {\n\t\t\ttypes[key] = key;\n\t\t}\n\t}\n\n\tif (typeof Object.freeze === \"function\") {\n\t\tObject.freeze(types);\n\t}\n\n\treturn types;\n})();\n\nconst latestEcmaVersion = /* #__PURE__ */ getLatestEcmaVersion();\n\nconst supportedEcmaVersions = /* #__PURE__ */ getSupportedEcmaVersions();\n\nObject.defineProperty(exports, \"VisitorKeys\", {\n\tenumerable: true,\n\tget: function () { return eslintVisitorKeys.KEYS; }\n});\nexports.Syntax = Syntax;\nexports.latestEcmaVersion = latestEcmaVersion;\nexports.name = name;\nexports.parse = parse;\nexports.supportedEcmaVersions = supportedEcmaVersions;\nexports.tokenize = tokenize;\nexports.version = version;\n", "'use strict';\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it\u2019s always valid, and a \\unnnn escape when the simpler form would be disallowed by Unicode patterns\u2019 stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n};\n", "/**\n * @fileoverview Common utils for AST.\n *\n * This file contains only shared items for core and rules.\n * If you make a utility for rules, please see `../rules/utils/ast-utils.js`.\n *\n * @author Toru Nagashima <https://github.com/mysticatea>\n */\n\"use strict\";\n\nconst breakableTypePattern =\n\t/^(?:(?:Do)?While|For(?:In|Of)?|Switch)Statement$/u;\nconst lineBreakPattern = /\\r\\n|[\\r\\n\\u2028\\u2029]/u;\nconst shebangPattern = /^#!([^\\r\\n]+)/u;\n\n/**\n * Creates a version of the `lineBreakPattern` regex with the global flag.\n * Global regexes are mutable, so this needs to be a function instead of a constant.\n * @returns {RegExp} A global regular expression that matches line terminators\n */\nfunction createGlobalLinebreakMatcher() {\n\treturn new RegExp(lineBreakPattern.source, \"gu\");\n}\n\nmodule.exports = {\n\tbreakableTypePattern,\n\tlineBreakPattern,\n\tcreateGlobalLinebreakMatcher,\n\tshebangPattern,\n};\n", "/**\n * @fileoverview Globals for ecmaVersion/sourceType\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Globals\n//-----------------------------------------------------------------------------\n\nconst commonjs = {\n\texports: true,\n\tglobal: false,\n\tmodule: false,\n\trequire: false,\n};\n\nconst es3 = {\n\tArray: false,\n\tBoolean: false,\n\tconstructor: false,\n\tDate: false,\n\tdecodeURI: false,\n\tdecodeURIComponent: false,\n\tencodeURI: false,\n\tencodeURIComponent: false,\n\tError: false,\n\tescape: false,\n\teval: false,\n\tEvalError: false,\n\tFunction: false,\n\thasOwnProperty: false,\n\tInfinity: false,\n\tisFinite: false,\n\tisNaN: false,\n\tisPrototypeOf: false,\n\tMath: false,\n\tNaN: false,\n\tNumber: false,\n\tObject: false,\n\tparseFloat: false,\n\tparseInt: false,\n\tpropertyIsEnumerable: false,\n\tRangeError: false,\n\tReferenceError: false,\n\tRegExp: false,\n\tString: false,\n\tSyntaxError: false,\n\ttoLocaleString: false,\n\ttoString: false,\n\tTypeError: false,\n\tundefined: false,\n\tunescape: false,\n\tURIError: false,\n\tvalueOf: false,\n};\n\nconst es5 = {\n\t...es3,\n\tJSON: false,\n};\n\nconst es2015 = {\n\t...es5,\n\tArrayBuffer: false,\n\tDataView: false,\n\tFloat32Array: false,\n\tFloat64Array: false,\n\tInt16Array: false,\n\tInt32Array: false,\n\tInt8Array: false,\n\tIntl: false,\n\tMap: false,\n\tPromise: false,\n\tProxy: false,\n\tReflect: false,\n\tSet: false,\n\tSymbol: false,\n\tUint16Array: false,\n\tUint32Array: false,\n\tUint8Array: false,\n\tUint8ClampedArray: false,\n\tWeakMap: false,\n\tWeakSet: false,\n};\n\n// no new globals in ES2016\nconst es2016 = {\n\t...es2015,\n};\n\nconst es2017 = {\n\t...es2016,\n\tAtomics: false,\n\tSharedArrayBuffer: false,\n};\n\n// no new globals in ES2018\nconst es2018 = {\n\t...es2017,\n};\n\n// no new globals in ES2019\nconst es2019 = {\n\t...es2018,\n};\n\nconst es2020 = {\n\t...es2019,\n\tBigInt: false,\n\tBigInt64Array: false,\n\tBigUint64Array: false,\n\tglobalThis: false,\n};\n\nconst es2021 = {\n\t...es2020,\n\tAggregateError: false,\n\tFinalizationRegistry: false,\n\tWeakRef: false,\n};\n\nconst es2022 = {\n\t...es2021,\n};\n\nconst es2023 = {\n\t...es2022,\n};\n\nconst es2024 = {\n\t...es2023,\n};\n\nconst es2025 = {\n\t...es2024,\n\tFloat16Array: false,\n\tIterator: false,\n};\n\nconst es2026 = {\n\t...es2025,\n\tAsyncDisposableStack: false,\n\tDisposableStack: false,\n\tSuppressedError: false,\n\tTemporal: false,\n};\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\nmodule.exports = {\n\tcommonjs,\n\tes3,\n\tes5,\n\tes2015,\n\tes2016,\n\tes2017,\n\tes2018,\n\tes2019,\n\tes2020,\n\tes2021,\n\tes2022,\n\tes2023,\n\tes2024,\n\tes2025,\n\tes2026,\n};\n", "/**\n * @fileoverview Configuration related to ECMAScript versions\n * @author Milos Djermanovic\n */\n\n\"use strict\";\n\n/**\n * The latest ECMAScript version supported by ESLint.\n * @type {number} year-based ECMAScript version\n */\nconst LATEST_ECMA_VERSION = 2026;\n\nmodule.exports = {\n\tLATEST_ECMA_VERSION,\n};\n", "/**\n * @fileoverview Common utils for AST.\n * @author Gyandeep Singh\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst { KEYS: eslintVisitorKeys } = require(\"eslint-visitor-keys\");\nconst esutils = require(\"esutils\");\nconst espree = require(\"espree\");\nconst escapeRegExp = require(\"escape-string-regexp\");\nconst {\n\tbreakableTypePattern,\n\tcreateGlobalLinebreakMatcher,\n\tlineBreakPattern,\n\tshebangPattern,\n} = require(\"../../shared/ast-utils\");\nconst globals = require(\"../../../conf/globals\");\nconst { LATEST_ECMA_VERSION } = require(\"../../../conf/ecma-version\");\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Scope} Scope */\n/** @typedef {import(\"eslint-scope\").Variable} Variable */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst anyFunctionPattern =\n\t/^(?:Function(?:Declaration|Expression)|ArrowFunctionExpression)$/u;\nconst anyLoopPattern = /^(?:DoWhile|For|ForIn|ForOf|While)Statement$/u;\nconst arrayMethodWithThisArgPattern =\n\t/^(?:every|filter|find(?:Last)?(?:Index)?|flatMap|forEach|map|some)$/u;\nconst arrayOrTypedArrayPattern = /Array$/u;\nconst bindOrCallOrApplyPattern = /^(?:bind|call|apply)$/u;\nconst thisTagPattern = /^[\\s*]*@this/mu;\n\nconst COMMENTS_IGNORE_PATTERN =\n\t/^\\s*(?:eslint|jshint\\s+|jslint\\s+|istanbul\\s+|globals?\\s+|exported\\s+|jscs)/u;\nconst ESLINT_DIRECTIVE_PATTERN = /^(?:eslint[- ]|(?:globals?|exported) )/u;\nconst LINEBREAKS = new Set([\"\\r\\n\", \"\\r\", \"\\n\", \"\\u2028\", \"\\u2029\"]);\n\n// A set of node types that can contain a list of statements\nconst STATEMENT_LIST_PARENTS = new Set([\n\t\"Program\",\n\t\"BlockStatement\",\n\t\"StaticBlock\",\n\t\"SwitchCase\",\n]);\nconst LEXICAL_DECLARATION_KINDS = new Set([\n\t\"let\",\n\t\"const\",\n\t\"using\",\n\t\"await using\",\n]);\n\nconst DECIMAL_INTEGER_PATTERN = /^(?:0|0[0-7]*[89]\\d*|[1-9](?:_?\\d)*)$/u;\n\n// Tests the presence of at least one LegacyOctalEscapeSequence or NonOctalDecimalEscapeSequence in a raw string\nconst OCTAL_OR_NON_OCTAL_DECIMAL_ESCAPE_PATTERN =\n\t/^(?:[^\\\\]|\\\\.)*\\\\(?:[1-9]|0\\d)/su;\n\nconst LOGICAL_ASSIGNMENT_OPERATORS = new Set([\"&&=\", \"||=\", \"??=\"]);\n\n/**\n * All builtin global variables defined in the latest ECMAScript specification.\n * @type {Record<string,boolean>} Key is the name of the variable. Value is `true` if the variable is considered writable, `false` otherwise.\n */\nconst ECMASCRIPT_GLOBALS = globals[`es${LATEST_ECMA_VERSION}`];\n\n/**\n * Checks reference if is non initializer and writable.\n * @param {Reference} reference A reference to check.\n * @param {number} index The index of the reference in the references.\n * @param {Reference[]} references The array that the reference belongs to.\n * @returns {boolean} Success/Failure\n * @private\n */\nfunction isModifyingReference(reference, index, references) {\n\tconst identifier = reference.identifier;\n\n\t/*\n\t * Destructuring assignments can have multiple default value, so\n\t * possibly there are multiple writeable references for the same\n\t * identifier.\n\t */\n\tconst modifyingDifferentIdentifier =\n\t\tindex === 0 || references[index - 1].identifier !== identifier;\n\n\treturn (\n\t\tidentifier &&\n\t\treference.init === false &&\n\t\treference.isWrite() &&\n\t\tmodifyingDifferentIdentifier\n\t);\n}\n\n/**\n * Checks whether the given string starts with uppercase or not.\n * @param {string} s The string to check.\n * @returns {boolean} `true` if the string starts with uppercase.\n */\nfunction startsWithUpperCase(s) {\n\treturn s[0] !== s[0].toLocaleLowerCase();\n}\n\n/**\n * Checks whether or not a node is a constructor.\n * @param {ASTNode} node A function node to check.\n * @returns {boolean} Whether or not a node is a constructor.\n */\nfunction isES5Constructor(node) {\n\treturn node.id && startsWithUpperCase(node.id.name);\n}\n\n/**\n * Finds a function node from ancestors of a node.\n * @param {ASTNode} node A start node to find.\n * @returns {Node|null} A found function node.\n */\nfunction getUpperFunction(node) {\n\tfor (\n\t\tlet currentNode = node;\n\t\tcurrentNode;\n\t\tcurrentNode = currentNode.parent\n\t) {\n\t\tif (anyFunctionPattern.test(currentNode.type)) {\n\t\t\treturn currentNode;\n\t\t}\n\t}\n\treturn null;\n}\n\n/**\n * Checks whether a given node is a function node or not.\n * The following types are function nodes:\n *\n * - ArrowFunctionExpression\n * - FunctionDeclaration\n * - FunctionExpression\n * @param {ASTNode|null} node A node to check.\n * @returns {boolean} `true` if the node is a function node.\n */\nfunction isFunction(node) {\n\treturn Boolean(node && anyFunctionPattern.test(node.type));\n}\n\n/**\n * Checks whether a given node is a loop node or not.\n * The following types are loop nodes:\n *\n * - DoWhileStatement\n * - ForInStatement\n * - ForOfStatement\n * - ForStatement\n * - WhileStatement\n * @param {ASTNode|null} node A node to check.\n * @returns {boolean} `true` if the node is a loop node.\n */\nfunction isLoop(node) {\n\treturn Boolean(node && anyLoopPattern.test(node.type));\n}\n\n/**\n * Checks whether the given node is in a loop or not.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} `true` if the node is in a loop.\n */\nfunction isInLoop(node) {\n\tfor (\n\t\tlet currentNode = node;\n\t\tcurrentNode && !isFunction(currentNode);\n\t\tcurrentNode = currentNode.parent\n\t) {\n\t\tif (isLoop(currentNode)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Determines whether the given node is a `null` literal.\n * @param {ASTNode} node The node to check\n * @returns {boolean} `true` if the node is a `null` literal\n */\nfunction isNullLiteral(node) {\n\t/*\n\t * Checking `node.value === null` does not guarantee that a literal is a null literal.\n\t * When parsing values that cannot be represented in the current environment (e.g. unicode\n\t * regexes in Node 4), `node.value` is set to `null` because it wouldn't be possible to\n\t * set `node.value` to a unicode regex. To make sure a literal is actually `null`, check\n\t * `node.regex` instead. Also see: https://github.com/eslint/eslint/issues/8020\n\t */\n\treturn (\n\t\tnode.type === \"Literal\" &&\n\t\tnode.value === null &&\n\t\t!node.regex &&\n\t\t!node.bigint\n\t);\n}\n\n/**\n * Checks whether or not a node is `null` or `undefined`.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} Whether or not the node is a `null` or `undefined`.\n * @public\n */\nfunction isNullOrUndefined(node) {\n\treturn (\n\t\tisNullLiteral(node) ||\n\t\t(node.type === \"Identifier\" && node.name === \"undefined\") ||\n\t\t(node.type === \"UnaryExpression\" && node.operator === \"void\")\n\t);\n}\n\n/**\n * Checks whether or not a node is callee.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} Whether or not the node is callee.\n */\nfunction isCallee(node) {\n\treturn node.parent.type === \"CallExpression\" && node.parent.callee === node;\n}\n\n/**\n * Returns the result of the string conversion applied to the evaluated value of the given expression node,\n * if it can be determined statically.\n *\n * This function returns a `string` value for all `Literal` nodes and simple `TemplateLiteral` nodes only.\n * In all other cases, this function returns `null`.\n * @param {ASTNode} node Expression node.\n * @returns {string|null} String value if it can be determined. Otherwise, `null`.\n */\nfunction getStaticStringValue(node) {\n\tswitch (node.type) {\n\t\tcase \"Literal\":\n\t\t\tif (node.value === null) {\n\t\t\t\tif (isNullLiteral(node)) {\n\t\t\t\t\treturn String(node.value); // \"null\"\n\t\t\t\t}\n\t\t\t\tif (node.regex) {\n\t\t\t\t\treturn `/${node.regex.pattern}/${node.regex.flags}`;\n\t\t\t\t}\n\t\t\t\tif (node.bigint) {\n\t\t\t\t\treturn node.bigint;\n\t\t\t\t}\n\n\t\t\t\t// Otherwise, this is an unknown literal. The function will return null.\n\t\t\t} else {\n\t\t\t\treturn String(node.value);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"TemplateLiteral\":\n\t\t\tif (node.expressions.length === 0 && node.quasis.length === 1) {\n\t\t\t\treturn node.quasis[0].value.cooked;\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// no default\n\t}\n\n\treturn null;\n}\n\n/**\n * Gets the property name of a given node.\n * The node can be a MemberExpression, a Property, or a MethodDefinition.\n *\n * If the name is dynamic, this returns `null`.\n *\n * For examples:\n *\n *     a.b           // => \"b\"\n *     a[\"b\"]        // => \"b\"\n *     a['b']        // => \"b\"\n *     a[`b`]        // => \"b\"\n *     a[100]        // => \"100\"\n *     a[b]          // => null\n *     a[\"a\" + \"b\"]  // => null\n *     a[tag`b`]     // => null\n *     a[`${b}`]     // => null\n *\n *     let a = {b: 1}            // => \"b\"\n *     let a = {[\"b\"]: 1}        // => \"b\"\n *     let a = {['b']: 1}        // => \"b\"\n *     let a = {[`b`]: 1}        // => \"b\"\n *     let a = {[100]: 1}        // => \"100\"\n *     let a = {[b]: 1}          // => null\n *     let a = {[\"a\" + \"b\"]: 1}  // => null\n *     let a = {[tag`b`]: 1}     // => null\n *     let a = {[`${b}`]: 1}     // => null\n * @param {ASTNode} node The node to get.\n * @returns {string|null} The property name if static. Otherwise, null.\n */\nfunction getStaticPropertyName(node) {\n\tlet prop;\n\n\tswitch (node && node.type) {\n\t\tcase \"ChainExpression\":\n\t\t\treturn getStaticPropertyName(node.expression);\n\n\t\tcase \"Property\":\n\t\tcase \"PropertyDefinition\":\n\t\tcase \"MethodDefinition\":\n\t\tcase \"TSPropertySignature\":\n\t\tcase \"TSMethodSignature\":\n\t\t\tprop = node.key;\n\t\t\tbreak;\n\n\t\tcase \"MemberExpression\":\n\t\t\tprop = node.property;\n\t\t\tbreak;\n\n\t\t// no default\n\t}\n\n\tif (prop) {\n\t\tif (prop.type === \"Identifier\" && !node.computed) {\n\t\t\treturn prop.name;\n\t\t}\n\n\t\treturn getStaticStringValue(prop);\n\t}\n\n\treturn null;\n}\n\n/**\n * Retrieve `ChainExpression#expression` value if the given node a `ChainExpression` node. Otherwise, pass through it.\n * @param {ASTNode} node The node to address.\n * @returns {ASTNode} The `ChainExpression#expression` value if the node is a `ChainExpression` node. Otherwise, the node.\n */\nfunction skipChainExpression(node) {\n\treturn node && node.type === \"ChainExpression\" ? node.expression : node;\n}\n\n/**\n * Check if the `actual` is an expected value.\n * @param {string} actual The string value to check.\n * @param {string | RegExp} expected The expected string value or pattern.\n * @returns {boolean} `true` if the `actual` is an expected value.\n */\nfunction checkText(actual, expected) {\n\treturn typeof expected === \"string\"\n\t\t? actual === expected\n\t\t: expected.test(actual);\n}\n\n/**\n * Check if a given node is an Identifier node with a given name.\n * @param {ASTNode} node The node to check.\n * @param {string | RegExp} name The expected name or the expected pattern of the object name.\n * @returns {boolean} `true` if the node is an Identifier node with the name.\n */\nfunction isSpecificId(node, name) {\n\treturn node.type === \"Identifier\" && checkText(node.name, name);\n}\n\n/**\n * Check if a given node is member access with a given object name and property name pair.\n * This is regardless of optional or not.\n * @param {ASTNode} node The node to check.\n * @param {string | RegExp | null} objectName The expected name or the expected pattern of the object name. If this is nullish, this method doesn't check object.\n * @param {string | RegExp | null} propertyName The expected name or the expected pattern of the property name. If this is nullish, this method doesn't check property.\n * @returns {boolean} `true` if the node is member access with the object name and property name pair.\n * The node is a `MemberExpression` or `ChainExpression`.\n */\nfunction isSpecificMemberAccess(node, objectName, propertyName) {\n\tconst checkNode = skipChainExpression(node);\n\n\tif (checkNode.type !== \"MemberExpression\") {\n\t\treturn false;\n\t}\n\n\tif (objectName && !isSpecificId(checkNode.object, objectName)) {\n\t\treturn false;\n\t}\n\n\tif (propertyName) {\n\t\tconst actualPropertyName = getStaticPropertyName(checkNode);\n\n\t\tif (\n\t\t\ttypeof actualPropertyName !== \"string\" ||\n\t\t\t!checkText(actualPropertyName, propertyName)\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Check if two literal nodes are the same value.\n * @param {ASTNode} left The Literal node to compare.\n * @param {ASTNode} right The other Literal node to compare.\n * @returns {boolean} `true` if the two literal nodes are the same value.\n */\nfunction equalLiteralValue(left, right) {\n\t// RegExp literal.\n\tif (left.regex || right.regex) {\n\t\treturn Boolean(\n\t\t\tleft.regex &&\n\t\t\tright.regex &&\n\t\t\tleft.regex.pattern === right.regex.pattern &&\n\t\t\tleft.regex.flags === right.regex.flags,\n\t\t);\n\t}\n\n\t// BigInt literal.\n\tif (left.bigint || right.bigint) {\n\t\treturn left.bigint === right.bigint;\n\t}\n\n\treturn left.value === right.value;\n}\n\n/**\n * Check if two expressions reference the same value. For example:\n *     a = a\n *     a.b = a.b\n *     a[0] = a[0]\n *     a['b'] = a['b']\n * @param {ASTNode} left The left side of the comparison.\n * @param {ASTNode} right The right side of the comparison.\n * @param {boolean} [disableStaticComputedKey] Don't address `a.b` and `a[\"b\"]` are the same if `true`. For backward compatibility.\n * @returns {boolean} `true` if both sides match and reference the same value.\n */\nfunction isSameReference(left, right, disableStaticComputedKey = false) {\n\tif (left.type !== right.type) {\n\t\t// Handle `a.b` and `a?.b` are samely.\n\t\tif (left.type === \"ChainExpression\") {\n\t\t\treturn isSameReference(\n\t\t\t\tleft.expression,\n\t\t\t\tright,\n\t\t\t\tdisableStaticComputedKey,\n\t\t\t);\n\t\t}\n\t\tif (right.type === \"ChainExpression\") {\n\t\t\treturn isSameReference(\n\t\t\t\tleft,\n\t\t\t\tright.expression,\n\t\t\t\tdisableStaticComputedKey,\n\t\t\t);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tswitch (left.type) {\n\t\tcase \"Super\":\n\t\tcase \"ThisExpression\":\n\t\t\treturn true;\n\n\t\tcase \"Identifier\":\n\t\tcase \"PrivateIdentifier\":\n\t\t\treturn left.name === right.name;\n\t\tcase \"Literal\":\n\t\t\treturn equalLiteralValue(left, right);\n\n\t\tcase \"ChainExpression\":\n\t\t\treturn isSameReference(\n\t\t\t\tleft.expression,\n\t\t\t\tright.expression,\n\t\t\t\tdisableStaticComputedKey,\n\t\t\t);\n\n\t\tcase \"MemberExpression\": {\n\t\t\tif (!disableStaticComputedKey) {\n\t\t\t\tconst nameA = getStaticPropertyName(left);\n\n\t\t\t\t// x.y = x[\"y\"]\n\t\t\t\tif (nameA !== null) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tisSameReference(\n\t\t\t\t\t\t\tleft.object,\n\t\t\t\t\t\t\tright.object,\n\t\t\t\t\t\t\tdisableStaticComputedKey,\n\t\t\t\t\t\t) && nameA === getStaticPropertyName(right)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * x[0] = x[0]\n\t\t\t * x[y] = x[y]\n\t\t\t * x.y = x.y\n\t\t\t */\n\t\t\treturn (\n\t\t\t\tleft.computed === right.computed &&\n\t\t\t\tisSameReference(\n\t\t\t\t\tleft.object,\n\t\t\t\t\tright.object,\n\t\t\t\t\tdisableStaticComputedKey,\n\t\t\t\t) &&\n\t\t\t\tisSameReference(\n\t\t\t\t\tleft.property,\n\t\t\t\t\tright.property,\n\t\t\t\t\tdisableStaticComputedKey,\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\n/**\n * Checks whether or not a node is `Reflect.apply`.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} Whether or not the node is a `Reflect.apply`.\n */\nfunction isReflectApply(node) {\n\treturn isSpecificMemberAccess(node, \"Reflect\", \"apply\");\n}\n\n/**\n * Checks whether or not a node is `Array.from`.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} Whether or not the node is a `Array.from`.\n */\nfunction isArrayFromMethod(node) {\n\treturn isSpecificMemberAccess(node, arrayOrTypedArrayPattern, \"from\");\n}\n\n/**\n * Checks whether or not a node is `Array.fromAsync`.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} Whether or not the node is a `Array.fromAsync`.\n */\nfunction isArrayFromAsyncMethod(node) {\n\treturn isSpecificMemberAccess(node, \"Array\", \"fromAsync\");\n}\n\n/**\n * Checks whether or not a node is a method which expects a function as a first argument, and `thisArg` as a second argument.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} Whether or not the node is a method which expects a function as a first argument, and `thisArg` as a second argument.\n */\nfunction isMethodWhichHasThisArg(node) {\n\treturn isSpecificMemberAccess(node, null, arrayMethodWithThisArgPattern);\n}\n\n/**\n * Creates the negate function of the given function.\n * @param {Function} f The function to negate.\n * @returns {Function} Negated function.\n */\nfunction negate(f) {\n\treturn token => !f(token);\n}\n\n/**\n * Determines if a node is surrounded by parentheses.\n * @param {SourceCode} sourceCode The ESLint source code object\n * @param {ASTNode} node The node to be checked.\n * @returns {boolean} True if the node is parenthesised.\n * @private\n */\nfunction isParenthesised(sourceCode, node) {\n\tconst previousToken = sourceCode.getTokenBefore(node),\n\t\tnextToken = sourceCode.getTokenAfter(node);\n\n\treturn (\n\t\tBoolean(previousToken && nextToken) &&\n\t\tpreviousToken.value === \"(\" &&\n\t\tpreviousToken.range[1] <= node.range[0] &&\n\t\tnextToken.value === \")\" &&\n\t\tnextToken.range[0] >= node.range[1]\n\t);\n}\n\n/**\n * Checks if the given token is a `=` token or not.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the token is a `=` token.\n */\nfunction isEqToken(token) {\n\treturn token.value === \"=\" && token.type === \"Punctuator\";\n}\n\n/**\n * Checks if the given token is an arrow token or not.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the token is an arrow token.\n */\nfunction isArrowToken(token) {\n\treturn token.value === \"=>\" && token.type === \"Punctuator\";\n}\n\n/**\n * Checks if the given token is a comma token or not.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the token is a comma token.\n */\nfunction isCommaToken(token) {\n\treturn token.value === \",\" && token.type === \"Punctuator\";\n}\n\n/**\n * Checks if the given token is a dot token or not.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the token is a dot token.\n */\nfunction isDotToken(token) {\n\treturn token.value === \".\" && token.type === \"Punctuator\";\n}\n\n/**\n * Checks if the given token is a `?.` token or not.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the token is a `?.` token.\n */\nfunction isQuestionDotToken(token) {\n\treturn token.value === \"?.\" && token.type === \"Punctuator\";\n}\n\n/**\n * Checks if the given token is a semicolon token or not.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the token is a semicolon token.\n */\nfunction isSemicolonToken(token) {\n\treturn token.value === \";\" && token.type === \"Punctuator\";\n}\n\n/**\n * Checks if the given token is a colon token or not.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the token is a colon token.\n */\nfunction isColonToken(token) {\n\treturn token.value === \":\" && token.type === \"Punctuator\";\n}\n\n/**\n * Checks if the given token is an opening parenthesis token or not.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the token is an opening parenthesis token.\n */\nfunction isOpeningParenToken(token) {\n\treturn token.value === \"(\" && token.type === \"Punctuator\";\n}\n\n/**\n * Checks if the given token is a closing parenthesis token or not.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the token is a closing parenthesis token.\n */\nfunction isClosingParenToken(token) {\n\treturn token.value === \")\" && token.type === \"Punctuator\";\n}\n\n/**\n * Checks if the given token is an opening square bracket token or not.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the token is an opening square bracket token.\n */\nfunction isOpeningBracketToken(token) {\n\treturn token.value === \"[\" && token.type === \"Punctuator\";\n}\n\n/**\n * Checks if the given token is a closing square bracket token or not.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the token is a closing square bracket token.\n */\nfunction isClosingBracketToken(token) {\n\treturn token.value === \"]\" && token.type === \"Punctuator\";\n}\n\n/**\n * Checks if the given token is an opening brace token or not.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the token is an opening brace token.\n */\nfunction isOpeningBraceToken(token) {\n\treturn token.value === \"{\" && token.type === \"Punctuator\";\n}\n\n/**\n * Checks if the given token is a closing brace token or not.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the token is a closing brace token.\n */\nfunction isClosingBraceToken(token) {\n\treturn token.value === \"}\" && token.type === \"Punctuator\";\n}\n\n/**\n * Checks if the given token is a comment token or not.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the token is a comment token.\n */\nfunction isCommentToken(token) {\n\treturn (\n\t\ttoken.type === \"Line\" ||\n\t\ttoken.type === \"Block\" ||\n\t\ttoken.type === \"Shebang\"\n\t);\n}\n\n/**\n * Checks if the given token is a keyword token or not.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the token is a keyword token.\n */\nfunction isKeywordToken(token) {\n\treturn token.type === \"Keyword\";\n}\n\n/**\n * Checks whether the given node represents an ES6 export declaration.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} `true` if the node is an export declaration.\n * @private\n */\nfunction isExportDeclaration(node) {\n\treturn (\n\t\tnode.type === \"ExportDefaultDeclaration\" ||\n\t\tnode.type === \"ExportNamedDeclaration\" ||\n\t\tnode.type === \"ExportAllDeclaration\"\n\t);\n}\n\n/**\n * Checks for the presence of a JSDoc comment for the given node and returns it.\n * @param {ASTNode} node The node to get the comment for.\n * @param {SourceCode} sourceCode A SourceCode instance to get comments.\n * @returns {Token|null} The Block comment token containing the JSDoc comment for the given node or null if not found.\n * @private\n */\nfunction findJSDocComment(node, sourceCode) {\n\tconst tokenBefore = sourceCode.getTokenBefore(node, {\n\t\tincludeComments: true,\n\t});\n\n\tif (\n\t\ttokenBefore &&\n\t\ttokenBefore.type === \"Block\" &&\n\t\ttokenBefore.value.charAt(0) === \"*\" &&\n\t\tnode.loc.start.line - tokenBefore.loc.end.line <= 1\n\t) {\n\t\treturn tokenBefore;\n\t}\n\n\treturn null;\n}\n\n/**\n * Retrieves the JSDoc comment for a given node.\n * @param {ASTNode} node The node to get the comment for.\n * @param {SourceCode} sourceCode A SourceCode instance to get comments.\n * @returns {Token|null} The Block comment token containing the JSDoc comment for the given node or null if not found.\n * @private\n */\nfunction getJSDocComment(node, sourceCode) {\n\tlet parent = node.parent;\n\n\tswitch (node.type) {\n\t\tcase \"ClassDeclaration\":\n\t\tcase \"FunctionDeclaration\":\n\t\t\treturn findJSDocComment(\n\t\t\t\tisExportDeclaration(parent) ? parent : node,\n\t\t\t\tsourceCode,\n\t\t\t);\n\n\t\tcase \"ClassExpression\":\n\t\t\treturn findJSDocComment(parent.parent, sourceCode);\n\n\t\tcase \"ArrowFunctionExpression\":\n\t\tcase \"FunctionExpression\":\n\t\t\tif (\n\t\t\t\tparent.type !== \"CallExpression\" &&\n\t\t\t\tparent.type !== \"NewExpression\"\n\t\t\t) {\n\t\t\t\twhile (\n\t\t\t\t\t!sourceCode.getCommentsBefore(parent).length &&\n\t\t\t\t\t!/Function/u.test(parent.type) &&\n\t\t\t\t\tparent.type !== \"MethodDefinition\" &&\n\t\t\t\t\tparent.type !== \"Property\"\n\t\t\t\t) {\n\t\t\t\t\tparent = parent.parent;\n\n\t\t\t\t\tif (!parent) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tparent &&\n\t\t\t\t\tparent.type !== \"FunctionDeclaration\" &&\n\t\t\t\t\tparent.type !== \"Program\"\n\t\t\t\t) {\n\t\t\t\t\treturn findJSDocComment(parent, sourceCode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn findJSDocComment(node, sourceCode);\n\n\t\t// falls through\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\n/**\n * Checks whether or not a node has a `@this` tag in its comments.\n * @param {ASTNode} node A node to check.\n * @param {SourceCode} sourceCode A SourceCode instance to get comments.\n * @returns {boolean} Whether or not the node has a `@this` tag in its comments.\n */\nfunction hasJSDocThisTag(node, sourceCode) {\n\tconst jsdocComment = getJSDocComment(node, sourceCode);\n\n\tif (jsdocComment && thisTagPattern.test(jsdocComment.value)) {\n\t\treturn true;\n\t}\n\n\t// Checks `@this` in its leading comments for callbacks,\n\t// because callbacks don't have its JSDoc comment.\n\t// e.g.\n\t//     sinon.test(/* @this sinon.Sandbox */function() { this.spy(); });\n\treturn sourceCode\n\t\t.getCommentsBefore(node)\n\t\t.some(comment => thisTagPattern.test(comment.value));\n}\n\n/**\n * Gets the `(` token of the given function node.\n * @param {ASTNode} node The function node to get.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {Token} `(` token.\n */\nfunction getOpeningParenOfParams(node, sourceCode) {\n\t// If the node is an arrow function and doesn't have parens, this returns the identifier of the first param.\n\tif (node.type === \"ArrowFunctionExpression\" && node.params.length === 1) {\n\t\tconst argToken = sourceCode.getFirstToken(node.params[0]);\n\t\tconst maybeParenToken = sourceCode.getTokenBefore(argToken);\n\n\t\treturn isOpeningParenToken(maybeParenToken)\n\t\t\t? maybeParenToken\n\t\t\t: argToken;\n\t}\n\n\t// Otherwise, returns paren.\n\treturn node.id\n\t\t? sourceCode.getTokenAfter(node.id, isOpeningParenToken)\n\t\t: sourceCode.getFirstToken(node, isOpeningParenToken);\n}\n\n/**\n * Checks whether or not the tokens of two given nodes are same.\n * @param {ASTNode} left A node 1 to compare.\n * @param {ASTNode} right A node 2 to compare.\n * @param {SourceCode} sourceCode The ESLint source code object.\n * @returns {boolean} the source code for the given node.\n */\nfunction equalTokens(left, right, sourceCode) {\n\tconst tokensL = sourceCode.getTokens(left);\n\tconst tokensR = sourceCode.getTokens(right);\n\n\tif (tokensL.length !== tokensR.length) {\n\t\treturn false;\n\t}\n\tfor (let i = 0; i < tokensL.length; ++i) {\n\t\tif (\n\t\t\ttokensL[i].type !== tokensR[i].type ||\n\t\t\ttokensL[i].value !== tokensR[i].value\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Check if the given node is a true logical expression or not.\n *\n * The three binary expressions logical-or (`||`), logical-and (`&&`), and\n * coalesce (`??`) are known as `ShortCircuitExpression`.\n * But ESTree represents those by `LogicalExpression` node.\n *\n * This function rejects coalesce expressions of `LogicalExpression` node.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} `true` if the node is `&&` or `||`.\n * @see https://tc39.es/ecma262/#prod-ShortCircuitExpression\n */\nfunction isLogicalExpression(node) {\n\treturn (\n\t\tnode.type === \"LogicalExpression\" &&\n\t\t(node.operator === \"&&\" || node.operator === \"||\")\n\t);\n}\n\n/**\n * Check if the given node is a nullish coalescing expression or not.\n *\n * The three binary expressions logical-or (`||`), logical-and (`&&`), and\n * coalesce (`??`) are known as `ShortCircuitExpression`.\n * But ESTree represents those by `LogicalExpression` node.\n *\n * This function finds only coalesce expressions of `LogicalExpression` node.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} `true` if the node is `??`.\n */\nfunction isCoalesceExpression(node) {\n\treturn node.type === \"LogicalExpression\" && node.operator === \"??\";\n}\n\n/**\n * Check if given two nodes are the pair of a logical expression and a coalesce expression.\n * @param {ASTNode} left A node to check.\n * @param {ASTNode} right Another node to check.\n * @returns {boolean} `true` if the two nodes are the pair of a logical expression and a coalesce expression.\n */\nfunction isMixedLogicalAndCoalesceExpressions(left, right) {\n\treturn (\n\t\t(isLogicalExpression(left) && isCoalesceExpression(right)) ||\n\t\t(isCoalesceExpression(left) && isLogicalExpression(right))\n\t);\n}\n\n/**\n * Checks if the given operator is a logical assignment operator.\n * @param {string} operator The operator to check.\n * @returns {boolean} `true` if the operator is a logical assignment operator.\n */\nfunction isLogicalAssignmentOperator(operator) {\n\treturn LOGICAL_ASSIGNMENT_OPERATORS.has(operator);\n}\n\n/**\n * Get the colon token of the given SwitchCase node.\n * @param {ASTNode} node The SwitchCase node to get.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {Token} The colon token of the node.\n */\nfunction getSwitchCaseColonToken(node, sourceCode) {\n\tif (node.test) {\n\t\treturn sourceCode.getTokenAfter(node.test, isColonToken);\n\t}\n\treturn sourceCode.getFirstToken(node, 1);\n}\n\n/**\n * Gets ESM module export name represented by the given node.\n * @param {ASTNode} node `Identifier` or string `Literal` node in a position\n * that represents a module export name:\n *   - `ImportSpecifier#imported`\n *   - `ExportSpecifier#local` (if it is a re-export from another module)\n *   - `ExportSpecifier#exported`\n *   - `ExportAllDeclaration#exported`\n * @returns {string} The module export name.\n */\nfunction getModuleExportName(node) {\n\tif (node.type === \"Identifier\") {\n\t\treturn node.name;\n\t}\n\n\t// string literal\n\treturn node.value;\n}\n\n/**\n * Returns literal's value converted to the Boolean type\n * @param {ASTNode} node any `Literal` node\n * @returns {boolean | null} `true` when node is truthy, `false` when node is falsy,\n *  `null` when it cannot be determined.\n */\nfunction getBooleanValue(node) {\n\tif (node.value === null) {\n\t\t/*\n\t\t * it might be a null literal or bigint/regex literal in unsupported environments .\n\t\t * https://github.com/estree/estree/blob/14df8a024956ea289bd55b9c2226a1d5b8a473ee/es5.md#regexpliteral\n\t\t * https://github.com/estree/estree/blob/14df8a024956ea289bd55b9c2226a1d5b8a473ee/es2020.md#bigintliteral\n\t\t */\n\n\t\tif (node.raw === \"null\") {\n\t\t\treturn false;\n\t\t}\n\n\t\t// regex is always truthy\n\t\tif (typeof node.regex === \"object\") {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\treturn !!node.value;\n}\n\n/**\n * Checks if a branch node of LogicalExpression short circuits the whole condition\n * @param {ASTNode} node The branch of main condition which needs to be checked\n * @param {string} operator The operator of the main LogicalExpression.\n * @returns {boolean} true when condition short circuits whole condition\n */\nfunction isLogicalIdentity(node, operator) {\n\tswitch (node.type) {\n\t\tcase \"Literal\":\n\t\t\treturn (\n\t\t\t\t(operator === \"||\" && getBooleanValue(node) === true) ||\n\t\t\t\t(operator === \"&&\" && getBooleanValue(node) === false)\n\t\t\t);\n\n\t\tcase \"UnaryExpression\":\n\t\t\treturn operator === \"&&\" && node.operator === \"void\";\n\n\t\tcase \"LogicalExpression\":\n\t\t\t/*\n\t\t\t * handles `a && false || b`\n\t\t\t * `false` is an identity element of `&&` but not `||`\n\t\t\t */\n\t\t\treturn (\n\t\t\t\toperator === node.operator &&\n\t\t\t\t(isLogicalIdentity(node.left, operator) ||\n\t\t\t\t\tisLogicalIdentity(node.right, operator))\n\t\t\t);\n\n\t\tcase \"AssignmentExpression\":\n\t\t\treturn (\n\t\t\t\t[\"||=\", \"&&=\"].includes(node.operator) &&\n\t\t\t\toperator === node.operator.slice(0, -1) &&\n\t\t\t\tisLogicalIdentity(node.right, operator)\n\t\t\t);\n\n\t\t// no default\n\t}\n\treturn false;\n}\n\n/**\n * Checks if an identifier is a reference to a global variable.\n * @param {Scope} scope The scope in which the identifier is referenced.\n * @param {ASTNode} node An identifier node to check.\n * @returns {boolean} `true` if the identifier is a reference to a global variable.\n */\nfunction isReferenceToGlobalVariable(scope, node) {\n\tconst reference = scope.references.find(ref => ref.identifier === node);\n\n\treturn Boolean(\n\t\treference &&\n\t\treference.resolved &&\n\t\treference.resolved.scope.type === \"global\" &&\n\t\treference.resolved.defs.length === 0,\n\t);\n}\n\n/**\n * Checks if a  node has a constant truthiness value.\n * @param {Scope} scope Scope in which the node appears.\n * @param {ASTNode} node The AST node to check.\n * @param {boolean} inBooleanPosition `true` if checking the test of a\n * condition. `false` in all other cases. When `false`, checks if -- for\n * both string and number -- if coerced to that type, the value will\n * be constant.\n * @returns {boolean} true when node's truthiness is constant\n * @private\n */\nfunction isConstant(scope, node, inBooleanPosition) {\n\t// node.elements can return null values in the case of sparse arrays ex. [,]\n\tif (!node) {\n\t\treturn true;\n\t}\n\tswitch (node.type) {\n\t\tcase \"Literal\":\n\t\tcase \"ArrowFunctionExpression\":\n\t\tcase \"FunctionExpression\":\n\t\t\treturn true;\n\t\tcase \"ClassExpression\":\n\t\tcase \"ObjectExpression\":\n\t\t\t/**\n\t\t\t * In theory objects like:\n\t\t\t *\n\t\t\t * `{toString: () => a}`\n\t\t\t * `{valueOf: () => a}`\n\t\t\t *\n\t\t\t * Or a classes like:\n\t\t\t *\n\t\t\t * `class { static toString() { return a } }`\n\t\t\t * `class { static valueOf() { return a } }`\n\t\t\t *\n\t\t\t * Are not constant verifiably when `inBooleanPosition` is\n\t\t\t * false, but it's an edge case we've opted not to handle.\n\t\t\t */\n\t\t\treturn true;\n\t\tcase \"TemplateLiteral\":\n\t\t\treturn (\n\t\t\t\t(inBooleanPosition &&\n\t\t\t\t\tnode.quasis.some(quasi => quasi.value.cooked.length)) ||\n\t\t\t\tnode.expressions.every(exp => isConstant(scope, exp, false))\n\t\t\t);\n\n\t\tcase \"ArrayExpression\": {\n\t\t\tif (!inBooleanPosition) {\n\t\t\t\treturn node.elements.every(element =>\n\t\t\t\t\tisConstant(scope, element, false),\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tcase \"UnaryExpression\":\n\t\t\tif (\n\t\t\t\tnode.operator === \"void\" ||\n\t\t\t\t(node.operator === \"typeof\" && inBooleanPosition)\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (node.operator === \"!\") {\n\t\t\t\treturn isConstant(scope, node.argument, true);\n\t\t\t}\n\n\t\t\treturn isConstant(scope, node.argument, false);\n\n\t\tcase \"BinaryExpression\":\n\t\t\treturn (\n\t\t\t\tisConstant(scope, node.left, false) &&\n\t\t\t\tisConstant(scope, node.right, false) &&\n\t\t\t\tnode.operator !== \"in\"\n\t\t\t);\n\n\t\tcase \"LogicalExpression\": {\n\t\t\tconst isLeftConstant = isConstant(\n\t\t\t\tscope,\n\t\t\t\tnode.left,\n\t\t\t\tinBooleanPosition,\n\t\t\t);\n\t\t\tconst isRightConstant = isConstant(\n\t\t\t\tscope,\n\t\t\t\tnode.right,\n\t\t\t\tinBooleanPosition,\n\t\t\t);\n\t\t\tconst isLeftShortCircuit =\n\t\t\t\tisLeftConstant && isLogicalIdentity(node.left, node.operator);\n\t\t\tconst isRightShortCircuit =\n\t\t\t\tinBooleanPosition &&\n\t\t\t\tisRightConstant &&\n\t\t\t\tisLogicalIdentity(node.right, node.operator);\n\n\t\t\treturn (\n\t\t\t\t(isLeftConstant && isRightConstant) ||\n\t\t\t\tisLeftShortCircuit ||\n\t\t\t\tisRightShortCircuit\n\t\t\t);\n\t\t}\n\t\tcase \"NewExpression\":\n\t\t\treturn inBooleanPosition;\n\t\tcase \"AssignmentExpression\":\n\t\t\tif (node.operator === \"=\") {\n\t\t\t\treturn isConstant(scope, node.right, inBooleanPosition);\n\t\t\t}\n\n\t\t\tif ([\"||=\", \"&&=\"].includes(node.operator) && inBooleanPosition) {\n\t\t\t\treturn isLogicalIdentity(\n\t\t\t\t\tnode.right,\n\t\t\t\t\tnode.operator.slice(0, -1),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\tcase \"SequenceExpression\":\n\t\t\treturn isConstant(\n\t\t\t\tscope,\n\t\t\t\tnode.expressions.at(-1),\n\t\t\t\tinBooleanPosition,\n\t\t\t);\n\t\tcase \"SpreadElement\":\n\t\t\treturn isConstant(scope, node.argument, inBooleanPosition);\n\t\tcase \"CallExpression\":\n\t\t\tif (\n\t\t\t\tnode.callee.type === \"Identifier\" &&\n\t\t\t\tnode.callee.name === \"Boolean\"\n\t\t\t) {\n\t\t\t\tif (\n\t\t\t\t\tnode.arguments.length === 0 ||\n\t\t\t\t\tisConstant(scope, node.arguments[0], true)\n\t\t\t\t) {\n\t\t\t\t\treturn isReferenceToGlobalVariable(scope, node.callee);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\tcase \"Identifier\":\n\t\t\treturn (\n\t\t\t\tnode.name === \"undefined\" &&\n\t\t\t\tisReferenceToGlobalVariable(scope, node)\n\t\t\t);\n\n\t\t// no default\n\t}\n\treturn false;\n}\n\n/**\n * Checks whether a node is an ExpressionStatement at the top level of a file, function body, or TypeScript module block.\n * A top-level ExpressionStatement node is a directive if it contains a single unparenthesized\n * string literal and if it occurs either as the first sibling or immediately after another\n * directive.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} Whether or not the node is an ExpressionStatement at the top level of a\n * file, function body, or TypeScript module block.\n */\nfunction isTopLevelExpressionStatement(node) {\n\tif (node.type !== \"ExpressionStatement\") {\n\t\treturn false;\n\t}\n\tconst parent = node.parent;\n\n\treturn (\n\t\tparent.type === \"Program\" ||\n\t\tparent.type === \"TSModuleBlock\" ||\n\t\t(parent.type === \"BlockStatement\" && isFunction(parent.parent))\n\t);\n}\n\n/**\n * Check whether the given node is a part of a directive prologue or not.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} `true` if the node is a part of directive prologue.\n */\nfunction isDirective(node) {\n\treturn (\n\t\tnode.type === \"ExpressionStatement\" &&\n\t\ttypeof node.directive === \"string\"\n\t);\n}\n\n/**\n * Tests if a node appears at the beginning of an ancestor ExpressionStatement node.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} Whether the node appears at the beginning of an ancestor ExpressionStatement node.\n */\nfunction isStartOfExpressionStatement(node) {\n\tconst start = node.range[0];\n\tlet ancestor = node;\n\n\twhile ((ancestor = ancestor.parent) && ancestor.range[0] === start) {\n\t\tif (ancestor.type === \"ExpressionStatement\") {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * Checks whether a token can cause continuation of a preceding expression\n * (for example, of a class field initializer expression) in a class body.\n * This function checks specifically for tokens that can appear at the start\n * of a class member: `[` (computed key), `*` (generator method), `in` or `instanceof` (valid keys)\n * Without a preceding semicolon, these tokens would be parsed as index access or operators.\n * @param {Token} token The token to check.\n * @returns {boolean} Whether the token can cause continuation of a preceding expression.\n */\nfunction canContinueExpressionInClassBody(token) {\n\treturn (\n\t\t(token.type === \"Punctuator\" &&\n\t\t\t(token.value === \"[\" || token.value === \"*\")) ||\n\t\t// Different parsers may return these tokens as either \"Identifier\" or \"Keyword\"\n\t\t((token.type === \"Identifier\" || token.type === \"Keyword\") &&\n\t\t\t(token.value === \"in\" || token.value === \"instanceof\"))\n\t);\n}\n\n/**\n * Determines whether an opening parenthesis `(`, bracket `[`, asterisk `*`, or backtick ``` ` ``` needs to be preceded by a semicolon.\n * This opening parenthesis or bracket should be at the start of an `ExpressionStatement`, a `MethodDefinition`, a `PropertyDefinition`,\n * or at the start of the body of an `ArrowFunctionExpression`.\n * @type {(sourceCode: SourceCode, node: ASTNode) => boolean}\n * @param {SourceCode} sourceCode The source code object.\n * @param {ASTNode} node A node at the position where an opening parenthesis, bracket, or asterisk will be inserted.\n * @returns {boolean} Whether a semicolon is required before the opening parenthesis or bracket.\n */\nlet needsPrecedingSemicolon;\n\n{\n\tconst BREAK_OR_CONTINUE = new Set([\"BreakStatement\", \"ContinueStatement\"]);\n\n\t// Declaration types that cannot be continued by a punctuator when ending with a string Literal that is a direct child.\n\tconst DECLARATIONS = new Set([\n\t\t\"ExportAllDeclaration\",\n\t\t\"ExportNamedDeclaration\",\n\t\t\"ImportDeclaration\",\n\t]);\n\n\tconst IDENTIFIER_OR_KEYWORD = new Set([\"Identifier\", \"Keyword\"]);\n\n\t// Keywords that can immediately precede an ExpressionStatement node, mapped to the their node types.\n\tconst NODE_TYPES_BY_KEYWORD = {\n\t\t__proto__: null,\n\t\tbreak: \"BreakStatement\",\n\t\tcontinue: \"ContinueStatement\",\n\t\tdebugger: \"DebuggerStatement\",\n\t\tdo: \"DoWhileStatement\",\n\t\telse: \"IfStatement\",\n\t\treturn: \"ReturnStatement\",\n\t\tyield: \"YieldExpression\",\n\t};\n\n\t/*\n\t * Before an opening parenthesis, postfix `++` and `--` always trigger ASI;\n\t * the tokens `:`, `;`, `{` and `=>` don't expect a semicolon, as that would count as an empty statement.\n\t */\n\tconst PUNCTUATORS = new Set([\":\", \";\", \"{\", \"=>\", \"++\", \"--\"]);\n\n\t/*\n\t * Statements that can contain an `ExpressionStatement` after a closing parenthesis.\n\t * DoWhileStatement is an exception in that it always triggers ASI after the closing parenthesis.\n\t */\n\tconst STATEMENTS = new Set([\n\t\t\"DoWhileStatement\",\n\t\t\"ForInStatement\",\n\t\t\"ForOfStatement\",\n\t\t\"ForStatement\",\n\t\t\"IfStatement\",\n\t\t\"WhileStatement\",\n\t\t\"WithStatement\",\n\t]);\n\n\tconst TS_TYPE_NODE_TYPES = new Set([\n\t\t\"TSAsExpression\",\n\t\t\"TSSatisfiesExpression\",\n\t\t\"TSTypeAliasDeclaration\",\n\t\t\"TSTypeAnnotation\",\n\t]);\n\n\t/**\n\t * Determines whether a specified node is inside a TypeScript type context.\n\t * @param {ASTNode} node The node to check.\n\t * @returns {boolean} Whether the node is inside a TypeScript type context.\n\t */\n\tfunction isInType(node) {\n\t\tfor (let currNode = node; ; ) {\n\t\t\tconst { parent } = currNode;\n\t\t\tif (!parent) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tTS_TYPE_NODE_TYPES.has(parent.type) &&\n\t\t\t\tcurrNode === parent.typeAnnotation\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tcurrNode = parent;\n\t\t}\n\t\treturn false;\n\t}\n\n\tneedsPrecedingSemicolon = function (sourceCode, node) {\n\t\tconst prevToken = sourceCode.getTokenBefore(node);\n\n\t\tif (\n\t\t\t!prevToken ||\n\t\t\t(prevToken.type === \"Punctuator\" &&\n\t\t\t\tPUNCTUATORS.has(prevToken.value))\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst prevNode = sourceCode.getNodeByRangeIndex(prevToken.range[0]);\n\n\t\t// Uninitialized class fields don't need a semicolon\n\t\tif (\n\t\t\t// Key\n\t\t\t(prevNode.parent.type === \"PropertyDefinition\" &&\n\t\t\t\tprevNode.parent.key === prevNode) ||\n\t\t\t// Closing bracket of a computed key\n\t\t\t(prevNode.type === \"PropertyDefinition\" &&\n\t\t\t\tisClosingBracketToken(prevToken))\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (\n\t\t\tprevNode.type === \"TSDeclareFunction\" ||\n\t\t\tprevNode.parent.type === \"TSImportEqualsDeclaration\" ||\n\t\t\tprevNode.parent.parent?.type === \"TSImportEqualsDeclaration\" ||\n\t\t\tTS_TYPE_NODE_TYPES.has(prevNode.type) ||\n\t\t\tisInType(prevNode)\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (isClosingParenToken(prevToken)) {\n\t\t\treturn !STATEMENTS.has(prevNode.type);\n\t\t}\n\n\t\tif (isClosingBraceToken(prevToken)) {\n\t\t\treturn (\n\t\t\t\t(prevNode.type === \"BlockStatement\" &&\n\t\t\t\t\tprevNode.parent.type === \"FunctionExpression\" &&\n\t\t\t\t\tprevNode.parent.parent.type !== \"MethodDefinition\") ||\n\t\t\t\t(prevNode.type === \"ClassBody\" &&\n\t\t\t\t\tprevNode.parent.type === \"ClassExpression\") ||\n\t\t\t\tprevNode.type === \"ObjectExpression\"\n\t\t\t);\n\t\t}\n\n\t\tif (IDENTIFIER_OR_KEYWORD.has(prevToken.type)) {\n\t\t\tif (\n\t\t\t\tprevNode.parent.type === \"VariableDeclarator\" &&\n\t\t\t\t!prevNode.parent.init\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (BREAK_OR_CONTINUE.has(prevNode.parent.type)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst keyword = prevToken.value;\n\t\t\tconst nodeType = NODE_TYPES_BY_KEYWORD[keyword];\n\n\t\t\treturn prevNode.type !== nodeType;\n\t\t}\n\n\t\tif (prevToken.type === \"String\") {\n\t\t\treturn !DECLARATIONS.has(prevNode.parent.type);\n\t\t}\n\n\t\treturn true;\n\t};\n}\n\n/**\n * Checks if a node is used as an import attribute key, either in a static or dynamic import.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} Whether the node is used as an import attribute key.\n */\nfunction isImportAttributeKey(node) {\n\tconst { parent } = node;\n\n\t// static import/re-export\n\tif (parent.type === \"ImportAttribute\" && parent.key === node) {\n\t\treturn true;\n\t}\n\n\t// dynamic import\n\tif (\n\t\tparent.type === \"Property\" &&\n\t\t!parent.computed &&\n\t\t(parent.key === node ||\n\t\t\t(parent.value === node && parent.shorthand && !parent.method)) &&\n\t\tparent.parent.type === \"ObjectExpression\"\n\t) {\n\t\tconst objectExpression = parent.parent;\n\t\tconst objectExpressionParent = objectExpression.parent;\n\n\t\tif (\n\t\t\tobjectExpressionParent.type === \"ImportExpression\" &&\n\t\t\tobjectExpressionParent.options === objectExpression\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// nested key\n\t\tif (\n\t\t\tobjectExpressionParent.type === \"Property\" &&\n\t\t\tobjectExpressionParent.value === objectExpression\n\t\t) {\n\t\t\treturn isImportAttributeKey(objectExpressionParent.key);\n\t\t}\n\t}\n\n\treturn false;\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nmodule.exports = {\n\tCOMMENTS_IGNORE_PATTERN,\n\tLINEBREAKS,\n\tLINEBREAK_MATCHER: lineBreakPattern,\n\tSHEBANG_MATCHER: shebangPattern,\n\tSTATEMENT_LIST_PARENTS,\n\tECMASCRIPT_GLOBALS,\n\n\t/**\n\t * Determines whether two adjacent tokens are on the same line.\n\t * @param {Object} left The left token object.\n\t * @param {Object} right The right token object.\n\t * @returns {boolean} Whether or not the tokens are on the same line.\n\t * @public\n\t */\n\tisTokenOnSameLine(left, right) {\n\t\treturn left.loc.end.line === right.loc.start.line;\n\t},\n\n\tisNullOrUndefined,\n\tisCallee,\n\tisES5Constructor,\n\tgetUpperFunction,\n\tisFunction,\n\tisLoop,\n\tisInLoop,\n\tisArrayFromMethod,\n\tisArrayFromAsyncMethod,\n\tisParenthesised,\n\tcreateGlobalLinebreakMatcher,\n\tequalTokens,\n\n\tisArrowToken,\n\tisClosingBraceToken,\n\tisClosingBracketToken,\n\tisClosingParenToken,\n\tisColonToken,\n\tisCommaToken,\n\tisCommentToken,\n\tisDotToken,\n\tisQuestionDotToken,\n\tisKeywordToken,\n\tisNotClosingBraceToken: negate(isClosingBraceToken),\n\tisNotClosingBracketToken: negate(isClosingBracketToken),\n\tisNotClosingParenToken: negate(isClosingParenToken),\n\tisNotColonToken: negate(isColonToken),\n\tisNotCommaToken: negate(isCommaToken),\n\tisNotDotToken: negate(isDotToken),\n\tisNotQuestionDotToken: negate(isQuestionDotToken),\n\tisNotOpeningBraceToken: negate(isOpeningBraceToken),\n\tisNotOpeningBracketToken: negate(isOpeningBracketToken),\n\tisNotOpeningParenToken: negate(isOpeningParenToken),\n\tisNotSemicolonToken: negate(isSemicolonToken),\n\tisOpeningBraceToken,\n\tisOpeningBracketToken,\n\tisOpeningParenToken,\n\tisSemicolonToken,\n\tisEqToken,\n\n\t/**\n\t * Checks whether or not a given node is a string literal.\n\t * @param {ASTNode} node A node to check.\n\t * @returns {boolean} `true` if the node is a string literal.\n\t */\n\tisStringLiteral(node) {\n\t\treturn (\n\t\t\t(node.type === \"Literal\" && typeof node.value === \"string\") ||\n\t\t\tnode.type === \"TemplateLiteral\"\n\t\t);\n\t},\n\n\t/**\n\t * Checks whether a given node is a breakable statement or not.\n\t * The node is breakable if the node is one of the following type:\n\t *\n\t * - DoWhileStatement\n\t * - ForInStatement\n\t * - ForOfStatement\n\t * - ForStatement\n\t * - SwitchStatement\n\t * - WhileStatement\n\t * @param {ASTNode} node A node to check.\n\t * @returns {boolean} `true` if the node is breakable.\n\t */\n\tisBreakableStatement(node) {\n\t\treturn breakableTypePattern.test(node.type);\n\t},\n\n\t/**\n\t * Gets references which are non initializer and writable.\n\t * @param {Reference[]} references An array of references.\n\t * @returns {Reference[]} An array of only references which are non initializer and writable.\n\t * @public\n\t */\n\tgetModifyingReferences(references) {\n\t\treturn references.filter(isModifyingReference);\n\t},\n\n\t/**\n\t * Validate that a string passed in is surrounded by the specified character\n\t * @param {string} val The text to check.\n\t * @param {string} character The character to see if it's surrounded by.\n\t * @returns {boolean} True if the text is surrounded by the character, false if not.\n\t * @private\n\t */\n\tisSurroundedBy(val, character) {\n\t\treturn val[0] === character && val.at(-1) === character;\n\t},\n\n\t/**\n\t * Returns whether the provided node is an ESLint directive comment or not\n\t * @param {Line|Block} node The comment token to be checked\n\t * @returns {boolean} `true` if the node is an ESLint directive comment\n\t */\n\tisDirectiveComment(node) {\n\t\tconst comment = node.value.trim();\n\n\t\treturn (\n\t\t\t(node.type === \"Line\" && comment.startsWith(\"eslint-\")) ||\n\t\t\t(node.type === \"Block\" && ESLINT_DIRECTIVE_PATTERN.test(comment))\n\t\t);\n\t},\n\n\t/**\n\t * Gets the trailing statement of a given node.\n\t *\n\t *     if (code)\n\t *         consequent;\n\t *\n\t * When taking this `IfStatement`, returns `consequent;` statement.\n\t * @param {ASTNode} A node to get.\n\t * @returns {ASTNode|null} The trailing statement's node.\n\t */\n\tgetTrailingStatement: esutils.ast.trailingStatement,\n\n\t/**\n\t * Finds the variable by a given name in a given scope and its upper scopes.\n\t * @param {Scope} initScope A scope to start find.\n\t * @param {string} name A variable name to find.\n\t * @returns {Variable|null} A found variable or `null`.\n\t */\n\tgetVariableByName(initScope, name) {\n\t\tlet scope = initScope;\n\n\t\twhile (scope) {\n\t\t\tconst variable = scope.set.get(name);\n\n\t\t\tif (variable) {\n\t\t\t\treturn variable;\n\t\t\t}\n\n\t\t\tscope = scope.upper;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Checks whether or not a given function node is the default `this` binding.\n\t *\n\t * First, this checks the node:\n\t *\n\t * - The given node is not in `PropertyDefinition#value` position.\n\t * - The given node is not `StaticBlock`.\n\t * - The function name does not start with uppercase. It's a convention to capitalize the names\n\t *   of constructor functions. This check is not performed if `capIsConstructor` is set to `false`.\n\t * - The function does not have a JSDoc comment that has a `@this` tag.\n\t *\n\t * Next, this checks the location of the node.\n\t * If the location is below, this judges `this` is valid.\n\t *\n\t * - The location is not on an object literal.\n\t * - The location is not assigned to a variable which starts with an uppercase letter. Applies to anonymous\n\t *   functions only, as the name of the variable is considered to be the name of the function in this case.\n\t *   This check is not performed if `capIsConstructor` is set to `false`.\n\t * - The location is not on an ES2015 class.\n\t * - Its `bind`/`call`/`apply` method is not called directly.\n\t * - The function is not a callback of array methods (such as `.forEach()`) if `thisArg` is given.\n\t * @param {ASTNode} node A function node to check. It also can be an implicit function, like `StaticBlock`\n\t * or any expression that is `PropertyDefinition#value` node.\n\t * @param {SourceCode} sourceCode A SourceCode instance to get comments.\n\t * @param {boolean} [capIsConstructor = true] `false` disables the assumption that functions which name starts\n\t * with an uppercase or are assigned to a variable which name starts with an uppercase are constructors.\n\t * @returns {boolean} The function node is the default `this` binding.\n\t */\n\tisDefaultThisBinding(node, sourceCode, { capIsConstructor = true } = {}) {\n\t\t/*\n\t\t * Class field initializers are implicit functions, but ESTree doesn't have the AST node of field initializers.\n\t\t * Therefore, A expression node at `PropertyDefinition#value` is a function.\n\t\t * In this case, `this` is always not default binding.\n\t\t */\n\t\tif (\n\t\t\tnode.parent.type === \"PropertyDefinition\" &&\n\t\t\tnode.parent.value === node\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Class static blocks are implicit functions. In this case, `this` is always not default binding.\n\t\tif (node.type === \"StaticBlock\") {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check if the function has a parameter named `this`.\n\t\tif (\n\t\t\t(node.type === \"FunctionDeclaration\" ||\n\t\t\t\tnode.type === \"FunctionExpression\") &&\n\t\t\tnode.params.some(\n\t\t\t\tparam => param.type === \"Identifier\" && param.name === \"this\",\n\t\t\t)\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (\n\t\t\t(capIsConstructor && isES5Constructor(node)) ||\n\t\t\thasJSDocThisTag(node, sourceCode)\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tconst isAnonymous = node.id === null;\n\t\tlet currentNode = node;\n\n\t\twhile (currentNode) {\n\t\t\tconst parent = currentNode.parent;\n\n\t\t\tswitch (parent.type) {\n\t\t\t\t/*\n\t\t\t\t * Looks up the destination.\n\t\t\t\t * e.g., obj.foo = nativeFoo || function foo() { ... };\n\t\t\t\t */\n\t\t\t\tcase \"LogicalExpression\":\n\t\t\t\tcase \"ConditionalExpression\":\n\t\t\t\tcase \"ChainExpression\":\n\t\t\t\t\tcurrentNode = parent;\n\t\t\t\t\tbreak;\n\n\t\t\t\t/*\n\t\t\t\t * If the upper function is IIFE, checks the destination of the return value.\n\t\t\t\t * e.g.\n\t\t\t\t *   obj.foo = (function() {\n\t\t\t\t *     // setup...\n\t\t\t\t *     return function foo() { ... };\n\t\t\t\t *   })();\n\t\t\t\t *   obj.foo = (() =>\n\t\t\t\t *     function foo() { ... }\n\t\t\t\t *   )();\n\t\t\t\t */\n\t\t\t\tcase \"ReturnStatement\": {\n\t\t\t\t\tconst func = getUpperFunction(parent);\n\n\t\t\t\t\tif (func === null || !isCallee(func)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentNode = func.parent;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"ArrowFunctionExpression\":\n\t\t\t\t\tif (currentNode !== parent.body || !isCallee(parent)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentNode = parent.parent;\n\t\t\t\t\tbreak;\n\n\t\t\t\t/*\n\t\t\t\t * e.g.\n\t\t\t\t *   var obj = { foo() { ... } };\n\t\t\t\t *   var obj = { foo: function() { ... } };\n\t\t\t\t *   class A { constructor() { ... } }\n\t\t\t\t *   class A { foo() { ... } }\n\t\t\t\t *   class A { get foo() { ... } }\n\t\t\t\t *   class A { set foo() { ... } }\n\t\t\t\t *   class A { static foo() { ... } }\n\t\t\t\t *   class A { foo = function() { ... } }\n\t\t\t\t */\n\t\t\t\tcase \"Property\":\n\t\t\t\tcase \"PropertyDefinition\":\n\t\t\t\tcase \"MethodDefinition\":\n\t\t\t\t\treturn parent.value !== currentNode;\n\n\t\t\t\t/*\n\t\t\t\t * e.g.\n\t\t\t\t *   obj.foo = function foo() { ... };\n\t\t\t\t *   Foo = function() { ... };\n\t\t\t\t *   [obj.foo = function foo() { ... }] = a;\n\t\t\t\t *   [Foo = function() { ... }] = a;\n\t\t\t\t */\n\t\t\t\tcase \"AssignmentExpression\":\n\t\t\t\tcase \"AssignmentPattern\":\n\t\t\t\t\tif (parent.left.type === \"MemberExpression\") {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\tcapIsConstructor &&\n\t\t\t\t\t\tisAnonymous &&\n\t\t\t\t\t\tparent.left.type === \"Identifier\" &&\n\t\t\t\t\t\tstartsWithUpperCase(parent.left.name)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\n\t\t\t\t/*\n\t\t\t\t * e.g.\n\t\t\t\t *   var Foo = function() { ... };\n\t\t\t\t */\n\t\t\t\tcase \"VariableDeclarator\":\n\t\t\t\t\treturn !(\n\t\t\t\t\t\tcapIsConstructor &&\n\t\t\t\t\t\tisAnonymous &&\n\t\t\t\t\t\tparent.init === currentNode &&\n\t\t\t\t\t\tparent.id.type === \"Identifier\" &&\n\t\t\t\t\t\tstartsWithUpperCase(parent.id.name)\n\t\t\t\t\t);\n\n\t\t\t\t/*\n\t\t\t\t * e.g.\n\t\t\t\t *   var foo = function foo() { ... }.bind(obj);\n\t\t\t\t *   (function foo() { ... }).call(obj);\n\t\t\t\t *   (function foo() { ... }).apply(obj, []);\n\t\t\t\t */\n\t\t\t\tcase \"MemberExpression\":\n\t\t\t\t\tif (\n\t\t\t\t\t\tparent.object === currentNode &&\n\t\t\t\t\t\tisSpecificMemberAccess(\n\t\t\t\t\t\t\tparent,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tbindOrCallOrApplyPattern,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst maybeCalleeNode =\n\t\t\t\t\t\t\tparent.parent.type === \"ChainExpression\"\n\t\t\t\t\t\t\t\t? parent.parent\n\t\t\t\t\t\t\t\t: parent;\n\n\t\t\t\t\t\treturn !(\n\t\t\t\t\t\t\tisCallee(maybeCalleeNode) &&\n\t\t\t\t\t\t\tmaybeCalleeNode.parent.arguments.length >= 1 &&\n\t\t\t\t\t\t\t!isNullOrUndefined(\n\t\t\t\t\t\t\t\tmaybeCalleeNode.parent.arguments[0],\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\n\t\t\t\t/*\n\t\t\t\t * e.g.\n\t\t\t\t *   Reflect.apply(function() {}, obj, []);\n\t\t\t\t *   Array.from([], function() {}, obj);\n\t\t\t\t *   list.forEach(function() {}, obj);\n\t\t\t\t */\n\t\t\t\tcase \"CallExpression\":\n\t\t\t\t\tif (isReflectApply(parent.callee)) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tparent.arguments.length !== 3 ||\n\t\t\t\t\t\t\tparent.arguments[0] !== currentNode ||\n\t\t\t\t\t\t\tisNullOrUndefined(parent.arguments[1])\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\tisArrayFromMethod(parent.callee) ||\n\t\t\t\t\t\tisArrayFromAsyncMethod(parent.callee)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tparent.arguments.length !== 3 ||\n\t\t\t\t\t\t\tparent.arguments[1] !== currentNode ||\n\t\t\t\t\t\t\tisNullOrUndefined(parent.arguments[2])\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (isMethodWhichHasThisArg(parent.callee)) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tparent.arguments.length !== 2 ||\n\t\t\t\t\t\t\tparent.arguments[0] !== currentNode ||\n\t\t\t\t\t\t\tisNullOrUndefined(parent.arguments[1])\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\n\t\t\t\t// Otherwise `this` is default.\n\t\t\t\tdefault:\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t/* c8 ignore next */\n\t\treturn true;\n\t},\n\n\t/**\n\t * Get the precedence level based on the node type\n\t * @param {ASTNode} node node to evaluate\n\t * @returns {number} precedence level\n\t * @private\n\t */\n\tgetPrecedence(node) {\n\t\tswitch (node.type) {\n\t\t\tcase \"SequenceExpression\":\n\t\t\t\treturn 0;\n\n\t\t\tcase \"AssignmentExpression\":\n\t\t\tcase \"ArrowFunctionExpression\":\n\t\t\tcase \"YieldExpression\":\n\t\t\t\treturn 1;\n\n\t\t\tcase \"ConditionalExpression\":\n\t\t\t\treturn 3;\n\n\t\t\tcase \"LogicalExpression\":\n\t\t\t\tswitch (node.operator) {\n\t\t\t\t\tcase \"||\":\n\t\t\t\t\tcase \"??\":\n\t\t\t\t\t\treturn 4;\n\t\t\t\t\tcase \"&&\":\n\t\t\t\t\t\treturn 5;\n\n\t\t\t\t\t// no default\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\n\t\t\tcase \"BinaryExpression\":\n\t\t\t\tswitch (node.operator) {\n\t\t\t\t\tcase \"|\":\n\t\t\t\t\t\treturn 6;\n\t\t\t\t\tcase \"^\":\n\t\t\t\t\t\treturn 7;\n\t\t\t\t\tcase \"&\":\n\t\t\t\t\t\treturn 8;\n\t\t\t\t\tcase \"==\":\n\t\t\t\t\tcase \"!=\":\n\t\t\t\t\tcase \"===\":\n\t\t\t\t\tcase \"!==\":\n\t\t\t\t\t\treturn 9;\n\t\t\t\t\tcase \"<\":\n\t\t\t\t\tcase \"<=\":\n\t\t\t\t\tcase \">\":\n\t\t\t\t\tcase \">=\":\n\t\t\t\t\tcase \"in\":\n\t\t\t\t\tcase \"instanceof\":\n\t\t\t\t\t\treturn 10;\n\t\t\t\t\tcase \"<<\":\n\t\t\t\t\tcase \">>\":\n\t\t\t\t\tcase \">>>\":\n\t\t\t\t\t\treturn 11;\n\t\t\t\t\tcase \"+\":\n\t\t\t\t\tcase \"-\":\n\t\t\t\t\t\treturn 12;\n\t\t\t\t\tcase \"*\":\n\t\t\t\t\tcase \"/\":\n\t\t\t\t\tcase \"%\":\n\t\t\t\t\t\treturn 13;\n\t\t\t\t\tcase \"**\":\n\t\t\t\t\t\treturn 15;\n\n\t\t\t\t\t// no default\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\n\t\t\tcase \"UnaryExpression\":\n\t\t\tcase \"AwaitExpression\":\n\t\t\t\treturn 16;\n\n\t\t\tcase \"UpdateExpression\":\n\t\t\t\treturn 17;\n\n\t\t\tcase \"CallExpression\":\n\t\t\tcase \"ChainExpression\":\n\t\t\tcase \"ImportExpression\":\n\t\t\t\treturn 18;\n\n\t\t\tcase \"NewExpression\":\n\t\t\t\treturn 19;\n\n\t\t\tdefault:\n\t\t\t\tif (node.type in eslintVisitorKeys) {\n\t\t\t\t\treturn 20;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * if the node is not a standard node that we know about, then assume it has the lowest precedence\n\t\t\t\t * this will mean that rules will wrap unknown nodes in parentheses where applicable instead of\n\t\t\t\t * unwrapping them and potentially changing the meaning of the code or introducing a syntax error.\n\t\t\t\t */\n\t\t\t\treturn -1;\n\t\t}\n\t},\n\n\t/**\n\t * Checks whether the given node is an empty block node or not.\n\t * @param {ASTNode|null} node The node to check.\n\t * @returns {boolean} `true` if the node is an empty block.\n\t */\n\tisEmptyBlock(node) {\n\t\treturn Boolean(\n\t\t\tnode && node.type === \"BlockStatement\" && node.body.length === 0,\n\t\t);\n\t},\n\n\t/**\n\t * Checks whether the given node is an empty function node or not.\n\t * @param {ASTNode|null} node The node to check.\n\t * @returns {boolean} `true` if the node is an empty function.\n\t */\n\tisEmptyFunction(node) {\n\t\treturn isFunction(node) && module.exports.isEmptyBlock(node.body);\n\t},\n\n\t/**\n\t * Get directives from directive prologue of a Program or Function node.\n\t * @param {ASTNode} node The node to check.\n\t * @returns {ASTNode[]} The directives found in the directive prologue.\n\t */\n\tgetDirectivePrologue(node) {\n\t\tconst directives = [];\n\n\t\t// Directive prologues only occur at the top of files or functions.\n\t\tif (\n\t\t\tnode.type === \"Program\" ||\n\t\t\tnode.type === \"FunctionDeclaration\" ||\n\t\t\tnode.type === \"FunctionExpression\" ||\n\t\t\t/*\n\t\t\t * Do not check arrow functions with implicit return.\n\t\t\t * `() => \"use strict\";` returns the string `\"use strict\"`.\n\t\t\t */\n\t\t\t(node.type === \"ArrowFunctionExpression\" &&\n\t\t\t\tnode.body.type === \"BlockStatement\")\n\t\t) {\n\t\t\tconst statements =\n\t\t\t\tnode.type === \"Program\" ? node.body : node.body.body;\n\n\t\t\tfor (const statement of statements) {\n\t\t\t\tif (\n\t\t\t\t\tstatement.type === \"ExpressionStatement\" &&\n\t\t\t\t\tstatement.expression.type === \"Literal\"\n\t\t\t\t) {\n\t\t\t\t\tdirectives.push(statement);\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn directives;\n\t},\n\n\t/**\n\t * Determines whether this node is a decimal integer literal. If a node is a decimal integer literal, a dot added\n\t * after the node will be parsed as a decimal point, rather than a property-access dot.\n\t * @param {ASTNode} node The node to check.\n\t * @returns {boolean} `true` if this node is a decimal integer.\n\t * @example\n\t *\n\t * 0         // true\n\t * 5         // true\n\t * 50        // true\n\t * 5_000     // true\n\t * 1_234_56  // true\n\t * 08        // true\n\t * 0192      // true\n\t * 5.        // false\n\t * .5        // false\n\t * 5.0       // false\n\t * 5.00_00   // false\n\t * 05        // false\n\t * 0x5       // false\n\t * 0b101     // false\n\t * 0b11_01   // false\n\t * 0o5       // false\n\t * 5e0       // false\n\t * 5e1_000   // false\n\t * 5n        // false\n\t * 1_000n    // false\n\t * \"5\"       // false\n\t *\n\t */\n\tisDecimalInteger(node) {\n\t\treturn (\n\t\t\tnode.type === \"Literal\" &&\n\t\t\ttypeof node.value === \"number\" &&\n\t\t\tDECIMAL_INTEGER_PATTERN.test(node.raw)\n\t\t);\n\t},\n\n\t/**\n\t * Determines whether this token is a decimal integer numeric token.\n\t * This is similar to isDecimalInteger(), but for tokens.\n\t * @param {Token} token The token to check.\n\t * @returns {boolean} `true` if this token is a decimal integer.\n\t */\n\tisDecimalIntegerNumericToken(token) {\n\t\treturn (\n\t\t\ttoken.type === \"Numeric\" &&\n\t\t\tDECIMAL_INTEGER_PATTERN.test(token.value)\n\t\t);\n\t},\n\n\t/**\n\t * Gets the name and kind of the given function node.\n\t *\n\t * - `function foo() {}`  .................... `function 'foo'`\n\t * - `(function foo() {})`  .................. `function 'foo'`\n\t * - `(function() {})`  ...................... `function`\n\t * - `function* foo() {}`  ................... `generator function 'foo'`\n\t * - `(function* foo() {})`  ................. `generator function 'foo'`\n\t * - `(function*() {})`  ..................... `generator function`\n\t * - `() => {}`  ............................. `arrow function`\n\t * - `async () => {}`  ....................... `async arrow function`\n\t * - `({ foo: function foo() {} })`  ......... `method 'foo'`\n\t * - `({ foo: function() {} })`  ............. `method 'foo'`\n\t * - `({ ['foo']: function() {} })`  ......... `method 'foo'`\n\t * - `({ [foo]: function() {} })`  ........... `method`\n\t * - `({ foo() {} })`  ....................... `method 'foo'`\n\t * - `({ foo: function* foo() {} })`  ........ `generator method 'foo'`\n\t * - `({ foo: function*() {} })`  ............ `generator method 'foo'`\n\t * - `({ ['foo']: function*() {} })`  ........ `generator method 'foo'`\n\t * - `({ [foo]: function*() {} })`  .......... `generator method`\n\t * - `({ *foo() {} })`  ...................... `generator method 'foo'`\n\t * - `({ foo: async function foo() {} })`  ... `async method 'foo'`\n\t * - `({ foo: async function() {} })`  ....... `async method 'foo'`\n\t * - `({ ['foo']: async function() {} })`  ... `async method 'foo'`\n\t * - `({ [foo]: async function() {} })`  ..... `async method`\n\t * - `({ async foo() {} })`  ................. `async method 'foo'`\n\t * - `({ get foo() {} })`  ................... `getter 'foo'`\n\t * - `({ set foo(a) {} })`  .................. `setter 'foo'`\n\t * - `class A { constructor() {} }`  ......... `constructor`\n\t * - `class A { foo() {} }`  ................. `method 'foo'`\n\t * - `class A { *foo() {} }`  ................ `generator method 'foo'`\n\t * - `class A { async foo() {} }`  ........... `async method 'foo'`\n\t * - `class A { ['foo']() {} }`  ............. `method 'foo'`\n\t * - `class A { *['foo']() {} }`  ............ `generator method 'foo'`\n\t * - `class A { async ['foo']() {} }`  ....... `async method 'foo'`\n\t * - `class A { [foo]() {} }`  ............... `method`\n\t * - `class A { *[foo]() {} }`  .............. `generator method`\n\t * - `class A { async [foo]() {} }`  ......... `async method`\n\t * - `class A { get foo() {} }`  ............. `getter 'foo'`\n\t * - `class A { set foo(a) {} }`  ............ `setter 'foo'`\n\t * - `class A { static foo() {} }`  .......... `static method 'foo'`\n\t * - `class A { static *foo() {} }`  ......... `static generator method 'foo'`\n\t * - `class A { static async foo() {} }`  .... `static async method 'foo'`\n\t * - `class A { static get foo() {} }`  ...... `static getter 'foo'`\n\t * - `class A { static set foo(a) {} }`  ..... `static setter 'foo'`\n\t * - `class A { foo = () => {}; }`  .......... `method 'foo'`\n\t * - `class A { foo = function() {}; }`  ..... `method 'foo'`\n\t * - `class A { foo = function bar() {}; }`  . `method 'foo'`\n\t * - `class A { static foo = () => {}; }`  ... `static method 'foo'`\n\t * - `class A { '#foo' = () => {}; }`  ....... `method '#foo'`\n\t * - `class A { #foo = () => {}; }`  ......... `private method #foo`\n\t * - `class A { static #foo = () => {}; }`  .. `static private method #foo`\n\t * - `class A { '#foo'() {} }`  .............. `method '#foo'`\n\t * - `class A { #foo() {} }`  ................ `private method #foo`\n\t * - `class A { static #foo() {} }`  ......... `static private method #foo`\n\t * @param {ASTNode} node The function node to get.\n\t * @returns {string} The name and kind of the function node.\n\t */\n\tgetFunctionNameWithKind(node) {\n\t\tconst parent = node.parent;\n\t\tconst tokens = [];\n\n\t\tif (\n\t\t\tparent.type === \"MethodDefinition\" ||\n\t\t\tparent.type === \"PropertyDefinition\" ||\n\t\t\tnode.type === \"TSPropertySignature\" ||\n\t\t\tnode.type === \"TSMethodSignature\"\n\t\t) {\n\t\t\t// The proposal uses `static` word consistently before visibility words: https://github.com/tc39/proposal-static-class-features\n\t\t\tif (parent.static) {\n\t\t\t\ttokens.push(\"static\");\n\t\t\t}\n\t\t\tif (!parent.computed && parent.key?.type === \"PrivateIdentifier\") {\n\t\t\t\ttokens.push(\"private\");\n\t\t\t}\n\t\t}\n\t\tif (node.async) {\n\t\t\ttokens.push(\"async\");\n\t\t}\n\t\tif (node.generator) {\n\t\t\ttokens.push(\"generator\");\n\t\t}\n\n\t\tif (parent.type === \"Property\" || parent.type === \"MethodDefinition\") {\n\t\t\tif (parent.kind === \"constructor\") {\n\t\t\t\treturn \"constructor\";\n\t\t\t}\n\t\t\tif (parent.kind === \"get\") {\n\t\t\t\ttokens.push(\"getter\");\n\t\t\t} else if (parent.kind === \"set\") {\n\t\t\t\ttokens.push(\"setter\");\n\t\t\t} else {\n\t\t\t\ttokens.push(\"method\");\n\t\t\t}\n\t\t} else if (node.type === \"TSMethodSignature\") {\n\t\t\tif (node.kind === \"get\") {\n\t\t\t\ttokens.push(\"getter\");\n\t\t\t} else if (node.kind === \"set\") {\n\t\t\t\ttokens.push(\"setter\");\n\t\t\t} else {\n\t\t\t\ttokens.push(\"method\");\n\t\t\t}\n\t\t} else if (parent.type === \"PropertyDefinition\") {\n\t\t\ttokens.push(\"method\");\n\t\t} else {\n\t\t\tif (node.type === \"ArrowFunctionExpression\") {\n\t\t\t\ttokens.push(\"arrow\");\n\t\t\t}\n\t\t\ttokens.push(\"function\");\n\t\t}\n\n\t\tif (\n\t\t\tparent.type === \"Property\" ||\n\t\t\tparent.type === \"MethodDefinition\" ||\n\t\t\tparent.type === \"PropertyDefinition\"\n\t\t) {\n\t\t\tif (!parent.computed && parent.key.type === \"PrivateIdentifier\") {\n\t\t\t\ttokens.push(`#${parent.key.name}`);\n\t\t\t} else {\n\t\t\t\tconst name = getStaticPropertyName(parent);\n\n\t\t\t\tif (name !== null) {\n\t\t\t\t\ttokens.push(`'${name}'`);\n\t\t\t\t} else if (node.id) {\n\t\t\t\t\ttokens.push(`'${node.id.name}'`);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (node.type === \"TSMethodSignature\") {\n\t\t\ttokens.push(`'${getStaticPropertyName(node)}'`);\n\t\t} else if (node.id) {\n\t\t\ttokens.push(`'${node.id.name}'`);\n\t\t}\n\n\t\treturn tokens.join(\" \");\n\t},\n\n\t/**\n\t * Gets the location of the given function node for reporting.\n\t *\n\t * - `function foo() {}`\n\t *    ^^^^^^^^^^^^\n\t * - `(function foo() {})`\n\t *     ^^^^^^^^^^^^\n\t * - `(function() {})`\n\t *     ^^^^^^^^\n\t * - `function* foo() {}`\n\t *    ^^^^^^^^^^^^^\n\t * - `(function* foo() {})`\n\t *     ^^^^^^^^^^^^^\n\t * - `(function*() {})`\n\t *     ^^^^^^^^^\n\t * - `() => {}`\n\t *       ^^\n\t * - `async () => {}`\n\t *             ^^\n\t * - `({ foo: function foo() {} })`\n\t *       ^^^^^^^^^^^^^^^^^\n\t * - `({ foo: function() {} })`\n\t *       ^^^^^^^^^^^^^\n\t * - `({ ['foo']: function() {} })`\n\t *       ^^^^^^^^^^^^^^^^^\n\t * - `({ [foo]: function() {} })`\n\t *       ^^^^^^^^^^^^^^^\n\t * - `({ foo() {} })`\n\t *       ^^^\n\t * - `({ foo: function* foo() {} })`\n\t *       ^^^^^^^^^^^^^^^^^^\n\t * - `({ foo: function*() {} })`\n\t *       ^^^^^^^^^^^^^^\n\t * - `({ ['foo']: function*() {} })`\n\t *       ^^^^^^^^^^^^^^^^^^\n\t * - `({ [foo]: function*() {} })`\n\t *       ^^^^^^^^^^^^^^^^\n\t * - `({ *foo() {} })`\n\t *       ^^^^\n\t * - `({ foo: async function foo() {} })`\n\t *       ^^^^^^^^^^^^^^^^^^^^^^^\n\t * - `({ foo: async function() {} })`\n\t *       ^^^^^^^^^^^^^^^^^^^\n\t * - `({ ['foo']: async function() {} })`\n\t *       ^^^^^^^^^^^^^^^^^^^^^^^\n\t * - `({ [foo]: async function() {} })`\n\t *       ^^^^^^^^^^^^^^^^^^^^^\n\t * - `({ async foo() {} })`\n\t *       ^^^^^^^^^\n\t * - `({ get foo() {} })`\n\t *       ^^^^^^^\n\t * - `({ set foo(a) {} })`\n\t *       ^^^^^^^\n\t * - `class A { constructor() {} }`\n\t *              ^^^^^^^^^^^\n\t * - `class A { foo() {} }`\n\t *              ^^^\n\t * - `class A { *foo() {} }`\n\t *              ^^^^\n\t * - `class A { async foo() {} }`\n\t *              ^^^^^^^^^\n\t * - `class A { ['foo']() {} }`\n\t *              ^^^^^^^\n\t * - `class A { *['foo']() {} }`\n\t *              ^^^^^^^^\n\t * - `class A { async ['foo']() {} }`\n\t *              ^^^^^^^^^^^^^\n\t * - `class A { [foo]() {} }`\n\t *              ^^^^^\n\t * - `class A { *[foo]() {} }`\n\t *              ^^^^^^\n\t * - `class A { async [foo]() {} }`\n\t *              ^^^^^^^^^^^\n\t * - `class A { get foo() {} }`\n\t *              ^^^^^^^\n\t * - `class A { set foo(a) {} }`\n\t *              ^^^^^^^\n\t * - `class A { static foo() {} }`\n\t *              ^^^^^^^^^^\n\t * - `class A { static *foo() {} }`\n\t *              ^^^^^^^^^^^\n\t * - `class A { static async foo() {} }`\n\t *              ^^^^^^^^^^^^^^^^\n\t * - `class A { static get foo() {} }`\n\t *              ^^^^^^^^^^^^^^\n\t * - `class A { static set foo(a) {} }`\n\t *              ^^^^^^^^^^^^^^\n\t * - `class A { foo = function() {} }`\n\t *              ^^^^^^^^^^^^^^\n\t * - `class A { static foo = function() {} }`\n\t *              ^^^^^^^^^^^^^^^^^^^^^\n\t * - `class A { foo = (a, b) => {} }`\n\t *              ^^^^^^\n\t * @param {ASTNode} node The function node to get.\n\t * @param {SourceCode} sourceCode The source code object to get tokens.\n\t * @returns {string} The location of the function node for reporting.\n\t */\n\tgetFunctionHeadLoc(node, sourceCode) {\n\t\tconst parent = node.parent;\n\t\tlet start;\n\t\tlet end;\n\n\t\tif (\n\t\t\tparent.type === \"Property\" ||\n\t\t\tparent.type === \"MethodDefinition\" ||\n\t\t\tparent.type === \"PropertyDefinition\" ||\n\t\t\tparent.type === \"TSPropertySignature\" ||\n\t\t\tparent.type === \"TSMethodSignature\"\n\t\t) {\n\t\t\tstart = parent.loc.start;\n\t\t\tend = getOpeningParenOfParams(node, sourceCode).loc.start;\n\t\t} else if (node.type === \"ArrowFunctionExpression\") {\n\t\t\tconst arrowToken = sourceCode.getTokenBefore(\n\t\t\t\tnode.body,\n\t\t\t\tisArrowToken,\n\t\t\t);\n\n\t\t\tstart = arrowToken.loc.start;\n\t\t\tend = arrowToken.loc.end;\n\t\t} else {\n\t\t\tstart = node.loc.start;\n\t\t\tend = getOpeningParenOfParams(node, sourceCode).loc.start;\n\t\t}\n\n\t\treturn {\n\t\t\tstart: Object.assign({}, start),\n\t\t\tend: Object.assign({}, end),\n\t\t};\n\t},\n\n\t/**\n\t * Gets next location when the result is not out of bound, otherwise returns null.\n\t *\n\t * Assumptions:\n\t *\n\t * - The given location represents a valid location in the given source code.\n\t * - Columns are 0-based.\n\t * - Lines are 1-based.\n\t * - Column immediately after the last character in a line (not incl. linebreaks) is considered to be a valid location.\n\t * - If the source code ends with a linebreak, `sourceCode.lines` array will have an extra element (empty string) at the end.\n\t *   The start (column 0) of that extra line is considered to be a valid location.\n\t *\n\t * Examples of successive locations (line, column):\n\t *\n\t * code: foo\n\t * locations: (1, 0) -> (1, 1) -> (1, 2) -> (1, 3) -> null\n\t *\n\t * code: foo<LF>\n\t * locations: (1, 0) -> (1, 1) -> (1, 2) -> (1, 3) -> (2, 0) -> null\n\t *\n\t * code: foo<CR><LF>\n\t * locations: (1, 0) -> (1, 1) -> (1, 2) -> (1, 3) -> (2, 0) -> null\n\t *\n\t * code: a<LF>b\n\t * locations: (1, 0) -> (1, 1) -> (2, 0) -> (2, 1) -> null\n\t *\n\t * code: a<LF>b<LF>\n\t * locations: (1, 0) -> (1, 1) -> (2, 0) -> (2, 1) -> (3, 0) -> null\n\t *\n\t * code: a<CR><LF>b<CR><LF>\n\t * locations: (1, 0) -> (1, 1) -> (2, 0) -> (2, 1) -> (3, 0) -> null\n\t *\n\t * code: a<LF><LF>\n\t * locations: (1, 0) -> (1, 1) -> (2, 0) -> (3, 0) -> null\n\t *\n\t * code: <LF>\n\t * locations: (1, 0) -> (2, 0) -> null\n\t *\n\t * code:\n\t * locations: (1, 0) -> null\n\t * @param {SourceCode} sourceCode The sourceCode\n\t * @param {{line: number, column: number}} location The location\n\t * @returns {{line: number, column: number} | null} Next location\n\t */\n\tgetNextLocation(sourceCode, { line, column }) {\n\t\tif (column < sourceCode.lines[line - 1].length) {\n\t\t\treturn {\n\t\t\t\tline,\n\t\t\t\tcolumn: column + 1,\n\t\t\t};\n\t\t}\n\n\t\tif (line < sourceCode.lines.length) {\n\t\t\treturn {\n\t\t\t\tline: line + 1,\n\t\t\t\tcolumn: 0,\n\t\t\t};\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Gets the parenthesized text of a node. This is similar to sourceCode.getText(node), but it also includes any parentheses\n\t * surrounding the node.\n\t * @param {SourceCode} sourceCode The source code object\n\t * @param {ASTNode} node An expression node\n\t * @returns {string} The text representing the node, with all surrounding parentheses included\n\t */\n\tgetParenthesisedText(sourceCode, node) {\n\t\tlet leftToken = sourceCode.getFirstToken(node);\n\t\tlet rightToken = sourceCode.getLastToken(node);\n\n\t\twhile (\n\t\t\tsourceCode.getTokenBefore(leftToken) &&\n\t\t\tsourceCode.getTokenBefore(leftToken).type === \"Punctuator\" &&\n\t\t\tsourceCode.getTokenBefore(leftToken).value === \"(\" &&\n\t\t\tsourceCode.getTokenAfter(rightToken) &&\n\t\t\tsourceCode.getTokenAfter(rightToken).type === \"Punctuator\" &&\n\t\t\tsourceCode.getTokenAfter(rightToken).value === \")\"\n\t\t) {\n\t\t\tleftToken = sourceCode.getTokenBefore(leftToken);\n\t\t\trightToken = sourceCode.getTokenAfter(rightToken);\n\t\t}\n\n\t\treturn sourceCode\n\t\t\t.getText()\n\t\t\t.slice(leftToken.range[0], rightToken.range[1]);\n\t},\n\n\t/**\n\t * Determine if a node has a possibility to be an Error object\n\t * @param {ASTNode} node ASTNode to check\n\t * @returns {boolean} True if there is a chance it contains an Error obj\n\t */\n\tcouldBeError(node) {\n\t\tswitch (node.type) {\n\t\t\tcase \"Identifier\":\n\t\t\tcase \"CallExpression\":\n\t\t\tcase \"NewExpression\":\n\t\t\tcase \"MemberExpression\":\n\t\t\tcase \"TaggedTemplateExpression\":\n\t\t\tcase \"YieldExpression\":\n\t\t\tcase \"AwaitExpression\":\n\t\t\tcase \"ChainExpression\":\n\t\t\t\treturn true; // possibly an error object.\n\n\t\t\tcase \"AssignmentExpression\":\n\t\t\t\tif ([\"=\", \"&&=\"].includes(node.operator)) {\n\t\t\t\t\treturn module.exports.couldBeError(node.right);\n\t\t\t\t}\n\n\t\t\t\tif ([\"||=\", \"??=\"].includes(node.operator)) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tmodule.exports.couldBeError(node.left) ||\n\t\t\t\t\t\tmodule.exports.couldBeError(node.right)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t/**\n\t\t\t\t * All other assignment operators are mathematical assignment operators (arithmetic or bitwise).\n\t\t\t\t * An assignment expression with a mathematical operator can either evaluate to a primitive value,\n\t\t\t\t * or throw, depending on the operands. Thus, it cannot evaluate to an `Error` object.\n\t\t\t\t */\n\t\t\t\treturn false;\n\n\t\t\tcase \"SequenceExpression\": {\n\t\t\t\tconst exprs = node.expressions;\n\n\t\t\t\treturn (\n\t\t\t\t\texprs.length !== 0 &&\n\t\t\t\t\tmodule.exports.couldBeError(exprs.at(-1))\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcase \"LogicalExpression\":\n\t\t\t\t/*\n\t\t\t\t * If the && operator short-circuits, the left side was falsy and therefore not an error, and if it\n\t\t\t\t * doesn't short-circuit, it takes the value from the right side, so the right side must always be\n\t\t\t\t * a plausible error. A future improvement could verify that the left side could be truthy by\n\t\t\t\t * excluding falsy literals.\n\t\t\t\t */\n\t\t\t\tif (node.operator === \"&&\") {\n\t\t\t\t\treturn module.exports.couldBeError(node.right);\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\tmodule.exports.couldBeError(node.left) ||\n\t\t\t\t\tmodule.exports.couldBeError(node.right)\n\t\t\t\t);\n\n\t\t\tcase \"ConditionalExpression\":\n\t\t\t\treturn (\n\t\t\t\t\tmodule.exports.couldBeError(node.consequent) ||\n\t\t\t\t\tmodule.exports.couldBeError(node.alternate)\n\t\t\t\t);\n\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t},\n\n\t/**\n\t * Check if a given node is a numeric literal or not.\n\t * @param {ASTNode} node The node to check.\n\t * @returns {boolean} `true` if the node is a number or bigint literal.\n\t */\n\tisNumericLiteral(node) {\n\t\treturn (\n\t\t\tnode.type === \"Literal\" &&\n\t\t\t(typeof node.value === \"number\" || Boolean(node.bigint))\n\t\t);\n\t},\n\n\t/**\n\t * Determines whether two tokens can safely be placed next to each other without merging into a single token\n\t * @param {Token|string} leftValue The left token. If this is a string, it will be tokenized and the last token will be used.\n\t * @param {Token|string} rightValue The right token. If this is a string, it will be tokenized and the first token will be used.\n\t * @returns {boolean} If the tokens cannot be safely placed next to each other, returns `false`. If the tokens can be placed\n\t * next to each other, behavior is undefined (although it should return `true` in most cases).\n\t */\n\tcanTokensBeAdjacent(leftValue, rightValue) {\n\t\tconst espreeOptions = {\n\t\t\tecmaVersion: espree.latestEcmaVersion,\n\t\t\tcomment: true,\n\t\t\trange: true,\n\t\t};\n\n\t\tlet leftToken;\n\n\t\tif (typeof leftValue === \"string\") {\n\t\t\tlet tokens;\n\n\t\t\ttry {\n\t\t\t\ttokens = espree.tokenize(leftValue, espreeOptions);\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst comments = tokens.comments;\n\n\t\t\tleftToken = tokens.at(-1);\n\t\t\tif (comments.length) {\n\t\t\t\tconst lastComment = comments.at(-1);\n\n\t\t\t\tif (!leftToken || lastComment.range[0] > leftToken.range[0]) {\n\t\t\t\t\tleftToken = lastComment;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tleftToken = leftValue;\n\t\t}\n\n\t\t/*\n\t\t * If a hashbang comment was passed as a token object from SourceCode,\n\t\t * its type will be \"Shebang\" because of the way ESLint itself handles hashbangs.\n\t\t * If a hashbang comment was passed in a string and then tokenized in this function,\n\t\t * its type will be \"Hashbang\" because of the way Espree tokenizes hashbangs.\n\t\t */\n\t\tif (leftToken.type === \"Shebang\" || leftToken.type === \"Hashbang\") {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet rightToken;\n\n\t\tif (typeof rightValue === \"string\") {\n\t\t\tlet tokens;\n\n\t\t\ttry {\n\t\t\t\ttokens = espree.tokenize(rightValue, espreeOptions);\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst comments = tokens.comments;\n\n\t\t\trightToken = tokens[0];\n\t\t\tif (comments.length) {\n\t\t\t\tconst firstComment = comments[0];\n\n\t\t\t\tif (\n\t\t\t\t\t!rightToken ||\n\t\t\t\t\tfirstComment.range[0] < rightToken.range[0]\n\t\t\t\t) {\n\t\t\t\t\trightToken = firstComment;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\trightToken = rightValue;\n\t\t}\n\n\t\tif (\n\t\t\tleftToken.type === \"Punctuator\" ||\n\t\t\trightToken.type === \"Punctuator\"\n\t\t) {\n\t\t\tif (\n\t\t\t\tleftToken.type === \"Punctuator\" &&\n\t\t\t\trightToken.type === \"Punctuator\"\n\t\t\t) {\n\t\t\t\tconst PLUS_TOKENS = new Set([\"+\", \"++\"]);\n\t\t\t\tconst MINUS_TOKENS = new Set([\"-\", \"--\"]);\n\n\t\t\t\treturn !(\n\t\t\t\t\t(PLUS_TOKENS.has(leftToken.value) &&\n\t\t\t\t\t\tPLUS_TOKENS.has(rightToken.value)) ||\n\t\t\t\t\t(MINUS_TOKENS.has(leftToken.value) &&\n\t\t\t\t\t\tMINUS_TOKENS.has(rightToken.value))\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (leftToken.type === \"Punctuator\" && leftToken.value === \"/\") {\n\t\t\t\treturn ![\"Block\", \"Line\", \"RegularExpression\"].includes(\n\t\t\t\t\trightToken.type,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (\n\t\t\tleftToken.type === \"String\" ||\n\t\t\trightToken.type === \"String\" ||\n\t\t\tleftToken.type === \"Template\" ||\n\t\t\trightToken.type === \"Template\"\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (\n\t\t\tleftToken.type !== \"Numeric\" &&\n\t\t\trightToken.type === \"Numeric\" &&\n\t\t\trightToken.value.startsWith(\".\")\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (\n\t\t\tleftToken.type === \"Block\" ||\n\t\t\trightToken.type === \"Block\" ||\n\t\t\trightToken.type === \"Line\"\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (rightToken.type === \"PrivateIdentifier\") {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Get the `loc` object of a given name in a `/*globals` directive comment.\n\t * @param {SourceCode} sourceCode The source code to convert index to loc.\n\t * @param {Comment} comment The `/*globals` directive comment which include the name.\n\t * @param {string} name The name to find.\n\t * @returns {SourceLocation} The `loc` object.\n\t */\n\tgetNameLocationInGlobalDirectiveComment(sourceCode, comment, name) {\n\t\tconst namePattern = new RegExp(\n\t\t\t`[\\\\s,]${escapeRegExp(name)}(?:$|[\\\\s,:])`,\n\t\t\t\"gu\",\n\t\t);\n\n\t\t// To ignore the first text \"global\".\n\t\tnamePattern.lastIndex = comment.value.indexOf(\"global\") + 6;\n\n\t\t// Search a given variable name.\n\t\tconst match = namePattern.exec(comment.value);\n\n\t\t// Convert the index to loc.\n\t\tconst start = sourceCode.getLocFromIndex(\n\t\t\tcomment.range[0] + \"/*\".length + (match ? match.index + 1 : 0),\n\t\t);\n\t\tconst end = {\n\t\t\tline: start.line,\n\t\t\tcolumn: start.column + (match ? name.length : 1),\n\t\t};\n\n\t\treturn { start, end };\n\t},\n\n\t/**\n\t * Determines whether the given raw string contains an octal escape sequence\n\t * or a non-octal decimal escape sequence (\"\\8\", \"\\9\").\n\t *\n\t * \"\\1\", \"\\2\" ... \"\\7\", \"\\8\", \"\\9\"\n\t * \"\\00\", \"\\01\" ... \"\\07\", \"\\08\", \"\\09\"\n\t *\n\t * \"\\0\", when not followed by a digit, is not an octal escape sequence.\n\t * @param {string} rawString A string in its raw representation.\n\t * @returns {boolean} `true` if the string contains at least one octal escape sequence\n\t * or at least one non-octal decimal escape sequence.\n\t */\n\thasOctalOrNonOctalDecimalEscapeSequence(rawString) {\n\t\treturn OCTAL_OR_NON_OCTAL_DECIMAL_ESCAPE_PATTERN.test(rawString);\n\t},\n\n\t/**\n\t * Determines whether the given node is a template literal without expressions.\n\t * @param {ASTNode} node Node to check.\n\t * @returns {boolean} True if the node is a template literal without expressions.\n\t */\n\tisStaticTemplateLiteral(node) {\n\t\treturn node.type === \"TemplateLiteral\" && node.expressions.length === 0;\n\t},\n\n\t/**\n\t * Determines whether the existing curly braces around the single statement are necessary to preserve the semantics of the code.\n\t * The braces, which make the given block body, are necessary in either of the following situations:\n\t *\n\t * 1. The statement is a lexical declaration.\n\t * 2. Without the braces, an `if` within the statement would become associated with an `else` after the closing brace:\n\t *\n\t *     if (a) {\n\t *         if (b)\n\t *             foo();\n\t *     }\n\t *     else\n\t *         bar();\n\t *\n\t *     if (a)\n\t *         while (b)\n\t *             while (c) {\n\t *                 while (d)\n\t *                     if (e)\n\t *                         while(f)\n\t *                             foo();\n\t *            }\n\t *     else\n\t *         bar();\n\t * @param {ASTNode} node `BlockStatement` body with exactly one statement directly inside. The statement can have its own nested statements.\n\t * @param {SourceCode} sourceCode The source code\n\t * @returns {boolean} `true` if the braces are necessary - removing them (replacing the given `BlockStatement` body with its single statement content)\n\t * would change the semantics of the code or produce a syntax error.\n\t */\n\tareBracesNecessary(node, sourceCode) {\n\t\t/**\n\t\t * Determines if the given node is a lexical declaration (let, const, using, await using, function, or class)\n\t\t * @param {ASTNode} nodeToCheck The node to check\n\t\t * @returns {boolean} True if the node is a lexical declaration\n\t\t * @private\n\t\t */\n\t\tfunction isLexicalDeclaration(nodeToCheck) {\n\t\t\tif (nodeToCheck.type === \"VariableDeclaration\") {\n\t\t\t\treturn LEXICAL_DECLARATION_KINDS.has(nodeToCheck.kind);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\tnodeToCheck.type === \"FunctionDeclaration\" ||\n\t\t\t\tnodeToCheck.type === \"ClassDeclaration\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if the given token is an `else` token or not.\n\t\t * @param {Token} token The token to check.\n\t\t * @returns {boolean} `true` if the token is an `else` token.\n\t\t */\n\t\tfunction isElseKeywordToken(token) {\n\t\t\treturn token.value === \"else\" && token.type === \"Keyword\";\n\t\t}\n\n\t\t/**\n\t\t * Determines whether the given node has an `else` keyword token as the first token after.\n\t\t * @param {ASTNode} nodeToCheck The node to check.\n\t\t * @returns {boolean} `true` if the node is followed by an `else` keyword token.\n\t\t */\n\t\tfunction isFollowedByElseKeyword(nodeToCheck) {\n\t\t\tconst nextToken = sourceCode.getTokenAfter(nodeToCheck);\n\n\t\t\treturn Boolean(nextToken) && isElseKeywordToken(nextToken);\n\t\t}\n\n\t\t/**\n\t\t * Determines whether the code represented by the given node contains an `if` statement\n\t\t * that would become associated with an `else` keyword directly appended to that code.\n\t\t *\n\t\t * Examples where it returns `true`:\n\t\t *\n\t\t *    if (a)\n\t\t *        foo();\n\t\t *\n\t\t *    if (a) {\n\t\t *        foo();\n\t\t *    }\n\t\t *\n\t\t *    if (a)\n\t\t *        foo();\n\t\t *    else if (b)\n\t\t *        bar();\n\t\t *\n\t\t *    while (a)\n\t\t *        if (b)\n\t\t *            if(c)\n\t\t *                foo();\n\t\t *            else\n\t\t *                bar();\n\t\t *\n\t\t * Examples where it returns `false`:\n\t\t *\n\t\t *    if (a)\n\t\t *        foo();\n\t\t *    else\n\t\t *        bar();\n\t\t *\n\t\t *    while (a) {\n\t\t *        if (b)\n\t\t *            if(c)\n\t\t *                foo();\n\t\t *            else\n\t\t *                bar();\n\t\t *    }\n\t\t *\n\t\t *    while (a)\n\t\t *        if (b) {\n\t\t *            if(c)\n\t\t *                foo();\n\t\t *        }\n\t\t *        else\n\t\t *            bar();\n\t\t * @param {ASTNode} nodeToCheck Node representing the code to check.\n\t\t * @returns {boolean} `true` if an `if` statement within the code would become associated with an `else` appended to that code.\n\t\t */\n\t\tfunction hasUnsafeIf(nodeToCheck) {\n\t\t\tswitch (nodeToCheck.type) {\n\t\t\t\tcase \"IfStatement\":\n\t\t\t\t\tif (!nodeToCheck.alternate) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn hasUnsafeIf(nodeToCheck.alternate);\n\t\t\t\tcase \"ForStatement\":\n\t\t\t\tcase \"ForInStatement\":\n\t\t\t\tcase \"ForOfStatement\":\n\t\t\t\tcase \"LabeledStatement\":\n\t\t\t\tcase \"WithStatement\":\n\t\t\t\tcase \"WhileStatement\":\n\t\t\t\t\treturn hasUnsafeIf(nodeToCheck.body);\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tconst statement = node.body[0];\n\n\t\treturn (\n\t\t\tisLexicalDeclaration(statement) ||\n\t\t\t(hasUnsafeIf(statement) && isFollowedByElseKeyword(node))\n\t\t);\n\t},\n\n\tisReferenceToGlobalVariable,\n\tisLogicalExpression,\n\tisCoalesceExpression,\n\tisMixedLogicalAndCoalesceExpressions,\n\tisNullLiteral,\n\tgetStaticStringValue,\n\tgetStaticPropertyName,\n\tskipChainExpression,\n\tisSpecificId,\n\tisSpecificMemberAccess,\n\tequalLiteralValue,\n\tisSameReference,\n\tisLogicalAssignmentOperator,\n\tgetSwitchCaseColonToken,\n\tgetModuleExportName,\n\tisConstant,\n\tisTopLevelExpressionStatement,\n\tisDirective,\n\tisStartOfExpressionStatement,\n\tcanContinueExpressionInClassBody,\n\tneedsPrecedingSemicolon,\n\tisImportAttributeKey,\n\tgetOpeningParenOfParams,\n};\n", "/**\n * @fileoverview Rule to enforce getter and setter pairs in objects and classes.\n * @author Gyandeep Singh\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n/**\n * Property name if it can be computed statically, otherwise the list of the tokens of the key node.\n * @typedef {string|Token[]} Key\n */\n\n/**\n * Accessor nodes with the same key.\n * @typedef {Object} AccessorData\n * @property {Key} key Accessor's key\n * @property {ASTNode[]} getters List of getter nodes.\n * @property {ASTNode[]} setters List of setter nodes.\n */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether or not the given lists represent the equal tokens in the same order.\n * Tokens are compared by their properties, not by instance.\n * @param {Token[]} left First list of tokens.\n * @param {Token[]} right Second list of tokens.\n * @returns {boolean} `true` if the lists have same tokens.\n */\nfunction areEqualTokenLists(left, right) {\n\tif (left.length !== right.length) {\n\t\treturn false;\n\t}\n\n\tfor (let i = 0; i < left.length; i++) {\n\t\tconst leftToken = left[i],\n\t\t\trightToken = right[i];\n\n\t\tif (\n\t\t\tleftToken.type !== rightToken.type ||\n\t\t\tleftToken.value !== rightToken.value\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Checks whether or not the given keys are equal.\n * @param {Key} left First key.\n * @param {Key} right Second key.\n * @returns {boolean} `true` if the keys are equal.\n */\nfunction areEqualKeys(left, right) {\n\tif (typeof left === \"string\" && typeof right === \"string\") {\n\t\t// Statically computed names.\n\t\treturn left === right;\n\t}\n\tif (Array.isArray(left) && Array.isArray(right)) {\n\t\t// Token lists.\n\t\treturn areEqualTokenLists(left, right);\n\t}\n\n\treturn false;\n}\n\n/**\n * Checks whether or not a given node is of an accessor kind ('get' or 'set').\n * @param {ASTNode} node A node to check.\n * @returns {boolean} `true` if the node is of an accessor kind.\n */\nfunction isAccessorKind(node) {\n\treturn node.kind === \"get\" || node.kind === \"set\";\n}\n\n/**\n * Checks whether or not a given node is an argument of a specified method call.\n * @param {ASTNode} node A node to check.\n * @param {number} index An expected index of the node in arguments.\n * @param {string} object An expected name of the object of the method.\n * @param {string} property An expected name of the method.\n * @returns {boolean} `true` if the node is an argument of the specified method call.\n */\nfunction isArgumentOfMethodCall(node, index, object, property) {\n\tconst parent = node.parent;\n\n\treturn (\n\t\tparent.type === \"CallExpression\" &&\n\t\tastUtils.isSpecificMemberAccess(parent.callee, object, property) &&\n\t\tparent.arguments[index] === node\n\t);\n}\n\n/**\n * Checks whether or not a given node is a property descriptor.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} `true` if the node is a property descriptor.\n */\nfunction isPropertyDescriptor(node) {\n\t// Object.defineProperty(obj, \"foo\", {set: ...})\n\tif (\n\t\tisArgumentOfMethodCall(node, 2, \"Object\", \"defineProperty\") ||\n\t\tisArgumentOfMethodCall(node, 2, \"Reflect\", \"defineProperty\")\n\t) {\n\t\treturn true;\n\t}\n\n\t/*\n\t * Object.defineProperties(obj, {foo: {set: ...}})\n\t * Object.create(proto, {foo: {set: ...}})\n\t */\n\tconst grandparent = node.parent.parent;\n\n\treturn (\n\t\tgrandparent.type === \"ObjectExpression\" &&\n\t\t(isArgumentOfMethodCall(grandparent, 1, \"Object\", \"create\") ||\n\t\t\tisArgumentOfMethodCall(\n\t\t\t\tgrandparent,\n\t\t\t\t1,\n\t\t\t\t\"Object\",\n\t\t\t\t\"defineProperties\",\n\t\t\t))\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tenforceForTSTypes: false,\n\t\t\t\tenforceForClassMembers: true,\n\t\t\t\tgetWithoutSet: false,\n\t\t\t\tsetWithoutGet: true,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce getter and setter pairs in objects and classes\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/accessor-pairs\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tgetWithoutSet: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tsetWithoutGet: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tenforceForClassMembers: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tenforceForTSTypes: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tmissingGetterInPropertyDescriptor:\n\t\t\t\t\"Getter is not present in property descriptor.\",\n\t\t\tmissingSetterInPropertyDescriptor:\n\t\t\t\t\"Setter is not present in property descriptor.\",\n\t\t\tmissingGetterInObjectLiteral:\n\t\t\t\t\"Getter is not present for {{ name }}.\",\n\t\t\tmissingSetterInObjectLiteral:\n\t\t\t\t\"Setter is not present for {{ name }}.\",\n\t\t\tmissingGetterInClass: \"Getter is not present for class {{ name }}.\",\n\t\t\tmissingSetterInClass: \"Setter is not present for class {{ name }}.\",\n\t\t\tmissingGetterInType: \"Getter is not present for type {{ name }}.\",\n\t\t\tmissingSetterInType: \"Setter is not present for type {{ name }}.\",\n\t\t},\n\t},\n\tcreate(context) {\n\t\tconst [\n\t\t\t{\n\t\t\t\tgetWithoutSet: checkGetWithoutSet,\n\t\t\t\tsetWithoutGet: checkSetWithoutGet,\n\t\t\t\tenforceForClassMembers,\n\t\t\t\tenforceForTSTypes,\n\t\t\t},\n\t\t] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Reports the given node.\n\t\t * @param {ASTNode} node The node to report.\n\t\t * @param {string} messageKind \"missingGetter\" or \"missingSetter\".\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction report(node, messageKind) {\n\t\t\tif (node.type === \"Property\") {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: `${messageKind}InObjectLiteral`,\n\t\t\t\t\tloc: astUtils.getFunctionHeadLoc(node.value, sourceCode),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tname: astUtils.getFunctionNameWithKind(node.value),\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else if (node.type === \"MethodDefinition\") {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: `${messageKind}InClass`,\n\t\t\t\t\tloc: astUtils.getFunctionHeadLoc(node.value, sourceCode),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tname: astUtils.getFunctionNameWithKind(node.value),\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else if (node.type === \"TSMethodSignature\") {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: `${messageKind}InType`,\n\t\t\t\t\tloc: astUtils.getFunctionHeadLoc(node, sourceCode),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tname: astUtils.getFunctionNameWithKind(node),\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: `${messageKind}InPropertyDescriptor`,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports each of the nodes in the given list using the same messageId.\n\t\t * @param {ASTNode[]} nodes Nodes to report.\n\t\t * @param {string} messageKind \"missingGetter\" or \"missingSetter\".\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction reportList(nodes, messageKind) {\n\t\t\tfor (const node of nodes) {\n\t\t\t\treport(node, messageKind);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks accessor pairs in the given list of nodes.\n\t\t * @param {ASTNode[]} nodes The list to check.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkList(nodes) {\n\t\t\tconst accessors = [];\n\t\t\tlet found = false;\n\n\t\t\tfor (let i = 0; i < nodes.length; i++) {\n\t\t\t\tconst node = nodes[i];\n\n\t\t\t\tif (isAccessorKind(node)) {\n\t\t\t\t\t// Creates a new `AccessorData` object for the given getter or setter node.\n\t\t\t\t\tconst name = astUtils.getStaticPropertyName(node);\n\t\t\t\t\tconst key =\n\t\t\t\t\t\tname !== null ? name : sourceCode.getTokens(node.key);\n\n\t\t\t\t\t// Merges the given `AccessorData` object into the given accessors list.\n\t\t\t\t\tfor (let j = 0; j < accessors.length; j++) {\n\t\t\t\t\t\tconst accessor = accessors[j];\n\n\t\t\t\t\t\tif (areEqualKeys(accessor.key, key)) {\n\t\t\t\t\t\t\taccessor.getters.push(\n\t\t\t\t\t\t\t\t...(node.kind === \"get\" ? [node] : []),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\taccessor.setters.push(\n\t\t\t\t\t\t\t\t...(node.kind === \"set\" ? [node] : []),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!found) {\n\t\t\t\t\t\taccessors.push({\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tgetters: node.kind === \"get\" ? [node] : [],\n\t\t\t\t\t\t\tsetters: node.kind === \"set\" ? [node] : [],\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tfound = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const { getters, setters } of accessors) {\n\t\t\t\tif (checkSetWithoutGet && setters.length && !getters.length) {\n\t\t\t\t\treportList(setters, \"missingGetter\");\n\t\t\t\t}\n\t\t\t\tif (checkGetWithoutSet && getters.length && !setters.length) {\n\t\t\t\t\treportList(getters, \"missingSetter\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks accessor pairs in an object literal.\n\t\t * @param {ASTNode} node `ObjectExpression` node to check.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkObjectLiteral(node) {\n\t\t\tcheckList(node.properties.filter(p => p.type === \"Property\"));\n\t\t}\n\n\t\t/**\n\t\t * Checks accessor pairs in a property descriptor.\n\t\t * @param {ASTNode} node Property descriptor `ObjectExpression` node to check.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkPropertyDescriptor(node) {\n\t\t\tconst namesToCheck = new Set(\n\t\t\t\tnode.properties\n\t\t\t\t\t.filter(\n\t\t\t\t\t\tp =>\n\t\t\t\t\t\t\tp.type === \"Property\" &&\n\t\t\t\t\t\t\tp.kind === \"init\" &&\n\t\t\t\t\t\t\t!p.computed,\n\t\t\t\t\t)\n\t\t\t\t\t.map(({ key }) => key.name),\n\t\t\t);\n\n\t\t\tconst hasGetter = namesToCheck.has(\"get\");\n\t\t\tconst hasSetter = namesToCheck.has(\"set\");\n\n\t\t\tif (checkSetWithoutGet && hasSetter && !hasGetter) {\n\t\t\t\treport(node, \"missingGetter\");\n\t\t\t}\n\t\t\tif (checkGetWithoutSet && hasGetter && !hasSetter) {\n\t\t\t\treport(node, \"missingSetter\");\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks the given object expression as an object literal and as a possible property descriptor.\n\t\t * @param {ASTNode} node `ObjectExpression` node to check.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkObjectExpression(node) {\n\t\t\tcheckObjectLiteral(node);\n\t\t\tif (isPropertyDescriptor(node)) {\n\t\t\t\tcheckPropertyDescriptor(node);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks the given class body.\n\t\t * @param {ASTNode} node `ClassBody` node to check.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkClassBody(node) {\n\t\t\tconst methodDefinitions = node.body.filter(\n\t\t\t\tm => m.type === \"MethodDefinition\",\n\t\t\t);\n\n\t\t\tcheckList(methodDefinitions.filter(m => m.static));\n\t\t\tcheckList(methodDefinitions.filter(m => !m.static));\n\t\t}\n\n\t\t/**\n\t\t * Checks the given type.\n\t\t * @param {ASTNode} node `TSTypeLiteral` or `TSInterfaceBody` node to check.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkType(node) {\n\t\t\tconst members =\n\t\t\t\tnode.type === \"TSTypeLiteral\" ? node.members : node.body;\n\t\t\tconst methodDefinitions = members.filter(\n\t\t\t\tm => m.type === \"TSMethodSignature\",\n\t\t\t);\n\n\t\t\tcheckList(methodDefinitions);\n\t\t}\n\n\t\tconst listeners = {};\n\n\t\tif (checkSetWithoutGet || checkGetWithoutSet) {\n\t\t\tlisteners.ObjectExpression = checkObjectExpression;\n\t\t\tif (enforceForClassMembers) {\n\t\t\t\tlisteners.ClassBody = checkClassBody;\n\t\t\t}\n\t\t\tif (enforceForTSTypes) {\n\t\t\t\tlisteners[\"TSTypeLiteral, TSInterfaceBody\"] = checkType;\n\t\t\t}\n\t\t}\n\n\t\treturn listeners;\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce linebreaks after open and before close array brackets\n * @author Jan Peer St\u00F6cklmair <https://github.com/JPeer264>\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"array-bracket-newline\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/array-bracket-newline\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce linebreaks after opening and before closing array brackets\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/array-bracket-newline\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: [\"always\", \"never\", \"consistent\"],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tmultiline: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tminItems: {\n\t\t\t\t\t\t\t\ttype: [\"integer\", \"null\"],\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedOpeningLinebreak:\n\t\t\t\t\"There should be no linebreak after '['.\",\n\t\t\tunexpectedClosingLinebreak:\n\t\t\t\t\"There should be no linebreak before ']'.\",\n\t\t\tmissingOpeningLinebreak: \"A linebreak is required after '['.\",\n\t\t\tmissingClosingLinebreak: \"A linebreak is required before ']'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//----------------------------------------------------------------------\n\t\t// Helpers\n\t\t//----------------------------------------------------------------------\n\n\t\t/**\n\t\t * Normalizes a given option value.\n\t\t * @param {string|Object|undefined} option An option value to parse.\n\t\t * @returns {{multiline: boolean, minItems: number}} Normalized option object.\n\t\t */\n\t\tfunction normalizeOptionValue(option) {\n\t\t\tlet consistent = false;\n\t\t\tlet multiline = false;\n\t\t\tlet minItems;\n\n\t\t\tif (option) {\n\t\t\t\tif (option === \"consistent\") {\n\t\t\t\t\tconsistent = true;\n\t\t\t\t\tminItems = Number.POSITIVE_INFINITY;\n\t\t\t\t} else if (option === \"always\" || option.minItems === 0) {\n\t\t\t\t\tminItems = 0;\n\t\t\t\t} else if (option === \"never\") {\n\t\t\t\t\tminItems = Number.POSITIVE_INFINITY;\n\t\t\t\t} else {\n\t\t\t\t\tmultiline = Boolean(option.multiline);\n\t\t\t\t\tminItems = option.minItems || Number.POSITIVE_INFINITY;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsistent = false;\n\t\t\t\tmultiline = true;\n\t\t\t\tminItems = Number.POSITIVE_INFINITY;\n\t\t\t}\n\n\t\t\treturn { consistent, multiline, minItems };\n\t\t}\n\n\t\t/**\n\t\t * Normalizes a given option value.\n\t\t * @param {string|Object|undefined} options An option value to parse.\n\t\t * @returns {{ArrayExpression: {multiline: boolean, minItems: number}, ArrayPattern: {multiline: boolean, minItems: number}}} Normalized option object.\n\t\t */\n\t\tfunction normalizeOptions(options) {\n\t\t\tconst value = normalizeOptionValue(options);\n\n\t\t\treturn { ArrayExpression: value, ArrayPattern: value };\n\t\t}\n\n\t\t/**\n\t\t * Reports that there shouldn't be a linebreak after the first token\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportNoBeginningLinebreak(node, token) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: token.loc,\n\t\t\t\tmessageId: \"unexpectedOpeningLinebreak\",\n\t\t\t\tfix(fixer) {\n\t\t\t\t\tconst nextToken = sourceCode.getTokenAfter(token, {\n\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t});\n\n\t\t\t\t\tif (astUtils.isCommentToken(nextToken)) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\ttoken.range[1],\n\t\t\t\t\t\tnextToken.range[0],\n\t\t\t\t\t]);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports that there shouldn't be a linebreak before the last token\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportNoEndingLinebreak(node, token) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: token.loc,\n\t\t\t\tmessageId: \"unexpectedClosingLinebreak\",\n\t\t\t\tfix(fixer) {\n\t\t\t\t\tconst previousToken = sourceCode.getTokenBefore(token, {\n\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t});\n\n\t\t\t\t\tif (astUtils.isCommentToken(previousToken)) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tpreviousToken.range[1],\n\t\t\t\t\t\ttoken.range[0],\n\t\t\t\t\t]);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports that there should be a linebreak after the first token\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportRequiredBeginningLinebreak(node, token) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: token.loc,\n\t\t\t\tmessageId: \"missingOpeningLinebreak\",\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.insertTextAfter(token, \"\\n\");\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports that there should be a linebreak before the last token\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportRequiredEndingLinebreak(node, token) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: token.loc,\n\t\t\t\tmessageId: \"missingClosingLinebreak\",\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.insertTextBefore(token, \"\\n\");\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports a given node if it violated this rule.\n\t\t * @param {ASTNode} node A node to check. This is an ArrayExpression node or an ArrayPattern node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction check(node) {\n\t\t\tconst elements = node.elements;\n\t\t\tconst normalizedOptions = normalizeOptions(context.options[0]);\n\t\t\tconst options = normalizedOptions[node.type];\n\t\t\tconst openBracket = sourceCode.getFirstToken(node);\n\t\t\tconst closeBracket = sourceCode.getLastToken(node);\n\t\t\tconst firstIncComment = sourceCode.getTokenAfter(openBracket, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\t\t\tconst lastIncComment = sourceCode.getTokenBefore(closeBracket, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\t\t\tconst first = sourceCode.getTokenAfter(openBracket);\n\t\t\tconst last = sourceCode.getTokenBefore(closeBracket);\n\n\t\t\tconst needsLinebreaks =\n\t\t\t\telements.length >= options.minItems ||\n\t\t\t\t(options.multiline &&\n\t\t\t\t\telements.length > 0 &&\n\t\t\t\t\tfirstIncComment.loc.start.line !==\n\t\t\t\t\t\tlastIncComment.loc.end.line) ||\n\t\t\t\t(elements.length === 0 &&\n\t\t\t\t\tfirstIncComment.type === \"Block\" &&\n\t\t\t\t\tfirstIncComment.loc.start.line !==\n\t\t\t\t\t\tlastIncComment.loc.end.line &&\n\t\t\t\t\tfirstIncComment === lastIncComment) ||\n\t\t\t\t(options.consistent &&\n\t\t\t\t\topenBracket.loc.end.line !== first.loc.start.line);\n\n\t\t\t/*\n\t\t\t * Use tokens or comments to check multiline or not.\n\t\t\t * But use only tokens to check whether linebreaks are needed.\n\t\t\t * This allows:\n\t\t\t *     var arr = [ // eslint-disable-line foo\n\t\t\t *         'a'\n\t\t\t *     ]\n\t\t\t */\n\n\t\t\tif (needsLinebreaks) {\n\t\t\t\tif (astUtils.isTokenOnSameLine(openBracket, first)) {\n\t\t\t\t\treportRequiredBeginningLinebreak(node, openBracket);\n\t\t\t\t}\n\t\t\t\tif (astUtils.isTokenOnSameLine(last, closeBracket)) {\n\t\t\t\t\treportRequiredEndingLinebreak(node, closeBracket);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!astUtils.isTokenOnSameLine(openBracket, first)) {\n\t\t\t\t\treportNoBeginningLinebreak(node, openBracket);\n\t\t\t\t}\n\t\t\t\tif (!astUtils.isTokenOnSameLine(last, closeBracket)) {\n\t\t\t\t\treportNoEndingLinebreak(node, closeBracket);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//----------------------------------------------------------------------\n\t\t// Public\n\t\t//----------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tArrayPattern: check,\n\t\t\tArrayExpression: check,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallows or enforces spaces inside of array brackets.\n * @author Jamund Ferguson\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"array-bracket-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/array-bracket-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce consistent spacing inside array brackets\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/array-bracket-spacing\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tsingleValue: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tobjectsInArrays: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tarraysInArrays: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedSpaceAfter:\n\t\t\t\t\"There should be no space after '{{tokenValue}}'.\",\n\t\t\tunexpectedSpaceBefore:\n\t\t\t\t\"There should be no space before '{{tokenValue}}'.\",\n\t\t\tmissingSpaceAfter: \"A space is required after '{{tokenValue}}'.\",\n\t\t\tmissingSpaceBefore: \"A space is required before '{{tokenValue}}'.\",\n\t\t},\n\t},\n\tcreate(context) {\n\t\tconst spaced = context.options[0] === \"always\",\n\t\t\tsourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Determines whether an option is set, relative to the spacing option.\n\t\t * If spaced is \"always\", then check whether option is set to false.\n\t\t * If spaced is \"never\", then check whether option is set to true.\n\t\t * @param {Object} option The option to exclude.\n\t\t * @returns {boolean} Whether or not the property is excluded.\n\t\t */\n\t\tfunction isOptionSet(option) {\n\t\t\treturn context.options[1]\n\t\t\t\t? context.options[1][option] === !spaced\n\t\t\t\t: false;\n\t\t}\n\n\t\tconst options = {\n\t\t\tspaced,\n\t\t\tsingleElementException: isOptionSet(\"singleValue\"),\n\t\t\tobjectsInArraysException: isOptionSet(\"objectsInArrays\"),\n\t\t\tarraysInArraysException: isOptionSet(\"arraysInArrays\"),\n\t\t};\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Reports that there shouldn't be a space after the first token\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportNoBeginningSpace(node, token) {\n\t\t\tconst nextToken = sourceCode.getTokenAfter(token);\n\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: { start: token.loc.end, end: nextToken.loc.start },\n\t\t\t\tmessageId: \"unexpectedSpaceAfter\",\n\t\t\t\tdata: {\n\t\t\t\t\ttokenValue: token.value,\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\ttoken.range[1],\n\t\t\t\t\t\tnextToken.range[0],\n\t\t\t\t\t]);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports that there shouldn't be a space before the last token\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportNoEndingSpace(node, token) {\n\t\t\tconst previousToken = sourceCode.getTokenBefore(token);\n\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: { start: previousToken.loc.end, end: token.loc.start },\n\t\t\t\tmessageId: \"unexpectedSpaceBefore\",\n\t\t\t\tdata: {\n\t\t\t\t\ttokenValue: token.value,\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tpreviousToken.range[1],\n\t\t\t\t\t\ttoken.range[0],\n\t\t\t\t\t]);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports that there should be a space after the first token\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportRequiredBeginningSpace(node, token) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: token.loc,\n\t\t\t\tmessageId: \"missingSpaceAfter\",\n\t\t\t\tdata: {\n\t\t\t\t\ttokenValue: token.value,\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.insertTextAfter(token, \" \");\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports that there should be a space before the last token\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportRequiredEndingSpace(node, token) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: token.loc,\n\t\t\t\tmessageId: \"missingSpaceBefore\",\n\t\t\t\tdata: {\n\t\t\t\t\ttokenValue: token.value,\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.insertTextBefore(token, \" \");\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Determines if a node is an object type\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} Whether or not the node is an object type.\n\t\t */\n\t\tfunction isObjectType(node) {\n\t\t\treturn (\n\t\t\t\tnode &&\n\t\t\t\t(node.type === \"ObjectExpression\" ||\n\t\t\t\t\tnode.type === \"ObjectPattern\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a node is an array type\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} Whether or not the node is an array type.\n\t\t */\n\t\tfunction isArrayType(node) {\n\t\t\treturn (\n\t\t\t\tnode &&\n\t\t\t\t(node.type === \"ArrayExpression\" ||\n\t\t\t\t\tnode.type === \"ArrayPattern\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Validates the spacing around array brackets\n\t\t * @param {ASTNode} node The node we're checking for spacing\n\t\t * @returns {void}\n\t\t */\n\t\tfunction validateArraySpacing(node) {\n\t\t\tif (options.spaced && node.elements.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst first = sourceCode.getFirstToken(node),\n\t\t\t\tsecond = sourceCode.getFirstToken(node, 1),\n\t\t\t\tlast = node.typeAnnotation\n\t\t\t\t\t? sourceCode.getTokenBefore(node.typeAnnotation)\n\t\t\t\t\t: sourceCode.getLastToken(node),\n\t\t\t\tpenultimate = sourceCode.getTokenBefore(last),\n\t\t\t\tfirstElement = node.elements[0],\n\t\t\t\tlastElement = node.elements.at(-1);\n\n\t\t\tconst openingBracketMustBeSpaced =\n\t\t\t\t(options.objectsInArraysException &&\n\t\t\t\t\tisObjectType(firstElement)) ||\n\t\t\t\t(options.arraysInArraysException &&\n\t\t\t\t\tisArrayType(firstElement)) ||\n\t\t\t\t(options.singleElementException && node.elements.length === 1)\n\t\t\t\t\t? !options.spaced\n\t\t\t\t\t: options.spaced;\n\n\t\t\tconst closingBracketMustBeSpaced =\n\t\t\t\t(options.objectsInArraysException &&\n\t\t\t\t\tisObjectType(lastElement)) ||\n\t\t\t\t(options.arraysInArraysException && isArrayType(lastElement)) ||\n\t\t\t\t(options.singleElementException && node.elements.length === 1)\n\t\t\t\t\t? !options.spaced\n\t\t\t\t\t: options.spaced;\n\n\t\t\tif (astUtils.isTokenOnSameLine(first, second)) {\n\t\t\t\tif (\n\t\t\t\t\topeningBracketMustBeSpaced &&\n\t\t\t\t\t!sourceCode.isSpaceBetween(first, second)\n\t\t\t\t) {\n\t\t\t\t\treportRequiredBeginningSpace(node, first);\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t!openingBracketMustBeSpaced &&\n\t\t\t\t\tsourceCode.isSpaceBetween(first, second)\n\t\t\t\t) {\n\t\t\t\t\treportNoBeginningSpace(node, first);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tfirst !== penultimate &&\n\t\t\t\tastUtils.isTokenOnSameLine(penultimate, last)\n\t\t\t) {\n\t\t\t\tif (\n\t\t\t\t\tclosingBracketMustBeSpaced &&\n\t\t\t\t\t!sourceCode.isSpaceBetween(penultimate, last)\n\t\t\t\t) {\n\t\t\t\t\treportRequiredEndingSpace(node, last);\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t!closingBracketMustBeSpaced &&\n\t\t\t\t\tsourceCode.isSpaceBetween(penultimate, last)\n\t\t\t\t) {\n\t\t\t\t\treportNoEndingSpace(node, last);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tArrayPattern: validateArraySpacing,\n\t\t\tArrayExpression: validateArraySpacing,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Code path related utilities.\n */\n\n\"use strict\";\n\n/**\n * Checks all segments in a set and returns true if any are reachable.\n * @param {Set<CodePathSegment>} segments The segments to check.\n * @returns {boolean} `true` if any segment is reachable; `false` otherwise.\n */\nfunction isAnySegmentReachable(segments) {\n\tfor (const segment of segments) {\n\t\tif (segment.reachable) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nmodule.exports = { isAnySegmentReachable };\n", "/**\n * @fileoverview Rule to enforce return statements in callbacks of array's methods\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst { isAnySegmentReachable } = require(\"./utils/code-path-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst TARGET_NODE_TYPE = /^(?:Arrow)?FunctionExpression$/u;\nconst TARGET_METHODS =\n\t/^(?:every|filter|find(?:Last)?(?:Index)?|flatMap|forEach|map|reduce(?:Right)?|some|sort|toSorted)$/u;\n\n/**\n * Checks a given node is a member access which has the specified name's\n * property.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} `true` if the node is a member access which has\n *      the specified name's property. The node may be a `(Chain|Member)Expression` node.\n */\nfunction isTargetMethod(node) {\n\treturn astUtils.isSpecificMemberAccess(node, null, TARGET_METHODS);\n}\n\n/**\n * Returns a human-legible description of an array method\n * @param {string} arrayMethodName A method name to fully qualify\n * @returns {string} the method name prefixed with `Array.` if it is a class method,\n *      or else `Array.prototype.` if it is an instance method.\n */\nfunction fullMethodName(arrayMethodName) {\n\tif ([\"from\", \"fromAsync\", \"of\", \"isArray\"].includes(arrayMethodName)) {\n\t\treturn \"Array.\".concat(arrayMethodName);\n\t}\n\treturn \"Array.prototype.\".concat(arrayMethodName);\n}\n\n/**\n * Checks whether or not a given node is a function expression which is the\n * callback of an array method, returning the method name.\n * Generators are excluded. Async functions are allowed only for `Array.fromAsync`.\n * @param {ASTNode} node A node to check. This is one of\n *      FunctionExpression or ArrowFunctionExpression.\n * @returns {string} The method name if the node is a callback method,\n *      null otherwise.\n */\nfunction getArrayMethodName(node) {\n\t// Generators are not checked for any methods.\n\tif (node.generator) {\n\t\treturn null;\n\t}\n\tlet currentNode = node;\n\n\twhile (currentNode) {\n\t\tconst parent = currentNode.parent;\n\n\t\tswitch (parent.type) {\n\t\t\t/*\n\t\t\t * Looks up the destination. e.g.,\n\t\t\t * foo.every(nativeFoo || function foo() { ... });\n\t\t\t */\n\t\t\tcase \"LogicalExpression\":\n\t\t\tcase \"ConditionalExpression\":\n\t\t\tcase \"ChainExpression\":\n\t\t\t\tcurrentNode = parent;\n\t\t\t\tbreak;\n\n\t\t\t/*\n\t\t\t * If the upper function is IIFE, checks the destination of the return value.\n\t\t\t * e.g.\n\t\t\t *   foo.every((function() {\n\t\t\t *     // setup...\n\t\t\t *     return function callback() { ... };\n\t\t\t *   })());\n\t\t\t */\n\t\t\tcase \"ReturnStatement\": {\n\t\t\t\tconst func = astUtils.getUpperFunction(parent);\n\n\t\t\t\tif (func === null || !astUtils.isCallee(func)) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tcurrentNode = func.parent;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * e.g.\n\t\t\t *   Array.from([], function() {});\n\t\t\t *   list.every(function() {});\n\t\t\t */\n\t\t\tcase \"CallExpression\":\n\t\t\t\tif (!node.async) {\n\t\t\t\t\tif (astUtils.isArrayFromMethod(parent.callee)) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tparent.arguments.length >= 2 &&\n\t\t\t\t\t\t\tparent.arguments[1] === currentNode\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn \"from\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (isTargetMethod(parent.callee)) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tparent.arguments.length >= 1 &&\n\t\t\t\t\t\t\tparent.arguments[0] === currentNode\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn astUtils.getStaticPropertyName(\n\t\t\t\t\t\t\t\tparent.callee,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (astUtils.isArrayFromAsyncMethod(parent.callee)) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tparent.arguments.length >= 2 &&\n\t\t\t\t\t\tparent.arguments[1] === currentNode\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn \"fromAsync\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\n\t\t\t// Otherwise this node is not target.\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\t}\n\n\t/* c8 ignore next */\n\treturn null;\n}\n\n/**\n * Checks if the given node is a void expression.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} - `true` if the node is a void expression\n */\nfunction isExpressionVoid(node) {\n\treturn node.type === \"UnaryExpression\" && node.operator === \"void\";\n}\n\n/**\n * Fixes the linting error by prepending \"void \" to the given node\n * @param {Object} sourceCode context given by context.sourceCode\n * @param {ASTNode} node The node to fix.\n * @param {Object} fixer The fixer object provided by ESLint.\n * @returns {Array<Object>} - An array of fix objects to apply to the node.\n */\nfunction voidPrependFixer(sourceCode, node, fixer) {\n\tconst requiresParens =\n\t\t// prepending `void ` will fail if the node has a lower precedence than void\n\t\tastUtils.getPrecedence(node) <\n\t\t\tastUtils.getPrecedence({\n\t\t\t\ttype: \"UnaryExpression\",\n\t\t\t\toperator: \"void\",\n\t\t\t}) &&\n\t\t// check if there are parentheses around the node to avoid redundant parentheses\n\t\t!astUtils.isParenthesised(sourceCode, node);\n\n\t// avoid parentheses issues\n\tconst returnOrArrowToken = sourceCode.getTokenBefore(\n\t\tnode,\n\t\tnode.parent.type === \"ArrowFunctionExpression\"\n\t\t\t? astUtils.isArrowToken\n\t\t\t: // isReturnToken\n\t\t\t\ttoken => token.type === \"Keyword\" && token.value === \"return\",\n\t);\n\n\tconst firstToken = sourceCode.getTokenAfter(returnOrArrowToken);\n\n\tconst prependSpace =\n\t\t// is return token, as => allows void to be adjacent\n\t\treturnOrArrowToken.value === \"return\" &&\n\t\t// If two tokens (return and \"(\") are adjacent\n\t\treturnOrArrowToken.range[1] === firstToken.range[0];\n\n\treturn [\n\t\tfixer.insertTextBefore(\n\t\t\tfirstToken,\n\t\t\t`${prependSpace ? \" \" : \"\"}void ${requiresParens ? \"(\" : \"\"}`,\n\t\t),\n\t\tfixer.insertTextAfter(node, requiresParens ? \")\" : \"\"),\n\t];\n}\n\n/**\n * Fixes the linting error by `wrapping {}` around the given node's body.\n * @param {Object} sourceCode context given by context.sourceCode\n * @param {ASTNode} node The node to fix.\n * @param {Object} fixer The fixer object provided by ESLint.\n * @returns {Array<Object>} - An array of fix objects to apply to the node.\n */\nfunction curlyWrapFixer(sourceCode, node, fixer) {\n\tconst arrowToken = sourceCode.getTokenBefore(\n\t\tnode.body,\n\t\tastUtils.isArrowToken,\n\t);\n\tconst firstToken = sourceCode.getTokenAfter(arrowToken);\n\tconst lastToken = sourceCode.getLastToken(node);\n\n\treturn [\n\t\tfixer.insertTextBefore(firstToken, \"{\"),\n\t\tfixer.insertTextAfter(lastToken, \"}\"),\n\t];\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowImplicit: false,\n\t\t\t\tcheckForEach: false,\n\t\t\t\tallowVoid: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce `return` statements in callbacks of array methods\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/array-callback-return\",\n\t\t},\n\n\t\thasSuggestions: true,\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowImplicit: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tcheckForEach: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowVoid: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\texpectedAtEnd:\n\t\t\t\t\"{{arrayMethodName}}() expects a value to be returned at the end of {{name}}.\",\n\t\t\texpectedInside:\n\t\t\t\t\"{{arrayMethodName}}() expects a return value from {{name}}.\",\n\t\t\texpectedReturnValue:\n\t\t\t\t\"{{arrayMethodName}}() expects a return value from {{name}}.\",\n\t\t\texpectedNoReturnValue:\n\t\t\t\t\"{{arrayMethodName}}() expects no useless return value from {{name}}.\",\n\t\t\twrapBraces: \"Wrap the expression in `{}`.\",\n\t\t\tprependVoid: \"Prepend `void` to the expression.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [options] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tlet funcInfo = {\n\t\t\tarrayMethodName: null,\n\t\t\tupper: null,\n\t\t\tcodePath: null,\n\t\t\thasReturn: false,\n\t\t\tshouldCheck: false,\n\t\t\tnode: null,\n\t\t};\n\n\t\t/**\n\t\t * Checks whether or not the last code path segment is reachable.\n\t\t * Then reports this function if the segment is reachable.\n\t\t *\n\t\t * If the last code path segment is reachable, there are paths which are not\n\t\t * returned or thrown.\n\t\t * @param {ASTNode} node A node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkLastSegment(node) {\n\t\t\tif (!funcInfo.shouldCheck) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst messageAndSuggestions = { messageId: \"\", suggest: [] };\n\n\t\t\tif (funcInfo.arrayMethodName === \"forEach\") {\n\t\t\t\tif (\n\t\t\t\t\toptions.checkForEach &&\n\t\t\t\t\tnode.type === \"ArrowFunctionExpression\" &&\n\t\t\t\t\tnode.expression\n\t\t\t\t) {\n\t\t\t\t\tif (options.allowVoid) {\n\t\t\t\t\t\tif (isExpressionVoid(node.body)) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmessageAndSuggestions.messageId =\n\t\t\t\t\t\t\t\"expectedNoReturnValue\";\n\t\t\t\t\t\tmessageAndSuggestions.suggest = [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmessageId: \"wrapBraces\",\n\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\treturn curlyWrapFixer(\n\t\t\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t\tfixer,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmessageId: \"prependVoid\",\n\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\treturn voidPrependFixer(\n\t\t\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\t\t\tnode.body,\n\t\t\t\t\t\t\t\t\t\tfixer,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmessageAndSuggestions.messageId =\n\t\t\t\t\t\t\t\"expectedNoReturnValue\";\n\t\t\t\t\t\tmessageAndSuggestions.suggest = [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmessageId: \"wrapBraces\",\n\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\treturn curlyWrapFixer(\n\t\t\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t\tfixer,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnode.body.type === \"BlockStatement\" &&\n\t\t\t\t\tisAnySegmentReachable(funcInfo.currentSegments)\n\t\t\t\t) {\n\t\t\t\t\tmessageAndSuggestions.messageId = funcInfo.hasReturn\n\t\t\t\t\t\t? \"expectedAtEnd\"\n\t\t\t\t\t\t: \"expectedInside\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (messageAndSuggestions.messageId) {\n\t\t\t\tconst name = astUtils.getFunctionNameWithKind(node);\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: astUtils.getFunctionHeadLoc(node, sourceCode),\n\t\t\t\t\tmessageId: messageAndSuggestions.messageId,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tarrayMethodName: fullMethodName(\n\t\t\t\t\t\t\tfuncInfo.arrayMethodName,\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\tsuggest:\n\t\t\t\t\t\tmessageAndSuggestions.suggest.length !== 0\n\t\t\t\t\t\t\t? messageAndSuggestions.suggest\n\t\t\t\t\t\t\t: null,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t// Stacks this function's information.\n\t\t\tonCodePathStart(codePath, node) {\n\t\t\t\tlet methodName = null;\n\n\t\t\t\tif (TARGET_NODE_TYPE.test(node.type)) {\n\t\t\t\t\tmethodName = getArrayMethodName(node);\n\t\t\t\t}\n\n\t\t\t\tfuncInfo = {\n\t\t\t\t\tarrayMethodName: methodName,\n\t\t\t\t\tupper: funcInfo,\n\t\t\t\t\tcodePath,\n\t\t\t\t\thasReturn: false,\n\t\t\t\t\tshouldCheck: !!methodName,\n\t\t\t\t\tnode,\n\t\t\t\t\tcurrentSegments: new Set(),\n\t\t\t\t};\n\t\t\t},\n\n\t\t\t// Pops this function's information.\n\t\t\tonCodePathEnd() {\n\t\t\t\tfuncInfo = funcInfo.upper;\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentStart(segment) {\n\t\t\t\tfuncInfo.currentSegments.add(segment);\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentEnd(segment) {\n\t\t\t\tfuncInfo.currentSegments.delete(segment);\n\t\t\t},\n\n\t\t\tonCodePathSegmentStart(segment) {\n\t\t\t\tfuncInfo.currentSegments.add(segment);\n\t\t\t},\n\n\t\t\tonCodePathSegmentEnd(segment) {\n\t\t\t\tfuncInfo.currentSegments.delete(segment);\n\t\t\t},\n\n\t\t\t// Checks the return statement is valid.\n\t\t\tReturnStatement(node) {\n\t\t\t\tif (!funcInfo.shouldCheck) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfuncInfo.hasReturn = true;\n\n\t\t\t\tconst messageAndSuggestions = { messageId: \"\", suggest: [] };\n\n\t\t\t\tif (funcInfo.arrayMethodName === \"forEach\") {\n\t\t\t\t\t// if checkForEach: true, returning a value at any path inside a forEach is not allowed\n\t\t\t\t\tif (options.checkForEach && node.argument) {\n\t\t\t\t\t\tif (options.allowVoid) {\n\t\t\t\t\t\t\tif (isExpressionVoid(node.argument)) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmessageAndSuggestions.messageId =\n\t\t\t\t\t\t\t\t\"expectedNoReturnValue\";\n\t\t\t\t\t\t\tmessageAndSuggestions.suggest = [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmessageId: \"prependVoid\",\n\t\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\t\treturn voidPrependFixer(\n\t\t\t\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\t\t\t\tnode.argument,\n\t\t\t\t\t\t\t\t\t\t\tfixer,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmessageAndSuggestions.messageId =\n\t\t\t\t\t\t\t\t\"expectedNoReturnValue\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// if allowImplicit: false, should also check node.argument\n\t\t\t\t\tif (!options.allowImplicit && !node.argument) {\n\t\t\t\t\t\tmessageAndSuggestions.messageId = \"expectedReturnValue\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (messageAndSuggestions.messageId) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: messageAndSuggestions.messageId,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tname: astUtils.getFunctionNameWithKind(\n\t\t\t\t\t\t\t\tfuncInfo.node,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tarrayMethodName: fullMethodName(\n\t\t\t\t\t\t\t\tfuncInfo.arrayMethodName,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsuggest:\n\t\t\t\t\t\t\tmessageAndSuggestions.suggest.length !== 0\n\t\t\t\t\t\t\t\t? messageAndSuggestions.suggest\n\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Reports a given function if the last path is reachable.\n\t\t\t\"FunctionExpression:exit\": checkLastSegment,\n\t\t\t\"ArrowFunctionExpression:exit\": checkLastSegment,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce line breaks after each array element\n * @author Jan Peer St\u00F6cklmair <https://github.com/JPeer264>\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"array-element-newline\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/array-element-newline\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce line breaks after each array element\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/array-element-newline\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: {\n\t\t\tdefinitions: {\n\t\t\t\tbasicConfig: {\n\t\t\t\t\toneOf: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"always\", \"never\", \"consistent\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tmultiline: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tminItems: {\n\t\t\t\t\t\t\t\t\ttype: [\"integer\", \"null\"],\n\t\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\ttype: \"array\",\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\toneOf: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$ref: \"#/definitions/basicConfig\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tArrayExpression: {\n\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/basicConfig\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tArrayPattern: {\n\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/basicConfig\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t\tminProperties: 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tmessages: {\n\t\t\tunexpectedLineBreak: \"There should be no linebreak here.\",\n\t\t\tmissingLineBreak: \"There should be a linebreak after this element.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//----------------------------------------------------------------------\n\t\t// Helpers\n\t\t//----------------------------------------------------------------------\n\n\t\t/**\n\t\t * Normalizes a given option value.\n\t\t * @param {string|Object|undefined} providedOption An option value to parse.\n\t\t * @returns {{multiline: boolean, minItems: number}} Normalized option object.\n\t\t */\n\t\tfunction normalizeOptionValue(providedOption) {\n\t\t\tlet consistent = false;\n\t\t\tlet multiline = false;\n\t\t\tlet minItems;\n\n\t\t\tconst option = providedOption || \"always\";\n\n\t\t\tif (!option || option === \"always\" || option.minItems === 0) {\n\t\t\t\tminItems = 0;\n\t\t\t} else if (option === \"never\") {\n\t\t\t\tminItems = Number.POSITIVE_INFINITY;\n\t\t\t} else if (option === \"consistent\") {\n\t\t\t\tconsistent = true;\n\t\t\t\tminItems = Number.POSITIVE_INFINITY;\n\t\t\t} else {\n\t\t\t\tmultiline = Boolean(option.multiline);\n\t\t\t\tminItems = option.minItems || Number.POSITIVE_INFINITY;\n\t\t\t}\n\n\t\t\treturn { consistent, multiline, minItems };\n\t\t}\n\n\t\t/**\n\t\t * Normalizes a given option value.\n\t\t * @param {string|Object|undefined} options An option value to parse.\n\t\t * @returns {{ArrayExpression: {multiline: boolean, minItems: number}, ArrayPattern: {multiline: boolean, minItems: number}}} Normalized option object.\n\t\t */\n\t\tfunction normalizeOptions(options) {\n\t\t\tif (options && (options.ArrayExpression || options.ArrayPattern)) {\n\t\t\t\tlet expressionOptions, patternOptions;\n\n\t\t\t\tif (options.ArrayExpression) {\n\t\t\t\t\texpressionOptions = normalizeOptionValue(\n\t\t\t\t\t\toptions.ArrayExpression,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (options.ArrayPattern) {\n\t\t\t\t\tpatternOptions = normalizeOptionValue(options.ArrayPattern);\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tArrayExpression: expressionOptions,\n\t\t\t\t\tArrayPattern: patternOptions,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst value = normalizeOptionValue(options);\n\n\t\t\treturn { ArrayExpression: value, ArrayPattern: value };\n\t\t}\n\n\t\t/**\n\t\t * Reports that there shouldn't be a line break after the first token\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportNoLineBreak(token) {\n\t\t\tconst tokenBefore = sourceCode.getTokenBefore(token, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\n\t\t\tcontext.report({\n\t\t\t\tloc: {\n\t\t\t\t\tstart: tokenBefore.loc.end,\n\t\t\t\t\tend: token.loc.start,\n\t\t\t\t},\n\t\t\t\tmessageId: \"unexpectedLineBreak\",\n\t\t\t\tfix(fixer) {\n\t\t\t\t\tif (astUtils.isCommentToken(tokenBefore)) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!astUtils.isTokenOnSameLine(tokenBefore, token)) {\n\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t[tokenBefore.range[1], token.range[0]],\n\t\t\t\t\t\t\t\" \",\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * This will check if the comma is on the same line as the next element\n\t\t\t\t\t * Following array:\n\t\t\t\t\t * [\n\t\t\t\t\t *     1\n\t\t\t\t\t *     , 2\n\t\t\t\t\t *     , 3\n\t\t\t\t\t * ]\n\t\t\t\t\t *\n\t\t\t\t\t * will be fixed to:\n\t\t\t\t\t * [\n\t\t\t\t\t *     1, 2, 3\n\t\t\t\t\t * ]\n\t\t\t\t\t */\n\t\t\t\t\tconst twoTokensBefore = sourceCode.getTokenBefore(\n\t\t\t\t\t\ttokenBefore,\n\t\t\t\t\t\t{ includeComments: true },\n\t\t\t\t\t);\n\n\t\t\t\t\tif (astUtils.isCommentToken(twoTokensBefore)) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t[twoTokensBefore.range[1], tokenBefore.range[0]],\n\t\t\t\t\t\t\"\",\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports that there should be a line break after the first token\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportRequiredLineBreak(token) {\n\t\t\tconst tokenBefore = sourceCode.getTokenBefore(token, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\n\t\t\tcontext.report({\n\t\t\t\tloc: {\n\t\t\t\t\tstart: tokenBefore.loc.end,\n\t\t\t\t\tend: token.loc.start,\n\t\t\t\t},\n\t\t\t\tmessageId: \"missingLineBreak\",\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t[tokenBefore.range[1], token.range[0]],\n\t\t\t\t\t\t\"\\n\",\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports a given node if it violated this rule.\n\t\t * @param {ASTNode} node A node to check. This is an ObjectExpression node or an ObjectPattern node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction check(node) {\n\t\t\tconst elements = node.elements;\n\t\t\tconst normalizedOptions = normalizeOptions(context.options[0]);\n\t\t\tconst options = normalizedOptions[node.type];\n\n\t\t\tif (!options) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet elementBreak = false;\n\n\t\t\t/*\n\t\t\t * MULTILINE: true\n\t\t\t * loop through every element and check\n\t\t\t * if at least one element has linebreaks inside\n\t\t\t * this ensures that following is not valid (due to elements are on the same line):\n\t\t\t *\n\t\t\t * [\n\t\t\t *      1,\n\t\t\t *      2,\n\t\t\t *      3\n\t\t\t * ]\n\t\t\t */\n\t\t\tif (options.multiline) {\n\t\t\t\telementBreak = elements\n\t\t\t\t\t.filter(element => element !== null)\n\t\t\t\t\t.some(\n\t\t\t\t\t\telement =>\n\t\t\t\t\t\t\telement.loc.start.line !== element.loc.end.line,\n\t\t\t\t\t);\n\t\t\t}\n\n\t\t\tlet linebreaksCount = 0;\n\n\t\t\tfor (let i = 0; i < node.elements.length; i++) {\n\t\t\t\tconst element = node.elements[i];\n\n\t\t\t\tconst previousElement = elements[i - 1];\n\n\t\t\t\tif (i === 0 || element === null || previousElement === null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst commaToken = sourceCode.getFirstTokenBetween(\n\t\t\t\t\tpreviousElement,\n\t\t\t\t\telement,\n\t\t\t\t\tastUtils.isCommaToken,\n\t\t\t\t);\n\t\t\t\tconst lastTokenOfPreviousElement =\n\t\t\t\t\tsourceCode.getTokenBefore(commaToken);\n\t\t\t\tconst firstTokenOfCurrentElement =\n\t\t\t\t\tsourceCode.getTokenAfter(commaToken);\n\n\t\t\t\tif (\n\t\t\t\t\t!astUtils.isTokenOnSameLine(\n\t\t\t\t\t\tlastTokenOfPreviousElement,\n\t\t\t\t\t\tfirstTokenOfCurrentElement,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tlinebreaksCount++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst needsLinebreaks =\n\t\t\t\telements.length >= options.minItems ||\n\t\t\t\t(options.multiline && elementBreak) ||\n\t\t\t\t(options.consistent &&\n\t\t\t\t\tlinebreaksCount > 0 &&\n\t\t\t\t\tlinebreaksCount < node.elements.length);\n\n\t\t\telements.forEach((element, i) => {\n\t\t\t\tconst previousElement = elements[i - 1];\n\n\t\t\t\tif (i === 0 || element === null || previousElement === null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst commaToken = sourceCode.getFirstTokenBetween(\n\t\t\t\t\tpreviousElement,\n\t\t\t\t\telement,\n\t\t\t\t\tastUtils.isCommaToken,\n\t\t\t\t);\n\t\t\t\tconst lastTokenOfPreviousElement =\n\t\t\t\t\tsourceCode.getTokenBefore(commaToken);\n\t\t\t\tconst firstTokenOfCurrentElement =\n\t\t\t\t\tsourceCode.getTokenAfter(commaToken);\n\n\t\t\t\tif (needsLinebreaks) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tastUtils.isTokenOnSameLine(\n\t\t\t\t\t\t\tlastTokenOfPreviousElement,\n\t\t\t\t\t\t\tfirstTokenOfCurrentElement,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treportRequiredLineBreak(firstTokenOfCurrentElement);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!astUtils.isTokenOnSameLine(\n\t\t\t\t\t\t\tlastTokenOfPreviousElement,\n\t\t\t\t\t\t\tfirstTokenOfCurrentElement,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treportNoLineBreak(firstTokenOfCurrentElement);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t//----------------------------------------------------------------------\n\t\t// Public\n\t\t//----------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tArrayPattern: check,\n\t\t\tArrayExpression: check,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to require braces in arrow function body.\n * @author Alberto Rodr\u00EDguez\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\"as-needed\"],\n\n\t\tdocs: {\n\t\t\tdescription: \"Require braces around arrow function bodies\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/arrow-body-style\",\n\t\t},\n\n\t\tschema: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 1,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"as-needed\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\trequireReturnForObjectLiteral: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 2,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tunexpectedOtherBlock:\n\t\t\t\t\"Unexpected block statement surrounding arrow body.\",\n\t\t\tunexpectedEmptyBlock:\n\t\t\t\t\"Unexpected block statement surrounding arrow body; put a value of `undefined` immediately after the `=>`.\",\n\t\t\tunexpectedObjectBlock:\n\t\t\t\t\"Unexpected block statement surrounding arrow body; parenthesize the returned value and move it immediately after the `=>`.\",\n\t\t\tunexpectedSingleBlock:\n\t\t\t\t\"Unexpected block statement surrounding arrow body; move the returned value immediately after the `=>`.\",\n\t\t\texpectedBlock: \"Expected block statement surrounding arrow body.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst options = context.options;\n\t\tconst always = options[0] === \"always\";\n\t\tconst asNeeded = options[0] === \"as-needed\";\n\t\tconst never = options[0] === \"never\";\n\t\tconst requireReturnForObjectLiteral =\n\t\t\toptions[1] && options[1].requireReturnForObjectLiteral;\n\t\tconst sourceCode = context.sourceCode;\n\t\tlet funcInfo = null;\n\n\t\t/**\n\t\t * Checks whether the given node has ASI problem or not.\n\t\t * @param {Token} token The token to check.\n\t\t * @returns {boolean} `true` if it changes semantics if `;` or `}` followed by the token are removed.\n\t\t */\n\t\tfunction hasASIProblem(token) {\n\t\t\treturn (\n\t\t\t\ttoken &&\n\t\t\t\ttoken.type === \"Punctuator\" &&\n\t\t\t\t/^[([/`+-]/u.test(token.value)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Gets the closing parenthesis by the given node.\n\t\t * @param {ASTNode} node first node after an opening parenthesis.\n\t\t * @returns {Token} The found closing parenthesis token.\n\t\t */\n\t\tfunction findClosingParen(node) {\n\t\t\tlet nodeToCheck = node;\n\n\t\t\twhile (!astUtils.isParenthesised(sourceCode, nodeToCheck)) {\n\t\t\t\tnodeToCheck = nodeToCheck.parent;\n\t\t\t}\n\t\t\treturn sourceCode.getTokenAfter(nodeToCheck);\n\t\t}\n\n\t\t/**\n\t\t * Check whether the node is inside of a for loop's init\n\t\t * @param {ASTNode} node node is inside for loop\n\t\t * @returns {boolean} `true` if the node is inside of a for loop, else `false`\n\t\t */\n\t\tfunction isInsideForLoopInitializer(node) {\n\t\t\tif (node && node.parent) {\n\t\t\t\tif (\n\t\t\t\t\tnode.parent.type === \"ForStatement\" &&\n\t\t\t\t\tnode.parent.init === node\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn isInsideForLoopInitializer(node.parent);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Determines whether a arrow function body needs braces\n\t\t * @param {ASTNode} node The arrow function node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction validate(node) {\n\t\t\tconst arrowBody = node.body;\n\n\t\t\tif (arrowBody.type === \"BlockStatement\") {\n\t\t\t\tconst blockBody = arrowBody.body;\n\n\t\t\t\tif (blockBody.length !== 1 && !never) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tasNeeded &&\n\t\t\t\t\trequireReturnForObjectLiteral &&\n\t\t\t\t\tblockBody[0].type === \"ReturnStatement\" &&\n\t\t\t\t\tblockBody[0].argument &&\n\t\t\t\t\tblockBody[0].argument.type === \"ObjectExpression\"\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tnever ||\n\t\t\t\t\t(asNeeded && blockBody[0].type === \"ReturnStatement\")\n\t\t\t\t) {\n\t\t\t\t\tlet messageId;\n\n\t\t\t\t\tif (blockBody.length === 0) {\n\t\t\t\t\t\tmessageId = \"unexpectedEmptyBlock\";\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tblockBody.length > 1 ||\n\t\t\t\t\t\tblockBody[0].type !== \"ReturnStatement\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tmessageId = \"unexpectedOtherBlock\";\n\t\t\t\t\t} else if (blockBody[0].argument === null) {\n\t\t\t\t\t\tmessageId = \"unexpectedSingleBlock\";\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tastUtils.isOpeningBraceToken(\n\t\t\t\t\t\t\tsourceCode.getFirstToken(blockBody[0], { skip: 1 }),\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tmessageId = \"unexpectedObjectBlock\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmessageId = \"unexpectedSingleBlock\";\n\t\t\t\t\t}\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: arrowBody.loc,\n\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tconst fixes = [];\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tblockBody.length !== 1 ||\n\t\t\t\t\t\t\t\tblockBody[0].type !== \"ReturnStatement\" ||\n\t\t\t\t\t\t\t\t!blockBody[0].argument ||\n\t\t\t\t\t\t\t\thasASIProblem(\n\t\t\t\t\t\t\t\t\tsourceCode.getTokenAfter(arrowBody),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn fixes;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst openingBrace =\n\t\t\t\t\t\t\t\tsourceCode.getFirstToken(arrowBody);\n\t\t\t\t\t\t\tconst closingBrace =\n\t\t\t\t\t\t\t\tsourceCode.getLastToken(arrowBody);\n\t\t\t\t\t\t\tconst firstValueToken = sourceCode.getFirstToken(\n\t\t\t\t\t\t\t\tblockBody[0],\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst lastValueToken = sourceCode.getLastToken(\n\t\t\t\t\t\t\t\tblockBody[0],\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst commentsExist =\n\t\t\t\t\t\t\t\tsourceCode.commentsExistBetween(\n\t\t\t\t\t\t\t\t\topeningBrace,\n\t\t\t\t\t\t\t\t\tfirstValueToken,\n\t\t\t\t\t\t\t\t) ||\n\t\t\t\t\t\t\t\tsourceCode.commentsExistBetween(\n\t\t\t\t\t\t\t\t\tlastValueToken,\n\t\t\t\t\t\t\t\t\tclosingBrace,\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * Remove tokens around the return value.\n\t\t\t\t\t\t\t * If comments don't exist, remove extra spaces as well.\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tif (commentsExist) {\n\t\t\t\t\t\t\t\tfixes.push(\n\t\t\t\t\t\t\t\t\tfixer.remove(openingBrace),\n\t\t\t\t\t\t\t\t\tfixer.remove(closingBrace),\n\t\t\t\t\t\t\t\t\tfixer.remove(\n\t\t\t\t\t\t\t\t\t\tsourceCode.getTokenAfter(openingBrace),\n\t\t\t\t\t\t\t\t\t), // return keyword\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfixes.push(\n\t\t\t\t\t\t\t\t\tfixer.removeRange([\n\t\t\t\t\t\t\t\t\t\topeningBrace.range[0],\n\t\t\t\t\t\t\t\t\t\tfirstValueToken.range[0],\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\tfixer.removeRange([\n\t\t\t\t\t\t\t\t\t\tlastValueToken.range[1],\n\t\t\t\t\t\t\t\t\t\tclosingBrace.range[1],\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * If the first token of the return value is `{` or the return value is a sequence expression,\n\t\t\t\t\t\t\t * enclose the return value by parentheses to avoid syntax error.\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tastUtils.isOpeningBraceToken(firstValueToken) ||\n\t\t\t\t\t\t\t\tblockBody[0].argument.type ===\n\t\t\t\t\t\t\t\t\t\"SequenceExpression\" ||\n\t\t\t\t\t\t\t\t(funcInfo.hasInOperator &&\n\t\t\t\t\t\t\t\t\tisInsideForLoopInitializer(node))\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t!astUtils.isParenthesised(\n\t\t\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\t\t\tblockBody[0].argument,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tfixes.push(\n\t\t\t\t\t\t\t\t\t\tfixer.insertTextBefore(\n\t\t\t\t\t\t\t\t\t\t\tfirstValueToken,\n\t\t\t\t\t\t\t\t\t\t\t\"(\",\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tfixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\t\t\tlastValueToken,\n\t\t\t\t\t\t\t\t\t\t\t\")\",\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * If the last token of the return statement is semicolon, remove it.\n\t\t\t\t\t\t\t * Non-block arrow body is an expression, not a statement.\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tif (astUtils.isSemicolonToken(lastValueToken)) {\n\t\t\t\t\t\t\t\tfixes.push(fixer.remove(lastValueToken));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn fixes;\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\talways ||\n\t\t\t\t\t(asNeeded &&\n\t\t\t\t\t\trequireReturnForObjectLiteral &&\n\t\t\t\t\t\tarrowBody.type === \"ObjectExpression\")\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: arrowBody.loc,\n\t\t\t\t\t\tmessageId: \"expectedBlock\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tconst fixes = [];\n\t\t\t\t\t\t\tconst arrowToken = sourceCode.getTokenBefore(\n\t\t\t\t\t\t\t\tarrowBody,\n\t\t\t\t\t\t\t\tastUtils.isArrowToken,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst [\n\t\t\t\t\t\t\t\tfirstTokenAfterArrow,\n\t\t\t\t\t\t\t\tsecondTokenAfterArrow,\n\t\t\t\t\t\t\t] = sourceCode.getTokensAfter(arrowToken, {\n\t\t\t\t\t\t\t\tcount: 2,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst lastToken = sourceCode.getLastToken(node);\n\n\t\t\t\t\t\t\tlet parenthesisedObjectLiteral = null;\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tastUtils.isOpeningParenToken(\n\t\t\t\t\t\t\t\t\tfirstTokenAfterArrow,\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tastUtils.isOpeningBraceToken(\n\t\t\t\t\t\t\t\t\tsecondTokenAfterArrow,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tconst braceNode =\n\t\t\t\t\t\t\t\t\tsourceCode.getNodeByRangeIndex(\n\t\t\t\t\t\t\t\t\t\tsecondTokenAfterArrow.range[0],\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tif (braceNode.type === \"ObjectExpression\") {\n\t\t\t\t\t\t\t\t\tparenthesisedObjectLiteral = braceNode;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// If the value is object literal, remove parentheses which were forced by syntax.\n\t\t\t\t\t\t\tif (parenthesisedObjectLiteral) {\n\t\t\t\t\t\t\t\tconst openingParenToken = firstTokenAfterArrow;\n\t\t\t\t\t\t\t\tconst openingBraceToken = secondTokenAfterArrow;\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tastUtils.isTokenOnSameLine(\n\t\t\t\t\t\t\t\t\t\topeningParenToken,\n\t\t\t\t\t\t\t\t\t\topeningBraceToken,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tfixes.push(\n\t\t\t\t\t\t\t\t\t\tfixer.replaceText(\n\t\t\t\t\t\t\t\t\t\t\topeningParenToken,\n\t\t\t\t\t\t\t\t\t\t\t\"{return \",\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Avoid ASI\n\t\t\t\t\t\t\t\t\tfixes.push(\n\t\t\t\t\t\t\t\t\t\tfixer.replaceText(\n\t\t\t\t\t\t\t\t\t\t\topeningParenToken,\n\t\t\t\t\t\t\t\t\t\t\t\"{\",\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tfixer.insertTextBefore(\n\t\t\t\t\t\t\t\t\t\t\topeningBraceToken,\n\t\t\t\t\t\t\t\t\t\t\t\"return \",\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Closing paren for the object doesn't have to be lastToken, e.g.: () => ({}).foo()\n\t\t\t\t\t\t\t\tfixes.push(\n\t\t\t\t\t\t\t\t\tfixer.remove(\n\t\t\t\t\t\t\t\t\t\tfindClosingParen(\n\t\t\t\t\t\t\t\t\t\t\tparenthesisedObjectLiteral,\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tfixes.push(\n\t\t\t\t\t\t\t\t\tfixer.insertTextAfter(lastToken, \"}\"),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfixes.push(\n\t\t\t\t\t\t\t\t\tfixer.insertTextBefore(\n\t\t\t\t\t\t\t\t\t\tfirstTokenAfterArrow,\n\t\t\t\t\t\t\t\t\t\t\"{return \",\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tfixes.push(\n\t\t\t\t\t\t\t\t\tfixer.insertTextAfter(lastToken, \"}\"),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn fixes;\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t\"BinaryExpression[operator='in']\"() {\n\t\t\t\tlet info = funcInfo;\n\n\t\t\t\twhile (info) {\n\t\t\t\t\tinfo.hasInOperator = true;\n\t\t\t\t\tinfo = info.upper;\n\t\t\t\t}\n\t\t\t},\n\t\t\tArrowFunctionExpression() {\n\t\t\t\tfuncInfo = {\n\t\t\t\t\tupper: funcInfo,\n\t\t\t\t\thasInOperator: false,\n\t\t\t\t};\n\t\t\t},\n\t\t\t\"ArrowFunctionExpression:exit\"(node) {\n\t\t\t\tvalidate(node);\n\t\t\t\tfuncInfo = funcInfo.upper;\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to require parens in arrow function arguments.\n * @author Jxck\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Determines if the given arrow function has block body.\n * @param {ASTNode} node `ArrowFunctionExpression` node.\n * @returns {boolean} `true` if the function has block body.\n */\nfunction hasBlockBody(node) {\n\treturn node.body.type === \"BlockStatement\";\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"arrow-parens\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/arrow-parens\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require parentheses around arrow function arguments\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/arrow-parens\",\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"always\", \"as-needed\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\trequireForBlockBody: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedParens:\n\t\t\t\t\"Unexpected parentheses around single function argument.\",\n\t\t\texpectedParens:\n\t\t\t\t\"Expected parentheses around arrow function argument.\",\n\n\t\t\tunexpectedParensInline:\n\t\t\t\t\"Unexpected parentheses around single function argument having a body with no curly braces.\",\n\t\t\texpectedParensBlock:\n\t\t\t\t\"Expected parentheses around arrow function argument having a body with curly braces.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst asNeeded = context.options[0] === \"as-needed\";\n\t\tconst requireForBlockBody =\n\t\t\tasNeeded &&\n\t\t\tcontext.options[1] &&\n\t\t\tcontext.options[1].requireForBlockBody === true;\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Finds opening paren of parameters for the given arrow function, if it exists.\n\t\t * It is assumed that the given arrow function has exactly one parameter.\n\t\t * @param {ASTNode} node `ArrowFunctionExpression` node.\n\t\t * @returns {Token|null} the opening paren, or `null` if the given arrow function doesn't have parens of parameters.\n\t\t */\n\t\tfunction findOpeningParenOfParams(node) {\n\t\t\tconst tokenBeforeParams = sourceCode.getTokenBefore(node.params[0]);\n\n\t\t\tif (\n\t\t\t\ttokenBeforeParams &&\n\t\t\t\tastUtils.isOpeningParenToken(tokenBeforeParams) &&\n\t\t\t\tnode.range[0] <= tokenBeforeParams.range[0]\n\t\t\t) {\n\t\t\t\treturn tokenBeforeParams;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\t/**\n\t\t * Finds closing paren of parameters for the given arrow function.\n\t\t * It is assumed that the given arrow function has parens of parameters and that it has exactly one parameter.\n\t\t * @param {ASTNode} node `ArrowFunctionExpression` node.\n\t\t * @returns {Token} the closing paren of parameters.\n\t\t */\n\t\tfunction getClosingParenOfParams(node) {\n\t\t\treturn sourceCode.getTokenAfter(\n\t\t\t\tnode.params[0],\n\t\t\t\tastUtils.isClosingParenToken,\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines whether the given arrow function has comments inside parens of parameters.\n\t\t * It is assumed that the given arrow function has parens of parameters.\n\t\t * @param {ASTNode} node `ArrowFunctionExpression` node.\n\t\t * @param {Token} openingParen Opening paren of parameters.\n\t\t * @returns {boolean} `true` if the function has at least one comment inside of parens of parameters.\n\t\t */\n\t\tfunction hasCommentsInParensOfParams(node, openingParen) {\n\t\t\treturn sourceCode.commentsExistBetween(\n\t\t\t\topeningParen,\n\t\t\t\tgetClosingParenOfParams(node),\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines whether the given arrow function has unexpected tokens before opening paren of parameters,\n\t\t * in which case it will be assumed that the existing parens of parameters are necessary.\n\t\t * Only tokens within the range of the arrow function (tokens that are part of the arrow function) are taken into account.\n\t\t * Example: <T>(a) => b\n\t\t * @param {ASTNode} node `ArrowFunctionExpression` node.\n\t\t * @param {Token} openingParen Opening paren of parameters.\n\t\t * @returns {boolean} `true` if the function has at least one unexpected token.\n\t\t */\n\t\tfunction hasUnexpectedTokensBeforeOpeningParen(node, openingParen) {\n\t\t\tconst expectedCount = node.async ? 1 : 0;\n\n\t\t\treturn (\n\t\t\t\tsourceCode.getFirstToken(node, { skip: expectedCount }) !==\n\t\t\t\topeningParen\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\t\"ArrowFunctionExpression[params.length=1]\"(node) {\n\t\t\t\tconst shouldHaveParens =\n\t\t\t\t\t!asNeeded || (requireForBlockBody && hasBlockBody(node));\n\t\t\t\tconst openingParen = findOpeningParenOfParams(node);\n\t\t\t\tconst hasParens = openingParen !== null;\n\t\t\t\tconst [param] = node.params;\n\n\t\t\t\tif (shouldHaveParens && !hasParens) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: requireForBlockBody\n\t\t\t\t\t\t\t? \"expectedParensBlock\"\n\t\t\t\t\t\t\t: \"expectedParens\",\n\t\t\t\t\t\tloc: param.loc,\n\t\t\t\t\t\t*fix(fixer) {\n\t\t\t\t\t\t\tyield fixer.insertTextBefore(param, \"(\");\n\t\t\t\t\t\t\tyield fixer.insertTextAfter(param, \")\");\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!shouldHaveParens &&\n\t\t\t\t\thasParens &&\n\t\t\t\t\tparam.type === \"Identifier\" &&\n\t\t\t\t\t!param.typeAnnotation &&\n\t\t\t\t\t!node.returnType &&\n\t\t\t\t\t!hasCommentsInParensOfParams(node, openingParen) &&\n\t\t\t\t\t!hasUnexpectedTokensBeforeOpeningParen(node, openingParen)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: requireForBlockBody\n\t\t\t\t\t\t\t? \"unexpectedParensInline\"\n\t\t\t\t\t\t\t: \"unexpectedParens\",\n\t\t\t\t\t\tloc: param.loc,\n\t\t\t\t\t\t*fix(fixer) {\n\t\t\t\t\t\t\tconst tokenBeforeOpeningParen =\n\t\t\t\t\t\t\t\tsourceCode.getTokenBefore(openingParen);\n\t\t\t\t\t\t\tconst closingParen = getClosingParenOfParams(node);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttokenBeforeOpeningParen &&\n\t\t\t\t\t\t\t\ttokenBeforeOpeningParen.range[1] ===\n\t\t\t\t\t\t\t\t\topeningParen.range[0] &&\n\t\t\t\t\t\t\t\t!astUtils.canTokensBeAdjacent(\n\t\t\t\t\t\t\t\t\ttokenBeforeOpeningParen,\n\t\t\t\t\t\t\t\t\tsourceCode.getFirstToken(param),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tyield fixer.insertTextBefore(openingParen, \" \");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// remove parens, whitespace inside parens, and possible trailing comma\n\t\t\t\t\t\t\tyield fixer.removeRange([\n\t\t\t\t\t\t\t\topeningParen.range[0],\n\t\t\t\t\t\t\t\tparam.range[0],\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\tyield fixer.removeRange([\n\t\t\t\t\t\t\t\tparam.range[1],\n\t\t\t\t\t\t\t\tclosingParen.range[1],\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to define spacing before/after arrow function's arrow.\n * @author Jxck\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"arrow-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/arrow-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce consistent spacing before and after the arrow in arrow functions\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/arrow-spacing\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tbefore: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t},\n\t\t\t\t\tafter: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\texpectedBefore: \"Missing space before =>.\",\n\t\t\tunexpectedBefore: \"Unexpected space before =>.\",\n\n\t\t\texpectedAfter: \"Missing space after =>.\",\n\t\t\tunexpectedAfter: \"Unexpected space after =>.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t// merge rules with default\n\t\tconst rule = Object.assign({}, context.options[0]);\n\n\t\trule.before = rule.before !== false;\n\t\trule.after = rule.after !== false;\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Get tokens of arrow(`=>`) and before/after arrow.\n\t\t * @param {ASTNode} node The arrow function node.\n\t\t * @returns {Object} Tokens of arrow and before/after arrow.\n\t\t */\n\t\tfunction getTokens(node) {\n\t\t\tconst arrow = sourceCode.getTokenBefore(\n\t\t\t\tnode.body,\n\t\t\t\tastUtils.isArrowToken,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tbefore: sourceCode.getTokenBefore(arrow),\n\t\t\t\tarrow,\n\t\t\t\tafter: sourceCode.getTokenAfter(arrow),\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Count spaces before/after arrow(`=>`) token.\n\t\t * @param {Object} tokens Tokens before/after arrow.\n\t\t * @returns {Object} count of space before/after arrow.\n\t\t */\n\t\tfunction countSpaces(tokens) {\n\t\t\tconst before = tokens.arrow.range[0] - tokens.before.range[1];\n\t\t\tconst after = tokens.after.range[0] - tokens.arrow.range[1];\n\n\t\t\treturn { before, after };\n\t\t}\n\n\t\t/**\n\t\t * Determines whether space(s) before after arrow(`=>`) is satisfy rule.\n\t\t * if before/after value is `true`, there should be space(s).\n\t\t * if before/after value is `false`, there should be no space.\n\t\t * @param {ASTNode} node The arrow function node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction spaces(node) {\n\t\t\tconst tokens = getTokens(node);\n\t\t\tconst countSpace = countSpaces(tokens);\n\n\t\t\tif (rule.before) {\n\t\t\t\t// should be space(s) before arrow\n\t\t\t\tif (countSpace.before === 0) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: tokens.before,\n\t\t\t\t\t\tmessageId: \"expectedBefore\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.insertTextBefore(tokens.arrow, \" \");\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// should be no space before arrow\n\t\t\t\tif (countSpace.before > 0) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: tokens.before,\n\t\t\t\t\t\tmessageId: \"unexpectedBefore\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\t\ttokens.before.range[1],\n\t\t\t\t\t\t\t\ttokens.arrow.range[0],\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (rule.after) {\n\t\t\t\t// should be space(s) after arrow\n\t\t\t\tif (countSpace.after === 0) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: tokens.after,\n\t\t\t\t\t\tmessageId: \"expectedAfter\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.insertTextAfter(tokens.arrow, \" \");\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// should be no space after arrow\n\t\t\t\tif (countSpace.after > 0) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: tokens.after,\n\t\t\t\t\t\tmessageId: \"unexpectedAfter\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\t\ttokens.arrow.range[1],\n\t\t\t\t\t\t\t\ttokens.after.range[0],\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tArrowFunctionExpression: spaces,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to check for \"block scoped\" variables by binding context\n * @author Matt DuVall <http://www.mattduvall.com>\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Definition} Definition */\n/** @typedef {import(\"eslint-scope\").Reference} Reference */\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce the use of variables within the scope they are defined\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/block-scoped-var\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\toutOfScope:\n\t\t\t\t\"'{{name}}' declared on line {{definitionLine}} column {{definitionColumn}} is used outside of binding context.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tlet stack = [];\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Makes a block scope.\n\t\t * @param {ASTNode} node A node of a scope.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction enterScope(node) {\n\t\t\tstack.push(node.range);\n\t\t}\n\n\t\t/**\n\t\t * Pops the last block scope.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction exitScope() {\n\t\t\tstack.pop();\n\t\t}\n\n\t\t/**\n\t\t * Reports a given reference.\n\t\t * @param {Reference} reference A reference to report.\n\t\t * @param {Definition} definition A definition for which to report reference.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(reference, definition) {\n\t\t\tconst identifier = reference.identifier;\n\t\t\tconst definitionPosition = definition.name.loc.start;\n\n\t\t\tcontext.report({\n\t\t\t\tnode: identifier,\n\t\t\t\tmessageId: \"outOfScope\",\n\t\t\t\tdata: {\n\t\t\t\t\tname: identifier.name,\n\t\t\t\t\tdefinitionLine: definitionPosition.line,\n\t\t\t\t\tdefinitionColumn: definitionPosition.column + 1,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Finds and reports references which are outside of valid scopes.\n\t\t * @param {ASTNode} node A node to get variables.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForVariables(node) {\n\t\t\tif (node.kind !== \"var\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Defines a predicate to check whether or not a given reference is outside of valid scope.\n\t\t\tconst scopeRange = stack.at(-1);\n\n\t\t\t/**\n\t\t\t * Check if a reference is out of scope\n\t\t\t * @param {ASTNode} reference node to examine\n\t\t\t * @returns {boolean} True is its outside the scope\n\t\t\t * @private\n\t\t\t */\n\t\t\tfunction isOutsideOfScope(reference) {\n\t\t\t\tconst idRange = reference.identifier.range;\n\n\t\t\t\treturn idRange[0] < scopeRange[0] || idRange[1] > scopeRange[1];\n\t\t\t}\n\n\t\t\t// Gets declared variables, and checks its references.\n\t\t\tconst variables = sourceCode.getDeclaredVariables(node);\n\n\t\t\tfor (let i = 0; i < variables.length; ++i) {\n\t\t\t\t// Reports.\n\t\t\t\tvariables[i].references.filter(isOutsideOfScope).forEach(ref =>\n\t\t\t\t\treport(\n\t\t\t\t\t\tref,\n\t\t\t\t\t\tvariables[i].defs.find(def => def.parent === node),\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tstack = [node.range];\n\t\t\t},\n\n\t\t\t// Manages scopes.\n\t\t\tBlockStatement: enterScope,\n\t\t\t\"BlockStatement:exit\": exitScope,\n\t\t\tForStatement: enterScope,\n\t\t\t\"ForStatement:exit\": exitScope,\n\t\t\tForInStatement: enterScope,\n\t\t\t\"ForInStatement:exit\": exitScope,\n\t\t\tForOfStatement: enterScope,\n\t\t\t\"ForOfStatement:exit\": exitScope,\n\t\t\tSwitchStatement: enterScope,\n\t\t\t\"SwitchStatement:exit\": exitScope,\n\t\t\tCatchClause: enterScope,\n\t\t\t\"CatchClause:exit\": exitScope,\n\t\t\tStaticBlock: enterScope,\n\t\t\t\"StaticBlock:exit\": exitScope,\n\n\t\t\t// Finds and reports references which are outside of valid scope.\n\t\t\tVariableDeclaration: checkForVariables,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to disallow or enforce spaces inside of single line blocks.\n * @author Toru Nagashima\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\nconst util = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"block-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/block-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow or enforce spaces inside of blocks after opening block and before closing block\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/block-spacing\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [{ enum: [\"always\", \"never\"] }],\n\n\t\tmessages: {\n\t\t\tmissing: \"Requires a space {{location}} '{{token}}'.\",\n\t\t\textra: \"Unexpected space(s) {{location}} '{{token}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst always = context.options[0] !== \"never\",\n\t\t\tmessageId = always ? \"missing\" : \"extra\",\n\t\t\tsourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Gets the open brace token from a given node.\n\t\t * @param {ASTNode} node A BlockStatement/StaticBlock/SwitchStatement node to get.\n\t\t * @returns {Token} The token of the open brace.\n\t\t */\n\t\tfunction getOpenBrace(node) {\n\t\t\tif (node.type === \"SwitchStatement\") {\n\t\t\t\tif (node.cases.length > 0) {\n\t\t\t\t\treturn sourceCode.getTokenBefore(node.cases[0]);\n\t\t\t\t}\n\t\t\t\treturn sourceCode.getLastToken(node, 1);\n\t\t\t}\n\n\t\t\tif (node.type === \"StaticBlock\") {\n\t\t\t\treturn sourceCode.getFirstToken(node, { skip: 1 }); // skip the `static` token\n\t\t\t}\n\n\t\t\t// \"BlockStatement\"\n\t\t\treturn sourceCode.getFirstToken(node);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether or not:\n\t\t *   - given tokens are on same line.\n\t\t *   - there is/isn't a space between given tokens.\n\t\t * @param {Token} left A token to check.\n\t\t * @param {Token} right The token which is next to `left`.\n\t\t * @returns {boolean}\n\t\t *    When the option is `\"always\"`, `true` if there are one or more spaces between given tokens.\n\t\t *    When the option is `\"never\"`, `true` if there are not any spaces between given tokens.\n\t\t *    If given tokens are not on same line, it's always `true`.\n\t\t */\n\t\tfunction isValid(left, right) {\n\t\t\treturn (\n\t\t\t\t!util.isTokenOnSameLine(left, right) ||\n\t\t\t\tsourceCode.isSpaceBetween(left, right) === always\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks and reports invalid spacing style inside braces.\n\t\t * @param {ASTNode} node A BlockStatement/StaticBlock/SwitchStatement node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingInsideBraces(node) {\n\t\t\t// Gets braces and the first/last token of content.\n\t\t\tconst openBrace = getOpenBrace(node);\n\t\t\tconst closeBrace = sourceCode.getLastToken(node);\n\t\t\tconst firstToken = sourceCode.getTokenAfter(openBrace, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\t\t\tconst lastToken = sourceCode.getTokenBefore(closeBrace, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\n\t\t\t// Skip if the node is invalid or empty.\n\t\t\tif (\n\t\t\t\topenBrace.type !== \"Punctuator\" ||\n\t\t\t\topenBrace.value !== \"{\" ||\n\t\t\t\tcloseBrace.type !== \"Punctuator\" ||\n\t\t\t\tcloseBrace.value !== \"}\" ||\n\t\t\t\tfirstToken === closeBrace\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Skip line comments for option never\n\t\t\tif (!always && firstToken.type === \"Line\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Check.\n\t\t\tif (!isValid(openBrace, firstToken)) {\n\t\t\t\tlet loc = openBrace.loc;\n\n\t\t\t\tif (messageId === \"extra\") {\n\t\t\t\t\tloc = {\n\t\t\t\t\t\tstart: openBrace.loc.end,\n\t\t\t\t\t\tend: firstToken.loc.start,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc,\n\t\t\t\t\tmessageId,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tlocation: \"after\",\n\t\t\t\t\t\ttoken: openBrace.value,\n\t\t\t\t\t},\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tif (always) {\n\t\t\t\t\t\t\treturn fixer.insertTextBefore(firstToken, \" \");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\topenBrace.range[1],\n\t\t\t\t\t\t\tfirstToken.range[0],\n\t\t\t\t\t\t]);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (!isValid(lastToken, closeBrace)) {\n\t\t\t\tlet loc = closeBrace.loc;\n\n\t\t\t\tif (messageId === \"extra\") {\n\t\t\t\t\tloc = {\n\t\t\t\t\t\tstart: lastToken.loc.end,\n\t\t\t\t\t\tend: closeBrace.loc.start,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc,\n\t\t\t\t\tmessageId,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tlocation: \"before\",\n\t\t\t\t\t\ttoken: closeBrace.value,\n\t\t\t\t\t},\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tif (always) {\n\t\t\t\t\t\t\treturn fixer.insertTextAfter(lastToken, \" \");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\tlastToken.range[1],\n\t\t\t\t\t\t\tcloseBrace.range[0],\n\t\t\t\t\t\t]);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tBlockStatement: checkSpacingInsideBraces,\n\t\t\tStaticBlock: checkSpacingInsideBraces,\n\t\t\tSwitchStatement: checkSpacingInsideBraces,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag block statements that do not use the one true brace style\n * @author Ian Christian Myers\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"brace-style\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/brace-style\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce consistent brace style for blocks\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/brace-style\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"1tbs\", \"stroustrup\", \"allman\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowSingleLine: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tfixable: \"whitespace\",\n\n\t\tmessages: {\n\t\t\tnextLineOpen:\n\t\t\t\t\"Opening curly brace does not appear on the same line as controlling statement.\",\n\t\t\tsameLineOpen:\n\t\t\t\t\"Opening curly brace appears on the same line as controlling statement.\",\n\t\t\tblockSameLine:\n\t\t\t\t\"Statement inside of curly braces should be on next line.\",\n\t\t\tnextLineClose:\n\t\t\t\t\"Closing curly brace does not appear on the same line as the subsequent block.\",\n\t\t\tsingleLineClose:\n\t\t\t\t\"Closing curly brace should be on the same line as opening curly brace or on the line after the previous block.\",\n\t\t\tsameLineClose:\n\t\t\t\t\"Closing curly brace appears on the same line as the subsequent block.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst style = context.options[0] || \"1tbs\",\n\t\t\tparams = context.options[1] || {},\n\t\t\tsourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Fixes a place where a newline unexpectedly appears\n\t\t * @param {Token} firstToken The token before the unexpected newline\n\t\t * @param {Token} secondToken The token after the unexpected newline\n\t\t * @returns {Function} A fixer function to remove the newlines between the tokens\n\t\t */\n\t\tfunction removeNewlineBetween(firstToken, secondToken) {\n\t\t\tconst textRange = [firstToken.range[1], secondToken.range[0]];\n\t\t\tconst textBetween = sourceCode.text.slice(\n\t\t\t\ttextRange[0],\n\t\t\t\ttextRange[1],\n\t\t\t);\n\n\t\t\t// Don't do a fix if there is a comment between the tokens\n\t\t\tif (textBetween.trim()) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn fixer => fixer.replaceTextRange(textRange, \" \");\n\t\t}\n\n\t\t/**\n\t\t * Validates a pair of curly brackets based on the user's config\n\t\t * @param {Token} openingCurly The opening curly bracket\n\t\t * @param {Token} closingCurly The closing curly bracket\n\t\t * @returns {void}\n\t\t */\n\t\tfunction validateCurlyPair(openingCurly, closingCurly) {\n\t\t\tconst tokenBeforeOpeningCurly =\n\t\t\t\tsourceCode.getTokenBefore(openingCurly);\n\t\t\tconst tokenAfterOpeningCurly =\n\t\t\t\tsourceCode.getTokenAfter(openingCurly);\n\t\t\tconst tokenBeforeClosingCurly =\n\t\t\t\tsourceCode.getTokenBefore(closingCurly);\n\t\t\tconst singleLineException =\n\t\t\t\tparams.allowSingleLine &&\n\t\t\t\tastUtils.isTokenOnSameLine(openingCurly, closingCurly);\n\n\t\t\tif (\n\t\t\t\tstyle !== \"allman\" &&\n\t\t\t\t!astUtils.isTokenOnSameLine(\n\t\t\t\t\ttokenBeforeOpeningCurly,\n\t\t\t\t\topeningCurly,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: openingCurly,\n\t\t\t\t\tmessageId: \"nextLineOpen\",\n\t\t\t\t\tfix: removeNewlineBetween(\n\t\t\t\t\t\ttokenBeforeOpeningCurly,\n\t\t\t\t\t\topeningCurly,\n\t\t\t\t\t),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tstyle === \"allman\" &&\n\t\t\t\tastUtils.isTokenOnSameLine(\n\t\t\t\t\ttokenBeforeOpeningCurly,\n\t\t\t\t\topeningCurly,\n\t\t\t\t) &&\n\t\t\t\t!singleLineException\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: openingCurly,\n\t\t\t\t\tmessageId: \"sameLineOpen\",\n\t\t\t\t\tfix: fixer => fixer.insertTextBefore(openingCurly, \"\\n\"),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tastUtils.isTokenOnSameLine(\n\t\t\t\t\topeningCurly,\n\t\t\t\t\ttokenAfterOpeningCurly,\n\t\t\t\t) &&\n\t\t\t\ttokenAfterOpeningCurly !== closingCurly &&\n\t\t\t\t!singleLineException\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: openingCurly,\n\t\t\t\t\tmessageId: \"blockSameLine\",\n\t\t\t\t\tfix: fixer => fixer.insertTextAfter(openingCurly, \"\\n\"),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttokenBeforeClosingCurly !== openingCurly &&\n\t\t\t\t!singleLineException &&\n\t\t\t\tastUtils.isTokenOnSameLine(\n\t\t\t\t\ttokenBeforeClosingCurly,\n\t\t\t\t\tclosingCurly,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: closingCurly,\n\t\t\t\t\tmessageId: \"singleLineClose\",\n\t\t\t\t\tfix: fixer => fixer.insertTextBefore(closingCurly, \"\\n\"),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Validates the location of a token that appears before a keyword (e.g. a newline before `else`)\n\t\t * @param {Token} curlyToken The closing curly token. This is assumed to precede a keyword token (such as `else` or `finally`).\n\t\t * @returns {void}\n\t\t */\n\t\tfunction validateCurlyBeforeKeyword(curlyToken) {\n\t\t\tconst keywordToken = sourceCode.getTokenAfter(curlyToken);\n\n\t\t\tif (\n\t\t\t\tstyle === \"1tbs\" &&\n\t\t\t\t!astUtils.isTokenOnSameLine(curlyToken, keywordToken)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: curlyToken,\n\t\t\t\t\tmessageId: \"nextLineClose\",\n\t\t\t\t\tfix: removeNewlineBetween(curlyToken, keywordToken),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tstyle !== \"1tbs\" &&\n\t\t\t\tastUtils.isTokenOnSameLine(curlyToken, keywordToken)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: curlyToken,\n\t\t\t\t\tmessageId: \"sameLineClose\",\n\t\t\t\t\tfix: fixer => fixer.insertTextAfter(curlyToken, \"\\n\"),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tBlockStatement(node) {\n\t\t\t\tif (!astUtils.STATEMENT_LIST_PARENTS.has(node.parent.type)) {\n\t\t\t\t\tvalidateCurlyPair(\n\t\t\t\t\t\tsourceCode.getFirstToken(node),\n\t\t\t\t\t\tsourceCode.getLastToken(node),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t\tStaticBlock(node) {\n\t\t\t\tvalidateCurlyPair(\n\t\t\t\t\tsourceCode.getFirstToken(node, { skip: 1 }), // skip the `static` token\n\t\t\t\t\tsourceCode.getLastToken(node),\n\t\t\t\t);\n\t\t\t},\n\t\t\tClassBody(node) {\n\t\t\t\tvalidateCurlyPair(\n\t\t\t\t\tsourceCode.getFirstToken(node),\n\t\t\t\t\tsourceCode.getLastToken(node),\n\t\t\t\t);\n\t\t\t},\n\t\t\tSwitchStatement(node) {\n\t\t\t\tconst closingCurly = sourceCode.getLastToken(node);\n\t\t\t\tconst openingCurly = sourceCode.getTokenBefore(\n\t\t\t\t\tnode.cases.length ? node.cases[0] : closingCurly,\n\t\t\t\t);\n\n\t\t\t\tvalidateCurlyPair(openingCurly, closingCurly);\n\t\t\t},\n\t\t\tIfStatement(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.consequent.type === \"BlockStatement\" &&\n\t\t\t\t\tnode.alternate\n\t\t\t\t) {\n\t\t\t\t\t// Handle the keyword after the `if` block (before `else`)\n\t\t\t\t\tvalidateCurlyBeforeKeyword(\n\t\t\t\t\t\tsourceCode.getLastToken(node.consequent),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t\tTryStatement(node) {\n\t\t\t\t// Handle the keyword after the `try` block (before `catch` or `finally`)\n\t\t\t\tvalidateCurlyBeforeKeyword(sourceCode.getLastToken(node.block));\n\n\t\t\t\tif (node.handler && node.finalizer) {\n\t\t\t\t\t// Handle the keyword after the `catch` block (before `finally`)\n\t\t\t\t\tvalidateCurlyBeforeKeyword(\n\t\t\t\t\t\tsourceCode.getLastToken(node.handler.body),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Enforce return after a callback.\n * @author Jamund Ferguson\n * @deprecated in ESLint v7.0.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Node.js rules were moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules\",\n\t\t\tdeprecatedSince: \"7.0.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"eslint-plugin-n now maintains deprecated Node.js-related rules.\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"eslint-plugin-n\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"callback-return\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules/callback-return.md\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require `return` statements after callbacks\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/callback-return\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { type: \"string\" },\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tmissingReturn: \"Expected return with your callback function.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst callbacks = context.options[0] || [\"callback\", \"cb\", \"next\"],\n\t\t\tsourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Find the closest parent matching a list of types.\n\t\t * @param {ASTNode} node The node whose parents we are searching\n\t\t * @param {Array} types The node types to match\n\t\t * @returns {ASTNode} The matched node or undefined.\n\t\t */\n\t\tfunction findClosestParentOfType(node, types) {\n\t\t\tif (!node.parent) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (!types.includes(node.parent.type)) {\n\t\t\t\treturn findClosestParentOfType(node.parent, types);\n\t\t\t}\n\t\t\treturn node.parent;\n\t\t}\n\n\t\t/**\n\t\t * Check to see if a node contains only identifiers\n\t\t * @param {ASTNode} node The node to check\n\t\t * @returns {boolean} Whether or not the node contains only identifiers\n\t\t */\n\t\tfunction containsOnlyIdentifiers(node) {\n\t\t\tif (node.type === \"Identifier\") {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (node.type === \"MemberExpression\") {\n\t\t\t\tif (node.object.type === \"Identifier\") {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (node.object.type === \"MemberExpression\") {\n\t\t\t\t\treturn containsOnlyIdentifiers(node.object);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Check to see if a CallExpression is in our callback list.\n\t\t * @param {ASTNode} node The node to check against our callback names list.\n\t\t * @returns {boolean} Whether or not this function matches our callback name.\n\t\t */\n\t\tfunction isCallback(node) {\n\t\t\treturn (\n\t\t\t\tcontainsOnlyIdentifiers(node.callee) &&\n\t\t\t\tcallbacks.includes(sourceCode.getText(node.callee))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines whether or not the callback is part of a callback expression.\n\t\t * @param {ASTNode} node The callback node\n\t\t * @param {ASTNode} parentNode The expression node\n\t\t * @returns {boolean} Whether or not this is part of a callback expression\n\t\t */\n\t\tfunction isCallbackExpression(node, parentNode) {\n\t\t\t// ensure the parent node exists and is an expression\n\t\t\tif (!parentNode || parentNode.type !== \"ExpressionStatement\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// cb()\n\t\t\tif (parentNode.expression === node) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// special case for cb && cb() and similar\n\t\t\tif (\n\t\t\t\tparentNode.expression.type === \"BinaryExpression\" ||\n\t\t\t\tparentNode.expression.type === \"LogicalExpression\"\n\t\t\t) {\n\t\t\t\tif (parentNode.expression.right === node) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tCallExpression(node) {\n\t\t\t\t// if we're not a callback we can return\n\t\t\t\tif (!isCallback(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// find the closest block, return or loop\n\t\t\t\tconst closestBlock =\n\t\t\t\t\tfindClosestParentOfType(node, [\n\t\t\t\t\t\t\"BlockStatement\",\n\t\t\t\t\t\t\"ReturnStatement\",\n\t\t\t\t\t\t\"ArrowFunctionExpression\",\n\t\t\t\t\t]) || {};\n\n\t\t\t\t// if our parent is a return we know we're ok\n\t\t\t\tif (closestBlock.type === \"ReturnStatement\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// arrow functions don't always have blocks and implicitly return\n\t\t\t\tif (closestBlock.type === \"ArrowFunctionExpression\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// block statements are part of functions and most if statements\n\t\t\t\tif (closestBlock.type === \"BlockStatement\") {\n\t\t\t\t\t// find the last item in the block\n\t\t\t\t\tconst lastItem = closestBlock.body.at(-1);\n\n\t\t\t\t\t// if the callback is the last thing in a block that might be ok\n\t\t\t\t\tif (isCallbackExpression(node, lastItem)) {\n\t\t\t\t\t\tconst parentType = closestBlock.parent.type;\n\n\t\t\t\t\t\t// but only if the block is part of a function\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tparentType === \"FunctionExpression\" ||\n\t\t\t\t\t\t\tparentType === \"FunctionDeclaration\" ||\n\t\t\t\t\t\t\tparentType === \"ArrowFunctionExpression\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ending a block with a return is also ok\n\t\t\t\t\tif (lastItem.type === \"ReturnStatement\") {\n\t\t\t\t\t\t// but only if the callback is immediately before\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tisCallbackExpression(node, closestBlock.body.at(-2))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// as long as you're the child of a function at this point you should be asked to return\n\t\t\t\tif (\n\t\t\t\t\tfindClosestParentOfType(node, [\n\t\t\t\t\t\t\"FunctionDeclaration\",\n\t\t\t\t\t\t\"FunctionExpression\",\n\t\t\t\t\t\t\"ArrowFunctionExpression\",\n\t\t\t\t\t])\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({ node, messageId: \"missingReturn\" });\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag non-camelcased identifiers\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallow: [],\n\t\t\t\tignoreDestructuring: false,\n\t\t\t\tignoreGlobals: false,\n\t\t\t\tignoreImports: false,\n\t\t\t\tproperties: \"always\",\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce camelcase naming convention\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/camelcase\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tignoreDestructuring: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tignoreImports: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tignoreGlobals: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t\t\t},\n\t\t\t\t\tallow: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tminItems: 0,\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tnotCamelCase: \"Identifier '{{name}}' is not in camel case.\",\n\t\t\tnotCamelCasePrivate: \"#{{name}} is not in camel case.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [\n\t\t\t{\n\t\t\t\tallow,\n\t\t\t\tignoreDestructuring,\n\t\t\t\tignoreGlobals,\n\t\t\t\tignoreImports,\n\t\t\t\tproperties,\n\t\t\t},\n\t\t] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t// contains reported nodes to avoid reporting twice on destructuring with shorthand notation\n\t\tconst reported = new Set();\n\n\t\t/**\n\t\t * Checks if a string contains an underscore and isn't all upper-case\n\t\t * @param {string} name The string to check.\n\t\t * @returns {boolean} if the string is underscored\n\t\t * @private\n\t\t */\n\t\tfunction isUnderscored(name) {\n\t\t\tconst nameBody = name.replace(/^_+|_+$/gu, \"\");\n\n\t\t\t// if there's an underscore, it might be A_CONSTANT, which is okay\n\t\t\treturn (\n\t\t\t\tnameBody.includes(\"_\") && nameBody !== nameBody.toUpperCase()\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if a string match the ignore list\n\t\t * @param {string} name The string to check.\n\t\t * @returns {boolean} if the string is ignored\n\t\t * @private\n\t\t */\n\t\tfunction isAllowed(name) {\n\t\t\treturn allow.some(\n\t\t\t\tentry => name === entry || name.match(new RegExp(entry, \"u\")),\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if a given name is good or not.\n\t\t * @param {string} name The name to check.\n\t\t * @returns {boolean} `true` if the name is good.\n\t\t * @private\n\t\t */\n\t\tfunction isGoodName(name) {\n\t\t\treturn !isUnderscored(name) || isAllowed(name);\n\t\t}\n\n\t\t/**\n\t\t * Checks if a given identifier reference or member expression is an assignment\n\t\t * target.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} `true` if the node is an assignment target.\n\t\t */\n\t\tfunction isAssignmentTarget(node) {\n\t\t\tconst parent = node.parent;\n\n\t\t\tswitch (parent.type) {\n\t\t\t\tcase \"AssignmentExpression\":\n\t\t\t\tcase \"AssignmentPattern\":\n\t\t\t\t\treturn parent.left === node;\n\n\t\t\t\tcase \"Property\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\tparent.parent.type === \"ObjectPattern\" &&\n\t\t\t\t\t\tparent.value === node\n\t\t\t\t\t);\n\t\t\t\tcase \"ArrayPattern\":\n\t\t\t\tcase \"RestElement\":\n\t\t\t\t\treturn true;\n\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks if a given binding identifier uses the original name as-is.\n\t\t * - If it's in object destructuring or object expression, the original name is its property name.\n\t\t * - If it's in import declaration, the original name is its exported name.\n\t\t * @param {ASTNode} node The `Identifier` node to check.\n\t\t * @returns {boolean} `true` if the identifier uses the original name as-is.\n\t\t */\n\t\tfunction equalsToOriginalName(node) {\n\t\t\tconst localName = node.name;\n\t\t\tconst valueNode =\n\t\t\t\tnode.parent.type === \"AssignmentPattern\" ? node.parent : node;\n\t\t\tconst parent = valueNode.parent;\n\n\t\t\tswitch (parent.type) {\n\t\t\t\tcase \"Property\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t(parent.parent.type === \"ObjectPattern\" ||\n\t\t\t\t\t\t\tparent.parent.type === \"ObjectExpression\") &&\n\t\t\t\t\t\tparent.value === valueNode &&\n\t\t\t\t\t\t!parent.computed &&\n\t\t\t\t\t\tparent.key.type === \"Identifier\" &&\n\t\t\t\t\t\tparent.key.name === localName\n\t\t\t\t\t);\n\n\t\t\t\tcase \"ImportSpecifier\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\tparent.local === node &&\n\t\t\t\t\t\tastUtils.getModuleExportName(parent.imported) ===\n\t\t\t\t\t\t\tlocalName\n\t\t\t\t\t);\n\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports an AST node as a rule violation.\n\t\t * @param {ASTNode} node The node to report.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction report(node) {\n\t\t\tif (reported.has(node.range[0])) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treported.add(node.range[0]);\n\n\t\t\t// Report it.\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId:\n\t\t\t\t\tnode.type === \"PrivateIdentifier\"\n\t\t\t\t\t\t? \"notCamelCasePrivate\"\n\t\t\t\t\t\t: \"notCamelCase\",\n\t\t\t\tdata: { name: node.name },\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports an identifier reference or a binding identifier.\n\t\t * @param {ASTNode} node The `Identifier` node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportReferenceId(node) {\n\t\t\t/*\n\t\t\t * For backward compatibility, if it's in callings then ignore it.\n\t\t\t * Not sure why it is.\n\t\t\t */\n\t\t\tif (\n\t\t\t\tnode.parent.type === \"CallExpression\" ||\n\t\t\t\tnode.parent.type === \"NewExpression\"\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * For backward compatibility, if it's a default value of\n\t\t\t * destructuring/parameters then ignore it.\n\t\t\t * Not sure why it is.\n\t\t\t */\n\t\t\tif (\n\t\t\t\tnode.parent.type === \"AssignmentPattern\" &&\n\t\t\t\tnode.parent.right === node\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * The `ignoreDestructuring` flag skips the identifiers that uses\n\t\t\t * the property name as-is.\n\t\t\t */\n\t\t\tif (ignoreDestructuring && equalsToOriginalName(node)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Import attribute keys are always ignored\n\t\t\t */\n\t\t\tif (astUtils.isImportAttributeKey(node)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treport(node);\n\t\t}\n\n\t\treturn {\n\t\t\t// Report camelcase of global variable references ------------------\n\t\t\tProgram(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\n\t\t\t\tif (!ignoreGlobals) {\n\t\t\t\t\t// Defined globals in config files or directive comments.\n\t\t\t\t\tfor (const variable of scope.variables) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tvariable.identifiers.length > 0 ||\n\t\t\t\t\t\t\tisGoodName(variable.name)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const reference of variable.references) {\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * For backward compatibility, this rule reports read-only\n\t\t\t\t\t\t\t * references as well.\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\treportReferenceId(reference.identifier);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Undefined globals.\n\t\t\t\tfor (const reference of scope.through) {\n\t\t\t\t\tconst id = reference.identifier;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tisGoodName(id.name) ||\n\t\t\t\t\t\tastUtils.isImportAttributeKey(id)\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * For backward compatibility, this rule reports read-only\n\t\t\t\t\t * references as well.\n\t\t\t\t\t */\n\t\t\t\t\treportReferenceId(id);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Report camelcase of declared variables --------------------------\n\t\t\t[[\n\t\t\t\t\"VariableDeclaration\",\n\t\t\t\t\"FunctionDeclaration\",\n\t\t\t\t\"FunctionExpression\",\n\t\t\t\t\"ArrowFunctionExpression\",\n\t\t\t\t\"ClassDeclaration\",\n\t\t\t\t\"ClassExpression\",\n\t\t\t\t\"CatchClause\",\n\t\t\t]](node) {\n\t\t\t\tfor (const variable of sourceCode.getDeclaredVariables(node)) {\n\t\t\t\t\tif (isGoodName(variable.name)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst id = variable.identifiers[0];\n\n\t\t\t\t\t// Report declaration.\n\t\t\t\t\tif (!(ignoreDestructuring && equalsToOriginalName(id))) {\n\t\t\t\t\t\treport(id);\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * For backward compatibility, report references as well.\n\t\t\t\t\t * It looks unnecessary because declarations are reported.\n\t\t\t\t\t */\n\t\t\t\t\tfor (const reference of variable.references) {\n\t\t\t\t\t\tif (reference.init) {\n\t\t\t\t\t\t\tcontinue; // Skip the write references of initializers.\n\t\t\t\t\t\t}\n\t\t\t\t\t\treportReferenceId(reference.identifier);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Report camelcase in properties ----------------------------------\n\t\t\t[[\n\t\t\t\t\"ObjectExpression > Property[computed!=true] > Identifier.key\",\n\t\t\t\t\"MethodDefinition[computed!=true] > Identifier.key\",\n\t\t\t\t\"PropertyDefinition[computed!=true] > Identifier.key\",\n\t\t\t\t\"MethodDefinition > PrivateIdentifier.key\",\n\t\t\t\t\"PropertyDefinition > PrivateIdentifier.key\",\n\t\t\t]](node) {\n\t\t\t\tif (\n\t\t\t\t\tproperties === \"never\" ||\n\t\t\t\t\tastUtils.isImportAttributeKey(node) ||\n\t\t\t\t\tisGoodName(node.name)\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treport(node);\n\t\t\t},\n\t\t\t\"MemberExpression[computed!=true] > Identifier.property\"(node) {\n\t\t\t\tif (\n\t\t\t\t\tproperties === \"never\" ||\n\t\t\t\t\t!isAssignmentTarget(node.parent) || // \u2190 ignore read-only references.\n\t\t\t\t\tisGoodName(node.name)\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treport(node);\n\t\t\t},\n\n\t\t\t// Report camelcase in import --------------------------------------\n\t\t\tImportDeclaration(node) {\n\t\t\t\tfor (const variable of sourceCode.getDeclaredVariables(node)) {\n\t\t\t\t\tif (isGoodName(variable.name)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst id = variable.identifiers[0];\n\n\t\t\t\t\t// Report declaration.\n\t\t\t\t\tif (!(ignoreImports && equalsToOriginalName(id))) {\n\t\t\t\t\t\treport(id);\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * For backward compatibility, report references as well.\n\t\t\t\t\t * It looks unnecessary because declarations are reported.\n\t\t\t\t\t */\n\t\t\t\t\tfor (const reference of variable.references) {\n\t\t\t\t\t\treportReferenceId(reference.identifier);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Report camelcase in re-export -----------------------------------\n\t\t\t[[\n\t\t\t\t\"ExportAllDeclaration > Identifier.exported\",\n\t\t\t\t\"ExportSpecifier > Identifier.exported\",\n\t\t\t]](node) {\n\t\t\t\tif (isGoodName(node.name)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treport(node);\n\t\t\t},\n\n\t\t\t// Report camelcase in labels --------------------------------------\n\t\t\t[[\n\t\t\t\t\"LabeledStatement > Identifier.label\",\n\n\t\t\t\t/*\n\t\t\t\t * For backward compatibility, report references as well.\n\t\t\t\t * It looks unnecessary because declarations are reported.\n\t\t\t\t */\n\t\t\t\t\"BreakStatement > Identifier.label\",\n\t\t\t\t\"ContinueStatement > Identifier.label\",\n\t\t\t]](node) {\n\t\t\t\tif (isGoodName(node.name)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treport(node);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview enforce or disallow capitalization of the first letter of a comment\n * @author Kevin Partington\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst DEFAULT_IGNORE_PATTERN = astUtils.COMMENTS_IGNORE_PATTERN,\n\tWHITESPACE = /\\s/gu,\n\tMAYBE_URL = /^\\s*[^:/?#\\s]+:\\/\\/[^?#]/u, // TODO: Combine w/ max-len pattern?\n\tLETTER_PATTERN = /\\p{L}/u;\n\n/*\n * Base schema body for defining the basic capitalization rule, ignorePattern,\n * and ignoreInlineComments values.\n * This can be used in a few different ways in the actual schema.\n */\nconst SCHEMA_BODY = {\n\ttype: \"object\",\n\tproperties: {\n\t\tignorePattern: {\n\t\t\ttype: \"string\",\n\t\t},\n\t\tignoreInlineComments: {\n\t\t\ttype: \"boolean\",\n\t\t},\n\t\tignoreConsecutiveComments: {\n\t\t\ttype: \"boolean\",\n\t\t},\n\t},\n\tadditionalProperties: false,\n};\nconst DEFAULTS = {\n\tignorePattern: \"\",\n\tignoreInlineComments: false,\n\tignoreConsecutiveComments: false,\n};\n\n/**\n * Get normalized options for either block or line comments from the given\n * user-provided options.\n * - If the user-provided options is just a string, returns a normalized\n *   set of options using default values for all other options.\n * - If the user-provided options is an object, then a normalized option\n *   set is returned. Options specified in overrides will take priority\n *   over options specified in the main options object, which will in\n *   turn take priority over the rule's defaults.\n * @param {Object|string} rawOptions The user-provided options.\n * @param {string} which Either \"line\" or \"block\".\n * @returns {Object} The normalized options.\n */\nfunction getNormalizedOptions(rawOptions, which) {\n\treturn Object.assign({}, DEFAULTS, rawOptions[which] || rawOptions);\n}\n\n/**\n * Get normalized options for block and line comments.\n * @param {Object|string} rawOptions The user-provided options.\n * @returns {Object} An object with \"Line\" and \"Block\" keys and corresponding\n * normalized options objects.\n */\nfunction getAllNormalizedOptions(rawOptions = {}) {\n\treturn {\n\t\tLine: getNormalizedOptions(rawOptions, \"line\"),\n\t\tBlock: getNormalizedOptions(rawOptions, \"block\"),\n\t};\n}\n\n/**\n * Creates a regular expression for each ignorePattern defined in the rule\n * options.\n *\n * This is done in order to avoid invoking the RegExp constructor repeatedly.\n * @param {Object} normalizedOptions The normalized rule options.\n * @returns {void}\n */\nfunction createRegExpForIgnorePatterns(normalizedOptions) {\n\tObject.keys(normalizedOptions).forEach(key => {\n\t\tconst ignorePatternStr = normalizedOptions[key].ignorePattern;\n\n\t\tif (ignorePatternStr) {\n\t\t\tconst regExp = RegExp(`^\\\\s*(?:${ignorePatternStr})`, \"u\");\n\n\t\t\tnormalizedOptions[key].ignorePatternRegExp = regExp;\n\t\t}\n\t});\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce or disallow capitalization of the first letter of a comment\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/capitalized-comments\",\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\tschema: [\n\t\t\t{ enum: [\"always\", \"never\"] },\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\tSCHEMA_BODY,\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tline: SCHEMA_BODY,\n\t\t\t\t\t\t\tblock: SCHEMA_BODY,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [\"always\"],\n\n\t\tmessages: {\n\t\t\tunexpectedLowercaseComment:\n\t\t\t\t\"Comments should not begin with a lowercase character.\",\n\t\t\tunexpectedUppercaseComment:\n\t\t\t\t\"Comments should not begin with an uppercase character.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst capitalize = context.options[0],\n\t\t\tnormalizedOptions = getAllNormalizedOptions(context.options[1]),\n\t\t\tsourceCode = context.sourceCode;\n\n\t\tcreateRegExpForIgnorePatterns(normalizedOptions);\n\n\t\t//----------------------------------------------------------------------\n\t\t// Helpers\n\t\t//----------------------------------------------------------------------\n\n\t\t/**\n\t\t * Checks whether a comment is an inline comment.\n\t\t *\n\t\t * For the purpose of this rule, a comment is inline if:\n\t\t * 1. The comment is preceded by a token on the same line; and\n\t\t * 2. The command is followed by a token on the same line.\n\t\t *\n\t\t * Note that the comment itself need not be single-line!\n\t\t *\n\t\t * Also, it follows from this definition that only block comments can\n\t\t * be considered as possibly inline. This is because line comments\n\t\t * would consume any following tokens on the same line as the comment.\n\t\t * @param {ASTNode} comment The comment node to check.\n\t\t * @returns {boolean} True if the comment is an inline comment, false\n\t\t * otherwise.\n\t\t */\n\t\tfunction isInlineComment(comment) {\n\t\t\tconst previousToken = sourceCode.getTokenBefore(comment, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t}),\n\t\t\t\tnextToken = sourceCode.getTokenAfter(comment, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t});\n\n\t\t\treturn Boolean(\n\t\t\t\tpreviousToken &&\n\t\t\t\tnextToken &&\n\t\t\t\tcomment.loc.start.line === previousToken.loc.end.line &&\n\t\t\t\tcomment.loc.end.line === nextToken.loc.start.line,\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determine if a comment follows another comment.\n\t\t * @param {ASTNode} comment The comment to check.\n\t\t * @returns {boolean} True if the comment follows a valid comment.\n\t\t */\n\t\tfunction isConsecutiveComment(comment) {\n\t\t\tconst previousTokenOrComment = sourceCode.getTokenBefore(comment, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\n\t\t\treturn Boolean(\n\t\t\t\tpreviousTokenOrComment &&\n\t\t\t\t[\"Block\", \"Line\"].includes(previousTokenOrComment.type),\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check a comment to determine if it is valid for this rule.\n\t\t * @param {ASTNode} comment The comment node to process.\n\t\t * @param {Object} options The options for checking this comment.\n\t\t * @returns {boolean} True if the comment is valid, false otherwise.\n\t\t */\n\t\tfunction isCommentValid(comment, options) {\n\t\t\t// 1. Check for default ignore pattern.\n\t\t\tif (DEFAULT_IGNORE_PATTERN.test(comment.value)) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// 2. Check for custom ignore pattern.\n\t\t\tconst commentWithoutAsterisks = comment.value.replace(/\\*/gu, \"\");\n\n\t\t\tif (\n\t\t\t\toptions.ignorePatternRegExp &&\n\t\t\t\toptions.ignorePatternRegExp.test(commentWithoutAsterisks)\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// 3. Check for inline comments.\n\t\t\tif (options.ignoreInlineComments && isInlineComment(comment)) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// 4. Is this a consecutive comment (and are we tolerating those)?\n\t\t\tif (\n\t\t\t\toptions.ignoreConsecutiveComments &&\n\t\t\t\tisConsecutiveComment(comment)\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// 5. Does the comment start with a possible URL?\n\t\t\tif (MAYBE_URL.test(commentWithoutAsterisks)) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// 6. Is the initial word character a letter?\n\t\t\tconst commentWordCharsOnly = commentWithoutAsterisks.replace(\n\t\t\t\tWHITESPACE,\n\t\t\t\t\"\",\n\t\t\t);\n\n\t\t\tif (commentWordCharsOnly.length === 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Get the first Unicode character (1 or 2 code units).\n\t\t\tconst [firstWordChar] = commentWordCharsOnly;\n\n\t\t\tif (!LETTER_PATTERN.test(firstWordChar)) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// 7. Check the case of the initial word character.\n\t\t\tconst isUppercase =\n\t\t\t\t\tfirstWordChar !== firstWordChar.toLocaleLowerCase(),\n\t\t\t\tisLowercase =\n\t\t\t\t\tfirstWordChar !== firstWordChar.toLocaleUpperCase();\n\n\t\t\tif (capitalize === \"always\" && isLowercase) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (capitalize === \"never\" && isUppercase) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * Process a comment to determine if it needs to be reported.\n\t\t * @param {ASTNode} comment The comment node to process.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction processComment(comment) {\n\t\t\tconst options = normalizedOptions[comment.type],\n\t\t\t\tcommentValid = isCommentValid(comment, options);\n\n\t\t\tif (!commentValid) {\n\t\t\t\tconst messageId =\n\t\t\t\t\tcapitalize === \"always\"\n\t\t\t\t\t\t? \"unexpectedLowercaseComment\"\n\t\t\t\t\t\t: \"unexpectedUppercaseComment\";\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: null, // Intentionally using loc instead\n\t\t\t\t\tloc: comment.loc,\n\t\t\t\t\tmessageId,\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tconst match = comment.value.match(LETTER_PATTERN);\n\t\t\t\t\t\tconst char = match[0];\n\n\t\t\t\t\t\t// Offset match.index by 2 to account for the first 2 characters that start the comment (// or /*)\n\t\t\t\t\t\tconst charIndex = comment.range[0] + match.index + 2;\n\n\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t[charIndex, charIndex + char.length],\n\t\t\t\t\t\t\tcapitalize === \"always\"\n\t\t\t\t\t\t\t\t? char.toLocaleUpperCase()\n\t\t\t\t\t\t\t\t: char.toLocaleLowerCase(),\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//----------------------------------------------------------------------\n\t\t// Public\n\t\t//----------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram() {\n\t\t\t\tconst comments = sourceCode.getAllComments();\n\n\t\t\t\tcomments\n\t\t\t\t\t.filter(token => token.type !== \"Shebang\")\n\t\t\t\t\t.forEach(processComment);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce that all class methods use 'this'.\n * @author Patrick Williams\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tenforceForClassFields: true,\n\t\t\t\texceptMethods: [],\n\t\t\t\tignoreOverrideMethods: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce that class methods utilize `this`\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/class-methods-use-this\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\texceptMethods: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tenforceForClassFields: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tignoreOverrideMethods: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tignoreClassesWithImplements: {\n\t\t\t\t\t\tenum: [\"all\", \"public-fields\"],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tmissingThis: \"Expected 'this' to be used by class {{name}}.\",\n\t\t},\n\t},\n\tcreate(context) {\n\t\tconst [options] = context.options;\n\t\tconst {\n\t\t\tenforceForClassFields,\n\t\t\tignoreOverrideMethods,\n\t\t\tignoreClassesWithImplements,\n\t\t} = options;\n\t\tconst exceptMethods = new Set(options.exceptMethods);\n\n\t\tconst stack = [];\n\n\t\t/**\n\t\t * Push `this` used flag initialized with `false` onto the stack.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction pushContext() {\n\t\t\tstack.push(false);\n\t\t}\n\n\t\t/**\n\t\t * Pop `this` used flag from the stack.\n\t\t * @returns {boolean | undefined} `this` used flag\n\t\t */\n\t\tfunction popContext() {\n\t\t\treturn stack.pop();\n\t\t}\n\n\t\t/**\n\t\t * Initializes the current context to false and pushes it onto the stack.\n\t\t * These booleans represent whether 'this' has been used in the context.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction enterFunction() {\n\t\t\tpushContext();\n\t\t}\n\n\t\t/**\n\t\t * Check if the node is an instance method\n\t\t * @param {ASTNode} node node to check\n\t\t * @returns {boolean} True if its an instance method\n\t\t * @private\n\t\t */\n\t\tfunction isInstanceMethod(node) {\n\t\t\tswitch (node.type) {\n\t\t\t\tcase \"MethodDefinition\":\n\t\t\t\t\treturn !node.static && node.kind !== \"constructor\";\n\t\t\t\tcase \"AccessorProperty\":\n\t\t\t\tcase \"PropertyDefinition\":\n\t\t\t\t\treturn !node.static && enforceForClassFields;\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check if the node's parent class implements any interfaces\n\t\t * @param {ASTNode} node node to check\n\t\t * @returns {boolean} True if parent class implements interfaces\n\t\t * @private\n\t\t */\n\t\tfunction hasImplements(node) {\n\t\t\tconst classNode = node.parent.parent;\n\t\t\treturn (\n\t\t\t\tclassNode?.type === \"ClassDeclaration\" &&\n\t\t\t\tclassNode.implements?.length > 0\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check if the node is an instance method not excluded by config\n\t\t * @param {ASTNode} node node to check\n\t\t * @returns {boolean} True if it is an instance method, and not excluded by config\n\t\t * @private\n\t\t */\n\t\tfunction isIncludedInstanceMethod(node) {\n\t\t\tif (isInstanceMethod(node)) {\n\t\t\t\tif (node.computed) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif (ignoreOverrideMethods && node.override) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (ignoreClassesWithImplements) {\n\t\t\t\t\tconst implementsInterfaces = hasImplements(node);\n\t\t\t\t\tif (implementsInterfaces) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tignoreClassesWithImplements === \"all\" ||\n\t\t\t\t\t\t\t(ignoreClassesWithImplements === \"public-fields\" &&\n\t\t\t\t\t\t\t\tnode.key.type !== \"PrivateIdentifier\" &&\n\t\t\t\t\t\t\t\t(!node.accessibility ||\n\t\t\t\t\t\t\t\t\tnode.accessibility === \"public\"))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst hashIfNeeded =\n\t\t\t\t\tnode.key.type === \"PrivateIdentifier\" ? \"#\" : \"\";\n\t\t\t\tconst name =\n\t\t\t\t\tnode.key.type === \"Literal\"\n\t\t\t\t\t\t? astUtils.getStaticStringValue(node.key)\n\t\t\t\t\t\t: node.key.name || \"\";\n\n\t\t\t\treturn !exceptMethods.has(hashIfNeeded + name);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Checks if we are leaving a function that is a method, and reports if 'this' has not been used.\n\t\t * Static methods and the constructor are exempt.\n\t\t * Then pops the context off the stack.\n\t\t * @param {ASTNode} node A function node that was entered.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction exitFunction(node) {\n\t\t\tconst methodUsesThis = popContext();\n\n\t\t\tif (isIncludedInstanceMethod(node.parent) && !methodUsesThis) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: astUtils.getFunctionHeadLoc(node, context.sourceCode),\n\t\t\t\t\tmessageId: \"missingThis\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tname: astUtils.getFunctionNameWithKind(node),\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Mark the current context as having used 'this'.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction markThisUsed() {\n\t\t\tif (stack.length) {\n\t\t\t\tstack[stack.length - 1] = true;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tFunctionDeclaration: enterFunction,\n\t\t\t\"FunctionDeclaration:exit\": exitFunction,\n\t\t\tFunctionExpression: enterFunction,\n\t\t\t\"FunctionExpression:exit\": exitFunction,\n\n\t\t\t/*\n\t\t\t * Class field value are implicit functions.\n\t\t\t */\n\t\t\t\"AccessorProperty > *.key:exit\": pushContext,\n\t\t\t\"AccessorProperty:exit\": popContext,\n\t\t\t\"PropertyDefinition > *.key:exit\": pushContext,\n\t\t\t\"PropertyDefinition:exit\": popContext,\n\n\t\t\t/*\n\t\t\t * Class static blocks are implicit functions. They aren't required to use `this`,\n\t\t\t * but we have to push context so that it captures any use of `this` in the static block\n\t\t\t * separately from enclosing contexts, because static blocks have their own `this` and it\n\t\t\t * shouldn't count as used `this` in enclosing contexts.\n\t\t\t */\n\t\t\tStaticBlock: pushContext,\n\t\t\t\"StaticBlock:exit\": popContext,\n\n\t\t\tThisExpression: markThisUsed,\n\t\t\tSuper: markThisUsed,\n\t\t\t...(enforceForClassFields && {\n\t\t\t\t\"AccessorProperty > ArrowFunctionExpression.value\":\n\t\t\t\t\tenterFunction,\n\t\t\t\t\"AccessorProperty > ArrowFunctionExpression.value:exit\":\n\t\t\t\t\texitFunction,\n\t\t\t\t\"PropertyDefinition > ArrowFunctionExpression.value\":\n\t\t\t\t\tenterFunction,\n\t\t\t\t\"PropertyDefinition > ArrowFunctionExpression.value:exit\":\n\t\t\t\t\texitFunction,\n\t\t\t}),\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to forbid or enforce dangling commas.\n * @author Ian Christian Myers\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst DEFAULT_OPTIONS = Object.freeze({\n\tarrays: \"never\",\n\tobjects: \"never\",\n\timports: \"never\",\n\texports: \"never\",\n\tfunctions: \"never\",\n});\n\n/**\n * Checks whether or not a trailing comma is allowed in a given node.\n * If the `lastItem` is `RestElement` or `RestProperty`, it disallows trailing commas.\n * @param {ASTNode} lastItem The node of the last element in the given node.\n * @returns {boolean} `true` if a trailing comma is allowed.\n */\nfunction isTrailingCommaAllowed(lastItem) {\n\treturn !(\n\t\tlastItem.type === \"RestElement\" ||\n\t\tlastItem.type === \"RestProperty\" ||\n\t\tlastItem.type === \"ExperimentalRestProperty\"\n\t);\n}\n\n/**\n * Normalize option value.\n * @param {string|Object|undefined} optionValue The 1st option value to normalize.\n * @param {number} ecmaVersion The normalized ECMAScript version.\n * @returns {Object} The normalized option value.\n */\nfunction normalizeOptions(optionValue, ecmaVersion) {\n\tif (typeof optionValue === \"string\") {\n\t\treturn {\n\t\t\tarrays: optionValue,\n\t\t\tobjects: optionValue,\n\t\t\timports: optionValue,\n\t\t\texports: optionValue,\n\t\t\tfunctions: ecmaVersion < 2017 ? \"ignore\" : optionValue,\n\t\t};\n\t}\n\tif (typeof optionValue === \"object\" && optionValue !== null) {\n\t\treturn {\n\t\t\tarrays: optionValue.arrays || DEFAULT_OPTIONS.arrays,\n\t\t\tobjects: optionValue.objects || DEFAULT_OPTIONS.objects,\n\t\t\timports: optionValue.imports || DEFAULT_OPTIONS.imports,\n\t\t\texports: optionValue.exports || DEFAULT_OPTIONS.exports,\n\t\t\tfunctions: optionValue.functions || DEFAULT_OPTIONS.functions,\n\t\t};\n\t}\n\n\treturn DEFAULT_OPTIONS;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"comma-dangle\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/comma-dangle\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require or disallow trailing commas\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/comma-dangle\",\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\tschema: {\n\t\t\tdefinitions: {\n\t\t\t\tvalue: {\n\t\t\t\t\tenum: [\n\t\t\t\t\t\t\"always-multiline\",\n\t\t\t\t\t\t\"always\",\n\t\t\t\t\t\t\"never\",\n\t\t\t\t\t\t\"only-multiline\",\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tvalueWithIgnore: {\n\t\t\t\t\tenum: [\n\t\t\t\t\t\t\"always-multiline\",\n\t\t\t\t\t\t\"always\",\n\t\t\t\t\t\t\"ignore\",\n\t\t\t\t\t\t\"never\",\n\t\t\t\t\t\t\"only-multiline\",\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\ttype: \"array\",\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\toneOf: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$ref: \"#/definitions/value\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tarrays: {\n\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/valueWithIgnore\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tobjects: {\n\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/valueWithIgnore\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\timports: {\n\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/valueWithIgnore\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\texports: {\n\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/valueWithIgnore\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tfunctions: {\n\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/valueWithIgnore\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t\tadditionalItems: false,\n\t\t},\n\n\t\tmessages: {\n\t\t\tunexpected: \"Unexpected trailing comma.\",\n\t\t\tmissing: \"Missing trailing comma.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst options = normalizeOptions(\n\t\t\tcontext.options[0],\n\t\t\tcontext.languageOptions.ecmaVersion,\n\t\t);\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Gets the last item of the given node.\n\t\t * @param {ASTNode} node The node to get.\n\t\t * @returns {ASTNode|null} The last node or null.\n\t\t */\n\t\tfunction getLastItem(node) {\n\t\t\t/**\n\t\t\t * Returns the last element of an array\n\t\t\t * @param {any[]} array The input array\n\t\t\t * @returns {any} The last element\n\t\t\t */\n\t\t\tfunction last(array) {\n\t\t\t\treturn array.at(-1);\n\t\t\t}\n\n\t\t\tswitch (node.type) {\n\t\t\t\tcase \"ObjectExpression\":\n\t\t\t\tcase \"ObjectPattern\":\n\t\t\t\t\treturn last(node.properties);\n\t\t\t\tcase \"ArrayExpression\":\n\t\t\t\tcase \"ArrayPattern\":\n\t\t\t\t\treturn last(node.elements);\n\t\t\t\tcase \"ImportDeclaration\":\n\t\t\t\tcase \"ExportNamedDeclaration\":\n\t\t\t\t\treturn last(node.specifiers);\n\t\t\t\tcase \"FunctionDeclaration\":\n\t\t\t\tcase \"FunctionExpression\":\n\t\t\t\tcase \"ArrowFunctionExpression\":\n\t\t\t\t\treturn last(node.params);\n\t\t\t\tcase \"CallExpression\":\n\t\t\t\tcase \"NewExpression\":\n\t\t\t\t\treturn last(node.arguments);\n\t\t\t\tdefault:\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Gets the trailing comma token of the given node.\n\t\t * If the trailing comma does not exist, this returns the token which is\n\t\t * the insertion point of the trailing comma token.\n\t\t * @param {ASTNode} node The node to get.\n\t\t * @param {ASTNode} lastItem The last item of the node.\n\t\t * @returns {Token} The trailing comma token or the insertion point.\n\t\t */\n\t\tfunction getTrailingToken(node, lastItem) {\n\t\t\tswitch (node.type) {\n\t\t\t\tcase \"ObjectExpression\":\n\t\t\t\tcase \"ArrayExpression\":\n\t\t\t\tcase \"CallExpression\":\n\t\t\t\tcase \"NewExpression\":\n\t\t\t\t\treturn sourceCode.getLastToken(node, 1);\n\t\t\t\tdefault: {\n\t\t\t\t\tconst nextToken = sourceCode.getTokenAfter(lastItem);\n\n\t\t\t\t\tif (astUtils.isCommaToken(nextToken)) {\n\t\t\t\t\t\treturn nextToken;\n\t\t\t\t\t}\n\t\t\t\t\treturn sourceCode.getLastToken(lastItem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks whether or not a given node is multiline.\n\t\t * This rule handles a given node as multiline when the closing parenthesis\n\t\t * and the last element are not on the same line.\n\t\t * @param {ASTNode} node A node to check.\n\t\t * @returns {boolean} `true` if the node is multiline.\n\t\t */\n\t\tfunction isMultiline(node) {\n\t\t\tconst lastItem = getLastItem(node);\n\n\t\t\tif (!lastItem) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst penultimateToken = getTrailingToken(node, lastItem);\n\t\t\tconst lastToken = sourceCode.getTokenAfter(penultimateToken);\n\n\t\t\treturn lastToken.loc.end.line !== penultimateToken.loc.end.line;\n\t\t}\n\n\t\t/**\n\t\t * Reports a trailing comma if it exists.\n\t\t * @param {ASTNode} node A node to check. Its type is one of\n\t\t *   ObjectExpression, ObjectPattern, ArrayExpression, ArrayPattern,\n\t\t *   ImportDeclaration, and ExportNamedDeclaration.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction forbidTrailingComma(node) {\n\t\t\tconst lastItem = getLastItem(node);\n\n\t\t\tif (\n\t\t\t\t!lastItem ||\n\t\t\t\t(node.type === \"ImportDeclaration\" &&\n\t\t\t\t\tlastItem.type !== \"ImportSpecifier\")\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst trailingToken = getTrailingToken(node, lastItem);\n\n\t\t\tif (astUtils.isCommaToken(trailingToken)) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: lastItem,\n\t\t\t\t\tloc: trailingToken.loc,\n\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t*fix(fixer) {\n\t\t\t\t\t\tyield fixer.remove(trailingToken);\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Extend the range of the fix to include surrounding tokens to ensure\n\t\t\t\t\t\t * that the element after which the comma is removed stays _last_.\n\t\t\t\t\t\t * This intentionally makes conflicts in fix ranges with rules that may be\n\t\t\t\t\t\t * adding or removing elements in the same autofix pass.\n\t\t\t\t\t\t * https://github.com/eslint/eslint/issues/15660\n\t\t\t\t\t\t */\n\t\t\t\t\t\tyield fixer.insertTextBefore(\n\t\t\t\t\t\t\tsourceCode.getTokenBefore(trailingToken),\n\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\tyield fixer.insertTextAfter(\n\t\t\t\t\t\t\tsourceCode.getTokenAfter(trailingToken),\n\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports the last element of a given node if it does not have a trailing\n\t\t * comma.\n\t\t *\n\t\t * If a given node is `ArrayPattern` which has `RestElement`, the trailing\n\t\t * comma is disallowed, so report if it exists.\n\t\t * @param {ASTNode} node A node to check. Its type is one of\n\t\t *   ObjectExpression, ObjectPattern, ArrayExpression, ArrayPattern,\n\t\t *   ImportDeclaration, and ExportNamedDeclaration.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction forceTrailingComma(node) {\n\t\t\tconst lastItem = getLastItem(node);\n\n\t\t\tif (\n\t\t\t\t!lastItem ||\n\t\t\t\t(node.type === \"ImportDeclaration\" &&\n\t\t\t\t\tlastItem.type !== \"ImportSpecifier\")\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!isTrailingCommaAllowed(lastItem)) {\n\t\t\t\tforbidTrailingComma(node);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst trailingToken = getTrailingToken(node, lastItem);\n\n\t\t\tif (trailingToken.value !== \",\") {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: lastItem,\n\t\t\t\t\tloc: {\n\t\t\t\t\t\tstart: trailingToken.loc.end,\n\t\t\t\t\t\tend: astUtils.getNextLocation(\n\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\ttrailingToken.loc.end,\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\tmessageId: \"missing\",\n\t\t\t\t\t*fix(fixer) {\n\t\t\t\t\t\tyield fixer.insertTextAfter(trailingToken, \",\");\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Extend the range of the fix to include surrounding tokens to ensure\n\t\t\t\t\t\t * that the element after which the comma is inserted stays _last_.\n\t\t\t\t\t\t * This intentionally makes conflicts in fix ranges with rules that may be\n\t\t\t\t\t\t * adding or removing elements in the same autofix pass.\n\t\t\t\t\t\t * https://github.com/eslint/eslint/issues/15660\n\t\t\t\t\t\t */\n\t\t\t\t\t\tyield fixer.insertTextBefore(trailingToken, \"\");\n\t\t\t\t\t\tyield fixer.insertTextAfter(\n\t\t\t\t\t\t\tsourceCode.getTokenAfter(trailingToken),\n\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * If a given node is multiline, reports the last element of a given node\n\t\t * when it does not have a trailing comma.\n\t\t * Otherwise, reports a trailing comma if it exists.\n\t\t * @param {ASTNode} node A node to check. Its type is one of\n\t\t *   ObjectExpression, ObjectPattern, ArrayExpression, ArrayPattern,\n\t\t *   ImportDeclaration, and ExportNamedDeclaration.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction forceTrailingCommaIfMultiline(node) {\n\t\t\tif (isMultiline(node)) {\n\t\t\t\tforceTrailingComma(node);\n\t\t\t} else {\n\t\t\t\tforbidTrailingComma(node);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Only if a given node is not multiline, reports the last element of a given node\n\t\t * when it does not have a trailing comma.\n\t\t * Otherwise, reports a trailing comma if it exists.\n\t\t * @param {ASTNode} node A node to check. Its type is one of\n\t\t *   ObjectExpression, ObjectPattern, ArrayExpression, ArrayPattern,\n\t\t *   ImportDeclaration, and ExportNamedDeclaration.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction allowTrailingCommaIfMultiline(node) {\n\t\t\tif (!isMultiline(node)) {\n\t\t\t\tforbidTrailingComma(node);\n\t\t\t}\n\t\t}\n\n\t\tconst predicate = {\n\t\t\talways: forceTrailingComma,\n\t\t\t\"always-multiline\": forceTrailingCommaIfMultiline,\n\t\t\t\"only-multiline\": allowTrailingCommaIfMultiline,\n\t\t\tnever: forbidTrailingComma,\n\t\t\tignore() {},\n\t\t};\n\n\t\treturn {\n\t\t\tObjectExpression: predicate[options.objects],\n\t\t\tObjectPattern: predicate[options.objects],\n\n\t\t\tArrayExpression: predicate[options.arrays],\n\t\t\tArrayPattern: predicate[options.arrays],\n\n\t\t\tImportDeclaration: predicate[options.imports],\n\n\t\t\tExportNamedDeclaration: predicate[options.exports],\n\n\t\t\tFunctionDeclaration: predicate[options.functions],\n\t\t\tFunctionExpression: predicate[options.functions],\n\t\t\tArrowFunctionExpression: predicate[options.functions],\n\t\t\tCallExpression: predicate[options.functions],\n\t\t\tNewExpression: predicate[options.functions],\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Comma spacing - validates spacing before and after comma\n * @author Vignesh Anand aka vegetableman.\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"comma-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/comma-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce consistent spacing before and after commas\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/comma-spacing\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tbefore: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t\tafter: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tmissing: \"A space is required {{loc}} ','.\",\n\t\t\tunexpected: \"There should be no space {{loc}} ','.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst tokensAndComments = sourceCode.tokensAndComments;\n\n\t\tconst options = {\n\t\t\tbefore: context.options[0] ? context.options[0].before : false,\n\t\t\tafter: context.options[0] ? context.options[0].after : true,\n\t\t};\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t// list of comma tokens to ignore for the check of leading whitespace\n\t\tconst commaTokensToIgnore = [];\n\n\t\t/**\n\t\t * Reports a spacing error with an appropriate message.\n\t\t * @param {ASTNode} node The binary expression node to report.\n\t\t * @param {string} loc Is the error \"before\" or \"after\" the comma?\n\t\t * @param {ASTNode} otherNode The node at the left or right of `node`\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction report(node, loc, otherNode) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tfix(fixer) {\n\t\t\t\t\tif (options[loc]) {\n\t\t\t\t\t\tif (loc === \"before\") {\n\t\t\t\t\t\t\treturn fixer.insertTextBefore(node, \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fixer.insertTextAfter(node, \" \");\n\t\t\t\t\t}\n\t\t\t\t\tlet start, end;\n\t\t\t\t\tconst newText = \"\";\n\n\t\t\t\t\tif (loc === \"before\") {\n\t\t\t\t\t\tstart = otherNode.range[1];\n\t\t\t\t\t\tend = node.range[0];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstart = node.range[1];\n\t\t\t\t\t\tend = otherNode.range[0];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fixer.replaceTextRange([start, end], newText);\n\t\t\t\t},\n\t\t\t\tmessageId: options[loc] ? \"missing\" : \"unexpected\",\n\t\t\t\tdata: {\n\t\t\t\t\tloc,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Adds null elements of the given ArrayExpression or ArrayPattern node to the ignore list.\n\t\t * @param {ASTNode} node An ArrayExpression or ArrayPattern node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction addNullElementsToIgnoreList(node) {\n\t\t\tlet previousToken = sourceCode.getFirstToken(node);\n\n\t\t\tnode.elements.forEach(element => {\n\t\t\t\tlet token;\n\n\t\t\t\tif (element === null) {\n\t\t\t\t\ttoken = sourceCode.getTokenAfter(previousToken);\n\n\t\t\t\t\tif (astUtils.isCommaToken(token)) {\n\t\t\t\t\t\tcommaTokensToIgnore.push(token);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttoken = sourceCode.getTokenAfter(element);\n\t\t\t\t}\n\n\t\t\t\tpreviousToken = token;\n\t\t\t});\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\t\"Program:exit\"() {\n\t\t\t\ttokensAndComments.forEach((token, i) => {\n\t\t\t\t\tif (!astUtils.isCommaToken(token)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst previousToken = tokensAndComments[i - 1];\n\t\t\t\t\tconst nextToken = tokensAndComments[i + 1];\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousToken &&\n\t\t\t\t\t\t!astUtils.isCommaToken(previousToken) && // ignore spacing between two commas\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * `commaTokensToIgnore` are ending commas of `null` elements (array holes/elisions).\n\t\t\t\t\t\t * In addition to spacing between two commas, this can also ignore:\n\t\t\t\t\t\t *\n\t\t\t\t\t\t *   - Spacing after `[` (controlled by array-bracket-spacing)\n\t\t\t\t\t\t *       Example: [ , ]\n\t\t\t\t\t\t *                 ^\n\t\t\t\t\t\t *   - Spacing after a comment (for backwards compatibility, this was possibly unintentional)\n\t\t\t\t\t\t *       Example: [a, /* * / ,]\n\t\t\t\t\t\t *                          ^\n\t\t\t\t\t\t */\n\t\t\t\t\t\t!commaTokensToIgnore.includes(token) &&\n\t\t\t\t\t\tastUtils.isTokenOnSameLine(previousToken, token) &&\n\t\t\t\t\t\toptions.before !==\n\t\t\t\t\t\t\tsourceCode.isSpaceBetween(previousToken, token)\n\t\t\t\t\t) {\n\t\t\t\t\t\treport(token, \"before\", previousToken);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tnextToken &&\n\t\t\t\t\t\t!astUtils.isCommaToken(nextToken) && // ignore spacing between two commas\n\t\t\t\t\t\t!astUtils.isClosingParenToken(nextToken) && // controlled by space-in-parens\n\t\t\t\t\t\t!astUtils.isClosingBracketToken(nextToken) && // controlled by array-bracket-spacing\n\t\t\t\t\t\t!astUtils.isClosingBraceToken(nextToken) && // controlled by object-curly-spacing\n\t\t\t\t\t\t!(!options.after && nextToken.type === \"Line\") && // special case, allow space before line comment\n\t\t\t\t\t\tastUtils.isTokenOnSameLine(token, nextToken) &&\n\t\t\t\t\t\toptions.after !==\n\t\t\t\t\t\t\tsourceCode.isSpaceBetween(token, nextToken)\n\t\t\t\t\t) {\n\t\t\t\t\t\treport(token, \"after\", nextToken);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tArrayExpression: addNullElementsToIgnoreList,\n\t\t\tArrayPattern: addNullElementsToIgnoreList,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Comma style - enforces comma styles of two types: last and first\n * @author Vignesh Anand aka vegetableman\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"comma-style\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/comma-style\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce consistent comma style\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/comma-style\",\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"first\", \"last\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\texceptions: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tadditionalProperties: {\n\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedLineBeforeAndAfterComma:\n\t\t\t\t\"Bad line breaking before and after ','.\",\n\t\t\texpectedCommaFirst: \"',' should be placed first.\",\n\t\t\texpectedCommaLast: \"',' should be placed last.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst style = context.options[0] || \"last\",\n\t\t\tsourceCode = context.sourceCode;\n\t\tconst exceptions = {\n\t\t\tArrayPattern: true,\n\t\t\tArrowFunctionExpression: true,\n\t\t\tCallExpression: true,\n\t\t\tFunctionDeclaration: true,\n\t\t\tFunctionExpression: true,\n\t\t\tImportDeclaration: true,\n\t\t\tObjectPattern: true,\n\t\t\tNewExpression: true,\n\t\t};\n\n\t\tif (\n\t\t\tcontext.options.length === 2 &&\n\t\t\tObject.hasOwn(context.options[1], \"exceptions\")\n\t\t) {\n\t\t\tconst keys = Object.keys(context.options[1].exceptions);\n\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\texceptions[keys[i]] = context.options[1].exceptions[keys[i]];\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Modified text based on the style\n\t\t * @param {string} styleType Style type\n\t\t * @param {string} text Source code text\n\t\t * @returns {string} modified text\n\t\t * @private\n\t\t */\n\t\tfunction getReplacedText(styleType, text) {\n\t\t\tswitch (styleType) {\n\t\t\t\tcase \"between\":\n\t\t\t\t\treturn `,${text.replace(astUtils.LINEBREAK_MATCHER, \"\")}`;\n\n\t\t\t\tcase \"first\":\n\t\t\t\t\treturn `${text},`;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\treturn `,${text}`;\n\n\t\t\t\tdefault:\n\t\t\t\t\treturn \"\";\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Determines the fixer function for a given style.\n\t\t * @param {string} styleType comma style\n\t\t * @param {ASTNode} previousItemToken The token to check.\n\t\t * @param {ASTNode} commaToken The token to check.\n\t\t * @param {ASTNode} currentItemToken The token to check.\n\t\t * @returns {Function} Fixer function\n\t\t * @private\n\t\t */\n\t\tfunction getFixerFunction(\n\t\t\tstyleType,\n\t\t\tpreviousItemToken,\n\t\t\tcommaToken,\n\t\t\tcurrentItemToken,\n\t\t) {\n\t\t\tconst text =\n\t\t\t\tsourceCode.text.slice(\n\t\t\t\t\tpreviousItemToken.range[1],\n\t\t\t\t\tcommaToken.range[0],\n\t\t\t\t) +\n\t\t\t\tsourceCode.text.slice(\n\t\t\t\t\tcommaToken.range[1],\n\t\t\t\t\tcurrentItemToken.range[0],\n\t\t\t\t);\n\t\t\tconst range = [\n\t\t\t\tpreviousItemToken.range[1],\n\t\t\t\tcurrentItemToken.range[0],\n\t\t\t];\n\n\t\t\treturn function (fixer) {\n\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\trange,\n\t\t\t\t\tgetReplacedText(styleType, text),\n\t\t\t\t);\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Validates the spacing around single items in lists.\n\t\t * @param {Token} previousItemToken The last token from the previous item.\n\t\t * @param {Token} commaToken The token representing the comma.\n\t\t * @param {Token} currentItemToken The first token of the current item.\n\t\t * @param {Token} reportItem The item to use when reporting an error.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction validateCommaItemSpacing(\n\t\t\tpreviousItemToken,\n\t\t\tcommaToken,\n\t\t\tcurrentItemToken,\n\t\t\treportItem,\n\t\t) {\n\t\t\t// if single line\n\t\t\tif (\n\t\t\t\tastUtils.isTokenOnSameLine(commaToken, currentItemToken) &&\n\t\t\t\tastUtils.isTokenOnSameLine(previousItemToken, commaToken)\n\t\t\t) {\n\t\t\t\t// do nothing.\n\t\t\t} else if (\n\t\t\t\t!astUtils.isTokenOnSameLine(commaToken, currentItemToken) &&\n\t\t\t\t!astUtils.isTokenOnSameLine(previousItemToken, commaToken)\n\t\t\t) {\n\t\t\t\tconst comment = sourceCode.getCommentsAfter(commaToken)[0];\n\t\t\t\tconst styleType =\n\t\t\t\t\tcomment &&\n\t\t\t\t\tcomment.type === \"Block\" &&\n\t\t\t\t\tastUtils.isTokenOnSameLine(commaToken, comment)\n\t\t\t\t\t\t? style\n\t\t\t\t\t\t: \"between\";\n\n\t\t\t\t// lone comma\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: reportItem,\n\t\t\t\t\tloc: commaToken.loc,\n\t\t\t\t\tmessageId: \"unexpectedLineBeforeAndAfterComma\",\n\t\t\t\t\tfix: getFixerFunction(\n\t\t\t\t\t\tstyleType,\n\t\t\t\t\t\tpreviousItemToken,\n\t\t\t\t\t\tcommaToken,\n\t\t\t\t\t\tcurrentItemToken,\n\t\t\t\t\t),\n\t\t\t\t});\n\t\t\t} else if (\n\t\t\t\tstyle === \"first\" &&\n\t\t\t\t!astUtils.isTokenOnSameLine(commaToken, currentItemToken)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: reportItem,\n\t\t\t\t\tloc: commaToken.loc,\n\t\t\t\t\tmessageId: \"expectedCommaFirst\",\n\t\t\t\t\tfix: getFixerFunction(\n\t\t\t\t\t\tstyle,\n\t\t\t\t\t\tpreviousItemToken,\n\t\t\t\t\t\tcommaToken,\n\t\t\t\t\t\tcurrentItemToken,\n\t\t\t\t\t),\n\t\t\t\t});\n\t\t\t} else if (\n\t\t\t\tstyle === \"last\" &&\n\t\t\t\tastUtils.isTokenOnSameLine(commaToken, currentItemToken)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: reportItem,\n\t\t\t\t\tloc: commaToken.loc,\n\t\t\t\t\tmessageId: \"expectedCommaLast\",\n\t\t\t\t\tfix: getFixerFunction(\n\t\t\t\t\t\tstyle,\n\t\t\t\t\t\tpreviousItemToken,\n\t\t\t\t\t\tcommaToken,\n\t\t\t\t\t\tcurrentItemToken,\n\t\t\t\t\t),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks the comma placement with regards to a declaration/property/element\n\t\t * @param {ASTNode} node The binary expression node to check\n\t\t * @param {string} property The property of the node containing child nodes.\n\t\t * @private\n\t\t * @returns {void}\n\t\t */\n\t\tfunction validateComma(node, property) {\n\t\t\tconst items = node[property],\n\t\t\t\tarrayLiteral =\n\t\t\t\t\tnode.type === \"ArrayExpression\" ||\n\t\t\t\t\tnode.type === \"ArrayPattern\";\n\n\t\t\tif (items.length > 1 || arrayLiteral) {\n\t\t\t\t// seed as opening [\n\t\t\t\tlet previousItemToken = sourceCode.getFirstToken(node);\n\n\t\t\t\titems.forEach(item => {\n\t\t\t\t\tconst commaToken = item\n\t\t\t\t\t\t\t? sourceCode.getTokenBefore(item)\n\t\t\t\t\t\t\t: previousItemToken,\n\t\t\t\t\t\tcurrentItemToken = item\n\t\t\t\t\t\t\t? sourceCode.getFirstToken(item)\n\t\t\t\t\t\t\t: sourceCode.getTokenAfter(commaToken),\n\t\t\t\t\t\treportItem = item || currentItemToken;\n\n\t\t\t\t\t/*\n\t\t\t\t\t * This works by comparing three token locations:\n\t\t\t\t\t * - previousItemToken is the last token of the previous item\n\t\t\t\t\t * - commaToken is the location of the comma before the current item\n\t\t\t\t\t * - currentItemToken is the first token of the current item\n\t\t\t\t\t *\n\t\t\t\t\t * These values get switched around if item is undefined.\n\t\t\t\t\t * previousItemToken will refer to the last token not belonging\n\t\t\t\t\t * to the current item, which could be a comma or an opening\n\t\t\t\t\t * square bracket. currentItemToken could be a comma.\n\t\t\t\t\t *\n\t\t\t\t\t * All comparisons are done based on these tokens directly, so\n\t\t\t\t\t * they are always valid regardless of an undefined item.\n\t\t\t\t\t */\n\t\t\t\t\tif (astUtils.isCommaToken(commaToken)) {\n\t\t\t\t\t\tvalidateCommaItemSpacing(\n\t\t\t\t\t\t\tpreviousItemToken,\n\t\t\t\t\t\t\tcommaToken,\n\t\t\t\t\t\t\tcurrentItemToken,\n\t\t\t\t\t\t\treportItem,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (item) {\n\t\t\t\t\t\tconst tokenAfterItem = sourceCode.getTokenAfter(\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\tastUtils.isNotClosingParenToken,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tpreviousItemToken = tokenAfterItem\n\t\t\t\t\t\t\t? sourceCode.getTokenBefore(tokenAfterItem)\n\t\t\t\t\t\t\t: sourceCode.ast.tokens.at(-1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpreviousItemToken = currentItemToken;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t/*\n\t\t\t\t * Special case for array literals that have empty last items, such\n\t\t\t\t * as [ 1, 2, ]. These arrays only have two items show up in the\n\t\t\t\t * AST, so we need to look at the token to verify that there's no\n\t\t\t\t * dangling comma.\n\t\t\t\t */\n\t\t\t\tif (arrayLiteral) {\n\t\t\t\t\tconst lastToken = sourceCode.getLastToken(node),\n\t\t\t\t\t\tnextToLastToken = sourceCode.getTokenBefore(lastToken);\n\n\t\t\t\t\tif (astUtils.isCommaToken(nextToLastToken)) {\n\t\t\t\t\t\tvalidateCommaItemSpacing(\n\t\t\t\t\t\t\tsourceCode.getTokenBefore(nextToLastToken),\n\t\t\t\t\t\t\tnextToLastToken,\n\t\t\t\t\t\t\tlastToken,\n\t\t\t\t\t\t\tlastToken,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\tconst nodes = {};\n\n\t\tif (!exceptions.VariableDeclaration) {\n\t\t\tnodes.VariableDeclaration = function (node) {\n\t\t\t\tvalidateComma(node, \"declarations\");\n\t\t\t};\n\t\t}\n\t\tif (!exceptions.ObjectExpression) {\n\t\t\tnodes.ObjectExpression = function (node) {\n\t\t\t\tvalidateComma(node, \"properties\");\n\t\t\t};\n\t\t}\n\t\tif (!exceptions.ObjectPattern) {\n\t\t\tnodes.ObjectPattern = function (node) {\n\t\t\t\tvalidateComma(node, \"properties\");\n\t\t\t};\n\t\t}\n\t\tif (!exceptions.ArrayExpression) {\n\t\t\tnodes.ArrayExpression = function (node) {\n\t\t\t\tvalidateComma(node, \"elements\");\n\t\t\t};\n\t\t}\n\t\tif (!exceptions.ArrayPattern) {\n\t\t\tnodes.ArrayPattern = function (node) {\n\t\t\t\tvalidateComma(node, \"elements\");\n\t\t\t};\n\t\t}\n\t\tif (!exceptions.FunctionDeclaration) {\n\t\t\tnodes.FunctionDeclaration = function (node) {\n\t\t\t\tvalidateComma(node, \"params\");\n\t\t\t};\n\t\t}\n\t\tif (!exceptions.FunctionExpression) {\n\t\t\tnodes.FunctionExpression = function (node) {\n\t\t\t\tvalidateComma(node, \"params\");\n\t\t\t};\n\t\t}\n\t\tif (!exceptions.ArrowFunctionExpression) {\n\t\t\tnodes.ArrowFunctionExpression = function (node) {\n\t\t\t\tvalidateComma(node, \"params\");\n\t\t\t};\n\t\t}\n\t\tif (!exceptions.CallExpression) {\n\t\t\tnodes.CallExpression = function (node) {\n\t\t\t\tvalidateComma(node, \"arguments\");\n\t\t\t};\n\t\t}\n\t\tif (!exceptions.ImportDeclaration) {\n\t\t\tnodes.ImportDeclaration = function (node) {\n\t\t\t\tvalidateComma(node, \"specifiers\");\n\t\t\t};\n\t\t}\n\t\tif (!exceptions.NewExpression) {\n\t\t\tnodes.NewExpression = function (node) {\n\t\t\t\tvalidateComma(node, \"arguments\");\n\t\t\t};\n\t\t}\n\n\t\treturn nodes;\n\t},\n};\n", "/**\n * @fileoverview Utilities to operate on strings.\n * @author Stephen Wade\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n// eslint-disable-next-line no-control-regex -- intentionally including control characters\nconst ASCII_REGEX = /^[\\u0000-\\u007f]*$/u;\n\n/** @type {Intl.Segmenter | undefined} */\nlet segmenter;\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * Converts the first letter of a string to uppercase.\n * @param {string} string The string to operate on\n * @returns {string} The converted string\n */\nfunction upperCaseFirst(string) {\n\tif (string.length <= 1) {\n\t\treturn string.toUpperCase();\n\t}\n\treturn string[0].toUpperCase() + string.slice(1);\n}\n\n/**\n * Counts graphemes in a given string.\n * @param {string} value A string to count graphemes.\n * @returns {number} The number of graphemes in `value`.\n */\nfunction getGraphemeCount(value) {\n\tif (ASCII_REGEX.test(value)) {\n\t\treturn value.length;\n\t}\n\n\tsegmenter ??= new Intl.Segmenter(\"en-US\"); // en-US locale should be supported everywhere\n\tlet graphemeCount = 0;\n\n\t// eslint-disable-next-line no-unused-vars -- for-of needs a variable\n\tfor (const unused of segmenter.segment(value)) {\n\t\tgraphemeCount++;\n\t}\n\n\treturn graphemeCount;\n}\n\nmodule.exports = {\n\tupperCaseFirst,\n\tgetGraphemeCount,\n};\n", "/**\n * @fileoverview Counts the cyclomatic complexity of each function of the script. See http://en.wikipedia.org/wiki/Cyclomatic_complexity.\n * Counts the number of if, conditional, for, while, try, switch/case,\n * @author Patrick Brosset\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst { upperCaseFirst } = require(\"../shared/string-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\nconst THRESHOLD_DEFAULT = 20;\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [THRESHOLD_DEFAULT],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce a maximum cyclomatic complexity allowed in a program\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/complexity\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tmaximum: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmax: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tvariant: {\n\t\t\t\t\t\t\t\tenum: [\"classic\", \"modified\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tcomplex:\n\t\t\t\t\"{{name}} has a complexity of {{complexity}}. Maximum allowed is {{max}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst option = context.options[0];\n\t\tlet threshold = THRESHOLD_DEFAULT;\n\t\tlet VARIANT = \"classic\";\n\n\t\tif (typeof option === \"object\") {\n\t\t\tif (\n\t\t\t\tObject.hasOwn(option, \"maximum\") ||\n\t\t\t\tObject.hasOwn(option, \"max\")\n\t\t\t) {\n\t\t\t\tthreshold = option.maximum || option.max;\n\t\t\t}\n\n\t\t\tif (Object.hasOwn(option, \"variant\")) {\n\t\t\t\tVARIANT = option.variant;\n\t\t\t}\n\t\t} else if (typeof option === \"number\") {\n\t\t\tthreshold = option;\n\t\t}\n\n\t\tconst IS_MODIFIED_COMPLEXITY = VARIANT === \"modified\";\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t// Using a stack to store complexity per code path\n\t\tconst complexities = [];\n\n\t\t/**\n\t\t * Increase the complexity of the code path in context\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction increaseComplexity() {\n\t\t\tcomplexities[complexities.length - 1]++;\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tonCodePathStart() {\n\t\t\t\t// The initial complexity is 1, representing one execution path in the CodePath\n\t\t\t\tcomplexities.push(1);\n\t\t\t},\n\n\t\t\t// Each branching in the code adds 1 to the complexity\n\t\t\tCatchClause: increaseComplexity,\n\t\t\tConditionalExpression: increaseComplexity,\n\t\t\tLogicalExpression: increaseComplexity,\n\t\t\tForStatement: increaseComplexity,\n\t\t\tForInStatement: increaseComplexity,\n\t\t\tForOfStatement: increaseComplexity,\n\t\t\tIfStatement: increaseComplexity,\n\t\t\tWhileStatement: increaseComplexity,\n\t\t\tDoWhileStatement: increaseComplexity,\n\t\t\tAssignmentPattern: increaseComplexity,\n\n\t\t\t// Avoid `default`\n\t\t\t\"SwitchCase[test]\": () =>\n\t\t\t\tIS_MODIFIED_COMPLEXITY || increaseComplexity(),\n\t\t\tSwitchStatement: () =>\n\t\t\t\tIS_MODIFIED_COMPLEXITY && increaseComplexity(),\n\n\t\t\t// Logical assignment operators have short-circuiting behavior\n\t\t\tAssignmentExpression(node) {\n\t\t\t\tif (astUtils.isLogicalAssignmentOperator(node.operator)) {\n\t\t\t\t\tincreaseComplexity();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tMemberExpression(node) {\n\t\t\t\tif (node.optional === true) {\n\t\t\t\t\tincreaseComplexity();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tCallExpression(node) {\n\t\t\t\tif (node.optional === true) {\n\t\t\t\t\tincreaseComplexity();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tonCodePathEnd(codePath, node) {\n\t\t\t\tconst complexity = complexities.pop();\n\n\t\t\t\t/*\n\t\t\t\t * This rule only evaluates complexity of functions, so \"program\" is excluded.\n\t\t\t\t * Class field initializers and class static blocks are implicit functions. Therefore,\n\t\t\t\t * they shouldn't contribute to the enclosing function's complexity, but their\n\t\t\t\t * own complexity should be evaluated.\n\t\t\t\t */\n\t\t\t\tif (\n\t\t\t\t\tcodePath.origin !== \"function\" &&\n\t\t\t\t\tcodePath.origin !== \"class-field-initializer\" &&\n\t\t\t\t\tcodePath.origin !== \"class-static-block\"\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (complexity > threshold) {\n\t\t\t\t\tlet name;\n\t\t\t\t\tlet loc = node.loc;\n\n\t\t\t\t\tif (codePath.origin === \"class-field-initializer\") {\n\t\t\t\t\t\tname = \"class field initializer\";\n\t\t\t\t\t} else if (codePath.origin === \"class-static-block\") {\n\t\t\t\t\t\tname = \"class static block\";\n\t\t\t\t\t\tloc = sourceCode.getFirstToken(node).loc;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = astUtils.getFunctionNameWithKind(node);\n\t\t\t\t\t\tloc = astUtils.getFunctionHeadLoc(node, sourceCode);\n\t\t\t\t\t}\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc,\n\t\t\t\t\t\tmessageId: \"complex\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tname: upperCaseFirst(name),\n\t\t\t\t\t\t\tcomplexity,\n\t\t\t\t\t\t\tmax: threshold,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallows or enforces spaces inside computed properties.\n * @author Jamund Ferguson\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"computed-property-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/computed-property-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce consistent spacing inside computed property brackets\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/computed-property-spacing\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tenforceForClassMembers: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedSpaceBefore:\n\t\t\t\t\"There should be no space before '{{tokenValue}}'.\",\n\t\t\tunexpectedSpaceAfter:\n\t\t\t\t\"There should be no space after '{{tokenValue}}'.\",\n\n\t\t\tmissingSpaceBefore: \"A space is required before '{{tokenValue}}'.\",\n\t\t\tmissingSpaceAfter: \"A space is required after '{{tokenValue}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst propertyNameMustBeSpaced = context.options[0] === \"always\"; // default is \"never\"\n\t\tconst enforceForClassMembers =\n\t\t\t!context.options[1] || context.options[1].enforceForClassMembers;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Reports that there shouldn't be a space after the first token\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @param {Token} tokenAfter The token after `token`.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportNoBeginningSpace(node, token, tokenAfter) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: { start: token.loc.end, end: tokenAfter.loc.start },\n\t\t\t\tmessageId: \"unexpectedSpaceAfter\",\n\t\t\t\tdata: {\n\t\t\t\t\ttokenValue: token.value,\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\ttoken.range[1],\n\t\t\t\t\t\ttokenAfter.range[0],\n\t\t\t\t\t]);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports that there shouldn't be a space before the last token\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @param {Token} tokenBefore The token before `token`.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportNoEndingSpace(node, token, tokenBefore) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: { start: tokenBefore.loc.end, end: token.loc.start },\n\t\t\t\tmessageId: \"unexpectedSpaceBefore\",\n\t\t\t\tdata: {\n\t\t\t\t\ttokenValue: token.value,\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\ttokenBefore.range[1],\n\t\t\t\t\t\ttoken.range[0],\n\t\t\t\t\t]);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports that there should be a space after the first token\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportRequiredBeginningSpace(node, token) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: token.loc,\n\t\t\t\tmessageId: \"missingSpaceAfter\",\n\t\t\t\tdata: {\n\t\t\t\t\ttokenValue: token.value,\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.insertTextAfter(token, \" \");\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports that there should be a space before the last token\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportRequiredEndingSpace(node, token) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: token.loc,\n\t\t\t\tmessageId: \"missingSpaceBefore\",\n\t\t\t\tdata: {\n\t\t\t\t\ttokenValue: token.value,\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.insertTextBefore(token, \" \");\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Returns a function that checks the spacing of a node on the property name\n\t\t * that was passed in.\n\t\t * @param {string} propertyName The property on the node to check for spacing\n\t\t * @returns {Function} A function that will check spacing on a node\n\t\t */\n\t\tfunction checkSpacing(propertyName) {\n\t\t\treturn function (node) {\n\t\t\t\tif (!node.computed) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst property = node[propertyName];\n\n\t\t\t\tconst before = sourceCode.getTokenBefore(\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\tastUtils.isOpeningBracketToken,\n\t\t\t\t\t),\n\t\t\t\t\tfirst = sourceCode.getTokenAfter(before, {\n\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t}),\n\t\t\t\t\tafter = sourceCode.getTokenAfter(\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\tastUtils.isClosingBracketToken,\n\t\t\t\t\t),\n\t\t\t\t\tlast = sourceCode.getTokenBefore(after, {\n\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t});\n\n\t\t\t\tif (astUtils.isTokenOnSameLine(before, first)) {\n\t\t\t\t\tif (propertyNameMustBeSpaced) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!sourceCode.isSpaceBetween(before, first) &&\n\t\t\t\t\t\t\tastUtils.isTokenOnSameLine(before, first)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treportRequiredBeginningSpace(node, before);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (sourceCode.isSpaceBetween(before, first)) {\n\t\t\t\t\t\t\treportNoBeginningSpace(node, before, first);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (astUtils.isTokenOnSameLine(last, after)) {\n\t\t\t\t\tif (propertyNameMustBeSpaced) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!sourceCode.isSpaceBetween(last, after) &&\n\t\t\t\t\t\t\tastUtils.isTokenOnSameLine(last, after)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treportRequiredEndingSpace(node, after);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (sourceCode.isSpaceBetween(last, after)) {\n\t\t\t\t\t\t\treportNoEndingSpace(node, after, last);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\tconst listeners = {\n\t\t\tProperty: checkSpacing(\"key\"),\n\t\t\tMemberExpression: checkSpacing(\"property\"),\n\t\t};\n\n\t\tif (enforceForClassMembers) {\n\t\t\tlisteners.MethodDefinition = listeners.PropertyDefinition =\n\t\t\t\tlisteners.Property;\n\t\t}\n\n\t\treturn listeners;\n\t},\n};\n", "/**\n * @fileoverview Rule to flag consistent return values\n * @author Nicholas C. Zakas\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst { upperCaseFirst } = require(\"../shared/string-utils\");\nconst { isAnySegmentReachable } = require(\"./utils/code-path-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether a given node is a `constructor` method in an ES6 class\n * @param {ASTNode} node A node to check\n * @returns {boolean} `true` if the node is a `constructor` method\n */\nfunction isClassConstructor(node) {\n\treturn (\n\t\tnode.type === \"FunctionExpression\" &&\n\t\tnode.parent &&\n\t\tnode.parent.type === \"MethodDefinition\" &&\n\t\tnode.parent.kind === \"constructor\"\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require `return` statements to either always or never specify values\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/consistent-return\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\ttreatUndefinedAsUnspecified: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [{ treatUndefinedAsUnspecified: false }],\n\n\t\tmessages: {\n\t\t\tmissingReturn: \"Expected to return a value at the end of {{name}}.\",\n\t\t\tmissingReturnValue: \"{{name}} expected a return value.\",\n\t\t\tunexpectedReturnValue: \"{{name}} expected no return value.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ treatUndefinedAsUnspecified }] = context.options;\n\t\tlet funcInfo = null;\n\n\t\t/**\n\t\t * Checks whether of not the implicit returning is consistent if the last\n\t\t * code path segment is reachable.\n\t\t * @param {ASTNode} node A program/function node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkLastSegment(node) {\n\t\t\tlet loc, name;\n\n\t\t\t/*\n\t\t\t * Skip if it expected no return value or unreachable.\n\t\t\t * When unreachable, all paths are returned or thrown.\n\t\t\t */\n\t\t\tif (\n\t\t\t\t!funcInfo.hasReturnValue ||\n\t\t\t\t!isAnySegmentReachable(funcInfo.currentSegments) ||\n\t\t\t\tastUtils.isES5Constructor(node) ||\n\t\t\t\tisClassConstructor(node)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Adjust a location and a message.\n\t\t\tif (node.type === \"Program\") {\n\t\t\t\t// The head of program.\n\t\t\t\tloc = { line: 1, column: 0 };\n\t\t\t\tname = \"program\";\n\t\t\t} else if (node.type === \"ArrowFunctionExpression\") {\n\t\t\t\t// `=>` token\n\t\t\t\tloc = context.sourceCode.getTokenBefore(\n\t\t\t\t\tnode.body,\n\t\t\t\t\tastUtils.isArrowToken,\n\t\t\t\t).loc;\n\t\t\t} else if (\n\t\t\t\tnode.parent.type === \"MethodDefinition\" ||\n\t\t\t\t(node.parent.type === \"Property\" && node.parent.method)\n\t\t\t) {\n\t\t\t\t// Method name.\n\t\t\t\tloc = node.parent.key.loc;\n\t\t\t} else {\n\t\t\t\t// Function name or `function` keyword.\n\t\t\t\tloc = (node.id || context.sourceCode.getFirstToken(node)).loc;\n\t\t\t}\n\n\t\t\tif (!name) {\n\t\t\t\tname = astUtils.getFunctionNameWithKind(node);\n\t\t\t}\n\n\t\t\t// Reports.\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc,\n\t\t\t\tmessageId: \"missingReturn\",\n\t\t\t\tdata: { name },\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\t// Initializes/Disposes state of each code path.\n\t\t\tonCodePathStart(codePath, node) {\n\t\t\t\tfuncInfo = {\n\t\t\t\t\tupper: funcInfo,\n\t\t\t\t\tcodePath,\n\t\t\t\t\thasReturn: false,\n\t\t\t\t\thasReturnValue: false,\n\t\t\t\t\tmessageId: \"\",\n\t\t\t\t\tnode,\n\t\t\t\t\tcurrentSegments: new Set(),\n\t\t\t\t};\n\t\t\t},\n\t\t\tonCodePathEnd() {\n\t\t\t\tfuncInfo = funcInfo.upper;\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentStart(segment) {\n\t\t\t\tfuncInfo.currentSegments.add(segment);\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentEnd(segment) {\n\t\t\t\tfuncInfo.currentSegments.delete(segment);\n\t\t\t},\n\n\t\t\tonCodePathSegmentStart(segment) {\n\t\t\t\tfuncInfo.currentSegments.add(segment);\n\t\t\t},\n\n\t\t\tonCodePathSegmentEnd(segment) {\n\t\t\t\tfuncInfo.currentSegments.delete(segment);\n\t\t\t},\n\n\t\t\t// Reports a given return statement if it's inconsistent.\n\t\t\tReturnStatement(node) {\n\t\t\t\tconst argument = node.argument;\n\t\t\t\tlet hasReturnValue = Boolean(argument);\n\n\t\t\t\tif (treatUndefinedAsUnspecified && hasReturnValue) {\n\t\t\t\t\thasReturnValue =\n\t\t\t\t\t\t!astUtils.isSpecificId(argument, \"undefined\") &&\n\t\t\t\t\t\targument.operator !== \"void\";\n\t\t\t\t}\n\n\t\t\t\tif (!funcInfo.hasReturn) {\n\t\t\t\t\tfuncInfo.hasReturn = true;\n\t\t\t\t\tfuncInfo.hasReturnValue = hasReturnValue;\n\t\t\t\t\tfuncInfo.messageId = hasReturnValue\n\t\t\t\t\t\t? \"missingReturnValue\"\n\t\t\t\t\t\t: \"unexpectedReturnValue\";\n\t\t\t\t\tfuncInfo.data = {\n\t\t\t\t\t\tname:\n\t\t\t\t\t\t\tfuncInfo.node.type === \"Program\"\n\t\t\t\t\t\t\t\t? \"Program\"\n\t\t\t\t\t\t\t\t: upperCaseFirst(\n\t\t\t\t\t\t\t\t\t\tastUtils.getFunctionNameWithKind(\n\t\t\t\t\t\t\t\t\t\t\tfuncInfo.node,\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t} else if (funcInfo.hasReturnValue !== hasReturnValue) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: funcInfo.messageId,\n\t\t\t\t\t\tdata: funcInfo.data,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Reports a given program/function if the implicit returning is not consistent.\n\t\t\t\"Program:exit\": checkLastSegment,\n\t\t\t\"FunctionDeclaration:exit\": checkLastSegment,\n\t\t\t\"FunctionExpression:exit\": checkLastSegment,\n\t\t\t\"ArrowFunctionExpression:exit\": checkLastSegment,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce consistent naming of \"this\" context variables\n * @author Raphael Pigulla\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce consistent naming when capturing the current execution context\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/consistent-this\",\n\t\t},\n\n\t\tschema: {\n\t\t\ttype: \"array\",\n\t\t\titems: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tminLength: 1,\n\t\t\t},\n\t\t\tuniqueItems: true,\n\t\t},\n\n\t\tdefaultOptions: [\"that\"],\n\n\t\tmessages: {\n\t\t\taliasNotAssignedToThis:\n\t\t\t\t\"Designated alias '{{name}}' is not assigned to 'this'.\",\n\t\t\tunexpectedAlias: \"Unexpected alias '{{name}}' for 'this'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst aliases = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Reports that a variable declarator or assignment expression is assigning\n\t\t * a non-'this' value to the specified alias.\n\t\t * @param {ASTNode} node The assigning node.\n\t\t * @param {string} name the name of the alias that was incorrectly used.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportBadAssignment(node, name) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"aliasNotAssignedToThis\",\n\t\t\t\tdata: { name },\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Checks that an assignment to an identifier only assigns 'this' to the\n\t\t * appropriate alias, and the alias is only assigned to 'this'.\n\t\t * @param {ASTNode} node The assigning node.\n\t\t * @param {Identifier} name The name of the variable assigned to.\n\t\t * @param {Expression} value The value of the assignment.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkAssignment(node, name, value) {\n\t\t\tconst isThis = value.type === \"ThisExpression\";\n\n\t\t\tif (aliases.includes(name)) {\n\t\t\t\tif (!isThis || (node.operator && node.operator !== \"=\")) {\n\t\t\t\t\treportBadAssignment(node, name);\n\t\t\t\t}\n\t\t\t} else if (isThis) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unexpectedAlias\",\n\t\t\t\t\tdata: { name },\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Ensures that a variable declaration of the alias in a program or function\n\t\t * is assigned to the correct value.\n\t\t * @param {string} alias alias the check the assignment of.\n\t\t * @param {Object} scope scope of the current code we are checking.\n\t\t * @private\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkWasAssigned(alias, scope) {\n\t\t\tconst variable = scope.set.get(alias);\n\n\t\t\tif (!variable) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tvariable.defs.some(\n\t\t\t\t\tdef =>\n\t\t\t\t\t\tdef.node.type === \"VariableDeclarator\" &&\n\t\t\t\t\t\tdef.node.init !== null,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * The alias has been declared and not assigned: check it was\n\t\t\t * assigned later in the same scope.\n\t\t\t */\n\t\t\tif (\n\t\t\t\t!variable.references.some(reference => {\n\t\t\t\t\tconst write = reference.writeExpr;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\treference.from === scope &&\n\t\t\t\t\t\twrite &&\n\t\t\t\t\t\twrite.type === \"ThisExpression\" &&\n\t\t\t\t\t\twrite.parent.operator === \"=\"\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\tvariable.defs\n\t\t\t\t\t.map(def => def.node)\n\t\t\t\t\t.forEach(node => {\n\t\t\t\t\t\treportBadAssignment(node, alias);\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check each alias to ensure that is was assigned to the correct value.\n\t\t * @param {ASTNode} node The node that represents the scope to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction ensureWasAssigned(node) {\n\t\t\tconst scope = sourceCode.getScope(node);\n\n\t\t\t// if this is program scope we also need to check module scope\n\t\t\tconst extraScope =\n\t\t\t\tnode.type === \"Program\" && node.sourceType === \"module\"\n\t\t\t\t\t? scope.childScopes[0]\n\t\t\t\t\t: null;\n\n\t\t\taliases.forEach(alias => {\n\t\t\t\tcheckWasAssigned(alias, scope);\n\n\t\t\t\tif (extraScope) {\n\t\t\t\t\tcheckWasAssigned(alias, extraScope);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\t\"Program:exit\": ensureWasAssigned,\n\t\t\t\"FunctionExpression:exit\": ensureWasAssigned,\n\t\t\t\"FunctionDeclaration:exit\": ensureWasAssigned,\n\n\t\t\tVariableDeclarator(node) {\n\t\t\t\tconst id = node.id;\n\t\t\t\tconst isDestructuring =\n\t\t\t\t\tid.type === \"ArrayPattern\" || id.type === \"ObjectPattern\";\n\n\t\t\t\tif (node.init !== null && !isDestructuring) {\n\t\t\t\t\tcheckAssignment(node, id.name, node.init);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tAssignmentExpression(node) {\n\t\t\t\tif (node.left.type === \"Identifier\") {\n\t\t\t\t\tcheckAssignment(node, node.left.name, node.right);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to verify `super()` callings in constructor.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether or not a given node is a constructor.\n * @param {ASTNode} node A node to check. This node type is one of\n *   `Program`, `FunctionDeclaration`, `FunctionExpression`, and\n *   `ArrowFunctionExpression`.\n * @returns {boolean} `true` if the node is a constructor.\n */\nfunction isConstructorFunction(node) {\n\treturn (\n\t\tnode.type === \"FunctionExpression\" &&\n\t\tnode.parent.type === \"MethodDefinition\" &&\n\t\tnode.parent.kind === \"constructor\"\n\t);\n}\n\n/**\n * Checks whether a given node can be a constructor or not.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} `true` if the node can be a constructor.\n */\nfunction isPossibleConstructor(node) {\n\tif (!node) {\n\t\treturn false;\n\t}\n\n\tswitch (node.type) {\n\t\tcase \"ClassExpression\":\n\t\tcase \"FunctionExpression\":\n\t\tcase \"ThisExpression\":\n\t\tcase \"MemberExpression\":\n\t\tcase \"CallExpression\":\n\t\tcase \"NewExpression\":\n\t\tcase \"ChainExpression\":\n\t\tcase \"YieldExpression\":\n\t\tcase \"TaggedTemplateExpression\":\n\t\tcase \"MetaProperty\":\n\t\t\treturn true;\n\n\t\tcase \"Identifier\":\n\t\t\treturn node.name !== \"undefined\";\n\n\t\tcase \"AssignmentExpression\":\n\t\t\tif ([\"=\", \"&&=\"].includes(node.operator)) {\n\t\t\t\treturn isPossibleConstructor(node.right);\n\t\t\t}\n\n\t\t\tif ([\"||=\", \"??=\"].includes(node.operator)) {\n\t\t\t\treturn (\n\t\t\t\t\tisPossibleConstructor(node.left) ||\n\t\t\t\t\tisPossibleConstructor(node.right)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * All other assignment operators are mathematical assignment operators (arithmetic or bitwise).\n\t\t\t * An assignment expression with a mathematical operator can either evaluate to a primitive value,\n\t\t\t * or throw, depending on the operands. Thus, it cannot evaluate to a constructor function.\n\t\t\t */\n\t\t\treturn false;\n\n\t\tcase \"LogicalExpression\":\n\t\t\t/*\n\t\t\t * If the && operator short-circuits, the left side was falsy and therefore not a constructor, and if\n\t\t\t * it doesn't short-circuit, it takes the value from the right side, so the right side must always be a\n\t\t\t * possible constructor. A future improvement could verify that the left side could be truthy by\n\t\t\t * excluding falsy literals.\n\t\t\t */\n\t\t\tif (node.operator === \"&&\") {\n\t\t\t\treturn isPossibleConstructor(node.right);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\tisPossibleConstructor(node.left) ||\n\t\t\t\tisPossibleConstructor(node.right)\n\t\t\t);\n\n\t\tcase \"ConditionalExpression\":\n\t\t\treturn (\n\t\t\t\tisPossibleConstructor(node.alternate) ||\n\t\t\t\tisPossibleConstructor(node.consequent)\n\t\t\t);\n\n\t\tcase \"SequenceExpression\": {\n\t\t\tconst lastExpression = node.expressions.at(-1);\n\n\t\t\treturn isPossibleConstructor(lastExpression);\n\t\t}\n\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\n/**\n * A class to store information about a code path segment.\n */\nclass SegmentInfo {\n\t/**\n\t * Indicates if super() is called in all code paths.\n\t * @type {boolean}\n\t */\n\tcalledInEveryPaths = false;\n\n\t/**\n\t * Indicates if super() is called in any code paths.\n\t * @type {boolean}\n\t */\n\tcalledInSomePaths = false;\n\n\t/**\n\t * The nodes which have been validated and don't need to be reconsidered.\n\t * @type {ASTNode[]}\n\t */\n\tvalidNodes = [];\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require `super()` calls in constructors\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/constructor-super\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tmissingSome: \"Lacked a call of 'super()' in some code paths.\",\n\t\t\tmissingAll: \"Expected to call 'super()'.\",\n\n\t\t\tduplicate: \"Unexpected duplicate 'super()'.\",\n\t\t\tbadSuper:\n\t\t\t\t\"Unexpected 'super()' because 'super' is not a constructor.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t/*\n\t\t * {{hasExtends: boolean, scope: Scope, codePath: CodePath}[]}\n\t\t * Information for each constructor.\n\t\t * - upper:      Information of the upper constructor.\n\t\t * - hasExtends: A flag which shows whether own class has a valid `extends`\n\t\t *               part.\n\t\t * - scope:      The scope of own class.\n\t\t * - codePath:   The code path object of the constructor.\n\t\t */\n\t\tlet funcInfo = null;\n\n\t\t/**\n\t\t * @type {Record<string, SegmentInfo>}\n\t\t */\n\t\tconst segInfoMap = Object.create(null);\n\n\t\t/**\n\t\t * Gets the flag which shows `super()` is called in some paths.\n\t\t * @param {CodePathSegment} segment A code path segment to get.\n\t\t * @returns {boolean} The flag which shows `super()` is called in some paths\n\t\t */\n\t\tfunction isCalledInSomePath(segment) {\n\t\t\treturn (\n\t\t\t\tsegment.reachable && segInfoMap[segment.id].calledInSomePaths\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a segment has been seen in the traversal.\n\t\t * @param {CodePathSegment} segment A code path segment to check.\n\t\t * @returns {boolean} `true` if the segment has been seen.\n\t\t */\n\t\tfunction hasSegmentBeenSeen(segment) {\n\t\t\treturn !!segInfoMap[segment.id];\n\t\t}\n\n\t\t/**\n\t\t * Gets the flag which shows `super()` is called in all paths.\n\t\t * @param {CodePathSegment} segment A code path segment to get.\n\t\t * @returns {boolean} The flag which shows `super()` is called in all paths.\n\t\t */\n\t\tfunction isCalledInEveryPath(segment) {\n\t\t\treturn (\n\t\t\t\tsegment.reachable && segInfoMap[segment.id].calledInEveryPaths\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\t/**\n\t\t\t * Stacks a constructor information.\n\t\t\t * @param {CodePath} codePath A code path which was started.\n\t\t\t * @param {ASTNode} node The current node.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tonCodePathStart(codePath, node) {\n\t\t\t\tif (isConstructorFunction(node)) {\n\t\t\t\t\t// Class > ClassBody > MethodDefinition > FunctionExpression\n\t\t\t\t\tconst classNode = node.parent.parent.parent;\n\t\t\t\t\tconst superClass = classNode.superClass;\n\n\t\t\t\t\tfuncInfo = {\n\t\t\t\t\t\tupper: funcInfo,\n\t\t\t\t\t\tisConstructor: true,\n\t\t\t\t\t\thasExtends: Boolean(superClass),\n\t\t\t\t\t\tsuperIsConstructor: isPossibleConstructor(superClass),\n\t\t\t\t\t\tcodePath,\n\t\t\t\t\t\tcurrentSegments: new Set(),\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tfuncInfo = {\n\t\t\t\t\t\tupper: funcInfo,\n\t\t\t\t\t\tisConstructor: false,\n\t\t\t\t\t\thasExtends: false,\n\t\t\t\t\t\tsuperIsConstructor: false,\n\t\t\t\t\t\tcodePath,\n\t\t\t\t\t\tcurrentSegments: new Set(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Pops a constructor information.\n\t\t\t * And reports if `super()` lacked.\n\t\t\t * @param {CodePath} codePath A code path which was ended.\n\t\t\t * @param {ASTNode} node The current node.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tonCodePathEnd(codePath, node) {\n\t\t\t\tconst hasExtends = funcInfo.hasExtends;\n\n\t\t\t\t// Pop.\n\t\t\t\tfuncInfo = funcInfo.upper;\n\n\t\t\t\tif (!hasExtends) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Reports if `super()` lacked.\n\t\t\t\tconst returnedSegments = codePath.returnedSegments;\n\t\t\t\tconst calledInEveryPaths =\n\t\t\t\t\treturnedSegments.every(isCalledInEveryPath);\n\t\t\t\tconst calledInSomePaths =\n\t\t\t\t\treturnedSegments.some(isCalledInSomePath);\n\n\t\t\t\tif (!calledInEveryPaths) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tmessageId: calledInSomePaths\n\t\t\t\t\t\t\t? \"missingSome\"\n\t\t\t\t\t\t\t: \"missingAll\",\n\t\t\t\t\t\tnode: node.parent,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Initialize information of a given code path segment.\n\t\t\t * @param {CodePathSegment} segment A code path segment to initialize.\n\t\t\t * @param {CodePathSegment} node Node that starts the segment.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tonCodePathSegmentStart(segment, node) {\n\t\t\t\tfuncInfo.currentSegments.add(segment);\n\n\t\t\t\tif (!(funcInfo.isConstructor && funcInfo.hasExtends)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Initialize info.\n\t\t\t\tconst info = (segInfoMap[segment.id] = new SegmentInfo());\n\n\t\t\t\tconst seenPrevSegments =\n\t\t\t\t\tsegment.prevSegments.filter(hasSegmentBeenSeen);\n\n\t\t\t\t// When there are previous segments, aggregates these.\n\t\t\t\tif (seenPrevSegments.length > 0) {\n\t\t\t\t\tinfo.calledInSomePaths =\n\t\t\t\t\t\tseenPrevSegments.some(isCalledInSomePath);\n\t\t\t\t\tinfo.calledInEveryPaths =\n\t\t\t\t\t\tseenPrevSegments.every(isCalledInEveryPath);\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * ForStatement > *.update segments are a special case as they are created in advance,\n\t\t\t\t * without seen previous segments. Since they logically don't affect `calledInEveryPaths`\n\t\t\t\t * calculations, and they can never be a lone previous segment of another one, we'll set\n\t\t\t\t * their `calledInEveryPaths` to `true` to effectively ignore them in those calculations.\n\t\t\t\t * .\n\t\t\t\t */\n\t\t\t\tif (\n\t\t\t\t\tnode.parent &&\n\t\t\t\t\tnode.parent.type === \"ForStatement\" &&\n\t\t\t\t\tnode.parent.update === node\n\t\t\t\t) {\n\t\t\t\t\tinfo.calledInEveryPaths = true;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentStart(segment) {\n\t\t\t\tfuncInfo.currentSegments.add(segment);\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentEnd(segment) {\n\t\t\t\tfuncInfo.currentSegments.delete(segment);\n\t\t\t},\n\n\t\t\tonCodePathSegmentEnd(segment) {\n\t\t\t\tfuncInfo.currentSegments.delete(segment);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Update information of the code path segment when a code path was\n\t\t\t * looped.\n\t\t\t * @param {CodePathSegment} fromSegment The code path segment of the\n\t\t\t *      end of a loop.\n\t\t\t * @param {CodePathSegment} toSegment A code path segment of the head\n\t\t\t *      of a loop.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tonCodePathSegmentLoop(fromSegment, toSegment) {\n\t\t\t\tif (!(funcInfo.isConstructor && funcInfo.hasExtends)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfuncInfo.codePath.traverseSegments(\n\t\t\t\t\t{ first: toSegment, last: fromSegment },\n\t\t\t\t\t(segment, controller) => {\n\t\t\t\t\t\tconst info = segInfoMap[segment.id];\n\n\t\t\t\t\t\t// skip segments after the loop\n\t\t\t\t\t\tif (!info) {\n\t\t\t\t\t\t\tcontroller.skip();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst seenPrevSegments =\n\t\t\t\t\t\t\tsegment.prevSegments.filter(hasSegmentBeenSeen);\n\t\t\t\t\t\tconst calledInSomePreviousPaths =\n\t\t\t\t\t\t\tseenPrevSegments.some(isCalledInSomePath);\n\t\t\t\t\t\tconst calledInEveryPreviousPaths =\n\t\t\t\t\t\t\tseenPrevSegments.every(isCalledInEveryPath);\n\n\t\t\t\t\t\tinfo.calledInSomePaths ||= calledInSomePreviousPaths;\n\t\t\t\t\t\tinfo.calledInEveryPaths ||= calledInEveryPreviousPaths;\n\n\t\t\t\t\t\t// If flags become true anew, reports the valid nodes.\n\t\t\t\t\t\tif (calledInSomePreviousPaths) {\n\t\t\t\t\t\t\tconst nodes = info.validNodes;\n\n\t\t\t\t\t\t\tinfo.validNodes = [];\n\n\t\t\t\t\t\t\tfor (let i = 0; i < nodes.length; ++i) {\n\t\t\t\t\t\t\t\tconst node = nodes[i];\n\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tmessageId: \"duplicate\",\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Checks for a call of `super()`.\n\t\t\t * @param {ASTNode} node A CallExpression node to check.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\t\"CallExpression:exit\"(node) {\n\t\t\t\tif (!(funcInfo.isConstructor && funcInfo.hasExtends)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Skips except `super()`.\n\t\t\t\tif (node.callee.type !== \"Super\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Reports if needed.\n\t\t\t\tconst segments = funcInfo.currentSegments;\n\t\t\t\tlet duplicate = false;\n\t\t\t\tlet info = null;\n\n\t\t\t\tfor (const segment of segments) {\n\t\t\t\t\tif (segment.reachable) {\n\t\t\t\t\t\tinfo = segInfoMap[segment.id];\n\n\t\t\t\t\t\tduplicate = duplicate || info.calledInSomePaths;\n\t\t\t\t\t\tinfo.calledInSomePaths = info.calledInEveryPaths = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (info) {\n\t\t\t\t\tif (duplicate) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tmessageId: \"duplicate\",\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (!funcInfo.superIsConstructor) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tmessageId: \"badSuper\",\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tinfo.validNodes.push(node);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Set the mark to the returned path as `super()` was called.\n\t\t\t * @param {ASTNode} node A ReturnStatement node to check.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tReturnStatement(node) {\n\t\t\t\tif (!(funcInfo.isConstructor && funcInfo.hasExtends)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Skips if no argument.\n\t\t\t\tif (!node.argument) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Returning argument is a substitute of 'super()'.\n\t\t\t\tconst segments = funcInfo.currentSegments;\n\n\t\t\t\tfor (const segment of segments) {\n\t\t\t\t\tif (segment.reachable) {\n\t\t\t\t\t\tconst info = segInfoMap[segment.id];\n\n\t\t\t\t\t\tinfo.calledInSomePaths = info.calledInEveryPaths = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag statements without curly braces\n * @author Nicholas C. Zakas\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce consistent brace style for all control statements\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/curly\",\n\t\t},\n\n\t\tschema: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"all\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 1,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"multi\", \"multi-line\", \"multi-or-nest\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"consistent\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 2,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tdefaultOptions: [\"all\"],\n\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tmissingCurlyAfter: \"Expected { after '{{name}}'.\",\n\t\t\tmissingCurlyAfterCondition:\n\t\t\t\t\"Expected { after '{{name}}' condition.\",\n\t\t\tunexpectedCurlyAfter: \"Unnecessary { after '{{name}}'.\",\n\t\t\tunexpectedCurlyAfterCondition:\n\t\t\t\t\"Unnecessary { after '{{name}}' condition.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst multiOnly = context.options[0] === \"multi\";\n\t\tconst multiLine = context.options[0] === \"multi-line\";\n\t\tconst multiOrNest = context.options[0] === \"multi-or-nest\";\n\t\tconst consistent = context.options[1] === \"consistent\";\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Determines if a given node is a one-liner that's on the same line as it's preceding code.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} True if the node is a one-liner that's on the same line as it's preceding code.\n\t\t * @private\n\t\t */\n\t\tfunction isCollapsedOneLiner(node) {\n\t\t\tconst before = sourceCode.getTokenBefore(node);\n\t\t\tconst last = sourceCode.getLastToken(node);\n\t\t\tconst lastExcludingSemicolon = astUtils.isSemicolonToken(last)\n\t\t\t\t? sourceCode.getTokenBefore(last)\n\t\t\t\t: last;\n\n\t\t\treturn (\n\t\t\t\tbefore.loc.start.line === lastExcludingSemicolon.loc.end.line\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a given node is a one-liner.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} True if the node is a one-liner.\n\t\t * @private\n\t\t */\n\t\tfunction isOneLiner(node) {\n\t\t\tif (node.type === \"EmptyStatement\") {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst first = sourceCode.getFirstToken(node);\n\t\t\tconst last = sourceCode.getLastToken(node);\n\t\t\tconst lastExcludingSemicolon = astUtils.isSemicolonToken(last)\n\t\t\t\t? sourceCode.getTokenBefore(last)\n\t\t\t\t: last;\n\n\t\t\treturn first.loc.start.line === lastExcludingSemicolon.loc.end.line;\n\t\t}\n\n\t\t/**\n\t\t * Determines if a semicolon needs to be inserted after removing a set of curly brackets, in order to avoid a SyntaxError.\n\t\t * @param {Token} closingBracket The } token\n\t\t * @returns {boolean} `true` if a semicolon needs to be inserted after the last statement in the block.\n\t\t */\n\t\tfunction needsSemicolon(closingBracket) {\n\t\t\tconst tokenBefore = sourceCode.getTokenBefore(closingBracket);\n\t\t\tconst tokenAfter = sourceCode.getTokenAfter(closingBracket);\n\t\t\tconst lastBlockNode = sourceCode.getNodeByRangeIndex(\n\t\t\t\ttokenBefore.range[0],\n\t\t\t);\n\n\t\t\tif (astUtils.isSemicolonToken(tokenBefore)) {\n\t\t\t\t// If the last statement already has a semicolon, don't add another one.\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!tokenAfter) {\n\t\t\t\t// If there are no statements after this block, there is no need to add a semicolon.\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tlastBlockNode.type === \"BlockStatement\" &&\n\t\t\t\tlastBlockNode.parent.type !== \"FunctionExpression\" &&\n\t\t\t\tlastBlockNode.parent.type !== \"ArrowFunctionExpression\"\n\t\t\t) {\n\t\t\t\t/*\n\t\t\t\t * If the last node surrounded by curly brackets is a BlockStatement (other than a FunctionExpression or an ArrowFunctionExpression),\n\t\t\t\t * don't insert a semicolon. Otherwise, the semicolon would be parsed as a separate statement, which would cause\n\t\t\t\t * a SyntaxError if it was followed by `else`.\n\t\t\t\t */\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (tokenBefore.loc.end.line === tokenAfter.loc.start.line) {\n\t\t\t\t// If the next token is on the same line, insert a semicolon.\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (/^[([/`+-]/u.test(tokenAfter.value)) {\n\t\t\t\t// If the next token starts with a character that would disrupt ASI, insert a semicolon.\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttokenBefore.type === \"Punctuator\" &&\n\t\t\t\t(tokenBefore.value === \"++\" || tokenBefore.value === \"--\")\n\t\t\t) {\n\t\t\t\t// If the last token is ++ or --, insert a semicolon to avoid disrupting ASI.\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Otherwise, do not insert a semicolon.\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Prepares to check the body of a node to see if it's a block statement.\n\t\t * @param {ASTNode} node The node to report if there's a problem.\n\t\t * @param {ASTNode} body The body node to check for blocks.\n\t\t * @param {string} name The name to report if there's a problem.\n\t\t * @param {{ condition: boolean }} opts Options to pass to the report functions\n\t\t * @returns {Object} a prepared check object, with \"actual\", \"expected\", \"check\" properties.\n\t\t *   \"actual\" will be `true` or `false` whether the body is already a block statement.\n\t\t *   \"expected\" will be `true` or `false` if the body should be a block statement or not, or\n\t\t *   `null` if it doesn't matter, depending on the rule options. It can be modified to change\n\t\t *   the final behavior of \"check\".\n\t\t *   \"check\" will be a function reporting appropriate problems depending on the other\n\t\t *   properties.\n\t\t */\n\t\tfunction prepareCheck(node, body, name, opts) {\n\t\t\tconst hasBlock = body.type === \"BlockStatement\";\n\t\t\tlet expected = null;\n\n\t\t\tif (\n\t\t\t\thasBlock &&\n\t\t\t\t(body.body.length !== 1 ||\n\t\t\t\t\tastUtils.areBracesNecessary(body, sourceCode))\n\t\t\t) {\n\t\t\t\texpected = true;\n\t\t\t} else if (multiOnly) {\n\t\t\t\texpected = false;\n\t\t\t} else if (multiLine) {\n\t\t\t\tif (!isCollapsedOneLiner(body)) {\n\t\t\t\t\texpected = true;\n\t\t\t\t}\n\n\t\t\t\t// otherwise, the body is allowed to have braces or not to have braces\n\t\t\t} else if (multiOrNest) {\n\t\t\t\tif (hasBlock) {\n\t\t\t\t\tconst statement = body.body[0];\n\t\t\t\t\tconst leadingCommentsInBlock =\n\t\t\t\t\t\tsourceCode.getCommentsBefore(statement);\n\n\t\t\t\t\texpected =\n\t\t\t\t\t\t!isOneLiner(statement) ||\n\t\t\t\t\t\tleadingCommentsInBlock.length > 0;\n\t\t\t\t} else {\n\t\t\t\t\texpected = !isOneLiner(body);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// default \"all\"\n\t\t\t\texpected = true;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tactual: hasBlock,\n\t\t\t\texpected,\n\t\t\t\tcheck() {\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.expected !== null &&\n\t\t\t\t\t\tthis.expected !== this.actual\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (this.expected) {\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\tloc: body.loc,\n\t\t\t\t\t\t\t\tmessageId:\n\t\t\t\t\t\t\t\t\topts && opts.condition\n\t\t\t\t\t\t\t\t\t\t? \"missingCurlyAfterCondition\"\n\t\t\t\t\t\t\t\t\t\t: \"missingCurlyAfter\",\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\t\t\tfixer.replaceText(\n\t\t\t\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\t\t\t\t`{${sourceCode.getText(body)}}`,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\tloc: body.loc,\n\t\t\t\t\t\t\t\tmessageId:\n\t\t\t\t\t\t\t\t\topts && opts.condition\n\t\t\t\t\t\t\t\t\t\t? \"unexpectedCurlyAfterCondition\"\n\t\t\t\t\t\t\t\t\t\t: \"unexpectedCurlyAfter\",\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t * `do while` expressions sometimes need a space to be inserted after `do`.\n\t\t\t\t\t\t\t\t\t * e.g. `do{foo()} while (bar)` should be corrected to `do foo() while (bar)`\n\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\tconst needsPrecedingSpace =\n\t\t\t\t\t\t\t\t\t\tnode.type === \"DoWhileStatement\" &&\n\t\t\t\t\t\t\t\t\t\tsourceCode.getTokenBefore(body)\n\t\t\t\t\t\t\t\t\t\t\t.range[1] === body.range[0] &&\n\t\t\t\t\t\t\t\t\t\t!astUtils.canTokensBeAdjacent(\n\t\t\t\t\t\t\t\t\t\t\t\"do\",\n\t\t\t\t\t\t\t\t\t\t\tsourceCode.getFirstToken(body, {\n\t\t\t\t\t\t\t\t\t\t\t\tskip: 1,\n\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\tconst openingBracket =\n\t\t\t\t\t\t\t\t\t\tsourceCode.getFirstToken(body);\n\t\t\t\t\t\t\t\t\tconst closingBracket =\n\t\t\t\t\t\t\t\t\t\tsourceCode.getLastToken(body);\n\t\t\t\t\t\t\t\t\tconst lastTokenInBlock =\n\t\t\t\t\t\t\t\t\t\tsourceCode.getTokenBefore(\n\t\t\t\t\t\t\t\t\t\t\tclosingBracket,\n\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\tif (needsSemicolon(closingBracket)) {\n\t\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t\t * If removing braces would cause a SyntaxError due to multiple statements on the same line (or\n\t\t\t\t\t\t\t\t\t\t * change the semantics of the code due to ASI), don't perform a fix.\n\t\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst resultingBodyText =\n\t\t\t\t\t\t\t\t\t\tsourceCode\n\t\t\t\t\t\t\t\t\t\t\t.getText()\n\t\t\t\t\t\t\t\t\t\t\t.slice(\n\t\t\t\t\t\t\t\t\t\t\t\topeningBracket.range[1],\n\t\t\t\t\t\t\t\t\t\t\t\tlastTokenInBlock.range[0],\n\t\t\t\t\t\t\t\t\t\t\t) +\n\t\t\t\t\t\t\t\t\t\tsourceCode.getText(lastTokenInBlock) +\n\t\t\t\t\t\t\t\t\t\tsourceCode\n\t\t\t\t\t\t\t\t\t\t\t.getText()\n\t\t\t\t\t\t\t\t\t\t\t.slice(\n\t\t\t\t\t\t\t\t\t\t\t\tlastTokenInBlock.range[1],\n\t\t\t\t\t\t\t\t\t\t\t\tclosingBracket.range[0],\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\t\t\t\t(needsPrecedingSpace ? \" \" : \"\") +\n\t\t\t\t\t\t\t\t\t\t\tresultingBodyText,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Prepares to check the bodies of a \"if\", \"else if\" and \"else\" chain.\n\t\t * @param {ASTNode} node The first IfStatement node of the chain.\n\t\t * @returns {Object[]} prepared checks for each body of the chain. See `prepareCheck` for more\n\t\t *   information.\n\t\t */\n\t\tfunction prepareIfChecks(node) {\n\t\t\tconst preparedChecks = [];\n\n\t\t\tfor (\n\t\t\t\tlet currentNode = node;\n\t\t\t\tcurrentNode;\n\t\t\t\tcurrentNode = currentNode.alternate\n\t\t\t) {\n\t\t\t\tpreparedChecks.push(\n\t\t\t\t\tprepareCheck(currentNode, currentNode.consequent, \"if\", {\n\t\t\t\t\t\tcondition: true,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tcurrentNode.alternate &&\n\t\t\t\t\tcurrentNode.alternate.type !== \"IfStatement\"\n\t\t\t\t) {\n\t\t\t\t\tpreparedChecks.push(\n\t\t\t\t\t\tprepareCheck(\n\t\t\t\t\t\t\tcurrentNode,\n\t\t\t\t\t\t\tcurrentNode.alternate,\n\t\t\t\t\t\t\t\"else\",\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (consistent) {\n\t\t\t\t/*\n\t\t\t\t * If any node should have or already have braces, make sure they\n\t\t\t\t * all have braces.\n\t\t\t\t * If all nodes shouldn't have braces, make sure they don't.\n\t\t\t\t */\n\t\t\t\tconst expected = preparedChecks.some(preparedCheck => {\n\t\t\t\t\tif (preparedCheck.expected !== null) {\n\t\t\t\t\t\treturn preparedCheck.expected;\n\t\t\t\t\t}\n\t\t\t\t\treturn preparedCheck.actual;\n\t\t\t\t});\n\n\t\t\t\tpreparedChecks.forEach(preparedCheck => {\n\t\t\t\t\tpreparedCheck.expected = expected;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn preparedChecks;\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tIfStatement(node) {\n\t\t\t\tconst parent = node.parent;\n\t\t\t\tconst isElseIf =\n\t\t\t\t\tparent.type === \"IfStatement\" && parent.alternate === node;\n\n\t\t\t\tif (!isElseIf) {\n\t\t\t\t\t// This is a top `if`, check the whole `if-else-if` chain\n\t\t\t\t\tprepareIfChecks(node).forEach(preparedCheck => {\n\t\t\t\t\t\tpreparedCheck.check();\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Skip `else if`, it's already checked (when the top `if` was visited)\n\t\t\t},\n\n\t\t\tWhileStatement(node) {\n\t\t\t\tprepareCheck(node, node.body, \"while\", {\n\t\t\t\t\tcondition: true,\n\t\t\t\t}).check();\n\t\t\t},\n\n\t\t\tDoWhileStatement(node) {\n\t\t\t\tprepareCheck(node, node.body, \"do\").check();\n\t\t\t},\n\n\t\t\tForStatement(node) {\n\t\t\t\tprepareCheck(node, node.body, \"for\", {\n\t\t\t\t\tcondition: true,\n\t\t\t\t}).check();\n\t\t\t},\n\n\t\t\tForInStatement(node) {\n\t\t\t\tprepareCheck(node, node.body, \"for-in\").check();\n\t\t\t},\n\n\t\t\tForOfStatement(node) {\n\t\t\t\tprepareCheck(node, node.body, \"for-of\").check();\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview require default case in switch statements\n * @author Aliaksei Shytkin\n */\n\"use strict\";\n\nconst DEFAULT_COMMENT_PATTERN = /^no default$/iu;\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [{}],\n\n\t\tdocs: {\n\t\t\tdescription: \"Require `default` cases in `switch` statements\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/default-case\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tcommentPattern: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tmissingDefaultCase: \"Expected a default case.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [options] = context.options;\n\t\tconst commentPattern = options.commentPattern\n\t\t\t? new RegExp(options.commentPattern, \"u\")\n\t\t\t: DEFAULT_COMMENT_PATTERN;\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Shortcut to get last element of array\n\t\t * @param {*[]} collection Array\n\t\t * @returns {any} Last element\n\t\t */\n\t\tfunction last(collection) {\n\t\t\treturn collection.at(-1);\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tSwitchStatement(node) {\n\t\t\t\tif (!node.cases.length) {\n\t\t\t\t\t/*\n\t\t\t\t\t * skip check of empty switch because there is no easy way\n\t\t\t\t\t * to extract comments inside it now\n\t\t\t\t\t */\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst hasDefault = node.cases.some(v => v.test === null);\n\n\t\t\t\tif (!hasDefault) {\n\t\t\t\t\tlet comment;\n\n\t\t\t\t\tconst lastCase = last(node.cases);\n\t\t\t\t\tconst comments = sourceCode.getCommentsAfter(lastCase);\n\n\t\t\t\t\tif (comments.length) {\n\t\t\t\t\t\tcomment = last(comments);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!comment ||\n\t\t\t\t\t\t!commentPattern.test(comment.value.trim())\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"missingDefaultCase\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce `default` clauses in `switch` statements to be last\n * @author Milos Djermanovic\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce `default` clauses in `switch` statements to be last\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/default-case-last\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnotLast: \"Default clause should be the last clause.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tSwitchStatement(node) {\n\t\t\t\tconst cases = node.cases,\n\t\t\t\t\tindexOfDefault = cases.findIndex(c => c.test === null);\n\n\t\t\t\tif (\n\t\t\t\t\tindexOfDefault !== -1 &&\n\t\t\t\t\tindexOfDefault !== cases.length - 1\n\t\t\t\t) {\n\t\t\t\t\tconst defaultClause = cases[indexOfDefault];\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: defaultClause,\n\t\t\t\t\t\tmessageId: \"notLast\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview enforce default parameters to be last\n * @author Chiawen Chen\n */\n\n\"use strict\";\n\n/**\n * Checks if node is required: i.e. does not have a default value or ? optional indicator.\n * @param {ASTNode} node the node to be evaluated\n * @returns {boolean} true if the node is required, false if not.\n */\nfunction isRequiredParameter(node) {\n\treturn !(\n\t\tnode.type === \"AssignmentPattern\" ||\n\t\tnode.type === \"RestElement\" ||\n\t\tnode.optional\n\t);\n}\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce default parameters to be last\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/default-param-last\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tshouldBeLast: \"Default parameters should be last.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t/**\n\t\t * Handler for function contexts.\n\t\t * @param {ASTNode} node function node\n\t\t * @returns {void}\n\t\t */\n\t\tfunction handleFunction(node) {\n\t\t\tlet hasSeenRequiredParameter = false;\n\n\t\t\tfor (let i = node.params.length - 1; i >= 0; i -= 1) {\n\t\t\t\tconst current = node.params[i];\n\t\t\t\tconst param =\n\t\t\t\t\tcurrent.type === \"TSParameterProperty\"\n\t\t\t\t\t\t? current.parameter\n\t\t\t\t\t\t: current;\n\n\t\t\t\tif (isRequiredParameter(param)) {\n\t\t\t\t\thasSeenRequiredParameter = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (hasSeenRequiredParameter) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: current,\n\t\t\t\t\t\tmessageId: \"shouldBeLast\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tFunctionDeclaration: handleFunction,\n\t\t\tFunctionExpression: handleFunction,\n\t\t\tArrowFunctionExpression: handleFunction,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Validates newlines before and after dots\n * @author Greg Cochard\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"dot-location\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/dot-location\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce consistent newlines before and after dots\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/dot-location\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"object\", \"property\"],\n\t\t\t},\n\t\t],\n\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\texpectedDotAfterObject:\n\t\t\t\t\"Expected dot to be on same line as object.\",\n\t\t\texpectedDotBeforeProperty:\n\t\t\t\t\"Expected dot to be on same line as property.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst config = context.options[0];\n\n\t\t// default to onObject if no preference is passed\n\t\tconst onObject = config === \"object\" || !config;\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Reports if the dot between object and property is on the correct location.\n\t\t * @param {ASTNode} node The `MemberExpression` node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkDotLocation(node) {\n\t\t\tconst property = node.property;\n\t\t\tconst dotToken = sourceCode.getTokenBefore(property);\n\n\t\t\tif (onObject) {\n\t\t\t\t// `obj` expression can be parenthesized, but those paren tokens are not a part of the `obj` node.\n\t\t\t\tconst tokenBeforeDot = sourceCode.getTokenBefore(dotToken);\n\n\t\t\t\tif (!astUtils.isTokenOnSameLine(tokenBeforeDot, dotToken)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: dotToken.loc,\n\t\t\t\t\t\tmessageId: \"expectedDotAfterObject\",\n\t\t\t\t\t\t*fix(fixer) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tdotToken.value.startsWith(\".\") &&\n\t\t\t\t\t\t\t\tastUtils.isDecimalIntegerNumericToken(\n\t\t\t\t\t\t\t\t\ttokenBeforeDot,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tyield fixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\ttokenBeforeDot,\n\t\t\t\t\t\t\t\t\t` ${dotToken.value}`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tyield fixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\ttokenBeforeDot,\n\t\t\t\t\t\t\t\t\tdotToken.value,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tyield fixer.remove(dotToken);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (!astUtils.isTokenOnSameLine(dotToken, property)) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: dotToken.loc,\n\t\t\t\t\tmessageId: \"expectedDotBeforeProperty\",\n\t\t\t\t\t*fix(fixer) {\n\t\t\t\t\t\tyield fixer.remove(dotToken);\n\t\t\t\t\t\tyield fixer.insertTextBefore(property, dotToken.value);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks the spacing of the dot within a member expression.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkNode(node) {\n\t\t\tif (!node.computed) {\n\t\t\t\tcheckDotLocation(node);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tMemberExpression: checkNode,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A shared list of ES3 keywords.\n * @author Josh Perez\n */\n\"use strict\";\n\nmodule.exports = [\n\t\"abstract\",\n\t\"boolean\",\n\t\"break\",\n\t\"byte\",\n\t\"case\",\n\t\"catch\",\n\t\"char\",\n\t\"class\",\n\t\"const\",\n\t\"continue\",\n\t\"debugger\",\n\t\"default\",\n\t\"delete\",\n\t\"do\",\n\t\"double\",\n\t\"else\",\n\t\"enum\",\n\t\"export\",\n\t\"extends\",\n\t\"false\",\n\t\"final\",\n\t\"finally\",\n\t\"float\",\n\t\"for\",\n\t\"function\",\n\t\"goto\",\n\t\"if\",\n\t\"implements\",\n\t\"import\",\n\t\"in\",\n\t\"instanceof\",\n\t\"int\",\n\t\"interface\",\n\t\"long\",\n\t\"native\",\n\t\"new\",\n\t\"null\",\n\t\"package\",\n\t\"private\",\n\t\"protected\",\n\t\"public\",\n\t\"return\",\n\t\"short\",\n\t\"static\",\n\t\"super\",\n\t\"switch\",\n\t\"synchronized\",\n\t\"this\",\n\t\"throw\",\n\t\"throws\",\n\t\"transient\",\n\t\"true\",\n\t\"try\",\n\t\"typeof\",\n\t\"var\",\n\t\"void\",\n\t\"volatile\",\n\t\"while\",\n\t\"with\",\n];\n", "/**\n * @fileoverview Rule to warn about using dot notation instead of square bracket notation when possible.\n * @author Josh Perez\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst keywords = require(\"./utils/keywords\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\nconst validIdentifier = /^[a-zA-Z_$][\\w$]*$/u;\n\n// `null` literal must be handled separately.\nconst literalTypesToCheck = new Set([\"string\", \"boolean\"]);\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowKeywords: true,\n\t\t\t\tallowPattern: \"\",\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce dot notation whenever possible\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/dot-notation\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowKeywords: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowPattern: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tuseDot: \"[{{key}}] is better written in dot notation.\",\n\t\t\tuseBrackets: \".{{key}} is a syntax error.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [options] = context.options;\n\t\tconst allowKeywords = options.allowKeywords;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tlet allowPattern;\n\n\t\tif (options.allowPattern) {\n\t\t\tallowPattern = new RegExp(options.allowPattern, \"u\");\n\t\t}\n\n\t\t/**\n\t\t * Check if the property is valid dot notation\n\t\t * @param {ASTNode} node The dot notation node\n\t\t * @param {string|boolean|null} value Value which is to be checked\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkComputedProperty(node, value) {\n\t\t\tif (\n\t\t\t\tvalidIdentifier.test(value) &&\n\t\t\t\t(allowKeywords || !keywords.includes(String(value))) &&\n\t\t\t\t!(allowPattern && allowPattern.test(value))\n\t\t\t) {\n\t\t\t\tconst formattedValue =\n\t\t\t\t\tnode.property.type === \"Literal\"\n\t\t\t\t\t\t? JSON.stringify(value)\n\t\t\t\t\t\t: `\\`${value}\\``;\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: node.property,\n\t\t\t\t\tmessageId: \"useDot\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tkey: formattedValue,\n\t\t\t\t\t},\n\t\t\t\t\t*fix(fixer) {\n\t\t\t\t\t\tconst leftBracket = sourceCode.getTokenAfter(\n\t\t\t\t\t\t\tnode.object,\n\t\t\t\t\t\t\tastUtils.isOpeningBracketToken,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst rightBracket = sourceCode.getLastToken(node);\n\t\t\t\t\t\tconst nextToken = sourceCode.getTokenAfter(node);\n\n\t\t\t\t\t\t// Don't perform any fixes if there are comments inside the brackets.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tsourceCode.commentsExistBetween(\n\t\t\t\t\t\t\t\tleftBracket,\n\t\t\t\t\t\t\t\trightBracket,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Replace the brackets by an identifier.\n\t\t\t\t\t\tif (!node.optional) {\n\t\t\t\t\t\t\tyield fixer.insertTextBefore(\n\t\t\t\t\t\t\t\tleftBracket,\n\t\t\t\t\t\t\t\tastUtils.isDecimalInteger(node.object)\n\t\t\t\t\t\t\t\t\t? \" .\"\n\t\t\t\t\t\t\t\t\t: \".\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tyield fixer.replaceTextRange(\n\t\t\t\t\t\t\t[leftBracket.range[0], rightBracket.range[1]],\n\t\t\t\t\t\t\tString(value),\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// Insert a space after the property if it will be connected to the next token.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tnextToken &&\n\t\t\t\t\t\t\trightBracket.range[1] === nextToken.range[0] &&\n\t\t\t\t\t\t\t!astUtils.canTokensBeAdjacent(\n\t\t\t\t\t\t\t\tString(value),\n\t\t\t\t\t\t\t\tnextToken,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tyield fixer.insertTextAfter(node, \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tMemberExpression(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.computed &&\n\t\t\t\t\tnode.property.type === \"Literal\" &&\n\t\t\t\t\t(literalTypesToCheck.has(typeof node.property.value) ||\n\t\t\t\t\t\tastUtils.isNullLiteral(node.property))\n\t\t\t\t) {\n\t\t\t\t\tcheckComputedProperty(node, node.property.value);\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tnode.computed &&\n\t\t\t\t\tastUtils.isStaticTemplateLiteral(node.property)\n\t\t\t\t) {\n\t\t\t\t\tcheckComputedProperty(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tnode.property.quasis[0].value.cooked,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t!allowKeywords &&\n\t\t\t\t\t!node.computed &&\n\t\t\t\t\tnode.property.type === \"Identifier\" &&\n\t\t\t\t\tkeywords.includes(String(node.property.name))\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: node.property,\n\t\t\t\t\t\tmessageId: \"useBrackets\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tkey: node.property.name,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t*fix(fixer) {\n\t\t\t\t\t\t\tconst dotToken = sourceCode.getTokenBefore(\n\t\t\t\t\t\t\t\tnode.property,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t// A statement that starts with `let[` is parsed as a destructuring variable declaration, not a MemberExpression.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tnode.object.type === \"Identifier\" &&\n\t\t\t\t\t\t\t\tnode.object.name === \"let\" &&\n\t\t\t\t\t\t\t\t!node.optional\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Don't perform any fixes if there are comments between the dot and the property name.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tsourceCode.commentsExistBetween(\n\t\t\t\t\t\t\t\t\tdotToken,\n\t\t\t\t\t\t\t\t\tnode.property,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Replace the identifier to brackets.\n\t\t\t\t\t\t\tif (!node.optional) {\n\t\t\t\t\t\t\t\tyield fixer.remove(dotToken);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tyield fixer.replaceText(\n\t\t\t\t\t\t\t\tnode.property,\n\t\t\t\t\t\t\t\t`[\"${node.property.name}\"]`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Require or disallow newline at the end of files\n * @author Nodeca Team <https://github.com/nodeca>\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"eol-last\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/eol-last\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require or disallow newline at the end of files\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/eol-last\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"always\", \"never\", \"unix\", \"windows\"],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tmissing: \"Newline required at end of file but not found.\",\n\t\t\tunexpected: \"Newline not allowed at end of file.\",\n\t\t},\n\t},\n\tcreate(context) {\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram: function checkBadEOF(node) {\n\t\t\t\tconst sourceCode = context.sourceCode,\n\t\t\t\t\tsrc = sourceCode.getText(),\n\t\t\t\t\tlastLine = sourceCode.lines.at(-1),\n\t\t\t\t\tlocation = {\n\t\t\t\t\t\tcolumn: lastLine.length,\n\t\t\t\t\t\tline: sourceCode.lines.length,\n\t\t\t\t\t},\n\t\t\t\t\tLF = \"\\n\",\n\t\t\t\t\tCRLF = `\\r${LF}`,\n\t\t\t\t\tendsWithNewline = src.endsWith(LF);\n\n\t\t\t\t/*\n\t\t\t\t * Empty source is always valid: No content in file so we don't\n\t\t\t\t * need to lint for a newline on the last line of content.\n\t\t\t\t */\n\t\t\t\tif (!src.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet mode = context.options[0] || \"always\",\n\t\t\t\t\tappendCRLF = false;\n\n\t\t\t\tif (mode === \"unix\") {\n\t\t\t\t\t// `\"unix\"` should behave exactly as `\"always\"`\n\t\t\t\t\tmode = \"always\";\n\t\t\t\t}\n\t\t\t\tif (mode === \"windows\") {\n\t\t\t\t\t// `\"windows\"` should behave exactly as `\"always\"`, but append CRLF in the fixer for backwards compatibility\n\t\t\t\t\tmode = \"always\";\n\t\t\t\t\tappendCRLF = true;\n\t\t\t\t}\n\t\t\t\tif (mode === \"always\" && !endsWithNewline) {\n\t\t\t\t\t// File is not newline-terminated, but should be\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: location,\n\t\t\t\t\t\tmessageId: \"missing\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.insertTextAfterRange(\n\t\t\t\t\t\t\t\t[0, src.length],\n\t\t\t\t\t\t\t\tappendCRLF ? CRLF : LF,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t} else if (mode === \"never\" && endsWithNewline) {\n\t\t\t\t\tconst secondLastLine = sourceCode.lines.at(-2);\n\n\t\t\t\t\t// File is newline-terminated, but shouldn't be\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\t\tline: sourceCode.lines.length - 1,\n\t\t\t\t\t\t\t\tcolumn: secondLastLine.length,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tend: { line: sourceCode.lines.length, column: 0 },\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tconst finalEOLs = /(?:\\r?\\n)+$/u,\n\t\t\t\t\t\t\t\tmatch = finalEOLs.exec(sourceCode.text),\n\t\t\t\t\t\t\t\tstart = match.index,\n\t\t\t\t\t\t\t\tend = sourceCode.text.length;\n\n\t\t\t\t\t\t\treturn fixer.replaceTextRange([start, end], \"\");\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag statements that use != and == instead of !== and ===\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\t\thasSuggestions: true,\n\n\t\tdocs: {\n\t\t\tdescription: \"Require the use of `===` and `!==`\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/eqeqeq\",\n\t\t},\n\n\t\tschema: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"always\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tnull: {\n\t\t\t\t\t\t\t\t\tenum: [\"always\", \"never\", \"ignore\"],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tadditionalItems: false,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"smart\", \"allow-null\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tadditionalItems: false,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tdefaultOptions: [\"always\"],\n\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tunexpected:\n\t\t\t\t\"Expected '{{expectedOperator}}' and instead saw '{{actualOperator}}'.\",\n\t\t\treplaceOperator:\n\t\t\t\t\"Use '{{expectedOperator}}' instead of '{{actualOperator}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst config = context.options[0];\n\t\tconst options = context.options[1] || {};\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tconst nullOption =\n\t\t\tconfig === \"always\" ? options.null || \"always\" : \"ignore\";\n\t\tconst enforceRuleForNull = nullOption === \"always\";\n\t\tconst enforceInverseRuleForNull = nullOption === \"never\";\n\n\t\t/**\n\t\t * Checks if an expression is a typeof expression\n\t\t * @param {ASTNode} node The node to check\n\t\t * @returns {boolean} if the node is a typeof expression\n\t\t */\n\t\tfunction isTypeOf(node) {\n\t\t\treturn (\n\t\t\t\tnode.type === \"UnaryExpression\" && node.operator === \"typeof\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if either operand of a binary expression is a typeof operation\n\t\t * @param {ASTNode} node The node to check\n\t\t * @returns {boolean} if one of the operands is typeof\n\t\t * @private\n\t\t */\n\t\tfunction isTypeOfBinary(node) {\n\t\t\treturn isTypeOf(node.left) || isTypeOf(node.right);\n\t\t}\n\n\t\t/**\n\t\t * Checks if operands are literals of the same type (via typeof)\n\t\t * @param {ASTNode} node The node to check\n\t\t * @returns {boolean} if operands are of same type\n\t\t * @private\n\t\t */\n\t\tfunction areLiteralsAndSameType(node) {\n\t\t\treturn (\n\t\t\t\tnode.left.type === \"Literal\" &&\n\t\t\t\tnode.right.type === \"Literal\" &&\n\t\t\t\ttypeof node.left.value === typeof node.right.value\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if one of the operands is a literal null\n\t\t * @param {ASTNode} node The node to check\n\t\t * @returns {boolean} if operands are null\n\t\t * @private\n\t\t */\n\t\tfunction isNullCheck(node) {\n\t\t\treturn (\n\t\t\t\tastUtils.isNullLiteral(node.right) ||\n\t\t\t\tastUtils.isNullLiteral(node.left)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Reports a message for this rule.\n\t\t * @param {ASTNode} node The binary expression node that was checked\n\t\t * @param {string} expectedOperator The operator that was expected (either '==', '!=', '===', or '!==')\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction report(node, expectedOperator) {\n\t\t\tconst operatorToken = sourceCode.getFirstTokenBetween(\n\t\t\t\tnode.left,\n\t\t\t\tnode.right,\n\t\t\t\ttoken => token.value === node.operator,\n\t\t\t);\n\n\t\t\tconst commonReportParams = {\n\t\t\t\tnode,\n\t\t\t\tloc: operatorToken.loc,\n\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\tdata: { expectedOperator, actualOperator: node.operator },\n\t\t\t};\n\n\t\t\tif (isTypeOfBinary(node) || areLiteralsAndSameType(node)) {\n\t\t\t\tcontext.report({\n\t\t\t\t\t...commonReportParams,\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\toperatorToken,\n\t\t\t\t\t\t\texpectedOperator,\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tcontext.report({\n\t\t\t\t\t...commonReportParams,\n\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmessageId: \"replaceOperator\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\texpectedOperator,\n\t\t\t\t\t\t\t\tactualOperator: node.operator,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\t\tfixer.replaceText(\n\t\t\t\t\t\t\t\t\toperatorToken,\n\t\t\t\t\t\t\t\t\texpectedOperator,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tBinaryExpression(node) {\n\t\t\t\tconst isNull = isNullCheck(node);\n\n\t\t\t\tif (node.operator !== \"==\" && node.operator !== \"!=\") {\n\t\t\t\t\tif (enforceInverseRuleForNull && isNull) {\n\t\t\t\t\t\treport(node, node.operator.slice(0, -1));\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tconfig === \"smart\" &&\n\t\t\t\t\t(isTypeOfBinary(node) ||\n\t\t\t\t\t\tareLiteralsAndSameType(node) ||\n\t\t\t\t\t\tisNull)\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!enforceRuleForNull && isNull) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treport(node, `${node.operator}=`);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview enforce `for` loop update clause moving the counter in the right direction.(for-direction)\n * @author Aladdin-ADD<hh_2013@foxmail.com>\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst { getStaticValue } = require(\"@eslint-community/eslint-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce `for` loop update clause moving the counter in the right direction\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/for-direction\",\n\t\t},\n\n\t\tfixable: null,\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tincorrectDirection:\n\t\t\t\t\"The update clause in this loop moves the variable in the wrong direction.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst { sourceCode } = context;\n\n\t\t/**\n\t\t * report an error.\n\t\t * @param {ASTNode} node the node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node) {\n\t\t\tcontext.report({\n\t\t\t\tloc: {\n\t\t\t\t\tstart: node.loc.start,\n\t\t\t\t\tend: sourceCode.getTokenBefore(node.body).loc.end,\n\t\t\t\t},\n\t\t\t\tmessageId: \"incorrectDirection\",\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * check the right side of the assignment\n\t\t * @param {ASTNode} update UpdateExpression to check\n\t\t * @param {number} dir expected direction that could either be turned around or invalidated\n\t\t * @returns {number} return dir, the negated dir, or zero if the counter does not change or the direction is not clear\n\t\t */\n\t\tfunction getRightDirection(update, dir) {\n\t\t\tconst staticValue = getStaticValue(\n\t\t\t\tupdate.right,\n\t\t\t\tsourceCode.getScope(update),\n\t\t\t);\n\n\t\t\tif (\n\t\t\t\tstaticValue &&\n\t\t\t\t[\"bigint\", \"boolean\", \"number\"].includes(\n\t\t\t\t\ttypeof staticValue.value,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tconst sign = Math.sign(Number(staticValue.value)) || 0; // convert NaN to 0\n\n\t\t\t\treturn dir * sign;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\n\t\t/**\n\t\t * check UpdateExpression add/sub the counter\n\t\t * @param {ASTNode} update UpdateExpression to check\n\t\t * @param {string} counter variable name to check\n\t\t * @returns {number} if add return 1, if sub return -1, if nochange, return 0\n\t\t */\n\t\tfunction getUpdateDirection(update, counter) {\n\t\t\tif (\n\t\t\t\tupdate.argument.type === \"Identifier\" &&\n\t\t\t\tupdate.argument.name === counter\n\t\t\t) {\n\t\t\t\tif (update.operator === \"++\") {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\tif (update.operator === \"--\") {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\n\t\t/**\n\t\t * check AssignmentExpression add/sub the counter\n\t\t * @param {ASTNode} update AssignmentExpression to check\n\t\t * @param {string} counter variable name to check\n\t\t * @returns {number} if add return 1, if sub return -1, if nochange, return 0\n\t\t */\n\t\tfunction getAssignmentDirection(update, counter) {\n\t\t\tif (update.left.name === counter) {\n\t\t\t\tif (update.operator === \"+=\") {\n\t\t\t\t\treturn getRightDirection(update, 1);\n\t\t\t\t}\n\t\t\t\tif (update.operator === \"-=\") {\n\t\t\t\t\treturn getRightDirection(update, -1);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\t/**\n\t\t * Collects all expressions that modify the counter.\n\t\t * @param {ASTNode} node The expression node to check.\n\t\t * @param {string} counter The name of the counter variable.\n\t\t * @returns {ASTNode[]} An array of modifying expressions.\n\t\t */\n\t\tfunction getModifyingExpressions(node, counter) {\n\t\t\tif (node.type === \"SequenceExpression\") {\n\t\t\t\treturn node.expressions.flatMap(expr =>\n\t\t\t\t\tgetModifyingExpressions(expr, counter),\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tnode.type === \"UpdateExpression\" &&\n\t\t\t\tnode.argument.type === \"Identifier\" &&\n\t\t\t\tnode.argument.name === counter\n\t\t\t) {\n\t\t\t\treturn [node];\n\t\t\t}\n\t\t\tif (\n\t\t\t\tnode.type === \"AssignmentExpression\" &&\n\t\t\t\tnode.left.type === \"Identifier\" &&\n\t\t\t\tnode.left.name === counter\n\t\t\t) {\n\t\t\t\treturn [node];\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\n\t\t/**\n\t\t * Determines the direction of a single update expression for the counter.\n\t\t * @param {ASTNode} expr An expression node to check (UpdateExpression or AssignmentExpression).\n\t\t * @param {string} counter The variable name of the counter.\n\t\t * @returns {number} 1 if incrementing, -1 if decrementing, 0 if unknown or not modifying the counter.\n\t\t */\n\t\tfunction getDirectionFromExpression(expr, counter) {\n\t\t\tif (expr.type === \"UpdateExpression\") {\n\t\t\t\treturn getUpdateDirection(expr, counter);\n\t\t\t}\n\t\t\tif (expr.type === \"AssignmentExpression\") {\n\t\t\t\treturn getAssignmentDirection(expr, counter);\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn {\n\t\t\tForStatement(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.test &&\n\t\t\t\t\tnode.test.type === \"BinaryExpression\" &&\n\t\t\t\t\tnode.update\n\t\t\t\t) {\n\t\t\t\t\tfor (const counterPosition of [\"left\", \"right\"]) {\n\t\t\t\t\t\tif (node.test[counterPosition].type !== \"Identifier\") {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst counter = node.test[counterPosition].name;\n\t\t\t\t\t\tconst operator = node.test.operator;\n\t\t\t\t\t\tconst update = node.update;\n\n\t\t\t\t\t\tlet wrongDirection;\n\n\t\t\t\t\t\tif (operator === \"<\" || operator === \"<=\") {\n\t\t\t\t\t\t\twrongDirection =\n\t\t\t\t\t\t\t\tcounterPosition === \"left\" ? -1 : 1;\n\t\t\t\t\t\t} else if (operator === \">\" || operator === \">=\") {\n\t\t\t\t\t\t\twrongDirection =\n\t\t\t\t\t\t\t\tcounterPosition === \"left\" ? 1 : -1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst mutatingExpressions = getModifyingExpressions(\n\t\t\t\t\t\t\tupdate,\n\t\t\t\t\t\t\tcounter,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tmutatingExpressions.length === 1 &&\n\t\t\t\t\t\t\tgetDirectionFromExpression(\n\t\t\t\t\t\t\t\tmutatingExpressions[0],\n\t\t\t\t\t\t\t\tcounter,\n\t\t\t\t\t\t\t) === wrongDirection\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treport(node);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to control spacing within function calls\n * @author Matt DuVall <http://www.mattduvall.com>\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"function-call-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/function-call-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require or disallow spacing between function identifiers and their invocations\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/func-call-spacing\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"never\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 1,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"always\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tallowNewlines: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 2,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tmessages: {\n\t\t\tunexpectedWhitespace:\n\t\t\t\t\"Unexpected whitespace between function name and paren.\",\n\t\t\tunexpectedNewline:\n\t\t\t\t\"Unexpected newline between function name and paren.\",\n\t\t\tmissing: \"Missing space between function name and paren.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst never = context.options[0] !== \"always\";\n\t\tconst allowNewlines =\n\t\t\t!never && context.options[1] && context.options[1].allowNewlines;\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst text = sourceCode.getText();\n\n\t\t/**\n\t\t * Check if open space is present in a function name\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @param {Token} leftToken The last token of the callee. This may be the closing parenthesis that encloses the callee.\n\t\t * @param {Token} rightToken The first token of the arguments. this is the opening parenthesis that encloses the arguments.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkSpacing(node, leftToken, rightToken) {\n\t\t\tconst textBetweenTokens = text\n\t\t\t\t.slice(leftToken.range[1], rightToken.range[0])\n\t\t\t\t.replace(/\\/\\*.*?\\*\\//gu, \"\");\n\t\t\tconst hasWhitespace = /\\s/u.test(textBetweenTokens);\n\t\t\tconst hasNewline =\n\t\t\t\thasWhitespace &&\n\t\t\t\tastUtils.LINEBREAK_MATCHER.test(textBetweenTokens);\n\n\t\t\t/*\n\t\t\t * never allowNewlines hasWhitespace hasNewline message\n\t\t\t * F     F             F             F          Missing space between function name and paren.\n\t\t\t * F     F             F             T          (Invalid `!hasWhitespace && hasNewline`)\n\t\t\t * F     F             T             T          Unexpected newline between function name and paren.\n\t\t\t * F     F             T             F          (OK)\n\t\t\t * F     T             T             F          (OK)\n\t\t\t * F     T             T             T          (OK)\n\t\t\t * F     T             F             T          (Invalid `!hasWhitespace && hasNewline`)\n\t\t\t * F     T             F             F          Missing space between function name and paren.\n\t\t\t * T     T             F             F          (Invalid `never && allowNewlines`)\n\t\t\t * T     T             F             T          (Invalid `!hasWhitespace && hasNewline`)\n\t\t\t * T     T             T             T          (Invalid `never && allowNewlines`)\n\t\t\t * T     T             T             F          (Invalid `never && allowNewlines`)\n\t\t\t * T     F             T             F          Unexpected space between function name and paren.\n\t\t\t * T     F             T             T          Unexpected space between function name and paren.\n\t\t\t * T     F             F             T          (Invalid `!hasWhitespace && hasNewline`)\n\t\t\t * T     F             F             F          (OK)\n\t\t\t *\n\t\t\t * T                   T                        Unexpected space between function name and paren.\n\t\t\t * F                   F                        Missing space between function name and paren.\n\t\t\t * F     F                           T          Unexpected newline between function name and paren.\n\t\t\t */\n\n\t\t\tif (never && hasWhitespace) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: {\n\t\t\t\t\t\tstart: leftToken.loc.end,\n\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\tline: rightToken.loc.start.line,\n\t\t\t\t\t\t\tcolumn: rightToken.loc.start.column - 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmessageId: \"unexpectedWhitespace\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t// Don't remove comments.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tsourceCode.commentsExistBetween(\n\t\t\t\t\t\t\t\tleftToken,\n\t\t\t\t\t\t\t\trightToken,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If `?.` exists, it doesn't hide no-unexpected-multiline errors\n\t\t\t\t\t\tif (node.optional) {\n\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t[leftToken.range[1], rightToken.range[0]],\n\t\t\t\t\t\t\t\t\"?.\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Only autofix if there is no newline\n\t\t\t\t\t\t * https://github.com/eslint/eslint/issues/7787\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (hasNewline) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\tleftToken.range[1],\n\t\t\t\t\t\t\trightToken.range[0],\n\t\t\t\t\t\t]);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else if (!never && !hasWhitespace) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: {\n\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\tline: leftToken.loc.end.line,\n\t\t\t\t\t\t\tcolumn: leftToken.loc.end.column - 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tend: rightToken.loc.start,\n\t\t\t\t\t},\n\t\t\t\t\tmessageId: \"missing\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tif (node.optional) {\n\t\t\t\t\t\t\treturn null; // Not sure if inserting a space to either before/after `?.` token.\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fixer.insertTextBefore(rightToken, \" \");\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else if (!never && !allowNewlines && hasNewline) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: {\n\t\t\t\t\t\tstart: leftToken.loc.end,\n\t\t\t\t\t\tend: rightToken.loc.start,\n\t\t\t\t\t},\n\t\t\t\t\tmessageId: \"unexpectedNewline\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Only autofix if there is no newline\n\t\t\t\t\t\t * https://github.com/eslint/eslint/issues/7787\n\t\t\t\t\t\t * But if `?.` exists, it doesn't hide no-unexpected-multiline errors\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (!node.optional) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Don't remove comments.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tsourceCode.commentsExistBetween(\n\t\t\t\t\t\t\t\tleftToken,\n\t\t\t\t\t\t\t\trightToken,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst range = [leftToken.range[1], rightToken.range[0]];\n\t\t\t\t\t\tconst qdToken = sourceCode.getTokenAfter(leftToken);\n\n\t\t\t\t\t\tif (qdToken.range[0] === leftToken.range[1]) {\n\t\t\t\t\t\t\treturn fixer.replaceTextRange(range, \"?. \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (qdToken.range[1] === rightToken.range[0]) {\n\t\t\t\t\t\t\treturn fixer.replaceTextRange(range, \" ?.\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fixer.replaceTextRange(range, \" ?. \");\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t\"CallExpression, NewExpression\"(node) {\n\t\t\t\tconst lastToken = sourceCode.getLastToken(node);\n\t\t\t\tconst lastCalleeToken = sourceCode.getLastToken(node.callee);\n\t\t\t\tconst parenToken = sourceCode.getFirstTokenBetween(\n\t\t\t\t\tlastCalleeToken,\n\t\t\t\t\tlastToken,\n\t\t\t\t\tastUtils.isOpeningParenToken,\n\t\t\t\t);\n\t\t\t\tconst prevToken =\n\t\t\t\t\tparenToken &&\n\t\t\t\t\tsourceCode.getTokenBefore(\n\t\t\t\t\t\tparenToken,\n\t\t\t\t\t\tastUtils.isNotQuestionDotToken,\n\t\t\t\t\t);\n\n\t\t\t\t// Parens in NewExpression are optional\n\t\t\t\tif (!(parenToken && parenToken.range[1] < node.range[1])) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcheckSpacing(node, prevToken, parenToken);\n\t\t\t},\n\n\t\t\tImportExpression(node) {\n\t\t\t\tconst leftToken = sourceCode.getFirstToken(node);\n\t\t\t\tconst rightToken = sourceCode.getTokenAfter(leftToken);\n\n\t\t\t\tcheckSpacing(node, leftToken, rightToken);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to require function names to match the name of the variable or property to which they are assigned.\n * @author Annie Zhang, Pavel Strashkin\n */\n\n\"use strict\";\n\n//--------------------------------------------------------------------------\n// Requirements\n//--------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst esutils = require(\"esutils\");\n\n//--------------------------------------------------------------------------\n// Helpers\n//--------------------------------------------------------------------------\n\n/**\n * Determines if a pattern is `module.exports` or `module[\"exports\"]`\n * @param {ASTNode} pattern The left side of the AssignmentExpression\n * @returns {boolean} True if the pattern is `module.exports` or `module[\"exports\"]`\n */\nfunction isModuleExports(pattern) {\n\tif (\n\t\tpattern.type === \"MemberExpression\" &&\n\t\tpattern.object.type === \"Identifier\" &&\n\t\tpattern.object.name === \"module\"\n\t) {\n\t\t// module.exports\n\t\tif (\n\t\t\tpattern.property.type === \"Identifier\" &&\n\t\t\tpattern.property.name === \"exports\"\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// module[\"exports\"]\n\t\tif (\n\t\t\tpattern.property.type === \"Literal\" &&\n\t\t\tpattern.property.value === \"exports\"\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * Determines if a string name is a valid identifier\n * @param {string} name The string to be checked\n * @param {number} ecmaVersion The ECMAScript version if specified in the parserOptions config\n * @returns {boolean} True if the string is a valid identifier\n */\nfunction isIdentifier(name, ecmaVersion) {\n\tif (ecmaVersion >= 2015) {\n\t\treturn esutils.keyword.isIdentifierES6(name);\n\t}\n\treturn esutils.keyword.isIdentifierES5(name);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\nconst alwaysOrNever = { enum: [\"always\", \"never\"] };\nconst optionsObject = {\n\ttype: \"object\",\n\tproperties: {\n\t\tconsiderPropertyDescriptor: {\n\t\t\ttype: \"boolean\",\n\t\t},\n\t\tincludeCommonJSModuleExports: {\n\t\t\ttype: \"boolean\",\n\t\t},\n\t},\n\tadditionalProperties: false,\n};\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require function names to match the name of the variable or property to which they are assigned\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/func-name-matching\",\n\t\t},\n\n\t\tschema: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\tadditionalItems: false,\n\t\t\t\t\titems: [alwaysOrNever, optionsObject],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\tadditionalItems: false,\n\t\t\t\t\titems: [optionsObject],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tdefaultOptions: [\"always\"],\n\n\t\tmessages: {\n\t\t\tmatchProperty:\n\t\t\t\t\"Function name `{{funcName}}` should match property name `{{name}}`.\",\n\t\t\tmatchVariable:\n\t\t\t\t\"Function name `{{funcName}}` should match variable name `{{name}}`.\",\n\t\t\tnotMatchProperty:\n\t\t\t\t\"Function name `{{funcName}}` should not match property name `{{name}}`.\",\n\t\t\tnotMatchVariable:\n\t\t\t\t\"Function name `{{funcName}}` should not match variable name `{{name}}`.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst options =\n\t\t\t(typeof context.options[0] === \"object\"\n\t\t\t\t? context.options[0]\n\t\t\t\t: context.options[1]) || {};\n\t\tconst nameMatches =\n\t\t\ttypeof context.options[0] === \"string\"\n\t\t\t\t? context.options[0]\n\t\t\t\t: \"always\";\n\t\tconst considerPropertyDescriptor = options.considerPropertyDescriptor;\n\t\tconst includeModuleExports = options.includeCommonJSModuleExports;\n\t\tconst ecmaVersion = context.languageOptions.ecmaVersion;\n\n\t\t/**\n\t\t * Check whether node is a certain CallExpression.\n\t\t * @param {string} objName object name\n\t\t * @param {string} funcName function name\n\t\t * @param {ASTNode} node The node to check\n\t\t * @returns {boolean} `true` if node matches CallExpression\n\t\t */\n\t\tfunction isPropertyCall(objName, funcName, node) {\n\t\t\tif (!node) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn (\n\t\t\t\tnode.type === \"CallExpression\" &&\n\t\t\t\tastUtils.isSpecificMemberAccess(node.callee, objName, funcName)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Compares identifiers based on the nameMatches option\n\t\t * @param {string} x the first identifier\n\t\t * @param {string} y the second identifier\n\t\t * @returns {boolean} whether the two identifiers should warn.\n\t\t */\n\t\tfunction shouldWarn(x, y) {\n\t\t\treturn (\n\t\t\t\t(nameMatches === \"always\" && x !== y) ||\n\t\t\t\t(nameMatches === \"never\" && x === y)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Reports\n\t\t * @param {ASTNode} node The node to report\n\t\t * @param {string} name The variable or property name\n\t\t * @param {string} funcName The function name\n\t\t * @param {boolean} isProp True if the reported node is a property assignment\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node, name, funcName, isProp) {\n\t\t\tlet messageId;\n\n\t\t\tif (nameMatches === \"always\" && isProp) {\n\t\t\t\tmessageId = \"matchProperty\";\n\t\t\t} else if (nameMatches === \"always\") {\n\t\t\t\tmessageId = \"matchVariable\";\n\t\t\t} else if (isProp) {\n\t\t\t\tmessageId = \"notMatchProperty\";\n\t\t\t} else {\n\t\t\t\tmessageId = \"notMatchVariable\";\n\t\t\t}\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId,\n\t\t\t\tdata: {\n\t\t\t\t\tname,\n\t\t\t\t\tfuncName,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Determines whether a given node is a string literal\n\t\t * @param {ASTNode} node The node to check\n\t\t * @returns {boolean} `true` if the node is a string literal\n\t\t */\n\t\tfunction isStringLiteral(node) {\n\t\t\treturn node.type === \"Literal\" && typeof node.value === \"string\";\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tVariableDeclarator(node) {\n\t\t\t\tif (\n\t\t\t\t\t!node.init ||\n\t\t\t\t\tnode.init.type !== \"FunctionExpression\" ||\n\t\t\t\t\tnode.id.type !== \"Identifier\"\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tnode.init.id &&\n\t\t\t\t\tshouldWarn(node.id.name, node.init.id.name)\n\t\t\t\t) {\n\t\t\t\t\treport(node, node.id.name, node.init.id.name, false);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tAssignmentExpression(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.right.type !== \"FunctionExpression\" ||\n\t\t\t\t\t(node.left.computed &&\n\t\t\t\t\t\tnode.left.property.type !== \"Literal\") ||\n\t\t\t\t\t(!includeModuleExports && isModuleExports(node.left)) ||\n\t\t\t\t\t(node.left.type !== \"Identifier\" &&\n\t\t\t\t\t\tnode.left.type !== \"MemberExpression\")\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst isProp = node.left.type === \"MemberExpression\";\n\t\t\t\tconst name = isProp\n\t\t\t\t\t? astUtils.getStaticPropertyName(node.left)\n\t\t\t\t\t: node.left.name;\n\n\t\t\t\tif (\n\t\t\t\t\tnode.right.id &&\n\t\t\t\t\tname &&\n\t\t\t\t\tisIdentifier(name) &&\n\t\t\t\t\tshouldWarn(name, node.right.id.name)\n\t\t\t\t) {\n\t\t\t\t\treport(node, name, node.right.id.name, isProp);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t\"Property, PropertyDefinition[value]\"(node) {\n\t\t\t\tif (\n\t\t\t\t\t!(node.value.type === \"FunctionExpression\" && node.value.id)\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (node.key.type === \"Identifier\" && !node.computed) {\n\t\t\t\t\tconst functionName = node.value.id.name;\n\t\t\t\t\tlet propertyName = node.key.name;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tconsiderPropertyDescriptor &&\n\t\t\t\t\t\tpropertyName === \"value\" &&\n\t\t\t\t\t\tnode.parent.type === \"ObjectExpression\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tisPropertyCall(\n\t\t\t\t\t\t\t\t\"Object\",\n\t\t\t\t\t\t\t\t\"defineProperty\",\n\t\t\t\t\t\t\t\tnode.parent.parent,\n\t\t\t\t\t\t\t) ||\n\t\t\t\t\t\t\tisPropertyCall(\n\t\t\t\t\t\t\t\t\"Reflect\",\n\t\t\t\t\t\t\t\t\"defineProperty\",\n\t\t\t\t\t\t\t\tnode.parent.parent,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst property = node.parent.parent.arguments[1];\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tisStringLiteral(property) &&\n\t\t\t\t\t\t\t\tshouldWarn(property.value, functionName)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treport(\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tproperty.value,\n\t\t\t\t\t\t\t\t\tfunctionName,\n\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tisPropertyCall(\n\t\t\t\t\t\t\t\t\"Object\",\n\t\t\t\t\t\t\t\t\"defineProperties\",\n\t\t\t\t\t\t\t\tnode.parent.parent.parent.parent,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tpropertyName = node.parent.parent.key.name;\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t!node.parent.parent.computed &&\n\t\t\t\t\t\t\t\tshouldWarn(propertyName, functionName)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treport(node, propertyName, functionName, true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tisPropertyCall(\n\t\t\t\t\t\t\t\t\"Object\",\n\t\t\t\t\t\t\t\t\"create\",\n\t\t\t\t\t\t\t\tnode.parent.parent.parent.parent,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tpropertyName = node.parent.parent.key.name;\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t!node.parent.parent.computed &&\n\t\t\t\t\t\t\t\tshouldWarn(propertyName, functionName)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treport(node, propertyName, functionName, true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (shouldWarn(propertyName, functionName)) {\n\t\t\t\t\t\t\treport(node, propertyName, functionName, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (shouldWarn(propertyName, functionName)) {\n\t\t\t\t\t\treport(node, propertyName, functionName, true);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tisStringLiteral(node.key) &&\n\t\t\t\t\tisIdentifier(node.key.value, ecmaVersion) &&\n\t\t\t\t\tshouldWarn(node.key.value, node.value.id.name)\n\t\t\t\t) {\n\t\t\t\t\treport(node, node.key.value, node.value.id.name, true);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to warn when a function expression does not have a name.\n * @author Kyle T. Nunery\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Variable} Variable */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether or not a given variable is a function name.\n * @param {Variable} variable A variable to check.\n * @returns {boolean} `true` if the variable is a function name.\n */\nfunction isFunctionName(variable) {\n\treturn variable && variable.defs[0].type === \"FunctionName\";\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\"always\", {}],\n\n\t\tdocs: {\n\t\t\tdescription: \"Require or disallow named `function` expressions\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/func-names\",\n\t\t},\n\n\t\tschema: {\n\t\t\tdefinitions: {\n\t\t\t\tvalue: {\n\t\t\t\t\tenum: [\"always\", \"as-needed\", \"never\"],\n\t\t\t\t},\n\t\t\t},\n\t\t\ttype: \"array\",\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\t$ref: \"#/definitions/value\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"object\",\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tgenerators: {\n\t\t\t\t\t\t\t$ref: \"#/definitions/value\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t},\n\t\t\t],\n\t\t\tadditionalItems: false,\n\t\t},\n\n\t\tmessages: {\n\t\t\tunnamed: \"Unexpected unnamed {{name}}.\",\n\t\t\tnamed: \"Unexpected named {{name}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Returns the config option for the given node.\n\t\t * @param {ASTNode} node A node to get the config for.\n\t\t * @returns {string} The config option.\n\t\t */\n\t\tfunction getConfigForNode(node) {\n\t\t\tif (node.generator && context.options[1].generators) {\n\t\t\t\treturn context.options[1].generators;\n\t\t\t}\n\n\t\t\treturn context.options[0];\n\t\t}\n\n\t\t/**\n\t\t * Determines whether the current FunctionExpression node is a get, set, or\n\t\t * shorthand method in an object literal or a class.\n\t\t * @param {ASTNode} node A node to check.\n\t\t * @returns {boolean} True if the node is a get, set, or shorthand method.\n\t\t */\n\t\tfunction isObjectOrClassMethod(node) {\n\t\t\tconst parent = node.parent;\n\n\t\t\treturn (\n\t\t\t\tparent.type === \"MethodDefinition\" ||\n\t\t\t\t(parent.type === \"Property\" &&\n\t\t\t\t\t(parent.method ||\n\t\t\t\t\t\tparent.kind === \"get\" ||\n\t\t\t\t\t\tparent.kind === \"set\"))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines whether the current FunctionExpression node has a name that would be\n\t\t * inferred from context in a conforming ES6 environment.\n\t\t * @param {ASTNode} node A node to check.\n\t\t * @returns {boolean} True if the node would have a name assigned automatically.\n\t\t */\n\t\tfunction hasInferredName(node) {\n\t\t\tconst parent = node.parent;\n\n\t\t\treturn (\n\t\t\t\tisObjectOrClassMethod(node) ||\n\t\t\t\t(parent.type === \"VariableDeclarator\" &&\n\t\t\t\t\tparent.id.type === \"Identifier\" &&\n\t\t\t\t\tparent.init === node) ||\n\t\t\t\t(parent.type === \"Property\" && parent.value === node) ||\n\t\t\t\t(parent.type === \"PropertyDefinition\" &&\n\t\t\t\t\tparent.value === node) ||\n\t\t\t\t(parent.type === \"AssignmentExpression\" &&\n\t\t\t\t\tparent.left.type === \"Identifier\" &&\n\t\t\t\t\tparent.right === node) ||\n\t\t\t\t(parent.type === \"AssignmentPattern\" &&\n\t\t\t\t\tparent.left.type === \"Identifier\" &&\n\t\t\t\t\tparent.right === node)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Reports that an unnamed function should be named\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportUnexpectedUnnamedFunction(node) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"unnamed\",\n\t\t\t\tloc: astUtils.getFunctionHeadLoc(node, sourceCode),\n\t\t\t\tdata: { name: astUtils.getFunctionNameWithKind(node) },\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports that a named function should be unnamed\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportUnexpectedNamedFunction(node) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"named\",\n\t\t\t\tloc: astUtils.getFunctionHeadLoc(node, sourceCode),\n\t\t\t\tdata: { name: astUtils.getFunctionNameWithKind(node) },\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * The listener for function nodes.\n\t\t * @param {ASTNode} node function node\n\t\t * @returns {void}\n\t\t */\n\t\tfunction handleFunction(node) {\n\t\t\t// Skip recursive functions.\n\t\t\tconst nameVar = sourceCode.getDeclaredVariables(node)[0];\n\n\t\t\tif (isFunctionName(nameVar) && nameVar.references.length > 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst hasName = Boolean(node.id && node.id.name);\n\t\t\tconst config = getConfigForNode(node);\n\n\t\t\tif (config === \"never\") {\n\t\t\t\tif (hasName && node.type !== \"FunctionDeclaration\") {\n\t\t\t\t\treportUnexpectedNamedFunction(node);\n\t\t\t\t}\n\t\t\t} else if (config === \"as-needed\") {\n\t\t\t\tif (!hasName && !hasInferredName(node)) {\n\t\t\t\t\treportUnexpectedUnnamedFunction(node);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!hasName && !isObjectOrClassMethod(node)) {\n\t\t\t\t\treportUnexpectedUnnamedFunction(node);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t\"FunctionExpression:exit\": handleFunction,\n\t\t\t\"ExportDefaultDeclaration > FunctionDeclaration\": handleFunction,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce a particular function style\n * @author Nicholas C. Zakas\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t\"expression\",\n\t\t\t{\n\t\t\t\tallowArrowFunctions: false,\n\t\t\t\tallowTypeAnnotation: false,\n\t\t\t\toverrides: {},\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce the consistent use of either `function` declarations or expressions assigned to variables\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/func-style\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"declaration\", \"expression\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowArrowFunctions: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowTypeAnnotation: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\toverrides: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tnamedExports: {\n\t\t\t\t\t\t\t\tenum: [\"declaration\", \"expression\", \"ignore\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\texpression: \"Expected a function expression.\",\n\t\t\tdeclaration: \"Expected a function declaration.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [style, { allowArrowFunctions, allowTypeAnnotation, overrides }] =\n\t\t\tcontext.options;\n\t\tconst enforceDeclarations = style === \"declaration\";\n\t\tconst { namedExports: exportFunctionStyle } = overrides;\n\t\tconst stack = [];\n\n\t\t/**\n\t\t * Checks if a function declaration is part of an overloaded function\n\t\t * @param {ASTNode} node The function declaration node to check\n\t\t * @returns {boolean} True if the function is overloaded\n\t\t */\n\t\tfunction isOverloadedFunction(node) {\n\t\t\tconst functionName = node.id.name;\n\n\t\t\tif (node.parent.type === \"ExportNamedDeclaration\") {\n\t\t\t\treturn node.parent.parent.body.some(\n\t\t\t\t\tmember =>\n\t\t\t\t\t\tmember.type === \"ExportNamedDeclaration\" &&\n\t\t\t\t\t\tmember.declaration?.type === \"TSDeclareFunction\" &&\n\t\t\t\t\t\tmember.declaration.id.name === functionName,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (node.parent.type === \"SwitchCase\") {\n\t\t\t\treturn node.parent.parent.cases.some(switchCase =>\n\t\t\t\t\tswitchCase.consequent.some(\n\t\t\t\t\t\tmember =>\n\t\t\t\t\t\t\tmember.type === \"TSDeclareFunction\" &&\n\t\t\t\t\t\t\tmember.id.name === functionName,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\tArray.isArray(node.parent.body) &&\n\t\t\t\tnode.parent.body.some(\n\t\t\t\t\tmember =>\n\t\t\t\t\t\tmember.type === \"TSDeclareFunction\" &&\n\t\t\t\t\t\tmember.id.name === functionName,\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tconst nodesToCheck = {\n\t\t\tFunctionDeclaration(node) {\n\t\t\t\tstack.push(false);\n\n\t\t\t\tif (\n\t\t\t\t\t!enforceDeclarations &&\n\t\t\t\t\tnode.parent.type !== \"ExportDefaultDeclaration\" &&\n\t\t\t\t\t(typeof exportFunctionStyle === \"undefined\" ||\n\t\t\t\t\t\tnode.parent.type !== \"ExportNamedDeclaration\") &&\n\t\t\t\t\t!isOverloadedFunction(node)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({ node, messageId: \"expression\" });\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tnode.parent.type === \"ExportNamedDeclaration\" &&\n\t\t\t\t\texportFunctionStyle === \"expression\" &&\n\t\t\t\t\t!isOverloadedFunction(node)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({ node, messageId: \"expression\" });\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"FunctionDeclaration:exit\"() {\n\t\t\t\tstack.pop();\n\t\t\t},\n\n\t\t\tFunctionExpression(node) {\n\t\t\t\tstack.push(false);\n\n\t\t\t\tif (\n\t\t\t\t\tenforceDeclarations &&\n\t\t\t\t\tnode.parent.type === \"VariableDeclarator\" &&\n\t\t\t\t\t(typeof exportFunctionStyle === \"undefined\" ||\n\t\t\t\t\t\tnode.parent.parent.parent.type !==\n\t\t\t\t\t\t\t\"ExportNamedDeclaration\") &&\n\t\t\t\t\t!(allowTypeAnnotation && node.parent.id.typeAnnotation)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: node.parent,\n\t\t\t\t\t\tmessageId: \"declaration\",\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tnode.parent.type === \"VariableDeclarator\" &&\n\t\t\t\t\tnode.parent.parent.parent.type ===\n\t\t\t\t\t\t\"ExportNamedDeclaration\" &&\n\t\t\t\t\texportFunctionStyle === \"declaration\" &&\n\t\t\t\t\t!(allowTypeAnnotation && node.parent.id.typeAnnotation)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: node.parent,\n\t\t\t\t\t\tmessageId: \"declaration\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"FunctionExpression:exit\"() {\n\t\t\t\tstack.pop();\n\t\t\t},\n\n\t\t\t\"ThisExpression, Super\"() {\n\t\t\t\tif (stack.length > 0) {\n\t\t\t\t\tstack[stack.length - 1] = true;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\n\t\tif (!allowArrowFunctions) {\n\t\t\tnodesToCheck.ArrowFunctionExpression = function () {\n\t\t\t\tstack.push(false);\n\t\t\t};\n\n\t\t\tnodesToCheck[\"ArrowFunctionExpression:exit\"] = function (node) {\n\t\t\t\tconst hasThisOrSuperExpr = stack.pop();\n\n\t\t\t\tif (\n\t\t\t\t\t!hasThisOrSuperExpr &&\n\t\t\t\t\tnode.parent.type === \"VariableDeclarator\"\n\t\t\t\t) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tenforceDeclarations &&\n\t\t\t\t\t\t(typeof exportFunctionStyle === \"undefined\" ||\n\t\t\t\t\t\t\tnode.parent.parent.parent.type !==\n\t\t\t\t\t\t\t\t\"ExportNamedDeclaration\") &&\n\t\t\t\t\t\t!(allowTypeAnnotation && node.parent.id.typeAnnotation)\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: node.parent,\n\t\t\t\t\t\t\tmessageId: \"declaration\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tnode.parent.parent.parent.type ===\n\t\t\t\t\t\t\t\"ExportNamedDeclaration\" &&\n\t\t\t\t\t\texportFunctionStyle === \"declaration\" &&\n\t\t\t\t\t\t!(allowTypeAnnotation && node.parent.id.typeAnnotation)\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: node.parent,\n\t\t\t\t\t\t\tmessageId: \"declaration\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\treturn nodesToCheck;\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce line breaks between arguments of a function call\n * @author Alexey Gonchar <https://github.com/finico>\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"function-call-argument-newline\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/function-call-argument-newline\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce line breaks between arguments of a function call\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/function-call-argument-newline\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"always\", \"never\", \"consistent\"],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedLineBreak: \"There should be no line break here.\",\n\t\t\tmissingLineBreak:\n\t\t\t\t\"There should be a line break after this argument.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tconst checkers = {\n\t\t\tunexpected: {\n\t\t\t\tmessageId: \"unexpectedLineBreak\",\n\t\t\t\tcheck: (prevToken, currentToken) =>\n\t\t\t\t\tprevToken.loc.end.line !== currentToken.loc.start.line,\n\t\t\t\tcreateFix: (token, tokenBefore) => fixer =>\n\t\t\t\t\tfixer.replaceTextRange(\n\t\t\t\t\t\t[tokenBefore.range[1], token.range[0]],\n\t\t\t\t\t\t\" \",\n\t\t\t\t\t),\n\t\t\t},\n\t\t\tmissing: {\n\t\t\t\tmessageId: \"missingLineBreak\",\n\t\t\t\tcheck: (prevToken, currentToken) =>\n\t\t\t\t\tprevToken.loc.end.line === currentToken.loc.start.line,\n\t\t\t\tcreateFix: (token, tokenBefore) => fixer =>\n\t\t\t\t\tfixer.replaceTextRange(\n\t\t\t\t\t\t[tokenBefore.range[1], token.range[0]],\n\t\t\t\t\t\t\"\\n\",\n\t\t\t\t\t),\n\t\t\t},\n\t\t};\n\n\t\t/**\n\t\t * Check all arguments for line breaks in the CallExpression\n\t\t * @param {CallExpression} node node to evaluate\n\t\t * @param {{ messageId: string, check: Function }} checker selected checker\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkArguments(node, checker) {\n\t\t\tfor (let i = 1; i < node.arguments.length; i++) {\n\t\t\t\tconst prevArgToken = sourceCode.getLastToken(\n\t\t\t\t\tnode.arguments[i - 1],\n\t\t\t\t);\n\t\t\t\tconst currentArgToken = sourceCode.getFirstToken(\n\t\t\t\t\tnode.arguments[i],\n\t\t\t\t);\n\n\t\t\t\tif (checker.check(prevArgToken, currentArgToken)) {\n\t\t\t\t\tconst tokenBefore = sourceCode.getTokenBefore(\n\t\t\t\t\t\tcurrentArgToken,\n\t\t\t\t\t\t{ includeComments: true },\n\t\t\t\t\t);\n\n\t\t\t\t\tconst hasLineCommentBefore = tokenBefore.type === \"Line\";\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tstart: tokenBefore.loc.end,\n\t\t\t\t\t\t\tend: currentArgToken.loc.start,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmessageId: checker.messageId,\n\t\t\t\t\t\tfix: hasLineCommentBefore\n\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t: checker.createFix(currentArgToken, tokenBefore),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check if open space is present in a function name\n\t\t * @param {CallExpression} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction check(node) {\n\t\t\tif (node.arguments.length < 2) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst option = context.options[0] || \"always\";\n\n\t\t\tif (option === \"never\") {\n\t\t\t\tcheckArguments(node, checkers.unexpected);\n\t\t\t} else if (option === \"always\") {\n\t\t\t\tcheckArguments(node, checkers.missing);\n\t\t\t} else if (option === \"consistent\") {\n\t\t\t\tconst firstArgToken = sourceCode.getLastToken(\n\t\t\t\t\tnode.arguments[0],\n\t\t\t\t);\n\t\t\t\tconst secondArgToken = sourceCode.getFirstToken(\n\t\t\t\t\tnode.arguments[1],\n\t\t\t\t);\n\n\t\t\t\tif (\n\t\t\t\t\tfirstArgToken.loc.end.line === secondArgToken.loc.start.line\n\t\t\t\t) {\n\t\t\t\t\tcheckArguments(node, checkers.unexpected);\n\t\t\t\t} else {\n\t\t\t\t\tcheckArguments(node, checkers.missing);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tCallExpression: check,\n\t\t\tNewExpression: check,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview enforce consistent line breaks inside function parentheses\n * @author Teddy Katz\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"function-paren-newline\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/function-paren-newline\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce consistent line breaks inside function parentheses\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/function-paren-newline\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\"always\",\n\t\t\t\t\t\t\t\"never\",\n\t\t\t\t\t\t\t\"consistent\",\n\t\t\t\t\t\t\t\"multiline\",\n\t\t\t\t\t\t\t\"multiline-arguments\",\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tminItems: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\texpectedBefore: \"Expected newline before ')'.\",\n\t\t\texpectedAfter: \"Expected newline after '('.\",\n\t\t\texpectedBetween: \"Expected newline between arguments/params.\",\n\t\t\tunexpectedBefore: \"Unexpected newline before ')'.\",\n\t\t\tunexpectedAfter: \"Unexpected newline after '('.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst rawOption = context.options[0] || \"multiline\";\n\t\tconst multilineOption = rawOption === \"multiline\";\n\t\tconst multilineArgumentsOption = rawOption === \"multiline-arguments\";\n\t\tconst consistentOption = rawOption === \"consistent\";\n\t\tlet minItems;\n\n\t\tif (typeof rawOption === \"object\") {\n\t\t\tminItems = rawOption.minItems;\n\t\t} else if (rawOption === \"always\") {\n\t\t\tminItems = 0;\n\t\t} else if (rawOption === \"never\") {\n\t\t\tminItems = Infinity;\n\t\t} else {\n\t\t\tminItems = null;\n\t\t}\n\n\t\t//----------------------------------------------------------------------\n\t\t// Helpers\n\t\t//----------------------------------------------------------------------\n\n\t\t/**\n\t\t * Determines whether there should be newlines inside function parens\n\t\t * @param {ASTNode[]} elements The arguments or parameters in the list\n\t\t * @param {boolean} hasLeftNewline `true` if the left paren has a newline in the current code.\n\t\t * @returns {boolean} `true` if there should be newlines inside the function parens\n\t\t */\n\t\tfunction shouldHaveNewlines(elements, hasLeftNewline) {\n\t\t\tif (multilineArgumentsOption && elements.length === 1) {\n\t\t\t\treturn hasLeftNewline;\n\t\t\t}\n\t\t\tif (multilineOption || multilineArgumentsOption) {\n\t\t\t\treturn elements.some(\n\t\t\t\t\t(element, index) =>\n\t\t\t\t\t\tindex !== elements.length - 1 &&\n\t\t\t\t\t\telement.loc.end.line !==\n\t\t\t\t\t\t\telements[index + 1].loc.start.line,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (consistentOption) {\n\t\t\t\treturn hasLeftNewline;\n\t\t\t}\n\t\t\treturn elements.length >= minItems;\n\t\t}\n\n\t\t/**\n\t\t * Validates parens\n\t\t * @param {Object} parens An object with keys `leftParen` for the left paren token, and `rightParen` for the right paren token\n\t\t * @param {ASTNode[]} elements The arguments or parameters in the list\n\t\t * @returns {void}\n\t\t */\n\t\tfunction validateParens(parens, elements) {\n\t\t\tconst leftParen = parens.leftParen;\n\t\t\tconst rightParen = parens.rightParen;\n\t\t\tconst tokenAfterLeftParen = sourceCode.getTokenAfter(leftParen);\n\t\t\tconst tokenBeforeRightParen = sourceCode.getTokenBefore(rightParen);\n\t\t\tconst hasLeftNewline = !astUtils.isTokenOnSameLine(\n\t\t\t\tleftParen,\n\t\t\t\ttokenAfterLeftParen,\n\t\t\t);\n\t\t\tconst hasRightNewline = !astUtils.isTokenOnSameLine(\n\t\t\t\ttokenBeforeRightParen,\n\t\t\t\trightParen,\n\t\t\t);\n\t\t\tconst needsNewlines = shouldHaveNewlines(elements, hasLeftNewline);\n\n\t\t\tif (hasLeftNewline && !needsNewlines) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: leftParen,\n\t\t\t\t\tmessageId: \"unexpectedAfter\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\treturn sourceCode\n\t\t\t\t\t\t\t.getText()\n\t\t\t\t\t\t\t.slice(\n\t\t\t\t\t\t\t\tleftParen.range[1],\n\t\t\t\t\t\t\t\ttokenAfterLeftParen.range[0],\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t\t? // If there is a comment between the ( and the first element, don't do a fix.\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t: fixer.removeRange([\n\t\t\t\t\t\t\t\t\tleftParen.range[1],\n\t\t\t\t\t\t\t\t\ttokenAfterLeftParen.range[0],\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else if (!hasLeftNewline && needsNewlines) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: leftParen,\n\t\t\t\t\tmessageId: \"expectedAfter\",\n\t\t\t\t\tfix: fixer => fixer.insertTextAfter(leftParen, \"\\n\"),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (hasRightNewline && !needsNewlines) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: rightParen,\n\t\t\t\t\tmessageId: \"unexpectedBefore\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\treturn sourceCode\n\t\t\t\t\t\t\t.getText()\n\t\t\t\t\t\t\t.slice(\n\t\t\t\t\t\t\t\ttokenBeforeRightParen.range[1],\n\t\t\t\t\t\t\t\trightParen.range[0],\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t\t? // If there is a comment between the last element and the ), don't do a fix.\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t: fixer.removeRange([\n\t\t\t\t\t\t\t\t\ttokenBeforeRightParen.range[1],\n\t\t\t\t\t\t\t\t\trightParen.range[0],\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else if (!hasRightNewline && needsNewlines) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: rightParen,\n\t\t\t\t\tmessageId: \"expectedBefore\",\n\t\t\t\t\tfix: fixer => fixer.insertTextBefore(rightParen, \"\\n\"),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Validates a list of arguments or parameters\n\t\t * @param {Object} parens An object with keys `leftParen` for the left paren token, and `rightParen` for the right paren token\n\t\t * @param {ASTNode[]} elements The arguments or parameters in the list\n\t\t * @returns {void}\n\t\t */\n\t\tfunction validateArguments(parens, elements) {\n\t\t\tconst leftParen = parens.leftParen;\n\t\t\tconst tokenAfterLeftParen = sourceCode.getTokenAfter(leftParen);\n\t\t\tconst hasLeftNewline = !astUtils.isTokenOnSameLine(\n\t\t\t\tleftParen,\n\t\t\t\ttokenAfterLeftParen,\n\t\t\t);\n\t\t\tconst needsNewlines = shouldHaveNewlines(elements, hasLeftNewline);\n\n\t\t\tfor (let i = 0; i <= elements.length - 2; i++) {\n\t\t\t\tconst currentElement = elements[i];\n\t\t\t\tconst nextElement = elements[i + 1];\n\t\t\t\tconst hasNewLine =\n\t\t\t\t\tcurrentElement.loc.end.line !== nextElement.loc.start.line;\n\n\t\t\t\tif (!hasNewLine && needsNewlines) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: currentElement,\n\t\t\t\t\t\tmessageId: \"expectedBetween\",\n\t\t\t\t\t\tfix: fixer => fixer.insertTextBefore(nextElement, \"\\n\"),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Gets the left paren and right paren tokens of a node.\n\t\t * @param {ASTNode} node The node with parens\n\t\t * @throws {TypeError} Unexpected node type.\n\t\t * @returns {Object} An object with keys `leftParen` for the left paren token, and `rightParen` for the right paren token.\n\t\t * Can also return `null` if an expression has no parens (e.g. a NewExpression with no arguments, or an ArrowFunctionExpression\n\t\t * with a single parameter)\n\t\t */\n\t\tfunction getParenTokens(node) {\n\t\t\tswitch (node.type) {\n\t\t\t\tcase \"NewExpression\":\n\t\t\t\t\tif (\n\t\t\t\t\t\t!node.arguments.length &&\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\tastUtils.isOpeningParenToken(\n\t\t\t\t\t\t\t\tsourceCode.getLastToken(node, { skip: 1 }),\n\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\tastUtils.isClosingParenToken(\n\t\t\t\t\t\t\t\tsourceCode.getLastToken(node),\n\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\tnode.callee.range[1] < node.range[1]\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\t// If the NewExpression does not have parens (e.g. `new Foo`), return null.\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t// falls through\n\n\t\t\t\tcase \"CallExpression\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\tleftParen: sourceCode.getTokenAfter(\n\t\t\t\t\t\t\tnode.callee,\n\t\t\t\t\t\t\tastUtils.isOpeningParenToken,\n\t\t\t\t\t\t),\n\t\t\t\t\t\trightParen: sourceCode.getLastToken(node),\n\t\t\t\t\t};\n\n\t\t\t\tcase \"FunctionDeclaration\":\n\t\t\t\tcase \"FunctionExpression\": {\n\t\t\t\t\tconst leftParen = sourceCode.getFirstToken(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tastUtils.isOpeningParenToken,\n\t\t\t\t\t);\n\t\t\t\t\tconst rightParen = node.params.length\n\t\t\t\t\t\t? sourceCode.getTokenAfter(\n\t\t\t\t\t\t\t\tnode.params.at(-1),\n\t\t\t\t\t\t\t\tastUtils.isClosingParenToken,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: sourceCode.getTokenAfter(leftParen);\n\n\t\t\t\t\treturn { leftParen, rightParen };\n\t\t\t\t}\n\n\t\t\t\tcase \"ArrowFunctionExpression\": {\n\t\t\t\t\tconst firstToken = sourceCode.getFirstToken(node, {\n\t\t\t\t\t\tskip: node.async ? 1 : 0,\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!astUtils.isOpeningParenToken(firstToken)) {\n\t\t\t\t\t\t// If the ArrowFunctionExpression has a single param without parens, return null.\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst rightParen = node.params.length\n\t\t\t\t\t\t? sourceCode.getTokenAfter(\n\t\t\t\t\t\t\t\tnode.params.at(-1),\n\t\t\t\t\t\t\t\tastUtils.isClosingParenToken,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: sourceCode.getTokenAfter(firstToken);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tleftParen: firstToken,\n\t\t\t\t\t\trightParen,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tcase \"ImportExpression\": {\n\t\t\t\t\tconst leftParen = sourceCode.getFirstToken(node, 1);\n\t\t\t\t\tconst rightParen = sourceCode.getLastToken(node);\n\n\t\t\t\t\treturn { leftParen, rightParen };\n\t\t\t\t}\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t`unexpected node with type ${node.type}`,\n\t\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t//----------------------------------------------------------------------\n\t\t// Public\n\t\t//----------------------------------------------------------------------\n\n\t\treturn {\n\t\t\t[[\n\t\t\t\t\"ArrowFunctionExpression\",\n\t\t\t\t\"CallExpression\",\n\t\t\t\t\"FunctionDeclaration\",\n\t\t\t\t\"FunctionExpression\",\n\t\t\t\t\"ImportExpression\",\n\t\t\t\t\"NewExpression\",\n\t\t\t]](node) {\n\t\t\t\tconst parens = getParenTokens(node);\n\t\t\t\tlet params;\n\n\t\t\t\tif (node.type === \"ImportExpression\") {\n\t\t\t\t\tparams = [node.source];\n\t\t\t\t} else if (astUtils.isFunction(node)) {\n\t\t\t\t\tparams = node.params;\n\t\t\t\t} else {\n\t\t\t\t\tparams = node.arguments;\n\t\t\t\t}\n\n\t\t\t\tif (parens) {\n\t\t\t\t\tvalidateParens(parens, params);\n\n\t\t\t\t\tif (multilineArgumentsOption) {\n\t\t\t\t\t\tvalidateArguments(parens, params);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to check the spacing around the * in generator functions.\n * @author Jamund Ferguson\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\nconst OVERRIDE_SCHEMA = {\n\toneOf: [\n\t\t{\n\t\t\tenum: [\"before\", \"after\", \"both\", \"neither\"],\n\t\t},\n\t\t{\n\t\t\ttype: \"object\",\n\t\t\tproperties: {\n\t\t\t\tbefore: { type: \"boolean\" },\n\t\t\t\tafter: { type: \"boolean\" },\n\t\t\t},\n\t\t\tadditionalProperties: false,\n\t\t},\n\t],\n};\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"generator-star-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/generator-star-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce consistent spacing around `*` operators in generator functions\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/generator-star-spacing\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: [\"before\", \"after\", \"both\", \"neither\"],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbefore: { type: \"boolean\" },\n\t\t\t\t\t\t\tafter: { type: \"boolean\" },\n\t\t\t\t\t\t\tnamed: OVERRIDE_SCHEMA,\n\t\t\t\t\t\t\tanonymous: OVERRIDE_SCHEMA,\n\t\t\t\t\t\t\tmethod: OVERRIDE_SCHEMA,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tmissingBefore: \"Missing space before *.\",\n\t\t\tmissingAfter: \"Missing space after *.\",\n\t\t\tunexpectedBefore: \"Unexpected space before *.\",\n\t\t\tunexpectedAfter: \"Unexpected space after *.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst optionDefinitions = {\n\t\t\tbefore: { before: true, after: false },\n\t\t\tafter: { before: false, after: true },\n\t\t\tboth: { before: true, after: true },\n\t\t\tneither: { before: false, after: false },\n\t\t};\n\n\t\t/**\n\t\t * Returns resolved option definitions based on an option and defaults\n\t\t * @param {any} option The option object or string value\n\t\t * @param {Object} defaults The defaults to use if options are not present\n\t\t * @returns {Object} the resolved object definition\n\t\t */\n\t\tfunction optionToDefinition(option, defaults) {\n\t\t\tif (!option) {\n\t\t\t\treturn defaults;\n\t\t\t}\n\n\t\t\treturn typeof option === \"string\"\n\t\t\t\t? optionDefinitions[option]\n\t\t\t\t: Object.assign({}, defaults, option);\n\t\t}\n\n\t\tconst modes = (function (option) {\n\t\t\tconst defaults = optionToDefinition(\n\t\t\t\toption,\n\t\t\t\toptionDefinitions.before,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tnamed: optionToDefinition(option.named, defaults),\n\t\t\t\tanonymous: optionToDefinition(option.anonymous, defaults),\n\t\t\t\tmethod: optionToDefinition(option.method, defaults),\n\t\t\t};\n\t\t})(context.options[0] || {});\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Checks if the given token is a star token or not.\n\t\t * @param {Token} token The token to check.\n\t\t * @returns {boolean} `true` if the token is a star token.\n\t\t */\n\t\tfunction isStarToken(token) {\n\t\t\treturn token.value === \"*\" && token.type === \"Punctuator\";\n\t\t}\n\n\t\t/**\n\t\t * Gets the generator star token of the given function node.\n\t\t * @param {ASTNode} node The function node to get.\n\t\t * @returns {Token} Found star token.\n\t\t */\n\t\tfunction getStarToken(node) {\n\t\t\treturn sourceCode.getFirstToken(\n\t\t\t\tnode.parent.method || node.parent.type === \"MethodDefinition\"\n\t\t\t\t\t? node.parent\n\t\t\t\t\t: node,\n\t\t\t\tisStarToken,\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * capitalize a given string.\n\t\t * @param {string} str the given string.\n\t\t * @returns {string} the capitalized string.\n\t\t */\n\t\tfunction capitalize(str) {\n\t\t\treturn str[0].toUpperCase() + str.slice(1);\n\t\t}\n\n\t\t/**\n\t\t * Checks the spacing between two tokens before or after the star token.\n\t\t * @param {string} kind Either \"named\", \"anonymous\", or \"method\"\n\t\t * @param {string} side Either \"before\" or \"after\".\n\t\t * @param {Token} leftToken `function` keyword token if side is \"before\", or\n\t\t *     star token if side is \"after\".\n\t\t * @param {Token} rightToken Star token if side is \"before\", or identifier\n\t\t *     token if side is \"after\".\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacing(kind, side, leftToken, rightToken) {\n\t\t\tif (\n\t\t\t\t!!(rightToken.range[0] - leftToken.range[1]) !==\n\t\t\t\tmodes[kind][side]\n\t\t\t) {\n\t\t\t\tconst after = leftToken.value === \"*\";\n\t\t\t\tconst spaceRequired = modes[kind][side];\n\t\t\t\tconst node = after ? leftToken : rightToken;\n\t\t\t\tconst messageId = `${spaceRequired ? \"missing\" : \"unexpected\"}${capitalize(side)}`;\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId,\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tif (spaceRequired) {\n\t\t\t\t\t\t\tif (after) {\n\t\t\t\t\t\t\t\treturn fixer.insertTextAfter(node, \" \");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn fixer.insertTextBefore(node, \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\tleftToken.range[1],\n\t\t\t\t\t\t\trightToken.range[0],\n\t\t\t\t\t\t]);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Enforces the spacing around the star if node is a generator function.\n\t\t * @param {ASTNode} node A function expression or declaration node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkFunction(node) {\n\t\t\tif (!node.generator) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst starToken = getStarToken(node);\n\t\t\tconst prevToken = sourceCode.getTokenBefore(starToken);\n\t\t\tconst nextToken = sourceCode.getTokenAfter(starToken);\n\n\t\t\tlet kind = \"named\";\n\n\t\t\tif (\n\t\t\t\tnode.parent.type === \"MethodDefinition\" ||\n\t\t\t\t(node.parent.type === \"Property\" && node.parent.method)\n\t\t\t) {\n\t\t\t\tkind = \"method\";\n\t\t\t} else if (!node.id) {\n\t\t\t\tkind = \"anonymous\";\n\t\t\t}\n\n\t\t\t// Only check before when preceded by `function`|`static` keyword\n\t\t\tif (\n\t\t\t\t!(\n\t\t\t\t\tkind === \"method\" &&\n\t\t\t\t\tstarToken === sourceCode.getFirstToken(node.parent)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcheckSpacing(kind, \"before\", prevToken, starToken);\n\t\t\t}\n\n\t\t\tcheckSpacing(kind, \"after\", starToken, nextToken);\n\t\t}\n\n\t\treturn {\n\t\t\tFunctionDeclaration: checkFunction,\n\t\t\tFunctionExpression: checkFunction,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Enforces that a return statement is present in property getters.\n * @author Aladdin-ADD(hh_2013@foxmail.com)\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst { isAnySegmentReachable } = require(\"./utils/code-path-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst TARGET_NODE_TYPE = /^(?:Arrow)?FunctionExpression$/u;\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowImplicit: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce `return` statements in getters\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/getter-return\",\n\t\t},\n\n\t\tfixable: null,\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowImplicit: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\texpected: \"Expected to return a value in {{name}}.\",\n\t\t\texpectedAlways: \"Expected {{name}} to always return a value.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ allowImplicit }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tlet funcInfo = {\n\t\t\tupper: null,\n\t\t\tcodePath: null,\n\t\t\thasReturn: false,\n\t\t\tshouldCheck: false,\n\t\t\tnode: null,\n\t\t\tcurrentSegments: [],\n\t\t};\n\n\t\t/**\n\t\t * Checks whether or not the last code path segment is reachable.\n\t\t * Then reports this function if the segment is reachable.\n\t\t *\n\t\t * If the last code path segment is reachable, there are paths which are not\n\t\t * returned or thrown.\n\t\t * @param {ASTNode} node A node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkLastSegment(node) {\n\t\t\tif (\n\t\t\t\tfuncInfo.shouldCheck &&\n\t\t\t\tisAnySegmentReachable(funcInfo.currentSegments)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: astUtils.getFunctionHeadLoc(node, sourceCode),\n\t\t\t\t\tmessageId: funcInfo.hasReturn\n\t\t\t\t\t\t? \"expectedAlways\"\n\t\t\t\t\t\t: \"expected\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tname: astUtils.getFunctionNameWithKind(funcInfo.node),\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a node means a getter function.\n\t\t * @param {ASTNode} node a node to check.\n\t\t * @returns {boolean} if node means a getter, return true; else return false.\n\t\t */\n\t\tfunction isGetter(node) {\n\t\t\tconst parent = node.parent;\n\n\t\t\tif (\n\t\t\t\tTARGET_NODE_TYPE.test(node.type) &&\n\t\t\t\tnode.body.type === \"BlockStatement\"\n\t\t\t) {\n\t\t\t\tif (parent.kind === \"get\") {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tparent.type === \"Property\" &&\n\t\t\t\t\tastUtils.getStaticPropertyName(parent) === \"get\" &&\n\t\t\t\t\tparent.parent.type === \"ObjectExpression\"\n\t\t\t\t) {\n\t\t\t\t\t// Object.defineProperty() or Reflect.defineProperty()\n\t\t\t\t\tif (parent.parent.parent.type === \"CallExpression\") {\n\t\t\t\t\t\tconst callNode = parent.parent.parent.callee;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tastUtils.isSpecificMemberAccess(\n\t\t\t\t\t\t\t\tcallNode,\n\t\t\t\t\t\t\t\t\"Object\",\n\t\t\t\t\t\t\t\t\"defineProperty\",\n\t\t\t\t\t\t\t) ||\n\t\t\t\t\t\t\tastUtils.isSpecificMemberAccess(\n\t\t\t\t\t\t\t\tcallNode,\n\t\t\t\t\t\t\t\t\"Reflect\",\n\t\t\t\t\t\t\t\t\"defineProperty\",\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Object.defineProperties() or Object.create()\n\t\t\t\t\tif (\n\t\t\t\t\t\tparent.parent.parent.type === \"Property\" &&\n\t\t\t\t\t\tparent.parent.parent.parent.type ===\n\t\t\t\t\t\t\t\"ObjectExpression\" &&\n\t\t\t\t\t\tparent.parent.parent.parent.parent.type ===\n\t\t\t\t\t\t\t\"CallExpression\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst callNode =\n\t\t\t\t\t\t\tparent.parent.parent.parent.parent.callee;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tastUtils.isSpecificMemberAccess(\n\t\t\t\t\t\t\t\tcallNode,\n\t\t\t\t\t\t\t\t\"Object\",\n\t\t\t\t\t\t\t\t\"defineProperties\",\n\t\t\t\t\t\t\t) ||\n\t\t\t\t\t\t\tastUtils.isSpecificMemberAccess(\n\t\t\t\t\t\t\t\tcallNode,\n\t\t\t\t\t\t\t\t\"Object\",\n\t\t\t\t\t\t\t\t\"create\",\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\treturn {\n\t\t\t// Stacks this function's information.\n\t\t\tonCodePathStart(codePath, node) {\n\t\t\t\tfuncInfo = {\n\t\t\t\t\tupper: funcInfo,\n\t\t\t\t\tcodePath,\n\t\t\t\t\thasReturn: false,\n\t\t\t\t\tshouldCheck: isGetter(node),\n\t\t\t\t\tnode,\n\t\t\t\t\tcurrentSegments: new Set(),\n\t\t\t\t};\n\t\t\t},\n\n\t\t\t// Pops this function's information.\n\t\t\tonCodePathEnd() {\n\t\t\t\tfuncInfo = funcInfo.upper;\n\t\t\t},\n\t\t\tonUnreachableCodePathSegmentStart(segment) {\n\t\t\t\tfuncInfo.currentSegments.add(segment);\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentEnd(segment) {\n\t\t\t\tfuncInfo.currentSegments.delete(segment);\n\t\t\t},\n\n\t\t\tonCodePathSegmentStart(segment) {\n\t\t\t\tfuncInfo.currentSegments.add(segment);\n\t\t\t},\n\n\t\t\tonCodePathSegmentEnd(segment) {\n\t\t\t\tfuncInfo.currentSegments.delete(segment);\n\t\t\t},\n\n\t\t\t// Checks the return statement is valid.\n\t\t\tReturnStatement(node) {\n\t\t\t\tif (funcInfo.shouldCheck) {\n\t\t\t\t\tfuncInfo.hasReturn = true;\n\n\t\t\t\t\t// if allowImplicit: false, should also check node.argument\n\t\t\t\t\tif (!allowImplicit && !node.argument) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"expected\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tname: astUtils.getFunctionNameWithKind(\n\t\t\t\t\t\t\t\t\tfuncInfo.node,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Reports a given function if the last path is reachable.\n\t\t\t\"FunctionExpression:exit\": checkLastSegment,\n\t\t\t\"ArrowFunctionExpression:exit\": checkLastSegment,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule for disallowing require() outside of the top-level module context\n * @author Jamund Ferguson\n * @deprecated in ESLint v7.0.0\n */\n\n\"use strict\";\n\nconst ACCEPTABLE_PARENTS = new Set([\n\t\"AssignmentExpression\",\n\t\"VariableDeclarator\",\n\t\"MemberExpression\",\n\t\"ExpressionStatement\",\n\t\"CallExpression\",\n\t\"ConditionalExpression\",\n\t\"Program\",\n\t\"VariableDeclaration\",\n\t\"ChainExpression\",\n]);\n\n/**\n * Finds the eslint-scope reference in the given scope.\n * @param {Object} scope The scope to search.\n * @param {ASTNode} node The identifier node.\n * @returns {Reference|null} Returns the found reference or null if none were found.\n */\nfunction findReference(scope, node) {\n\tconst references = scope.references.filter(\n\t\treference =>\n\t\t\treference.identifier.range[0] === node.range[0] &&\n\t\t\treference.identifier.range[1] === node.range[1],\n\t);\n\n\tif (references.length === 1) {\n\t\treturn references[0];\n\t}\n\n\t/* c8 ignore next */\n\treturn null;\n}\n\n/**\n * Checks if the given identifier node is shadowed in the given scope.\n * @param {Object} scope The current scope.\n * @param {ASTNode} node The identifier node to check.\n * @returns {boolean} Whether or not the name is shadowed.\n */\nfunction isShadowed(scope, node) {\n\tconst reference = findReference(scope, node);\n\n\treturn (\n\t\treference && reference.resolved && reference.resolved.defs.length > 0\n\t);\n}\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Node.js rules were moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules\",\n\t\t\tdeprecatedSince: \"7.0.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"eslint-plugin-n now maintains deprecated Node.js-related rules.\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"eslint-plugin-n\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"global-require\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules/global-require.md\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require `require()` calls to be placed at top-level module scope\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/global-require\",\n\t\t},\n\n\t\tschema: [],\n\t\tmessages: {\n\t\t\tunexpected: \"Unexpected require().\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tCallExpression(node) {\n\t\t\t\tconst currentScope = sourceCode.getScope(node);\n\n\t\t\t\tif (\n\t\t\t\t\tnode.callee.name === \"require\" &&\n\t\t\t\t\t!isShadowed(currentScope, node.callee)\n\t\t\t\t) {\n\t\t\t\t\tconst isGoodRequire = sourceCode\n\t\t\t\t\t\t.getAncestors(node)\n\t\t\t\t\t\t.every(parent => ACCEPTABLE_PARENTS.has(parent.type));\n\n\t\t\t\t\tif (!isGoodRequire) {\n\t\t\t\t\t\tcontext.report({ node, messageId: \"unexpected\" });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to require grouped accessor pairs in object literals and classes\n * @author Milos Djermanovic\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n/**\n * Property name if it can be computed statically, otherwise the list of the tokens of the key node.\n * @typedef {string|Token[]} Key\n */\n\n/**\n * Accessor nodes with the same key.\n * @typedef {Object} AccessorData\n * @property {Key} key Accessor's key\n * @property {ASTNode[]} getters List of getter nodes.\n * @property {ASTNode[]} setters List of setter nodes.\n */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether or not the given lists represent the equal tokens in the same order.\n * Tokens are compared by their properties, not by instance.\n * @param {Token[]} left First list of tokens.\n * @param {Token[]} right Second list of tokens.\n * @returns {boolean} `true` if the lists have same tokens.\n */\nfunction areEqualTokenLists(left, right) {\n\tif (left.length !== right.length) {\n\t\treturn false;\n\t}\n\n\tfor (let i = 0; i < left.length; i++) {\n\t\tconst leftToken = left[i],\n\t\t\trightToken = right[i];\n\n\t\tif (\n\t\t\tleftToken.type !== rightToken.type ||\n\t\t\tleftToken.value !== rightToken.value\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Checks whether or not the given keys are equal.\n * @param {Key} left First key.\n * @param {Key} right Second key.\n * @returns {boolean} `true` if the keys are equal.\n */\nfunction areEqualKeys(left, right) {\n\tif (typeof left === \"string\" && typeof right === \"string\") {\n\t\t// Statically computed names.\n\t\treturn left === right;\n\t}\n\tif (Array.isArray(left) && Array.isArray(right)) {\n\t\t// Token lists.\n\t\treturn areEqualTokenLists(left, right);\n\t}\n\n\treturn false;\n}\n\n/**\n * Checks whether or not a given node is of an accessor kind ('get' or 'set').\n * @param {ASTNode} node A node to check.\n * @returns {boolean} `true` if the node is of an accessor kind.\n */\nfunction isAccessorKind(node) {\n\treturn node.kind === \"get\" || node.kind === \"set\";\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t\"anyOrder\",\n\t\t\t{\n\t\t\t\tenforceForTSTypes: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require grouped accessor pairs in object literals and classes\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/grouped-accessor-pairs\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{ enum: [\"anyOrder\", \"getBeforeSet\", \"setBeforeGet\"] },\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tenforceForTSTypes: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tnotGrouped:\n\t\t\t\t\"Accessor pair {{ formerName }} and {{ latterName }} should be grouped.\",\n\t\t\tinvalidOrder:\n\t\t\t\t\"Expected {{ latterName }} to be before {{ formerName }}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [order, { enforceForTSTypes }] = context.options;\n\t\tconst { sourceCode } = context;\n\n\t\t/**\n\t\t * Reports the given accessor pair.\n\t\t * @param {string} messageId messageId to report.\n\t\t * @param {ASTNode} formerNode getter/setter node that is defined before `latterNode`.\n\t\t * @param {ASTNode} latterNode getter/setter node that is defined after `formerNode`.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction report(messageId, formerNode, latterNode) {\n\t\t\tcontext.report({\n\t\t\t\tnode: latterNode,\n\t\t\t\tmessageId,\n\t\t\t\tloc: astUtils.getFunctionHeadLoc(\n\t\t\t\t\tlatterNode.type !== \"TSMethodSignature\"\n\t\t\t\t\t\t? latterNode.value\n\t\t\t\t\t\t: latterNode,\n\t\t\t\t\tsourceCode,\n\t\t\t\t),\n\t\t\t\tdata: {\n\t\t\t\t\tformerName: astUtils.getFunctionNameWithKind(\n\t\t\t\t\t\tformerNode.type !== \"TSMethodSignature\"\n\t\t\t\t\t\t\t? formerNode.value\n\t\t\t\t\t\t\t: formerNode,\n\t\t\t\t\t),\n\t\t\t\t\tlatterName: astUtils.getFunctionNameWithKind(\n\t\t\t\t\t\tlatterNode.type !== \"TSMethodSignature\"\n\t\t\t\t\t\t\t? latterNode.value\n\t\t\t\t\t\t\t: latterNode,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Checks accessor pairs in the given list of nodes.\n\t\t * @param {ASTNode[]} nodes The list to check.\n\t\t * @param {Function} shouldCheck \u2013 Predicate that returns `true` if the node should be checked.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkList(nodes, shouldCheck) {\n\t\t\tconst accessors = [];\n\t\t\tlet found = false;\n\n\t\t\tfor (let i = 0; i < nodes.length; i++) {\n\t\t\t\tconst node = nodes[i];\n\n\t\t\t\tif (shouldCheck(node) && isAccessorKind(node)) {\n\t\t\t\t\t// Creates a new `AccessorData` object for the given getter or setter node.\n\t\t\t\t\tconst name = astUtils.getStaticPropertyName(node);\n\t\t\t\t\tconst key =\n\t\t\t\t\t\tname !== null ? name : sourceCode.getTokens(node.key);\n\n\t\t\t\t\t// Merges the given `AccessorData` object into the given accessors list.\n\t\t\t\t\tfor (let j = 0; j < accessors.length; j++) {\n\t\t\t\t\t\tconst accessor = accessors[j];\n\n\t\t\t\t\t\tif (areEqualKeys(accessor.key, key)) {\n\t\t\t\t\t\t\taccessor.getters.push(\n\t\t\t\t\t\t\t\t...(node.kind === \"get\" ? [node] : []),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\taccessor.setters.push(\n\t\t\t\t\t\t\t\t...(node.kind === \"set\" ? [node] : []),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!found) {\n\t\t\t\t\t\taccessors.push({\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tgetters: node.kind === \"get\" ? [node] : [],\n\t\t\t\t\t\t\tsetters: node.kind === \"set\" ? [node] : [],\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tfound = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const { getters, setters } of accessors) {\n\t\t\t\t// Don't report accessor properties that have duplicate getters or setters.\n\t\t\t\tif (getters.length === 1 && setters.length === 1) {\n\t\t\t\t\tconst [getter] = getters,\n\t\t\t\t\t\t[setter] = setters,\n\t\t\t\t\t\tgetterIndex = nodes.indexOf(getter),\n\t\t\t\t\t\tsetterIndex = nodes.indexOf(setter),\n\t\t\t\t\t\tformerNode =\n\t\t\t\t\t\t\tgetterIndex < setterIndex ? getter : setter,\n\t\t\t\t\t\tlatterNode =\n\t\t\t\t\t\t\tgetterIndex < setterIndex ? setter : getter;\n\n\t\t\t\t\tif (Math.abs(getterIndex - setterIndex) > 1) {\n\t\t\t\t\t\treport(\"notGrouped\", formerNode, latterNode);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\t(order === \"getBeforeSet\" &&\n\t\t\t\t\t\t\tgetterIndex > setterIndex) ||\n\t\t\t\t\t\t(order === \"setBeforeGet\" && getterIndex < setterIndex)\n\t\t\t\t\t) {\n\t\t\t\t\t\treport(\"invalidOrder\", formerNode, latterNode);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tObjectExpression(node) {\n\t\t\t\tcheckList(node.properties, n => n.type === \"Property\");\n\t\t\t},\n\t\t\tClassBody(node) {\n\t\t\t\tcheckList(\n\t\t\t\t\tnode.body,\n\t\t\t\t\tn => n.type === \"MethodDefinition\" && !n.static,\n\t\t\t\t);\n\t\t\t\tcheckList(\n\t\t\t\t\tnode.body,\n\t\t\t\t\tn => n.type === \"MethodDefinition\" && n.static,\n\t\t\t\t);\n\t\t\t},\n\t\t\t\"TSTypeLiteral, TSInterfaceBody\"(node) {\n\t\t\t\tif (enforceForTSTypes) {\n\t\t\t\t\tcheckList(\n\t\t\t\t\t\tnode.type === \"TSTypeLiteral\"\n\t\t\t\t\t\t\t? node.members\n\t\t\t\t\t\t\t: node.body,\n\t\t\t\t\t\tn => n.type === \"TSMethodSignature\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag for-in loops without if statements inside\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require `for-in` loops to include an `if` statement\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/guard-for-in\",\n\t\t},\n\n\t\tschema: [],\n\t\tmessages: {\n\t\t\twrap: \"The body of a for-in should be wrapped in an if statement to filter unwanted properties from the prototype.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tForInStatement(node) {\n\t\t\t\tconst body = node.body;\n\n\t\t\t\t// empty statement\n\t\t\t\tif (body.type === \"EmptyStatement\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// if statement\n\t\t\t\tif (body.type === \"IfStatement\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// empty block\n\t\t\t\tif (body.type === \"BlockStatement\" && body.body.length === 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// block with just if statement\n\t\t\t\tif (\n\t\t\t\t\tbody.type === \"BlockStatement\" &&\n\t\t\t\t\tbody.body.length === 1 &&\n\t\t\t\t\tbody.body[0].type === \"IfStatement\"\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// block that starts with if statement\n\t\t\t\tif (\n\t\t\t\t\tbody.type === \"BlockStatement\" &&\n\t\t\t\t\tbody.body.length >= 1 &&\n\t\t\t\t\tbody.body[0].type === \"IfStatement\"\n\t\t\t\t) {\n\t\t\t\t\tconst i = body.body[0];\n\n\t\t\t\t\t// ... whose consequent is a continue\n\t\t\t\t\tif (i.consequent.type === \"ContinueStatement\") {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// ... whose consequent is a block that contains only a continue\n\t\t\t\t\tif (\n\t\t\t\t\t\ti.consequent.type === \"BlockStatement\" &&\n\t\t\t\t\t\ti.consequent.body.length === 1 &&\n\t\t\t\t\t\ti.consequent.body[0].type === \"ContinueStatement\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontext.report({ node, messageId: \"wrap\" });\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Ensure handling of errors when we know they exist.\n * @author Jamund Ferguson\n * @deprecated in ESLint v7.0.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Node.js rules were moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules\",\n\t\t\tdeprecatedSince: \"7.0.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"eslint-plugin-n now maintains deprecated Node.js-related rules.\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"eslint-plugin-n\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"handle-callback-err\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules/handle-callback-err.md\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require error handling in callbacks\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/handle-callback-err\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\texpected: \"Expected error to be handled.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst errorArgument = context.options[0] || \"err\";\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Checks if the given argument should be interpreted as a regexp pattern.\n\t\t * @param {string} stringToCheck The string which should be checked.\n\t\t * @returns {boolean} Whether or not the string should be interpreted as a pattern.\n\t\t */\n\t\tfunction isPattern(stringToCheck) {\n\t\t\tconst firstChar = stringToCheck[0];\n\n\t\t\treturn firstChar === \"^\";\n\t\t}\n\n\t\t/**\n\t\t * Checks if the given name matches the configured error argument.\n\t\t * @param {string} name The name which should be compared.\n\t\t * @returns {boolean} Whether or not the given name matches the configured error variable name.\n\t\t */\n\t\tfunction matchesConfiguredErrorName(name) {\n\t\t\tif (isPattern(errorArgument)) {\n\t\t\t\tconst regexp = new RegExp(errorArgument, \"u\");\n\n\t\t\t\treturn regexp.test(name);\n\t\t\t}\n\t\t\treturn name === errorArgument;\n\t\t}\n\n\t\t/**\n\t\t * Get the parameters of a given function scope.\n\t\t * @param {Object} scope The function scope.\n\t\t * @returns {Array} All parameters of the given scope.\n\t\t */\n\t\tfunction getParameters(scope) {\n\t\t\treturn scope.variables.filter(\n\t\t\t\tvariable =>\n\t\t\t\t\tvariable.defs[0] && variable.defs[0].type === \"Parameter\",\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check to see if we're handling the error object properly.\n\t\t * @param {ASTNode} node The AST node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForError(node) {\n\t\t\tconst scope = sourceCode.getScope(node),\n\t\t\t\tparameters = getParameters(scope),\n\t\t\t\tfirstParameter = parameters[0];\n\n\t\t\tif (\n\t\t\t\tfirstParameter &&\n\t\t\t\tmatchesConfiguredErrorName(firstParameter.name)\n\t\t\t) {\n\t\t\t\tif (firstParameter.references.length === 0) {\n\t\t\t\t\tcontext.report({ node, messageId: \"expected\" });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tFunctionDeclaration: checkForError,\n\t\t\tFunctionExpression: checkForError,\n\t\t\tArrowFunctionExpression: checkForError,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule that warns when identifier names that are\n * specified in the configuration are used.\n * @author Keith Cirkel (http://keithcirkel.co.uk)\n * @deprecated in ESLint v7.5.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether the given node represents assignment target in a normal assignment or destructuring.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} `true` if the node is assignment target.\n */\nfunction isAssignmentTarget(node) {\n\tconst parent = node.parent;\n\n\treturn (\n\t\t// normal assignment\n\t\t(parent.type === \"AssignmentExpression\" && parent.left === node) ||\n\t\t// destructuring\n\t\tparent.type === \"ArrayPattern\" ||\n\t\tparent.type === \"RestElement\" ||\n\t\t(parent.type === \"Property\" &&\n\t\t\tparent.value === node &&\n\t\t\tparent.parent.type === \"ObjectPattern\") ||\n\t\t(parent.type === \"AssignmentPattern\" && parent.left === node)\n\t);\n}\n\n/**\n * Checks whether the given node represents an imported name that is renamed in the same import/export specifier.\n *\n * Examples:\n * import { a as b } from 'mod'; // node `a` is renamed import\n * export { a as b } from 'mod'; // node `a` is renamed import\n * @param {ASTNode} node `Identifier` node to check.\n * @returns {boolean} `true` if the node is a renamed import.\n */\nfunction isRenamedImport(node) {\n\tconst parent = node.parent;\n\n\treturn (\n\t\t(parent.type === \"ImportSpecifier\" &&\n\t\t\tparent.imported !== parent.local &&\n\t\t\tparent.imported === node) ||\n\t\t(parent.type === \"ExportSpecifier\" &&\n\t\t\tparent.parent.source && // re-export\n\t\t\tparent.local !== parent.exported &&\n\t\t\tparent.local === node)\n\t);\n}\n\n/**\n * Checks whether the given node is a renamed identifier node in an ObjectPattern destructuring.\n *\n * Examples:\n * const { a : b } = foo; // node `a` is renamed node.\n * @param {ASTNode} node `Identifier` node to check.\n * @returns {boolean} `true` if the node is a renamed node in an ObjectPattern destructuring.\n */\nfunction isRenamedInDestructuring(node) {\n\tconst parent = node.parent;\n\n\treturn (\n\t\t!parent.computed &&\n\t\tparent.type === \"Property\" &&\n\t\tparent.parent.type === \"ObjectPattern\" &&\n\t\tparent.value !== node &&\n\t\tparent.key === node\n\t);\n}\n\n/**\n * Checks whether the given node represents shorthand definition of a property in an object literal.\n * @param {ASTNode} node `Identifier` node to check.\n * @returns {boolean} `true` if the node is a shorthand property definition.\n */\nfunction isShorthandPropertyDefinition(node) {\n\tconst parent = node.parent;\n\n\treturn (\n\t\tparent.type === \"Property\" &&\n\t\tparent.parent.type === \"ObjectExpression\" &&\n\t\tparent.shorthand\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"The rule was renamed.\",\n\t\t\turl: \"https://eslint.org/blog/2020/07/eslint-v7.5.0-released/#deprecating-id-blacklist\",\n\t\t\tdeprecatedSince: \"7.5.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"id-denylist\",\n\t\t\t\t\t\turl: \"https://eslint.org/docs/rules/id-denylist\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow specified identifiers\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/id-blacklist\",\n\t\t},\n\n\t\tschema: {\n\t\t\ttype: \"array\",\n\t\t\titems: {\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\tuniqueItems: true,\n\t\t},\n\t\tmessages: {\n\t\t\trestricted: \"Identifier '{{name}}' is restricted.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst denyList = new Set(context.options);\n\t\tconst reportedNodes = new Set();\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tlet globalScope;\n\n\t\t/**\n\t\t * Checks whether the given name is restricted.\n\t\t * @param {string} name The name to check.\n\t\t * @returns {boolean} `true` if the name is restricted.\n\t\t * @private\n\t\t */\n\t\tfunction isRestricted(name) {\n\t\t\treturn denyList.has(name);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether the given node represents a reference to a global variable that is not declared in the source code.\n\t\t * These identifiers will be allowed, as it is assumed that user has no control over the names of external global variables.\n\t\t * @param {ASTNode} node `Identifier` node to check.\n\t\t * @returns {boolean} `true` if the node is a reference to a global variable.\n\t\t */\n\t\tfunction isReferenceToGlobalVariable(node) {\n\t\t\tconst variable = globalScope.set.get(node.name);\n\n\t\t\treturn (\n\t\t\t\tvariable &&\n\t\t\t\tvariable.defs.length === 0 &&\n\t\t\t\tvariable.references.some(ref => ref.identifier === node)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines whether the given node should be checked.\n\t\t * @param {ASTNode} node `Identifier` node.\n\t\t * @returns {boolean} `true` if the node should be checked.\n\t\t */\n\t\tfunction shouldCheck(node) {\n\t\t\tconst parent = node.parent;\n\n\t\t\t/*\n\t\t\t * Member access has special rules for checking property names.\n\t\t\t * Read access to a property with a restricted name is allowed, because it can be on an object that user has no control over.\n\t\t\t * Write access isn't allowed, because it potentially creates a new property with a restricted name.\n\t\t\t */\n\t\t\tif (\n\t\t\t\tparent.type === \"MemberExpression\" &&\n\t\t\t\tparent.property === node &&\n\t\t\t\t!parent.computed\n\t\t\t) {\n\t\t\t\treturn isAssignmentTarget(parent);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\tparent.type !== \"CallExpression\" &&\n\t\t\t\tparent.type !== \"NewExpression\" &&\n\t\t\t\t!isRenamedImport(node) &&\n\t\t\t\t!isRenamedInDestructuring(node) &&\n\t\t\t\t!(\n\t\t\t\t\tisReferenceToGlobalVariable(node) &&\n\t\t\t\t\t!isShorthandPropertyDefinition(node)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Reports an AST node as a rule violation.\n\t\t * @param {ASTNode} node The node to report.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction report(node) {\n\t\t\t/*\n\t\t\t * We used the range instead of the node because it's possible\n\t\t\t * for the same identifier to be represented by two different\n\t\t\t * nodes, with the most clear example being shorthand properties:\n\t\t\t * { foo }\n\t\t\t * In this case, \"foo\" is represented by one node for the name\n\t\t\t * and one for the value. The only way to know they are the same\n\t\t\t * is to look at the range.\n\t\t\t */\n\t\t\tif (!reportedNodes.has(node.range.toString())) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"restricted\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tname: node.name,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\treportedNodes.add(node.range.toString());\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tglobalScope = sourceCode.getScope(node);\n\t\t\t},\n\n\t\t\tIdentifier(node) {\n\t\t\t\tif (isRestricted(node.name) && shouldCheck(node)) {\n\t\t\t\t\treport(node);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule that warns when identifier names that are\n * specified in the configuration are used.\n * @author Keith Cirkel (http://keithcirkel.co.uk)\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether the given node represents assignment target in a normal assignment or destructuring.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} `true` if the node is assignment target.\n */\nfunction isAssignmentTarget(node) {\n\tconst parent = node.parent;\n\n\treturn (\n\t\t// normal assignment\n\t\t(parent.type === \"AssignmentExpression\" && parent.left === node) ||\n\t\t// destructuring\n\t\tparent.type === \"ArrayPattern\" ||\n\t\tparent.type === \"RestElement\" ||\n\t\t(parent.type === \"Property\" &&\n\t\t\tparent.value === node &&\n\t\t\tparent.parent.type === \"ObjectPattern\") ||\n\t\t(parent.type === \"AssignmentPattern\" && parent.left === node)\n\t);\n}\n\n/**\n * Checks whether the given node represents an imported name that is renamed in the same import/export specifier.\n *\n * Examples:\n * import { a as b } from 'mod'; // node `a` is renamed import\n * export { a as b } from 'mod'; // node `a` is renamed import\n * @param {ASTNode} node `Identifier` node to check.\n * @returns {boolean} `true` if the node is a renamed import.\n */\nfunction isRenamedImport(node) {\n\tconst parent = node.parent;\n\n\treturn (\n\t\t(parent.type === \"ImportSpecifier\" &&\n\t\t\tparent.imported !== parent.local &&\n\t\t\tparent.imported === node) ||\n\t\t(parent.type === \"ExportSpecifier\" &&\n\t\t\tparent.parent.source && // re-export\n\t\t\tparent.local !== parent.exported &&\n\t\t\tparent.local === node)\n\t);\n}\n\n/**\n * Checks whether the given node is an ObjectPattern destructuring.\n *\n * Examples:\n * const { a : b } = foo;\n * @param {ASTNode} node `Identifier` node to check.\n * @returns {boolean} `true` if the node is in an ObjectPattern destructuring.\n */\nfunction isPropertyNameInDestructuring(node) {\n\tconst parent = node.parent;\n\n\treturn (\n\t\t!parent.computed &&\n\t\tparent.type === \"Property\" &&\n\t\tparent.parent.type === \"ObjectPattern\" &&\n\t\tparent.key === node\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow specified identifiers\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/id-denylist\",\n\t\t},\n\n\t\tschema: {\n\t\t\ttype: \"array\",\n\t\t\titems: {\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\tuniqueItems: true,\n\t\t},\n\t\tmessages: {\n\t\t\trestricted: \"Identifier '{{name}}' is restricted.\",\n\t\t\trestrictedPrivate: \"Identifier '#{{name}}' is restricted.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst denyList = new Set(context.options);\n\t\tconst reportedNodes = new Set();\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tlet globalScope;\n\n\t\t/**\n\t\t * Checks whether the given name is restricted.\n\t\t * @param {string} name The name to check.\n\t\t * @returns {boolean} `true` if the name is restricted.\n\t\t * @private\n\t\t */\n\t\tfunction isRestricted(name) {\n\t\t\treturn denyList.has(name);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether the given node represents a reference to a global variable that is not declared in the source code.\n\t\t * These identifiers will be allowed, as it is assumed that user has no control over the names of external global variables.\n\t\t * @param {ASTNode} node `Identifier` node to check.\n\t\t * @returns {boolean} `true` if the node is a reference to a global variable.\n\t\t */\n\t\tfunction isReferenceToGlobalVariable(node) {\n\t\t\tconst variable = globalScope.set.get(node.name);\n\n\t\t\treturn (\n\t\t\t\tvariable &&\n\t\t\t\tvariable.defs.length === 0 &&\n\t\t\t\tvariable.references.some(ref => ref.identifier === node)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines whether the given node should be checked.\n\t\t * @param {ASTNode} node `Identifier` node.\n\t\t * @returns {boolean} `true` if the node should be checked.\n\t\t */\n\t\tfunction shouldCheck(node) {\n\t\t\t// Import attributes are defined by environments, so naming conventions shouldn't apply to them\n\t\t\tif (astUtils.isImportAttributeKey(node)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst parent = node.parent;\n\n\t\t\t/*\n\t\t\t * Member access has special rules for checking property names.\n\t\t\t * Read access to a property with a restricted name is allowed, because it can be on an object that user has no control over.\n\t\t\t * Write access isn't allowed, because it potentially creates a new property with a restricted name.\n\t\t\t */\n\t\t\tif (\n\t\t\t\tparent.type === \"MemberExpression\" &&\n\t\t\t\tparent.property === node &&\n\t\t\t\t!parent.computed\n\t\t\t) {\n\t\t\t\treturn isAssignmentTarget(parent);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\tparent.type !== \"CallExpression\" &&\n\t\t\t\tparent.type !== \"NewExpression\" &&\n\t\t\t\t!isRenamedImport(node) &&\n\t\t\t\t!isPropertyNameInDestructuring(node) &&\n\t\t\t\t!isReferenceToGlobalVariable(node)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Reports an AST node as a rule violation.\n\t\t * @param {ASTNode} node The node to report.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction report(node) {\n\t\t\t/*\n\t\t\t * We used the range instead of the node because it's possible\n\t\t\t * for the same identifier to be represented by two different\n\t\t\t * nodes, with the most clear example being shorthand properties:\n\t\t\t * { foo }\n\t\t\t * In this case, \"foo\" is represented by one node for the name\n\t\t\t * and one for the value. The only way to know they are the same\n\t\t\t * is to look at the range.\n\t\t\t */\n\t\t\tif (!reportedNodes.has(node.range.toString())) {\n\t\t\t\tconst isPrivate = node.type === \"PrivateIdentifier\";\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: isPrivate ? \"restrictedPrivate\" : \"restricted\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tname: node.name,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\treportedNodes.add(node.range.toString());\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tglobalScope = sourceCode.getScope(node);\n\t\t\t},\n\n\t\t\t[[\"Identifier\", \"PrivateIdentifier\"]](node) {\n\t\t\t\tif (isRestricted(node.name) && shouldCheck(node)) {\n\t\t\t\t\treport(node);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule that warns when identifier names are shorter or longer\n * than the values provided in configuration.\n * @author Burak Yigit Kaya aka BYK\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst { getGraphemeCount } = require(\"../shared/string-utils\");\nconst {\n\tgetModuleExportName,\n\tisImportAttributeKey,\n} = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\texceptionPatterns: [],\n\t\t\t\texceptions: [],\n\t\t\t\tmin: 2,\n\t\t\t\tproperties: \"always\",\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce minimum and maximum identifier lengths\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/id-length\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tmin: {\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t},\n\t\t\t\t\tmax: {\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t},\n\t\t\t\t\texceptions: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\texceptionPatterns: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\ttooShort: \"Identifier name '{{name}}' is too short (< {{min}}).\",\n\t\t\ttooShortPrivate:\n\t\t\t\t\"Identifier name '#{{name}}' is too short (< {{min}}).\",\n\t\t\ttooLong: \"Identifier name '{{name}}' is too long (> {{max}}).\",\n\t\t\ttooLongPrivate:\n\t\t\t\t\"Identifier name #'{{name}}' is too long (> {{max}}).\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [options] = context.options;\n\t\tconst { max: maxLength = Infinity, min: minLength } = options;\n\t\tconst properties = options.properties !== \"never\";\n\t\tconst exceptions = new Set(options.exceptions);\n\t\tconst exceptionPatterns = options.exceptionPatterns.map(\n\t\t\tpattern => new RegExp(pattern, \"u\"),\n\t\t);\n\t\tconst reportedNodes = new Set();\n\n\t\t/**\n\t\t * Checks if a string matches the provided exception patterns\n\t\t * @param {string} name The string to check.\n\t\t * @returns {boolean} if the string is a match\n\t\t * @private\n\t\t */\n\t\tfunction matchesExceptionPattern(name) {\n\t\t\treturn exceptionPatterns.some(pattern => pattern.test(name));\n\t\t}\n\n\t\tconst SUPPORTED_EXPRESSIONS = {\n\t\t\tMemberExpression:\n\t\t\t\tproperties &&\n\t\t\t\tfunction (parent) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!parent.computed &&\n\t\t\t\t\t\t// regular property assignment\n\t\t\t\t\t\t((parent.parent.left === parent &&\n\t\t\t\t\t\t\tparent.parent.type === \"AssignmentExpression\") ||\n\t\t\t\t\t\t\t// or the last identifier in an ObjectPattern destructuring\n\t\t\t\t\t\t\t(parent.parent.type === \"Property\" &&\n\t\t\t\t\t\t\t\tparent.parent.value === parent &&\n\t\t\t\t\t\t\t\tparent.parent.parent.type === \"ObjectPattern\" &&\n\t\t\t\t\t\t\t\tparent.parent.parent.parent.left ===\n\t\t\t\t\t\t\t\t\tparent.parent.parent))\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\tAssignmentPattern(parent, node) {\n\t\t\t\treturn parent.left === node;\n\t\t\t},\n\t\t\tVariableDeclarator(parent, node) {\n\t\t\t\treturn parent.id === node;\n\t\t\t},\n\t\t\tProperty(parent, node) {\n\t\t\t\tif (parent.parent.type === \"ObjectPattern\") {\n\t\t\t\t\tconst isKeyAndValueSame =\n\t\t\t\t\t\tparent.value.name === parent.key.name;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t(!isKeyAndValueSame && parent.value === node) ||\n\t\t\t\t\t\t(isKeyAndValueSame && parent.key === node && properties)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\tproperties &&\n\t\t\t\t\t!isImportAttributeKey(node) &&\n\t\t\t\t\t!parent.computed &&\n\t\t\t\t\tparent.key.name === node.name\n\t\t\t\t);\n\t\t\t},\n\t\t\tImportSpecifier(parent, node) {\n\t\t\t\treturn (\n\t\t\t\t\tparent.local === node &&\n\t\t\t\t\tgetModuleExportName(parent.imported) !==\n\t\t\t\t\t\tgetModuleExportName(parent.local)\n\t\t\t\t);\n\t\t\t},\n\t\t\tImportDefaultSpecifier: true,\n\t\t\tImportNamespaceSpecifier: true,\n\t\t\tRestElement: true,\n\t\t\tFunctionExpression: true,\n\t\t\tArrowFunctionExpression: true,\n\t\t\tClassDeclaration: true,\n\t\t\tFunctionDeclaration: true,\n\t\t\tMethodDefinition: true,\n\t\t\tPropertyDefinition: true,\n\t\t\tCatchClause: true,\n\t\t\tArrayPattern: true,\n\t\t};\n\n\t\treturn {\n\t\t\t[[\"Identifier\", \"PrivateIdentifier\"]](node) {\n\t\t\t\tconst name = node.name;\n\t\t\t\tconst parent = node.parent;\n\n\t\t\t\tconst nameLength = getGraphemeCount(name);\n\n\t\t\t\tconst isShort = nameLength < minLength;\n\t\t\t\tconst isLong = nameLength > maxLength;\n\n\t\t\t\tif (\n\t\t\t\t\t!(isShort || isLong) ||\n\t\t\t\t\texceptions.has(name) ||\n\t\t\t\t\tmatchesExceptionPattern(name)\n\t\t\t\t) {\n\t\t\t\t\treturn; // Nothing to report\n\t\t\t\t}\n\n\t\t\t\tconst isValidExpression = SUPPORTED_EXPRESSIONS[parent.type];\n\n\t\t\t\t/*\n\t\t\t\t * We used the range instead of the node because it's possible\n\t\t\t\t * for the same identifier to be represented by two different\n\t\t\t\t * nodes, with the most clear example being shorthand properties:\n\t\t\t\t * { foo }\n\t\t\t\t * In this case, \"foo\" is represented by one node for the name\n\t\t\t\t * and one for the value. The only way to know they are the same\n\t\t\t\t * is to look at the range.\n\t\t\t\t */\n\t\t\t\tif (\n\t\t\t\t\tisValidExpression &&\n\t\t\t\t\t!reportedNodes.has(node.range.toString()) &&\n\t\t\t\t\t(isValidExpression === true ||\n\t\t\t\t\t\tisValidExpression(parent, node))\n\t\t\t\t) {\n\t\t\t\t\treportedNodes.add(node.range.toString());\n\n\t\t\t\t\tlet messageId = isShort ? \"tooShort\" : \"tooLong\";\n\n\t\t\t\t\tif (node.type === \"PrivateIdentifier\") {\n\t\t\t\t\t\tmessageId += \"Private\";\n\t\t\t\t\t}\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\tdata: { name, min: minLength, max: maxLength },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag non-matching identifiers\n * @author Matthieu Larcher\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t\"^.+$\",\n\t\t\t{\n\t\t\t\tclassFields: false,\n\t\t\t\tignoreDestructuring: false,\n\t\t\t\tonlyDeclarations: false,\n\t\t\t\tproperties: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require identifiers to match a specified regular expression\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/id-match\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tclassFields: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tonlyDeclarations: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tignoreDestructuring: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\tnotMatch:\n\t\t\t\t\"Identifier '{{name}}' does not match the pattern '{{pattern}}'.\",\n\t\t\tnotMatchPrivate:\n\t\t\t\t\"Identifier '#{{name}}' does not match the pattern '{{pattern}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t//--------------------------------------------------------------------------\n\t\t// Options\n\t\t//--------------------------------------------------------------------------\n\t\tconst [\n\t\t\tpattern,\n\t\t\t{\n\t\t\t\tclassFields: checkClassFields,\n\t\t\t\tignoreDestructuring,\n\t\t\t\tonlyDeclarations,\n\t\t\t\tproperties: checkProperties,\n\t\t\t},\n\t\t] = context.options;\n\t\tconst regexp = new RegExp(pattern, \"u\");\n\n\t\tconst sourceCode = context.sourceCode;\n\t\tlet globalScope;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t// contains reported nodes to avoid reporting twice on destructuring with shorthand notation\n\t\tconst reportedNodes = new Set();\n\t\tconst ALLOWED_PARENT_TYPES = new Set([\n\t\t\t\"CallExpression\",\n\t\t\t\"NewExpression\",\n\t\t]);\n\t\tconst DECLARATION_TYPES = new Set([\n\t\t\t\"FunctionDeclaration\",\n\t\t\t\"VariableDeclarator\",\n\t\t]);\n\t\tconst IMPORT_TYPES = new Set([\n\t\t\t\"ImportSpecifier\",\n\t\t\t\"ImportNamespaceSpecifier\",\n\t\t\t\"ImportDefaultSpecifier\",\n\t\t]);\n\n\t\t/**\n\t\t * Checks whether the given node represents a reference to a global variable that is not declared in the source code.\n\t\t * These identifiers will be allowed, as it is assumed that user has no control over the names of external global variables.\n\t\t * @param {ASTNode} node `Identifier` node to check.\n\t\t * @returns {boolean} `true` if the node is a reference to a global variable.\n\t\t */\n\t\tfunction isReferenceToGlobalVariable(node) {\n\t\t\tconst variable = globalScope.set.get(node.name);\n\n\t\t\treturn (\n\t\t\t\tvariable &&\n\t\t\t\tvariable.defs.length === 0 &&\n\t\t\t\tvariable.references.some(ref => ref.identifier === node)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if a string matches the provided pattern\n\t\t * @param {string} name The string to check.\n\t\t * @returns {boolean} if the string is a match\n\t\t * @private\n\t\t */\n\t\tfunction isInvalid(name) {\n\t\t\treturn !regexp.test(name);\n\t\t}\n\n\t\t/**\n\t\t * Checks if a parent of a node is an ObjectPattern.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} if the node is inside an ObjectPattern\n\t\t * @private\n\t\t */\n\t\tfunction isInsideObjectPattern(node) {\n\t\t\tlet { parent } = node;\n\n\t\t\twhile (parent) {\n\t\t\t\tif (parent.type === \"ObjectPattern\") {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Verifies if we should report an error or not based on the effective\n\t\t * parent node and the identifier name.\n\t\t * @param {ASTNode} effectiveParent The effective parent node of the node to be reported\n\t\t * @param {string} name The identifier name of the identifier node\n\t\t * @returns {boolean} whether an error should be reported or not\n\t\t */\n\t\tfunction shouldReport(effectiveParent, name) {\n\t\t\treturn (\n\t\t\t\t(!onlyDeclarations ||\n\t\t\t\t\tDECLARATION_TYPES.has(effectiveParent.type)) &&\n\t\t\t\t!ALLOWED_PARENT_TYPES.has(effectiveParent.type) &&\n\t\t\t\tisInvalid(name)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Reports an AST node as a rule violation.\n\t\t * @param {ASTNode} node The node to report.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction report(node) {\n\t\t\t/*\n\t\t\t * We used the range instead of the node because it's possible\n\t\t\t * for the same identifier to be represented by two different\n\t\t\t * nodes, with the most clear example being shorthand properties:\n\t\t\t * { foo }\n\t\t\t * In this case, \"foo\" is represented by one node for the name\n\t\t\t * and one for the value. The only way to know they are the same\n\t\t\t * is to look at the range.\n\t\t\t */\n\t\t\tif (!reportedNodes.has(node.range.toString())) {\n\t\t\t\tconst messageId =\n\t\t\t\t\tnode.type === \"PrivateIdentifier\"\n\t\t\t\t\t\t? \"notMatchPrivate\"\n\t\t\t\t\t\t: \"notMatch\";\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tname: node.name,\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\treportedNodes.add(node.range.toString());\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tglobalScope = sourceCode.getScope(node);\n\t\t\t},\n\n\t\t\tIdentifier(node) {\n\t\t\t\tconst name = node.name,\n\t\t\t\t\tparent = node.parent,\n\t\t\t\t\teffectiveParent =\n\t\t\t\t\t\tparent.type === \"MemberExpression\"\n\t\t\t\t\t\t\t? parent.parent\n\t\t\t\t\t\t\t: parent;\n\n\t\t\t\tif (\n\t\t\t\t\tisReferenceToGlobalVariable(node) ||\n\t\t\t\t\tastUtils.isImportAttributeKey(node)\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (parent.type === \"MemberExpression\") {\n\t\t\t\t\tif (!checkProperties) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Always check object names\n\t\t\t\t\tif (\n\t\t\t\t\t\tparent.object.type === \"Identifier\" &&\n\t\t\t\t\t\tparent.object.name === name\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (isInvalid(name)) {\n\t\t\t\t\t\t\treport(node);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Report AssignmentExpressions left side's assigned variable id\n\t\t\t\t\t} else if (\n\t\t\t\t\t\teffectiveParent.type === \"AssignmentExpression\" &&\n\t\t\t\t\t\teffectiveParent.left.type === \"MemberExpression\" &&\n\t\t\t\t\t\teffectiveParent.left.property.name === node.name\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (isInvalid(name)) {\n\t\t\t\t\t\t\treport(node);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Report AssignmentExpressions only if they are the left side of the assignment\n\t\t\t\t\t} else if (\n\t\t\t\t\t\teffectiveParent.type === \"AssignmentExpression\" &&\n\t\t\t\t\t\teffectiveParent.right.type !== \"MemberExpression\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (isInvalid(name)) {\n\t\t\t\t\t\t\treport(node);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// For https://github.com/eslint/eslint/issues/15123\n\t\t\t\t} else if (\n\t\t\t\t\tparent.type === \"Property\" &&\n\t\t\t\t\tparent.parent.type === \"ObjectExpression\" &&\n\t\t\t\t\tparent.key === node &&\n\t\t\t\t\t!parent.computed\n\t\t\t\t) {\n\t\t\t\t\tif (checkProperties && isInvalid(name)) {\n\t\t\t\t\t\treport(node);\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * Properties have their own rules, and\n\t\t\t\t\t * AssignmentPattern nodes can be treated like Properties:\n\t\t\t\t\t * e.g.: const { no_camelcased = false } = bar;\n\t\t\t\t\t */\n\t\t\t\t} else if (\n\t\t\t\t\tparent.type === \"Property\" ||\n\t\t\t\t\tparent.type === \"AssignmentPattern\"\n\t\t\t\t) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tparent.parent &&\n\t\t\t\t\t\tparent.parent.type === \"ObjectPattern\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!ignoreDestructuring &&\n\t\t\t\t\t\t\tparent.shorthand &&\n\t\t\t\t\t\t\tparent.value.left &&\n\t\t\t\t\t\t\tisInvalid(name)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treport(node);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst assignmentKeyEqualsValue =\n\t\t\t\t\t\t\tparent.key.name === parent.value.name;\n\n\t\t\t\t\t\t// prevent checking righthand side of destructured object\n\t\t\t\t\t\tif (!assignmentKeyEqualsValue && parent.key === node) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst valueIsInvalid =\n\t\t\t\t\t\t\tparent.value.name && isInvalid(name);\n\n\t\t\t\t\t\t// ignore destructuring if the option is set, unless a new identifier is created\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tvalueIsInvalid &&\n\t\t\t\t\t\t\t!(assignmentKeyEqualsValue && ignoreDestructuring)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treport(node);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// never check properties or always ignore destructuring\n\t\t\t\t\tif (\n\t\t\t\t\t\t(!checkProperties && !parent.computed) ||\n\t\t\t\t\t\t(ignoreDestructuring && isInsideObjectPattern(node))\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// don't check right hand side of AssignmentExpression to prevent duplicate warnings\n\t\t\t\t\tif (\n\t\t\t\t\t\tparent.right !== node &&\n\t\t\t\t\t\tshouldReport(effectiveParent, name)\n\t\t\t\t\t) {\n\t\t\t\t\t\treport(node);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check if it's an import specifier\n\t\t\t\t} else if (IMPORT_TYPES.has(parent.type)) {\n\t\t\t\t\t// Report only if the local imported identifier is invalid\n\t\t\t\t\tif (\n\t\t\t\t\t\tparent.local &&\n\t\t\t\t\t\tparent.local.name === node.name &&\n\t\t\t\t\t\tisInvalid(name)\n\t\t\t\t\t) {\n\t\t\t\t\t\treport(node);\n\t\t\t\t\t}\n\t\t\t\t} else if (parent.type === \"PropertyDefinition\") {\n\t\t\t\t\tif (checkClassFields && isInvalid(name)) {\n\t\t\t\t\t\treport(node);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Report anything that is invalid that isn't a CallExpression\n\t\t\t\t} else if (shouldReport(effectiveParent, name)) {\n\t\t\t\t\treport(node);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tPrivateIdentifier(node) {\n\t\t\t\tconst isClassField = node.parent.type === \"PropertyDefinition\";\n\n\t\t\t\tif (isClassField && !checkClassFields) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (isInvalid(node.name)) {\n\t\t\t\t\treport(node);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview enforce the location of arrow function bodies\n * @author Sharmila Jesupaul\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\nconst { isCommentToken, isNotOpeningParenToken } = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"implicit-arrow-linebreak\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/implicit-arrow-linebreak\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce the location of arrow function bodies\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/implicit-arrow-linebreak\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"beside\", \"below\"],\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\texpected: \"Expected a linebreak before this expression.\",\n\t\t\tunexpected: \"Expected no linebreak before this expression.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst option = context.options[0] || \"beside\";\n\n\t\t/**\n\t\t * Validates the location of an arrow function body\n\t\t * @param {ASTNode} node The arrow function body\n\t\t * @returns {void}\n\t\t */\n\t\tfunction validateExpression(node) {\n\t\t\tif (node.body.type === \"BlockStatement\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst arrowToken = sourceCode.getTokenBefore(\n\t\t\t\tnode.body,\n\t\t\t\tisNotOpeningParenToken,\n\t\t\t);\n\t\t\tconst firstTokenOfBody = sourceCode.getTokenAfter(arrowToken);\n\n\t\t\tif (\n\t\t\t\tarrowToken.loc.end.line === firstTokenOfBody.loc.start.line &&\n\t\t\t\toption === \"below\"\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: firstTokenOfBody,\n\t\t\t\t\tmessageId: \"expected\",\n\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\tfixer.insertTextBefore(firstTokenOfBody, \"\\n\"),\n\t\t\t\t});\n\t\t\t} else if (\n\t\t\t\tarrowToken.loc.end.line !== firstTokenOfBody.loc.start.line &&\n\t\t\t\toption === \"beside\"\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: firstTokenOfBody,\n\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tsourceCode.getFirstTokenBetween(\n\t\t\t\t\t\t\t\tarrowToken,\n\t\t\t\t\t\t\t\tfirstTokenOfBody,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t\t\t\t\tfilter: isCommentToken,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t[arrowToken.range[1], firstTokenOfBody.range[0]],\n\t\t\t\t\t\t\t\" \",\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//----------------------------------------------------------------------\n\t\t// Public\n\t\t//----------------------------------------------------------------------\n\t\treturn {\n\t\t\tArrowFunctionExpression: node => validateExpression(node),\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview This rule sets a specific indentation style and width for your code\n *\n * @author Teddy Katz\n * @author Vitaly Puzrin\n * @author Gyandeep Singh\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\nconst KNOWN_NODES = new Set([\n\t\"AssignmentExpression\",\n\t\"AssignmentPattern\",\n\t\"ArrayExpression\",\n\t\"ArrayPattern\",\n\t\"ArrowFunctionExpression\",\n\t\"AwaitExpression\",\n\t\"BlockStatement\",\n\t\"BinaryExpression\",\n\t\"BreakStatement\",\n\t\"CallExpression\",\n\t\"CatchClause\",\n\t\"ChainExpression\",\n\t\"ClassBody\",\n\t\"ClassDeclaration\",\n\t\"ClassExpression\",\n\t\"ConditionalExpression\",\n\t\"ContinueStatement\",\n\t\"DoWhileStatement\",\n\t\"DebuggerStatement\",\n\t\"EmptyStatement\",\n\t\"ExperimentalRestProperty\",\n\t\"ExperimentalSpreadProperty\",\n\t\"ExpressionStatement\",\n\t\"ForStatement\",\n\t\"ForInStatement\",\n\t\"ForOfStatement\",\n\t\"FunctionDeclaration\",\n\t\"FunctionExpression\",\n\t\"Identifier\",\n\t\"IfStatement\",\n\t\"Literal\",\n\t\"LabeledStatement\",\n\t\"LogicalExpression\",\n\t\"MemberExpression\",\n\t\"MetaProperty\",\n\t\"MethodDefinition\",\n\t\"NewExpression\",\n\t\"ObjectExpression\",\n\t\"ObjectPattern\",\n\t\"PrivateIdentifier\",\n\t\"Program\",\n\t\"Property\",\n\t\"PropertyDefinition\",\n\t\"RestElement\",\n\t\"ReturnStatement\",\n\t\"SequenceExpression\",\n\t\"SpreadElement\",\n\t\"StaticBlock\",\n\t\"Super\",\n\t\"SwitchCase\",\n\t\"SwitchStatement\",\n\t\"TaggedTemplateExpression\",\n\t\"TemplateElement\",\n\t\"TemplateLiteral\",\n\t\"ThisExpression\",\n\t\"ThrowStatement\",\n\t\"TryStatement\",\n\t\"UnaryExpression\",\n\t\"UpdateExpression\",\n\t\"VariableDeclaration\",\n\t\"VariableDeclarator\",\n\t\"WhileStatement\",\n\t\"WithStatement\",\n\t\"YieldExpression\",\n\t\"JSXFragment\",\n\t\"JSXOpeningFragment\",\n\t\"JSXClosingFragment\",\n\t\"JSXIdentifier\",\n\t\"JSXNamespacedName\",\n\t\"JSXMemberExpression\",\n\t\"JSXEmptyExpression\",\n\t\"JSXExpressionContainer\",\n\t\"JSXElement\",\n\t\"JSXClosingElement\",\n\t\"JSXOpeningElement\",\n\t\"JSXAttribute\",\n\t\"JSXSpreadAttribute\",\n\t\"JSXText\",\n\t\"ExportDefaultDeclaration\",\n\t\"ExportNamedDeclaration\",\n\t\"ExportAllDeclaration\",\n\t\"ExportSpecifier\",\n\t\"ImportDeclaration\",\n\t\"ImportSpecifier\",\n\t\"ImportDefaultSpecifier\",\n\t\"ImportNamespaceSpecifier\",\n\t\"ImportExpression\",\n]);\n\n/*\n * General rule strategy:\n * 1. An OffsetStorage instance stores a map of desired offsets, where each token has a specified offset from another\n *    specified token or to the first column.\n * 2. As the AST is traversed, modify the desired offsets of tokens accordingly. For example, when entering a\n *    BlockStatement, offset all of the tokens in the BlockStatement by 1 indent level from the opening curly\n *    brace of the BlockStatement.\n * 3. After traversing the AST, calculate the expected indentation levels of every token according to the\n *    OffsetStorage container.\n * 4. For each line, compare the expected indentation of the first token to the actual indentation in the file,\n *    and report the token if the two values are not equal.\n */\n\n/**\n * A mutable map that stores (key, value) pairs. The keys are numeric indices, and must be unique.\n * This is intended to be a generic wrapper around a map with non-negative integer keys, so that the underlying implementation\n * can easily be swapped out.\n */\nclass IndexMap {\n\t/**\n\t * Creates an empty map\n\t * @param {number} maxKey The maximum key\n\t */\n\tconstructor(maxKey) {\n\t\t// Initializing the array with the maximum expected size avoids dynamic reallocations that could degrade performance.\n\t\tthis._values = Array(maxKey + 1);\n\t}\n\n\t/**\n\t * Inserts an entry into the map.\n\t * @param {number} key The entry's key\n\t * @param {any} value The entry's value\n\t * @returns {void}\n\t */\n\tinsert(key, value) {\n\t\tthis._values[key] = value;\n\t}\n\n\t/**\n\t * Finds the value of the entry with the largest key less than or equal to the provided key\n\t * @param {number} key The provided key\n\t * @returns {*|undefined} The value of the found entry, or undefined if no such entry exists.\n\t */\n\tfindLastNotAfter(key) {\n\t\tconst values = this._values;\n\n\t\tfor (let index = key; index >= 0; index--) {\n\t\t\tconst value = values[index];\n\n\t\t\tif (value) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\treturn void 0;\n\t}\n\n\t/**\n\t * Deletes all of the keys in the interval [start, end)\n\t * @param {number} start The start of the range\n\t * @param {number} end The end of the range\n\t * @returns {void}\n\t */\n\tdeleteRange(start, end) {\n\t\tthis._values.fill(void 0, start, end);\n\t}\n}\n\n/**\n * A helper class to get token-based info related to indentation\n */\nclass TokenInfo {\n\t/**\n\t * @param {SourceCode} sourceCode A SourceCode object\n\t */\n\tconstructor(sourceCode) {\n\t\tthis.sourceCode = sourceCode;\n\t\tthis.firstTokensByLineNumber = new Map();\n\t\tconst tokens = sourceCode.tokensAndComments;\n\n\t\tfor (let i = 0; i < tokens.length; i++) {\n\t\t\tconst token = tokens[i];\n\n\t\t\tif (!this.firstTokensByLineNumber.has(token.loc.start.line)) {\n\t\t\t\tthis.firstTokensByLineNumber.set(token.loc.start.line, token);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!this.firstTokensByLineNumber.has(token.loc.end.line) &&\n\t\t\t\tsourceCode.text\n\t\t\t\t\t.slice(\n\t\t\t\t\t\ttoken.range[1] - token.loc.end.column,\n\t\t\t\t\t\ttoken.range[1],\n\t\t\t\t\t)\n\t\t\t\t\t.trim()\n\t\t\t) {\n\t\t\t\tthis.firstTokensByLineNumber.set(token.loc.end.line, token);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Gets the first token on a given token's line\n\t * @param {Token|ASTNode} token a node or token\n\t * @returns {Token} The first token on the given line\n\t */\n\tgetFirstTokenOfLine(token) {\n\t\treturn this.firstTokensByLineNumber.get(token.loc.start.line);\n\t}\n\n\t/**\n\t * Determines whether a token is the first token in its line\n\t * @param {Token} token The token\n\t * @returns {boolean} `true` if the token is the first on its line\n\t */\n\tisFirstTokenOfLine(token) {\n\t\treturn this.getFirstTokenOfLine(token) === token;\n\t}\n\n\t/**\n\t * Get the actual indent of a token\n\t * @param {Token} token Token to examine. This should be the first token on its line.\n\t * @returns {string} The indentation characters that precede the token\n\t */\n\tgetTokenIndent(token) {\n\t\treturn this.sourceCode.text.slice(\n\t\t\ttoken.range[0] - token.loc.start.column,\n\t\t\ttoken.range[0],\n\t\t);\n\t}\n}\n\n/**\n * A class to store information on desired offsets of tokens from each other\n */\nclass OffsetStorage {\n\t/**\n\t * @param {TokenInfo} tokenInfo a TokenInfo instance\n\t * @param {number} indentSize The desired size of each indentation level\n\t * @param {string} indentType The indentation character\n\t * @param {number} maxIndex The maximum end index of any token\n\t */\n\tconstructor(tokenInfo, indentSize, indentType, maxIndex) {\n\t\tthis._tokenInfo = tokenInfo;\n\t\tthis._indentSize = indentSize;\n\t\tthis._indentType = indentType;\n\n\t\tthis._indexMap = new IndexMap(maxIndex);\n\t\tthis._indexMap.insert(0, { offset: 0, from: null, force: false });\n\n\t\tthis._lockedFirstTokens = new WeakMap();\n\t\tthis._desiredIndentCache = new WeakMap();\n\t\tthis._ignoredTokens = new WeakSet();\n\t}\n\n\t_getOffsetDescriptor(token) {\n\t\treturn this._indexMap.findLastNotAfter(token.range[0]);\n\t}\n\n\t/**\n\t * Sets the offset column of token B to match the offset column of token A.\n\t * - **WARNING**: This matches a *column*, even if baseToken is not the first token on its line. In\n\t * most cases, `setDesiredOffset` should be used instead.\n\t * @param {Token} baseToken The first token\n\t * @param {Token} offsetToken The second token, whose offset should be matched to the first token\n\t * @returns {void}\n\t */\n\tmatchOffsetOf(baseToken, offsetToken) {\n\t\t/*\n\t\t * lockedFirstTokens is a map from a token whose indentation is controlled by the \"first\" option to\n\t\t * the token that it depends on. For example, with the `ArrayExpression: first` option, the first\n\t\t * token of each element in the array after the first will be mapped to the first token of the first\n\t\t * element. The desired indentation of each of these tokens is computed based on the desired indentation\n\t\t * of the \"first\" element, rather than through the normal offset mechanism.\n\t\t */\n\t\tthis._lockedFirstTokens.set(offsetToken, baseToken);\n\t}\n\n\t/**\n\t * Sets the desired offset of a token.\n\t *\n\t * This uses a line-based offset collapsing behavior to handle tokens on the same line.\n\t * For example, consider the following two cases:\n\t *\n\t * (\n\t *     [\n\t *         bar\n\t *     ]\n\t * )\n\t *\n\t * ([\n\t *     bar\n\t * ])\n\t *\n\t * Based on the first case, it's clear that the `bar` token needs to have an offset of 1 indent level (4 spaces) from\n\t * the `[` token, and the `[` token has to have an offset of 1 indent level from the `(` token. Since the `(` token is\n\t * the first on its line (with an indent of 0 spaces), the `bar` token needs to be offset by 2 indent levels (8 spaces)\n\t * from the start of its line.\n\t *\n\t * However, in the second case `bar` should only be indented by 4 spaces. This is because the offset of 1 indent level\n\t * between the `(` and the `[` tokens gets \"collapsed\" because the two tokens are on the same line. As a result, the\n\t * `(` token is mapped to the `[` token with an offset of 0, and the rule correctly decides that `bar` should be indented\n\t * by 1 indent level from the start of the line.\n\t *\n\t * This is useful because rule listeners can usually just call `setDesiredOffset` for all the tokens in the node,\n\t * without needing to check which lines those tokens are on.\n\t *\n\t * Note that since collapsing only occurs when two tokens are on the same line, there are a few cases where non-intuitive\n\t * behavior can occur. For example, consider the following cases:\n\t *\n\t * foo(\n\t * ).\n\t *     bar(\n\t *         baz\n\t *     )\n\t *\n\t * foo(\n\t * ).bar(\n\t *     baz\n\t * )\n\t *\n\t * Based on the first example, it would seem that `bar` should be offset by 1 indent level from `foo`, and `baz`\n\t * should be offset by 1 indent level from `bar`. However, this is not correct, because it would result in `baz`\n\t * being indented by 2 indent levels in the second case (since `foo`, `bar`, and `baz` are all on separate lines, no\n\t * collapsing would occur).\n\t *\n\t * Instead, the correct way would be to offset `baz` by 1 level from `bar`, offset `bar` by 1 level from the `)`, and\n\t * offset the `)` by 0 levels from `foo`. This ensures that the offset between `bar` and the `)` are correctly collapsed\n\t * in the second case.\n\t * @param {Token} token The token\n\t * @param {Token} fromToken The token that `token` should be offset from\n\t * @param {number} offset The desired indent level\n\t * @returns {void}\n\t */\n\tsetDesiredOffset(token, fromToken, offset) {\n\t\treturn this.setDesiredOffsets(token.range, fromToken, offset);\n\t}\n\n\t/**\n\t * Sets the desired offset of all tokens in a range\n\t * It's common for node listeners in this file to need to apply the same offset to a large, contiguous range of tokens.\n\t * Moreover, the offset of any given token is usually updated multiple times (roughly once for each node that contains\n\t * it). This means that the offset of each token is updated O(AST depth) times.\n\t * It would not be performant to store and update the offsets for each token independently, because the rule would end\n\t * up having a time complexity of O(number of tokens * AST depth), which is quite slow for large files.\n\t *\n\t * Instead, the offset tree is represented as a collection of contiguous offset ranges in a file. For example, the following\n\t * list could represent the state of the offset tree at a given point:\n\t *\n\t * - Tokens starting in the interval [0, 15) are aligned with the beginning of the file\n\t * - Tokens starting in the interval [15, 30) are offset by 1 indent level from the `bar` token\n\t * - Tokens starting in the interval [30, 43) are offset by 1 indent level from the `foo` token\n\t * - Tokens starting in the interval [43, 820) are offset by 2 indent levels from the `bar` token\n\t * - Tokens starting in the interval [820, \u221E) are offset by 1 indent level from the `baz` token\n\t *\n\t * The `setDesiredOffsets` methods inserts ranges like the ones above. The third line above would be inserted by using:\n\t * `setDesiredOffsets([30, 43], fooToken, 1);`\n\t * @param {[number, number]} range A [start, end] pair. All tokens with range[0] <= token.start < range[1] will have the offset applied.\n\t * @param {Token} fromToken The token that this is offset from\n\t * @param {number} offset The desired indent level\n\t * @param {boolean} force `true` if this offset should not use the normal collapsing behavior. This should almost always be false.\n\t * @returns {void}\n\t */\n\tsetDesiredOffsets(range, fromToken, offset, force) {\n\t\t/*\n\t\t * Offset ranges are stored as a collection of nodes, where each node maps a numeric key to an offset\n\t\t * descriptor. The tree for the example above would have the following nodes:\n\t\t *\n\t\t * * key: 0, value: { offset: 0, from: null }\n\t\t * * key: 15, value: { offset: 1, from: barToken }\n\t\t * * key: 30, value: { offset: 1, from: fooToken }\n\t\t * * key: 43, value: { offset: 2, from: barToken }\n\t\t * * key: 820, value: { offset: 1, from: bazToken }\n\t\t *\n\t\t * To find the offset descriptor for any given token, one needs to find the node with the largest key\n\t\t * which is <= token.start. To make this operation fast, the nodes are stored in a map indexed by key.\n\t\t */\n\n\t\tconst descriptorToInsert = { offset, from: fromToken, force };\n\n\t\tconst descriptorAfterRange = this._indexMap.findLastNotAfter(range[1]);\n\n\t\tconst fromTokenIsInRange =\n\t\t\tfromToken &&\n\t\t\tfromToken.range[0] >= range[0] &&\n\t\t\tfromToken.range[1] <= range[1];\n\t\tconst fromTokenDescriptor =\n\t\t\tfromTokenIsInRange && this._getOffsetDescriptor(fromToken);\n\n\t\t// First, remove any existing nodes in the range from the map.\n\t\tthis._indexMap.deleteRange(range[0] + 1, range[1]);\n\n\t\t// Insert a new node into the map for this range\n\t\tthis._indexMap.insert(range[0], descriptorToInsert);\n\n\t\t/*\n\t\t * To avoid circular offset dependencies, keep the `fromToken` token mapped to whatever it was mapped to previously,\n\t\t * even if it's in the current range.\n\t\t */\n\t\tif (fromTokenIsInRange) {\n\t\t\tthis._indexMap.insert(fromToken.range[0], fromTokenDescriptor);\n\t\t\tthis._indexMap.insert(fromToken.range[1], descriptorToInsert);\n\t\t}\n\n\t\t/*\n\t\t * To avoid modifying the offset of tokens after the range, insert another node to keep the offset of the following\n\t\t * tokens the same as it was before.\n\t\t */\n\t\tthis._indexMap.insert(range[1], descriptorAfterRange);\n\t}\n\n\t/**\n\t * Gets the desired indent of a token\n\t * @param {Token} token The token\n\t * @returns {string} The desired indent of the token\n\t */\n\tgetDesiredIndent(token) {\n\t\tif (!this._desiredIndentCache.has(token)) {\n\t\t\tif (this._ignoredTokens.has(token)) {\n\t\t\t\t/*\n\t\t\t\t * If the token is ignored, use the actual indent of the token as the desired indent.\n\t\t\t\t * This ensures that no errors are reported for this token.\n\t\t\t\t */\n\t\t\t\tthis._desiredIndentCache.set(\n\t\t\t\t\ttoken,\n\t\t\t\t\tthis._tokenInfo.getTokenIndent(token),\n\t\t\t\t);\n\t\t\t} else if (this._lockedFirstTokens.has(token)) {\n\t\t\t\tconst firstToken = this._lockedFirstTokens.get(token);\n\n\t\t\t\tthis._desiredIndentCache.set(\n\t\t\t\t\ttoken,\n\n\t\t\t\t\t// (indentation for the first element's line)\n\t\t\t\t\tthis.getDesiredIndent(\n\t\t\t\t\t\tthis._tokenInfo.getFirstTokenOfLine(firstToken),\n\t\t\t\t\t) +\n\t\t\t\t\t\t// (space between the start of the first element's line and the first element)\n\t\t\t\t\t\tthis._indentType.repeat(\n\t\t\t\t\t\t\tfirstToken.loc.start.column -\n\t\t\t\t\t\t\t\tthis._tokenInfo.getFirstTokenOfLine(firstToken)\n\t\t\t\t\t\t\t\t\t.loc.start.column,\n\t\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconst offsetInfo = this._getOffsetDescriptor(token);\n\t\t\t\tconst offset =\n\t\t\t\t\toffsetInfo.from &&\n\t\t\t\t\toffsetInfo.from.loc.start.line === token.loc.start.line &&\n\t\t\t\t\t!/^\\s*?\\n/u.test(token.value) &&\n\t\t\t\t\t!offsetInfo.force\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: offsetInfo.offset * this._indentSize;\n\n\t\t\t\tthis._desiredIndentCache.set(\n\t\t\t\t\ttoken,\n\t\t\t\t\t(offsetInfo.from\n\t\t\t\t\t\t? this.getDesiredIndent(offsetInfo.from)\n\t\t\t\t\t\t: \"\") + this._indentType.repeat(offset),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn this._desiredIndentCache.get(token);\n\t}\n\n\t/**\n\t * Ignores a token, preventing it from being reported.\n\t * @param {Token} token The token\n\t * @returns {void}\n\t */\n\tignoreToken(token) {\n\t\tif (this._tokenInfo.isFirstTokenOfLine(token)) {\n\t\t\tthis._ignoredTokens.add(token);\n\t\t}\n\t}\n\n\t/**\n\t * Gets the first token that the given token's indentation is dependent on\n\t * @param {Token} token The token\n\t * @returns {Token} The token that the given token depends on, or `null` if the given token is at the top level\n\t */\n\tgetFirstDependency(token) {\n\t\treturn this._getOffsetDescriptor(token).from;\n\t}\n}\n\nconst ELEMENT_LIST_SCHEMA = {\n\toneOf: [\n\t\t{\n\t\t\ttype: \"integer\",\n\t\t\tminimum: 0,\n\t\t},\n\t\t{\n\t\t\tenum: [\"first\", \"off\"],\n\t\t},\n\t],\n};\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"indent\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/indent\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce consistent indentation\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/indent\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: [\"tab\"],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tSwitchCase: {\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\tdefault: 0,\n\t\t\t\t\t},\n\t\t\t\t\tVariableDeclarator: {\n\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\tELEMENT_LIST_SCHEMA,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tvar: ELEMENT_LIST_SCHEMA,\n\t\t\t\t\t\t\t\t\tlet: ELEMENT_LIST_SCHEMA,\n\t\t\t\t\t\t\t\t\tconst: ELEMENT_LIST_SCHEMA,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\touterIIFEBody: {\n\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tenum: [\"off\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\tMemberExpression: {\n\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tenum: [\"off\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\tFunctionDeclaration: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tparameters: ELEMENT_LIST_SCHEMA,\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tFunctionExpression: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tparameters: ELEMENT_LIST_SCHEMA,\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tStaticBlock: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tCallExpression: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\targuments: ELEMENT_LIST_SCHEMA,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tArrayExpression: ELEMENT_LIST_SCHEMA,\n\t\t\t\t\tObjectExpression: ELEMENT_LIST_SCHEMA,\n\t\t\t\t\tImportDeclaration: ELEMENT_LIST_SCHEMA,\n\t\t\t\t\tflatTernaryExpressions: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t\toffsetTernaryExpressions: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t\tignoredNodes: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\tnot: {\n\t\t\t\t\t\t\t\tpattern: \":exit$\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tignoreComments: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\twrongIndentation:\n\t\t\t\t\"Expected indentation of {{expected}} but found {{actual}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst DEFAULT_VARIABLE_INDENT = 1;\n\t\tconst DEFAULT_PARAMETER_INDENT = 1;\n\t\tconst DEFAULT_FUNCTION_BODY_INDENT = 1;\n\n\t\tlet indentType = \"space\";\n\t\tlet indentSize = 4;\n\t\tconst options = {\n\t\t\tSwitchCase: 0,\n\t\t\tVariableDeclarator: {\n\t\t\t\tvar: DEFAULT_VARIABLE_INDENT,\n\t\t\t\tlet: DEFAULT_VARIABLE_INDENT,\n\t\t\t\tconst: DEFAULT_VARIABLE_INDENT,\n\t\t\t},\n\t\t\touterIIFEBody: 1,\n\t\t\tFunctionDeclaration: {\n\t\t\t\tparameters: DEFAULT_PARAMETER_INDENT,\n\t\t\t\tbody: DEFAULT_FUNCTION_BODY_INDENT,\n\t\t\t},\n\t\t\tFunctionExpression: {\n\t\t\t\tparameters: DEFAULT_PARAMETER_INDENT,\n\t\t\t\tbody: DEFAULT_FUNCTION_BODY_INDENT,\n\t\t\t},\n\t\t\tStaticBlock: {\n\t\t\t\tbody: DEFAULT_FUNCTION_BODY_INDENT,\n\t\t\t},\n\t\t\tCallExpression: {\n\t\t\t\targuments: DEFAULT_PARAMETER_INDENT,\n\t\t\t},\n\t\t\tMemberExpression: 1,\n\t\t\tArrayExpression: 1,\n\t\t\tObjectExpression: 1,\n\t\t\tImportDeclaration: 1,\n\t\t\tflatTernaryExpressions: false,\n\t\t\tignoredNodes: [],\n\t\t\tignoreComments: false,\n\t\t};\n\n\t\tif (context.options.length) {\n\t\t\tif (context.options[0] === \"tab\") {\n\t\t\t\tindentSize = 1;\n\t\t\t\tindentType = \"tab\";\n\t\t\t} else {\n\t\t\t\tindentSize = context.options[0];\n\t\t\t\tindentType = \"space\";\n\t\t\t}\n\n\t\t\tif (context.options[1]) {\n\t\t\t\tObject.assign(options, context.options[1]);\n\n\t\t\t\tif (\n\t\t\t\t\ttypeof options.VariableDeclarator === \"number\" ||\n\t\t\t\t\toptions.VariableDeclarator === \"first\"\n\t\t\t\t) {\n\t\t\t\t\toptions.VariableDeclarator = {\n\t\t\t\t\t\tvar: options.VariableDeclarator,\n\t\t\t\t\t\tlet: options.VariableDeclarator,\n\t\t\t\t\t\tconst: options.VariableDeclarator,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst tokenInfo = new TokenInfo(sourceCode);\n\t\tconst offsets = new OffsetStorage(\n\t\t\ttokenInfo,\n\t\t\tindentSize,\n\t\t\tindentType === \"space\" ? \" \" : \"\\t\",\n\t\t\tsourceCode.text.length,\n\t\t);\n\t\tconst parameterParens = new WeakSet();\n\n\t\t/**\n\t\t * Creates an error message for a line, given the expected/actual indentation.\n\t\t * @param {number} expectedAmount The expected amount of indentation characters for this line\n\t\t * @param {number} actualSpaces The actual number of indentation spaces that were found on this line\n\t\t * @param {number} actualTabs The actual number of indentation tabs that were found on this line\n\t\t * @returns {string} An error message for this line\n\t\t */\n\t\tfunction createErrorMessageData(\n\t\t\texpectedAmount,\n\t\t\tactualSpaces,\n\t\t\tactualTabs,\n\t\t) {\n\t\t\tconst expectedStatement = `${expectedAmount} ${indentType}${expectedAmount === 1 ? \"\" : \"s\"}`; // e.g. \"2 tabs\"\n\t\t\tconst foundSpacesWord = `space${actualSpaces === 1 ? \"\" : \"s\"}`; // e.g. \"space\"\n\t\t\tconst foundTabsWord = `tab${actualTabs === 1 ? \"\" : \"s\"}`; // e.g. \"tabs\"\n\t\t\tlet foundStatement;\n\n\t\t\tif (actualSpaces > 0) {\n\t\t\t\t/*\n\t\t\t\t * Abbreviate the message if the expected indentation is also spaces.\n\t\t\t\t * e.g. 'Expected 4 spaces but found 2' rather than 'Expected 4 spaces but found 2 spaces'\n\t\t\t\t */\n\t\t\t\tfoundStatement =\n\t\t\t\t\tindentType === \"space\"\n\t\t\t\t\t\t? actualSpaces\n\t\t\t\t\t\t: `${actualSpaces} ${foundSpacesWord}`;\n\t\t\t} else if (actualTabs > 0) {\n\t\t\t\tfoundStatement =\n\t\t\t\t\tindentType === \"tab\"\n\t\t\t\t\t\t? actualTabs\n\t\t\t\t\t\t: `${actualTabs} ${foundTabsWord}`;\n\t\t\t} else {\n\t\t\t\tfoundStatement = \"0\";\n\t\t\t}\n\t\t\treturn {\n\t\t\t\texpected: expectedStatement,\n\t\t\t\tactual: foundStatement,\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Reports a given indent violation\n\t\t * @param {Token} token Token violating the indent rule\n\t\t * @param {string} neededIndent Expected indentation string\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(token, neededIndent) {\n\t\t\tconst actualIndent = Array.from(tokenInfo.getTokenIndent(token));\n\t\t\tconst numSpaces = actualIndent.filter(char => char === \" \").length;\n\t\t\tconst numTabs = actualIndent.filter(char => char === \"\\t\").length;\n\n\t\t\tcontext.report({\n\t\t\t\tnode: token,\n\t\t\t\tmessageId: \"wrongIndentation\",\n\t\t\t\tdata: createErrorMessageData(\n\t\t\t\t\tneededIndent.length,\n\t\t\t\t\tnumSpaces,\n\t\t\t\t\tnumTabs,\n\t\t\t\t),\n\t\t\t\tloc: {\n\t\t\t\t\tstart: { line: token.loc.start.line, column: 0 },\n\t\t\t\t\tend: {\n\t\t\t\t\t\tline: token.loc.start.line,\n\t\t\t\t\t\tcolumn: token.loc.start.column,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\tconst range = [\n\t\t\t\t\t\ttoken.range[0] - token.loc.start.column,\n\t\t\t\t\t\ttoken.range[0],\n\t\t\t\t\t];\n\t\t\t\t\tconst newText = neededIndent;\n\n\t\t\t\t\treturn fixer.replaceTextRange(range, newText);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Checks if a token's indentation is correct\n\t\t * @param {Token} token Token to examine\n\t\t * @param {string} desiredIndent Desired indentation of the string\n\t\t * @returns {boolean} `true` if the token's indentation is correct\n\t\t */\n\t\tfunction validateTokenIndent(token, desiredIndent) {\n\t\t\tconst indentation = tokenInfo.getTokenIndent(token);\n\n\t\t\treturn (\n\t\t\t\tindentation === desiredIndent ||\n\t\t\t\t// To avoid conflicts with no-mixed-spaces-and-tabs, don't report mixed spaces and tabs.\n\t\t\t\t(indentation.includes(\" \") && indentation.includes(\"\\t\"))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check to see if the node is a file level IIFE\n\t\t * @param {ASTNode} node The function node to check.\n\t\t * @returns {boolean} True if the node is the outer IIFE\n\t\t */\n\t\tfunction isOuterIIFE(node) {\n\t\t\t/*\n\t\t\t * Verify that the node is an IIFE\n\t\t\t */\n\t\t\tif (\n\t\t\t\t!node.parent ||\n\t\t\t\tnode.parent.type !== \"CallExpression\" ||\n\t\t\t\tnode.parent.callee !== node\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Navigate legal ancestors to determine whether this IIFE is outer.\n\t\t\t * A \"legal ancestor\" is an expression or statement that causes the function to get executed immediately.\n\t\t\t * For example, `!(function(){})()` is an outer IIFE even though it is preceded by a ! operator.\n\t\t\t */\n\t\t\tlet statement = node.parent && node.parent.parent;\n\n\t\t\twhile (\n\t\t\t\t(statement.type === \"UnaryExpression\" &&\n\t\t\t\t\t[\"!\", \"~\", \"+\", \"-\"].includes(statement.operator)) ||\n\t\t\t\tstatement.type === \"AssignmentExpression\" ||\n\t\t\t\tstatement.type === \"LogicalExpression\" ||\n\t\t\t\tstatement.type === \"SequenceExpression\" ||\n\t\t\t\tstatement.type === \"VariableDeclarator\"\n\t\t\t) {\n\t\t\t\tstatement = statement.parent;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t(statement.type === \"ExpressionStatement\" ||\n\t\t\t\t\tstatement.type === \"VariableDeclaration\") &&\n\t\t\t\tstatement.parent.type === \"Program\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Counts the number of linebreaks that follow the last non-whitespace character in a string\n\t\t * @param {string} string The string to check\n\t\t * @returns {number} The number of JavaScript linebreaks that follow the last non-whitespace character,\n\t\t * or the total number of linebreaks if the string is all whitespace.\n\t\t */\n\t\tfunction countTrailingLinebreaks(string) {\n\t\t\tconst trailingWhitespace = string.match(/\\s*$/u)[0];\n\t\t\tconst linebreakMatches = trailingWhitespace.match(\n\t\t\t\tastUtils.createGlobalLinebreakMatcher(),\n\t\t\t);\n\n\t\t\treturn linebreakMatches === null ? 0 : linebreakMatches.length;\n\t\t}\n\n\t\t/**\n\t\t * Check indentation for lists of elements (arrays, objects, function params)\n\t\t * @param {ASTNode[]} elements List of elements that should be offset\n\t\t * @param {Token} startToken The start token of the list that element should be aligned against, e.g. '['\n\t\t * @param {Token} endToken The end token of the list, e.g. ']'\n\t\t * @param {number|string} offset The amount that the elements should be offset\n\t\t * @returns {void}\n\t\t */\n\t\tfunction addElementListIndent(elements, startToken, endToken, offset) {\n\t\t\t/**\n\t\t\t * Gets the first token of a given element, including surrounding parentheses.\n\t\t\t * @param {ASTNode} element A node in the `elements` list\n\t\t\t * @returns {Token} The first token of this element\n\t\t\t */\n\t\t\tfunction getFirstToken(element) {\n\t\t\t\tlet token = sourceCode.getTokenBefore(element);\n\n\t\t\t\twhile (\n\t\t\t\t\tastUtils.isOpeningParenToken(token) &&\n\t\t\t\t\ttoken !== startToken\n\t\t\t\t) {\n\t\t\t\t\ttoken = sourceCode.getTokenBefore(token);\n\t\t\t\t}\n\t\t\t\treturn sourceCode.getTokenAfter(token);\n\t\t\t}\n\n\t\t\t// Run through all the tokens in the list, and offset them by one indent level (mainly for comments, other things will end up overridden)\n\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t[startToken.range[1], endToken.range[0]],\n\t\t\t\tstartToken,\n\t\t\t\ttypeof offset === \"number\" ? offset : 1,\n\t\t\t);\n\t\t\toffsets.setDesiredOffset(endToken, startToken, 0);\n\n\t\t\t// If the preference is \"first\" but there is no first element (e.g. sparse arrays w/ empty first slot), fall back to 1 level.\n\t\t\tif (offset === \"first\" && elements.length && !elements[0]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telements.forEach((element, index) => {\n\t\t\t\tif (!element) {\n\t\t\t\t\t// Skip holes in arrays\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (offset === \"off\") {\n\t\t\t\t\t// Ignore the first token of every element if the \"off\" option is used\n\t\t\t\t\toffsets.ignoreToken(getFirstToken(element));\n\t\t\t\t}\n\n\t\t\t\t// Offset the following elements correctly relative to the first element\n\t\t\t\tif (index === 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\toffset === \"first\" &&\n\t\t\t\t\ttokenInfo.isFirstTokenOfLine(getFirstToken(element))\n\t\t\t\t) {\n\t\t\t\t\toffsets.matchOffsetOf(\n\t\t\t\t\t\tgetFirstToken(elements[0]),\n\t\t\t\t\t\tgetFirstToken(element),\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tconst previousElement = elements[index - 1];\n\t\t\t\t\tconst firstTokenOfPreviousElement =\n\t\t\t\t\t\tpreviousElement && getFirstToken(previousElement);\n\t\t\t\t\tconst previousElementLastToken =\n\t\t\t\t\t\tpreviousElement &&\n\t\t\t\t\t\tsourceCode.getLastToken(previousElement);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousElement &&\n\t\t\t\t\t\tpreviousElementLastToken.loc.end.line -\n\t\t\t\t\t\t\tcountTrailingLinebreaks(\n\t\t\t\t\t\t\t\tpreviousElementLastToken.value,\n\t\t\t\t\t\t\t) >\n\t\t\t\t\t\t\tstartToken.loc.end.line\n\t\t\t\t\t) {\n\t\t\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t\t\t[previousElement.range[1], element.range[1]],\n\t\t\t\t\t\t\tfirstTokenOfPreviousElement,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Check and decide whether to check for indentation for blockless nodes\n\t\t * Scenarios are for or while statements without braces around them\n\t\t * @param {ASTNode} node node to examine\n\t\t * @returns {void}\n\t\t */\n\t\tfunction addBlocklessNodeIndent(node) {\n\t\t\tif (node.type !== \"BlockStatement\") {\n\t\t\t\tconst lastParentToken = sourceCode.getTokenBefore(\n\t\t\t\t\tnode,\n\t\t\t\t\tastUtils.isNotOpeningParenToken,\n\t\t\t\t);\n\n\t\t\t\tlet firstBodyToken = sourceCode.getFirstToken(node);\n\t\t\t\tlet lastBodyToken = sourceCode.getLastToken(node);\n\n\t\t\t\twhile (\n\t\t\t\t\tastUtils.isOpeningParenToken(\n\t\t\t\t\t\tsourceCode.getTokenBefore(firstBodyToken),\n\t\t\t\t\t) &&\n\t\t\t\t\tastUtils.isClosingParenToken(\n\t\t\t\t\t\tsourceCode.getTokenAfter(lastBodyToken),\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tfirstBodyToken = sourceCode.getTokenBefore(firstBodyToken);\n\t\t\t\t\tlastBodyToken = sourceCode.getTokenAfter(lastBodyToken);\n\t\t\t\t}\n\n\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t[firstBodyToken.range[0], lastBodyToken.range[1]],\n\t\t\t\t\tlastParentToken,\n\t\t\t\t\t1,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks the indentation for nodes that are like function calls (`CallExpression` and `NewExpression`)\n\t\t * @param {ASTNode} node A CallExpression or NewExpression node\n\t\t * @returns {void}\n\t\t */\n\t\tfunction addFunctionCallIndent(node) {\n\t\t\tlet openingParen;\n\n\t\t\tif (node.arguments.length) {\n\t\t\t\topeningParen = sourceCode.getFirstTokenBetween(\n\t\t\t\t\tnode.callee,\n\t\t\t\t\tnode.arguments[0],\n\t\t\t\t\tastUtils.isOpeningParenToken,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\topeningParen = sourceCode.getLastToken(node, 1);\n\t\t\t}\n\t\t\tconst closingParen = sourceCode.getLastToken(node);\n\n\t\t\tparameterParens.add(openingParen);\n\t\t\tparameterParens.add(closingParen);\n\n\t\t\t/*\n\t\t\t * If `?.` token exists, set desired offset for that.\n\t\t\t * This logic is copied from `MemberExpression`'s.\n\t\t\t */\n\t\t\tif (node.optional) {\n\t\t\t\tconst dotToken = sourceCode.getTokenAfter(\n\t\t\t\t\tnode.callee,\n\t\t\t\t\tastUtils.isQuestionDotToken,\n\t\t\t\t);\n\t\t\t\tconst calleeParenCount = sourceCode.getTokensBetween(\n\t\t\t\t\tnode.callee,\n\t\t\t\t\tdotToken,\n\t\t\t\t\t{ filter: astUtils.isClosingParenToken },\n\t\t\t\t).length;\n\t\t\t\tconst firstTokenOfCallee = calleeParenCount\n\t\t\t\t\t? sourceCode.getTokenBefore(node.callee, {\n\t\t\t\t\t\t\tskip: calleeParenCount - 1,\n\t\t\t\t\t\t})\n\t\t\t\t\t: sourceCode.getFirstToken(node.callee);\n\t\t\t\tconst lastTokenOfCallee = sourceCode.getTokenBefore(dotToken);\n\t\t\t\tconst offsetBase =\n\t\t\t\t\tlastTokenOfCallee.loc.end.line ===\n\t\t\t\t\topeningParen.loc.start.line\n\t\t\t\t\t\t? lastTokenOfCallee\n\t\t\t\t\t\t: firstTokenOfCallee;\n\n\t\t\t\toffsets.setDesiredOffset(dotToken, offsetBase, 1);\n\t\t\t}\n\n\t\t\tconst offsetAfterToken =\n\t\t\t\tnode.callee.type === \"TaggedTemplateExpression\"\n\t\t\t\t\t? sourceCode.getFirstToken(node.callee.quasi)\n\t\t\t\t\t: openingParen;\n\t\t\tconst offsetToken = sourceCode.getTokenBefore(offsetAfterToken);\n\n\t\t\toffsets.setDesiredOffset(openingParen, offsetToken, 0);\n\n\t\t\taddElementListIndent(\n\t\t\t\tnode.arguments,\n\t\t\t\topeningParen,\n\t\t\t\tclosingParen,\n\t\t\t\toptions.CallExpression.arguments,\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks the indentation of parenthesized values, given a list of tokens in a program\n\t\t * @param {Token[]} tokens A list of tokens\n\t\t * @returns {void}\n\t\t */\n\t\tfunction addParensIndent(tokens) {\n\t\t\tconst parenStack = [];\n\t\t\tconst parenPairs = [];\n\n\t\t\tfor (let i = 0; i < tokens.length; i++) {\n\t\t\t\tconst nextToken = tokens[i];\n\n\t\t\t\tif (astUtils.isOpeningParenToken(nextToken)) {\n\t\t\t\t\tparenStack.push(nextToken);\n\t\t\t\t} else if (astUtils.isClosingParenToken(nextToken)) {\n\t\t\t\t\tparenPairs.push({\n\t\t\t\t\t\tleft: parenStack.pop(),\n\t\t\t\t\t\tright: nextToken,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (let i = parenPairs.length - 1; i >= 0; i--) {\n\t\t\t\tconst leftParen = parenPairs[i].left;\n\t\t\t\tconst rightParen = parenPairs[i].right;\n\n\t\t\t\t// We only want to handle parens around expressions, so exclude parentheses that are in function parameters and function call arguments.\n\t\t\t\tif (\n\t\t\t\t\t!parameterParens.has(leftParen) &&\n\t\t\t\t\t!parameterParens.has(rightParen)\n\t\t\t\t) {\n\t\t\t\t\tconst parenthesizedTokens = new Set(\n\t\t\t\t\t\tsourceCode.getTokensBetween(leftParen, rightParen),\n\t\t\t\t\t);\n\n\t\t\t\t\tparenthesizedTokens.forEach(token => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!parenthesizedTokens.has(\n\t\t\t\t\t\t\t\toffsets.getFirstDependency(token),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toffsets.setDesiredOffset(token, leftParen, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\toffsets.setDesiredOffset(rightParen, leftParen, 0);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Ignore all tokens within an unknown node whose offset do not depend\n\t\t * on another token's offset within the unknown node\n\t\t * @param {ASTNode} node Unknown Node\n\t\t * @returns {void}\n\t\t */\n\t\tfunction ignoreNode(node) {\n\t\t\tconst unknownNodeTokens = new Set(\n\t\t\t\tsourceCode.getTokens(node, { includeComments: true }),\n\t\t\t);\n\n\t\t\tunknownNodeTokens.forEach(token => {\n\t\t\t\tif (!unknownNodeTokens.has(offsets.getFirstDependency(token))) {\n\t\t\t\t\tconst firstTokenOfLine =\n\t\t\t\t\t\ttokenInfo.getFirstTokenOfLine(token);\n\n\t\t\t\t\tif (token === firstTokenOfLine) {\n\t\t\t\t\t\toffsets.ignoreToken(token);\n\t\t\t\t\t} else {\n\t\t\t\t\t\toffsets.setDesiredOffset(token, firstTokenOfLine, 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Check whether the given token is on the first line of a statement.\n\t\t * @param {Token} token The token to check.\n\t\t * @param {ASTNode} leafNode The expression node that the token belongs directly.\n\t\t * @returns {boolean} `true` if the token is on the first line of a statement.\n\t\t */\n\t\tfunction isOnFirstLineOfStatement(token, leafNode) {\n\t\t\tlet node = leafNode;\n\n\t\t\twhile (\n\t\t\t\tnode.parent &&\n\t\t\t\t!node.parent.type.endsWith(\"Statement\") &&\n\t\t\t\t!node.parent.type.endsWith(\"Declaration\")\n\t\t\t) {\n\t\t\t\tnode = node.parent;\n\t\t\t}\n\t\t\tnode = node.parent;\n\n\t\t\treturn !node || node.loc.start.line === token.loc.start.line;\n\t\t}\n\n\t\t/**\n\t\t * Check whether there are any blank (whitespace-only) lines between\n\t\t * two tokens on separate lines.\n\t\t * @param {Token} firstToken The first token.\n\t\t * @param {Token} secondToken The second token.\n\t\t * @returns {boolean} `true` if the tokens are on separate lines and\n\t\t *   there exists a blank line between them, `false` otherwise.\n\t\t */\n\t\tfunction hasBlankLinesBetween(firstToken, secondToken) {\n\t\t\tconst firstTokenLine = firstToken.loc.end.line;\n\t\t\tconst secondTokenLine = secondToken.loc.start.line;\n\n\t\t\tif (\n\t\t\t\tfirstTokenLine === secondTokenLine ||\n\t\t\t\tfirstTokenLine === secondTokenLine - 1\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor (\n\t\t\t\tlet line = firstTokenLine + 1;\n\t\t\t\tline < secondTokenLine;\n\t\t\t\t++line\n\t\t\t) {\n\t\t\t\tif (!tokenInfo.firstTokensByLineNumber.has(line)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tconst ignoredNodeFirstTokens = new Set();\n\n\t\tconst baseOffsetListeners = {\n\t\t\t\"ArrayExpression, ArrayPattern\"(node) {\n\t\t\t\tconst openingBracket = sourceCode.getFirstToken(node);\n\t\t\t\tconst closingBracket = sourceCode.getTokenAfter(\n\t\t\t\t\t[...node.elements].reverse().find(_ => _) || openingBracket,\n\t\t\t\t\tastUtils.isClosingBracketToken,\n\t\t\t\t);\n\n\t\t\t\taddElementListIndent(\n\t\t\t\t\tnode.elements,\n\t\t\t\t\topeningBracket,\n\t\t\t\t\tclosingBracket,\n\t\t\t\t\toptions.ArrayExpression,\n\t\t\t\t);\n\t\t\t},\n\n\t\t\t\"ObjectExpression, ObjectPattern\"(node) {\n\t\t\t\tconst openingCurly = sourceCode.getFirstToken(node);\n\t\t\t\tconst closingCurly = sourceCode.getTokenAfter(\n\t\t\t\t\tnode.properties.length\n\t\t\t\t\t\t? node.properties.at(-1)\n\t\t\t\t\t\t: openingCurly,\n\t\t\t\t\tastUtils.isClosingBraceToken,\n\t\t\t\t);\n\n\t\t\t\taddElementListIndent(\n\t\t\t\t\tnode.properties,\n\t\t\t\t\topeningCurly,\n\t\t\t\t\tclosingCurly,\n\t\t\t\t\toptions.ObjectExpression,\n\t\t\t\t);\n\t\t\t},\n\n\t\t\tArrowFunctionExpression(node) {\n\t\t\t\tconst maybeOpeningParen = sourceCode.getFirstToken(node, {\n\t\t\t\t\tskip: node.async ? 1 : 0,\n\t\t\t\t});\n\n\t\t\t\tif (astUtils.isOpeningParenToken(maybeOpeningParen)) {\n\t\t\t\t\tconst openingParen = maybeOpeningParen;\n\t\t\t\t\tconst closingParen = sourceCode.getTokenBefore(\n\t\t\t\t\t\tnode.body,\n\t\t\t\t\t\tastUtils.isClosingParenToken,\n\t\t\t\t\t);\n\n\t\t\t\t\tparameterParens.add(openingParen);\n\t\t\t\t\tparameterParens.add(closingParen);\n\t\t\t\t\taddElementListIndent(\n\t\t\t\t\t\tnode.params,\n\t\t\t\t\t\topeningParen,\n\t\t\t\t\t\tclosingParen,\n\t\t\t\t\t\toptions.FunctionExpression.parameters,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\taddBlocklessNodeIndent(node.body);\n\t\t\t},\n\n\t\t\tAssignmentExpression(node) {\n\t\t\t\tconst operator = sourceCode.getFirstTokenBetween(\n\t\t\t\t\tnode.left,\n\t\t\t\t\tnode.right,\n\t\t\t\t\ttoken => token.value === node.operator,\n\t\t\t\t);\n\n\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t[operator.range[0], node.range[1]],\n\t\t\t\t\tsourceCode.getLastToken(node.left),\n\t\t\t\t\t1,\n\t\t\t\t);\n\t\t\t\toffsets.ignoreToken(operator);\n\t\t\t\toffsets.ignoreToken(sourceCode.getTokenAfter(operator));\n\t\t\t},\n\n\t\t\t\"BinaryExpression, LogicalExpression\"(node) {\n\t\t\t\tconst operator = sourceCode.getFirstTokenBetween(\n\t\t\t\t\tnode.left,\n\t\t\t\t\tnode.right,\n\t\t\t\t\ttoken => token.value === node.operator,\n\t\t\t\t);\n\n\t\t\t\t/*\n\t\t\t\t * For backwards compatibility, don't check BinaryExpression indents, e.g.\n\t\t\t\t * var foo = bar &&\n\t\t\t\t *                   baz;\n\t\t\t\t */\n\n\t\t\t\tconst tokenAfterOperator = sourceCode.getTokenAfter(operator);\n\n\t\t\t\toffsets.ignoreToken(operator);\n\t\t\t\toffsets.ignoreToken(tokenAfterOperator);\n\t\t\t\toffsets.setDesiredOffset(tokenAfterOperator, operator, 0);\n\t\t\t},\n\n\t\t\t\"BlockStatement, ClassBody\"(node) {\n\t\t\t\tlet blockIndentLevel;\n\n\t\t\t\tif (node.parent && isOuterIIFE(node.parent)) {\n\t\t\t\t\tblockIndentLevel = options.outerIIFEBody;\n\t\t\t\t} else if (\n\t\t\t\t\tnode.parent &&\n\t\t\t\t\t(node.parent.type === \"FunctionExpression\" ||\n\t\t\t\t\t\tnode.parent.type === \"ArrowFunctionExpression\")\n\t\t\t\t) {\n\t\t\t\t\tblockIndentLevel = options.FunctionExpression.body;\n\t\t\t\t} else if (\n\t\t\t\t\tnode.parent &&\n\t\t\t\t\tnode.parent.type === \"FunctionDeclaration\"\n\t\t\t\t) {\n\t\t\t\t\tblockIndentLevel = options.FunctionDeclaration.body;\n\t\t\t\t} else {\n\t\t\t\t\tblockIndentLevel = 1;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * For blocks that aren't lone statements, ensure that the opening curly brace\n\t\t\t\t * is aligned with the parent.\n\t\t\t\t */\n\t\t\t\tif (!astUtils.STATEMENT_LIST_PARENTS.has(node.parent.type)) {\n\t\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\t\tsourceCode.getFirstToken(node),\n\t\t\t\t\t\tsourceCode.getFirstToken(node.parent),\n\t\t\t\t\t\t0,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\taddElementListIndent(\n\t\t\t\t\tnode.body,\n\t\t\t\t\tsourceCode.getFirstToken(node),\n\t\t\t\t\tsourceCode.getLastToken(node),\n\t\t\t\t\tblockIndentLevel,\n\t\t\t\t);\n\t\t\t},\n\n\t\t\tCallExpression: addFunctionCallIndent,\n\n\t\t\t\"ClassDeclaration[superClass], ClassExpression[superClass]\"(node) {\n\t\t\t\tconst classToken = sourceCode.getFirstToken(node);\n\t\t\t\tconst extendsToken = sourceCode.getTokenBefore(\n\t\t\t\t\tnode.superClass,\n\t\t\t\t\tastUtils.isNotOpeningParenToken,\n\t\t\t\t);\n\n\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t[extendsToken.range[0], node.body.range[0]],\n\t\t\t\t\tclassToken,\n\t\t\t\t\t1,\n\t\t\t\t);\n\t\t\t},\n\n\t\t\tConditionalExpression(node) {\n\t\t\t\tconst firstToken = sourceCode.getFirstToken(node);\n\n\t\t\t\t// `flatTernaryExpressions` option is for the following style:\n\t\t\t\t// var a =\n\t\t\t\t//     foo > 0 ? bar :\n\t\t\t\t//     foo < 0 ? baz :\n\t\t\t\t//     /*else*/ qiz ;\n\t\t\t\tif (\n\t\t\t\t\t!options.flatTernaryExpressions ||\n\t\t\t\t\t!astUtils.isTokenOnSameLine(node.test, node.consequent) ||\n\t\t\t\t\tisOnFirstLineOfStatement(firstToken, node)\n\t\t\t\t) {\n\t\t\t\t\tconst questionMarkToken = sourceCode.getFirstTokenBetween(\n\t\t\t\t\t\tnode.test,\n\t\t\t\t\t\tnode.consequent,\n\t\t\t\t\t\ttoken =>\n\t\t\t\t\t\t\ttoken.type === \"Punctuator\" && token.value === \"?\",\n\t\t\t\t\t);\n\t\t\t\t\tconst colonToken = sourceCode.getFirstTokenBetween(\n\t\t\t\t\t\tnode.consequent,\n\t\t\t\t\t\tnode.alternate,\n\t\t\t\t\t\ttoken =>\n\t\t\t\t\t\t\ttoken.type === \"Punctuator\" && token.value === \":\",\n\t\t\t\t\t);\n\n\t\t\t\t\tconst firstConsequentToken =\n\t\t\t\t\t\tsourceCode.getTokenAfter(questionMarkToken);\n\t\t\t\t\tconst lastConsequentToken =\n\t\t\t\t\t\tsourceCode.getTokenBefore(colonToken);\n\t\t\t\t\tconst firstAlternateToken =\n\t\t\t\t\t\tsourceCode.getTokenAfter(colonToken);\n\n\t\t\t\t\toffsets.setDesiredOffset(questionMarkToken, firstToken, 1);\n\t\t\t\t\toffsets.setDesiredOffset(colonToken, firstToken, 1);\n\n\t\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\t\tfirstConsequentToken,\n\t\t\t\t\t\tfirstToken,\n\t\t\t\t\t\tfirstConsequentToken.type === \"Punctuator\" &&\n\t\t\t\t\t\t\toptions.offsetTernaryExpressions\n\t\t\t\t\t\t\t? 2\n\t\t\t\t\t\t\t: 1,\n\t\t\t\t\t);\n\n\t\t\t\t\t/*\n\t\t\t\t\t * The alternate and the consequent should usually have the same indentation.\n\t\t\t\t\t * If they share part of a line, align the alternate against the first token of the consequent.\n\t\t\t\t\t * This allows the alternate to be indented correctly in cases like this:\n\t\t\t\t\t * foo ? (\n\t\t\t\t\t *   bar\n\t\t\t\t\t * ) : ( // this '(' is aligned with the '(' above, so it's considered to be aligned with `foo`\n\t\t\t\t\t *   baz // as a result, `baz` is offset by 1 rather than 2\n\t\t\t\t\t * )\n\t\t\t\t\t */\n\t\t\t\t\tif (\n\t\t\t\t\t\tlastConsequentToken.loc.end.line ===\n\t\t\t\t\t\tfirstAlternateToken.loc.start.line\n\t\t\t\t\t) {\n\t\t\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\t\t\tfirstAlternateToken,\n\t\t\t\t\t\t\tfirstConsequentToken,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * If the alternate and consequent do not share part of a line, offset the alternate from the first\n\t\t\t\t\t\t * token of the conditional expression. For example:\n\t\t\t\t\t\t * foo ? bar\n\t\t\t\t\t\t *   : baz\n\t\t\t\t\t\t *\n\t\t\t\t\t\t * If `baz` were aligned with `bar` rather than being offset by 1 from `foo`, `baz` would end up\n\t\t\t\t\t\t * having no expected indentation.\n\t\t\t\t\t\t */\n\t\t\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\t\t\tfirstAlternateToken,\n\t\t\t\t\t\t\tfirstToken,\n\t\t\t\t\t\t\tfirstAlternateToken.type === \"Punctuator\" &&\n\t\t\t\t\t\t\t\toptions.offsetTernaryExpressions\n\t\t\t\t\t\t\t\t? 2\n\t\t\t\t\t\t\t\t: 1,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t\"DoWhileStatement, WhileStatement, ForInStatement, ForOfStatement, WithStatement\":\n\t\t\t\tnode => addBlocklessNodeIndent(node.body),\n\n\t\t\tExportNamedDeclaration(node) {\n\t\t\t\tif (node.declaration === null) {\n\t\t\t\t\tconst closingCurly = sourceCode.getLastToken(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tastUtils.isClosingBraceToken,\n\t\t\t\t\t);\n\n\t\t\t\t\t// Indent the specifiers in `export {foo, bar, baz}`\n\t\t\t\t\taddElementListIndent(\n\t\t\t\t\t\tnode.specifiers,\n\t\t\t\t\t\tsourceCode.getFirstToken(node, { skip: 1 }),\n\t\t\t\t\t\tclosingCurly,\n\t\t\t\t\t\t1,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (node.source) {\n\t\t\t\t\t\t// Indent everything after and including the `from` token in `export {foo, bar, baz} from 'qux'`\n\t\t\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t\t\t[closingCurly.range[1], node.range[1]],\n\t\t\t\t\t\t\tsourceCode.getFirstToken(node),\n\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tForStatement(node) {\n\t\t\t\tconst forOpeningParen = sourceCode.getFirstToken(node, 1);\n\n\t\t\t\tif (node.init) {\n\t\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t\tnode.init.range,\n\t\t\t\t\t\tforOpeningParen,\n\t\t\t\t\t\t1,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (node.test) {\n\t\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t\tnode.test.range,\n\t\t\t\t\t\tforOpeningParen,\n\t\t\t\t\t\t1,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (node.update) {\n\t\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t\tnode.update.range,\n\t\t\t\t\t\tforOpeningParen,\n\t\t\t\t\t\t1,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\taddBlocklessNodeIndent(node.body);\n\t\t\t},\n\n\t\t\t\"FunctionDeclaration, FunctionExpression\"(node) {\n\t\t\t\tconst closingParen = sourceCode.getTokenBefore(node.body);\n\t\t\t\tconst openingParen = sourceCode.getTokenBefore(\n\t\t\t\t\tnode.params.length ? node.params[0] : closingParen,\n\t\t\t\t);\n\n\t\t\t\tparameterParens.add(openingParen);\n\t\t\t\tparameterParens.add(closingParen);\n\t\t\t\taddElementListIndent(\n\t\t\t\t\tnode.params,\n\t\t\t\t\topeningParen,\n\t\t\t\t\tclosingParen,\n\t\t\t\t\toptions[node.type].parameters,\n\t\t\t\t);\n\t\t\t},\n\n\t\t\tIfStatement(node) {\n\t\t\t\taddBlocklessNodeIndent(node.consequent);\n\t\t\t\tif (node.alternate) {\n\t\t\t\t\taddBlocklessNodeIndent(node.alternate);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * For blockless nodes with semicolon-first style, don't indent the semicolon.\n\t\t\t * e.g.\n\t\t\t * if (foo)\n\t\t\t *     bar()\n\t\t\t * ; [1, 2, 3].map(foo)\n\t\t\t *\n\t\t\t * Traversal into the node sets indentation of the semicolon, so we need to override it on exit.\n\t\t\t */\n\t\t\t\":matches(DoWhileStatement, ForStatement, ForInStatement, ForOfStatement, IfStatement, WhileStatement, WithStatement):exit\"(\n\t\t\t\tnode,\n\t\t\t) {\n\t\t\t\tlet nodesToCheck;\n\n\t\t\t\tif (node.type === \"IfStatement\") {\n\t\t\t\t\tnodesToCheck = [node.consequent];\n\t\t\t\t\tif (node.alternate) {\n\t\t\t\t\t\tnodesToCheck.push(node.alternate);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tnodesToCheck = [node.body];\n\t\t\t\t}\n\n\t\t\t\tfor (const nodeToCheck of nodesToCheck) {\n\t\t\t\t\tconst lastToken = sourceCode.getLastToken(nodeToCheck);\n\n\t\t\t\t\tif (astUtils.isSemicolonToken(lastToken)) {\n\t\t\t\t\t\tconst tokenBeforeLast =\n\t\t\t\t\t\t\tsourceCode.getTokenBefore(lastToken);\n\t\t\t\t\t\tconst tokenAfterLast =\n\t\t\t\t\t\t\tsourceCode.getTokenAfter(lastToken);\n\n\t\t\t\t\t\t// override indentation of `;` only if its line looks like a semicolon-first style line\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!astUtils.isTokenOnSameLine(\n\t\t\t\t\t\t\t\ttokenBeforeLast,\n\t\t\t\t\t\t\t\tlastToken,\n\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\ttokenAfterLast &&\n\t\t\t\t\t\t\tastUtils.isTokenOnSameLine(\n\t\t\t\t\t\t\t\tlastToken,\n\t\t\t\t\t\t\t\ttokenAfterLast,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\t\t\t\tlastToken,\n\t\t\t\t\t\t\t\tsourceCode.getFirstToken(node),\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tImportDeclaration(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.specifiers.some(\n\t\t\t\t\t\tspecifier => specifier.type === \"ImportSpecifier\",\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tconst openingCurly = sourceCode.getFirstToken(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tastUtils.isOpeningBraceToken,\n\t\t\t\t\t);\n\t\t\t\t\tconst closingCurly = sourceCode.getLastToken(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tastUtils.isClosingBraceToken,\n\t\t\t\t\t);\n\n\t\t\t\t\taddElementListIndent(\n\t\t\t\t\t\tnode.specifiers.filter(\n\t\t\t\t\t\t\tspecifier => specifier.type === \"ImportSpecifier\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\topeningCurly,\n\t\t\t\t\t\tclosingCurly,\n\t\t\t\t\t\toptions.ImportDeclaration,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst fromToken = sourceCode.getLastToken(\n\t\t\t\t\tnode,\n\t\t\t\t\ttoken =>\n\t\t\t\t\t\ttoken.type === \"Identifier\" && token.value === \"from\",\n\t\t\t\t);\n\t\t\t\tconst sourceToken = sourceCode.getLastToken(\n\t\t\t\t\tnode,\n\t\t\t\t\ttoken => token.type === \"String\",\n\t\t\t\t);\n\t\t\t\tconst semiToken = sourceCode.getLastToken(\n\t\t\t\t\tnode,\n\t\t\t\t\ttoken => token.type === \"Punctuator\" && token.value === \";\",\n\t\t\t\t);\n\n\t\t\t\tif (fromToken) {\n\t\t\t\t\tconst end =\n\t\t\t\t\t\tsemiToken && semiToken.range[1] === sourceToken.range[1]\n\t\t\t\t\t\t\t? node.range[1]\n\t\t\t\t\t\t\t: sourceToken.range[1];\n\n\t\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t\t[fromToken.range[0], end],\n\t\t\t\t\t\tsourceCode.getFirstToken(node),\n\t\t\t\t\t\t1,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tImportExpression(node) {\n\t\t\t\tconst openingParen = sourceCode.getFirstToken(node, 1);\n\t\t\t\tconst closingParen = sourceCode.getLastToken(node);\n\n\t\t\t\tparameterParens.add(openingParen);\n\t\t\t\tparameterParens.add(closingParen);\n\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\topeningParen,\n\t\t\t\t\tsourceCode.getTokenBefore(openingParen),\n\t\t\t\t\t0,\n\t\t\t\t);\n\n\t\t\t\taddElementListIndent(\n\t\t\t\t\t[node.source],\n\t\t\t\t\topeningParen,\n\t\t\t\t\tclosingParen,\n\t\t\t\t\toptions.CallExpression.arguments,\n\t\t\t\t);\n\t\t\t},\n\n\t\t\t\"MemberExpression, JSXMemberExpression, MetaProperty\"(node) {\n\t\t\t\tconst object =\n\t\t\t\t\tnode.type === \"MetaProperty\" ? node.meta : node.object;\n\t\t\t\tconst firstNonObjectToken = sourceCode.getFirstTokenBetween(\n\t\t\t\t\tobject,\n\t\t\t\t\tnode.property,\n\t\t\t\t\tastUtils.isNotClosingParenToken,\n\t\t\t\t);\n\t\t\t\tconst secondNonObjectToken =\n\t\t\t\t\tsourceCode.getTokenAfter(firstNonObjectToken);\n\n\t\t\t\tconst objectParenCount = sourceCode.getTokensBetween(\n\t\t\t\t\tobject,\n\t\t\t\t\tnode.property,\n\t\t\t\t\t{ filter: astUtils.isClosingParenToken },\n\t\t\t\t).length;\n\t\t\t\tconst firstObjectToken = objectParenCount\n\t\t\t\t\t? sourceCode.getTokenBefore(object, {\n\t\t\t\t\t\t\tskip: objectParenCount - 1,\n\t\t\t\t\t\t})\n\t\t\t\t\t: sourceCode.getFirstToken(object);\n\t\t\t\tconst lastObjectToken =\n\t\t\t\t\tsourceCode.getTokenBefore(firstNonObjectToken);\n\t\t\t\tconst firstPropertyToken = node.computed\n\t\t\t\t\t? firstNonObjectToken\n\t\t\t\t\t: secondNonObjectToken;\n\n\t\t\t\tif (node.computed) {\n\t\t\t\t\t// For computed MemberExpressions, match the closing bracket with the opening bracket.\n\t\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\t\tsourceCode.getLastToken(node),\n\t\t\t\t\t\tfirstNonObjectToken,\n\t\t\t\t\t\t0,\n\t\t\t\t\t);\n\t\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t\tnode.property.range,\n\t\t\t\t\t\tfirstNonObjectToken,\n\t\t\t\t\t\t1,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * If the object ends on the same line that the property starts, match against the last token\n\t\t\t\t * of the object, to ensure that the MemberExpression is not indented.\n\t\t\t\t *\n\t\t\t\t * Otherwise, match against the first token of the object, e.g.\n\t\t\t\t * foo\n\t\t\t\t *   .bar\n\t\t\t\t *   .baz // <-- offset by 1 from `foo`\n\t\t\t\t */\n\t\t\t\tconst offsetBase =\n\t\t\t\t\tlastObjectToken.loc.end.line ===\n\t\t\t\t\tfirstPropertyToken.loc.start.line\n\t\t\t\t\t\t? lastObjectToken\n\t\t\t\t\t\t: firstObjectToken;\n\n\t\t\t\tif (typeof options.MemberExpression === \"number\") {\n\t\t\t\t\t// Match the dot (for non-computed properties) or the opening bracket (for computed properties) against the object.\n\t\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\t\tfirstNonObjectToken,\n\t\t\t\t\t\toffsetBase,\n\t\t\t\t\t\toptions.MemberExpression,\n\t\t\t\t\t);\n\n\t\t\t\t\t/*\n\t\t\t\t\t * For computed MemberExpressions, match the first token of the property against the opening bracket.\n\t\t\t\t\t * Otherwise, match the first token of the property against the object.\n\t\t\t\t\t */\n\t\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\t\tsecondNonObjectToken,\n\t\t\t\t\t\tnode.computed ? firstNonObjectToken : offsetBase,\n\t\t\t\t\t\toptions.MemberExpression,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t// If the MemberExpression option is off, ignore the dot and the first token of the property.\n\t\t\t\t\toffsets.ignoreToken(firstNonObjectToken);\n\t\t\t\t\toffsets.ignoreToken(secondNonObjectToken);\n\n\t\t\t\t\t// To ignore the property indentation, ensure that the property tokens depend on the ignored tokens.\n\t\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\t\tfirstNonObjectToken,\n\t\t\t\t\t\toffsetBase,\n\t\t\t\t\t\t0,\n\t\t\t\t\t);\n\t\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\t\tsecondNonObjectToken,\n\t\t\t\t\t\tfirstNonObjectToken,\n\t\t\t\t\t\t0,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tNewExpression(node) {\n\t\t\t\t// Only indent the arguments if the NewExpression has parens (e.g. `new Foo(bar)` or `new Foo()`, but not `new Foo`\n\t\t\t\tif (\n\t\t\t\t\tnode.arguments.length > 0 ||\n\t\t\t\t\t(astUtils.isClosingParenToken(\n\t\t\t\t\t\tsourceCode.getLastToken(node),\n\t\t\t\t\t) &&\n\t\t\t\t\t\tastUtils.isOpeningParenToken(\n\t\t\t\t\t\t\tsourceCode.getLastToken(node, 1),\n\t\t\t\t\t\t))\n\t\t\t\t) {\n\t\t\t\t\taddFunctionCallIndent(node);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tProperty(node) {\n\t\t\t\tif (!node.shorthand && !node.method && node.kind === \"init\") {\n\t\t\t\t\tconst colon = sourceCode.getFirstTokenBetween(\n\t\t\t\t\t\tnode.key,\n\t\t\t\t\t\tnode.value,\n\t\t\t\t\t\tastUtils.isColonToken,\n\t\t\t\t\t);\n\n\t\t\t\t\toffsets.ignoreToken(sourceCode.getTokenAfter(colon));\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tPropertyDefinition(node) {\n\t\t\t\tconst firstToken = sourceCode.getFirstToken(node);\n\t\t\t\tconst maybeSemicolonToken = sourceCode.getLastToken(node);\n\t\t\t\tlet keyLastToken;\n\n\t\t\t\t// Indent key.\n\t\t\t\tif (node.computed) {\n\t\t\t\t\tconst bracketTokenL = sourceCode.getTokenBefore(\n\t\t\t\t\t\tnode.key,\n\t\t\t\t\t\tastUtils.isOpeningBracketToken,\n\t\t\t\t\t);\n\t\t\t\t\tconst bracketTokenR = (keyLastToken =\n\t\t\t\t\t\tsourceCode.getTokenAfter(\n\t\t\t\t\t\t\tnode.key,\n\t\t\t\t\t\t\tastUtils.isClosingBracketToken,\n\t\t\t\t\t\t));\n\t\t\t\t\tconst keyRange = [\n\t\t\t\t\t\tbracketTokenL.range[1],\n\t\t\t\t\t\tbracketTokenR.range[0],\n\t\t\t\t\t];\n\n\t\t\t\t\tif (bracketTokenL !== firstToken) {\n\t\t\t\t\t\toffsets.setDesiredOffset(bracketTokenL, firstToken, 0);\n\t\t\t\t\t}\n\t\t\t\t\toffsets.setDesiredOffsets(keyRange, bracketTokenL, 1);\n\t\t\t\t\toffsets.setDesiredOffset(bracketTokenR, bracketTokenL, 0);\n\t\t\t\t} else {\n\t\t\t\t\tconst idToken = (keyLastToken = sourceCode.getFirstToken(\n\t\t\t\t\t\tnode.key,\n\t\t\t\t\t));\n\n\t\t\t\t\tif (idToken !== firstToken) {\n\t\t\t\t\t\toffsets.setDesiredOffset(idToken, firstToken, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Indent initializer.\n\t\t\t\tif (node.value) {\n\t\t\t\t\tconst eqToken = sourceCode.getTokenBefore(\n\t\t\t\t\t\tnode.value,\n\t\t\t\t\t\tastUtils.isEqToken,\n\t\t\t\t\t);\n\t\t\t\t\tconst valueToken = sourceCode.getTokenAfter(eqToken);\n\n\t\t\t\t\toffsets.setDesiredOffset(eqToken, keyLastToken, 1);\n\t\t\t\t\toffsets.setDesiredOffset(valueToken, eqToken, 1);\n\t\t\t\t\tif (astUtils.isSemicolonToken(maybeSemicolonToken)) {\n\t\t\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\t\t\tmaybeSemicolonToken,\n\t\t\t\t\t\t\teqToken,\n\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else if (astUtils.isSemicolonToken(maybeSemicolonToken)) {\n\t\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\t\tmaybeSemicolonToken,\n\t\t\t\t\t\tkeyLastToken,\n\t\t\t\t\t\t1,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tStaticBlock(node) {\n\t\t\t\tconst openingCurly = sourceCode.getFirstToken(node, {\n\t\t\t\t\tskip: 1,\n\t\t\t\t}); // skip the `static` token\n\t\t\t\tconst closingCurly = sourceCode.getLastToken(node);\n\n\t\t\t\taddElementListIndent(\n\t\t\t\t\tnode.body,\n\t\t\t\t\topeningCurly,\n\t\t\t\t\tclosingCurly,\n\t\t\t\t\toptions.StaticBlock.body,\n\t\t\t\t);\n\t\t\t},\n\n\t\t\tSwitchStatement(node) {\n\t\t\t\tconst openingCurly = sourceCode.getTokenAfter(\n\t\t\t\t\tnode.discriminant,\n\t\t\t\t\tastUtils.isOpeningBraceToken,\n\t\t\t\t);\n\t\t\t\tconst closingCurly = sourceCode.getLastToken(node);\n\n\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t[openingCurly.range[1], closingCurly.range[0]],\n\t\t\t\t\topeningCurly,\n\t\t\t\t\toptions.SwitchCase,\n\t\t\t\t);\n\n\t\t\t\tif (node.cases.length) {\n\t\t\t\t\tsourceCode\n\t\t\t\t\t\t.getTokensBetween(node.cases.at(-1), closingCurly, {\n\t\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t\t\tfilter: astUtils.isCommentToken,\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.forEach(token => offsets.ignoreToken(token));\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tSwitchCase(node) {\n\t\t\t\tif (\n\t\t\t\t\t!(\n\t\t\t\t\t\tnode.consequent.length === 1 &&\n\t\t\t\t\t\tnode.consequent[0].type === \"BlockStatement\"\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tconst caseKeyword = sourceCode.getFirstToken(node);\n\t\t\t\t\tconst tokenAfterCurrentCase =\n\t\t\t\t\t\tsourceCode.getTokenAfter(node);\n\n\t\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t\t[caseKeyword.range[1], tokenAfterCurrentCase.range[0]],\n\t\t\t\t\t\tcaseKeyword,\n\t\t\t\t\t\t1,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tTemplateLiteral(node) {\n\t\t\t\tnode.expressions.forEach((expression, index) => {\n\t\t\t\t\tconst previousQuasi = node.quasis[index];\n\t\t\t\t\tconst nextQuasi = node.quasis[index + 1];\n\t\t\t\t\tconst tokenToAlignFrom =\n\t\t\t\t\t\tpreviousQuasi.loc.start.line ===\n\t\t\t\t\t\tpreviousQuasi.loc.end.line\n\t\t\t\t\t\t\t? sourceCode.getFirstToken(previousQuasi)\n\t\t\t\t\t\t\t: null;\n\n\t\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t\t[previousQuasi.range[1], nextQuasi.range[0]],\n\t\t\t\t\t\ttokenToAlignFrom,\n\t\t\t\t\t\t1,\n\t\t\t\t\t);\n\t\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\t\tsourceCode.getFirstToken(nextQuasi),\n\t\t\t\t\t\ttokenToAlignFrom,\n\t\t\t\t\t\t0,\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tVariableDeclaration(node) {\n\t\t\t\tlet variableIndent = Object.hasOwn(\n\t\t\t\t\toptions.VariableDeclarator,\n\t\t\t\t\tnode.kind,\n\t\t\t\t)\n\t\t\t\t\t? options.VariableDeclarator[node.kind]\n\t\t\t\t\t: DEFAULT_VARIABLE_INDENT;\n\n\t\t\t\tconst firstToken = sourceCode.getFirstToken(node),\n\t\t\t\t\tlastToken = sourceCode.getLastToken(node);\n\n\t\t\t\tif (options.VariableDeclarator[node.kind] === \"first\") {\n\t\t\t\t\tif (node.declarations.length > 1) {\n\t\t\t\t\t\taddElementListIndent(\n\t\t\t\t\t\t\tnode.declarations,\n\t\t\t\t\t\t\tfirstToken,\n\t\t\t\t\t\t\tlastToken,\n\t\t\t\t\t\t\t\"first\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvariableIndent = DEFAULT_VARIABLE_INDENT;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tnode.declarations.at(-1).loc.start.line >\n\t\t\t\t\tnode.loc.start.line\n\t\t\t\t) {\n\t\t\t\t\t/*\n\t\t\t\t\t * VariableDeclarator indentation is a bit different from other forms of indentation, in that the\n\t\t\t\t\t * indentation of an opening bracket sometimes won't match that of a closing bracket. For example,\n\t\t\t\t\t * the following indentations are correct:\n\t\t\t\t\t *\n\t\t\t\t\t * var foo = {\n\t\t\t\t\t *   ok: true\n\t\t\t\t\t * };\n\t\t\t\t\t *\n\t\t\t\t\t * var foo = {\n\t\t\t\t\t *     ok: true,\n\t\t\t\t\t *   },\n\t\t\t\t\t *   bar = 1;\n\t\t\t\t\t *\n\t\t\t\t\t * Account for when exiting the AST (after indentations have already been set for the nodes in\n\t\t\t\t\t * the declaration) by manually increasing the indentation level of the tokens in this declarator\n\t\t\t\t\t * on the same line as the start of the declaration, provided that there are declarators that\n\t\t\t\t\t * follow this one.\n\t\t\t\t\t */\n\t\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t\tnode.range,\n\t\t\t\t\t\tfirstToken,\n\t\t\t\t\t\tvariableIndent,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t\tnode.range,\n\t\t\t\t\t\tfirstToken,\n\t\t\t\t\t\tvariableIndent,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (astUtils.isSemicolonToken(lastToken)) {\n\t\t\t\t\toffsets.ignoreToken(lastToken);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tVariableDeclarator(node) {\n\t\t\t\tif (node.init) {\n\t\t\t\t\tconst equalOperator = sourceCode.getTokenBefore(\n\t\t\t\t\t\tnode.init,\n\t\t\t\t\t\tastUtils.isNotOpeningParenToken,\n\t\t\t\t\t);\n\t\t\t\t\tconst tokenAfterOperator =\n\t\t\t\t\t\tsourceCode.getTokenAfter(equalOperator);\n\n\t\t\t\t\toffsets.ignoreToken(equalOperator);\n\t\t\t\t\toffsets.ignoreToken(tokenAfterOperator);\n\t\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t\t[tokenAfterOperator.range[0], node.range[1]],\n\t\t\t\t\t\tequalOperator,\n\t\t\t\t\t\t1,\n\t\t\t\t\t);\n\t\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\t\tequalOperator,\n\t\t\t\t\t\tsourceCode.getLastToken(node.id),\n\t\t\t\t\t\t0,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t\"JSXAttribute[value]\"(node) {\n\t\t\t\tconst equalsToken = sourceCode.getFirstTokenBetween(\n\t\t\t\t\tnode.name,\n\t\t\t\t\tnode.value,\n\t\t\t\t\ttoken => token.type === \"Punctuator\" && token.value === \"=\",\n\t\t\t\t);\n\n\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t[equalsToken.range[0], node.value.range[1]],\n\t\t\t\t\tsourceCode.getFirstToken(node.name),\n\t\t\t\t\t1,\n\t\t\t\t);\n\t\t\t},\n\n\t\t\tJSXElement(node) {\n\t\t\t\tif (node.closingElement) {\n\t\t\t\t\taddElementListIndent(\n\t\t\t\t\t\tnode.children,\n\t\t\t\t\t\tsourceCode.getFirstToken(node.openingElement),\n\t\t\t\t\t\tsourceCode.getFirstToken(node.closingElement),\n\t\t\t\t\t\t1,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tJSXOpeningElement(node) {\n\t\t\t\tconst firstToken = sourceCode.getFirstToken(node);\n\t\t\t\tlet closingToken;\n\n\t\t\t\tif (node.selfClosing) {\n\t\t\t\t\tclosingToken = sourceCode.getLastToken(node, { skip: 1 });\n\t\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\t\tsourceCode.getLastToken(node),\n\t\t\t\t\t\tclosingToken,\n\t\t\t\t\t\t0,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tclosingToken = sourceCode.getLastToken(node);\n\t\t\t\t}\n\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\tnode.name.range,\n\t\t\t\t\tsourceCode.getFirstToken(node),\n\t\t\t\t);\n\t\t\t\taddElementListIndent(\n\t\t\t\t\tnode.attributes,\n\t\t\t\t\tfirstToken,\n\t\t\t\t\tclosingToken,\n\t\t\t\t\t1,\n\t\t\t\t);\n\t\t\t},\n\n\t\t\tJSXClosingElement(node) {\n\t\t\t\tconst firstToken = sourceCode.getFirstToken(node);\n\n\t\t\t\toffsets.setDesiredOffsets(node.name.range, firstToken, 1);\n\t\t\t},\n\n\t\t\tJSXFragment(node) {\n\t\t\t\tconst firstOpeningToken = sourceCode.getFirstToken(\n\t\t\t\t\tnode.openingFragment,\n\t\t\t\t);\n\t\t\t\tconst firstClosingToken = sourceCode.getFirstToken(\n\t\t\t\t\tnode.closingFragment,\n\t\t\t\t);\n\n\t\t\t\taddElementListIndent(\n\t\t\t\t\tnode.children,\n\t\t\t\t\tfirstOpeningToken,\n\t\t\t\t\tfirstClosingToken,\n\t\t\t\t\t1,\n\t\t\t\t);\n\t\t\t},\n\n\t\t\tJSXOpeningFragment(node) {\n\t\t\t\tconst firstToken = sourceCode.getFirstToken(node);\n\t\t\t\tconst closingToken = sourceCode.getLastToken(node);\n\n\t\t\t\toffsets.setDesiredOffsets(node.range, firstToken, 1);\n\t\t\t\toffsets.matchOffsetOf(firstToken, closingToken);\n\t\t\t},\n\n\t\t\tJSXClosingFragment(node) {\n\t\t\t\tconst firstToken = sourceCode.getFirstToken(node);\n\t\t\t\tconst slashToken = sourceCode.getLastToken(node, { skip: 1 });\n\t\t\t\tconst closingToken = sourceCode.getLastToken(node);\n\t\t\t\tconst tokenToMatch = astUtils.isTokenOnSameLine(\n\t\t\t\t\tslashToken,\n\t\t\t\t\tclosingToken,\n\t\t\t\t)\n\t\t\t\t\t? slashToken\n\t\t\t\t\t: closingToken;\n\n\t\t\t\toffsets.setDesiredOffsets(node.range, firstToken, 1);\n\t\t\t\toffsets.matchOffsetOf(firstToken, tokenToMatch);\n\t\t\t},\n\n\t\t\tJSXExpressionContainer(node) {\n\t\t\t\tconst openingCurly = sourceCode.getFirstToken(node);\n\t\t\t\tconst closingCurly = sourceCode.getLastToken(node);\n\n\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t[openingCurly.range[1], closingCurly.range[0]],\n\t\t\t\t\topeningCurly,\n\t\t\t\t\t1,\n\t\t\t\t);\n\t\t\t},\n\n\t\t\tJSXSpreadAttribute(node) {\n\t\t\t\tconst openingCurly = sourceCode.getFirstToken(node);\n\t\t\t\tconst closingCurly = sourceCode.getLastToken(node);\n\n\t\t\t\toffsets.setDesiredOffsets(\n\t\t\t\t\t[openingCurly.range[1], closingCurly.range[0]],\n\t\t\t\t\topeningCurly,\n\t\t\t\t\t1,\n\t\t\t\t);\n\t\t\t},\n\n\t\t\t\"*\"(node) {\n\t\t\t\tconst firstToken = sourceCode.getFirstToken(node);\n\n\t\t\t\t// Ensure that the children of every node are indented at least as much as the first token.\n\t\t\t\tif (firstToken && !ignoredNodeFirstTokens.has(firstToken)) {\n\t\t\t\t\toffsets.setDesiredOffsets(node.range, firstToken, 0);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\n\t\tconst listenerCallQueue = [];\n\n\t\t/*\n\t\t * To ignore the indentation of a node:\n\t\t * 1. Don't call the node's listener when entering it (if it has a listener)\n\t\t * 2. Don't set any offsets against the first token of the node.\n\t\t * 3. Call `ignoreNode` on the node sometime after exiting it and before validating offsets.\n\t\t */\n\t\tconst offsetListeners = {};\n\n\t\tfor (const [selector, listener] of Object.entries(\n\t\t\tbaseOffsetListeners,\n\t\t)) {\n\t\t\t/*\n\t\t\t * Offset listener calls are deferred until traversal is finished, and are called as\n\t\t\t * part of the final `Program:exit` listener. This is necessary because a node might\n\t\t\t * be matched by multiple selectors.\n\t\t\t *\n\t\t\t * Example: Suppose there is an offset listener for `Identifier`, and the user has\n\t\t\t * specified in configuration that `MemberExpression > Identifier` should be ignored.\n\t\t\t * Due to selector specificity rules, the `Identifier` listener will get called first. However,\n\t\t\t * if a given Identifier node is supposed to be ignored, then the `Identifier` offset listener\n\t\t\t * should not have been called at all. Without doing extra selector matching, we don't know\n\t\t\t * whether the Identifier matches the `MemberExpression > Identifier` selector until the\n\t\t\t * `MemberExpression > Identifier` listener is called.\n\t\t\t *\n\t\t\t * To avoid this, the `Identifier` listener isn't called until traversal finishes and all\n\t\t\t * ignored nodes are known.\n\t\t\t */\n\t\t\toffsetListeners[selector] = node =>\n\t\t\t\tlistenerCallQueue.push({ listener, node });\n\t\t}\n\n\t\t// For each ignored node selector, set up a listener to collect it into the `ignoredNodes` set.\n\t\tconst ignoredNodes = new Set();\n\n\t\t/**\n\t\t * Ignores a node\n\t\t * @param {ASTNode} node The node to ignore\n\t\t * @returns {void}\n\t\t */\n\t\tfunction addToIgnoredNodes(node) {\n\t\t\tignoredNodes.add(node);\n\t\t\tignoredNodeFirstTokens.add(sourceCode.getFirstToken(node));\n\t\t}\n\n\t\tconst ignoredNodeListeners = options.ignoredNodes.reduce(\n\t\t\t(listeners, ignoredSelector) =>\n\t\t\t\tObject.assign(listeners, {\n\t\t\t\t\t[ignoredSelector]: addToIgnoredNodes,\n\t\t\t\t}),\n\t\t\t{},\n\t\t);\n\n\t\t/*\n\t\t * Join the listeners, and add a listener to verify that all tokens actually have the correct indentation\n\t\t * at the end.\n\t\t *\n\t\t * Using Object.assign will cause some offset listeners to be overwritten if the same selector also appears\n\t\t * in `ignoredNodeListeners`. This isn't a problem because all of the matching nodes will be ignored,\n\t\t * so those listeners wouldn't be called anyway.\n\t\t */\n\t\treturn Object.assign(offsetListeners, ignoredNodeListeners, {\n\t\t\t\"*:exit\"(node) {\n\t\t\t\t// If a node's type is nonstandard, we can't tell how its children should be offset, so ignore it.\n\t\t\t\tif (!KNOWN_NODES.has(node.type)) {\n\t\t\t\t\taddToIgnoredNodes(node);\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"Program:exit\"() {\n\t\t\t\t// If ignoreComments option is enabled, ignore all comment tokens.\n\t\t\t\tif (options.ignoreComments) {\n\t\t\t\t\tsourceCode\n\t\t\t\t\t\t.getAllComments()\n\t\t\t\t\t\t.forEach(comment => offsets.ignoreToken(comment));\n\t\t\t\t}\n\n\t\t\t\t// Invoke the queued offset listeners for the nodes that aren't ignored.\n\t\t\t\tfor (let i = 0; i < listenerCallQueue.length; i++) {\n\t\t\t\t\tconst nodeInfo = listenerCallQueue[i];\n\n\t\t\t\t\tif (!ignoredNodes.has(nodeInfo.node)) {\n\t\t\t\t\t\tnodeInfo.listener(nodeInfo.node);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Update the offsets for ignored nodes to prevent their child tokens from being reported.\n\t\t\t\tignoredNodes.forEach(ignoreNode);\n\n\t\t\t\taddParensIndent(sourceCode.ast.tokens);\n\n\t\t\t\t/*\n\t\t\t\t * Create a Map from (tokenOrComment) => (precedingToken).\n\t\t\t\t * This is necessary because sourceCode.getTokenBefore does not handle a comment as an argument correctly.\n\t\t\t\t */\n\t\t\t\tconst precedingTokens = new WeakMap();\n\n\t\t\t\tfor (let i = 0; i < sourceCode.ast.comments.length; i++) {\n\t\t\t\t\tconst comment = sourceCode.ast.comments[i];\n\n\t\t\t\t\tconst tokenOrCommentBefore = sourceCode.getTokenBefore(\n\t\t\t\t\t\tcomment,\n\t\t\t\t\t\t{ includeComments: true },\n\t\t\t\t\t);\n\t\t\t\t\tconst hasToken = precedingTokens.has(tokenOrCommentBefore)\n\t\t\t\t\t\t? precedingTokens.get(tokenOrCommentBefore)\n\t\t\t\t\t\t: tokenOrCommentBefore;\n\n\t\t\t\t\tprecedingTokens.set(comment, hasToken);\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 1; i < sourceCode.lines.length + 1; i++) {\n\t\t\t\t\tif (!tokenInfo.firstTokensByLineNumber.has(i)) {\n\t\t\t\t\t\t// Don't check indentation on blank lines\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst firstTokenOfLine =\n\t\t\t\t\t\ttokenInfo.firstTokensByLineNumber.get(i);\n\n\t\t\t\t\tif (firstTokenOfLine.loc.start.line !== i) {\n\t\t\t\t\t\t// Don't check the indentation of multi-line tokens (e.g. template literals or block comments) twice.\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (astUtils.isCommentToken(firstTokenOfLine)) {\n\t\t\t\t\t\tconst tokenBefore =\n\t\t\t\t\t\t\tprecedingTokens.get(firstTokenOfLine);\n\t\t\t\t\t\tconst tokenAfter = tokenBefore\n\t\t\t\t\t\t\t? sourceCode.getTokenAfter(tokenBefore)\n\t\t\t\t\t\t\t: sourceCode.ast.tokens[0];\n\t\t\t\t\t\tconst mayAlignWithBefore =\n\t\t\t\t\t\t\ttokenBefore &&\n\t\t\t\t\t\t\t!hasBlankLinesBetween(\n\t\t\t\t\t\t\t\ttokenBefore,\n\t\t\t\t\t\t\t\tfirstTokenOfLine,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\tconst mayAlignWithAfter =\n\t\t\t\t\t\t\ttokenAfter &&\n\t\t\t\t\t\t\t!hasBlankLinesBetween(firstTokenOfLine, tokenAfter);\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If a comment precedes a line that begins with a semicolon token, align to that token, i.e.\n\t\t\t\t\t\t *\n\t\t\t\t\t\t * let foo\n\t\t\t\t\t\t * // comment\n\t\t\t\t\t\t * ;(async () => {})()\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttokenAfter &&\n\t\t\t\t\t\t\tastUtils.isSemicolonToken(tokenAfter) &&\n\t\t\t\t\t\t\t!astUtils.isTokenOnSameLine(\n\t\t\t\t\t\t\t\tfirstTokenOfLine,\n\t\t\t\t\t\t\t\ttokenAfter,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toffsets.setDesiredOffset(\n\t\t\t\t\t\t\t\tfirstTokenOfLine,\n\t\t\t\t\t\t\t\ttokenAfter,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a comment matches the expected indentation of the token immediately before or after, don't report it.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t(mayAlignWithBefore &&\n\t\t\t\t\t\t\t\tvalidateTokenIndent(\n\t\t\t\t\t\t\t\t\tfirstTokenOfLine,\n\t\t\t\t\t\t\t\t\toffsets.getDesiredIndent(tokenBefore),\n\t\t\t\t\t\t\t\t)) ||\n\t\t\t\t\t\t\t(mayAlignWithAfter &&\n\t\t\t\t\t\t\t\tvalidateTokenIndent(\n\t\t\t\t\t\t\t\t\tfirstTokenOfLine,\n\t\t\t\t\t\t\t\t\toffsets.getDesiredIndent(tokenAfter),\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// If the token matches the expected indentation, don't report it.\n\t\t\t\t\tif (\n\t\t\t\t\t\tvalidateTokenIndent(\n\t\t\t\t\t\t\tfirstTokenOfLine,\n\t\t\t\t\t\t\toffsets.getDesiredIndent(firstTokenOfLine),\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Otherwise, report the token/comment.\n\t\t\t\t\treport(\n\t\t\t\t\t\tfirstTokenOfLine,\n\t\t\t\t\t\toffsets.getDesiredIndent(firstTokenOfLine),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t},\n};\n", "/**\n * @fileoverview This option sets a specific tab width for your code\n *\n * This rule has been ported and modified from nodeca.\n * @author Vitaly Puzrin\n * @author Gyandeep Singh\n * @deprecated in ESLint v4.0.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n// this rule has known coverage issues, but it's deprecated and shouldn't be updated in the future anyway.\n/* c8 ignore next */\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce consistent indentation\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/indent-legacy\",\n\t\t},\n\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"4.0.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"indent\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/indent\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: [\"tab\"],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tSwitchCase: {\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t},\n\t\t\t\t\tVariableDeclarator: {\n\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tvar: {\n\t\t\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tlet: {\n\t\t\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tconst: {\n\t\t\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\touterIIFEBody: {\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t},\n\t\t\t\t\tMemberExpression: {\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t},\n\t\t\t\t\tFunctionDeclaration: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tparameters: {\n\t\t\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tenum: [\"first\"],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tFunctionExpression: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tparameters: {\n\t\t\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tenum: [\"first\"],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tCallExpression: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tparameters: {\n\t\t\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tenum: [\"first\"],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tArrayExpression: {\n\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tenum: [\"first\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\tObjectExpression: {\n\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tenum: [\"first\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\texpected:\n\t\t\t\t\"Expected indentation of {{expected}} but found {{actual}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst DEFAULT_VARIABLE_INDENT = 1;\n\t\tconst DEFAULT_PARAMETER_INDENT = null; // For backwards compatibility, don't check parameter indentation unless specified in the config\n\t\tconst DEFAULT_FUNCTION_BODY_INDENT = 1;\n\n\t\tlet indentType = \"space\";\n\t\tlet indentSize = 4;\n\t\tconst options = {\n\t\t\tSwitchCase: 0,\n\t\t\tVariableDeclarator: {\n\t\t\t\tvar: DEFAULT_VARIABLE_INDENT,\n\t\t\t\tlet: DEFAULT_VARIABLE_INDENT,\n\t\t\t\tconst: DEFAULT_VARIABLE_INDENT,\n\t\t\t},\n\t\t\touterIIFEBody: null,\n\t\t\tFunctionDeclaration: {\n\t\t\t\tparameters: DEFAULT_PARAMETER_INDENT,\n\t\t\t\tbody: DEFAULT_FUNCTION_BODY_INDENT,\n\t\t\t},\n\t\t\tFunctionExpression: {\n\t\t\t\tparameters: DEFAULT_PARAMETER_INDENT,\n\t\t\t\tbody: DEFAULT_FUNCTION_BODY_INDENT,\n\t\t\t},\n\t\t\tCallExpression: {\n\t\t\t\targuments: DEFAULT_PARAMETER_INDENT,\n\t\t\t},\n\t\t\tArrayExpression: 1,\n\t\t\tObjectExpression: 1,\n\t\t};\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tif (context.options.length) {\n\t\t\tif (context.options[0] === \"tab\") {\n\t\t\t\tindentSize = 1;\n\t\t\t\tindentType = \"tab\";\n\t\t\t} /* c8 ignore start */ else if (\n\t\t\t\ttypeof context.options[0] === \"number\"\n\t\t\t) {\n\t\t\t\tindentSize = context.options[0];\n\t\t\t\tindentType = \"space\";\n\t\t\t} /* c8 ignore stop */\n\n\t\t\tif (context.options[1]) {\n\t\t\t\tconst opts = context.options[1];\n\n\t\t\t\toptions.SwitchCase = opts.SwitchCase || 0;\n\t\t\t\tconst variableDeclaratorRules = opts.VariableDeclarator;\n\n\t\t\t\tif (typeof variableDeclaratorRules === \"number\") {\n\t\t\t\t\toptions.VariableDeclarator = {\n\t\t\t\t\t\tvar: variableDeclaratorRules,\n\t\t\t\t\t\tlet: variableDeclaratorRules,\n\t\t\t\t\t\tconst: variableDeclaratorRules,\n\t\t\t\t\t};\n\t\t\t\t} else if (typeof variableDeclaratorRules === \"object\") {\n\t\t\t\t\tObject.assign(\n\t\t\t\t\t\toptions.VariableDeclarator,\n\t\t\t\t\t\tvariableDeclaratorRules,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (typeof opts.outerIIFEBody === \"number\") {\n\t\t\t\t\toptions.outerIIFEBody = opts.outerIIFEBody;\n\t\t\t\t}\n\n\t\t\t\tif (typeof opts.MemberExpression === \"number\") {\n\t\t\t\t\toptions.MemberExpression = opts.MemberExpression;\n\t\t\t\t}\n\n\t\t\t\tif (typeof opts.FunctionDeclaration === \"object\") {\n\t\t\t\t\tObject.assign(\n\t\t\t\t\t\toptions.FunctionDeclaration,\n\t\t\t\t\t\topts.FunctionDeclaration,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (typeof opts.FunctionExpression === \"object\") {\n\t\t\t\t\tObject.assign(\n\t\t\t\t\t\toptions.FunctionExpression,\n\t\t\t\t\t\topts.FunctionExpression,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (typeof opts.CallExpression === \"object\") {\n\t\t\t\t\tObject.assign(options.CallExpression, opts.CallExpression);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\ttypeof opts.ArrayExpression === \"number\" ||\n\t\t\t\t\ttypeof opts.ArrayExpression === \"string\"\n\t\t\t\t) {\n\t\t\t\t\toptions.ArrayExpression = opts.ArrayExpression;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\ttypeof opts.ObjectExpression === \"number\" ||\n\t\t\t\t\ttypeof opts.ObjectExpression === \"string\"\n\t\t\t\t) {\n\t\t\t\t\toptions.ObjectExpression = opts.ObjectExpression;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst caseIndentStore = {};\n\n\t\t/**\n\t\t * Creates an error message for a line, given the expected/actual indentation.\n\t\t * @param {number} expectedAmount The expected amount of indentation characters for this line\n\t\t * @param {number} actualSpaces The actual number of indentation spaces that were found on this line\n\t\t * @param {number} actualTabs The actual number of indentation tabs that were found on this line\n\t\t * @returns {string} An error message for this line\n\t\t */\n\t\tfunction createErrorMessageData(\n\t\t\texpectedAmount,\n\t\t\tactualSpaces,\n\t\t\tactualTabs,\n\t\t) {\n\t\t\tconst expectedStatement = `${expectedAmount} ${indentType}${expectedAmount === 1 ? \"\" : \"s\"}`; // e.g. \"2 tabs\"\n\t\t\tconst foundSpacesWord = `space${actualSpaces === 1 ? \"\" : \"s\"}`; // e.g. \"space\"\n\t\t\tconst foundTabsWord = `tab${actualTabs === 1 ? \"\" : \"s\"}`; // e.g. \"tabs\"\n\t\t\tlet foundStatement;\n\n\t\t\tif (actualSpaces > 0 && actualTabs > 0) {\n\t\t\t\tfoundStatement = `${actualSpaces} ${foundSpacesWord} and ${actualTabs} ${foundTabsWord}`; // e.g. \"1 space and 2 tabs\"\n\t\t\t} else if (actualSpaces > 0) {\n\t\t\t\t/*\n\t\t\t\t * Abbreviate the message if the expected indentation is also spaces.\n\t\t\t\t * e.g. 'Expected 4 spaces but found 2' rather than 'Expected 4 spaces but found 2 spaces'\n\t\t\t\t */\n\t\t\t\tfoundStatement =\n\t\t\t\t\tindentType === \"space\"\n\t\t\t\t\t\t? actualSpaces\n\t\t\t\t\t\t: `${actualSpaces} ${foundSpacesWord}`;\n\t\t\t} else if (actualTabs > 0) {\n\t\t\t\tfoundStatement =\n\t\t\t\t\tindentType === \"tab\"\n\t\t\t\t\t\t? actualTabs\n\t\t\t\t\t\t: `${actualTabs} ${foundTabsWord}`;\n\t\t\t} else {\n\t\t\t\tfoundStatement = \"0\";\n\t\t\t}\n\t\t\treturn {\n\t\t\t\texpected: expectedStatement,\n\t\t\t\tactual: foundStatement,\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Reports a given indent violation\n\t\t * @param {ASTNode} node Node violating the indent rule\n\t\t * @param {number} needed Expected indentation character count\n\t\t * @param {number} gottenSpaces Indentation space count in the actual node/code\n\t\t * @param {number} gottenTabs Indentation tab count in the actual node/code\n\t\t * @param {Object} [loc] Error line and column location\n\t\t * @param {boolean} isLastNodeCheck Is the error for last node check\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(\n\t\t\tnode,\n\t\t\tneeded,\n\t\t\tgottenSpaces,\n\t\t\tgottenTabs,\n\t\t\tloc,\n\t\t\tisLastNodeCheck,\n\t\t) {\n\t\t\tif (gottenSpaces && gottenTabs) {\n\t\t\t\t// To avoid conflicts with `no-mixed-spaces-and-tabs`, don't report lines that have both spaces and tabs.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst desiredIndent = (indentType === \"space\" ? \" \" : \"\\t\").repeat(\n\t\t\t\tneeded,\n\t\t\t);\n\n\t\t\tconst textRange = isLastNodeCheck\n\t\t\t\t? [\n\t\t\t\t\t\tnode.range[1] - node.loc.end.column,\n\t\t\t\t\t\tnode.range[1] -\n\t\t\t\t\t\t\tnode.loc.end.column +\n\t\t\t\t\t\t\tgottenSpaces +\n\t\t\t\t\t\t\tgottenTabs,\n\t\t\t\t\t]\n\t\t\t\t: [\n\t\t\t\t\t\tnode.range[0] - node.loc.start.column,\n\t\t\t\t\t\tnode.range[0] -\n\t\t\t\t\t\t\tnode.loc.start.column +\n\t\t\t\t\t\t\tgottenSpaces +\n\t\t\t\t\t\t\tgottenTabs,\n\t\t\t\t\t];\n\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc,\n\t\t\t\tmessageId: \"expected\",\n\t\t\t\tdata: createErrorMessageData(needed, gottenSpaces, gottenTabs),\n\t\t\t\tfix: fixer => fixer.replaceTextRange(textRange, desiredIndent),\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Get the actual indent of node\n\t\t * @param {ASTNode|Token} node Node to examine\n\t\t * @param {boolean} [byLastLine=false] get indent of node's last line\n\t\t * @returns {Object} The node's indent. Contains keys `space` and `tab`, representing the indent of each character. Also\n\t\t * contains keys `goodChar` and `badChar`, where `goodChar` is the amount of the user's desired indentation character, and\n\t\t * `badChar` is the amount of the other indentation character.\n\t\t */\n\t\tfunction getNodeIndent(node, byLastLine) {\n\t\t\tconst token = byLastLine\n\t\t\t\t? sourceCode.getLastToken(node)\n\t\t\t\t: sourceCode.getFirstToken(node);\n\t\t\tconst srcCharsBeforeNode = sourceCode\n\t\t\t\t.getText(token, token.loc.start.column)\n\t\t\t\t.split(\"\");\n\t\t\tconst indentChars = srcCharsBeforeNode.slice(\n\t\t\t\t0,\n\t\t\t\tsrcCharsBeforeNode.findIndex(\n\t\t\t\t\tchar => char !== \" \" && char !== \"\\t\",\n\t\t\t\t),\n\t\t\t);\n\t\t\tconst spaces = indentChars.filter(char => char === \" \").length;\n\t\t\tconst tabs = indentChars.filter(char => char === \"\\t\").length;\n\n\t\t\treturn {\n\t\t\t\tspace: spaces,\n\t\t\t\ttab: tabs,\n\t\t\t\tgoodChar: indentType === \"space\" ? spaces : tabs,\n\t\t\t\tbadChar: indentType === \"space\" ? tabs : spaces,\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Checks node is the first in its own start line. By default it looks by start line.\n\t\t * @param {ASTNode} node The node to check\n\t\t * @param {boolean} [byEndLocation=false] Lookup based on start position or end\n\t\t * @returns {boolean} true if its the first in the its start line\n\t\t */\n\t\tfunction isNodeFirstInLine(node, byEndLocation) {\n\t\t\tconst firstToken =\n\t\t\t\t\tbyEndLocation === true\n\t\t\t\t\t\t? sourceCode.getLastToken(node, 1)\n\t\t\t\t\t\t: sourceCode.getTokenBefore(node),\n\t\t\t\tstartLine =\n\t\t\t\t\tbyEndLocation === true\n\t\t\t\t\t\t? node.loc.end.line\n\t\t\t\t\t\t: node.loc.start.line,\n\t\t\t\tendLine = firstToken ? firstToken.loc.end.line : -1;\n\n\t\t\treturn startLine !== endLine;\n\t\t}\n\n\t\t/**\n\t\t * Check indent for node\n\t\t * @param {ASTNode} node Node to check\n\t\t * @param {number} neededIndent needed indent\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkNodeIndent(node, neededIndent) {\n\t\t\tconst actualIndent = getNodeIndent(node, false);\n\n\t\t\tif (\n\t\t\t\tnode.type !== \"ArrayExpression\" &&\n\t\t\t\tnode.type !== \"ObjectExpression\" &&\n\t\t\t\t(actualIndent.goodChar !== neededIndent ||\n\t\t\t\t\tactualIndent.badChar !== 0) &&\n\t\t\t\tisNodeFirstInLine(node)\n\t\t\t) {\n\t\t\t\treport(\n\t\t\t\t\tnode,\n\t\t\t\t\tneededIndent,\n\t\t\t\t\tactualIndent.space,\n\t\t\t\t\tactualIndent.tab,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (node.type === \"IfStatement\" && node.alternate) {\n\t\t\t\tconst elseToken = sourceCode.getTokenBefore(node.alternate);\n\n\t\t\t\tcheckNodeIndent(elseToken, neededIndent);\n\n\t\t\t\tif (!isNodeFirstInLine(node.alternate)) {\n\t\t\t\t\tcheckNodeIndent(node.alternate, neededIndent);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (node.type === \"TryStatement\" && node.handler) {\n\t\t\t\tconst catchToken = sourceCode.getFirstToken(node.handler);\n\n\t\t\t\tcheckNodeIndent(catchToken, neededIndent);\n\t\t\t}\n\n\t\t\tif (node.type === \"TryStatement\" && node.finalizer) {\n\t\t\t\tconst finallyToken = sourceCode.getTokenBefore(node.finalizer);\n\n\t\t\t\tcheckNodeIndent(finallyToken, neededIndent);\n\t\t\t}\n\n\t\t\tif (node.type === \"DoWhileStatement\") {\n\t\t\t\tconst whileToken = sourceCode.getTokenAfter(node.body);\n\n\t\t\t\tcheckNodeIndent(whileToken, neededIndent);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check indent for nodes list\n\t\t * @param {ASTNode[]} nodes list of node objects\n\t\t * @param {number} indent needed indent\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkNodesIndent(nodes, indent) {\n\t\t\tnodes.forEach(node => checkNodeIndent(node, indent));\n\t\t}\n\n\t\t/**\n\t\t * Check last node line indent this detects, that block closed correctly\n\t\t * @param {ASTNode} node Node to examine\n\t\t * @param {number} lastLineIndent needed indent\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkLastNodeLineIndent(node, lastLineIndent) {\n\t\t\tconst lastToken = sourceCode.getLastToken(node);\n\t\t\tconst endIndent = getNodeIndent(lastToken, true);\n\n\t\t\tif (\n\t\t\t\t(endIndent.goodChar !== lastLineIndent ||\n\t\t\t\t\tendIndent.badChar !== 0) &&\n\t\t\t\tisNodeFirstInLine(node, true)\n\t\t\t) {\n\t\t\t\treport(\n\t\t\t\t\tnode,\n\t\t\t\t\tlastLineIndent,\n\t\t\t\t\tendIndent.space,\n\t\t\t\t\tendIndent.tab,\n\t\t\t\t\t{\n\t\t\t\t\t\tline: lastToken.loc.start.line,\n\t\t\t\t\t\tcolumn: lastToken.loc.start.column,\n\t\t\t\t\t},\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check last node line indent this detects, that block closed correctly\n\t\t * This function for more complicated return statement case, where closing parenthesis may be followed by ';'\n\t\t * @param {ASTNode} node Node to examine\n\t\t * @param {number} firstLineIndent first line needed indent\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkLastReturnStatementLineIndent(node, firstLineIndent) {\n\t\t\t/*\n\t\t\t * in case if return statement ends with ');' we have traverse back to ')'\n\t\t\t * otherwise we'll measure indent for ';' and replace ')'\n\t\t\t */\n\t\t\tconst lastToken = sourceCode.getLastToken(\n\t\t\t\tnode,\n\t\t\t\tastUtils.isClosingParenToken,\n\t\t\t);\n\t\t\tconst textBeforeClosingParenthesis = sourceCode\n\t\t\t\t.getText(lastToken, lastToken.loc.start.column)\n\t\t\t\t.slice(0, -1);\n\n\t\t\tif (textBeforeClosingParenthesis.trim()) {\n\t\t\t\t// There are tokens before the closing paren, don't report this case\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst endIndent = getNodeIndent(lastToken, true);\n\n\t\t\tif (endIndent.goodChar !== firstLineIndent) {\n\t\t\t\treport(\n\t\t\t\t\tnode,\n\t\t\t\t\tfirstLineIndent,\n\t\t\t\t\tendIndent.space,\n\t\t\t\t\tendIndent.tab,\n\t\t\t\t\t{\n\t\t\t\t\t\tline: lastToken.loc.start.line,\n\t\t\t\t\t\tcolumn: lastToken.loc.start.column,\n\t\t\t\t\t},\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check first node line indent is correct\n\t\t * @param {ASTNode} node Node to examine\n\t\t * @param {number} firstLineIndent needed indent\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkFirstNodeLineIndent(node, firstLineIndent) {\n\t\t\tconst startIndent = getNodeIndent(node, false);\n\n\t\t\tif (\n\t\t\t\t(startIndent.goodChar !== firstLineIndent ||\n\t\t\t\t\tstartIndent.badChar !== 0) &&\n\t\t\t\tisNodeFirstInLine(node)\n\t\t\t) {\n\t\t\t\treport(\n\t\t\t\t\tnode,\n\t\t\t\t\tfirstLineIndent,\n\t\t\t\t\tstartIndent.space,\n\t\t\t\t\tstartIndent.tab,\n\t\t\t\t\t{\n\t\t\t\t\t\tline: node.loc.start.line,\n\t\t\t\t\t\tcolumn: node.loc.start.column,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Returns a parent node of given node based on a specified type\n\t\t * if not present then return null\n\t\t * @param {ASTNode} node node to examine\n\t\t * @param {string} type type that is being looked for\n\t\t * @param {string} stopAtList end points for the evaluating code\n\t\t * @returns {ASTNode|void} if found then node otherwise null\n\t\t */\n\t\tfunction getParentNodeByType(node, type, stopAtList) {\n\t\t\tlet parent = node.parent;\n\t\t\tconst stopAtSet = new Set(stopAtList || [\"Program\"]);\n\n\t\t\twhile (\n\t\t\t\tparent.type !== type &&\n\t\t\t\t!stopAtSet.has(parent.type) &&\n\t\t\t\tparent.type !== \"Program\"\n\t\t\t) {\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\n\t\t\treturn parent.type === type ? parent : null;\n\t\t}\n\n\t\t/**\n\t\t * Returns the VariableDeclarator based on the current node\n\t\t * if not present then return null\n\t\t * @param {ASTNode} node node to examine\n\t\t * @returns {ASTNode|void} if found then node otherwise null\n\t\t */\n\t\tfunction getVariableDeclaratorNode(node) {\n\t\t\treturn getParentNodeByType(node, \"VariableDeclarator\");\n\t\t}\n\n\t\t/**\n\t\t * Check to see if the node is part of the multi-line variable declaration.\n\t\t * Also if its on the same line as the varNode\n\t\t * @param {ASTNode} node node to check\n\t\t * @param {ASTNode} varNode variable declaration node to check against\n\t\t * @returns {boolean} True if all the above condition satisfy\n\t\t */\n\t\tfunction isNodeInVarOnTop(node, varNode) {\n\t\t\treturn (\n\t\t\t\tvarNode &&\n\t\t\t\tvarNode.parent.loc.start.line === node.loc.start.line &&\n\t\t\t\tvarNode.parent.declarations.length > 1\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check to see if the argument before the callee node is multi-line and\n\t\t * there should only be 1 argument before the callee node\n\t\t * @param {ASTNode} node node to check\n\t\t * @returns {boolean} True if arguments are multi-line\n\t\t */\n\t\tfunction isArgBeforeCalleeNodeMultiline(node) {\n\t\t\tconst parent = node.parent;\n\n\t\t\tif (parent.arguments.length >= 2 && parent.arguments[1] === node) {\n\t\t\t\treturn (\n\t\t\t\t\tparent.arguments[0].loc.end.line >\n\t\t\t\t\tparent.arguments[0].loc.start.line\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Check to see if the node is a file level IIFE\n\t\t * @param {ASTNode} node The function node to check.\n\t\t * @returns {boolean} True if the node is the outer IIFE\n\t\t */\n\t\tfunction isOuterIIFE(node) {\n\t\t\tconst parent = node.parent;\n\t\t\tlet stmt = parent.parent;\n\n\t\t\t/*\n\t\t\t * Verify that the node is an IIEF\n\t\t\t */\n\t\t\tif (parent.type !== \"CallExpression\" || parent.callee !== node) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Navigate legal ancestors to determine whether this IIEF is outer\n\t\t\t */\n\t\t\twhile (\n\t\t\t\t(stmt.type === \"UnaryExpression\" &&\n\t\t\t\t\t(stmt.operator === \"!\" ||\n\t\t\t\t\t\tstmt.operator === \"~\" ||\n\t\t\t\t\t\tstmt.operator === \"+\" ||\n\t\t\t\t\t\tstmt.operator === \"-\")) ||\n\t\t\t\tstmt.type === \"AssignmentExpression\" ||\n\t\t\t\tstmt.type === \"LogicalExpression\" ||\n\t\t\t\tstmt.type === \"SequenceExpression\" ||\n\t\t\t\tstmt.type === \"VariableDeclarator\"\n\t\t\t) {\n\t\t\t\tstmt = stmt.parent;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t(stmt.type === \"ExpressionStatement\" ||\n\t\t\t\t\tstmt.type === \"VariableDeclaration\") &&\n\t\t\t\tstmt.parent &&\n\t\t\t\tstmt.parent.type === \"Program\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check indent for function block content\n\t\t * @param {ASTNode} node A BlockStatement node that is inside of a function.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkIndentInFunctionBlock(node) {\n\t\t\t/*\n\t\t\t * Search first caller in chain.\n\t\t\t * Ex.:\n\t\t\t *\n\t\t\t * Models <- Identifier\n\t\t\t *   .User\n\t\t\t *   .find()\n\t\t\t *   .exec(function() {\n\t\t\t *   // function body\n\t\t\t * });\n\t\t\t *\n\t\t\t * Looks for 'Models'\n\t\t\t */\n\t\t\tconst calleeNode = node.parent; // FunctionExpression\n\t\t\tlet indent;\n\n\t\t\tif (\n\t\t\t\tcalleeNode.parent &&\n\t\t\t\t(calleeNode.parent.type === \"Property\" ||\n\t\t\t\t\tcalleeNode.parent.type === \"ArrayExpression\")\n\t\t\t) {\n\t\t\t\t// If function is part of array or object, comma can be put at left\n\t\t\t\tindent = getNodeIndent(calleeNode, false).goodChar;\n\t\t\t} else {\n\t\t\t\t// If function is standalone, simple calculate indent\n\t\t\t\tindent = getNodeIndent(calleeNode).goodChar;\n\t\t\t}\n\n\t\t\tif (calleeNode.parent.type === \"CallExpression\") {\n\t\t\t\tconst calleeParent = calleeNode.parent;\n\n\t\t\t\tif (\n\t\t\t\t\tcalleeNode.type !== \"FunctionExpression\" &&\n\t\t\t\t\tcalleeNode.type !== \"ArrowFunctionExpression\"\n\t\t\t\t) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tcalleeParent &&\n\t\t\t\t\t\tcalleeParent.loc.start.line < node.loc.start.line\n\t\t\t\t\t) {\n\t\t\t\t\t\tindent = getNodeIndent(calleeParent).goodChar;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (\n\t\t\t\t\t\tisArgBeforeCalleeNodeMultiline(calleeNode) &&\n\t\t\t\t\t\tcalleeParent.callee.loc.start.line ===\n\t\t\t\t\t\t\tcalleeParent.callee.loc.end.line &&\n\t\t\t\t\t\t!isNodeFirstInLine(calleeNode)\n\t\t\t\t\t) {\n\t\t\t\t\t\tindent = getNodeIndent(calleeParent).goodChar;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * function body indent should be indent + indent size, unless this\n\t\t\t * is a FunctionDeclaration, FunctionExpression, or outer IIFE and the corresponding options are enabled.\n\t\t\t */\n\t\t\tlet functionOffset = indentSize;\n\n\t\t\tif (options.outerIIFEBody !== null && isOuterIIFE(calleeNode)) {\n\t\t\t\tfunctionOffset = options.outerIIFEBody * indentSize;\n\t\t\t} else if (calleeNode.type === \"FunctionExpression\") {\n\t\t\t\tfunctionOffset = options.FunctionExpression.body * indentSize;\n\t\t\t} else if (calleeNode.type === \"FunctionDeclaration\") {\n\t\t\t\tfunctionOffset = options.FunctionDeclaration.body * indentSize;\n\t\t\t}\n\t\t\tindent += functionOffset;\n\n\t\t\t// check if the node is inside a variable\n\t\t\tconst parentVarNode = getVariableDeclaratorNode(node);\n\n\t\t\tif (parentVarNode && isNodeInVarOnTop(node, parentVarNode)) {\n\t\t\t\tindent +=\n\t\t\t\t\tindentSize *\n\t\t\t\t\toptions.VariableDeclarator[parentVarNode.parent.kind];\n\t\t\t}\n\n\t\t\tif (node.body.length > 0) {\n\t\t\t\tcheckNodesIndent(node.body, indent);\n\t\t\t}\n\n\t\t\tcheckLastNodeLineIndent(node, indent - functionOffset);\n\t\t}\n\n\t\t/**\n\t\t * Checks if the given node starts and ends on the same line\n\t\t * @param {ASTNode} node The node to check\n\t\t * @returns {boolean} Whether or not the block starts and ends on the same line.\n\t\t */\n\t\tfunction isSingleLineNode(node) {\n\t\t\tconst lastToken = sourceCode.getLastToken(node),\n\t\t\t\tstartLine = node.loc.start.line,\n\t\t\t\tendLine = lastToken.loc.end.line;\n\n\t\t\treturn startLine === endLine;\n\t\t}\n\n\t\t/**\n\t\t * Check indent for array block content or object block content\n\t\t * @param {ASTNode} node node to examine\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkIndentInArrayOrObjectBlock(node) {\n\t\t\t// Skip inline\n\t\t\tif (isSingleLineNode(node)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet elements =\n\t\t\t\tnode.type === \"ArrayExpression\"\n\t\t\t\t\t? node.elements\n\t\t\t\t\t: node.properties;\n\n\t\t\t// filter out empty elements example would be [ , 2] so remove first element as espree considers it as null\n\t\t\telements = elements.filter(elem => elem !== null);\n\n\t\t\tlet nodeIndent;\n\t\t\tlet elementsIndent;\n\t\t\tconst parentVarNode = getVariableDeclaratorNode(node);\n\n\t\t\t// TODO - come up with a better strategy in future\n\t\t\tif (isNodeFirstInLine(node)) {\n\t\t\t\tconst parent = node.parent;\n\n\t\t\t\tnodeIndent = getNodeIndent(parent).goodChar;\n\t\t\t\tif (\n\t\t\t\t\t!parentVarNode ||\n\t\t\t\t\tparentVarNode.loc.start.line !== node.loc.start.line\n\t\t\t\t) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tparent.type !== \"VariableDeclarator\" ||\n\t\t\t\t\t\tparentVarNode === parentVarNode.parent.declarations[0]\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tparent.type === \"VariableDeclarator\" &&\n\t\t\t\t\t\t\tparentVarNode.loc.start.line ===\n\t\t\t\t\t\t\t\tparent.loc.start.line\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tnodeIndent +=\n\t\t\t\t\t\t\t\tindentSize *\n\t\t\t\t\t\t\t\toptions.VariableDeclarator[\n\t\t\t\t\t\t\t\t\tparentVarNode.parent.kind\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tparent.type === \"ObjectExpression\" ||\n\t\t\t\t\t\t\tparent.type === \"ArrayExpression\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst parentElements =\n\t\t\t\t\t\t\t\tnode.parent.type === \"ObjectExpression\"\n\t\t\t\t\t\t\t\t\t? node.parent.properties\n\t\t\t\t\t\t\t\t\t: node.parent.elements;\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tparentElements[0] &&\n\t\t\t\t\t\t\t\tparentElements[0].loc.start.line ===\n\t\t\t\t\t\t\t\t\tparent.loc.start.line &&\n\t\t\t\t\t\t\t\tparentElements[0].loc.end.line !==\n\t\t\t\t\t\t\t\t\tparent.loc.start.line\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * If the first element of the array spans multiple lines, don't increase the expected indentation of the rest.\n\t\t\t\t\t\t\t\t * e.g. [{\n\t\t\t\t\t\t\t\t *        foo: 1\n\t\t\t\t\t\t\t\t *      },\n\t\t\t\t\t\t\t\t *      {\n\t\t\t\t\t\t\t\t *        bar: 1\n\t\t\t\t\t\t\t\t *      }]\n\t\t\t\t\t\t\t\t * the second object is not indented.\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\ttypeof options[parent.type] === \"number\"\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnodeIndent += options[parent.type] * indentSize;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnodeIndent = parentElements[0].loc.start.column;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tparent.type === \"CallExpression\" ||\n\t\t\t\t\t\t\tparent.type === \"NewExpression\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttypeof options.CallExpression.arguments ===\n\t\t\t\t\t\t\t\t\"number\"\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnodeIndent +=\n\t\t\t\t\t\t\t\t\toptions.CallExpression.arguments *\n\t\t\t\t\t\t\t\t\tindentSize;\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\toptions.CallExpression.arguments === \"first\"\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tif (parent.arguments.includes(node)) {\n\t\t\t\t\t\t\t\t\tnodeIndent =\n\t\t\t\t\t\t\t\t\t\tparent.arguments[0].loc.start.column;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnodeIndent += indentSize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tparent.type === \"LogicalExpression\" ||\n\t\t\t\t\t\t\tparent.type === \"ArrowFunctionExpression\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tnodeIndent += indentSize;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcheckFirstNodeLineIndent(node, nodeIndent);\n\t\t\t} else {\n\t\t\t\tnodeIndent = getNodeIndent(node).goodChar;\n\t\t\t}\n\n\t\t\tif (options[node.type] === \"first\") {\n\t\t\t\telementsIndent = elements.length\n\t\t\t\t\t? elements[0].loc.start.column\n\t\t\t\t\t: 0; // If there are no elements, elementsIndent doesn't matter.\n\t\t\t} else {\n\t\t\t\telementsIndent = nodeIndent + indentSize * options[node.type];\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Check if the node is a multiple variable declaration; if so, then\n\t\t\t * make sure indentation takes that into account.\n\t\t\t */\n\t\t\tif (isNodeInVarOnTop(node, parentVarNode)) {\n\t\t\t\telementsIndent +=\n\t\t\t\t\tindentSize *\n\t\t\t\t\toptions.VariableDeclarator[parentVarNode.parent.kind];\n\t\t\t}\n\n\t\t\tcheckNodesIndent(elements, elementsIndent);\n\n\t\t\tif (elements.length > 0) {\n\t\t\t\t// Skip last block line check if last item in same line\n\t\t\t\tif (elements.at(-1).loc.end.line === node.loc.end.line) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcheckLastNodeLineIndent(\n\t\t\t\tnode,\n\t\t\t\tnodeIndent +\n\t\t\t\t\t(isNodeInVarOnTop(node, parentVarNode)\n\t\t\t\t\t\t? options.VariableDeclarator[\n\t\t\t\t\t\t\t\tparentVarNode.parent.kind\n\t\t\t\t\t\t\t] * indentSize\n\t\t\t\t\t\t: 0),\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check if the node or node body is a BlockStatement or not\n\t\t * @param {ASTNode} node node to test\n\t\t * @returns {boolean} True if it or its body is a block statement\n\t\t */\n\t\tfunction isNodeBodyBlock(node) {\n\t\t\treturn (\n\t\t\t\tnode.type === \"BlockStatement\" ||\n\t\t\t\tnode.type === \"ClassBody\" ||\n\t\t\t\t(node.body && node.body.type === \"BlockStatement\") ||\n\t\t\t\t(node.consequent && node.consequent.type === \"BlockStatement\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check indentation for blocks\n\t\t * @param {ASTNode} node node to check\n\t\t * @returns {void}\n\t\t */\n\t\tfunction blockIndentationCheck(node) {\n\t\t\t// Skip inline blocks\n\t\t\tif (isSingleLineNode(node)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tnode.parent &&\n\t\t\t\t(node.parent.type === \"FunctionExpression\" ||\n\t\t\t\t\tnode.parent.type === \"FunctionDeclaration\" ||\n\t\t\t\t\tnode.parent.type === \"ArrowFunctionExpression\")\n\t\t\t) {\n\t\t\t\tcheckIndentInFunctionBlock(node);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet indent;\n\t\t\tlet nodesToCheck;\n\n\t\t\t/*\n\t\t\t * For this statements we should check indent from statement beginning,\n\t\t\t * not from the beginning of the block.\n\t\t\t */\n\t\t\tconst statementsWithProperties = [\n\t\t\t\t\"IfStatement\",\n\t\t\t\t\"WhileStatement\",\n\t\t\t\t\"ForStatement\",\n\t\t\t\t\"ForInStatement\",\n\t\t\t\t\"ForOfStatement\",\n\t\t\t\t\"DoWhileStatement\",\n\t\t\t\t\"ClassDeclaration\",\n\t\t\t\t\"TryStatement\",\n\t\t\t];\n\n\t\t\tif (\n\t\t\t\tnode.parent &&\n\t\t\t\tstatementsWithProperties.includes(node.parent.type) &&\n\t\t\t\tisNodeBodyBlock(node)\n\t\t\t) {\n\t\t\t\tindent = getNodeIndent(node.parent).goodChar;\n\t\t\t} else if (node.parent && node.parent.type === \"CatchClause\") {\n\t\t\t\tindent = getNodeIndent(node.parent.parent).goodChar;\n\t\t\t} else {\n\t\t\t\tindent = getNodeIndent(node).goodChar;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tnode.type === \"IfStatement\" &&\n\t\t\t\tnode.consequent.type !== \"BlockStatement\"\n\t\t\t) {\n\t\t\t\tnodesToCheck = [node.consequent];\n\t\t\t} else if (Array.isArray(node.body)) {\n\t\t\t\tnodesToCheck = node.body;\n\t\t\t} else {\n\t\t\t\tnodesToCheck = [node.body];\n\t\t\t}\n\n\t\t\tif (nodesToCheck.length > 0) {\n\t\t\t\tcheckNodesIndent(nodesToCheck, indent + indentSize);\n\t\t\t}\n\n\t\t\tif (node.type === \"BlockStatement\") {\n\t\t\t\tcheckLastNodeLineIndent(node, indent);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Filter out the elements which are on the same line of each other or the node.\n\t\t * basically have only 1 elements from each line except the variable declaration line.\n\t\t * @param {ASTNode} node Variable declaration node\n\t\t * @returns {ASTNode[]} Filtered elements\n\t\t */\n\t\tfunction filterOutSameLineVars(node) {\n\t\t\treturn node.declarations.reduce((finalCollection, elem) => {\n\t\t\t\tconst lastElem = finalCollection.at(-1);\n\n\t\t\t\tif (\n\t\t\t\t\t(elem.loc.start.line !== node.loc.start.line &&\n\t\t\t\t\t\t!lastElem) ||\n\t\t\t\t\t(lastElem &&\n\t\t\t\t\t\tlastElem.loc.start.line !== elem.loc.start.line)\n\t\t\t\t) {\n\t\t\t\t\tfinalCollection.push(elem);\n\t\t\t\t}\n\n\t\t\t\treturn finalCollection;\n\t\t\t}, []);\n\t\t}\n\n\t\t/**\n\t\t * Check indentation for variable declarations\n\t\t * @param {ASTNode} node node to examine\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkIndentInVariableDeclarations(node) {\n\t\t\tconst elements = filterOutSameLineVars(node);\n\t\t\tconst nodeIndent = getNodeIndent(node).goodChar;\n\t\t\tconst lastElement = elements.at(-1);\n\n\t\t\tconst elementsIndent =\n\t\t\t\tnodeIndent + indentSize * options.VariableDeclarator[node.kind];\n\n\t\t\tcheckNodesIndent(elements, elementsIndent);\n\n\t\t\t// Only check the last line if there is any token after the last item\n\t\t\tif (\n\t\t\t\tsourceCode.getLastToken(node).loc.end.line <=\n\t\t\t\tlastElement.loc.end.line\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst tokenBeforeLastElement =\n\t\t\t\tsourceCode.getTokenBefore(lastElement);\n\n\t\t\tif (tokenBeforeLastElement.value === \",\") {\n\t\t\t\t// Special case for comma-first syntax where the semicolon is indented\n\t\t\t\tcheckLastNodeLineIndent(\n\t\t\t\t\tnode,\n\t\t\t\t\tgetNodeIndent(tokenBeforeLastElement).goodChar,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tcheckLastNodeLineIndent(node, elementsIndent - indentSize);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check and decide whether to check for indentation for blockless nodes\n\t\t * Scenarios are for or while statements without braces around them\n\t\t * @param {ASTNode} node node to examine\n\t\t * @returns {void}\n\t\t */\n\t\tfunction blockLessNodes(node) {\n\t\t\tif (node.body.type !== \"BlockStatement\") {\n\t\t\t\tblockIndentationCheck(node);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Returns the expected indentation for the case statement\n\t\t * @param {ASTNode} node node to examine\n\t\t * @param {number} [providedSwitchIndent] indent for switch statement\n\t\t * @returns {number} indent size\n\t\t */\n\t\tfunction expectedCaseIndent(node, providedSwitchIndent) {\n\t\t\tconst switchNode =\n\t\t\t\tnode.type === \"SwitchStatement\" ? node : node.parent;\n\t\t\tconst switchIndent =\n\t\t\t\ttypeof providedSwitchIndent === \"undefined\"\n\t\t\t\t\t? getNodeIndent(switchNode).goodChar\n\t\t\t\t\t: providedSwitchIndent;\n\t\t\tlet caseIndent;\n\n\t\t\tif (caseIndentStore[switchNode.loc.start.line]) {\n\t\t\t\treturn caseIndentStore[switchNode.loc.start.line];\n\t\t\t}\n\n\t\t\tif (switchNode.cases.length > 0 && options.SwitchCase === 0) {\n\t\t\t\tcaseIndent = switchIndent;\n\t\t\t} else {\n\t\t\t\tcaseIndent = switchIndent + indentSize * options.SwitchCase;\n\t\t\t}\n\n\t\t\tcaseIndentStore[switchNode.loc.start.line] = caseIndent;\n\t\t\treturn caseIndent;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a return statement is wrapped in ()\n\t\t * @param {ASTNode} node node to examine\n\t\t * @returns {boolean} the result\n\t\t */\n\t\tfunction isWrappedInParenthesis(node) {\n\t\t\tconst regex = /^return\\s*\\(\\s*\\)/u;\n\n\t\t\tconst statementWithoutArgument = sourceCode\n\t\t\t\t.getText(node)\n\t\t\t\t.replace(sourceCode.getText(node.argument), \"\");\n\n\t\t\treturn regex.test(statementWithoutArgument);\n\t\t}\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tif (node.body.length > 0) {\n\t\t\t\t\t// Root nodes should have no indent\n\t\t\t\t\tcheckNodesIndent(node.body, getNodeIndent(node).goodChar);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tClassBody: blockIndentationCheck,\n\n\t\t\tBlockStatement: blockIndentationCheck,\n\n\t\t\tWhileStatement: blockLessNodes,\n\n\t\t\tForStatement: blockLessNodes,\n\n\t\t\tForInStatement: blockLessNodes,\n\n\t\t\tForOfStatement: blockLessNodes,\n\n\t\t\tDoWhileStatement: blockLessNodes,\n\n\t\t\tIfStatement(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.consequent.type !== \"BlockStatement\" &&\n\t\t\t\t\tnode.consequent.loc.start.line > node.loc.start.line\n\t\t\t\t) {\n\t\t\t\t\tblockIndentationCheck(node);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tVariableDeclaration(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.declarations.at(-1).loc.start.line >\n\t\t\t\t\tnode.declarations[0].loc.start.line\n\t\t\t\t) {\n\t\t\t\t\tcheckIndentInVariableDeclarations(node);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tObjectExpression(node) {\n\t\t\t\tcheckIndentInArrayOrObjectBlock(node);\n\t\t\t},\n\n\t\t\tArrayExpression(node) {\n\t\t\t\tcheckIndentInArrayOrObjectBlock(node);\n\t\t\t},\n\n\t\t\tMemberExpression(node) {\n\t\t\t\tif (typeof options.MemberExpression === \"undefined\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (isSingleLineNode(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * The typical layout of variable declarations and assignments\n\t\t\t\t * alter the expectation of correct indentation. Skip them.\n\t\t\t\t * TODO: Add appropriate configuration options for variable\n\t\t\t\t * declarations and assignments.\n\t\t\t\t */\n\t\t\t\tif (\n\t\t\t\t\tgetParentNodeByType(node, \"VariableDeclarator\", [\n\t\t\t\t\t\t\"FunctionExpression\",\n\t\t\t\t\t\t\"ArrowFunctionExpression\",\n\t\t\t\t\t])\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tgetParentNodeByType(node, \"AssignmentExpression\", [\n\t\t\t\t\t\t\"FunctionExpression\",\n\t\t\t\t\t])\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst propertyIndent =\n\t\t\t\t\tgetNodeIndent(node).goodChar +\n\t\t\t\t\tindentSize * options.MemberExpression;\n\n\t\t\t\tconst checkNodes = [node.property];\n\n\t\t\t\tconst dot = sourceCode.getTokenBefore(node.property);\n\n\t\t\t\tif (dot.type === \"Punctuator\" && dot.value === \".\") {\n\t\t\t\t\tcheckNodes.push(dot);\n\t\t\t\t}\n\n\t\t\t\tcheckNodesIndent(checkNodes, propertyIndent);\n\t\t\t},\n\n\t\t\tSwitchStatement(node) {\n\t\t\t\t// Switch is not a 'BlockStatement'\n\t\t\t\tconst switchIndent = getNodeIndent(node).goodChar;\n\t\t\t\tconst caseIndent = expectedCaseIndent(node, switchIndent);\n\n\t\t\t\tcheckNodesIndent(node.cases, caseIndent);\n\n\t\t\t\tcheckLastNodeLineIndent(node, switchIndent);\n\t\t\t},\n\n\t\t\tSwitchCase(node) {\n\t\t\t\t// Skip inline cases\n\t\t\t\tif (isSingleLineNode(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst caseIndent = expectedCaseIndent(node);\n\n\t\t\t\tcheckNodesIndent(node.consequent, caseIndent + indentSize);\n\t\t\t},\n\n\t\t\tFunctionDeclaration(node) {\n\t\t\t\tif (isSingleLineNode(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\toptions.FunctionDeclaration.parameters === \"first\" &&\n\t\t\t\t\tnode.params.length\n\t\t\t\t) {\n\t\t\t\t\tcheckNodesIndent(\n\t\t\t\t\t\tnode.params.slice(1),\n\t\t\t\t\t\tnode.params[0].loc.start.column,\n\t\t\t\t\t);\n\t\t\t\t} else if (options.FunctionDeclaration.parameters !== null) {\n\t\t\t\t\tcheckNodesIndent(\n\t\t\t\t\t\tnode.params,\n\t\t\t\t\t\tgetNodeIndent(node).goodChar +\n\t\t\t\t\t\t\tindentSize * options.FunctionDeclaration.parameters,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tFunctionExpression(node) {\n\t\t\t\tif (isSingleLineNode(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\toptions.FunctionExpression.parameters === \"first\" &&\n\t\t\t\t\tnode.params.length\n\t\t\t\t) {\n\t\t\t\t\tcheckNodesIndent(\n\t\t\t\t\t\tnode.params.slice(1),\n\t\t\t\t\t\tnode.params[0].loc.start.column,\n\t\t\t\t\t);\n\t\t\t\t} else if (options.FunctionExpression.parameters !== null) {\n\t\t\t\t\tcheckNodesIndent(\n\t\t\t\t\t\tnode.params,\n\t\t\t\t\t\tgetNodeIndent(node).goodChar +\n\t\t\t\t\t\t\tindentSize * options.FunctionExpression.parameters,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tReturnStatement(node) {\n\t\t\t\tif (isSingleLineNode(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst firstLineIndent = getNodeIndent(node).goodChar;\n\n\t\t\t\t// in case if return statement is wrapped in parenthesis\n\t\t\t\tif (isWrappedInParenthesis(node)) {\n\t\t\t\t\tcheckLastReturnStatementLineIndent(node, firstLineIndent);\n\t\t\t\t} else {\n\t\t\t\t\tcheckNodeIndent(node, firstLineIndent);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tCallExpression(node) {\n\t\t\t\tif (isSingleLineNode(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\toptions.CallExpression.arguments === \"first\" &&\n\t\t\t\t\tnode.arguments.length\n\t\t\t\t) {\n\t\t\t\t\tcheckNodesIndent(\n\t\t\t\t\t\tnode.arguments.slice(1),\n\t\t\t\t\t\tnode.arguments[0].loc.start.column,\n\t\t\t\t\t);\n\t\t\t\t} else if (options.CallExpression.arguments !== null) {\n\t\t\t\t\tcheckNodesIndent(\n\t\t\t\t\t\tnode.arguments,\n\t\t\t\t\t\tgetNodeIndent(node).goodChar +\n\t\t\t\t\t\t\tindentSize * options.CallExpression.arguments,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to control the style of variable initializations.\n * @author Colin Ihrig\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst CONSTANT_BINDINGS = new Set([\"const\", \"using\", \"await using\"]);\n\n/**\n * Checks whether or not a given node is a for loop.\n * @param {ASTNode} block A node to check.\n * @returns {boolean} `true` when the node is a for loop.\n */\nfunction isForLoop(block) {\n\treturn (\n\t\tblock.type === \"ForInStatement\" ||\n\t\tblock.type === \"ForOfStatement\" ||\n\t\tblock.type === \"ForStatement\"\n\t);\n}\n\n/**\n * Checks whether or not a given declarator node has its initializer.\n * @param {ASTNode} node A declarator node to check.\n * @returns {boolean} `true` when the node has its initializer.\n */\nfunction isInitialized(node) {\n\tconst declaration = node.parent;\n\tconst block = declaration.parent;\n\n\tif (isForLoop(block)) {\n\t\tif (block.type === \"ForStatement\") {\n\t\t\treturn block.init === declaration;\n\t\t}\n\t\treturn block.left === declaration;\n\t}\n\treturn Boolean(node.init);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require or disallow initialization in variable declarations\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/init-declarations\",\n\t\t},\n\n\t\tschema: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"always\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 1,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"never\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tignoreForLoopInit: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 2,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tdefaultOptions: [\"always\"],\n\n\t\tmessages: {\n\t\t\tinitialized:\n\t\t\t\t\"Variable '{{idName}}' should be initialized on declaration.\",\n\t\t\tnotInitialized:\n\t\t\t\t\"Variable '{{idName}}' should not be initialized on declaration.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst mode = context.options[0];\n\t\tconst params = context.options[1] || {};\n\n\t\t// Track whether we're inside a declared namespace\n\t\tlet insideDeclaredNamespace = false;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tTSModuleDeclaration(node) {\n\t\t\t\tif (node.declare) {\n\t\t\t\t\tinsideDeclaredNamespace = true;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t\"TSModuleDeclaration:exit\"(node) {\n\t\t\t\tif (node.declare) {\n\t\t\t\t\tinsideDeclaredNamespace = false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t\"VariableDeclaration:exit\"(node) {\n\t\t\t\tconst kind = node.kind,\n\t\t\t\t\tdeclarations = node.declarations;\n\n\t\t\t\tif (node.declare || insideDeclaredNamespace) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < declarations.length; ++i) {\n\t\t\t\t\tconst declaration = declarations[i],\n\t\t\t\t\t\tid = declaration.id,\n\t\t\t\t\t\tinitialized = isInitialized(declaration),\n\t\t\t\t\t\tisIgnoredForLoop =\n\t\t\t\t\t\t\tparams.ignoreForLoopInit && isForLoop(node.parent);\n\t\t\t\t\tlet messageId = \"\";\n\n\t\t\t\t\tif (mode === \"always\" && !initialized) {\n\t\t\t\t\t\tmessageId = \"initialized\";\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tmode === \"never\" &&\n\t\t\t\t\t\t!CONSTANT_BINDINGS.has(kind) &&\n\t\t\t\t\t\tinitialized &&\n\t\t\t\t\t\t!isIgnoredForLoop\n\t\t\t\t\t) {\n\t\t\t\t\t\tmessageId = \"notInitialized\";\n\t\t\t\t\t}\n\n\t\t\t\t\tif (id.type === \"Identifier\" && messageId) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: declaration,\n\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tidName: id.name,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to ensure consistent quotes used in jsx syntax.\n * @author Mathias Schreck <https://github.com/lo1tuma>\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Constants\n//------------------------------------------------------------------------------\n\nconst QUOTE_SETTINGS = {\n\t\"prefer-double\": {\n\t\tquote: '\"',\n\t\tdescription: \"singlequote\",\n\t\tconvert(str) {\n\t\t\treturn str.replace(/'/gu, '\"');\n\t\t},\n\t},\n\t\"prefer-single\": {\n\t\tquote: \"'\",\n\t\tdescription: \"doublequote\",\n\t\tconvert(str) {\n\t\t\treturn str.replace(/\"/gu, \"'\");\n\t\t},\n\t},\n};\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"jsx-quotes\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/jsx-quotes\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce the consistent use of either double or single quotes in JSX attributes\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/jsx-quotes\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"prefer-single\", \"prefer-double\"],\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\tunexpected: \"Unexpected usage of {{description}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst quoteOption = context.options[0] || \"prefer-double\",\n\t\t\tsetting = QUOTE_SETTINGS[quoteOption];\n\n\t\t/**\n\t\t * Checks if the given string literal node uses the expected quotes\n\t\t * @param {ASTNode} node A string literal node.\n\t\t * @returns {boolean} Whether or not the string literal used the expected quotes.\n\t\t * @public\n\t\t */\n\t\tfunction usesExpectedQuotes(node) {\n\t\t\treturn (\n\t\t\t\tnode.value.includes(setting.quote) ||\n\t\t\t\tastUtils.isSurroundedBy(node.raw, setting.quote)\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\tJSXAttribute(node) {\n\t\t\t\tconst attributeValue = node.value;\n\n\t\t\t\tif (\n\t\t\t\t\tattributeValue &&\n\t\t\t\t\tastUtils.isStringLiteral(attributeValue) &&\n\t\t\t\t\t!usesExpectedQuotes(attributeValue)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: attributeValue,\n\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tdescription: setting.description,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\tattributeValue,\n\t\t\t\t\t\t\t\tsetting.convert(attributeValue.raw),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to specify spacing of object literal keys and values\n * @author Brandon Mills\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst { getGraphemeCount } = require(\"../shared/string-utils\");\n\n/**\n * Checks whether a string contains a line terminator as defined in\n * http://www.ecma-international.org/ecma-262/5.1/#sec-7.3\n * @param {string} str String to test.\n * @returns {boolean} True if str contains a line terminator.\n */\nfunction containsLineTerminator(str) {\n\treturn astUtils.LINEBREAK_MATCHER.test(str);\n}\n\n/**\n * Gets the last element of an array.\n * @param {Array} arr An array.\n * @returns {any} Last element of arr.\n */\nfunction last(arr) {\n\treturn arr.at(-1);\n}\n\n/**\n * Checks whether a node is contained on a single line.\n * @param {ASTNode} node AST Node being evaluated.\n * @returns {boolean} True if the node is a single line.\n */\nfunction isSingleLine(node) {\n\treturn node.loc.end.line === node.loc.start.line;\n}\n\n/**\n * Checks whether the properties on a single line.\n * @param {ASTNode[]} properties List of Property AST nodes.\n * @returns {boolean} True if all properties is on a single line.\n */\nfunction isSingleLineProperties(properties) {\n\tconst [firstProp] = properties,\n\t\tlastProp = last(properties);\n\n\treturn firstProp.loc.start.line === lastProp.loc.end.line;\n}\n\n/**\n * Initializes a single option property from the configuration with defaults for undefined values\n * @param {Object} toOptions Object to be initialized\n * @param {Object} fromOptions Object to be initialized from\n * @returns {Object} The object with correctly initialized options and values\n */\nfunction initOptionProperty(toOptions, fromOptions) {\n\ttoOptions.mode = fromOptions.mode || \"strict\";\n\n\t// Set value of beforeColon\n\tif (typeof fromOptions.beforeColon !== \"undefined\") {\n\t\ttoOptions.beforeColon = +fromOptions.beforeColon;\n\t} else {\n\t\ttoOptions.beforeColon = 0;\n\t}\n\n\t// Set value of afterColon\n\tif (typeof fromOptions.afterColon !== \"undefined\") {\n\t\ttoOptions.afterColon = +fromOptions.afterColon;\n\t} else {\n\t\ttoOptions.afterColon = 1;\n\t}\n\n\t// Set align if exists\n\tif (typeof fromOptions.align !== \"undefined\") {\n\t\tif (typeof fromOptions.align === \"object\") {\n\t\t\ttoOptions.align = fromOptions.align;\n\t\t} else {\n\t\t\t// \"string\"\n\t\t\ttoOptions.align = {\n\t\t\t\ton: fromOptions.align,\n\t\t\t\tmode: toOptions.mode,\n\t\t\t\tbeforeColon: toOptions.beforeColon,\n\t\t\t\tafterColon: toOptions.afterColon,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn toOptions;\n}\n\n/**\n * Initializes all the option values (singleLine, multiLine and align) from the configuration with defaults for undefined values\n * @param {Object} toOptions Object to be initialized\n * @param {Object} fromOptions Object to be initialized from\n * @returns {Object} The object with correctly initialized options and values\n */\nfunction initOptions(toOptions, fromOptions) {\n\tif (typeof fromOptions.align === \"object\") {\n\t\t// Initialize the alignment configuration\n\t\ttoOptions.align = initOptionProperty({}, fromOptions.align);\n\t\ttoOptions.align.on = fromOptions.align.on || \"colon\";\n\t\ttoOptions.align.mode = fromOptions.align.mode || \"strict\";\n\n\t\ttoOptions.multiLine = initOptionProperty(\n\t\t\t{},\n\t\t\tfromOptions.multiLine || fromOptions,\n\t\t);\n\t\ttoOptions.singleLine = initOptionProperty(\n\t\t\t{},\n\t\t\tfromOptions.singleLine || fromOptions,\n\t\t);\n\t} else {\n\t\t// string or undefined\n\t\ttoOptions.multiLine = initOptionProperty(\n\t\t\t{},\n\t\t\tfromOptions.multiLine || fromOptions,\n\t\t);\n\t\ttoOptions.singleLine = initOptionProperty(\n\t\t\t{},\n\t\t\tfromOptions.singleLine || fromOptions,\n\t\t);\n\n\t\t// If alignment options are defined in multiLine, pull them out into the general align configuration\n\t\tif (toOptions.multiLine.align) {\n\t\t\ttoOptions.align = {\n\t\t\t\ton: toOptions.multiLine.align.on,\n\t\t\t\tmode:\n\t\t\t\t\ttoOptions.multiLine.align.mode || toOptions.multiLine.mode,\n\t\t\t\tbeforeColon: toOptions.multiLine.align.beforeColon,\n\t\t\t\tafterColon: toOptions.multiLine.align.afterColon,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn toOptions;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"key-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/key-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce consistent spacing between keys and values in object literal properties\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/key-spacing\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\talign: {\n\t\t\t\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tenum: [\"colon\", \"value\"],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\t\t\tmode: {\n\t\t\t\t\t\t\t\t\t\t\t\tenum: [\"strict\", \"minimum\"],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\ton: {\n\t\t\t\t\t\t\t\t\t\t\t\tenum: [\"colon\", \"value\"],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tbeforeColon: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tafterColon: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmode: {\n\t\t\t\t\t\t\t\tenum: [\"strict\", \"minimum\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbeforeColon: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tafterColon: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tsingleLine: {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tmode: {\n\t\t\t\t\t\t\t\t\t\tenum: [\"strict\", \"minimum\"],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tbeforeColon: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tafterColon: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmultiLine: {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\talign: {\n\t\t\t\t\t\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tenum: [\"colon\", \"value\"],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tmode: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"strict\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"minimum\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\ton: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"colon\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\tbeforeColon: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\tafterColon: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tmode: {\n\t\t\t\t\t\t\t\t\t\tenum: [\"strict\", \"minimum\"],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tbeforeColon: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tafterColon: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tsingleLine: {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tmode: {\n\t\t\t\t\t\t\t\t\t\tenum: [\"strict\", \"minimum\"],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tbeforeColon: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tafterColon: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmultiLine: {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tmode: {\n\t\t\t\t\t\t\t\t\t\tenum: [\"strict\", \"minimum\"],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tbeforeColon: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tafterColon: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\talign: {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tmode: {\n\t\t\t\t\t\t\t\t\t\tenum: [\"strict\", \"minimum\"],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\ton: {\n\t\t\t\t\t\t\t\t\t\tenum: [\"colon\", \"value\"],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tbeforeColon: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tafterColon: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\textraKey: \"Extra space after {{computed}}key '{{key}}'.\",\n\t\t\textraValue:\n\t\t\t\t\"Extra space before value for {{computed}}key '{{key}}'.\",\n\t\t\tmissingKey: \"Missing space after {{computed}}key '{{key}}'.\",\n\t\t\tmissingValue:\n\t\t\t\t\"Missing space before value for {{computed}}key '{{key}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t/**\n\t\t * OPTIONS\n\t\t * \"key-spacing\": [2, {\n\t\t *     beforeColon: false,\n\t\t *     afterColon: true,\n\t\t *     align: \"colon\" // Optional, or \"value\"\n\t\t * }\n\t\t */\n\t\tconst options = context.options[0] || {},\n\t\t\truleOptions = initOptions({}, options),\n\t\t\tmultiLineOptions = ruleOptions.multiLine,\n\t\t\tsingleLineOptions = ruleOptions.singleLine,\n\t\t\talignmentOptions = ruleOptions.align || null;\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Determines if the given property is key-value property.\n\t\t * @param {ASTNode} property Property node to check.\n\t\t * @returns {boolean} Whether the property is a key-value property.\n\t\t */\n\t\tfunction isKeyValueProperty(property) {\n\t\t\treturn !(\n\t\t\t\t(\n\t\t\t\t\tproperty.method ||\n\t\t\t\t\tproperty.shorthand ||\n\t\t\t\t\tproperty.kind !== \"init\" ||\n\t\t\t\t\tproperty.type !== \"Property\"\n\t\t\t\t) // Could be \"ExperimentalSpreadProperty\" or \"SpreadElement\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Starting from the given node (a property.key node here) looks forward\n\t\t * until it finds the colon punctuator and returns it.\n\t\t * @param {ASTNode} node The node to start looking from.\n\t\t * @returns {ASTNode} The colon punctuator.\n\t\t */\n\t\tfunction getNextColon(node) {\n\t\t\treturn sourceCode.getTokenAfter(node, astUtils.isColonToken);\n\t\t}\n\n\t\t/**\n\t\t * Starting from the given node (a property.key node here) looks forward\n\t\t * until it finds the last token before a colon punctuator and returns it.\n\t\t * @param {ASTNode} node The node to start looking from.\n\t\t * @returns {ASTNode} The last token before a colon punctuator.\n\t\t */\n\t\tfunction getLastTokenBeforeColon(node) {\n\t\t\tconst colonToken = getNextColon(node);\n\n\t\t\treturn sourceCode.getTokenBefore(colonToken);\n\t\t}\n\n\t\t/**\n\t\t * Starting from the given node (a property.key node here) looks forward\n\t\t * until it finds the first token after a colon punctuator and returns it.\n\t\t * @param {ASTNode} node The node to start looking from.\n\t\t * @returns {ASTNode} The first token after a colon punctuator.\n\t\t */\n\t\tfunction getFirstTokenAfterColon(node) {\n\t\t\tconst colonToken = getNextColon(node);\n\n\t\t\treturn sourceCode.getTokenAfter(colonToken);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a property is a member of the property group it follows.\n\t\t * @param {ASTNode} lastMember The last Property known to be in the group.\n\t\t * @param {ASTNode} candidate The next Property that might be in the group.\n\t\t * @returns {boolean} True if the candidate property is part of the group.\n\t\t */\n\t\tfunction continuesPropertyGroup(lastMember, candidate) {\n\t\t\tconst groupEndLine = lastMember.loc.start.line,\n\t\t\t\tcandidateValueStartLine = (\n\t\t\t\t\tisKeyValueProperty(candidate)\n\t\t\t\t\t\t? getFirstTokenAfterColon(candidate.key)\n\t\t\t\t\t\t: candidate\n\t\t\t\t).loc.start.line;\n\n\t\t\tif (candidateValueStartLine - groupEndLine <= 1) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Check that the first comment is adjacent to the end of the group, the\n\t\t\t * last comment is adjacent to the candidate property, and that successive\n\t\t\t * comments are adjacent to each other.\n\t\t\t */\n\t\t\tconst leadingComments = sourceCode.getCommentsBefore(candidate);\n\n\t\t\tif (\n\t\t\t\tleadingComments.length &&\n\t\t\t\tleadingComments[0].loc.start.line - groupEndLine <= 1 &&\n\t\t\t\tcandidateValueStartLine - last(leadingComments).loc.end.line <=\n\t\t\t\t\t1\n\t\t\t) {\n\t\t\t\tfor (let i = 1; i < leadingComments.length; i++) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tleadingComments[i].loc.start.line -\n\t\t\t\t\t\t\tleadingComments[i - 1].loc.end.line >\n\t\t\t\t\t\t1\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Gets an object literal property's key as the identifier name or string value.\n\t\t * @param {ASTNode} property Property node whose key to retrieve.\n\t\t * @returns {string} The property's key.\n\t\t */\n\t\tfunction getKey(property) {\n\t\t\tconst key = property.key;\n\n\t\t\tif (property.computed) {\n\t\t\t\treturn sourceCode.getText().slice(key.range[0], key.range[1]);\n\t\t\t}\n\t\t\treturn astUtils.getStaticPropertyName(property);\n\t\t}\n\n\t\t/**\n\t\t * Reports an appropriately-formatted error if spacing is incorrect on one\n\t\t * side of the colon.\n\t\t * @param {ASTNode} property Key-value pair in an object literal.\n\t\t * @param {string} side Side being verified - either \"key\" or \"value\".\n\t\t * @param {string} whitespace Actual whitespace string.\n\t\t * @param {number} expected Expected whitespace length.\n\t\t * @param {string} mode Value of the mode as \"strict\" or \"minimum\"\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(property, side, whitespace, expected, mode) {\n\t\t\tconst diff = whitespace.length - expected;\n\n\t\t\tif (\n\t\t\t\t((diff && mode === \"strict\") ||\n\t\t\t\t\t(diff < 0 && mode === \"minimum\") ||\n\t\t\t\t\t(diff > 0 && !expected && mode === \"minimum\")) &&\n\t\t\t\t!(expected && containsLineTerminator(whitespace))\n\t\t\t) {\n\t\t\t\tconst nextColon = getNextColon(property.key),\n\t\t\t\t\ttokenBeforeColon = sourceCode.getTokenBefore(nextColon, {\n\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t}),\n\t\t\t\t\ttokenAfterColon = sourceCode.getTokenAfter(nextColon, {\n\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t}),\n\t\t\t\t\tisKeySide = side === \"key\",\n\t\t\t\t\tisExtra = diff > 0,\n\t\t\t\t\tdiffAbs = Math.abs(diff),\n\t\t\t\t\tspaces = Array(diffAbs + 1).join(\" \");\n\n\t\t\t\tconst locStart = isKeySide\n\t\t\t\t\t? tokenBeforeColon.loc.end\n\t\t\t\t\t: nextColon.loc.start;\n\t\t\t\tconst locEnd = isKeySide\n\t\t\t\t\t? nextColon.loc.start\n\t\t\t\t\t: tokenAfterColon.loc.start;\n\t\t\t\tconst missingLoc = isKeySide\n\t\t\t\t\t? tokenBeforeColon.loc\n\t\t\t\t\t: tokenAfterColon.loc;\n\t\t\t\tconst loc = isExtra\n\t\t\t\t\t? { start: locStart, end: locEnd }\n\t\t\t\t\t: missingLoc;\n\n\t\t\t\tlet fix;\n\n\t\t\t\tif (isExtra) {\n\t\t\t\t\tlet range;\n\n\t\t\t\t\t// Remove whitespace\n\t\t\t\t\tif (isKeySide) {\n\t\t\t\t\t\trange = [\n\t\t\t\t\t\t\ttokenBeforeColon.range[1],\n\t\t\t\t\t\t\ttokenBeforeColon.range[1] + diffAbs,\n\t\t\t\t\t\t];\n\t\t\t\t\t} else {\n\t\t\t\t\t\trange = [\n\t\t\t\t\t\t\ttokenAfterColon.range[0] - diffAbs,\n\t\t\t\t\t\t\ttokenAfterColon.range[0],\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\tfix = function (fixer) {\n\t\t\t\t\t\treturn fixer.removeRange(range);\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\t// Add whitespace\n\t\t\t\t\tif (isKeySide) {\n\t\t\t\t\t\tfix = function (fixer) {\n\t\t\t\t\t\t\treturn fixer.insertTextAfter(\n\t\t\t\t\t\t\t\ttokenBeforeColon,\n\t\t\t\t\t\t\t\tspaces,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfix = function (fixer) {\n\t\t\t\t\t\t\treturn fixer.insertTextBefore(\n\t\t\t\t\t\t\t\ttokenAfterColon,\n\t\t\t\t\t\t\t\tspaces,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet messageId;\n\n\t\t\t\tif (isExtra) {\n\t\t\t\t\tmessageId = side === \"key\" ? \"extraKey\" : \"extraValue\";\n\t\t\t\t} else {\n\t\t\t\t\tmessageId = side === \"key\" ? \"missingKey\" : \"missingValue\";\n\t\t\t\t}\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: property[side],\n\t\t\t\t\tloc,\n\t\t\t\t\tmessageId,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tcomputed: property.computed ? \"computed \" : \"\",\n\t\t\t\t\t\tkey: getKey(property),\n\t\t\t\t\t},\n\t\t\t\t\tfix,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Gets the number of characters in a key, including quotes around string\n\t\t * keys and braces around computed property keys.\n\t\t * @param {ASTNode} property Property of on object literal.\n\t\t * @returns {number} Width of the key.\n\t\t */\n\t\tfunction getKeyWidth(property) {\n\t\t\tconst startToken = sourceCode.getFirstToken(property);\n\t\t\tconst endToken = getLastTokenBeforeColon(property.key);\n\n\t\t\treturn getGraphemeCount(\n\t\t\t\tsourceCode\n\t\t\t\t\t.getText()\n\t\t\t\t\t.slice(startToken.range[0], endToken.range[1]),\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Gets the whitespace around the colon in an object literal property.\n\t\t * @param {ASTNode} property Property node from an object literal.\n\t\t * @returns {Object} Whitespace before and after the property's colon.\n\t\t */\n\t\tfunction getPropertyWhitespace(property) {\n\t\t\tconst whitespace = /(\\s*):(\\s*)/u.exec(\n\t\t\t\tsourceCode\n\t\t\t\t\t.getText()\n\t\t\t\t\t.slice(property.key.range[1], property.value.range[0]),\n\t\t\t);\n\n\t\t\tif (whitespace) {\n\t\t\t\treturn {\n\t\t\t\t\tbeforeColon: whitespace[1],\n\t\t\t\t\tafterColon: whitespace[2],\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\t/**\n\t\t * Creates groups of properties.\n\t\t * @param {ASTNode} node ObjectExpression node being evaluated.\n\t\t * @returns {Array<ASTNode[]>} Groups of property AST node lists.\n\t\t */\n\t\tfunction createGroups(node) {\n\t\t\tif (node.properties.length === 1) {\n\t\t\t\treturn [node.properties];\n\t\t\t}\n\n\t\t\treturn node.properties.reduce(\n\t\t\t\t(groups, property) => {\n\t\t\t\t\tconst currentGroup = last(groups),\n\t\t\t\t\t\tprev = last(currentGroup);\n\n\t\t\t\t\tif (!prev || continuesPropertyGroup(prev, property)) {\n\t\t\t\t\t\tcurrentGroup.push(property);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgroups.push([property]);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn groups;\n\t\t\t\t},\n\t\t\t\t[[]],\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Verifies correct vertical alignment of a group of properties.\n\t\t * @param {ASTNode[]} properties List of Property AST nodes.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction verifyGroupAlignment(properties) {\n\t\t\tconst length = properties.length,\n\t\t\t\twidths = properties.map(getKeyWidth), // Width of keys, including quotes\n\t\t\t\talign = alignmentOptions.on; // \"value\" or \"colon\"\n\t\t\tlet targetWidth = Math.max(...widths),\n\t\t\t\tbeforeColon,\n\t\t\t\tafterColon,\n\t\t\t\tmode;\n\n\t\t\tif (alignmentOptions && length > 1) {\n\t\t\t\t// When aligning values within a group, use the alignment configuration.\n\t\t\t\tbeforeColon = alignmentOptions.beforeColon;\n\t\t\t\tafterColon = alignmentOptions.afterColon;\n\t\t\t\tmode = alignmentOptions.mode;\n\t\t\t} else {\n\t\t\t\tbeforeColon = multiLineOptions.beforeColon;\n\t\t\t\tafterColon = multiLineOptions.afterColon;\n\t\t\t\tmode = alignmentOptions.mode;\n\t\t\t}\n\n\t\t\t// Conditionally include one space before or after colon\n\t\t\ttargetWidth += align === \"colon\" ? beforeColon : afterColon;\n\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst property = properties[i];\n\t\t\t\tconst whitespace = getPropertyWhitespace(property);\n\n\t\t\t\tif (whitespace) {\n\t\t\t\t\t// Object literal getters/setters lack a colon\n\t\t\t\t\tconst width = widths[i];\n\n\t\t\t\t\tif (align === \"value\") {\n\t\t\t\t\t\treport(\n\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\t\"key\",\n\t\t\t\t\t\t\twhitespace.beforeColon,\n\t\t\t\t\t\t\tbeforeColon,\n\t\t\t\t\t\t\tmode,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treport(\n\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\t\"value\",\n\t\t\t\t\t\t\twhitespace.afterColon,\n\t\t\t\t\t\t\ttargetWidth - width,\n\t\t\t\t\t\t\tmode,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// align = \"colon\"\n\t\t\t\t\t\treport(\n\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\t\"key\",\n\t\t\t\t\t\t\twhitespace.beforeColon,\n\t\t\t\t\t\t\ttargetWidth - width,\n\t\t\t\t\t\t\tmode,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treport(\n\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\t\"value\",\n\t\t\t\t\t\t\twhitespace.afterColon,\n\t\t\t\t\t\t\tafterColon,\n\t\t\t\t\t\t\tmode,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Verifies spacing of property conforms to specified options.\n\t\t * @param {ASTNode} node Property node being evaluated.\n\t\t * @param {Object} lineOptions Configured singleLine or multiLine options\n\t\t * @returns {void}\n\t\t */\n\t\tfunction verifySpacing(node, lineOptions) {\n\t\t\tconst actual = getPropertyWhitespace(node);\n\n\t\t\tif (actual) {\n\t\t\t\t// Object literal getters/setters lack colons\n\t\t\t\treport(\n\t\t\t\t\tnode,\n\t\t\t\t\t\"key\",\n\t\t\t\t\tactual.beforeColon,\n\t\t\t\t\tlineOptions.beforeColon,\n\t\t\t\t\tlineOptions.mode,\n\t\t\t\t);\n\t\t\t\treport(\n\t\t\t\t\tnode,\n\t\t\t\t\t\"value\",\n\t\t\t\t\tactual.afterColon,\n\t\t\t\t\tlineOptions.afterColon,\n\t\t\t\t\tlineOptions.mode,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Verifies spacing of each property in a list.\n\t\t * @param {ASTNode[]} properties List of Property AST nodes.\n\t\t * @param {Object} lineOptions Configured singleLine or multiLine options\n\t\t * @returns {void}\n\t\t */\n\t\tfunction verifyListSpacing(properties, lineOptions) {\n\t\t\tconst length = properties.length;\n\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tverifySpacing(properties[i], lineOptions);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Verifies vertical alignment, taking into account groups of properties.\n\t\t * @param {ASTNode} node ObjectExpression node being evaluated.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction verifyAlignment(node) {\n\t\t\tcreateGroups(node).forEach(group => {\n\t\t\t\tconst properties = group.filter(isKeyValueProperty);\n\n\t\t\t\tif (\n\t\t\t\t\tproperties.length > 0 &&\n\t\t\t\t\tisSingleLineProperties(properties)\n\t\t\t\t) {\n\t\t\t\t\tverifyListSpacing(properties, multiLineOptions);\n\t\t\t\t} else {\n\t\t\t\t\tverifyGroupAlignment(properties);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\tif (alignmentOptions) {\n\t\t\t// Verify vertical alignment\n\n\t\t\treturn {\n\t\t\t\tObjectExpression(node) {\n\t\t\t\t\tif (isSingleLine(node)) {\n\t\t\t\t\t\tverifyListSpacing(\n\t\t\t\t\t\t\tnode.properties.filter(isKeyValueProperty),\n\t\t\t\t\t\t\tsingleLineOptions,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tverifyAlignment(node);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\t// Obey beforeColon and afterColon in each property as configured\n\t\treturn {\n\t\t\tProperty(node) {\n\t\t\t\tverifySpacing(\n\t\t\t\t\tnode,\n\t\t\t\t\tisSingleLine(node.parent)\n\t\t\t\t\t\t? singleLineOptions\n\t\t\t\t\t\t: multiLineOptions,\n\t\t\t\t);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce spacing before and after keywords.\n * @author Toru Nagashima\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\"),\n\tkeywords = require(\"./utils/keywords\");\n\n//------------------------------------------------------------------------------\n// Constants\n//------------------------------------------------------------------------------\n\nconst PREV_TOKEN = /^[)\\]}>]$/u;\nconst NEXT_TOKEN = /^(?:[([{<~!]|\\+\\+?|--?)$/u;\nconst PREV_TOKEN_M = /^[)\\]}>*]$/u;\nconst NEXT_TOKEN_M = /^[{*]$/u;\nconst TEMPLATE_OPEN_PAREN = /\\$\\{$/u;\nconst TEMPLATE_CLOSE_PAREN = /^\\}/u;\nconst CHECK_TYPE =\n\t/^(?:JSXElement|RegularExpression|String|Template|PrivateIdentifier)$/u;\nconst KEYS = keywords.concat([\n\t\"as\",\n\t\"async\",\n\t\"await\",\n\t\"from\",\n\t\"get\",\n\t\"let\",\n\t\"of\",\n\t\"set\",\n\t\"yield\",\n]);\n\n// check duplications.\n(function () {\n\tKEYS.sort();\n\tfor (let i = 1; i < KEYS.length; ++i) {\n\t\tif (KEYS[i] === KEYS[i - 1]) {\n\t\t\tthrow new Error(\n\t\t\t\t`Duplication was found in the keyword list: ${KEYS[i]}`,\n\t\t\t);\n\t\t}\n\t}\n})();\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether or not a given token is a \"Template\" token ends with \"${\".\n * @param {Token} token A token to check.\n * @returns {boolean} `true` if the token is a \"Template\" token ends with \"${\".\n */\nfunction isOpenParenOfTemplate(token) {\n\treturn token.type === \"Template\" && TEMPLATE_OPEN_PAREN.test(token.value);\n}\n\n/**\n * Checks whether or not a given token is a \"Template\" token starts with \"}\".\n * @param {Token} token A token to check.\n * @returns {boolean} `true` if the token is a \"Template\" token starts with \"}\".\n */\nfunction isCloseParenOfTemplate(token) {\n\treturn token.type === \"Template\" && TEMPLATE_CLOSE_PAREN.test(token.value);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"keyword-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/keyword-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce consistent spacing before and after keywords\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/keyword-spacing\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tbefore: { type: \"boolean\", default: true },\n\t\t\t\t\tafter: { type: \"boolean\", default: true },\n\t\t\t\t\toverrides: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: KEYS.reduce((retv, key) => {\n\t\t\t\t\t\t\tretv[key] = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tbefore: { type: \"boolean\" },\n\t\t\t\t\t\t\t\t\tafter: { type: \"boolean\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\treturn retv;\n\t\t\t\t\t\t}, {}),\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\texpectedBefore: 'Expected space(s) before \"{{value}}\".',\n\t\t\texpectedAfter: 'Expected space(s) after \"{{value}}\".',\n\t\t\tunexpectedBefore: 'Unexpected space(s) before \"{{value}}\".',\n\t\t\tunexpectedAfter: 'Unexpected space(s) after \"{{value}}\".',\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tconst tokensToIgnore = new WeakSet();\n\n\t\t/**\n\t\t * Reports a given token if there are not space(s) before the token.\n\t\t * @param {Token} token A token to report.\n\t\t * @param {RegExp} pattern A pattern of the previous token to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction expectSpaceBefore(token, pattern) {\n\t\t\tconst prevToken = sourceCode.getTokenBefore(token);\n\n\t\t\tif (\n\t\t\t\tprevToken &&\n\t\t\t\t(CHECK_TYPE.test(prevToken.type) ||\n\t\t\t\t\tpattern.test(prevToken.value)) &&\n\t\t\t\t!isOpenParenOfTemplate(prevToken) &&\n\t\t\t\t!tokensToIgnore.has(prevToken) &&\n\t\t\t\tastUtils.isTokenOnSameLine(prevToken, token) &&\n\t\t\t\t!sourceCode.isSpaceBetween(prevToken, token)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tloc: token.loc,\n\t\t\t\t\tmessageId: \"expectedBefore\",\n\t\t\t\t\tdata: token,\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\treturn fixer.insertTextBefore(token, \" \");\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports a given token if there are space(s) before the token.\n\t\t * @param {Token} token A token to report.\n\t\t * @param {RegExp} pattern A pattern of the previous token to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction unexpectSpaceBefore(token, pattern) {\n\t\t\tconst prevToken = sourceCode.getTokenBefore(token);\n\n\t\t\tif (\n\t\t\t\tprevToken &&\n\t\t\t\t(CHECK_TYPE.test(prevToken.type) ||\n\t\t\t\t\tpattern.test(prevToken.value)) &&\n\t\t\t\t!isOpenParenOfTemplate(prevToken) &&\n\t\t\t\t!tokensToIgnore.has(prevToken) &&\n\t\t\t\tastUtils.isTokenOnSameLine(prevToken, token) &&\n\t\t\t\tsourceCode.isSpaceBetween(prevToken, token)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tloc: { start: prevToken.loc.end, end: token.loc.start },\n\t\t\t\t\tmessageId: \"unexpectedBefore\",\n\t\t\t\t\tdata: token,\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\tprevToken.range[1],\n\t\t\t\t\t\t\ttoken.range[0],\n\t\t\t\t\t\t]);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports a given token if there are not space(s) after the token.\n\t\t * @param {Token} token A token to report.\n\t\t * @param {RegExp} pattern A pattern of the next token to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction expectSpaceAfter(token, pattern) {\n\t\t\tconst nextToken = sourceCode.getTokenAfter(token);\n\n\t\t\tif (\n\t\t\t\tnextToken &&\n\t\t\t\t(CHECK_TYPE.test(nextToken.type) ||\n\t\t\t\t\tpattern.test(nextToken.value)) &&\n\t\t\t\t!isCloseParenOfTemplate(nextToken) &&\n\t\t\t\t!tokensToIgnore.has(nextToken) &&\n\t\t\t\tastUtils.isTokenOnSameLine(token, nextToken) &&\n\t\t\t\t!sourceCode.isSpaceBetween(token, nextToken)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tloc: token.loc,\n\t\t\t\t\tmessageId: \"expectedAfter\",\n\t\t\t\t\tdata: token,\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\treturn fixer.insertTextAfter(token, \" \");\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports a given token if there are space(s) after the token.\n\t\t * @param {Token} token A token to report.\n\t\t * @param {RegExp} pattern A pattern of the next token to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction unexpectSpaceAfter(token, pattern) {\n\t\t\tconst nextToken = sourceCode.getTokenAfter(token);\n\n\t\t\tif (\n\t\t\t\tnextToken &&\n\t\t\t\t(CHECK_TYPE.test(nextToken.type) ||\n\t\t\t\t\tpattern.test(nextToken.value)) &&\n\t\t\t\t!isCloseParenOfTemplate(nextToken) &&\n\t\t\t\t!tokensToIgnore.has(nextToken) &&\n\t\t\t\tastUtils.isTokenOnSameLine(token, nextToken) &&\n\t\t\t\tsourceCode.isSpaceBetween(token, nextToken)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tloc: { start: token.loc.end, end: nextToken.loc.start },\n\t\t\t\t\tmessageId: \"unexpectedAfter\",\n\t\t\t\t\tdata: token,\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\ttoken.range[1],\n\t\t\t\t\t\t\tnextToken.range[0],\n\t\t\t\t\t\t]);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Parses the option object and determines check methods for each keyword.\n\t\t * @param {Object|undefined} options The option object to parse.\n\t\t * @returns {Object} - Normalized option object.\n\t\t *      Keys are keywords (there are for every keyword).\n\t\t *      Values are instances of `{\"before\": function, \"after\": function}`.\n\t\t */\n\t\tfunction parseOptions(options = {}) {\n\t\t\tconst before = options.before !== false;\n\t\t\tconst after = options.after !== false;\n\t\t\tconst defaultValue = {\n\t\t\t\tbefore: before ? expectSpaceBefore : unexpectSpaceBefore,\n\t\t\t\tafter: after ? expectSpaceAfter : unexpectSpaceAfter,\n\t\t\t};\n\t\t\tconst overrides = (options && options.overrides) || {};\n\t\t\tconst retv = Object.create(null);\n\n\t\t\tfor (let i = 0; i < KEYS.length; ++i) {\n\t\t\t\tconst key = KEYS[i];\n\t\t\t\tconst override = overrides[key];\n\n\t\t\t\tif (override) {\n\t\t\t\t\tconst thisBefore =\n\t\t\t\t\t\t\"before\" in override ? override.before : before;\n\t\t\t\t\tconst thisAfter =\n\t\t\t\t\t\t\"after\" in override ? override.after : after;\n\n\t\t\t\t\tretv[key] = {\n\t\t\t\t\t\tbefore: thisBefore\n\t\t\t\t\t\t\t? expectSpaceBefore\n\t\t\t\t\t\t\t: unexpectSpaceBefore,\n\t\t\t\t\t\tafter: thisAfter\n\t\t\t\t\t\t\t? expectSpaceAfter\n\t\t\t\t\t\t\t: unexpectSpaceAfter,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tretv[key] = defaultValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn retv;\n\t\t}\n\n\t\tconst checkMethodMap = parseOptions(context.options[0]);\n\n\t\t/**\n\t\t * Reports a given token if usage of spacing followed by the token is\n\t\t * invalid.\n\t\t * @param {Token} token A token to report.\n\t\t * @param {RegExp} [pattern] Optional. A pattern of the previous\n\t\t *      token to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingBefore(token, pattern) {\n\t\t\tcheckMethodMap[token.value].before(token, pattern || PREV_TOKEN);\n\t\t}\n\n\t\t/**\n\t\t * Reports a given token if usage of spacing preceded by the token is\n\t\t * invalid.\n\t\t * @param {Token} token A token to report.\n\t\t * @param {RegExp} [pattern] Optional. A pattern of the next\n\t\t *      token to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingAfter(token, pattern) {\n\t\t\tcheckMethodMap[token.value].after(token, pattern || NEXT_TOKEN);\n\t\t}\n\n\t\t/**\n\t\t * Reports a given token if usage of spacing around the token is invalid.\n\t\t * @param {Token} token A token to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingAround(token) {\n\t\t\tcheckSpacingBefore(token);\n\t\t\tcheckSpacingAfter(token);\n\t\t}\n\n\t\t/**\n\t\t * Reports the first token of a given node if the first token is a keyword\n\t\t * and usage of spacing around the token is invalid.\n\t\t * @param {ASTNode|null} node A node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingAroundFirstToken(node) {\n\t\t\tconst firstToken = node && sourceCode.getFirstToken(node);\n\n\t\t\tif (firstToken && firstToken.type === \"Keyword\") {\n\t\t\t\tcheckSpacingAround(firstToken);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports the first token of a given node if the first token is a keyword\n\t\t * and usage of spacing followed by the token is invalid.\n\t\t *\n\t\t * This is used for unary operators (e.g. `typeof`), `function`, and `super`.\n\t\t * Other rules are handling usage of spacing preceded by those keywords.\n\t\t * @param {ASTNode|null} node A node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingBeforeFirstToken(node) {\n\t\t\tconst firstToken = node && sourceCode.getFirstToken(node);\n\n\t\t\tif (firstToken && firstToken.type === \"Keyword\") {\n\t\t\t\tcheckSpacingBefore(firstToken);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports the previous token of a given node if the token is a keyword and\n\t\t * usage of spacing around the token is invalid.\n\t\t * @param {ASTNode|null} node A node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingAroundTokenBefore(node) {\n\t\t\tif (node) {\n\t\t\t\tconst token = sourceCode.getTokenBefore(\n\t\t\t\t\tnode,\n\t\t\t\t\tastUtils.isKeywordToken,\n\t\t\t\t);\n\n\t\t\t\tcheckSpacingAround(token);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports `async` or `function` keywords of a given node if usage of\n\t\t * spacing around those keywords is invalid.\n\t\t * @param {ASTNode} node A node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingForFunction(node) {\n\t\t\tconst firstToken = node && sourceCode.getFirstToken(node);\n\n\t\t\tif (\n\t\t\t\tfirstToken &&\n\t\t\t\t((firstToken.type === \"Keyword\" &&\n\t\t\t\t\tfirstToken.value === \"function\") ||\n\t\t\t\t\tfirstToken.value === \"async\")\n\t\t\t) {\n\t\t\t\tcheckSpacingBefore(firstToken);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports `class` and `extends` keywords of a given node if usage of\n\t\t * spacing around those keywords is invalid.\n\t\t * @param {ASTNode} node A node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingForClass(node) {\n\t\t\tcheckSpacingAroundFirstToken(node);\n\t\t\tcheckSpacingAroundTokenBefore(node.superClass);\n\t\t}\n\n\t\t/**\n\t\t * Reports `if` and `else` keywords of a given node if usage of spacing\n\t\t * around those keywords is invalid.\n\t\t * @param {ASTNode} node A node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingForIfStatement(node) {\n\t\t\tcheckSpacingAroundFirstToken(node);\n\t\t\tcheckSpacingAroundTokenBefore(node.alternate);\n\t\t}\n\n\t\t/**\n\t\t * Reports `try`, `catch`, and `finally` keywords of a given node if usage\n\t\t * of spacing around those keywords is invalid.\n\t\t * @param {ASTNode} node A node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingForTryStatement(node) {\n\t\t\tcheckSpacingAroundFirstToken(node);\n\t\t\tcheckSpacingAroundFirstToken(node.handler);\n\t\t\tcheckSpacingAroundTokenBefore(node.finalizer);\n\t\t}\n\n\t\t/**\n\t\t * Reports `do` and `while` keywords of a given node if usage of spacing\n\t\t * around those keywords is invalid.\n\t\t * @param {ASTNode} node A node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingForDoWhileStatement(node) {\n\t\t\tcheckSpacingAroundFirstToken(node);\n\t\t\tcheckSpacingAroundTokenBefore(node.test);\n\t\t}\n\n\t\t/**\n\t\t * Reports `for` and `in` keywords of a given node if usage of spacing\n\t\t * around those keywords is invalid.\n\t\t * @param {ASTNode} node A node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingForForInStatement(node) {\n\t\t\tcheckSpacingAroundFirstToken(node);\n\n\t\t\tconst inToken = sourceCode.getTokenBefore(\n\t\t\t\tnode.right,\n\t\t\t\tastUtils.isNotOpeningParenToken,\n\t\t\t);\n\t\t\tconst previousToken = sourceCode.getTokenBefore(inToken);\n\n\t\t\tif (previousToken.type !== \"PrivateIdentifier\") {\n\t\t\t\tcheckSpacingBefore(inToken);\n\t\t\t}\n\n\t\t\tcheckSpacingAfter(inToken);\n\t\t}\n\n\t\t/**\n\t\t * Reports `for` and `of` keywords of a given node if usage of spacing\n\t\t * around those keywords is invalid.\n\t\t * @param {ASTNode} node A node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingForForOfStatement(node) {\n\t\t\tif (node.await) {\n\t\t\t\tcheckSpacingBefore(sourceCode.getFirstToken(node, 0));\n\t\t\t\tcheckSpacingAfter(sourceCode.getFirstToken(node, 1));\n\t\t\t} else {\n\t\t\t\tcheckSpacingAroundFirstToken(node);\n\t\t\t}\n\n\t\t\tconst ofToken = sourceCode.getTokenBefore(\n\t\t\t\tnode.right,\n\t\t\t\tastUtils.isNotOpeningParenToken,\n\t\t\t);\n\t\t\tconst previousToken = sourceCode.getTokenBefore(ofToken);\n\n\t\t\tif (previousToken.type !== \"PrivateIdentifier\") {\n\t\t\t\tcheckSpacingBefore(ofToken);\n\t\t\t}\n\n\t\t\tcheckSpacingAfter(ofToken);\n\t\t}\n\n\t\t/**\n\t\t * Reports `import`, `export`, `as`, and `from` keywords of a given node if\n\t\t * usage of spacing around those keywords is invalid.\n\t\t *\n\t\t * This rule handles the `*` token in module declarations.\n\t\t *\n\t\t *     import*as A from \"./a\"; /*error Expected space(s) after \"import\".\n\t\t *                               error Expected space(s) before \"as\".\n\t\t * @param {ASTNode} node A node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingForModuleDeclaration(node) {\n\t\t\tconst firstToken = sourceCode.getFirstToken(node);\n\n\t\t\tcheckSpacingBefore(firstToken, PREV_TOKEN_M);\n\t\t\tcheckSpacingAfter(firstToken, NEXT_TOKEN_M);\n\n\t\t\tif (node.type === \"ExportDefaultDeclaration\") {\n\t\t\t\tcheckSpacingAround(sourceCode.getTokenAfter(firstToken));\n\t\t\t}\n\n\t\t\tif (node.type === \"ExportAllDeclaration\" && node.exported) {\n\t\t\t\tconst asToken = sourceCode.getTokenBefore(node.exported);\n\n\t\t\t\tcheckSpacingBefore(asToken, PREV_TOKEN_M);\n\t\t\t\tcheckSpacingAfter(asToken, NEXT_TOKEN_M);\n\t\t\t}\n\n\t\t\tif (node.source) {\n\t\t\t\tconst fromToken = sourceCode.getTokenBefore(node.source);\n\n\t\t\t\tcheckSpacingBefore(fromToken, PREV_TOKEN_M);\n\t\t\t\tcheckSpacingAfter(fromToken, NEXT_TOKEN_M);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports `as` keyword of a given node if usage of spacing around this\n\t\t * keyword is invalid.\n\t\t * @param {ASTNode} node An `ImportSpecifier` node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingForImportSpecifier(node) {\n\t\t\tif (node.imported.range[0] !== node.local.range[0]) {\n\t\t\t\tconst asToken = sourceCode.getTokenBefore(node.local);\n\n\t\t\t\tcheckSpacingBefore(asToken, PREV_TOKEN_M);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports `as` keyword of a given node if usage of spacing around this\n\t\t * keyword is invalid.\n\t\t * @param {ASTNode} node An `ExportSpecifier` node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingForExportSpecifier(node) {\n\t\t\tif (node.local.range[0] !== node.exported.range[0]) {\n\t\t\t\tconst asToken = sourceCode.getTokenBefore(node.exported);\n\n\t\t\t\tcheckSpacingBefore(asToken, PREV_TOKEN_M);\n\t\t\t\tcheckSpacingAfter(asToken, NEXT_TOKEN_M);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports `as` keyword of a given node if usage of spacing around this\n\t\t * keyword is invalid.\n\t\t * @param {ASTNode} node A node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingForImportNamespaceSpecifier(node) {\n\t\t\tconst asToken = sourceCode.getFirstToken(node, 1);\n\n\t\t\tcheckSpacingBefore(asToken, PREV_TOKEN_M);\n\t\t}\n\n\t\t/**\n\t\t * Reports `static`, `get`, and `set` keywords of a given node if usage of\n\t\t * spacing around those keywords is invalid.\n\t\t * @param {ASTNode} node A node to report.\n\t\t * @throws {Error} If unable to find token get, set, or async beside method name.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingForProperty(node) {\n\t\t\tif (node.static) {\n\t\t\t\tcheckSpacingAroundFirstToken(node);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tnode.kind === \"get\" ||\n\t\t\t\tnode.kind === \"set\" ||\n\t\t\t\t((node.method || node.type === \"MethodDefinition\") &&\n\t\t\t\t\tnode.value.async)\n\t\t\t) {\n\t\t\t\tconst token = sourceCode.getTokenBefore(node.key, tok => {\n\t\t\t\t\tswitch (tok.value) {\n\t\t\t\t\t\tcase \"get\":\n\t\t\t\t\t\tcase \"set\":\n\t\t\t\t\t\tcase \"async\":\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (!token) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"Failed to find token get, set, or async beside method name\",\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tcheckSpacingAround(token);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports `await` keyword of a given node if usage of spacing before\n\t\t * this keyword is invalid.\n\t\t * @param {ASTNode} node A node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingForAwaitExpression(node) {\n\t\t\tcheckSpacingBefore(sourceCode.getFirstToken(node));\n\t\t}\n\n\t\treturn {\n\t\t\t// Statements\n\t\t\tDebuggerStatement: checkSpacingAroundFirstToken,\n\t\t\tWithStatement: checkSpacingAroundFirstToken,\n\n\t\t\t// Statements - Control flow\n\t\t\tBreakStatement: checkSpacingAroundFirstToken,\n\t\t\tContinueStatement: checkSpacingAroundFirstToken,\n\t\t\tReturnStatement: checkSpacingAroundFirstToken,\n\t\t\tThrowStatement: checkSpacingAroundFirstToken,\n\t\t\tTryStatement: checkSpacingForTryStatement,\n\n\t\t\t// Statements - Choice\n\t\t\tIfStatement: checkSpacingForIfStatement,\n\t\t\tSwitchStatement: checkSpacingAroundFirstToken,\n\t\t\tSwitchCase: checkSpacingAroundFirstToken,\n\n\t\t\t// Statements - Loops\n\t\t\tDoWhileStatement: checkSpacingForDoWhileStatement,\n\t\t\tForInStatement: checkSpacingForForInStatement,\n\t\t\tForOfStatement: checkSpacingForForOfStatement,\n\t\t\tForStatement: checkSpacingAroundFirstToken,\n\t\t\tWhileStatement: checkSpacingAroundFirstToken,\n\n\t\t\t// Statements - Declarations\n\t\t\tClassDeclaration: checkSpacingForClass,\n\t\t\tExportNamedDeclaration: checkSpacingForModuleDeclaration,\n\t\t\tExportDefaultDeclaration: checkSpacingForModuleDeclaration,\n\t\t\tExportAllDeclaration: checkSpacingForModuleDeclaration,\n\t\t\tFunctionDeclaration: checkSpacingForFunction,\n\t\t\tImportDeclaration: checkSpacingForModuleDeclaration,\n\t\t\tVariableDeclaration: checkSpacingAroundFirstToken,\n\n\t\t\t// Expressions\n\t\t\tArrowFunctionExpression: checkSpacingForFunction,\n\t\t\tAwaitExpression: checkSpacingForAwaitExpression,\n\t\t\tClassExpression: checkSpacingForClass,\n\t\t\tFunctionExpression: checkSpacingForFunction,\n\t\t\tNewExpression: checkSpacingBeforeFirstToken,\n\t\t\tSuper: checkSpacingBeforeFirstToken,\n\t\t\tThisExpression: checkSpacingBeforeFirstToken,\n\t\t\tUnaryExpression: checkSpacingBeforeFirstToken,\n\t\t\tYieldExpression: checkSpacingBeforeFirstToken,\n\n\t\t\t// Others\n\t\t\tImportSpecifier: checkSpacingForImportSpecifier,\n\t\t\tExportSpecifier: checkSpacingForExportSpecifier,\n\t\t\tImportNamespaceSpecifier: checkSpacingForImportNamespaceSpecifier,\n\t\t\tMethodDefinition: checkSpacingForProperty,\n\t\t\tPropertyDefinition: checkSpacingForProperty,\n\t\t\tStaticBlock: checkSpacingAroundFirstToken,\n\t\t\tProperty: checkSpacingForProperty,\n\n\t\t\t// To avoid conflicts with `space-infix-ops`, e.g. `a > this.b`\n\t\t\t\"BinaryExpression[operator='>']\"(node) {\n\t\t\t\tconst operatorToken = sourceCode.getTokenBefore(\n\t\t\t\t\tnode.right,\n\t\t\t\t\tastUtils.isNotOpeningParenToken,\n\t\t\t\t);\n\n\t\t\t\ttokensToIgnore.add(operatorToken);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce the position of line comments\n * @author Alberto Rodr\u00EDguez\n * @deprecated in ESLint v9.3.0\n */\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"9.3.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"line-comment-position\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/line-comment-position\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce position of line comments\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/line-comment-position\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: [\"above\", \"beside\"],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\t\tenum: [\"above\", \"beside\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tignorePattern: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tapplyDefaultPatterns: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tapplyDefaultIgnorePatterns: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\tabove: \"Expected comment to be above code.\",\n\t\t\tbeside: \"Expected comment to be beside code.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst options = context.options[0];\n\n\t\tlet above,\n\t\t\tignorePattern,\n\t\t\tapplyDefaultIgnorePatterns = true;\n\n\t\tif (!options || typeof options === \"string\") {\n\t\t\tabove = !options || options === \"above\";\n\t\t} else {\n\t\t\tabove = !options.position || options.position === \"above\";\n\t\t\tignorePattern = options.ignorePattern;\n\n\t\t\tif (Object.hasOwn(options, \"applyDefaultIgnorePatterns\")) {\n\t\t\t\tapplyDefaultIgnorePatterns = options.applyDefaultIgnorePatterns;\n\t\t\t} else {\n\t\t\t\tapplyDefaultIgnorePatterns =\n\t\t\t\t\toptions.applyDefaultPatterns !== false;\n\t\t\t}\n\t\t}\n\n\t\tconst defaultIgnoreRegExp = astUtils.COMMENTS_IGNORE_PATTERN;\n\t\tconst fallThroughRegExp = /^\\s*falls?\\s?through/u;\n\t\tconst customIgnoreRegExp = new RegExp(ignorePattern, \"u\");\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram() {\n\t\t\t\tconst comments = sourceCode.getAllComments();\n\n\t\t\t\tcomments\n\t\t\t\t\t.filter(token => token.type === \"Line\")\n\t\t\t\t\t.forEach(node => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tapplyDefaultIgnorePatterns &&\n\t\t\t\t\t\t\t(defaultIgnoreRegExp.test(node.value) ||\n\t\t\t\t\t\t\t\tfallThroughRegExp.test(node.value))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tignorePattern &&\n\t\t\t\t\t\t\tcustomIgnoreRegExp.test(node.value)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst previous = sourceCode.getTokenBefore(node, {\n\t\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst isOnSameLine =\n\t\t\t\t\t\t\tprevious &&\n\t\t\t\t\t\t\tprevious.loc.end.line === node.loc.start.line;\n\n\t\t\t\t\t\tif (above) {\n\t\t\t\t\t\t\tif (isOnSameLine) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tmessageId: \"above\",\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (!isOnSameLine) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tmessageId: \"beside\",\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce a single linebreak style.\n * @author Erik Mueller\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n/**\n * @import { SourceRange } from \"@eslint/core\";\n */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"linebreak-style\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/linebreak-style\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce consistent linebreak style\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/linebreak-style\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"unix\", \"windows\"],\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\texpectedLF: \"Expected linebreaks to be 'LF' but found 'CRLF'.\",\n\t\t\texpectedCRLF: \"Expected linebreaks to be 'CRLF' but found 'LF'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Builds a fix function that replaces text at the specified range in the source text.\n\t\t * @param {SourceRange} range The range to replace\n\t\t * @param {string} text The text to insert.\n\t\t * @returns {Function} Fixer function\n\t\t * @private\n\t\t */\n\t\tfunction createFix(range, text) {\n\t\t\treturn function (fixer) {\n\t\t\t\treturn fixer.replaceTextRange(range, text);\n\t\t\t};\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram: function checkForLinebreakStyle(node) {\n\t\t\t\tconst linebreakStyle = context.options[0] || \"unix\",\n\t\t\t\t\texpectedLF = linebreakStyle === \"unix\",\n\t\t\t\t\texpectedLFChars = expectedLF ? \"\\n\" : \"\\r\\n\",\n\t\t\t\t\tsource = sourceCode.getText(),\n\t\t\t\t\tpattern = astUtils.createGlobalLinebreakMatcher();\n\t\t\t\tlet match;\n\n\t\t\t\tlet i = 0;\n\n\t\t\t\twhile ((match = pattern.exec(source)) !== null) {\n\t\t\t\t\ti++;\n\t\t\t\t\tif (match[0] === expectedLFChars) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst index = match.index;\n\t\t\t\t\tconst range = [index, index + match[0].length];\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\t\tline: i,\n\t\t\t\t\t\t\t\tcolumn: sourceCode.lines[i - 1].length,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\t\tline: i + 1,\n\t\t\t\t\t\t\t\tcolumn: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmessageId: expectedLF ? \"expectedLF\" : \"expectedCRLF\",\n\t\t\t\t\t\tfix: createFix(range, expectedLFChars),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Enforces empty lines around comments.\n * @author Jamund Ferguson\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Return an array with any line numbers that are empty.\n * @param {Array} lines An array of each line of the file.\n * @returns {Array} An array of line numbers.\n */\nfunction getEmptyLineNums(lines) {\n\tconst emptyLines = lines\n\t\t.map((line, i) => ({\n\t\t\tcode: line.trim(),\n\t\t\tnum: i + 1,\n\t\t}))\n\t\t.filter(line => !line.code)\n\t\t.map(line => line.num);\n\n\treturn emptyLines;\n}\n\n/**\n * Return an array with any line numbers that contain comments.\n * @param {Array} comments An array of comment tokens.\n * @returns {Array} An array of line numbers.\n */\nfunction getCommentLineNums(comments) {\n\tconst lines = [];\n\n\tcomments.forEach(token => {\n\t\tconst start = token.loc.start.line;\n\t\tconst end = token.loc.end.line;\n\n\t\tlines.push(start, end);\n\t});\n\treturn lines;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"lines-around-comment\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/lines-around-comment\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require empty lines around comments\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/lines-around-comment\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tbeforeBlockComment: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t},\n\t\t\t\t\tafterBlockComment: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t\tbeforeLineComment: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t\tafterLineComment: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t\tallowBlockStart: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t\tallowBlockEnd: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t\tallowClassStart: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowClassEnd: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowObjectStart: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowObjectEnd: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowArrayStart: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowArrayEnd: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tignorePattern: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t},\n\t\t\t\t\tapplyDefaultIgnorePatterns: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tafterHashbangComment: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\tafter: \"Expected line after comment.\",\n\t\t\tbefore: \"Expected line before comment.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst options = Object.assign({}, context.options[0]);\n\t\tconst ignorePattern = options.ignorePattern;\n\t\tconst defaultIgnoreRegExp = astUtils.COMMENTS_IGNORE_PATTERN;\n\t\tconst customIgnoreRegExp = new RegExp(ignorePattern, \"u\");\n\t\tconst applyDefaultIgnorePatterns =\n\t\t\toptions.applyDefaultIgnorePatterns !== false;\n\n\t\toptions.beforeBlockComment =\n\t\t\ttypeof options.beforeBlockComment !== \"undefined\"\n\t\t\t\t? options.beforeBlockComment\n\t\t\t\t: true;\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tconst lines = sourceCode.lines,\n\t\t\tnumLines = lines.length + 1,\n\t\t\tcomments = sourceCode.getAllComments(),\n\t\t\tcommentLines = getCommentLineNums(comments),\n\t\t\temptyLines = getEmptyLineNums(lines),\n\t\t\tcommentAndEmptyLines = new Set(commentLines.concat(emptyLines));\n\n\t\t/**\n\t\t * Returns whether or not comments are on lines starting with or ending with code\n\t\t * @param {token} token The comment token to check.\n\t\t * @returns {boolean} True if the comment is not alone.\n\t\t */\n\t\tfunction codeAroundComment(token) {\n\t\t\tlet currentToken = token;\n\n\t\t\tdo {\n\t\t\t\tcurrentToken = sourceCode.getTokenBefore(currentToken, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t});\n\t\t\t} while (currentToken && astUtils.isCommentToken(currentToken));\n\n\t\t\tif (\n\t\t\t\tcurrentToken &&\n\t\t\t\tastUtils.isTokenOnSameLine(currentToken, token)\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcurrentToken = token;\n\t\t\tdo {\n\t\t\t\tcurrentToken = sourceCode.getTokenAfter(currentToken, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t});\n\t\t\t} while (currentToken && astUtils.isCommentToken(currentToken));\n\n\t\t\tif (\n\t\t\t\tcurrentToken &&\n\t\t\t\tastUtils.isTokenOnSameLine(token, currentToken)\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Returns whether or not comments are inside a node type or not.\n\t\t * @param {ASTNode} parent The Comment parent node.\n\t\t * @param {string} nodeType The parent type to check against.\n\t\t * @returns {boolean} True if the comment is inside nodeType.\n\t\t */\n\t\tfunction isParentNodeType(parent, nodeType) {\n\t\t\treturn (\n\t\t\t\tparent.type === nodeType ||\n\t\t\t\t(parent.body && parent.body.type === nodeType) ||\n\t\t\t\t(parent.consequent && parent.consequent.type === nodeType)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Returns the parent node that contains the given token.\n\t\t * @param {token} token The token to check.\n\t\t * @returns {ASTNode|null} The parent node that contains the given token.\n\t\t */\n\t\tfunction getParentNodeOfToken(token) {\n\t\t\tconst node = sourceCode.getNodeByRangeIndex(token.range[0]);\n\n\t\t\t/*\n\t\t\t * For the purpose of this rule, the comment token is in a `StaticBlock` node only\n\t\t\t * if it's inside the braces of that `StaticBlock` node.\n\t\t\t *\n\t\t\t * Example where this function returns `null`:\n\t\t\t *\n\t\t\t *   static\n\t\t\t *   // comment\n\t\t\t *   {\n\t\t\t *   }\n\t\t\t *\n\t\t\t * Example where this function returns `StaticBlock` node:\n\t\t\t *\n\t\t\t *   static\n\t\t\t *   {\n\t\t\t *   // comment\n\t\t\t *   }\n\t\t\t *\n\t\t\t */\n\t\t\tif (node && node.type === \"StaticBlock\") {\n\t\t\t\tconst openingBrace = sourceCode.getFirstToken(node, {\n\t\t\t\t\tskip: 1,\n\t\t\t\t}); // skip the `static` token\n\n\t\t\t\treturn token.range[0] >= openingBrace.range[0] ? node : null;\n\t\t\t}\n\n\t\t\treturn node;\n\t\t}\n\n\t\t/**\n\t\t * Returns whether or not comments are at the parent start or not.\n\t\t * @param {token} token The Comment token.\n\t\t * @param {string} nodeType The parent type to check against.\n\t\t * @returns {boolean} True if the comment is at parent start.\n\t\t */\n\t\tfunction isCommentAtParentStart(token, nodeType) {\n\t\t\tconst parent = getParentNodeOfToken(token);\n\n\t\t\tif (parent && isParentNodeType(parent, nodeType)) {\n\t\t\t\tlet parentStartNodeOrToken = parent;\n\n\t\t\t\tif (parent.type === \"StaticBlock\") {\n\t\t\t\t\tparentStartNodeOrToken = sourceCode.getFirstToken(parent, {\n\t\t\t\t\t\tskip: 1,\n\t\t\t\t\t}); // opening brace of the static block\n\t\t\t\t} else if (parent.type === \"SwitchStatement\") {\n\t\t\t\t\tparentStartNodeOrToken = sourceCode.getTokenAfter(\n\t\t\t\t\t\tparent.discriminant,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfilter: astUtils.isOpeningBraceToken,\n\t\t\t\t\t\t},\n\t\t\t\t\t); // opening brace of the switch statement\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\ttoken.loc.start.line -\n\t\t\t\t\t\tparentStartNodeOrToken.loc.start.line ===\n\t\t\t\t\t1\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Returns whether or not comments are at the parent end or not.\n\t\t * @param {token} token The Comment token.\n\t\t * @param {string} nodeType The parent type to check against.\n\t\t * @returns {boolean} True if the comment is at parent end.\n\t\t */\n\t\tfunction isCommentAtParentEnd(token, nodeType) {\n\t\t\tconst parent = getParentNodeOfToken(token);\n\n\t\t\treturn (\n\t\t\t\t!!parent &&\n\t\t\t\tisParentNodeType(parent, nodeType) &&\n\t\t\t\tparent.loc.end.line - token.loc.end.line === 1\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Returns whether or not comments are at the block start or not.\n\t\t * @param {token} token The Comment token.\n\t\t * @returns {boolean} True if the comment is at block start.\n\t\t */\n\t\tfunction isCommentAtBlockStart(token) {\n\t\t\treturn (\n\t\t\t\tisCommentAtParentStart(token, \"ClassBody\") ||\n\t\t\t\tisCommentAtParentStart(token, \"BlockStatement\") ||\n\t\t\t\tisCommentAtParentStart(token, \"StaticBlock\") ||\n\t\t\t\tisCommentAtParentStart(token, \"SwitchCase\") ||\n\t\t\t\tisCommentAtParentStart(token, \"SwitchStatement\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Returns whether or not comments are at the block end or not.\n\t\t * @param {token} token The Comment token.\n\t\t * @returns {boolean} True if the comment is at block end.\n\t\t */\n\t\tfunction isCommentAtBlockEnd(token) {\n\t\t\treturn (\n\t\t\t\tisCommentAtParentEnd(token, \"ClassBody\") ||\n\t\t\t\tisCommentAtParentEnd(token, \"BlockStatement\") ||\n\t\t\t\tisCommentAtParentEnd(token, \"StaticBlock\") ||\n\t\t\t\tisCommentAtParentEnd(token, \"SwitchCase\") ||\n\t\t\t\tisCommentAtParentEnd(token, \"SwitchStatement\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Returns whether or not comments are at the class start or not.\n\t\t * @param {token} token The Comment token.\n\t\t * @returns {boolean} True if the comment is at class start.\n\t\t */\n\t\tfunction isCommentAtClassStart(token) {\n\t\t\treturn isCommentAtParentStart(token, \"ClassBody\");\n\t\t}\n\n\t\t/**\n\t\t * Returns whether or not comments are at the class end or not.\n\t\t * @param {token} token The Comment token.\n\t\t * @returns {boolean} True if the comment is at class end.\n\t\t */\n\t\tfunction isCommentAtClassEnd(token) {\n\t\t\treturn isCommentAtParentEnd(token, \"ClassBody\");\n\t\t}\n\n\t\t/**\n\t\t * Returns whether or not comments are at the object start or not.\n\t\t * @param {token} token The Comment token.\n\t\t * @returns {boolean} True if the comment is at object start.\n\t\t */\n\t\tfunction isCommentAtObjectStart(token) {\n\t\t\treturn (\n\t\t\t\tisCommentAtParentStart(token, \"ObjectExpression\") ||\n\t\t\t\tisCommentAtParentStart(token, \"ObjectPattern\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Returns whether or not comments are at the object end or not.\n\t\t * @param {token} token The Comment token.\n\t\t * @returns {boolean} True if the comment is at object end.\n\t\t */\n\t\tfunction isCommentAtObjectEnd(token) {\n\t\t\treturn (\n\t\t\t\tisCommentAtParentEnd(token, \"ObjectExpression\") ||\n\t\t\t\tisCommentAtParentEnd(token, \"ObjectPattern\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Returns whether or not comments are at the array start or not.\n\t\t * @param {token} token The Comment token.\n\t\t * @returns {boolean} True if the comment is at array start.\n\t\t */\n\t\tfunction isCommentAtArrayStart(token) {\n\t\t\treturn (\n\t\t\t\tisCommentAtParentStart(token, \"ArrayExpression\") ||\n\t\t\t\tisCommentAtParentStart(token, \"ArrayPattern\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Returns whether or not comments are at the array end or not.\n\t\t * @param {token} token The Comment token.\n\t\t * @returns {boolean} True if the comment is at array end.\n\t\t */\n\t\tfunction isCommentAtArrayEnd(token) {\n\t\t\treturn (\n\t\t\t\tisCommentAtParentEnd(token, \"ArrayExpression\") ||\n\t\t\t\tisCommentAtParentEnd(token, \"ArrayPattern\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if a comment token has lines around it (ignores inline comments)\n\t\t * @param {token} token The Comment token.\n\t\t * @param {Object} opts Options to determine the newline.\n\t\t * @param {boolean} opts.after Should have a newline after this line.\n\t\t * @param {boolean} opts.before Should have a newline before this line.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForEmptyLine(token, opts) {\n\t\t\tif (\n\t\t\t\tapplyDefaultIgnorePatterns &&\n\t\t\t\tdefaultIgnoreRegExp.test(token.value)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (ignorePattern && customIgnoreRegExp.test(token.value)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet after = opts.after,\n\t\t\t\tbefore = opts.before;\n\n\t\t\tconst prevLineNum = token.loc.start.line - 1,\n\t\t\t\tnextLineNum = token.loc.end.line + 1,\n\t\t\t\tcommentIsNotAlone = codeAroundComment(token);\n\n\t\t\tconst blockStartAllowed =\n\t\t\t\t\toptions.allowBlockStart &&\n\t\t\t\t\tisCommentAtBlockStart(token) &&\n\t\t\t\t\t!(\n\t\t\t\t\t\toptions.allowClassStart === false &&\n\t\t\t\t\t\tisCommentAtClassStart(token)\n\t\t\t\t\t),\n\t\t\t\tblockEndAllowed =\n\t\t\t\t\toptions.allowBlockEnd &&\n\t\t\t\t\tisCommentAtBlockEnd(token) &&\n\t\t\t\t\t!(\n\t\t\t\t\t\toptions.allowClassEnd === false &&\n\t\t\t\t\t\tisCommentAtClassEnd(token)\n\t\t\t\t\t),\n\t\t\t\tclassStartAllowed =\n\t\t\t\t\toptions.allowClassStart && isCommentAtClassStart(token),\n\t\t\t\tclassEndAllowed =\n\t\t\t\t\toptions.allowClassEnd && isCommentAtClassEnd(token),\n\t\t\t\tobjectStartAllowed =\n\t\t\t\t\toptions.allowObjectStart && isCommentAtObjectStart(token),\n\t\t\t\tobjectEndAllowed =\n\t\t\t\t\toptions.allowObjectEnd && isCommentAtObjectEnd(token),\n\t\t\t\tarrayStartAllowed =\n\t\t\t\t\toptions.allowArrayStart && isCommentAtArrayStart(token),\n\t\t\t\tarrayEndAllowed =\n\t\t\t\t\toptions.allowArrayEnd && isCommentAtArrayEnd(token);\n\n\t\t\tconst exceptionStartAllowed =\n\t\t\t\tblockStartAllowed ||\n\t\t\t\tclassStartAllowed ||\n\t\t\t\tobjectStartAllowed ||\n\t\t\t\tarrayStartAllowed;\n\t\t\tconst exceptionEndAllowed =\n\t\t\t\tblockEndAllowed ||\n\t\t\t\tclassEndAllowed ||\n\t\t\t\tobjectEndAllowed ||\n\t\t\t\tarrayEndAllowed;\n\n\t\t\t// ignore top of the file and bottom of the file\n\t\t\tif (prevLineNum < 1) {\n\t\t\t\tbefore = false;\n\t\t\t}\n\t\t\tif (nextLineNum >= numLines) {\n\t\t\t\tafter = false;\n\t\t\t}\n\n\t\t\t// we ignore all inline comments\n\t\t\tif (commentIsNotAlone) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst previousTokenOrComment = sourceCode.getTokenBefore(token, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\t\t\tconst nextTokenOrComment = sourceCode.getTokenAfter(token, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\n\t\t\t// check for newline before\n\t\t\tif (\n\t\t\t\t!exceptionStartAllowed &&\n\t\t\t\tbefore &&\n\t\t\t\t!commentAndEmptyLines.has(prevLineNum) &&\n\t\t\t\t!(\n\t\t\t\t\tastUtils.isCommentToken(previousTokenOrComment) &&\n\t\t\t\t\tastUtils.isTokenOnSameLine(previousTokenOrComment, token)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tconst lineStart = token.range[0] - token.loc.start.column;\n\t\t\t\tconst range = [lineStart, lineStart];\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: token,\n\t\t\t\t\tmessageId: \"before\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\treturn fixer.insertTextBeforeRange(range, \"\\n\");\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// check for newline after\n\t\t\tif (\n\t\t\t\t!exceptionEndAllowed &&\n\t\t\t\tafter &&\n\t\t\t\t!commentAndEmptyLines.has(nextLineNum) &&\n\t\t\t\t!(\n\t\t\t\t\tastUtils.isCommentToken(nextTokenOrComment) &&\n\t\t\t\t\tastUtils.isTokenOnSameLine(token, nextTokenOrComment)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: token,\n\t\t\t\t\tmessageId: \"after\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\treturn fixer.insertTextAfter(token, \"\\n\");\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram() {\n\t\t\t\tcomments.forEach(token => {\n\t\t\t\t\tif (token.type === \"Line\") {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\toptions.beforeLineComment ||\n\t\t\t\t\t\t\toptions.afterLineComment\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcheckForEmptyLine(token, {\n\t\t\t\t\t\t\t\tafter: options.afterLineComment,\n\t\t\t\t\t\t\t\tbefore: options.beforeLineComment,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (token.type === \"Block\") {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\toptions.beforeBlockComment ||\n\t\t\t\t\t\t\toptions.afterBlockComment\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcheckForEmptyLine(token, {\n\t\t\t\t\t\t\t\tafter: options.afterBlockComment,\n\t\t\t\t\t\t\t\tbefore: options.beforeBlockComment,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (token.type === \"Shebang\") {\n\t\t\t\t\t\tif (options.afterHashbangComment) {\n\t\t\t\t\t\t\tcheckForEmptyLine(token, {\n\t\t\t\t\t\t\t\tafter: options.afterHashbangComment,\n\t\t\t\t\t\t\t\tbefore: false,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Require or disallow newlines around directives.\n * @author Kai Cataldo\n * @deprecated in ESLint v4.0.0\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require or disallow newlines around directives\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/lines-around-directive\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbefore: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tafter: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\tminProperties: 2,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tfixable: \"whitespace\",\n\t\tmessages: {\n\t\t\texpected: 'Expected newline {{location}} \"{{value}}\" directive.',\n\t\t\tunexpected:\n\t\t\t\t'Unexpected newline {{location}} \"{{value}}\" directive.',\n\t\t},\n\t\tdeprecated: {\n\t\t\tmessage: \"The rule was replaced with a more general rule.\",\n\t\t\turl: \"https://eslint.org/blog/2017/06/eslint-v4.0.0-released/\",\n\t\t\tdeprecatedSince: \"4.0.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage: \"The new rule moved to a plugin.\",\n\t\t\t\t\turl: \"https://eslint.org/docs/latest/rules/padding-line-between-statements#examples\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"padding-line-between-statements\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/padding-line-between-statements\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst config = context.options[0] || \"always\";\n\t\tconst expectLineBefore =\n\t\t\ttypeof config === \"string\" ? config : config.before;\n\t\tconst expectLineAfter =\n\t\t\ttypeof config === \"string\" ? config : config.after;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Check if node is preceded by a blank newline.\n\t\t * @param {ASTNode} node Node to check.\n\t\t * @returns {boolean} Whether or not the passed in node is preceded by a blank newline.\n\t\t */\n\t\tfunction hasNewlineBefore(node) {\n\t\t\tconst tokenBefore = sourceCode.getTokenBefore(node, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\t\t\tconst tokenLineBefore = tokenBefore ? tokenBefore.loc.end.line : 0;\n\n\t\t\treturn node.loc.start.line - tokenLineBefore >= 2;\n\t\t}\n\n\t\t/**\n\t\t * Gets the last token of a node that is on the same line as the rest of the node.\n\t\t * This will usually be the last token of the node, but it will be the second-to-last token if the node has a trailing\n\t\t * semicolon on a different line.\n\t\t * @param {ASTNode} node A directive node\n\t\t * @returns {Token} The last token of the node on the line\n\t\t */\n\t\tfunction getLastTokenOnLine(node) {\n\t\t\tconst lastToken = sourceCode.getLastToken(node);\n\t\t\tconst secondToLastToken = sourceCode.getTokenBefore(lastToken);\n\n\t\t\treturn astUtils.isSemicolonToken(lastToken) &&\n\t\t\t\tlastToken.loc.start.line > secondToLastToken.loc.end.line\n\t\t\t\t? secondToLastToken\n\t\t\t\t: lastToken;\n\t\t}\n\n\t\t/**\n\t\t * Check if node is followed by a blank newline.\n\t\t * @param {ASTNode} node Node to check.\n\t\t * @returns {boolean} Whether or not the passed in node is followed by a blank newline.\n\t\t */\n\t\tfunction hasNewlineAfter(node) {\n\t\t\tconst lastToken = getLastTokenOnLine(node);\n\t\t\tconst tokenAfter = sourceCode.getTokenAfter(lastToken, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\n\t\t\treturn tokenAfter.loc.start.line - lastToken.loc.end.line >= 2;\n\t\t}\n\n\t\t/**\n\t\t * Report errors for newlines around directives.\n\t\t * @param {ASTNode} node Node to check.\n\t\t * @param {string} location Whether the error was found before or after the directive.\n\t\t * @param {boolean} expected Whether or not a newline was expected or unexpected.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportError(node, location, expected) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: expected ? \"expected\" : \"unexpected\",\n\t\t\t\tdata: {\n\t\t\t\t\tvalue: node.expression.value,\n\t\t\t\t\tlocation,\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\tconst lastToken = getLastTokenOnLine(node);\n\n\t\t\t\t\tif (expected) {\n\t\t\t\t\t\treturn location === \"before\"\n\t\t\t\t\t\t\t? fixer.insertTextBefore(node, \"\\n\")\n\t\t\t\t\t\t\t: fixer.insertTextAfter(lastToken, \"\\n\");\n\t\t\t\t\t}\n\t\t\t\t\treturn fixer.removeRange(\n\t\t\t\t\t\tlocation === \"before\"\n\t\t\t\t\t\t\t? [node.range[0] - 1, node.range[0]]\n\t\t\t\t\t\t\t: [lastToken.range[1], lastToken.range[1] + 1],\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Check lines around directives in node\n\t\t * @param {ASTNode} node node to check\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkDirectives(node) {\n\t\t\tconst directives = astUtils.getDirectivePrologue(node);\n\n\t\t\tif (!directives.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst firstDirective = directives[0];\n\t\t\tconst leadingComments =\n\t\t\t\tsourceCode.getCommentsBefore(firstDirective);\n\n\t\t\t/*\n\t\t\t * Only check before the first directive if it is preceded by a comment or if it is at the top of\n\t\t\t * the file and expectLineBefore is set to \"never\". This is to not force a newline at the top of\n\t\t\t * the file if there are no comments as well as for compatibility with padded-blocks.\n\t\t\t */\n\t\t\tif (leadingComments.length) {\n\t\t\t\tif (\n\t\t\t\t\texpectLineBefore === \"always\" &&\n\t\t\t\t\t!hasNewlineBefore(firstDirective)\n\t\t\t\t) {\n\t\t\t\t\treportError(firstDirective, \"before\", true);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\texpectLineBefore === \"never\" &&\n\t\t\t\t\thasNewlineBefore(firstDirective)\n\t\t\t\t) {\n\t\t\t\t\treportError(firstDirective, \"before\", false);\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tnode.type === \"Program\" &&\n\t\t\t\texpectLineBefore === \"never\" &&\n\t\t\t\t!leadingComments.length &&\n\t\t\t\thasNewlineBefore(firstDirective)\n\t\t\t) {\n\t\t\t\treportError(firstDirective, \"before\", false);\n\t\t\t}\n\n\t\t\tconst lastDirective = directives.at(-1);\n\t\t\tconst statements =\n\t\t\t\tnode.type === \"Program\" ? node.body : node.body.body;\n\n\t\t\t/*\n\t\t\t * Do not check after the last directive if the body only\n\t\t\t * contains a directive prologue and isn't followed by a comment to ensure\n\t\t\t * this rule behaves well with padded-blocks.\n\t\t\t */\n\t\t\tif (\n\t\t\t\tlastDirective === statements.at(-1) &&\n\t\t\t\t!lastDirective.trailingComments\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\texpectLineAfter === \"always\" &&\n\t\t\t\t!hasNewlineAfter(lastDirective)\n\t\t\t) {\n\t\t\t\treportError(lastDirective, \"after\", true);\n\t\t\t}\n\n\t\t\tif (expectLineAfter === \"never\" && hasNewlineAfter(lastDirective)) {\n\t\t\t\treportError(lastDirective, \"after\", false);\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram: checkDirectives,\n\t\t\tFunctionDeclaration: checkDirectives,\n\t\t\tFunctionExpression: checkDirectives,\n\t\t\tArrowFunctionExpression: checkDirectives,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to check empty newline between class members\n * @author \u859B\u5B9A\u8C14\u7684\u732B<hh_2013@foxmail.com>\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Types of class members.\n * Those have `test` method to check it matches to the given class member.\n * @private\n */\nconst ClassMemberTypes = {\n\t\"*\": { test: () => true },\n\tfield: { test: node => node.type === \"PropertyDefinition\" },\n\tmethod: { test: node => node.type === \"MethodDefinition\" },\n};\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"lines-between-class-members\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/lines-between-class-members\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require or disallow an empty line between class members\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/lines-between-class-members\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tenforce: {\n\t\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\t\tblankLine: {\n\t\t\t\t\t\t\t\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tprev: {\n\t\t\t\t\t\t\t\t\t\t\tenum: [\"method\", \"field\", \"*\"],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tnext: {\n\t\t\t\t\t\t\t\t\t\t\tenum: [\"method\", \"field\", \"*\"],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t\t\t\trequired: [\"blankLine\", \"prev\", \"next\"],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tminItems: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\trequired: [\"enforce\"],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\texceptAfterSingleLine: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\tnever: \"Unexpected blank line between class members.\",\n\t\t\talways: \"Expected blank line between class members.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst options = [];\n\n\t\toptions[0] = context.options[0] || \"always\";\n\t\toptions[1] = context.options[1] || { exceptAfterSingleLine: false };\n\n\t\tconst configureList =\n\t\t\ttypeof options[0] === \"object\"\n\t\t\t\t? options[0].enforce\n\t\t\t\t: [{ blankLine: options[0], prev: \"*\", next: \"*\" }];\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Gets a pair of tokens that should be used to check lines between two class member nodes.\n\t\t *\n\t\t * In most cases, this returns the very last token of the current node and\n\t\t * the very first token of the next node.\n\t\t * For example:\n\t\t *\n\t\t *     class C {\n\t\t *         x = 1;   // curLast: `;` nextFirst: `in`\n\t\t *         in = 2\n\t\t *     }\n\t\t *\n\t\t * There is only one exception. If the given node ends with a semicolon, and it looks like\n\t\t * a semicolon-less style's semicolon - one that is not on the same line as the preceding\n\t\t * token, but is on the line where the next class member starts - this returns the preceding\n\t\t * token and the semicolon as boundary tokens.\n\t\t * For example:\n\t\t *\n\t\t *     class C {\n\t\t *         x = 1    // curLast: `1` nextFirst: `;`\n\t\t *         ;in = 2\n\t\t *     }\n\t\t * When determining the desired layout of the code, we should treat this semicolon as\n\t\t * a part of the next class member node instead of the one it technically belongs to.\n\t\t * @param {ASTNode} curNode Current class member node.\n\t\t * @param {ASTNode} nextNode Next class member node.\n\t\t * @returns {Token} The actual last token of `node`.\n\t\t * @private\n\t\t */\n\t\tfunction getBoundaryTokens(curNode, nextNode) {\n\t\t\tconst lastToken = sourceCode.getLastToken(curNode);\n\t\t\tconst prevToken = sourceCode.getTokenBefore(lastToken);\n\t\t\tconst nextToken = sourceCode.getFirstToken(nextNode); // skip possible lone `;` between nodes\n\n\t\t\tconst isSemicolonLessStyle =\n\t\t\t\tastUtils.isSemicolonToken(lastToken) &&\n\t\t\t\t!astUtils.isTokenOnSameLine(prevToken, lastToken) &&\n\t\t\t\tastUtils.isTokenOnSameLine(lastToken, nextToken);\n\n\t\t\treturn isSemicolonLessStyle\n\t\t\t\t? { curLast: prevToken, nextFirst: lastToken }\n\t\t\t\t: { curLast: lastToken, nextFirst: nextToken };\n\t\t}\n\n\t\t/**\n\t\t * Return the last token among the consecutive tokens that have no exceed max line difference in between, before the first token in the next member.\n\t\t * @param {Token} prevLastToken The last token in the previous member node.\n\t\t * @param {Token} nextFirstToken The first token in the next member node.\n\t\t * @param {number} maxLine The maximum number of allowed line difference between consecutive tokens.\n\t\t * @returns {Token} The last token among the consecutive tokens.\n\t\t */\n\t\tfunction findLastConsecutiveTokenAfter(\n\t\t\tprevLastToken,\n\t\t\tnextFirstToken,\n\t\t\tmaxLine,\n\t\t) {\n\t\t\tconst after = sourceCode.getTokenAfter(prevLastToken, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\n\t\t\tif (\n\t\t\t\tafter !== nextFirstToken &&\n\t\t\t\tafter.loc.start.line - prevLastToken.loc.end.line <= maxLine\n\t\t\t) {\n\t\t\t\treturn findLastConsecutiveTokenAfter(\n\t\t\t\t\tafter,\n\t\t\t\t\tnextFirstToken,\n\t\t\t\t\tmaxLine,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn prevLastToken;\n\t\t}\n\n\t\t/**\n\t\t * Return the first token among the consecutive tokens that have no exceed max line difference in between, after the last token in the previous member.\n\t\t * @param {Token} nextFirstToken The first token in the next member node.\n\t\t * @param {Token} prevLastToken The last token in the previous member node.\n\t\t * @param {number} maxLine The maximum number of allowed line difference between consecutive tokens.\n\t\t * @returns {Token} The first token among the consecutive tokens.\n\t\t */\n\t\tfunction findFirstConsecutiveTokenBefore(\n\t\t\tnextFirstToken,\n\t\t\tprevLastToken,\n\t\t\tmaxLine,\n\t\t) {\n\t\t\tconst before = sourceCode.getTokenBefore(nextFirstToken, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\n\t\t\tif (\n\t\t\t\tbefore !== prevLastToken &&\n\t\t\t\tnextFirstToken.loc.start.line - before.loc.end.line <= maxLine\n\t\t\t) {\n\t\t\t\treturn findFirstConsecutiveTokenBefore(\n\t\t\t\t\tbefore,\n\t\t\t\t\tprevLastToken,\n\t\t\t\t\tmaxLine,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn nextFirstToken;\n\t\t}\n\n\t\t/**\n\t\t * Checks if there is a token or comment between two tokens.\n\t\t * @param {Token} before The token before.\n\t\t * @param {Token} after The token after.\n\t\t * @returns {boolean} True if there is a token or comment between two tokens.\n\t\t */\n\t\tfunction hasTokenOrCommentBetween(before, after) {\n\t\t\treturn (\n\t\t\t\tsourceCode.getTokensBetween(before, after, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t}).length !== 0\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether the given node matches the given type.\n\t\t * @param {ASTNode} node The class member node to check.\n\t\t * @param {string} type The class member type to check.\n\t\t * @returns {boolean} `true` if the class member node matched the type.\n\t\t * @private\n\t\t */\n\t\tfunction match(node, type) {\n\t\t\treturn ClassMemberTypes[type].test(node);\n\t\t}\n\n\t\t/**\n\t\t * Finds the last matched configuration from the configureList.\n\t\t * @param {ASTNode} prevNode The previous node to match.\n\t\t * @param {ASTNode} nextNode The current node to match.\n\t\t * @returns {string|null} Padding type or `null` if no matches were found.\n\t\t * @private\n\t\t */\n\t\tfunction getPaddingType(prevNode, nextNode) {\n\t\t\tfor (let i = configureList.length - 1; i >= 0; --i) {\n\t\t\t\tconst configure = configureList[i];\n\t\t\t\tconst matched =\n\t\t\t\t\tmatch(prevNode, configure.prev) &&\n\t\t\t\t\tmatch(nextNode, configure.next);\n\n\t\t\t\tif (matched) {\n\t\t\t\t\treturn configure.blankLine;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\tClassBody(node) {\n\t\t\t\tconst body = node.body;\n\n\t\t\t\tfor (let i = 0; i < body.length - 1; i++) {\n\t\t\t\t\tconst curFirst = sourceCode.getFirstToken(body[i]);\n\t\t\t\t\tconst { curLast, nextFirst } = getBoundaryTokens(\n\t\t\t\t\t\tbody[i],\n\t\t\t\t\t\tbody[i + 1],\n\t\t\t\t\t);\n\t\t\t\t\tconst isMulti = !astUtils.isTokenOnSameLine(\n\t\t\t\t\t\tcurFirst,\n\t\t\t\t\t\tcurLast,\n\t\t\t\t\t);\n\t\t\t\t\tconst skip = !isMulti && options[1].exceptAfterSingleLine;\n\t\t\t\t\tconst beforePadding = findLastConsecutiveTokenAfter(\n\t\t\t\t\t\tcurLast,\n\t\t\t\t\t\tnextFirst,\n\t\t\t\t\t\t1,\n\t\t\t\t\t);\n\t\t\t\t\tconst afterPadding = findFirstConsecutiveTokenBefore(\n\t\t\t\t\t\tnextFirst,\n\t\t\t\t\t\tcurLast,\n\t\t\t\t\t\t1,\n\t\t\t\t\t);\n\t\t\t\t\tconst isPadded =\n\t\t\t\t\t\tafterPadding.loc.start.line -\n\t\t\t\t\t\t\tbeforePadding.loc.end.line >\n\t\t\t\t\t\t1;\n\t\t\t\t\tconst hasTokenInPadding = hasTokenOrCommentBetween(\n\t\t\t\t\t\tbeforePadding,\n\t\t\t\t\t\tafterPadding,\n\t\t\t\t\t);\n\t\t\t\t\tconst curLineLastToken = findLastConsecutiveTokenAfter(\n\t\t\t\t\t\tcurLast,\n\t\t\t\t\t\tnextFirst,\n\t\t\t\t\t\t0,\n\t\t\t\t\t);\n\t\t\t\t\tconst paddingType = getPaddingType(body[i], body[i + 1]);\n\n\t\t\t\t\tif (paddingType === \"never\" && isPadded) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: body[i + 1],\n\t\t\t\t\t\t\tmessageId: \"never\",\n\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\tif (hasTokenInPadding) {\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tbeforePadding.range[1],\n\t\t\t\t\t\t\t\t\t\tafterPadding.range[0],\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"\\n\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (paddingType === \"always\" && !skip && !isPadded) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: body[i + 1],\n\t\t\t\t\t\t\tmessageId: \"always\",\n\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\tif (hasTokenInPadding) {\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn fixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\tcurLineLastToken,\n\t\t\t\t\t\t\t\t\t\"\\n\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to replace assignment expressions with logical operator assignment\n * @author Daniel Martens\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\nconst astUtils = require(\"./utils/ast-utils.js\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst baseTypes = new Set([\"Identifier\", \"Super\", \"ThisExpression\"]);\n\n/**\n * Returns true iff either \"undefined\" or a void expression (eg. \"void 0\")\n * @param {ASTNode} expression Expression to check\n * @param {import('eslint-scope').Scope} scope Scope of the expression\n * @returns {boolean} True iff \"undefined\" or \"void ...\"\n */\nfunction isUndefined(expression, scope) {\n\tif (expression.type === \"Identifier\" && expression.name === \"undefined\") {\n\t\treturn astUtils.isReferenceToGlobalVariable(scope, expression);\n\t}\n\n\treturn (\n\t\texpression.type === \"UnaryExpression\" &&\n\t\texpression.operator === \"void\" &&\n\t\texpression.argument.type === \"Literal\" &&\n\t\texpression.argument.value === 0\n\t);\n}\n\n/**\n * Returns true iff the reference is either an identifier or member expression\n * @param {ASTNode} expression Expression to check\n * @returns {boolean} True for identifiers and member expressions\n */\nfunction isReference(expression) {\n\treturn (\n\t\t(expression.type === \"Identifier\" && expression.name !== \"undefined\") ||\n\t\texpression.type === \"MemberExpression\"\n\t);\n}\n\n/**\n * Returns true iff the expression checks for nullish with loose equals.\n * Examples: value == null, value == void 0\n * @param {ASTNode} expression Test condition\n * @param {import('eslint-scope').Scope} scope Scope of the expression\n * @returns {boolean} True iff implicit nullish comparison\n */\nfunction isImplicitNullishComparison(expression, scope) {\n\tif (\n\t\texpression.type !== \"BinaryExpression\" ||\n\t\texpression.operator !== \"==\"\n\t) {\n\t\treturn false;\n\t}\n\n\tconst reference = isReference(expression.left) ? \"left\" : \"right\";\n\tconst nullish = reference === \"left\" ? \"right\" : \"left\";\n\n\treturn (\n\t\tisReference(expression[reference]) &&\n\t\t(astUtils.isNullLiteral(expression[nullish]) ||\n\t\t\tisUndefined(expression[nullish], scope))\n\t);\n}\n\n/**\n * Condition with two equal comparisons.\n * @param {ASTNode} expression Condition\n * @returns {boolean} True iff matches ? === ? || ? === ?\n */\nfunction isDoubleComparison(expression) {\n\treturn (\n\t\texpression.type === \"LogicalExpression\" &&\n\t\texpression.operator === \"||\" &&\n\t\texpression.left.type === \"BinaryExpression\" &&\n\t\texpression.left.operator === \"===\" &&\n\t\texpression.right.type === \"BinaryExpression\" &&\n\t\texpression.right.operator === \"===\"\n\t);\n}\n\n/**\n * Returns true iff the expression checks for undefined and null.\n * Example: value === null || value === undefined\n * @param {ASTNode} expression Test condition\n * @param {import('eslint-scope').Scope} scope Scope of the expression\n * @returns {boolean} True iff explicit nullish comparison\n */\nfunction isExplicitNullishComparison(expression, scope) {\n\tif (!isDoubleComparison(expression)) {\n\t\treturn false;\n\t}\n\tconst leftReference = isReference(expression.left.left) ? \"left\" : \"right\";\n\tconst leftNullish = leftReference === \"left\" ? \"right\" : \"left\";\n\tconst rightReference = isReference(expression.right.left)\n\t\t? \"left\"\n\t\t: \"right\";\n\tconst rightNullish = rightReference === \"left\" ? \"right\" : \"left\";\n\n\treturn (\n\t\tastUtils.isSameReference(\n\t\t\texpression.left[leftReference],\n\t\t\texpression.right[rightReference],\n\t\t) &&\n\t\t((astUtils.isNullLiteral(expression.left[leftNullish]) &&\n\t\t\tisUndefined(expression.right[rightNullish], scope)) ||\n\t\t\t(isUndefined(expression.left[leftNullish], scope) &&\n\t\t\t\tastUtils.isNullLiteral(expression.right[rightNullish])))\n\t);\n}\n\n/**\n * Returns true for Boolean(arg) calls\n * @param {ASTNode} expression Test condition\n * @param {import('eslint-scope').Scope} scope Scope of the expression\n * @returns {boolean} Whether the expression is a boolean cast\n */\nfunction isBooleanCast(expression, scope) {\n\treturn (\n\t\texpression.type === \"CallExpression\" &&\n\t\texpression.callee.name === \"Boolean\" &&\n\t\texpression.arguments.length === 1 &&\n\t\tastUtils.isReferenceToGlobalVariable(scope, expression.callee)\n\t);\n}\n\n/**\n * Returns true for:\n * truthiness checks:  value, Boolean(value), !!value\n * falsiness checks:   !value, !Boolean(value)\n * nullish checks:     value == null, value === undefined || value === null\n * @param {ASTNode} expression Test condition\n * @param {import('eslint-scope').Scope} scope Scope of the expression\n * @returns {?{ reference: ASTNode, operator: '??'|'||'|'&&'}} Null if not a known existence\n */\nfunction getExistence(expression, scope) {\n\tconst isNegated =\n\t\texpression.type === \"UnaryExpression\" && expression.operator === \"!\";\n\tconst base = isNegated ? expression.argument : expression;\n\n\tswitch (true) {\n\t\tcase isReference(base):\n\t\t\treturn { reference: base, operator: isNegated ? \"||\" : \"&&\" };\n\t\tcase base.type === \"UnaryExpression\" &&\n\t\t\tbase.operator === \"!\" &&\n\t\t\tisReference(base.argument):\n\t\t\treturn { reference: base.argument, operator: \"&&\" };\n\t\tcase isBooleanCast(base, scope) && isReference(base.arguments[0]):\n\t\t\treturn {\n\t\t\t\treference: base.arguments[0],\n\t\t\t\toperator: isNegated ? \"||\" : \"&&\",\n\t\t\t};\n\t\tcase isImplicitNullishComparison(expression, scope):\n\t\t\treturn {\n\t\t\t\treference: isReference(expression.left)\n\t\t\t\t\t? expression.left\n\t\t\t\t\t: expression.right,\n\t\t\t\toperator: \"??\",\n\t\t\t};\n\t\tcase isExplicitNullishComparison(expression, scope):\n\t\t\treturn {\n\t\t\t\treference: isReference(expression.left.left)\n\t\t\t\t\t? expression.left.left\n\t\t\t\t\t: expression.left.right,\n\t\t\t\toperator: \"??\",\n\t\t\t};\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\n/**\n * Returns true iff the node is inside a with block\n * @param {ASTNode} node Node to check\n * @returns {boolean} True iff passed node is inside a with block\n */\nfunction isInsideWithBlock(node) {\n\tif (node.type === \"Program\") {\n\t\treturn false;\n\t}\n\n\treturn node.parent.type === \"WithStatement\" && node.parent.body === node\n\t\t? true\n\t\t: isInsideWithBlock(node.parent);\n}\n\n/**\n * Gets the leftmost operand of a consecutive logical expression.\n * @param {SourceCode} sourceCode The ESLint source code object\n * @param {LogicalExpression} node LogicalExpression\n * @returns {Expression} Leftmost operand\n */\nfunction getLeftmostOperand(sourceCode, node) {\n\tlet left = node.left;\n\n\twhile (\n\t\tleft.type === \"LogicalExpression\" &&\n\t\tleft.operator === node.operator\n\t) {\n\t\tif (astUtils.isParenthesised(sourceCode, left)) {\n\t\t\t/*\n\t\t\t * It should have associativity,\n\t\t\t * but ignore it if use parentheses to make the evaluation order clear.\n\t\t\t */\n\t\t\treturn left;\n\t\t}\n\t\tleft = left.left;\n\t}\n\treturn left;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require or disallow logical assignment operator shorthand\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/logical-assignment-operators\",\n\t\t},\n\n\t\tschema: {\n\t\t\ttype: \"array\",\n\t\t\toneOf: [\n\t\t\t\t{\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{ const: \"always\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tenforceForIfStatements: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0, // 0 for allowing passing no options\n\t\t\t\t\tmaxItems: 2,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\titems: [{ const: \"never\" }],\n\t\t\t\t\tminItems: 1,\n\t\t\t\t\tmaxItems: 1,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tdefaultOptions: [\"always\"],\n\n\t\tfixable: \"code\",\n\t\thasSuggestions: true,\n\t\tmessages: {\n\t\t\tassignment:\n\t\t\t\t\"Assignment (=) can be replaced with operator assignment ({{operator}}).\",\n\t\t\tuseLogicalOperator:\n\t\t\t\t\"Convert this assignment to use the operator {{ operator }}.\",\n\t\t\tlogical:\n\t\t\t\t\"Logical expression can be replaced with an assignment ({{ operator }}).\",\n\t\t\tconvertLogical:\n\t\t\t\t\"Replace this logical expression with an assignment with the operator {{ operator }}.\",\n\t\t\tif: \"'if' statement can be replaced with a logical operator assignment with operator {{ operator }}.\",\n\t\t\tconvertIf:\n\t\t\t\t\"Replace this 'if' statement with a logical assignment with operator {{ operator }}.\",\n\t\t\tunexpected:\n\t\t\t\t\"Unexpected logical operator assignment ({{operator}}) shorthand.\",\n\t\t\tseparate:\n\t\t\t\t\"Separate the logical assignment into an assignment with a logical operator.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst mode = context.options[0];\n\t\tconst checkIf =\n\t\t\tmode === \"always\" &&\n\t\t\tcontext.options.length > 1 &&\n\t\t\tcontext.options[1].enforceForIfStatements;\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst isStrict = sourceCode.getScope(sourceCode.ast).isStrict;\n\n\t\t/**\n\t\t * Returns false if the access could be a getter\n\t\t * @param {ASTNode} node Assignment expression\n\t\t * @returns {boolean} True iff the fix is safe\n\t\t */\n\t\tfunction cannotBeGetter(node) {\n\t\t\treturn (\n\t\t\t\tnode.type === \"Identifier\" &&\n\t\t\t\t(isStrict || !isInsideWithBlock(node))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check whether only a single property is accessed\n\t\t * @param {ASTNode} node reference\n\t\t * @returns {boolean} True iff a single property is accessed\n\t\t */\n\t\tfunction accessesSingleProperty(node) {\n\t\t\tif (!isStrict && isInsideWithBlock(node)) {\n\t\t\t\treturn node.type === \"Identifier\";\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\tnode.type === \"MemberExpression\" &&\n\t\t\t\tbaseTypes.has(node.object.type) &&\n\t\t\t\t(!node.computed ||\n\t\t\t\t\t(node.property.type !== \"MemberExpression\" &&\n\t\t\t\t\t\tnode.property.type !== \"ChainExpression\"))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Adds a fixer or suggestion whether on the fix is safe.\n\t\t * @param {{ messageId: string, node: ASTNode }} descriptor Report descriptor without fix or suggest\n\t\t * @param {{ messageId: string, fix: Function }} suggestion Adds the fix or the whole suggestion as only element in \"suggest\" to suggestion\n\t\t * @param {boolean} shouldBeFixed Fix iff the condition is true\n\t\t * @returns {Object} Descriptor with either an added fix or suggestion\n\t\t */\n\t\tfunction createConditionalFixer(descriptor, suggestion, shouldBeFixed) {\n\t\t\tif (shouldBeFixed) {\n\t\t\t\treturn {\n\t\t\t\t\t...descriptor,\n\t\t\t\t\tfix: suggestion.fix,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...descriptor,\n\t\t\t\tsuggest: [suggestion],\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Returns the operator token for assignments and binary expressions\n\t\t * @param {ASTNode} node AssignmentExpression or BinaryExpression\n\t\t * @returns {import('eslint').AST.Token} Operator token between the left and right expression\n\t\t */\n\t\tfunction getOperatorToken(node) {\n\t\t\treturn sourceCode.getFirstTokenBetween(\n\t\t\t\tnode.left,\n\t\t\t\tnode.right,\n\t\t\t\ttoken => token.value === node.operator,\n\t\t\t);\n\t\t}\n\n\t\tif (mode === \"never\") {\n\t\t\treturn {\n\t\t\t\t// foo ||= bar\n\t\t\t\tAssignmentExpression(assignment) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!astUtils.isLogicalAssignmentOperator(\n\t\t\t\t\t\t\tassignment.operator,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst descriptor = {\n\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\tnode: assignment,\n\t\t\t\t\t\tdata: { operator: assignment.operator },\n\t\t\t\t\t};\n\t\t\t\t\tconst suggestion = {\n\t\t\t\t\t\tmessageId: \"separate\",\n\t\t\t\t\t\t*fix(ruleFixer) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tsourceCode.getCommentsInside(assignment)\n\t\t\t\t\t\t\t\t\t.length > 0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst operatorToken = getOperatorToken(assignment);\n\n\t\t\t\t\t\t\t// -> foo = bar\n\t\t\t\t\t\t\tyield ruleFixer.replaceText(operatorToken, \"=\");\n\n\t\t\t\t\t\t\tconst assignmentText = sourceCode.getText(\n\t\t\t\t\t\t\t\tassignment.left,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst operator = assignment.operator.slice(0, -1);\n\n\t\t\t\t\t\t\t// -> foo = foo || bar\n\t\t\t\t\t\t\tyield ruleFixer.insertTextAfter(\n\t\t\t\t\t\t\t\toperatorToken,\n\t\t\t\t\t\t\t\t` ${assignmentText} ${operator}`,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tconst precedence =\n\t\t\t\t\t\t\t\tastUtils.getPrecedence(assignment.right) <=\n\t\t\t\t\t\t\t\tastUtils.getPrecedence({\n\t\t\t\t\t\t\t\t\ttype: \"LogicalExpression\",\n\t\t\t\t\t\t\t\t\toperator,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t// ?? and || / && cannot be mixed but have same precedence\n\t\t\t\t\t\t\tconst mixed =\n\t\t\t\t\t\t\t\tassignment.operator === \"??=\" &&\n\t\t\t\t\t\t\t\tastUtils.isLogicalExpression(assignment.right);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t!astUtils.isParenthesised(\n\t\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\t\tassignment.right,\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\t(precedence || mixed)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// -> foo = foo || (bar)\n\t\t\t\t\t\t\t\tyield ruleFixer.insertTextBefore(\n\t\t\t\t\t\t\t\t\tassignment.right,\n\t\t\t\t\t\t\t\t\t\"(\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tyield ruleFixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\tassignment.right,\n\t\t\t\t\t\t\t\t\t\")\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tcontext.report(\n\t\t\t\t\t\tcreateConditionalFixer(\n\t\t\t\t\t\t\tdescriptor,\n\t\t\t\t\t\t\tsuggestion,\n\t\t\t\t\t\t\tcannotBeGetter(assignment.left),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\t// foo = foo || bar\n\t\t\t\"AssignmentExpression[operator='='][right.type='LogicalExpression']\"(\n\t\t\t\tassignment,\n\t\t\t) {\n\t\t\t\tconst leftOperand = getLeftmostOperand(\n\t\t\t\t\tsourceCode,\n\t\t\t\t\tassignment.right,\n\t\t\t\t);\n\n\t\t\t\tif (!astUtils.isSameReference(assignment.left, leftOperand)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst descriptor = {\n\t\t\t\t\tmessageId: \"assignment\",\n\t\t\t\t\tnode: assignment,\n\t\t\t\t\tdata: { operator: `${assignment.right.operator}=` },\n\t\t\t\t};\n\t\t\t\tconst suggestion = {\n\t\t\t\t\tmessageId: \"useLogicalOperator\",\n\t\t\t\t\tdata: { operator: `${assignment.right.operator}=` },\n\t\t\t\t\t*fix(ruleFixer) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tsourceCode.getCommentsInside(assignment).length > 0\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// No need for parenthesis around the assignment based on precedence as the precedence stays the same even with changed operator\n\t\t\t\t\t\tconst assignmentOperatorToken =\n\t\t\t\t\t\t\tgetOperatorToken(assignment);\n\n\t\t\t\t\t\t// -> foo ||= foo || bar\n\t\t\t\t\t\tyield ruleFixer.insertTextBefore(\n\t\t\t\t\t\t\tassignmentOperatorToken,\n\t\t\t\t\t\t\tassignment.right.operator,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// -> foo ||= bar\n\t\t\t\t\t\tconst logicalOperatorToken = getOperatorToken(\n\t\t\t\t\t\t\tleftOperand.parent,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst firstRightOperandToken =\n\t\t\t\t\t\t\tsourceCode.getTokenAfter(logicalOperatorToken);\n\n\t\t\t\t\t\tyield ruleFixer.removeRange([\n\t\t\t\t\t\t\tleftOperand.parent.range[0],\n\t\t\t\t\t\t\tfirstRightOperandToken.range[0],\n\t\t\t\t\t\t]);\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tcontext.report(\n\t\t\t\t\tcreateConditionalFixer(\n\t\t\t\t\t\tdescriptor,\n\t\t\t\t\t\tsuggestion,\n\t\t\t\t\t\tcannotBeGetter(assignment.left),\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t},\n\n\t\t\t// foo || (foo = bar)\n\t\t\t'LogicalExpression[right.type=\"AssignmentExpression\"][right.operator=\"=\"]'(\n\t\t\t\tlogical,\n\t\t\t) {\n\t\t\t\t// Right side has to be parenthesized, otherwise would be parsed as (foo || foo) = bar which is illegal\n\t\t\t\tif (\n\t\t\t\t\tisReference(logical.left) &&\n\t\t\t\t\tastUtils.isSameReference(logical.left, logical.right.left)\n\t\t\t\t) {\n\t\t\t\t\tconst descriptor = {\n\t\t\t\t\t\tmessageId: \"logical\",\n\t\t\t\t\t\tnode: logical,\n\t\t\t\t\t\tdata: { operator: `${logical.operator}=` },\n\t\t\t\t\t};\n\t\t\t\t\tconst suggestion = {\n\t\t\t\t\t\tmessageId: \"convertLogical\",\n\t\t\t\t\t\tdata: { operator: `${logical.operator}=` },\n\t\t\t\t\t\t*fix(ruleFixer) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tsourceCode.getCommentsInside(logical).length > 0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst parentPrecedence = astUtils.getPrecedence(\n\t\t\t\t\t\t\t\tlogical.parent,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst requiresOuterParenthesis =\n\t\t\t\t\t\t\t\tlogical.parent.type !== \"ExpressionStatement\" &&\n\t\t\t\t\t\t\t\t(parentPrecedence === -1 ||\n\t\t\t\t\t\t\t\t\tastUtils.getPrecedence({\n\t\t\t\t\t\t\t\t\t\ttype: \"AssignmentExpression\",\n\t\t\t\t\t\t\t\t\t}) < parentPrecedence);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t!astUtils.isParenthesised(\n\t\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\t\tlogical,\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\trequiresOuterParenthesis\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tyield ruleFixer.insertTextBefore(logical, \"(\");\n\t\t\t\t\t\t\t\tyield ruleFixer.insertTextAfter(logical, \")\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Also removes all opening parenthesis\n\t\t\t\t\t\t\tyield ruleFixer.removeRange([\n\t\t\t\t\t\t\t\tlogical.range[0],\n\t\t\t\t\t\t\t\tlogical.right.range[0],\n\t\t\t\t\t\t\t]); // -> foo = bar)\n\n\t\t\t\t\t\t\t// Also removes all ending parenthesis\n\t\t\t\t\t\t\tyield ruleFixer.removeRange([\n\t\t\t\t\t\t\t\tlogical.right.range[1],\n\t\t\t\t\t\t\t\tlogical.range[1],\n\t\t\t\t\t\t\t]); // -> foo = bar\n\n\t\t\t\t\t\t\tconst operatorToken = getOperatorToken(\n\t\t\t\t\t\t\t\tlogical.right,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tyield ruleFixer.insertTextBefore(\n\t\t\t\t\t\t\t\toperatorToken,\n\t\t\t\t\t\t\t\tlogical.operator,\n\t\t\t\t\t\t\t); // -> foo ||= bar\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tconst fix =\n\t\t\t\t\t\tcannotBeGetter(logical.left) ||\n\t\t\t\t\t\taccessesSingleProperty(logical.left);\n\n\t\t\t\t\tcontext.report(\n\t\t\t\t\t\tcreateConditionalFixer(descriptor, suggestion, fix),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// if (foo) foo = bar\n\t\t\t\"IfStatement[alternate=null]\"(ifNode) {\n\t\t\t\tif (!checkIf) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst hasBody = ifNode.consequent.type === \"BlockStatement\";\n\n\t\t\t\tif (hasBody && ifNode.consequent.body.length !== 1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst body = hasBody\n\t\t\t\t\t? ifNode.consequent.body[0]\n\t\t\t\t\t: ifNode.consequent;\n\t\t\t\tconst scope = sourceCode.getScope(ifNode);\n\t\t\t\tconst existence = getExistence(ifNode.test, scope);\n\n\t\t\t\tif (\n\t\t\t\t\tbody.type === \"ExpressionStatement\" &&\n\t\t\t\t\tbody.expression.type === \"AssignmentExpression\" &&\n\t\t\t\t\tbody.expression.operator === \"=\" &&\n\t\t\t\t\texistence !== null &&\n\t\t\t\t\tastUtils.isSameReference(\n\t\t\t\t\t\texistence.reference,\n\t\t\t\t\t\tbody.expression.left,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tconst descriptor = {\n\t\t\t\t\t\tmessageId: \"if\",\n\t\t\t\t\t\tnode: ifNode,\n\t\t\t\t\t\tdata: { operator: `${existence.operator}=` },\n\t\t\t\t\t};\n\t\t\t\t\tconst suggestion = {\n\t\t\t\t\t\tmessageId: \"convertIf\",\n\t\t\t\t\t\tdata: { operator: `${existence.operator}=` },\n\t\t\t\t\t\t*fix(ruleFixer) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tsourceCode.getCommentsInside(ifNode).length > 0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst firstBodyToken =\n\t\t\t\t\t\t\t\tsourceCode.getFirstToken(body);\n\t\t\t\t\t\t\tconst prevToken = sourceCode.getTokenBefore(ifNode);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tprevToken !== null &&\n\t\t\t\t\t\t\t\tprevToken.value !== \";\" &&\n\t\t\t\t\t\t\t\tprevToken.value !== \"{\" &&\n\t\t\t\t\t\t\t\tfirstBodyToken.type !== \"Identifier\" &&\n\t\t\t\t\t\t\t\tfirstBodyToken.type !== \"Keyword\"\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// Do not fix if the fixed statement could be part of the previous statement (eg. fn() if (a == null) (a) = b --> fn()(a) ??= b)\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst operatorToken = getOperatorToken(\n\t\t\t\t\t\t\t\tbody.expression,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tyield ruleFixer.insertTextBefore(\n\t\t\t\t\t\t\t\toperatorToken,\n\t\t\t\t\t\t\t\texistence.operator,\n\t\t\t\t\t\t\t); // -> if (foo) foo ||= bar\n\n\t\t\t\t\t\t\tyield ruleFixer.removeRange([\n\t\t\t\t\t\t\t\tifNode.range[0],\n\t\t\t\t\t\t\t\tbody.range[0],\n\t\t\t\t\t\t\t]); // -> foo ||= bar\n\n\t\t\t\t\t\t\tyield ruleFixer.removeRange([\n\t\t\t\t\t\t\t\tbody.range[1],\n\t\t\t\t\t\t\t\tifNode.range[1],\n\t\t\t\t\t\t\t]); // -> foo ||= bar, only present if \"if\" had a body\n\n\t\t\t\t\t\t\tconst nextToken = sourceCode.getTokenAfter(\n\t\t\t\t\t\t\t\tbody.expression,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\thasBody &&\n\t\t\t\t\t\t\t\tnextToken !== null &&\n\t\t\t\t\t\t\t\tnextToken.value !== \";\"\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tyield ruleFixer.insertTextAfter(ifNode, \";\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tconst shouldBeFixed =\n\t\t\t\t\t\tcannotBeGetter(existence.reference) ||\n\t\t\t\t\t\t(ifNode.test.type !== \"LogicalExpression\" &&\n\t\t\t\t\t\t\taccessesSingleProperty(existence.reference));\n\n\t\t\t\t\tcontext.report(\n\t\t\t\t\t\tcreateConditionalFixer(\n\t\t\t\t\t\t\tdescriptor,\n\t\t\t\t\t\t\tsuggestion,\n\t\t\t\t\t\t\tshouldBeFixed,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Enforce a maximum number of classes per file\n * @author James Garbutt <https://github.com/43081j>\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce a maximum number of classes per file\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/max-classes-per-file\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 1,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tignoreExpressions: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmax: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [1],\n\n\t\tmessages: {\n\t\t\tmaximumExceeded:\n\t\t\t\t\"File has too many classes ({{ classCount }}). Maximum allowed is {{ max }}.\",\n\t\t},\n\t},\n\tcreate(context) {\n\t\tconst option = context.options[0];\n\t\tconst [ignoreExpressions, max] =\n\t\t\ttypeof option === \"number\"\n\t\t\t\t? [false, option]\n\t\t\t\t: [option.ignoreExpressions, option.max || 1];\n\n\t\tlet classCount = 0;\n\n\t\treturn {\n\t\t\tProgram() {\n\t\t\t\tclassCount = 0;\n\t\t\t},\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\tif (classCount > max) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"maximumExceeded\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tclassCount,\n\t\t\t\t\t\t\tmax,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tClassDeclaration() {\n\t\t\t\tclassCount++;\n\t\t\t},\n\t\t\tClassExpression() {\n\t\t\t\tif (!ignoreExpressions) {\n\t\t\t\t\tclassCount++;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to set the maximum depth block can be nested in a function.\n * @author Ian Christian Myers\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce a maximum depth that blocks can be nested\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/max-depth\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tmaximum: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmax: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [4],\n\n\t\tmessages: {\n\t\t\ttooDeeply:\n\t\t\t\t\"Blocks are nested too deeply ({{depth}}). Maximum allowed is {{maxDepth}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\tconst functionStack = [],\n\t\t\toption = context.options[0];\n\t\tlet maxDepth = 4;\n\n\t\tif (\n\t\t\ttypeof option === \"object\" &&\n\t\t\t(Object.hasOwn(option, \"maximum\") || Object.hasOwn(option, \"max\"))\n\t\t) {\n\t\t\tmaxDepth = option.maximum || option.max;\n\t\t}\n\t\tif (typeof option === \"number\") {\n\t\t\tmaxDepth = option;\n\t\t}\n\n\t\t/**\n\t\t * When parsing a new function, store it in our function stack\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction startFunction() {\n\t\t\tfunctionStack.push(0);\n\t\t}\n\n\t\t/**\n\t\t * When parsing is done then pop out the reference\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction endFunction() {\n\t\t\tfunctionStack.pop();\n\t\t}\n\n\t\t/**\n\t\t * Save the block and Evaluate the node\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction pushBlock(node) {\n\t\t\tconst len = ++functionStack[functionStack.length - 1];\n\n\t\t\tif (len > maxDepth) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: sourceCode.getFirstToken(node).loc,\n\t\t\t\t\tmessageId: \"tooDeeply\",\n\t\t\t\t\tdata: { depth: len, maxDepth },\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Pop the saved block\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction popBlock() {\n\t\t\tfunctionStack[functionStack.length - 1]--;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a node is an else-if statement.\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {boolean} Whether the node is an else-if statement\n\t\t */\n\t\tfunction isElseIf(node) {\n\t\t\treturn (\n\t\t\t\tnode.parent.type === \"IfStatement\" &&\n\t\t\t\tnode.parent.alternate === node\n\t\t\t);\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram: startFunction,\n\t\t\tFunctionDeclaration: startFunction,\n\t\t\tFunctionExpression: startFunction,\n\t\t\tArrowFunctionExpression: startFunction,\n\t\t\tStaticBlock: startFunction,\n\n\t\t\tIfStatement(node) {\n\t\t\t\tif (!isElseIf(node)) {\n\t\t\t\t\tpushBlock(node);\n\t\t\t\t}\n\t\t\t},\n\t\t\tSwitchStatement: pushBlock,\n\t\t\tTryStatement: pushBlock,\n\t\t\tDoWhileStatement: pushBlock,\n\t\t\tWhileStatement: pushBlock,\n\t\t\tWithStatement: pushBlock,\n\t\t\tForStatement: pushBlock,\n\t\t\tForInStatement: pushBlock,\n\t\t\tForOfStatement: pushBlock,\n\n\t\t\t\"IfStatement:exit\"(node) {\n\t\t\t\tif (!isElseIf(node)) {\n\t\t\t\t\tpopBlock();\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"SwitchStatement:exit\": popBlock,\n\t\t\t\"TryStatement:exit\": popBlock,\n\t\t\t\"DoWhileStatement:exit\": popBlock,\n\t\t\t\"WhileStatement:exit\": popBlock,\n\t\t\t\"WithStatement:exit\": popBlock,\n\t\t\t\"ForStatement:exit\": popBlock,\n\t\t\t\"ForInStatement:exit\": popBlock,\n\t\t\t\"ForOfStatement:exit\": popBlock,\n\n\t\t\t\"FunctionDeclaration:exit\": endFunction,\n\t\t\t\"FunctionExpression:exit\": endFunction,\n\t\t\t\"ArrowFunctionExpression:exit\": endFunction,\n\t\t\t\"StaticBlock:exit\": endFunction,\n\t\t\t\"Program:exit\": endFunction,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to check for max length on a line.\n * @author Matt DuVall <http://www.mattduvall.com>\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Constants\n//------------------------------------------------------------------------------\n\nconst OPTIONS_SCHEMA = {\n\ttype: \"object\",\n\tproperties: {\n\t\tcode: {\n\t\t\ttype: \"integer\",\n\t\t\tminimum: 0,\n\t\t},\n\t\tcomments: {\n\t\t\ttype: \"integer\",\n\t\t\tminimum: 0,\n\t\t},\n\t\ttabWidth: {\n\t\t\ttype: \"integer\",\n\t\t\tminimum: 0,\n\t\t},\n\t\tignorePattern: {\n\t\t\ttype: \"string\",\n\t\t},\n\t\tignoreComments: {\n\t\t\ttype: \"boolean\",\n\t\t},\n\t\tignoreStrings: {\n\t\t\ttype: \"boolean\",\n\t\t},\n\t\tignoreUrls: {\n\t\t\ttype: \"boolean\",\n\t\t},\n\t\tignoreTemplateLiterals: {\n\t\t\ttype: \"boolean\",\n\t\t},\n\t\tignoreRegExpLiterals: {\n\t\t\ttype: \"boolean\",\n\t\t},\n\t\tignoreTrailingComments: {\n\t\t\ttype: \"boolean\",\n\t\t},\n\t},\n\tadditionalProperties: false,\n};\n\nconst OPTIONS_OR_INTEGER_SCHEMA = {\n\tanyOf: [\n\t\tOPTIONS_SCHEMA,\n\t\t{\n\t\t\ttype: \"integer\",\n\t\t\tminimum: 0,\n\t\t},\n\t],\n};\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"max-len\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/max-len\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce a maximum line length\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/max-len\",\n\t\t},\n\n\t\tschema: [\n\t\t\tOPTIONS_OR_INTEGER_SCHEMA,\n\t\t\tOPTIONS_OR_INTEGER_SCHEMA,\n\t\t\tOPTIONS_SCHEMA,\n\t\t],\n\t\tmessages: {\n\t\t\tmax: \"This line has a length of {{lineLength}}. Maximum allowed is {{maxLength}}.\",\n\t\t\tmaxComment:\n\t\t\t\t\"This line has a comment length of {{lineLength}}. Maximum allowed is {{maxCommentLength}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t/*\n\t\t * Inspired by http://tools.ietf.org/html/rfc3986#appendix-B, however:\n\t\t * - They're matching an entire string that we know is a URI\n\t\t * - We're matching part of a string where we think there *might* be a URL\n\t\t * - We're only concerned about URLs, as picking out any URI would cause\n\t\t *   too many false positives\n\t\t * - We don't care about matching the entire URL, any small segment is fine\n\t\t */\n\t\tconst URL_REGEXP = /[^:/?#]:\\/\\/[^?#]/u;\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Computes the length of a line that may contain tabs. The width of each\n\t\t * tab will be the number of spaces to the next tab stop.\n\t\t * @param {string} line The line.\n\t\t * @param {number} tabWidth The width of each tab stop in spaces.\n\t\t * @returns {number} The computed line length.\n\t\t * @private\n\t\t */\n\t\tfunction computeLineLength(line, tabWidth) {\n\t\t\tlet extraCharacterCount = 0;\n\n\t\t\tline.replace(/\\t/gu, (match, offset) => {\n\t\t\t\tconst totalOffset = offset + extraCharacterCount,\n\t\t\t\t\tpreviousTabStopOffset = tabWidth\n\t\t\t\t\t\t? totalOffset % tabWidth\n\t\t\t\t\t\t: 0,\n\t\t\t\t\tspaceCount = tabWidth - previousTabStopOffset;\n\n\t\t\t\textraCharacterCount += spaceCount - 1; // -1 for the replaced tab\n\t\t\t});\n\t\t\treturn Array.from(line).length + extraCharacterCount;\n\t\t}\n\n\t\t// The options object must be the last option specified\u2026\n\t\tconst options = Object.assign({}, context.options.at(-1));\n\n\t\t// \u2026but max code length\u2026\n\t\tif (typeof context.options[0] === \"number\") {\n\t\t\toptions.code = context.options[0];\n\t\t}\n\n\t\t// \u2026and tabWidth can be optionally specified directly as integers.\n\t\tif (typeof context.options[1] === \"number\") {\n\t\t\toptions.tabWidth = context.options[1];\n\t\t}\n\n\t\tconst maxLength = typeof options.code === \"number\" ? options.code : 80,\n\t\t\ttabWidth =\n\t\t\t\ttypeof options.tabWidth === \"number\" ? options.tabWidth : 4,\n\t\t\tignoreComments = !!options.ignoreComments,\n\t\t\tignoreStrings = !!options.ignoreStrings,\n\t\t\tignoreTemplateLiterals = !!options.ignoreTemplateLiterals,\n\t\t\tignoreRegExpLiterals = !!options.ignoreRegExpLiterals,\n\t\t\tignoreTrailingComments =\n\t\t\t\t!!options.ignoreTrailingComments || !!options.ignoreComments,\n\t\t\tignoreUrls = !!options.ignoreUrls,\n\t\t\tmaxCommentLength = options.comments;\n\t\tlet ignorePattern = options.ignorePattern || null;\n\n\t\tif (ignorePattern) {\n\t\t\tignorePattern = new RegExp(ignorePattern, \"u\");\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Tells if a given comment is trailing: it starts on the current line and\n\t\t * extends to or past the end of the current line.\n\t\t * @param {string} line The source line we want to check for a trailing comment on\n\t\t * @param {number} lineNumber The one-indexed line number for line\n\t\t * @param {ASTNode} comment The comment to inspect\n\t\t * @returns {boolean} If the comment is trailing on the given line\n\t\t */\n\t\tfunction isTrailingComment(line, lineNumber, comment) {\n\t\t\treturn (\n\t\t\t\tcomment &&\n\t\t\t\tcomment.loc.start.line === lineNumber &&\n\t\t\t\tlineNumber <= comment.loc.end.line &&\n\t\t\t\t(comment.loc.end.line > lineNumber ||\n\t\t\t\t\tcomment.loc.end.column === line.length)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Tells if a comment encompasses the entire line.\n\t\t * @param {string} line The source line with a trailing comment\n\t\t * @param {number} lineNumber The one-indexed line number this is on\n\t\t * @param {ASTNode} comment The comment to remove\n\t\t * @returns {boolean} If the comment covers the entire line\n\t\t */\n\t\tfunction isFullLineComment(line, lineNumber, comment) {\n\t\t\tconst start = comment.loc.start,\n\t\t\t\tend = comment.loc.end,\n\t\t\t\tisFirstTokenOnLine = !line\n\t\t\t\t\t.slice(0, comment.loc.start.column)\n\t\t\t\t\t.trim();\n\n\t\t\treturn (\n\t\t\t\tcomment &&\n\t\t\t\t(start.line < lineNumber ||\n\t\t\t\t\t(start.line === lineNumber && isFirstTokenOnLine)) &&\n\t\t\t\t(end.line > lineNumber ||\n\t\t\t\t\t(end.line === lineNumber && end.column === line.length))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check if a node is a JSXEmptyExpression contained in a single line JSXExpressionContainer.\n\t\t * @param {ASTNode} node A node to check.\n\t\t * @returns {boolean} True if the node is a JSXEmptyExpression contained in a single line JSXExpressionContainer.\n\t\t */\n\t\tfunction isJSXEmptyExpressionInSingleLineContainer(node) {\n\t\t\tif (\n\t\t\t\t!node ||\n\t\t\t\t!node.parent ||\n\t\t\t\tnode.type !== \"JSXEmptyExpression\" ||\n\t\t\t\tnode.parent.type !== \"JSXExpressionContainer\"\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst parent = node.parent;\n\n\t\t\treturn parent.loc.start.line === parent.loc.end.line;\n\t\t}\n\n\t\t/**\n\t\t * Gets the line after the comment and any remaining trailing whitespace is\n\t\t * stripped.\n\t\t * @param {string} line The source line with a trailing comment\n\t\t * @param {ASTNode} comment The comment to remove\n\t\t * @returns {string} Line without comment and trailing whitespace\n\t\t */\n\t\tfunction stripTrailingComment(line, comment) {\n\t\t\t// loc.column is zero-indexed\n\t\t\treturn line.slice(0, comment.loc.start.column).replace(/\\s+$/u, \"\");\n\t\t}\n\n\t\t/**\n\t\t * Ensure that an array exists at [key] on `object`, and add `value` to it.\n\t\t * @param {Object} object the object to mutate\n\t\t * @param {string} key the object's key\n\t\t * @param {any} value the value to add\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction ensureArrayAndPush(object, key, value) {\n\t\t\tif (!Array.isArray(object[key])) {\n\t\t\t\tobject[key] = [];\n\t\t\t}\n\t\t\tobject[key].push(value);\n\t\t}\n\n\t\t/**\n\t\t * Retrieves an array containing all strings (\" or ') in the source code.\n\t\t * @returns {ASTNode[]} An array of string nodes.\n\t\t */\n\t\tfunction getAllStrings() {\n\t\t\treturn sourceCode.ast.tokens.filter(\n\t\t\t\ttoken =>\n\t\t\t\t\ttoken.type === \"String\" ||\n\t\t\t\t\t(token.type === \"JSXText\" &&\n\t\t\t\t\t\tsourceCode.getNodeByRangeIndex(token.range[0] - 1)\n\t\t\t\t\t\t\t.type === \"JSXAttribute\"),\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Retrieves an array containing all template literals in the source code.\n\t\t * @returns {ASTNode[]} An array of template literal nodes.\n\t\t */\n\t\tfunction getAllTemplateLiterals() {\n\t\t\treturn sourceCode.ast.tokens.filter(\n\t\t\t\ttoken => token.type === \"Template\",\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Retrieves an array containing all RegExp literals in the source code.\n\t\t * @returns {ASTNode[]} An array of RegExp literal nodes.\n\t\t */\n\t\tfunction getAllRegExpLiterals() {\n\t\t\treturn sourceCode.ast.tokens.filter(\n\t\t\t\ttoken => token.type === \"RegularExpression\",\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t *\n\t\t * reduce an array of AST nodes by line number, both start and end.\n\t\t * @param {ASTNode[]} arr array of AST nodes\n\t\t * @returns {Object} accululated AST nodes\n\t\t */\n\t\tfunction groupArrayByLineNumber(arr) {\n\t\t\tconst obj = {};\n\n\t\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\t\tconst node = arr[i];\n\n\t\t\t\tfor (let j = node.loc.start.line; j <= node.loc.end.line; ++j) {\n\t\t\t\t\tensureArrayAndPush(obj, j, node);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn obj;\n\t\t}\n\n\t\t/**\n\t\t * Returns an array of all comments in the source code.\n\t\t * If the element in the array is a JSXEmptyExpression contained with a single line JSXExpressionContainer,\n\t\t * the element is changed with JSXExpressionContainer node.\n\t\t * @returns {ASTNode[]} An array of comment nodes\n\t\t */\n\t\tfunction getAllComments() {\n\t\t\tconst comments = [];\n\n\t\t\tsourceCode.getAllComments().forEach(commentNode => {\n\t\t\t\tconst containingNode = sourceCode.getNodeByRangeIndex(\n\t\t\t\t\tcommentNode.range[0],\n\t\t\t\t);\n\n\t\t\t\tif (isJSXEmptyExpressionInSingleLineContainer(containingNode)) {\n\t\t\t\t\t// push a unique node only\n\t\t\t\t\tif (comments.at(-1) !== containingNode.parent) {\n\t\t\t\t\t\tcomments.push(containingNode.parent);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcomments.push(commentNode);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn comments;\n\t\t}\n\n\t\t/**\n\t\t * Check the program for max length\n\t\t * @param {ASTNode} node Node to examine\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkProgramForMaxLength(node) {\n\t\t\t// split (honors line-ending)\n\t\t\tconst lines = sourceCode.lines,\n\t\t\t\t// list of comments to ignore\n\t\t\t\tcomments =\n\t\t\t\t\tignoreComments || maxCommentLength || ignoreTrailingComments\n\t\t\t\t\t\t? getAllComments()\n\t\t\t\t\t\t: [];\n\n\t\t\t// we iterate over comments in parallel with the lines\n\t\t\tlet commentsIndex = 0;\n\n\t\t\tconst strings = getAllStrings();\n\t\t\tconst stringsByLine = groupArrayByLineNumber(strings);\n\n\t\t\tconst templateLiterals = getAllTemplateLiterals();\n\t\t\tconst templateLiteralsByLine =\n\t\t\t\tgroupArrayByLineNumber(templateLiterals);\n\n\t\t\tconst regExpLiterals = getAllRegExpLiterals();\n\t\t\tconst regExpLiteralsByLine = groupArrayByLineNumber(regExpLiterals);\n\n\t\t\tlines.forEach((line, i) => {\n\t\t\t\t// i is zero-indexed, line numbers are one-indexed\n\t\t\t\tconst lineNumber = i + 1;\n\n\t\t\t\t/*\n\t\t\t\t * if we're checking comment length; we need to know whether this\n\t\t\t\t * line is a comment\n\t\t\t\t */\n\t\t\t\tlet lineIsComment = false;\n\t\t\t\tlet textToMeasure;\n\n\t\t\t\t/*\n\t\t\t\t * We can short-circuit the comment checks if we're already out of\n\t\t\t\t * comments to check.\n\t\t\t\t */\n\t\t\t\tif (commentsIndex < comments.length) {\n\t\t\t\t\tlet comment;\n\n\t\t\t\t\t// iterate over comments until we find one past the current line\n\t\t\t\t\tdo {\n\t\t\t\t\t\tcomment = comments[++commentsIndex];\n\t\t\t\t\t} while (comment && comment.loc.start.line <= lineNumber);\n\n\t\t\t\t\t// and step back by one\n\t\t\t\t\tcomment = comments[--commentsIndex];\n\n\t\t\t\t\tif (isFullLineComment(line, lineNumber, comment)) {\n\t\t\t\t\t\tlineIsComment = true;\n\t\t\t\t\t\ttextToMeasure = line;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tignoreTrailingComments &&\n\t\t\t\t\t\tisTrailingComment(line, lineNumber, comment)\n\t\t\t\t\t) {\n\t\t\t\t\t\ttextToMeasure = stripTrailingComment(line, comment);\n\n\t\t\t\t\t\t// ignore multiple trailing comments in the same line\n\t\t\t\t\t\tlet lastIndex = commentsIndex;\n\n\t\t\t\t\t\twhile (\n\t\t\t\t\t\t\tisTrailingComment(\n\t\t\t\t\t\t\t\ttextToMeasure,\n\t\t\t\t\t\t\t\tlineNumber,\n\t\t\t\t\t\t\t\tcomments[--lastIndex],\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\ttextToMeasure = stripTrailingComment(\n\t\t\t\t\t\t\t\ttextToMeasure,\n\t\t\t\t\t\t\t\tcomments[lastIndex],\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttextToMeasure = line;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttextToMeasure = line;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t(ignorePattern && ignorePattern.test(textToMeasure)) ||\n\t\t\t\t\t(ignoreUrls && URL_REGEXP.test(textToMeasure)) ||\n\t\t\t\t\t(ignoreStrings && stringsByLine[lineNumber]) ||\n\t\t\t\t\t(ignoreTemplateLiterals &&\n\t\t\t\t\t\ttemplateLiteralsByLine[lineNumber]) ||\n\t\t\t\t\t(ignoreRegExpLiterals && regExpLiteralsByLine[lineNumber])\n\t\t\t\t) {\n\t\t\t\t\t// ignore this line\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst lineLength = computeLineLength(textToMeasure, tabWidth);\n\t\t\t\tconst commentLengthApplies = lineIsComment && maxCommentLength;\n\n\t\t\t\tif (lineIsComment && ignoreComments) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst loc = {\n\t\t\t\t\tstart: {\n\t\t\t\t\t\tline: lineNumber,\n\t\t\t\t\t\tcolumn: 0,\n\t\t\t\t\t},\n\t\t\t\t\tend: {\n\t\t\t\t\t\tline: lineNumber,\n\t\t\t\t\t\tcolumn: textToMeasure.length,\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tif (commentLengthApplies) {\n\t\t\t\t\tif (lineLength > maxCommentLength) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tmessageId: \"maxComment\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tlineLength,\n\t\t\t\t\t\t\t\tmaxCommentLength,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else if (lineLength > maxLength) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc,\n\t\t\t\t\t\tmessageId: \"max\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tlineLength,\n\t\t\t\t\t\t\tmaxLength,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram: checkProgramForMaxLength,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview enforce a maximum file length\n * @author Alberto Rodr\u00EDguez\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Creates an array of numbers from `start` up to, but not including, `end`\n * @param {number} start The start of the range\n * @param {number} end The end of the range\n * @returns {number[]} The range of numbers\n */\nfunction range(start, end) {\n\treturn [...Array(end - start).keys()].map(x => x + start);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce a maximum number of lines per file\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/max-lines\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tmax: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tskipComments: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tskipBlankLines: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [300],\n\n\t\tmessages: {\n\t\t\texceed: \"File has too many lines ({{actual}}). Maximum allowed is {{max}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst option = context.options[0];\n\t\tlet max = 300;\n\n\t\tif (typeof option === \"object\" && Object.hasOwn(option, \"max\")) {\n\t\t\tmax = option.max;\n\t\t} else if (typeof option === \"number\") {\n\t\t\tmax = option;\n\t\t}\n\n\t\tconst skipComments = option && option.skipComments;\n\t\tconst skipBlankLines = option && option.skipBlankLines;\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Returns whether or not a token is a comment node type\n\t\t * @param {Token} token The token to check\n\t\t * @returns {boolean} True if the token is a comment node\n\t\t */\n\t\tfunction isCommentNodeType(token) {\n\t\t\treturn token && (token.type === \"Block\" || token.type === \"Line\");\n\t\t}\n\n\t\t/**\n\t\t * Returns the line numbers of a comment that don't have any code on the same line\n\t\t * @param {Node} comment The comment node to check\n\t\t * @returns {number[]} The line numbers\n\t\t */\n\t\tfunction getLinesWithoutCode(comment) {\n\t\t\tlet start = comment.loc.start.line;\n\t\t\tlet end = comment.loc.end.line;\n\n\t\t\tlet token;\n\n\t\t\ttoken = comment;\n\t\t\tdo {\n\t\t\t\ttoken = sourceCode.getTokenBefore(token, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t});\n\t\t\t} while (isCommentNodeType(token));\n\n\t\t\tif (token && astUtils.isTokenOnSameLine(token, comment)) {\n\t\t\t\tstart += 1;\n\t\t\t}\n\n\t\t\ttoken = comment;\n\t\t\tdo {\n\t\t\t\ttoken = sourceCode.getTokenAfter(token, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t});\n\t\t\t} while (isCommentNodeType(token));\n\n\t\t\tif (token && astUtils.isTokenOnSameLine(comment, token)) {\n\t\t\t\tend -= 1;\n\t\t\t}\n\n\t\t\tif (start <= end) {\n\t\t\t\treturn range(start, end + 1);\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\n\t\treturn {\n\t\t\t\"Program:exit\"() {\n\t\t\t\tlet lines = sourceCode.lines.map((text, i) => ({\n\t\t\t\t\tlineNumber: i + 1,\n\t\t\t\t\ttext,\n\t\t\t\t}));\n\n\t\t\t\t/*\n\t\t\t\t * If file ends with a linebreak, `sourceCode.lines` will have one extra empty line at the end.\n\t\t\t\t * That isn't a real line, so we shouldn't count it.\n\t\t\t\t */\n\t\t\t\tif (lines.length > 1 && lines.at(-1).text === \"\") {\n\t\t\t\t\tlines.pop();\n\t\t\t\t}\n\n\t\t\t\tif (skipBlankLines) {\n\t\t\t\t\tlines = lines.filter(l => l.text.trim() !== \"\");\n\t\t\t\t}\n\n\t\t\t\tif (skipComments) {\n\t\t\t\t\tconst comments = sourceCode.getAllComments();\n\n\t\t\t\t\tconst commentLines = new Set(\n\t\t\t\t\t\tcomments.flatMap(getLinesWithoutCode),\n\t\t\t\t\t);\n\n\t\t\t\t\tlines = lines.filter(l => !commentLines.has(l.lineNumber));\n\t\t\t\t}\n\n\t\t\t\tif (lines.length > max) {\n\t\t\t\t\tconst loc = {\n\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\tline: lines[max].lineNumber,\n\t\t\t\t\t\t\tcolumn: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\tline: sourceCode.lines.length,\n\t\t\t\t\t\t\tcolumn: sourceCode.lines.at(-1).length,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tloc,\n\t\t\t\t\t\tmessageId: \"exceed\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tmax,\n\t\t\t\t\t\t\tactual: lines.length,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to set the maximum number of line of code in a function.\n * @author Pete Ward <peteward44@gmail.com>\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst { upperCaseFirst } = require(\"../shared/string-utils\");\n\n//------------------------------------------------------------------------------\n// Constants\n//------------------------------------------------------------------------------\n\nconst OPTIONS_SCHEMA = {\n\ttype: \"object\",\n\tproperties: {\n\t\tmax: {\n\t\t\ttype: \"integer\",\n\t\t\tminimum: 0,\n\t\t},\n\t\tskipComments: {\n\t\t\ttype: \"boolean\",\n\t\t},\n\t\tskipBlankLines: {\n\t\t\ttype: \"boolean\",\n\t\t},\n\t\tIIFEs: {\n\t\t\ttype: \"boolean\",\n\t\t},\n\t},\n\tadditionalProperties: false,\n};\n\nconst OPTIONS_OR_INTEGER_SCHEMA = {\n\toneOf: [\n\t\tOPTIONS_SCHEMA,\n\t\t{\n\t\t\ttype: \"integer\",\n\t\t\tminimum: 1,\n\t\t},\n\t],\n};\n\n/**\n * Given a list of comment nodes, return a map with numeric keys (source code line numbers) and comment token values.\n * @param {Array} comments An array of comment nodes.\n * @returns {Map<string, Node>} A map with numeric keys (source code line numbers) and comment token values.\n */\nfunction getCommentLineNumbers(comments) {\n\tconst map = new Map();\n\n\tcomments.forEach(comment => {\n\t\tfor (let i = comment.loc.start.line; i <= comment.loc.end.line; i++) {\n\t\t\tmap.set(i, comment);\n\t\t}\n\t});\n\treturn map;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce a maximum number of lines of code in a function\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/max-lines-per-function\",\n\t\t},\n\n\t\tschema: [OPTIONS_OR_INTEGER_SCHEMA],\n\n\t\tdefaultOptions: [50],\n\n\t\tmessages: {\n\t\t\texceed: \"{{name}} has too many lines ({{lineCount}}). Maximum allowed is {{maxLines}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst lines = sourceCode.lines;\n\n\t\tconst option = context.options[0];\n\t\tlet maxLines = 50;\n\t\tlet skipComments = false;\n\t\tlet skipBlankLines = false;\n\t\tlet IIFEs = false;\n\n\t\tif (typeof option === \"object\") {\n\t\t\tmaxLines = typeof option.max === \"number\" ? option.max : 50;\n\t\t\tskipComments = !!option.skipComments;\n\t\t\tskipBlankLines = !!option.skipBlankLines;\n\t\t\tIIFEs = !!option.IIFEs;\n\t\t} else if (typeof option === \"number\") {\n\t\t\tmaxLines = option;\n\t\t}\n\n\t\tconst commentLineNumbers = getCommentLineNumbers(\n\t\t\tsourceCode.getAllComments(),\n\t\t);\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Tells if a comment encompasses the entire line.\n\t\t * @param {string} line The source line with a trailing comment\n\t\t * @param {number} lineNumber The one-indexed line number this is on\n\t\t * @param {ASTNode} comment The comment to remove\n\t\t * @returns {boolean} If the comment covers the entire line\n\t\t */\n\t\tfunction isFullLineComment(line, lineNumber, comment) {\n\t\t\tconst start = comment.loc.start,\n\t\t\t\tend = comment.loc.end,\n\t\t\t\tisFirstTokenOnLine =\n\t\t\t\t\tstart.line === lineNumber &&\n\t\t\t\t\t!line.slice(0, start.column).trim(),\n\t\t\t\tisLastTokenOnLine =\n\t\t\t\t\tend.line === lineNumber && !line.slice(end.column).trim();\n\n\t\t\treturn (\n\t\t\t\tcomment &&\n\t\t\t\t(start.line < lineNumber || isFirstTokenOnLine) &&\n\t\t\t\t(end.line > lineNumber || isLastTokenOnLine)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Identifies is a node is a FunctionExpression which is part of an IIFE\n\t\t * @param {ASTNode} node Node to test\n\t\t * @returns {boolean} True if it's an IIFE\n\t\t */\n\t\tfunction isIIFE(node) {\n\t\t\treturn (\n\t\t\t\t(node.type === \"FunctionExpression\" ||\n\t\t\t\t\tnode.type === \"ArrowFunctionExpression\") &&\n\t\t\t\tnode.parent &&\n\t\t\t\tnode.parent.type === \"CallExpression\" &&\n\t\t\t\tnode.parent.callee === node\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Identifies is a node is a FunctionExpression which is embedded within a MethodDefinition or Property\n\t\t * @param {ASTNode} node Node to test\n\t\t * @returns {boolean} True if it's a FunctionExpression embedded within a MethodDefinition or Property\n\t\t */\n\t\tfunction isEmbedded(node) {\n\t\t\tif (!node.parent) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (node !== node.parent.value) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (node.parent.type === \"MethodDefinition\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (node.parent.type === \"Property\") {\n\t\t\t\treturn (\n\t\t\t\t\tnode.parent.method === true ||\n\t\t\t\t\tnode.parent.kind === \"get\" ||\n\t\t\t\t\tnode.parent.kind === \"set\"\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Count the lines in the function\n\t\t * @param {ASTNode} funcNode Function AST node\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction processFunction(funcNode) {\n\t\t\tconst node = isEmbedded(funcNode) ? funcNode.parent : funcNode;\n\n\t\t\tif (!IIFEs && isIIFE(node)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet lineCount = 0;\n\n\t\t\tfor (let i = node.loc.start.line - 1; i < node.loc.end.line; ++i) {\n\t\t\t\tconst line = lines[i];\n\n\t\t\t\tif (skipComments) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tcommentLineNumbers.has(i + 1) &&\n\t\t\t\t\t\tisFullLineComment(\n\t\t\t\t\t\t\tline,\n\t\t\t\t\t\t\ti + 1,\n\t\t\t\t\t\t\tcommentLineNumbers.get(i + 1),\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (skipBlankLines) {\n\t\t\t\t\tif (line.match(/^\\s*$/u)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlineCount++;\n\t\t\t}\n\n\t\t\tif (lineCount > maxLines) {\n\t\t\t\tconst name = upperCaseFirst(\n\t\t\t\t\tastUtils.getFunctionNameWithKind(funcNode),\n\t\t\t\t);\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: astUtils.getFunctionHeadLoc(funcNode, sourceCode),\n\t\t\t\t\tmessageId: \"exceed\",\n\t\t\t\t\tdata: { name, lineCount, maxLines },\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tFunctionDeclaration: processFunction,\n\t\t\tFunctionExpression: processFunction,\n\t\t\tArrowFunctionExpression: processFunction,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce a maximum number of nested callbacks.\n * @author Ian Christian Myers\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce a maximum depth that callbacks can be nested\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/max-nested-callbacks\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tmaximum: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmax: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [10],\n\n\t\tmessages: {\n\t\t\texceed: \"Too many nested callbacks ({{num}}). Maximum allowed is {{max}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Constants\n\t\t//--------------------------------------------------------------------------\n\t\tconst option = context.options[0];\n\t\tlet THRESHOLD = 10;\n\n\t\tif (\n\t\t\ttypeof option === \"object\" &&\n\t\t\t(Object.hasOwn(option, \"maximum\") || Object.hasOwn(option, \"max\"))\n\t\t) {\n\t\t\tTHRESHOLD = option.maximum || option.max;\n\t\t} else if (typeof option === \"number\") {\n\t\t\tTHRESHOLD = option;\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\tconst callbackStack = [];\n\n\t\t/**\n\t\t * Checks a given function node for too many callbacks.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkFunction(node) {\n\t\t\tconst parent = node.parent;\n\n\t\t\tif (parent.type === \"CallExpression\") {\n\t\t\t\tcallbackStack.push(node);\n\t\t\t}\n\n\t\t\tif (callbackStack.length > THRESHOLD) {\n\t\t\t\tconst opts = { num: callbackStack.length, max: THRESHOLD };\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: astUtils.getFunctionHeadLoc(node, sourceCode),\n\t\t\t\t\tmessageId: \"exceed\",\n\t\t\t\t\tdata: opts,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Pops the call stack.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction popStack(node) {\n\t\t\tif (callbackStack.at(-1) === node) {\n\t\t\t\tcallbackStack.pop();\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tArrowFunctionExpression: checkFunction,\n\t\t\t\"ArrowFunctionExpression:exit\": popStack,\n\n\t\t\tFunctionExpression: checkFunction,\n\t\t\t\"FunctionExpression:exit\": popStack,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag when a function has too many parameters\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst { upperCaseFirst } = require(\"../shared/string-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce a maximum number of parameters in function definitions\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/max-params\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tmaximum: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmax: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcountVoidThis: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\"Whether to count a `this` declaration when the type is `void`.\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcountThis: {\n\t\t\t\t\t\t\t\tenum: [\"never\", \"except-void\", \"always\"],\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\"Whether to count a `this` declaration.\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\tnot: { required: [\"countVoidThis\", \"countThis\"] },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [3],\n\n\t\tmessages: {\n\t\t\texceed: \"{{name}} has too many parameters ({{count}}). Maximum allowed is {{max}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst option = context.options[0];\n\t\tlet numParams = 3;\n\t\tlet countThis = \"except-void\";\n\n\t\tif (typeof option === \"object\") {\n\t\t\tif (\n\t\t\t\tObject.hasOwn(option, \"maximum\") ||\n\t\t\t\tObject.hasOwn(option, \"max\")\n\t\t\t) {\n\t\t\t\tnumParams = option.maximum || option.max;\n\t\t\t}\n\n\t\t\tcountThis = option.countThis;\n\t\t\tif (!countThis && Object.hasOwn(option, \"countVoidThis\")) {\n\t\t\t\tcountThis = option.countVoidThis ? \"always\" : \"except-void\";\n\t\t\t}\n\t\t\tcountThis ||= \"except-void\";\n\t\t}\n\t\tif (typeof option === \"number\") {\n\t\t\tnumParams = option;\n\t\t}\n\n\t\t/**\n\t\t * Checks a function to see if it has too many parameters.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkFunction(node) {\n\t\t\tconst thisParam =\n\t\t\t\tnode.params.length > 0 &&\n\t\t\t\tnode.params[0].type === \"Identifier\" &&\n\t\t\t\tnode.params[0].name === \"this\"\n\t\t\t\t\t? node.params[0]\n\t\t\t\t\t: null;\n\n\t\t\tlet effectiveParamCount = node.params.length;\n\t\t\tif (thisParam) {\n\t\t\t\tif (countThis === \"never\") {\n\t\t\t\t\teffectiveParamCount = node.params.length - 1;\n\t\t\t\t} else if (\n\t\t\t\t\tcountThis === \"except-void\" &&\n\t\t\t\t\tthisParam.typeAnnotation?.typeAnnotation.type ===\n\t\t\t\t\t\t\"TSVoidKeyword\"\n\t\t\t\t) {\n\t\t\t\t\teffectiveParamCount = node.params.length - 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (effectiveParamCount > numParams) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tloc: astUtils.getFunctionHeadLoc(node, sourceCode),\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"exceed\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tname: upperCaseFirst(\n\t\t\t\t\t\t\tastUtils.getFunctionNameWithKind(node),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcount: effectiveParamCount,\n\t\t\t\t\t\tmax: numParams,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tFunctionDeclaration: checkFunction,\n\t\t\tArrowFunctionExpression: checkFunction,\n\t\t\tFunctionExpression: checkFunction,\n\t\t\tTSDeclareFunction: checkFunction,\n\t\t\tTSFunctionType: checkFunction,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to set the maximum number of statements in a function.\n * @author Ian Christian Myers\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst { upperCaseFirst } = require(\"../shared/string-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce a maximum number of statements allowed in function blocks\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/max-statements\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tmaximum: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmax: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tignoreTopLevelFunctions: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [10],\n\n\t\tmessages: {\n\t\t\texceed: \"{{name}} has too many statements ({{count}}). Maximum allowed is {{max}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\tconst functionStack = [],\n\t\t\toption = context.options[0],\n\t\t\tignoreTopLevelFunctions =\n\t\t\t\t(context.options[1] &&\n\t\t\t\t\tcontext.options[1].ignoreTopLevelFunctions) ||\n\t\t\t\tfalse,\n\t\t\ttopLevelFunctions = [];\n\t\tlet maxStatements = 10;\n\n\t\tif (\n\t\t\ttypeof option === \"object\" &&\n\t\t\t(Object.hasOwn(option, \"maximum\") || Object.hasOwn(option, \"max\"))\n\t\t) {\n\t\t\tmaxStatements = option.maximum || option.max;\n\t\t} else if (typeof option === \"number\") {\n\t\t\tmaxStatements = option;\n\t\t}\n\n\t\t/**\n\t\t * Reports a node if it has too many statements\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @param {number} count Number of statements in node\n\t\t * @param {number} max Maximum number of statements allowed\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction reportIfTooManyStatements(node, count, max) {\n\t\t\tif (count > max) {\n\t\t\t\tconst name = upperCaseFirst(\n\t\t\t\t\tastUtils.getFunctionNameWithKind(node),\n\t\t\t\t);\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: astUtils.getFunctionHeadLoc(node, context.sourceCode),\n\t\t\t\t\tmessageId: \"exceed\",\n\t\t\t\t\tdata: { name, count, max },\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * When parsing a new function, store it in our function stack\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction startFunction() {\n\t\t\tfunctionStack.push(0);\n\t\t}\n\n\t\t/**\n\t\t * Evaluate the node at the end of function\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction endFunction(node) {\n\t\t\tconst count = functionStack.pop();\n\n\t\t\t/*\n\t\t\t * This rule does not apply to class static blocks, but we have to track them so\n\t\t\t * that statements in them do not count as statements in the enclosing function.\n\t\t\t */\n\t\t\tif (node.type === \"StaticBlock\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (ignoreTopLevelFunctions && functionStack.length === 0) {\n\t\t\t\ttopLevelFunctions.push({ node, count });\n\t\t\t} else {\n\t\t\t\treportIfTooManyStatements(node, count, maxStatements);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Increment the count of the functions\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction countStatements(node) {\n\t\t\tfunctionStack[functionStack.length - 1] += node.body.length;\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tFunctionDeclaration: startFunction,\n\t\t\tFunctionExpression: startFunction,\n\t\t\tArrowFunctionExpression: startFunction,\n\t\t\tStaticBlock: startFunction,\n\n\t\t\tBlockStatement: countStatements,\n\n\t\t\t\"FunctionDeclaration:exit\": endFunction,\n\t\t\t\"FunctionExpression:exit\": endFunction,\n\t\t\t\"ArrowFunctionExpression:exit\": endFunction,\n\t\t\t\"StaticBlock:exit\": endFunction,\n\n\t\t\t\"Program:exit\"() {\n\t\t\t\tif (topLevelFunctions.length === 1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\ttopLevelFunctions.forEach(element => {\n\t\t\t\t\tconst count = element.count;\n\t\t\t\t\tconst node = element.node;\n\n\t\t\t\t\treportIfTooManyStatements(node, count, maxStatements);\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Specify the maximum number of statements allowed per line.\n * @author Kenneth Williams\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"max-statements-per-line\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/max-statements-per-line\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce a maximum number of statements allowed per line\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/max-statements-per-line\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tmax: {\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 1,\n\t\t\t\t\t\tdefault: 1,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\texceed: \"This line has {{numberOfStatementsOnThisLine}} {{statements}}. Maximum allowed is {{maxStatementsPerLine}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode,\n\t\t\toptions = context.options[0] || {},\n\t\t\tmaxStatementsPerLine =\n\t\t\t\ttypeof options.max !== \"undefined\" ? options.max : 1;\n\n\t\tlet lastStatementLine = 0,\n\t\t\tnumberOfStatementsOnThisLine = 0,\n\t\t\tfirstExtraStatement;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\tconst SINGLE_CHILD_ALLOWED =\n\t\t\t/^(?:(?:DoWhile|For|ForIn|ForOf|If|Labeled|While)Statement|Export(?:Default|Named)Declaration)$/u;\n\n\t\t/**\n\t\t * Reports with the first extra statement, and clears it.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportFirstExtraStatementAndClear() {\n\t\t\tif (firstExtraStatement) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: firstExtraStatement,\n\t\t\t\t\tmessageId: \"exceed\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tnumberOfStatementsOnThisLine,\n\t\t\t\t\t\tmaxStatementsPerLine,\n\t\t\t\t\t\tstatements:\n\t\t\t\t\t\t\tnumberOfStatementsOnThisLine === 1\n\t\t\t\t\t\t\t\t? \"statement\"\n\t\t\t\t\t\t\t\t: \"statements\",\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\tfirstExtraStatement = null;\n\t\t}\n\n\t\t/**\n\t\t * Gets the actual last token of a given node.\n\t\t * @param {ASTNode} node A node to get. This is a node except EmptyStatement.\n\t\t * @returns {Token} The actual last token.\n\t\t */\n\t\tfunction getActualLastToken(node) {\n\t\t\treturn sourceCode.getLastToken(node, astUtils.isNotSemicolonToken);\n\t\t}\n\n\t\t/**\n\t\t * Addresses a given node.\n\t\t * It updates the state of this rule, then reports the node if the node violated this rule.\n\t\t * @param {ASTNode} node A node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction enterStatement(node) {\n\t\t\tconst line = node.loc.start.line;\n\n\t\t\t/*\n\t\t\t * Skip to allow non-block statements if this is direct child of control statements.\n\t\t\t * `if (a) foo();` is counted as 1.\n\t\t\t * But `if (a) foo(); else foo();` should be counted as 2.\n\t\t\t */\n\t\t\tif (\n\t\t\t\tSINGLE_CHILD_ALLOWED.test(node.parent.type) &&\n\t\t\t\tnode.parent.alternate !== node\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Update state.\n\t\t\tif (line === lastStatementLine) {\n\t\t\t\tnumberOfStatementsOnThisLine += 1;\n\t\t\t} else {\n\t\t\t\treportFirstExtraStatementAndClear();\n\t\t\t\tnumberOfStatementsOnThisLine = 1;\n\t\t\t\tlastStatementLine = line;\n\t\t\t}\n\n\t\t\t// Reports if the node violated this rule.\n\t\t\tif (numberOfStatementsOnThisLine === maxStatementsPerLine + 1) {\n\t\t\t\tfirstExtraStatement = firstExtraStatement || node;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Updates the state of this rule with the end line of leaving node to check with the next statement.\n\t\t * @param {ASTNode} node A node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction leaveStatement(node) {\n\t\t\tconst line = getActualLastToken(node).loc.end.line;\n\n\t\t\t// Update state.\n\t\t\tif (line !== lastStatementLine) {\n\t\t\t\treportFirstExtraStatementAndClear();\n\t\t\t\tnumberOfStatementsOnThisLine = 1;\n\t\t\t\tlastStatementLine = line;\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tBreakStatement: enterStatement,\n\t\t\tClassDeclaration: enterStatement,\n\t\t\tContinueStatement: enterStatement,\n\t\t\tDebuggerStatement: enterStatement,\n\t\t\tDoWhileStatement: enterStatement,\n\t\t\tExpressionStatement: enterStatement,\n\t\t\tForInStatement: enterStatement,\n\t\t\tForOfStatement: enterStatement,\n\t\t\tForStatement: enterStatement,\n\t\t\tFunctionDeclaration: enterStatement,\n\t\t\tIfStatement: enterStatement,\n\t\t\tImportDeclaration: enterStatement,\n\t\t\tLabeledStatement: enterStatement,\n\t\t\tReturnStatement: enterStatement,\n\t\t\tSwitchStatement: enterStatement,\n\t\t\tThrowStatement: enterStatement,\n\t\t\tTryStatement: enterStatement,\n\t\t\tVariableDeclaration: enterStatement,\n\t\t\tWhileStatement: enterStatement,\n\t\t\tWithStatement: enterStatement,\n\t\t\tExportNamedDeclaration: enterStatement,\n\t\t\tExportDefaultDeclaration: enterStatement,\n\t\t\tExportAllDeclaration: enterStatement,\n\n\t\t\t\"BreakStatement:exit\": leaveStatement,\n\t\t\t\"ClassDeclaration:exit\": leaveStatement,\n\t\t\t\"ContinueStatement:exit\": leaveStatement,\n\t\t\t\"DebuggerStatement:exit\": leaveStatement,\n\t\t\t\"DoWhileStatement:exit\": leaveStatement,\n\t\t\t\"ExpressionStatement:exit\": leaveStatement,\n\t\t\t\"ForInStatement:exit\": leaveStatement,\n\t\t\t\"ForOfStatement:exit\": leaveStatement,\n\t\t\t\"ForStatement:exit\": leaveStatement,\n\t\t\t\"FunctionDeclaration:exit\": leaveStatement,\n\t\t\t\"IfStatement:exit\": leaveStatement,\n\t\t\t\"ImportDeclaration:exit\": leaveStatement,\n\t\t\t\"LabeledStatement:exit\": leaveStatement,\n\t\t\t\"ReturnStatement:exit\": leaveStatement,\n\t\t\t\"SwitchStatement:exit\": leaveStatement,\n\t\t\t\"ThrowStatement:exit\": leaveStatement,\n\t\t\t\"TryStatement:exit\": leaveStatement,\n\t\t\t\"VariableDeclaration:exit\": leaveStatement,\n\t\t\t\"WhileStatement:exit\": leaveStatement,\n\t\t\t\"WithStatement:exit\": leaveStatement,\n\t\t\t\"ExportNamedDeclaration:exit\": leaveStatement,\n\t\t\t\"ExportDefaultDeclaration:exit\": leaveStatement,\n\t\t\t\"ExportAllDeclaration:exit\": leaveStatement,\n\t\t\t\"Program:exit\": reportFirstExtraStatementAndClear,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview enforce a particular style for multiline comments\n * @author Teddy Katz\n * @deprecated in ESLint v9.3.0\n */\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"9.3.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"multiline-comment-style\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/multiline-comment-style\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"suggestion\",\n\t\tdocs: {\n\t\t\tdescription: \"Enforce a particular style for multiline comments\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/multiline-comment-style\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\t\tschema: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"starred-block\", \"bare-block\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tadditionalItems: false,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"separate-lines\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tcheckJSDoc: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tadditionalItems: false,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tmessages: {\n\t\t\texpectedBlock:\n\t\t\t\t\"Expected a block comment instead of consecutive line comments.\",\n\t\t\texpectedBareBlock:\n\t\t\t\t\"Expected a block comment without padding stars.\",\n\t\t\tstartNewline: \"Expected a linebreak after '/*'.\",\n\t\t\tendNewline: \"Expected a linebreak before '*/'.\",\n\t\t\tmissingStar: \"Expected a '*' at the start of this line.\",\n\t\t\talignment:\n\t\t\t\t\"Expected this line to be aligned with the start of the comment.\",\n\t\t\texpectedLines:\n\t\t\t\t\"Expected multiple line comments instead of a block comment.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst option = context.options[0] || \"starred-block\";\n\t\tconst params = context.options[1] || {};\n\t\tconst checkJSDoc = !!params.checkJSDoc;\n\n\t\t//----------------------------------------------------------------------\n\t\t// Helpers\n\t\t//----------------------------------------------------------------------\n\n\t\t/**\n\t\t * Checks if a comment line is starred.\n\t\t * @param {string} line A string representing a comment line.\n\t\t * @returns {boolean} Whether or not the comment line is starred.\n\t\t */\n\t\tfunction isStarredCommentLine(line) {\n\t\t\treturn /^\\s*\\*/u.test(line);\n\t\t}\n\n\t\t/**\n\t\t * Checks if a comment group is in starred-block form.\n\t\t * @param {Token[]} commentGroup A group of comments, containing either multiple line comments or a single block comment.\n\t\t * @returns {boolean} Whether or not the comment group is in starred block form.\n\t\t */\n\t\tfunction isStarredBlockComment([firstComment]) {\n\t\t\tif (firstComment.type !== \"Block\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst lines = firstComment.value.split(astUtils.LINEBREAK_MATCHER);\n\n\t\t\t// The first and last lines can only contain whitespace.\n\t\t\treturn (\n\t\t\t\tlines.length > 0 &&\n\t\t\t\tlines.every((line, i) =>\n\t\t\t\t\t(i === 0 || i === lines.length - 1\n\t\t\t\t\t\t? /^\\s*$/u\n\t\t\t\t\t\t: /^\\s*\\*/u\n\t\t\t\t\t).test(line),\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if a comment group is in JSDoc form.\n\t\t * @param {Token[]} commentGroup A group of comments, containing either multiple line comments or a single block comment.\n\t\t * @returns {boolean} Whether or not the comment group is in JSDoc form.\n\t\t */\n\t\tfunction isJSDocComment([firstComment]) {\n\t\t\tif (firstComment.type !== \"Block\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst lines = firstComment.value.split(astUtils.LINEBREAK_MATCHER);\n\n\t\t\treturn (\n\t\t\t\t/^\\*\\s*$/u.test(lines[0]) &&\n\t\t\t\tlines.slice(1, -1).every(line => /^\\s* /u.test(line)) &&\n\t\t\t\t/^\\s*$/u.test(lines.at(-1))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Processes a comment group that is currently in separate-line form, calculating the offset for each line.\n\t\t * @param {Token[]} commentGroup A group of comments containing multiple line comments.\n\t\t * @returns {string[]} An array of the processed lines.\n\t\t */\n\t\tfunction processSeparateLineComments(commentGroup) {\n\t\t\tconst allLinesHaveLeadingSpace = commentGroup\n\t\t\t\t.map(({ value }) => value)\n\t\t\t\t.filter(line => line.trim().length)\n\t\t\t\t.every(line => line.startsWith(\" \"));\n\n\t\t\treturn commentGroup.map(({ value }) =>\n\t\t\t\tallLinesHaveLeadingSpace ? value.replace(/^ /u, \"\") : value,\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Processes a comment group that is currently in starred-block form, calculating the offset for each line.\n\t\t * @param {Token} comment A single block comment token in starred-block form.\n\t\t * @returns {string[]} An array of the processed lines.\n\t\t */\n\t\tfunction processStarredBlockComment(comment) {\n\t\t\tconst lines = comment.value\n\t\t\t\t.split(astUtils.LINEBREAK_MATCHER)\n\t\t\t\t.filter(\n\t\t\t\t\t(line, i, linesArr) =>\n\t\t\t\t\t\t!(i === 0 || i === linesArr.length - 1),\n\t\t\t\t)\n\t\t\t\t.map(line => line.replace(/^\\s*$/u, \"\"));\n\t\t\tconst allLinesHaveLeadingSpace = lines\n\t\t\t\t.map(line => line.replace(/\\s*\\*/u, \"\"))\n\t\t\t\t.filter(line => line.trim().length)\n\t\t\t\t.every(line => line.startsWith(\" \"));\n\n\t\t\treturn lines.map(line =>\n\t\t\t\tline.replace(\n\t\t\t\t\tallLinesHaveLeadingSpace ? /\\s*\\* ?/u : /\\s*\\*/u,\n\t\t\t\t\t\"\",\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Processes a comment group that is currently in bare-block form, calculating the offset for each line.\n\t\t * @param {Token} comment A single block comment token in bare-block form.\n\t\t * @returns {string[]} An array of the processed lines.\n\t\t */\n\t\tfunction processBareBlockComment(comment) {\n\t\t\tconst lines = comment.value\n\t\t\t\t.split(astUtils.LINEBREAK_MATCHER)\n\t\t\t\t.map(line => line.replace(/^\\s*$/u, \"\"));\n\t\t\tconst leadingWhitespace = `${sourceCode.text.slice(comment.range[0] - comment.loc.start.column, comment.range[0])}   `;\n\t\t\tlet offset = \"\";\n\n\t\t\t/*\n\t\t\t * Calculate the offset of the least indented line and use that as the basis for offsetting all the lines.\n\t\t\t * The first line should not be checked because it is inline with the opening block comment delimiter.\n\t\t\t */\n\t\t\tfor (const [i, line] of lines.entries()) {\n\t\t\t\tif (!line.trim().length || i === 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst [, lineOffset] = line.match(/^(\\s*\\*?\\s*)/u);\n\n\t\t\t\tif (lineOffset.length < leadingWhitespace.length) {\n\t\t\t\t\tconst newOffset = leadingWhitespace.slice(\n\t\t\t\t\t\tlineOffset.length - leadingWhitespace.length,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (newOffset.length > offset.length) {\n\t\t\t\t\t\toffset = newOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn lines.map(line => {\n\t\t\t\tconst match = line.match(/^(\\s*\\*?\\s*)(.*)/u);\n\t\t\t\tconst [, lineOffset, lineContents] = match;\n\n\t\t\t\tif (lineOffset.length > leadingWhitespace.length) {\n\t\t\t\t\treturn `${lineOffset.slice(leadingWhitespace.length - (offset.length + lineOffset.length))}${lineContents}`;\n\t\t\t\t}\n\n\t\t\t\tif (lineOffset.length < leadingWhitespace.length) {\n\t\t\t\t\treturn `${lineOffset.slice(leadingWhitespace.length)}${lineContents}`;\n\t\t\t\t}\n\n\t\t\t\treturn lineContents;\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Gets a list of comment lines in a group, formatting leading whitespace as necessary.\n\t\t * @param {Token[]} commentGroup A group of comments containing either multiple line comments or a single block comment.\n\t\t * @returns {string[]} A list of comment lines.\n\t\t */\n\t\tfunction getCommentLines(commentGroup) {\n\t\t\tconst [firstComment] = commentGroup;\n\n\t\t\tif (firstComment.type === \"Line\") {\n\t\t\t\treturn processSeparateLineComments(commentGroup);\n\t\t\t}\n\n\t\t\tif (isStarredBlockComment(commentGroup)) {\n\t\t\t\treturn processStarredBlockComment(firstComment);\n\t\t\t}\n\n\t\t\treturn processBareBlockComment(firstComment);\n\t\t}\n\n\t\t/**\n\t\t * Gets the initial offset (whitespace) from the beginning of a line to a given comment token.\n\t\t * @param {Token} comment The token to check.\n\t\t * @returns {string} The offset from the beginning of a line to the token.\n\t\t */\n\t\tfunction getInitialOffset(comment) {\n\t\t\treturn sourceCode.text.slice(\n\t\t\t\tcomment.range[0] - comment.loc.start.column,\n\t\t\t\tcomment.range[0],\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Converts a comment into starred-block form\n\t\t * @param {Token} firstComment The first comment of the group being converted\n\t\t * @param {string[]} commentLinesList A list of lines to appear in the new starred-block comment\n\t\t * @returns {string} A representation of the comment value in starred-block form, excluding start and end markers\n\t\t */\n\t\tfunction convertToStarredBlock(firstComment, commentLinesList) {\n\t\t\tconst initialOffset = getInitialOffset(firstComment);\n\n\t\t\treturn `/*\\n${commentLinesList.map(line => `${initialOffset} * ${line}`).join(\"\\n\")}\\n${initialOffset} */`;\n\t\t}\n\n\t\t/**\n\t\t * Converts a comment into separate-line form\n\t\t * @param {Token} firstComment The first comment of the group being converted\n\t\t * @param {string[]} commentLinesList A list of lines to appear in the new starred-block comment\n\t\t * @returns {string} A representation of the comment value in separate-line form\n\t\t */\n\t\tfunction convertToSeparateLines(firstComment, commentLinesList) {\n\t\t\treturn commentLinesList\n\t\t\t\t.map(line => `// ${line}`)\n\t\t\t\t.join(`\\n${getInitialOffset(firstComment)}`);\n\t\t}\n\n\t\t/**\n\t\t * Converts a comment into bare-block form\n\t\t * @param {Token} firstComment The first comment of the group being converted\n\t\t * @param {string[]} commentLinesList A list of lines to appear in the new starred-block comment\n\t\t * @returns {string} A representation of the comment value in bare-block form\n\t\t */\n\t\tfunction convertToBlock(firstComment, commentLinesList) {\n\t\t\treturn `/* ${commentLinesList.join(`\\n${getInitialOffset(firstComment)}   `)} */`;\n\t\t}\n\n\t\t/**\n\t\t * Each method checks a group of comments to see if it's valid according to the given option.\n\t\t * @param {Token[]} commentGroup A list of comments that appear together. This will either contain a single\n\t\t * block comment or multiple line comments.\n\t\t * @returns {void}\n\t\t */\n\t\tconst commentGroupCheckers = {\n\t\t\t\"starred-block\"(commentGroup) {\n\t\t\t\tconst [firstComment] = commentGroup;\n\t\t\t\tconst commentLines = getCommentLines(commentGroup);\n\n\t\t\t\tif (commentLines.some(value => value.includes(\"*/\"))) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (commentGroup.length > 1) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tstart: firstComment.loc.start,\n\t\t\t\t\t\t\tend: commentGroup.at(-1).loc.end,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmessageId: \"expectedBlock\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tconst range = [\n\t\t\t\t\t\t\t\tfirstComment.range[0],\n\t\t\t\t\t\t\t\tcommentGroup.at(-1).range[1],\n\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\treturn commentLines.some(value =>\n\t\t\t\t\t\t\t\tvalue.startsWith(\"/\"),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t: fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\t\trange,\n\t\t\t\t\t\t\t\t\t\tconvertToStarredBlock(\n\t\t\t\t\t\t\t\t\t\t\tfirstComment,\n\t\t\t\t\t\t\t\t\t\t\tcommentLines,\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconst lines = firstComment.value.split(\n\t\t\t\t\t\tastUtils.LINEBREAK_MATCHER,\n\t\t\t\t\t);\n\t\t\t\t\tconst expectedLeadingWhitespace =\n\t\t\t\t\t\tgetInitialOffset(firstComment);\n\t\t\t\t\tconst expectedLinePrefix = `${expectedLeadingWhitespace} *`;\n\n\t\t\t\t\tif (!/^\\*?\\s*$/u.test(lines[0])) {\n\t\t\t\t\t\tconst start = firstComment.value.startsWith(\"*\")\n\t\t\t\t\t\t\t? firstComment.range[0] + 1\n\t\t\t\t\t\t\t: firstComment.range[0];\n\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\t\tstart: firstComment.loc.start,\n\t\t\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\t\t\tline: firstComment.loc.start.line,\n\t\t\t\t\t\t\t\t\tcolumn: firstComment.loc.start.column + 2,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmessageId: \"startNewline\",\n\t\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\t\tfixer.insertTextAfterRange(\n\t\t\t\t\t\t\t\t\t[start, start + 2],\n\t\t\t\t\t\t\t\t\t`\\n${expectedLinePrefix}`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!/^\\s*$/u.test(lines.at(-1))) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\t\t\tline: firstComment.loc.end.line,\n\t\t\t\t\t\t\t\t\tcolumn: firstComment.loc.end.column - 2,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tend: firstComment.loc.end,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmessageId: \"endNewline\",\n\t\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\t\tfixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tfirstComment.range[1] - 2,\n\t\t\t\t\t\t\t\t\t\tfirstComment.range[1],\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t`\\n${expectedLinePrefix}/`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (\n\t\t\t\t\t\tlet lineNumber = firstComment.loc.start.line + 1;\n\t\t\t\t\t\tlineNumber <= firstComment.loc.end.line;\n\t\t\t\t\t\tlineNumber++\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst lineText = sourceCode.lines[lineNumber - 1];\n\t\t\t\t\t\tconst errorType = isStarredCommentLine(lineText)\n\t\t\t\t\t\t\t? \"alignment\"\n\t\t\t\t\t\t\t: \"missingStar\";\n\n\t\t\t\t\t\tif (!lineText.startsWith(expectedLinePrefix)) {\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\t\t\tstart: { line: lineNumber, column: 0 },\n\t\t\t\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\t\t\t\tline: lineNumber,\n\t\t\t\t\t\t\t\t\t\tcolumn: lineText.length,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tmessageId: errorType,\n\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\tconst lineStartIndex =\n\t\t\t\t\t\t\t\t\t\tsourceCode.getIndexFromLoc({\n\t\t\t\t\t\t\t\t\t\t\tline: lineNumber,\n\t\t\t\t\t\t\t\t\t\t\tcolumn: 0,\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tif (errorType === \"alignment\") {\n\t\t\t\t\t\t\t\t\t\tconst [, commentTextPrefix = \"\"] =\n\t\t\t\t\t\t\t\t\t\t\tlineText.match(/^(\\s*\\*)/u) || [];\n\t\t\t\t\t\t\t\t\t\tconst commentTextStartIndex =\n\t\t\t\t\t\t\t\t\t\t\tlineStartIndex +\n\t\t\t\t\t\t\t\t\t\t\tcommentTextPrefix.length;\n\n\t\t\t\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\tlineStartIndex,\n\t\t\t\t\t\t\t\t\t\t\t\tcommentTextStartIndex,\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\texpectedLinePrefix,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst [, commentTextPrefix = \"\"] =\n\t\t\t\t\t\t\t\t\t\tlineText.match(/^(\\s*)/u) || [];\n\t\t\t\t\t\t\t\t\tconst commentTextStartIndex =\n\t\t\t\t\t\t\t\t\t\tlineStartIndex +\n\t\t\t\t\t\t\t\t\t\tcommentTextPrefix.length;\n\t\t\t\t\t\t\t\t\tlet offset;\n\n\t\t\t\t\t\t\t\t\tfor (const [idx, line] of lines.entries()) {\n\t\t\t\t\t\t\t\t\t\tif (!/\\S+/u.test(line)) {\n\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tconst lineTextToAlignWith =\n\t\t\t\t\t\t\t\t\t\t\tsourceCode.lines[\n\t\t\t\t\t\t\t\t\t\t\t\tfirstComment.loc.start.line -\n\t\t\t\t\t\t\t\t\t\t\t\t\t1 +\n\t\t\t\t\t\t\t\t\t\t\t\t\tidx\n\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\tconst [\n\t\t\t\t\t\t\t\t\t\t\t,\n\t\t\t\t\t\t\t\t\t\t\tprefix = \"\",\n\t\t\t\t\t\t\t\t\t\t\tinitialOffset = \"\",\n\t\t\t\t\t\t\t\t\t\t] =\n\t\t\t\t\t\t\t\t\t\t\tlineTextToAlignWith.match(\n\t\t\t\t\t\t\t\t\t\t\t\t/^(\\s*(?:\\/?\\*)?(\\s*))/u,\n\t\t\t\t\t\t\t\t\t\t\t) || [];\n\n\t\t\t\t\t\t\t\t\t\toffset = `${commentTextPrefix.slice(prefix.length)}${initialOffset}`;\n\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t/^\\s*\\//u.test(lineText) &&\n\t\t\t\t\t\t\t\t\t\t\toffset.length === 0\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\toffset += \" \";\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\t\t[lineStartIndex, commentTextStartIndex],\n\t\t\t\t\t\t\t\t\t\t`${expectedLinePrefix}${offset}`,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"separate-lines\"(commentGroup) {\n\t\t\t\tconst [firstComment] = commentGroup;\n\n\t\t\t\tconst isJSDoc = isJSDocComment(commentGroup);\n\n\t\t\t\tif (firstComment.type !== \"Block\" || (!checkJSDoc && isJSDoc)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet commentLines = getCommentLines(commentGroup);\n\n\t\t\t\tif (isJSDoc) {\n\t\t\t\t\tcommentLines = commentLines.slice(\n\t\t\t\t\t\t1,\n\t\t\t\t\t\tcommentLines.length - 1,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst tokenAfter = sourceCode.getTokenAfter(firstComment, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t});\n\n\t\t\t\tif (\n\t\t\t\t\ttokenAfter &&\n\t\t\t\t\tfirstComment.loc.end.line === tokenAfter.loc.start.line\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tloc: {\n\t\t\t\t\t\tstart: firstComment.loc.start,\n\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\tline: firstComment.loc.start.line,\n\t\t\t\t\t\t\tcolumn: firstComment.loc.start.column + 2,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmessageId: \"expectedLines\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\tfirstComment,\n\t\t\t\t\t\t\tconvertToSeparateLines(firstComment, commentLines),\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t\t\"bare-block\"(commentGroup) {\n\t\t\t\tif (isJSDocComment(commentGroup)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst [firstComment] = commentGroup;\n\t\t\t\tconst commentLines = getCommentLines(commentGroup);\n\n\t\t\t\t// Disallows consecutive line comments in favor of using a block comment.\n\t\t\t\tif (\n\t\t\t\t\tfirstComment.type === \"Line\" &&\n\t\t\t\t\tcommentLines.length > 1 &&\n\t\t\t\t\t!commentLines.some(value => value.includes(\"*/\"))\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tstart: firstComment.loc.start,\n\t\t\t\t\t\t\tend: commentGroup.at(-1).loc.end,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmessageId: \"expectedBlock\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\tfirstComment.range[0],\n\t\t\t\t\t\t\t\t\tcommentGroup.at(-1).range[1],\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tconvertToBlock(firstComment, commentLines),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Prohibits block comments from having a * at the beginning of each line.\n\t\t\t\tif (isStarredBlockComment(commentGroup)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tstart: firstComment.loc.start,\n\t\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\t\tline: firstComment.loc.start.line,\n\t\t\t\t\t\t\t\tcolumn: firstComment.loc.start.column + 2,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmessageId: \"expectedBareBlock\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\tfirstComment,\n\t\t\t\t\t\t\t\tconvertToBlock(firstComment, commentLines),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\n\t\t//----------------------------------------------------------------------\n\t\t// Public\n\t\t//----------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram() {\n\t\t\t\treturn sourceCode\n\t\t\t\t\t.getAllComments()\n\t\t\t\t\t.filter(comment => comment.type !== \"Shebang\")\n\t\t\t\t\t.filter(\n\t\t\t\t\t\tcomment =>\n\t\t\t\t\t\t\t!astUtils.COMMENTS_IGNORE_PATTERN.test(\n\t\t\t\t\t\t\t\tcomment.value,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.filter(comment => {\n\t\t\t\t\t\tconst tokenBefore = sourceCode.getTokenBefore(comment, {\n\t\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t!tokenBefore ||\n\t\t\t\t\t\t\ttokenBefore.loc.end.line < comment.loc.start.line\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t\t.reduce((commentGroups, comment, index, commentList) => {\n\t\t\t\t\t\tconst tokenBefore = sourceCode.getTokenBefore(comment, {\n\t\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcomment.type === \"Line\" &&\n\t\t\t\t\t\t\tindex &&\n\t\t\t\t\t\t\tcommentList[index - 1].type === \"Line\" &&\n\t\t\t\t\t\t\ttokenBefore &&\n\t\t\t\t\t\t\ttokenBefore.loc.end.line ===\n\t\t\t\t\t\t\t\tcomment.loc.start.line - 1 &&\n\t\t\t\t\t\t\ttokenBefore === commentList[index - 1]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcommentGroups.at(-1).push(comment);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcommentGroups.push([comment]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn commentGroups;\n\t\t\t\t\t}, [])\n\t\t\t\t\t.filter(\n\t\t\t\t\t\tcommentGroup =>\n\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\tcommentGroup.length === 1 &&\n\t\t\t\t\t\t\t\tcommentGroup[0].loc.start.line ===\n\t\t\t\t\t\t\t\t\tcommentGroup[0].loc.end.line\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.forEach(commentGroupCheckers[option]);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Enforce newlines between operands of ternary expressions\n * @author Kai Cataldo\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"multiline-ternary\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/multiline-ternary\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce newlines between operands of ternary expressions\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/multiline-ternary\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"always\", \"always-multiline\", \"never\"],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\texpectedTestCons:\n\t\t\t\t\"Expected newline between test and consequent of ternary expression.\",\n\t\t\texpectedConsAlt:\n\t\t\t\t\"Expected newline between consequent and alternate of ternary expression.\",\n\t\t\tunexpectedTestCons:\n\t\t\t\t\"Unexpected newline between test and consequent of ternary expression.\",\n\t\t\tunexpectedConsAlt:\n\t\t\t\t\"Unexpected newline between consequent and alternate of ternary expression.\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst option = context.options[0];\n\t\tconst multiline = option !== \"never\";\n\t\tconst allowSingleLine = option === \"always-multiline\";\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tConditionalExpression(node) {\n\t\t\t\tconst questionToken = sourceCode.getTokenAfter(\n\t\t\t\t\tnode.test,\n\t\t\t\t\tastUtils.isNotClosingParenToken,\n\t\t\t\t);\n\t\t\t\tconst colonToken = sourceCode.getTokenAfter(\n\t\t\t\t\tnode.consequent,\n\t\t\t\t\tastUtils.isNotClosingParenToken,\n\t\t\t\t);\n\n\t\t\t\tconst firstTokenOfTest = sourceCode.getFirstToken(node);\n\t\t\t\tconst lastTokenOfTest =\n\t\t\t\t\tsourceCode.getTokenBefore(questionToken);\n\t\t\t\tconst firstTokenOfConsequent =\n\t\t\t\t\tsourceCode.getTokenAfter(questionToken);\n\t\t\t\tconst lastTokenOfConsequent =\n\t\t\t\t\tsourceCode.getTokenBefore(colonToken);\n\t\t\t\tconst firstTokenOfAlternate =\n\t\t\t\t\tsourceCode.getTokenAfter(colonToken);\n\n\t\t\t\tconst areTestAndConsequentOnSameLine =\n\t\t\t\t\tastUtils.isTokenOnSameLine(\n\t\t\t\t\t\tlastTokenOfTest,\n\t\t\t\t\t\tfirstTokenOfConsequent,\n\t\t\t\t\t);\n\t\t\t\tconst areConsequentAndAlternateOnSameLine =\n\t\t\t\t\tastUtils.isTokenOnSameLine(\n\t\t\t\t\t\tlastTokenOfConsequent,\n\t\t\t\t\t\tfirstTokenOfAlternate,\n\t\t\t\t\t);\n\n\t\t\t\tconst hasComments = !!sourceCode.getCommentsInside(node).length;\n\n\t\t\t\tif (!multiline) {\n\t\t\t\t\tif (!areTestAndConsequentOnSameLine) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: node.test,\n\t\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\t\tstart: firstTokenOfTest.loc.start,\n\t\t\t\t\t\t\t\tend: lastTokenOfTest.loc.end,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmessageId: \"unexpectedTestCons\",\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\tif (hasComments) {\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst fixers = [];\n\t\t\t\t\t\t\t\tconst areTestAndQuestionOnSameLine =\n\t\t\t\t\t\t\t\t\tastUtils.isTokenOnSameLine(\n\t\t\t\t\t\t\t\t\t\tlastTokenOfTest,\n\t\t\t\t\t\t\t\t\t\tquestionToken,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tconst areQuestionAndConsOnSameLine =\n\t\t\t\t\t\t\t\t\tastUtils.isTokenOnSameLine(\n\t\t\t\t\t\t\t\t\t\tquestionToken,\n\t\t\t\t\t\t\t\t\t\tfirstTokenOfConsequent,\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tif (!areTestAndQuestionOnSameLine) {\n\t\t\t\t\t\t\t\t\tfixers.push(\n\t\t\t\t\t\t\t\t\t\tfixer.removeRange([\n\t\t\t\t\t\t\t\t\t\t\tlastTokenOfTest.range[1],\n\t\t\t\t\t\t\t\t\t\t\tquestionToken.range[0],\n\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!areQuestionAndConsOnSameLine) {\n\t\t\t\t\t\t\t\t\tfixers.push(\n\t\t\t\t\t\t\t\t\t\tfixer.removeRange([\n\t\t\t\t\t\t\t\t\t\t\tquestionToken.range[1],\n\t\t\t\t\t\t\t\t\t\t\tfirstTokenOfConsequent.range[0],\n\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn fixers;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!areConsequentAndAlternateOnSameLine) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: node.consequent,\n\t\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\t\tstart: firstTokenOfConsequent.loc.start,\n\t\t\t\t\t\t\t\tend: lastTokenOfConsequent.loc.end,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmessageId: \"unexpectedConsAlt\",\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\tif (hasComments) {\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst fixers = [];\n\t\t\t\t\t\t\t\tconst areConsAndColonOnSameLine =\n\t\t\t\t\t\t\t\t\tastUtils.isTokenOnSameLine(\n\t\t\t\t\t\t\t\t\t\tlastTokenOfConsequent,\n\t\t\t\t\t\t\t\t\t\tcolonToken,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tconst areColonAndAltOnSameLine =\n\t\t\t\t\t\t\t\t\tastUtils.isTokenOnSameLine(\n\t\t\t\t\t\t\t\t\t\tcolonToken,\n\t\t\t\t\t\t\t\t\t\tfirstTokenOfAlternate,\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tif (!areConsAndColonOnSameLine) {\n\t\t\t\t\t\t\t\t\tfixers.push(\n\t\t\t\t\t\t\t\t\t\tfixer.removeRange([\n\t\t\t\t\t\t\t\t\t\t\tlastTokenOfConsequent.range[1],\n\t\t\t\t\t\t\t\t\t\t\tcolonToken.range[0],\n\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!areColonAndAltOnSameLine) {\n\t\t\t\t\t\t\t\t\tfixers.push(\n\t\t\t\t\t\t\t\t\t\tfixer.removeRange([\n\t\t\t\t\t\t\t\t\t\t\tcolonToken.range[1],\n\t\t\t\t\t\t\t\t\t\t\tfirstTokenOfAlternate.range[0],\n\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn fixers;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (\n\t\t\t\t\t\tallowSingleLine &&\n\t\t\t\t\t\tnode.loc.start.line === node.loc.end.line\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (areTestAndConsequentOnSameLine) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: node.test,\n\t\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\t\tstart: firstTokenOfTest.loc.start,\n\t\t\t\t\t\t\t\tend: lastTokenOfTest.loc.end,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmessageId: \"expectedTestCons\",\n\t\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\t\thasComments\n\t\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t\t: fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\tlastTokenOfTest.range[1],\n\t\t\t\t\t\t\t\t\t\t\t\tquestionToken.range[0],\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"\\n\",\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (areConsequentAndAlternateOnSameLine) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: node.consequent,\n\t\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\t\tstart: firstTokenOfConsequent.loc.start,\n\t\t\t\t\t\t\t\tend: lastTokenOfConsequent.loc.end,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmessageId: \"expectedConsAlt\",\n\t\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\t\thasComments\n\t\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t\t: fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\tlastTokenOfConsequent.range[1],\n\t\t\t\t\t\t\t\t\t\t\t\tcolonToken.range[0],\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"\\n\",\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of constructors without capital letters\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst CAPS_ALLOWED = [\n\t\"Array\",\n\t\"Boolean\",\n\t\"Date\",\n\t\"Error\",\n\t\"Function\",\n\t\"Number\",\n\t\"Object\",\n\t\"RegExp\",\n\t\"String\",\n\t\"Symbol\",\n\t\"BigInt\",\n];\n\n/**\n * A reducer function to invert an array to an Object mapping the string form of the key, to `true`.\n * @param {Object} map Accumulator object for the reduce.\n * @param {string} key Object key to set to `true`.\n * @returns {Object} Returns the updated Object for further reduction.\n */\nfunction invert(map, key) {\n\tmap[key] = true;\n\treturn map;\n}\n\n/**\n * Creates an object with the cap is new exceptions as its keys and true as their values.\n * @param {Object} config Rule configuration\n * @returns {Object} Object with cap is new exceptions.\n */\nfunction calculateCapIsNewExceptions(config) {\n\tconst capIsNewExceptions = Array.from(\n\t\tnew Set([...config.capIsNewExceptions, ...CAPS_ALLOWED]),\n\t);\n\n\treturn capIsNewExceptions.reduce(invert, {});\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require constructor names to begin with a capital letter\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/new-cap\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tnewIsCap: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tcapIsNew: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tnewIsCapExceptions: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tnewIsCapExceptionPattern: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t},\n\t\t\t\t\tcapIsNewExceptions: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tcapIsNewExceptionPattern: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t},\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tcapIsNew: true,\n\t\t\t\tcapIsNewExceptions: CAPS_ALLOWED,\n\t\t\t\tnewIsCap: true,\n\t\t\t\tnewIsCapExceptions: [],\n\t\t\t\tproperties: true,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tupper: \"A function with a name starting with an uppercase letter should only be used as a constructor.\",\n\t\t\tlower: \"A constructor name should not start with a lowercase letter.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [config] = context.options;\n\t\tconst skipProperties = !config.properties;\n\n\t\tconst newIsCapExceptions = config.newIsCapExceptions.reduce(invert, {});\n\t\tconst newIsCapExceptionPattern = config.newIsCapExceptionPattern\n\t\t\t? new RegExp(config.newIsCapExceptionPattern, \"u\")\n\t\t\t: null;\n\n\t\tconst capIsNewExceptions = calculateCapIsNewExceptions(config);\n\t\tconst capIsNewExceptionPattern = config.capIsNewExceptionPattern\n\t\t\t? new RegExp(config.capIsNewExceptionPattern, \"u\")\n\t\t\t: null;\n\n\t\tconst listeners = {};\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Get exact callee name from expression\n\t\t * @param {ASTNode} node CallExpression or NewExpression node\n\t\t * @returns {string} name\n\t\t */\n\t\tfunction extractNameFromExpression(node) {\n\t\t\treturn node.callee.type === \"Identifier\"\n\t\t\t\t? node.callee.name\n\t\t\t\t: astUtils.getStaticPropertyName(node.callee) || \"\";\n\t\t}\n\n\t\t/**\n\t\t * Returns the capitalization state of the string -\n\t\t * Whether the first character is uppercase, lowercase, or non-alphabetic\n\t\t * @param {string} str String\n\t\t * @returns {string} capitalization state: \"non-alpha\", \"lower\", or \"upper\"\n\t\t */\n\t\tfunction getCap(str) {\n\t\t\tconst firstChar = str.charAt(0);\n\n\t\t\tconst firstCharLower = firstChar.toLowerCase();\n\t\t\tconst firstCharUpper = firstChar.toUpperCase();\n\n\t\t\tif (firstCharLower === firstCharUpper) {\n\t\t\t\t// char has no uppercase variant, so it's non-alphabetic\n\t\t\t\treturn \"non-alpha\";\n\t\t\t}\n\t\t\tif (firstChar === firstCharLower) {\n\t\t\t\treturn \"lower\";\n\t\t\t}\n\t\t\treturn \"upper\";\n\t\t}\n\n\t\t/**\n\t\t * Check if capitalization is allowed for a CallExpression\n\t\t * @param {Object} allowedMap Object mapping calleeName to a Boolean\n\t\t * @param {ASTNode} node CallExpression node\n\t\t * @param {string} calleeName Capitalized callee name from a CallExpression\n\t\t * @param {Object} pattern RegExp object from options pattern\n\t\t * @returns {boolean} Returns true if the callee may be capitalized\n\t\t */\n\t\tfunction isCapAllowed(allowedMap, node, calleeName, pattern) {\n\t\t\tconst sourceText = sourceCode.getText(node.callee);\n\n\t\t\tif (allowedMap[calleeName] || allowedMap[sourceText]) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (pattern && pattern.test(sourceText)) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst callee = astUtils.skipChainExpression(node.callee);\n\n\t\t\tif (calleeName === \"UTC\" && callee.type === \"MemberExpression\") {\n\t\t\t\t// allow if callee is Date.UTC\n\t\t\t\treturn (\n\t\t\t\t\tcallee.object.type === \"Identifier\" &&\n\t\t\t\t\tcallee.object.name === \"Date\"\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn skipProperties && callee.type === \"MemberExpression\";\n\t\t}\n\n\t\t/**\n\t\t * Reports the given messageId for the given node. The location will be the start of the property or the callee.\n\t\t * @param {ASTNode} node CallExpression or NewExpression node.\n\t\t * @param {string} messageId The messageId to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node, messageId) {\n\t\t\tlet callee = astUtils.skipChainExpression(node.callee);\n\n\t\t\tif (callee.type === \"MemberExpression\") {\n\t\t\t\tcallee = callee.property;\n\t\t\t}\n\n\t\t\tcontext.report({ node, loc: callee.loc, messageId });\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\tif (config.newIsCap) {\n\t\t\tlisteners.NewExpression = function (node) {\n\t\t\t\tconst constructorName = extractNameFromExpression(node);\n\n\t\t\t\tif (constructorName) {\n\t\t\t\t\tconst capitalization = getCap(constructorName);\n\t\t\t\t\tconst isAllowed =\n\t\t\t\t\t\tcapitalization !== \"lower\" ||\n\t\t\t\t\t\tisCapAllowed(\n\t\t\t\t\t\t\tnewIsCapExceptions,\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tconstructorName,\n\t\t\t\t\t\t\tnewIsCapExceptionPattern,\n\t\t\t\t\t\t);\n\n\t\t\t\t\tif (!isAllowed) {\n\t\t\t\t\t\treport(node, \"lower\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tif (config.capIsNew) {\n\t\t\tlisteners.CallExpression = function (node) {\n\t\t\t\tconst calleeName = extractNameFromExpression(node);\n\n\t\t\t\tif (calleeName) {\n\t\t\t\t\tconst capitalization = getCap(calleeName);\n\t\t\t\t\tconst isAllowed =\n\t\t\t\t\t\tcapitalization !== \"upper\" ||\n\t\t\t\t\t\tisCapAllowed(\n\t\t\t\t\t\t\tcapIsNewExceptions,\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tcalleeName,\n\t\t\t\t\t\t\tcapIsNewExceptionPattern,\n\t\t\t\t\t\t);\n\n\t\t\t\t\tif (!isAllowed) {\n\t\t\t\t\t\treport(node, \"upper\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\treturn listeners;\n\t},\n};\n", "/**\n * @fileoverview Rule to flag when using constructor without parentheses\n * @author Ilya Volodin\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"new-parens\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/new-parens\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce or disallow parentheses when invoking a constructor with no arguments\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/new-parens\",\n\t\t},\n\n\t\tfixable: \"code\",\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\tmissing: \"Missing '()' invoking a constructor.\",\n\t\t\tunnecessary:\n\t\t\t\t\"Unnecessary '()' invoking a constructor with no arguments.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst options = context.options;\n\t\tconst always = options[0] !== \"never\"; // Default is always\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tNewExpression(node) {\n\t\t\t\tif (node.arguments.length !== 0) {\n\t\t\t\t\treturn; // if there are arguments, there have to be parens\n\t\t\t\t}\n\n\t\t\t\tconst lastToken = sourceCode.getLastToken(node);\n\t\t\t\tconst hasLastParen =\n\t\t\t\t\tlastToken && astUtils.isClosingParenToken(lastToken);\n\n\t\t\t\t// `hasParens` is true only if the new expression ends with its own parens, e.g., new new foo() does not end with its own parens\n\t\t\t\tconst hasParens =\n\t\t\t\t\thasLastParen &&\n\t\t\t\t\tastUtils.isOpeningParenToken(\n\t\t\t\t\t\tsourceCode.getTokenBefore(lastToken),\n\t\t\t\t\t) &&\n\t\t\t\t\tnode.callee.range[1] < node.range[1];\n\n\t\t\t\tif (always) {\n\t\t\t\t\tif (!hasParens) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"missing\",\n\t\t\t\t\t\t\tfix: fixer => fixer.insertTextAfter(node, \"()\"),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (hasParens) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"unnecessary\",\n\t\t\t\t\t\t\tfix: fixer => [\n\t\t\t\t\t\t\t\tfixer.remove(\n\t\t\t\t\t\t\t\t\tsourceCode.getTokenBefore(lastToken),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tfixer.remove(lastToken),\n\t\t\t\t\t\t\t\tfixer.insertTextBefore(node, \"(\"),\n\t\t\t\t\t\t\t\tfixer.insertTextAfter(node, \")\"),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to check empty newline after \"var\" statement\n * @author Gopal Venkatesan\n * @deprecated in ESLint v4.0.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require or disallow an empty line after variable declarations\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/newline-after-var\",\n\t\t},\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"never\", \"always\"],\n\t\t\t},\n\t\t],\n\t\tfixable: \"whitespace\",\n\t\tmessages: {\n\t\t\texpected: \"Expected blank line after variable declarations.\",\n\t\t\tunexpected: \"Unexpected blank line after variable declarations.\",\n\t\t},\n\n\t\tdeprecated: {\n\t\t\tmessage: \"The rule was replaced with a more general rule.\",\n\t\t\turl: \"https://eslint.org/blog/2017/06/eslint-v4.0.0-released/\",\n\t\t\tdeprecatedSince: \"4.0.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage: \"The new rule moved to a plugin.\",\n\t\t\t\t\turl: \"https://eslint.org/docs/latest/rules/padding-line-between-statements#examples\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"padding-line-between-statements\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/padding-line-between-statements\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t// Default `mode` to \"always\".\n\t\tconst mode = context.options[0] === \"never\" ? \"never\" : \"always\";\n\n\t\t// Cache starting and ending line numbers of comments for faster lookup\n\t\tconst commentEndLine = sourceCode\n\t\t\t.getAllComments()\n\t\t\t.reduce((result, token) => {\n\t\t\t\tresult[token.loc.start.line] = token.loc.end.line;\n\t\t\t\treturn result;\n\t\t\t}, {});\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Gets a token from the given node to compare line to the next statement.\n\t\t *\n\t\t * In general, the token is the last token of the node. However, the token is the second last token if the following conditions satisfy.\n\t\t *\n\t\t * - The last token is semicolon.\n\t\t * - The semicolon is on a different line from the previous token of the semicolon.\n\t\t *\n\t\t * This behavior would address semicolon-less style code. e.g.:\n\t\t *\n\t\t *     var foo = 1\n\t\t *\n\t\t *     ;(a || b).doSomething()\n\t\t * @param {ASTNode} node The node to get.\n\t\t * @returns {Token} The token to compare line to the next statement.\n\t\t */\n\t\tfunction getLastToken(node) {\n\t\t\tconst lastToken = sourceCode.getLastToken(node);\n\n\t\t\tif (lastToken.type === \"Punctuator\" && lastToken.value === \";\") {\n\t\t\t\tconst prevToken = sourceCode.getTokenBefore(lastToken);\n\n\t\t\t\tif (prevToken.loc.end.line !== lastToken.loc.start.line) {\n\t\t\t\t\treturn prevToken;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn lastToken;\n\t\t}\n\n\t\t/**\n\t\t * Determine if provided keyword is a variable declaration\n\t\t * @private\n\t\t * @param {string} keyword keyword to test\n\t\t * @returns {boolean} True if `keyword` is a type of var\n\t\t */\n\t\tfunction isVar(keyword) {\n\t\t\treturn (\n\t\t\t\tkeyword === \"var\" || keyword === \"let\" || keyword === \"const\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determine if provided keyword is a variant of for specifiers\n\t\t * @private\n\t\t * @param {string} keyword keyword to test\n\t\t * @returns {boolean} True if `keyword` is a variant of for specifier\n\t\t */\n\t\tfunction isForTypeSpecifier(keyword) {\n\t\t\treturn (\n\t\t\t\tkeyword === \"ForStatement\" ||\n\t\t\t\tkeyword === \"ForInStatement\" ||\n\t\t\t\tkeyword === \"ForOfStatement\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determine if provided keyword is an export specifiers\n\t\t * @private\n\t\t * @param {string} nodeType nodeType to test\n\t\t * @returns {boolean} True if `nodeType` is an export specifier\n\t\t */\n\t\tfunction isExportSpecifier(nodeType) {\n\t\t\treturn (\n\t\t\t\tnodeType === \"ExportNamedDeclaration\" ||\n\t\t\t\tnodeType === \"ExportSpecifier\" ||\n\t\t\t\tnodeType === \"ExportDefaultDeclaration\" ||\n\t\t\t\tnodeType === \"ExportAllDeclaration\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determine if provided node is the last of their parent block.\n\t\t * @private\n\t\t * @param {ASTNode} node node to test\n\t\t * @returns {boolean} True if `node` is last of their parent block.\n\t\t */\n\t\tfunction isLastNode(node) {\n\t\t\tconst token = sourceCode.getTokenAfter(node);\n\n\t\t\treturn (\n\t\t\t\t!token || (token.type === \"Punctuator\" && token.value === \"}\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Gets the last line of a group of consecutive comments\n\t\t * @param {number} commentStartLine The starting line of the group\n\t\t * @returns {number} The number of the last comment line of the group\n\t\t */\n\t\tfunction getLastCommentLineOfBlock(commentStartLine) {\n\t\t\tconst currentCommentEnd = commentEndLine[commentStartLine];\n\n\t\t\treturn commentEndLine[currentCommentEnd + 1]\n\t\t\t\t? getLastCommentLineOfBlock(currentCommentEnd + 1)\n\t\t\t\t: currentCommentEnd;\n\t\t}\n\n\t\t/**\n\t\t * Determine if a token starts more than one line after a comment ends\n\t\t * @param {token} token The token being checked\n\t\t * @param {integer} commentStartLine The line number on which the comment starts\n\t\t * @returns {boolean} True if `token` does not start immediately after a comment\n\t\t */\n\t\tfunction hasBlankLineAfterComment(token, commentStartLine) {\n\t\t\treturn (\n\t\t\t\ttoken.loc.start.line >\n\t\t\t\tgetLastCommentLineOfBlock(commentStartLine) + 1\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks that a blank line exists after a variable declaration when mode is\n\t\t * set to \"always\", or checks that there is no blank line when mode is set\n\t\t * to \"never\"\n\t\t * @private\n\t\t * @param {ASTNode} node `VariableDeclaration` node to test\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForBlankLine(node) {\n\t\t\t/*\n\t\t\t * lastToken is the last token on the node's line. It will usually also be the last token of the node, but it will\n\t\t\t * sometimes be second-last if there is a semicolon on a different line.\n\t\t\t */\n\t\t\tconst lastToken = getLastToken(node),\n\t\t\t\t/*\n\t\t\t\t * If lastToken is the last token of the node, nextToken should be the token after the node. Otherwise, nextToken\n\t\t\t\t * is the last token of the node.\n\t\t\t\t */\n\t\t\t\tnextToken =\n\t\t\t\t\tlastToken === sourceCode.getLastToken(node)\n\t\t\t\t\t\t? sourceCode.getTokenAfter(node)\n\t\t\t\t\t\t: sourceCode.getLastToken(node),\n\t\t\t\tnextLineNum = lastToken.loc.end.line + 1;\n\n\t\t\t// Ignore if there is no following statement\n\t\t\tif (!nextToken) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Ignore if parent of node is a for variant\n\t\t\tif (isForTypeSpecifier(node.parent.type)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Ignore if parent of node is an export specifier\n\t\t\tif (isExportSpecifier(node.parent.type)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Some coding styles use multiple `var` statements, so do nothing if\n\t\t\t * the next token is a `var` statement.\n\t\t\t */\n\t\t\tif (nextToken.type === \"Keyword\" && isVar(nextToken.value)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Ignore if it is last statement in a block\n\t\t\tif (isLastNode(node)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Next statement is not a `var`...\n\t\t\tconst noNextLineToken = nextToken.loc.start.line > nextLineNum;\n\t\t\tconst hasNextLineComment =\n\t\t\t\ttypeof commentEndLine[nextLineNum] !== \"undefined\";\n\n\t\t\tif (mode === \"never\" && noNextLineToken && !hasNextLineComment) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tconst linesBetween = sourceCode\n\t\t\t\t\t\t\t.getText()\n\t\t\t\t\t\t\t.slice(lastToken.range[1], nextToken.range[0])\n\t\t\t\t\t\t\t.split(astUtils.LINEBREAK_MATCHER);\n\n\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t[lastToken.range[1], nextToken.range[0]],\n\t\t\t\t\t\t\t`${linesBetween.slice(0, -1).join(\"\")}\\n${linesBetween.at(-1)}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Token on the next line, or comment without blank line\n\t\t\tif (\n\t\t\t\tmode === \"always\" &&\n\t\t\t\t(!noNextLineToken ||\n\t\t\t\t\t(hasNextLineComment &&\n\t\t\t\t\t\t!hasBlankLineAfterComment(nextToken, nextLineNum)))\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"expected\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t(noNextLineToken\n\t\t\t\t\t\t\t\t? getLastCommentLineOfBlock(nextLineNum)\n\t\t\t\t\t\t\t\t: lastToken.loc.end.line) ===\n\t\t\t\t\t\t\tnextToken.loc.start.line\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn fixer.insertTextBefore(nextToken, \"\\n\\n\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn fixer.insertTextBeforeRange(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tnextToken.range[0] - nextToken.loc.start.column,\n\t\t\t\t\t\t\t\tnextToken.range[1],\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"\\n\",\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tVariableDeclaration: checkForBlankLine,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to require newlines before `return` statement\n * @author Kai Cataldo\n * @deprecated in ESLint v4.0.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require an empty line before `return` statements\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/newline-before-return\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\t\tschema: [],\n\t\tmessages: {\n\t\t\texpected: \"Expected newline before return statement.\",\n\t\t},\n\n\t\tdeprecated: {\n\t\t\tmessage: \"The rule was replaced with a more general rule.\",\n\t\t\turl: \"https://eslint.org/blog/2017/06/eslint-v4.0.0-released/\",\n\t\t\tdeprecatedSince: \"4.0.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage: \"The new rule moved to a plugin.\",\n\t\t\t\t\turl: \"https://eslint.org/docs/latest/rules/padding-line-between-statements#examples\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"padding-line-between-statements\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/padding-line-between-statements\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Tests whether node is preceded by supplied tokens\n\t\t * @param {ASTNode} node node to check\n\t\t * @param {Array} testTokens array of tokens to test against\n\t\t * @returns {boolean} Whether or not the node is preceded by one of the supplied tokens\n\t\t * @private\n\t\t */\n\t\tfunction isPrecededByTokens(node, testTokens) {\n\t\t\tconst tokenBefore = sourceCode.getTokenBefore(node);\n\n\t\t\treturn testTokens.includes(tokenBefore.value);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether node is the first node after statement or in block\n\t\t * @param {ASTNode} node node to check\n\t\t * @returns {boolean} Whether or not the node is the first node after statement or in block\n\t\t * @private\n\t\t */\n\t\tfunction isFirstNode(node) {\n\t\t\tconst parentType = node.parent.type;\n\n\t\t\tif (node.parent.body) {\n\t\t\t\treturn Array.isArray(node.parent.body)\n\t\t\t\t\t? node.parent.body[0] === node\n\t\t\t\t\t: node.parent.body === node;\n\t\t\t}\n\n\t\t\tif (parentType === \"IfStatement\") {\n\t\t\t\treturn isPrecededByTokens(node, [\"else\", \")\"]);\n\t\t\t}\n\t\t\tif (parentType === \"DoWhileStatement\") {\n\t\t\t\treturn isPrecededByTokens(node, [\"do\"]);\n\t\t\t}\n\t\t\tif (parentType === \"SwitchCase\") {\n\t\t\t\treturn isPrecededByTokens(node, [\":\"]);\n\t\t\t}\n\t\t\treturn isPrecededByTokens(node, [\")\"]);\n\t\t}\n\n\t\t/**\n\t\t * Returns the number of lines of comments that precede the node\n\t\t * @param {ASTNode} node node to check for overlapping comments\n\t\t * @param {number} lineNumTokenBefore line number of previous token, to check for overlapping comments\n\t\t * @returns {number} Number of lines of comments that precede the node\n\t\t * @private\n\t\t */\n\t\tfunction calcCommentLines(node, lineNumTokenBefore) {\n\t\t\tconst comments = sourceCode.getCommentsBefore(node);\n\t\t\tlet numLinesComments = 0;\n\n\t\t\tif (!comments.length) {\n\t\t\t\treturn numLinesComments;\n\t\t\t}\n\n\t\t\tcomments.forEach(comment => {\n\t\t\t\tnumLinesComments++;\n\n\t\t\t\tif (comment.type === \"Block\") {\n\t\t\t\t\tnumLinesComments +=\n\t\t\t\t\t\tcomment.loc.end.line - comment.loc.start.line;\n\t\t\t\t}\n\n\t\t\t\t// avoid counting lines with inline comments twice\n\t\t\t\tif (comment.loc.start.line === lineNumTokenBefore) {\n\t\t\t\t\tnumLinesComments--;\n\t\t\t\t}\n\n\t\t\t\tif (comment.loc.end.line === node.loc.start.line) {\n\t\t\t\t\tnumLinesComments--;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn numLinesComments;\n\t\t}\n\n\t\t/**\n\t\t * Returns the line number of the token before the node that is passed in as an argument\n\t\t * @param {ASTNode} node The node to use as the start of the calculation\n\t\t * @returns {number} Line number of the token before `node`\n\t\t * @private\n\t\t */\n\t\tfunction getLineNumberOfTokenBefore(node) {\n\t\t\tconst tokenBefore = sourceCode.getTokenBefore(node);\n\t\t\tlet lineNumTokenBefore;\n\n\t\t\t/**\n\t\t\t * Global return (at the beginning of a script) is a special case.\n\t\t\t * If there is no token before `return`, then we expect no line\n\t\t\t * break before the return. Comments are allowed to occupy lines\n\t\t\t * before the global return, just no blank lines.\n\t\t\t * Setting lineNumTokenBefore to zero in that case results in the\n\t\t\t * desired behavior.\n\t\t\t */\n\t\t\tif (tokenBefore) {\n\t\t\t\tlineNumTokenBefore = tokenBefore.loc.end.line;\n\t\t\t} else {\n\t\t\t\tlineNumTokenBefore = 0; // global return at beginning of script\n\t\t\t}\n\n\t\t\treturn lineNumTokenBefore;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether node is preceded by a newline\n\t\t * @param {ASTNode} node node to check\n\t\t * @returns {boolean} Whether or not the node is preceded by a newline\n\t\t * @private\n\t\t */\n\t\tfunction hasNewlineBefore(node) {\n\t\t\tconst lineNumNode = node.loc.start.line;\n\t\t\tconst lineNumTokenBefore = getLineNumberOfTokenBefore(node);\n\t\t\tconst commentLines = calcCommentLines(node, lineNumTokenBefore);\n\n\t\t\treturn lineNumNode - lineNumTokenBefore - commentLines > 1;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether it is safe to apply a fix to a given return statement.\n\t\t *\n\t\t * The fix is not considered safe if the given return statement has leading comments,\n\t\t * as we cannot safely determine if the newline should be added before or after the comments.\n\t\t * For more information, see: https://github.com/eslint/eslint/issues/5958#issuecomment-222767211\n\t\t * @param {ASTNode} node The return statement node to check.\n\t\t * @returns {boolean} `true` if it can fix the node.\n\t\t * @private\n\t\t */\n\t\tfunction canFix(node) {\n\t\t\tconst leadingComments = sourceCode.getCommentsBefore(node);\n\t\t\tconst lastLeadingComment = leadingComments.at(-1);\n\t\t\tconst tokenBefore = sourceCode.getTokenBefore(node);\n\n\t\t\tif (leadingComments.length === 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * if the last leading comment ends in the same line as the previous token and\n\t\t\t * does not share a line with the `return` node, we can consider it safe to fix.\n\t\t\t * Example:\n\t\t\t * function a() {\n\t\t\t *     var b; //comment\n\t\t\t *     return;\n\t\t\t * }\n\t\t\t */\n\t\t\tif (\n\t\t\t\tlastLeadingComment.loc.end.line === tokenBefore.loc.end.line &&\n\t\t\t\tlastLeadingComment.loc.end.line !== node.loc.start.line\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tReturnStatement(node) {\n\t\t\t\tif (!isFirstNode(node) && !hasNewlineBefore(node)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"expected\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tif (canFix(node)) {\n\t\t\t\t\t\t\t\tconst tokenBefore =\n\t\t\t\t\t\t\t\t\tsourceCode.getTokenBefore(node);\n\t\t\t\t\t\t\t\tconst newlines =\n\t\t\t\t\t\t\t\t\tnode.loc.start.line ===\n\t\t\t\t\t\t\t\t\ttokenBefore.loc.end.line\n\t\t\t\t\t\t\t\t\t\t? \"\\n\\n\"\n\t\t\t\t\t\t\t\t\t\t: \"\\n\";\n\n\t\t\t\t\t\t\t\treturn fixer.insertTextBefore(node, newlines);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to ensure newline per method call when chaining calls\n * @author Rajendra Patil\n * @author Burak Yigit Kaya\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"newline-per-chained-call\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/newline-per-chained-call\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require a newline after each call in a method chain\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/newline-per-chained-call\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tignoreChainWithDepth: {\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 1,\n\t\t\t\t\t\tmaximum: 10,\n\t\t\t\t\t\tdefault: 2,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\texpected: \"Expected line break before `{{callee}}`.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst options = context.options[0] || {},\n\t\t\tignoreChainWithDepth = options.ignoreChainWithDepth || 2;\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Get the prefix of a given MemberExpression node.\n\t\t * If the MemberExpression node is a computed value it returns a\n\t\t * left bracket. If not it returns a period.\n\t\t * @param {ASTNode} node A MemberExpression node to get\n\t\t * @returns {string} The prefix of the node.\n\t\t */\n\t\tfunction getPrefix(node) {\n\t\t\tif (node.computed) {\n\t\t\t\tif (node.optional) {\n\t\t\t\t\treturn \"?.[\";\n\t\t\t\t}\n\t\t\t\treturn \"[\";\n\t\t\t}\n\t\t\tif (node.optional) {\n\t\t\t\treturn \"?.\";\n\t\t\t}\n\t\t\treturn \".\";\n\t\t}\n\n\t\t/**\n\t\t * Gets the property text of a given MemberExpression node.\n\t\t * If the text is multiline, this returns only the first line.\n\t\t * @param {ASTNode} node A MemberExpression node to get.\n\t\t * @returns {string} The property text of the node.\n\t\t */\n\t\tfunction getPropertyText(node) {\n\t\t\tconst prefix = getPrefix(node);\n\t\t\tconst lines = sourceCode\n\t\t\t\t.getText(node.property)\n\t\t\t\t.split(astUtils.LINEBREAK_MATCHER);\n\t\t\tconst suffix = node.computed && lines.length === 1 ? \"]\" : \"\";\n\n\t\t\treturn prefix + lines[0] + suffix;\n\t\t}\n\n\t\treturn {\n\t\t\t\"CallExpression:exit\"(node) {\n\t\t\t\tconst callee = astUtils.skipChainExpression(node.callee);\n\n\t\t\t\tif (callee.type !== \"MemberExpression\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet parent = astUtils.skipChainExpression(callee.object);\n\t\t\t\tlet depth = 1;\n\n\t\t\t\twhile (parent && parent.callee) {\n\t\t\t\t\tdepth += 1;\n\t\t\t\t\tparent = astUtils.skipChainExpression(\n\t\t\t\t\t\tastUtils.skipChainExpression(parent.callee).object,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tdepth > ignoreChainWithDepth &&\n\t\t\t\t\tastUtils.isTokenOnSameLine(callee.object, callee.property)\n\t\t\t\t) {\n\t\t\t\t\tconst firstTokenAfterObject = sourceCode.getTokenAfter(\n\t\t\t\t\t\tcallee.object,\n\t\t\t\t\t\tastUtils.isNotClosingParenToken,\n\t\t\t\t\t);\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: callee.property,\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tstart: firstTokenAfterObject.loc.start,\n\t\t\t\t\t\t\tend: callee.loc.end,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmessageId: \"expected\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tcallee: getPropertyText(callee),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.insertTextBefore(\n\t\t\t\t\t\t\t\tfirstTokenAfterObject,\n\t\t\t\t\t\t\t\t\"\\n\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of alert, confirm, prompt\n * @author Nicholas C. Zakas\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst {\n\tgetStaticPropertyName: getPropertyName,\n\tgetVariableByName,\n\tskipChainExpression,\n} = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks if the given name is a prohibited identifier.\n * @param {string} name The name to check\n * @returns {boolean} Whether or not the name is prohibited.\n */\nfunction isProhibitedIdentifier(name) {\n\treturn /^(?:alert|confirm|prompt)$/u.test(name);\n}\n\n/**\n * Finds the eslint-scope reference in the given scope.\n * @param {Object} scope The scope to search.\n * @param {ASTNode} node The identifier node.\n * @returns {Reference|null} Returns the found reference or null if none were found.\n */\nfunction findReference(scope, node) {\n\tconst references = scope.references.filter(\n\t\treference =>\n\t\t\treference.identifier.range[0] === node.range[0] &&\n\t\t\treference.identifier.range[1] === node.range[1],\n\t);\n\n\tif (references.length === 1) {\n\t\treturn references[0];\n\t}\n\treturn null;\n}\n\n/**\n * Checks if the given identifier node is shadowed in the given scope.\n * @param {Object} scope The current scope.\n * @param {string} node The identifier node to check\n * @returns {boolean} Whether or not the name is shadowed.\n */\nfunction isShadowed(scope, node) {\n\tconst reference = findReference(scope, node);\n\n\treturn (\n\t\treference && reference.resolved && reference.resolved.defs.length > 0\n\t);\n}\n\n/**\n * Checks if the given identifier node is a ThisExpression in the global scope or the global window property.\n * @param {Object} scope The current scope.\n * @param {string} node The identifier node to check\n * @returns {boolean} Whether or not the node is a reference to the global object.\n */\nfunction isGlobalThisReferenceOrGlobalWindow(scope, node) {\n\tif (scope.type === \"global\" && node.type === \"ThisExpression\") {\n\t\treturn true;\n\t}\n\tif (\n\t\tnode.type === \"Identifier\" &&\n\t\t(node.name === \"window\" ||\n\t\t\t(node.name === \"globalThis\" &&\n\t\t\t\tgetVariableByName(scope, \"globalThis\")))\n\t) {\n\t\treturn !isShadowed(scope, node);\n\t}\n\n\treturn false;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow the use of `alert`, `confirm`, and `prompt`\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-alert\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Unexpected {{name}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tCallExpression(node) {\n\t\t\t\tconst callee = skipChainExpression(node.callee),\n\t\t\t\t\tcurrentScope = sourceCode.getScope(node);\n\n\t\t\t\t// without window.\n\t\t\t\tif (callee.type === \"Identifier\") {\n\t\t\t\t\tconst name = callee.name;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!isShadowed(currentScope, callee) &&\n\t\t\t\t\t\tisProhibitedIdentifier(callee.name)\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\t\tdata: { name },\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else if (\n\t\t\t\t\tcallee.type === \"MemberExpression\" &&\n\t\t\t\t\tisGlobalThisReferenceOrGlobalWindow(\n\t\t\t\t\t\tcurrentScope,\n\t\t\t\t\t\tcallee.object,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tconst name = getPropertyName(callee);\n\n\t\t\t\t\tif (isProhibitedIdentifier(name)) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\t\tdata: { name },\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallow construction of dense arrays using the Array constructor\n * @author Matt DuVall <http://www.mattduvall.com/>\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst {\n\tgetVariableByName,\n\tisClosingParenToken,\n\tisOpeningParenToken,\n\tisStartOfExpressionStatement,\n\tneedsPrecedingSemicolon,\n} = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow `Array` constructors\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-array-constructor\",\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\thasSuggestions: true,\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tpreferLiteral: \"The array literal notation [] is preferable.\",\n\t\t\tuseLiteral: \"Replace with an array literal.\",\n\t\t\tuseLiteralAfterSemicolon:\n\t\t\t\t\"Replace with an array literal, add preceding semicolon.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Checks if there are comments in Array constructor expressions.\n\t\t * @param {ASTNode} node A CallExpression or NewExpression node.\n\t\t * @returns {boolean} True if there are comments, false otherwise.\n\t\t */\n\t\tfunction hasCommentsInArrayConstructor(node) {\n\t\t\tconst firstToken = sourceCode.getFirstToken(node);\n\t\t\tconst lastToken = sourceCode.getLastToken(node);\n\n\t\t\tlet lastRelevantToken = sourceCode.getLastToken(node.callee);\n\n\t\t\twhile (\n\t\t\t\tlastRelevantToken !== lastToken &&\n\t\t\t\t!isOpeningParenToken(lastRelevantToken)\n\t\t\t) {\n\t\t\t\tlastRelevantToken = sourceCode.getTokenAfter(lastRelevantToken);\n\t\t\t}\n\n\t\t\treturn sourceCode.commentsExistBetween(\n\t\t\t\tfirstToken,\n\t\t\t\tlastRelevantToken,\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Gets the text between the calling parentheses of a CallExpression or NewExpression.\n\t\t * @param {ASTNode} node A CallExpression or NewExpression node.\n\t\t * @returns {string} The text between the calling parentheses, or an empty string if there are none.\n\t\t */\n\t\tfunction getArgumentsText(node) {\n\t\t\tconst lastToken = sourceCode.getLastToken(node);\n\n\t\t\tif (!isClosingParenToken(lastToken)) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\tlet firstToken = node.callee;\n\n\t\t\tdo {\n\t\t\t\tfirstToken = sourceCode.getTokenAfter(firstToken);\n\t\t\t\tif (!firstToken || firstToken === lastToken) {\n\t\t\t\t\treturn \"\";\n\t\t\t\t}\n\t\t\t} while (!isOpeningParenToken(firstToken));\n\n\t\t\treturn sourceCode.text.slice(\n\t\t\t\tfirstToken.range[1],\n\t\t\t\tlastToken.range[0],\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Disallow construction of dense arrays using the Array constructor\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction check(node) {\n\t\t\tif (\n\t\t\t\tnode.callee.type !== \"Identifier\" ||\n\t\t\t\tnode.callee.name !== \"Array\" ||\n\t\t\t\tnode.typeArguments ||\n\t\t\t\t(node.arguments.length === 1 &&\n\t\t\t\t\tnode.arguments[0].type !== \"SpreadElement\")\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst variable = getVariableByName(\n\t\t\t\tsourceCode.getScope(node),\n\t\t\t\t\"Array\",\n\t\t\t);\n\n\t\t\t/*\n\t\t\t * Check if `Array` is a predefined global variable: predefined globals have no declarations,\n\t\t\t * meaning that the `identifiers` list of the variable object is empty.\n\t\t\t */\n\t\t\tif (variable && variable.identifiers.length === 0) {\n\t\t\t\tconst argsText = getArgumentsText(node);\n\t\t\t\tlet fixText;\n\t\t\t\tlet messageId;\n\n\t\t\t\tconst nonSpreadCount = node.arguments.reduce(\n\t\t\t\t\t(count, arg) =>\n\t\t\t\t\t\targ.type !== \"SpreadElement\" ? count + 1 : count,\n\t\t\t\t\t0,\n\t\t\t\t);\n\n\t\t\t\tconst shouldSuggest =\n\t\t\t\t\tnode.optional ||\n\t\t\t\t\t(node.arguments.length > 0 && nonSpreadCount < 2) ||\n\t\t\t\t\thasCommentsInArrayConstructor(node);\n\n\t\t\t\t/*\n\t\t\t\t * Check if the suggested change should include a preceding semicolon or not.\n\t\t\t\t * Due to JavaScript's ASI rules, a missing semicolon may be inserted automatically\n\t\t\t\t * before an expression like `Array()` or `new Array()`, but not when the expression\n\t\t\t\t * is changed into an array literal like `[]`.\n\t\t\t\t */\n\t\t\t\tif (\n\t\t\t\t\tisStartOfExpressionStatement(node) &&\n\t\t\t\t\tneedsPrecedingSemicolon(sourceCode, node)\n\t\t\t\t) {\n\t\t\t\t\tfixText = `;[${argsText}]`;\n\t\t\t\t\tmessageId = \"useLiteralAfterSemicolon\";\n\t\t\t\t} else {\n\t\t\t\t\tfixText = `[${argsText}]`;\n\t\t\t\t\tmessageId = \"useLiteral\";\n\t\t\t\t}\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"preferLiteral\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tif (shouldSuggest) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn fixer.replaceText(node, fixText);\n\t\t\t\t\t},\n\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\tif (shouldSuggest) {\n\t\t\t\t\t\t\t\t\treturn fixer.replaceText(node, fixText);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tCallExpression: check,\n\t\t\tNewExpression: check,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview disallow using an async function as a Promise executor\n * @author Teddy Katz\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow using an async function as a Promise executor\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-async-promise-executor\",\n\t\t},\n\n\t\tfixable: null,\n\t\tschema: [],\n\t\tmessages: {\n\t\t\tasync: \"Promise executor functions should not be async.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\t\"NewExpression[callee.name='Promise'][arguments.0.async=true]\"(\n\t\t\t\tnode,\n\t\t\t) {\n\t\t\t\tif (!sourceCode.isGlobalReference(node.callee)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: sourceCode.getFirstToken(\n\t\t\t\t\t\tnode.arguments[0],\n\t\t\t\t\t\ttoken => token.value === \"async\",\n\t\t\t\t\t),\n\t\t\t\t\tmessageId: \"async\",\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow uses of await inside of loops.\n * @author Nat Mote (nmote)\n */\n\"use strict\";\n\n/**\n * Check whether it should stop traversing ancestors at the given node.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} `true` if it should stop traversing.\n */\nfunction isBoundary(node) {\n\tconst t = node.type;\n\n\treturn (\n\t\tt === \"FunctionDeclaration\" ||\n\t\tt === \"FunctionExpression\" ||\n\t\tt === \"ArrowFunctionExpression\" ||\n\t\t/*\n\t\t * Don't report the await expressions on for-await-of loop since it's\n\t\t * asynchronous iteration intentionally.\n\t\t */\n\t\t(t === \"ForOfStatement\" && node.await === true)\n\t);\n}\n\n/**\n * Check whether the given node is in loop.\n * @param {ASTNode} node A node to check.\n * @param {ASTNode} parent A parent node to check.\n * @returns {boolean} `true` if the node is in loop.\n */\nfunction isLooped(node, parent) {\n\tswitch (parent.type) {\n\t\tcase \"ForStatement\":\n\t\t\treturn (\n\t\t\t\tnode === parent.test ||\n\t\t\t\tnode === parent.update ||\n\t\t\t\tnode === parent.body\n\t\t\t);\n\n\t\tcase \"ForOfStatement\":\n\t\tcase \"ForInStatement\":\n\t\t\treturn (\n\t\t\t\tnode === parent.body ||\n\t\t\t\t(node === parent.left && node.kind === \"await using\")\n\t\t\t);\n\n\t\tcase \"WhileStatement\":\n\t\tcase \"DoWhileStatement\":\n\t\t\treturn node === parent.test || node === parent.body;\n\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow `await` inside of loops\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-await-in-loop\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpectedAwait: \"Unexpected `await` inside a loop.\",\n\t\t},\n\t},\n\tcreate(context) {\n\t\t/**\n\t\t * Validate an await expression.\n\t\t * @param {ASTNode} awaitNode An AwaitExpression or ForOfStatement node to validate.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction validate(awaitNode) {\n\t\t\tif (\n\t\t\t\tawaitNode.type === \"VariableDeclaration\" &&\n\t\t\t\tawaitNode.kind !== \"await using\"\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (awaitNode.type === \"ForOfStatement\" && !awaitNode.await) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet node = awaitNode;\n\t\t\tlet parent = node.parent;\n\n\t\t\twhile (parent && !isBoundary(parent)) {\n\t\t\t\tif (isLooped(node, parent)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: awaitNode,\n\t\t\t\t\t\tmessageId: \"unexpectedAwait\",\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tnode = parent;\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tAwaitExpression: validate,\n\t\t\tForOfStatement: validate,\n\t\t\tVariableDeclaration: validate,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag bitwise identifiers\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n/*\n *\n * Set of bitwise operators.\n *\n */\nconst BITWISE_OPERATORS = [\n\t\"^\",\n\t\"|\",\n\t\"&\",\n\t\"<<\",\n\t\">>\",\n\t\">>>\",\n\t\"^=\",\n\t\"|=\",\n\t\"&=\",\n\t\"<<=\",\n\t\">>=\",\n\t\">>>=\",\n\t\"~\",\n];\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallow: [],\n\t\t\t\tint32Hint: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow bitwise operators\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-bitwise\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallow: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\tenum: BITWISE_OPERATORS,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t\tint32Hint: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Unexpected use of '{{operator}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ allow: allowed, int32Hint }] = context.options;\n\n\t\t/**\n\t\t * Reports an unexpected use of a bitwise operator.\n\t\t * @param {ASTNode} node Node which contains the bitwise operator.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\tdata: { operator: node.operator },\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Checks if the given node has a bitwise operator.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} Whether or not the node has a bitwise operator.\n\t\t */\n\t\tfunction hasBitwiseOperator(node) {\n\t\t\treturn BITWISE_OPERATORS.includes(node.operator);\n\t\t}\n\n\t\t/**\n\t\t * Checks if exceptions were provided, e.g. `{ allow: ['~', '|'] }`.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} Whether or not the node has a bitwise operator.\n\t\t */\n\t\tfunction allowedOperator(node) {\n\t\t\treturn allowed.includes(node.operator);\n\t\t}\n\n\t\t/**\n\t\t * Checks if the given bitwise operator is used for integer typecasting, i.e. \"|0\"\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} whether the node is used in integer typecasting.\n\t\t */\n\t\tfunction isInt32Hint(node) {\n\t\t\treturn (\n\t\t\t\tint32Hint &&\n\t\t\t\tnode.operator === \"|\" &&\n\t\t\t\tnode.right &&\n\t\t\t\tnode.right.type === \"Literal\" &&\n\t\t\t\tnode.right.value === 0\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Report if the given node contains a bitwise operator.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkNodeForBitwiseOperator(node) {\n\t\t\tif (\n\t\t\t\thasBitwiseOperator(node) &&\n\t\t\t\t!allowedOperator(node) &&\n\t\t\t\t!isInt32Hint(node)\n\t\t\t) {\n\t\t\t\treport(node);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tAssignmentExpression: checkNodeForBitwiseOperator,\n\t\t\tBinaryExpression: checkNodeForBitwiseOperator,\n\t\t\tUnaryExpression: checkNodeForBitwiseOperator,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview disallow use of the Buffer() constructor\n * @author Teddy Katz\n * @deprecated in ESLint v7.0.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Node.js rules were moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules\",\n\t\t\tdeprecatedSince: \"7.0.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"eslint-plugin-n now maintains deprecated Node.js-related rules.\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"eslint-plugin-n\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-deprecated-api\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules/no-deprecated-api.md\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow use of the `Buffer()` constructor\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-buffer-constructor\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tdeprecated:\n\t\t\t\t\"{{expr}} is deprecated. Use Buffer.from(), Buffer.alloc(), or Buffer.allocUnsafe() instead.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t//----------------------------------------------------------------------\n\t\t// Public\n\t\t//----------------------------------------------------------------------\n\n\t\treturn {\n\t\t\t\"CallExpression[callee.name='Buffer'], NewExpression[callee.name='Buffer']\"(\n\t\t\t\tnode,\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"deprecated\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\texpr:\n\t\t\t\t\t\t\tnode.type === \"CallExpression\"\n\t\t\t\t\t\t\t\t? \"Buffer()\"\n\t\t\t\t\t\t\t\t: \"new Buffer()\",\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of arguments.callee and arguments.caller.\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow the use of `arguments.caller` or `arguments.callee`\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-caller\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Avoid arguments.{{prop}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tMemberExpression(node) {\n\t\t\t\tconst objectName = node.object.name,\n\t\t\t\t\tpropertyName = node.property.name;\n\n\t\t\t\tif (\n\t\t\t\t\tobjectName === \"arguments\" &&\n\t\t\t\t\t!node.computed &&\n\t\t\t\t\tpropertyName &&\n\t\t\t\t\tpropertyName.match(/^calle[er]$/u)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\tdata: { prop: propertyName },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of an lexical declarations inside a case clause\n * @author Erik Arvidsson\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow lexical declarations in case clauses\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-case-declarations\",\n\t\t},\n\n\t\thasSuggestions: true,\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\taddBrackets: \"Add {} brackets around the case block.\",\n\t\t\tunexpected: \"Unexpected lexical declaration in case block.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t/**\n\t\t * Checks whether or not a node is a lexical declaration.\n\t\t * @param {ASTNode} node A direct child statement of a switch case.\n\t\t * @returns {boolean} Whether or not the node is a lexical declaration.\n\t\t */\n\t\tfunction isLexicalDeclaration(node) {\n\t\t\tswitch (node.type) {\n\t\t\t\tcase \"FunctionDeclaration\":\n\t\t\t\tcase \"ClassDeclaration\":\n\t\t\t\t\treturn true;\n\t\t\t\tcase \"VariableDeclaration\":\n\t\t\t\t\treturn node.kind !== \"var\";\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tSwitchCase(node) {\n\t\t\t\tfor (let i = 0; i < node.consequent.length; i++) {\n\t\t\t\t\tconst statement = node.consequent[i];\n\n\t\t\t\t\tif (isLexicalDeclaration(statement)) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: statement,\n\t\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmessageId: \"addBrackets\",\n\t\t\t\t\t\t\t\t\tfix: fixer => [\n\t\t\t\t\t\t\t\t\t\tfixer.insertTextBefore(\n\t\t\t\t\t\t\t\t\t\t\tnode.consequent[0],\n\t\t\t\t\t\t\t\t\t\t\t\"{ \",\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tfixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\t\t\tnode.consequent.at(-1),\n\t\t\t\t\t\t\t\t\t\t\t\" }\",\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag variable leak in CatchClauses in IE 8 and earlier\n * @author Ian Christian Myers\n * @deprecated in ESLint v5.1.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow `catch` clause parameters from shadowing variables in the outer scope\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-catch-shadow\",\n\t\t},\n\n\t\tdeprecated: {\n\t\t\tmessage: \"This rule was renamed.\",\n\t\t\turl: \"https://eslint.org/blog/2018/07/eslint-v5.1.0-released/\",\n\t\t\tdeprecatedSince: \"5.1.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-shadow\",\n\t\t\t\t\t\turl: \"https://eslint.org/docs/rules/no-shadow\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tmutable:\n\t\t\t\t\"Value of '{{name}}' may be overwritten in IE 8 and earlier.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Check if the parameters are been shadowed\n\t\t * @param {Object} scope current scope\n\t\t * @param {string} name parameter name\n\t\t * @returns {boolean} True is its been shadowed\n\t\t */\n\t\tfunction paramIsShadowing(scope, name) {\n\t\t\treturn astUtils.getVariableByName(scope, name) !== null;\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\t\"CatchClause[param!=null]\"(node) {\n\t\t\t\tlet scope = sourceCode.getScope(node);\n\n\t\t\t\t/*\n\t\t\t\t * When ecmaVersion >= 6, CatchClause creates its own scope\n\t\t\t\t * so start from one upper scope to exclude the current node\n\t\t\t\t */\n\t\t\t\tif (scope.block === node) {\n\t\t\t\t\tscope = scope.upper;\n\t\t\t\t}\n\n\t\t\t\tif (paramIsShadowing(scope, node.param.name)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"mutable\",\n\t\t\t\t\t\tdata: { name: node.param.name },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to disallow modifying variables of class declarations\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow reassigning class members\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-class-assign\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tclass: \"'{{name}}' is a class.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Finds and reports references that are non initializer and writable.\n\t\t * @param {Variable} variable A variable to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkVariable(variable) {\n\t\t\tastUtils\n\t\t\t\t.getModifyingReferences(variable.references)\n\t\t\t\t.forEach(reference => {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: reference.identifier,\n\t\t\t\t\t\tmessageId: \"class\",\n\t\t\t\t\t\tdata: { name: reference.identifier.name },\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Finds and reports references that are non initializer and writable.\n\t\t * @param {ASTNode} node A ClassDeclaration/ClassExpression node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForClass(node) {\n\t\t\tsourceCode.getDeclaredVariables(node).forEach(checkVariable);\n\t\t}\n\n\t\treturn {\n\t\t\tClassDeclaration: checkForClass,\n\t\t\tClassExpression: checkForClass,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview The rule should warn against code that tries to compare against -0.\n * @author Aladdin-ADD <hh_2013@foxmail.com>\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow comparing against `-0`\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-compare-neg-zero\",\n\t\t},\n\n\t\tfixable: null,\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected:\n\t\t\t\t\"Do not use the '{{operator}}' operator to compare against -0.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Checks a given node is -0\n\t\t * @param {ASTNode} node A node to check.\n\t\t * @returns {boolean} `true` if the node is -0.\n\t\t */\n\t\tfunction isNegZero(node) {\n\t\t\treturn (\n\t\t\t\tnode.type === \"UnaryExpression\" &&\n\t\t\t\tnode.operator === \"-\" &&\n\t\t\t\tnode.argument.type === \"Literal\" &&\n\t\t\t\tnode.argument.value === 0\n\t\t\t);\n\t\t}\n\t\tconst OPERATORS_TO_CHECK = new Set([\n\t\t\t\">\",\n\t\t\t\">=\",\n\t\t\t\"<\",\n\t\t\t\"<=\",\n\t\t\t\"==\",\n\t\t\t\"===\",\n\t\t\t\"!=\",\n\t\t\t\"!==\",\n\t\t]);\n\n\t\treturn {\n\t\t\tBinaryExpression(node) {\n\t\t\t\tif (OPERATORS_TO_CHECK.has(node.operator)) {\n\t\t\t\t\tif (isNegZero(node.left) || isNegZero(node.right)) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\t\tdata: { operator: node.operator },\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag assignment in a conditional statement's test expression\n * @author Stephen Murray <spmurrayzzz>\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst TEST_CONDITION_PARENT_TYPES = new Set([\n\t\"IfStatement\",\n\t\"WhileStatement\",\n\t\"DoWhileStatement\",\n\t\"ForStatement\",\n\t\"ConditionalExpression\",\n]);\n\nconst NODE_DESCRIPTIONS = {\n\tDoWhileStatement: \"a 'do...while' statement\",\n\tForStatement: \"a 'for' statement\",\n\tIfStatement: \"an 'if' statement\",\n\tWhileStatement: \"a 'while' statement\",\n};\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [\"except-parens\"],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow assignment operators in conditional expressions\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-cond-assign\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"except-parens\", \"always\"],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Unexpected assignment within {{type}}.\",\n\n\t\t\t// must match JSHint's error message\n\t\t\tmissing:\n\t\t\t\t\"Expected a conditional expression and instead saw an assignment.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [prohibitAssign] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Check whether an AST node is the test expression for a conditional statement.\n\t\t * @param {!Object} node The node to test.\n\t\t * @returns {boolean} `true` if the node is the text expression for a conditional statement; otherwise, `false`.\n\t\t */\n\t\tfunction isConditionalTestExpression(node) {\n\t\t\treturn (\n\t\t\t\tnode.parent &&\n\t\t\t\tTEST_CONDITION_PARENT_TYPES.has(node.parent.type) &&\n\t\t\t\tnode === node.parent.test\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Given an AST node, perform a bottom-up search for the first ancestor that represents a conditional statement.\n\t\t * @param {!Object} node The node to use at the start of the search.\n\t\t * @returns {?Object} The closest ancestor node that represents a conditional statement.\n\t\t */\n\t\tfunction findConditionalAncestor(node) {\n\t\t\tlet currentAncestor = node;\n\n\t\t\tdo {\n\t\t\t\tif (isConditionalTestExpression(currentAncestor)) {\n\t\t\t\t\treturn currentAncestor.parent;\n\t\t\t\t}\n\t\t\t} while (\n\t\t\t\t(currentAncestor = currentAncestor.parent) &&\n\t\t\t\t!astUtils.isFunction(currentAncestor)\n\t\t\t);\n\n\t\t\treturn null;\n\t\t}\n\n\t\t/**\n\t\t * Check whether the code represented by an AST node is enclosed in two sets of parentheses.\n\t\t * @param {!Object} node The node to test.\n\t\t * @returns {boolean} `true` if the code is enclosed in two sets of parentheses; otherwise, `false`.\n\t\t */\n\t\tfunction isParenthesisedTwice(node) {\n\t\t\tconst previousToken = sourceCode.getTokenBefore(node, 1),\n\t\t\t\tnextToken = sourceCode.getTokenAfter(node, 1);\n\n\t\t\treturn (\n\t\t\t\tastUtils.isParenthesised(sourceCode, node) &&\n\t\t\t\tpreviousToken &&\n\t\t\t\tastUtils.isOpeningParenToken(previousToken) &&\n\t\t\t\tpreviousToken.range[1] <= node.range[0] &&\n\t\t\t\tastUtils.isClosingParenToken(nextToken) &&\n\t\t\t\tnextToken.range[0] >= node.range[1]\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check a conditional statement's test expression for top-level assignments that are not enclosed in parentheses.\n\t\t * @param {!Object} node The node for the conditional statement.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction testForAssign(node) {\n\t\t\tif (\n\t\t\t\tnode.test &&\n\t\t\t\tnode.test.type === \"AssignmentExpression\" &&\n\t\t\t\t(node.type === \"ForStatement\"\n\t\t\t\t\t? !astUtils.isParenthesised(sourceCode, node.test)\n\t\t\t\t\t: !isParenthesisedTwice(node.test))\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: node.test,\n\t\t\t\t\tmessageId: \"missing\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check whether an assignment expression is descended from a conditional statement's test expression.\n\t\t * @param {!Object} node The node for the assignment expression.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction testForConditionalAncestor(node) {\n\t\t\tconst ancestor = findConditionalAncestor(node);\n\n\t\t\tif (ancestor) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttype: NODE_DESCRIPTIONS[ancestor.type] || ancestor.type,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (prohibitAssign === \"always\") {\n\t\t\treturn {\n\t\t\t\tAssignmentExpression: testForConditionalAncestor,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tDoWhileStatement: testForAssign,\n\t\t\tForStatement: testForAssign,\n\t\t\tIfStatement: testForAssign,\n\t\t\tWhileStatement: testForAssign,\n\t\t\tConditionalExpression: testForAssign,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to warn against using arrow functions when they could be\n * confused with comparisons\n * @author Jxck <https://github.com/Jxck>\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils.js\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether or not a node is a conditional expression.\n * @param {ASTNode} node node to test\n * @returns {boolean} `true` if the node is a conditional expression.\n */\nfunction isConditional(node) {\n\treturn node && node.type === \"ConditionalExpression\";\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-confusing-arrow\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/no-confusing-arrow\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow arrow functions where they could be confused with comparisons\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-confusing-arrow\",\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowParens: { type: \"boolean\", default: true },\n\t\t\t\t\tonlyOneSimpleParam: { type: \"boolean\", default: false },\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tconfusing:\n\t\t\t\t\"Arrow function used ambiguously with a conditional expression.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst config = context.options[0] || {};\n\t\tconst allowParens = config.allowParens || config.allowParens === void 0;\n\t\tconst onlyOneSimpleParam = config.onlyOneSimpleParam;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Reports if an arrow function contains an ambiguous conditional.\n\t\t * @param {ASTNode} node A node to check and report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkArrowFunc(node) {\n\t\t\tconst body = node.body;\n\n\t\t\tif (\n\t\t\t\tisConditional(body) &&\n\t\t\t\t!(allowParens && astUtils.isParenthesised(sourceCode, body)) &&\n\t\t\t\t!(\n\t\t\t\t\tonlyOneSimpleParam &&\n\t\t\t\t\t!(\n\t\t\t\t\t\tnode.params.length === 1 &&\n\t\t\t\t\t\tnode.params[0].type === \"Identifier\"\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"confusing\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t// if `allowParens` is not set to true don't bother wrapping in parens\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tallowParens &&\n\t\t\t\t\t\t\tfixer.replaceText(\n\t\t\t\t\t\t\t\tnode.body,\n\t\t\t\t\t\t\t\t`(${sourceCode.getText(node.body)})`,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tArrowFunctionExpression: checkArrowFunc,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of console object\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Reference} Reference */\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [{}],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow the use of `console`\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-console\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallow: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tminItems: 1,\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\thasSuggestions: true,\n\n\t\tmessages: {\n\t\t\tunexpected: \"Unexpected console statement.\",\n\t\t\tlimited:\n\t\t\t\t\"Unexpected console statement. Only these console methods are allowed: {{ allowed }}.\",\n\t\t\tremoveConsole: \"Remove the console.{{ propertyName }}().\",\n\t\t\tremoveMethodCall: \"Remove the console method call.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ allow: allowed = [] }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Checks whether the given reference is 'console' or not.\n\t\t * @param {Reference} reference The reference to check.\n\t\t * @returns {boolean} `true` if the reference is 'console'.\n\t\t */\n\t\tfunction isConsole(reference) {\n\t\t\tconst id = reference.identifier;\n\n\t\t\treturn id && id.name === \"console\";\n\t\t}\n\n\t\t/**\n\t\t * Checks whether the property name of the given MemberExpression node\n\t\t * is allowed by options or not.\n\t\t * @param {ASTNode} node The MemberExpression node to check.\n\t\t * @returns {boolean} `true` if the property name of the node is allowed.\n\t\t */\n\t\tfunction isAllowed(node) {\n\t\t\tconst propertyName = astUtils.getStaticPropertyName(node);\n\n\t\t\treturn propertyName && allowed.includes(propertyName);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether the given reference is a member access which is not\n\t\t * allowed by options or not.\n\t\t * @param {Reference} reference The reference to check.\n\t\t * @returns {boolean} `true` if the reference is a member access which\n\t\t *      is not allowed by options.\n\t\t */\n\t\tfunction isMemberAccessExceptAllowed(reference) {\n\t\t\tconst node = reference.identifier;\n\t\t\tconst parent = node.parent;\n\n\t\t\treturn (\n\t\t\t\tparent.type === \"MemberExpression\" &&\n\t\t\t\tparent.object === node &&\n\t\t\t\t!isAllowed(parent)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if removing the ExpressionStatement node will cause ASI to\n\t\t * break.\n\t\t * eg.\n\t\t * foo()\n\t\t * console.log();\n\t\t * [1, 2, 3].forEach(a => doSomething(a))\n\t\t *\n\t\t * Removing the console.log(); statement should leave two statements, but\n\t\t * here the two statements will become one because [ causes continuation after\n\t\t * foo().\n\t\t * @param {ASTNode} node The ExpressionStatement node to check.\n\t\t * @returns {boolean} `true` if ASI will break after removing the ExpressionStatement\n\t\t *      node.\n\t\t */\n\t\tfunction maybeAsiHazard(node) {\n\t\t\tconst SAFE_TOKENS_BEFORE = /^[:;{]$/u; // One of :;{\n\t\t\tconst UNSAFE_CHARS_AFTER = /^[-[(/+`]/u; // One of [(/+-`\n\n\t\t\tconst tokenBefore = sourceCode.getTokenBefore(node);\n\t\t\tconst tokenAfter = sourceCode.getTokenAfter(node);\n\n\t\t\treturn (\n\t\t\t\tBoolean(tokenAfter) &&\n\t\t\t\tUNSAFE_CHARS_AFTER.test(tokenAfter.value) &&\n\t\t\t\ttokenAfter.value !== \"++\" &&\n\t\t\t\ttokenAfter.value !== \"--\" &&\n\t\t\t\tBoolean(tokenBefore) &&\n\t\t\t\t!SAFE_TOKENS_BEFORE.test(tokenBefore.value)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if the MemberExpression node's parent.parent.parent is a\n\t\t * Program, BlockStatement, StaticBlock, or SwitchCase node. This check\n\t\t * is necessary to avoid providing a suggestion that might cause a syntax error.\n\t\t *\n\t\t * eg. if (a) console.log(b), removing console.log() here will lead to a\n\t\t *     syntax error.\n\t\t *     if (a) { console.log(b) }, removing console.log() here is acceptable.\n\t\t *\n\t\t * Additionally, it checks if the callee of the CallExpression node is\n\t\t * the node itself.\n\t\t *\n\t\t * eg. foo(console.log), cannot provide a suggestion here.\n\t\t * @param {ASTNode} node The MemberExpression node to check.\n\t\t * @returns {boolean} `true` if a suggestion can be provided for a node.\n\t\t */\n\t\tfunction canProvideSuggestions(node) {\n\t\t\treturn (\n\t\t\t\tnode.parent.type === \"CallExpression\" &&\n\t\t\t\tnode.parent.callee === node &&\n\t\t\t\tnode.parent.parent.type === \"ExpressionStatement\" &&\n\t\t\t\tastUtils.STATEMENT_LIST_PARENTS.has(\n\t\t\t\t\tnode.parent.parent.parent.type,\n\t\t\t\t) &&\n\t\t\t\t!maybeAsiHazard(node.parent.parent)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Reports the given reference as a violation.\n\t\t * @param {Reference} reference The reference to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(reference) {\n\t\t\tconst node = reference.identifier.parent;\n\n\t\t\tconst suggest = [];\n\n\t\t\tif (canProvideSuggestions(node)) {\n\t\t\t\tconst suggestion = {\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\treturn fixer.remove(node.parent.parent);\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tif (node.computed) {\n\t\t\t\t\tsuggestion.messageId = \"removeMethodCall\";\n\t\t\t\t} else {\n\t\t\t\t\tsuggestion.messageId = \"removeConsole\";\n\t\t\t\t\tsuggestion.data = { propertyName: node.property.name };\n\t\t\t\t}\n\t\t\t\tsuggest.push(suggestion);\n\t\t\t}\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: node.loc,\n\t\t\t\tmessageId: allowed.length ? \"limited\" : \"unexpected\",\n\t\t\t\tdata: { allowed: allowed.join(\", \") },\n\t\t\t\tsuggest,\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\t\t\t\tconst consoleVar = astUtils.getVariableByName(scope, \"console\");\n\t\t\t\tconst shadowed = consoleVar && consoleVar.defs.length > 0;\n\n\t\t\t\t/*\n\t\t\t\t * 'scope.through' includes all references to undefined\n\t\t\t\t * variables. If the variable 'console' is not defined, it uses\n\t\t\t\t * 'scope.through'.\n\t\t\t\t */\n\t\t\t\tconst references = consoleVar\n\t\t\t\t\t? consoleVar.references\n\t\t\t\t\t: scope.through.filter(isConsole);\n\n\t\t\t\tif (!shadowed) {\n\t\t\t\t\treferences\n\t\t\t\t\t\t.filter(isMemberAccessExceptAllowed)\n\t\t\t\t\t\t.forEach(report);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to disallow modifying variables that are declared using `const`\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst CONSTANT_BINDINGS = new Set([\"const\", \"using\", \"await using\"]);\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow reassigning `const`, `using`, and `await using` variables\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-const-assign\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tconst: \"'{{name}}' is constant.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Finds and reports references that are non initializer and writable.\n\t\t * @param {Variable} variable A variable to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkVariable(variable) {\n\t\t\tastUtils\n\t\t\t\t.getModifyingReferences(variable.references)\n\t\t\t\t.forEach(reference => {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: reference.identifier,\n\t\t\t\t\t\tmessageId: \"const\",\n\t\t\t\t\t\tdata: { name: reference.identifier.name },\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tVariableDeclaration(node) {\n\t\t\t\tif (CONSTANT_BINDINGS.has(node.kind)) {\n\t\t\t\t\tsourceCode\n\t\t\t\t\t\t.getDeclaredVariables(node)\n\t\t\t\t\t\t.forEach(checkVariable);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag constant comparisons and logical expressions that always/never short circuit\n * @author Jordan Eldredge <https://jordaneldredge.com>\n */\n\n\"use strict\";\n\nconst {\n\tisNullLiteral,\n\tisConstant,\n\tisReferenceToGlobalVariable,\n\tisLogicalAssignmentOperator,\n\tECMASCRIPT_GLOBALS,\n} = require(\"./utils/ast-utils\");\n\nconst NUMERIC_OR_STRING_BINARY_OPERATORS = new Set([\n\t\"+\",\n\t\"-\",\n\t\"*\",\n\t\"/\",\n\t\"%\",\n\t\"|\",\n\t\"^\",\n\t\"&\",\n\t\"**\",\n\t\"<<\",\n\t\">>\",\n\t\">>>\",\n]);\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether or not a node is `null` or `undefined`. Similar to the one\n * found in ast-utils.js, but this one correctly handles the edge case that\n * `undefined` has been redefined.\n * @param {Scope} scope Scope in which the expression was found.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} Whether or not the node is a `null` or `undefined`.\n * @public\n */\nfunction isNullOrUndefined(scope, node) {\n\treturn (\n\t\tisNullLiteral(node) ||\n\t\t(node.type === \"Identifier\" &&\n\t\t\tnode.name === \"undefined\" &&\n\t\t\tisReferenceToGlobalVariable(scope, node)) ||\n\t\t(node.type === \"UnaryExpression\" && node.operator === \"void\")\n\t);\n}\n\n/**\n * Test if an AST node has a statically knowable constant nullishness. Meaning,\n * it will always resolve to a constant value of either: `null`, `undefined`\n * or not `null` _or_ `undefined`. An expression that can vary between those\n * three states at runtime would return `false`.\n * @param {Scope} scope The scope in which the node was found.\n * @param {ASTNode} node The AST node being tested.\n * @param {boolean} nonNullish if `true` then nullish values are not considered constant.\n * @returns {boolean} Does `node` have constant nullishness?\n */\nfunction hasConstantNullishness(scope, node, nonNullish) {\n\tif (nonNullish && isNullOrUndefined(scope, node)) {\n\t\treturn false;\n\t}\n\n\tswitch (node.type) {\n\t\tcase \"ObjectExpression\": // Objects are never nullish\n\t\tcase \"ArrayExpression\": // Arrays are never nullish\n\t\tcase \"ArrowFunctionExpression\": // Functions never nullish\n\t\tcase \"FunctionExpression\": // Functions are never nullish\n\t\tcase \"ClassExpression\": // Classes are never nullish\n\t\tcase \"NewExpression\": // Objects are never nullish\n\t\tcase \"Literal\": // Nullish, or non-nullish, literals never change\n\t\tcase \"TemplateLiteral\": // A string is never nullish\n\t\tcase \"UpdateExpression\": // Numbers are never nullish\n\t\tcase \"BinaryExpression\": // Numbers, strings, or booleans are never nullish\n\t\t\treturn true;\n\t\tcase \"CallExpression\": {\n\t\t\tif (node.callee.type !== \"Identifier\") {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst functionName = node.callee.name;\n\n\t\t\treturn (\n\t\t\t\t(functionName === \"Boolean\" ||\n\t\t\t\t\tfunctionName === \"String\" ||\n\t\t\t\t\tfunctionName === \"Number\") &&\n\t\t\t\tisReferenceToGlobalVariable(scope, node.callee)\n\t\t\t);\n\t\t}\n\t\tcase \"LogicalExpression\": {\n\t\t\treturn (\n\t\t\t\tnode.operator === \"??\" &&\n\t\t\t\thasConstantNullishness(scope, node.right, true)\n\t\t\t);\n\t\t}\n\t\tcase \"AssignmentExpression\":\n\t\t\tif (node.operator === \"=\") {\n\t\t\t\treturn hasConstantNullishness(scope, node.right, nonNullish);\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Handling short-circuiting assignment operators would require\n\t\t\t * walking the scope. We won't attempt that (for now...) /\n\t\t\t */\n\t\t\tif (isLogicalAssignmentOperator(node.operator)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * The remaining assignment expressions all result in a numeric or\n\t\t\t * string (non-nullish) value:\n\t\t\t *   \"+=\", \"-=\", \"*=\", \"/=\", \"%=\", \"<<=\", \">>=\", \">>>=\", \"|=\", \"^=\", \"&=\"\n\t\t\t */\n\n\t\t\treturn true;\n\t\tcase \"UnaryExpression\":\n\t\t\t/*\n\t\t\t * \"void\" Always returns `undefined`\n\t\t\t * \"typeof\" All types are strings, and thus non-nullish\n\t\t\t * \"!\" Boolean is never nullish\n\t\t\t * \"delete\" Returns a boolean, which is never nullish\n\t\t\t * Math operators always return numbers or strings, neither of which\n\t\t\t * are non-nullish \"+\", \"-\", \"~\"\n\t\t\t */\n\n\t\t\treturn true;\n\t\tcase \"SequenceExpression\": {\n\t\t\tconst last = node.expressions.at(-1);\n\n\t\t\treturn hasConstantNullishness(scope, last, nonNullish);\n\t\t}\n\t\tcase \"Identifier\":\n\t\t\treturn (\n\t\t\t\tnode.name === \"undefined\" &&\n\t\t\t\tisReferenceToGlobalVariable(scope, node)\n\t\t\t);\n\t\tcase \"JSXElement\": // ESLint has a policy of not assuming any specific JSX behavior.\n\t\tcase \"JSXFragment\":\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\n/**\n * Test if an AST node is a boolean value that never changes. Specifically we\n * test for:\n * 1. Literal booleans (`true` or `false`)\n * 2. Unary `!` expressions with a constant value\n * 3. Constant booleans created via the `Boolean` global function\n * @param {Scope} scope The scope in which the node was found.\n * @param {ASTNode} node The node to test\n * @returns {boolean} Is `node` guaranteed to be a boolean?\n */\nfunction isStaticBoolean(scope, node) {\n\tswitch (node.type) {\n\t\tcase \"Literal\":\n\t\t\treturn typeof node.value === \"boolean\";\n\t\tcase \"CallExpression\":\n\t\t\treturn (\n\t\t\t\tnode.callee.type === \"Identifier\" &&\n\t\t\t\tnode.callee.name === \"Boolean\" &&\n\t\t\t\tisReferenceToGlobalVariable(scope, node.callee) &&\n\t\t\t\t(node.arguments.length === 0 ||\n\t\t\t\t\tisConstant(scope, node.arguments[0], true))\n\t\t\t);\n\t\tcase \"UnaryExpression\":\n\t\t\treturn (\n\t\t\t\tnode.operator === \"!\" && isConstant(scope, node.argument, true)\n\t\t\t);\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\n/**\n * Test if an AST node will always give the same result when compared to a\n * boolean value. Note that comparison to boolean values is different than\n * truthiness.\n * https://262.ecma-international.org/5.1/#sec-11.9.3\n *\n * JavaScript `==` operator works by converting the boolean to `1` (true) or\n * `+0` (false) and then checks the values `==` equality to that number.\n * @param {Scope} scope The scope in which node was found.\n * @param {ASTNode} node The node to test.\n * @returns {boolean} Will `node` always coerce to the same boolean value?\n */\nfunction hasConstantLooseBooleanComparison(scope, node) {\n\tswitch (node.type) {\n\t\tcase \"ObjectExpression\":\n\t\tcase \"ClassExpression\":\n\t\t\t/**\n\t\t\t * In theory objects like:\n\t\t\t *\n\t\t\t * `{toString: () => a}`\n\t\t\t * `{valueOf: () => a}`\n\t\t\t *\n\t\t\t * Or a classes like:\n\t\t\t *\n\t\t\t * `class { static toString() { return a } }`\n\t\t\t * `class { static valueOf() { return a } }`\n\t\t\t *\n\t\t\t * Are not constant verifiably when `inBooleanPosition` is\n\t\t\t * false, but it's an edge case we've opted not to handle.\n\t\t\t */\n\t\t\treturn true;\n\t\tcase \"ArrayExpression\": {\n\t\t\tconst nonSpreadElements = node.elements.filter(\n\t\t\t\te =>\n\t\t\t\t\t// Elements can be `null` in sparse arrays: `[,,]`;\n\t\t\t\t\te !== null && e.type !== \"SpreadElement\",\n\t\t\t);\n\n\t\t\t/*\n\t\t\t * Possible future direction if needed: We could check if the\n\t\t\t * single value would result in variable boolean comparison.\n\t\t\t * For now we will err on the side of caution since `[x]` could\n\t\t\t * evaluate to `[0]` or `[1]`.\n\t\t\t */\n\t\t\treturn node.elements.length === 0 || nonSpreadElements.length > 1;\n\t\t}\n\t\tcase \"ArrowFunctionExpression\":\n\t\tcase \"FunctionExpression\":\n\t\t\treturn true;\n\t\tcase \"UnaryExpression\":\n\t\t\tif (\n\t\t\t\tnode.operator === \"void\" || // Always returns `undefined`\n\t\t\t\tnode.operator === \"typeof\" // All `typeof` strings, when coerced to number, are not 0 or 1.\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (node.operator === \"!\") {\n\t\t\t\treturn isConstant(scope, node.argument, true);\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * We won't try to reason about +, -, ~, or delete\n\t\t\t * In theory, for the mathematical operators, we could look at the\n\t\t\t * argument and try to determine if it coerces to a constant numeric\n\t\t\t * value.\n\t\t\t */\n\t\t\treturn false;\n\t\tcase \"NewExpression\": // Objects might have custom `.valueOf` or `.toString`.\n\t\t\treturn false;\n\t\tcase \"CallExpression\": {\n\t\t\tif (\n\t\t\t\tnode.callee.type === \"Identifier\" &&\n\t\t\t\tnode.callee.name === \"Boolean\" &&\n\t\t\t\tisReferenceToGlobalVariable(scope, node.callee)\n\t\t\t) {\n\t\t\t\treturn (\n\t\t\t\t\tnode.arguments.length === 0 ||\n\t\t\t\t\tisConstant(scope, node.arguments[0], true)\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\tcase \"Literal\": // True or false, literals never change\n\t\t\treturn true;\n\t\tcase \"Identifier\":\n\t\t\treturn (\n\t\t\t\tnode.name === \"undefined\" &&\n\t\t\t\tisReferenceToGlobalVariable(scope, node)\n\t\t\t);\n\t\tcase \"TemplateLiteral\":\n\t\t\t/*\n\t\t\t * In theory we could try to check if the quasi are sufficient to\n\t\t\t * prove that the expression will always be true, but it would be\n\t\t\t * tricky to get right. For example: `000.${foo}000`\n\t\t\t */\n\t\t\treturn node.expressions.length === 0;\n\t\tcase \"AssignmentExpression\":\n\t\t\tif (node.operator === \"=\") {\n\t\t\t\treturn hasConstantLooseBooleanComparison(scope, node.right);\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Handling short-circuiting assignment operators would require\n\t\t\t * walking the scope. We won't attempt that (for now...)\n\t\t\t *\n\t\t\t * The remaining assignment expressions all result in a numeric or\n\t\t\t * string (non-nullish) values which could be truthy or falsy:\n\t\t\t *   \"+=\", \"-=\", \"*=\", \"/=\", \"%=\", \"<<=\", \">>=\", \">>>=\", \"|=\", \"^=\", \"&=\"\n\t\t\t */\n\t\t\treturn false;\n\t\tcase \"SequenceExpression\": {\n\t\t\tconst last = node.expressions.at(-1);\n\n\t\t\treturn hasConstantLooseBooleanComparison(scope, last);\n\t\t}\n\t\tcase \"JSXElement\": // ESLint has a policy of not assuming any specific JSX behavior.\n\t\tcase \"JSXFragment\":\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\n/**\n * Test if an AST node will always give the same result when _strictly_ compared\n * to a boolean value. This can happen if the expression can never be boolean, or\n * if it is always the same boolean value.\n * @param {Scope} scope The scope in which the node was found.\n * @param {ASTNode} node The node to test\n * @returns {boolean} Will `node` always give the same result when compared to a\n * static boolean value?\n */\nfunction hasConstantStrictBooleanComparison(scope, node) {\n\tswitch (node.type) {\n\t\tcase \"ObjectExpression\": // Objects are not booleans\n\t\tcase \"ArrayExpression\": // Arrays are not booleans\n\t\tcase \"ArrowFunctionExpression\": // Functions are not booleans\n\t\tcase \"FunctionExpression\":\n\t\tcase \"ClassExpression\": // Classes are not booleans\n\t\tcase \"NewExpression\": // Objects are not booleans\n\t\tcase \"TemplateLiteral\": // Strings are not booleans\n\t\tcase \"Literal\": // True, false, or not boolean, literals never change.\n\t\tcase \"UpdateExpression\": // Numbers are not booleans\n\t\t\treturn true;\n\t\tcase \"BinaryExpression\":\n\t\t\treturn NUMERIC_OR_STRING_BINARY_OPERATORS.has(node.operator);\n\t\tcase \"UnaryExpression\": {\n\t\t\tif (node.operator === \"delete\") {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (node.operator === \"!\") {\n\t\t\t\treturn isConstant(scope, node.argument, true);\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * The remaining operators return either strings or numbers, neither\n\t\t\t * of which are boolean.\n\t\t\t */\n\t\t\treturn true;\n\t\t}\n\t\tcase \"SequenceExpression\": {\n\t\t\tconst last = node.expressions.at(-1);\n\n\t\t\treturn hasConstantStrictBooleanComparison(scope, last);\n\t\t}\n\t\tcase \"Identifier\":\n\t\t\treturn (\n\t\t\t\tnode.name === \"undefined\" &&\n\t\t\t\tisReferenceToGlobalVariable(scope, node)\n\t\t\t);\n\t\tcase \"AssignmentExpression\":\n\t\t\tif (node.operator === \"=\") {\n\t\t\t\treturn hasConstantStrictBooleanComparison(scope, node.right);\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Handling short-circuiting assignment operators would require\n\t\t\t * walking the scope. We won't attempt that (for now...)\n\t\t\t */\n\t\t\tif (isLogicalAssignmentOperator(node.operator)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * The remaining assignment expressions all result in either a number\n\t\t\t * or a string, neither of which can ever be boolean.\n\t\t\t */\n\t\t\treturn true;\n\t\tcase \"CallExpression\": {\n\t\t\tif (node.callee.type !== \"Identifier\") {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst functionName = node.callee.name;\n\n\t\t\tif (\n\t\t\t\t(functionName === \"String\" || functionName === \"Number\") &&\n\t\t\t\tisReferenceToGlobalVariable(scope, node.callee)\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tfunctionName === \"Boolean\" &&\n\t\t\t\tisReferenceToGlobalVariable(scope, node.callee)\n\t\t\t) {\n\t\t\t\treturn (\n\t\t\t\t\tnode.arguments.length === 0 ||\n\t\t\t\t\tisConstant(scope, node.arguments[0], true)\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\tcase \"JSXElement\": // ESLint has a policy of not assuming any specific JSX behavior.\n\t\tcase \"JSXFragment\":\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\n/**\n * Test if an AST node will always result in a newly constructed object\n * @param {Scope} scope The scope in which the node was found.\n * @param {ASTNode} node The node to test\n * @returns {boolean} Will `node` always be new?\n */\nfunction isAlwaysNew(scope, node) {\n\tswitch (node.type) {\n\t\tcase \"ObjectExpression\":\n\t\tcase \"ArrayExpression\":\n\t\tcase \"ArrowFunctionExpression\":\n\t\tcase \"FunctionExpression\":\n\t\tcase \"ClassExpression\":\n\t\t\treturn true;\n\t\tcase \"NewExpression\": {\n\t\t\tif (node.callee.type !== \"Identifier\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * All the built-in constructors are always new, but\n\t\t\t * user-defined constructors could return a sentinel\n\t\t\t * object.\n\t\t\t *\n\t\t\t * Catching these is especially useful for primitive constructors\n\t\t\t * which return boxed values, a surprising gotcha' in JavaScript.\n\t\t\t */\n\t\t\treturn (\n\t\t\t\tObject.hasOwn(ECMASCRIPT_GLOBALS, node.callee.name) &&\n\t\t\t\tisReferenceToGlobalVariable(scope, node.callee)\n\t\t\t);\n\t\t}\n\t\tcase \"Literal\":\n\t\t\t// Regular expressions are objects, and thus always new\n\t\t\treturn typeof node.regex === \"object\";\n\t\tcase \"SequenceExpression\": {\n\t\t\tconst last = node.expressions.at(-1);\n\n\t\t\treturn isAlwaysNew(scope, last);\n\t\t}\n\t\tcase \"AssignmentExpression\":\n\t\t\tif (node.operator === \"=\") {\n\t\t\t\treturn isAlwaysNew(scope, node.right);\n\t\t\t}\n\t\t\treturn false;\n\t\tcase \"ConditionalExpression\":\n\t\t\treturn (\n\t\t\t\tisAlwaysNew(scope, node.consequent) &&\n\t\t\t\tisAlwaysNew(scope, node.alternate)\n\t\t\t);\n\t\tcase \"JSXElement\": // ESLint has a policy of not assuming any specific JSX behavior.\n\t\tcase \"JSXFragment\":\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\n/**\n * Checks if one operand will cause the result to be constant.\n * @param {Scope} scope Scope in which the expression was found.\n * @param {ASTNode} a One side of the expression\n * @param {ASTNode} b The other side of the expression\n * @param {string} operator The binary expression operator\n * @returns {ASTNode | null} The node which will cause the expression to have a constant result.\n */\nfunction findBinaryExpressionConstantOperand(scope, a, b, operator) {\n\tif (operator === \"==\" || operator === \"!=\") {\n\t\tif (\n\t\t\t(isNullOrUndefined(scope, a) &&\n\t\t\t\thasConstantNullishness(scope, b, false)) ||\n\t\t\t(isStaticBoolean(scope, a) &&\n\t\t\t\thasConstantLooseBooleanComparison(scope, b))\n\t\t) {\n\t\t\treturn b;\n\t\t}\n\t} else if (operator === \"===\" || operator === \"!==\") {\n\t\tif (\n\t\t\t(isNullOrUndefined(scope, a) &&\n\t\t\t\thasConstantNullishness(scope, b, false)) ||\n\t\t\t(isStaticBoolean(scope, a) &&\n\t\t\t\thasConstantStrictBooleanComparison(scope, b))\n\t\t) {\n\t\t\treturn b;\n\t\t}\n\t}\n\treturn null;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow expressions where the operation doesn't affect the value\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-constant-binary-expression\",\n\t\t},\n\t\tschema: [],\n\t\tmessages: {\n\t\t\tconstantBinaryOperand:\n\t\t\t\t\"Unexpected constant binary expression. Compares constantly with the {{otherSide}}-hand side of the `{{operator}}`.\",\n\t\t\tconstantShortCircuit:\n\t\t\t\t\"Unexpected constant {{property}} on the left-hand side of a `{{operator}}` expression.\",\n\t\t\talwaysNew:\n\t\t\t\t\"Unexpected comparison to newly constructed object. These two values can never be equal.\",\n\t\t\tbothAlwaysNew:\n\t\t\t\t\"Unexpected comparison of two newly constructed objects. These two values can never be equal.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tLogicalExpression(node) {\n\t\t\t\tconst { operator, left } = node;\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\n\t\t\t\tif (\n\t\t\t\t\t(operator === \"&&\" || operator === \"||\") &&\n\t\t\t\t\tisConstant(scope, left, true)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: left,\n\t\t\t\t\t\tmessageId: \"constantShortCircuit\",\n\t\t\t\t\t\tdata: { property: \"truthiness\", operator },\n\t\t\t\t\t});\n\t\t\t\t} else if (\n\t\t\t\t\toperator === \"??\" &&\n\t\t\t\t\thasConstantNullishness(scope, left, false)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: left,\n\t\t\t\t\t\tmessageId: \"constantShortCircuit\",\n\t\t\t\t\t\tdata: { property: \"nullishness\", operator },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tBinaryExpression(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\t\t\t\tconst { right, left, operator } = node;\n\t\t\t\tconst rightConstantOperand =\n\t\t\t\t\tfindBinaryExpressionConstantOperand(\n\t\t\t\t\t\tscope,\n\t\t\t\t\t\tleft,\n\t\t\t\t\t\tright,\n\t\t\t\t\t\toperator,\n\t\t\t\t\t);\n\t\t\t\tconst leftConstantOperand = findBinaryExpressionConstantOperand(\n\t\t\t\t\tscope,\n\t\t\t\t\tright,\n\t\t\t\t\tleft,\n\t\t\t\t\toperator,\n\t\t\t\t);\n\n\t\t\t\tif (rightConstantOperand) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: rightConstantOperand,\n\t\t\t\t\t\tmessageId: \"constantBinaryOperand\",\n\t\t\t\t\t\tdata: { operator, otherSide: \"left\" },\n\t\t\t\t\t});\n\t\t\t\t} else if (leftConstantOperand) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: leftConstantOperand,\n\t\t\t\t\t\tmessageId: \"constantBinaryOperand\",\n\t\t\t\t\t\tdata: { operator, otherSide: \"right\" },\n\t\t\t\t\t});\n\t\t\t\t} else if (operator === \"===\" || operator === \"!==\") {\n\t\t\t\t\tif (isAlwaysNew(scope, left)) {\n\t\t\t\t\t\tcontext.report({ node: left, messageId: \"alwaysNew\" });\n\t\t\t\t\t} else if (isAlwaysNew(scope, right)) {\n\t\t\t\t\t\tcontext.report({ node: right, messageId: \"alwaysNew\" });\n\t\t\t\t\t}\n\t\t\t\t} else if (operator === \"==\" || operator === \"!=\") {\n\t\t\t\t\t/*\n\t\t\t\t\t * If both sides are \"new\", then both sides are objects and\n\t\t\t\t\t * therefore they will be compared by reference even with `==`\n\t\t\t\t\t * equality.\n\t\t\t\t\t */\n\t\t\t\t\tif (isAlwaysNew(scope, left) && isAlwaysNew(scope, right)) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: left,\n\t\t\t\t\t\t\tmessageId: \"bothAlwaysNew\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * In theory we could handle short-circuiting assignment operators,\n\t\t\t * for some constant values, but that would require walking the\n\t\t\t * scope to find the value of the variable being assigned. This is\n\t\t\t * dependent on https://github.com/eslint/eslint/issues/13776\n\t\t\t *\n\t\t\t * AssignmentExpression() {},\n\t\t\t */\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use constant conditions\n * @author Christian Schulz <http://rndm.de>\n */\n\n\"use strict\";\n\nconst { isConstant } = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [{ checkLoops: \"allExceptWhileTrue\" }],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow constant expressions in conditions\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-constant-condition\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tcheckLoops: {\n\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\"all\",\n\t\t\t\t\t\t\t\"allExceptWhileTrue\",\n\t\t\t\t\t\t\t\"none\",\n\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Unexpected constant condition.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst loopSetStack = [];\n\t\tconst sourceCode = context.sourceCode;\n\t\tlet [{ checkLoops }] = context.options;\n\n\t\tif (checkLoops === true) {\n\t\t\tcheckLoops = \"all\";\n\t\t} else if (checkLoops === false) {\n\t\t\tcheckLoops = \"none\";\n\t\t}\n\n\t\tlet loopsInCurrentScope = new Set();\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Tracks when the given node contains a constant condition.\n\t\t * @param {ASTNode} node The AST node to check.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction trackConstantConditionLoop(node) {\n\t\t\tif (\n\t\t\t\tnode.test &&\n\t\t\t\tisConstant(sourceCode.getScope(node), node.test, true)\n\t\t\t) {\n\t\t\t\tloopsInCurrentScope.add(node);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports when the set contains the given constant condition node\n\t\t * @param {ASTNode} node The AST node to check.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkConstantConditionLoopInSet(node) {\n\t\t\tif (loopsInCurrentScope.has(node)) {\n\t\t\t\tloopsInCurrentScope.delete(node);\n\t\t\t\tcontext.report({ node: node.test, messageId: \"unexpected\" });\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports when the given node contains a constant condition.\n\t\t * @param {ASTNode} node The AST node to check.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction reportIfConstant(node) {\n\t\t\tif (\n\t\t\t\tnode.test &&\n\t\t\t\tisConstant(sourceCode.getScope(node), node.test, true)\n\t\t\t) {\n\t\t\t\tcontext.report({ node: node.test, messageId: \"unexpected\" });\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Stores current set of constant loops in loopSetStack temporarily\n\t\t * and uses a new set to track constant loops\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction enterFunction() {\n\t\t\tloopSetStack.push(loopsInCurrentScope);\n\t\t\tloopsInCurrentScope = new Set();\n\t\t}\n\n\t\t/**\n\t\t * Reports when the set still contains stored constant conditions\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction exitFunction() {\n\t\t\tloopsInCurrentScope = loopSetStack.pop();\n\t\t}\n\n\t\t/**\n\t\t * Checks node when checkLoops option is enabled\n\t\t * @param {ASTNode} node The AST node to check.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkLoop(node) {\n\t\t\tif (checkLoops === \"all\" || checkLoops === \"allExceptWhileTrue\") {\n\t\t\t\ttrackConstantConditionLoop(node);\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tConditionalExpression: reportIfConstant,\n\t\t\tIfStatement: reportIfConstant,\n\t\t\tWhileStatement(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.test.type === \"Literal\" &&\n\t\t\t\t\tnode.test.value === true &&\n\t\t\t\t\tcheckLoops === \"allExceptWhileTrue\"\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcheckLoop(node);\n\t\t\t},\n\t\t\t\"WhileStatement:exit\": checkConstantConditionLoopInSet,\n\t\t\tDoWhileStatement: checkLoop,\n\t\t\t\"DoWhileStatement:exit\": checkConstantConditionLoopInSet,\n\t\t\tForStatement: checkLoop,\n\t\t\t\"ForStatement > .test\": node => checkLoop(node.parent),\n\t\t\t\"ForStatement:exit\": checkConstantConditionLoopInSet,\n\t\t\tFunctionDeclaration: enterFunction,\n\t\t\t\"FunctionDeclaration:exit\": exitFunction,\n\t\t\tFunctionExpression: enterFunction,\n\t\t\t\"FunctionExpression:exit\": exitFunction,\n\t\t\tYieldExpression: () => loopsInCurrentScope.clear(),\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow returning value from constructor.\n * @author Pig Fang <https://github.com/g-plane>\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow returning value from constructor\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-constructor-return\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tfixable: null,\n\n\t\tmessages: {\n\t\t\tunexpected: \"Unexpected return statement in constructor.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst stack = [];\n\n\t\treturn {\n\t\t\tonCodePathStart(_, node) {\n\t\t\t\tstack.push(node);\n\t\t\t},\n\t\t\tonCodePathEnd() {\n\t\t\t\tstack.pop();\n\t\t\t},\n\t\t\tReturnStatement(node) {\n\t\t\t\tconst last = stack.at(-1);\n\n\t\t\t\tif (!last.parent) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tlast.parent.type === \"MethodDefinition\" &&\n\t\t\t\t\tlast.parent.kind === \"constructor\" &&\n\t\t\t\t\tnode.argument\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of continue statement\n * @author Borislav Zhivkov\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow `continue` statements\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-continue\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Unexpected use of continue statement.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tContinueStatement(node) {\n\t\t\t\tcontext.report({ node, messageId: \"unexpected\" });\n\t\t\t},\n\t\t};\n\t},\n};\n", null, null, null, null, null, null, null, null, null, null, null, "/**\n * @fileoverview Rule to forbid control characters from regular expressions.\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\nconst RegExpValidator = require(\"@eslint-community/regexpp\").RegExpValidator;\nconst collector = new (class {\n\tconstructor() {\n\t\tthis._source = \"\";\n\t\tthis._controlChars = [];\n\t\tthis._validator = new RegExpValidator(this);\n\t}\n\n\tonPatternEnter() {\n\t\t/*\n\t\t * `RegExpValidator` may parse the pattern twice in one `validatePattern`.\n\t\t * So `this._controlChars` should be cleared here as well.\n\t\t *\n\t\t * For example, the `/(?<a>\\x1f)/` regex will parse the pattern twice.\n\t\t * This is based on the content described in Annex B.\n\t\t * If the regex contains a `GroupName` and the `u` flag is not used, `ParseText` will be called twice.\n\t\t * See https://tc39.es/ecma262/2023/multipage/additional-ecmascript-features-for-web-browsers.html#sec-parsepattern-annexb\n\t\t */\n\t\tthis._controlChars = [];\n\t}\n\n\tonCharacter(start, end, cp) {\n\t\tif (\n\t\t\tcp >= 0x00 &&\n\t\t\tcp <= 0x1f &&\n\t\t\t(this._source.codePointAt(start) === cp ||\n\t\t\t\tthis._source.slice(start, end).startsWith(\"\\\\x\") ||\n\t\t\t\tthis._source.slice(start, end).startsWith(\"\\\\u\"))\n\t\t) {\n\t\t\tthis._controlChars.push(`\\\\x${`0${cp.toString(16)}`.slice(-2)}`);\n\t\t}\n\t}\n\n\tcollectControlChars(regexpStr, flags) {\n\t\tconst uFlag = typeof flags === \"string\" && flags.includes(\"u\");\n\t\tconst vFlag = typeof flags === \"string\" && flags.includes(\"v\");\n\n\t\tthis._controlChars = [];\n\t\tthis._source = regexpStr;\n\n\t\ttry {\n\t\t\tthis._validator.validatePattern(regexpStr, void 0, void 0, {\n\t\t\t\tunicode: uFlag,\n\t\t\t\tunicodeSets: vFlag,\n\t\t\t}); // Call onCharacter hook\n\t\t} catch {\n\t\t\t// Ignore syntax errors in RegExp.\n\t\t}\n\t\treturn this._controlChars;\n\t}\n})();\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow control characters in regular expressions\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-control-regex\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected:\n\t\t\t\t\"Unexpected control character(s) in regular expression: {{controlChars}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t/**\n\t\t * Get the regex expression\n\t\t * @param {ASTNode} node `Literal` node to evaluate\n\t\t * @returns {{ pattern: string, flags: string | null } | null} Regex if found (the given node is either a regex literal\n\t\t * or a string literal that is the pattern argument of a RegExp constructor call). Otherwise `null`. If flags cannot be determined,\n\t\t * the `flags` property will be `null`.\n\t\t * @private\n\t\t */\n\t\tfunction getRegExp(node) {\n\t\t\tif (node.regex) {\n\t\t\t\treturn node.regex;\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttypeof node.value === \"string\" &&\n\t\t\t\t(node.parent.type === \"NewExpression\" ||\n\t\t\t\t\tnode.parent.type === \"CallExpression\") &&\n\t\t\t\tnode.parent.callee.type === \"Identifier\" &&\n\t\t\t\tnode.parent.callee.name === \"RegExp\" &&\n\t\t\t\tnode.parent.arguments[0] === node\n\t\t\t) {\n\t\t\t\tconst pattern = node.value;\n\t\t\t\tconst flags =\n\t\t\t\t\tnode.parent.arguments.length > 1 &&\n\t\t\t\t\tnode.parent.arguments[1].type === \"Literal\" &&\n\t\t\t\t\ttypeof node.parent.arguments[1].value === \"string\"\n\t\t\t\t\t\t? node.parent.arguments[1].value\n\t\t\t\t\t\t: null;\n\n\t\t\t\treturn { pattern, flags };\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\tLiteral(node) {\n\t\t\t\tconst regExp = getRegExp(node);\n\n\t\t\t\tif (regExp) {\n\t\t\t\t\tconst { pattern, flags } = regExp;\n\t\t\t\t\tconst controlCharacters = collector.collectControlChars(\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tflags,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (controlCharacters.length > 0) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tcontrolChars: controlCharacters.join(\", \"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of a debugger statement\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow the use of `debugger`\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-debugger\",\n\t\t},\n\n\t\tfixable: null,\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Unexpected 'debugger' statement.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tDebuggerStatement(node) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag when deleting variables\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow deleting variables\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-delete-var\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Variables should not be deleted.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tUnaryExpression(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.operator === \"delete\" &&\n\t\t\t\t\tnode.argument.type === \"Identifier\"\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({ node, messageId: \"unexpected\" });\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to check for ambiguous div operator in regexes\n * @author Matt DuVall <http://www.mattduvall.com>\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow equal signs explicitly at the beginning of regular expressions\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-div-regex\",\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected:\n\t\t\t\t\"A regular expression literal can be confused with '/='.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tLiteral(node) {\n\t\t\t\tconst token = sourceCode.getFirstToken(node);\n\n\t\t\t\tif (\n\t\t\t\t\ttoken.type === \"RegularExpression\" &&\n\t\t\t\t\ttoken.value[1] === \"=\"\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t[token.range[0] + 1, token.range[0] + 2],\n\t\t\t\t\t\t\t\t\"[=]\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag duplicate arguments\n * @author Jamund Ferguson\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Definition} Definition */\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow duplicate arguments in `function` definitions\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-dupe-args\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Duplicate param '{{name}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Checks whether or not a given definition is a parameter's.\n\t\t * @param {Definition} def A definition to check.\n\t\t * @returns {boolean} `true` if the definition is a parameter's.\n\t\t */\n\t\tfunction isParameter(def) {\n\t\t\treturn def.type === \"Parameter\";\n\t\t}\n\n\t\t/**\n\t\t * Determines if a given node has duplicate parameters.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkParams(node) {\n\t\t\tconst variables = sourceCode.getDeclaredVariables(node);\n\n\t\t\tfor (let i = 0; i < variables.length; ++i) {\n\t\t\t\tconst variable = variables[i];\n\n\t\t\t\t// Checks and reports duplications.\n\t\t\t\tconst defs = variable.defs.filter(isParameter);\n\t\t\t\tconst loc = {\n\t\t\t\t\tstart: astUtils.getOpeningParenOfParams(node, sourceCode)\n\t\t\t\t\t\t.loc.start,\n\t\t\t\t\tend: sourceCode.getTokenBefore(node.body).loc.end,\n\t\t\t\t};\n\n\t\t\t\tif (defs.length >= 2) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tloc,\n\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\tdata: { name: variable.name },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tFunctionDeclaration: checkParams,\n\t\t\tFunctionExpression: checkParams,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to disallow duplicate name in class members.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow duplicate class members\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-dupe-class-members\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Duplicate name '{{name}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tlet stack = [];\n\n\t\t/**\n\t\t * Gets state of a given member name.\n\t\t * @param {string} name A name of a member.\n\t\t * @param {boolean} isStatic A flag which specifies that is a static member.\n\t\t * @returns {Object} A state of a given member name.\n\t\t *   - retv.init {boolean} A flag which shows the name is declared as normal member.\n\t\t *   - retv.get {boolean} A flag which shows the name is declared as getter.\n\t\t *   - retv.set {boolean} A flag which shows the name is declared as setter.\n\t\t */\n\t\tfunction getState(name, isStatic) {\n\t\t\tconst stateMap = stack.at(-1);\n\t\t\tconst key = `$${name}`; // to avoid \"__proto__\".\n\n\t\t\tif (!stateMap[key]) {\n\t\t\t\tstateMap[key] = {\n\t\t\t\t\tnonStatic: { init: false, get: false, set: false },\n\t\t\t\t\tstatic: { init: false, get: false, set: false },\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn stateMap[key][isStatic ? \"static\" : \"nonStatic\"];\n\t\t}\n\n\t\treturn {\n\t\t\t// Initializes the stack of state of member declarations.\n\t\t\tProgram() {\n\t\t\t\tstack = [];\n\t\t\t},\n\n\t\t\t// Initializes state of member declarations for the class.\n\t\t\tClassBody() {\n\t\t\t\tstack.push(Object.create(null));\n\t\t\t},\n\n\t\t\t// Disposes the state for the class.\n\t\t\t\"ClassBody:exit\"() {\n\t\t\t\tstack.pop();\n\t\t\t},\n\n\t\t\t// Reports the node if its name has been declared already.\n\t\t\t\"MethodDefinition, PropertyDefinition\"(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.value &&\n\t\t\t\t\tnode.value.type === \"TSEmptyBodyFunctionExpression\"\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst name = astUtils.getStaticPropertyName(node);\n\t\t\t\tconst kind =\n\t\t\t\t\tnode.type === \"MethodDefinition\" ? node.kind : \"field\";\n\n\t\t\t\tif (name === null || kind === \"constructor\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst state = getState(name, node.static);\n\t\t\t\tlet isDuplicate;\n\n\t\t\t\tif (kind === \"get\") {\n\t\t\t\t\tisDuplicate = state.init || state.get;\n\t\t\t\t\tstate.get = true;\n\t\t\t\t} else if (kind === \"set\") {\n\t\t\t\t\tisDuplicate = state.init || state.set;\n\t\t\t\t\tstate.set = true;\n\t\t\t\t} else {\n\t\t\t\t\tisDuplicate = state.init || state.get || state.set;\n\t\t\t\t\tstate.init = true;\n\t\t\t\t}\n\n\t\t\t\tif (isDuplicate) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tloc: node.key.loc,\n\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\tdata: { name },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow duplicate conditions in if-else-if chains\n * @author Milos Djermanovic\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Determines whether the first given array is a subset of the second given array.\n * @param {Function} comparator A function to compare two elements, should return `true` if they are equal.\n * @param {Array} arrA The array to compare from.\n * @param {Array} arrB The array to compare against.\n * @returns {boolean} `true` if the array `arrA` is a subset of the array `arrB`.\n */\nfunction isSubsetByComparator(comparator, arrA, arrB) {\n\treturn arrA.every(a => arrB.some(b => comparator(a, b)));\n}\n\n/**\n * Splits the given node by the given logical operator.\n * @param {string} operator Logical operator `||` or `&&`.\n * @param {ASTNode} node The node to split.\n * @returns {ASTNode[]} Array of conditions that makes the node when joined by the operator.\n */\nfunction splitByLogicalOperator(operator, node) {\n\tif (node.type === \"LogicalExpression\" && node.operator === operator) {\n\t\treturn [\n\t\t\t...splitByLogicalOperator(operator, node.left),\n\t\t\t...splitByLogicalOperator(operator, node.right),\n\t\t];\n\t}\n\treturn [node];\n}\n\nconst splitByOr = splitByLogicalOperator.bind(null, \"||\");\nconst splitByAnd = splitByLogicalOperator.bind(null, \"&&\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow duplicate conditions in if-else-if chains\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-dupe-else-if\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected:\n\t\t\t\t\"This branch can never execute. Its condition is a duplicate or covered by previous conditions in the if-else-if chain.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Determines whether the two given nodes are considered to be equal. In particular, given that the nodes\n\t\t * represent expressions in a boolean context, `||` and `&&` can be considered as commutative operators.\n\t\t * @param {ASTNode} a First node.\n\t\t * @param {ASTNode} b Second node.\n\t\t * @returns {boolean} `true` if the nodes are considered to be equal.\n\t\t */\n\t\tfunction equal(a, b) {\n\t\t\tif (a.type !== b.type) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ta.type === \"LogicalExpression\" &&\n\t\t\t\t(a.operator === \"||\" || a.operator === \"&&\") &&\n\t\t\t\ta.operator === b.operator\n\t\t\t) {\n\t\t\t\treturn (\n\t\t\t\t\t(equal(a.left, b.left) && equal(a.right, b.right)) ||\n\t\t\t\t\t(equal(a.left, b.right) && equal(a.right, b.left))\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn astUtils.equalTokens(a, b, sourceCode);\n\t\t}\n\n\t\tconst isSubset = isSubsetByComparator.bind(null, equal);\n\n\t\treturn {\n\t\t\tIfStatement(node) {\n\t\t\t\tconst test = node.test,\n\t\t\t\t\tconditionsToCheck =\n\t\t\t\t\t\ttest.type === \"LogicalExpression\" &&\n\t\t\t\t\t\ttest.operator === \"&&\"\n\t\t\t\t\t\t\t? [test, ...splitByAnd(test)]\n\t\t\t\t\t\t\t: [test];\n\t\t\t\tlet current = node,\n\t\t\t\t\tlistToCheck = conditionsToCheck.map(c =>\n\t\t\t\t\t\tsplitByOr(c).map(splitByAnd),\n\t\t\t\t\t);\n\n\t\t\t\twhile (\n\t\t\t\t\tcurrent.parent &&\n\t\t\t\t\tcurrent.parent.type === \"IfStatement\" &&\n\t\t\t\t\tcurrent.parent.alternate === current\n\t\t\t\t) {\n\t\t\t\t\tcurrent = current.parent;\n\n\t\t\t\t\tconst currentOrOperands = splitByOr(current.test).map(\n\t\t\t\t\t\tsplitByAnd,\n\t\t\t\t\t);\n\n\t\t\t\t\tlistToCheck = listToCheck.map(orOperands =>\n\t\t\t\t\t\torOperands.filter(\n\t\t\t\t\t\t\torOperand =>\n\t\t\t\t\t\t\t\t!currentOrOperands.some(currentOrOperand =>\n\t\t\t\t\t\t\t\t\tisSubset(currentOrOperand, orOperand),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tlistToCheck.some(orOperands => orOperands.length === 0)\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({ node: test, messageId: \"unexpected\" });\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of duplicate keys in an object.\n * @author Ian Christian Myers\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst GET_KIND = /^(?:init|get)$/u;\nconst SET_KIND = /^(?:init|set)$/u;\n\n/**\n * The class which stores properties' information of an object.\n */\nclass ObjectInfo {\n\t/**\n\t * @param {ObjectInfo|null} upper The information of the outer object.\n\t * @param {ASTNode} node The ObjectExpression node of this information.\n\t */\n\tconstructor(upper, node) {\n\t\tthis.upper = upper;\n\t\tthis.node = node;\n\t\tthis.properties = new Map();\n\t}\n\n\t/**\n\t * Gets the information of the given Property node.\n\t * @param {ASTNode} node The Property node to get.\n\t * @returns {{get: boolean, set: boolean}} The information of the property.\n\t */\n\tgetPropertyInfo(node) {\n\t\tconst name = astUtils.getStaticPropertyName(node);\n\n\t\tif (!this.properties.has(name)) {\n\t\t\tthis.properties.set(name, { get: false, set: false });\n\t\t}\n\t\treturn this.properties.get(name);\n\t}\n\n\t/**\n\t * Checks whether the given property has been defined already or not.\n\t * @param {ASTNode} node The Property node to check.\n\t * @returns {boolean} `true` if the property has been defined.\n\t */\n\tisPropertyDefined(node) {\n\t\tconst entry = this.getPropertyInfo(node);\n\n\t\treturn (\n\t\t\t(GET_KIND.test(node.kind) && entry.get) ||\n\t\t\t(SET_KIND.test(node.kind) && entry.set)\n\t\t);\n\t}\n\n\t/**\n\t * Defines the given property.\n\t * @param {ASTNode} node The Property node to define.\n\t * @returns {void}\n\t */\n\tdefineProperty(node) {\n\t\tconst entry = this.getPropertyInfo(node);\n\n\t\tif (GET_KIND.test(node.kind)) {\n\t\t\tentry.get = true;\n\t\t}\n\t\tif (SET_KIND.test(node.kind)) {\n\t\t\tentry.set = true;\n\t\t}\n\t}\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow duplicate keys in object literals\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-dupe-keys\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Duplicate key '{{name}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tlet info = null;\n\n\t\treturn {\n\t\t\tObjectExpression(node) {\n\t\t\t\tinfo = new ObjectInfo(info, node);\n\t\t\t},\n\t\t\t\"ObjectExpression:exit\"() {\n\t\t\t\tinfo = info.upper;\n\t\t\t},\n\n\t\t\tProperty(node) {\n\t\t\t\tconst name = astUtils.getStaticPropertyName(node);\n\n\t\t\t\t// Skip destructuring.\n\t\t\t\tif (node.parent.type !== \"ObjectExpression\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Skip if the name is not static.\n\t\t\t\tif (name === null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * Skip if the property node is a proto setter.\n\t\t\t\t * Proto setter is a special syntax that sets\n\t\t\t\t * object's prototype instead of creating a property.\n\t\t\t\t * It can be in one of the following forms:\n\t\t\t\t *\n\t\t\t\t *    __proto__: <expression>\n\t\t\t\t *    '__proto__': <expression>\n\t\t\t\t *    \"__proto__\": <expression>\n\t\t\t\t *\n\t\t\t\t * Duplicate proto setters produce parsing errors,\n\t\t\t\t * so we can just skip them to not interfere with\n\t\t\t\t * regular properties named \"__proto__\".\n\t\t\t\t */\n\t\t\t\tif (\n\t\t\t\t\tname === \"__proto__\" &&\n\t\t\t\t\tnode.kind === \"init\" &&\n\t\t\t\t\t!node.computed &&\n\t\t\t\t\t!node.shorthand &&\n\t\t\t\t\t!node.method\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Reports if the name is defined already.\n\t\t\t\tif (info.isPropertyDefined(node)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: info.node,\n\t\t\t\t\t\tloc: node.key.loc,\n\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\tdata: { name },\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Update info.\n\t\t\t\tinfo.defineProperty(node);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow a duplicate case label.\n * @author Dieter Oberkofler\n * @author Burak Yigit Kaya\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow duplicate case labels\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-duplicate-case\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Duplicate case label.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Determines whether the two given nodes are considered to be equal.\n\t\t * @param {ASTNode} a First node.\n\t\t * @param {ASTNode} b Second node.\n\t\t * @returns {boolean} `true` if the nodes are considered to be equal.\n\t\t */\n\t\tfunction equal(a, b) {\n\t\t\tif (a.type !== b.type) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn astUtils.equalTokens(a, b, sourceCode);\n\t\t}\n\t\treturn {\n\t\t\tSwitchStatement(node) {\n\t\t\t\tconst previousTests = [];\n\n\t\t\t\tfor (const switchCase of node.cases) {\n\t\t\t\t\tif (switchCase.test) {\n\t\t\t\t\t\tconst test = switchCase.test;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tpreviousTests.some(previousTest =>\n\t\t\t\t\t\t\t\tequal(previousTest, test),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode: switchCase,\n\t\t\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpreviousTests.push(test);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Restrict usage of duplicate imports.\n * @author Simen Bekkhus\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst NAMED_TYPES = [\"ImportSpecifier\", \"ExportSpecifier\"];\nconst NAMESPACE_TYPES = [\n\t\"ImportNamespaceSpecifier\",\n\t\"ExportNamespaceSpecifier\",\n];\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/**\n * Check if an import/export type belongs to (ImportSpecifier|ExportSpecifier) or (ImportNamespaceSpecifier|ExportNamespaceSpecifier).\n * @param {string} importExportType An import/export type to check.\n * @param {string} type Can be \"named\" or \"namespace\"\n * @returns {boolean} True if import/export type belongs to (ImportSpecifier|ExportSpecifier) or (ImportNamespaceSpecifier|ExportNamespaceSpecifier) and false if it doesn't.\n */\nfunction isImportExportSpecifier(importExportType, type) {\n\tconst arrayToCheck = type === \"named\" ? NAMED_TYPES : NAMESPACE_TYPES;\n\n\treturn arrayToCheck.includes(importExportType);\n}\n\n/**\n * Return the type of (import|export).\n * @param {ASTNode} node A node to get.\n * @returns {string} The type of the (import|export).\n */\nfunction getImportExportType(node) {\n\tif (node.specifiers && node.specifiers.length > 0) {\n\t\tconst nodeSpecifiers = node.specifiers;\n\t\tconst index = nodeSpecifiers.findIndex(\n\t\t\t({ type }) =>\n\t\t\t\tisImportExportSpecifier(type, \"named\") ||\n\t\t\t\tisImportExportSpecifier(type, \"namespace\"),\n\t\t);\n\t\tconst i = index > -1 ? index : 0;\n\n\t\treturn nodeSpecifiers[i].type;\n\t}\n\tif (node.type === \"ExportAllDeclaration\") {\n\t\tif (node.exported) {\n\t\t\treturn \"ExportNamespaceSpecifier\";\n\t\t}\n\t\treturn \"ExportAll\";\n\t}\n\treturn \"SideEffectImport\";\n}\n\n/**\n * Returns a boolean indicates if two (import|export) can be merged\n * @param {ASTNode} node1 A node to check.\n * @param {ASTNode} node2 A node to check.\n * @returns {boolean} True if two (import|export) can be merged, false if they can't.\n */\nfunction isImportExportCanBeMerged(node1, node2) {\n\tconst importExportType1 = getImportExportType(node1);\n\tconst importExportType2 = getImportExportType(node2);\n\n\tif (\n\t\t(node1.importKind === \"type\" || node1.exportKind === \"type\") &&\n\t\t(node2.importKind === \"type\" || node2.exportKind === \"type\")\n\t) {\n\t\tconst isDefault1 = importExportType1 === \"ImportDefaultSpecifier\";\n\t\tconst isDefault2 = importExportType2 === \"ImportDefaultSpecifier\";\n\t\tconst isNamed1 = isImportExportSpecifier(importExportType1, \"named\");\n\t\tconst isNamed2 = isImportExportSpecifier(importExportType2, \"named\");\n\n\t\tif ((isDefault1 && isNamed2) || (isDefault2 && isNamed1)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tif (\n\t\t(importExportType1 === \"ExportAll\" &&\n\t\t\timportExportType2 !== \"ExportAll\" &&\n\t\t\timportExportType2 !== \"SideEffectImport\") ||\n\t\t(importExportType1 !== \"ExportAll\" &&\n\t\t\timportExportType1 !== \"SideEffectImport\" &&\n\t\t\timportExportType2 === \"ExportAll\")\n\t) {\n\t\treturn false;\n\t}\n\tif (\n\t\t(isImportExportSpecifier(importExportType1, \"namespace\") &&\n\t\t\tisImportExportSpecifier(importExportType2, \"named\")) ||\n\t\t(isImportExportSpecifier(importExportType2, \"namespace\") &&\n\t\t\tisImportExportSpecifier(importExportType1, \"named\"))\n\t) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\n/**\n * Returns a boolean if we should report (import|export).\n * @param {ASTNode} node A node to be reported or not.\n * @param {[ASTNode]} previousNodes An array contains previous nodes of the module imported or exported.\n * @param {boolean} allowSeparateTypeImports Whether to allow separate type and value imports.\n * @returns {boolean} True if the (import|export) should be reported.\n */\nfunction shouldReportImportExport(\n\tnode,\n\tpreviousNodes,\n\tallowSeparateTypeImports,\n) {\n\tlet i = 0;\n\n\twhile (i < previousNodes.length) {\n\t\tconst previousNode = previousNodes[i];\n\n\t\tif (allowSeparateTypeImports) {\n\t\t\tconst isTypeNode =\n\t\t\t\tnode.importKind === \"type\" || node.exportKind === \"type\";\n\t\t\tconst isTypePrevious =\n\t\t\t\tpreviousNode.importKind === \"type\" ||\n\t\t\t\tpreviousNode.exportKind === \"type\";\n\n\t\t\tif (isTypeNode !== isTypePrevious) {\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (isImportExportCanBeMerged(node, previousNode)) {\n\t\t\treturn true;\n\t\t}\n\t\ti++;\n\t}\n\treturn false;\n}\n\n/**\n * Returns array contains only nodes with declarations types equal to type.\n * @param {[{node: ASTNode, declarationType: string}]} nodes An array contains objects, each object contains a node and a declaration type.\n * @param {string} type Declaration type.\n * @returns {[ASTNode]} An array contains only nodes with declarations types equal to type.\n */\nfunction getNodesByDeclarationType(nodes, type) {\n\treturn nodes\n\t\t.filter(({ declarationType }) => declarationType === type)\n\t\t.map(({ node }) => node);\n}\n\n/**\n * Returns the name of the module imported or re-exported.\n * @param {ASTNode} node A node to get.\n * @returns {string} The name of the module, or empty string if no name.\n */\nfunction getModule(node) {\n\tif (node && node.source && node.source.value) {\n\t\treturn node.source.value.trim();\n\t}\n\treturn \"\";\n}\n\n/**\n * Checks if the (import|export) can be merged with at least one import or one export, and reports if so.\n * @param {RuleContext} context The ESLint rule context object.\n * @param {ASTNode} node A node to get.\n * @param {Map} modules A Map object contains as a key a module name and as value an array contains objects, each object contains a node and a declaration type.\n * @param {string} declarationType A declaration type can be an import or export.\n * @param {boolean} includeExports Whether or not to check for exports in addition to imports.\n * @param {boolean} allowSeparateTypeImports Whether to allow separate type and value imports.\n * @returns {void} No return value.\n */\nfunction checkAndReport(\n\tcontext,\n\tnode,\n\tmodules,\n\tdeclarationType,\n\tincludeExports,\n\tallowSeparateTypeImports,\n) {\n\tconst module = getModule(node);\n\n\tif (modules.has(module)) {\n\t\tconst previousNodes = modules.get(module);\n\t\tconst messagesIds = [];\n\t\tconst importNodes = getNodesByDeclarationType(previousNodes, \"import\");\n\t\tlet exportNodes;\n\n\t\tif (includeExports) {\n\t\t\texportNodes = getNodesByDeclarationType(previousNodes, \"export\");\n\t\t}\n\t\tif (declarationType === \"import\") {\n\t\t\tif (\n\t\t\t\tshouldReportImportExport(\n\t\t\t\t\tnode,\n\t\t\t\t\timportNodes,\n\t\t\t\t\tallowSeparateTypeImports,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tmessagesIds.push(\"import\");\n\t\t\t}\n\t\t\tif (includeExports) {\n\t\t\t\tif (\n\t\t\t\t\tshouldReportImportExport(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\texportNodes,\n\t\t\t\t\t\tallowSeparateTypeImports,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tmessagesIds.push(\"importAs\");\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (declarationType === \"export\") {\n\t\t\tif (\n\t\t\t\tshouldReportImportExport(\n\t\t\t\t\tnode,\n\t\t\t\t\texportNodes,\n\t\t\t\t\tallowSeparateTypeImports,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tmessagesIds.push(\"export\");\n\t\t\t}\n\t\t\tif (\n\t\t\t\tshouldReportImportExport(\n\t\t\t\t\tnode,\n\t\t\t\t\timportNodes,\n\t\t\t\t\tallowSeparateTypeImports,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tmessagesIds.push(\"exportAs\");\n\t\t\t}\n\t\t}\n\t\tmessagesIds.forEach(messageId =>\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId,\n\t\t\t\tdata: {\n\t\t\t\t\tmodule,\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\t}\n}\n\n/**\n * @callback nodeCallback\n * @param {ASTNode} node A node to handle.\n */\n\n/**\n * Returns a function handling the (imports|exports) of a given file\n * @param {RuleContext} context The ESLint rule context object.\n * @param {Map} modules A Map object contains as a key a module name and as value an array contains objects, each object contains a node and a declaration type.\n * @param {string} declarationType A declaration type can be an import or export.\n * @param {boolean} includeExports Whether or not to check for exports in addition to imports.\n * @param {boolean} allowSeparateTypeImports Whether to allow separate type and value imports.\n * @returns {nodeCallback} A function passed to ESLint to handle the statement.\n */\nfunction handleImportsExports(\n\tcontext,\n\tmodules,\n\tdeclarationType,\n\tincludeExports,\n\tallowSeparateTypeImports,\n) {\n\treturn function (node) {\n\t\tconst module = getModule(node);\n\n\t\tif (module) {\n\t\t\tcheckAndReport(\n\t\t\t\tcontext,\n\t\t\t\tnode,\n\t\t\t\tmodules,\n\t\t\t\tdeclarationType,\n\t\t\t\tincludeExports,\n\t\t\t\tallowSeparateTypeImports,\n\t\t\t);\n\t\t\tconst currentNode = { node, declarationType };\n\t\t\tlet nodes = [currentNode];\n\n\t\t\tif (modules.has(module)) {\n\t\t\t\tconst previousNodes = modules.get(module);\n\n\t\t\t\tnodes = [...previousNodes, currentNode];\n\t\t\t}\n\t\t\tmodules.set(module, nodes);\n\t\t}\n\t};\n}\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tincludeExports: false,\n\t\t\t\tallowSeparateTypeImports: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow duplicate module imports\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-duplicate-imports\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tincludeExports: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowSeparateTypeImports: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\timport: \"'{{module}}' import is duplicated.\",\n\t\t\timportAs: \"'{{module}}' import is duplicated as export.\",\n\t\t\texport: \"'{{module}}' export is duplicated.\",\n\t\t\texportAs: \"'{{module}}' export is duplicated as import.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ includeExports, allowSeparateTypeImports }] = context.options;\n\t\tconst modules = new Map();\n\t\tconst handlers = {\n\t\t\tImportDeclaration: handleImportsExports(\n\t\t\t\tcontext,\n\t\t\t\tmodules,\n\t\t\t\t\"import\",\n\t\t\t\tincludeExports,\n\t\t\t\tallowSeparateTypeImports,\n\t\t\t),\n\t\t};\n\n\t\tif (includeExports) {\n\t\t\thandlers.ExportNamedDeclaration = handleImportsExports(\n\t\t\t\tcontext,\n\t\t\t\tmodules,\n\t\t\t\t\"export\",\n\t\t\t\tincludeExports,\n\t\t\t\tallowSeparateTypeImports,\n\t\t\t);\n\t\t\thandlers.ExportAllDeclaration = handleImportsExports(\n\t\t\t\tcontext,\n\t\t\t\tmodules,\n\t\t\t\t\"export\",\n\t\t\t\tincludeExports,\n\t\t\t\tallowSeparateTypeImports,\n\t\t\t);\n\t\t}\n\t\treturn handlers;\n\t},\n};\n", "/**\n * @fileoverview Helper class to aid in constructing fix commands.\n * @author Alan Pierce\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n/**\n * @import { SourceRange } from \"@eslint/core\";\n */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./ast-utils\");\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * A helper class to combine fix options into a fix command. Currently, it\n * exposes some \"retain\" methods that extend the range of the text being\n * replaced so that other fixes won't touch that region in the same pass.\n */\nclass FixTracker {\n\t/**\n\t * Create a new FixTracker.\n\t * @param {ruleFixer} fixer A ruleFixer instance.\n\t * @param {SourceCode} sourceCode A SourceCode object for the current code.\n\t */\n\tconstructor(fixer, sourceCode) {\n\t\tthis.fixer = fixer;\n\t\tthis.sourceCode = sourceCode;\n\t\tthis.retainedRange = null;\n\t}\n\n\t/**\n\t * Mark the given range as \"retained\", meaning that other fixes may not\n\t * may not modify this region in the same pass.\n\t * @param {SourceRange} range The range to retain.\n\t * @returns {FixTracker} The same RuleFixer, for chained calls.\n\t */\n\tretainRange(range) {\n\t\tthis.retainedRange = range;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Given a node, find the function containing it (or the entire program) and\n\t * mark it as retained, meaning that other fixes may not modify it in this\n\t * pass. This is useful for avoiding conflicts in fixes that modify control\n\t * flow.\n\t * @param {ASTNode} node The node to use as a starting point.\n\t * @returns {FixTracker} The same RuleFixer, for chained calls.\n\t */\n\tretainEnclosingFunction(node) {\n\t\tconst functionNode = astUtils.getUpperFunction(node);\n\n\t\treturn this.retainRange(\n\t\t\tfunctionNode ? functionNode.range : this.sourceCode.ast.range,\n\t\t);\n\t}\n\n\t/**\n\t * Given a node or token, find the token before and afterward, and mark that\n\t * range as retained, meaning that other fixes may not modify it in this\n\t * pass. This is useful for avoiding conflicts in fixes that make a small\n\t * change to the code where the AST should not be changed.\n\t * @param {ASTNode|Token} nodeOrToken The node or token to use as a starting\n\t *      point. The token to the left and right are use in the range.\n\t * @returns {FixTracker} The same RuleFixer, for chained calls.\n\t */\n\tretainSurroundingTokens(nodeOrToken) {\n\t\tconst tokenBefore =\n\t\t\tthis.sourceCode.getTokenBefore(nodeOrToken) || nodeOrToken;\n\t\tconst tokenAfter =\n\t\t\tthis.sourceCode.getTokenAfter(nodeOrToken) || nodeOrToken;\n\n\t\treturn this.retainRange([tokenBefore.range[0], tokenAfter.range[1]]);\n\t}\n\n\t/**\n\t * Create a fix command that replaces the given range with the given text,\n\t * accounting for any retained ranges.\n\t * @param {SourceRange} range The range to remove in the fix.\n\t * @param {string} text The text to insert in place of the range.\n\t * @returns {Object} The fix command.\n\t */\n\treplaceTextRange(range, text) {\n\t\tlet actualRange;\n\n\t\tif (this.retainedRange) {\n\t\t\tactualRange = [\n\t\t\t\tMath.min(this.retainedRange[0], range[0]),\n\t\t\t\tMath.max(this.retainedRange[1], range[1]),\n\t\t\t];\n\t\t} else {\n\t\t\tactualRange = range;\n\t\t}\n\n\t\treturn this.fixer.replaceTextRange(\n\t\t\tactualRange,\n\t\t\tthis.sourceCode.text.slice(actualRange[0], range[0]) +\n\t\t\t\ttext +\n\t\t\t\tthis.sourceCode.text.slice(range[1], actualRange[1]),\n\t\t);\n\t}\n\n\t/**\n\t * Create a fix command that removes the given node or token, accounting for\n\t * any retained ranges.\n\t * @param {ASTNode|Token} nodeOrToken The node or token to remove.\n\t * @returns {Object} The fix command.\n\t */\n\tremove(nodeOrToken) {\n\t\treturn this.replaceTextRange(nodeOrToken.range, \"\");\n\t}\n}\n\nmodule.exports = FixTracker;\n", "/**\n * @fileoverview Rule to flag `else` after a `return` in `if`\n * @author Ian Christian Myers\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst FixTracker = require(\"./utils/fix-tracker\");\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Scope} Scope */\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [{ allowElseIf: true }],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow `else` blocks after `return` statements in `if` statements\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-else-return\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowElseIf: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tunexpected: \"Unnecessary 'else' after 'return'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ allowElseIf }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Checks whether the given names can be safely used to declare block-scoped variables\n\t\t * in the given scope. Name collisions can produce redeclaration syntax errors,\n\t\t * or silently change references and modify behavior of the original code.\n\t\t *\n\t\t * This is not a generic function. In particular, it is assumed that the scope is a function scope or\n\t\t * a function's inner scope, and that the names can be valid identifiers in the given scope.\n\t\t * @param {string[]} names Array of variable names.\n\t\t * @param {Scope} scope Function scope or a function's inner scope.\n\t\t * @returns {boolean} True if all names can be safely declared, false otherwise.\n\t\t */\n\t\tfunction isSafeToDeclare(names, scope) {\n\t\t\tif (names.length === 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst functionScope = scope.variableScope;\n\n\t\t\t/*\n\t\t\t * If this is a function scope, scope.variables will contain parameters, implicit variables such as \"arguments\",\n\t\t\t * all function-scoped variables ('var'), and block-scoped variables defined in the scope.\n\t\t\t * If this is an inner scope, scope.variables will contain block-scoped variables defined in the scope.\n\t\t\t *\n\t\t\t * Redeclaring any of these would cause a syntax error, except for the implicit variables.\n\t\t\t */\n\t\t\tconst declaredVariables = scope.variables.filter(\n\t\t\t\t({ defs }) => defs.length > 0,\n\t\t\t);\n\n\t\t\tif (declaredVariables.some(({ name }) => names.includes(name))) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Redeclaring a catch variable would also cause a syntax error.\n\t\t\tif (scope !== functionScope && scope.upper.type === \"catch\") {\n\t\t\t\tif (\n\t\t\t\t\tscope.upper.variables.some(({ name }) =>\n\t\t\t\t\t\tnames.includes(name),\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Redeclaring an implicit variable, such as \"arguments\", would not cause a syntax error.\n\t\t\t * However, if the variable was used, declaring a new one with the same name would change references\n\t\t\t * and modify behavior.\n\t\t\t */\n\t\t\tconst usedImplicitVariables = scope.variables.filter(\n\t\t\t\t({ defs, references }) =>\n\t\t\t\t\tdefs.length === 0 && references.length > 0,\n\t\t\t);\n\n\t\t\tif (\n\t\t\t\tusedImplicitVariables.some(({ name }) => names.includes(name))\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Declaring a variable with a name that was already used to reference a variable from an upper scope\n\t\t\t * would change references and modify behavior.\n\t\t\t */\n\t\t\tif (scope.through.some(t => names.includes(t.identifier.name))) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * If the scope is an inner scope (not the function scope), an uninitialized `var` variable declared inside\n\t\t\t * the scope node (directly or in one of its descendants) is neither declared nor 'through' in the scope.\n\t\t\t *\n\t\t\t * For example, this would be a syntax error \"Identifier 'a' has already been declared\":\n\t\t\t * function foo() { if (bar) { let a; if (baz) { var a; } } }\n\t\t\t */\n\t\t\tif (scope !== functionScope) {\n\t\t\t\tconst scopeNodeRange = scope.block.range;\n\t\t\t\tconst variablesToCheck = functionScope.variables.filter(\n\t\t\t\t\t({ name }) => names.includes(name),\n\t\t\t\t);\n\n\t\t\t\tif (\n\t\t\t\t\tvariablesToCheck.some(v =>\n\t\t\t\t\t\tv.defs.some(\n\t\t\t\t\t\t\t({ node: { range } }) =>\n\t\t\t\t\t\t\t\tscopeNodeRange[0] <= range[0] &&\n\t\t\t\t\t\t\t\trange[1] <= scopeNodeRange[1],\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether the removal of `else` and its braces is safe from variable name collisions.\n\t\t * @param {Node} node The 'else' node.\n\t\t * @param {Scope} scope The scope in which the node and the whole 'if' statement is.\n\t\t * @returns {boolean} True if it is safe, false otherwise.\n\t\t */\n\t\tfunction isSafeFromNameCollisions(node, scope) {\n\t\t\tif (node.type === \"FunctionDeclaration\") {\n\t\t\t\t// Conditional function declaration. Scope and hoisting are unpredictable, different engines work differently.\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (node.type !== \"BlockStatement\") {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst elseBlockScope = scope.childScopes.find(\n\t\t\t\t({ block }) => block === node,\n\t\t\t);\n\n\t\t\tif (!elseBlockScope) {\n\t\t\t\t// ecmaVersion < 6, `else` block statement cannot have its own scope, no possible collisions.\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * elseBlockScope is supposed to merge into its upper scope. elseBlockScope.variables array contains\n\t\t\t * only block-scoped variables (such as let and const variables or class and function declarations)\n\t\t\t * defined directly in the elseBlockScope. These are exactly the only names that could cause collisions.\n\t\t\t */\n\t\t\tconst namesToCheck = elseBlockScope.variables.map(\n\t\t\t\t({ name }) => name,\n\t\t\t);\n\n\t\t\treturn isSafeToDeclare(namesToCheck, scope);\n\t\t}\n\n\t\t/**\n\t\t * Display the context report if rule is violated\n\t\t * @param {Node} elseNode The 'else' node\n\t\t * @returns {void}\n\t\t */\n\t\tfunction displayReport(elseNode) {\n\t\t\tconst currentScope = sourceCode.getScope(elseNode.parent);\n\n\t\t\tcontext.report({\n\t\t\t\tnode: elseNode,\n\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\tfix(fixer) {\n\t\t\t\t\tif (!isSafeFromNameCollisions(elseNode, currentScope)) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst startToken = sourceCode.getFirstToken(elseNode);\n\t\t\t\t\tconst elseToken = sourceCode.getTokenBefore(startToken);\n\t\t\t\t\tconst source = sourceCode.getText(elseNode);\n\t\t\t\t\tconst lastIfToken = sourceCode.getTokenBefore(elseToken);\n\t\t\t\t\tlet fixedSource, firstTokenOfElseBlock;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tstartToken.type === \"Punctuator\" &&\n\t\t\t\t\t\tstartToken.value === \"{\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tfirstTokenOfElseBlock =\n\t\t\t\t\t\t\tsourceCode.getTokenAfter(startToken);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfirstTokenOfElseBlock = startToken;\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * If the if block does not have curly braces and does not end in a semicolon\n\t\t\t\t\t * and the else block starts with (, [, /, +, ` or -, then it is not\n\t\t\t\t\t * safe to remove the else keyword, because ASI will not add a semicolon\n\t\t\t\t\t * after the if block\n\t\t\t\t\t */\n\t\t\t\t\tconst ifBlockMaybeUnsafe =\n\t\t\t\t\t\telseNode.parent.consequent.type !== \"BlockStatement\" &&\n\t\t\t\t\t\tlastIfToken.value !== \";\";\n\t\t\t\t\tconst elseBlockUnsafe = /^[([/+`-]/u.test(\n\t\t\t\t\t\tfirstTokenOfElseBlock.value,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (ifBlockMaybeUnsafe && elseBlockUnsafe) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst endToken = sourceCode.getLastToken(elseNode);\n\t\t\t\t\tconst lastTokenOfElseBlock =\n\t\t\t\t\t\tsourceCode.getTokenBefore(endToken);\n\n\t\t\t\t\tif (lastTokenOfElseBlock.value !== \";\") {\n\t\t\t\t\t\tconst nextToken = sourceCode.getTokenAfter(endToken);\n\n\t\t\t\t\t\tconst nextTokenUnsafe =\n\t\t\t\t\t\t\tnextToken && /^[([/+`-]/u.test(nextToken.value);\n\t\t\t\t\t\tconst nextTokenOnSameLine =\n\t\t\t\t\t\t\tnextToken &&\n\t\t\t\t\t\t\tnextToken.loc.start.line ===\n\t\t\t\t\t\t\t\tlastTokenOfElseBlock.loc.start.line;\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If the else block contents does not end in a semicolon,\n\t\t\t\t\t\t * and the else block starts with (, [, /, +, ` or -, then it is not\n\t\t\t\t\t\t * safe to remove the else block, because ASI will not add a semicolon\n\t\t\t\t\t\t * after the remaining else block contents\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tnextTokenUnsafe ||\n\t\t\t\t\t\t\t(nextTokenOnSameLine && nextToken.value !== \"}\")\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tstartToken.type === \"Punctuator\" &&\n\t\t\t\t\t\tstartToken.value === \"{\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tfixedSource = source.slice(1, -1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfixedSource = source;\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * Extend the replacement range to include the entire\n\t\t\t\t\t * function to avoid conflicting with no-useless-return.\n\t\t\t\t\t * https://github.com/eslint/eslint/issues/8026\n\t\t\t\t\t *\n\t\t\t\t\t * Also, to avoid name collisions between two else blocks.\n\t\t\t\t\t */\n\t\t\t\t\treturn new FixTracker(fixer, sourceCode)\n\t\t\t\t\t\t.retainEnclosingFunction(elseNode)\n\t\t\t\t\t\t.replaceTextRange(\n\t\t\t\t\t\t\t[elseToken.range[0], elseNode.range[1]],\n\t\t\t\t\t\t\tfixedSource,\n\t\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Check to see if the node is a ReturnStatement\n\t\t * @param {Node} node The node being evaluated\n\t\t * @returns {boolean} True if node is a return\n\t\t */\n\t\tfunction checkForReturn(node) {\n\t\t\treturn node.type === \"ReturnStatement\";\n\t\t}\n\n\t\t/**\n\t\t * Naive return checking, does not iterate through the whole\n\t\t * BlockStatement because we make the assumption that the ReturnStatement\n\t\t * will be the last node in the body of the BlockStatement.\n\t\t * @param {Node} node The consequent/alternate node\n\t\t * @returns {boolean} True if it has a return\n\t\t */\n\t\tfunction naiveHasReturn(node) {\n\t\t\tif (node.type === \"BlockStatement\") {\n\t\t\t\tconst body = node.body,\n\t\t\t\t\tlastChildNode = body.at(-1);\n\n\t\t\t\treturn lastChildNode && checkForReturn(lastChildNode);\n\t\t\t}\n\t\t\treturn checkForReturn(node);\n\t\t}\n\n\t\t/**\n\t\t * Check to see if the node is valid for evaluation,\n\t\t * meaning it has an else.\n\t\t * @param {Node} node The node being evaluated\n\t\t * @returns {boolean} True if the node is valid\n\t\t */\n\t\tfunction hasElse(node) {\n\t\t\treturn node.alternate && node.consequent;\n\t\t}\n\n\t\t/**\n\t\t * If the consequent is an IfStatement, check to see if it has an else\n\t\t * and both its consequent and alternate path return, meaning this is\n\t\t * a nested case of rule violation.  If-Else not considered currently.\n\t\t * @param {Node} node The consequent node\n\t\t * @returns {boolean} True if this is a nested rule violation\n\t\t */\n\t\tfunction checkForIf(node) {\n\t\t\treturn (\n\t\t\t\tnode.type === \"IfStatement\" &&\n\t\t\t\thasElse(node) &&\n\t\t\t\tnaiveHasReturn(node.alternate) &&\n\t\t\t\tnaiveHasReturn(node.consequent)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check the consequent/body node to make sure it is not\n\t\t * a ReturnStatement or an IfStatement that returns on both\n\t\t * code paths.\n\t\t * @param {Node} node The consequent or body node\n\t\t * @returns {boolean} `true` if it is a Return/If node that always returns.\n\t\t */\n\t\tfunction checkForReturnOrIf(node) {\n\t\t\treturn checkForReturn(node) || checkForIf(node);\n\t\t}\n\n\t\t/**\n\t\t * Check whether a node returns in every codepath.\n\t\t * @param {Node} node The node to be checked\n\t\t * @returns {boolean} `true` if it returns on every codepath.\n\t\t */\n\t\tfunction alwaysReturns(node) {\n\t\t\tif (node.type === \"BlockStatement\") {\n\t\t\t\t// If we have a BlockStatement, check each consequent body node.\n\t\t\t\treturn node.body.some(checkForReturnOrIf);\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * If not a block statement, make sure the consequent isn't a\n\t\t\t * ReturnStatement or an IfStatement with returns on both paths.\n\t\t\t */\n\t\t\treturn checkForReturnOrIf(node);\n\t\t}\n\n\t\t/**\n\t\t * Check the if statement, but don't catch else-if blocks.\n\t\t * @returns {void}\n\t\t * @param {Node} node The node for the if statement to check\n\t\t * @private\n\t\t */\n\t\tfunction checkIfWithoutElse(node) {\n\t\t\tconst parent = node.parent;\n\n\t\t\t/*\n\t\t\t * Fixing this would require splitting one statement into two, so no error should\n\t\t\t * be reported if this node is in a position where only one statement is allowed.\n\t\t\t */\n\t\t\tif (!astUtils.STATEMENT_LIST_PARENTS.has(parent.type)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst consequents = [];\n\t\t\tlet alternate;\n\n\t\t\tfor (\n\t\t\t\tlet currentNode = node;\n\t\t\t\tcurrentNode.type === \"IfStatement\";\n\t\t\t\tcurrentNode = currentNode.alternate\n\t\t\t) {\n\t\t\t\tif (!currentNode.alternate) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconsequents.push(currentNode.consequent);\n\t\t\t\talternate = currentNode.alternate;\n\t\t\t}\n\n\t\t\tif (consequents.every(alwaysReturns)) {\n\t\t\t\tdisplayReport(alternate);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check the if statement\n\t\t * @returns {void}\n\t\t * @param {Node} node The node for the if statement to check\n\t\t * @private\n\t\t */\n\t\tfunction checkIfWithElse(node) {\n\t\t\tconst parent = node.parent;\n\n\t\t\t/*\n\t\t\t * Fixing this would require splitting one statement into two, so no error should\n\t\t\t * be reported if this node is in a position where only one statement is allowed.\n\t\t\t */\n\t\t\tif (!astUtils.STATEMENT_LIST_PARENTS.has(parent.type)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst alternate = node.alternate;\n\n\t\t\tif (alternate && alwaysReturns(node.consequent)) {\n\t\t\t\tdisplayReport(alternate);\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\t\"IfStatement:exit\": allowElseIf\n\t\t\t\t? checkIfWithoutElse\n\t\t\t\t: checkIfWithElse,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of an empty block statement\n * @author Nicholas C. Zakas\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\thasSuggestions: true,\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowEmptyCatch: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow empty block statements\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-empty\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowEmptyCatch: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Empty {{type}} statement.\",\n\t\t\tsuggestComment: \"Add comment inside empty {{type}} statement.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ allowEmptyCatch }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tBlockStatement(node) {\n\t\t\t\t// if the body is not empty, we can just return immediately\n\t\t\t\tif (node.body.length !== 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// a function is generally allowed to be empty\n\t\t\t\tif (astUtils.isFunction(node.parent)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (allowEmptyCatch && node.parent.type === \"CatchClause\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// any other block is only allowed to be empty, if it contains a comment\n\t\t\t\tif (sourceCode.getCommentsInside(node).length > 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\tdata: { type: \"block\" },\n\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmessageId: \"suggestComment\",\n\t\t\t\t\t\t\tdata: { type: \"block\" },\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\tconst range = [\n\t\t\t\t\t\t\t\t\tnode.range[0] + 1,\n\t\t\t\t\t\t\t\t\tnode.range[1] - 1,\n\t\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\trange,\n\t\t\t\t\t\t\t\t\t\" /* empty */ \",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tSwitchStatement(node) {\n\t\t\t\tif (\n\t\t\t\t\ttypeof node.cases === \"undefined\" ||\n\t\t\t\t\tnode.cases.length === 0\n\t\t\t\t) {\n\t\t\t\t\tconst openingBrace = sourceCode.getTokenAfter(\n\t\t\t\t\t\tnode.discriminant,\n\t\t\t\t\t\tastUtils.isOpeningBraceToken,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst closingBrace = sourceCode.getLastToken(node);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tsourceCode.commentsExistBetween(\n\t\t\t\t\t\t\topeningBrace,\n\t\t\t\t\t\t\tclosingBrace,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tstart: openingBrace.loc.start,\n\t\t\t\t\t\t\tend: closingBrace.loc.end,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\tdata: { type: \"switch\" },\n\t\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmessageId: \"suggestComment\",\n\t\t\t\t\t\t\t\tdata: { type: \"switch\" },\n\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\tconst range = [\n\t\t\t\t\t\t\t\t\t\topeningBrace.range[1],\n\t\t\t\t\t\t\t\t\t\tclosingBrace.range[0],\n\t\t\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\t\trange,\n\t\t\t\t\t\t\t\t\t\t\" /* empty */ \",\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag the use of empty character classes in regular expressions\n * @author Ian Christian Myers\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst { RegExpParser, visitRegExpAST } = require(\"@eslint-community/regexpp\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst parser = new RegExpParser();\nconst QUICK_TEST_REGEX = /\\[\\]/u;\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow empty character classes in regular expressions\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-empty-character-class\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Empty class.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\t\"Literal[regex]\"(node) {\n\t\t\t\tconst { pattern, flags } = node.regex;\n\n\t\t\t\tif (!QUICK_TEST_REGEX.test(pattern)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet regExpAST;\n\n\t\t\t\ttry {\n\t\t\t\t\tregExpAST = parser.parsePattern(\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\tpattern.length,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tunicode: flags.includes(\"u\"),\n\t\t\t\t\t\t\tunicodeSets: flags.includes(\"v\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t} catch {\n\t\t\t\t\t// Ignore regular expressions that regexpp cannot parse\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvisitRegExpAST(regExpAST, {\n\t\t\t\t\tonCharacterClassEnter(characterClass) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!characterClass.negate &&\n\t\t\t\t\t\t\tcharacterClass.elements.length === 0\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcontext.report({ node, messageId: \"unexpected\" });\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow empty functions.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst ALLOW_OPTIONS = Object.freeze([\n\t\"functions\",\n\t\"arrowFunctions\",\n\t\"generatorFunctions\",\n\t\"methods\",\n\t\"generatorMethods\",\n\t\"getters\",\n\t\"setters\",\n\t\"constructors\",\n\t\"asyncFunctions\",\n\t\"asyncMethods\",\n\t\"privateConstructors\",\n\t\"protectedConstructors\",\n\t\"decoratedFunctions\",\n\t\"overrideMethods\",\n]);\n\n/**\n * Gets the kind of a given function node.\n * @param {ASTNode} node A function node to get. This is one of\n *      an ArrowFunctionExpression, a FunctionDeclaration, or a\n *      FunctionExpression.\n * @returns {string} The kind of the function. This is one of \"functions\",\n *      \"arrowFunctions\", \"generatorFunctions\", \"asyncFunctions\", \"methods\",\n *      \"generatorMethods\", \"asyncMethods\", \"getters\", \"setters\", and\n *      \"constructors\".\n */\nfunction getKind(node) {\n\tconst parent = node.parent;\n\tlet kind;\n\n\tif (node.type === \"ArrowFunctionExpression\") {\n\t\treturn \"arrowFunctions\";\n\t}\n\n\t// Detects main kind.\n\tif (parent.type === \"Property\") {\n\t\tif (parent.kind === \"get\") {\n\t\t\treturn \"getters\";\n\t\t}\n\t\tif (parent.kind === \"set\") {\n\t\t\treturn \"setters\";\n\t\t}\n\t\tkind = parent.method ? \"methods\" : \"functions\";\n\t} else if (parent.type === \"MethodDefinition\") {\n\t\tif (parent.kind === \"get\") {\n\t\t\treturn \"getters\";\n\t\t}\n\t\tif (parent.kind === \"set\") {\n\t\t\treturn \"setters\";\n\t\t}\n\t\tif (parent.kind === \"constructor\") {\n\t\t\treturn \"constructors\";\n\t\t}\n\t\tkind = \"methods\";\n\t} else {\n\t\tkind = \"functions\";\n\t}\n\n\t// Detects prefix.\n\tlet prefix;\n\n\tif (node.generator) {\n\t\tprefix = \"generator\";\n\t} else if (node.async) {\n\t\tprefix = \"async\";\n\t} else {\n\t\treturn kind;\n\t}\n\treturn prefix + kind[0].toUpperCase() + kind.slice(1);\n}\n\n/**\n * Checks if a constructor function has parameter properties.\n * @param {ASTNode} node The function node to examine.\n * @returns {boolean} True if the constructor has parameter properties, false otherwise.\n */\nfunction isParameterPropertiesConstructor(node) {\n\treturn node.params.some(param => param.type === \"TSParameterProperty\");\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\thasSuggestions: true,\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [{ allow: [] }],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow empty functions\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-empty-function\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallow: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: { enum: ALLOW_OPTIONS },\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Unexpected empty {{name}}.\",\n\t\t\tsuggestComment: \"Add comment inside empty {{name}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ allow }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Checks if the given function node is allowed to be empty.\n\t\t * @param {ASTNode} node The function node to check.\n\t\t * @returns {boolean} True if the function is allowed to be empty, false otherwise.\n\t\t */\n\t\tfunction isAllowedEmptyFunction(node) {\n\t\t\tconst kind = getKind(node);\n\n\t\t\tif (allow.includes(kind)) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (kind === \"constructors\") {\n\t\t\t\tif (\n\t\t\t\t\t(node.parent.accessibility === \"private\" &&\n\t\t\t\t\t\tallow.includes(\"privateConstructors\")) ||\n\t\t\t\t\t(node.parent.accessibility === \"protected\" &&\n\t\t\t\t\t\tallow.includes(\"protectedConstructors\")) ||\n\t\t\t\t\tisParameterPropertiesConstructor(node)\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (/(?:g|s)etters|methods$/iu.test(kind)) {\n\t\t\t\tif (\n\t\t\t\t\t(node.parent.decorators?.length &&\n\t\t\t\t\t\tallow.includes(\"decoratedFunctions\")) ||\n\t\t\t\t\t(node.parent.override && allow.includes(\"overrideMethods\"))\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Reports a given function node if the node matches the following patterns.\n\t\t *\n\t\t * - Not allowed by options.\n\t\t * - The body is empty.\n\t\t * - The body doesn't have any comments.\n\t\t * @param {ASTNode} node A function node to report. This is one of\n\t\t *      an ArrowFunctionExpression, a FunctionDeclaration, or a\n\t\t *      FunctionExpression.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportIfEmpty(node) {\n\t\t\tconst name = astUtils.getFunctionNameWithKind(node);\n\t\t\tconst innerComments = sourceCode.getTokens(node.body, {\n\t\t\t\tincludeComments: true,\n\t\t\t\tfilter: astUtils.isCommentToken,\n\t\t\t});\n\n\t\t\tif (\n\t\t\t\t!isAllowedEmptyFunction(node) &&\n\t\t\t\tnode.body.type === \"BlockStatement\" &&\n\t\t\t\tnode.body.body.length === 0 &&\n\t\t\t\tinnerComments.length === 0\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: node.body.loc,\n\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\tdata: { name },\n\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmessageId: \"suggestComment\",\n\t\t\t\t\t\t\tdata: { name },\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\tconst range = [\n\t\t\t\t\t\t\t\t\tnode.body.range[0] + 1,\n\t\t\t\t\t\t\t\t\tnode.body.range[1] - 1,\n\t\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\trange,\n\t\t\t\t\t\t\t\t\t\" /* empty */ \",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tArrowFunctionExpression: reportIfEmpty,\n\t\t\tFunctionDeclaration: reportIfEmpty,\n\t\t\tFunctionExpression: reportIfEmpty,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow an empty pattern\n * @author Alberto Rodr\u00EDguez\n */\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowObjectPatternsAsParameters: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow empty destructuring patterns\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-empty-pattern\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowObjectPatternsAsParameters: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Unexpected empty {{type}} pattern.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ allowObjectPatternsAsParameters }] = context.options;\n\n\t\treturn {\n\t\t\tObjectPattern(node) {\n\t\t\t\tif (node.properties.length > 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Allow {} and {} = {} empty object patterns as parameters when allowObjectPatternsAsParameters is true\n\t\t\t\tif (\n\t\t\t\t\tallowObjectPatternsAsParameters &&\n\t\t\t\t\t(astUtils.isFunction(node.parent) ||\n\t\t\t\t\t\t(node.parent.type === \"AssignmentPattern\" &&\n\t\t\t\t\t\t\tastUtils.isFunction(node.parent.parent) &&\n\t\t\t\t\t\t\tnode.parent.right.type === \"ObjectExpression\" &&\n\t\t\t\t\t\t\tnode.parent.right.properties.length === 0))\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\tdata: { type: \"object\" },\n\t\t\t\t});\n\t\t\t},\n\t\t\tArrayPattern(node) {\n\t\t\t\tif (node.elements.length === 0) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\tdata: { type: \"array\" },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow empty static blocks.\n * @author Sosuke Suzuki\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\thasSuggestions: true,\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow empty static blocks\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-empty-static-block\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Unexpected empty static block.\",\n\t\t\tsuggestComment: \"Add comment inside empty static block.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tStaticBlock(node) {\n\t\t\t\tif (node.body.length === 0) {\n\t\t\t\t\tconst openingBrace = sourceCode.getFirstToken(node, {\n\t\t\t\t\t\tskip: 1,\n\t\t\t\t\t});\n\t\t\t\t\tconst closingBrace = sourceCode.getLastToken(node);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tsourceCode.getCommentsBefore(closingBrace).length === 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\t\tstart: openingBrace.loc.start,\n\t\t\t\t\t\t\t\tend: closingBrace.loc.end,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmessageId: \"suggestComment\",\n\t\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\t\tconst range = [\n\t\t\t\t\t\t\t\t\t\t\topeningBrace.range[1],\n\t\t\t\t\t\t\t\t\t\t\tclosingBrace.range[0],\n\t\t\t\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\t\t\trange,\n\t\t\t\t\t\t\t\t\t\t\t\" /* empty */ \",\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag comparisons to null without a type-checking\n * operator.\n * @author Ian Christian Myers\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow `null` comparisons without type-checking operators\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-eq-null\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Use '===' to compare with null.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tBinaryExpression(node) {\n\t\t\t\tconst badOperator =\n\t\t\t\t\tnode.operator === \"==\" || node.operator === \"!=\";\n\n\t\t\t\tif (\n\t\t\t\t\t(node.right.type === \"Literal\" &&\n\t\t\t\t\t\tnode.right.raw === \"null\" &&\n\t\t\t\t\t\tbadOperator) ||\n\t\t\t\t\t(node.left.type === \"Literal\" &&\n\t\t\t\t\t\tnode.left.raw === \"null\" &&\n\t\t\t\t\t\tbadOperator)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({ node, messageId: \"unexpected\" });\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of eval() statement\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Scope} Scope */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst candidatesOfGlobalObject = Object.freeze([\n\t\"global\",\n\t\"window\",\n\t\"globalThis\",\n]);\n\n/**\n * Checks a given node is a MemberExpression node which has the specified name's\n * property.\n * @param {ASTNode} node A node to check.\n * @param {string} name A name to check.\n * @returns {boolean} `true` if the node is a MemberExpression node which has\n *      the specified name's property\n */\nfunction isMember(node, name) {\n\treturn astUtils.isSpecificMemberAccess(node, null, name);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowIndirect: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow the use of `eval()`\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-eval\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowIndirect: { type: \"boolean\" },\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpected: \"`eval` can be harmful.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ allowIndirect }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\t\tlet funcInfo = null;\n\n\t\t/**\n\t\t * Pushes a `this` scope (non-arrow function, class static block, or class field initializer) information to the stack.\n\t\t * Top-level scopes are handled separately.\n\t\t *\n\t\t * This is used in order to check whether or not `this` binding is a\n\t\t * reference to the global object.\n\t\t * @param {ASTNode} node A node of the scope.\n\t\t *      For functions, this is one of FunctionDeclaration, FunctionExpression.\n\t\t *      For class static blocks, this is StaticBlock.\n\t\t *      For class field initializers, this can be any node that is PropertyDefinition#value.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction enterThisScope(node) {\n\t\t\tconst strict = sourceCode.getScope(node).isStrict;\n\n\t\t\tfuncInfo = {\n\t\t\t\tupper: funcInfo,\n\t\t\t\tnode,\n\t\t\t\tstrict,\n\t\t\t\tisTopLevelOfScript: false,\n\t\t\t\tdefaultThis: false,\n\t\t\t\tinitialized: strict,\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Pops a variable scope from the stack.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction exitThisScope() {\n\t\t\tfuncInfo = funcInfo.upper;\n\t\t}\n\n\t\t/**\n\t\t * Reports a given node.\n\t\t *\n\t\t * `node` is `Identifier` or `MemberExpression`.\n\t\t * The parent of `node` might be `CallExpression`.\n\t\t *\n\t\t * The location of the report is always `eval` `Identifier` (or possibly\n\t\t * `Literal`). The type of the report is `CallExpression` if the parent is\n\t\t * `CallExpression`. Otherwise, it's the given node type.\n\t\t * @param {ASTNode} node A node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node) {\n\t\t\tconst parent = node.parent;\n\t\t\tconst locationNode =\n\t\t\t\tnode.type === \"MemberExpression\" ? node.property : node;\n\n\t\t\tconst reportNode =\n\t\t\t\tparent.type === \"CallExpression\" && parent.callee === node\n\t\t\t\t\t? parent\n\t\t\t\t\t: node;\n\n\t\t\tcontext.report({\n\t\t\t\tnode: reportNode,\n\t\t\t\tloc: locationNode.loc,\n\t\t\t\tmessageId: \"unexpected\",\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports accesses of `eval` via the global object.\n\t\t * @param {Scope} globalScope The global scope.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportAccessingEvalViaGlobalObject(globalScope) {\n\t\t\tfor (let i = 0; i < candidatesOfGlobalObject.length; ++i) {\n\t\t\t\tconst name = candidatesOfGlobalObject[i];\n\t\t\t\tconst variable = astUtils.getVariableByName(globalScope, name);\n\n\t\t\t\tif (!variable) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst references = variable.references;\n\n\t\t\t\tfor (let j = 0; j < references.length; ++j) {\n\t\t\t\t\tconst identifier = references[j].identifier;\n\t\t\t\t\tlet node = identifier.parent;\n\n\t\t\t\t\t// To detect code like `window.window.eval`.\n\t\t\t\t\twhile (isMember(node, name)) {\n\t\t\t\t\t\tnode = node.parent;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Reports.\n\t\t\t\t\tif (isMember(node, \"eval\")) {\n\t\t\t\t\t\treport(node);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports all accesses of `eval` (excludes direct calls to eval).\n\t\t * @param {Scope} globalScope The global scope.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportAccessingEval(globalScope) {\n\t\t\tconst variable = astUtils.getVariableByName(globalScope, \"eval\");\n\n\t\t\tif (!variable) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst references = variable.references;\n\n\t\t\tfor (let i = 0; i < references.length; ++i) {\n\t\t\t\tconst reference = references[i];\n\t\t\t\tconst id = reference.identifier;\n\n\t\t\t\tif (id.name === \"eval\" && !astUtils.isCallee(id)) {\n\t\t\t\t\t// Is accessing to eval (excludes direct calls to eval)\n\t\t\t\t\treport(id);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (allowIndirect) {\n\t\t\t// Checks only direct calls to eval. It's simple!\n\t\t\treturn {\n\t\t\t\t\"CallExpression:exit\"(node) {\n\t\t\t\t\tconst callee = node.callee;\n\n\t\t\t\t\t/*\n\t\t\t\t\t * Optional call (`eval?.(\"code\")`) is not direct eval.\n\t\t\t\t\t * The direct eval is only step 6.a.vi of https://tc39.es/ecma262/#sec-function-calls-runtime-semantics-evaluation\n\t\t\t\t\t * But the optional call is https://tc39.es/ecma262/#sec-optional-chaining-chain-evaluation\n\t\t\t\t\t */\n\t\t\t\t\tif (\n\t\t\t\t\t\t!node.optional &&\n\t\t\t\t\t\tastUtils.isSpecificId(callee, \"eval\")\n\t\t\t\t\t) {\n\t\t\t\t\t\treport(callee);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\t\"CallExpression:exit\"(node) {\n\t\t\t\tconst callee = node.callee;\n\n\t\t\t\tif (astUtils.isSpecificId(callee, \"eval\")) {\n\t\t\t\t\treport(callee);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tProgram(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node),\n\t\t\t\t\tfeatures =\n\t\t\t\t\t\tcontext.languageOptions.parserOptions.ecmaFeatures ||\n\t\t\t\t\t\t{},\n\t\t\t\t\tstrict =\n\t\t\t\t\t\tscope.isStrict ||\n\t\t\t\t\t\tnode.sourceType === \"module\" ||\n\t\t\t\t\t\t(features.globalReturn &&\n\t\t\t\t\t\t\tscope.childScopes[0].isStrict),\n\t\t\t\t\tisTopLevelOfScript =\n\t\t\t\t\t\tnode.sourceType !== \"module\" && !features.globalReturn;\n\n\t\t\t\tfuncInfo = {\n\t\t\t\t\tupper: null,\n\t\t\t\t\tnode,\n\t\t\t\t\tstrict,\n\t\t\t\t\tisTopLevelOfScript,\n\t\t\t\t\tdefaultThis: true,\n\t\t\t\t\tinitialized: true,\n\t\t\t\t};\n\t\t\t},\n\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\tconst globalScope = sourceCode.getScope(node);\n\n\t\t\t\texitThisScope();\n\t\t\t\treportAccessingEval(globalScope);\n\t\t\t\treportAccessingEvalViaGlobalObject(globalScope);\n\t\t\t},\n\n\t\t\tFunctionDeclaration: enterThisScope,\n\t\t\t\"FunctionDeclaration:exit\": exitThisScope,\n\t\t\tFunctionExpression: enterThisScope,\n\t\t\t\"FunctionExpression:exit\": exitThisScope,\n\t\t\t\"PropertyDefinition > *.value\": enterThisScope,\n\t\t\t\"PropertyDefinition > *.value:exit\": exitThisScope,\n\t\t\tStaticBlock: enterThisScope,\n\t\t\t\"StaticBlock:exit\": exitThisScope,\n\n\t\t\tThisExpression(node) {\n\t\t\t\tif (!isMember(node.parent, \"eval\")) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * `this.eval` is found.\n\t\t\t\t * Checks whether or not the value of `this` is the global object.\n\t\t\t\t */\n\t\t\t\tif (!funcInfo.initialized) {\n\t\t\t\t\tfuncInfo.initialized = true;\n\t\t\t\t\tfuncInfo.defaultThis = astUtils.isDefaultThisBinding(\n\t\t\t\t\t\tfuncInfo.node,\n\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// `this` at the top level of scripts always refers to the global object\n\t\t\t\tif (\n\t\t\t\t\tfuncInfo.isTopLevelOfScript ||\n\t\t\t\t\t(!funcInfo.strict && funcInfo.defaultThis)\n\t\t\t\t) {\n\t\t\t\t\t// `this.eval` is possible built-in `eval`.\n\t\t\t\t\treport(node.parent);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag assignment of the exception parameter\n * @author Stephen Murray <spmurrayzzz>\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow reassigning exceptions in `catch` clauses\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-ex-assign\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Do not assign to the exception parameter.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Finds and reports references that are non initializer and writable.\n\t\t * @param {Variable} variable A variable to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkVariable(variable) {\n\t\t\tastUtils\n\t\t\t\t.getModifyingReferences(variable.references)\n\t\t\t\t.forEach(reference => {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: reference.identifier,\n\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tCatchClause(node) {\n\t\t\t\tsourceCode.getDeclaredVariables(node).forEach(checkVariable);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag adding properties to native object's prototypes.\n * @author David Nelson\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [{ exceptions: [] }],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow extending native types\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-extend-native\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\texceptions: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpected:\n\t\t\t\t\"{{builtin}} prototype is read only, properties should not be added.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst exceptions = new Set(context.options[0].exceptions);\n\t\tconst modifiedBuiltins = new Set(\n\t\t\tObject.keys(astUtils.ECMASCRIPT_GLOBALS)\n\t\t\t\t.filter(builtin => builtin[0].toUpperCase() === builtin[0])\n\t\t\t\t.filter(builtin => !exceptions.has(builtin)),\n\t\t);\n\n\t\t/**\n\t\t * Reports a lint error for the given node.\n\t\t * @param {ASTNode} node The node to report.\n\t\t * @param {string} builtin The name of the native builtin being extended.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportNode(node, builtin) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\tdata: {\n\t\t\t\t\tbuiltin,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Check to see if the `prototype` property of the given object\n\t\t * identifier node is being accessed.\n\t\t * @param {ASTNode} identifierNode The Identifier representing the object\n\t\t * to check.\n\t\t * @returns {boolean} True if the identifier is the object of a\n\t\t * MemberExpression and its `prototype` property is being accessed,\n\t\t * false otherwise.\n\t\t */\n\t\tfunction isPrototypePropertyAccessed(identifierNode) {\n\t\t\treturn Boolean(\n\t\t\t\tidentifierNode &&\n\t\t\t\tidentifierNode.parent &&\n\t\t\t\tidentifierNode.parent.type === \"MemberExpression\" &&\n\t\t\t\tidentifierNode.parent.object === identifierNode &&\n\t\t\t\tastUtils.getStaticPropertyName(identifierNode.parent) ===\n\t\t\t\t\t\"prototype\",\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check if it's an assignment to the property of the given node.\n\t\t * Example: `*.prop = 0` // the `*` is the given node.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} True if an assignment to the property of the node.\n\t\t */\n\t\tfunction isAssigningToPropertyOf(node) {\n\t\t\treturn (\n\t\t\t\tnode.parent.type === \"MemberExpression\" &&\n\t\t\t\tnode.parent.object === node &&\n\t\t\t\tnode.parent.parent.type === \"AssignmentExpression\" &&\n\t\t\t\tnode.parent.parent.left === node.parent\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if the given node is at the first argument of the method call of `Object.defineProperty()` or `Object.defineProperties()`.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} True if the node is at the first argument of the method call of `Object.defineProperty()` or `Object.defineProperties()`.\n\t\t */\n\t\tfunction isInDefinePropertyCall(node) {\n\t\t\treturn (\n\t\t\t\tnode.parent.type === \"CallExpression\" &&\n\t\t\t\tnode.parent.arguments[0] === node &&\n\t\t\t\tastUtils.isSpecificMemberAccess(\n\t\t\t\t\tnode.parent.callee,\n\t\t\t\t\t\"Object\",\n\t\t\t\t\t/^definePropert(?:y|ies)$/u,\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check to see if object prototype access is part of a prototype\n\t\t * extension. There are three ways a prototype can be extended:\n\t\t * 1. Assignment to prototype property (Object.prototype.foo = 1)\n\t\t * 2. Object.defineProperty()/Object.defineProperties() on a prototype\n\t\t * If prototype extension is detected, report the AssignmentExpression\n\t\t * or CallExpression node.\n\t\t * @param {ASTNode} identifierNode The Identifier representing the object\n\t\t * which prototype is being accessed and possibly extended.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkAndReportPrototypeExtension(identifierNode) {\n\t\t\tif (!isPrototypePropertyAccessed(identifierNode)) {\n\t\t\t\treturn; // This is not `*.prototype` access.\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * `identifierNode.parent` is a MemberExpression `*.prototype`.\n\t\t\t * If it's an optional member access, it may be wrapped by a `ChainExpression` node.\n\t\t\t */\n\t\t\tconst prototypeNode =\n\t\t\t\tidentifierNode.parent.parent.type === \"ChainExpression\"\n\t\t\t\t\t? identifierNode.parent.parent\n\t\t\t\t\t: identifierNode.parent;\n\n\t\t\tif (isAssigningToPropertyOf(prototypeNode)) {\n\t\t\t\t// `*.prototype` -> MemberExpression -> AssignmentExpression\n\t\t\t\treportNode(prototypeNode.parent.parent, identifierNode.name);\n\t\t\t} else if (isInDefinePropertyCall(prototypeNode)) {\n\t\t\t\t// `*.prototype` -> CallExpression\n\t\t\t\treportNode(prototypeNode.parent, identifierNode.name);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\tconst globalScope = sourceCode.getScope(node);\n\n\t\t\t\tmodifiedBuiltins.forEach(builtin => {\n\t\t\t\t\tconst builtinVar = globalScope.set.get(builtin);\n\n\t\t\t\t\tif (builtinVar && builtinVar.references) {\n\t\t\t\t\t\tbuiltinVar.references\n\t\t\t\t\t\t\t.map(ref => ref.identifier)\n\t\t\t\t\t\t\t.forEach(checkAndReportPrototypeExtension);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag unnecessary bind calls\n * @author Bence D\u00E1nyi <bence@danyi.me>\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst SIDE_EFFECT_FREE_NODE_TYPES = new Set([\n\t\"Literal\",\n\t\"Identifier\",\n\t\"ThisExpression\",\n\t\"FunctionExpression\",\n]);\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow unnecessary calls to `.bind()`\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-extra-bind\",\n\t\t},\n\n\t\tschema: [],\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tunexpected: \"The function binding is unnecessary.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tlet scopeInfo = null;\n\n\t\t/**\n\t\t * Checks if a node is free of side effects.\n\t\t *\n\t\t * This check is stricter than it needs to be, in order to keep the implementation simple.\n\t\t * @param {ASTNode} node A node to check.\n\t\t * @returns {boolean} True if the node is known to be side-effect free, false otherwise.\n\t\t */\n\t\tfunction isSideEffectFree(node) {\n\t\t\treturn SIDE_EFFECT_FREE_NODE_TYPES.has(node.type);\n\t\t}\n\n\t\t/**\n\t\t * Reports a given function node.\n\t\t * @param {ASTNode} node A node to report. This is a FunctionExpression or\n\t\t *      an ArrowFunctionExpression.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node) {\n\t\t\tconst memberNode = node.parent;\n\t\t\tconst callNode =\n\t\t\t\tmemberNode.parent.type === \"ChainExpression\"\n\t\t\t\t\t? memberNode.parent.parent\n\t\t\t\t\t: memberNode.parent;\n\n\t\t\tcontext.report({\n\t\t\t\tnode: callNode,\n\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\tloc: memberNode.property.loc,\n\n\t\t\t\tfix(fixer) {\n\t\t\t\t\tif (!isSideEffectFree(callNode.arguments[0])) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * The list of the first/last token pair of a removal range.\n\t\t\t\t\t * This is two parts because closing parentheses may exist between the method name and arguments.\n\t\t\t\t\t * E.g. `(function(){}.bind ) (obj)`\n\t\t\t\t\t *                    ^^^^^   ^^^^^ < removal ranges\n\t\t\t\t\t * E.g. `(function(){}?.['bind'] ) ?.(obj)`\n\t\t\t\t\t *                    ^^^^^^^^^^   ^^^^^^^ < removal ranges\n\t\t\t\t\t */\n\t\t\t\t\tconst tokenPairs = [\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t// `.`, `?.`, or `[` token.\n\t\t\t\t\t\t\tsourceCode.getTokenAfter(\n\t\t\t\t\t\t\t\tmemberNode.object,\n\t\t\t\t\t\t\t\tastUtils.isNotClosingParenToken,\n\t\t\t\t\t\t\t),\n\n\t\t\t\t\t\t\t// property name or `]` token.\n\t\t\t\t\t\t\tsourceCode.getLastToken(memberNode),\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t// `?.` or `(` token of arguments.\n\t\t\t\t\t\t\tsourceCode.getTokenAfter(\n\t\t\t\t\t\t\t\tmemberNode,\n\t\t\t\t\t\t\t\tastUtils.isNotClosingParenToken,\n\t\t\t\t\t\t\t),\n\n\t\t\t\t\t\t\t// `)` token of arguments.\n\t\t\t\t\t\t\tsourceCode.getLastToken(callNode),\n\t\t\t\t\t\t],\n\t\t\t\t\t];\n\t\t\t\t\tconst firstTokenToRemove = tokenPairs[0][0];\n\t\t\t\t\tconst lastTokenToRemove = tokenPairs[1][1];\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tsourceCode.commentsExistBetween(\n\t\t\t\t\t\t\tfirstTokenToRemove,\n\t\t\t\t\t\t\tlastTokenToRemove,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn tokenPairs.map(([start, end]) =>\n\t\t\t\t\t\tfixer.removeRange([start.range[0], end.range[1]]),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Checks whether or not a given function node is the callee of `.bind()`\n\t\t * method.\n\t\t *\n\t\t * e.g. `(function() {}.bind(foo))`\n\t\t * @param {ASTNode} node A node to report. This is a FunctionExpression or\n\t\t *      an ArrowFunctionExpression.\n\t\t * @returns {boolean} `true` if the node is the callee of `.bind()` method.\n\t\t */\n\t\tfunction isCalleeOfBindMethod(node) {\n\t\t\tif (!astUtils.isSpecificMemberAccess(node.parent, null, \"bind\")) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// The node of `*.bind` member access.\n\t\t\tconst bindNode =\n\t\t\t\tnode.parent.parent.type === \"ChainExpression\"\n\t\t\t\t\t? node.parent.parent\n\t\t\t\t\t: node.parent;\n\n\t\t\treturn (\n\t\t\t\tbindNode.parent.type === \"CallExpression\" &&\n\t\t\t\tbindNode.parent.callee === bindNode &&\n\t\t\t\tbindNode.parent.arguments.length === 1 &&\n\t\t\t\tbindNode.parent.arguments[0].type !== \"SpreadElement\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Adds a scope information object to the stack.\n\t\t * @param {ASTNode} node A node to add. This node is a FunctionExpression\n\t\t *      or a FunctionDeclaration node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction enterFunction(node) {\n\t\t\tscopeInfo = {\n\t\t\t\tisBound: isCalleeOfBindMethod(node),\n\t\t\t\tthisFound: false,\n\t\t\t\tupper: scopeInfo,\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Removes the scope information object from the top of the stack.\n\t\t * At the same time, this reports the function node if the function has\n\t\t * `.bind()` and the `this` keywords found.\n\t\t * @param {ASTNode} node A node to remove. This node is a\n\t\t *      FunctionExpression or a FunctionDeclaration node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction exitFunction(node) {\n\t\t\tif (scopeInfo.isBound && !scopeInfo.thisFound) {\n\t\t\t\treport(node);\n\t\t\t}\n\n\t\t\tscopeInfo = scopeInfo.upper;\n\t\t}\n\n\t\t/**\n\t\t * Reports a given arrow function if the function is callee of `.bind()`\n\t\t * method.\n\t\t * @param {ASTNode} node A node to report. This node is an\n\t\t *      ArrowFunctionExpression.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction exitArrowFunction(node) {\n\t\t\tif (isCalleeOfBindMethod(node)) {\n\t\t\t\treport(node);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Set the mark as the `this` keyword was found in this scope.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction markAsThisFound() {\n\t\t\tif (scopeInfo) {\n\t\t\t\tscopeInfo.thisFound = true;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t\"ArrowFunctionExpression:exit\": exitArrowFunction,\n\t\t\tFunctionDeclaration: enterFunction,\n\t\t\t\"FunctionDeclaration:exit\": exitFunction,\n\t\t\tFunctionExpression: enterFunction,\n\t\t\t\"FunctionExpression:exit\": exitFunction,\n\t\t\tThisExpression: markAsThisFound,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag unnecessary double negation in Boolean contexts\n * @author Brandon Mills\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst eslintUtils = require(\"@eslint-community/eslint-utils\");\n\nconst precedence = astUtils.getPrecedence;\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [{}],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow unnecessary boolean casts\",\n\t\t\trecommended: true,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-extra-boolean-cast\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tenforceForInnerExpressions: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\n\t\t\t\t\t// deprecated\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tenforceForLogicalOperands: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tunexpectedCall: \"Redundant Boolean call.\",\n\t\t\tunexpectedNegation: \"Redundant double negation.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst [{ enforceForLogicalOperands, enforceForInnerExpressions }] =\n\t\t\tcontext.options;\n\n\t\t// Node types which have a test which will coerce values to booleans.\n\t\tconst BOOLEAN_NODE_TYPES = new Set([\n\t\t\t\"IfStatement\",\n\t\t\t\"DoWhileStatement\",\n\t\t\t\"WhileStatement\",\n\t\t\t\"ConditionalExpression\",\n\t\t\t\"ForStatement\",\n\t\t]);\n\n\t\t/**\n\t\t * Check if a node is a Boolean function or constructor.\n\t\t * @param {ASTNode} node the node\n\t\t * @returns {boolean} If the node is Boolean function or constructor\n\t\t */\n\t\tfunction isBooleanFunctionOrConstructorCall(node) {\n\t\t\t// Boolean(<bool>) and new Boolean(<bool>)\n\t\t\treturn (\n\t\t\t\t(node.type === \"CallExpression\" ||\n\t\t\t\t\tnode.type === \"NewExpression\") &&\n\t\t\t\tnode.callee.type === \"Identifier\" &&\n\t\t\t\tnode.callee.name === \"Boolean\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check if a node is in a context where its value would be coerced to a boolean at runtime.\n\t\t * @param {ASTNode} node The node\n\t\t * @returns {boolean} If it is in a boolean context\n\t\t */\n\t\tfunction isInBooleanContext(node) {\n\t\t\treturn (\n\t\t\t\t(isBooleanFunctionOrConstructorCall(node.parent) &&\n\t\t\t\t\tnode === node.parent.arguments[0]) ||\n\t\t\t\t(BOOLEAN_NODE_TYPES.has(node.parent.type) &&\n\t\t\t\t\tnode === node.parent.test) ||\n\t\t\t\t// !<bool>\n\t\t\t\t(node.parent.type === \"UnaryExpression\" &&\n\t\t\t\t\tnode.parent.operator === \"!\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether the node is a context that should report an error\n\t\t * Acts recursively if it is in a logical context\n\t\t * @param {ASTNode} node the node\n\t\t * @returns {boolean} If the node is in one of the flagged contexts\n\t\t */\n\t\tfunction isInFlaggedContext(node) {\n\t\t\tif (node.parent.type === \"ChainExpression\") {\n\t\t\t\treturn isInFlaggedContext(node.parent);\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * legacy behavior - enforceForLogicalOperands will only recurse on\n\t\t\t * logical expressions, not on other contexts.\n\t\t\t * enforceForInnerExpressions will recurse on logical expressions\n\t\t\t * as well as the other recursive syntaxes.\n\t\t\t */\n\n\t\t\tif (enforceForLogicalOperands || enforceForInnerExpressions) {\n\t\t\t\tif (node.parent.type === \"LogicalExpression\") {\n\t\t\t\t\tif (\n\t\t\t\t\t\tnode.parent.operator === \"||\" ||\n\t\t\t\t\t\tnode.parent.operator === \"&&\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn isInFlaggedContext(node.parent);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check the right hand side of a `??` operator.\n\t\t\t\t\tif (\n\t\t\t\t\t\tenforceForInnerExpressions &&\n\t\t\t\t\t\tnode.parent.operator === \"??\" &&\n\t\t\t\t\t\tnode.parent.right === node\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn isInFlaggedContext(node.parent);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (enforceForInnerExpressions) {\n\t\t\t\tif (\n\t\t\t\t\tnode.parent.type === \"ConditionalExpression\" &&\n\t\t\t\t\t(node.parent.consequent === node ||\n\t\t\t\t\t\tnode.parent.alternate === node)\n\t\t\t\t) {\n\t\t\t\t\treturn isInFlaggedContext(node.parent);\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * Check last expression only in a sequence, i.e. if ((1, 2, Boolean(3))) {}, since\n\t\t\t\t * the others don't affect the result of the expression.\n\t\t\t\t */\n\t\t\t\tif (\n\t\t\t\t\tnode.parent.type === \"SequenceExpression\" &&\n\t\t\t\t\tnode.parent.expressions.at(-1) === node\n\t\t\t\t) {\n\t\t\t\t\treturn isInFlaggedContext(node.parent);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn isInBooleanContext(node);\n\t\t}\n\n\t\t/**\n\t\t * Check if a node has comments inside.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} `true` if it has comments inside.\n\t\t */\n\t\tfunction hasCommentsInside(node) {\n\t\t\treturn Boolean(sourceCode.getCommentsInside(node).length);\n\t\t}\n\n\t\t/**\n\t\t * Checks if the given node is wrapped in grouping parentheses. Parentheses for constructs such as if() don't count.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} `true` if the node is parenthesized.\n\t\t * @private\n\t\t */\n\t\tfunction isParenthesized(node) {\n\t\t\treturn eslintUtils.isParenthesized(1, node, sourceCode);\n\t\t}\n\n\t\t/**\n\t\t * Determines whether the given node needs to be parenthesized when replacing the previous node.\n\t\t * It assumes that `previousNode` is the node to be reported by this rule, so it has a limited list\n\t\t * of possible parent node types. By the same assumption, the node's role in a particular parent is already known.\n\t\t * @param {ASTNode} previousNode Previous node.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @throws {Error} (Unreachable.)\n\t\t * @returns {boolean} `true` if the node needs to be parenthesized.\n\t\t */\n\t\tfunction needsParens(previousNode, node) {\n\t\t\tif (previousNode.parent.type === \"ChainExpression\") {\n\t\t\t\treturn needsParens(previousNode.parent, node);\n\t\t\t}\n\n\t\t\tif (isParenthesized(previousNode)) {\n\t\t\t\t// parentheses around the previous node will stay, so there is no need for an additional pair\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// parent of the previous node will become parent of the replacement node\n\t\t\tconst parent = previousNode.parent;\n\n\t\t\tswitch (parent.type) {\n\t\t\t\tcase \"CallExpression\":\n\t\t\t\tcase \"NewExpression\":\n\t\t\t\t\treturn node.type === \"SequenceExpression\";\n\t\t\t\tcase \"IfStatement\":\n\t\t\t\tcase \"DoWhileStatement\":\n\t\t\t\tcase \"WhileStatement\":\n\t\t\t\tcase \"ForStatement\":\n\t\t\t\tcase \"SequenceExpression\":\n\t\t\t\t\treturn false;\n\t\t\t\tcase \"ConditionalExpression\":\n\t\t\t\t\tif (previousNode === parent.test) {\n\t\t\t\t\t\treturn precedence(node) <= precedence(parent);\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousNode === parent.consequent ||\n\t\t\t\t\t\tpreviousNode === parent.alternate\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tprecedence(node) <\n\t\t\t\t\t\t\tprecedence({ type: \"AssignmentExpression\" })\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\t/* c8 ignore next */\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"Ternary child must be test, consequent, or alternate.\",\n\t\t\t\t\t);\n\t\t\t\tcase \"UnaryExpression\":\n\t\t\t\t\treturn precedence(node) < precedence(parent);\n\t\t\t\tcase \"LogicalExpression\":\n\t\t\t\t\tif (\n\t\t\t\t\t\tastUtils.isMixedLogicalAndCoalesceExpressions(\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tparent,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (previousNode === parent.left) {\n\t\t\t\t\t\treturn precedence(node) < precedence(parent);\n\t\t\t\t\t}\n\t\t\t\t\treturn precedence(node) <= precedence(parent);\n\n\t\t\t\t/* c8 ignore next */\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Unexpected parent type: ${parent.type}`);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tUnaryExpression(node) {\n\t\t\t\tconst parent = node.parent;\n\n\t\t\t\t// Exit early if it's guaranteed not to match\n\t\t\t\tif (\n\t\t\t\t\tnode.operator !== \"!\" ||\n\t\t\t\t\tparent.type !== \"UnaryExpression\" ||\n\t\t\t\t\tparent.operator !== \"!\"\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (isInFlaggedContext(parent)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: parent,\n\t\t\t\t\t\tmessageId: \"unexpectedNegation\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tif (hasCommentsInside(parent)) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (needsParens(parent, node.argument)) {\n\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\tparent,\n\t\t\t\t\t\t\t\t\t`(${sourceCode.getText(node.argument)})`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet prefix = \"\";\n\t\t\t\t\t\t\tconst tokenBefore =\n\t\t\t\t\t\t\t\tsourceCode.getTokenBefore(parent);\n\t\t\t\t\t\t\tconst firstReplacementToken =\n\t\t\t\t\t\t\t\tsourceCode.getFirstToken(node.argument);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttokenBefore &&\n\t\t\t\t\t\t\t\ttokenBefore.range[1] === parent.range[0] &&\n\t\t\t\t\t\t\t\t!astUtils.canTokensBeAdjacent(\n\t\t\t\t\t\t\t\t\ttokenBefore,\n\t\t\t\t\t\t\t\t\tfirstReplacementToken,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tprefix = \" \";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\tparent,\n\t\t\t\t\t\t\t\tprefix + sourceCode.getText(node.argument),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tCallExpression(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.callee.type !== \"Identifier\" ||\n\t\t\t\t\tnode.callee.name !== \"Boolean\"\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (isInFlaggedContext(node)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpectedCall\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tconst parent = node.parent;\n\n\t\t\t\t\t\t\tif (node.arguments.length === 0) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tparent.type === \"UnaryExpression\" &&\n\t\t\t\t\t\t\t\t\tparent.operator === \"!\"\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t * !Boolean() -> true\n\t\t\t\t\t\t\t\t\t */\n\n\t\t\t\t\t\t\t\t\tif (hasCommentsInside(parent)) {\n\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst replacement = \"true\";\n\t\t\t\t\t\t\t\t\tlet prefix = \"\";\n\t\t\t\t\t\t\t\t\tconst tokenBefore =\n\t\t\t\t\t\t\t\t\t\tsourceCode.getTokenBefore(parent);\n\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\ttokenBefore &&\n\t\t\t\t\t\t\t\t\t\ttokenBefore.range[1] ===\n\t\t\t\t\t\t\t\t\t\t\tparent.range[0] &&\n\t\t\t\t\t\t\t\t\t\t!astUtils.canTokensBeAdjacent(\n\t\t\t\t\t\t\t\t\t\t\ttokenBefore,\n\t\t\t\t\t\t\t\t\t\t\treplacement,\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tprefix = \" \";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\t\tparent,\n\t\t\t\t\t\t\t\t\t\tprefix + replacement,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * Boolean() -> false\n\t\t\t\t\t\t\t\t */\n\n\t\t\t\t\t\t\t\tif (hasCommentsInside(node)) {\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn fixer.replaceText(node, \"false\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (node.arguments.length === 1) {\n\t\t\t\t\t\t\t\tconst argument = node.arguments[0];\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\targument.type === \"SpreadElement\" ||\n\t\t\t\t\t\t\t\t\thasCommentsInside(node)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * Boolean(expression) -> expression\n\t\t\t\t\t\t\t\t */\n\n\t\t\t\t\t\t\t\tif (needsParens(node, argument)) {\n\t\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t\t`(${sourceCode.getText(argument)})`,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tsourceCode.getText(argument),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// two or more arguments\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow unnecessary labels\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow unnecessary labels\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-extra-label\",\n\t\t},\n\n\t\tschema: [],\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tunexpected: \"This label '{{name}}' is unnecessary.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tlet scopeInfo = null;\n\n\t\t/**\n\t\t * Creates a new scope with a breakable statement.\n\t\t * @param {ASTNode} node A node to create. This is a BreakableStatement.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction enterBreakableStatement(node) {\n\t\t\tscopeInfo = {\n\t\t\t\tlabel:\n\t\t\t\t\tnode.parent.type === \"LabeledStatement\"\n\t\t\t\t\t\t? node.parent.label\n\t\t\t\t\t\t: null,\n\t\t\t\tbreakable: true,\n\t\t\t\tupper: scopeInfo,\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Removes the top scope of the stack.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction exitBreakableStatement() {\n\t\t\tscopeInfo = scopeInfo.upper;\n\t\t}\n\n\t\t/**\n\t\t * Creates a new scope with a labeled statement.\n\t\t *\n\t\t * This ignores it if the body is a breakable statement.\n\t\t * In this case it's handled in the `enterBreakableStatement` function.\n\t\t * @param {ASTNode} node A node to create. This is a LabeledStatement.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction enterLabeledStatement(node) {\n\t\t\tif (!astUtils.isBreakableStatement(node.body)) {\n\t\t\t\tscopeInfo = {\n\t\t\t\t\tlabel: node.label,\n\t\t\t\t\tbreakable: false,\n\t\t\t\t\tupper: scopeInfo,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Removes the top scope of the stack.\n\t\t *\n\t\t * This ignores it if the body is a breakable statement.\n\t\t * In this case it's handled in the `exitBreakableStatement` function.\n\t\t * @param {ASTNode} node A node. This is a LabeledStatement.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction exitLabeledStatement(node) {\n\t\t\tif (!astUtils.isBreakableStatement(node.body)) {\n\t\t\t\tscopeInfo = scopeInfo.upper;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports a given control node if it's unnecessary.\n\t\t * @param {ASTNode} node A node. This is a BreakStatement or a\n\t\t *      ContinueStatement.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportIfUnnecessary(node) {\n\t\t\tif (!node.label) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst labelNode = node.label;\n\n\t\t\tfor (let info = scopeInfo; info !== null; info = info.upper) {\n\t\t\t\tif (\n\t\t\t\t\tinfo.breakable ||\n\t\t\t\t\t(info.label && info.label.name === labelNode.name)\n\t\t\t\t) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tinfo.breakable &&\n\t\t\t\t\t\tinfo.label &&\n\t\t\t\t\t\tinfo.label.name === labelNode.name\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: labelNode,\n\t\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\t\tdata: labelNode,\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\tconst breakOrContinueToken =\n\t\t\t\t\t\t\t\t\tsourceCode.getFirstToken(node);\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tsourceCode.commentsExistBetween(\n\t\t\t\t\t\t\t\t\t\tbreakOrContinueToken,\n\t\t\t\t\t\t\t\t\t\tlabelNode,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\t\t\tbreakOrContinueToken.range[1],\n\t\t\t\t\t\t\t\t\tlabelNode.range[1],\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tWhileStatement: enterBreakableStatement,\n\t\t\t\"WhileStatement:exit\": exitBreakableStatement,\n\t\t\tDoWhileStatement: enterBreakableStatement,\n\t\t\t\"DoWhileStatement:exit\": exitBreakableStatement,\n\t\t\tForStatement: enterBreakableStatement,\n\t\t\t\"ForStatement:exit\": exitBreakableStatement,\n\t\t\tForInStatement: enterBreakableStatement,\n\t\t\t\"ForInStatement:exit\": exitBreakableStatement,\n\t\t\tForOfStatement: enterBreakableStatement,\n\t\t\t\"ForOfStatement:exit\": exitBreakableStatement,\n\t\t\tSwitchStatement: enterBreakableStatement,\n\t\t\t\"SwitchStatement:exit\": exitBreakableStatement,\n\t\t\tLabeledStatement: enterLabeledStatement,\n\t\t\t\"LabeledStatement:exit\": exitLabeledStatement,\n\t\t\tBreakStatement: reportIfUnnecessary,\n\t\t\tContinueStatement: reportIfUnnecessary,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallow parenthesising higher precedence subexpressions.\n * @author Michael Ficarra\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\nconst {\n\tisParenthesized: isParenthesizedRaw,\n} = require(\"@eslint-community/eslint-utils\");\nconst astUtils = require(\"./utils/ast-utils.js\");\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-extra-parens\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/no-extra-parens\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow unnecessary parentheses\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-extra-parens\",\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\tschema: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"functions\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 1,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"all\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tconditionalAssign: { type: \"boolean\" },\n\t\t\t\t\t\t\t\tternaryOperandBinaryExpressions: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnestedBinaryExpressions: { type: \"boolean\" },\n\t\t\t\t\t\t\t\treturnAssign: { type: \"boolean\" },\n\t\t\t\t\t\t\t\tignoreJSX: {\n\t\t\t\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\t\t\t\"none\",\n\t\t\t\t\t\t\t\t\t\t\"all\",\n\t\t\t\t\t\t\t\t\t\t\"single-line\",\n\t\t\t\t\t\t\t\t\t\t\"multi-line\",\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tenforceForArrowConditionals: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tenforceForSequenceExpressions: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tenforceForNewInMemberExpressions: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tenforceForFunctionPrototypeMethods: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tallowParensAfterCommentPattern: {\n\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 2,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tmessages: {\n\t\t\tunexpected: \"Unnecessary parentheses around expression.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tconst tokensToIgnore = new WeakSet();\n\t\tconst precedence = astUtils.getPrecedence;\n\t\tconst ALL_NODES = context.options[0] !== \"functions\";\n\t\tconst EXCEPT_COND_ASSIGN =\n\t\t\tALL_NODES &&\n\t\t\tcontext.options[1] &&\n\t\t\tcontext.options[1].conditionalAssign === false;\n\t\tconst EXCEPT_COND_TERNARY =\n\t\t\tALL_NODES &&\n\t\t\tcontext.options[1] &&\n\t\t\tcontext.options[1].ternaryOperandBinaryExpressions === false;\n\t\tconst NESTED_BINARY =\n\t\t\tALL_NODES &&\n\t\t\tcontext.options[1] &&\n\t\t\tcontext.options[1].nestedBinaryExpressions === false;\n\t\tconst EXCEPT_RETURN_ASSIGN =\n\t\t\tALL_NODES &&\n\t\t\tcontext.options[1] &&\n\t\t\tcontext.options[1].returnAssign === false;\n\t\tconst IGNORE_JSX =\n\t\t\tALL_NODES && context.options[1] && context.options[1].ignoreJSX;\n\t\tconst IGNORE_ARROW_CONDITIONALS =\n\t\t\tALL_NODES &&\n\t\t\tcontext.options[1] &&\n\t\t\tcontext.options[1].enforceForArrowConditionals === false;\n\t\tconst IGNORE_SEQUENCE_EXPRESSIONS =\n\t\t\tALL_NODES &&\n\t\t\tcontext.options[1] &&\n\t\t\tcontext.options[1].enforceForSequenceExpressions === false;\n\t\tconst IGNORE_NEW_IN_MEMBER_EXPR =\n\t\t\tALL_NODES &&\n\t\t\tcontext.options[1] &&\n\t\t\tcontext.options[1].enforceForNewInMemberExpressions === false;\n\t\tconst IGNORE_FUNCTION_PROTOTYPE_METHODS =\n\t\t\tALL_NODES &&\n\t\t\tcontext.options[1] &&\n\t\t\tcontext.options[1].enforceForFunctionPrototypeMethods === false;\n\t\tconst ALLOW_PARENS_AFTER_COMMENT_PATTERN =\n\t\t\tALL_NODES &&\n\t\t\tcontext.options[1] &&\n\t\t\tcontext.options[1].allowParensAfterCommentPattern;\n\n\t\tconst PRECEDENCE_OF_ASSIGNMENT_EXPR = precedence({\n\t\t\ttype: \"AssignmentExpression\",\n\t\t});\n\t\tconst PRECEDENCE_OF_UPDATE_EXPR = precedence({\n\t\t\ttype: \"UpdateExpression\",\n\t\t});\n\n\t\tlet reportsBuffer;\n\n\t\t/**\n\t\t * Determines whether the given node is a `call` or `apply` method call, invoked directly on a `FunctionExpression` node.\n\t\t * Example: function(){}.call()\n\t\t * @param {ASTNode} node The node to be checked.\n\t\t * @returns {boolean} True if the node is an immediate `call` or `apply` method call.\n\t\t * @private\n\t\t */\n\t\tfunction isImmediateFunctionPrototypeMethodCall(node) {\n\t\t\tconst callNode = astUtils.skipChainExpression(node);\n\n\t\t\tif (callNode.type !== \"CallExpression\") {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst callee = astUtils.skipChainExpression(callNode.callee);\n\n\t\t\treturn (\n\t\t\t\tcallee.type === \"MemberExpression\" &&\n\t\t\t\tcallee.object.type === \"FunctionExpression\" &&\n\t\t\t\t[\"call\", \"apply\"].includes(\n\t\t\t\t\tastUtils.getStaticPropertyName(callee),\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines if this rule should be enforced for a node given the current configuration.\n\t\t * @param {ASTNode} node The node to be checked.\n\t\t * @returns {boolean} True if the rule should be enforced for this node.\n\t\t * @private\n\t\t */\n\t\tfunction ruleApplies(node) {\n\t\t\tif (node.type === \"JSXElement\" || node.type === \"JSXFragment\") {\n\t\t\t\tconst isSingleLine = node.loc.start.line === node.loc.end.line;\n\n\t\t\t\tswitch (IGNORE_JSX) {\n\t\t\t\t\t// Exclude this JSX element from linting\n\t\t\t\t\tcase \"all\":\n\t\t\t\t\t\treturn false;\n\n\t\t\t\t\t// Exclude this JSX element if it is multi-line element\n\t\t\t\t\tcase \"multi-line\":\n\t\t\t\t\t\treturn isSingleLine;\n\n\t\t\t\t\t// Exclude this JSX element if it is single-line element\n\t\t\t\t\tcase \"single-line\":\n\t\t\t\t\t\treturn !isSingleLine;\n\n\t\t\t\t\t// Nothing special to be done for JSX elements\n\t\t\t\t\tcase \"none\":\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t// no default\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tnode.type === \"SequenceExpression\" &&\n\t\t\t\tIGNORE_SEQUENCE_EXPRESSIONS\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tisImmediateFunctionPrototypeMethodCall(node) &&\n\t\t\t\tIGNORE_FUNCTION_PROTOTYPE_METHODS\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\tALL_NODES ||\n\t\t\t\tnode.type === \"FunctionExpression\" ||\n\t\t\t\tnode.type === \"ArrowFunctionExpression\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a node is surrounded by parentheses.\n\t\t * @param {ASTNode} node The node to be checked.\n\t\t * @returns {boolean} True if the node is parenthesised.\n\t\t * @private\n\t\t */\n\t\tfunction isParenthesised(node) {\n\t\t\treturn isParenthesizedRaw(1, node, sourceCode);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a node is surrounded by parentheses twice.\n\t\t * @param {ASTNode} node The node to be checked.\n\t\t * @returns {boolean} True if the node is doubly parenthesised.\n\t\t * @private\n\t\t */\n\t\tfunction isParenthesisedTwice(node) {\n\t\t\treturn isParenthesizedRaw(2, node, sourceCode);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a node is surrounded by (potentially) invalid parentheses.\n\t\t * @param {ASTNode} node The node to be checked.\n\t\t * @returns {boolean} True if the node is incorrectly parenthesised.\n\t\t * @private\n\t\t */\n\t\tfunction hasExcessParens(node) {\n\t\t\treturn ruleApplies(node) && isParenthesised(node);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a node that is expected to be parenthesised is surrounded by\n\t\t * (potentially) invalid extra parentheses.\n\t\t * @param {ASTNode} node The node to be checked.\n\t\t * @returns {boolean} True if the node is has an unexpected extra pair of parentheses.\n\t\t * @private\n\t\t */\n\t\tfunction hasDoubleExcessParens(node) {\n\t\t\treturn ruleApplies(node) && isParenthesisedTwice(node);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a node that is expected to be parenthesised is surrounded by\n\t\t * (potentially) invalid extra parentheses with considering precedence level of the node.\n\t\t * If the preference level of the node is not higher or equal to precedence lower limit, it also checks\n\t\t * whether the node is surrounded by parentheses twice or not.\n\t\t * @param {ASTNode} node The node to be checked.\n\t\t * @param {number} precedenceLowerLimit The lower limit of precedence.\n\t\t * @returns {boolean} True if the node is has an unexpected extra pair of parentheses.\n\t\t * @private\n\t\t */\n\t\tfunction hasExcessParensWithPrecedence(node, precedenceLowerLimit) {\n\t\t\tif (ruleApplies(node) && isParenthesised(node)) {\n\t\t\t\tif (\n\t\t\t\t\tprecedence(node) >= precedenceLowerLimit ||\n\t\t\t\t\tisParenthesisedTwice(node)\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Determines if a node test expression is allowed to have a parenthesised assignment\n\t\t * @param {ASTNode} node The node to be checked.\n\t\t * @returns {boolean} True if the assignment can be parenthesised.\n\t\t * @private\n\t\t */\n\t\tfunction isCondAssignException(node) {\n\t\t\treturn (\n\t\t\t\tEXCEPT_COND_ASSIGN && node.test.type === \"AssignmentExpression\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a node is in a return statement\n\t\t * @param {ASTNode} node The node to be checked.\n\t\t * @returns {boolean} True if the node is in a return statement.\n\t\t * @private\n\t\t */\n\t\tfunction isInReturnStatement(node) {\n\t\t\tfor (\n\t\t\t\tlet currentNode = node;\n\t\t\t\tcurrentNode;\n\t\t\t\tcurrentNode = currentNode.parent\n\t\t\t) {\n\t\t\t\tif (\n\t\t\t\t\tcurrentNode.type === \"ReturnStatement\" ||\n\t\t\t\t\t(currentNode.type === \"ArrowFunctionExpression\" &&\n\t\t\t\t\t\tcurrentNode.body.type !== \"BlockStatement\")\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Determines if a constructor function is newed-up with parens\n\t\t * @param {ASTNode} newExpression The NewExpression node to be checked.\n\t\t * @returns {boolean} True if the constructor is called with parens.\n\t\t * @private\n\t\t */\n\t\tfunction isNewExpressionWithParens(newExpression) {\n\t\t\tconst lastToken = sourceCode.getLastToken(newExpression);\n\t\t\tconst penultimateToken = sourceCode.getTokenBefore(lastToken);\n\n\t\t\treturn (\n\t\t\t\tnewExpression.arguments.length > 0 ||\n\t\t\t\t// The expression should end with its own parens, e.g., new new foo() is not a new expression with parens\n\t\t\t\t(astUtils.isOpeningParenToken(penultimateToken) &&\n\t\t\t\t\tastUtils.isClosingParenToken(lastToken) &&\n\t\t\t\t\tnewExpression.callee.range[1] < newExpression.range[1])\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a node is or contains an assignment expression\n\t\t * @param {ASTNode} node The node to be checked.\n\t\t * @returns {boolean} True if the node is or contains an assignment expression.\n\t\t * @private\n\t\t */\n\t\tfunction containsAssignment(node) {\n\t\t\tif (node.type === \"AssignmentExpression\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tnode.type === \"ConditionalExpression\" &&\n\t\t\t\t(node.consequent.type === \"AssignmentExpression\" ||\n\t\t\t\t\tnode.alternate.type === \"AssignmentExpression\")\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (\n\t\t\t\t(node.left && node.left.type === \"AssignmentExpression\") ||\n\t\t\t\t(node.right && node.right.type === \"AssignmentExpression\")\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Determines if a node is contained by or is itself a return statement and is allowed to have a parenthesised assignment\n\t\t * @param {ASTNode} node The node to be checked.\n\t\t * @returns {boolean} True if the assignment can be parenthesised.\n\t\t * @private\n\t\t */\n\t\tfunction isReturnAssignException(node) {\n\t\t\tif (!EXCEPT_RETURN_ASSIGN || !isInReturnStatement(node)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (node.type === \"ReturnStatement\") {\n\t\t\t\treturn node.argument && containsAssignment(node.argument);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tnode.type === \"ArrowFunctionExpression\" &&\n\t\t\t\tnode.body.type !== \"BlockStatement\"\n\t\t\t) {\n\t\t\t\treturn containsAssignment(node.body);\n\t\t\t}\n\t\t\treturn containsAssignment(node);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a node following a [no LineTerminator here] restriction is\n\t\t * surrounded by (potentially) invalid extra parentheses.\n\t\t * @param {Token} token The token preceding the [no LineTerminator here] restriction.\n\t\t * @param {ASTNode} node The node to be checked.\n\t\t * @returns {boolean} True if the node is incorrectly parenthesised.\n\t\t * @private\n\t\t */\n\t\tfunction hasExcessParensNoLineTerminator(token, node) {\n\t\t\tif (token.loc.end.line === node.loc.start.line) {\n\t\t\t\treturn hasExcessParens(node);\n\t\t\t}\n\n\t\t\treturn hasDoubleExcessParens(node);\n\t\t}\n\n\t\t/**\n\t\t * Determines whether a node should be preceded by an additional space when removing parens\n\t\t * @param {ASTNode} node node to evaluate; must be surrounded by parentheses\n\t\t * @returns {boolean} `true` if a space should be inserted before the node\n\t\t * @private\n\t\t */\n\t\tfunction requiresLeadingSpace(node) {\n\t\t\tconst leftParenToken = sourceCode.getTokenBefore(node);\n\t\t\tconst tokenBeforeLeftParen = sourceCode.getTokenBefore(\n\t\t\t\tleftParenToken,\n\t\t\t\t{ includeComments: true },\n\t\t\t);\n\t\t\tconst tokenAfterLeftParen = sourceCode.getTokenAfter(\n\t\t\t\tleftParenToken,\n\t\t\t\t{ includeComments: true },\n\t\t\t);\n\n\t\t\treturn (\n\t\t\t\ttokenBeforeLeftParen &&\n\t\t\t\ttokenBeforeLeftParen.range[1] === leftParenToken.range[0] &&\n\t\t\t\tleftParenToken.range[1] === tokenAfterLeftParen.range[0] &&\n\t\t\t\t!astUtils.canTokensBeAdjacent(\n\t\t\t\t\ttokenBeforeLeftParen,\n\t\t\t\t\ttokenAfterLeftParen,\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines whether a node should be followed by an additional space when removing parens\n\t\t * @param {ASTNode} node node to evaluate; must be surrounded by parentheses\n\t\t * @returns {boolean} `true` if a space should be inserted after the node\n\t\t * @private\n\t\t */\n\t\tfunction requiresTrailingSpace(node) {\n\t\t\tconst nextTwoTokens = sourceCode.getTokensAfter(node, { count: 2 });\n\t\t\tconst rightParenToken = nextTwoTokens[0];\n\t\t\tconst tokenAfterRightParen = nextTwoTokens[1];\n\t\t\tconst tokenBeforeRightParen = sourceCode.getLastToken(node);\n\n\t\t\treturn (\n\t\t\t\trightParenToken &&\n\t\t\t\ttokenAfterRightParen &&\n\t\t\t\t!sourceCode.isSpaceBetween(\n\t\t\t\t\trightParenToken,\n\t\t\t\t\ttokenAfterRightParen,\n\t\t\t\t) &&\n\t\t\t\t!astUtils.canTokensBeAdjacent(\n\t\t\t\t\ttokenBeforeRightParen,\n\t\t\t\t\ttokenAfterRightParen,\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a given expression node is an IIFE\n\t\t * @param {ASTNode} node The node to check\n\t\t * @returns {boolean} `true` if the given node is an IIFE\n\t\t */\n\t\tfunction isIIFE(node) {\n\t\t\tconst maybeCallNode = astUtils.skipChainExpression(node);\n\n\t\t\treturn (\n\t\t\t\tmaybeCallNode.type === \"CallExpression\" &&\n\t\t\t\tmaybeCallNode.callee.type === \"FunctionExpression\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines if the given node can be the assignment target in destructuring or the LHS of an assignment.\n\t\t * This is to avoid an autofix that could change behavior because parsers mistakenly allow invalid syntax,\n\t\t * such as `(a = b) = c` and `[(a = b) = c] = []`. Ideally, this function shouldn't be necessary.\n\t\t * @param {ASTNode} [node] The node to check\n\t\t * @returns {boolean} `true` if the given node can be a valid assignment target\n\t\t */\n\t\tfunction canBeAssignmentTarget(node) {\n\t\t\treturn (\n\t\t\t\tnode &&\n\t\t\t\t(node.type === \"Identifier\" || node.type === \"MemberExpression\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if a node is fixable.\n\t\t * A node is fixable if removing a single pair of surrounding parentheses does not turn it\n\t\t * into a directive after fixing other nodes.\n\t\t * Almost all nodes are fixable, except if all of the following conditions are met:\n\t\t * The node is a string Literal\n\t\t * It has a single pair of parentheses\n\t\t * It is the only child of an ExpressionStatement\n\t\t * @param {ASTNode} node The node to evaluate.\n\t\t * @returns {boolean} Whether or not the node is fixable.\n\t\t * @private\n\t\t */\n\t\tfunction isFixable(node) {\n\t\t\t// if it's not a string literal it can be autofixed\n\t\t\tif (node.type !== \"Literal\" || typeof node.value !== \"string\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (isParenthesisedTwice(node)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn !astUtils.isTopLevelExpressionStatement(node.parent);\n\t\t}\n\n\t\t/**\n\t\t * Report the node\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction report(node) {\n\t\t\tconst leftParenToken = sourceCode.getTokenBefore(node);\n\t\t\tconst rightParenToken = sourceCode.getTokenAfter(node);\n\n\t\t\tif (!isParenthesisedTwice(node)) {\n\t\t\t\tif (tokensToIgnore.has(sourceCode.getFirstToken(node))) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (isIIFE(node) && !isParenthesised(node.callee)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (ALLOW_PARENS_AFTER_COMMENT_PATTERN) {\n\t\t\t\t\tconst commentsBeforeLeftParenToken =\n\t\t\t\t\t\tsourceCode.getCommentsBefore(leftParenToken);\n\t\t\t\t\tconst totalCommentsBeforeLeftParenTokenCount =\n\t\t\t\t\t\tcommentsBeforeLeftParenToken.length;\n\t\t\t\t\tconst ignorePattern = new RegExp(\n\t\t\t\t\t\tALLOW_PARENS_AFTER_COMMENT_PATTERN,\n\t\t\t\t\t\t\"u\",\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\ttotalCommentsBeforeLeftParenTokenCount > 0 &&\n\t\t\t\t\t\tignorePattern.test(\n\t\t\t\t\t\t\tcommentsBeforeLeftParenToken[\n\t\t\t\t\t\t\t\ttotalCommentsBeforeLeftParenTokenCount - 1\n\t\t\t\t\t\t\t].value,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Finishes reporting\n\t\t\t * @returns {void}\n\t\t\t * @private\n\t\t\t */\n\t\t\tfunction finishReport() {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: leftParenToken.loc,\n\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\tfix: isFixable(node)\n\t\t\t\t\t\t? fixer => {\n\t\t\t\t\t\t\t\tconst parenthesizedSource =\n\t\t\t\t\t\t\t\t\tsourceCode.text.slice(\n\t\t\t\t\t\t\t\t\t\tleftParenToken.range[1],\n\t\t\t\t\t\t\t\t\t\trightParenToken.range[0],\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tleftParenToken.range[0],\n\t\t\t\t\t\t\t\t\t\trightParenToken.range[1],\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t(requiresLeadingSpace(node) ? \" \" : \"\") +\n\t\t\t\t\t\t\t\t\t\tparenthesizedSource +\n\t\t\t\t\t\t\t\t\t\t(requiresTrailingSpace(node)\n\t\t\t\t\t\t\t\t\t\t\t? \" \"\n\t\t\t\t\t\t\t\t\t\t\t: \"\"),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: null,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (reportsBuffer) {\n\t\t\t\treportsBuffer.reports.push({ node, finishReport });\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfinishReport();\n\t\t}\n\n\t\t/**\n\t\t * Evaluate a argument of the node.\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkArgumentWithPrecedence(node) {\n\t\t\tif (\n\t\t\t\thasExcessParensWithPrecedence(node.argument, precedence(node))\n\t\t\t) {\n\t\t\t\treport(node.argument);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check if a member expression contains a call expression\n\t\t * @param {ASTNode} node MemberExpression node to evaluate\n\t\t * @returns {boolean} true if found, false if not\n\t\t */\n\t\tfunction doesMemberExpressionContainCallExpression(node) {\n\t\t\tlet currentNode = node.object;\n\t\t\tlet currentNodeType = node.object.type;\n\n\t\t\twhile (currentNodeType === \"MemberExpression\") {\n\t\t\t\tcurrentNode = currentNode.object;\n\t\t\t\tcurrentNodeType = currentNode.type;\n\t\t\t}\n\n\t\t\treturn currentNodeType === \"CallExpression\";\n\t\t}\n\n\t\t/**\n\t\t * Evaluate a new call\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkCallNew(node) {\n\t\t\tconst callee = node.callee;\n\n\t\t\tif (hasExcessParensWithPrecedence(callee, precedence(node))) {\n\t\t\t\tif (\n\t\t\t\t\thasDoubleExcessParens(callee) ||\n\t\t\t\t\t!(\n\t\t\t\t\t\tisIIFE(node) ||\n\t\t\t\t\t\t// (new A)(); new (new A)();\n\t\t\t\t\t\t(callee.type === \"NewExpression\" &&\n\t\t\t\t\t\t\t!isNewExpressionWithParens(callee) &&\n\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\tnode.type === \"NewExpression\" &&\n\t\t\t\t\t\t\t\t!isNewExpressionWithParens(node)\n\t\t\t\t\t\t\t)) ||\n\t\t\t\t\t\t// new (a().b)(); new (a.b().c);\n\t\t\t\t\t\t(node.type === \"NewExpression\" &&\n\t\t\t\t\t\t\tcallee.type === \"MemberExpression\" &&\n\t\t\t\t\t\t\tdoesMemberExpressionContainCallExpression(\n\t\t\t\t\t\t\t\tcallee,\n\t\t\t\t\t\t\t)) ||\n\t\t\t\t\t\t// (a?.b)(); (a?.())();\n\t\t\t\t\t\t(!node.optional && callee.type === \"ChainExpression\")\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treport(node.callee);\n\t\t\t\t}\n\t\t\t}\n\t\t\tnode.arguments\n\t\t\t\t.filter(arg =>\n\t\t\t\t\thasExcessParensWithPrecedence(\n\t\t\t\t\t\targ,\n\t\t\t\t\t\tPRECEDENCE_OF_ASSIGNMENT_EXPR,\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.forEach(report);\n\t\t}\n\n\t\t/**\n\t\t * Evaluate binary logicals\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkBinaryLogical(node) {\n\t\t\tconst prec = precedence(node);\n\t\t\tconst leftPrecedence = precedence(node.left);\n\t\t\tconst rightPrecedence = precedence(node.right);\n\t\t\tconst isExponentiation = node.operator === \"**\";\n\t\t\tconst shouldSkipLeft =\n\t\t\t\tNESTED_BINARY &&\n\t\t\t\t(node.left.type === \"BinaryExpression\" ||\n\t\t\t\t\tnode.left.type === \"LogicalExpression\");\n\t\t\tconst shouldSkipRight =\n\t\t\t\tNESTED_BINARY &&\n\t\t\t\t(node.right.type === \"BinaryExpression\" ||\n\t\t\t\t\tnode.right.type === \"LogicalExpression\");\n\n\t\t\tif (!shouldSkipLeft && hasExcessParens(node.left)) {\n\t\t\t\tif (\n\t\t\t\t\t(!(\n\t\t\t\t\t\t[\"AwaitExpression\", \"UnaryExpression\"].includes(\n\t\t\t\t\t\t\tnode.left.type,\n\t\t\t\t\t\t) && isExponentiation\n\t\t\t\t\t) &&\n\t\t\t\t\t\t!astUtils.isMixedLogicalAndCoalesceExpressions(\n\t\t\t\t\t\t\tnode.left,\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\t(leftPrecedence > prec ||\n\t\t\t\t\t\t\t(leftPrecedence === prec && !isExponentiation))) ||\n\t\t\t\t\tisParenthesisedTwice(node.left)\n\t\t\t\t) {\n\t\t\t\t\treport(node.left);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!shouldSkipRight && hasExcessParens(node.right)) {\n\t\t\t\tif (\n\t\t\t\t\t(!astUtils.isMixedLogicalAndCoalesceExpressions(\n\t\t\t\t\t\tnode.right,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t) &&\n\t\t\t\t\t\t(rightPrecedence > prec ||\n\t\t\t\t\t\t\t(rightPrecedence === prec && isExponentiation))) ||\n\t\t\t\t\tisParenthesisedTwice(node.right)\n\t\t\t\t) {\n\t\t\t\t\treport(node.right);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check the parentheses around the super class of the given class definition.\n\t\t * @param {ASTNode} node The node of class declarations to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkClass(node) {\n\t\t\tif (!node.superClass) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * If `node.superClass` is a LeftHandSideExpression, parentheses are extra.\n\t\t\t * Otherwise, parentheses are needed.\n\t\t\t */\n\t\t\tconst hasExtraParens =\n\t\t\t\tprecedence(node.superClass) > PRECEDENCE_OF_UPDATE_EXPR\n\t\t\t\t\t? hasExcessParens(node.superClass)\n\t\t\t\t\t: hasDoubleExcessParens(node.superClass);\n\n\t\t\tif (hasExtraParens) {\n\t\t\t\treport(node.superClass);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check the parentheses around the argument of the given spread operator.\n\t\t * @param {ASTNode} node The node of spread elements/properties to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpreadOperator(node) {\n\t\t\tif (\n\t\t\t\thasExcessParensWithPrecedence(\n\t\t\t\t\tnode.argument,\n\t\t\t\t\tPRECEDENCE_OF_ASSIGNMENT_EXPR,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treport(node.argument);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks the parentheses for an ExpressionStatement or ExportDefaultDeclaration\n\t\t * @param {ASTNode} node The ExpressionStatement.expression or ExportDefaultDeclaration.declaration node\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkExpressionOrExportStatement(node) {\n\t\t\tconst firstToken = isParenthesised(node)\n\t\t\t\t? sourceCode.getTokenBefore(node)\n\t\t\t\t: sourceCode.getFirstToken(node);\n\t\t\tconst secondToken = sourceCode.getTokenAfter(\n\t\t\t\tfirstToken,\n\t\t\t\tastUtils.isNotOpeningParenToken,\n\t\t\t);\n\t\t\tconst thirdToken = secondToken\n\t\t\t\t? sourceCode.getTokenAfter(secondToken)\n\t\t\t\t: null;\n\t\t\tconst tokenAfterClosingParens = secondToken\n\t\t\t\t? sourceCode.getTokenAfter(\n\t\t\t\t\t\tsecondToken,\n\t\t\t\t\t\tastUtils.isNotClosingParenToken,\n\t\t\t\t\t)\n\t\t\t\t: null;\n\n\t\t\tif (\n\t\t\t\tastUtils.isOpeningParenToken(firstToken) &&\n\t\t\t\t(astUtils.isOpeningBraceToken(secondToken) ||\n\t\t\t\t\t(secondToken.type === \"Keyword\" &&\n\t\t\t\t\t\t(secondToken.value === \"function\" ||\n\t\t\t\t\t\t\tsecondToken.value === \"class\" ||\n\t\t\t\t\t\t\t(secondToken.value === \"let\" &&\n\t\t\t\t\t\t\t\ttokenAfterClosingParens &&\n\t\t\t\t\t\t\t\t(astUtils.isOpeningBracketToken(\n\t\t\t\t\t\t\t\t\ttokenAfterClosingParens,\n\t\t\t\t\t\t\t\t) ||\n\t\t\t\t\t\t\t\t\ttokenAfterClosingParens.type ===\n\t\t\t\t\t\t\t\t\t\t\"Identifier\")))) ||\n\t\t\t\t\t(secondToken &&\n\t\t\t\t\t\tsecondToken.type === \"Identifier\" &&\n\t\t\t\t\t\tsecondToken.value === \"async\" &&\n\t\t\t\t\t\tthirdToken &&\n\t\t\t\t\t\tthirdToken.type === \"Keyword\" &&\n\t\t\t\t\t\tthirdToken.value === \"function\"))\n\t\t\t) {\n\t\t\t\ttokensToIgnore.add(secondToken);\n\t\t\t}\n\n\t\t\tconst hasExtraParens =\n\t\t\t\tnode.parent.type === \"ExportDefaultDeclaration\"\n\t\t\t\t\t? hasExcessParensWithPrecedence(\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tPRECEDENCE_OF_ASSIGNMENT_EXPR,\n\t\t\t\t\t\t)\n\t\t\t\t\t: hasExcessParens(node);\n\n\t\t\tif (hasExtraParens) {\n\t\t\t\treport(node);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Finds the path from the given node to the specified ancestor.\n\t\t * @param {ASTNode} node First node in the path.\n\t\t * @param {ASTNode} ancestor Last node in the path.\n\t\t * @returns {ASTNode[]} Path, including both nodes.\n\t\t * @throws {Error} If the given node does not have the specified ancestor.\n\t\t */\n\t\tfunction pathToAncestor(node, ancestor) {\n\t\t\tconst path = [node];\n\t\t\tlet currentNode = node;\n\n\t\t\twhile (currentNode !== ancestor) {\n\t\t\t\tcurrentNode = currentNode.parent;\n\n\t\t\t\t/* c8 ignore start */\n\t\t\t\tif (currentNode === null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"Nodes are not in the ancestor-descendant relationship.\",\n\t\t\t\t\t);\n\t\t\t\t} /* c8 ignore stop */\n\n\t\t\t\tpath.push(currentNode);\n\t\t\t}\n\n\t\t\treturn path;\n\t\t}\n\n\t\t/**\n\t\t * Finds the path from the given node to the specified descendant.\n\t\t * @param {ASTNode} node First node in the path.\n\t\t * @param {ASTNode} descendant Last node in the path.\n\t\t * @returns {ASTNode[]} Path, including both nodes.\n\t\t * @throws {Error} If the given node does not have the specified descendant.\n\t\t */\n\t\tfunction pathToDescendant(node, descendant) {\n\t\t\treturn pathToAncestor(descendant, node).reverse();\n\t\t}\n\n\t\t/**\n\t\t * Checks whether the syntax of the given ancestor of an 'in' expression inside a for-loop initializer\n\t\t * is preventing the 'in' keyword from being interpreted as a part of an ill-formed for-in loop.\n\t\t * @param {ASTNode} node Ancestor of an 'in' expression.\n\t\t * @param {ASTNode} child Child of the node, ancestor of the same 'in' expression or the 'in' expression itself.\n\t\t * @returns {boolean} True if the keyword 'in' would be interpreted as the 'in' operator, without any parenthesis.\n\t\t */\n\t\tfunction isSafelyEnclosingInExpression(node, child) {\n\t\t\tswitch (node.type) {\n\t\t\t\tcase \"ArrayExpression\":\n\t\t\t\tcase \"ArrayPattern\":\n\t\t\t\tcase \"BlockStatement\":\n\t\t\t\tcase \"ObjectExpression\":\n\t\t\t\tcase \"ObjectPattern\":\n\t\t\t\tcase \"TemplateLiteral\":\n\t\t\t\t\treturn true;\n\t\t\t\tcase \"ArrowFunctionExpression\":\n\t\t\t\tcase \"FunctionExpression\":\n\t\t\t\t\treturn node.params.includes(child);\n\t\t\t\tcase \"CallExpression\":\n\t\t\t\tcase \"NewExpression\":\n\t\t\t\t\treturn node.arguments.includes(child);\n\t\t\t\tcase \"MemberExpression\":\n\t\t\t\t\treturn node.computed && node.property === child;\n\t\t\t\tcase \"ConditionalExpression\":\n\t\t\t\t\treturn node.consequent === child;\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Starts a new reports buffering. Warnings will be stored in a buffer instead of being reported immediately.\n\t\t * An additional logic that requires multiple nodes (e.g. a whole subtree) may dismiss some of the stored warnings.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction startNewReportsBuffering() {\n\t\t\treportsBuffer = {\n\t\t\t\tupper: reportsBuffer,\n\t\t\t\tinExpressionNodes: [],\n\t\t\t\treports: [],\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Ends the current reports buffering.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction endCurrentReportsBuffering() {\n\t\t\tconst { upper, inExpressionNodes, reports } = reportsBuffer;\n\n\t\t\tif (upper) {\n\t\t\t\tupper.inExpressionNodes.push(...inExpressionNodes);\n\t\t\t\tupper.reports.push(...reports);\n\t\t\t} else {\n\t\t\t\t// flush remaining reports\n\t\t\t\treports.forEach(({ finishReport }) => finishReport());\n\t\t\t}\n\n\t\t\treportsBuffer = upper;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether the given node is in the current reports buffer.\n\t\t * @param {ASTNode} node Node to check.\n\t\t * @returns {boolean} True if the node is in the current buffer, false otherwise.\n\t\t */\n\t\tfunction isInCurrentReportsBuffer(node) {\n\t\t\treturn reportsBuffer.reports.some(r => r.node === node);\n\t\t}\n\n\t\t/**\n\t\t * Removes the given node from the current reports buffer.\n\t\t * @param {ASTNode} node Node to remove.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction removeFromCurrentReportsBuffer(node) {\n\t\t\treportsBuffer.reports = reportsBuffer.reports.filter(\n\t\t\t\tr => r.node !== node,\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a node is a MemberExpression at NewExpression's callee.\n\t\t * @param {ASTNode} node node to check.\n\t\t * @returns {boolean} True if the node is a MemberExpression at NewExpression's callee. false otherwise.\n\t\t */\n\t\tfunction isMemberExpInNewCallee(node) {\n\t\t\tif (node.type === \"MemberExpression\") {\n\t\t\t\treturn node.parent.type === \"NewExpression\" &&\n\t\t\t\t\tnode.parent.callee === node\n\t\t\t\t\t? true\n\t\t\t\t\t: node.parent.object === node &&\n\t\t\t\t\t\t\tisMemberExpInNewCallee(node.parent);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Checks if the left-hand side of an assignment is an identifier, the operator is one of\n\t\t * `=`, `&&=`, `||=` or `??=` and the right-hand side is an anonymous class or function.\n\t\t *\n\t\t * As per https://tc39.es/ecma262/#sec-assignment-operators-runtime-semantics-evaluation, an\n\t\t * assignment involving one of the operators `=`, `&&=`, `||=` or `??=` where the right-hand\n\t\t * side is an anonymous class or function and the left-hand side is an *unparenthesized*\n\t\t * identifier has different semantics than other assignments.\n\t\t * Specifically, when an expression like `foo = function () {}` is evaluated, `foo.name`\n\t\t * will be set to the string \"foo\", i.e. the identifier name. The same thing does not happen\n\t\t * when evaluating `(foo) = function () {}`.\n\t\t * Since the parenthesizing of the identifier in the left-hand side is significant in this\n\t\t * special case, the parentheses, if present, should not be flagged as unnecessary.\n\t\t * @param {ASTNode} node an AssignmentExpression node.\n\t\t * @returns {boolean} `true` if the left-hand side of the assignment is an identifier, the\n\t\t * operator is one of `=`, `&&=`, `||=` or `??=` and the right-hand side is an anonymous\n\t\t * class or function; otherwise, `false`.\n\t\t */\n\t\tfunction isAnonymousFunctionAssignmentException({\n\t\t\tleft,\n\t\t\toperator,\n\t\t\tright,\n\t\t}) {\n\t\t\tif (\n\t\t\t\tleft.type === \"Identifier\" &&\n\t\t\t\t[\"=\", \"&&=\", \"||=\", \"??=\"].includes(operator)\n\t\t\t) {\n\t\t\t\tconst rhsType = right.type;\n\n\t\t\t\tif (rhsType === \"ArrowFunctionExpression\") {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t(rhsType === \"FunctionExpression\" ||\n\t\t\t\t\t\trhsType === \"ClassExpression\") &&\n\t\t\t\t\t!right.id\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\treturn {\n\t\t\tArrayExpression(node) {\n\t\t\t\tnode.elements\n\t\t\t\t\t.filter(\n\t\t\t\t\t\te =>\n\t\t\t\t\t\t\te &&\n\t\t\t\t\t\t\thasExcessParensWithPrecedence(\n\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\tPRECEDENCE_OF_ASSIGNMENT_EXPR,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.forEach(report);\n\t\t\t},\n\n\t\t\tArrayPattern(node) {\n\t\t\t\tnode.elements\n\t\t\t\t\t.filter(e => canBeAssignmentTarget(e) && hasExcessParens(e))\n\t\t\t\t\t.forEach(report);\n\t\t\t},\n\n\t\t\tArrowFunctionExpression(node) {\n\t\t\t\tif (isReturnAssignException(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tnode.body.type === \"ConditionalExpression\" &&\n\t\t\t\t\tIGNORE_ARROW_CONDITIONALS\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (node.body.type !== \"BlockStatement\") {\n\t\t\t\t\tconst firstBodyToken = sourceCode.getFirstToken(\n\t\t\t\t\t\tnode.body,\n\t\t\t\t\t\tastUtils.isNotOpeningParenToken,\n\t\t\t\t\t);\n\t\t\t\t\tconst tokenBeforeFirst =\n\t\t\t\t\t\tsourceCode.getTokenBefore(firstBodyToken);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tastUtils.isOpeningParenToken(tokenBeforeFirst) &&\n\t\t\t\t\t\tastUtils.isOpeningBraceToken(firstBodyToken)\n\t\t\t\t\t) {\n\t\t\t\t\t\ttokensToIgnore.add(firstBodyToken);\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\thasExcessParensWithPrecedence(\n\t\t\t\t\t\t\tnode.body,\n\t\t\t\t\t\t\tPRECEDENCE_OF_ASSIGNMENT_EXPR,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treport(node.body);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tAssignmentExpression(node) {\n\t\t\t\tif (\n\t\t\t\t\tcanBeAssignmentTarget(node.left) &&\n\t\t\t\t\thasExcessParens(node.left) &&\n\t\t\t\t\t(!isAnonymousFunctionAssignmentException(node) ||\n\t\t\t\t\t\tisParenthesisedTwice(node.left))\n\t\t\t\t) {\n\t\t\t\t\treport(node.left);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!isReturnAssignException(node) &&\n\t\t\t\t\thasExcessParensWithPrecedence(node.right, precedence(node))\n\t\t\t\t) {\n\t\t\t\t\treport(node.right);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tBinaryExpression(node) {\n\t\t\t\tif (reportsBuffer && node.operator === \"in\") {\n\t\t\t\t\treportsBuffer.inExpressionNodes.push(node);\n\t\t\t\t}\n\n\t\t\t\tcheckBinaryLogical(node);\n\t\t\t},\n\n\t\t\tCallExpression: checkCallNew,\n\n\t\t\tConditionalExpression(node) {\n\t\t\t\tif (isReturnAssignException(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst availableTypes = new Set([\n\t\t\t\t\t\"BinaryExpression\",\n\t\t\t\t\t\"LogicalExpression\",\n\t\t\t\t]);\n\n\t\t\t\tif (\n\t\t\t\t\t!(\n\t\t\t\t\t\tEXCEPT_COND_TERNARY &&\n\t\t\t\t\t\tavailableTypes.has(node.test.type)\n\t\t\t\t\t) &&\n\t\t\t\t\t!isCondAssignException(node) &&\n\t\t\t\t\thasExcessParensWithPrecedence(\n\t\t\t\t\t\tnode.test,\n\t\t\t\t\t\tprecedence({\n\t\t\t\t\t\t\ttype: \"LogicalExpression\",\n\t\t\t\t\t\t\toperator: \"||\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treport(node.test);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!(\n\t\t\t\t\t\tEXCEPT_COND_TERNARY &&\n\t\t\t\t\t\tavailableTypes.has(node.consequent.type)\n\t\t\t\t\t) &&\n\t\t\t\t\thasExcessParensWithPrecedence(\n\t\t\t\t\t\tnode.consequent,\n\t\t\t\t\t\tPRECEDENCE_OF_ASSIGNMENT_EXPR,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treport(node.consequent);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!(\n\t\t\t\t\t\tEXCEPT_COND_TERNARY &&\n\t\t\t\t\t\tavailableTypes.has(node.alternate.type)\n\t\t\t\t\t) &&\n\t\t\t\t\thasExcessParensWithPrecedence(\n\t\t\t\t\t\tnode.alternate,\n\t\t\t\t\t\tPRECEDENCE_OF_ASSIGNMENT_EXPR,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treport(node.alternate);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tDoWhileStatement(node) {\n\t\t\t\tif (\n\t\t\t\t\thasExcessParens(node.test) &&\n\t\t\t\t\t!isCondAssignException(node)\n\t\t\t\t) {\n\t\t\t\t\treport(node.test);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tExportDefaultDeclaration: node =>\n\t\t\t\tcheckExpressionOrExportStatement(node.declaration),\n\t\t\tExpressionStatement: node =>\n\t\t\t\tcheckExpressionOrExportStatement(node.expression),\n\n\t\t\tForInStatement(node) {\n\t\t\t\tif (node.left.type !== \"VariableDeclaration\") {\n\t\t\t\t\tconst firstLeftToken = sourceCode.getFirstToken(\n\t\t\t\t\t\tnode.left,\n\t\t\t\t\t\tastUtils.isNotOpeningParenToken,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tfirstLeftToken.value === \"let\" &&\n\t\t\t\t\t\tastUtils.isOpeningBracketToken(\n\t\t\t\t\t\t\tsourceCode.getTokenAfter(\n\t\t\t\t\t\t\t\tfirstLeftToken,\n\t\t\t\t\t\t\t\tastUtils.isNotClosingParenToken,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\t// ForInStatement#left expression cannot start with `let[`.\n\t\t\t\t\t\ttokensToIgnore.add(firstLeftToken);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (hasExcessParens(node.left)) {\n\t\t\t\t\treport(node.left);\n\t\t\t\t}\n\n\t\t\t\tif (hasExcessParens(node.right)) {\n\t\t\t\t\treport(node.right);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tForOfStatement(node) {\n\t\t\t\tif (node.left.type !== \"VariableDeclaration\") {\n\t\t\t\t\tconst firstLeftToken = sourceCode.getFirstToken(\n\t\t\t\t\t\tnode.left,\n\t\t\t\t\t\tastUtils.isNotOpeningParenToken,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (firstLeftToken.value === \"let\") {\n\t\t\t\t\t\t// ForOfStatement#left expression cannot start with `let`.\n\t\t\t\t\t\ttokensToIgnore.add(firstLeftToken);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (hasExcessParens(node.left)) {\n\t\t\t\t\treport(node.left);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\thasExcessParensWithPrecedence(\n\t\t\t\t\t\tnode.right,\n\t\t\t\t\t\tPRECEDENCE_OF_ASSIGNMENT_EXPR,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treport(node.right);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tForStatement(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.test &&\n\t\t\t\t\thasExcessParens(node.test) &&\n\t\t\t\t\t!isCondAssignException(node)\n\t\t\t\t) {\n\t\t\t\t\treport(node.test);\n\t\t\t\t}\n\n\t\t\t\tif (node.update && hasExcessParens(node.update)) {\n\t\t\t\t\treport(node.update);\n\t\t\t\t}\n\n\t\t\t\tif (node.init) {\n\t\t\t\t\tif (node.init.type !== \"VariableDeclaration\") {\n\t\t\t\t\t\tconst firstToken = sourceCode.getFirstToken(\n\t\t\t\t\t\t\tnode.init,\n\t\t\t\t\t\t\tastUtils.isNotOpeningParenToken,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tfirstToken.value === \"let\" &&\n\t\t\t\t\t\t\tastUtils.isOpeningBracketToken(\n\t\t\t\t\t\t\t\tsourceCode.getTokenAfter(\n\t\t\t\t\t\t\t\t\tfirstToken,\n\t\t\t\t\t\t\t\t\tastUtils.isNotClosingParenToken,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// ForStatement#init expression cannot start with `let[`.\n\t\t\t\t\t\t\ttokensToIgnore.add(firstToken);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tstartNewReportsBuffering();\n\n\t\t\t\t\tif (hasExcessParens(node.init)) {\n\t\t\t\t\t\treport(node.init);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t\"ForStatement > *.init:exit\"(node) {\n\t\t\t\t/*\n\t\t\t\t * Removing parentheses around `in` expressions might change semantics and cause errors.\n\t\t\t\t *\n\t\t\t\t * For example, this valid for loop:\n\t\t\t\t *      for (let a = (b in c); ;);\n\t\t\t\t * after removing parentheses would be treated as an invalid for-in loop:\n\t\t\t\t *      for (let a = b in c; ;);\n\t\t\t\t */\n\n\t\t\t\tif (reportsBuffer.reports.length) {\n\t\t\t\t\treportsBuffer.inExpressionNodes.forEach(\n\t\t\t\t\t\tinExpressionNode => {\n\t\t\t\t\t\t\tconst path = pathToDescendant(\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\tinExpressionNode,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tlet nodeToExclude;\n\n\t\t\t\t\t\t\tfor (let i = 0; i < path.length; i++) {\n\t\t\t\t\t\t\t\tconst pathNode = path[i];\n\n\t\t\t\t\t\t\t\tif (i < path.length - 1) {\n\t\t\t\t\t\t\t\t\tconst nextPathNode = path[i + 1];\n\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tisSafelyEnclosingInExpression(\n\t\t\t\t\t\t\t\t\t\t\tpathNode,\n\t\t\t\t\t\t\t\t\t\t\tnextPathNode,\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t// The 'in' expression in safely enclosed by the syntax of its ancestor nodes (e.g. by '{}' or '[]').\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (isParenthesised(pathNode)) {\n\t\t\t\t\t\t\t\t\tif (isInCurrentReportsBuffer(pathNode)) {\n\t\t\t\t\t\t\t\t\t\t// This node was supposed to be reported, but parentheses might be necessary.\n\n\t\t\t\t\t\t\t\t\t\tif (isParenthesisedTwice(pathNode)) {\n\t\t\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t\t\t * This node is parenthesised twice, it certainly has at least one pair of `extra` parentheses.\n\t\t\t\t\t\t\t\t\t\t\t * If the --fix option is on, the current fixing iteration will remove only one pair of parentheses.\n\t\t\t\t\t\t\t\t\t\t\t * The remaining pair is safely enclosing the 'in' expression.\n\t\t\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Exclude the outermost node only.\n\t\t\t\t\t\t\t\t\t\tif (!nodeToExclude) {\n\t\t\t\t\t\t\t\t\t\t\tnodeToExclude = pathNode;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Don't break the loop here, there might be some safe nodes or parentheses that will stay inside.\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// This node will stay parenthesised, the 'in' expression in safely enclosed by '()'.\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Exclude the node from the list (i.e. treat parentheses as necessary)\n\t\t\t\t\t\t\tremoveFromCurrentReportsBuffer(nodeToExclude);\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tendCurrentReportsBuffering();\n\t\t\t},\n\n\t\t\tIfStatement(node) {\n\t\t\t\tif (\n\t\t\t\t\thasExcessParens(node.test) &&\n\t\t\t\t\t!isCondAssignException(node)\n\t\t\t\t) {\n\t\t\t\t\treport(node.test);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tImportExpression(node) {\n\t\t\t\tconst { source } = node;\n\n\t\t\t\tif (source.type === \"SequenceExpression\") {\n\t\t\t\t\tif (hasDoubleExcessParens(source)) {\n\t\t\t\t\t\treport(source);\n\t\t\t\t\t}\n\t\t\t\t} else if (hasExcessParens(source)) {\n\t\t\t\t\treport(source);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tLogicalExpression: checkBinaryLogical,\n\n\t\t\tMemberExpression(node) {\n\t\t\t\tconst shouldAllowWrapOnce =\n\t\t\t\t\tisMemberExpInNewCallee(node) &&\n\t\t\t\t\tdoesMemberExpressionContainCallExpression(node);\n\t\t\t\tconst nodeObjHasExcessParens = shouldAllowWrapOnce\n\t\t\t\t\t? hasDoubleExcessParens(node.object)\n\t\t\t\t\t: hasExcessParens(node.object) &&\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\tisImmediateFunctionPrototypeMethodCall(\n\t\t\t\t\t\t\t\tnode.parent,\n\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\tnode.parent.callee === node &&\n\t\t\t\t\t\t\tIGNORE_FUNCTION_PROTOTYPE_METHODS\n\t\t\t\t\t\t);\n\n\t\t\t\tif (\n\t\t\t\t\tnodeObjHasExcessParens &&\n\t\t\t\t\tprecedence(node.object) >= precedence(node) &&\n\t\t\t\t\t(node.computed ||\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\tastUtils.isDecimalInteger(node.object) ||\n\t\t\t\t\t\t\t// RegExp literal is allowed to have parens (#1589)\n\t\t\t\t\t\t\t(node.object.type === \"Literal\" &&\n\t\t\t\t\t\t\t\tnode.object.regex)\n\t\t\t\t\t\t))\n\t\t\t\t) {\n\t\t\t\t\treport(node.object);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tnodeObjHasExcessParens &&\n\t\t\t\t\tnode.object.type === \"CallExpression\"\n\t\t\t\t) {\n\t\t\t\t\treport(node.object);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tnodeObjHasExcessParens &&\n\t\t\t\t\t!IGNORE_NEW_IN_MEMBER_EXPR &&\n\t\t\t\t\tnode.object.type === \"NewExpression\" &&\n\t\t\t\t\tisNewExpressionWithParens(node.object)\n\t\t\t\t) {\n\t\t\t\t\treport(node.object);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tnodeObjHasExcessParens &&\n\t\t\t\t\tnode.optional &&\n\t\t\t\t\tnode.object.type === \"ChainExpression\"\n\t\t\t\t) {\n\t\t\t\t\treport(node.object);\n\t\t\t\t}\n\n\t\t\t\tif (node.computed && hasExcessParens(node.property)) {\n\t\t\t\t\treport(node.property);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t\"MethodDefinition[computed=true]\"(node) {\n\t\t\t\tif (\n\t\t\t\t\thasExcessParensWithPrecedence(\n\t\t\t\t\t\tnode.key,\n\t\t\t\t\t\tPRECEDENCE_OF_ASSIGNMENT_EXPR,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treport(node.key);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tNewExpression: checkCallNew,\n\n\t\t\tObjectExpression(node) {\n\t\t\t\tnode.properties\n\t\t\t\t\t.filter(\n\t\t\t\t\t\tproperty =>\n\t\t\t\t\t\t\tproperty.value &&\n\t\t\t\t\t\t\thasExcessParensWithPrecedence(\n\t\t\t\t\t\t\t\tproperty.value,\n\t\t\t\t\t\t\t\tPRECEDENCE_OF_ASSIGNMENT_EXPR,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.forEach(property => report(property.value));\n\t\t\t},\n\n\t\t\tObjectPattern(node) {\n\t\t\t\tnode.properties\n\t\t\t\t\t.filter(property => {\n\t\t\t\t\t\tconst value = property.value;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tcanBeAssignmentTarget(value) &&\n\t\t\t\t\t\t\thasExcessParens(value)\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t\t.forEach(property => report(property.value));\n\t\t\t},\n\n\t\t\tProperty(node) {\n\t\t\t\tif (node.computed) {\n\t\t\t\t\tconst { key } = node;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tkey &&\n\t\t\t\t\t\thasExcessParensWithPrecedence(\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tPRECEDENCE_OF_ASSIGNMENT_EXPR,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treport(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tPropertyDefinition(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.computed &&\n\t\t\t\t\thasExcessParensWithPrecedence(\n\t\t\t\t\t\tnode.key,\n\t\t\t\t\t\tPRECEDENCE_OF_ASSIGNMENT_EXPR,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treport(node.key);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tnode.value &&\n\t\t\t\t\thasExcessParensWithPrecedence(\n\t\t\t\t\t\tnode.value,\n\t\t\t\t\t\tPRECEDENCE_OF_ASSIGNMENT_EXPR,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treport(node.value);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tRestElement(node) {\n\t\t\t\tconst argument = node.argument;\n\n\t\t\t\tif (\n\t\t\t\t\tcanBeAssignmentTarget(argument) &&\n\t\t\t\t\thasExcessParens(argument)\n\t\t\t\t) {\n\t\t\t\t\treport(argument);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tReturnStatement(node) {\n\t\t\t\tconst returnToken = sourceCode.getFirstToken(node);\n\n\t\t\t\tif (isReturnAssignException(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tnode.argument &&\n\t\t\t\t\thasExcessParensNoLineTerminator(\n\t\t\t\t\t\treturnToken,\n\t\t\t\t\t\tnode.argument,\n\t\t\t\t\t) &&\n\t\t\t\t\t// RegExp literal is allowed to have parens (#1589)\n\t\t\t\t\t!(node.argument.type === \"Literal\" && node.argument.regex)\n\t\t\t\t) {\n\t\t\t\t\treport(node.argument);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tSequenceExpression(node) {\n\t\t\t\tconst precedenceOfNode = precedence(node);\n\n\t\t\t\tnode.expressions\n\t\t\t\t\t.filter(e =>\n\t\t\t\t\t\thasExcessParensWithPrecedence(e, precedenceOfNode),\n\t\t\t\t\t)\n\t\t\t\t\t.forEach(report);\n\t\t\t},\n\n\t\t\tSwitchCase(node) {\n\t\t\t\tif (node.test && hasExcessParens(node.test)) {\n\t\t\t\t\treport(node.test);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tSwitchStatement(node) {\n\t\t\t\tif (hasExcessParens(node.discriminant)) {\n\t\t\t\t\treport(node.discriminant);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tThrowStatement(node) {\n\t\t\t\tconst throwToken = sourceCode.getFirstToken(node);\n\n\t\t\t\tif (\n\t\t\t\t\thasExcessParensNoLineTerminator(throwToken, node.argument)\n\t\t\t\t) {\n\t\t\t\t\treport(node.argument);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tUnaryExpression: checkArgumentWithPrecedence,\n\t\t\tUpdateExpression(node) {\n\t\t\t\tif (node.prefix) {\n\t\t\t\t\tcheckArgumentWithPrecedence(node);\n\t\t\t\t} else {\n\t\t\t\t\tconst { argument } = node;\n\t\t\t\t\tconst operatorToken = sourceCode.getLastToken(node);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\targument.loc.end.line === operatorToken.loc.start.line\n\t\t\t\t\t) {\n\t\t\t\t\t\tcheckArgumentWithPrecedence(node);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (hasDoubleExcessParens(argument)) {\n\t\t\t\t\t\t\treport(argument);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tAwaitExpression: checkArgumentWithPrecedence,\n\n\t\t\tVariableDeclarator(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.init &&\n\t\t\t\t\thasExcessParensWithPrecedence(\n\t\t\t\t\t\tnode.init,\n\t\t\t\t\t\tPRECEDENCE_OF_ASSIGNMENT_EXPR,\n\t\t\t\t\t) &&\n\t\t\t\t\t// RegExp literal is allowed to have parens (#1589)\n\t\t\t\t\t!(node.init.type === \"Literal\" && node.init.regex)\n\t\t\t\t) {\n\t\t\t\t\treport(node.init);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tWhileStatement(node) {\n\t\t\t\tif (\n\t\t\t\t\thasExcessParens(node.test) &&\n\t\t\t\t\t!isCondAssignException(node)\n\t\t\t\t) {\n\t\t\t\t\treport(node.test);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tWithStatement(node) {\n\t\t\t\tif (hasExcessParens(node.object)) {\n\t\t\t\t\treport(node.object);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tYieldExpression(node) {\n\t\t\t\tif (node.argument) {\n\t\t\t\t\tconst yieldToken = sourceCode.getFirstToken(node);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(precedence(node.argument) >= precedence(node) &&\n\t\t\t\t\t\t\thasExcessParensNoLineTerminator(\n\t\t\t\t\t\t\t\tyieldToken,\n\t\t\t\t\t\t\t\tnode.argument,\n\t\t\t\t\t\t\t)) ||\n\t\t\t\t\t\thasDoubleExcessParens(node.argument)\n\t\t\t\t\t) {\n\t\t\t\t\t\treport(node.argument);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tClassDeclaration: checkClass,\n\t\t\tClassExpression: checkClass,\n\n\t\t\tSpreadElement: checkSpreadOperator,\n\t\t\tSpreadProperty: checkSpreadOperator,\n\t\t\tExperimentalSpreadProperty: checkSpreadOperator,\n\n\t\t\tTemplateLiteral(node) {\n\t\t\t\tnode.expressions\n\t\t\t\t\t.filter(e => e && hasExcessParens(e))\n\t\t\t\t\t.forEach(report);\n\t\t\t},\n\n\t\t\tAssignmentPattern(node) {\n\t\t\t\tconst { left, right } = node;\n\n\t\t\t\tif (canBeAssignmentTarget(left) && hasExcessParens(left)) {\n\t\t\t\t\treport(left);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tright &&\n\t\t\t\t\thasExcessParensWithPrecedence(\n\t\t\t\t\t\tright,\n\t\t\t\t\t\tPRECEDENCE_OF_ASSIGNMENT_EXPR,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treport(right);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of unnecessary semicolons\n * @author Nicholas C. Zakas\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst FixTracker = require(\"./utils/fix-tracker\");\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-extra-semi\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/no-extra-semi\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow unnecessary semicolons\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-extra-semi\",\n\t\t},\n\n\t\tfixable: \"code\",\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpected: \"Unnecessary semicolon.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Checks if a node or token is fixable.\n\t\t * A node is fixable if it can be removed without turning a subsequent statement into a directive after fixing other nodes.\n\t\t * @param {Token} nodeOrToken The node or token to check.\n\t\t * @returns {boolean} Whether or not the node is fixable.\n\t\t */\n\t\tfunction isFixable(nodeOrToken) {\n\t\t\tconst nextToken = sourceCode.getTokenAfter(nodeOrToken);\n\n\t\t\tif (!nextToken || nextToken.type !== \"String\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst stringNode = sourceCode.getNodeByRangeIndex(\n\t\t\t\tnextToken.range[0],\n\t\t\t);\n\n\t\t\treturn !astUtils.isTopLevelExpressionStatement(stringNode.parent);\n\t\t}\n\n\t\t/**\n\t\t * Reports an unnecessary semicolon error.\n\t\t * @param {Node|Token} nodeOrToken A node or a token to be reported.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(nodeOrToken) {\n\t\t\tcontext.report({\n\t\t\t\tnode: nodeOrToken,\n\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\tfix: isFixable(nodeOrToken)\n\t\t\t\t\t? fixer =>\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * Expand the replacement range to include the surrounding\n\t\t\t\t\t\t\t * tokens to avoid conflicting with semi.\n\t\t\t\t\t\t\t * https://github.com/eslint/eslint/issues/7928\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tnew FixTracker(fixer, context.sourceCode)\n\t\t\t\t\t\t\t\t.retainSurroundingTokens(nodeOrToken)\n\t\t\t\t\t\t\t\t.remove(nodeOrToken)\n\t\t\t\t\t: null,\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Checks for a part of a class body.\n\t\t * This checks tokens from a specified token to a next MethodDefinition or the end of class body.\n\t\t * @param {Token} firstToken The first token to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForPartOfClassBody(firstToken) {\n\t\t\tfor (\n\t\t\t\tlet token = firstToken;\n\t\t\t\ttoken.type === \"Punctuator\" &&\n\t\t\t\t!astUtils.isClosingBraceToken(token);\n\t\t\t\ttoken = sourceCode.getTokenAfter(token)\n\t\t\t) {\n\t\t\t\tif (astUtils.isSemicolonToken(token)) {\n\t\t\t\t\treport(token);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t/**\n\t\t\t * Reports this empty statement, except if the parent node is a loop.\n\t\t\t * @param {Node} node A EmptyStatement node to be reported.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tEmptyStatement(node) {\n\t\t\t\tconst parent = node.parent,\n\t\t\t\t\tallowedParentTypes = [\n\t\t\t\t\t\t\"ForStatement\",\n\t\t\t\t\t\t\"ForInStatement\",\n\t\t\t\t\t\t\"ForOfStatement\",\n\t\t\t\t\t\t\"WhileStatement\",\n\t\t\t\t\t\t\"DoWhileStatement\",\n\t\t\t\t\t\t\"IfStatement\",\n\t\t\t\t\t\t\"LabeledStatement\",\n\t\t\t\t\t\t\"WithStatement\",\n\t\t\t\t\t];\n\n\t\t\t\tif (!allowedParentTypes.includes(parent.type)) {\n\t\t\t\t\treport(node);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Checks tokens from the head of this class body to the first MethodDefinition or the end of this class body.\n\t\t\t * @param {Node} node A ClassBody node to check.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tClassBody(node) {\n\t\t\t\tcheckForPartOfClassBody(sourceCode.getFirstToken(node, 1)); // 0 is `{`.\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Checks tokens from this MethodDefinition to the next MethodDefinition or the end of this class body.\n\t\t\t * @param {Node} node A MethodDefinition node of the start point.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\t\"MethodDefinition, PropertyDefinition, StaticBlock\"(node) {\n\t\t\t\tcheckForPartOfClassBody(sourceCode.getTokenAfter(node));\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Common utils for directives.\n *\n * This file contains only shared items for directives.\n * If you make a utility for rules, please see `../rules/utils/ast-utils.js`.\n *\n * @author gfyoung <https://github.com/gfyoung>\n */\n\"use strict\";\n\nconst directivesPattern =\n\t/^(eslint(?:-env|-enable|-disable(?:(?:-next)?-line)?)?|exported|globals?)(?:\\s|$)/u;\n\nmodule.exports = {\n\tdirectivesPattern,\n};\n", "/**\n * @fileoverview Rule to flag fall-through cases in switch statements.\n * @author Matt DuVall <http://mattduvall.com/>\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst { directivesPattern } = require(\"../shared/directives\");\nconst { isAnySegmentReachable } = require(\"./utils/code-path-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst DEFAULT_FALLTHROUGH_COMMENT = /falls?\\s?through/iu;\n\n/**\n * Checks whether or not a given comment string is really a fallthrough comment and not an ESLint directive.\n * @param {string} comment The comment string to check.\n * @param {RegExp} fallthroughCommentPattern The regular expression used for checking for fallthrough comments.\n * @returns {boolean} `true` if the comment string is truly a fallthrough comment.\n */\nfunction isFallThroughComment(comment, fallthroughCommentPattern) {\n\treturn (\n\t\tfallthroughCommentPattern.test(comment) &&\n\t\t!directivesPattern.test(comment.trim())\n\t);\n}\n\n/**\n * Checks whether or not a given case has a fallthrough comment.\n * @param {ASTNode} caseWhichFallsThrough SwitchCase node which falls through.\n * @param {ASTNode} subsequentCase The case after caseWhichFallsThrough.\n * @param {RuleContext} context A rule context which stores comments.\n * @param {RegExp} fallthroughCommentPattern A pattern to match comment to.\n * @returns {null | object} the comment if the case has a valid fallthrough comment, otherwise null\n */\nfunction getFallthroughComment(\n\tcaseWhichFallsThrough,\n\tsubsequentCase,\n\tcontext,\n\tfallthroughCommentPattern,\n) {\n\tconst sourceCode = context.sourceCode;\n\n\tif (\n\t\tcaseWhichFallsThrough.consequent.length === 1 &&\n\t\tcaseWhichFallsThrough.consequent[0].type === \"BlockStatement\"\n\t) {\n\t\tconst trailingCloseBrace = sourceCode.getLastToken(\n\t\t\tcaseWhichFallsThrough.consequent[0],\n\t\t);\n\t\tconst commentInBlock = sourceCode\n\t\t\t.getCommentsBefore(trailingCloseBrace)\n\t\t\t.pop();\n\n\t\tif (\n\t\t\tcommentInBlock &&\n\t\t\tisFallThroughComment(\n\t\t\t\tcommentInBlock.value,\n\t\t\t\tfallthroughCommentPattern,\n\t\t\t)\n\t\t) {\n\t\t\treturn commentInBlock;\n\t\t}\n\t}\n\n\tconst comment = sourceCode.getCommentsBefore(subsequentCase).pop();\n\n\tif (\n\t\tcomment &&\n\t\tisFallThroughComment(comment.value, fallthroughCommentPattern)\n\t) {\n\t\treturn comment;\n\t}\n\n\treturn null;\n}\n\n/**\n * Checks whether a node and a token are separated by blank lines\n * @param {ASTNode} node The node to check\n * @param {Token} token The token to compare against\n * @returns {boolean} `true` if there are blank lines between node and token\n */\nfunction hasBlankLinesBetween(node, token) {\n\treturn token.loc.start.line > node.loc.end.line + 1;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowEmptyCase: false,\n\t\t\t\treportUnusedFallthroughComment: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow fallthrough of `case` statements\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-fallthrough\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tcommentPattern: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t},\n\t\t\t\t\tallowEmptyCase: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\treportUnusedFallthroughComment: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\tunusedFallthroughComment:\n\t\t\t\t\"Found a comment that would permit fallthrough, but case cannot fall through.\",\n\t\t\tcase: \"Expected a 'break' statement before 'case'.\",\n\t\t\tdefault: \"Expected a 'break' statement before 'default'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst codePathSegments = [];\n\t\tlet currentCodePathSegments = new Set();\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst [\n\t\t\t{ allowEmptyCase, commentPattern, reportUnusedFallthroughComment },\n\t\t] = context.options;\n\t\tconst fallthroughCommentPattern = commentPattern\n\t\t\t? new RegExp(commentPattern, \"u\")\n\t\t\t: DEFAULT_FALLTHROUGH_COMMENT;\n\n\t\t/*\n\t\t * We need to use leading comments of the next SwitchCase node because\n\t\t * trailing comments is wrong if semicolons are omitted.\n\t\t */\n\t\tlet previousCase = null;\n\n\t\treturn {\n\t\t\tonCodePathStart() {\n\t\t\t\tcodePathSegments.push(currentCodePathSegments);\n\t\t\t\tcurrentCodePathSegments = new Set();\n\t\t\t},\n\n\t\t\tonCodePathEnd() {\n\t\t\t\tcurrentCodePathSegments = codePathSegments.pop();\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentStart(segment) {\n\t\t\t\tcurrentCodePathSegments.add(segment);\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentEnd(segment) {\n\t\t\t\tcurrentCodePathSegments.delete(segment);\n\t\t\t},\n\n\t\t\tonCodePathSegmentStart(segment) {\n\t\t\t\tcurrentCodePathSegments.add(segment);\n\t\t\t},\n\n\t\t\tonCodePathSegmentEnd(segment) {\n\t\t\t\tcurrentCodePathSegments.delete(segment);\n\t\t\t},\n\n\t\t\tSwitchCase(node) {\n\t\t\t\t/*\n\t\t\t\t * Checks whether or not there is a fallthrough comment.\n\t\t\t\t * And reports the previous fallthrough node if that does not exist.\n\t\t\t\t */\n\n\t\t\t\tif (previousCase && previousCase.node.parent === node.parent) {\n\t\t\t\t\tconst previousCaseFallthroughComment =\n\t\t\t\t\t\tgetFallthroughComment(\n\t\t\t\t\t\t\tpreviousCase.node,\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\tfallthroughCommentPattern,\n\t\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousCase.isFallthrough &&\n\t\t\t\t\t\t!previousCaseFallthroughComment\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tmessageId: node.test ? \"case\" : \"default\",\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (\n\t\t\t\t\t\treportUnusedFallthroughComment &&\n\t\t\t\t\t\t!previousCase.isSwitchExitReachable &&\n\t\t\t\t\t\tpreviousCaseFallthroughComment\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tmessageId: \"unusedFallthroughComment\",\n\t\t\t\t\t\t\tnode: previousCaseFallthroughComment,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpreviousCase = null;\n\t\t\t},\n\n\t\t\t\"SwitchCase:exit\"(node) {\n\t\t\t\tconst nextToken = sourceCode.getTokenAfter(node);\n\n\t\t\t\t/*\n\t\t\t\t * `reachable` meant fall through because statements preceded by\n\t\t\t\t * `break`, `return`, or `throw` are unreachable.\n\t\t\t\t * And allows empty cases and the last case.\n\t\t\t\t */\n\t\t\t\tconst isSwitchExitReachable = isAnySegmentReachable(\n\t\t\t\t\tcurrentCodePathSegments,\n\t\t\t\t);\n\t\t\t\tconst isFallthrough =\n\t\t\t\t\tisSwitchExitReachable &&\n\t\t\t\t\t(node.consequent.length > 0 ||\n\t\t\t\t\t\t(!allowEmptyCase &&\n\t\t\t\t\t\t\thasBlankLinesBetween(node, nextToken))) &&\n\t\t\t\t\tnode.parent.cases.at(-1) !== node;\n\n\t\t\t\tpreviousCase = {\n\t\t\t\t\tnode,\n\t\t\t\t\tisSwitchExitReachable,\n\t\t\t\t\tisFallthrough,\n\t\t\t\t};\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of a leading/trailing decimal point in a numeric literal\n * @author James Allardice\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-floating-decimal\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/no-floating-decimal\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow leading or trailing decimal points in numeric literals\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-floating-decimal\",\n\t\t},\n\n\t\tschema: [],\n\t\tfixable: \"code\",\n\t\tmessages: {\n\t\t\tleading: \"A leading decimal point can be confused with a dot.\",\n\t\t\ttrailing: \"A trailing decimal point can be confused with a dot.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tLiteral(node) {\n\t\t\t\tif (typeof node.value === \"number\") {\n\t\t\t\t\tif (node.raw.startsWith(\".\")) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"leading\",\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\tconst tokenBefore =\n\t\t\t\t\t\t\t\t\tsourceCode.getTokenBefore(node);\n\t\t\t\t\t\t\t\tconst needsSpaceBefore =\n\t\t\t\t\t\t\t\t\ttokenBefore &&\n\t\t\t\t\t\t\t\t\ttokenBefore.range[1] === node.range[0] &&\n\t\t\t\t\t\t\t\t\t!astUtils.canTokensBeAdjacent(\n\t\t\t\t\t\t\t\t\t\ttokenBefore,\n\t\t\t\t\t\t\t\t\t\t`0${node.raw}`,\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\treturn fixer.insertTextBefore(\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tneedsSpaceBefore ? \" 0\" : \"0\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tif (node.raw.indexOf(\".\") === node.raw.length - 1) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"trailing\",\n\t\t\t\t\t\t\tfix: fixer => fixer.insertTextAfter(node, \"0\"),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of function declaration identifiers as variables.\n * @author Ian Christian Myers\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow reassigning `function` declarations\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-func-assign\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tisAFunction: \"'{{name}}' is a function.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Reports a reference if is non initializer and writable.\n\t\t * @param {References} references Collection of reference to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkReference(references) {\n\t\t\tastUtils.getModifyingReferences(references).forEach(reference => {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: reference.identifier,\n\t\t\t\t\tmessageId: \"isAFunction\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tname: reference.identifier.name,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Finds and reports references that are non initializer and writable.\n\t\t * @param {Variable} variable A variable to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkVariable(variable) {\n\t\t\tif (variable.defs[0].type === \"FunctionName\") {\n\t\t\t\tcheckReference(variable.references);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks parameters of a given function node.\n\t\t * @param {ASTNode} node A function node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForFunction(node) {\n\t\t\tsourceCode.getDeclaredVariables(node).forEach(checkVariable);\n\t\t}\n\n\t\treturn {\n\t\t\tFunctionDeclaration: checkForFunction,\n\t\t\tFunctionExpression: checkForFunction,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow assignments to native objects or read-only global variables\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [{ exceptions: [] }],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow assignments to native objects or read-only global variables\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-global-assign\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\texceptions: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: { type: \"string\" },\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tglobalShouldNotBeModified:\n\t\t\t\t\"Read-only global '{{name}}' should not be modified.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst [{ exceptions }] = context.options;\n\n\t\t/**\n\t\t * Reports write references.\n\t\t * @param {Reference} reference A reference to check.\n\t\t * @param {number} index The index of the reference in the references.\n\t\t * @param {Reference[]} references The array that the reference belongs to.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkReference(reference, index, references) {\n\t\t\tconst identifier = reference.identifier;\n\n\t\t\tif (\n\t\t\t\treference.init === false &&\n\t\t\t\treference.isWrite() &&\n\t\t\t\t/*\n\t\t\t\t * Destructuring assignments can have multiple default value,\n\t\t\t\t * so possibly there are multiple writeable references for the same identifier.\n\t\t\t\t */\n\t\t\t\t(index === 0 || references[index - 1].identifier !== identifier)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: identifier,\n\t\t\t\t\tmessageId: \"globalShouldNotBeModified\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tname: identifier.name,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports write references if a given variable is read-only builtin.\n\t\t * @param {Variable} variable A variable to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkVariable(variable) {\n\t\t\tif (\n\t\t\t\tvariable.writeable === false &&\n\t\t\t\t!exceptions.includes(variable.name)\n\t\t\t) {\n\t\t\t\tvariable.references.forEach(checkReference);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tconst globalScope = sourceCode.getScope(node);\n\n\t\t\t\tglobalScope.variables.forEach(checkVariable);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to disallow the type conversions with shorter notations.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst INDEX_OF_PATTERN = /^(?:i|lastI)ndexOf$/u;\nconst ALLOWABLE_OPERATORS = [\"~\", \"!!\", \"+\", \"- -\", \"-\", \"*\"];\n\n/**\n * Checks whether or not a node is a double logical negating.\n * @param {ASTNode} node An UnaryExpression node to check.\n * @returns {boolean} Whether or not the node is a double logical negating.\n */\nfunction isDoubleLogicalNegating(node) {\n\treturn (\n\t\tnode.operator === \"!\" &&\n\t\tnode.argument.type === \"UnaryExpression\" &&\n\t\tnode.argument.operator === \"!\"\n\t);\n}\n\n/**\n * Checks whether or not a node is a binary negating of `.indexOf()` method calling.\n * @param {ASTNode} node An UnaryExpression node to check.\n * @returns {boolean} Whether or not the node is a binary negating of `.indexOf()` method calling.\n */\nfunction isBinaryNegatingOfIndexOf(node) {\n\tif (node.operator !== \"~\") {\n\t\treturn false;\n\t}\n\tconst callNode = astUtils.skipChainExpression(node.argument);\n\n\treturn (\n\t\tcallNode.type === \"CallExpression\" &&\n\t\tastUtils.isSpecificMemberAccess(callNode.callee, null, INDEX_OF_PATTERN)\n\t);\n}\n\n/**\n * Checks whether or not a node is a multiplying by one.\n * @param {BinaryExpression} node A BinaryExpression node to check.\n * @returns {boolean} Whether or not the node is a multiplying by one.\n */\nfunction isMultiplyByOne(node) {\n\treturn (\n\t\tnode.operator === \"*\" &&\n\t\t((node.left.type === \"Literal\" && node.left.value === 1) ||\n\t\t\t(node.right.type === \"Literal\" && node.right.value === 1))\n\t);\n}\n\n/**\n * Checks whether the given node logically represents multiplication by a fraction of `1`.\n * For example, `a * 1` in `a * 1 / b` is technically multiplication by `1`, but the\n * whole expression can be logically interpreted as `a * (1 / b)` rather than `(a * 1) / b`.\n * @param {BinaryExpression} node A BinaryExpression node to check.\n * @param {SourceCode} sourceCode The source code object.\n * @returns {boolean} Whether or not the node is a multiplying by a fraction of `1`.\n */\nfunction isMultiplyByFractionOfOne(node, sourceCode) {\n\treturn (\n\t\tnode.type === \"BinaryExpression\" &&\n\t\tnode.operator === \"*\" &&\n\t\tnode.right.type === \"Literal\" &&\n\t\tnode.right.value === 1 &&\n\t\tnode.parent.type === \"BinaryExpression\" &&\n\t\tnode.parent.operator === \"/\" &&\n\t\tnode.parent.left === node &&\n\t\t!astUtils.isParenthesised(sourceCode, node)\n\t);\n}\n\n/**\n * Checks whether the result of a node is numeric or not\n * @param {ASTNode} node The node to test\n * @returns {boolean} true if the node is a number literal or a `Number()`, `parseInt` or `parseFloat` call\n */\nfunction isNumeric(node) {\n\treturn (\n\t\t(node.type === \"Literal\" && typeof node.value === \"number\") ||\n\t\t(node.type === \"CallExpression\" &&\n\t\t\t(node.callee.name === \"Number\" ||\n\t\t\t\tnode.callee.name === \"parseInt\" ||\n\t\t\t\tnode.callee.name === \"parseFloat\"))\n\t);\n}\n\n/**\n * Returns the first non-numeric operand in a BinaryExpression. Designed to be\n * used from bottom to up since it walks up the BinaryExpression trees using\n * node.parent to find the result.\n * @param {BinaryExpression} node The BinaryExpression node to be walked up on\n * @returns {ASTNode|null} The first non-numeric item in the BinaryExpression tree or null\n */\nfunction getNonNumericOperand(node) {\n\tconst left = node.left,\n\t\tright = node.right;\n\n\tif (right.type !== \"BinaryExpression\" && !isNumeric(right)) {\n\t\treturn right;\n\t}\n\n\tif (left.type !== \"BinaryExpression\" && !isNumeric(left)) {\n\t\treturn left;\n\t}\n\n\treturn null;\n}\n\n/**\n * Checks whether an expression evaluates to a string.\n * @param {ASTNode} node node that represents the expression to check.\n * @returns {boolean} Whether or not the expression evaluates to a string.\n */\nfunction isStringType(node) {\n\treturn (\n\t\tastUtils.isStringLiteral(node) ||\n\t\t(node.type === \"CallExpression\" &&\n\t\t\tnode.callee.type === \"Identifier\" &&\n\t\t\tnode.callee.name === \"String\")\n\t);\n}\n\n/**\n * Checks whether a node is an empty string literal or not.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} Whether or not the passed in node is an\n * empty string literal or not.\n */\nfunction isEmptyString(node) {\n\treturn (\n\t\tastUtils.isStringLiteral(node) &&\n\t\t(node.value === \"\" ||\n\t\t\t(node.type === \"TemplateLiteral\" &&\n\t\t\t\tnode.quasis.length === 1 &&\n\t\t\t\tnode.quasis[0].value.cooked === \"\"))\n\t);\n}\n\n/**\n * Checks whether or not a node is a concatenating with an empty string.\n * @param {ASTNode} node A BinaryExpression node to check.\n * @returns {boolean} Whether or not the node is a concatenating with an empty string.\n */\nfunction isConcatWithEmptyString(node) {\n\treturn (\n\t\tnode.operator === \"+\" &&\n\t\t((isEmptyString(node.left) && !isStringType(node.right)) ||\n\t\t\t(isEmptyString(node.right) && !isStringType(node.left)))\n\t);\n}\n\n/**\n * Checks whether or not a node is appended with an empty string.\n * @param {ASTNode} node An AssignmentExpression node to check.\n * @returns {boolean} Whether or not the node is appended with an empty string.\n */\nfunction isAppendEmptyString(node) {\n\treturn node.operator === \"+=\" && isEmptyString(node.right);\n}\n\n/**\n * Returns the operand that is not an empty string from a flagged BinaryExpression.\n * @param {ASTNode} node The flagged BinaryExpression node to check.\n * @returns {ASTNode} The operand that is not an empty string from a flagged BinaryExpression.\n */\nfunction getNonEmptyOperand(node) {\n\treturn isEmptyString(node.left) ? node.right : node.left;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\thasSuggestions: true,\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow shorthand type conversions\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-implicit-coercion\",\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tboolean: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tnumber: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tstring: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tdisallowTemplateShorthand: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallow: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\tenum: ALLOWABLE_OPERATORS,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallow: [],\n\t\t\t\tboolean: true,\n\t\t\t\tdisallowTemplateShorthand: false,\n\t\t\t\tnumber: true,\n\t\t\t\tstring: true,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\timplicitCoercion:\n\t\t\t\t\"Unexpected implicit coercion encountered. Use `{{recommendation}}` instead.\",\n\t\t\tuseRecommendation: \"Use `{{recommendation}}` instead.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [options] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Reports an error and autofixes the node\n\t\t * @param {ASTNode} node An ast node to report the error on.\n\t\t * @param {string} recommendation The recommended code for the issue\n\t\t * @param {bool} shouldSuggest Whether this report should offer a suggestion\n\t\t * @param {bool} shouldFix Whether this report should fix the node\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node, recommendation, shouldSuggest, shouldFix) {\n\t\t\t/**\n\t\t\t * Fix function\n\t\t\t * @param {RuleFixer} fixer The fixer to fix.\n\t\t\t * @returns {Fix} The fix object.\n\t\t\t */\n\t\t\tfunction fix(fixer) {\n\t\t\t\tconst tokenBefore = sourceCode.getTokenBefore(node);\n\n\t\t\t\tif (\n\t\t\t\t\ttokenBefore?.range[1] === node.range[0] &&\n\t\t\t\t\t!astUtils.canTokensBeAdjacent(tokenBefore, recommendation)\n\t\t\t\t) {\n\t\t\t\t\treturn fixer.replaceText(node, ` ${recommendation}`);\n\t\t\t\t}\n\n\t\t\t\treturn fixer.replaceText(node, recommendation);\n\t\t\t}\n\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"implicitCoercion\",\n\t\t\t\tdata: { recommendation },\n\t\t\t\tfix(fixer) {\n\t\t\t\t\tif (!shouldFix) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fix(fixer);\n\t\t\t\t},\n\t\t\t\tsuggest: [\n\t\t\t\t\t{\n\t\t\t\t\t\tmessageId: \"useRecommendation\",\n\t\t\t\t\t\tdata: { recommendation },\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tif (shouldFix || !shouldSuggest) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn fix(fixer);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tUnaryExpression(node) {\n\t\t\t\tlet operatorAllowed;\n\n\t\t\t\t// !!foo\n\t\t\t\toperatorAllowed = options.allow.includes(\"!!\");\n\t\t\t\tif (\n\t\t\t\t\t!operatorAllowed &&\n\t\t\t\t\toptions.boolean &&\n\t\t\t\t\tisDoubleLogicalNegating(node)\n\t\t\t\t) {\n\t\t\t\t\tconst recommendation = `Boolean(${sourceCode.getText(node.argument.argument)})`;\n\t\t\t\t\tconst variable = astUtils.getVariableByName(\n\t\t\t\t\t\tsourceCode.getScope(node),\n\t\t\t\t\t\t\"Boolean\",\n\t\t\t\t\t);\n\t\t\t\t\tconst booleanExists = variable?.identifiers.length === 0;\n\n\t\t\t\t\treport(node, recommendation, true, booleanExists);\n\t\t\t\t}\n\n\t\t\t\t// ~foo.indexOf(bar)\n\t\t\t\toperatorAllowed = options.allow.includes(\"~\");\n\t\t\t\tif (\n\t\t\t\t\t!operatorAllowed &&\n\t\t\t\t\toptions.boolean &&\n\t\t\t\t\tisBinaryNegatingOfIndexOf(node)\n\t\t\t\t) {\n\t\t\t\t\t// `foo?.indexOf(bar) !== -1` will be true (== found) if the `foo` is nullish. So use `>= 0` in that case.\n\t\t\t\t\tconst comparison =\n\t\t\t\t\t\tnode.argument.type === \"ChainExpression\"\n\t\t\t\t\t\t\t? \">= 0\"\n\t\t\t\t\t\t\t: \"!== -1\";\n\t\t\t\t\tconst recommendation = `${sourceCode.getText(node.argument)} ${comparison}`;\n\n\t\t\t\t\treport(node, recommendation, false, false);\n\t\t\t\t}\n\n\t\t\t\t// +foo\n\t\t\t\toperatorAllowed = options.allow.includes(\"+\");\n\t\t\t\tif (\n\t\t\t\t\t!operatorAllowed &&\n\t\t\t\t\toptions.number &&\n\t\t\t\t\tnode.operator === \"+\" &&\n\t\t\t\t\t!isNumeric(node.argument)\n\t\t\t\t) {\n\t\t\t\t\tconst recommendation = `Number(${sourceCode.getText(node.argument)})`;\n\n\t\t\t\t\treport(node, recommendation, true, false);\n\t\t\t\t}\n\n\t\t\t\t// -(-foo)\n\t\t\t\toperatorAllowed = options.allow.includes(\"- -\");\n\t\t\t\tif (\n\t\t\t\t\t!operatorAllowed &&\n\t\t\t\t\toptions.number &&\n\t\t\t\t\tnode.operator === \"-\" &&\n\t\t\t\t\tnode.argument.type === \"UnaryExpression\" &&\n\t\t\t\t\tnode.argument.operator === \"-\" &&\n\t\t\t\t\t!isNumeric(node.argument.argument)\n\t\t\t\t) {\n\t\t\t\t\tconst recommendation = `Number(${sourceCode.getText(node.argument.argument)})`;\n\n\t\t\t\t\treport(node, recommendation, true, false);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Use `:exit` to prevent double reporting\n\t\t\t\"BinaryExpression:exit\"(node) {\n\t\t\t\tlet operatorAllowed;\n\n\t\t\t\t// 1 * foo\n\t\t\t\toperatorAllowed = options.allow.includes(\"*\");\n\t\t\t\tconst nonNumericOperand =\n\t\t\t\t\t!operatorAllowed &&\n\t\t\t\t\toptions.number &&\n\t\t\t\t\tisMultiplyByOne(node) &&\n\t\t\t\t\t!isMultiplyByFractionOfOne(node, sourceCode) &&\n\t\t\t\t\tgetNonNumericOperand(node);\n\n\t\t\t\tif (nonNumericOperand) {\n\t\t\t\t\tconst recommendation = `Number(${sourceCode.getText(nonNumericOperand)})`;\n\n\t\t\t\t\treport(node, recommendation, true, false);\n\t\t\t\t}\n\n\t\t\t\t// foo - 0\n\t\t\t\toperatorAllowed = options.allow.includes(\"-\");\n\t\t\t\tif (\n\t\t\t\t\t!operatorAllowed &&\n\t\t\t\t\toptions.number &&\n\t\t\t\t\tnode.operator === \"-\" &&\n\t\t\t\t\tnode.right.type === \"Literal\" &&\n\t\t\t\t\tnode.right.value === 0 &&\n\t\t\t\t\t!isNumeric(node.left)\n\t\t\t\t) {\n\t\t\t\t\tconst recommendation = `Number(${sourceCode.getText(node.left)})`;\n\n\t\t\t\t\treport(node, recommendation, true, false);\n\t\t\t\t}\n\n\t\t\t\t// \"\" + foo\n\t\t\t\toperatorAllowed = options.allow.includes(\"+\");\n\t\t\t\tif (\n\t\t\t\t\t!operatorAllowed &&\n\t\t\t\t\toptions.string &&\n\t\t\t\t\tisConcatWithEmptyString(node)\n\t\t\t\t) {\n\t\t\t\t\tconst recommendation = `String(${sourceCode.getText(getNonEmptyOperand(node))})`;\n\n\t\t\t\t\treport(node, recommendation, true, false);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tAssignmentExpression(node) {\n\t\t\t\t// foo += \"\"\n\t\t\t\tconst operatorAllowed = options.allow.includes(\"+\");\n\n\t\t\t\tif (\n\t\t\t\t\t!operatorAllowed &&\n\t\t\t\t\toptions.string &&\n\t\t\t\t\tisAppendEmptyString(node)\n\t\t\t\t) {\n\t\t\t\t\tconst code = sourceCode.getText(getNonEmptyOperand(node));\n\t\t\t\t\tconst recommendation = `${code} = String(${code})`;\n\n\t\t\t\t\treport(node, recommendation, true, false);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tTemplateLiteral(node) {\n\t\t\t\tif (!options.disallowTemplateShorthand) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// tag`${foo}`\n\t\t\t\tif (node.parent.type === \"TaggedTemplateExpression\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// `` or `${foo}${bar}`\n\t\t\t\tif (node.expressions.length !== 1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//  `prefix${foo}`\n\t\t\t\tif (node.quasis[0].value.cooked !== \"\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//  `${foo}postfix`\n\t\t\t\tif (node.quasis[1].value.cooked !== \"\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// if the expression is already a string, then this isn't a coercion\n\t\t\t\tif (isStringType(node.expressions[0])) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst code = sourceCode.getText(node.expressions[0]);\n\t\t\t\tconst recommendation = `String(${code})`;\n\n\t\t\t\treport(node, recommendation, true, false);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to check for implicit global variables, functions and classes.\n * @author Joshua Peek\n */\n\n\"use strict\";\n\nconst ASSIGNMENT_NODES = new Set([\n\t\"AssignmentExpression\",\n\t\"ForInStatement\",\n\t\"ForOfStatement\",\n]);\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tlexicalBindings: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow declarations in the global scope\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-implicit-globals\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tlexicalBindings: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tglobalNonLexicalBinding:\n\t\t\t\t\"Unexpected {{kind}} declaration in the global scope, wrap in an IIFE for a local variable, assign as global property for a global variable.\",\n\t\t\tglobalLexicalBinding:\n\t\t\t\t\"Unexpected {{kind}} declaration in the global scope, wrap in a block or in an IIFE.\",\n\t\t\tglobalVariableLeak:\n\t\t\t\t\"Global variable leak, declare the variable if it is intended to be local.\",\n\t\t\tassignmentToReadonlyGlobal:\n\t\t\t\t\"Unexpected assignment to read-only global variable.\",\n\t\t\tredeclarationOfReadonlyGlobal:\n\t\t\t\t\"Unexpected redeclaration of read-only global variable.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ lexicalBindings: checkLexicalBindings }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Reports the node.\n\t\t * @param {ASTNode} node Node to report.\n\t\t * @param {string} messageId Id of the message to report.\n\t\t * @param {string|undefined} kind Declaration kind, can be 'var', 'const', 'let', function or class.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node, messageId, kind) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId,\n\t\t\t\tdata: {\n\t\t\t\t\tkind,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\n\t\t\t\tscope.variables.forEach(variable => {\n\t\t\t\t\t// Only ESLint global variables have the `writable` key.\n\t\t\t\t\tconst isReadonlyEslintGlobalVariable =\n\t\t\t\t\t\tvariable.writeable === false;\n\t\t\t\t\tconst isWritableEslintGlobalVariable =\n\t\t\t\t\t\tvariable.writeable === true;\n\n\t\t\t\t\tif (isWritableEslintGlobalVariable) {\n\t\t\t\t\t\t// Everything is allowed with writable ESLint global variables.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Variables exported by \"exported\" block comments\n\t\t\t\t\tif (variable.eslintExported) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvariable.defs.forEach(def => {\n\t\t\t\t\t\tconst defNode = def.node;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tdef.type === \"FunctionName\" ||\n\t\t\t\t\t\t\t(def.type === \"Variable\" &&\n\t\t\t\t\t\t\t\tdef.parent.kind === \"var\")\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (isReadonlyEslintGlobalVariable) {\n\t\t\t\t\t\t\t\treport(\n\t\t\t\t\t\t\t\t\tdefNode,\n\t\t\t\t\t\t\t\t\t\"redeclarationOfReadonlyGlobal\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treport(\n\t\t\t\t\t\t\t\t\tdefNode,\n\t\t\t\t\t\t\t\t\t\"globalNonLexicalBinding\",\n\t\t\t\t\t\t\t\t\tdef.type === \"FunctionName\"\n\t\t\t\t\t\t\t\t\t\t? \"function\"\n\t\t\t\t\t\t\t\t\t\t: `'${def.parent.kind}'`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (checkLexicalBindings) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tdef.type === \"ClassName\" ||\n\t\t\t\t\t\t\t\t(def.type === \"Variable\" &&\n\t\t\t\t\t\t\t\t\t(def.parent.kind === \"let\" ||\n\t\t\t\t\t\t\t\t\t\tdef.parent.kind === \"const\"))\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tif (isReadonlyEslintGlobalVariable) {\n\t\t\t\t\t\t\t\t\treport(\n\t\t\t\t\t\t\t\t\t\tdefNode,\n\t\t\t\t\t\t\t\t\t\t\"redeclarationOfReadonlyGlobal\",\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treport(\n\t\t\t\t\t\t\t\t\t\tdefNode,\n\t\t\t\t\t\t\t\t\t\t\"globalLexicalBinding\",\n\t\t\t\t\t\t\t\t\t\tdef.type === \"ClassName\"\n\t\t\t\t\t\t\t\t\t\t\t? \"class\"\n\t\t\t\t\t\t\t\t\t\t\t: `'${def.parent.kind}'`,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tisReadonlyEslintGlobalVariable &&\n\t\t\t\t\t\tvariable.defs.length === 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tvariable.references.forEach(reference => {\n\t\t\t\t\t\t\tif (reference.isWrite() && !reference.isRead()) {\n\t\t\t\t\t\t\t\tlet assignmentParent =\n\t\t\t\t\t\t\t\t\treference.identifier.parent;\n\n\t\t\t\t\t\t\t\twhile (\n\t\t\t\t\t\t\t\t\tassignmentParent &&\n\t\t\t\t\t\t\t\t\t!ASSIGNMENT_NODES.has(assignmentParent.type)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tassignmentParent = assignmentParent.parent;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treport(\n\t\t\t\t\t\t\t\t\tassignmentParent ?? reference.identifier,\n\t\t\t\t\t\t\t\t\t\"assignmentToReadonlyGlobal\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Undeclared assigned variables.\n\t\t\t\tscope.implicit.variables.forEach(variable => {\n\t\t\t\t\t// def.node is an AssignmentExpression, ForInStatement or ForOfStatement.\n\t\t\t\t\tvariable.defs.forEach(def => {\n\t\t\t\t\t\treport(def.node, \"globalVariableLeak\");\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of implied eval via setTimeout and setInterval\n * @author James Allardice\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst { getStaticValue } = require(\"@eslint-community/eslint-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow the use of `eval()`-like methods\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-implied-eval\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\timpliedEval:\n\t\t\t\t\"Implied eval. Consider passing a function instead of a string.\",\n\t\t\texecScript: \"Implied eval. Do not use execScript().\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst GLOBAL_CANDIDATES = Object.freeze([\n\t\t\t\"global\",\n\t\t\t\"window\",\n\t\t\t\"globalThis\",\n\t\t\t\"self\",\n\t\t]);\n\t\tconst EVAL_LIKE_FUNC_PATTERN =\n\t\t\t/^(?:set(?:Interval|Timeout)|execScript)$/u;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Checks whether a node is evaluated as a string or not.\n\t\t * @param {ASTNode} node A node to check.\n\t\t * @returns {boolean} True if the node is evaluated as a string.\n\t\t */\n\t\tfunction isEvaluatedString(node) {\n\t\t\tif (\n\t\t\t\t(node.type === \"Literal\" && typeof node.value === \"string\") ||\n\t\t\t\tnode.type === \"TemplateLiteral\"\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (node.type === \"BinaryExpression\" && node.operator === \"+\") {\n\t\t\t\treturn (\n\t\t\t\t\tisEvaluatedString(node.left) ||\n\t\t\t\t\tisEvaluatedString(node.right)\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Reports if the `CallExpression` node has evaluated argument.\n\t\t * @param {ASTNode} node A CallExpression to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportImpliedEvalCallExpression(node) {\n\t\t\tconst [firstArgument] = node.arguments;\n\n\t\t\tif (firstArgument) {\n\t\t\t\tconst staticValue = getStaticValue(\n\t\t\t\t\tfirstArgument,\n\t\t\t\t\tsourceCode.getScope(node),\n\t\t\t\t);\n\t\t\t\tconst isStaticString =\n\t\t\t\t\tstaticValue && typeof staticValue.value === \"string\";\n\t\t\t\tconst isString =\n\t\t\t\t\tisStaticString || isEvaluatedString(firstArgument);\n\n\t\t\t\tif (isString) {\n\t\t\t\t\tconst calleeName =\n\t\t\t\t\t\tnode.callee.type === \"Identifier\"\n\t\t\t\t\t\t\t? node.callee.name\n\t\t\t\t\t\t\t: astUtils.getStaticPropertyName(node.callee);\n\t\t\t\t\tconst isExecScript = calleeName === \"execScript\";\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: isExecScript ? \"execScript\" : \"impliedEval\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports calls of `implied eval` via the global references.\n\t\t * @param {Variable} globalVar A global variable to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportImpliedEvalViaGlobal(globalVar) {\n\t\t\tconst { references, name } = globalVar;\n\n\t\t\treferences.forEach(ref => {\n\t\t\t\tconst identifier = ref.identifier;\n\t\t\t\tlet node = identifier.parent;\n\n\t\t\t\twhile (astUtils.isSpecificMemberAccess(node, null, name)) {\n\t\t\t\t\tnode = node.parent;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tastUtils.isSpecificMemberAccess(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tEVAL_LIKE_FUNC_PATTERN,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tconst calleeNode =\n\t\t\t\t\t\tnode.parent.type === \"ChainExpression\"\n\t\t\t\t\t\t\t? node.parent\n\t\t\t\t\t\t\t: node;\n\t\t\t\t\tconst parent = calleeNode.parent;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tparent.type === \"CallExpression\" &&\n\t\t\t\t\t\tparent.callee === calleeNode\n\t\t\t\t\t) {\n\t\t\t\t\t\treportImpliedEvalCallExpression(parent);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tCallExpression(node) {\n\t\t\t\tif (\n\t\t\t\t\tastUtils.isSpecificId(\n\t\t\t\t\t\tnode.callee,\n\t\t\t\t\t\tEVAL_LIKE_FUNC_PATTERN,\n\t\t\t\t\t) &&\n\t\t\t\t\tsourceCode.isGlobalReference(node.callee)\n\t\t\t\t) {\n\t\t\t\t\treportImpliedEvalCallExpression(node);\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\tconst globalScope = sourceCode.getScope(node);\n\n\t\t\t\tGLOBAL_CANDIDATES.map(candidate =>\n\t\t\t\t\tastUtils.getVariableByName(globalScope, candidate),\n\t\t\t\t)\n\t\t\t\t\t.filter(\n\t\t\t\t\t\tglobalVar => !!globalVar && globalVar.defs.length === 0,\n\t\t\t\t\t)\n\t\t\t\t\t.forEach(reportImpliedEvalViaGlobal);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag updates of imported bindings.\n * @author Toru Nagashima <https://github.com/mysticatea>\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst { findVariable } = require(\"@eslint-community/eslint-utils\");\nconst astUtils = require(\"./utils/ast-utils\");\n\nconst WellKnownMutationFunctions = {\n\tObject: /^(?:assign|definePropert(?:y|ies)|freeze|setPrototypeOf)$/u,\n\tReflect: /^(?:(?:define|delete)Property|set(?:PrototypeOf)?)$/u,\n};\n\n/**\n * Check if a given node is LHS of an assignment node.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} `true` if the node is LHS.\n */\nfunction isAssignmentLeft(node) {\n\tconst { parent } = node;\n\n\treturn (\n\t\t(parent.type === \"AssignmentExpression\" && parent.left === node) ||\n\t\t// Destructuring assignments\n\t\tparent.type === \"ArrayPattern\" ||\n\t\t(parent.type === \"Property\" &&\n\t\t\tparent.value === node &&\n\t\t\tparent.parent.type === \"ObjectPattern\") ||\n\t\tparent.type === \"RestElement\" ||\n\t\t(parent.type === \"AssignmentPattern\" && parent.left === node)\n\t);\n}\n\n/**\n * Check if a given node is the operand of mutation unary operator.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} `true` if the node is the operand of mutation unary operator.\n */\nfunction isOperandOfMutationUnaryOperator(node) {\n\tconst argumentNode =\n\t\tnode.parent.type === \"ChainExpression\" ? node.parent : node;\n\tconst { parent } = argumentNode;\n\n\treturn (\n\t\t(parent.type === \"UpdateExpression\" &&\n\t\t\tparent.argument === argumentNode) ||\n\t\t(parent.type === \"UnaryExpression\" &&\n\t\t\tparent.operator === \"delete\" &&\n\t\t\tparent.argument === argumentNode)\n\t);\n}\n\n/**\n * Check if a given node is the iteration variable of `for-in`/`for-of` syntax.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} `true` if the node is the iteration variable.\n */\nfunction isIterationVariable(node) {\n\tconst { parent } = node;\n\n\treturn (\n\t\t(parent.type === \"ForInStatement\" && parent.left === node) ||\n\t\t(parent.type === \"ForOfStatement\" && parent.left === node)\n\t);\n}\n\n/**\n * Check if a given node is at the first argument of a well-known mutation function.\n * - `Object.assign`\n * - `Object.defineProperty`\n * - `Object.defineProperties`\n * - `Object.freeze`\n * - `Object.setPrototypeOf`\n * - `Reflect.defineProperty`\n * - `Reflect.deleteProperty`\n * - `Reflect.set`\n * - `Reflect.setPrototypeOf`\n * @param {ASTNode} node The node to check.\n * @param {Scope} scope A `escope.Scope` object to find variable (whichever).\n * @returns {boolean} `true` if the node is at the first argument of a well-known mutation function.\n */\nfunction isArgumentOfWellKnownMutationFunction(node, scope) {\n\tconst { parent } = node;\n\n\tif (parent.type !== \"CallExpression\" || parent.arguments[0] !== node) {\n\t\treturn false;\n\t}\n\tconst callee = astUtils.skipChainExpression(parent.callee);\n\n\tif (\n\t\t!astUtils.isSpecificMemberAccess(\n\t\t\tcallee,\n\t\t\t\"Object\",\n\t\t\tWellKnownMutationFunctions.Object,\n\t\t) &&\n\t\t!astUtils.isSpecificMemberAccess(\n\t\t\tcallee,\n\t\t\t\"Reflect\",\n\t\t\tWellKnownMutationFunctions.Reflect,\n\t\t)\n\t) {\n\t\treturn false;\n\t}\n\tconst variable = findVariable(scope, callee.object);\n\n\treturn variable !== null && variable.scope.type === \"global\";\n}\n\n/**\n * Check if the identifier node is placed at to update members.\n * @param {ASTNode} id The Identifier node to check.\n * @param {Scope} scope A `escope.Scope` object to find variable (whichever).\n * @returns {boolean} `true` if the member of `id` was updated.\n */\nfunction isMemberWrite(id, scope) {\n\tconst { parent } = id;\n\n\treturn (\n\t\t(parent.type === \"MemberExpression\" &&\n\t\t\tparent.object === id &&\n\t\t\t(isAssignmentLeft(parent) ||\n\t\t\t\tisOperandOfMutationUnaryOperator(parent) ||\n\t\t\t\tisIterationVariable(parent))) ||\n\t\tisArgumentOfWellKnownMutationFunction(id, scope)\n\t);\n}\n\n/**\n * Get the mutation node.\n * @param {ASTNode} id The Identifier node to get.\n * @returns {ASTNode} The mutation node.\n */\nfunction getWriteNode(id) {\n\tlet node = id.parent;\n\n\twhile (\n\t\tnode &&\n\t\tnode.type !== \"AssignmentExpression\" &&\n\t\tnode.type !== \"UpdateExpression\" &&\n\t\tnode.type !== \"UnaryExpression\" &&\n\t\tnode.type !== \"CallExpression\" &&\n\t\tnode.type !== \"ForInStatement\" &&\n\t\tnode.type !== \"ForOfStatement\"\n\t) {\n\t\tnode = node.parent;\n\t}\n\n\treturn node || id;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow assigning to imported bindings\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-import-assign\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\treadonly: \"'{{name}}' is read-only.\",\n\t\t\treadonlyMember: \"The members of '{{name}}' are read-only.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tImportDeclaration(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\n\t\t\t\tfor (const variable of sourceCode.getDeclaredVariables(node)) {\n\t\t\t\t\tconst shouldCheckMembers = variable.defs.some(\n\t\t\t\t\t\td => d.node.type === \"ImportNamespaceSpecifier\",\n\t\t\t\t\t);\n\t\t\t\t\tlet prevIdNode = null;\n\n\t\t\t\t\tfor (const reference of variable.references) {\n\t\t\t\t\t\tconst idNode = reference.identifier;\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * AssignmentPattern (e.g. `[a = 0] = b`) makes two write\n\t\t\t\t\t\t * references for the same identifier. This should skip\n\t\t\t\t\t\t * the one of the two in order to prevent redundant reports.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (idNode === prevIdNode) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprevIdNode = idNode;\n\n\t\t\t\t\t\tif (reference.isWrite()) {\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode: getWriteNode(idNode),\n\t\t\t\t\t\t\t\tmessageId: \"readonly\",\n\t\t\t\t\t\t\t\tdata: { name: idNode.name },\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tshouldCheckMembers &&\n\t\t\t\t\t\t\tisMemberWrite(idNode, scope)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode: getWriteNode(idNode),\n\t\t\t\t\t\t\t\tmessageId: \"readonlyMember\",\n\t\t\t\t\t\t\t\tdata: { name: idNode.name },\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Enforces or disallows inline comments.\n * @author Greg Cochard\n */\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [{}],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow inline comments after code\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-inline-comments\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tignorePattern: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedInlineComment: \"Unexpected comment inline with code.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst [{ ignorePattern }] = context.options;\n\t\tconst customIgnoreRegExp =\n\t\t\tignorePattern && new RegExp(ignorePattern, \"u\");\n\n\t\t/**\n\t\t * Will check that comments are not on lines starting with or ending with code\n\t\t * @param {ASTNode} node The comment node to check\n\t\t * @private\n\t\t * @returns {void}\n\t\t */\n\t\tfunction testCodeAroundComment(node) {\n\t\t\tconst startLine = String(sourceCode.lines[node.loc.start.line - 1]),\n\t\t\t\tendLine = String(sourceCode.lines[node.loc.end.line - 1]),\n\t\t\t\tpreamble = startLine.slice(0, node.loc.start.column).trim(),\n\t\t\t\tpostamble = endLine.slice(node.loc.end.column).trim(),\n\t\t\t\tisPreambleEmpty = !preamble,\n\t\t\t\tisPostambleEmpty = !postamble;\n\n\t\t\t// Nothing on both sides\n\t\t\tif (isPreambleEmpty && isPostambleEmpty) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Matches the ignore pattern\n\t\t\tif (customIgnoreRegExp && customIgnoreRegExp.test(node.value)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// JSX Exception\n\t\t\tif (\n\t\t\t\t(isPreambleEmpty || preamble === \"{\") &&\n\t\t\t\t(isPostambleEmpty || postamble === \"}\")\n\t\t\t) {\n\t\t\t\tconst enclosingNode = sourceCode.getNodeByRangeIndex(\n\t\t\t\t\tnode.range[0],\n\t\t\t\t);\n\n\t\t\t\tif (\n\t\t\t\t\tenclosingNode &&\n\t\t\t\t\tenclosingNode.type === \"JSXEmptyExpression\"\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Don't report ESLint directive comments\n\t\t\tif (astUtils.isDirectiveComment(node)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"unexpectedInlineComment\",\n\t\t\t});\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram() {\n\t\t\t\tsourceCode\n\t\t\t\t\t.getAllComments()\n\t\t\t\t\t.filter(token => token.type !== \"Shebang\")\n\t\t\t\t\t.forEach(testCodeAroundComment);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce declarations in program or function body root.\n * @author Brandon Mills\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\nconst validParent = new Set([\n\t\"Program\",\n\t\"StaticBlock\",\n\t\"ExportNamedDeclaration\",\n\t\"ExportDefaultDeclaration\",\n]);\nconst validBlockStatementParent = new Set([\n\t\"FunctionDeclaration\",\n\t\"FunctionExpression\",\n\t\"ArrowFunctionExpression\",\n]);\n\n/**\n * Finds the nearest enclosing context where this rule allows declarations and returns its description.\n * @param {ASTNode} node Node to search from.\n * @returns {string} Description. One of \"program\", \"function body\", \"class static block body\".\n */\nfunction getAllowedBodyDescription(node) {\n\tlet { parent } = node;\n\n\twhile (parent) {\n\t\tif (parent.type === \"StaticBlock\") {\n\t\t\treturn \"class static block body\";\n\t\t}\n\n\t\tif (astUtils.isFunction(parent)) {\n\t\t\treturn \"function body\";\n\t\t}\n\n\t\t({ parent } = parent);\n\t}\n\n\treturn \"program\";\n}\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [\"functions\", { blockScopedFunctions: \"allow\" }],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow variable or `function` declarations in nested blocks\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-inner-declarations\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"functions\", \"both\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tblockScopedFunctions: {\n\t\t\t\t\t\tenum: [\"allow\", \"disallow\"],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tmoveDeclToRoot: \"Move {{type}} declaration to {{body}} root.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst both = context.options[0] === \"both\";\n\t\tconst { blockScopedFunctions } = context.options[1];\n\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst ecmaVersion = context.languageOptions.ecmaVersion;\n\n\t\t/**\n\t\t * Ensure that a given node is at a program or function body's root.\n\t\t * @param {ASTNode} node Declaration node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction check(node) {\n\t\t\tconst parent = node.parent;\n\n\t\t\tif (\n\t\t\t\tparent.type === \"BlockStatement\" &&\n\t\t\t\tvalidBlockStatementParent.has(parent.parent.type)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (validParent.has(parent.type)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"moveDeclToRoot\",\n\t\t\t\tdata: {\n\t\t\t\t\ttype:\n\t\t\t\t\t\tnode.type === \"FunctionDeclaration\"\n\t\t\t\t\t\t\t? \"function\"\n\t\t\t\t\t\t\t: \"variable\",\n\t\t\t\t\tbody: getAllowedBodyDescription(node),\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tFunctionDeclaration(node) {\n\t\t\t\tconst isInStrictCode = sourceCode.getScope(node).upper.isStrict;\n\n\t\t\t\tif (\n\t\t\t\t\tblockScopedFunctions === \"allow\" &&\n\t\t\t\t\tecmaVersion >= 2015 &&\n\t\t\t\t\tisInStrictCode\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcheck(node);\n\t\t\t},\n\t\t\tVariableDeclaration(node) {\n\t\t\t\tif (both && node.kind === \"var\") {\n\t\t\t\t\tcheck(node);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Validate strings passed to the RegExp constructor\n * @author Michael Ficarra\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst RegExpValidator = require(\"@eslint-community/regexpp\").RegExpValidator;\nconst validator = new RegExpValidator();\nconst validFlags = \"dgimsuvy\";\nconst undefined1 = void 0;\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [{}],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow invalid regular expression strings in `RegExp` constructors\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-invalid-regexp\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowConstructorFlags: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tregexMessage: \"{{message}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ allowConstructorFlags }] = context.options;\n\t\tlet allowedFlags = [];\n\n\t\tif (allowConstructorFlags) {\n\t\t\tconst temp = allowConstructorFlags\n\t\t\t\t.join(\"\")\n\t\t\t\t.replace(new RegExp(`[${validFlags}]`, \"gu\"), \"\");\n\n\t\t\tif (temp) {\n\t\t\t\tallowedFlags = [...new Set(temp)];\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports error with the provided message.\n\t\t * @param {ASTNode} node The node holding the invalid RegExp\n\t\t * @param {string} message The message to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node, message) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"regexMessage\",\n\t\t\t\tdata: { message },\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Check if node is a string\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {boolean} True if its a string\n\t\t * @private\n\t\t */\n\t\tfunction isString(node) {\n\t\t\treturn (\n\t\t\t\tnode &&\n\t\t\t\tnode.type === \"Literal\" &&\n\t\t\t\ttypeof node.value === \"string\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Gets flags of a regular expression created by the given `RegExp()` or `new RegExp()` call\n\t\t * Examples:\n\t\t *     new RegExp(\".\")         // => \"\"\n\t\t *     new RegExp(\".\", \"gu\")   // => \"gu\"\n\t\t *     new RegExp(\".\", flags)  // => null\n\t\t * @param {ASTNode} node `CallExpression` or `NewExpression` node\n\t\t * @returns {string|null} flags if they can be determined, `null` otherwise\n\t\t * @private\n\t\t */\n\t\tfunction getFlags(node) {\n\t\t\tif (node.arguments.length < 2) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\tif (isString(node.arguments[1])) {\n\t\t\t\treturn node.arguments[1].value;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\t/**\n\t\t * Check syntax error in a given pattern.\n\t\t * @param {string} pattern The RegExp pattern to validate.\n\t\t * @param {Object} flags The RegExp flags to validate.\n\t\t * @param {boolean} [flags.unicode] The Unicode flag.\n\t\t * @param {boolean} [flags.unicodeSets] The UnicodeSets flag.\n\t\t * @returns {string|null} The syntax error.\n\t\t */\n\t\tfunction validateRegExpPattern(pattern, flags) {\n\t\t\ttry {\n\t\t\t\tvalidator.validatePattern(\n\t\t\t\t\tpattern,\n\t\t\t\t\tundefined1,\n\t\t\t\t\tundefined1,\n\t\t\t\t\tflags,\n\t\t\t\t);\n\t\t\t\treturn null;\n\t\t\t} catch (err) {\n\t\t\t\treturn err.message;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check syntax error in a given flags.\n\t\t * @param {string|null} flags The RegExp flags to validate.\n\t\t * @param {string|null} flagsToCheck The RegExp invalid flags.\n\t\t * @param {string} allFlags all valid and allowed flags.\n\t\t * @returns {string|null} The syntax error.\n\t\t */\n\t\tfunction validateRegExpFlags(flags, flagsToCheck, allFlags) {\n\t\t\tconst duplicateFlags = [];\n\n\t\t\tif (typeof flagsToCheck === \"string\") {\n\t\t\t\tfor (const flag of flagsToCheck) {\n\t\t\t\t\tif (allFlags.includes(flag)) {\n\t\t\t\t\t\tduplicateFlags.push(flag);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * `regexpp` checks the combination of `u` and `v` flags when parsing `Pattern` according to `ecma262`,\n\t\t\t * but this rule may check only the flag when the pattern is unidentifiable, so check it here.\n\t\t\t * https://tc39.es/ecma262/multipage/text-processing.html#sec-parsepattern\n\t\t\t */\n\t\t\tif (flags && flags.includes(\"u\") && flags.includes(\"v\")) {\n\t\t\t\treturn \"Regex 'u' and 'v' flags cannot be used together\";\n\t\t\t}\n\n\t\t\tif (duplicateFlags.length > 0) {\n\t\t\t\treturn `Duplicate flags ('${duplicateFlags.join(\"\")}') supplied to RegExp constructor`;\n\t\t\t}\n\n\t\t\tif (!flagsToCheck) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn `Invalid flags supplied to RegExp constructor '${flagsToCheck}'`;\n\t\t}\n\n\t\treturn {\n\t\t\t\"CallExpression, NewExpression\"(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.callee.type !== \"Identifier\" ||\n\t\t\t\t\tnode.callee.name !== \"RegExp\"\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst flags = getFlags(node);\n\t\t\t\tlet flagsToCheck = flags;\n\t\t\t\tconst allFlags =\n\t\t\t\t\tallowedFlags.length > 0\n\t\t\t\t\t\t? validFlags.split(\"\").concat(allowedFlags)\n\t\t\t\t\t\t: validFlags.split(\"\");\n\n\t\t\t\tif (flags) {\n\t\t\t\t\tallFlags.forEach(flag => {\n\t\t\t\t\t\tflagsToCheck = flagsToCheck.replace(flag, \"\");\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tlet message = validateRegExpFlags(\n\t\t\t\t\tflags,\n\t\t\t\t\tflagsToCheck,\n\t\t\t\t\tallFlags,\n\t\t\t\t);\n\n\t\t\t\tif (message) {\n\t\t\t\t\treport(node, message);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!isString(node.arguments[0])) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst pattern = node.arguments[0].value;\n\n\t\t\t\tmessage =\n\t\t\t\t\t// If flags are unknown, report the regex only if its pattern is invalid both with and without the \"u\" flag\n\t\t\t\t\tflags === null\n\t\t\t\t\t\t? validateRegExpPattern(pattern, {\n\t\t\t\t\t\t\t\tunicode: true,\n\t\t\t\t\t\t\t\tunicodeSets: false,\n\t\t\t\t\t\t\t}) &&\n\t\t\t\t\t\t\tvalidateRegExpPattern(pattern, {\n\t\t\t\t\t\t\t\tunicode: false,\n\t\t\t\t\t\t\t\tunicodeSets: true,\n\t\t\t\t\t\t\t}) &&\n\t\t\t\t\t\t\tvalidateRegExpPattern(pattern, {\n\t\t\t\t\t\t\t\tunicode: false,\n\t\t\t\t\t\t\t\tunicodeSets: false,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t: validateRegExpPattern(pattern, {\n\t\t\t\t\t\t\t\tunicode: flags.includes(\"u\"),\n\t\t\t\t\t\t\t\tunicodeSets: flags.includes(\"v\"),\n\t\t\t\t\t\t\t});\n\n\t\t\t\tif (message) {\n\t\t\t\t\treport(node, message);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to disallow `this` keywords in contexts where the value of `this` is `undefined`.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Determines if the given code path is a code path with lexical `this` binding.\n * That is, if `this` within the code path refers to `this` of surrounding code path.\n * @param {CodePath} codePath Code path.\n * @param {ASTNode} node Node that started the code path.\n * @returns {boolean} `true` if it is a code path with lexical `this` binding.\n */\nfunction isCodePathWithLexicalThis(codePath, node) {\n\treturn (\n\t\tcodePath.origin === \"function\" &&\n\t\tnode.type === \"ArrowFunctionExpression\"\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [{ capIsConstructor: true }],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow use of `this` in contexts where the value of `this` is `undefined`\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-invalid-this\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tcapIsConstructor: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedThis: \"Unexpected 'this'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ capIsConstructor }] = context.options;\n\t\tconst stack = [],\n\t\t\tsourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Gets the current checking context.\n\t\t *\n\t\t * The return value has a flag that whether or not `this` keyword is valid.\n\t\t * The flag is initialized when got at the first time.\n\t\t * @returns {{valid: boolean}}\n\t\t *   an object which has a flag that whether or not `this` keyword is valid.\n\t\t */\n\t\tstack.getCurrent = function () {\n\t\t\tconst current = this.at(-1);\n\n\t\t\tif (!current.init) {\n\t\t\t\tcurrent.init = true;\n\t\t\t\tcurrent.valid = !astUtils.isDefaultThisBinding(\n\t\t\t\t\tcurrent.node,\n\t\t\t\t\tsourceCode,\n\t\t\t\t\t{ capIsConstructor },\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn current;\n\t\t};\n\n\t\treturn {\n\t\t\tonCodePathStart(codePath, node) {\n\t\t\t\tif (isCodePathWithLexicalThis(codePath, node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (codePath.origin === \"program\") {\n\t\t\t\t\tconst scope = sourceCode.getScope(node);\n\t\t\t\t\tconst features =\n\t\t\t\t\t\tcontext.languageOptions.parserOptions.ecmaFeatures ||\n\t\t\t\t\t\t{};\n\n\t\t\t\t\t// `this` at the top level of scripts always refers to the global object\n\t\t\t\t\tstack.push({\n\t\t\t\t\t\tinit: true,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tvalid: !(\n\t\t\t\t\t\t\tnode.sourceType === \"module\" ||\n\t\t\t\t\t\t\t(features.globalReturn &&\n\t\t\t\t\t\t\t\tscope.childScopes[0].isStrict)\n\t\t\t\t\t\t),\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * `init: false` means that `valid` isn't determined yet.\n\t\t\t\t * Most functions don't use `this`, and the calculation for `valid`\n\t\t\t\t * is relatively costly, so we'll calculate it lazily when the first\n\t\t\t\t * `this` within the function is traversed. A special case are non-strict\n\t\t\t\t * functions, because `this` refers to the global object and therefore is\n\t\t\t\t * always valid, so we can set `init: true` right away.\n\t\t\t\t */\n\t\t\t\tstack.push({\n\t\t\t\t\tinit: !sourceCode.getScope(node).isStrict,\n\t\t\t\t\tnode,\n\t\t\t\t\tvalid: true,\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tonCodePathEnd(codePath, node) {\n\t\t\t\tif (isCodePathWithLexicalThis(codePath, node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstack.pop();\n\t\t\t},\n\n\t\t\t\"AccessorProperty > *.value\"(node) {\n\t\t\t\tstack.push({\n\t\t\t\t\tinit: true,\n\t\t\t\t\tnode,\n\t\t\t\t\tvalid: true,\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t\"AccessorProperty:exit\"() {\n\t\t\t\tstack.pop();\n\t\t\t},\n\n\t\t\t// Reports if `this` of the current context is invalid.\n\t\t\tThisExpression(node) {\n\t\t\t\t// Special case: skip `this` if it's the value of an AccessorProperty\n\t\t\t\tif (\n\t\t\t\t\tnode.parent.type === \"AccessorProperty\" &&\n\t\t\t\t\tnode.parent.value === node\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst current = stack.getCurrent();\n\n\t\t\t\tif (current && !current.valid) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpectedThis\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow whitespace that is not a tab or space, whitespace inside strings and comments are allowed\n * @author Jonathan Kingston\n * @author Christophe Porteneuve\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Constants\n//------------------------------------------------------------------------------\n\nconst ALL_IRREGULARS =\n\t/[\\f\\v\\u0085\\ufeff\\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u200b\\u202f\\u205f\\u3000\\u2028\\u2029]/u;\nconst IRREGULAR_WHITESPACE =\n\t/[\\f\\v\\u0085\\ufeff\\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u200b\\u202f\\u205f\\u3000]+/gu;\nconst IRREGULAR_LINE_TERMINATORS = /[\\u2028\\u2029]/gu;\nconst LINE_BREAK = astUtils.createGlobalLinebreakMatcher();\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tskipComments: false,\n\t\t\t\tskipJSXText: false,\n\t\t\t\tskipRegExps: false,\n\t\t\t\tskipStrings: true,\n\t\t\t\tskipTemplates: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow irregular whitespace\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-irregular-whitespace\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tskipComments: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tskipStrings: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tskipTemplates: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tskipRegExps: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tskipJSXText: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tnoIrregularWhitespace: \"Irregular whitespace not allowed.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [\n\t\t\t{\n\t\t\t\tskipComments,\n\t\t\t\tskipStrings,\n\t\t\t\tskipRegExps,\n\t\t\t\tskipTemplates,\n\t\t\t\tskipJSXText,\n\t\t\t},\n\t\t] = context.options;\n\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst commentNodes = sourceCode.getAllComments();\n\n\t\t// Module store of errors that we have found\n\t\tlet errors = [];\n\n\t\t/**\n\t\t * Removes errors that occur inside the given node\n\t\t * @param {ASTNode} node to check for matching errors.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction removeWhitespaceError(node) {\n\t\t\tconst locStart = node.loc.start;\n\t\t\tconst locEnd = node.loc.end;\n\n\t\t\terrors = errors.filter(\n\t\t\t\t({ loc: { start: errorLocStart } }) =>\n\t\t\t\t\terrorLocStart.line < locStart.line ||\n\t\t\t\t\t(errorLocStart.line === locStart.line &&\n\t\t\t\t\t\terrorLocStart.column < locStart.column) ||\n\t\t\t\t\t(errorLocStart.line === locEnd.line &&\n\t\t\t\t\t\terrorLocStart.column >= locEnd.column) ||\n\t\t\t\t\terrorLocStart.line > locEnd.line,\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks literal nodes for errors that we are choosing to ignore and calls the relevant methods to remove the errors\n\t\t * @param {ASTNode} node to check for matching errors.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction removeInvalidNodeErrorsInLiteral(node) {\n\t\t\tconst shouldCheckStrings =\n\t\t\t\tskipStrings && typeof node.value === \"string\";\n\t\t\tconst shouldCheckRegExps = skipRegExps && Boolean(node.regex);\n\n\t\t\tif (shouldCheckStrings || shouldCheckRegExps) {\n\t\t\t\t// If we have irregular characters remove them from the errors list\n\t\t\t\tif (ALL_IRREGULARS.test(node.raw)) {\n\t\t\t\t\tremoveWhitespaceError(node);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks template string literal nodes for errors that we are choosing to ignore and calls the relevant methods to remove the errors\n\t\t * @param {ASTNode} node to check for matching errors.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction removeInvalidNodeErrorsInTemplateLiteral(node) {\n\t\t\tif (typeof node.value.raw === \"string\") {\n\t\t\t\tif (ALL_IRREGULARS.test(node.value.raw)) {\n\t\t\t\t\tremoveWhitespaceError(node);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks comment nodes for errors that we are choosing to ignore and calls the relevant methods to remove the errors\n\t\t * @param {ASTNode} node to check for matching errors.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction removeInvalidNodeErrorsInComment(node) {\n\t\t\tif (ALL_IRREGULARS.test(node.value)) {\n\t\t\t\tremoveWhitespaceError(node);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks JSX nodes for errors that we are choosing to ignore and calls the relevant methods to remove the errors\n\t\t * @param {ASTNode} node to check for matching errors.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction removeInvalidNodeErrorsInJSXText(node) {\n\t\t\tif (ALL_IRREGULARS.test(node.raw)) {\n\t\t\t\tremoveWhitespaceError(node);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks the program source for irregular whitespace\n\t\t * @param {ASTNode} node The program node\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkForIrregularWhitespace(node) {\n\t\t\tconst sourceLines = sourceCode.lines;\n\n\t\t\tsourceLines.forEach((sourceLine, lineIndex) => {\n\t\t\t\tconst lineNumber = lineIndex + 1;\n\t\t\t\tlet match;\n\n\t\t\t\twhile (\n\t\t\t\t\t(match = IRREGULAR_WHITESPACE.exec(sourceLine)) !== null\n\t\t\t\t) {\n\t\t\t\t\terrors.push({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"noIrregularWhitespace\",\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\t\tline: lineNumber,\n\t\t\t\t\t\t\t\tcolumn: match.index,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\t\tline: lineNumber,\n\t\t\t\t\t\t\t\tcolumn: match.index + match[0].length,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Checks the program source for irregular line terminators\n\t\t * @param {ASTNode} node The program node\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkForIrregularLineTerminators(node) {\n\t\t\tconst source = sourceCode.getText(),\n\t\t\t\tsourceLines = sourceCode.lines,\n\t\t\t\tlinebreaks = source.match(LINE_BREAK);\n\t\t\tlet lastLineIndex = -1,\n\t\t\t\tmatch;\n\n\t\t\twhile ((match = IRREGULAR_LINE_TERMINATORS.exec(source)) !== null) {\n\t\t\t\tconst lineIndex =\n\t\t\t\t\tlinebreaks.indexOf(match[0], lastLineIndex + 1) || 0;\n\n\t\t\t\terrors.push({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"noIrregularWhitespace\",\n\t\t\t\t\tloc: {\n\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\tline: lineIndex + 1,\n\t\t\t\t\t\t\tcolumn: sourceLines[lineIndex].length,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\tline: lineIndex + 2,\n\t\t\t\t\t\t\tcolumn: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tlastLineIndex = lineIndex;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * A no-op function to act as placeholder for comment accumulation when the `skipComments` option is `false`.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction noop() {}\n\n\t\tconst nodes = {};\n\n\t\tif (ALL_IRREGULARS.test(sourceCode.getText())) {\n\t\t\tnodes.Program = function (node) {\n\t\t\t\t/*\n\t\t\t\t * As we can easily fire warnings for all white space issues with\n\t\t\t\t * all the source its simpler to fire them here.\n\t\t\t\t * This means we can check all the application code without having\n\t\t\t\t * to worry about issues caused in the parser tokens.\n\t\t\t\t * When writing this code also evaluating per node was missing out\n\t\t\t\t * connecting tokens in some cases.\n\t\t\t\t * We can later filter the errors when they are found to be not an\n\t\t\t\t * issue in nodes we don't care about.\n\t\t\t\t */\n\t\t\t\tcheckForIrregularWhitespace(node);\n\t\t\t\tcheckForIrregularLineTerminators(node);\n\t\t\t};\n\n\t\t\tnodes.Literal = removeInvalidNodeErrorsInLiteral;\n\t\t\tnodes.TemplateElement = skipTemplates\n\t\t\t\t? removeInvalidNodeErrorsInTemplateLiteral\n\t\t\t\t: noop;\n\t\t\tnodes.JSXText = skipJSXText\n\t\t\t\t? removeInvalidNodeErrorsInJSXText\n\t\t\t\t: noop;\n\t\t\tnodes[\"Program:exit\"] = function () {\n\t\t\t\tif (skipComments) {\n\t\t\t\t\t// First strip errors occurring in comment nodes.\n\t\t\t\t\tcommentNodes.forEach(removeInvalidNodeErrorsInComment);\n\t\t\t\t}\n\n\t\t\t\t// If we have any errors remaining report on them\n\t\t\t\terrors.forEach(error => context.report(error));\n\t\t\t};\n\t\t} else {\n\t\t\tnodes.Program = noop;\n\t\t}\n\n\t\treturn nodes;\n\t},\n};\n", "/**\n * @fileoverview Rule to flag usage of __iterator__ property\n * @author Ian Christian Myers\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst { getStaticPropertyName } = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow the use of the `__iterator__` property\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-iterator\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnoIterator: \"Reserved name '__iterator__'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tMemberExpression(node) {\n\t\t\t\tif (getStaticPropertyName(node) === \"__iterator__\") {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"noIterator\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag labels that are the same as an identifier\n * @author Ian Christian Myers\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow labels that share a name with a variable\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-label-var\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tidentifierClashWithLabel:\n\t\t\t\t\"Found identifier with same name as label.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Check if the identifier is present inside current scope\n\t\t * @param {Object} scope current scope\n\t\t * @param {string} name To evaluate\n\t\t * @returns {boolean} True if its present\n\t\t * @private\n\t\t */\n\t\tfunction findIdentifier(scope, name) {\n\t\t\treturn astUtils.getVariableByName(scope, name) !== null;\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tLabeledStatement(node) {\n\t\t\t\t// Fetch the innermost scope.\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\n\t\t\t\t/*\n\t\t\t\t * Recursively find the identifier walking up the scope, starting\n\t\t\t\t * with the innermost scope.\n\t\t\t\t */\n\t\t\t\tif (findIdentifier(scope, node.label.name)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"identifierClashWithLabel\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallow Labeled Statements\n * @author Nicholas C. Zakas\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowLoop: false,\n\t\t\t\tallowSwitch: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow labeled statements\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-labels\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowLoop: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowSwitch: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedLabel: \"Unexpected labeled statement.\",\n\t\t\tunexpectedLabelInBreak: \"Unexpected label in break statement.\",\n\t\t\tunexpectedLabelInContinue:\n\t\t\t\t\"Unexpected label in continue statement.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ allowLoop, allowSwitch }] = context.options;\n\t\tlet scopeInfo = null;\n\n\t\t/**\n\t\t * Gets the kind of a given node.\n\t\t * @param {ASTNode} node A node to get.\n\t\t * @returns {string} The kind of the node.\n\t\t */\n\t\tfunction getBodyKind(node) {\n\t\t\tif (astUtils.isLoop(node)) {\n\t\t\t\treturn \"loop\";\n\t\t\t}\n\t\t\tif (node.type === \"SwitchStatement\") {\n\t\t\t\treturn \"switch\";\n\t\t\t}\n\t\t\treturn \"other\";\n\t\t}\n\n\t\t/**\n\t\t * Checks whether the label of a given kind is allowed or not.\n\t\t * @param {string} kind A kind to check.\n\t\t * @returns {boolean} `true` if the kind is allowed.\n\t\t */\n\t\tfunction isAllowed(kind) {\n\t\t\tswitch (kind) {\n\t\t\t\tcase \"loop\":\n\t\t\t\t\treturn allowLoop;\n\t\t\t\tcase \"switch\":\n\t\t\t\t\treturn allowSwitch;\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a given name is a label of a loop or not.\n\t\t * @param {string} label A name of a label to check.\n\t\t * @returns {boolean} `true` if the name is a label of a loop.\n\t\t */\n\t\tfunction getKind(label) {\n\t\t\tlet info = scopeInfo;\n\n\t\t\twhile (info) {\n\t\t\t\tif (info.label === label) {\n\t\t\t\t\treturn info.kind;\n\t\t\t\t}\n\t\t\t\tinfo = info.upper;\n\t\t\t}\n\n\t\t\t/* c8 ignore next */\n\t\t\treturn \"other\";\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tLabeledStatement(node) {\n\t\t\t\tscopeInfo = {\n\t\t\t\t\tlabel: node.label.name,\n\t\t\t\t\tkind: getBodyKind(node.body),\n\t\t\t\t\tupper: scopeInfo,\n\t\t\t\t};\n\t\t\t},\n\n\t\t\t\"LabeledStatement:exit\"(node) {\n\t\t\t\tif (!isAllowed(scopeInfo.kind)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpectedLabel\",\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tscopeInfo = scopeInfo.upper;\n\t\t\t},\n\n\t\t\tBreakStatement(node) {\n\t\t\t\tif (node.label && !isAllowed(getKind(node.label.name))) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpectedLabelInBreak\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tContinueStatement(node) {\n\t\t\t\tif (node.label && !isAllowed(getKind(node.label.name))) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpectedLabelInContinue\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag blocks with no reason to exist\n * @author Brandon Mills\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow unnecessary nested blocks\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-lone-blocks\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tredundantBlock: \"Block is redundant.\",\n\t\t\tredundantNestedBlock: \"Nested block is redundant.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t// A stack of lone blocks to be checked for block-level bindings\n\t\tconst loneBlocks = [];\n\t\tlet ruleDef;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Reports a node as invalid.\n\t\t * @param {ASTNode} node The node to be reported.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node) {\n\t\t\tconst messageId =\n\t\t\t\tnode.parent.type === \"BlockStatement\" ||\n\t\t\t\tnode.parent.type === \"StaticBlock\"\n\t\t\t\t\t? \"redundantNestedBlock\"\n\t\t\t\t\t: \"redundantBlock\";\n\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId,\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Checks for any occurrence of a BlockStatement in a place where lists of statements can appear\n\t\t * @param {ASTNode} node The node to check\n\t\t * @returns {boolean} True if the node is a lone block.\n\t\t */\n\t\tfunction isLoneBlock(node) {\n\t\t\treturn (\n\t\t\t\tnode.parent.type === \"BlockStatement\" ||\n\t\t\t\tnode.parent.type === \"StaticBlock\" ||\n\t\t\t\tnode.parent.type === \"Program\" ||\n\t\t\t\t// Don't report blocks in switch cases if the block is the only statement of the case.\n\t\t\t\t(node.parent.type === \"SwitchCase\" &&\n\t\t\t\t\t!(\n\t\t\t\t\t\tnode.parent.consequent[0] === node &&\n\t\t\t\t\t\tnode.parent.consequent.length === 1\n\t\t\t\t\t))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks the enclosing block of the current node for block-level bindings,\n\t\t * and \"marks it\" as valid if any.\n\t\t * @param {ASTNode} node The current node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction markLoneBlock(node) {\n\t\t\tif (loneBlocks.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst block = node.parent;\n\n\t\t\tif (loneBlocks.at(-1) === block) {\n\t\t\t\tloneBlocks.pop();\n\t\t\t}\n\t\t}\n\n\t\t// Default rule definition: report all lone blocks\n\t\truleDef = {\n\t\t\tBlockStatement(node) {\n\t\t\t\tif (isLoneBlock(node)) {\n\t\t\t\t\treport(node);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\n\t\t// ES6: report blocks without block-level bindings, or that's only child of another block\n\t\tif (context.languageOptions.ecmaVersion >= 2015) {\n\t\t\truleDef = {\n\t\t\t\tBlockStatement(node) {\n\t\t\t\t\tif (isLoneBlock(node)) {\n\t\t\t\t\t\tloneBlocks.push(node);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"BlockStatement:exit\"(node) {\n\t\t\t\t\tif (loneBlocks.length > 0 && loneBlocks.at(-1) === node) {\n\t\t\t\t\t\tloneBlocks.pop();\n\t\t\t\t\t\treport(node);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\t(node.parent.type === \"BlockStatement\" ||\n\t\t\t\t\t\t\tnode.parent.type === \"StaticBlock\") &&\n\t\t\t\t\t\tnode.parent.body.length === 1\n\t\t\t\t\t) {\n\t\t\t\t\t\treport(node);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\n\t\t\truleDef.VariableDeclaration = function (node) {\n\t\t\t\tif (node.kind !== \"var\") {\n\t\t\t\t\tmarkLoneBlock(node);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\truleDef.FunctionDeclaration = function (node) {\n\t\t\t\tif (sourceCode.getScope(node).isStrict) {\n\t\t\t\t\tmarkLoneBlock(node);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\truleDef.ClassDeclaration = markLoneBlock;\n\t\t}\n\n\t\treturn ruleDef;\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow if as the only statement in an else block\n * @author Brandon Mills\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow `if` statements as the only statement in `else` blocks\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-lonely-if\",\n\t\t},\n\n\t\tschema: [],\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tunexpectedLonelyIf:\n\t\t\t\t\"Unexpected if as the only statement in an else block.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tIfStatement(node) {\n\t\t\t\tconst parent = node.parent,\n\t\t\t\t\tgrandparent = parent.parent;\n\n\t\t\t\tif (\n\t\t\t\t\tparent &&\n\t\t\t\t\tparent.type === \"BlockStatement\" &&\n\t\t\t\t\tparent.body.length === 1 &&\n\t\t\t\t\t!astUtils.areBracesNecessary(parent, sourceCode) &&\n\t\t\t\t\tgrandparent &&\n\t\t\t\t\tgrandparent.type === \"IfStatement\" &&\n\t\t\t\t\tparent === grandparent.alternate\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpectedLonelyIf\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tconst openingElseCurly =\n\t\t\t\t\t\t\t\tsourceCode.getFirstToken(parent);\n\t\t\t\t\t\t\tconst closingElseCurly =\n\t\t\t\t\t\t\t\tsourceCode.getLastToken(parent);\n\t\t\t\t\t\t\tconst elseKeyword =\n\t\t\t\t\t\t\t\tsourceCode.getTokenBefore(openingElseCurly);\n\t\t\t\t\t\t\tconst tokenAfterElseBlock =\n\t\t\t\t\t\t\t\tsourceCode.getTokenAfter(closingElseCurly);\n\t\t\t\t\t\t\tconst lastIfToken = sourceCode.getLastToken(\n\t\t\t\t\t\t\t\tnode.consequent,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst sourceText = sourceCode.getText();\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tsourceText\n\t\t\t\t\t\t\t\t\t.slice(\n\t\t\t\t\t\t\t\t\t\topeningElseCurly.range[1],\n\t\t\t\t\t\t\t\t\t\tnode.range[0],\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.trim() ||\n\t\t\t\t\t\t\t\tsourceText\n\t\t\t\t\t\t\t\t\t.slice(\n\t\t\t\t\t\t\t\t\t\tnode.range[1],\n\t\t\t\t\t\t\t\t\t\tclosingElseCurly.range[0],\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// Don't fix if there are any non-whitespace characters interfering (e.g. comments)\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tnode.consequent.type !== \"BlockStatement\" &&\n\t\t\t\t\t\t\t\tlastIfToken.value !== \";\" &&\n\t\t\t\t\t\t\t\ttokenAfterElseBlock &&\n\t\t\t\t\t\t\t\t(node.consequent.loc.end.line ===\n\t\t\t\t\t\t\t\t\ttokenAfterElseBlock.loc.start.line ||\n\t\t\t\t\t\t\t\t\t/^[([/+`-]/u.test(\n\t\t\t\t\t\t\t\t\t\ttokenAfterElseBlock.value,\n\t\t\t\t\t\t\t\t\t) ||\n\t\t\t\t\t\t\t\t\tlastIfToken.value === \"++\" ||\n\t\t\t\t\t\t\t\t\tlastIfToken.value === \"--\")\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * If the `if` statement has no block, and is not followed by a semicolon, make sure that fixing\n\t\t\t\t\t\t\t\t * the issue would not change semantics due to ASI. If this would happen, don't do a fix.\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\topeningElseCurly.range[0],\n\t\t\t\t\t\t\t\t\tclosingElseCurly.range[1],\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t(elseKeyword.range[1] ===\n\t\t\t\t\t\t\t\topeningElseCurly.range[0]\n\t\t\t\t\t\t\t\t\t? \" \"\n\t\t\t\t\t\t\t\t\t: \"\") + sourceCode.getText(node),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag creation of function inside a loop\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Reference} Reference */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst CONSTANT_BINDINGS = new Set([\"const\", \"using\", \"await using\"]);\n\n/**\n * Identifies is a node is a FunctionExpression which is part of an IIFE\n * @param {ASTNode} node Node to test\n * @returns {boolean} True if it's an IIFE\n */\nfunction isIIFE(node) {\n\treturn (\n\t\t(node.type === \"FunctionExpression\" ||\n\t\t\tnode.type === \"ArrowFunctionExpression\") &&\n\t\tnode.parent &&\n\t\tnode.parent.type === \"CallExpression\" &&\n\t\tnode.parent.callee === node\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow function declarations that contain unsafe references inside loop statements\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-loop-func\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunsafeRefs:\n\t\t\t\t\"Function declared in a loop contains unsafe references to variable(s) {{ varNames }}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst SKIPPED_IIFE_NODES = new Set();\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Gets the containing loop node of a specified node.\n\t\t *\n\t\t * We don't need to check nested functions, so this ignores those, with the exception of IIFE.\n\t\t * `Scope.through` contains references of nested functions.\n\t\t * @param {ASTNode} node An AST node to get.\n\t\t * @returns {ASTNode|null} The containing loop node of the specified node, or\n\t\t *      `null`.\n\t\t */\n\t\tfunction getContainingLoopNode(node) {\n\t\t\tfor (\n\t\t\t\tlet currentNode = node;\n\t\t\t\tcurrentNode.parent;\n\t\t\t\tcurrentNode = currentNode.parent\n\t\t\t) {\n\t\t\t\tconst parent = currentNode.parent;\n\n\t\t\t\tswitch (parent.type) {\n\t\t\t\t\tcase \"WhileStatement\":\n\t\t\t\t\tcase \"DoWhileStatement\":\n\t\t\t\t\t\treturn parent;\n\n\t\t\t\t\tcase \"ForStatement\":\n\t\t\t\t\t\t// `init` is outside of the loop.\n\t\t\t\t\t\tif (parent.init !== currentNode) {\n\t\t\t\t\t\t\treturn parent;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"ForInStatement\":\n\t\t\t\t\tcase \"ForOfStatement\":\n\t\t\t\t\t\t// `right` is outside of the loop.\n\t\t\t\t\t\tif (parent.right !== currentNode) {\n\t\t\t\t\t\t\treturn parent;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"ArrowFunctionExpression\":\n\t\t\t\t\tcase \"FunctionExpression\":\n\t\t\t\t\tcase \"FunctionDeclaration\":\n\t\t\t\t\t\t// We need to check nested functions only in case of IIFE.\n\t\t\t\t\t\tif (SKIPPED_IIFE_NODES.has(parent)) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn null;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\t/**\n\t\t * Gets the containing loop node of a given node.\n\t\t * If the loop was nested, this returns the most outer loop.\n\t\t * @param {ASTNode} node A node to get. This is a loop node.\n\t\t * @param {ASTNode|null} excludedNode A node that the result node should not\n\t\t *      include.\n\t\t * @returns {ASTNode} The most outer loop node.\n\t\t */\n\t\tfunction getTopLoopNode(node, excludedNode) {\n\t\t\tconst border = excludedNode ? excludedNode.range[1] : 0;\n\t\t\tlet retv = node;\n\t\t\tlet containingLoopNode = node;\n\n\t\t\twhile (\n\t\t\t\tcontainingLoopNode &&\n\t\t\t\tcontainingLoopNode.range[0] >= border\n\t\t\t) {\n\t\t\t\tretv = containingLoopNode;\n\t\t\t\tcontainingLoopNode = getContainingLoopNode(containingLoopNode);\n\t\t\t}\n\n\t\t\treturn retv;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a given reference which refers to an upper scope's variable is\n\t\t * safe or not.\n\t\t * @param {ASTNode} loopNode A containing loop node.\n\t\t * @param {Reference} reference A reference to check.\n\t\t * @returns {boolean} `true` if the reference is safe or not.\n\t\t */\n\t\tfunction isSafe(loopNode, reference) {\n\t\t\tconst variable = reference.resolved;\n\t\t\tconst definition = variable && variable.defs[0];\n\t\t\tconst declaration = definition && definition.parent;\n\t\t\tconst kind =\n\t\t\t\tdeclaration && declaration.type === \"VariableDeclaration\"\n\t\t\t\t\t? declaration.kind\n\t\t\t\t\t: \"\";\n\n\t\t\t// Constant variables are safe.\n\t\t\tif (CONSTANT_BINDINGS.has(kind)) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Variables which are declared by `let` in the loop is safe.\n\t\t\t * It's a different instance from the next loop step's.\n\t\t\t */\n\t\t\tif (\n\t\t\t\tkind === \"let\" &&\n\t\t\t\tdeclaration.range[0] > loopNode.range[0] &&\n\t\t\t\tdeclaration.range[1] < loopNode.range[1]\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * WriteReferences which exist after this border are unsafe because those\n\t\t\t * can modify the variable.\n\t\t\t */\n\t\t\tconst border = getTopLoopNode(\n\t\t\t\tloopNode,\n\t\t\t\tkind === \"let\" ? declaration : null,\n\t\t\t).range[0];\n\n\t\t\t/**\n\t\t\t * Checks whether a given reference is safe or not.\n\t\t\t * The reference is every reference of the upper scope's variable we are\n\t\t\t * looking now.\n\t\t\t *\n\t\t\t * It's safe if the reference matches one of the following condition.\n\t\t\t * - is readonly.\n\t\t\t * - doesn't exist inside a local function and after the border.\n\t\t\t * @param {Reference} upperRef A reference to check.\n\t\t\t * @returns {boolean} `true` if the reference is safe.\n\t\t\t */\n\t\t\tfunction isSafeReference(upperRef) {\n\t\t\t\tconst id = upperRef.identifier;\n\n\t\t\t\treturn (\n\t\t\t\t\t!upperRef.isWrite() ||\n\t\t\t\t\t(variable.scope.variableScope ===\n\t\t\t\t\t\tupperRef.from.variableScope &&\n\t\t\t\t\t\tid.range[0] < border)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\tBoolean(variable) && variable.references.every(isSafeReference)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Reports functions which match the following condition:\n\t\t *\n\t\t * - has a loop node in ancestors.\n\t\t * - has any references which refers to an unsafe variable.\n\t\t * @param {ASTNode} node The AST node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForLoops(node) {\n\t\t\tconst loopNode = getContainingLoopNode(node);\n\n\t\t\tif (!loopNode) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst references = sourceCode.getScope(node).through;\n\n\t\t\t// Check if the function is not asynchronous or a generator function\n\t\t\tif (!(node.async || node.generator)) {\n\t\t\t\tif (isIIFE(node)) {\n\t\t\t\t\tconst isFunctionExpression =\n\t\t\t\t\t\tnode.type === \"FunctionExpression\";\n\n\t\t\t\t\t// Check if the function is referenced elsewhere in the code\n\t\t\t\t\tconst isFunctionReferenced =\n\t\t\t\t\t\tisFunctionExpression && node.id\n\t\t\t\t\t\t\t? references.some(\n\t\t\t\t\t\t\t\t\tr => r.identifier.name === node.id.name,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: false;\n\n\t\t\t\t\tif (!isFunctionReferenced) {\n\t\t\t\t\t\tSKIPPED_IIFE_NODES.add(node);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst unsafeRefs = [\n\t\t\t\t...new Set(\n\t\t\t\t\treferences\n\t\t\t\t\t\t.filter(r => r.resolved && !isSafe(loopNode, r))\n\t\t\t\t\t\t.map(r => r.identifier.name),\n\t\t\t\t),\n\t\t\t];\n\n\t\t\tif (unsafeRefs.length > 0) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unsafeRefs\",\n\t\t\t\t\tdata: { varNames: `'${unsafeRefs.join(\"', '\")}'` },\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tArrowFunctionExpression: checkForLoops,\n\t\t\tFunctionExpression: checkForLoops,\n\t\t\tFunctionDeclaration: checkForLoops,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag numbers that will lose significant figure precision at runtime\n * @author Jacob Moore\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/** Class representing a number in scientific notation. */\nclass ScientificNotation {\n\t/** @type {string} The digits of the coefficient. A decimal point is implied after the first digit. */\n\tcoefficient;\n\n\t/** @type {number} The order of magnitude. */\n\tmagnitude;\n\n\tconstructor(coefficient, magnitude) {\n\t\tthis.coefficient = coefficient;\n\t\tthis.magnitude = magnitude;\n\t}\n\n\t/* c8 ignore start -- debug only */\n\ttoString() {\n\t\treturn `${this.coefficient[0]}${this.coefficient.length > 1 ? `.${this.coefficient.slice(1)}` : \"\"}e${this.magnitude}`;\n\t}\n\t/* c8 ignore stop */\n}\n\n/**\n * Returns whether the node is number literal\n * @param {Node} node the node literal being evaluated\n * @returns {boolean} true if the node is a number literal\n */\nfunction isNumber(node) {\n\treturn typeof node.value === \"number\";\n}\n\n/**\n * Gets the source code of the given number literal. Removes `_` numeric separators from the result.\n * @param {Node} node the number `Literal` node\n * @returns {string} raw source code of the literal, without numeric separators\n */\nfunction getRaw(node) {\n\treturn node.raw.replace(/_/gu, \"\");\n}\n\n/**\n * Checks whether the number is base ten\n * @param {ASTNode} node the node being evaluated\n * @returns {boolean} true if the node is in base ten\n */\nfunction isBaseTen(node) {\n\tconst prefixes = [\"0x\", \"0X\", \"0b\", \"0B\", \"0o\", \"0O\"];\n\n\treturn (\n\t\tprefixes.every(prefix => !node.raw.startsWith(prefix)) &&\n\t\t!/^0[0-7]+$/u.test(node.raw)\n\t);\n}\n\n/**\n * Checks that the user-intended non-base ten number equals the actual number after is has been converted to the Number type\n * @param {Node} node the node being evaluated\n * @returns {boolean} true if they do not match\n */\nfunction notBaseTenLosesPrecision(node) {\n\tconst rawString = getRaw(node).toUpperCase();\n\tlet base;\n\n\tif (rawString.startsWith(\"0B\")) {\n\t\tbase = 2;\n\t} else if (rawString.startsWith(\"0X\")) {\n\t\tbase = 16;\n\t} else {\n\t\tbase = 8;\n\t}\n\n\treturn !rawString.endsWith(node.value.toString(base).toUpperCase());\n}\n\n/**\n * Returns the number stripped of leading zeros\n * @param {string} numberAsString the string representation of the number\n * @returns {string} the stripped string\n */\nfunction removeLeadingZeros(numberAsString) {\n\tfor (let i = 0; i < numberAsString.length; i++) {\n\t\tif (numberAsString[i] !== \"0\") {\n\t\t\treturn numberAsString.slice(i);\n\t\t}\n\t}\n\treturn numberAsString;\n}\n\n/**\n * Returns the number stripped of trailing zeros\n * @param {string} numberAsString the string representation of the number\n * @returns {string} the stripped string\n */\nfunction removeTrailingZeros(numberAsString) {\n\tfor (let i = numberAsString.length - 1; i >= 0; i--) {\n\t\tif (numberAsString[i] !== \"0\") {\n\t\t\treturn numberAsString.slice(0, i + 1);\n\t\t}\n\t}\n\treturn numberAsString;\n}\n\n/**\n * Converts an integer to an object containing the integer's coefficient and order of magnitude\n * @param {string} stringInteger the string representation of the integer being converted\n * @returns {ScientificNotation} the object containing the integer's coefficient and order of magnitude\n */\nfunction normalizeInteger(stringInteger) {\n\tconst trimmedInteger = removeLeadingZeros(stringInteger);\n\tconst significantDigits = removeTrailingZeros(trimmedInteger);\n\n\treturn new ScientificNotation(significantDigits, trimmedInteger.length - 1);\n}\n\n/**\n * Converts a float to an object containing the float's coefficient and order of magnitude\n * @param {string} stringFloat the string representation of the float being converted\n * @returns {ScientificNotation} the object containing the float's coefficient and order of magnitude\n */\nfunction normalizeFloat(stringFloat) {\n\tconst trimmedFloat = removeLeadingZeros(stringFloat);\n\tconst indexOfDecimalPoint = trimmedFloat.indexOf(\".\");\n\n\tswitch (indexOfDecimalPoint) {\n\t\tcase 0: {\n\t\t\tconst significantDigits = removeLeadingZeros(trimmedFloat.slice(1));\n\n\t\t\treturn new ScientificNotation(\n\t\t\t\tsignificantDigits,\n\t\t\t\tsignificantDigits.length - trimmedFloat.length,\n\t\t\t);\n\t\t}\n\t\tcase -1:\n\t\t\treturn new ScientificNotation(\n\t\t\t\ttrimmedFloat,\n\t\t\t\ttrimmedFloat.length - 1,\n\t\t\t);\n\t\tdefault:\n\t\t\treturn new ScientificNotation(\n\t\t\t\ttrimmedFloat.replace(\".\", \"\"),\n\t\t\t\tindexOfDecimalPoint - 1,\n\t\t\t);\n\t}\n}\n\n/**\n * Converts a base ten number to proper scientific notation\n * @param {string} stringNumber the string representation of the base ten number to be converted\n * @param {boolean} parseAsFloat if true, the coefficient will be always parsed as a float, regardless of whether a decimal point is present\n * @returns {ScientificNotation} the object containing the number's coefficient and order of magnitude\n */\nfunction convertNumberToScientificNotation(stringNumber, parseAsFloat) {\n\tconst splitNumber = stringNumber.split(\"e\");\n\tconst originalCoefficient = splitNumber[0];\n\tconst normalizedNumber =\n\t\tparseAsFloat || stringNumber.includes(\".\")\n\t\t\t? normalizeFloat(originalCoefficient)\n\t\t\t: normalizeInteger(originalCoefficient);\n\tif (splitNumber.length > 1) {\n\t\tnormalizedNumber.magnitude += parseInt(splitNumber[1], 10);\n\t}\n\n\treturn normalizedNumber;\n}\n\n/**\n * Checks that the user-intended base ten number equals the actual number after is has been converted to the Number type\n * @param {Node} node the node being evaluated\n * @returns {boolean} true if they do not match\n */\nfunction baseTenLosesPrecision(node) {\n\tconst rawNumber = getRaw(node).toLowerCase();\n\tconst normalizedRawNumber = convertNumberToScientificNotation(\n\t\trawNumber,\n\t\tfalse,\n\t);\n\tconst requestedPrecision = normalizedRawNumber.coefficient.length;\n\n\tif (requestedPrecision > 100) {\n\t\treturn true;\n\t}\n\tconst storedNumber = node.value.toPrecision(requestedPrecision);\n\tconst normalizedStoredNumber = convertNumberToScientificNotation(\n\t\tstoredNumber,\n\t\ttrue,\n\t);\n\n\treturn (\n\t\tnormalizedRawNumber.magnitude !== normalizedStoredNumber.magnitude ||\n\t\tnormalizedRawNumber.coefficient !== normalizedStoredNumber.coefficient\n\t);\n}\n\n/**\n * Checks that the user-intended number equals the actual number after is has been converted to the Number type\n * @param {Node} node the node being evaluated\n * @returns {boolean} true if they do not match\n */\nfunction losesPrecision(node) {\n\treturn isBaseTen(node)\n\t\t? baseTenLosesPrecision(node)\n\t\t: notBaseTenLosesPrecision(node);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow literal numbers that lose precision\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-loss-of-precision\",\n\t\t},\n\t\tschema: [],\n\t\tmessages: {\n\t\t\tnoLossOfPrecision:\n\t\t\t\t\"This number literal will lose precision at runtime.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tLiteral(node) {\n\t\t\t\tif (node.value && isNumber(node) && losesPrecision(node)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tmessageId: \"noLossOfPrecision\",\n\t\t\t\t\t\tnode,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag statements that use magic numbers (adapted from https://github.com/danielstjules/buddy.js)\n * @author Vincent Lemeunier\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n// Maximum array length by the ECMAScript Specification.\nconst MAX_ARRAY_LENGTH = 2 ** 32 - 1;\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/**\n * Convert the value to bigint if it's a string. Otherwise return the value as-is.\n * @param {bigint|number|string} x The value to normalize.\n * @returns {bigint|number} The normalized value.\n */\nfunction normalizeIgnoreValue(x) {\n\tif (typeof x === \"string\") {\n\t\treturn BigInt(x.slice(0, -1));\n\t}\n\treturn x;\n}\n\n/**\n * Checks if the node parent is a TypeScript enum member\n * @param {ASTNode} node The node to be validated\n * @returns {boolean} True if the node parent is a TypeScript enum member\n */\nfunction isParentTSEnumDeclaration(node) {\n\treturn node.parent.type === \"TSEnumMember\";\n}\n\n/**\n * Checks if the node is a valid TypeScript numeric literal type.\n * @param {ASTNode} node The node to be validated\n * @returns {boolean} True if the node is a TypeScript numeric literal type\n */\nfunction isTSNumericLiteralType(node) {\n\tlet ancestor = node.parent;\n\n\t// Go up while we're part of a type union\n\twhile (ancestor.parent.type === \"TSUnionType\") {\n\t\tancestor = ancestor.parent;\n\t}\n\n\t// Check if the final ancestor is in a type alias declaration\n\treturn ancestor.parent.type === \"TSTypeAliasDeclaration\";\n}\n\n/**\n * Checks if the node parent is a readonly class property\n * @param {ASTNode} node The node to be validated\n * @returns {boolean} True if the node parent is a readonly class property\n */\nfunction isParentTSReadonlyPropertyDefinition(node) {\n\tif (node.parent?.type === \"PropertyDefinition\" && node.parent.readonly) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * Checks if the node is part of a type indexed access (eg. Foo[4])\n * @param {ASTNode} node The node to be validated\n * @returns {boolean} True if the node is part of an indexed access\n */\nfunction isAncestorTSIndexedAccessType(node) {\n\tlet ancestor = node.parent;\n\n\t/*\n\t * Go up another level while we're part of a type union (eg. 1 | 2) or\n\t * intersection (eg. 1 & 2)\n\t */\n\twhile (\n\t\tancestor.parent.type === \"TSUnionType\" ||\n\t\tancestor.parent.type === \"TSIntersectionType\"\n\t) {\n\t\tancestor = ancestor.parent;\n\t}\n\n\treturn ancestor.parent.type === \"TSIndexedAccessType\";\n}\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow magic numbers\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-magic-numbers\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tdetectObjects: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tenforceConst: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tignore: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t\t\t{ type: \"number\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t\tpattern: \"^[+-]?(?:0|[1-9][0-9]*)n$\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t\tignoreArrayIndexes: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tignoreDefaultValues: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tignoreClassFieldInitialValues: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tignoreEnums: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tignoreNumericLiteralTypes: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tignoreReadonlyClassProperties: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tignoreTypeIndexes: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tdetectObjects: false,\n\t\t\t\tenforceConst: false,\n\t\t\t\tignore: [],\n\t\t\t\tignoreArrayIndexes: false,\n\t\t\t\tignoreDefaultValues: false,\n\t\t\t\tignoreClassFieldInitialValues: false,\n\t\t\t\tignoreEnums: false,\n\t\t\t\tignoreNumericLiteralTypes: false,\n\t\t\t\tignoreReadonlyClassProperties: false,\n\t\t\t\tignoreTypeIndexes: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tuseConst: \"Number constants declarations must use 'const'.\",\n\t\t\tnoMagic: \"No magic number: {{raw}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst {\n\t\t\tdetectObjects,\n\t\t\tenforceConst,\n\t\t\tignore: rawIgnore,\n\t\t\tignoreArrayIndexes,\n\t\t\tignoreDefaultValues,\n\t\t\tignoreClassFieldInitialValues,\n\t\t\tignoreEnums,\n\t\t\tignoreNumericLiteralTypes,\n\t\t\tignoreReadonlyClassProperties,\n\t\t\tignoreTypeIndexes,\n\t\t} = context.options[0];\n\t\tconst ignore = new Set(rawIgnore.map(normalizeIgnoreValue));\n\n\t\tconst okTypes = detectObjects\n\t\t\t? []\n\t\t\t: [\"ObjectExpression\", \"Property\", \"AssignmentExpression\"];\n\n\t\t/**\n\t\t * Returns whether the rule is configured to ignore the given value\n\t\t * @param {bigint|number} value The value to check\n\t\t * @returns {boolean} true if the value is ignored\n\t\t */\n\t\tfunction isIgnoredValue(value) {\n\t\t\treturn ignore.has(value);\n\t\t}\n\n\t\t/**\n\t\t * Returns whether the number is a default value assignment.\n\t\t * @param {ASTNode} fullNumberNode `Literal` or `UnaryExpression` full number node\n\t\t * @returns {boolean} true if the number is a default value\n\t\t */\n\t\tfunction isDefaultValue(fullNumberNode) {\n\t\t\tconst parent = fullNumberNode.parent;\n\n\t\t\treturn (\n\t\t\t\tparent.type === \"AssignmentPattern\" &&\n\t\t\t\tparent.right === fullNumberNode\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Returns whether the number is the initial value of a class field.\n\t\t * @param {ASTNode} fullNumberNode `Literal` or `UnaryExpression` full number node\n\t\t * @returns {boolean} true if the number is the initial value of a class field.\n\t\t */\n\t\tfunction isClassFieldInitialValue(fullNumberNode) {\n\t\t\tconst parent = fullNumberNode.parent;\n\n\t\t\treturn (\n\t\t\t\tparent.type === \"PropertyDefinition\" &&\n\t\t\t\tparent.value === fullNumberNode\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Returns whether the given node is used as a radix within parseInt() or Number.parseInt()\n\t\t * @param {ASTNode} fullNumberNode `Literal` or `UnaryExpression` full number node\n\t\t * @returns {boolean} true if the node is radix\n\t\t */\n\t\tfunction isParseIntRadix(fullNumberNode) {\n\t\t\tconst parent = fullNumberNode.parent;\n\n\t\t\treturn (\n\t\t\t\tparent.type === \"CallExpression\" &&\n\t\t\t\tfullNumberNode === parent.arguments[1] &&\n\t\t\t\t(astUtils.isSpecificId(parent.callee, \"parseInt\") ||\n\t\t\t\t\tastUtils.isSpecificMemberAccess(\n\t\t\t\t\t\tparent.callee,\n\t\t\t\t\t\t\"Number\",\n\t\t\t\t\t\t\"parseInt\",\n\t\t\t\t\t))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Returns whether the given node is a direct child of a JSX node.\n\t\t * In particular, it aims to detect numbers used as prop values in JSX tags.\n\t\t * Example: <input maxLength={10} />\n\t\t * @param {ASTNode} fullNumberNode `Literal` or `UnaryExpression` full number node\n\t\t * @returns {boolean} true if the node is a JSX number\n\t\t */\n\t\tfunction isJSXNumber(fullNumberNode) {\n\t\t\treturn fullNumberNode.parent.type.indexOf(\"JSX\") === 0;\n\t\t}\n\n\t\t/**\n\t\t * Returns whether the given node is used as an array index.\n\t\t * Value must coerce to a valid array index name: \"0\", \"1\", \"2\" ... \"4294967294\".\n\t\t *\n\t\t * All other values, like \"-1\", \"2.5\", or \"4294967295\", are just \"normal\" object properties,\n\t\t * which can be created and accessed on an array in addition to the array index properties,\n\t\t * but they don't affect array's length and are not considered by methods such as .map(), .forEach() etc.\n\t\t *\n\t\t * The maximum array length by the specification is 2 ** 32 - 1 = 4294967295,\n\t\t * thus the maximum valid index is 2 ** 32 - 2 = 4294967294.\n\t\t *\n\t\t * All notations are allowed, as long as the value coerces to one of \"0\", \"1\", \"2\" ... \"4294967294\".\n\t\t *\n\t\t * Valid examples:\n\t\t * a[0], a[1], a[1.2e1], a[0xAB], a[0n], a[1n]\n\t\t * a[-0] (same as a[0] because -0 coerces to \"0\")\n\t\t * a[-0n] (-0n evaluates to 0n)\n\t\t *\n\t\t * Invalid examples:\n\t\t * a[-1], a[-0xAB], a[-1n], a[2.5], a[1.23e1], a[12e-1]\n\t\t * a[4294967295] (above the max index, it's an access to a regular property a[\"4294967295\"])\n\t\t * a[999999999999999999999] (even if it wasn't above the max index, it would be a[\"1e+21\"])\n\t\t * a[1e310] (same as a[\"Infinity\"])\n\t\t * @param {ASTNode} fullNumberNode `Literal` or `UnaryExpression` full number node\n\t\t * @param {bigint|number} value Value expressed by the fullNumberNode\n\t\t * @returns {boolean} true if the node is a valid array index\n\t\t */\n\t\tfunction isArrayIndex(fullNumberNode, value) {\n\t\t\tconst parent = fullNumberNode.parent;\n\n\t\t\treturn (\n\t\t\t\tparent.type === \"MemberExpression\" &&\n\t\t\t\tparent.property === fullNumberNode &&\n\t\t\t\t(Number.isInteger(value) || typeof value === \"bigint\") &&\n\t\t\t\tvalue >= 0 &&\n\t\t\t\tvalue < MAX_ARRAY_LENGTH\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\tLiteral(node) {\n\t\t\t\tif (!astUtils.isNumericLiteral(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet fullNumberNode;\n\t\t\t\tlet value;\n\t\t\t\tlet raw;\n\n\t\t\t\t// Treat unary minus/plus as a part of the number\n\t\t\t\tif (\n\t\t\t\t\tnode.parent.type === \"UnaryExpression\" &&\n\t\t\t\t\t[\"-\", \"+\"].includes(node.parent.operator)\n\t\t\t\t) {\n\t\t\t\t\tfullNumberNode = node.parent;\n\t\t\t\t\tvalue =\n\t\t\t\t\t\tnode.parent.operator === \"-\" ? -node.value : node.value;\n\t\t\t\t\traw = `${node.parent.operator}${node.raw}`;\n\t\t\t\t} else {\n\t\t\t\t\tfullNumberNode = node;\n\t\t\t\t\tvalue = node.value;\n\t\t\t\t\traw = node.raw;\n\t\t\t\t}\n\n\t\t\t\tconst parent = fullNumberNode.parent;\n\n\t\t\t\t// Always allow radix arguments and JSX props\n\t\t\t\tif (\n\t\t\t\t\tisIgnoredValue(value) ||\n\t\t\t\t\t(ignoreDefaultValues && isDefaultValue(fullNumberNode)) ||\n\t\t\t\t\t(ignoreClassFieldInitialValues &&\n\t\t\t\t\t\tisClassFieldInitialValue(fullNumberNode)) ||\n\t\t\t\t\t(ignoreEnums &&\n\t\t\t\t\t\tisParentTSEnumDeclaration(fullNumberNode)) ||\n\t\t\t\t\t(ignoreNumericLiteralTypes &&\n\t\t\t\t\t\tisTSNumericLiteralType(fullNumberNode)) ||\n\t\t\t\t\t(ignoreTypeIndexes &&\n\t\t\t\t\t\tisAncestorTSIndexedAccessType(fullNumberNode)) ||\n\t\t\t\t\t(ignoreReadonlyClassProperties &&\n\t\t\t\t\t\tisParentTSReadonlyPropertyDefinition(fullNumberNode)) ||\n\t\t\t\t\tisParseIntRadix(fullNumberNode) ||\n\t\t\t\t\tisJSXNumber(fullNumberNode) ||\n\t\t\t\t\t(ignoreArrayIndexes && isArrayIndex(fullNumberNode, value))\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (parent.type === \"VariableDeclarator\") {\n\t\t\t\t\tif (enforceConst && parent.parent.kind !== \"const\") {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: fullNumberNode,\n\t\t\t\t\t\t\tmessageId: \"useConst\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else if (\n\t\t\t\t\t!okTypes.includes(parent.type) ||\n\t\t\t\t\t(parent.type === \"AssignmentExpression\" &&\n\t\t\t\t\t\tparent.left.type === \"Identifier\")\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: fullNumberNode,\n\t\t\t\t\t\tmessageId: \"noMagic\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\traw,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n */\n\"use strict\";\n\n/**\n * Check whether a given character is a combining mark or not.\n * @param {number} codePoint The character code to check.\n * @returns {boolean} `true` if the character has the General Category of Combining Mark (M), consisting of `Mc`, `Me`, and `Mn`.\n */\nmodule.exports = function isCombiningCharacter(codePoint) {\n\treturn /^\\p{M}$/u.test(String.fromCodePoint(codePoint));\n};\n", "/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n */\n\"use strict\";\n\n/**\n * Check whether a given character is an emoji modifier.\n * @param {number} code The character code to check.\n * @returns {boolean} `true` if the character is an emoji modifier.\n */\nmodule.exports = function isEmojiModifier(code) {\n\treturn code >= 0x1f3fb && code <= 0x1f3ff;\n};\n", "/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n */\n\"use strict\";\n\n/**\n * Check whether a given character is a regional indicator symbol.\n * @param {number} code The character code to check.\n * @returns {boolean} `true` if the character is a regional indicator symbol.\n */\nmodule.exports = function isRegionalIndicatorSymbol(code) {\n\treturn code >= 0x1f1e6 && code <= 0x1f1ff;\n};\n", "/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n */\n\"use strict\";\n\n/**\n * Check whether given two characters are a surrogate pair.\n * @param {number} lead The code of the lead character.\n * @param {number} tail The code of the tail character.\n * @returns {boolean} `true` if the character pair is a surrogate pair.\n */\nmodule.exports = function isSurrogatePair(lead, tail) {\n\treturn lead >= 0xd800 && lead < 0xdc00 && tail >= 0xdc00 && tail < 0xe000;\n};\n", "/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n */\n\"use strict\";\n\nconst isCombiningCharacter = require(\"./is-combining-character\");\nconst isEmojiModifier = require(\"./is-emoji-modifier\");\nconst isRegionalIndicatorSymbol = require(\"./is-regional-indicator-symbol\");\nconst isSurrogatePair = require(\"./is-surrogate-pair\");\n\nmodule.exports = {\n\tisCombiningCharacter,\n\tisEmojiModifier,\n\tisRegionalIndicatorSymbol,\n\tisSurrogatePair,\n};\n", "/**\n * @fileoverview Common utils for regular expressions.\n * @author Josh Goldberg\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\nconst { RegExpValidator } = require(\"@eslint-community/regexpp\");\n\nconst REGEXPP_LATEST_ECMA_VERSION = 2025;\n\n/**\n * Checks if the given regular expression pattern would be valid with the `u` flag.\n * @param {number} ecmaVersion ECMAScript version to parse in.\n * @param {string} pattern The regular expression pattern to verify.\n * @param {\"u\"|\"v\"} flag The type of Unicode flag\n * @returns {boolean} `true` if the pattern would be valid with the `u` flag.\n * `false` if the pattern would be invalid with the `u` flag or the configured\n * ecmaVersion doesn't support the `u` flag.\n */\nfunction isValidWithUnicodeFlag(ecmaVersion, pattern, flag = \"u\") {\n\tif (flag === \"u\" && ecmaVersion <= 5) {\n\t\t// ecmaVersion <= 5 doesn't support the 'u' flag\n\t\treturn false;\n\t}\n\tif (flag === \"v\" && ecmaVersion <= 2023) {\n\t\treturn false;\n\t}\n\n\tconst validator = new RegExpValidator({\n\t\tecmaVersion: Math.min(ecmaVersion, REGEXPP_LATEST_ECMA_VERSION),\n\t});\n\n\ttry {\n\t\tvalidator.validatePattern(\n\t\t\tpattern,\n\t\t\tvoid 0,\n\t\t\tvoid 0,\n\t\t\tflag === \"u\"\n\t\t\t\t? {\n\t\t\t\t\t\tunicode: /* uFlag = */ true,\n\t\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t\tunicodeSets: true,\n\t\t\t\t\t},\n\t\t);\n\t} catch {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nmodule.exports = {\n\tisValidWithUnicodeFlag,\n\tREGEXPP_LATEST_ECMA_VERSION,\n};\n", "/**\n * @fileoverview Utility functions to locate the source text of each code unit in the value of a string literal or template token.\n * @author Francesco Trotta\n */\n\n\"use strict\";\n\n/**\n * Represents a code unit produced by the evaluation of a JavaScript common token like a string\n * literal or template token.\n */\nclass CodeUnit {\n\tconstructor(start, source) {\n\t\tthis.start = start;\n\t\tthis.source = source;\n\t}\n\n\tget end() {\n\t\treturn this.start + this.length;\n\t}\n\n\tget length() {\n\t\treturn this.source.length;\n\t}\n}\n\n/**\n * An object used to keep track of the position in a source text where the next characters will be read.\n */\nclass TextReader {\n\tconstructor(source) {\n\t\tthis.source = source;\n\t\tthis.pos = 0;\n\t}\n\n\t/**\n\t * Advances the reading position of the specified number of characters.\n\t * @param {number} length Number of characters to advance.\n\t * @returns {void}\n\t */\n\tadvance(length) {\n\t\tthis.pos += length;\n\t}\n\n\t/**\n\t * Reads characters from the source.\n\t * @param {number} [offset=0] The offset where reading starts, relative to the current position.\n\t * @param {number} [length=1] Number of characters to read.\n\t * @returns {string} A substring of source characters.\n\t */\n\tread(offset = 0, length = 1) {\n\t\tconst start = offset + this.pos;\n\n\t\treturn this.source.slice(start, start + length);\n\t}\n}\n\nconst SIMPLE_ESCAPE_SEQUENCES = {\n\t__proto__: null,\n\tb: \"\\b\",\n\tf: \"\\f\",\n\tn: \"\\n\",\n\tr: \"\\r\",\n\tt: \"\\t\",\n\tv: \"\\v\",\n};\n\n/**\n * Reads a hex escape sequence.\n * @param {TextReader} reader The reader should be positioned on the first hexadecimal digit.\n * @param {number} length The number of hexadecimal digits.\n * @returns {string} A code unit.\n */\nfunction readHexSequence(reader, length) {\n\tconst str = reader.read(0, length);\n\tconst charCode = parseInt(str, 16);\n\n\treader.advance(length);\n\treturn String.fromCharCode(charCode);\n}\n\n/**\n * Reads a Unicode escape sequence.\n * @param {TextReader} reader The reader should be positioned after the \"u\".\n * @returns {string} A code unit.\n */\nfunction readUnicodeSequence(reader) {\n\tconst regExp = /\\{(?<hexDigits>[\\dA-F]+)\\}/iuy;\n\n\tregExp.lastIndex = reader.pos;\n\tconst match = regExp.exec(reader.source);\n\n\tif (match) {\n\t\tconst codePoint = parseInt(match.groups.hexDigits, 16);\n\n\t\treader.pos = regExp.lastIndex;\n\t\treturn String.fromCodePoint(codePoint);\n\t}\n\treturn readHexSequence(reader, 4);\n}\n\n/**\n * Reads an octal escape sequence.\n * @param {TextReader} reader The reader should be positioned after the first octal digit.\n * @param {number} maxLength The maximum number of octal digits.\n * @returns {string} A code unit.\n */\nfunction readOctalSequence(reader, maxLength) {\n\tconst [octalStr] = reader.read(-1, maxLength).match(/^[0-7]+/u);\n\n\treader.advance(octalStr.length - 1);\n\tconst octal = parseInt(octalStr, 8);\n\n\treturn String.fromCharCode(octal);\n}\n\n/**\n * Reads an escape sequence or line continuation.\n * @param {TextReader} reader The reader should be positioned on the backslash.\n * @returns {string} A string of zero, one or two code units.\n */\nfunction readEscapeSequenceOrLineContinuation(reader) {\n\tconst char = reader.read(1);\n\n\treader.advance(2);\n\tconst unitChar = SIMPLE_ESCAPE_SEQUENCES[char];\n\n\tif (unitChar) {\n\t\treturn unitChar;\n\t}\n\tswitch (char) {\n\t\tcase \"x\":\n\t\t\treturn readHexSequence(reader, 2);\n\t\tcase \"u\":\n\t\t\treturn readUnicodeSequence(reader);\n\t\tcase \"\\r\":\n\t\t\tif (reader.read() === \"\\n\") {\n\t\t\t\treader.advance(1);\n\t\t\t}\n\n\t\t// fallthrough\n\t\tcase \"\\n\":\n\t\tcase \"\\u2028\":\n\t\tcase \"\\u2029\":\n\t\t\treturn \"\";\n\t\tcase \"0\":\n\t\tcase \"1\":\n\t\tcase \"2\":\n\t\tcase \"3\":\n\t\t\treturn readOctalSequence(reader, 3);\n\t\tcase \"4\":\n\t\tcase \"5\":\n\t\tcase \"6\":\n\t\tcase \"7\":\n\t\t\treturn readOctalSequence(reader, 2);\n\t\tdefault:\n\t\t\treturn char;\n\t}\n}\n\n/**\n * Reads an escape sequence or line continuation and generates the respective `CodeUnit` elements.\n * @param {TextReader} reader The reader should be positioned on the backslash.\n * @returns {Generator<CodeUnit>} Zero, one or two `CodeUnit` elements.\n */\nfunction* mapEscapeSequenceOrLineContinuation(reader) {\n\tconst start = reader.pos;\n\tconst str = readEscapeSequenceOrLineContinuation(reader);\n\tconst end = reader.pos;\n\tconst source = reader.source.slice(start, end);\n\n\tswitch (str.length) {\n\t\tcase 0:\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tyield new CodeUnit(start, source);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tyield new CodeUnit(start, source);\n\t\t\tyield new CodeUnit(start, source);\n\t\t\tbreak;\n\t}\n}\n\n/**\n * Parses a string literal.\n * @param {string} source The string literal to parse, including the delimiting quotes.\n * @returns {CodeUnit[]} A list of code units produced by the string literal.\n */\nfunction parseStringLiteral(source) {\n\tconst reader = new TextReader(source);\n\tconst quote = reader.read();\n\n\treader.advance(1);\n\tconst codeUnits = [];\n\n\tfor (;;) {\n\t\tconst char = reader.read();\n\n\t\tif (char === quote) {\n\t\t\tbreak;\n\t\t}\n\t\tif (char === \"\\\\\") {\n\t\t\tcodeUnits.push(...mapEscapeSequenceOrLineContinuation(reader));\n\t\t} else {\n\t\t\tcodeUnits.push(new CodeUnit(reader.pos, char));\n\t\t\treader.advance(1);\n\t\t}\n\t}\n\treturn codeUnits;\n}\n\n/**\n * Parses a template token.\n * @param {string} source The template token to parse, including the delimiting sequences `` ` ``, `${` and `}`.\n * @returns {CodeUnit[]} A list of code units produced by the template token.\n */\nfunction parseTemplateToken(source) {\n\tconst reader = new TextReader(source);\n\n\treader.advance(1);\n\tconst codeUnits = [];\n\n\tfor (;;) {\n\t\tconst char = reader.read();\n\n\t\tif (char === \"`\" || (char === \"$\" && reader.read(1) === \"{\")) {\n\t\t\tbreak;\n\t\t}\n\t\tif (char === \"\\\\\") {\n\t\t\tcodeUnits.push(...mapEscapeSequenceOrLineContinuation(reader));\n\t\t} else {\n\t\t\tlet unitSource;\n\n\t\t\tif (char === \"\\r\" && reader.read(1) === \"\\n\") {\n\t\t\t\tunitSource = \"\\r\\n\";\n\t\t\t} else {\n\t\t\t\tunitSource = char;\n\t\t\t}\n\t\t\tcodeUnits.push(new CodeUnit(reader.pos, unitSource));\n\t\t\treader.advance(unitSource.length);\n\t\t}\n\t}\n\treturn codeUnits;\n}\n\nmodule.exports = { parseStringLiteral, parseTemplateToken };\n", "/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n */\n\"use strict\";\n\nconst {\n\tCALL,\n\tCONSTRUCT,\n\tReferenceTracker,\n\tgetStaticValue,\n\tgetStringIfConstant,\n} = require(\"@eslint-community/eslint-utils\");\nconst { RegExpParser, visitRegExpAST } = require(\"@eslint-community/regexpp\");\nconst {\n\tisCombiningCharacter,\n\tisEmojiModifier,\n\tisRegionalIndicatorSymbol,\n\tisSurrogatePair,\n} = require(\"./utils/unicode\");\nconst astUtils = require(\"./utils/ast-utils.js\");\nconst { isValidWithUnicodeFlag } = require(\"./utils/regular-expressions\");\nconst {\n\tparseStringLiteral,\n\tparseTemplateToken,\n} = require(\"./utils/char-source\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * @typedef {import('@eslint-community/regexpp').AST.Character} Character\n * @typedef {import('@eslint-community/regexpp').AST.CharacterClassElement} CharacterClassElement\n */\n\n/**\n * Iterate character sequences of a given nodes.\n *\n * CharacterClassRange syntax can steal a part of character sequence,\n * so this function reverts CharacterClassRange syntax and restore the sequence.\n * @param {CharacterClassElement[]} nodes The node list to iterate character sequences.\n * @returns {IterableIterator<Character[]>} The list of character sequences.\n */\nfunction* iterateCharacterSequence(nodes) {\n\t/** @type {Character[]} */\n\tlet seq = [];\n\n\tfor (const node of nodes) {\n\t\tswitch (node.type) {\n\t\t\tcase \"Character\":\n\t\t\t\tseq.push(node);\n\t\t\t\tbreak;\n\n\t\t\tcase \"CharacterClassRange\":\n\t\t\t\tseq.push(node.min);\n\t\t\t\tyield seq;\n\t\t\t\tseq = [node.max];\n\t\t\t\tbreak;\n\n\t\t\tcase \"CharacterSet\":\n\t\t\tcase \"CharacterClass\": // [[]] nesting character class\n\t\t\tcase \"ClassStringDisjunction\": // \\q{...}\n\t\t\tcase \"ExpressionCharacterClass\": // [A--B]\n\t\t\t\tif (seq.length > 0) {\n\t\t\t\t\tyield seq;\n\t\t\t\t\tseq = [];\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// no default\n\t\t}\n\t}\n\n\tif (seq.length > 0) {\n\t\tyield seq;\n\t}\n}\n\n/**\n * Checks whether the given character node is a Unicode code point escape or not.\n * @param {Character} char the character node to check.\n * @returns {boolean} `true` if the character node is a Unicode code point escape.\n */\nfunction isUnicodeCodePointEscape(char) {\n\treturn /^\\\\u\\{[\\da-f]+\\}$/iu.test(char.raw);\n}\n\n/**\n * Each function returns matched characters if it detects that kind of problem.\n * @type {Record<string, (chars: Character[]) => IterableIterator<Character[]>>}\n */\nconst findCharacterSequences = {\n\t*surrogatePairWithoutUFlag(chars) {\n\t\tfor (const [index, char] of chars.entries()) {\n\t\t\tconst previous = chars[index - 1];\n\n\t\t\tif (\n\t\t\t\tprevious &&\n\t\t\t\tchar &&\n\t\t\t\tisSurrogatePair(previous.value, char.value) &&\n\t\t\t\t!isUnicodeCodePointEscape(previous) &&\n\t\t\t\t!isUnicodeCodePointEscape(char)\n\t\t\t) {\n\t\t\t\tyield [previous, char];\n\t\t\t}\n\t\t}\n\t},\n\n\t*surrogatePair(chars) {\n\t\tfor (const [index, char] of chars.entries()) {\n\t\t\tconst previous = chars[index - 1];\n\n\t\t\tif (\n\t\t\t\tprevious &&\n\t\t\t\tchar &&\n\t\t\t\tisSurrogatePair(previous.value, char.value) &&\n\t\t\t\t(isUnicodeCodePointEscape(previous) ||\n\t\t\t\t\tisUnicodeCodePointEscape(char))\n\t\t\t) {\n\t\t\t\tyield [previous, char];\n\t\t\t}\n\t\t}\n\t},\n\n\t*combiningClass(chars, unfilteredChars) {\n\t\t/*\n\t\t * When `allowEscape` is `true`, a combined character should only be allowed if the combining mark appears as an escape sequence.\n\t\t * This means that the base character should be considered even if it's escaped.\n\t\t */\n\t\tfor (const [index, char] of chars.entries()) {\n\t\t\tconst previous = unfilteredChars[index - 1];\n\n\t\t\tif (\n\t\t\t\tprevious &&\n\t\t\t\tchar &&\n\t\t\t\tisCombiningCharacter(char.value) &&\n\t\t\t\t!isCombiningCharacter(previous.value)\n\t\t\t) {\n\t\t\t\tyield [previous, char];\n\t\t\t}\n\t\t}\n\t},\n\n\t*emojiModifier(chars) {\n\t\tfor (const [index, char] of chars.entries()) {\n\t\t\tconst previous = chars[index - 1];\n\n\t\t\tif (\n\t\t\t\tprevious &&\n\t\t\t\tchar &&\n\t\t\t\tisEmojiModifier(char.value) &&\n\t\t\t\t!isEmojiModifier(previous.value)\n\t\t\t) {\n\t\t\t\tyield [previous, char];\n\t\t\t}\n\t\t}\n\t},\n\n\t*regionalIndicatorSymbol(chars) {\n\t\tfor (const [index, char] of chars.entries()) {\n\t\t\tconst previous = chars[index - 1];\n\n\t\t\tif (\n\t\t\t\tprevious &&\n\t\t\t\tchar &&\n\t\t\t\tisRegionalIndicatorSymbol(char.value) &&\n\t\t\t\tisRegionalIndicatorSymbol(previous.value)\n\t\t\t) {\n\t\t\t\tyield [previous, char];\n\t\t\t}\n\t\t}\n\t},\n\n\t*zwj(chars) {\n\t\tlet sequence = null;\n\n\t\tfor (const [index, char] of chars.entries()) {\n\t\t\tconst previous = chars[index - 1];\n\t\t\tconst next = chars[index + 1];\n\n\t\t\tif (\n\t\t\t\tprevious &&\n\t\t\t\tchar &&\n\t\t\t\tnext &&\n\t\t\t\tchar.value === 0x200d &&\n\t\t\t\tprevious.value !== 0x200d &&\n\t\t\t\tnext.value !== 0x200d\n\t\t\t) {\n\t\t\t\tif (sequence) {\n\t\t\t\t\tif (sequence.at(-1) === previous) {\n\t\t\t\t\t\tsequence.push(char, next); // append to the sequence\n\t\t\t\t\t} else {\n\t\t\t\t\t\tyield sequence;\n\t\t\t\t\t\tsequence = chars.slice(index - 1, index + 2);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsequence = chars.slice(index - 1, index + 2);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (sequence) {\n\t\t\tyield sequence;\n\t\t}\n\t},\n};\n\nconst kinds = Object.keys(findCharacterSequences);\n\n/**\n * Gets the value of the given node if it's a static value other than a regular expression object,\n * or the node's `regex` property.\n * The purpose of this method is to provide a replacement for `getStaticValue` in environments where certain regular expressions cannot be evaluated.\n * A known example is Node.js 18 which does not support the `v` flag.\n * Calling `getStaticValue` on a regular expression node with the `v` flag on Node.js 18 always returns `null`.\n * A limitation of this method is that it can only detect a regular expression if the specified node is itself a regular expression literal node.\n * @param {ASTNode | undefined} node The node to be inspected.\n * @param {Scope} initialScope Scope to start finding variables. This function tries to resolve identifier references which are in the given scope.\n * @returns {{ value: any } | { regex: { pattern: string, flags: string } } | null} The static value of the node, or `null`.\n */\nfunction getStaticValueOrRegex(node, initialScope) {\n\tif (!node) {\n\t\treturn null;\n\t}\n\tif (node.type === \"Literal\" && node.regex) {\n\t\treturn { regex: node.regex };\n\t}\n\n\tconst staticValue = getStaticValue(node, initialScope);\n\n\tif (staticValue?.value instanceof RegExp) {\n\t\treturn null;\n\t}\n\treturn staticValue;\n}\n\n/**\n * Checks whether a specified regexpp character is represented as an acceptable escape sequence.\n * This function requires the source text of the character to be known.\n * @param {Character} char Character to check.\n * @param {string} charSource Source text of the character to check.\n * @returns {boolean} Whether the specified regexpp character is represented as an acceptable escape sequence.\n */\nfunction checkForAcceptableEscape(char, charSource) {\n\tif (!charSource.startsWith(\"\\\\\")) {\n\t\treturn false;\n\t}\n\tconst match = /(?<=^\\\\+).$/su.exec(charSource);\n\n\treturn match?.[0] !== String.fromCodePoint(char.value);\n}\n\n/**\n * Checks whether a specified regexpp character is represented as an acceptable escape sequence.\n * This function works with characters that are produced by a string or template literal.\n * It requires the source text and the CodeUnit list of the literal to be known.\n * @param {Character} char Character to check.\n * @param {string} nodeSource Source text of the string or template literal that produces the character.\n * @param {CodeUnit[]} codeUnits List of CodeUnit objects of the literal that produces the character.\n * @returns {boolean} Whether the specified regexpp character is represented as an acceptable escape sequence.\n */\nfunction checkForAcceptableEscapeInString(char, nodeSource, codeUnits) {\n\tconst firstIndex = char.start;\n\tconst lastIndex = char.end - 1;\n\tconst start = codeUnits[firstIndex].start;\n\tconst end = codeUnits[lastIndex].end;\n\tconst charSource = nodeSource.slice(start, end);\n\n\treturn checkForAcceptableEscape(char, charSource);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowEscape: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow characters which are made with multiple code points in character class syntax\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-misleading-character-class\",\n\t\t},\n\n\t\thasSuggestions: true,\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowEscape: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tsurrogatePairWithoutUFlag:\n\t\t\t\t\"Unexpected surrogate pair in character class. Use 'u' flag.\",\n\t\t\tsurrogatePair: \"Unexpected surrogate pair in character class.\",\n\t\t\tcombiningClass: \"Unexpected combined character in character class.\",\n\t\t\temojiModifier: \"Unexpected modified Emoji in character class.\",\n\t\t\tregionalIndicatorSymbol:\n\t\t\t\t\"Unexpected national flag in character class.\",\n\t\t\tzwj: \"Unexpected joined character sequence in character class.\",\n\t\t\tsuggestUnicodeFlag: \"Add unicode 'u' flag to regex.\",\n\t\t},\n\t},\n\tcreate(context) {\n\t\tconst [{ allowEscape }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst parser = new RegExpParser();\n\t\tconst checkedPatternNodes = new Set();\n\n\t\t/**\n\t\t * Verify a given regular expression.\n\t\t * @param {Node} node The node to report.\n\t\t * @param {string} pattern The regular expression pattern to verify.\n\t\t * @param {string} flags The flags of the regular expression.\n\t\t * @param {Function} unicodeFixer Fixer for missing \"u\" flag.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction verify(node, pattern, flags, unicodeFixer) {\n\t\t\tlet patternNode;\n\n\t\t\ttry {\n\t\t\t\tpatternNode = parser.parsePattern(pattern, 0, pattern.length, {\n\t\t\t\t\tunicode: flags.includes(\"u\"),\n\t\t\t\t\tunicodeSets: flags.includes(\"v\"),\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\t// Ignore regular expressions with syntax errors\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet codeUnits = null;\n\n\t\t\t/**\n\t\t\t * Checks whether a specified regexpp character is represented as an acceptable escape sequence.\n\t\t\t * For the purposes of this rule, an escape sequence is considered acceptable if it consists of one or more backslashes followed by the character being escaped.\n\t\t\t * @param {Character} char Character to check.\n\t\t\t * @returns {boolean} Whether the specified regexpp character is represented as an acceptable escape sequence.\n\t\t\t */\n\t\t\tfunction isAcceptableEscapeSequence(char) {\n\t\t\t\tif (node.type === \"Literal\" && node.regex) {\n\t\t\t\t\treturn checkForAcceptableEscape(char, char.raw);\n\t\t\t\t}\n\t\t\t\tif (node.type === \"Literal\" && typeof node.value === \"string\") {\n\t\t\t\t\tconst nodeSource = node.raw;\n\n\t\t\t\t\tcodeUnits ??= parseStringLiteral(nodeSource);\n\n\t\t\t\t\treturn checkForAcceptableEscapeInString(\n\t\t\t\t\t\tchar,\n\t\t\t\t\t\tnodeSource,\n\t\t\t\t\t\tcodeUnits,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (astUtils.isStaticTemplateLiteral(node)) {\n\t\t\t\t\tconst nodeSource = sourceCode.getText(node);\n\n\t\t\t\t\tcodeUnits ??= parseTemplateToken(nodeSource);\n\n\t\t\t\t\treturn checkForAcceptableEscapeInString(\n\t\t\t\t\t\tchar,\n\t\t\t\t\t\tnodeSource,\n\t\t\t\t\t\tcodeUnits,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst foundKindMatches = new Map();\n\n\t\t\tvisitRegExpAST(patternNode, {\n\t\t\t\tonCharacterClassEnter(ccNode) {\n\t\t\t\t\tfor (const unfilteredChars of iterateCharacterSequence(\n\t\t\t\t\t\tccNode.elements,\n\t\t\t\t\t)) {\n\t\t\t\t\t\tlet chars;\n\n\t\t\t\t\t\tif (allowEscape) {\n\t\t\t\t\t\t\t// Replace escape sequences with null to avoid having them flagged.\n\t\t\t\t\t\t\tchars = unfilteredChars.map(char =>\n\t\t\t\t\t\t\t\tisAcceptableEscapeSequence(char) ? null : char,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tchars = unfilteredChars;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const kind of kinds) {\n\t\t\t\t\t\t\tconst matches = findCharacterSequences[kind](\n\t\t\t\t\t\t\t\tchars,\n\t\t\t\t\t\t\t\tunfilteredChars,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (foundKindMatches.has(kind)) {\n\t\t\t\t\t\t\t\tfoundKindMatches.get(kind).push(...matches);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfoundKindMatches.set(kind, [...matches]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t/**\n\t\t\t * Finds the report loc(s) for a range of matches.\n\t\t\t * Only literals and expression-less templates generate granular errors.\n\t\t\t * @param {Character[][]} matches Lists of individual characters being reported on.\n\t\t\t * @returns {Location[]} locs for context.report.\n\t\t\t * @see https://github.com/eslint/eslint/pull/17515\n\t\t\t */\n\t\t\tfunction getNodeReportLocations(matches) {\n\t\t\t\tif (\n\t\t\t\t\t!astUtils.isStaticTemplateLiteral(node) &&\n\t\t\t\t\tnode.type !== \"Literal\"\n\t\t\t\t) {\n\t\t\t\t\treturn matches.length ? [node.loc] : [];\n\t\t\t\t}\n\t\t\t\treturn matches.map(chars => {\n\t\t\t\t\tconst firstIndex = chars[0].start;\n\t\t\t\t\tconst lastIndex = chars.at(-1).end - 1;\n\t\t\t\t\tlet start;\n\t\t\t\t\tlet end;\n\n\t\t\t\t\tif (node.type === \"TemplateLiteral\") {\n\t\t\t\t\t\tconst source = sourceCode.getText(node);\n\t\t\t\t\t\tconst offset = node.range[0];\n\n\t\t\t\t\t\tcodeUnits ??= parseTemplateToken(source);\n\t\t\t\t\t\tstart = offset + codeUnits[firstIndex].start;\n\t\t\t\t\t\tend = offset + codeUnits[lastIndex].end;\n\t\t\t\t\t} else if (typeof node.value === \"string\") {\n\t\t\t\t\t\t// String Literal\n\t\t\t\t\t\tconst source = node.raw;\n\t\t\t\t\t\tconst offset = node.range[0];\n\n\t\t\t\t\t\tcodeUnits ??= parseStringLiteral(source);\n\t\t\t\t\t\tstart = offset + codeUnits[firstIndex].start;\n\t\t\t\t\t\tend = offset + codeUnits[lastIndex].end;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// RegExp Literal\n\t\t\t\t\t\tconst offset = node.range[0] + 1; // Add 1 to skip the leading slash.\n\n\t\t\t\t\t\tstart = offset + firstIndex;\n\t\t\t\t\t\tend = offset + lastIndex + 1;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstart: sourceCode.getLocFromIndex(start),\n\t\t\t\t\t\tend: sourceCode.getLocFromIndex(end),\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfor (const [kind, matches] of foundKindMatches) {\n\t\t\t\tlet suggest;\n\n\t\t\t\tif (kind === \"surrogatePairWithoutUFlag\") {\n\t\t\t\t\tsuggest = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmessageId: \"suggestUnicodeFlag\",\n\t\t\t\t\t\t\tfix: unicodeFixer,\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\tconst locs = getNodeReportLocations(matches);\n\n\t\t\t\tfor (const loc of locs) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc,\n\t\t\t\t\t\tmessageId: kind,\n\t\t\t\t\t\tsuggest,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t\"Literal[regex]\"(node) {\n\t\t\t\tif (checkedPatternNodes.has(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tverify(node, node.regex.pattern, node.regex.flags, fixer => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!isValidWithUnicodeFlag(\n\t\t\t\t\t\t\tcontext.languageOptions.ecmaVersion,\n\t\t\t\t\t\t\tnode.regex.pattern,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fixer.insertTextAfter(node, \"u\");\n\t\t\t\t});\n\t\t\t},\n\t\t\tProgram(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\t\t\t\tconst tracker = new ReferenceTracker(scope);\n\n\t\t\t\t/*\n\t\t\t\t * Iterate calls of RegExp.\n\t\t\t\t * E.g., `new RegExp()`, `RegExp()`, `new window.RegExp()`,\n\t\t\t\t *       `const {RegExp: a} = window; new a()`, etc...\n\t\t\t\t */\n\t\t\t\tfor (const { node: refNode } of tracker.iterateGlobalReferences(\n\t\t\t\t\t{\n\t\t\t\t\t\tRegExp: { [CALL]: true, [CONSTRUCT]: true },\n\t\t\t\t\t},\n\t\t\t\t)) {\n\t\t\t\t\tlet pattern, flags;\n\t\t\t\t\tconst [patternNode, flagsNode] = refNode.arguments;\n\t\t\t\t\tconst evaluatedPattern = getStaticValueOrRegex(\n\t\t\t\t\t\tpatternNode,\n\t\t\t\t\t\tscope,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (!evaluatedPattern) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (flagsNode) {\n\t\t\t\t\t\tif (evaluatedPattern.regex) {\n\t\t\t\t\t\t\tpattern = evaluatedPattern.regex.pattern;\n\t\t\t\t\t\t\tcheckedPatternNodes.add(patternNode);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpattern = String(evaluatedPattern.value);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tflags = getStringIfConstant(flagsNode, scope);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (evaluatedPattern.regex) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpattern = String(evaluatedPattern.value);\n\t\t\t\t\t\tflags = \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof flags === \"string\") {\n\t\t\t\t\t\tverify(patternNode, pattern, flags, fixer => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t!isValidWithUnicodeFlag(\n\t\t\t\t\t\t\t\t\tcontext.languageOptions.ecmaVersion,\n\t\t\t\t\t\t\t\t\tpattern,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (refNode.arguments.length === 1) {\n\t\t\t\t\t\t\t\tconst penultimateToken =\n\t\t\t\t\t\t\t\t\tsourceCode.getLastToken(refNode, {\n\t\t\t\t\t\t\t\t\t\tskip: 1,\n\t\t\t\t\t\t\t\t\t}); // skip closing parenthesis\n\n\t\t\t\t\t\t\t\treturn fixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\tpenultimateToken,\n\t\t\t\t\t\t\t\t\tastUtils.isCommaToken(penultimateToken)\n\t\t\t\t\t\t\t\t\t\t? ' \"u\",'\n\t\t\t\t\t\t\t\t\t\t: ', \"u\"',\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t(flagsNode.type === \"Literal\" &&\n\t\t\t\t\t\t\t\t\ttypeof flagsNode.value === \"string\") ||\n\t\t\t\t\t\t\t\tflagsNode.type === \"TemplateLiteral\"\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tconst range = [\n\t\t\t\t\t\t\t\t\tflagsNode.range[0],\n\t\t\t\t\t\t\t\t\tflagsNode.range[1] - 1,\n\t\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\t\treturn fixer.insertTextAfterRange(range, \"u\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow mixed binary operators.\n * @author Toru Nagashima\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils.js\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst ARITHMETIC_OPERATORS = [\"+\", \"-\", \"*\", \"/\", \"%\", \"**\"];\nconst BITWISE_OPERATORS = [\"&\", \"|\", \"^\", \"~\", \"<<\", \">>\", \">>>\"];\nconst COMPARISON_OPERATORS = [\"==\", \"!=\", \"===\", \"!==\", \">\", \">=\", \"<\", \"<=\"];\nconst LOGICAL_OPERATORS = [\"&&\", \"||\"];\nconst RELATIONAL_OPERATORS = [\"in\", \"instanceof\"];\nconst TERNARY_OPERATOR = [\"?:\"];\nconst COALESCE_OPERATOR = [\"??\"];\nconst ALL_OPERATORS = [].concat(\n\tARITHMETIC_OPERATORS,\n\tBITWISE_OPERATORS,\n\tCOMPARISON_OPERATORS,\n\tLOGICAL_OPERATORS,\n\tRELATIONAL_OPERATORS,\n\tTERNARY_OPERATOR,\n\tCOALESCE_OPERATOR,\n);\nconst DEFAULT_GROUPS = [\n\tARITHMETIC_OPERATORS,\n\tBITWISE_OPERATORS,\n\tCOMPARISON_OPERATORS,\n\tLOGICAL_OPERATORS,\n\tRELATIONAL_OPERATORS,\n];\nconst TARGET_NODE_TYPE = /^(?:Binary|Logical|Conditional)Expression$/u;\n\n/**\n * Normalizes options.\n * @param {Object|undefined} options A options object to normalize.\n * @returns {Object} Normalized option object.\n */\nfunction normalizeOptions(options = {}) {\n\tconst hasGroups = options.groups && options.groups.length > 0;\n\tconst groups = hasGroups ? options.groups : DEFAULT_GROUPS;\n\tconst allowSamePrecedence = options.allowSamePrecedence !== false;\n\n\treturn {\n\t\tgroups,\n\t\tallowSamePrecedence,\n\t};\n}\n\n/**\n * Checks whether any group which includes both given operator exists or not.\n * @param {Array<string[]>} groups A list of groups to check.\n * @param {string} left An operator.\n * @param {string} right Another operator.\n * @returns {boolean} `true` if such group existed.\n */\nfunction includesBothInAGroup(groups, left, right) {\n\treturn groups.some(group => group.includes(left) && group.includes(right));\n}\n\n/**\n * Checks whether the given node is a conditional expression and returns the test node else the left node.\n * @param {ASTNode} node A node which can be a BinaryExpression or a LogicalExpression node.\n * This parent node can be BinaryExpression, LogicalExpression\n *      , or a ConditionalExpression node\n * @returns {ASTNode} node the appropriate node(left or test).\n */\nfunction getChildNode(node) {\n\treturn node.type === \"ConditionalExpression\" ? node.test : node.left;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-mixed-operators\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/no-mixed-operators\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow mixed binary operators\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-mixed-operators\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tgroups: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\titems: { enum: ALL_OPERATORS },\n\t\t\t\t\t\t\tminItems: 2,\n\t\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t\tallowSamePrecedence: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedMixedOperator:\n\t\t\t\t\"Unexpected mix of '{{leftOperator}}' and '{{rightOperator}}'. Use parentheses to clarify the intended order of operations.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst options = normalizeOptions(context.options[0]);\n\n\t\t/**\n\t\t * Checks whether a given node should be ignored by options or not.\n\t\t * @param {ASTNode} node A node to check. This is a BinaryExpression\n\t\t *      node or a LogicalExpression node. This parent node is one of\n\t\t *      them, too.\n\t\t * @returns {boolean} `true` if the node should be ignored.\n\t\t */\n\t\tfunction shouldIgnore(node) {\n\t\t\tconst a = node;\n\t\t\tconst b = node.parent;\n\n\t\t\treturn (\n\t\t\t\t!includesBothInAGroup(\n\t\t\t\t\toptions.groups,\n\t\t\t\t\ta.operator,\n\t\t\t\t\tb.type === \"ConditionalExpression\" ? \"?:\" : b.operator,\n\t\t\t\t) ||\n\t\t\t\t(options.allowSamePrecedence &&\n\t\t\t\t\tastUtils.getPrecedence(a) === astUtils.getPrecedence(b))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether the operator of a given node is mixed with parent\n\t\t * node's operator or not.\n\t\t * @param {ASTNode} node A node to check. This is a BinaryExpression\n\t\t *      node or a LogicalExpression node. This parent node is one of\n\t\t *      them, too.\n\t\t * @returns {boolean} `true` if the node was mixed.\n\t\t */\n\t\tfunction isMixedWithParent(node) {\n\t\t\treturn (\n\t\t\t\tnode.operator !== node.parent.operator &&\n\t\t\t\t!astUtils.isParenthesised(sourceCode, node)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Gets the operator token of a given node.\n\t\t * @param {ASTNode} node A node to check. This is a BinaryExpression\n\t\t *      node or a LogicalExpression node.\n\t\t * @returns {Token} The operator token of the node.\n\t\t */\n\t\tfunction getOperatorToken(node) {\n\t\t\treturn sourceCode.getTokenAfter(\n\t\t\t\tgetChildNode(node),\n\t\t\t\tastUtils.isNotClosingParenToken,\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Reports both the operator of a given node and the operator of the\n\t\t * parent node.\n\t\t * @param {ASTNode} node A node to check. This is a BinaryExpression\n\t\t *      node or a LogicalExpression node. This parent node is one of\n\t\t *      them, too.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportBothOperators(node) {\n\t\t\tconst parent = node.parent;\n\t\t\tconst left = getChildNode(parent) === node ? node : parent;\n\t\t\tconst right = getChildNode(parent) !== node ? node : parent;\n\t\t\tconst data = {\n\t\t\t\tleftOperator: left.operator || \"?:\",\n\t\t\t\trightOperator: right.operator || \"?:\",\n\t\t\t};\n\n\t\t\tcontext.report({\n\t\t\t\tnode: left,\n\t\t\t\tloc: getOperatorToken(left).loc,\n\t\t\t\tmessageId: \"unexpectedMixedOperator\",\n\t\t\t\tdata,\n\t\t\t});\n\t\t\tcontext.report({\n\t\t\t\tnode: right,\n\t\t\t\tloc: getOperatorToken(right).loc,\n\t\t\t\tmessageId: \"unexpectedMixedOperator\",\n\t\t\t\tdata,\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Checks between the operator of this node and the operator of the\n\t\t * parent node.\n\t\t * @param {ASTNode} node A node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction check(node) {\n\t\t\tif (\n\t\t\t\tTARGET_NODE_TYPE.test(node.parent.type) &&\n\t\t\t\tisMixedWithParent(node) &&\n\t\t\t\t!shouldIgnore(node)\n\t\t\t) {\n\t\t\t\treportBothOperators(node);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tBinaryExpression: check,\n\t\t\tLogicalExpression: check,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce grouped require statements for Node.JS\n * @author Raphael Pigulla\n * @deprecated in ESLint v7.0.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Node.js rules were moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules\",\n\t\t\tdeprecatedSince: \"7.0.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"eslint-plugin-n now maintains deprecated Node.js-related rules.\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"eslint-plugin-n\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-mixed-requires\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules/no-mixed-requires.md\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow `require` calls to be mixed with regular variable declarations\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-mixed-requires\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tgrouping: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tallowCall: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tnoMixRequire: \"Do not mix 'require' and other declarations.\",\n\t\t\tnoMixCoreModuleFileComputed:\n\t\t\t\t\"Do not mix core, module, file and computed requires.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst options = context.options[0];\n\t\tlet grouping = false,\n\t\t\tallowCall = false;\n\n\t\tif (typeof options === \"object\") {\n\t\t\tgrouping = options.grouping;\n\t\t\tallowCall = options.allowCall;\n\t\t} else {\n\t\t\tgrouping = !!options;\n\t\t}\n\n\t\t/**\n\t\t * Returns the list of built-in modules.\n\t\t * @returns {string[]} An array of built-in Node.js modules.\n\t\t */\n\t\tfunction getBuiltinModules() {\n\t\t\t/*\n\t\t\t * This list is generated using:\n\t\t\t * `require(\"repl\")._builtinLibs.concat('repl').sort()`\n\t\t\t * This particular list is as per nodejs v0.12.2 and iojs v0.7.1\n\t\t\t */\n\t\t\treturn [\n\t\t\t\t\"assert\",\n\t\t\t\t\"buffer\",\n\t\t\t\t\"child_process\",\n\t\t\t\t\"cluster\",\n\t\t\t\t\"crypto\",\n\t\t\t\t\"dgram\",\n\t\t\t\t\"dns\",\n\t\t\t\t\"domain\",\n\t\t\t\t\"events\",\n\t\t\t\t\"fs\",\n\t\t\t\t\"http\",\n\t\t\t\t\"https\",\n\t\t\t\t\"net\",\n\t\t\t\t\"os\",\n\t\t\t\t\"path\",\n\t\t\t\t\"punycode\",\n\t\t\t\t\"querystring\",\n\t\t\t\t\"readline\",\n\t\t\t\t\"repl\",\n\t\t\t\t\"smalloc\",\n\t\t\t\t\"stream\",\n\t\t\t\t\"string_decoder\",\n\t\t\t\t\"tls\",\n\t\t\t\t\"tty\",\n\t\t\t\t\"url\",\n\t\t\t\t\"util\",\n\t\t\t\t\"v8\",\n\t\t\t\t\"vm\",\n\t\t\t\t\"zlib\",\n\t\t\t];\n\t\t}\n\n\t\tconst BUILTIN_MODULES = getBuiltinModules();\n\n\t\tconst DECL_REQUIRE = \"require\",\n\t\t\tDECL_UNINITIALIZED = \"uninitialized\",\n\t\t\tDECL_OTHER = \"other\";\n\n\t\tconst REQ_CORE = \"core\",\n\t\t\tREQ_FILE = \"file\",\n\t\t\tREQ_MODULE = \"module\",\n\t\t\tREQ_COMPUTED = \"computed\";\n\n\t\t/**\n\t\t * Determines the type of a declaration statement.\n\t\t * @param {ASTNode} initExpression The init node of the VariableDeclarator.\n\t\t * @returns {string} The type of declaration represented by the expression.\n\t\t */\n\t\tfunction getDeclarationType(initExpression) {\n\t\t\tif (!initExpression) {\n\t\t\t\t// \"var x;\"\n\t\t\t\treturn DECL_UNINITIALIZED;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tinitExpression.type === \"CallExpression\" &&\n\t\t\t\tinitExpression.callee.type === \"Identifier\" &&\n\t\t\t\tinitExpression.callee.name === \"require\"\n\t\t\t) {\n\t\t\t\t// \"var x = require('util');\"\n\t\t\t\treturn DECL_REQUIRE;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tallowCall &&\n\t\t\t\tinitExpression.type === \"CallExpression\" &&\n\t\t\t\tinitExpression.callee.type === \"CallExpression\"\n\t\t\t) {\n\t\t\t\t// \"var x = require('diagnose')('sub-module');\"\n\t\t\t\treturn getDeclarationType(initExpression.callee);\n\t\t\t}\n\t\t\tif (initExpression.type === \"MemberExpression\") {\n\t\t\t\t// \"var x = require('glob').Glob;\"\n\t\t\t\treturn getDeclarationType(initExpression.object);\n\t\t\t}\n\n\t\t\t// \"var x = 42;\"\n\t\t\treturn DECL_OTHER;\n\t\t}\n\n\t\t/**\n\t\t * Determines the type of module that is loaded via require.\n\t\t * @param {ASTNode} initExpression The init node of the VariableDeclarator.\n\t\t * @returns {string} The module type.\n\t\t */\n\t\tfunction inferModuleType(initExpression) {\n\t\t\tif (initExpression.type === \"MemberExpression\") {\n\t\t\t\t// \"var x = require('glob').Glob;\"\n\t\t\t\treturn inferModuleType(initExpression.object);\n\t\t\t}\n\t\t\tif (initExpression.arguments.length === 0) {\n\t\t\t\t// \"var x = require();\"\n\t\t\t\treturn REQ_COMPUTED;\n\t\t\t}\n\n\t\t\tconst arg = initExpression.arguments[0];\n\n\t\t\tif (arg.type !== \"Literal\" || typeof arg.value !== \"string\") {\n\t\t\t\t// \"var x = require(42);\"\n\t\t\t\treturn REQ_COMPUTED;\n\t\t\t}\n\n\t\t\tif (BUILTIN_MODULES.includes(arg.value)) {\n\t\t\t\t// \"var fs = require('fs');\"\n\t\t\t\treturn REQ_CORE;\n\t\t\t}\n\t\t\tif (/^\\.{0,2}\\//u.test(arg.value)) {\n\t\t\t\t// \"var utils = require('./utils');\"\n\t\t\t\treturn REQ_FILE;\n\t\t\t}\n\n\t\t\t// \"var async = require('async');\"\n\t\t\treturn REQ_MODULE;\n\t\t}\n\n\t\t/**\n\t\t * Check if the list of variable declarations is mixed, i.e. whether it\n\t\t * contains both require and other declarations.\n\t\t * @param {ASTNode} declarations The list of VariableDeclarators.\n\t\t * @returns {boolean} True if the declarations are mixed, false if not.\n\t\t */\n\t\tfunction isMixed(declarations) {\n\t\t\tconst contains = {};\n\n\t\t\tdeclarations.forEach(declaration => {\n\t\t\t\tconst type = getDeclarationType(declaration.init);\n\n\t\t\t\tcontains[type] = true;\n\t\t\t});\n\n\t\t\treturn !!(\n\t\t\t\tcontains[DECL_REQUIRE] &&\n\t\t\t\t(contains[DECL_UNINITIALIZED] || contains[DECL_OTHER])\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check if all require declarations in the given list are of the same\n\t\t * type.\n\t\t * @param {ASTNode} declarations The list of VariableDeclarators.\n\t\t * @returns {boolean} True if the declarations are grouped, false if not.\n\t\t */\n\t\tfunction isGrouped(declarations) {\n\t\t\tconst found = {};\n\n\t\t\tdeclarations.forEach(declaration => {\n\t\t\t\tif (getDeclarationType(declaration.init) === DECL_REQUIRE) {\n\t\t\t\t\tfound[inferModuleType(declaration.init)] = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn Object.keys(found).length <= 1;\n\t\t}\n\n\t\treturn {\n\t\t\tVariableDeclaration(node) {\n\t\t\t\tif (isMixed(node.declarations)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"noMixRequire\",\n\t\t\t\t\t});\n\t\t\t\t} else if (grouping && !isGrouped(node.declarations)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"noMixCoreModuleFileComputed\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallow mixed spaces and tabs for indentation\n * @author Jary Niebur\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-mixed-spaces-and-tabs\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/no-mixed-spaces-and-tabs\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow mixed spaces and tabs for indentation\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-mixed-spaces-and-tabs\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"smart-tabs\", true, false],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tmixedSpacesAndTabs: \"Mixed spaces and tabs.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tlet smartTabs;\n\n\t\tswitch (context.options[0]) {\n\t\t\tcase true: // Support old syntax, maybe add deprecation warning here\n\t\t\tcase \"smart-tabs\":\n\t\t\t\tsmartTabs = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tsmartTabs = false;\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\tconst lines = sourceCode.lines,\n\t\t\t\t\tcomments = sourceCode.getAllComments(),\n\t\t\t\t\tignoredCommentLines = new Set();\n\n\t\t\t\t// Add all lines except the first ones.\n\t\t\t\tcomments.forEach(comment => {\n\t\t\t\t\tfor (\n\t\t\t\t\t\tlet i = comment.loc.start.line + 1;\n\t\t\t\t\t\ti <= comment.loc.end.line;\n\t\t\t\t\t\ti++\n\t\t\t\t\t) {\n\t\t\t\t\t\tignoredCommentLines.add(i);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t/*\n\t\t\t\t * At least one space followed by a tab\n\t\t\t\t * or the reverse before non-tab/-space\n\t\t\t\t * characters begin.\n\t\t\t\t */\n\t\t\t\tlet regex = /^(?=( +|\\t+))\\1(?:\\t| )/u;\n\n\t\t\t\tif (smartTabs) {\n\t\t\t\t\t/*\n\t\t\t\t\t * At least one space followed by a tab\n\t\t\t\t\t * before non-tab/-space characters begin.\n\t\t\t\t\t */\n\t\t\t\t\t// eslint-disable-next-line regexp/no-empty-lookarounds-assertion -- False positive\n\t\t\t\t\tregex = /^(?=(\\t*))\\1(?=( +))\\2\\t/u;\n\t\t\t\t}\n\n\t\t\t\tlines.forEach((line, i) => {\n\t\t\t\t\tconst match = regex.exec(line);\n\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tconst lineNumber = i + 1;\n\t\t\t\t\t\tconst loc = {\n\t\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\t\tline: lineNumber,\n\t\t\t\t\t\t\t\tcolumn: match[0].length - 2,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\t\tline: lineNumber,\n\t\t\t\t\t\t\t\tcolumn: match[0].length,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!ignoredCommentLines.has(lineNumber)) {\n\t\t\t\t\t\t\tconst containingNode =\n\t\t\t\t\t\t\t\tsourceCode.getNodeByRangeIndex(\n\t\t\t\t\t\t\t\t\tsourceCode.getIndexFromLoc(loc.start),\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\t\tcontainingNode &&\n\t\t\t\t\t\t\t\t\t[\"Literal\", \"TemplateElement\"].includes(\n\t\t\t\t\t\t\t\t\t\tcontainingNode.type,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\t\t\tmessageId: \"mixedSpacesAndTabs\",\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to check use of chained assignment expressions\n * @author Stewart Rand\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tignoreNonDeclaration: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow use of chained assignment expressions\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-multi-assign\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tignoreNonDeclaration: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedChain: \"Unexpected chained assignment.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ ignoreNonDeclaration }] = context.options;\n\t\tconst selectors = [\n\t\t\t\"VariableDeclarator > AssignmentExpression.init\",\n\t\t\t\"PropertyDefinition > AssignmentExpression.value\",\n\t\t];\n\n\t\tif (!ignoreNonDeclaration) {\n\t\t\tselectors.push(\"AssignmentExpression > AssignmentExpression.right\");\n\t\t}\n\n\t\treturn {\n\t\t\t[selectors](node) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unexpectedChain\",\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallow use of multiple spaces.\n * @author Nicholas C. Zakas\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-multi-spaces\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/no-multi-spaces\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow multiple spaces\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-multi-spaces\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\texceptions: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tpatternProperties: {\n\t\t\t\t\t\t\t\"^([A-Z][a-z]*)+$\": {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tignoreEOLComments: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tmultipleSpaces: \"Multiple spaces found before '{{displayValue}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst options = context.options[0] || {};\n\t\tconst ignoreEOLComments = options.ignoreEOLComments;\n\t\tconst exceptions = Object.assign(\n\t\t\t{ Property: true },\n\t\t\toptions.exceptions,\n\t\t);\n\t\tconst hasExceptions = Object.keys(exceptions).some(\n\t\t\tkey => exceptions[key],\n\t\t);\n\n\t\t/**\n\t\t * Formats value of given comment token for error message by truncating its length.\n\t\t * @param {Token} token comment token\n\t\t * @returns {string} formatted value\n\t\t * @private\n\t\t */\n\t\tfunction formatReportedCommentValue(token) {\n\t\t\tconst valueLines = token.value.split(\"\\n\");\n\t\t\tconst value = valueLines[0];\n\t\t\tconst formattedValue = `${value.slice(0, 12)}...`;\n\n\t\t\treturn valueLines.length === 1 && value.length <= 12\n\t\t\t\t? value\n\t\t\t\t: formattedValue;\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram() {\n\t\t\t\tsourceCode.tokensAndComments.forEach(\n\t\t\t\t\t(leftToken, leftIndex, tokensAndComments) => {\n\t\t\t\t\t\tif (leftIndex === tokensAndComments.length - 1) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst rightToken = tokensAndComments[leftIndex + 1];\n\n\t\t\t\t\t\t// Ignore tokens that don't have 2 spaces between them or are on different lines\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!sourceCode.text\n\t\t\t\t\t\t\t\t.slice(leftToken.range[1], rightToken.range[0])\n\t\t\t\t\t\t\t\t.includes(\"  \") ||\n\t\t\t\t\t\t\tleftToken.loc.end.line < rightToken.loc.start.line\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Ignore comments that are the last token on their line if `ignoreEOLComments` is active.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tignoreEOLComments &&\n\t\t\t\t\t\t\tastUtils.isCommentToken(rightToken) &&\n\t\t\t\t\t\t\t(leftIndex === tokensAndComments.length - 2 ||\n\t\t\t\t\t\t\t\trightToken.loc.end.line <\n\t\t\t\t\t\t\t\t\ttokensAndComments[leftIndex + 2].loc.start\n\t\t\t\t\t\t\t\t\t\t.line)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Ignore tokens that are in a node in the \"exceptions\" object\n\t\t\t\t\t\tif (hasExceptions) {\n\t\t\t\t\t\t\tconst parentNode = sourceCode.getNodeByRangeIndex(\n\t\t\t\t\t\t\t\trightToken.range[0] - 1,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (parentNode && exceptions[parentNode.type]) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet displayValue;\n\n\t\t\t\t\t\tif (rightToken.type === \"Block\") {\n\t\t\t\t\t\t\tdisplayValue = `/*${formatReportedCommentValue(rightToken)}*/`;\n\t\t\t\t\t\t} else if (rightToken.type === \"Line\") {\n\t\t\t\t\t\t\tdisplayValue = `//${formatReportedCommentValue(rightToken)}`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdisplayValue = rightToken.value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: rightToken,\n\t\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\t\tstart: leftToken.loc.end,\n\t\t\t\t\t\t\t\tend: rightToken.loc.start,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmessageId: \"multipleSpaces\",\n\t\t\t\t\t\t\tdata: { displayValue },\n\t\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\t\tfixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\t[leftToken.range[1], rightToken.range[0]],\n\t\t\t\t\t\t\t\t\t\" \",\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag when using multiline strings\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow multiline strings\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-multi-str\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tmultilineString:\n\t\t\t\t\"Multiline support is limited to browsers supporting ES5 only.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t/**\n\t\t * Determines if a given node is part of JSX syntax.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} True if the node is a JSX node, false if not.\n\t\t * @private\n\t\t */\n\t\tfunction isJSXElement(node) {\n\t\t\treturn node.type.indexOf(\"JSX\") === 0;\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tLiteral(node) {\n\t\t\t\tif (\n\t\t\t\t\tastUtils.LINEBREAK_MATCHER.test(node.raw) &&\n\t\t\t\t\t!isJSXElement(node.parent)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"multilineString\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallows multiple blank lines.\n * implementation adapted from the no-trailing-spaces rule.\n * @author Greg Cochard\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-multiple-empty-lines\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/no-multiple-empty-lines\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow multiple empty lines\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-multiple-empty-lines\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tmax: {\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t},\n\t\t\t\t\tmaxEOF: {\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t},\n\t\t\t\t\tmaxBOF: {\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: [\"max\"],\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tblankBeginningOfFile:\n\t\t\t\t\"Too many blank lines at the beginning of file. Max of {{max}} allowed.\",\n\t\t\tblankEndOfFile:\n\t\t\t\t\"Too many blank lines at the end of file. Max of {{max}} allowed.\",\n\t\t\tconsecutiveBlank:\n\t\t\t\t\"More than {{max}} blank {{pluralizedLines}} not allowed.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t// Use options.max or 2 as default\n\t\tlet max = 2,\n\t\t\tmaxEOF = max,\n\t\t\tmaxBOF = max;\n\n\t\tif (context.options.length) {\n\t\t\tmax = context.options[0].max;\n\t\t\tmaxEOF =\n\t\t\t\ttypeof context.options[0].maxEOF !== \"undefined\"\n\t\t\t\t\t? context.options[0].maxEOF\n\t\t\t\t\t: max;\n\t\t\tmaxBOF =\n\t\t\t\ttypeof context.options[0].maxBOF !== \"undefined\"\n\t\t\t\t\t? context.options[0].maxBOF\n\t\t\t\t\t: max;\n\t\t}\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t// Swallow the final newline, as some editors add it automatically and we don't want it to cause an issue\n\t\tconst allLines =\n\t\t\tsourceCode.lines.at(-1) === \"\"\n\t\t\t\t? sourceCode.lines.slice(0, -1)\n\t\t\t\t: sourceCode.lines;\n\t\tconst templateLiteralLines = new Set();\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tTemplateLiteral(node) {\n\t\t\t\tnode.quasis.forEach(literalPart => {\n\t\t\t\t\t// Empty lines have a semantic meaning if they're inside template literals. Don't count these as empty lines.\n\t\t\t\t\tfor (\n\t\t\t\t\t\tlet ignoredLine = literalPart.loc.start.line;\n\t\t\t\t\t\tignoredLine < literalPart.loc.end.line;\n\t\t\t\t\t\tignoredLine++\n\t\t\t\t\t) {\n\t\t\t\t\t\ttemplateLiteralLines.add(ignoredLine);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\treturn (\n\t\t\t\t\tallLines\n\n\t\t\t\t\t\t// Given a list of lines, first get a list of line numbers that are non-empty.\n\t\t\t\t\t\t.reduce((nonEmptyLineNumbers, line, index) => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tline.trim() ||\n\t\t\t\t\t\t\t\ttemplateLiteralLines.has(index + 1)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnonEmptyLineNumbers.push(index + 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn nonEmptyLineNumbers;\n\t\t\t\t\t\t}, [])\n\n\t\t\t\t\t\t// Add a value at the end to allow trailing empty lines to be checked.\n\t\t\t\t\t\t.concat(allLines.length + 1)\n\n\t\t\t\t\t\t// Given two line numbers of non-empty lines, report the lines between if the difference is too large.\n\t\t\t\t\t\t.reduce((lastLineNumber, lineNumber) => {\n\t\t\t\t\t\t\tlet messageId, maxAllowed;\n\n\t\t\t\t\t\t\tif (lastLineNumber === 0) {\n\t\t\t\t\t\t\t\tmessageId = \"blankBeginningOfFile\";\n\t\t\t\t\t\t\t\tmaxAllowed = maxBOF;\n\t\t\t\t\t\t\t} else if (lineNumber === allLines.length + 1) {\n\t\t\t\t\t\t\t\tmessageId = \"blankEndOfFile\";\n\t\t\t\t\t\t\t\tmaxAllowed = maxEOF;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmessageId = \"consecutiveBlank\";\n\t\t\t\t\t\t\t\tmaxAllowed = max;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (lineNumber - lastLineNumber - 1 > maxAllowed) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\t\t\t\t\tline:\n\t\t\t\t\t\t\t\t\t\t\t\tlastLineNumber + maxAllowed + 1,\n\t\t\t\t\t\t\t\t\t\t\tcolumn: 0,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tend: { line: lineNumber, column: 0 },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\tmax: maxAllowed,\n\t\t\t\t\t\t\t\t\t\tpluralizedLines:\n\t\t\t\t\t\t\t\t\t\t\tmaxAllowed === 1 ? \"line\" : \"lines\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\t\tconst rangeStart =\n\t\t\t\t\t\t\t\t\t\t\tsourceCode.getIndexFromLoc({\n\t\t\t\t\t\t\t\t\t\t\t\tline: lastLineNumber + 1,\n\t\t\t\t\t\t\t\t\t\t\t\tcolumn: 0,\n\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t\t * The end of the removal range is usually the start index of the next line.\n\t\t\t\t\t\t\t\t\t\t * However, at the end of the file there is no next line, so the end of the\n\t\t\t\t\t\t\t\t\t\t * range is just the length of the text.\n\t\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\t\tconst lineNumberAfterRemovedLines =\n\t\t\t\t\t\t\t\t\t\t\tlineNumber - maxAllowed;\n\t\t\t\t\t\t\t\t\t\tconst rangeEnd =\n\t\t\t\t\t\t\t\t\t\t\tlineNumberAfterRemovedLines <=\n\t\t\t\t\t\t\t\t\t\t\tallLines.length\n\t\t\t\t\t\t\t\t\t\t\t\t? sourceCode.getIndexFromLoc({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tline: lineNumberAfterRemovedLines,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t: sourceCode.text.length;\n\n\t\t\t\t\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\t\t\t\t\trangeStart,\n\t\t\t\t\t\t\t\t\t\t\trangeEnd,\n\t\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn lineNumber;\n\t\t\t\t\t\t}, 0)\n\t\t\t\t);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow assignments to native objects or read-only global variables\n * @author Ilya Volodin\n * @deprecated in ESLint v3.3.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow assignments to native objects or read-only global variables\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-native-reassign\",\n\t\t},\n\n\t\tdeprecated: {\n\t\t\tmessage: \"Renamed rule.\",\n\t\t\turl: \"https://eslint.org/blog/2016/08/eslint-v3.3.0-released/#deprecated-rules\",\n\t\t\tdeprecatedSince: \"3.3.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-global-assign\",\n\t\t\t\t\t\turl: \"https://eslint.org/docs/rules/no-global-assign\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\texceptions: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: { type: \"string\" },\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tnativeReassign:\n\t\t\t\t\"Read-only global '{{name}}' should not be modified.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst config = context.options[0];\n\t\tconst exceptions = (config && config.exceptions) || [];\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Reports write references.\n\t\t * @param {Reference} reference A reference to check.\n\t\t * @param {number} index The index of the reference in the references.\n\t\t * @param {Reference[]} references The array that the reference belongs to.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkReference(reference, index, references) {\n\t\t\tconst identifier = reference.identifier;\n\n\t\t\tif (\n\t\t\t\treference.init === false &&\n\t\t\t\treference.isWrite() &&\n\t\t\t\t/*\n\t\t\t\t * Destructuring assignments can have multiple default value,\n\t\t\t\t * so possibly there are multiple writeable references for the same identifier.\n\t\t\t\t */\n\t\t\t\t(index === 0 || references[index - 1].identifier !== identifier)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: identifier,\n\t\t\t\t\tmessageId: \"nativeReassign\",\n\t\t\t\t\tdata: identifier,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports write references if a given variable is read-only builtin.\n\t\t * @param {Variable} variable A variable to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkVariable(variable) {\n\t\t\tif (\n\t\t\t\tvariable.writeable === false &&\n\t\t\t\t!exceptions.includes(variable.name)\n\t\t\t) {\n\t\t\t\tvariable.references.forEach(checkReference);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tconst globalScope = sourceCode.getScope(node);\n\n\t\t\t\tglobalScope.variables.forEach(checkVariable);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow a negated condition\n * @author Alberto Rodr\u00EDguez\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow negated conditions\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-negated-condition\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpectedNegated: \"Unexpected negated condition.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t/**\n\t\t * Determines if a given node is an if-else without a condition on the else\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} True if the node has an else without an if.\n\t\t * @private\n\t\t */\n\t\tfunction hasElseWithoutCondition(node) {\n\t\t\treturn node.alternate && node.alternate.type !== \"IfStatement\";\n\t\t}\n\n\t\t/**\n\t\t * Determines if a given node is a negated unary expression\n\t\t * @param {Object} test The test object to check.\n\t\t * @returns {boolean} True if the node is a negated unary expression.\n\t\t * @private\n\t\t */\n\t\tfunction isNegatedUnaryExpression(test) {\n\t\t\treturn test.type === \"UnaryExpression\" && test.operator === \"!\";\n\t\t}\n\n\t\t/**\n\t\t * Determines if a given node is a negated binary expression\n\t\t * @param {Test} test The test to check.\n\t\t * @returns {boolean} True if the node is a negated binary expression.\n\t\t * @private\n\t\t */\n\t\tfunction isNegatedBinaryExpression(test) {\n\t\t\treturn (\n\t\t\t\ttest.type === \"BinaryExpression\" &&\n\t\t\t\t(test.operator === \"!=\" || test.operator === \"!==\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a given node has a negated if expression\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} True if the node has a negated if expression.\n\t\t * @private\n\t\t */\n\t\tfunction isNegatedIf(node) {\n\t\t\treturn (\n\t\t\t\tisNegatedUnaryExpression(node.test) ||\n\t\t\t\tisNegatedBinaryExpression(node.test)\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\tIfStatement(node) {\n\t\t\t\tif (!hasElseWithoutCondition(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (isNegatedIf(node)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpectedNegated\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tConditionalExpression(node) {\n\t\t\t\tif (isNegatedIf(node)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpectedNegated\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to disallow negated left operands of the `in` operator\n * @author Michael Ficarra\n * @deprecated in ESLint v3.3.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow negating the left operand in `in` expressions\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-negated-in-lhs\",\n\t\t},\n\n\t\tdeprecated: {\n\t\t\tmessage: \"Renamed rule.\",\n\t\t\turl: \"https://eslint.org/blog/2016/08/eslint-v3.3.0-released/#deprecated-rules\",\n\t\t\tdeprecatedSince: \"3.3.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-unsafe-negation\",\n\t\t\t\t\t\turl: \"https://eslint.org/docs/rules/no-unsafe-negation\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnegatedLHS: \"The 'in' expression's left operand is negated.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tBinaryExpression(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.operator === \"in\" &&\n\t\t\t\t\tnode.left.type === \"UnaryExpression\" &&\n\t\t\t\t\tnode.left.operator === \"!\"\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({ node, messageId: \"negatedLHS\" });\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag nested ternary expressions\n * @author Ian Christian Myers\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow nested ternary expressions\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-nested-ternary\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnoNestedTernary: \"Do not nest ternary expressions.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tConditionalExpression(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.alternate.type === \"ConditionalExpression\" ||\n\t\t\t\t\tnode.consequent.type === \"ConditionalExpression\"\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"noNestedTernary\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag statements with function invocation preceded by\n * \"new\" and not part of assignment\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow `new` operators outside of assignments or comparisons\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-new\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnoNewStatement: \"Do not use 'new' for side effects.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\t\"ExpressionStatement > NewExpression\"(node) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: node.parent,\n\t\t\t\t\tmessageId: \"noNewStatement\",\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag when using new Function\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst callMethods = new Set([\"apply\", \"bind\", \"call\"]);\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow `new` operators with the `Function` object\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-new-func\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnoFunctionConstructor: \"The Function constructor is eval.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\tconst globalScope = sourceCode.getScope(node);\n\t\t\t\tconst variable = globalScope.set.get(\"Function\");\n\n\t\t\t\tif (variable && variable.defs.length === 0) {\n\t\t\t\t\tvariable.references.forEach(ref => {\n\t\t\t\t\t\tconst idNode = ref.identifier;\n\t\t\t\t\t\tconst { parent } = idNode;\n\t\t\t\t\t\tlet evalNode;\n\n\t\t\t\t\t\tif (parent) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tidNode === parent.callee &&\n\t\t\t\t\t\t\t\t(parent.type === \"NewExpression\" ||\n\t\t\t\t\t\t\t\t\tparent.type === \"CallExpression\")\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevalNode = parent;\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tparent.type === \"MemberExpression\" &&\n\t\t\t\t\t\t\t\tidNode === parent.object &&\n\t\t\t\t\t\t\t\tcallMethods.has(\n\t\t\t\t\t\t\t\t\tastUtils.getStaticPropertyName(parent),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tconst maybeCallee =\n\t\t\t\t\t\t\t\t\tparent.parent.type === \"ChainExpression\"\n\t\t\t\t\t\t\t\t\t\t? parent.parent\n\t\t\t\t\t\t\t\t\t\t: parent;\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tmaybeCallee.parent.type ===\n\t\t\t\t\t\t\t\t\t\t\"CallExpression\" &&\n\t\t\t\t\t\t\t\t\tmaybeCallee.parent.callee === maybeCallee\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tevalNode = maybeCallee.parent;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (evalNode) {\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode: evalNode,\n\t\t\t\t\t\t\t\tmessageId: \"noFunctionConstructor\",\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow use of the new operator with global non-constructor functions\n * @author Sosuke Suzuki\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst nonConstructorGlobalFunctionNames = [\"Symbol\", \"BigInt\"];\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow `new` operators with global non-constructor functions\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-new-native-nonconstructor\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnoNewNonconstructor:\n\t\t\t\t\"`{{name}}` cannot be called as a constructor.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\tconst globalScope = sourceCode.getScope(node);\n\n\t\t\t\tfor (const nonConstructorName of nonConstructorGlobalFunctionNames) {\n\t\t\t\t\tconst variable = globalScope.set.get(nonConstructorName);\n\n\t\t\t\t\tif (variable && variable.defs.length === 0) {\n\t\t\t\t\t\tvariable.references.forEach(ref => {\n\t\t\t\t\t\t\tconst idNode = ref.identifier;\n\t\t\t\t\t\t\tconst parent = idNode.parent;\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tparent &&\n\t\t\t\t\t\t\t\tparent.type === \"NewExpression\" &&\n\t\t\t\t\t\t\t\tparent.callee === idNode\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode: idNode,\n\t\t\t\t\t\t\t\t\tmessageId: \"noNewNonconstructor\",\n\t\t\t\t\t\t\t\t\tdata: { name: nonConstructorName },\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to disallow calls to the Object constructor\n * @author Matt DuVall <http://www.mattduvall.com/>\n * @deprecated in ESLint v8.50.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow `Object` constructors\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-new-object\",\n\t\t},\n\n\t\tdeprecated: {\n\t\t\tmessage:\n\t\t\t\t\"The new rule flags more situations where object literal syntax can be used, and it does not report a problem when the `Object` constructor is invoked with an argument.\",\n\t\t\turl: \"https://eslint.org/blog/2023/09/eslint-v8.50.0-released/\",\n\t\t\tdeprecatedSince: \"8.50.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-object-constructor\",\n\t\t\t\t\t\turl: \"https://eslint.org/docs/rules/no-object-constructor\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tpreferLiteral: \"The object literal notation {} is preferable.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tNewExpression(node) {\n\t\t\t\tconst variable = astUtils.getVariableByName(\n\t\t\t\t\tsourceCode.getScope(node),\n\t\t\t\t\tnode.callee.name,\n\t\t\t\t);\n\n\t\t\t\tif (variable && variable.identifiers.length > 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (node.callee.name === \"Object\") {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"preferLiteral\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow use of new operator with the `require` function\n * @author Wil Moore III\n * @deprecated in ESLint v7.0.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Node.js rules were moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules\",\n\t\t\tdeprecatedSince: \"7.0.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"eslint-plugin-n now maintains deprecated Node.js-related rules.\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"eslint-plugin-n\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-new-require\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules/no-new-require.md\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow `new` operators with calls to `require`\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-new-require\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnoNewRequire: \"Unexpected use of new with require.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tNewExpression(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.callee.type === \"Identifier\" &&\n\t\t\t\t\tnode.callee.name === \"require\"\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"noNewRequire\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow use of the new operator with the `Symbol` object\n * @author Alberto Rodr\u00EDguez\n * @deprecated in ESLint v9.0.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow `new` operators with the `Symbol` object\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-new-symbol\",\n\t\t},\n\n\t\tdeprecated: {\n\t\t\tmessage: \"The rule was replaced with a more general rule.\",\n\t\t\turl: \"https://eslint.org/docs/latest/use/migrate-to-9.0.0#eslint-recommended\",\n\t\t\tdeprecatedSince: \"9.0.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-new-native-nonconstructor\",\n\t\t\t\t\t\turl: \"https://eslint.org/docs/latest/rules/no-new-native-nonconstructor\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnoNewSymbol: \"`Symbol` cannot be called as a constructor.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\tconst globalScope = sourceCode.getScope(node);\n\t\t\t\tconst variable = globalScope.set.get(\"Symbol\");\n\n\t\t\t\tif (variable && variable.defs.length === 0) {\n\t\t\t\t\tvariable.references.forEach(ref => {\n\t\t\t\t\t\tconst idNode = ref.identifier;\n\t\t\t\t\t\tconst parent = idNode.parent;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tparent &&\n\t\t\t\t\t\t\tparent.type === \"NewExpression\" &&\n\t\t\t\t\t\t\tparent.callee === idNode\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode: idNode,\n\t\t\t\t\t\t\t\tmessageId: \"noNewSymbol\",\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag when using constructor for wrapper objects\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst { getVariableByName } = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow `new` operators with the `String`, `Number`, and `Boolean` objects\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-new-wrappers\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnoConstructor: \"Do not use {{fn}} as a constructor.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst { sourceCode } = context;\n\n\t\treturn {\n\t\t\tNewExpression(node) {\n\t\t\t\tconst wrapperObjects = [\"String\", \"Number\", \"Boolean\"];\n\t\t\t\tconst { name } = node.callee;\n\n\t\t\t\tif (wrapperObjects.includes(name)) {\n\t\t\t\t\tconst variable = getVariableByName(\n\t\t\t\t\t\tsourceCode.getScope(node),\n\t\t\t\t\t\tname,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (variable && variable.identifiers.length === 0) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"noConstructor\",\n\t\t\t\t\t\t\tdata: { fn: name },\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow `\\8` and `\\9` escape sequences in string literals.\n * @author Milos Djermanovic\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n/**\n * @import { SourceRange } from \"@eslint/core\";\n */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst QUICK_TEST_REGEX = /\\\\[89]/u;\n\n/**\n * Returns unicode escape sequence that represents the given character.\n * @param {string} character A single code unit.\n * @returns {string} \"\\uXXXX\" sequence.\n */\nfunction getUnicodeEscape(character) {\n\treturn `\\\\u${character.charCodeAt(0).toString(16).padStart(4, \"0\")}`;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow `\\\\8` and `\\\\9` escape sequences in string literals\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-nonoctal-decimal-escape\",\n\t\t},\n\n\t\thasSuggestions: true,\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tdecimalEscape: \"Don't use '{{decimalEscape}}' escape sequence.\",\n\n\t\t\t// suggestions\n\t\t\trefactor:\n\t\t\t\t\"Replace '{{original}}' with '{{replacement}}'. This maintains the current functionality.\",\n\t\t\tescapeBackslash:\n\t\t\t\t\"Replace '{{original}}' with '{{replacement}}' to include the actual backslash character.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Creates a new Suggestion object.\n\t\t * @param {string} messageId \"refactor\" or \"escapeBackslash\".\n\t\t * @param {SourceRange} range The range to replace.\n\t\t * @param {string} replacement New text for the range.\n\t\t * @returns {Object} Suggestion\n\t\t */\n\t\tfunction createSuggestion(messageId, range, replacement) {\n\t\t\treturn {\n\t\t\t\tmessageId,\n\t\t\t\tdata: {\n\t\t\t\t\toriginal: sourceCode.getText().slice(...range),\n\t\t\t\t\treplacement,\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.replaceTextRange(range, replacement);\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tLiteral(node) {\n\t\t\t\tif (typeof node.value !== \"string\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!QUICK_TEST_REGEX.test(node.raw)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst regex =\n\t\t\t\t\t/(?:[^\\\\]|(?<previousEscape>\\\\.))*?(?<decimalEscape>\\\\[89])/suy;\n\t\t\t\tlet match;\n\n\t\t\t\twhile ((match = regex.exec(node.raw))) {\n\t\t\t\t\tconst { previousEscape, decimalEscape } = match.groups;\n\t\t\t\t\tconst decimalEscapeRangeEnd =\n\t\t\t\t\t\tnode.range[0] + match.index + match[0].length;\n\t\t\t\t\tconst decimalEscapeRangeStart =\n\t\t\t\t\t\tdecimalEscapeRangeEnd - decimalEscape.length;\n\t\t\t\t\tconst decimalEscapeRange = [\n\t\t\t\t\t\tdecimalEscapeRangeStart,\n\t\t\t\t\t\tdecimalEscapeRangeEnd,\n\t\t\t\t\t];\n\t\t\t\t\tconst suggest = [];\n\n\t\t\t\t\t// When `regex` is matched, `previousEscape` can only capture characters adjacent to `decimalEscape`\n\t\t\t\t\tif (previousEscape === \"\\\\0\") {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Now we have a NULL escape \"\\0\" immediately followed by a decimal escape, e.g.: \"\\0\\8\".\n\t\t\t\t\t\t * Fixing this to \"\\08\" would turn \"\\0\" into a legacy octal escape. To avoid producing\n\t\t\t\t\t\t * an octal escape while fixing a decimal escape, we provide different suggestions.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tsuggest.push(\n\t\t\t\t\t\t\tcreateSuggestion(\n\t\t\t\t\t\t\t\t// \"\\0\\8\" -> \"\\u00008\"\n\t\t\t\t\t\t\t\t\"refactor\",\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\tdecimalEscapeRangeStart -\n\t\t\t\t\t\t\t\t\t\tpreviousEscape.length,\n\t\t\t\t\t\t\t\t\tdecimalEscapeRangeEnd,\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t`${getUnicodeEscape(\"\\0\")}${decimalEscape[1]}`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tcreateSuggestion(\n\t\t\t\t\t\t\t\t// \"\\8\" -> \"\\u0038\"\n\t\t\t\t\t\t\t\t\"refactor\",\n\t\t\t\t\t\t\t\tdecimalEscapeRange,\n\t\t\t\t\t\t\t\tgetUnicodeEscape(decimalEscape[1]),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsuggest.push(\n\t\t\t\t\t\t\tcreateSuggestion(\n\t\t\t\t\t\t\t\t// \"\\8\" -> \"8\"\n\t\t\t\t\t\t\t\t\"refactor\",\n\t\t\t\t\t\t\t\tdecimalEscapeRange,\n\t\t\t\t\t\t\t\tdecimalEscape[1],\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tsuggest.push(\n\t\t\t\t\t\tcreateSuggestion(\n\t\t\t\t\t\t\t// \"\\8\" -> \"\\\\8\"\n\t\t\t\t\t\t\t\"escapeBackslash\",\n\t\t\t\t\t\t\tdecimalEscapeRange,\n\t\t\t\t\t\t\t`\\\\${decimalEscape}`,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tstart: sourceCode.getLocFromIndex(\n\t\t\t\t\t\t\t\tdecimalEscapeRangeStart,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tend: sourceCode.getLocFromIndex(\n\t\t\t\t\t\t\t\tdecimalEscapeRangeEnd,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmessageId: \"decimalEscape\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tdecimalEscape,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsuggest,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of an object property of the global object (Math and JSON) as a function\n * @author James Allardice\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst {\n\tCALL,\n\tCONSTRUCT,\n\tReferenceTracker,\n} = require(\"@eslint-community/eslint-utils\");\nconst getPropertyName = require(\"./utils/ast-utils\").getStaticPropertyName;\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst nonCallableGlobals = [\n\t\"Atomics\",\n\t\"JSON\",\n\t\"Math\",\n\t\"Reflect\",\n\t\"Intl\",\n\t\"Temporal\",\n];\n\n/**\n * Returns the name of the node to report\n * @param {ASTNode} node A node to report\n * @returns {string} name to report\n */\nfunction getReportNodeName(node) {\n\tif (node.type === \"ChainExpression\") {\n\t\treturn getReportNodeName(node.expression);\n\t}\n\tif (node.type === \"MemberExpression\") {\n\t\treturn getPropertyName(node);\n\t}\n\treturn node.name;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow calling global object properties as functions\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-obj-calls\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpectedCall: \"'{{name}}' is not a function.\",\n\t\t\tunexpectedRefCall:\n\t\t\t\t\"'{{name}}' is reference to '{{ref}}', which is not a function.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\t\t\t\tconst tracker = new ReferenceTracker(scope);\n\t\t\t\tconst traceMap = {};\n\n\t\t\t\tfor (const g of nonCallableGlobals) {\n\t\t\t\t\ttraceMap[g] = {\n\t\t\t\t\t\t[CALL]: true,\n\t\t\t\t\t\t[CONSTRUCT]: true,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tfor (const {\n\t\t\t\t\tnode: refNode,\n\t\t\t\t\tpath,\n\t\t\t\t} of tracker.iterateGlobalReferences(traceMap)) {\n\t\t\t\t\tconst name = getReportNodeName(refNode.callee);\n\t\t\t\t\tconst ref = path[0];\n\t\t\t\t\tconst messageId =\n\t\t\t\t\t\tname === ref ? \"unexpectedCall\" : \"unexpectedRefCall\";\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: refNode,\n\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\tdata: { name, ref },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow calls to the `Object` constructor without an argument\n * @author Francesco Trotta\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst {\n\tgetVariableByName,\n\tisArrowToken,\n\tisStartOfExpressionStatement,\n\tneedsPrecedingSemicolon,\n} = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow calls to the `Object` constructor without an argument\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-object-constructor\",\n\t\t},\n\n\t\thasSuggestions: true,\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tpreferLiteral: \"The object literal notation {} is preferable.\",\n\t\t\tuseLiteral: \"Replace with '{{replacement}}'.\",\n\t\t\tuseLiteralAfterSemicolon:\n\t\t\t\t\"Replace with '{{replacement}}', add preceding semicolon.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Determines whether or not an object literal that replaces a specified node needs to be enclosed in parentheses.\n\t\t * @param {ASTNode} node The node to be replaced.\n\t\t * @returns {boolean} Whether or not parentheses around the object literal are required.\n\t\t */\n\t\tfunction needsParentheses(node) {\n\t\t\tif (isStartOfExpressionStatement(node)) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst prevToken = sourceCode.getTokenBefore(node);\n\n\t\t\tif (prevToken && isArrowToken(prevToken)) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Reports on nodes where the `Object` constructor is called without arguments.\n\t\t * @param {ASTNode} node The node to evaluate.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction check(node) {\n\t\t\tif (\n\t\t\t\tnode.callee.type !== \"Identifier\" ||\n\t\t\t\tnode.callee.name !== \"Object\" ||\n\t\t\t\tnode.arguments.length\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst variable = getVariableByName(\n\t\t\t\tsourceCode.getScope(node),\n\t\t\t\t\"Object\",\n\t\t\t);\n\n\t\t\tif (variable && variable.identifiers.length === 0) {\n\t\t\t\tlet replacement;\n\t\t\t\tlet fixText;\n\t\t\t\tlet messageId = \"useLiteral\";\n\n\t\t\t\tif (needsParentheses(node)) {\n\t\t\t\t\treplacement = \"({})\";\n\t\t\t\t\tif (needsPrecedingSemicolon(sourceCode, node)) {\n\t\t\t\t\t\tfixText = \";({})\";\n\t\t\t\t\t\tmessageId = \"useLiteralAfterSemicolon\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfixText = \"({})\";\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treplacement = fixText = \"{}\";\n\t\t\t\t}\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"preferLiteral\",\n\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\tdata: { replacement },\n\t\t\t\t\t\t\tfix: fixer => fixer.replaceText(node, fixText),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tCallExpression: check,\n\t\t\tNewExpression: check,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag when initializing octal literal\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow octal literals\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-octal\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnoOctal: \"Octal literals should not be used.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tLiteral(node) {\n\t\t\t\tif (typeof node.value === \"number\" && /^0\\d/u.test(node.raw)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"noOctal\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag octal escape sequences in string literals.\n * @author Ian Christian Myers\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow octal escape sequences in string literals\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-octal-escape\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\toctalEscapeSequence:\n\t\t\t\t\"Don't use octal: '\\\\{{sequence}}'. Use '\\\\u....' instead.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tLiteral(node) {\n\t\t\t\tif (typeof node.value !== \"string\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// \\0 represents a valid NULL character if it isn't followed by a digit.\n\t\t\t\tconst match = node.raw.match(\n\t\t\t\t\t/^(?:[^\\\\]|\\\\.)*?\\\\([0-3][0-7]{1,2}|[4-7][0-7]|0(?=[89])|[1-7])/su,\n\t\t\t\t);\n\n\t\t\t\tif (match) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"octalEscapeSequence\",\n\t\t\t\t\t\tdata: { sequence: match[1] },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallow reassigning function parameters.\n * @author Nat Burns\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\nconst stopNodePattern =\n\t/(?:Statement|Declaration|Function(?:Expression)?|Program)$/u;\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow reassigning function parameters\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-param-reassign\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\tenum: [false],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\tenum: [true],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tignorePropertyModificationsFor: {\n\t\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tignorePropertyModificationsForRegex: {\n\t\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tassignmentToFunctionParam:\n\t\t\t\t\"Assignment to function parameter '{{name}}'.\",\n\t\t\tassignmentToFunctionParamProp:\n\t\t\t\t\"Assignment to property of function parameter '{{name}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst props = context.options[0] && context.options[0].props;\n\t\tconst ignoredPropertyAssignmentsFor =\n\t\t\t(context.options[0] &&\n\t\t\t\tcontext.options[0].ignorePropertyModificationsFor) ||\n\t\t\t[];\n\t\tconst ignoredPropertyAssignmentsForRegex =\n\t\t\t(context.options[0] &&\n\t\t\t\tcontext.options[0].ignorePropertyModificationsForRegex) ||\n\t\t\t[];\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Checks whether or not the reference modifies properties of its variable.\n\t\t * @param {Reference} reference A reference to check.\n\t\t * @returns {boolean} Whether or not the reference modifies properties of its variable.\n\t\t */\n\t\tfunction isModifyingProp(reference) {\n\t\t\tlet node = reference.identifier;\n\t\t\tlet parent = node.parent;\n\n\t\t\twhile (\n\t\t\t\tparent &&\n\t\t\t\t(!stopNodePattern.test(parent.type) ||\n\t\t\t\t\tparent.type === \"ForInStatement\" ||\n\t\t\t\t\tparent.type === \"ForOfStatement\")\n\t\t\t) {\n\t\t\t\tswitch (parent.type) {\n\t\t\t\t\t// e.g. foo.a = 0;\n\t\t\t\t\tcase \"AssignmentExpression\":\n\t\t\t\t\t\treturn parent.left === node;\n\n\t\t\t\t\t// e.g. ++foo.a;\n\t\t\t\t\tcase \"UpdateExpression\":\n\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t// e.g. delete foo.a;\n\t\t\t\t\tcase \"UnaryExpression\":\n\t\t\t\t\t\tif (parent.operator === \"delete\") {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t// e.g. for (foo.a in b) {}\n\t\t\t\t\tcase \"ForInStatement\":\n\t\t\t\t\tcase \"ForOfStatement\":\n\t\t\t\t\t\tif (parent.left === node) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// this is a stop node for parent.right and parent.body\n\t\t\t\t\t\treturn false;\n\n\t\t\t\t\t// EXCLUDES: e.g. cache.get(foo.a).b = 0;\n\t\t\t\t\tcase \"CallExpression\":\n\t\t\t\t\t\tif (parent.callee !== node) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t// EXCLUDES: e.g. cache[foo.a] = 0;\n\t\t\t\t\tcase \"MemberExpression\":\n\t\t\t\t\t\tif (parent.property === node) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t// EXCLUDES: e.g. ({ [foo]: a }) = bar;\n\t\t\t\t\tcase \"Property\":\n\t\t\t\t\t\tif (parent.key === node) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t// EXCLUDES: e.g. (foo ? a : b).c = bar;\n\t\t\t\t\tcase \"ConditionalExpression\":\n\t\t\t\t\t\tif (parent.test === node) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t// no default\n\t\t\t\t}\n\n\t\t\t\tnode = parent;\n\t\t\t\tparent = node.parent;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Tests that an identifier name matches any of the ignored property assignments.\n\t\t * First we test strings in ignoredPropertyAssignmentsFor.\n\t\t * Then we instantiate and test RegExp objects from ignoredPropertyAssignmentsForRegex strings.\n\t\t * @param {string} identifierName A string that describes the name of an identifier to\n\t\t * ignore property assignments for.\n\t\t * @returns {boolean} Whether the string matches an ignored property assignment regular expression or not.\n\t\t */\n\t\tfunction isIgnoredPropertyAssignment(identifierName) {\n\t\t\treturn (\n\t\t\t\tignoredPropertyAssignmentsFor.includes(identifierName) ||\n\t\t\t\tignoredPropertyAssignmentsForRegex.some(ignored =>\n\t\t\t\t\tnew RegExp(ignored, \"u\").test(identifierName),\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Reports a reference if is non initializer and writable.\n\t\t * @param {Reference} reference A reference to check.\n\t\t * @param {number} index The index of the reference in the references.\n\t\t * @param {Reference[]} references The array that the reference belongs to.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkReference(reference, index, references) {\n\t\t\tconst identifier = reference.identifier;\n\n\t\t\tif (\n\t\t\t\tidentifier &&\n\t\t\t\t!reference.init &&\n\t\t\t\t/*\n\t\t\t\t * Destructuring assignments can have multiple default value,\n\t\t\t\t * so possibly there are multiple writeable references for the same identifier.\n\t\t\t\t */\n\t\t\t\t(index === 0 || references[index - 1].identifier !== identifier)\n\t\t\t) {\n\t\t\t\tif (reference.isWrite()) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: identifier,\n\t\t\t\t\t\tmessageId: \"assignmentToFunctionParam\",\n\t\t\t\t\t\tdata: { name: identifier.name },\n\t\t\t\t\t});\n\t\t\t\t} else if (\n\t\t\t\t\tprops &&\n\t\t\t\t\tisModifyingProp(reference) &&\n\t\t\t\t\t!isIgnoredPropertyAssignment(identifier.name)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: identifier,\n\t\t\t\t\t\tmessageId: \"assignmentToFunctionParamProp\",\n\t\t\t\t\t\tdata: { name: identifier.name },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Finds and reports references that are non initializer and writable.\n\t\t * @param {Variable} variable A variable to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkVariable(variable) {\n\t\t\tif (variable.defs[0].type === \"Parameter\") {\n\t\t\t\tvariable.references.forEach(checkReference);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks parameters of a given function node.\n\t\t * @param {ASTNode} node A function node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForFunction(node) {\n\t\t\tsourceCode.getDeclaredVariables(node).forEach(checkVariable);\n\t\t}\n\n\t\treturn {\n\t\t\t// `:exit` is needed for the `node.parent` property of identifier nodes.\n\t\t\t\"FunctionDeclaration:exit\": checkForFunction,\n\t\t\t\"FunctionExpression:exit\": checkForFunction,\n\t\t\t\"ArrowFunctionExpression:exit\": checkForFunction,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallow string concatenation when using __dirname and __filename\n * @author Nicholas C. Zakas\n * @deprecated in ESLint v7.0.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Node.js rules were moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules\",\n\t\t\tdeprecatedSince: \"7.0.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"eslint-plugin-n now maintains deprecated Node.js-related rules.\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"eslint-plugin-n\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-path-concat\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules/no-path-concat.md\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow string concatenation with `__dirname` and `__filename`\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-path-concat\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tusePathFunctions:\n\t\t\t\t\"Use path.join() or path.resolve() instead of + to create paths.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst MATCHER = /^__(?:dir|file)name$/u;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tBinaryExpression(node) {\n\t\t\t\tconst left = node.left,\n\t\t\t\t\tright = node.right;\n\n\t\t\t\tif (\n\t\t\t\t\tnode.operator === \"+\" &&\n\t\t\t\t\t((left.type === \"Identifier\" && MATCHER.test(left.name)) ||\n\t\t\t\t\t\t(right.type === \"Identifier\" &&\n\t\t\t\t\t\t\tMATCHER.test(right.name)))\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"usePathFunctions\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of unary increment and decrement operators.\n * @author Ian Christian Myers\n * @author Brody McKee (github.com/mrmckeb)\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Determines whether the given node is the update node of a `ForStatement`.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} `true` if the node is `ForStatement` update.\n */\nfunction isForStatementUpdate(node) {\n\tconst parent = node.parent;\n\n\treturn parent.type === \"ForStatement\" && parent.update === node;\n}\n\n/**\n * Determines whether the given node is considered to be a for loop \"afterthought\" by the logic of this rule.\n * In particular, it returns `true` if the given node is either:\n *   - The update node of a `ForStatement`: for (;; i++) {}\n *   - An operand of a sequence expression that is the update node: for (;; foo(), i++) {}\n *   - An operand of a sequence expression that is child of another sequence expression, etc.,\n *     up to the sequence expression that is the update node: for (;; foo(), (bar(), (baz(), i++))) {}\n * @param {ASTNode} node The node to check.\n * @returns {boolean} `true` if the node is a for loop afterthought.\n */\nfunction isForLoopAfterthought(node) {\n\tconst parent = node.parent;\n\n\tif (parent.type === \"SequenceExpression\") {\n\t\treturn isForLoopAfterthought(parent);\n\t}\n\n\treturn isForStatementUpdate(node);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowForLoopAfterthoughts: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow the unary operators `++` and `--`\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-plusplus\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowForLoopAfterthoughts: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedUnaryOp: \"Unary operator '{{operator}}' used.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ allowForLoopAfterthoughts }] = context.options;\n\n\t\treturn {\n\t\t\tUpdateExpression(node) {\n\t\t\t\tif (allowForLoopAfterthoughts && isForLoopAfterthought(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unexpectedUnaryOp\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\toperator: node.operator,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallow the use of process.env()\n * @author Vignesh Anand\n * @deprecated in ESLint v7.0.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Node.js rules were moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules\",\n\t\t\tdeprecatedSince: \"7.0.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"eslint-plugin-n now maintains deprecated Node.js-related rules.\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"eslint-plugin-n\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-process-env\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules/no-process-env.md\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow the use of `process.env`\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-process-env\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpectedProcessEnv: \"Unexpected use of process.env.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tMemberExpression(node) {\n\t\t\t\tconst objectName = node.object.name,\n\t\t\t\t\tpropertyName = node.property.name;\n\n\t\t\t\tif (\n\t\t\t\t\tobjectName === \"process\" &&\n\t\t\t\t\t!node.computed &&\n\t\t\t\t\tpropertyName &&\n\t\t\t\t\tpropertyName === \"env\"\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({ node, messageId: \"unexpectedProcessEnv\" });\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallow the use of process.exit()\n * @author Nicholas C. Zakas\n * @deprecated in ESLint v7.0.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Node.js rules were moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules\",\n\t\t\tdeprecatedSince: \"7.0.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"eslint-plugin-n now maintains deprecated Node.js-related rules.\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"eslint-plugin-n\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-process-exit\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules/no-process-exit.md\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow the use of `process.exit()`\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-process-exit\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnoProcessExit: \"Don't use process.exit(); throw an error instead.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\t\"CallExpression > MemberExpression.callee[object.name = 'process'][property.name = 'exit']\"(\n\t\t\t\tnode,\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: node.parent,\n\t\t\t\t\tmessageId: \"noProcessExit\",\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow returning values from Promise executor functions\n * @author Milos Djermanovic\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst functionTypesToCheck = new Set([\n\t\"ArrowFunctionExpression\",\n\t\"FunctionExpression\",\n]);\n\n/**\n * Determines whether the given function node is used as a Promise executor.\n * @param {ASTNode} node The node to check.\n * @param {SourceCode} sourceCode Source code to which the node belongs.\n * @returns {boolean} `true` if the node is a Promise executor.\n */\nfunction isPromiseExecutor(node, sourceCode) {\n\tconst parent = node.parent;\n\n\treturn (\n\t\tparent.type === \"NewExpression\" &&\n\t\tparent.arguments[0] === node &&\n\t\tparent.callee.type === \"Identifier\" &&\n\t\tparent.callee.name === \"Promise\" &&\n\t\tsourceCode.isGlobalReference(parent.callee)\n\t);\n}\n\n/**\n * Checks if the given node is a void expression.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} - `true` if the node is a void expression\n */\nfunction expressionIsVoid(node) {\n\treturn node.type === \"UnaryExpression\" && node.operator === \"void\";\n}\n\n/**\n * Fixes the linting error by prepending \"void \" to the given node\n * @param {Object} sourceCode context given by context.sourceCode\n * @param {ASTNode} node The node to fix.\n * @param {Object} fixer The fixer object provided by ESLint.\n * @returns {Array<Object>} - An array of fix objects to apply to the node.\n */\nfunction voidPrependFixer(sourceCode, node, fixer) {\n\tconst requiresParens =\n\t\t// prepending `void ` will fail if the node has a lower precedence than void\n\t\tastUtils.getPrecedence(node) <\n\t\t\tastUtils.getPrecedence({\n\t\t\t\ttype: \"UnaryExpression\",\n\t\t\t\toperator: \"void\",\n\t\t\t}) &&\n\t\t// check if there are parentheses around the node to avoid redundant parentheses\n\t\t!astUtils.isParenthesised(sourceCode, node);\n\n\t// avoid parentheses issues\n\tconst returnOrArrowToken = sourceCode.getTokenBefore(\n\t\tnode,\n\t\tnode.parent.type === \"ArrowFunctionExpression\"\n\t\t\t? astUtils.isArrowToken\n\t\t\t: // isReturnToken\n\t\t\t\ttoken => token.type === \"Keyword\" && token.value === \"return\",\n\t);\n\n\tconst firstToken = sourceCode.getTokenAfter(returnOrArrowToken);\n\n\tconst prependSpace =\n\t\t// is return token, as => allows void to be adjacent\n\t\treturnOrArrowToken.value === \"return\" &&\n\t\t// If two tokens (return and \"(\") are adjacent\n\t\treturnOrArrowToken.range[1] === firstToken.range[0];\n\n\treturn [\n\t\tfixer.insertTextBefore(\n\t\t\tfirstToken,\n\t\t\t`${prependSpace ? \" \" : \"\"}void ${requiresParens ? \"(\" : \"\"}`,\n\t\t),\n\t\tfixer.insertTextAfter(node, requiresParens ? \")\" : \"\"),\n\t];\n}\n\n/**\n * Fixes the linting error by `wrapping {}` around the given node's body.\n * @param {Object} sourceCode context given by context.sourceCode\n * @param {ASTNode} node The node to fix.\n * @param {Object} fixer The fixer object provided by ESLint.\n * @returns {Array<Object>} - An array of fix objects to apply to the node.\n */\nfunction curlyWrapFixer(sourceCode, node, fixer) {\n\t// https://github.com/eslint/eslint/pull/17282#issuecomment-1592795923\n\tconst arrowToken = sourceCode.getTokenBefore(\n\t\tnode.body,\n\t\tastUtils.isArrowToken,\n\t);\n\tconst firstToken = sourceCode.getTokenAfter(arrowToken);\n\tconst lastToken = sourceCode.getLastToken(node);\n\n\treturn [\n\t\tfixer.insertTextBefore(firstToken, \"{\"),\n\t\tfixer.insertTextAfter(lastToken, \"}\"),\n\t];\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowVoid: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow returning values from Promise executor functions\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-promise-executor-return\",\n\t\t},\n\n\t\thasSuggestions: true,\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowVoid: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\treturnsValue:\n\t\t\t\t\"Return values from promise executor functions cannot be read.\",\n\n\t\t\t// arrow and function suggestions\n\t\t\tprependVoid: \"Prepend `void` to the expression.\",\n\n\t\t\t// only arrow suggestions\n\t\t\twrapBraces: \"Wrap the expression in `{}`.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tlet funcInfo = null;\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst [{ allowVoid }] = context.options;\n\n\t\treturn {\n\t\t\tonCodePathStart(_, node) {\n\t\t\t\tfuncInfo = {\n\t\t\t\t\tupper: funcInfo,\n\t\t\t\t\tshouldCheck:\n\t\t\t\t\t\tfunctionTypesToCheck.has(node.type) &&\n\t\t\t\t\t\tisPromiseExecutor(node, sourceCode),\n\t\t\t\t};\n\n\t\t\t\tif (\n\t\t\t\t\t// Is a Promise executor\n\t\t\t\t\tfuncInfo.shouldCheck &&\n\t\t\t\t\tnode.type === \"ArrowFunctionExpression\" &&\n\t\t\t\t\tnode.expression &&\n\t\t\t\t\t// Except void\n\t\t\t\t\t!(allowVoid && expressionIsVoid(node.body))\n\t\t\t\t) {\n\t\t\t\t\tconst suggest = [];\n\n\t\t\t\t\t// prevent useless refactors\n\t\t\t\t\tif (allowVoid) {\n\t\t\t\t\t\tsuggest.push({\n\t\t\t\t\t\t\tmessageId: \"prependVoid\",\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\treturn voidPrependFixer(\n\t\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\t\tnode.body,\n\t\t\t\t\t\t\t\t\tfixer,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Do not suggest wrapping an unnamed FunctionExpression in braces as that would be invalid syntax.\n\t\t\t\t\tif (\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\tnode.body.type === \"FunctionExpression\" &&\n\t\t\t\t\t\t\t!node.body.id\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tsuggest.push({\n\t\t\t\t\t\t\tmessageId: \"wrapBraces\",\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\treturn curlyWrapFixer(sourceCode, node, fixer);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: node.body,\n\t\t\t\t\t\tmessageId: \"returnsValue\",\n\t\t\t\t\t\tsuggest,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tonCodePathEnd() {\n\t\t\t\tfuncInfo = funcInfo.upper;\n\t\t\t},\n\n\t\t\tReturnStatement(node) {\n\t\t\t\tif (!(funcInfo.shouldCheck && node.argument)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// node is `return <expression>`\n\t\t\t\tif (!allowVoid) {\n\t\t\t\t\tcontext.report({ node, messageId: \"returnsValue\" });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (expressionIsVoid(node.argument)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// allowVoid && !expressionIsVoid\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"returnsValue\",\n\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmessageId: \"prependVoid\",\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\treturn voidPrependFixer(\n\t\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\t\tnode.argument,\n\t\t\t\t\t\t\t\t\tfixer,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag usage of __proto__ property\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst { getStaticPropertyName } = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow the use of the `__proto__` property\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-proto\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpectedProto: \"The '__proto__' property is deprecated.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tMemberExpression(node) {\n\t\t\t\tif (getStaticPropertyName(node) === \"__proto__\") {\n\t\t\t\t\tcontext.report({ node, messageId: \"unexpectedProto\" });\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow use of Object.prototype builtins on objects\n * @author Andrew Levine\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Returns true if the node or any of the objects\n * to the left of it in the member/call chain is optional.\n *\n * e.g. `a?.b`, `a?.b.c`, `a?.()`, `a()?.()`\n * @param {ASTNode} node The expression to check\n * @returns {boolean} `true` if there is a short-circuiting optional `?.`\n * in the same option chain to the left of this call or member expression,\n * or the node itself is an optional call or member `?.`.\n */\nfunction isAfterOptional(node) {\n\tlet leftNode;\n\n\tif (node.type === \"MemberExpression\") {\n\t\tleftNode = node.object;\n\t} else if (node.type === \"CallExpression\") {\n\t\tleftNode = node.callee;\n\t} else {\n\t\treturn false;\n\t}\n\tif (node.optional) {\n\t\treturn true;\n\t}\n\treturn isAfterOptional(leftNode);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow calling some `Object.prototype` methods directly on objects\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-prototype-builtins\",\n\t\t},\n\n\t\thasSuggestions: true,\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tprototypeBuildIn:\n\t\t\t\t\"Do not access Object.prototype method '{{prop}}' from target object.\",\n\t\t\tcallObjectPrototype: \"Call Object.prototype.{{prop}} explicitly.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst DISALLOWED_PROPS = new Set([\n\t\t\t\"hasOwnProperty\",\n\t\t\t\"isPrototypeOf\",\n\t\t\t\"propertyIsEnumerable\",\n\t\t]);\n\n\t\t/**\n\t\t * Reports if a disallowed property is used in a CallExpression\n\t\t * @param {ASTNode} node The CallExpression node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction disallowBuiltIns(node) {\n\t\t\tconst callee = astUtils.skipChainExpression(node.callee);\n\n\t\t\tif (callee.type !== \"MemberExpression\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst propName = astUtils.getStaticPropertyName(callee);\n\n\t\t\tif (propName !== null && DISALLOWED_PROPS.has(propName)) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tmessageId: \"prototypeBuildIn\",\n\t\t\t\t\tloc: callee.property.loc,\n\t\t\t\t\tdata: { prop: propName },\n\t\t\t\t\tnode,\n\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmessageId: \"callObjectPrototype\",\n\t\t\t\t\t\t\tdata: { prop: propName },\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\tconst sourceCode = context.sourceCode;\n\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * A call after an optional chain (e.g. a?.b.hasOwnProperty(c))\n\t\t\t\t\t\t\t\t * must be fixed manually because the call can be short-circuited\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\tif (isAfterOptional(node)) {\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * A call on a ChainExpression (e.g. (a?.hasOwnProperty)(c)) will trigger\n\t\t\t\t\t\t\t\t * no-unsafe-optional-chaining which should be fixed before this suggestion\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\tif (node.callee.type === \"ChainExpression\") {\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst objectVariable =\n\t\t\t\t\t\t\t\t\tastUtils.getVariableByName(\n\t\t\t\t\t\t\t\t\t\tsourceCode.getScope(node),\n\t\t\t\t\t\t\t\t\t\t\"Object\",\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * We can't use Object if the global Object was shadowed,\n\t\t\t\t\t\t\t\t * or Object does not exist in the global scope for some reason\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t!objectVariable ||\n\t\t\t\t\t\t\t\t\tobjectVariable.scope.type !== \"global\" ||\n\t\t\t\t\t\t\t\t\tobjectVariable.defs.length > 0\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet objectText = sourceCode.getText(\n\t\t\t\t\t\t\t\t\tcallee.object,\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tastUtils.getPrecedence(callee.object) <=\n\t\t\t\t\t\t\t\t\tastUtils.getPrecedence({\n\t\t\t\t\t\t\t\t\t\ttype: \"SequenceExpression\",\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tobjectText = `(${objectText})`;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst openParenToken = sourceCode.getTokenAfter(\n\t\t\t\t\t\t\t\t\tnode.callee,\n\t\t\t\t\t\t\t\t\tastUtils.isOpeningParenToken,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tconst isEmptyParameters =\n\t\t\t\t\t\t\t\t\tnode.arguments.length === 0;\n\t\t\t\t\t\t\t\tconst delim = isEmptyParameters ? \"\" : \", \";\n\t\t\t\t\t\t\t\tconst fixes = [\n\t\t\t\t\t\t\t\t\tfixer.replaceText(\n\t\t\t\t\t\t\t\t\t\tcallee,\n\t\t\t\t\t\t\t\t\t\t`Object.prototype.${propName}.call`,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tfixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\t\topenParenToken,\n\t\t\t\t\t\t\t\t\t\tobjectText + delim,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\t\treturn fixes;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tCallExpression: disallowBuiltIns,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag when the same variable is declared more then once.\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [{ builtinGlobals: true }],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow variable redeclaration\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-redeclare\",\n\t\t},\n\n\t\tmessages: {\n\t\t\tredeclared: \"'{{id}}' is already defined.\",\n\t\t\tredeclaredAsBuiltin:\n\t\t\t\t\"'{{id}}' is already defined as a built-in global variable.\",\n\t\t\tredeclaredBySyntax:\n\t\t\t\t\"'{{id}}' is already defined by a variable declaration.\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tbuiltinGlobals: { type: \"boolean\" },\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t},\n\n\tcreate(context) {\n\t\tconst [{ builtinGlobals }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Iterate declarations of a given variable.\n\t\t * @param {escope.variable} variable The variable object to iterate declarations.\n\t\t * @returns {IterableIterator<{type:string,node:ASTNode,loc:SourceLocation}>} The declarations.\n\t\t */\n\t\tfunction* iterateDeclarations(variable) {\n\t\t\tif (\n\t\t\t\tbuiltinGlobals &&\n\t\t\t\t(variable.eslintImplicitGlobalSetting === \"readonly\" ||\n\t\t\t\t\tvariable.eslintImplicitGlobalSetting === \"writable\")\n\t\t\t) {\n\t\t\t\tyield { type: \"builtin\" };\n\t\t\t}\n\n\t\t\tfor (const id of variable.identifiers) {\n\t\t\t\tyield { type: \"syntax\", node: id, loc: id.loc };\n\t\t\t}\n\n\t\t\tif (variable.eslintExplicitGlobalComments) {\n\t\t\t\tfor (const comment of variable.eslintExplicitGlobalComments) {\n\t\t\t\t\tyield {\n\t\t\t\t\t\ttype: \"comment\",\n\t\t\t\t\t\tnode: comment,\n\t\t\t\t\t\tloc: astUtils.getNameLocationInGlobalDirectiveComment(\n\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\tcomment,\n\t\t\t\t\t\t\tvariable.name,\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Find variables in a given scope and flag redeclared ones.\n\t\t * @param {Scope} scope An eslint-scope scope object.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction findVariablesInScope(scope) {\n\t\t\tfor (const variable of scope.variables) {\n\t\t\t\tconst [declaration, ...extraDeclarations] =\n\t\t\t\t\titerateDeclarations(variable);\n\n\t\t\t\tif (extraDeclarations.length === 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * If the type of a declaration is different from the type of\n\t\t\t\t * the first declaration, it shows the location of the first\n\t\t\t\t * declaration.\n\t\t\t\t */\n\t\t\t\tconst detailMessageId =\n\t\t\t\t\tdeclaration.type === \"builtin\"\n\t\t\t\t\t\t? \"redeclaredAsBuiltin\"\n\t\t\t\t\t\t: \"redeclaredBySyntax\";\n\t\t\t\tconst data = { id: variable.name };\n\n\t\t\t\t// Report extra declarations.\n\t\t\t\tfor (const { type, node, loc } of extraDeclarations) {\n\t\t\t\t\tconst messageId =\n\t\t\t\t\t\ttype === declaration.type\n\t\t\t\t\t\t\t? \"redeclared\"\n\t\t\t\t\t\t\t: detailMessageId;\n\n\t\t\t\t\tcontext.report({ node, loc, messageId, data });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Find variables in the current scope.\n\t\t * @param {ASTNode} node The node of the current scope.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkForBlock(node) {\n\t\t\tconst scope = sourceCode.getScope(node);\n\n\t\t\t/*\n\t\t\t * In ES5, some node type such as `BlockStatement` doesn't have that scope.\n\t\t\t * `scope.block` is a different node in such a case.\n\t\t\t */\n\t\t\tif (scope.block === node) {\n\t\t\t\tfindVariablesInScope(scope);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\n\t\t\t\tfindVariablesInScope(scope);\n\n\t\t\t\t// Node.js or ES modules has a special scope.\n\t\t\t\tif (\n\t\t\t\t\tscope.type === \"global\" &&\n\t\t\t\t\tscope.childScopes[0] &&\n\t\t\t\t\t// The special scope's block is the Program node.\n\t\t\t\t\tscope.block === scope.childScopes[0].block\n\t\t\t\t) {\n\t\t\t\t\tfindVariablesInScope(scope.childScopes[0]);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tFunctionDeclaration: checkForBlock,\n\t\t\tFunctionExpression: checkForBlock,\n\t\t\tArrowFunctionExpression: checkForBlock,\n\n\t\t\tStaticBlock: checkForBlock,\n\n\t\t\tBlockStatement: checkForBlock,\n\t\t\tForStatement: checkForBlock,\n\t\t\tForInStatement: checkForBlock,\n\t\t\tForOfStatement: checkForBlock,\n\t\t\tSwitchStatement: checkForBlock,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to count multiple spaces in regular expressions\n * @author Matt DuVall <http://www.mattduvall.com/>\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst regexpp = require(\"@eslint-community/regexpp\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst regExpParser = new regexpp.RegExpParser();\nconst DOUBLE_SPACE = / {2}/u;\n\n/**\n * Check if node is a string\n * @param {ASTNode} node node to evaluate\n * @returns {boolean} True if its a string\n * @private\n */\nfunction isString(node) {\n\treturn node && node.type === \"Literal\" && typeof node.value === \"string\";\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow multiple spaces in regular expressions\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-regex-spaces\",\n\t\t},\n\n\t\tschema: [],\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tmultipleSpaces: \"Spaces are hard to count. Use {{{length}}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Validate regular expression\n\t\t * @param {ASTNode} nodeToReport Node to report.\n\t\t * @param {string} pattern Regular expression pattern to validate.\n\t\t * @param {string} rawPattern Raw representation of the pattern in the source code.\n\t\t * @param {number} rawPatternStartRange Start range of the pattern in the source code.\n\t\t * @param {string} flags Regular expression flags.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkRegex(\n\t\t\tnodeToReport,\n\t\t\tpattern,\n\t\t\trawPattern,\n\t\t\trawPatternStartRange,\n\t\t\tflags,\n\t\t) {\n\t\t\t// Skip if there are no consecutive spaces in the source code, to avoid reporting e.g., RegExp(' \\ ').\n\t\t\tif (!DOUBLE_SPACE.test(rawPattern)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst characterClassNodes = [];\n\t\t\tlet regExpAST;\n\n\t\t\ttry {\n\t\t\t\tregExpAST = regExpParser.parsePattern(\n\t\t\t\t\tpattern,\n\t\t\t\t\t0,\n\t\t\t\t\tpattern.length,\n\t\t\t\t\t{\n\t\t\t\t\t\tunicode: flags.includes(\"u\"),\n\t\t\t\t\t\tunicodeSets: flags.includes(\"v\"),\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t} catch {\n\t\t\t\t// Ignore regular expressions with syntax errors\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tregexpp.visitRegExpAST(regExpAST, {\n\t\t\t\tonCharacterClassEnter(ccNode) {\n\t\t\t\t\tcharacterClassNodes.push(ccNode);\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst spacesPattern = /( {2,})(?: [+*{?]|[^+*{?]|$)/gu;\n\t\t\tlet match;\n\n\t\t\twhile ((match = spacesPattern.exec(pattern))) {\n\t\t\t\tconst {\n\t\t\t\t\t1: { length },\n\t\t\t\t\tindex,\n\t\t\t\t} = match;\n\n\t\t\t\t// Report only consecutive spaces that are not in character classes.\n\t\t\t\tif (\n\t\t\t\t\tcharacterClassNodes.every(\n\t\t\t\t\t\t({ start, end }) => index < start || end <= index,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: nodeToReport,\n\t\t\t\t\t\tmessageId: \"multipleSpaces\",\n\t\t\t\t\t\tdata: { length },\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tif (pattern !== rawPattern) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\trawPatternStartRange + index,\n\t\t\t\t\t\t\t\t\trawPatternStartRange + index + length,\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t` {${length}}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\n\t\t\t\t\t// Report only the first occurrence of consecutive spaces\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Validate regular expression literals\n\t\t * @param {ASTNode} node node to validate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkLiteral(node) {\n\t\t\tif (node.regex) {\n\t\t\t\tconst pattern = node.regex.pattern;\n\t\t\t\tconst rawPattern = node.raw.slice(1, node.raw.lastIndexOf(\"/\"));\n\t\t\t\tconst rawPatternStartRange = node.range[0] + 1;\n\t\t\t\tconst flags = node.regex.flags;\n\n\t\t\t\tcheckRegex(\n\t\t\t\t\tnode,\n\t\t\t\t\tpattern,\n\t\t\t\t\trawPattern,\n\t\t\t\t\trawPatternStartRange,\n\t\t\t\t\tflags,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Validate strings passed to the RegExp constructor\n\t\t * @param {ASTNode} node node to validate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkFunction(node) {\n\t\t\tconst scope = sourceCode.getScope(node);\n\t\t\tconst regExpVar = astUtils.getVariableByName(scope, \"RegExp\");\n\t\t\tconst shadowed = regExpVar && regExpVar.defs.length > 0;\n\t\t\tconst patternNode = node.arguments[0];\n\n\t\t\tif (\n\t\t\t\tnode.callee.type === \"Identifier\" &&\n\t\t\t\tnode.callee.name === \"RegExp\" &&\n\t\t\t\tisString(patternNode) &&\n\t\t\t\t!shadowed\n\t\t\t) {\n\t\t\t\tconst pattern = patternNode.value;\n\t\t\t\tconst rawPattern = patternNode.raw.slice(1, -1);\n\t\t\t\tconst rawPatternStartRange = patternNode.range[0] + 1;\n\t\t\t\tlet flags;\n\n\t\t\t\tif (node.arguments.length < 2) {\n\t\t\t\t\t// It has no flags.\n\t\t\t\t\tflags = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tconst flagsNode = node.arguments[1];\n\n\t\t\t\t\tif (isString(flagsNode)) {\n\t\t\t\t\t\tflags = flagsNode.value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// The flags cannot be determined.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcheckRegex(\n\t\t\t\t\tnode,\n\t\t\t\t\tpattern,\n\t\t\t\t\trawPattern,\n\t\t\t\t\trawPatternStartRange,\n\t\t\t\t\tflags,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tLiteral: checkLiteral,\n\t\t\tCallExpression: checkFunction,\n\t\t\tNewExpression: checkFunction,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow specified names in exports\n * @author Milos Djermanovic\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow specified names in exports\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-restricted-exports\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\trestrictedNamedExports: {\n\t\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trestrictedNamedExportsPattern: { type: \"string\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\trestrictedNamedExports: {\n\t\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t\tpattern: \"^(?!default$)\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trestrictedNamedExportsPattern: { type: \"string\" },\n\t\t\t\t\t\t\trestrictDefaultExports: {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\t// Allow/Disallow `export default foo; export default 42; export default function foo() {}` format\n\t\t\t\t\t\t\t\t\tdirect: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t\t// Allow/Disallow `export { foo as default };` declarations\n\t\t\t\t\t\t\t\t\tnamed: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t\t//  Allow/Disallow `export { default } from \"mod\"; export { default as default } from \"mod\";` declarations\n\t\t\t\t\t\t\t\t\tdefaultFrom: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t\t//  Allow/Disallow `export { foo as default } from \"mod\";` declarations\n\t\t\t\t\t\t\t\t\tnamedFrom: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t\t//  Allow/Disallow `export * as default from \"mod\"`; declarations\n\t\t\t\t\t\t\t\t\tnamespaceFrom: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [{}],\n\n\t\tmessages: {\n\t\t\trestrictedNamed:\n\t\t\t\t\"'{{name}}' is restricted from being used as an exported name.\",\n\t\t\trestrictedDefault: \"Exporting 'default' is restricted.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst {\n\t\t\trestrictedNamedExports,\n\t\t\trestrictedNamedExportsPattern: restrictedNamePattern,\n\t\t\trestrictDefaultExports,\n\t\t} = context.options[0];\n\t\tconst restrictedNames = new Set(restrictedNamedExports);\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Checks and reports given exported name.\n\t\t * @param {ASTNode} node exported `Identifier` or string `Literal` node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkExportedName(node) {\n\t\t\tconst name = astUtils.getModuleExportName(node);\n\n\t\t\tlet matchesRestrictedNamePattern = false;\n\n\t\t\tif (restrictedNamePattern && name !== \"default\") {\n\t\t\t\tconst patternRegex = new RegExp(restrictedNamePattern, \"u\");\n\n\t\t\t\tmatchesRestrictedNamePattern = patternRegex.test(name);\n\t\t\t}\n\n\t\t\tif (matchesRestrictedNamePattern || restrictedNames.has(name)) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"restrictedNamed\",\n\t\t\t\t\tdata: { name },\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (name === \"default\") {\n\t\t\t\tif (node.parent.type === \"ExportAllDeclaration\") {\n\t\t\t\t\tif (\n\t\t\t\t\t\trestrictDefaultExports &&\n\t\t\t\t\t\trestrictDefaultExports.namespaceFrom\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"restrictedDefault\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// ExportSpecifier\n\t\t\t\t\tconst isSourceSpecified = !!node.parent.parent.source;\n\t\t\t\t\tconst specifierLocalName = astUtils.getModuleExportName(\n\t\t\t\t\t\tnode.parent.local,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!isSourceSpecified &&\n\t\t\t\t\t\trestrictDefaultExports &&\n\t\t\t\t\t\trestrictDefaultExports.named\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"restrictedDefault\",\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isSourceSpecified && restrictDefaultExports) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t(specifierLocalName === \"default\" &&\n\t\t\t\t\t\t\t\trestrictDefaultExports.defaultFrom) ||\n\t\t\t\t\t\t\t(specifierLocalName !== \"default\" &&\n\t\t\t\t\t\t\t\trestrictDefaultExports.namedFrom)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\tmessageId: \"restrictedDefault\",\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tExportAllDeclaration(node) {\n\t\t\t\tif (node.exported) {\n\t\t\t\t\tcheckExportedName(node.exported);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tExportDefaultDeclaration(node) {\n\t\t\t\tif (restrictDefaultExports && restrictDefaultExports.direct) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"restrictedDefault\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tExportNamedDeclaration(node) {\n\t\t\t\tconst declaration = node.declaration;\n\n\t\t\t\tif (declaration) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tdeclaration.type === \"FunctionDeclaration\" ||\n\t\t\t\t\t\tdeclaration.type === \"ClassDeclaration\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tcheckExportedName(declaration.id);\n\t\t\t\t\t} else if (declaration.type === \"VariableDeclaration\") {\n\t\t\t\t\t\tsourceCode\n\t\t\t\t\t\t\t.getDeclaredVariables(declaration)\n\t\t\t\t\t\t\t.map(v =>\n\t\t\t\t\t\t\t\tv.defs.find(d => d.parent === declaration),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.map(d => d.name) // Identifier nodes\n\t\t\t\t\t\t\t.forEach(checkExportedName);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tnode.specifiers\n\t\t\t\t\t\t.map(s => s.exported)\n\t\t\t\t\t\t.forEach(checkExportedName);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Restrict usage of specified globals.\n * @author Beno\u00EEt Zugmeyer\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst TYPE_NODES = new Set([\n\t\"TSTypeReference\",\n\t\"TSInterfaceHeritage\",\n\t\"TSClassImplements\",\n\t\"TSTypeQuery\",\n\t\"TSQualifiedName\",\n]);\n\nconst GLOBAL_OBJECTS = new Set([\"globalThis\", \"self\", \"window\"]);\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\nconst arrayOfGlobals = {\n\ttype: \"array\",\n\titems: {\n\t\toneOf: [\n\t\t\t{\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tname: { type: \"string\" },\n\t\t\t\t\tmessage: { type: \"string\" },\n\t\t\t\t},\n\t\t\t\trequired: [\"name\"],\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t},\n\tuniqueItems: true,\n\tminItems: 0,\n};\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow specified global variables\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-restricted-globals\",\n\t\t},\n\n\t\tschema: {\n\t\t\tanyOf: [\n\t\t\t\tarrayOfGlobals,\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tglobals: arrayOfGlobals,\n\t\t\t\t\t\t\t\tcheckGlobalObject: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tglobalObjects: {\n\t\t\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trequired: [\"globals\"],\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tadditionalItems: false,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tmessages: {\n\t\t\tdefaultMessage: \"Unexpected use of '{{name}}'.\",\n\t\t\t// eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period\n\t\t\tcustomMessage: \"Unexpected use of '{{name}}'. {{customMessage}}\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst { sourceCode, options } = context;\n\n\t\tconst isGlobalsObject =\n\t\t\ttypeof options[0] === \"object\" &&\n\t\t\tObject.hasOwn(options[0], \"globals\");\n\n\t\tconst restrictedGlobals = isGlobalsObject\n\t\t\t? options[0].globals\n\t\t\t: options;\n\t\tconst checkGlobalObject = isGlobalsObject\n\t\t\t? options[0].checkGlobalObject\n\t\t\t: false;\n\t\tconst userGlobalObjects = isGlobalsObject\n\t\t\t? options[0].globalObjects || []\n\t\t\t: [];\n\n\t\tconst globalObjects = new Set([\n\t\t\t...GLOBAL_OBJECTS,\n\t\t\t...userGlobalObjects,\n\t\t]);\n\n\t\t// If no globals are restricted, we don't need to do anything\n\t\tif (restrictedGlobals.length === 0) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst restrictedGlobalMessages = restrictedGlobals.reduce(\n\t\t\t(memo, option) => {\n\t\t\t\tif (typeof option === \"string\") {\n\t\t\t\t\tmemo[option] = null;\n\t\t\t\t} else {\n\t\t\t\t\tmemo[option.name] = option.message;\n\t\t\t\t}\n\n\t\t\t\treturn memo;\n\t\t\t},\n\t\t\t{},\n\t\t);\n\n\t\t/**\n\t\t * Report a variable to be used as a restricted global.\n\t\t * @param {Reference} reference the variable reference\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction reportReference(reference) {\n\t\t\tconst name = reference.identifier.name,\n\t\t\t\tcustomMessage = restrictedGlobalMessages[name],\n\t\t\t\tmessageId = customMessage ? \"customMessage\" : \"defaultMessage\";\n\n\t\t\tcontext.report({\n\t\t\t\tnode: reference.identifier,\n\t\t\t\tmessageId,\n\t\t\t\tdata: {\n\t\t\t\t\tname,\n\t\t\t\t\tcustomMessage,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Check if the given name is a restricted global name.\n\t\t * @param {string} name name of a variable\n\t\t * @returns {boolean} whether the variable is a restricted global or not\n\t\t * @private\n\t\t */\n\t\tfunction isRestricted(name) {\n\t\t\treturn Object.hasOwn(restrictedGlobalMessages, name);\n\t\t}\n\n\t\t/**\n\t\t * Check if the given reference occurs within a TypeScript type context.\n\t\t * @param {Reference} reference The variable reference to check.\n\t\t * @returns {boolean} Whether the reference is in a type context.\n\t\t * @private\n\t\t */\n\t\tfunction isInTypeContext(reference) {\n\t\t\tconst parent = reference.identifier.parent;\n\n\t\t\treturn TYPE_NODES.has(parent.type);\n\t\t}\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\n\t\t\t\t// Report variables declared elsewhere (ex: variables defined as \"global\" by eslint)\n\t\t\t\tscope.variables.forEach(variable => {\n\t\t\t\t\tif (!variable.defs.length && isRestricted(variable.name)) {\n\t\t\t\t\t\tvariable.references.forEach(reference => {\n\t\t\t\t\t\t\tif (!isInTypeContext(reference)) {\n\t\t\t\t\t\t\t\treportReference(reference);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Report variables not declared at all\n\t\t\t\tscope.through.forEach(reference => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tisRestricted(reference.identifier.name) &&\n\t\t\t\t\t\t!isInTypeContext(reference)\n\t\t\t\t\t) {\n\t\t\t\t\t\treportReference(reference);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\tif (!checkGlobalObject) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst globalScope = sourceCode.getScope(node);\n\t\t\t\tglobalObjects.forEach(globalObjectName => {\n\t\t\t\t\tconst variable = astUtils.getVariableByName(\n\t\t\t\t\t\tglobalScope,\n\t\t\t\t\t\tglobalObjectName,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (!variable) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvariable.references.forEach(reference => {\n\t\t\t\t\t\tconst identifier = reference.identifier;\n\t\t\t\t\t\tlet parent = identifier.parent;\n\n\t\t\t\t\t\t// To detect code like `window.window.Promise`.\n\t\t\t\t\t\twhile (\n\t\t\t\t\t\t\tastUtils.isSpecificMemberAccess(\n\t\t\t\t\t\t\t\tparent,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tglobalObjectName,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tparent = parent.parent;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst propertyName =\n\t\t\t\t\t\t\tastUtils.getStaticPropertyName(parent);\n\t\t\t\t\t\tif (propertyName && isRestricted(propertyName)) {\n\t\t\t\t\t\t\tconst customMessage =\n\t\t\t\t\t\t\t\trestrictedGlobalMessages[propertyName];\n\t\t\t\t\t\t\tconst messageId = customMessage\n\t\t\t\t\t\t\t\t? \"customMessage\"\n\t\t\t\t\t\t\t\t: \"defaultMessage\";\n\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode: parent.property,\n\t\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\tname: propertyName,\n\t\t\t\t\t\t\t\t\tcustomMessage,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "// A simple implementation of make-array\nfunction makeArray (subject) {\n  return Array.isArray(subject)\n    ? subject\n    : [subject]\n}\n\nconst EMPTY = ''\nconst SPACE = ' '\nconst ESCAPE = '\\\\'\nconst REGEX_TEST_BLANK_LINE = /^\\s+$/\nconst REGEX_INVALID_TRAILING_BACKSLASH = /(?:[^\\\\]|^)\\\\$/\nconst REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\\\!/\nconst REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\\\#/\nconst REGEX_SPLITALL_CRLF = /\\r?\\n/g\n// /foo,\n// ./foo,\n// ../foo,\n// .\n// ..\nconst REGEX_TEST_INVALID_PATH = /^\\.*\\/|^\\.+$/\n\nconst SLASH = '/'\n\n// Do not use ternary expression here, since \"istanbul ignore next\" is buggy\nlet TMP_KEY_IGNORE = 'node-ignore'\n/* istanbul ignore else */\nif (typeof Symbol !== 'undefined') {\n  TMP_KEY_IGNORE = Symbol.for('node-ignore')\n}\nconst KEY_IGNORE = TMP_KEY_IGNORE\n\nconst define = (object, key, value) =>\n  Object.defineProperty(object, key, {value})\n\nconst REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g\n\nconst RETURN_FALSE = () => false\n\n// Sanitize the range of a regular expression\n// The cases are complicated, see test cases for details\nconst sanitizeRange = range => range.replace(\n  REGEX_REGEXP_RANGE,\n  (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0)\n    ? match\n    // Invalid range (out of order) which is ok for gitignore rules but\n    //   fatal for JavaScript regular expression, so eliminate it.\n    : EMPTY\n)\n\n// See fixtures #59\nconst cleanRangeBackSlash = slashes => {\n  const {length} = slashes\n  return slashes.slice(0, length - length % 2)\n}\n\n// > If the pattern ends with a slash,\n// > it is removed for the purpose of the following description,\n// > but it would only find a match with a directory.\n// > In other words, foo/ will match a directory foo and paths underneath it,\n// > but will not match a regular file or a symbolic link foo\n// >  (this is consistent with the way how pathspec works in general in Git).\n// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'\n// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call\n//      you could use option `mark: true` with `glob`\n\n// '`foo/`' should not continue with the '`..`'\nconst REPLACERS = [\n\n  [\n    // remove BOM\n    // TODO:\n    // Other similar zero-width characters?\n    /^\\uFEFF/,\n    () => EMPTY\n  ],\n\n  // > Trailing spaces are ignored unless they are quoted with backslash (\"\\\")\n  [\n    // (a\\ ) -> (a )\n    // (a  ) -> (a)\n    // (a ) -> (a)\n    // (a \\ ) -> (a  )\n    /((?:\\\\\\\\)*?)(\\\\?\\s+)$/,\n    (_, m1, m2) => m1 + (\n      m2.indexOf('\\\\') === 0\n        ? SPACE\n        : EMPTY\n    )\n  ],\n\n  // replace (\\ ) with ' '\n  // (\\ ) -> ' '\n  // (\\\\ ) -> '\\\\ '\n  // (\\\\\\ ) -> '\\\\ '\n  [\n    /(\\\\+?)\\s/g,\n    (_, m1) => {\n      const {length} = m1\n      return m1.slice(0, length - length % 2) + SPACE\n    }\n  ],\n\n  // Escape metacharacters\n  // which is written down by users but means special for regular expressions.\n\n  // > There are 12 characters with special meanings:\n  // > - the backslash \\,\n  // > - the caret ^,\n  // > - the dollar sign $,\n  // > - the period or dot .,\n  // > - the vertical bar or pipe symbol |,\n  // > - the question mark ?,\n  // > - the asterisk or star *,\n  // > - the plus sign +,\n  // > - the opening parenthesis (,\n  // > - the closing parenthesis ),\n  // > - and the opening square bracket [,\n  // > - the opening curly brace {,\n  // > These special characters are often called \"metacharacters\".\n  [\n    /[\\\\$.|*+(){^]/g,\n    match => `\\\\${match}`\n  ],\n\n  [\n    // > a question mark (?) matches a single character\n    /(?!\\\\)\\?/g,\n    () => '[^/]'\n  ],\n\n  // leading slash\n  [\n\n    // > A leading slash matches the beginning of the pathname.\n    // > For example, \"/*.c\" matches \"cat-file.c\" but not \"mozilla-sha1/sha1.c\".\n    // A leading slash matches the beginning of the pathname\n    /^\\//,\n    () => '^'\n  ],\n\n  // replace special metacharacter slash after the leading slash\n  [\n    /\\//g,\n    () => '\\\\/'\n  ],\n\n  [\n    // > A leading \"**\" followed by a slash means match in all directories.\n    // > For example, \"**/foo\" matches file or directory \"foo\" anywhere,\n    // > the same as pattern \"foo\".\n    // > \"**/foo/bar\" matches file or directory \"bar\" anywhere that is directly\n    // >   under directory \"foo\".\n    // Notice that the '*'s have been replaced as '\\\\*'\n    /^\\^*\\\\\\*\\\\\\*\\\\\\//,\n\n    // '**/foo' <-> 'foo'\n    () => '^(?:.*\\\\/)?'\n  ],\n\n  // starting\n  [\n    // there will be no leading '/'\n    //   (which has been replaced by section \"leading slash\")\n    // If starts with '**', adding a '^' to the regular expression also works\n    /^(?=[^^])/,\n    function startingReplacer () {\n      // If has a slash `/` at the beginning or middle\n      return !/\\/(?!$)/.test(this)\n        // > Prior to 2.22.1\n        // > If the pattern does not contain a slash /,\n        // >   Git treats it as a shell glob pattern\n        // Actually, if there is only a trailing slash,\n        //   git also treats it as a shell glob pattern\n\n        // After 2.22.1 (compatible but clearer)\n        // > If there is a separator at the beginning or middle (or both)\n        // > of the pattern, then the pattern is relative to the directory\n        // > level of the particular .gitignore file itself.\n        // > Otherwise the pattern may also match at any level below\n        // > the .gitignore level.\n        ? '(?:^|\\\\/)'\n\n        // > Otherwise, Git treats the pattern as a shell glob suitable for\n        // >   consumption by fnmatch(3)\n        : '^'\n    }\n  ],\n\n  // two globstars\n  [\n    // Use lookahead assertions so that we could match more than one `'/**'`\n    /\\\\\\/\\\\\\*\\\\\\*(?=\\\\\\/|$)/g,\n\n    // Zero, one or several directories\n    // should not use '*', or it will be replaced by the next replacer\n\n    // Check if it is not the last `'/**'`\n    (_, index, str) => index + 6 < str.length\n\n      // case: /**/\n      // > A slash followed by two consecutive asterisks then a slash matches\n      // >   zero or more directories.\n      // > For example, \"a/**/b\" matches \"a/b\", \"a/x/b\", \"a/x/y/b\" and so on.\n      // '/**/'\n      ? '(?:\\\\/[^\\\\/]+)*'\n\n      // case: /**\n      // > A trailing `\"/**\"` matches everything inside.\n\n      // #21: everything inside but it should not include the current folder\n      : '\\\\/.+'\n  ],\n\n  // normal intermediate wildcards\n  [\n    // Never replace escaped '*'\n    // ignore rule '\\*' will match the path '*'\n\n    // 'abc.*/' -> go\n    // 'abc.*'  -> skip this rule,\n    //    coz trailing single wildcard will be handed by [trailing wildcard]\n    /(^|[^\\\\]+)(\\\\\\*)+(?=.+)/g,\n\n    // '*.js' matches '.js'\n    // '*.js' doesn't match 'abc'\n    (_, p1, p2) => {\n      // 1.\n      // > An asterisk \"*\" matches anything except a slash.\n      // 2.\n      // > Other consecutive asterisks are considered regular asterisks\n      // > and will match according to the previous rules.\n      const unescaped = p2.replace(/\\\\\\*/g, '[^\\\\/]*')\n      return p1 + unescaped\n    }\n  ],\n\n  [\n    // unescape, revert step 3 except for back slash\n    // For example, if a user escape a '\\\\*',\n    // after step 3, the result will be '\\\\\\\\\\\\*'\n    /\\\\\\\\\\\\(?=[$.|*+(){^])/g,\n    () => ESCAPE\n  ],\n\n  [\n    // '\\\\\\\\' -> '\\\\'\n    /\\\\\\\\/g,\n    () => ESCAPE\n  ],\n\n  [\n    // > The range notation, e.g. [a-zA-Z],\n    // > can be used to match one of the characters in a range.\n\n    // `\\` is escaped by step 3\n    /(\\\\)?\\[([^\\]/]*?)(\\\\*)($|\\])/g,\n    (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE\n      // '\\\\[bar]' -> '\\\\\\\\[bar\\\\]'\n      ? `\\\\[${range}${cleanRangeBackSlash(endEscape)}${close}`\n      : close === ']'\n        ? endEscape.length % 2 === 0\n          // A normal case, and it is a range notation\n          // '[bar]'\n          // '[bar\\\\\\\\]'\n          ? `[${sanitizeRange(range)}${endEscape}]`\n          // Invalid range notaton\n          // '[bar\\\\]' -> '[bar\\\\\\\\]'\n          : '[]'\n        : '[]'\n  ],\n\n  // ending\n  [\n    // 'js' will not match 'js.'\n    // 'ab' will not match 'abc'\n    /(?:[^*])$/,\n\n    // WTF!\n    // https://git-scm.com/docs/gitignore\n    // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1)\n    // which re-fixes #24, #38\n\n    // > If there is a separator at the end of the pattern then the pattern\n    // > will only match directories, otherwise the pattern can match both\n    // > files and directories.\n\n    // 'js*' will not match 'a.js'\n    // 'js/' will not match 'a.js'\n    // 'js' will match 'a.js' and 'a.js/'\n    match => /\\/$/.test(match)\n      // foo/ will not match 'foo'\n      ? `${match}$`\n      // foo matches 'foo' and 'foo/'\n      : `${match}(?=$|\\\\/$)`\n  ],\n\n  // trailing wildcard\n  [\n    /(\\^|\\\\\\/)?\\\\\\*$/,\n    (_, p1) => {\n      const prefix = p1\n        // '\\^':\n        // '/*' does not match EMPTY\n        // '/*' does not match everything\n\n        // '\\\\\\/':\n        // 'abc/*' does not match 'abc/'\n        ? `${p1}[^/]+`\n\n        // 'a*' matches 'a'\n        // 'a*' matches 'aa'\n        : '[^/]*'\n\n      return `${prefix}(?=$|\\\\/$)`\n    }\n  ],\n]\n\n// A simple cache, because an ignore rule only has only one certain meaning\nconst regexCache = Object.create(null)\n\n// @param {pattern}\nconst makeRegex = (pattern, ignoreCase) => {\n  let source = regexCache[pattern]\n\n  if (!source) {\n    source = REPLACERS.reduce(\n      (prev, [matcher, replacer]) =>\n        prev.replace(matcher, replacer.bind(pattern)),\n      pattern\n    )\n    regexCache[pattern] = source\n  }\n\n  return ignoreCase\n    ? new RegExp(source, 'i')\n    : new RegExp(source)\n}\n\nconst isString = subject => typeof subject === 'string'\n\n// > A blank line matches no files, so it can serve as a separator for readability.\nconst checkPattern = pattern => pattern\n  && isString(pattern)\n  && !REGEX_TEST_BLANK_LINE.test(pattern)\n  && !REGEX_INVALID_TRAILING_BACKSLASH.test(pattern)\n\n  // > A line starting with # serves as a comment.\n  && pattern.indexOf('#') !== 0\n\nconst splitPattern = pattern => pattern.split(REGEX_SPLITALL_CRLF)\n\nclass IgnoreRule {\n  constructor (\n    origin,\n    pattern,\n    negative,\n    regex\n  ) {\n    this.origin = origin\n    this.pattern = pattern\n    this.negative = negative\n    this.regex = regex\n  }\n}\n\nconst createRule = (pattern, ignoreCase) => {\n  const origin = pattern\n  let negative = false\n\n  // > An optional prefix \"!\" which negates the pattern;\n  if (pattern.indexOf('!') === 0) {\n    negative = true\n    pattern = pattern.substr(1)\n  }\n\n  pattern = pattern\n  // > Put a backslash (\"\\\") in front of the first \"!\" for patterns that\n  // >   begin with a literal \"!\", for example, `\"\\!important!.txt\"`.\n  .replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!')\n  // > Put a backslash (\"\\\") in front of the first hash for patterns that\n  // >   begin with a hash.\n  .replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#')\n\n  const regex = makeRegex(pattern, ignoreCase)\n\n  return new IgnoreRule(\n    origin,\n    pattern,\n    negative,\n    regex\n  )\n}\n\nconst throwError = (message, Ctor) => {\n  throw new Ctor(message)\n}\n\nconst checkPath = (path, originalPath, doThrow) => {\n  if (!isString(path)) {\n    return doThrow(\n      `path must be a string, but got \\`${originalPath}\\``,\n      TypeError\n    )\n  }\n\n  // We don't know if we should ignore EMPTY, so throw\n  if (!path) {\n    return doThrow(`path must not be empty`, TypeError)\n  }\n\n  // Check if it is a relative path\n  if (checkPath.isNotRelative(path)) {\n    const r = '`path.relative()`d'\n    return doThrow(\n      `path should be a ${r} string, but got \"${originalPath}\"`,\n      RangeError\n    )\n  }\n\n  return true\n}\n\nconst isNotRelative = path => REGEX_TEST_INVALID_PATH.test(path)\n\ncheckPath.isNotRelative = isNotRelative\ncheckPath.convert = p => p\n\nclass Ignore {\n  constructor ({\n    ignorecase = true,\n    ignoreCase = ignorecase,\n    allowRelativePaths = false\n  } = {}) {\n    define(this, KEY_IGNORE, true)\n\n    this._rules = []\n    this._ignoreCase = ignoreCase\n    this._allowRelativePaths = allowRelativePaths\n    this._initCache()\n  }\n\n  _initCache () {\n    this._ignoreCache = Object.create(null)\n    this._testCache = Object.create(null)\n  }\n\n  _addPattern (pattern) {\n    // #32\n    if (pattern && pattern[KEY_IGNORE]) {\n      this._rules = this._rules.concat(pattern._rules)\n      this._added = true\n      return\n    }\n\n    if (checkPattern(pattern)) {\n      const rule = createRule(pattern, this._ignoreCase)\n      this._added = true\n      this._rules.push(rule)\n    }\n  }\n\n  // @param {Array<string> | string | Ignore} pattern\n  add (pattern) {\n    this._added = false\n\n    makeArray(\n      isString(pattern)\n        ? splitPattern(pattern)\n        : pattern\n    ).forEach(this._addPattern, this)\n\n    // Some rules have just added to the ignore,\n    // making the behavior changed.\n    if (this._added) {\n      this._initCache()\n    }\n\n    return this\n  }\n\n  // legacy\n  addPattern (pattern) {\n    return this.add(pattern)\n  }\n\n  //          |           ignored : unignored\n  // negative |   0:0   |   0:1   |   1:0   |   1:1\n  // -------- | ------- | ------- | ------- | --------\n  //     0    |  TEST   |  TEST   |  SKIP   |    X\n  //     1    |  TESTIF |  SKIP   |  TEST   |    X\n\n  // - SKIP: always skip\n  // - TEST: always test\n  // - TESTIF: only test if checkUnignored\n  // - X: that never happen\n\n  // @param {boolean} whether should check if the path is unignored,\n  //   setting `checkUnignored` to `false` could reduce additional\n  //   path matching.\n\n  // @returns {TestResult} true if a file is ignored\n  _testOne (path, checkUnignored) {\n    let ignored = false\n    let unignored = false\n\n    this._rules.forEach(rule => {\n      const {negative} = rule\n      if (\n        unignored === negative && ignored !== unignored\n        || negative && !ignored && !unignored && !checkUnignored\n      ) {\n        return\n      }\n\n      const matched = rule.regex.test(path)\n\n      if (matched) {\n        ignored = !negative\n        unignored = negative\n      }\n    })\n\n    return {\n      ignored,\n      unignored\n    }\n  }\n\n  // @returns {TestResult}\n  _test (originalPath, cache, checkUnignored, slices) {\n    const path = originalPath\n      // Supports nullable path\n      && checkPath.convert(originalPath)\n\n    checkPath(\n      path,\n      originalPath,\n      this._allowRelativePaths\n        ? RETURN_FALSE\n        : throwError\n    )\n\n    return this._t(path, cache, checkUnignored, slices)\n  }\n\n  _t (path, cache, checkUnignored, slices) {\n    if (path in cache) {\n      return cache[path]\n    }\n\n    if (!slices) {\n      // path/to/a.js\n      // ['path', 'to', 'a.js']\n      slices = path.split(SLASH)\n    }\n\n    slices.pop()\n\n    // If the path has no parent directory, just test it\n    if (!slices.length) {\n      return cache[path] = this._testOne(path, checkUnignored)\n    }\n\n    const parent = this._t(\n      slices.join(SLASH) + SLASH,\n      cache,\n      checkUnignored,\n      slices\n    )\n\n    // If the path contains a parent directory, check the parent first\n    return cache[path] = parent.ignored\n      // > It is not possible to re-include a file if a parent directory of\n      // >   that file is excluded.\n      ? parent\n      : this._testOne(path, checkUnignored)\n  }\n\n  ignores (path) {\n    return this._test(path, this._ignoreCache, false).ignored\n  }\n\n  createFilter () {\n    return path => !this.ignores(path)\n  }\n\n  filter (paths) {\n    return makeArray(paths).filter(this.createFilter())\n  }\n\n  // @returns {TestResult}\n  test (path) {\n    return this._test(path, this._testCache, true)\n  }\n}\n\nconst factory = options => new Ignore(options)\n\nconst isPathValid = path =>\n  checkPath(path && checkPath.convert(path), path, RETURN_FALSE)\n\nfactory.isPathValid = isPathValid\n\n// Fixes typescript\nfactory.default = factory\n\nmodule.exports = factory\n\n// Windows\n// --------------------------------------------------------------\n/* istanbul ignore if */\nif (\n  // Detect `process` so that it can run in browsers.\n  typeof process !== 'undefined'\n  && (\n    process.env && process.env.IGNORE_TEST_WIN32\n    || process.platform === 'win32'\n  )\n) {\n  /* eslint no-control-regex: \"off\" */\n  const makePosix = str => /^\\\\\\\\\\?\\\\/.test(str)\n  || /[\"<>|\\u0000-\\u001F]+/u.test(str)\n    ? str\n    : str.replace(/\\\\/g, '/')\n\n  checkPath.convert = makePosix\n\n  // 'C:\\\\foo'     <- 'C:\\\\foo' has been converted to 'C:/'\n  // 'd:\\\\foo'\n  const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\\//i\n  checkPath.isNotRelative = path =>\n    REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path)\n    || isNotRelative(path)\n}\n", "/**\n * @fileoverview Restrict usage of specified node imports.\n * @author Guy Ellis\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Format import names for error messages.\n * @param {string[]} importNames The import names to format.\n * @returns {string} The formatted import names.\n */\nfunction formatImportNames(importNames) {\n\treturn new Intl.ListFormat(\"en-US\").format(\n\t\timportNames.map(name => `'${name}'`),\n\t);\n}\n\n/**\n * Returns \"is\" or \"are\" based on the number of import names.\n * @param {string[]} importNames The import names to check.\n * @returns {string} \"is\" if one import name, otherwise \"are\".\n */\nfunction isOrAre(importNames) {\n\treturn importNames.length === 1 ? \"is\" : \"are\";\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\nconst ignore = require(\"ignore\");\n\nconst arrayOfStringsOrObjects = {\n\ttype: \"array\",\n\titems: {\n\t\tanyOf: [\n\t\t\t{ type: \"string\" },\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tname: { type: \"string\" },\n\t\t\t\t\tmessage: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1,\n\t\t\t\t\t},\n\t\t\t\t\timportNames: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tallowImportNames: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tallowTypeImports: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\"Whether to allow type-only imports for a path.\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t\trequired: [\"name\"],\n\t\t\t\tnot: { required: [\"importNames\", \"allowImportNames\"] },\n\t\t\t},\n\t\t],\n\t},\n\tuniqueItems: true,\n};\n\nconst arrayOfStringsOrObjectPatterns = {\n\tanyOf: [\n\t\t{\n\t\t\ttype: \"array\",\n\t\t\titems: {\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\tuniqueItems: true,\n\t\t},\n\t\t{\n\t\t\ttype: \"array\",\n\t\t\titems: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\timportNames: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tminItems: 1,\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t\tallowImportNames: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tminItems: 1,\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t\tgroup: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tminItems: 1,\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t\tregex: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t},\n\t\t\t\t\timportNamePattern: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t},\n\t\t\t\t\tallowImportNamePattern: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t},\n\t\t\t\t\tmessage: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1,\n\t\t\t\t\t},\n\t\t\t\t\tcaseSensitive: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowTypeImports: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\"Whether to allow type-only imports for a pattern.\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t\tnot: {\n\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t{ required: [\"importNames\", \"allowImportNames\"] },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trequired: [\n\t\t\t\t\t\t\t\t\"importNamePattern\",\n\t\t\t\t\t\t\t\t\"allowImportNamePattern\",\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ required: [\"importNames\", \"allowImportNamePattern\"] },\n\t\t\t\t\t\t{ required: [\"importNamePattern\", \"allowImportNames\"] },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trequired: [\n\t\t\t\t\t\t\t\t\"allowImportNames\",\n\t\t\t\t\t\t\t\t\"allowImportNamePattern\",\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\toneOf: [{ required: [\"group\"] }, { required: [\"regex\"] }],\n\t\t\t},\n\t\t\tuniqueItems: true,\n\t\t},\n\t],\n};\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow specified modules when loaded by `import`\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-restricted-imports\",\n\t\t},\n\n\t\tmessages: {\n\t\t\tpath: \"'{{importSource}}' import is restricted from being used.\",\n\t\t\tpathWithCustomMessage:\n\t\t\t\t// eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period\n\t\t\t\t\"'{{importSource}}' import is restricted from being used. {{customMessage}}\",\n\n\t\t\tpatterns:\n\t\t\t\t\"'{{importSource}}' import is restricted from being used by a pattern.\",\n\t\t\tpatternWithCustomMessage:\n\t\t\t\t// eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period\n\t\t\t\t\"'{{importSource}}' import is restricted from being used by a pattern. {{customMessage}}\",\n\n\t\t\tpatternAndImportName:\n\t\t\t\t\"'{{importName}}' import from '{{importSource}}' is restricted from being used by a pattern.\",\n\t\t\tpatternAndImportNameWithCustomMessage:\n\t\t\t\t// eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period\n\t\t\t\t\"'{{importName}}' import from '{{importSource}}' is restricted from being used by a pattern. {{customMessage}}\",\n\n\t\t\tpatternAndEverything:\n\t\t\t\t\"* import is invalid because {{importNames}} from '{{importSource}}' {{isOrAre}} restricted from being used by a pattern.\",\n\n\t\t\tpatternAndEverythingWithRegexImportName:\n\t\t\t\t\"* import is invalid because import name matching '{{importNames}}' pattern from '{{importSource}}' is restricted from being used.\",\n\t\t\tpatternAndEverythingWithCustomMessage:\n\t\t\t\t// eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period\n\t\t\t\t\"* import is invalid because {{importNames}} from '{{importSource}}' {{isOrAre}} restricted from being used by a pattern. {{customMessage}}\",\n\t\t\tpatternAndEverythingWithRegexImportNameAndCustomMessage:\n\t\t\t\t// eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period\n\t\t\t\t\"* import is invalid because import name matching '{{importNames}}' pattern from '{{importSource}}' is restricted from being used. {{customMessage}}\",\n\n\t\t\teverything:\n\t\t\t\t\"* import is invalid because {{importNames}} from '{{importSource}}' {{isOrAre}} restricted.\",\n\t\t\teverythingWithCustomMessage:\n\t\t\t\t// eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period\n\t\t\t\t\"* import is invalid because {{importNames}} from '{{importSource}}' {{isOrAre}} restricted. {{customMessage}}\",\n\n\t\t\timportName:\n\t\t\t\t\"'{{importName}}' import from '{{importSource}}' is restricted.\",\n\t\t\timportNameWithCustomMessage:\n\t\t\t\t// eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period\n\t\t\t\t\"'{{importName}}' import from '{{importSource}}' is restricted. {{customMessage}}\",\n\n\t\t\tallowedImportName:\n\t\t\t\t\"'{{importName}}' import from '{{importSource}}' is restricted because only {{allowedImportNames}} {{isOrAre}} allowed.\",\n\t\t\tallowedImportNameWithCustomMessage:\n\t\t\t\t// eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period\n\t\t\t\t\"'{{importName}}' import from '{{importSource}}' is restricted because only {{allowedImportNames}} {{isOrAre}} allowed. {{customMessage}}\",\n\n\t\t\teverythingWithAllowImportNames:\n\t\t\t\t\"* import is invalid because only {{allowedImportNames}} from '{{importSource}}' {{isOrAre}} allowed.\",\n\t\t\teverythingWithAllowImportNamesAndCustomMessage:\n\t\t\t\t// eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period\n\t\t\t\t\"* import is invalid because only {{allowedImportNames}} from '{{importSource}}' {{isOrAre}} allowed. {{customMessage}}\",\n\n\t\t\tallowedImportNamePattern:\n\t\t\t\t\"'{{importName}}' import from '{{importSource}}' is restricted because only imports that match the pattern '{{allowedImportNamePattern}}' are allowed from '{{importSource}}'.\",\n\t\t\tallowedImportNamePatternWithCustomMessage:\n\t\t\t\t// eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period\n\t\t\t\t\"'{{importName}}' import from '{{importSource}}' is restricted because only imports that match the pattern '{{allowedImportNamePattern}}' are allowed from '{{importSource}}'. {{customMessage}}\",\n\n\t\t\teverythingWithAllowedImportNamePattern:\n\t\t\t\t\"* import is invalid because only imports that match the pattern '{{allowedImportNamePattern}}' from '{{importSource}}' are allowed.\",\n\t\t\teverythingWithAllowedImportNamePatternWithCustomMessage:\n\t\t\t\t// eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period\n\t\t\t\t\"* import is invalid because only imports that match the pattern '{{allowedImportNamePattern}}' from '{{importSource}}' are allowed. {{customMessage}}\",\n\t\t},\n\n\t\tschema: {\n\t\t\tanyOf: [\n\t\t\t\tarrayOfStringsOrObjects,\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tpaths: arrayOfStringsOrObjects,\n\t\t\t\t\t\t\t\tpatterns: arrayOfStringsOrObjectPatterns,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tadditionalItems: false,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst options = Array.isArray(context.options) ? context.options : [];\n\t\tconst isPathAndPatternsObject =\n\t\t\ttypeof options[0] === \"object\" &&\n\t\t\t(Object.hasOwn(options[0], \"paths\") ||\n\t\t\t\tObject.hasOwn(options[0], \"patterns\"));\n\n\t\tconst restrictedPaths =\n\t\t\t(isPathAndPatternsObject ? options[0].paths : context.options) ||\n\t\t\t[];\n\t\tconst groupedRestrictedPaths = restrictedPaths.reduce(\n\t\t\t(memo, importSource) => {\n\t\t\t\tconst path =\n\t\t\t\t\ttypeof importSource === \"string\"\n\t\t\t\t\t\t? importSource\n\t\t\t\t\t\t: importSource.name;\n\n\t\t\t\tif (!memo[path]) {\n\t\t\t\t\tmemo[path] = [];\n\t\t\t\t}\n\n\t\t\t\tif (typeof importSource === \"string\") {\n\t\t\t\t\tmemo[path].push({});\n\t\t\t\t} else {\n\t\t\t\t\tmemo[path].push({\n\t\t\t\t\t\tmessage: importSource.message,\n\t\t\t\t\t\timportNames: importSource.importNames,\n\t\t\t\t\t\tallowImportNames: importSource.allowImportNames,\n\t\t\t\t\t\tallowTypeImports: importSource.allowTypeImports,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn memo;\n\t\t\t},\n\t\t\tObject.create(null),\n\t\t);\n\n\t\t// Handle patterns too, either as strings or groups\n\t\tlet restrictedPatterns =\n\t\t\t(isPathAndPatternsObject ? options[0].patterns : []) || [];\n\n\t\t// standardize to array of objects if we have an array of strings\n\t\tif (\n\t\t\trestrictedPatterns.length > 0 &&\n\t\t\ttypeof restrictedPatterns[0] === \"string\"\n\t\t) {\n\t\t\trestrictedPatterns = [{ group: restrictedPatterns }];\n\t\t}\n\n\t\t// relative paths are supported for this rule\n\t\tconst restrictedPatternGroups = restrictedPatterns.map(\n\t\t\t({\n\t\t\t\tgroup,\n\t\t\t\tregex,\n\t\t\t\tmessage,\n\t\t\t\tcaseSensitive,\n\t\t\t\timportNames,\n\t\t\t\timportNamePattern,\n\t\t\t\tallowImportNames,\n\t\t\t\tallowImportNamePattern,\n\t\t\t\tallowTypeImports,\n\t\t\t}) => ({\n\t\t\t\t...(group\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tmatcher: ignore({\n\t\t\t\t\t\t\t\tallowRelativePaths: true,\n\t\t\t\t\t\t\t\tignorecase: !caseSensitive,\n\t\t\t\t\t\t\t}).add(group),\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t\t...(typeof regex === \"string\"\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tregexMatcher: new RegExp(\n\t\t\t\t\t\t\t\tregex,\n\t\t\t\t\t\t\t\tcaseSensitive ? \"u\" : \"iu\",\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t\tcustomMessage: message,\n\t\t\t\timportNames,\n\t\t\t\timportNamePattern,\n\t\t\t\tallowImportNames,\n\t\t\t\tallowImportNamePattern,\n\t\t\t\tallowTypeImports,\n\t\t\t}),\n\t\t);\n\n\t\t// if no imports are restricted we don't need to check\n\t\tif (\n\t\t\tObject.keys(restrictedPaths).length === 0 &&\n\t\t\trestrictedPatternGroups.length === 0\n\t\t) {\n\t\t\treturn {};\n\t\t}\n\n\t\t/**\n\t\t * Check if the node is a type-only import\n\t\t * @param {ASTNode} node The node to check\n\t\t * @returns {boolean} Whether the node is a type-only import\n\t\t */\n\t\tfunction isTypeOnlyImport(node) {\n\t\t\treturn (\n\t\t\t\tnode.importKind === \"type\" ||\n\t\t\t\t(node.specifiers?.length > 0 &&\n\t\t\t\t\tnode.specifiers.every(\n\t\t\t\t\t\tspecifier => specifier.importKind === \"type\",\n\t\t\t\t\t))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check if a specifier is type-only\n\t\t * @param {ASTNode} specifier The specifier to check\n\t\t * @returns {boolean} Whether the specifier is type-only\n\t\t */\n\t\tfunction isTypeOnlySpecifier(specifier) {\n\t\t\treturn (\n\t\t\t\tspecifier.importKind === \"type\" ||\n\t\t\t\tspecifier.exportKind === \"type\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check if the node is a type-only export\n\t\t * @param {ASTNode} node The node to check\n\t\t * @returns {boolean} Whether the node is a type-only export\n\t\t */\n\t\tfunction isTypeOnlyExport(node) {\n\t\t\treturn (\n\t\t\t\tnode.exportKind === \"type\" ||\n\t\t\t\t(node.specifiers?.length > 0 &&\n\t\t\t\t\tnode.specifiers.every(\n\t\t\t\t\t\tspecifier => specifier.exportKind === \"type\",\n\t\t\t\t\t))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Report a restricted path.\n\t\t * @param {string} importSource path of the import\n\t\t * @param {Map<string,Object[]>} importNames Map of import names that are being imported\n\t\t * @param {node} node representing the restricted path reference\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkRestrictedPathAndReport(importSource, importNames, node) {\n\t\t\tif (!Object.hasOwn(groupedRestrictedPaths, importSource)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tgroupedRestrictedPaths[importSource].forEach(\n\t\t\t\trestrictedPathEntry => {\n\t\t\t\t\tconst customMessage = restrictedPathEntry.message;\n\t\t\t\t\tconst restrictedImportNames =\n\t\t\t\t\t\trestrictedPathEntry.importNames;\n\t\t\t\t\tconst allowedImportNames =\n\t\t\t\t\t\trestrictedPathEntry.allowImportNames;\n\t\t\t\t\tconst allowTypeImports =\n\t\t\t\t\t\trestrictedPathEntry.allowTypeImports;\n\n\t\t\t\t\t// Skip if this is a type-only import and it's allowed for this specific entry\n\t\t\t\t\tif (\n\t\t\t\t\t\tallowTypeImports &&\n\t\t\t\t\t\t(node.type === \"ImportDeclaration\" ||\n\t\t\t\t\t\t\tnode.type === \"TSImportEqualsDeclaration\") &&\n\t\t\t\t\t\tisTypeOnlyImport(node)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Skip if this is a type-only export and it's allowed for this specific entry\n\t\t\t\t\tif (\n\t\t\t\t\t\tallowTypeImports &&\n\t\t\t\t\t\t(node.type === \"ExportNamedDeclaration\" ||\n\t\t\t\t\t\t\tnode.type === \"ExportAllDeclaration\") &&\n\t\t\t\t\t\tisTypeOnlyExport(node)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!restrictedImportNames && !allowedImportNames) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: customMessage\n\t\t\t\t\t\t\t\t? \"pathWithCustomMessage\"\n\t\t\t\t\t\t\t\t: \"path\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\timportSource,\n\t\t\t\t\t\t\t\tcustomMessage,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\timportNames.forEach((specifiers, importName) => {\n\t\t\t\t\t\tif (importName === \"*\") {\n\t\t\t\t\t\t\tconst [specifier] = specifiers;\n\n\t\t\t\t\t\t\tif (restrictedImportNames) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tmessageId: customMessage\n\t\t\t\t\t\t\t\t\t\t? \"everythingWithCustomMessage\"\n\t\t\t\t\t\t\t\t\t\t: \"everything\",\n\t\t\t\t\t\t\t\t\tloc: specifier.loc,\n\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\timportSource,\n\t\t\t\t\t\t\t\t\t\timportNames: formatImportNames(\n\t\t\t\t\t\t\t\t\t\t\trestrictedImportNames,\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tisOrAre: isOrAre(restrictedImportNames),\n\t\t\t\t\t\t\t\t\t\tcustomMessage,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else if (allowedImportNames) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tmessageId: customMessage\n\t\t\t\t\t\t\t\t\t\t? \"everythingWithAllowImportNamesAndCustomMessage\"\n\t\t\t\t\t\t\t\t\t\t: \"everythingWithAllowImportNames\",\n\t\t\t\t\t\t\t\t\tloc: specifier.loc,\n\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\timportSource,\n\t\t\t\t\t\t\t\t\t\tallowedImportNames:\n\t\t\t\t\t\t\t\t\t\t\tformatImportNames(\n\t\t\t\t\t\t\t\t\t\t\t\tallowedImportNames,\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tisOrAre: isOrAre(allowedImportNames),\n\t\t\t\t\t\t\t\t\t\tcustomMessage,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\trestrictedImportNames &&\n\t\t\t\t\t\t\trestrictedImportNames.includes(importName)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tspecifiers.forEach(specifier => {\n\t\t\t\t\t\t\t\t// Skip if this is a type-only import specifier and type imports are allowed\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tallowTypeImports &&\n\t\t\t\t\t\t\t\t\tisTypeOnlySpecifier(specifier.specifier)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tmessageId: customMessage\n\t\t\t\t\t\t\t\t\t\t? \"importNameWithCustomMessage\"\n\t\t\t\t\t\t\t\t\t\t: \"importName\",\n\t\t\t\t\t\t\t\t\tloc: specifier.loc,\n\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\timportSource,\n\t\t\t\t\t\t\t\t\t\tcustomMessage,\n\t\t\t\t\t\t\t\t\t\timportName,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tallowedImportNames &&\n\t\t\t\t\t\t\t!allowedImportNames.includes(importName)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tspecifiers.forEach(specifier => {\n\t\t\t\t\t\t\t\t// Skip if this is a type-only import specifier and type imports are allowed\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tallowTypeImports &&\n\t\t\t\t\t\t\t\t\tisTypeOnlySpecifier(specifier.specifier)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tloc: specifier.loc,\n\t\t\t\t\t\t\t\t\tmessageId: customMessage\n\t\t\t\t\t\t\t\t\t\t? \"allowedImportNameWithCustomMessage\"\n\t\t\t\t\t\t\t\t\t\t: \"allowedImportName\",\n\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\timportSource,\n\t\t\t\t\t\t\t\t\t\tcustomMessage,\n\t\t\t\t\t\t\t\t\t\timportName,\n\t\t\t\t\t\t\t\t\t\tallowedImportNames:\n\t\t\t\t\t\t\t\t\t\t\tformatImportNames(\n\t\t\t\t\t\t\t\t\t\t\t\tallowedImportNames,\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tisOrAre: isOrAre(allowedImportNames),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Report a restricted path specifically for patterns.\n\t\t * @param {node} node representing the restricted path reference\n\t\t * @param {Object} group contains an Ignore instance for paths, the customMessage to show on failure,\n\t\t * and any restricted import names that have been specified in the config\n\t\t * @param {Map<string,Object[]>} importNames Map of import names that are being imported\n\t\t * @param {string} importSource the import source string\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction reportPathForPatterns(node, group, importNames, importSource) {\n\t\t\t// Skip if this is a type-only import and it's allowed\n\t\t\tif (\n\t\t\t\tgroup.allowTypeImports &&\n\t\t\t\t(node.type === \"ImportDeclaration\" ||\n\t\t\t\t\tnode.type === \"TSImportEqualsDeclaration\") &&\n\t\t\t\tisTypeOnlyImport(node)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Skip if this is a type-only export and it's allowed\n\t\t\tif (\n\t\t\t\tgroup.allowTypeImports &&\n\t\t\t\t(node.type === \"ExportNamedDeclaration\" ||\n\t\t\t\t\tnode.type === \"ExportAllDeclaration\") &&\n\t\t\t\tisTypeOnlyExport(node)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst customMessage = group.customMessage;\n\t\t\tconst restrictedImportNames = group.importNames;\n\t\t\tconst restrictedImportNamePattern = group.importNamePattern\n\t\t\t\t? new RegExp(group.importNamePattern, \"u\")\n\t\t\t\t: null;\n\t\t\tconst allowedImportNames = group.allowImportNames;\n\t\t\tconst allowedImportNamePattern = group.allowImportNamePattern\n\t\t\t\t? new RegExp(group.allowImportNamePattern, \"u\")\n\t\t\t\t: null;\n\n\t\t\t/**\n\t\t\t * If we are not restricting to any specific import names and just the pattern itself,\n\t\t\t * report the error and move on\n\t\t\t */\n\t\t\tif (\n\t\t\t\t!restrictedImportNames &&\n\t\t\t\t!allowedImportNames &&\n\t\t\t\t!restrictedImportNamePattern &&\n\t\t\t\t!allowedImportNamePattern\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: customMessage\n\t\t\t\t\t\t? \"patternWithCustomMessage\"\n\t\t\t\t\t\t: \"patterns\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\timportSource,\n\t\t\t\t\t\tcustomMessage,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\timportNames.forEach((specifiers, importName) => {\n\t\t\t\tif (importName === \"*\") {\n\t\t\t\t\tconst [specifier] = specifiers;\n\n\t\t\t\t\tif (restrictedImportNames) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: customMessage\n\t\t\t\t\t\t\t\t? \"patternAndEverythingWithCustomMessage\"\n\t\t\t\t\t\t\t\t: \"patternAndEverything\",\n\t\t\t\t\t\t\tloc: specifier.loc,\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\timportSource,\n\t\t\t\t\t\t\t\timportNames: formatImportNames(\n\t\t\t\t\t\t\t\t\trestrictedImportNames,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tisOrAre: isOrAre(restrictedImportNames),\n\t\t\t\t\t\t\t\tcustomMessage,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (allowedImportNames) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: customMessage\n\t\t\t\t\t\t\t\t? \"everythingWithAllowImportNamesAndCustomMessage\"\n\t\t\t\t\t\t\t\t: \"everythingWithAllowImportNames\",\n\t\t\t\t\t\t\tloc: specifier.loc,\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\timportSource,\n\t\t\t\t\t\t\t\tallowedImportNames:\n\t\t\t\t\t\t\t\t\tformatImportNames(allowedImportNames),\n\t\t\t\t\t\t\t\tisOrAre: isOrAre(allowedImportNames),\n\t\t\t\t\t\t\t\tcustomMessage,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (allowedImportNamePattern) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: customMessage\n\t\t\t\t\t\t\t\t? \"everythingWithAllowedImportNamePatternWithCustomMessage\"\n\t\t\t\t\t\t\t\t: \"everythingWithAllowedImportNamePattern\",\n\t\t\t\t\t\t\tloc: specifier.loc,\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\timportSource,\n\t\t\t\t\t\t\t\tallowedImportNamePattern,\n\t\t\t\t\t\t\t\tcustomMessage,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: customMessage\n\t\t\t\t\t\t\t\t? \"patternAndEverythingWithRegexImportNameAndCustomMessage\"\n\t\t\t\t\t\t\t\t: \"patternAndEverythingWithRegexImportName\",\n\t\t\t\t\t\t\tloc: specifier.loc,\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\timportSource,\n\t\t\t\t\t\t\t\timportNames: restrictedImportNamePattern,\n\t\t\t\t\t\t\t\tcustomMessage,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(restrictedImportNames &&\n\t\t\t\t\t\trestrictedImportNames.includes(importName)) ||\n\t\t\t\t\t(restrictedImportNamePattern &&\n\t\t\t\t\t\trestrictedImportNamePattern.test(importName))\n\t\t\t\t) {\n\t\t\t\t\tspecifiers.forEach(specifier => {\n\t\t\t\t\t\t// Skip if this is a type-only import specifier and type imports are allowed\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgroup.allowTypeImports &&\n\t\t\t\t\t\t\tisTypeOnlySpecifier(specifier.specifier)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: customMessage\n\t\t\t\t\t\t\t\t? \"patternAndImportNameWithCustomMessage\"\n\t\t\t\t\t\t\t\t: \"patternAndImportName\",\n\t\t\t\t\t\t\tloc: specifier.loc,\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\timportSource,\n\t\t\t\t\t\t\t\tcustomMessage,\n\t\t\t\t\t\t\t\timportName,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tallowedImportNames &&\n\t\t\t\t\t!allowedImportNames.includes(importName)\n\t\t\t\t) {\n\t\t\t\t\tspecifiers.forEach(specifier => {\n\t\t\t\t\t\t// Skip if this is a type-only import specifier and type imports are allowed\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgroup.allowTypeImports &&\n\t\t\t\t\t\t\tisTypeOnlySpecifier(specifier.specifier)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: customMessage\n\t\t\t\t\t\t\t\t? \"allowedImportNameWithCustomMessage\"\n\t\t\t\t\t\t\t\t: \"allowedImportName\",\n\t\t\t\t\t\t\tloc: specifier.loc,\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\timportSource,\n\t\t\t\t\t\t\t\tcustomMessage,\n\t\t\t\t\t\t\t\timportName,\n\t\t\t\t\t\t\t\tallowedImportNames:\n\t\t\t\t\t\t\t\t\tformatImportNames(allowedImportNames),\n\t\t\t\t\t\t\t\tisOrAre: isOrAre(allowedImportNames),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t} else if (\n\t\t\t\t\tallowedImportNamePattern &&\n\t\t\t\t\t!allowedImportNamePattern.test(importName)\n\t\t\t\t) {\n\t\t\t\t\tspecifiers.forEach(specifier => {\n\t\t\t\t\t\t// Skip if this is a type-only import specifier and type imports are allowed\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgroup.allowTypeImports &&\n\t\t\t\t\t\t\tisTypeOnlySpecifier(specifier.specifier)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: customMessage\n\t\t\t\t\t\t\t\t? \"allowedImportNamePatternWithCustomMessage\"\n\t\t\t\t\t\t\t\t: \"allowedImportNamePattern\",\n\t\t\t\t\t\t\tloc: specifier.loc,\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\timportSource,\n\t\t\t\t\t\t\t\tcustomMessage,\n\t\t\t\t\t\t\t\timportName,\n\t\t\t\t\t\t\t\tallowedImportNamePattern,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Check if the given importSource is restricted by a pattern.\n\t\t * @param {string} importSource path of the import\n\t\t * @param {Object} group contains a Ignore instance for paths, and the customMessage to show if it fails\n\t\t * @returns {boolean} whether the variable is a restricted pattern or not\n\t\t * @private\n\t\t */\n\t\tfunction isRestrictedPattern(importSource, group) {\n\t\t\treturn group.regexMatcher\n\t\t\t\t? group.regexMatcher.test(importSource)\n\t\t\t\t: group.matcher.ignores(importSource);\n\t\t}\n\n\t\t/**\n\t\t * Checks a node to see if any problems should be reported.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkNode(node) {\n\t\t\tconst importSource = node.source.value.trim();\n\t\t\tconst importNames = new Map();\n\n\t\t\tif (node.type === \"ExportAllDeclaration\") {\n\t\t\t\tconst starToken = sourceCode.getFirstToken(node, 1);\n\n\t\t\t\timportNames.set(\"*\", [{ loc: starToken.loc }]);\n\t\t\t} else if (node.specifiers) {\n\t\t\t\tfor (const specifier of node.specifiers) {\n\t\t\t\t\tlet name;\n\t\t\t\t\tconst specifierData = { loc: specifier.loc, specifier };\n\n\t\t\t\t\tif (specifier.type === \"ImportDefaultSpecifier\") {\n\t\t\t\t\t\tname = \"default\";\n\t\t\t\t\t} else if (specifier.type === \"ImportNamespaceSpecifier\") {\n\t\t\t\t\t\tname = \"*\";\n\t\t\t\t\t} else if (specifier.imported) {\n\t\t\t\t\t\tname = astUtils.getModuleExportName(specifier.imported);\n\t\t\t\t\t} else if (specifier.local) {\n\t\t\t\t\t\tname = astUtils.getModuleExportName(specifier.local);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof name === \"string\") {\n\t\t\t\t\t\tif (importNames.has(name)) {\n\t\t\t\t\t\t\timportNames.get(name).push(specifierData);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\timportNames.set(name, [specifierData]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcheckRestrictedPathAndReport(importSource, importNames, node);\n\t\t\trestrictedPatternGroups.forEach(group => {\n\t\t\t\tif (isRestrictedPattern(importSource, group)) {\n\t\t\t\t\treportPathForPatterns(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tgroup,\n\t\t\t\t\t\timportNames,\n\t\t\t\t\t\timportSource,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tImportDeclaration: checkNode,\n\t\t\tExportNamedDeclaration(node) {\n\t\t\t\tif (node.source) {\n\t\t\t\t\tcheckNode(node);\n\t\t\t\t}\n\t\t\t},\n\t\t\tExportAllDeclaration: checkNode,\n\t\t\t// Add support for TypeScript import equals declarations\n\t\t\tTSImportEqualsDeclaration(node) {\n\t\t\t\tif (node.moduleReference.type === \"TSExternalModuleReference\") {\n\t\t\t\t\tconst importSource = node.moduleReference.expression.value;\n\t\t\t\t\tconst importNames = new Map();\n\n\t\t\t\t\t// Use existing logic with the actual node\n\t\t\t\t\tcheckRestrictedPathAndReport(\n\t\t\t\t\t\timportSource,\n\t\t\t\t\t\timportNames,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t);\n\t\t\t\t\trestrictedPatternGroups.forEach(group => {\n\t\t\t\t\t\tif (isRestrictedPattern(importSource, group)) {\n\t\t\t\t\t\t\treportPathForPatterns(\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\tgroup,\n\t\t\t\t\t\t\t\timportNames,\n\t\t\t\t\t\t\t\timportSource,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Restrict usage of specified node modules.\n * @author Christian Schulz\n * @deprecated in ESLint v7.0.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\nconst ignore = require(\"ignore\");\n\nconst arrayOfStrings = {\n\ttype: \"array\",\n\titems: { type: \"string\" },\n\tuniqueItems: true,\n};\n\nconst arrayOfStringsOrObjects = {\n\ttype: \"array\",\n\titems: {\n\t\tanyOf: [\n\t\t\t{ type: \"string\" },\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tname: { type: \"string\" },\n\t\t\t\t\tmessage: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t\trequired: [\"name\"],\n\t\t\t},\n\t\t],\n\t},\n\tuniqueItems: true,\n};\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Node.js rules were moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules\",\n\t\t\tdeprecatedSince: \"7.0.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"eslint-plugin-n now maintains deprecated Node.js-related rules.\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"eslint-plugin-n\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-restricted-require\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules/no-restricted-require.md\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow specified modules when loaded by `require`\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-restricted-modules\",\n\t\t},\n\n\t\tschema: {\n\t\t\tanyOf: [\n\t\t\t\tarrayOfStringsOrObjects,\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tpaths: arrayOfStringsOrObjects,\n\t\t\t\t\t\t\tpatterns: arrayOfStrings,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tadditionalItems: false,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tmessages: {\n\t\t\tdefaultMessage: \"'{{name}}' module is restricted from being used.\",\n\t\t\tcustomMessage:\n\t\t\t\t// eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period\n\t\t\t\t\"'{{name}}' module is restricted from being used. {{customMessage}}\",\n\t\t\tpatternMessage:\n\t\t\t\t\"'{{name}}' module is restricted from being used by a pattern.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst options = Array.isArray(context.options) ? context.options : [];\n\t\tconst isPathAndPatternsObject =\n\t\t\ttypeof options[0] === \"object\" &&\n\t\t\t(Object.hasOwn(options[0], \"paths\") ||\n\t\t\t\tObject.hasOwn(options[0], \"patterns\"));\n\n\t\tconst restrictedPaths =\n\t\t\t(isPathAndPatternsObject ? options[0].paths : context.options) ||\n\t\t\t[];\n\t\tconst restrictedPatterns =\n\t\t\t(isPathAndPatternsObject ? options[0].patterns : []) || [];\n\n\t\tconst restrictedPathMessages = restrictedPaths.reduce(\n\t\t\t(memo, importName) => {\n\t\t\t\tif (typeof importName === \"string\") {\n\t\t\t\t\tmemo[importName] = null;\n\t\t\t\t} else {\n\t\t\t\t\tmemo[importName.name] = importName.message;\n\t\t\t\t}\n\t\t\t\treturn memo;\n\t\t\t},\n\t\t\t{},\n\t\t);\n\n\t\t// if no imports are restricted we don't need to check\n\t\tif (\n\t\t\tObject.keys(restrictedPaths).length === 0 &&\n\t\t\trestrictedPatterns.length === 0\n\t\t) {\n\t\t\treturn {};\n\t\t}\n\n\t\t// relative paths are supported for this rule\n\t\tconst ig = ignore({ allowRelativePaths: true }).add(restrictedPatterns);\n\n\t\t/**\n\t\t * Function to check if a node is a string literal.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} If the node is a string literal.\n\t\t */\n\t\tfunction isStringLiteral(node) {\n\t\t\treturn (\n\t\t\t\tnode &&\n\t\t\t\tnode.type === \"Literal\" &&\n\t\t\t\ttypeof node.value === \"string\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Function to check if a node is a require call.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} If the node is a require call.\n\t\t */\n\t\tfunction isRequireCall(node) {\n\t\t\treturn (\n\t\t\t\tnode.callee.type === \"Identifier\" &&\n\t\t\t\tnode.callee.name === \"require\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Extract string from Literal or TemplateLiteral node\n\t\t * @param {ASTNode} node The node to extract from\n\t\t * @returns {string|null} Extracted string or null if node doesn't represent a string\n\t\t */\n\t\tfunction getFirstArgumentString(node) {\n\t\t\tif (isStringLiteral(node)) {\n\t\t\t\treturn node.value.trim();\n\t\t\t}\n\n\t\t\tif (astUtils.isStaticTemplateLiteral(node)) {\n\t\t\t\treturn node.quasis[0].value.cooked.trim();\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\t/**\n\t\t * Report a restricted path.\n\t\t * @param {node} node representing the restricted path reference\n\t\t * @param {string} name restricted path\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction reportPath(node, name) {\n\t\t\tconst customMessage = restrictedPathMessages[name];\n\t\t\tconst messageId = customMessage\n\t\t\t\t? \"customMessage\"\n\t\t\t\t: \"defaultMessage\";\n\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId,\n\t\t\t\tdata: {\n\t\t\t\t\tname,\n\t\t\t\t\tcustomMessage,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Check if the given name is a restricted path name\n\t\t * @param {string} name name of a variable\n\t\t * @returns {boolean} whether the variable is a restricted path or not\n\t\t * @private\n\t\t */\n\t\tfunction isRestrictedPath(name) {\n\t\t\treturn Object.hasOwn(restrictedPathMessages, name);\n\t\t}\n\n\t\treturn {\n\t\t\tCallExpression(node) {\n\t\t\t\tif (isRequireCall(node)) {\n\t\t\t\t\t// node has arguments\n\t\t\t\t\tif (node.arguments.length) {\n\t\t\t\t\t\tconst name = getFirstArgumentString(node.arguments[0]);\n\n\t\t\t\t\t\t// if first argument is a string literal or a static string template literal\n\t\t\t\t\t\tif (name) {\n\t\t\t\t\t\t\t// check if argument value is in restricted modules array\n\t\t\t\t\t\t\tif (isRestrictedPath(name)) {\n\t\t\t\t\t\t\t\treportPath(node, name);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\trestrictedPatterns.length > 0 &&\n\t\t\t\t\t\t\t\tig.ignores(name)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tmessageId: \"patternMessage\",\n\t\t\t\t\t\t\t\t\tdata: { name },\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow certain object properties\n * @author Will Klein & Eli White\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow certain properties on certain objects\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-restricted-properties\",\n\t\t},\n\n\t\tschema: {\n\t\t\ttype: \"array\",\n\t\t\titems: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tobject: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t},\n\t\t\t\t\tproperty: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t},\n\t\t\t\t\tallowObjects: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t\tallowProperties: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t\tmessage: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\trequired: [\"object\"],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\trequired: [\"property\"],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tnot: {\n\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t{ required: [\"allowObjects\", \"object\"] },\n\t\t\t\t\t\t{ required: [\"allowProperties\", \"property\"] },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t\tuniqueItems: true,\n\t\t},\n\n\t\tdefaultOptions: [],\n\n\t\tmessages: {\n\t\t\trestrictedObjectProperty:\n\t\t\t\t// eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period\n\t\t\t\t\"'{{objectName}}.{{propertyName}}' is restricted from being used.{{allowedPropertiesMessage}}{{message}}\",\n\t\t\trestrictedProperty:\n\t\t\t\t// eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period\n\t\t\t\t\"'{{propertyName}}' is restricted from being used.{{allowedObjectsMessage}}{{message}}\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst restrictedCalls = context.options;\n\n\t\tif (restrictedCalls.length === 0) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst restrictedProperties = new Map();\n\t\tconst globallyRestrictedObjects = new Map();\n\t\tconst globallyRestrictedProperties = new Map();\n\n\t\trestrictedCalls.forEach(option => {\n\t\t\tconst objectName = option.object;\n\t\t\tconst propertyName = option.property;\n\n\t\t\tif (typeof objectName === \"undefined\") {\n\t\t\t\tgloballyRestrictedProperties.set(propertyName, {\n\t\t\t\t\tallowObjects: option.allowObjects,\n\t\t\t\t\tmessage: option.message,\n\t\t\t\t});\n\t\t\t} else if (typeof propertyName === \"undefined\") {\n\t\t\t\tgloballyRestrictedObjects.set(objectName, {\n\t\t\t\t\tallowProperties: option.allowProperties,\n\t\t\t\t\tmessage: option.message,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (!restrictedProperties.has(objectName)) {\n\t\t\t\t\trestrictedProperties.set(objectName, new Map());\n\t\t\t\t}\n\n\t\t\t\trestrictedProperties.get(objectName).set(propertyName, {\n\t\t\t\t\tmessage: option.message,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t/**\n\t\t * Checks if a name is in the allowed list.\n\t\t * @param {string} name The name to check\n\t\t * @param {string[]} [allowedList] The list of allowed names\n\t\t * @returns {boolean} True if the name is allowed, false otherwise\n\t\t */\n\t\tfunction isAllowed(name, allowedList) {\n\t\t\tif (!allowedList) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn allowedList.includes(name);\n\t\t}\n\n\t\t/**\n\t\t * Checks to see whether a property access is restricted, and reports it if so.\n\t\t * @param {ASTNode} node The node to report\n\t\t * @param {string} objectName The name of the object\n\t\t * @param {string} propertyName The name of the property\n\t\t * @returns {undefined}\n\t\t */\n\t\tfunction checkPropertyAccess(node, objectName, propertyName) {\n\t\t\tif (propertyName === null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst matchedObject = restrictedProperties.get(objectName);\n\t\t\tconst matchedObjectProperty = matchedObject\n\t\t\t\t? matchedObject.get(propertyName)\n\t\t\t\t: globallyRestrictedObjects.get(objectName);\n\t\t\tconst globalMatchedProperty =\n\t\t\t\tgloballyRestrictedProperties.get(propertyName);\n\n\t\t\tif (\n\t\t\t\tmatchedObjectProperty &&\n\t\t\t\t!isAllowed(propertyName, matchedObjectProperty.allowProperties)\n\t\t\t) {\n\t\t\t\tconst message = matchedObjectProperty.message\n\t\t\t\t\t? ` ${matchedObjectProperty.message}`\n\t\t\t\t\t: \"\";\n\t\t\t\tconst allowedPropertiesMessage =\n\t\t\t\t\tmatchedObjectProperty.allowProperties\n\t\t\t\t\t\t? ` Only these properties are allowed: ${matchedObjectProperty.allowProperties.join(\", \")}.`\n\t\t\t\t\t\t: \"\";\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"restrictedObjectProperty\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tobjectName,\n\t\t\t\t\t\tpropertyName,\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tallowedPropertiesMessage,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else if (\n\t\t\t\tglobalMatchedProperty &&\n\t\t\t\t!isAllowed(objectName, globalMatchedProperty.allowObjects)\n\t\t\t) {\n\t\t\t\tconst message = globalMatchedProperty.message\n\t\t\t\t\t? ` ${globalMatchedProperty.message}`\n\t\t\t\t\t: \"\";\n\t\t\t\tconst allowedObjectsMessage = globalMatchedProperty.allowObjects\n\t\t\t\t\t? ` Property '${propertyName}' is only allowed on these objects: ${globalMatchedProperty.allowObjects.join(\", \")}.`\n\t\t\t\t\t: \"\";\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"restrictedProperty\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tpropertyName,\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tallowedObjectsMessage,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tMemberExpression(node) {\n\t\t\t\tcheckPropertyAccess(\n\t\t\t\t\tnode,\n\t\t\t\t\tnode.object && node.object.name,\n\t\t\t\t\tastUtils.getStaticPropertyName(node),\n\t\t\t\t);\n\t\t\t},\n\t\t\tObjectPattern(node) {\n\t\t\t\tlet objectName = null;\n\n\t\t\t\tif (node.parent.type === \"VariableDeclarator\") {\n\t\t\t\t\tif (\n\t\t\t\t\t\tnode.parent.init &&\n\t\t\t\t\t\tnode.parent.init.type === \"Identifier\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tobjectName = node.parent.init.name;\n\t\t\t\t\t}\n\t\t\t\t} else if (\n\t\t\t\t\tnode.parent.type === \"AssignmentExpression\" ||\n\t\t\t\t\tnode.parent.type === \"AssignmentPattern\"\n\t\t\t\t) {\n\t\t\t\t\tif (node.parent.right.type === \"Identifier\") {\n\t\t\t\t\t\tobjectName = node.parent.right.name;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnode.properties.forEach(property => {\n\t\t\t\t\tcheckPropertyAccess(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tobjectName,\n\t\t\t\t\t\tastUtils.getStaticPropertyName(property),\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of certain node types\n * @author Burak Yigit Kaya\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow specified syntax\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-restricted-syntax\",\n\t\t},\n\n\t\tschema: {\n\t\t\ttype: \"array\",\n\t\t\titems: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tselector: { type: \"string\" },\n\t\t\t\t\t\t\tmessage: { type: \"string\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequired: [\"selector\"],\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\tuniqueItems: true,\n\t\t\tminItems: 0,\n\t\t},\n\n\t\tdefaultOptions: [],\n\n\t\tmessages: {\n\t\t\t// eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period\n\t\t\trestrictedSyntax: \"{{message}}\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn context.options.reduce((result, selectorOrObject) => {\n\t\t\tconst isStringFormat = typeof selectorOrObject === \"string\";\n\t\t\tconst hasCustomMessage =\n\t\t\t\t!isStringFormat && Boolean(selectorOrObject.message);\n\n\t\t\tconst selector = isStringFormat\n\t\t\t\t? selectorOrObject\n\t\t\t\t: selectorOrObject.selector;\n\t\t\tconst message = hasCustomMessage\n\t\t\t\t? selectorOrObject.message\n\t\t\t\t: `Using '${selector}' is not allowed.`;\n\n\t\t\treturn Object.assign(result, {\n\t\t\t\t[selector](node) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"restrictedSyntax\",\n\t\t\t\t\t\tdata: { message },\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t});\n\t\t}, {});\n\t},\n};\n", "/**\n * @fileoverview Rule to flag when return statement contains assignment\n * @author Ilya Volodin\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst SENTINEL_TYPE =\n\t/^(?:[a-zA-Z]+?Statement|ArrowFunctionExpression|FunctionExpression|ClassExpression)$/u;\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\"except-parens\"],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow assignment operators in `return` statements\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-return-assign\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"except-parens\", \"always\"],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\treturnAssignment: \"Return statement should not contain assignment.\",\n\t\t\tarrowAssignment: \"Arrow function should not return assignment.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst always = context.options[0] !== \"except-parens\";\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tAssignmentExpression(node) {\n\t\t\t\tif (!always && astUtils.isParenthesised(sourceCode, node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet currentChild = node;\n\t\t\t\tlet parent = currentChild.parent;\n\n\t\t\t\t// Find ReturnStatement or ArrowFunctionExpression in ancestors.\n\t\t\t\twhile (parent && !SENTINEL_TYPE.test(parent.type)) {\n\t\t\t\t\tcurrentChild = parent;\n\t\t\t\t\tparent = parent.parent;\n\t\t\t\t}\n\n\t\t\t\t// Reports.\n\t\t\t\tif (parent && parent.type === \"ReturnStatement\") {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: parent,\n\t\t\t\t\t\tmessageId: \"returnAssignment\",\n\t\t\t\t\t});\n\t\t\t\t} else if (\n\t\t\t\t\tparent &&\n\t\t\t\t\tparent.type === \"ArrowFunctionExpression\" &&\n\t\t\t\t\tparent.body === currentChild\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: parent,\n\t\t\t\t\t\tmessageId: \"arrowAssignment\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallows unnecessary `return await`\n * @author Jordan Harband\n * @deprecated in ESLint v8.46.0\n */\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\thasSuggestions: true,\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow unnecessary `return await`\",\n\n\t\t\trecommended: false,\n\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-return-await\",\n\t\t},\n\n\t\tfixable: null,\n\n\t\tdeprecated: {\n\t\t\tmessage:\n\t\t\t\t\"The original assumption of the rule no longer holds true because of engine optimization.\",\n\t\t\tdeprecatedSince: \"8.46.0\",\n\t\t\tavailableUntil: null,\n\t\t\treplacedBy: [],\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tremoveAwait: \"Remove redundant `await`.\",\n\t\t\tredundantUseOfAwait: \"Redundant use of `await` on a return value.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t/**\n\t\t * Reports a found unnecessary `await` expression.\n\t\t * @param {ASTNode} node The node representing the `await` expression to report\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportUnnecessaryAwait(node) {\n\t\t\tcontext.report({\n\t\t\t\tnode: context.sourceCode.getFirstToken(node),\n\t\t\t\tloc: node.loc,\n\t\t\t\tmessageId: \"redundantUseOfAwait\",\n\t\t\t\tsuggest: [\n\t\t\t\t\t{\n\t\t\t\t\t\tmessageId: \"removeAwait\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tconst sourceCode = context.sourceCode;\n\t\t\t\t\t\t\tconst [awaitToken, tokenAfterAwait] =\n\t\t\t\t\t\t\t\tsourceCode.getFirstTokens(node, 2);\n\n\t\t\t\t\t\t\tconst areAwaitAndAwaitedExpressionOnTheSameLine =\n\t\t\t\t\t\t\t\tawaitToken.loc.start.line ===\n\t\t\t\t\t\t\t\ttokenAfterAwait.loc.start.line;\n\n\t\t\t\t\t\t\tif (!areAwaitAndAwaitedExpressionOnTheSameLine) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst [startOfAwait, endOfAwait] = awaitToken.range;\n\n\t\t\t\t\t\t\tconst characterAfterAwait =\n\t\t\t\t\t\t\t\tsourceCode.text[endOfAwait];\n\t\t\t\t\t\t\tconst trimLength =\n\t\t\t\t\t\t\t\tcharacterAfterAwait === \" \" ? 1 : 0;\n\n\t\t\t\t\t\t\tconst range = [\n\t\t\t\t\t\t\t\tstartOfAwait,\n\t\t\t\t\t\t\t\tendOfAwait + trimLength,\n\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\treturn fixer.removeRange(range);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Determines whether a thrown error from this node will be caught/handled within this function rather than immediately halting\n\t\t * this function. For example, a statement in a `try` block will always have an error handler. A statement in\n\t\t * a `catch` block will only have an error handler if there is also a `finally` block.\n\t\t * @param {ASTNode} node A node representing a location where an could be thrown\n\t\t * @returns {boolean} `true` if a thrown error will be caught/handled in this function\n\t\t */\n\t\tfunction hasErrorHandler(node) {\n\t\t\tlet ancestor = node;\n\n\t\t\twhile (\n\t\t\t\t!astUtils.isFunction(ancestor) &&\n\t\t\t\tancestor.type !== \"Program\"\n\t\t\t) {\n\t\t\t\tif (\n\t\t\t\t\tancestor.parent.type === \"TryStatement\" &&\n\t\t\t\t\t(ancestor === ancestor.parent.block ||\n\t\t\t\t\t\t(ancestor === ancestor.parent.handler &&\n\t\t\t\t\t\t\tancestor.parent.finalizer))\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tancestor = ancestor.parent;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Checks if a node is placed in tail call position. Once `return` arguments (or arrow function expressions) can be a complex expression,\n\t\t * an `await` expression could or could not be unnecessary by the definition of this rule. So we're looking for `await` expressions that are in tail position.\n\t\t * @param {ASTNode} node A node representing the `await` expression to check\n\t\t * @returns {boolean} The checking result\n\t\t */\n\t\tfunction isInTailCallPosition(node) {\n\t\t\tif (node.parent.type === \"ArrowFunctionExpression\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (node.parent.type === \"ReturnStatement\") {\n\t\t\t\treturn !hasErrorHandler(node.parent);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tnode.parent.type === \"ConditionalExpression\" &&\n\t\t\t\t(node === node.parent.consequent ||\n\t\t\t\t\tnode === node.parent.alternate)\n\t\t\t) {\n\t\t\t\treturn isInTailCallPosition(node.parent);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tnode.parent.type === \"LogicalExpression\" &&\n\t\t\t\tnode === node.parent.right\n\t\t\t) {\n\t\t\t\treturn isInTailCallPosition(node.parent);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tnode.parent.type === \"SequenceExpression\" &&\n\t\t\t\tnode === node.parent.expressions.at(-1)\n\t\t\t) {\n\t\t\t\treturn isInTailCallPosition(node.parent);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\treturn {\n\t\t\tAwaitExpression(node) {\n\t\t\t\tif (isInTailCallPosition(node) && !hasErrorHandler(node)) {\n\t\t\t\t\treportUnnecessaryAwait(node);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow `javascript:` URLs\n * @author Ilya Volodin\n */\n/* eslint no-script-url: 0 -- Code is checking to report such URLs */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow `javascript:` URLs\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-script-url\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpectedScriptURL: \"Script URL is a form of eval.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t/**\n\t\t * Check whether a node's static value starts with `javascript:` or not.\n\t\t * And report an error for unexpected script URL.\n\t\t * @param {ASTNode} node node to check\n\t\t * @returns {void}\n\t\t */\n\t\tfunction check(node) {\n\t\t\tconst value = astUtils.getStaticStringValue(node);\n\n\t\t\tif (\n\t\t\t\ttypeof value === \"string\" &&\n\t\t\t\tvalue.toLowerCase().indexOf(\"javascript:\") === 0\n\t\t\t) {\n\t\t\t\tcontext.report({ node, messageId: \"unexpectedScriptURL\" });\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tLiteral(node) {\n\t\t\t\tif (node.value && typeof node.value === \"string\") {\n\t\t\t\t\tcheck(node);\n\t\t\t\t}\n\t\t\t},\n\t\t\tTemplateLiteral(node) {\n\t\t\t\tif (\n\t\t\t\t\t!(\n\t\t\t\t\t\tnode.parent &&\n\t\t\t\t\t\tnode.parent.type === \"TaggedTemplateExpression\"\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tcheck(node);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow assignments where both sides are exactly the same\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst SPACES = /\\s+/gu;\n\n/**\n * Traverses 2 Pattern nodes in parallel, then reports self-assignments.\n * @param {ASTNode|null} left A left node to traverse. This is a Pattern or\n *      a Property.\n * @param {ASTNode|null} right A right node to traverse. This is a Pattern or\n *      a Property.\n * @param {boolean} props The flag to check member expressions as well.\n * @param {Function} report A callback function to report.\n * @returns {void}\n */\nfunction eachSelfAssignment(left, right, props, report) {\n\tif (!left || !right) {\n\t\t// do nothing\n\t} else if (\n\t\tleft.type === \"Identifier\" &&\n\t\tright.type === \"Identifier\" &&\n\t\tleft.name === right.name\n\t) {\n\t\treport(right);\n\t} else if (\n\t\tleft.type === \"ArrayPattern\" &&\n\t\tright.type === \"ArrayExpression\"\n\t) {\n\t\tconst end = Math.min(left.elements.length, right.elements.length);\n\n\t\tfor (let i = 0; i < end; ++i) {\n\t\t\tconst leftElement = left.elements[i];\n\t\t\tconst rightElement = right.elements[i];\n\n\t\t\t// Avoid cases such as [...a] = [...a, 1]\n\t\t\tif (\n\t\t\t\tleftElement &&\n\t\t\t\tleftElement.type === \"RestElement\" &&\n\t\t\t\ti < right.elements.length - 1\n\t\t\t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\teachSelfAssignment(leftElement, rightElement, props, report);\n\n\t\t\t// After a spread element, those indices are unknown.\n\t\t\tif (rightElement && rightElement.type === \"SpreadElement\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else if (left.type === \"RestElement\" && right.type === \"SpreadElement\") {\n\t\teachSelfAssignment(left.argument, right.argument, props, report);\n\t} else if (\n\t\tleft.type === \"ObjectPattern\" &&\n\t\tright.type === \"ObjectExpression\" &&\n\t\tright.properties.length >= 1\n\t) {\n\t\t/*\n\t\t * Gets the index of the last spread property.\n\t\t * It's possible to overwrite properties followed by it.\n\t\t */\n\t\tlet startJ = 0;\n\n\t\tfor (let i = right.properties.length - 1; i >= 0; --i) {\n\t\t\tconst propType = right.properties[i].type;\n\n\t\t\tif (\n\t\t\t\tpropType === \"SpreadElement\" ||\n\t\t\t\tpropType === \"ExperimentalSpreadProperty\"\n\t\t\t) {\n\t\t\t\tstartJ = i + 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfor (let i = 0; i < left.properties.length; ++i) {\n\t\t\tfor (let j = startJ; j < right.properties.length; ++j) {\n\t\t\t\teachSelfAssignment(\n\t\t\t\t\tleft.properties[i],\n\t\t\t\t\tright.properties[j],\n\t\t\t\t\tprops,\n\t\t\t\t\treport,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tleft.type === \"Property\" &&\n\t\tright.type === \"Property\" &&\n\t\tright.kind === \"init\" &&\n\t\t!right.method\n\t) {\n\t\tconst leftName = astUtils.getStaticPropertyName(left);\n\n\t\tif (\n\t\t\tleftName !== null &&\n\t\t\tleftName === astUtils.getStaticPropertyName(right)\n\t\t) {\n\t\t\teachSelfAssignment(left.value, right.value, props, report);\n\t\t}\n\t} else if (\n\t\tprops &&\n\t\tastUtils.skipChainExpression(left).type === \"MemberExpression\" &&\n\t\tastUtils.skipChainExpression(right).type === \"MemberExpression\" &&\n\t\tastUtils.isSameReference(left, right)\n\t) {\n\t\treport(right);\n\t}\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [{ props: true }],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow assignments where both sides are exactly the same\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-self-assign\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tselfAssignment: \"'{{name}}' is assigned to itself.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst [{ props }] = context.options;\n\n\t\t/**\n\t\t * Reports a given node as self assignments.\n\t\t * @param {ASTNode} node A node to report. This is an Identifier node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"selfAssignment\",\n\t\t\t\tdata: {\n\t\t\t\t\tname: sourceCode.getText(node).replace(SPACES, \"\"),\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tAssignmentExpression(node) {\n\t\t\t\tif ([\"=\", \"&&=\", \"||=\", \"??=\"].includes(node.operator)) {\n\t\t\t\t\teachSelfAssignment(node.left, node.right, props, report);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag comparison where left part is the same as the right\n * part.\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow comparisons where both sides are exactly the same\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-self-compare\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tcomparingToSelf: \"Comparing to itself is potentially pointless.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Determines whether two nodes are composed of the same tokens.\n\t\t * @param {ASTNode} nodeA The first node\n\t\t * @param {ASTNode} nodeB The second node\n\t\t * @returns {boolean} true if the nodes have identical token representations\n\t\t */\n\t\tfunction hasSameTokens(nodeA, nodeB) {\n\t\t\tconst tokensA = sourceCode.getTokens(nodeA);\n\t\t\tconst tokensB = sourceCode.getTokens(nodeB);\n\n\t\t\treturn (\n\t\t\t\ttokensA.length === tokensB.length &&\n\t\t\t\ttokensA.every(\n\t\t\t\t\t(token, index) =>\n\t\t\t\t\t\ttoken.type === tokensB[index].type &&\n\t\t\t\t\t\ttoken.value === tokensB[index].value,\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\tBinaryExpression(node) {\n\t\t\t\tconst operators = new Set([\n\t\t\t\t\t\"===\",\n\t\t\t\t\t\"==\",\n\t\t\t\t\t\"!==\",\n\t\t\t\t\t\"!=\",\n\t\t\t\t\t\">\",\n\t\t\t\t\t\"<\",\n\t\t\t\t\t\">=\",\n\t\t\t\t\t\"<=\",\n\t\t\t\t]);\n\n\t\t\t\tif (\n\t\t\t\t\toperators.has(node.operator) &&\n\t\t\t\t\thasSameTokens(node.left, node.right)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({ node, messageId: \"comparingToSelf\" });\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of comma operator\n * @author Brandon Mills\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow comma operators\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-sequences\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowInParentheses: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowInParentheses: true,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedCommaExpression: \"Unexpected use of comma operator.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ allowInParentheses }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Parts of the grammar that are required to have parens.\n\t\t */\n\t\tconst parenthesized = {\n\t\t\tDoWhileStatement: \"test\",\n\t\t\tIfStatement: \"test\",\n\t\t\tSwitchStatement: \"discriminant\",\n\t\t\tWhileStatement: \"test\",\n\t\t\tWithStatement: \"object\",\n\t\t\tArrowFunctionExpression: \"body\",\n\n\t\t\t/*\n\t\t\t * Omitting CallExpression - commas are parsed as argument separators\n\t\t\t * Omitting NewExpression - commas are parsed as argument separators\n\t\t\t * Omitting ForInStatement - parts aren't individually parenthesised\n\t\t\t * Omitting ForStatement - parts aren't individually parenthesised\n\t\t\t */\n\t\t};\n\n\t\t/**\n\t\t * Determines whether a node is required by the grammar to be wrapped in\n\t\t * parens, e.g. the test of an if statement.\n\t\t * @param {ASTNode} node The AST node\n\t\t * @returns {boolean} True if parens around node belong to parent node.\n\t\t */\n\t\tfunction requiresExtraParens(node) {\n\t\t\treturn (\n\t\t\t\tnode.parent &&\n\t\t\t\tparenthesized[node.parent.type] &&\n\t\t\t\tnode === node.parent[parenthesized[node.parent.type]]\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check if a node is wrapped in parens.\n\t\t * @param {ASTNode} node The AST node\n\t\t * @returns {boolean} True if the node has a paren on each side.\n\t\t */\n\t\tfunction isParenthesised(node) {\n\t\t\treturn astUtils.isParenthesised(sourceCode, node);\n\t\t}\n\n\t\t/**\n\t\t * Check if a node is wrapped in two levels of parens.\n\t\t * @param {ASTNode} node The AST node\n\t\t * @returns {boolean} True if two parens surround the node on each side.\n\t\t */\n\t\tfunction isParenthesisedTwice(node) {\n\t\t\tconst previousToken = sourceCode.getTokenBefore(node, 1),\n\t\t\t\tnextToken = sourceCode.getTokenAfter(node, 1);\n\n\t\t\treturn (\n\t\t\t\tisParenthesised(node) &&\n\t\t\t\tpreviousToken &&\n\t\t\t\tnextToken &&\n\t\t\t\tastUtils.isOpeningParenToken(previousToken) &&\n\t\t\t\tpreviousToken.range[1] <= node.range[0] &&\n\t\t\t\tastUtils.isClosingParenToken(nextToken) &&\n\t\t\t\tnextToken.range[0] >= node.range[1]\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\tSequenceExpression(node) {\n\t\t\t\t// Always allow sequences in for statement update\n\t\t\t\tif (\n\t\t\t\t\tnode.parent.type === \"ForStatement\" &&\n\t\t\t\t\t(node === node.parent.init || node === node.parent.update)\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Wrapping a sequence in extra parens indicates intent\n\t\t\t\tif (allowInParentheses) {\n\t\t\t\t\tif (requiresExtraParens(node)) {\n\t\t\t\t\t\tif (isParenthesisedTwice(node)) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (isParenthesised(node)) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst firstCommaToken = sourceCode.getTokenAfter(\n\t\t\t\t\tnode.expressions[0],\n\t\t\t\t\tastUtils.isCommaToken,\n\t\t\t\t);\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: firstCommaToken.loc,\n\t\t\t\t\tmessageId: \"unexpectedCommaExpression\",\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow returning values from setters\n * @author Milos Djermanovic\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Determines whether the given node is an argument of the specified global method call, at the given `index` position.\n * E.g., for given `index === 1`, this function checks for `objectName.methodName(foo, node)`, where objectName is a global variable.\n * @param {ASTNode} node The node to check.\n * @param {SourceCode} sourceCode Source code to which the node belongs.\n * @param {string} objectName Name of the global object.\n * @param {string} methodName Name of the method.\n * @param {number} index The given position.\n * @returns {boolean} `true` if the node is argument at the given position.\n */\nfunction isArgumentOfGlobalMethodCall(\n\tnode,\n\tsourceCode,\n\tobjectName,\n\tmethodName,\n\tindex,\n) {\n\tconst callNode = node.parent;\n\n\treturn (\n\t\tcallNode.type === \"CallExpression\" &&\n\t\tcallNode.arguments[index] === node &&\n\t\tastUtils.isSpecificMemberAccess(\n\t\t\tcallNode.callee,\n\t\t\tobjectName,\n\t\t\tmethodName,\n\t\t) &&\n\t\tsourceCode.isGlobalReference(\n\t\t\tastUtils.skipChainExpression(callNode.callee).object,\n\t\t)\n\t);\n}\n\n/**\n * Determines whether the given node is used as a property descriptor.\n * @param {ASTNode} node The node to check.\n * @param {SourceCode} sourceCode Source code to which the node belongs.\n * @returns {boolean} `true` if the node is a property descriptor.\n */\nfunction isPropertyDescriptor(node, sourceCode) {\n\tif (\n\t\tisArgumentOfGlobalMethodCall(\n\t\t\tnode,\n\t\t\tsourceCode,\n\t\t\t\"Object\",\n\t\t\t\"defineProperty\",\n\t\t\t2,\n\t\t) ||\n\t\tisArgumentOfGlobalMethodCall(\n\t\t\tnode,\n\t\t\tsourceCode,\n\t\t\t\"Reflect\",\n\t\t\t\"defineProperty\",\n\t\t\t2,\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\n\tconst parent = node.parent;\n\n\tif (parent.type === \"Property\" && parent.value === node) {\n\t\tconst grandparent = parent.parent;\n\n\t\tif (\n\t\t\tgrandparent.type === \"ObjectExpression\" &&\n\t\t\t(isArgumentOfGlobalMethodCall(\n\t\t\t\tgrandparent,\n\t\t\t\tsourceCode,\n\t\t\t\t\"Object\",\n\t\t\t\t\"create\",\n\t\t\t\t1,\n\t\t\t) ||\n\t\t\t\tisArgumentOfGlobalMethodCall(\n\t\t\t\t\tgrandparent,\n\t\t\t\t\tsourceCode,\n\t\t\t\t\t\"Object\",\n\t\t\t\t\t\"defineProperties\",\n\t\t\t\t\t1,\n\t\t\t\t))\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Determines whether the given function node is used as a setter function.\n * @param {ASTNode} node The node to check.\n * @param {SourceCode} sourceCode Source code to which the node belongs.\n * @returns {boolean} `true` if the node is a setter.\n */\nfunction isSetter(node, sourceCode) {\n\tconst parent = node.parent;\n\n\tif (\n\t\t(parent.type === \"Property\" || parent.type === \"MethodDefinition\") &&\n\t\tparent.kind === \"set\" &&\n\t\tparent.value === node\n\t) {\n\t\t// Setter in an object literal or in a class\n\t\treturn true;\n\t}\n\n\tif (\n\t\tparent.type === \"Property\" &&\n\t\tparent.value === node &&\n\t\tastUtils.getStaticPropertyName(parent) === \"set\" &&\n\t\tparent.parent.type === \"ObjectExpression\" &&\n\t\tisPropertyDescriptor(parent.parent, sourceCode)\n\t) {\n\t\t// Setter in a property descriptor\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow returning values from setters\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-setter-return\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\treturnsValue: \"Setter cannot return a value.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tlet funcInfo = null;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Creates and pushes to the stack a function info object for the given function node.\n\t\t * @param {ASTNode} node The function node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction enterFunction(node) {\n\t\t\tfuncInfo = {\n\t\t\t\tupper: funcInfo,\n\t\t\t\tisSetter: isSetter(node, sourceCode),\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Pops the current function info object from the stack.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction exitFunction() {\n\t\t\tfuncInfo = funcInfo.upper;\n\t\t}\n\n\t\t/**\n\t\t * Reports the given node.\n\t\t * @param {ASTNode} node Node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node) {\n\t\t\tcontext.report({ node, messageId: \"returnsValue\" });\n\t\t}\n\n\t\treturn {\n\t\t\t/*\n\t\t\t * Function declarations cannot be setters, but we still have to track them in the `funcInfo` stack to avoid\n\t\t\t * false positives, because a ReturnStatement node can belong to a function declaration inside a setter.\n\t\t\t *\n\t\t\t * Note: A previously declared function can be referenced and actually used as a setter in a property descriptor,\n\t\t\t * but that's out of scope for this rule.\n\t\t\t */\n\t\t\tFunctionDeclaration: enterFunction,\n\t\t\tFunctionExpression: enterFunction,\n\t\t\tArrowFunctionExpression(node) {\n\t\t\t\tenterFunction(node);\n\n\t\t\t\tif (funcInfo.isSetter && node.expression) {\n\t\t\t\t\t// { set: foo => bar } property descriptor. Report implicit return 'bar' as the equivalent for a return statement.\n\t\t\t\t\treport(node.body);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t\"FunctionDeclaration:exit\": exitFunction,\n\t\t\t\"FunctionExpression:exit\": exitFunction,\n\t\t\t\"ArrowFunctionExpression:exit\": exitFunction,\n\n\t\t\tReturnStatement(node) {\n\t\t\t\t// Global returns (e.g., at the top level of a Node module) don't have `funcInfo`.\n\t\t\t\tif (funcInfo && funcInfo.isSetter && node.argument) {\n\t\t\t\t\treport(node);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag on declaring variables already declared in the outer scope\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Variable} Variable */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst FUNC_EXPR_NODE_TYPES = new Set([\n\t\"ArrowFunctionExpression\",\n\t\"FunctionExpression\",\n]);\nconst CALL_EXPR_NODE_TYPE = new Set([\"CallExpression\"]);\nconst FOR_IN_OF_TYPE = /^For(?:In|Of)Statement$/u;\nconst SENTINEL_TYPE =\n\t/^(?:(?:Function|Class)(?:Declaration|Expression)|ArrowFunctionExpression|CatchClause|ImportDeclaration|ExportNamedDeclaration)$/u;\n\n// TS-specific node types\nconst TYPES_HOISTED_NODES = new Set([\n\t\"TSInterfaceDeclaration\",\n\t\"TSTypeAliasDeclaration\",\n]);\n\n// TS-specific function variable def types\nconst ALLOWED_FUNCTION_VARIABLE_DEF_TYPES = new Set([\n\t\"TSCallSignatureDeclaration\",\n\t\"TSFunctionType\",\n\t\"TSMethodSignature\",\n\t\"TSEmptyBodyFunctionExpression\",\n\t\"TSDeclareFunction\",\n\t\"TSConstructSignatureDeclaration\",\n\t\"TSConstructorType\",\n]);\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallow: [],\n\t\t\t\tbuiltinGlobals: false,\n\t\t\t\thoist: \"functions\",\n\t\t\t\tignoreOnInitialization: false,\n\t\t\t\tignoreTypeValueShadow: true,\n\t\t\t\tignoreFunctionTypeParameterNameValueShadow: true,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow variable declarations from shadowing variables declared in the outer scope\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-shadow\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tbuiltinGlobals: { type: \"boolean\" },\n\t\t\t\t\thoist: {\n\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\"all\",\n\t\t\t\t\t\t\t\"functions\",\n\t\t\t\t\t\t\t\"never\",\n\t\t\t\t\t\t\t\"types\",\n\t\t\t\t\t\t\t\"functions-and-types\",\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\tallow: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tignoreOnInitialization: { type: \"boolean\" },\n\t\t\t\t\tignoreTypeValueShadow: { type: \"boolean\" },\n\t\t\t\t\tignoreFunctionTypeParameterNameValueShadow: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tnoShadow:\n\t\t\t\t\"'{{name}}' is already declared in the upper scope on line {{shadowedLine}} column {{shadowedColumn}}.\",\n\t\t\tnoShadowGlobal: \"'{{name}}' is already a global variable.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [\n\t\t\t{\n\t\t\t\tbuiltinGlobals,\n\t\t\t\thoist,\n\t\t\t\tallow,\n\t\t\t\tignoreOnInitialization,\n\t\t\t\tignoreTypeValueShadow,\n\t\t\t\tignoreFunctionTypeParameterNameValueShadow,\n\t\t\t},\n\t\t] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Check if a scope is a TypeScript module augmenting the global namespace.\n\t\t * @param {Scope} scope The scope to check\n\t\t * @returns {boolean} Whether the scope is a global augmentation\n\t\t */\n\t\tfunction isGlobalAugmentation(scope) {\n\t\t\treturn (\n\t\t\t\tscope.block.kind === \"global\" ||\n\t\t\t\t(!!scope.upper && isGlobalAugmentation(scope.upper))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check if variable is a `this` parameter.\n\t\t * @param {Object} variable The variable to check\n\t\t * @returns {boolean} Whether the variable is a this parameter\n\t\t */\n\t\tfunction isThisParam(variable) {\n\t\t\treturn variable.name === \"this\";\n\t\t}\n\n\t\t/**\n\t\t * Checks if type and value shadows each other\n\t\t * @param {Object} variable The variable to check\n\t\t * @param {Object} shadowedVariable The shadowed variable\n\t\t * @returns {boolean} Whether it's a type/value shadow case to ignore\n\t\t */\n\t\tfunction isTypeValueShadow(variable, shadowedVariable) {\n\t\t\tif (ignoreTypeValueShadow !== true) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!(\"isValueVariable\" in variable)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst firstDefinition = shadowedVariable.defs[0];\n\n\t\t\t// Check if shadowedVariable is a type import\n\t\t\tconst isTypeImport =\n\t\t\t\tfirstDefinition &&\n\t\t\t\tfirstDefinition.parent?.type === \"ImportDeclaration\" &&\n\t\t\t\t(firstDefinition.parent.importKind === \"type\" ||\n\t\t\t\t\tfirstDefinition.parent.specifiers.some(\n\t\t\t\t\t\ts => s.importKind === \"type\",\n\t\t\t\t\t));\n\n\t\t\tconst isShadowedValue =\n\t\t\t\t!firstDefinition ||\n\t\t\t\t(isTypeImport ? false : shadowedVariable.isValueVariable);\n\n\t\t\treturn variable.isValueVariable !== isShadowedValue;\n\t\t}\n\n\t\t/**\n\t\t * Checks if it's a function type parameter shadow\n\t\t * @param {Object} variable The variable to check\n\t\t * @returns {boolean} Whether it's a function type parameter shadow case to ignore\n\t\t */\n\t\tfunction isFunctionTypeParameterNameValueShadow(variable) {\n\t\t\tif (ignoreFunctionTypeParameterNameValueShadow !== true) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn variable.defs.some(def =>\n\t\t\t\tALLOWED_FUNCTION_VARIABLE_DEF_TYPES.has(def.node.type),\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if the variable is a generic of a static method\n\t\t * @param {Object} variable The variable to check\n\t\t * @returns {boolean} Whether the variable is a generic of a static method\n\t\t */\n\t\tfunction isTypeParameterOfStaticMethod(variable) {\n\t\t\tconst typeParameter = variable.identifiers[0].parent;\n\t\t\tconst typeParameterDecl = typeParameter.parent;\n\t\t\tif (typeParameterDecl.type !== \"TSTypeParameterDeclaration\") {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst functionExpr = typeParameterDecl.parent;\n\t\t\tconst methodDefinition = functionExpr.parent;\n\t\t\treturn methodDefinition.static;\n\t\t}\n\n\t\t/**\n\t\t * Checks for static method generic shadowing class generic\n\t\t * @param {Object} variable The variable to check\n\t\t * @returns {boolean} Whether it's a static method generic shadowing class generic\n\t\t */\n\t\tfunction isGenericOfAStaticMethodShadow(variable) {\n\t\t\treturn isTypeParameterOfStaticMethod(variable);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether or not a given location is inside of the range of a given node.\n\t\t * @param {ASTNode} node An node to check.\n\t\t * @param {number} location A location to check.\n\t\t * @returns {boolean} `true` if the location is inside of the range of the node.\n\t\t */\n\t\tfunction isInRange(node, location) {\n\t\t\treturn (\n\t\t\t\tnode && node.range[0] <= location && location <= node.range[1]\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Searches from the current node through its ancestry to find a matching node.\n\t\t * @param {ASTNode} node a node to get.\n\t\t * @param {(node: ASTNode) => boolean} match a callback that checks whether or not the node verifies its condition or not.\n\t\t * @returns {ASTNode|null} the matching node.\n\t\t */\n\t\tfunction findSelfOrAncestor(node, match) {\n\t\t\tlet currentNode = node;\n\n\t\t\twhile (currentNode && !match(currentNode)) {\n\t\t\t\tcurrentNode = currentNode.parent;\n\t\t\t}\n\t\t\treturn currentNode;\n\t\t}\n\n\t\t/**\n\t\t * Finds function's outer scope.\n\t\t * @param {Scope} scope Function's own scope.\n\t\t * @returns {Scope} Function's outer scope.\n\t\t */\n\t\tfunction getOuterScope(scope) {\n\t\t\tconst upper = scope.upper;\n\n\t\t\tif (upper && upper.type === \"function-expression-name\") {\n\t\t\t\treturn upper.upper;\n\t\t\t}\n\t\t\treturn upper;\n\t\t}\n\n\t\t/**\n\t\t * Checks if a variable and a shadowedVariable have the same init pattern ancestor.\n\t\t * @param {Object} variable a variable to check.\n\t\t * @param {Object} shadowedVariable a shadowedVariable to check.\n\t\t * @returns {boolean} Whether or not the variable and the shadowedVariable have the same init pattern ancestor.\n\t\t */\n\t\tfunction isInitPatternNode(variable, shadowedVariable) {\n\t\t\tconst outerDef = shadowedVariable.defs[0];\n\n\t\t\tif (!outerDef) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst { variableScope } = variable.scope;\n\n\t\t\tif (\n\t\t\t\t!(\n\t\t\t\t\tFUNC_EXPR_NODE_TYPES.has(variableScope.block.type) &&\n\t\t\t\t\tgetOuterScope(variableScope) === shadowedVariable.scope\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst fun = variableScope.block;\n\t\t\tconst { parent } = fun;\n\n\t\t\tconst callExpression = findSelfOrAncestor(parent, node =>\n\t\t\t\tCALL_EXPR_NODE_TYPE.has(node.type),\n\t\t\t);\n\n\t\t\tif (!callExpression) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tlet node = outerDef.name;\n\t\t\tconst location = callExpression.range[1];\n\n\t\t\twhile (node) {\n\t\t\t\tif (node.type === \"VariableDeclarator\") {\n\t\t\t\t\tif (isInRange(node.init, location)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\tFOR_IN_OF_TYPE.test(node.parent.parent.type) &&\n\t\t\t\t\t\tisInRange(node.parent.parent.right, location)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (node.type === \"AssignmentPattern\") {\n\t\t\t\t\tif (isInRange(node.right, location)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t} else if (SENTINEL_TYPE.test(node.type)) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tnode = node.parent;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Check if variable name is allowed.\n\t\t * @param {ASTNode} variable The variable to check.\n\t\t * @returns {boolean} Whether or not the variable name is allowed.\n\t\t */\n\t\tfunction isAllowed(variable) {\n\t\t\treturn allow.includes(variable.name);\n\t\t}\n\n\t\t/**\n\t\t * Checks if a variable of the class name in the class scope of ClassDeclaration.\n\t\t *\n\t\t * ClassDeclaration creates two variables of its name into its outer scope and its class scope.\n\t\t * So we should ignore the variable in the class scope.\n\t\t * @param {Object} variable The variable to check.\n\t\t * @returns {boolean} Whether or not the variable of the class name in the class scope of ClassDeclaration.\n\t\t */\n\t\tfunction isDuplicatedClassNameVariable(variable) {\n\t\t\tconst block = variable.scope.block;\n\n\t\t\treturn (\n\t\t\t\tblock.type === \"ClassDeclaration\" &&\n\t\t\t\tblock.id === variable.identifiers[0]\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Finds the uppermost expression node that can evaluate to the given one.\n\t\t *\n\t\t * Examples:\n\t\t *    If given `a` in `a || foo`, it returns the `a || foo` node.\n\t\t *    If given `a` in `foo ? a : bar`, it returns the `foo ? a : bar` node.\n\t\t *    If given `a` in `foo ? bar : (baz && a)`, it returns the `foo ? bar : (baz && a)` node.\n\t\t *    If given `a` in `a ? foo : bar`, it returns the `a` node.\n\t\t *    If given `a` in `foo(a)`, it returns the `a` node.\n\t\t * @param {ASTNode} expression The expression node to unwrap.\n\t\t * @returns {ASTNode} The uppermost ancestor that can evaluate to the given node\n\t\t *     or the given node if there is no such ancestor.\n\t\t */\n\t\tfunction unwrapExpression(expression) {\n\t\t\tconst { parent } = expression;\n\n\t\t\tconst shouldUnwrap =\n\t\t\t\tparent.type === \"LogicalExpression\" ||\n\t\t\t\t(parent.type === \"ConditionalExpression\" &&\n\t\t\t\t\tparent.test !== expression);\n\n\t\t\treturn shouldUnwrap ? unwrapExpression(parent) : expression;\n\t\t}\n\n\t\t/**\n\t\t * Checks if inner variable is the name of a function or class\n\t\t * that is assigned to outer variable as its initializer.\n\t\t *\n\t\t * To avoid reporting at declarations such as:\n\t\t *    var a = function a() {};\n\t\t *    var A = class A {};\n\t\t *    var a = foo || function a() {};\n\t\t *    var a = foo ? function a() {} : bar;\n\t\t *    var { a = function a() {} } = foo;\n\t\t *\n\t\t * But it should report at declarations such as:\n\t\t *    var a = function(a) {};\n\t\t *    var a = function() { function a() {} };\n\t\t *    var a = wrap(function a() {});\n\t\t * @param {Object} innerVariable The inner variable to check.\n\t\t * @param {Object} outerVariable The outer variable.\n\t\t * @returns {boolean} Whether or not inner variable is the name of a\n\t\t *   function or class that is assigned to outer variable as its initializer.\n\t\t */\n\t\tfunction isFunctionNameInitializerException(\n\t\t\tinnerVariable,\n\t\t\touterVariable,\n\t\t) {\n\t\t\tconst outerDef = outerVariable.defs[0];\n\t\t\tconst innerDef = innerVariable.defs[0];\n\n\t\t\tif (!outerDef || !innerDef) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!(\n\t\t\t\t\t(innerDef.type === \"FunctionName\" &&\n\t\t\t\t\t\tinnerDef.node.type === \"FunctionExpression\") ||\n\t\t\t\t\t(innerDef.type === \"ClassName\" &&\n\t\t\t\t\t\tinnerDef.node.type === \"ClassExpression\")\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst outerIdentifier = outerDef.name;\n\t\t\tlet initializerNode;\n\n\t\t\tif (outerIdentifier.parent.type === \"VariableDeclarator\") {\n\t\t\t\tinitializerNode = outerIdentifier.parent.init;\n\t\t\t} else if (outerIdentifier.parent.type === \"AssignmentPattern\") {\n\t\t\t\tinitializerNode = outerIdentifier.parent.right;\n\t\t\t}\n\n\t\t\tif (!initializerNode) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst nodeToCheck = innerDef.node; // FunctionExpression or ClassExpression node\n\n\t\t\t// Exit early if the node to check isn't inside the initializer\n\t\t\tif (\n\t\t\t\t!(\n\t\t\t\t\tinitializerNode.range[0] <= nodeToCheck.range[0] &&\n\t\t\t\t\tnodeToCheck.range[1] <= initializerNode.range[1]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn initializerNode === unwrapExpression(nodeToCheck);\n\t\t}\n\n\t\t/**\n\t\t * Get a range of a variable's identifier node.\n\t\t * @param {Object} variable The variable to get.\n\t\t * @returns {Array|undefined} The range of the variable's identifier node.\n\t\t */\n\t\tfunction getNameRange(variable) {\n\t\t\tconst def = variable.defs[0];\n\n\t\t\treturn def && def.name.range;\n\t\t}\n\n\t\t/**\n\t\t * Get declared line and column of a variable.\n\t\t * @param {Variable} variable The variable to get.\n\t\t * @returns {Object} The declared line and column of the variable.\n\t\t */\n\t\tfunction getDeclaredLocation(variable) {\n\t\t\tconst identifier = variable.identifiers[0];\n\t\t\tlet obj;\n\n\t\t\tif (identifier) {\n\t\t\t\tobj = {\n\t\t\t\t\tglobal: false,\n\t\t\t\t\tline: identifier.loc.start.line,\n\t\t\t\t\tcolumn: identifier.loc.start.column + 1,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tobj = {\n\t\t\t\t\tglobal: true,\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn obj;\n\t\t}\n\n\t\t/**\n\t\t * Checks if a variable is in TDZ of scopeVar.\n\t\t * @param {Object} variable The variable to check.\n\t\t * @param {Object} scopeVar The variable of TDZ.\n\t\t * @returns {boolean} Whether or not the variable is in TDZ of scopeVar.\n\t\t */\n\t\tfunction isInTdz(variable, scopeVar) {\n\t\t\tconst outerDef = scopeVar.defs[0];\n\t\t\tconst inner = getNameRange(variable);\n\t\t\tconst outer = getNameRange(scopeVar);\n\n\t\t\tif (!outer || inner[1] >= outer[0]) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (hoist === \"types\") {\n\t\t\t\treturn !TYPES_HOISTED_NODES.has(outerDef.node.type);\n\t\t\t}\n\n\t\t\tif (hoist === \"functions-and-types\") {\n\t\t\t\treturn (\n\t\t\t\t\touterDef.node.type !== \"FunctionDeclaration\" &&\n\t\t\t\t\t!TYPES_HOISTED_NODES.has(outerDef.node.type)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\tinner &&\n\t\t\t\touter &&\n\t\t\t\tinner[1] < outer[0] &&\n\t\t\t\t// Excepts FunctionDeclaration if is {\"hoist\":\"function\"}.\n\t\t\t\t(hoist !== \"functions\" ||\n\t\t\t\t\t!outerDef ||\n\t\t\t\t\touterDef.node.type !== \"FunctionDeclaration\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if the initialization of a variable has the declare modifier in a\n\t\t * definition file.\n\t\t * @param {Object} variable The variable to check\n\t\t * @returns {boolean} Whether the variable is declared in a definition file\n\t\t */\n\t\tfunction isDeclareInDTSFile(variable) {\n\t\t\tconst fileName = context.filename;\n\t\t\tif (\n\t\t\t\t!fileName.endsWith(\".d.ts\") &&\n\t\t\t\t!fileName.endsWith(\".d.cts\") &&\n\t\t\t\t!fileName.endsWith(\".d.mts\")\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn variable.defs.some(\n\t\t\t\tdef =>\n\t\t\t\t\t(def.type === \"Variable\" && def.parent.declare) ||\n\t\t\t\t\t(def.type === \"ClassName\" && def.node.declare) ||\n\t\t\t\t\t(def.type === \"TSEnumName\" && def.node.declare) ||\n\t\t\t\t\t(def.type === \"TSModuleName\" && def.node.declare),\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if a variable is a duplicate of an enum name in the enum scope\n\t\t * @param {Object} variable The variable to check\n\t\t * @returns {boolean} Whether it's a duplicate enum name variable\n\t\t */\n\t\tfunction isDuplicatedEnumNameVariable(variable) {\n\t\t\tconst block = variable.scope.block;\n\n\t\t\treturn (\n\t\t\t\tblock.type === \"TSEnumDeclaration\" &&\n\t\t\t\tblock.id === variable.identifiers[0]\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check if this is an external module declaration merging with a type import\n\t\t * @param {Scope} scope Current scope\n\t\t * @param {Object} variable Current variable\n\t\t * @param {Object} shadowedVariable Shadowed variable\n\t\t * @returns {boolean} Whether it's an external declaration merging\n\t\t */\n\t\tfunction isExternalDeclarationMerging(\n\t\t\tscope,\n\t\t\tvariable,\n\t\t\tshadowedVariable,\n\t\t) {\n\t\t\tconst firstDefinition = shadowedVariable.defs[0];\n\n\t\t\tif (!firstDefinition || !firstDefinition.parent) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Check if the shadowed variable is a type import\n\t\t\tconst isTypeImport =\n\t\t\t\tfirstDefinition.parent.type === \"ImportDeclaration\" &&\n\t\t\t\t(firstDefinition.parent.importKind === \"type\" ||\n\t\t\t\t\tfirstDefinition.parent.specifiers?.some(\n\t\t\t\t\t\ts =>\n\t\t\t\t\t\t\ts.type === \"ImportSpecifier\" &&\n\t\t\t\t\t\t\ts.importKind === \"type\" &&\n\t\t\t\t\t\t\ts.local.name === shadowedVariable.name,\n\t\t\t\t\t));\n\n\t\t\tif (!isTypeImport) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Check if the current variable is within a module declaration\n\t\t\tconst moduleDecl = findSelfOrAncestor(\n\t\t\t\tvariable.identifiers[0]?.parent,\n\t\t\t\tnode => node.type === \"TSModuleDeclaration\",\n\t\t\t);\n\n\t\t\tif (!moduleDecl) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Module declaration merging should only happen within the same module\n\t\t\t * Check if the module name matches the import source\n\t\t\t */\n\t\t\tconst importSource = firstDefinition.parent.source.value;\n\t\t\tconst moduleName =\n\t\t\t\tmoduleDecl.id.type === \"Literal\"\n\t\t\t\t\t? moduleDecl.id.value\n\t\t\t\t\t: moduleDecl.id.name;\n\n\t\t\treturn importSource === moduleName;\n\t\t}\n\n\t\t/**\n\t\t * Checks the current context for shadowed variables.\n\t\t * @param {Scope} scope The scope to check for shadowed variables.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForShadows(scope) {\n\t\t\t// ignore global augmentation\n\t\t\tif (isGlobalAugmentation(scope)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst variables = scope.variables;\n\n\t\t\tfor (let i = 0; i < variables.length; ++i) {\n\t\t\t\tconst variable = variables[i];\n\n\t\t\t\t// Skips \"arguments\" or variables of a class name in the class scope of ClassDeclaration.\n\t\t\t\tif (\n\t\t\t\t\tvariable.identifiers.length === 0 ||\n\t\t\t\t\tisDuplicatedClassNameVariable(variable) ||\n\t\t\t\t\tisDuplicatedEnumNameVariable(variable) ||\n\t\t\t\t\tisAllowed(variable) ||\n\t\t\t\t\tisDeclareInDTSFile(variable) ||\n\t\t\t\t\tisThisParam(variable)\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Gets shadowed variable.\n\t\t\t\tconst shadowed = astUtils.getVariableByName(\n\t\t\t\t\tscope.upper,\n\t\t\t\t\tvariable.name,\n\t\t\t\t);\n\n\t\t\t\tif (\n\t\t\t\t\tshadowed &&\n\t\t\t\t\t(shadowed.identifiers.length > 0 ||\n\t\t\t\t\t\t(builtinGlobals && \"writeable\" in shadowed)) &&\n\t\t\t\t\t!isFunctionNameInitializerException(variable, shadowed) &&\n\t\t\t\t\t!(\n\t\t\t\t\t\tignoreOnInitialization &&\n\t\t\t\t\t\tisInitPatternNode(variable, shadowed)\n\t\t\t\t\t) &&\n\t\t\t\t\t!(hoist !== \"all\" && isInTdz(variable, shadowed)) &&\n\t\t\t\t\t!isTypeValueShadow(variable, shadowed) &&\n\t\t\t\t\t!isFunctionTypeParameterNameValueShadow(variable) &&\n\t\t\t\t\t!isGenericOfAStaticMethodShadow(variable, shadowed) &&\n\t\t\t\t\t!isExternalDeclarationMerging(scope, variable, shadowed)\n\t\t\t\t) {\n\t\t\t\t\tconst location = getDeclaredLocation(shadowed);\n\t\t\t\t\tconst messageId = location.global\n\t\t\t\t\t\t? \"noShadowGlobal\"\n\t\t\t\t\t\t: \"noShadow\";\n\t\t\t\t\tconst data = { name: variable.name };\n\n\t\t\t\t\tif (!location.global) {\n\t\t\t\t\t\tdata.shadowedLine = location.line;\n\t\t\t\t\t\tdata.shadowedColumn = location.column;\n\t\t\t\t\t}\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: variable.identifiers[0],\n\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\tdata,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\tconst globalScope = sourceCode.getScope(node);\n\t\t\t\tconst stack = globalScope.childScopes.slice();\n\n\t\t\t\twhile (stack.length) {\n\t\t\t\t\tconst scope = stack.pop();\n\n\t\t\t\t\tstack.push(...scope.childScopes);\n\t\t\t\t\tcheckForShadows(scope);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallow shadowing of globalThis, NaN, undefined, and Infinity (ES2020 section 18.1)\n * @author Michael Ficarra\n */\n\"use strict\";\n\n/**\n * Determines if a variable safely shadows undefined.\n * This is the case when a variable named `undefined` is never assigned to a value (i.e. it always shares the same value\n * as the global).\n * @param {eslintScope.Variable} variable The variable to check\n * @returns {boolean} true if this variable safely shadows `undefined`\n */\nfunction safelyShadowsUndefined(variable) {\n\treturn (\n\t\tvariable.name === \"undefined\" &&\n\t\tvariable.references.every(ref => !ref.isWrite()) &&\n\t\tvariable.defs.every(\n\t\t\tdef =>\n\t\t\t\tdef.node.type === \"VariableDeclarator\" &&\n\t\t\t\tdef.node.init === null,\n\t\t)\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\treportGlobalThis: true,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow identifiers from shadowing restricted names\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-shadow-restricted-names\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\treportGlobalThis: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tshadowingRestrictedName: \"Shadowing of global property '{{name}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ reportGlobalThis }] = context.options;\n\n\t\tconst RESTRICTED = new Set([\n\t\t\t\"undefined\",\n\t\t\t\"NaN\",\n\t\t\t\"Infinity\",\n\t\t\t\"arguments\",\n\t\t\t\"eval\",\n\t\t]);\n\n\t\tif (reportGlobalThis) {\n\t\t\tRESTRICTED.add(\"globalThis\");\n\t\t}\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t// Track reported nodes to avoid duplicate reports. For example, on class declarations.\n\t\tconst reportedNodes = new Set();\n\n\t\treturn {\n\t\t\t\"VariableDeclaration, :function, CatchClause, ImportDeclaration, ClassDeclaration, ClassExpression\"(\n\t\t\t\tnode,\n\t\t\t) {\n\t\t\t\tfor (const variable of sourceCode.getDeclaredVariables(node)) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tvariable.defs.length > 0 &&\n\t\t\t\t\t\tRESTRICTED.has(variable.name) &&\n\t\t\t\t\t\t!safelyShadowsUndefined(variable)\n\t\t\t\t\t) {\n\t\t\t\t\t\tfor (const def of variable.defs) {\n\t\t\t\t\t\t\tconst nodeToReport = def.name;\n\n\t\t\t\t\t\t\tif (!reportedNodes.has(nodeToReport)) {\n\t\t\t\t\t\t\t\treportedNodes.add(nodeToReport);\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode: nodeToReport,\n\t\t\t\t\t\t\t\t\tmessageId: \"shadowingRestrictedName\",\n\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\tname: variable.name,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to check that spaced function application\n * @author Matt DuVall <http://www.mattduvall.com>\n * @deprecated in ESLint v3.3.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow spacing between function identifiers and their applications (deprecated)\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-spaced-func\",\n\t\t},\n\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2016/08/eslint-v3.3.0-released/#deprecated-rules\",\n\t\t\tdeprecatedSince: \"3.3.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"function-call-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/function-call-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnoSpacedFunction:\n\t\t\t\t\"Unexpected space between function name and paren.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Check if open space is present in a function name\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction detectOpenSpaces(node) {\n\t\t\tconst lastCalleeToken = sourceCode.getLastToken(node.callee);\n\t\t\tlet prevToken = lastCalleeToken,\n\t\t\t\tparenToken = sourceCode.getTokenAfter(lastCalleeToken);\n\n\t\t\t// advances to an open parenthesis.\n\t\t\twhile (\n\t\t\t\tparenToken &&\n\t\t\t\tparenToken.range[1] < node.range[1] &&\n\t\t\t\tparenToken.value !== \"(\"\n\t\t\t) {\n\t\t\t\tprevToken = parenToken;\n\t\t\t\tparenToken = sourceCode.getTokenAfter(parenToken);\n\t\t\t}\n\n\t\t\t// look for a space between the callee and the open paren\n\t\t\tif (\n\t\t\t\tparenToken &&\n\t\t\t\tparenToken.range[1] < node.range[1] &&\n\t\t\t\tsourceCode.isSpaceBetween(prevToken, parenToken)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: lastCalleeToken.loc.start,\n\t\t\t\t\tmessageId: \"noSpacedFunction\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\tprevToken.range[1],\n\t\t\t\t\t\t\tparenToken.range[0],\n\t\t\t\t\t\t]);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tCallExpression: detectOpenSpaces,\n\t\t\tNewExpression: detectOpenSpaces,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallow sparse arrays\n * @author Nicholas C. Zakas\n */\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow sparse arrays\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-sparse-arrays\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpectedSparseArray: \"Unexpected comma in middle of array.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tArrayExpression(node) {\n\t\t\t\tif (!node.elements.includes(null)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst { sourceCode } = context;\n\t\t\t\tlet commaToken;\n\n\t\t\t\tfor (const [index, element] of node.elements.entries()) {\n\t\t\t\t\tif (index === node.elements.length - 1 && element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tcommaToken = sourceCode.getTokenAfter(\n\t\t\t\t\t\telement ?? commaToken ?? sourceCode.getFirstToken(node),\n\t\t\t\t\t\tastUtils.isCommaToken,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (element) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: commaToken.loc,\n\t\t\t\t\t\tmessageId: \"unexpectedSparseArray\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to check for properties whose identifier ends with the string Sync\n * @author Matt DuVall<http://mattduvall.com/>\n * @deprecated in ESLint v7.0.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Node.js rules were moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules\",\n\t\t\tdeprecatedSince: \"7.0.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"eslint-plugin-n now maintains deprecated Node.js-related rules.\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"eslint-plugin-n\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-sync\",\n\t\t\t\t\t\turl: \"https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules/no-sync.md\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow synchronous methods\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-sync\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowAtRootLevel: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tnoSync: \"Unexpected sync method: '{{propertyName}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst selector =\n\t\t\tcontext.options[0] && context.options[0].allowAtRootLevel\n\t\t\t\t? \":function MemberExpression[property.name=/.*Sync$/]\"\n\t\t\t\t: \"MemberExpression[property.name=/.*Sync$/]\";\n\n\t\treturn {\n\t\t\t[selector](node) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"noSync\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tpropertyName: node.property.name,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to check for tabs inside a file\n * @author Gyandeep Singh\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst tabRegex = /\\t+/gu;\nconst anyNonWhitespaceRegex = /\\S/u;\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-tabs\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/no-tabs\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow all tabs\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-tabs\",\n\t\t},\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowIndentationTabs: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedTab: \"Unexpected tab character.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst allowIndentationTabs =\n\t\t\tcontext.options &&\n\t\t\tcontext.options[0] &&\n\t\t\tcontext.options[0].allowIndentationTabs;\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tsourceCode.getLines().forEach((line, index) => {\n\t\t\t\t\tlet match;\n\n\t\t\t\t\twhile ((match = tabRegex.exec(line)) !== null) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tallowIndentationTabs &&\n\t\t\t\t\t\t\t!anyNonWhitespaceRegex.test(\n\t\t\t\t\t\t\t\tline.slice(0, match.index),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\t\t\tline: index + 1,\n\t\t\t\t\t\t\t\t\tcolumn: match.index,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\t\t\tline: index + 1,\n\t\t\t\t\t\t\t\t\tcolumn: match.index + match[0].length,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmessageId: \"unexpectedTab\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Warn when using template string syntax in regular strings\n * @author Jeroen Engels\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow template literal placeholder syntax in regular strings\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-template-curly-in-string\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpectedTemplateExpression:\n\t\t\t\t\"Unexpected template string expression.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst regex = /\\$\\{[^}]+\\}/u;\n\n\t\treturn {\n\t\t\tLiteral(node) {\n\t\t\t\tif (typeof node.value === \"string\" && regex.test(node.value)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpectedTemplateExpression\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of ternary operators.\n * @author Ian Christian Myers\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow ternary operators\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-ternary\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnoTernaryOperator: \"Ternary operator used.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tConditionalExpression(node) {\n\t\t\t\tcontext.report({ node, messageId: \"noTernaryOperator\" });\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to disallow using `this`/`super` before `super()`.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether or not a given node is a constructor.\n * @param {ASTNode} node A node to check. This node type is one of\n *   `Program`, `FunctionDeclaration`, `FunctionExpression`, and\n *   `ArrowFunctionExpression`.\n * @returns {boolean} `true` if the node is a constructor.\n */\nfunction isConstructorFunction(node) {\n\treturn (\n\t\tnode.type === \"FunctionExpression\" &&\n\t\tnode.parent.type === \"MethodDefinition\" &&\n\t\tnode.parent.kind === \"constructor\"\n\t);\n}\n\n/*\n * Information for each code path segment.\n * - superCalled:  The flag which shows `super()` called in all code paths.\n * - invalidNodes: The array of invalid ThisExpression and Super nodes.\n */\n/**\n *\n */\nclass SegmentInfo {\n\t/**\n\t * Indicates whether `super()` is called in all code paths.\n\t * @type {boolean}\n\t */\n\tsuperCalled = false;\n\n\t/**\n\t * The array of invalid ThisExpression and Super nodes.\n\t * @type {ASTNode[]}\n\t */\n\tinvalidNodes = [];\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow `this`/`super` before calling `super()` in constructors\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-this-before-super\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnoBeforeSuper: \"'{{kind}}' is not allowed before 'super()'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t/*\n\t\t * Information for each constructor.\n\t\t * - upper:      Information of the upper constructor.\n\t\t * - hasExtends: A flag which shows whether the owner class has a valid\n\t\t *   `extends` part.\n\t\t * - scope:      The scope of the owner class.\n\t\t * - codePath:   The code path of this constructor.\n\t\t */\n\t\tlet funcInfo = null;\n\n\t\t/** @type {Record<string, SegmentInfo>} */\n\t\tlet segInfoMap = Object.create(null);\n\n\t\t/**\n\t\t * Gets whether or not `super()` is called in a given code path segment.\n\t\t * @param {CodePathSegment} segment A code path segment to get.\n\t\t * @returns {boolean} `true` if `super()` is called.\n\t\t */\n\t\tfunction isCalled(segment) {\n\t\t\treturn !segment.reachable || segInfoMap[segment.id]?.superCalled;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether or not this is in a constructor.\n\t\t * @returns {boolean} `true` if this is in a constructor.\n\t\t */\n\t\tfunction isInConstructorOfDerivedClass() {\n\t\t\treturn Boolean(\n\t\t\t\tfuncInfo && funcInfo.isConstructor && funcInfo.hasExtends,\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines if every segment in a set has been called.\n\t\t * @param {Set<CodePathSegment>} segments The segments to search.\n\t\t * @returns {boolean} True if every segment has been called; false otherwise.\n\t\t */\n\t\tfunction isEverySegmentCalled(segments) {\n\t\t\tfor (const segment of segments) {\n\t\t\t\tif (!isCalled(segment)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether or not this is before `super()` is called.\n\t\t * @returns {boolean} `true` if this is before `super()` is called.\n\t\t */\n\t\tfunction isBeforeCallOfSuper() {\n\t\t\treturn (\n\t\t\t\tisInConstructorOfDerivedClass() &&\n\t\t\t\t!isEverySegmentCalled(funcInfo.currentSegments)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Sets a given node as invalid.\n\t\t * @param {ASTNode} node A node to set as invalid. This is one of\n\t\t *      a ThisExpression and a Super.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction setInvalid(node) {\n\t\t\tconst segments = funcInfo.currentSegments;\n\n\t\t\tfor (const segment of segments) {\n\t\t\t\tif (segment.reachable) {\n\t\t\t\t\tsegInfoMap[segment.id].invalidNodes.push(node);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Sets the current segment as `super` was called.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction setSuperCalled() {\n\t\t\tconst segments = funcInfo.currentSegments;\n\n\t\t\tfor (const segment of segments) {\n\t\t\t\tif (segment.reachable) {\n\t\t\t\t\tsegInfoMap[segment.id].superCalled = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t/**\n\t\t\t * Adds information of a constructor into the stack.\n\t\t\t * @param {CodePath} codePath A code path which was started.\n\t\t\t * @param {ASTNode} node The current node.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tonCodePathStart(codePath, node) {\n\t\t\t\tif (isConstructorFunction(node)) {\n\t\t\t\t\t// Class > ClassBody > MethodDefinition > FunctionExpression\n\t\t\t\t\tconst classNode = node.parent.parent.parent;\n\n\t\t\t\t\tfuncInfo = {\n\t\t\t\t\t\tupper: funcInfo,\n\t\t\t\t\t\tisConstructor: true,\n\t\t\t\t\t\thasExtends: Boolean(\n\t\t\t\t\t\t\tclassNode.superClass &&\n\t\t\t\t\t\t\t!astUtils.isNullOrUndefined(classNode.superClass),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcodePath,\n\t\t\t\t\t\tcurrentSegments: new Set(),\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tfuncInfo = {\n\t\t\t\t\t\tupper: funcInfo,\n\t\t\t\t\t\tisConstructor: false,\n\t\t\t\t\t\thasExtends: false,\n\t\t\t\t\t\tcodePath,\n\t\t\t\t\t\tcurrentSegments: new Set(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Removes the top of stack item.\n\t\t\t *\n\t\t\t * And this traverses all segments of this code path then reports every\n\t\t\t * invalid node.\n\t\t\t * @param {CodePath} codePath A code path which was ended.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tonCodePathEnd(codePath) {\n\t\t\t\tconst isDerivedClass = funcInfo.hasExtends;\n\n\t\t\t\tfuncInfo = funcInfo.upper;\n\t\t\t\tif (!isDerivedClass) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/**\n\t\t\t\t * A collection of nodes to avoid duplicate reports.\n\t\t\t\t * @type {Set<ASTNode>}\n\t\t\t\t */\n\t\t\t\tconst reported = new Set();\n\n\t\t\t\tcodePath.traverseSegments((segment, controller) => {\n\t\t\t\t\tconst info = segInfoMap[segment.id];\n\t\t\t\t\tconst invalidNodes = info.invalidNodes.filter(\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Avoid duplicate reports.\n\t\t\t\t\t\t * When there is a `finally`, invalidNodes may contain already reported node.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tnode => !reported.has(node),\n\t\t\t\t\t);\n\n\t\t\t\t\tfor (const invalidNode of invalidNodes) {\n\t\t\t\t\t\treported.add(invalidNode);\n\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tmessageId: \"noBeforeSuper\",\n\t\t\t\t\t\t\tnode: invalidNode,\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tkind:\n\t\t\t\t\t\t\t\t\tinvalidNode.type === \"Super\"\n\t\t\t\t\t\t\t\t\t\t? \"super\"\n\t\t\t\t\t\t\t\t\t\t: \"this\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.superCalled) {\n\t\t\t\t\t\tcontroller.skip();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Initialize information of a given code path segment.\n\t\t\t * @param {CodePathSegment} segment A code path segment to initialize.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tonCodePathSegmentStart(segment) {\n\t\t\t\tfuncInfo.currentSegments.add(segment);\n\n\t\t\t\tif (!isInConstructorOfDerivedClass()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Initialize info.\n\t\t\t\tsegInfoMap[segment.id] = {\n\t\t\t\t\tsuperCalled:\n\t\t\t\t\t\tsegment.prevSegments.length > 0 &&\n\t\t\t\t\t\tsegment.prevSegments.every(isCalled),\n\t\t\t\t\tinvalidNodes: [],\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentStart(segment) {\n\t\t\t\tfuncInfo.currentSegments.add(segment);\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentEnd(segment) {\n\t\t\t\tfuncInfo.currentSegments.delete(segment);\n\t\t\t},\n\n\t\t\tonCodePathSegmentEnd(segment) {\n\t\t\t\tfuncInfo.currentSegments.delete(segment);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Update information of the code path segment when a code path was\n\t\t\t * looped.\n\t\t\t * @param {CodePathSegment} fromSegment The code path segment of the\n\t\t\t *      end of a loop.\n\t\t\t * @param {CodePathSegment} toSegment A code path segment of the head\n\t\t\t *      of a loop.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tonCodePathSegmentLoop(fromSegment, toSegment) {\n\t\t\t\tif (!isInConstructorOfDerivedClass()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Update information inside of the loop.\n\t\t\t\tfuncInfo.codePath.traverseSegments(\n\t\t\t\t\t{ first: toSegment, last: fromSegment },\n\t\t\t\t\t(segment, controller) => {\n\t\t\t\t\t\tconst info =\n\t\t\t\t\t\t\tsegInfoMap[segment.id] ?? new SegmentInfo();\n\n\t\t\t\t\t\tif (info.superCalled) {\n\t\t\t\t\t\t\tcontroller.skip();\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tsegment.prevSegments.length > 0 &&\n\t\t\t\t\t\t\tsegment.prevSegments.every(isCalled)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tinfo.superCalled = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsegInfoMap[segment.id] = info;\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Reports if this is before `super()`.\n\t\t\t * @param {ASTNode} node A target node.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tThisExpression(node) {\n\t\t\t\tif (isBeforeCallOfSuper()) {\n\t\t\t\t\tsetInvalid(node);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Reports if this is before `super()`.\n\t\t\t * @param {ASTNode} node A target node.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tSuper(node) {\n\t\t\t\tif (!astUtils.isCallee(node) && isBeforeCallOfSuper()) {\n\t\t\t\t\tsetInvalid(node);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Marks `super()` called.\n\t\t\t * @param {ASTNode} node A target node.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\t\"CallExpression:exit\"(node) {\n\t\t\t\tif (node.callee.type === \"Super\" && isBeforeCallOfSuper()) {\n\t\t\t\t\tsetSuperCalled();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Resets state.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\t\"Program:exit\"() {\n\t\t\t\tsegInfoMap = Object.create(null);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to restrict what can be thrown as an exception.\n * @author Dieter Oberkofler\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow throwing literals as exceptions\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-throw-literal\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tobject: \"Expected an error object to be thrown.\",\n\t\t\tundef: \"Do not throw undefined.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tThrowStatement(node) {\n\t\t\t\tif (!astUtils.couldBeError(node.argument)) {\n\t\t\t\t\tcontext.report({ node, messageId: \"object\" });\n\t\t\t\t} else if (node.argument.type === \"Identifier\") {\n\t\t\t\t\tif (node.argument.name === \"undefined\") {\n\t\t\t\t\t\tcontext.report({ node, messageId: \"undef\" });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallow trailing spaces at the end of lines.\n * @author Nodeca Team <https://github.com/nodeca>\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n/**\n * @import { SourceLocation, SourceRange } from \"@eslint/core\";\n */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-trailing-spaces\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/no-trailing-spaces\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow trailing whitespace at the end of lines\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-trailing-spaces\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tskipBlankLines: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t\tignoreComments: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\ttrailingSpace: \"Trailing spaces not allowed.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tconst BLANK_CLASS =\n\t\t\t\t\"[ \\t\\u00a0\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u200b\\u3000]\",\n\t\t\tSKIP_BLANK = `^${BLANK_CLASS}*$`,\n\t\t\tNONBLANK = `${BLANK_CLASS}+$`;\n\n\t\tconst options = context.options[0] || {},\n\t\t\tskipBlankLines = options.skipBlankLines || false,\n\t\t\tignoreComments = options.ignoreComments || false;\n\n\t\t/**\n\t\t * Report the error message\n\t\t * @param {ASTNode} node node to report\n\t\t * @param {SourceLocation} location range information\n\t\t * @param {SourceRange} fixRange Range based on the whole program\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node, location, fixRange) {\n\t\t\t/*\n\t\t\t * Passing node is a bit dirty, because message data will contain big\n\t\t\t * text in `source`. But... who cares :) ?\n\t\t\t * One more kludge will not make worse the bloody wizardry of this\n\t\t\t * plugin.\n\t\t\t */\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: location,\n\t\t\t\tmessageId: \"trailingSpace\",\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.removeRange(fixRange);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Given a list of comment nodes, return the line numbers for those comments.\n\t\t * @param {Array} comments An array of comment nodes.\n\t\t * @returns {number[]} An array of line numbers containing comments.\n\t\t */\n\t\tfunction getCommentLineNumbers(comments) {\n\t\t\tconst lines = new Set();\n\n\t\t\tcomments.forEach(comment => {\n\t\t\t\tconst endLine =\n\t\t\t\t\tcomment.type === \"Block\"\n\t\t\t\t\t\t? comment.loc.end.line - 1\n\t\t\t\t\t\t: comment.loc.end.line;\n\n\t\t\t\tfor (let i = comment.loc.start.line; i <= endLine; i++) {\n\t\t\t\t\tlines.add(i);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn lines;\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram: function checkTrailingSpaces(node) {\n\t\t\t\t/*\n\t\t\t\t * Let's hack. Since Espree does not return whitespace nodes,\n\t\t\t\t * fetch the source code and do matching via regexps.\n\t\t\t\t */\n\n\t\t\t\tconst re = new RegExp(NONBLANK, \"u\"),\n\t\t\t\t\tskipMatch = new RegExp(SKIP_BLANK, \"u\"),\n\t\t\t\t\tlines = sourceCode.lines,\n\t\t\t\t\tlinebreaks = sourceCode\n\t\t\t\t\t\t.getText()\n\t\t\t\t\t\t.match(astUtils.createGlobalLinebreakMatcher()),\n\t\t\t\t\tcomments = sourceCode.getAllComments(),\n\t\t\t\t\tcommentLineNumbers = getCommentLineNumbers(comments);\n\n\t\t\t\tlet totalLength = 0;\n\n\t\t\t\tfor (let i = 0, ii = lines.length; i < ii; i++) {\n\t\t\t\t\tconst lineNumber = i + 1;\n\n\t\t\t\t\t/*\n\t\t\t\t\t * Always add linebreak length to line length to accommodate for line break (\\n or \\r\\n)\n\t\t\t\t\t * Because during the fix time they also reserve one spot in the array.\n\t\t\t\t\t * Usually linebreak length is 2 for \\r\\n (CRLF) and 1 for \\n (LF)\n\t\t\t\t\t */\n\t\t\t\t\tconst linebreakLength =\n\t\t\t\t\t\tlinebreaks && linebreaks[i] ? linebreaks[i].length : 1;\n\t\t\t\t\tconst lineLength = lines[i].length + linebreakLength;\n\n\t\t\t\t\tconst matches = re.exec(lines[i]);\n\n\t\t\t\t\tif (matches) {\n\t\t\t\t\t\tconst location = {\n\t\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\t\tline: lineNumber,\n\t\t\t\t\t\t\t\tcolumn: matches.index,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\t\tline: lineNumber,\n\t\t\t\t\t\t\t\tcolumn: lineLength - linebreakLength,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst rangeStart = totalLength + location.start.column;\n\t\t\t\t\t\tconst rangeEnd = totalLength + location.end.column;\n\t\t\t\t\t\tconst containingNode =\n\t\t\t\t\t\t\tsourceCode.getNodeByRangeIndex(rangeStart);\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcontainingNode &&\n\t\t\t\t\t\t\tcontainingNode.type === \"TemplateElement\" &&\n\t\t\t\t\t\t\trangeStart > containingNode.parent.range[0] &&\n\t\t\t\t\t\t\trangeEnd < containingNode.parent.range[1]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\ttotalLength += lineLength;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If the line has only whitespace, and skipBlankLines\n\t\t\t\t\t\t * is true, don't report it\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (skipBlankLines && skipMatch.test(lines[i])) {\n\t\t\t\t\t\t\ttotalLength += lineLength;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst fixRange = [rangeStart, rangeEnd];\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!ignoreComments ||\n\t\t\t\t\t\t\t!commentLineNumbers.has(lineNumber)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treport(node, location, fixRange);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttotalLength += lineLength;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag variables that are never assigned\n * @author Jacob Bandes-Storch <https://github.com/jtbandes>\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow `let` or `var` variables that are read but never assigned\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-unassigned-vars\",\n\t\t},\n\n\t\tschema: [],\n\t\tmessages: {\n\t\t\tunassigned:\n\t\t\t\t\"'{{name}}' is always 'undefined' because it's never assigned.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tlet insideDeclareModule = false;\n\n\t\treturn {\n\t\t\t\"TSModuleDeclaration[declare=true]\"() {\n\t\t\t\tinsideDeclareModule = true;\n\t\t\t},\n\t\t\t\"TSModuleDeclaration[declare=true]:exit\"() {\n\t\t\t\tinsideDeclareModule = false;\n\t\t\t},\n\t\t\tVariableDeclarator(node) {\n\t\t\t\t/** @type {import('estree').VariableDeclaration} */\n\t\t\t\tconst declaration = node.parent;\n\t\t\t\tconst shouldSkip =\n\t\t\t\t\tnode.init ||\n\t\t\t\t\tnode.id.type !== \"Identifier\" ||\n\t\t\t\t\tdeclaration.kind === \"const\" ||\n\t\t\t\t\tdeclaration.declare ||\n\t\t\t\t\tinsideDeclareModule;\n\t\t\t\tif (shouldSkip) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst [variable] = sourceCode.getDeclaredVariables(node);\n\t\t\t\tif (!variable) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet hasRead = false;\n\t\t\t\tfor (const reference of variable.references) {\n\t\t\t\t\tif (reference.isWrite()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (reference.isRead()) {\n\t\t\t\t\t\thasRead = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!hasRead) {\n\t\t\t\t\t// Variables that are never read should be flagged by no-unused-vars instead\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unassigned\",\n\t\t\t\t\tdata: { name: node.id.name },\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag references to undeclared variables.\n * @author Mark Macdonald\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks if the given node is the argument of a typeof operator.\n * @param {ASTNode} node The AST node being checked.\n * @returns {boolean} Whether or not the node is the argument of a typeof operator.\n */\nfunction hasTypeOfOperator(node) {\n\tconst parent = node.parent;\n\n\treturn parent.type === \"UnaryExpression\" && parent.operator === \"typeof\";\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\ttypeof: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow the use of undeclared variables unless mentioned in `/*global */` comments\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-undef\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\ttypeof: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\tundef: \"'{{name}}' is not defined.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ typeof: considerTypeOf }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\tconst globalScope = sourceCode.getScope(node);\n\n\t\t\t\tglobalScope.through.forEach(ref => {\n\t\t\t\t\tconst identifier = ref.identifier;\n\n\t\t\t\t\tif (!considerTypeOf && hasTypeOfOperator(identifier)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: identifier,\n\t\t\t\t\t\tmessageId: \"undef\",\n\t\t\t\t\t\tdata: identifier,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag when initializing to undefined\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst CONSTANT_BINDINGS = new Set([\"const\", \"using\", \"await using\"]);\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow initializing variables to `undefined`\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-undef-init\",\n\t\t},\n\n\t\tschema: [],\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tunnecessaryUndefinedInit:\n\t\t\t\t\"It's not necessary to initialize '{{name}}' to undefined.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tVariableDeclarator(node) {\n\t\t\t\tconst name = sourceCode.getText(node.id),\n\t\t\t\t\tinit = node.init && node.init.name,\n\t\t\t\t\tscope = sourceCode.getScope(node),\n\t\t\t\t\tundefinedVar = astUtils.getVariableByName(\n\t\t\t\t\t\tscope,\n\t\t\t\t\t\t\"undefined\",\n\t\t\t\t\t),\n\t\t\t\t\tshadowed = undefinedVar && undefinedVar.defs.length > 0,\n\t\t\t\t\tlastToken = sourceCode.getLastToken(node);\n\n\t\t\t\tif (\n\t\t\t\t\tinit === \"undefined\" &&\n\t\t\t\t\t!CONSTANT_BINDINGS.has(node.parent.kind) &&\n\t\t\t\t\t!shadowed\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unnecessaryUndefinedInit\",\n\t\t\t\t\t\tdata: { name },\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tif (node.parent.kind === \"var\") {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tnode.id.type === \"ArrayPattern\" ||\n\t\t\t\t\t\t\t\tnode.id.type === \"ObjectPattern\"\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// Don't fix destructuring assignment to `undefined`.\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tsourceCode.commentsExistBetween(\n\t\t\t\t\t\t\t\t\tnode.id,\n\t\t\t\t\t\t\t\t\tlastToken,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\t\tnode.id.range[1],\n\t\t\t\t\t\t\t\tnode.range[1],\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag references to the undefined variable.\n * @author Michael Ficarra\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Scope} Scope */\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow the use of `undefined` as an identifier\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-undefined\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpectedUndefined: \"Unexpected use of undefined.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Report an invalid \"undefined\" identifier node.\n\t\t * @param {ASTNode} node The node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"unexpectedUndefined\",\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Checks the given scope for references to `undefined` and reports\n\t\t * all references found.\n\t\t * @param {Scope} scope The scope to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkScope(scope) {\n\t\t\tconst undefinedVar = scope.set.get(\"undefined\");\n\n\t\t\tif (!undefinedVar) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst references = undefinedVar.references;\n\n\t\t\tconst defs = undefinedVar.defs;\n\n\t\t\t// Report non-initializing references (those are covered in defs below)\n\t\t\treferences\n\t\t\t\t.filter(ref => !ref.init)\n\t\t\t\t.forEach(ref => report(ref.identifier));\n\n\t\t\tdefs.forEach(def => report(def.name));\n\t\t}\n\n\t\treturn {\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\tconst globalScope = sourceCode.getScope(node);\n\n\t\t\t\tconst stack = [globalScope];\n\n\t\t\t\twhile (stack.length) {\n\t\t\t\t\tconst scope = stack.pop();\n\n\t\t\t\t\tstack.push(...scope.childScopes);\n\t\t\t\t\tcheckScope(scope);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag dangling underscores in variable declarations.\n * @author Matt DuVall <http://www.mattduvall.com>\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallow: [],\n\t\t\t\tallowAfterSuper: false,\n\t\t\t\tallowAfterThis: false,\n\t\t\t\tallowAfterThisConstructor: false,\n\t\t\t\tallowFunctionParams: true,\n\t\t\t\tallowInArrayDestructuring: true,\n\t\t\t\tallowInObjectDestructuring: true,\n\t\t\t\tenforceInClassFields: false,\n\t\t\t\tenforceInMethodNames: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow dangling underscores in identifiers\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-underscore-dangle\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallow: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tallowAfterThis: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowAfterSuper: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowAfterThisConstructor: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tenforceInMethodNames: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowFunctionParams: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tenforceInClassFields: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowInArrayDestructuring: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowInObjectDestructuring: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedUnderscore:\n\t\t\t\t\"Unexpected dangling '_' in '{{identifier}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [\n\t\t\t{\n\t\t\t\tallow,\n\t\t\t\tallowAfterSuper,\n\t\t\t\tallowAfterThis,\n\t\t\t\tallowAfterThisConstructor,\n\t\t\t\tallowFunctionParams,\n\t\t\t\tallowInArrayDestructuring,\n\t\t\t\tallowInObjectDestructuring,\n\t\t\t\tenforceInClassFields,\n\t\t\t\tenforceInMethodNames,\n\t\t\t},\n\t\t] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//-------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//-------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Check if identifier is present inside the allowed option\n\t\t * @param {string} identifier name of the node\n\t\t * @returns {boolean} true if its is present\n\t\t * @private\n\t\t */\n\t\tfunction isAllowed(identifier) {\n\t\t\treturn allow.includes(identifier);\n\t\t}\n\n\t\t/**\n\t\t * Check if identifier has a dangling underscore\n\t\t * @param {string} identifier name of the node\n\t\t * @returns {boolean} true if its is present\n\t\t * @private\n\t\t */\n\t\tfunction hasDanglingUnderscore(identifier) {\n\t\t\tconst len = identifier.length;\n\n\t\t\treturn (\n\t\t\t\tidentifier !== \"_\" &&\n\t\t\t\t(identifier[0] === \"_\" || identifier[len - 1] === \"_\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check if identifier is a special case member expression\n\t\t * @param {string} identifier name of the node\n\t\t * @returns {boolean} true if its is a special case\n\t\t * @private\n\t\t */\n\t\tfunction isSpecialCaseIdentifierForMemberExpression(identifier) {\n\t\t\treturn identifier === \"__proto__\";\n\t\t}\n\n\t\t/**\n\t\t * Check if identifier is a special case variable expression\n\t\t * @param {string} identifier name of the node\n\t\t * @returns {boolean} true if its is a special case\n\t\t * @private\n\t\t */\n\t\tfunction isSpecialCaseIdentifierInVariableExpression(identifier) {\n\t\t\t// Checks for the underscore library usage here\n\t\t\treturn identifier === \"_\";\n\t\t}\n\n\t\t/**\n\t\t * Check if a node is a member reference of this.constructor\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {boolean} true if it is a reference on this.constructor\n\t\t * @private\n\t\t */\n\t\tfunction isThisConstructorReference(node) {\n\t\t\treturn (\n\t\t\t\tnode.object.type === \"MemberExpression\" &&\n\t\t\t\tnode.object.property.name === \"constructor\" &&\n\t\t\t\tnode.object.object.type === \"ThisExpression\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check if function parameter has a dangling underscore.\n\t\t * @param {ASTNode} node function node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkForDanglingUnderscoreInFunctionParameters(node) {\n\t\t\tif (!allowFunctionParams) {\n\t\t\t\tnode.params.forEach(param => {\n\t\t\t\t\tconst { type } = param;\n\t\t\t\t\tlet nodeToCheck;\n\n\t\t\t\t\tif (type === \"RestElement\") {\n\t\t\t\t\t\tnodeToCheck = param.argument;\n\t\t\t\t\t} else if (type === \"AssignmentPattern\") {\n\t\t\t\t\t\tnodeToCheck = param.left;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnodeToCheck = param;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (nodeToCheck.type === \"Identifier\") {\n\t\t\t\t\t\tconst identifier = nodeToCheck.name;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\thasDanglingUnderscore(identifier) &&\n\t\t\t\t\t\t\t!isAllowed(identifier)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode: param,\n\t\t\t\t\t\t\t\tmessageId: \"unexpectedUnderscore\",\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\tidentifier,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check if function has a dangling underscore\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkForDanglingUnderscoreInFunction(node) {\n\t\t\tif (node.type === \"FunctionDeclaration\" && node.id) {\n\t\t\t\tconst identifier = node.id.name;\n\n\t\t\t\tif (\n\t\t\t\t\ttypeof identifier !== \"undefined\" &&\n\t\t\t\t\thasDanglingUnderscore(identifier) &&\n\t\t\t\t\t!isAllowed(identifier)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpectedUnderscore\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tidentifier,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tcheckForDanglingUnderscoreInFunctionParameters(node);\n\t\t}\n\n\t\t/**\n\t\t * Check if variable expression has a dangling underscore\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkForDanglingUnderscoreInVariableExpression(node) {\n\t\t\tsourceCode.getDeclaredVariables(node).forEach(variable => {\n\t\t\t\tconst definition = variable.defs.find(def => def.node === node);\n\t\t\t\tconst identifierNode = definition.name;\n\t\t\t\tconst identifier = identifierNode.name;\n\t\t\t\tlet parent = identifierNode.parent;\n\n\t\t\t\twhile (\n\t\t\t\t\t![\n\t\t\t\t\t\t\"VariableDeclarator\",\n\t\t\t\t\t\t\"ArrayPattern\",\n\t\t\t\t\t\t\"ObjectPattern\",\n\t\t\t\t\t].includes(parent.type)\n\t\t\t\t) {\n\t\t\t\t\tparent = parent.parent;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\thasDanglingUnderscore(identifier) &&\n\t\t\t\t\t!isSpecialCaseIdentifierInVariableExpression(identifier) &&\n\t\t\t\t\t!isAllowed(identifier) &&\n\t\t\t\t\t!(\n\t\t\t\t\t\tallowInArrayDestructuring &&\n\t\t\t\t\t\tparent.type === \"ArrayPattern\"\n\t\t\t\t\t) &&\n\t\t\t\t\t!(\n\t\t\t\t\t\tallowInObjectDestructuring &&\n\t\t\t\t\t\tparent.type === \"ObjectPattern\"\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpectedUnderscore\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tidentifier,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Check if member expression has a dangling underscore\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkForDanglingUnderscoreInMemberExpression(node) {\n\t\t\tconst identifier = node.property.name,\n\t\t\t\tisMemberOfThis = node.object.type === \"ThisExpression\",\n\t\t\t\tisMemberOfSuper = node.object.type === \"Super\",\n\t\t\t\tisMemberOfThisConstructor = isThisConstructorReference(node);\n\n\t\t\tif (\n\t\t\t\ttypeof identifier !== \"undefined\" &&\n\t\t\t\thasDanglingUnderscore(identifier) &&\n\t\t\t\t!(isMemberOfThis && allowAfterThis) &&\n\t\t\t\t!(isMemberOfSuper && allowAfterSuper) &&\n\t\t\t\t!(isMemberOfThisConstructor && allowAfterThisConstructor) &&\n\t\t\t\t!isSpecialCaseIdentifierForMemberExpression(identifier) &&\n\t\t\t\t!isAllowed(identifier)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unexpectedUnderscore\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tidentifier,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check if method declaration or method property has a dangling underscore\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkForDanglingUnderscoreInMethod(node) {\n\t\t\tconst identifier = node.key.name;\n\t\t\tconst isMethod =\n\t\t\t\tnode.type === \"MethodDefinition\" ||\n\t\t\t\t(node.type === \"Property\" && node.method);\n\n\t\t\tif (\n\t\t\t\ttypeof identifier !== \"undefined\" &&\n\t\t\t\tenforceInMethodNames &&\n\t\t\t\tisMethod &&\n\t\t\t\thasDanglingUnderscore(identifier) &&\n\t\t\t\t!isAllowed(identifier)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unexpectedUnderscore\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tidentifier:\n\t\t\t\t\t\t\tnode.key.type === \"PrivateIdentifier\"\n\t\t\t\t\t\t\t\t? `#${identifier}`\n\t\t\t\t\t\t\t\t: identifier,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check if a class field has a dangling underscore\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkForDanglingUnderscoreInClassField(node) {\n\t\t\tconst identifier = node.key.name;\n\n\t\t\tif (\n\t\t\t\ttypeof identifier !== \"undefined\" &&\n\t\t\t\thasDanglingUnderscore(identifier) &&\n\t\t\t\tenforceInClassFields &&\n\t\t\t\t!isAllowed(identifier)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unexpectedUnderscore\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tidentifier:\n\t\t\t\t\t\t\tnode.key.type === \"PrivateIdentifier\"\n\t\t\t\t\t\t\t\t? `#${identifier}`\n\t\t\t\t\t\t\t\t: identifier,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tFunctionDeclaration: checkForDanglingUnderscoreInFunction,\n\t\t\tVariableDeclarator: checkForDanglingUnderscoreInVariableExpression,\n\t\t\tMemberExpression: checkForDanglingUnderscoreInMemberExpression,\n\t\t\tMethodDefinition: checkForDanglingUnderscoreInMethod,\n\t\t\tPropertyDefinition: checkForDanglingUnderscoreInClassField,\n\t\t\tProperty: checkForDanglingUnderscoreInMethod,\n\t\t\tFunctionExpression: checkForDanglingUnderscoreInFunction,\n\t\t\tArrowFunctionExpression: checkForDanglingUnderscoreInFunction,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to spot scenarios where a newline looks like it is ending a statement, but is not.\n * @author Glen Mailer\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow confusing multiline expressions\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-unexpected-multiline\",\n\t\t},\n\n\t\tschema: [],\n\t\tmessages: {\n\t\t\tfunction:\n\t\t\t\t\"Unexpected newline between function and ( of function call.\",\n\t\t\tproperty:\n\t\t\t\t\"Unexpected newline between object and [ of property access.\",\n\t\t\ttaggedTemplate:\n\t\t\t\t\"Unexpected newline between template tag and template literal.\",\n\t\t\tdivision:\n\t\t\t\t\"Unexpected newline between numerator and division operator.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst REGEX_FLAG_MATCHER = /^[gimsuy]+$/u;\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Check to see if there is a newline between the node and the following open bracket\n\t\t * line's expression\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @param {string} messageId The error messageId to use.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkForBreakAfter(node, messageId) {\n\t\t\tconst openParen = sourceCode.getTokenAfter(\n\t\t\t\tnode,\n\t\t\t\tastUtils.isNotClosingParenToken,\n\t\t\t);\n\t\t\tconst nodeExpressionEnd = sourceCode.getTokenBefore(openParen);\n\n\t\t\tif (openParen.loc.start.line !== nodeExpressionEnd.loc.end.line) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: openParen.loc,\n\t\t\t\t\tmessageId,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tMemberExpression(node) {\n\t\t\t\tif (!node.computed || node.optional) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcheckForBreakAfter(node.object, \"property\");\n\t\t\t},\n\n\t\t\tTaggedTemplateExpression(node) {\n\t\t\t\tconst { quasi } = node;\n\n\t\t\t\t// handles common tags, parenthesized tags, and typescript's generic type arguments\n\t\t\t\tconst tokenBefore = sourceCode.getTokenBefore(quasi);\n\n\t\t\t\tif (tokenBefore.loc.end.line !== quasi.loc.start.line) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tstart: quasi.loc.start,\n\t\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\t\tline: quasi.loc.start.line,\n\t\t\t\t\t\t\t\tcolumn: quasi.loc.start.column + 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmessageId: \"taggedTemplate\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tCallExpression(node) {\n\t\t\t\tif (node.arguments.length === 0 || node.optional) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcheckForBreakAfter(node.callee, \"function\");\n\t\t\t},\n\n\t\t\t\"BinaryExpression[operator='/'] > BinaryExpression[operator='/'].left\"(\n\t\t\t\tnode,\n\t\t\t) {\n\t\t\t\tconst secondSlash = sourceCode.getTokenAfter(\n\t\t\t\t\tnode,\n\t\t\t\t\ttoken => token.value === \"/\",\n\t\t\t\t);\n\t\t\t\tconst tokenAfterOperator =\n\t\t\t\t\tsourceCode.getTokenAfter(secondSlash);\n\n\t\t\t\tif (\n\t\t\t\t\ttokenAfterOperator.type === \"Identifier\" &&\n\t\t\t\t\tREGEX_FLAG_MATCHER.test(tokenAfterOperator.value) &&\n\t\t\t\t\tsecondSlash.range[1] === tokenAfterOperator.range[0]\n\t\t\t\t) {\n\t\t\t\t\tcheckForBreakAfter(node.left, \"division\");\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Traverser to traverse AST trees.\n * @author Nicholas C. Zakas\n * @author Toru Nagashima\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst vk = require(\"eslint-visitor-keys\");\nconst debug = require(\"debug\")(\"eslint:traverser\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Do nothing.\n * @returns {void}\n */\nfunction noop() {\n\t// do nothing.\n}\n\n/**\n * Check whether the given value is an ASTNode or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is an ASTNode.\n */\nfunction isNode(x) {\n\treturn x !== null && typeof x === \"object\" && typeof x.type === \"string\";\n}\n\n/**\n * Get the visitor keys of a given node.\n * @param {Object} visitorKeys The map of visitor keys.\n * @param {ASTNode} node The node to get their visitor keys.\n * @returns {string[]} The visitor keys of the node.\n */\nfunction getVisitorKeys(visitorKeys, node) {\n\tlet keys = visitorKeys[node.type];\n\n\tif (!keys) {\n\t\tkeys = vk.getKeys(node);\n\t\tdebug(\n\t\t\t'Unknown node type \"%s\": Estimated visitor keys %j',\n\t\t\tnode.type,\n\t\t\tkeys,\n\t\t);\n\t}\n\n\treturn keys;\n}\n\n/**\n * The traverser class to traverse AST trees.\n */\nclass Traverser {\n\tconstructor() {\n\t\tthis._current = null;\n\t\tthis._parents = [];\n\t\tthis._skipped = false;\n\t\tthis._broken = false;\n\t\tthis._visitorKeys = null;\n\t\tthis._enter = null;\n\t\tthis._leave = null;\n\t}\n\n\t/**\n\t * Gives current node.\n\t * @returns {ASTNode} The current node.\n\t */\n\tcurrent() {\n\t\treturn this._current;\n\t}\n\n\t/**\n\t * Gives a copy of the ancestor nodes.\n\t * @returns {ASTNode[]} The ancestor nodes.\n\t */\n\tparents() {\n\t\treturn this._parents.slice(0);\n\t}\n\n\t/**\n\t * Break the current traversal.\n\t * @returns {void}\n\t */\n\tbreak() {\n\t\tthis._broken = true;\n\t}\n\n\t/**\n\t * Skip child nodes for the current traversal.\n\t * @returns {void}\n\t */\n\tskip() {\n\t\tthis._skipped = true;\n\t}\n\n\t/**\n\t * Traverse the given AST tree.\n\t * @param {ASTNode} node The root node to traverse.\n\t * @param {Object} options The option object.\n\t * @param {Object} [options.visitorKeys=DEFAULT_VISITOR_KEYS] The keys of each node types to traverse child nodes. Default is `./default-visitor-keys.json`.\n\t * @param {Function} [options.enter=noop] The callback function which is called on entering each node.\n\t * @param {Function} [options.leave=noop] The callback function which is called on leaving each node.\n\t * @returns {void}\n\t */\n\ttraverse(node, options) {\n\t\tthis._current = null;\n\t\tthis._parents = [];\n\t\tthis._skipped = false;\n\t\tthis._broken = false;\n\t\tthis._visitorKeys = options.visitorKeys || vk.KEYS;\n\t\tthis._enter = options.enter || noop;\n\t\tthis._leave = options.leave || noop;\n\t\tthis._traverse(node, null);\n\t}\n\n\t/**\n\t * Traverse the given AST tree recursively.\n\t * @param {ASTNode} node The current node.\n\t * @param {ASTNode|null} parent The parent node.\n\t * @returns {void}\n\t * @private\n\t */\n\t_traverse(node, parent) {\n\t\tif (!isNode(node)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._current = node;\n\t\tthis._skipped = false;\n\t\tthis._enter(node, parent);\n\n\t\tif (!this._skipped && !this._broken) {\n\t\t\tconst keys = getVisitorKeys(this._visitorKeys, node);\n\n\t\t\tif (keys.length >= 1) {\n\t\t\t\tthis._parents.push(node);\n\t\t\t\tfor (let i = 0; i < keys.length && !this._broken; ++i) {\n\t\t\t\t\tconst child = node[keys[i]];\n\n\t\t\t\t\tif (Array.isArray(child)) {\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tlet j = 0;\n\t\t\t\t\t\t\tj < child.length && !this._broken;\n\t\t\t\t\t\t\t++j\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthis._traverse(child[j], node);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._traverse(child, node);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._parents.pop();\n\t\t\t}\n\t\t}\n\n\t\tif (!this._broken) {\n\t\t\tthis._leave(node, parent);\n\t\t}\n\n\t\tthis._current = parent;\n\t}\n\n\t/**\n\t * Calculates the keys to use for traversal.\n\t * @param {ASTNode} node The node to read keys from.\n\t * @returns {string[]} An array of keys to visit on the node.\n\t * @private\n\t */\n\tstatic getKeys(node) {\n\t\treturn vk.getKeys(node);\n\t}\n\n\t/**\n\t * Traverse the given AST tree.\n\t * @param {ASTNode} node The root node to traverse.\n\t * @param {Object} options The option object.\n\t * @param {Object} [options.visitorKeys=DEFAULT_VISITOR_KEYS] The keys of each node types to traverse child nodes. Default is `./default-visitor-keys.json`.\n\t * @param {Function} [options.enter=noop] The callback function which is called on entering each node.\n\t * @param {Function} [options.leave=noop] The callback function which is called on leaving each node.\n\t * @returns {void}\n\t */\n\tstatic traverse(node, options) {\n\t\tnew Traverser().traverse(node, options);\n\t}\n\n\t/**\n\t * The default visitor keys.\n\t * @type {Object}\n\t */\n\tstatic get DEFAULT_VISITOR_KEYS() {\n\t\treturn vk.KEYS;\n\t}\n}\n\nmodule.exports = Traverser;\n", "/**\n * @fileoverview Rule to disallow use of unmodified expressions in loop conditions\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst Traverser = require(\"../shared/traverser\"),\n\tastUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Variable} Variable */\n/** @typedef {import(\"eslint-scope\").Reference} Reference */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst SENTINEL_PATTERN =\n\t/(?:(?:Call|Class|Function|Member|New|Yield)Expression|Statement|Declaration)$/u;\nconst LOOP_PATTERN = /^(?:DoWhile|For|While)Statement$/u; // for-in/of statements don't have `test` property.\nconst GROUP_PATTERN = /^(?:BinaryExpression|ConditionalExpression)$/u;\nconst SKIP_PATTERN = /^(?:ArrowFunction|Class|Function)Expression$/u;\nconst DYNAMIC_PATTERN = /^(?:Call|Member|New|TaggedTemplate|Yield)Expression$/u;\n\n/**\n * @typedef {Object} LoopConditionInfo\n * @property {Reference} reference - The reference.\n * @property {ASTNode} group - BinaryExpression or ConditionalExpression nodes\n *      that the reference is belonging to.\n * @property {Function} isInLoop - The predicate which checks a given reference\n *      is in this loop.\n * @property {boolean} modified - The flag that the reference is modified in\n *      this loop.\n */\n\n/**\n * Checks whether or not a given reference is a write reference.\n * @param {Reference} reference A reference to check.\n * @returns {boolean} `true` if the reference is a write reference.\n */\nfunction isWriteReference(reference) {\n\tif (reference.init) {\n\t\tconst def = reference.resolved && reference.resolved.defs[0];\n\n\t\tif (!def || def.type !== \"Variable\" || def.parent.kind !== \"var\") {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn reference.isWrite();\n}\n\n/**\n * Checks whether or not a given loop condition info does not have the modified\n * flag.\n * @param {LoopConditionInfo} condition A loop condition info to check.\n * @returns {boolean} `true` if the loop condition info is \"unmodified\".\n */\nfunction isUnmodified(condition) {\n\treturn !condition.modified;\n}\n\n/**\n * Checks whether or not a given loop condition info does not have the modified\n * flag and does not have the group this condition belongs to.\n * @param {LoopConditionInfo} condition A loop condition info to check.\n * @returns {boolean} `true` if the loop condition info is \"unmodified\".\n */\nfunction isUnmodifiedAndNotBelongToGroup(condition) {\n\treturn !(condition.modified || condition.group);\n}\n\n/**\n * Checks whether or not a given reference is inside of a given node.\n * @param {ASTNode} node A node to check.\n * @param {Reference} reference A reference to check.\n * @returns {boolean} `true` if the reference is inside of the node.\n */\nfunction isInRange(node, reference) {\n\tconst or = node.range;\n\tconst ir = reference.identifier.range;\n\n\treturn or[0] <= ir[0] && ir[1] <= or[1];\n}\n\n/**\n * Checks whether or not a given reference is inside of a loop node's condition.\n * @param {ASTNode} node A node to check.\n * @param {Reference} reference A reference to check.\n * @returns {boolean} `true` if the reference is inside of the loop node's\n *      condition.\n */\nconst isInLoop = {\n\tWhileStatement: isInRange,\n\tDoWhileStatement: isInRange,\n\tForStatement(node, reference) {\n\t\treturn (\n\t\t\tisInRange(node, reference) &&\n\t\t\t!(node.init && isInRange(node.init, reference))\n\t\t);\n\t},\n};\n\n/**\n * Gets the function which encloses a given reference.\n * This supports only FunctionDeclaration.\n * @param {Reference} reference A reference to get.\n * @returns {ASTNode|null} The function node or null.\n */\nfunction getEncloseFunctionDeclaration(reference) {\n\tlet node = reference.identifier;\n\n\twhile (node) {\n\t\tif (node.type === \"FunctionDeclaration\") {\n\t\t\treturn node.id ? node : null;\n\t\t}\n\n\t\tnode = node.parent;\n\t}\n\n\treturn null;\n}\n\n/**\n * Checks whether a given modifier is in a loop.\n *\n * Besides checking for the condition being in the loop, this also checks\n * whether the function that this modifier is belonging to is called\n * in the loop.\n * @param {LoopConditionInfo} condition The condition to check.\n * @param {Reference} modifier The modifier to check.\n * @returns {boolean} `true` if the modifier is in a loop.\n */\nfunction hasModifierInLoop(condition, modifier) {\n\tif (condition.isInLoop(modifier)) {\n\t\treturn true;\n\t}\n\n\tconst funcNode = getEncloseFunctionDeclaration(modifier);\n\n\tif (!funcNode) {\n\t\treturn false;\n\t}\n\n\tconst funcVar = astUtils.getVariableByName(\n\t\tmodifier.from.upper,\n\t\tfuncNode.id.name,\n\t);\n\n\treturn Boolean(funcVar && funcVar.references.some(condition.isInLoop));\n}\n\n/**\n * Updates the \"modified\" flags of given loop conditions with given modifiers.\n * @param {LoopConditionInfo[]} conditions The loop conditions to be updated.\n * @param {Reference[]} modifiers The references to update.\n * @returns {void}\n */\nfunction updateModifiedFlag(conditions, modifiers) {\n\tfor (let i = 0; i < conditions.length; ++i) {\n\t\tconst condition = conditions[i];\n\n\t\tfor (let j = 0; !condition.modified && j < modifiers.length; ++j) {\n\t\t\tconst modifier = modifiers[j];\n\n\t\t\tcondition.modified = hasModifierInLoop(condition, modifier);\n\t\t}\n\t}\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow unmodified loop conditions\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-unmodified-loop-condition\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tloopConditionNotModified:\n\t\t\t\t\"'{{name}}' is not modified in this loop.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tlet groupMap = null;\n\n\t\t/**\n\t\t * Reports a given condition info.\n\t\t * @param {LoopConditionInfo} condition A loop condition info to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(condition) {\n\t\t\tconst node = condition.reference.identifier;\n\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"loopConditionNotModified\",\n\t\t\t\tdata: node,\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Registers given conditions to the group the condition belongs to.\n\t\t * @param {LoopConditionInfo[]} conditions A loop condition info to\n\t\t *      register.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction registerConditionsToGroup(conditions) {\n\t\t\tfor (let i = 0; i < conditions.length; ++i) {\n\t\t\t\tconst condition = conditions[i];\n\n\t\t\t\tif (condition.group) {\n\t\t\t\t\tlet group = groupMap.get(condition.group);\n\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\tgroup = [];\n\t\t\t\t\t\tgroupMap.set(condition.group, group);\n\t\t\t\t\t}\n\t\t\t\t\tgroup.push(condition);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Reports references which are inside of unmodified groups.\n\t\t * @param {LoopConditionInfo[]} conditions A loop condition info to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkConditionsInGroup(conditions) {\n\t\t\tif (conditions.every(isUnmodified)) {\n\t\t\t\tconditions.forEach(report);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks whether or not a given group node has any dynamic elements.\n\t\t * @param {ASTNode} root A node to check.\n\t\t *      This node is one of BinaryExpression or ConditionalExpression.\n\t\t * @returns {boolean} `true` if the node is dynamic.\n\t\t */\n\t\tfunction hasDynamicExpressions(root) {\n\t\t\tlet retv = false;\n\n\t\t\tTraverser.traverse(root, {\n\t\t\t\tvisitorKeys: sourceCode.visitorKeys,\n\t\t\t\tenter(node) {\n\t\t\t\t\tif (DYNAMIC_PATTERN.test(node.type)) {\n\t\t\t\t\t\tretv = true;\n\t\t\t\t\t\tthis.break();\n\t\t\t\t\t} else if (SKIP_PATTERN.test(node.type)) {\n\t\t\t\t\t\tthis.skip();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn retv;\n\t\t}\n\n\t\t/**\n\t\t * Creates the loop condition information from a given reference.\n\t\t * @param {Reference} reference A reference to create.\n\t\t * @returns {LoopConditionInfo|null} Created loop condition info, or null.\n\t\t */\n\t\tfunction toLoopCondition(reference) {\n\t\t\tif (reference.init) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet group = null;\n\t\t\tlet child = reference.identifier;\n\t\t\tlet node = child.parent;\n\n\t\t\twhile (node) {\n\t\t\t\tif (SENTINEL_PATTERN.test(node.type)) {\n\t\t\t\t\tif (LOOP_PATTERN.test(node.type) && node.test === child) {\n\t\t\t\t\t\t// This reference is inside of a loop condition.\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\treference,\n\t\t\t\t\t\t\tgroup,\n\t\t\t\t\t\t\tisInLoop: isInLoop[node.type].bind(null, node),\n\t\t\t\t\t\t\tmodified: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\t// This reference is outside of a loop condition.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * If it's inside of a group, OK if either operand is modified.\n\t\t\t\t * So stores the group this reference belongs to.\n\t\t\t\t */\n\t\t\t\tif (GROUP_PATTERN.test(node.type)) {\n\t\t\t\t\t// If this expression is dynamic, no need to check.\n\t\t\t\t\tif (hasDynamicExpressions(node)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgroup = node;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tchild = node;\n\t\t\t\tnode = node.parent;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\t/**\n\t\t * Finds unmodified references which are inside of a loop condition.\n\t\t * Then reports the references which are outside of groups.\n\t\t * @param {Variable} variable A variable to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkReferences(variable) {\n\t\t\t// Gets references that exist in loop conditions.\n\t\t\tconst conditions = variable.references\n\t\t\t\t.map(toLoopCondition)\n\t\t\t\t.filter(Boolean);\n\n\t\t\tif (conditions.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Registers the conditions to belonging groups.\n\t\t\tregisterConditionsToGroup(conditions);\n\n\t\t\t// Check the conditions are modified.\n\t\t\tconst modifiers = variable.references.filter(isWriteReference);\n\n\t\t\tif (modifiers.length > 0) {\n\t\t\t\tupdateModifiedFlag(conditions, modifiers);\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Reports the conditions which are not belonging to groups.\n\t\t\t * Others will be reported after all variables are done.\n\t\t\t */\n\t\t\tconditions.filter(isUnmodifiedAndNotBelongToGroup).forEach(report);\n\t\t}\n\n\t\treturn {\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\tconst queue = [sourceCode.getScope(node)];\n\n\t\t\t\tgroupMap = new Map();\n\n\t\t\t\tlet scope;\n\n\t\t\t\twhile ((scope = queue.pop())) {\n\t\t\t\t\tqueue.push(...scope.childScopes);\n\t\t\t\t\tscope.variables.forEach(checkReferences);\n\t\t\t\t}\n\n\t\t\t\tgroupMap.forEach(checkConditionsInGroup);\n\t\t\t\tgroupMap = null;\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag no-unneeded-ternary\n * @author Gyandeep Singh\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n// Operators that always result in a boolean value\nconst BOOLEAN_OPERATORS = new Set([\n\t\"==\",\n\t\"===\",\n\t\"!=\",\n\t\"!==\",\n\t\">\",\n\t\">=\",\n\t\"<\",\n\t\"<=\",\n\t\"in\",\n\t\"instanceof\",\n]);\nconst OPERATOR_INVERSES = {\n\t\"==\": \"!=\",\n\t\"!=\": \"==\",\n\t\"===\": \"!==\",\n\t\"!==\": \"===\",\n\n\t// Operators like < and >= are not true inverses, since both will return false with NaN.\n};\nconst OR_PRECEDENCE = astUtils.getPrecedence({\n\ttype: \"LogicalExpression\",\n\toperator: \"||\",\n});\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [{ defaultAssignment: true }],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow ternary operators when simpler alternatives exist\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-unneeded-ternary\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tdefaultAssignment: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tunnecessaryConditionalExpression:\n\t\t\t\t\"Unnecessary use of boolean literals in conditional expression.\",\n\t\t\tunnecessaryConditionalAssignment:\n\t\t\t\t\"Unnecessary use of conditional expression for default assignment.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ defaultAssignment }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Test if the node is a boolean literal\n\t\t * @param {ASTNode} node The node to report.\n\t\t * @returns {boolean} True if the its a boolean literal\n\t\t * @private\n\t\t */\n\t\tfunction isBooleanLiteral(node) {\n\t\t\treturn node.type === \"Literal\" && typeof node.value === \"boolean\";\n\t\t}\n\n\t\t/**\n\t\t * Creates an expression that represents the boolean inverse of the expression represented by the original node\n\t\t * @param {ASTNode} node A node representing an expression\n\t\t * @returns {string} A string representing an inverted expression\n\t\t */\n\t\tfunction invertExpression(node) {\n\t\t\tif (\n\t\t\t\tnode.type === \"BinaryExpression\" &&\n\t\t\t\tObject.hasOwn(OPERATOR_INVERSES, node.operator)\n\t\t\t) {\n\t\t\t\tconst operatorToken = sourceCode.getFirstTokenBetween(\n\t\t\t\t\tnode.left,\n\t\t\t\t\tnode.right,\n\t\t\t\t\ttoken => token.value === node.operator,\n\t\t\t\t);\n\t\t\t\tconst text = sourceCode.getText();\n\n\t\t\t\treturn (\n\t\t\t\t\ttext.slice(node.range[0], operatorToken.range[0]) +\n\t\t\t\t\tOPERATOR_INVERSES[node.operator] +\n\t\t\t\t\ttext.slice(operatorToken.range[1], node.range[1])\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tastUtils.getPrecedence(node) <\n\t\t\t\tastUtils.getPrecedence({ type: \"UnaryExpression\" })\n\t\t\t) {\n\t\t\t\treturn `!(${astUtils.getParenthesisedText(sourceCode, node)})`;\n\t\t\t}\n\t\t\treturn `!${astUtils.getParenthesisedText(sourceCode, node)}`;\n\t\t}\n\n\t\t/**\n\t\t * Tests if a given node always evaluates to a boolean value\n\t\t * @param {ASTNode} node An expression node\n\t\t * @returns {boolean} True if it is determined that the node will always evaluate to a boolean value\n\t\t */\n\t\tfunction isBooleanExpression(node) {\n\t\t\treturn (\n\t\t\t\t(node.type === \"BinaryExpression\" &&\n\t\t\t\t\tBOOLEAN_OPERATORS.has(node.operator)) ||\n\t\t\t\t(node.type === \"UnaryExpression\" && node.operator === \"!\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Test if the node matches the pattern id ? id : expression\n\t\t * @param {ASTNode} node The ConditionalExpression to check.\n\t\t * @returns {boolean} True if the pattern is matched, and false otherwise\n\t\t * @private\n\t\t */\n\t\tfunction matchesDefaultAssignment(node) {\n\t\t\treturn (\n\t\t\t\tnode.test.type === \"Identifier\" &&\n\t\t\t\tnode.consequent.type === \"Identifier\" &&\n\t\t\t\tnode.test.name === node.consequent.name\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\tConditionalExpression(node) {\n\t\t\t\tif (\n\t\t\t\t\tisBooleanLiteral(node.alternate) &&\n\t\t\t\t\tisBooleanLiteral(node.consequent)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unnecessaryConditionalExpression\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tnode.consequent.value === node.alternate.value\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// Replace `foo ? true : true` with just `true`, but don't replace `foo() ? true : true`\n\t\t\t\t\t\t\t\treturn node.test.type === \"Identifier\"\n\t\t\t\t\t\t\t\t\t? fixer.replaceText(\n\t\t\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t\t\tnode.consequent.value.toString(),\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (node.alternate.value) {\n\t\t\t\t\t\t\t\t// Replace `foo() ? false : true` with `!(foo())`\n\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tinvertExpression(node.test),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Replace `foo ? true : false` with `foo` if `foo` is guaranteed to be a boolean, or `!!foo` otherwise.\n\n\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\tisBooleanExpression(node.test)\n\t\t\t\t\t\t\t\t\t? astUtils.getParenthesisedText(\n\t\t\t\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\t\t\t\tnode.test,\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: `!${invertExpression(node.test)}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t} else if (\n\t\t\t\t\t!defaultAssignment &&\n\t\t\t\t\tmatchesDefaultAssignment(node)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unnecessaryConditionalAssignment\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tconst shouldParenthesizeAlternate =\n\t\t\t\t\t\t\t\t(astUtils.getPrecedence(node.alternate) <\n\t\t\t\t\t\t\t\t\tOR_PRECEDENCE ||\n\t\t\t\t\t\t\t\t\tastUtils.isCoalesceExpression(\n\t\t\t\t\t\t\t\t\t\tnode.alternate,\n\t\t\t\t\t\t\t\t\t)) &&\n\t\t\t\t\t\t\t\t!astUtils.isParenthesised(\n\t\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\t\tnode.alternate,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst alternateText = shouldParenthesizeAlternate\n\t\t\t\t\t\t\t\t? `(${sourceCode.getText(node.alternate)})`\n\t\t\t\t\t\t\t\t: astUtils.getParenthesisedText(\n\t\t\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\t\t\tnode.alternate,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst testText = astUtils.getParenthesisedText(\n\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\tnode.test,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t`${testText} || ${alternateText}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Checks for unreachable code due to return, throws, break, and continue.\n * @author Joel Feenstra\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst { isAnySegmentReachable } = require(\"./utils/code-path-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * @typedef {Object} ConstructorInfo\n * @property {ConstructorInfo | null} upper Info about the constructor that encloses this constructor.\n * @property {boolean} hasSuperCall The flag about having `super()` expressions.\n */\n\n/**\n * Checks whether or not a given variable declarator has the initializer.\n * @param {ASTNode} node A VariableDeclarator node to check.\n * @returns {boolean} `true` if the node has the initializer.\n */\nfunction isInitialized(node) {\n\treturn Boolean(node.init);\n}\n\n/**\n * The class to distinguish consecutive unreachable statements.\n */\nclass ConsecutiveRange {\n\tconstructor(sourceCode) {\n\t\tthis.sourceCode = sourceCode;\n\t\tthis.startNode = null;\n\t\tthis.endNode = null;\n\t}\n\n\t/**\n\t * The location object of this range.\n\t * @type {Object}\n\t */\n\tget location() {\n\t\treturn {\n\t\t\tstart: this.startNode.loc.start,\n\t\t\tend: this.endNode.loc.end,\n\t\t};\n\t}\n\n\t/**\n\t * `true` if this range is empty.\n\t * @type {boolean}\n\t */\n\tget isEmpty() {\n\t\treturn !(this.startNode && this.endNode);\n\t}\n\n\t/**\n\t * Checks whether the given node is inside of this range.\n\t * @param {ASTNode|Token} node The node to check.\n\t * @returns {boolean} `true` if the node is inside of this range.\n\t */\n\tcontains(node) {\n\t\treturn (\n\t\t\tnode.range[0] >= this.startNode.range[0] &&\n\t\t\tnode.range[1] <= this.endNode.range[1]\n\t\t);\n\t}\n\n\t/**\n\t * Checks whether the given node is consecutive to this range.\n\t * @param {ASTNode} node The node to check.\n\t * @returns {boolean} `true` if the node is consecutive to this range.\n\t */\n\tisConsecutive(node) {\n\t\treturn this.contains(this.sourceCode.getTokenBefore(node));\n\t}\n\n\t/**\n\t * Merges the given node to this range.\n\t * @param {ASTNode} node The node to merge.\n\t * @returns {void}\n\t */\n\tmerge(node) {\n\t\tthis.endNode = node;\n\t}\n\n\t/**\n\t * Resets this range by the given node or null.\n\t * @param {ASTNode|null} node The node to reset, or null.\n\t * @returns {void}\n\t */\n\treset(node) {\n\t\tthis.startNode = this.endNode = node;\n\t}\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow unreachable code after `return`, `throw`, `continue`, and `break` statements\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-unreachable\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunreachableCode: \"Unreachable code.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t/** @type {ConstructorInfo | null} */\n\t\tlet constructorInfo = null;\n\n\t\t/** @type {ConsecutiveRange} */\n\t\tconst range = new ConsecutiveRange(context.sourceCode);\n\n\t\t/** @type {Array<Set<CodePathSegment>>} */\n\t\tconst codePathSegments = [];\n\n\t\t/** @type {Set<CodePathSegment>} */\n\t\tlet currentCodePathSegments = new Set();\n\n\t\t/**\n\t\t * Reports a given node if it's unreachable.\n\t\t * @param {ASTNode} node A statement node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportIfUnreachable(node) {\n\t\t\tlet nextNode = null;\n\n\t\t\tif (\n\t\t\t\tnode &&\n\t\t\t\t(node.type === \"PropertyDefinition\" ||\n\t\t\t\t\t!isAnySegmentReachable(currentCodePathSegments))\n\t\t\t) {\n\t\t\t\t// Store this statement to distinguish consecutive statements.\n\t\t\t\tif (range.isEmpty) {\n\t\t\t\t\trange.reset(node);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Skip if this statement is inside of the current range.\n\t\t\t\tif (range.contains(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Merge if this statement is consecutive to the current range.\n\t\t\t\tif (range.isConsecutive(node)) {\n\t\t\t\t\trange.merge(node);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tnextNode = node;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Report the current range since this statement is reachable or is\n\t\t\t * not consecutive to the current range.\n\t\t\t */\n\t\t\tif (!range.isEmpty) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tmessageId: \"unreachableCode\",\n\t\t\t\t\tloc: range.location,\n\t\t\t\t\tnode: range.startNode,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Update the current range.\n\t\t\trange.reset(nextNode);\n\t\t}\n\n\t\treturn {\n\t\t\t// Manages the current code path.\n\t\t\tonCodePathStart() {\n\t\t\t\tcodePathSegments.push(currentCodePathSegments);\n\t\t\t\tcurrentCodePathSegments = new Set();\n\t\t\t},\n\n\t\t\tonCodePathEnd() {\n\t\t\t\tcurrentCodePathSegments = codePathSegments.pop();\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentStart(segment) {\n\t\t\t\tcurrentCodePathSegments.add(segment);\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentEnd(segment) {\n\t\t\t\tcurrentCodePathSegments.delete(segment);\n\t\t\t},\n\n\t\t\tonCodePathSegmentEnd(segment) {\n\t\t\t\tcurrentCodePathSegments.delete(segment);\n\t\t\t},\n\n\t\t\tonCodePathSegmentStart(segment) {\n\t\t\t\tcurrentCodePathSegments.add(segment);\n\t\t\t},\n\n\t\t\t// Registers for all statement nodes (excludes FunctionDeclaration).\n\t\t\tBlockStatement: reportIfUnreachable,\n\t\t\tBreakStatement: reportIfUnreachable,\n\t\t\tClassDeclaration: reportIfUnreachable,\n\t\t\tContinueStatement: reportIfUnreachable,\n\t\t\tDebuggerStatement: reportIfUnreachable,\n\t\t\tDoWhileStatement: reportIfUnreachable,\n\t\t\tExpressionStatement: reportIfUnreachable,\n\t\t\tForInStatement: reportIfUnreachable,\n\t\t\tForOfStatement: reportIfUnreachable,\n\t\t\tForStatement: reportIfUnreachable,\n\t\t\tIfStatement: reportIfUnreachable,\n\t\t\tImportDeclaration: reportIfUnreachable,\n\t\t\tLabeledStatement: reportIfUnreachable,\n\t\t\tReturnStatement: reportIfUnreachable,\n\t\t\tSwitchStatement: reportIfUnreachable,\n\t\t\tThrowStatement: reportIfUnreachable,\n\t\t\tTryStatement: reportIfUnreachable,\n\n\t\t\tVariableDeclaration(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.kind !== \"var\" ||\n\t\t\t\t\tnode.declarations.some(isInitialized)\n\t\t\t\t) {\n\t\t\t\t\treportIfUnreachable(node);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tWhileStatement: reportIfUnreachable,\n\t\t\tWithStatement: reportIfUnreachable,\n\t\t\tExportNamedDeclaration: reportIfUnreachable,\n\t\t\tExportDefaultDeclaration: reportIfUnreachable,\n\t\t\tExportAllDeclaration: reportIfUnreachable,\n\n\t\t\t\"Program:exit\"() {\n\t\t\t\treportIfUnreachable();\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * Instance fields defined in a subclass are never created if the constructor of the subclass\n\t\t\t * doesn't call `super()`, so their definitions are unreachable code.\n\t\t\t */\n\t\t\t\"MethodDefinition[kind='constructor']\"() {\n\t\t\t\tconstructorInfo = {\n\t\t\t\t\tupper: constructorInfo,\n\t\t\t\t\thasSuperCall: false,\n\t\t\t\t};\n\t\t\t},\n\t\t\t\"MethodDefinition[kind='constructor']:exit\"(node) {\n\t\t\t\tconst { hasSuperCall } = constructorInfo;\n\n\t\t\t\tconstructorInfo = constructorInfo.upper;\n\n\t\t\t\t// skip typescript constructors without the body\n\t\t\t\tif (!node.value.body) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst classDefinition = node.parent.parent;\n\n\t\t\t\tif (classDefinition.superClass && !hasSuperCall) {\n\t\t\t\t\tfor (const element of classDefinition.body.body) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\telement.type === \"PropertyDefinition\" &&\n\t\t\t\t\t\t\t!element.static\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treportIfUnreachable(element);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"CallExpression > Super.callee\"() {\n\t\t\t\tif (constructorInfo) {\n\t\t\t\t\tconstructorInfo.hasSuperCall = true;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow loops with a body that allows only one iteration\n * @author Milos Djermanovic\n */\n\n\"use strict\";\n\nconst { isAnySegmentReachable } = require(\"./utils/code-path-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst allLoopTypes = [\n\t\"WhileStatement\",\n\t\"DoWhileStatement\",\n\t\"ForStatement\",\n\t\"ForInStatement\",\n\t\"ForOfStatement\",\n];\n\n/**\n * Determines whether the given node is the first node in the code path to which a loop statement\n * 'loops' for the next iteration.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} `true` if the node is a looping target.\n */\nfunction isLoopingTarget(node) {\n\tconst parent = node.parent;\n\n\tif (parent) {\n\t\tswitch (parent.type) {\n\t\t\tcase \"WhileStatement\":\n\t\t\t\treturn node === parent.test;\n\t\t\tcase \"DoWhileStatement\":\n\t\t\t\treturn node === parent.body;\n\t\t\tcase \"ForStatement\":\n\t\t\t\treturn node === (parent.update || parent.test || parent.body);\n\t\t\tcase \"ForInStatement\":\n\t\t\tcase \"ForOfStatement\":\n\t\t\t\treturn node === parent.left;\n\n\t\t\t// no default\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Creates an array with elements from the first given array that are not included in the second given array.\n * @param {Array} arrA The array to compare from.\n * @param {Array} arrB The array to compare against.\n * @returns {Array} a new array that represents `arrA \\ arrB`.\n */\nfunction getDifference(arrA, arrB) {\n\treturn arrA.filter(a => !arrB.includes(a));\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [{ ignore: [] }],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow loops with a body that allows only one iteration\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-unreachable-loop\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tignore: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\tenum: allLoopTypes,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tinvalid: \"Invalid loop. Its body allows only one iteration.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ ignore: ignoredLoopTypes }] = context.options;\n\t\tconst loopTypesToCheck = getDifference(allLoopTypes, ignoredLoopTypes),\n\t\t\tloopSelector = loopTypesToCheck.join(\",\"),\n\t\t\tloopsByTargetSegments = new Map(),\n\t\t\tloopsToReport = new Set();\n\n\t\tconst codePathSegments = [];\n\t\tlet currentCodePathSegments = new Set();\n\n\t\treturn {\n\t\t\tonCodePathStart() {\n\t\t\t\tcodePathSegments.push(currentCodePathSegments);\n\t\t\t\tcurrentCodePathSegments = new Set();\n\t\t\t},\n\n\t\t\tonCodePathEnd() {\n\t\t\t\tcurrentCodePathSegments = codePathSegments.pop();\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentStart(segment) {\n\t\t\t\tcurrentCodePathSegments.add(segment);\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentEnd(segment) {\n\t\t\t\tcurrentCodePathSegments.delete(segment);\n\t\t\t},\n\n\t\t\tonCodePathSegmentEnd(segment) {\n\t\t\t\tcurrentCodePathSegments.delete(segment);\n\t\t\t},\n\n\t\t\tonCodePathSegmentStart(segment, node) {\n\t\t\t\tcurrentCodePathSegments.add(segment);\n\n\t\t\t\tif (isLoopingTarget(node)) {\n\t\t\t\t\tconst loop = node.parent;\n\n\t\t\t\t\tloopsByTargetSegments.set(segment, loop);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tonCodePathSegmentLoop(_, toSegment, node) {\n\t\t\t\tconst loop = loopsByTargetSegments.get(toSegment);\n\n\t\t\t\t/**\n\t\t\t\t * The second iteration is reachable, meaning that the loop is valid by the logic of this rule,\n\t\t\t\t * only if there is at least one loop event with the appropriate target (which has been already\n\t\t\t\t * determined in the `loopsByTargetSegments` map), raised from either:\n\t\t\t\t *\n\t\t\t\t * - the end of the loop's body (in which case `node === loop`)\n\t\t\t\t * - a `continue` statement\n\t\t\t\t *\n\t\t\t\t * This condition skips loop events raised from `ForInStatement > .right` and `ForOfStatement > .right` nodes.\n\t\t\t\t */\n\t\t\t\tif (node === loop || node.type === \"ContinueStatement\") {\n\t\t\t\t\t// Removes loop if it exists in the set. Otherwise, `Set#delete` has no effect and doesn't throw.\n\t\t\t\t\tloopsToReport.delete(loop);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t[loopSelector](node) {\n\t\t\t\t/**\n\t\t\t\t * Ignore unreachable loop statements to avoid unnecessary complexity in the implementation, or false positives otherwise.\n\t\t\t\t * For unreachable segments, the code path analysis does not raise events required for this implementation.\n\t\t\t\t */\n\t\t\t\tif (isAnySegmentReachable(currentCodePathSegments)) {\n\t\t\t\t\tloopsToReport.add(node);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t\"Program:exit\"() {\n\t\t\t\tloopsToReport.forEach(node =>\n\t\t\t\t\tcontext.report({ node, messageId: \"invalid\" }),\n\t\t\t\t);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag unsafe statements in finally block\n * @author Onur Temizkan\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst SENTINEL_NODE_TYPE_RETURN_THROW =\n\t/^(?:Program|(?:Function|Class)(?:Declaration|Expression)|ArrowFunctionExpression)$/u;\nconst SENTINEL_NODE_TYPE_BREAK =\n\t/^(?:Program|(?:Function|Class)(?:Declaration|Expression)|ArrowFunctionExpression|DoWhileStatement|WhileStatement|ForOfStatement|ForInStatement|ForStatement|SwitchStatement)$/u;\nconst SENTINEL_NODE_TYPE_CONTINUE =\n\t/^(?:Program|(?:Function|Class)(?:Declaration|Expression)|ArrowFunctionExpression|DoWhileStatement|WhileStatement|ForOfStatement|ForInStatement|ForStatement)$/u;\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow control flow statements in `finally` blocks\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-unsafe-finally\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunsafeUsage: \"Unsafe usage of {{nodeType}}.\",\n\t\t},\n\t},\n\tcreate(context) {\n\t\t/**\n\t\t * Checks if the node is the finalizer of a TryStatement\n\t\t * @param {ASTNode} node node to check.\n\t\t * @returns {boolean} - true if the node is the finalizer of a TryStatement\n\t\t */\n\t\tfunction isFinallyBlock(node) {\n\t\t\treturn (\n\t\t\t\tnode.parent.type === \"TryStatement\" &&\n\t\t\t\tnode.parent.finalizer === node\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Climbs up the tree if the node is not a sentinel node\n\t\t * @param {ASTNode} node node to check.\n\t\t * @param {string} label label of the break or continue statement\n\t\t * @returns {boolean} - return whether the node is a finally block or a sentinel node\n\t\t */\n\t\tfunction isInFinallyBlock(node, label) {\n\t\t\tlet labelInside = false;\n\t\t\tlet sentinelNodeType;\n\n\t\t\tif (node.type === \"BreakStatement\" && !node.label) {\n\t\t\t\tsentinelNodeType = SENTINEL_NODE_TYPE_BREAK;\n\t\t\t} else if (node.type === \"ContinueStatement\") {\n\t\t\t\tsentinelNodeType = SENTINEL_NODE_TYPE_CONTINUE;\n\t\t\t} else {\n\t\t\t\tsentinelNodeType = SENTINEL_NODE_TYPE_RETURN_THROW;\n\t\t\t}\n\n\t\t\tfor (\n\t\t\t\tlet currentNode = node;\n\t\t\t\tcurrentNode && !sentinelNodeType.test(currentNode.type);\n\t\t\t\tcurrentNode = currentNode.parent\n\t\t\t) {\n\t\t\t\tif (\n\t\t\t\t\tcurrentNode.parent.label &&\n\t\t\t\t\tlabel &&\n\t\t\t\t\tcurrentNode.parent.label.name === label.name\n\t\t\t\t) {\n\t\t\t\t\tlabelInside = true;\n\t\t\t\t}\n\t\t\t\tif (isFinallyBlock(currentNode)) {\n\t\t\t\t\tif (label && labelInside) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether the possibly-unsafe statement is inside a finally block.\n\t\t * @param {ASTNode} node node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction check(node) {\n\t\t\tif (isInFinallyBlock(node, node.label)) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tmessageId: \"unsafeUsage\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tnodeType: node.type,\n\t\t\t\t\t},\n\t\t\t\t\tnode,\n\t\t\t\t\tline: node.loc.line,\n\t\t\t\t\tcolumn: node.loc.column,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tReturnStatement: check,\n\t\t\tThrowStatement: check,\n\t\t\tBreakStatement: check,\n\t\t\tContinueStatement: check,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow negating the left operand of relational operators\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether the given operator is `in` or `instanceof`\n * @param {string} op The operator type to check.\n * @returns {boolean} `true` if the operator is `in` or `instanceof`\n */\nfunction isInOrInstanceOfOperator(op) {\n\treturn op === \"in\" || op === \"instanceof\";\n}\n\n/**\n * Checks whether the given operator is an ordering relational operator or not.\n * @param {string} op The operator type to check.\n * @returns {boolean} `true` if the operator is an ordering relational operator.\n */\nfunction isOrderingRelationalOperator(op) {\n\treturn op === \"<\" || op === \">\" || op === \">=\" || op === \"<=\";\n}\n\n/**\n * Checks whether the given node is a logical negation expression or not.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} `true` if the node is a logical negation expression.\n */\nfunction isNegation(node) {\n\treturn node.type === \"UnaryExpression\" && node.operator === \"!\";\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tenforceForOrderingRelations: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow negating the left operand of relational operators\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-unsafe-negation\",\n\t\t},\n\n\t\thasSuggestions: true,\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tenforceForOrderingRelations: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tfixable: null,\n\n\t\tmessages: {\n\t\t\tunexpected:\n\t\t\t\t\"Unexpected negating the left operand of '{{operator}}' operator.\",\n\t\t\tsuggestNegatedExpression:\n\t\t\t\t\"Negate '{{operator}}' expression instead of its left operand. This changes the current behavior.\",\n\t\t\tsuggestParenthesisedNegation:\n\t\t\t\t\"Wrap negation in '()' to make the intention explicit. This preserves the current behavior.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst [{ enforceForOrderingRelations }] = context.options;\n\n\t\treturn {\n\t\t\tBinaryExpression(node) {\n\t\t\t\tconst operator = node.operator;\n\t\t\t\tconst orderingRelationRuleApplies =\n\t\t\t\t\tenforceForOrderingRelations &&\n\t\t\t\t\tisOrderingRelationalOperator(operator);\n\n\t\t\t\tif (\n\t\t\t\t\t(isInOrInstanceOfOperator(operator) ||\n\t\t\t\t\t\torderingRelationRuleApplies) &&\n\t\t\t\t\tisNegation(node.left) &&\n\t\t\t\t\t!astUtils.isParenthesised(sourceCode, node.left)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: node.left.loc,\n\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\tdata: { operator },\n\t\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmessageId: \"suggestNegatedExpression\",\n\t\t\t\t\t\t\t\tdata: { operator },\n\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\tconst negationToken =\n\t\t\t\t\t\t\t\t\t\tsourceCode.getFirstToken(node.left);\n\t\t\t\t\t\t\t\t\tconst fixRange = [\n\t\t\t\t\t\t\t\t\t\tnegationToken.range[1],\n\t\t\t\t\t\t\t\t\t\tnode.range[1],\n\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\tconst text = sourceCode.text.slice(\n\t\t\t\t\t\t\t\t\t\tfixRange[0],\n\t\t\t\t\t\t\t\t\t\tfixRange[1],\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\t\tfixRange,\n\t\t\t\t\t\t\t\t\t\t`(${text})`,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmessageId: \"suggestParenthesisedNegation\",\n\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\t\tnode.left,\n\t\t\t\t\t\t\t\t\t\t`(${sourceCode.getText(node.left)})`,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow unsafe optional chaining\n * @author Yeon JuAn\n */\n\n\"use strict\";\n\nconst UNSAFE_ARITHMETIC_OPERATORS = new Set([\"+\", \"-\", \"/\", \"*\", \"%\", \"**\"]);\nconst UNSAFE_ASSIGNMENT_OPERATORS = new Set([\n\t\"+=\",\n\t\"-=\",\n\t\"/=\",\n\t\"*=\",\n\t\"%=\",\n\t\"**=\",\n]);\nconst UNSAFE_RELATIONAL_OPERATORS = new Set([\"in\", \"instanceof\"]);\n\n/**\n * Checks whether a node is a destructuring pattern or not\n * @param {ASTNode} node node to check\n * @returns {boolean} `true` if a node is a destructuring pattern, otherwise `false`\n */\nfunction isDestructuringPattern(node) {\n\treturn node.type === \"ObjectPattern\" || node.type === \"ArrayPattern\";\n}\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tdisallowArithmeticOperators: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow use of optional chaining in contexts where the `undefined` value is not allowed\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-unsafe-optional-chaining\",\n\t\t},\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tdisallowArithmeticOperators: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tfixable: null,\n\t\tmessages: {\n\t\t\tunsafeOptionalChain:\n\t\t\t\t\"Unsafe usage of optional chaining. If it short-circuits with 'undefined' the evaluation will throw TypeError.\",\n\t\t\tunsafeArithmetic:\n\t\t\t\t\"Unsafe arithmetic operation on optional chaining. It can result in NaN.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ disallowArithmeticOperators }] = context.options;\n\n\t\t/**\n\t\t * Reports unsafe usage of optional chaining\n\t\t * @param {ASTNode} node node to report\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportUnsafeUsage(node) {\n\t\t\tcontext.report({\n\t\t\t\tmessageId: \"unsafeOptionalChain\",\n\t\t\t\tnode,\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports unsafe arithmetic operation on optional chaining\n\t\t * @param {ASTNode} node node to report\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportUnsafeArithmetic(node) {\n\t\t\tcontext.report({\n\t\t\t\tmessageId: \"unsafeArithmetic\",\n\t\t\t\tnode,\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Checks and reports if a node can short-circuit with `undefined` by optional chaining.\n\t\t * @param {ASTNode} [node] node to check\n\t\t * @param {Function} reportFunc report function\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkUndefinedShortCircuit(node, reportFunc) {\n\t\t\tif (!node) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tswitch (node.type) {\n\t\t\t\tcase \"LogicalExpression\":\n\t\t\t\t\tif (node.operator === \"||\" || node.operator === \"??\") {\n\t\t\t\t\t\tcheckUndefinedShortCircuit(node.right, reportFunc);\n\t\t\t\t\t} else if (node.operator === \"&&\") {\n\t\t\t\t\t\tcheckUndefinedShortCircuit(node.left, reportFunc);\n\t\t\t\t\t\tcheckUndefinedShortCircuit(node.right, reportFunc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"SequenceExpression\":\n\t\t\t\t\tcheckUndefinedShortCircuit(\n\t\t\t\t\t\tnode.expressions.at(-1),\n\t\t\t\t\t\treportFunc,\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ConditionalExpression\":\n\t\t\t\t\tcheckUndefinedShortCircuit(node.consequent, reportFunc);\n\t\t\t\t\tcheckUndefinedShortCircuit(node.alternate, reportFunc);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"AwaitExpression\":\n\t\t\t\t\tcheckUndefinedShortCircuit(node.argument, reportFunc);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ChainExpression\":\n\t\t\t\t\treportFunc(node);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks unsafe usage of optional chaining\n\t\t * @param {ASTNode} node node to check\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkUnsafeUsage(node) {\n\t\t\tcheckUndefinedShortCircuit(node, reportUnsafeUsage);\n\t\t}\n\n\t\t/**\n\t\t * Checks unsafe arithmetic operations on optional chaining\n\t\t * @param {ASTNode} node node to check\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkUnsafeArithmetic(node) {\n\t\t\tcheckUndefinedShortCircuit(node, reportUnsafeArithmetic);\n\t\t}\n\n\t\treturn {\n\t\t\t\"AssignmentExpression, AssignmentPattern\"(node) {\n\t\t\t\tif (isDestructuringPattern(node.left)) {\n\t\t\t\t\tcheckUnsafeUsage(node.right);\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"ClassDeclaration, ClassExpression\"(node) {\n\t\t\t\tcheckUnsafeUsage(node.superClass);\n\t\t\t},\n\t\t\tCallExpression(node) {\n\t\t\t\tif (!node.optional) {\n\t\t\t\t\tcheckUnsafeUsage(node.callee);\n\t\t\t\t}\n\t\t\t},\n\t\t\tNewExpression(node) {\n\t\t\t\tcheckUnsafeUsage(node.callee);\n\t\t\t},\n\t\t\tVariableDeclarator(node) {\n\t\t\t\tif (isDestructuringPattern(node.id)) {\n\t\t\t\t\tcheckUnsafeUsage(node.init);\n\t\t\t\t}\n\t\t\t},\n\t\t\tMemberExpression(node) {\n\t\t\t\tif (!node.optional) {\n\t\t\t\t\tcheckUnsafeUsage(node.object);\n\t\t\t\t}\n\t\t\t},\n\t\t\tTaggedTemplateExpression(node) {\n\t\t\t\tcheckUnsafeUsage(node.tag);\n\t\t\t},\n\t\t\tForOfStatement(node) {\n\t\t\t\tcheckUnsafeUsage(node.right);\n\t\t\t},\n\t\t\tSpreadElement(node) {\n\t\t\t\tif (node.parent && node.parent.type !== \"ObjectExpression\") {\n\t\t\t\t\tcheckUnsafeUsage(node.argument);\n\t\t\t\t}\n\t\t\t},\n\t\t\tBinaryExpression(node) {\n\t\t\t\tif (UNSAFE_RELATIONAL_OPERATORS.has(node.operator)) {\n\t\t\t\t\tcheckUnsafeUsage(node.right);\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tdisallowArithmeticOperators &&\n\t\t\t\t\tUNSAFE_ARITHMETIC_OPERATORS.has(node.operator)\n\t\t\t\t) {\n\t\t\t\t\tcheckUnsafeArithmetic(node.right);\n\t\t\t\t\tcheckUnsafeArithmetic(node.left);\n\t\t\t\t}\n\t\t\t},\n\t\t\tWithStatement(node) {\n\t\t\t\tcheckUnsafeUsage(node.object);\n\t\t\t},\n\t\t\tUnaryExpression(node) {\n\t\t\t\tif (\n\t\t\t\t\tdisallowArithmeticOperators &&\n\t\t\t\t\tUNSAFE_ARITHMETIC_OPERATORS.has(node.operator)\n\t\t\t\t) {\n\t\t\t\t\tcheckUnsafeArithmetic(node.argument);\n\t\t\t\t}\n\t\t\t},\n\t\t\tAssignmentExpression(node) {\n\t\t\t\tif (\n\t\t\t\t\tdisallowArithmeticOperators &&\n\t\t\t\t\tUNSAFE_ASSIGNMENT_OPERATORS.has(node.operator)\n\t\t\t\t) {\n\t\t\t\t\tcheckUnsafeArithmetic(node.right);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Flag expressions in statement position that do not side effect\n * @author Michael Ficarra\n */\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/**\n * Returns `true`.\n * @returns {boolean} `true`.\n */\nfunction alwaysTrue() {\n\treturn true;\n}\n\n/**\n * Returns `false`.\n * @returns {boolean} `false`.\n */\nfunction alwaysFalse() {\n\treturn false;\n}\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow unused expressions\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-unused-expressions\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowShortCircuit: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowTernary: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowTaggedTemplates: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tenforceForJSX: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tignoreDirectives: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowShortCircuit: false,\n\t\t\t\tallowTernary: false,\n\t\t\t\tallowTaggedTemplates: false,\n\t\t\t\tenforceForJSX: false,\n\t\t\t\tignoreDirectives: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunusedExpression:\n\t\t\t\t\"Expected an assignment or function call and instead saw an expression.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [\n\t\t\t{\n\t\t\t\tallowShortCircuit,\n\t\t\t\tallowTernary,\n\t\t\t\tallowTaggedTemplates,\n\t\t\t\tenforceForJSX,\n\t\t\t\tignoreDirectives,\n\t\t\t},\n\t\t] = context.options;\n\n\t\t/**\n\t\t * Has AST suggesting a directive.\n\t\t * @param {ASTNode} node any node\n\t\t * @returns {boolean} whether the given node structurally represents a directive\n\t\t */\n\t\tfunction looksLikeDirective(node) {\n\t\t\treturn (\n\t\t\t\tnode.type === \"ExpressionStatement\" &&\n\t\t\t\tnode.expression.type === \"Literal\" &&\n\t\t\t\ttypeof node.expression.value === \"string\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Gets the leading sequence of members in a list that pass the predicate.\n\t\t * @param {Function} predicate ([a] -> Boolean) the function used to make the determination\n\t\t * @param {a[]} list the input list\n\t\t * @returns {a[]} the leading sequence of members in the given list that pass the given predicate\n\t\t */\n\t\tfunction takeWhile(predicate, list) {\n\t\t\tfor (let i = 0; i < list.length; ++i) {\n\t\t\t\tif (!predicate(list[i])) {\n\t\t\t\t\treturn list.slice(0, i);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn list.slice();\n\t\t}\n\n\t\t/**\n\t\t * Gets leading directives nodes in a Node body.\n\t\t * @param {ASTNode} node a Program or BlockStatement node\n\t\t * @returns {ASTNode[]} the leading sequence of directive nodes in the given node's body\n\t\t */\n\t\tfunction directives(node) {\n\t\t\treturn takeWhile(looksLikeDirective, node.body);\n\t\t}\n\n\t\t/**\n\t\t * Detect if a Node is a directive.\n\t\t * @param {ASTNode} node any node\n\t\t * @returns {boolean} whether the given node is considered a directive in its current position\n\t\t */\n\t\tfunction isDirective(node) {\n\t\t\t/**\n\t\t\t * https://tc39.es/ecma262/#directive-prologue\n\t\t\t *\n\t\t\t * Only `FunctionBody`, `ScriptBody` and `ModuleBody` can have directive prologue.\n\t\t\t * Class static blocks do not have directive prologue.\n\t\t\t */\n\t\t\treturn (\n\t\t\t\tastUtils.isTopLevelExpressionStatement(node) &&\n\t\t\t\tdirectives(node.parent).includes(node)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * The member functions return `true` if the type has no side-effects.\n\t\t * Unknown nodes are handled as `false`, then this rule ignores those.\n\t\t */\n\t\tconst Checker = Object.assign(Object.create(null), {\n\t\t\tisDisallowed(node) {\n\t\t\t\treturn (Checker[node.type] || alwaysFalse)(node);\n\t\t\t},\n\n\t\t\tArrayExpression: alwaysTrue,\n\t\t\tArrowFunctionExpression: alwaysTrue,\n\t\t\tBinaryExpression: alwaysTrue,\n\t\t\tChainExpression(node) {\n\t\t\t\treturn Checker.isDisallowed(node.expression);\n\t\t\t},\n\t\t\tClassExpression: alwaysTrue,\n\t\t\tConditionalExpression(node) {\n\t\t\t\tif (allowTernary) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tChecker.isDisallowed(node.consequent) ||\n\t\t\t\t\t\tChecker.isDisallowed(node.alternate)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tFunctionExpression: alwaysTrue,\n\t\t\tIdentifier: alwaysTrue,\n\t\t\tJSXElement() {\n\t\t\t\treturn enforceForJSX;\n\t\t\t},\n\t\t\tJSXFragment() {\n\t\t\t\treturn enforceForJSX;\n\t\t\t},\n\t\t\tLiteral: alwaysTrue,\n\t\t\tLogicalExpression(node) {\n\t\t\t\tif (allowShortCircuit) {\n\t\t\t\t\treturn Checker.isDisallowed(node.right);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tMemberExpression: alwaysTrue,\n\t\t\tMetaProperty: alwaysTrue,\n\t\t\tObjectExpression: alwaysTrue,\n\t\t\tSequenceExpression: alwaysTrue,\n\t\t\tTaggedTemplateExpression() {\n\t\t\t\treturn !allowTaggedTemplates;\n\t\t\t},\n\t\t\tTemplateLiteral: alwaysTrue,\n\t\t\tThisExpression: alwaysTrue,\n\t\t\tUnaryExpression(node) {\n\t\t\t\treturn node.operator !== \"void\" && node.operator !== \"delete\";\n\t\t\t},\n\t\t\t// TypeScript-specific node types\n\t\t\tTSAsExpression(node) {\n\t\t\t\treturn Checker.isDisallowed(node.expression);\n\t\t\t},\n\t\t\tTSTypeAssertion(node) {\n\t\t\t\treturn Checker.isDisallowed(node.expression);\n\t\t\t},\n\t\t\tTSNonNullExpression(node) {\n\t\t\t\treturn Checker.isDisallowed(node.expression);\n\t\t\t},\n\t\t\tTSInstantiationExpression(node) {\n\t\t\t\treturn Checker.isDisallowed(node.expression);\n\t\t\t},\n\t\t});\n\n\t\treturn {\n\t\t\tExpressionStatement(node) {\n\t\t\t\tif (\n\t\t\t\t\tChecker.isDisallowed(node.expression) &&\n\t\t\t\t\t!astUtils.isDirective(node) &&\n\t\t\t\t\t!(ignoreDirectives && isDirective(node))\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({ node, messageId: \"unusedExpression\" });\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow unused labels.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow unused labels\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-unused-labels\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tunused: \"'{{name}}:' is defined but never used.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tlet scopeInfo = null;\n\n\t\t/**\n\t\t * Adds a scope info to the stack.\n\t\t * @param {ASTNode} node A node to add. This is a LabeledStatement.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction enterLabeledScope(node) {\n\t\t\tscopeInfo = {\n\t\t\t\tlabel: node.label.name,\n\t\t\t\tused: false,\n\t\t\t\tupper: scopeInfo,\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Checks if a `LabeledStatement` node is fixable.\n\t\t * For a node to be fixable, there must be no comments between the label and the body.\n\t\t * Furthermore, is must be possible to remove the label without turning the body statement into a\n\t\t * directive after other fixes are applied.\n\t\t * @param {ASTNode} node The node to evaluate.\n\t\t * @returns {boolean} Whether or not the node is fixable.\n\t\t */\n\t\tfunction isFixable(node) {\n\t\t\t/*\n\t\t\t * Only perform a fix if there are no comments between the label and the body. This will be the case\n\t\t\t * when there is exactly one token/comment (the \":\") between the label and the body.\n\t\t\t */\n\t\t\tif (\n\t\t\t\tsourceCode.getTokenAfter(node.label, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t}) !==\n\t\t\t\tsourceCode.getTokenBefore(node.body, { includeComments: true })\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Looking for the node's deepest ancestor which is not a `LabeledStatement`.\n\t\t\tlet ancestor = node.parent;\n\n\t\t\twhile (ancestor.type === \"LabeledStatement\") {\n\t\t\t\tancestor = ancestor.parent;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tancestor.type === \"Program\" ||\n\t\t\t\t(ancestor.type === \"BlockStatement\" &&\n\t\t\t\t\tastUtils.isFunction(ancestor.parent))\n\t\t\t) {\n\t\t\t\tconst { body } = node;\n\n\t\t\t\tif (\n\t\t\t\t\tbody.type === \"ExpressionStatement\" &&\n\t\t\t\t\t((body.expression.type === \"Literal\" &&\n\t\t\t\t\t\ttypeof body.expression.value === \"string\") ||\n\t\t\t\t\t\tastUtils.isStaticTemplateLiteral(body.expression))\n\t\t\t\t) {\n\t\t\t\t\treturn false; // potential directive\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * Removes the top of the stack.\n\t\t * At the same time, this reports the label if it's never used.\n\t\t * @param {ASTNode} node A node to report. This is a LabeledStatement.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction exitLabeledScope(node) {\n\t\t\tif (!scopeInfo.used) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: node.label,\n\t\t\t\t\tmessageId: \"unused\",\n\t\t\t\t\tdata: node.label,\n\t\t\t\t\tfix: isFixable(node)\n\t\t\t\t\t\t? fixer =>\n\t\t\t\t\t\t\t\tfixer.removeRange([\n\t\t\t\t\t\t\t\t\tnode.range[0],\n\t\t\t\t\t\t\t\t\tnode.body.range[0],\n\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t: null,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tscopeInfo = scopeInfo.upper;\n\t\t}\n\n\t\t/**\n\t\t * Marks the label of a given node as used.\n\t\t * @param {ASTNode} node A node to mark. This is a BreakStatement or\n\t\t *      ContinueStatement.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction markAsUsed(node) {\n\t\t\tif (!node.label) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst label = node.label.name;\n\t\t\tlet info = scopeInfo;\n\n\t\t\twhile (info) {\n\t\t\t\tif (info.label === label) {\n\t\t\t\t\tinfo.used = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tinfo = info.upper;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tLabeledStatement: enterLabeledScope,\n\t\t\t\"LabeledStatement:exit\": exitLabeledScope,\n\t\t\tBreakStatement: markAsUsed,\n\t\t\tContinueStatement: markAsUsed,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag declared but unused private class members\n * @author Tim van der Lippe\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\t\thasSuggestions: true,\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow unused private class members\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-unused-private-class-members\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunusedPrivateClassMember:\n\t\t\t\t\"'{{classMemberName}}' is defined but never used.\",\n\t\t\tremoveUnusedPrivateClassMember:\n\t\t\t\t\"Remove unused private class member '{{classMemberName}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst trackedClasses = [];\n\n\t\t/**\n\t\t * Gets the start index of the line that contains a given token or node.\n\t\t * @param {ASTNode|Token|Comment} nodeOrToken The token or node to check\n\t\t * @returns {number} The line start index\n\t\t */\n\t\tfunction getLineStartIndex(nodeOrToken) {\n\t\t\treturn nodeOrToken.range[0] - nodeOrToken.loc.start.column;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a token or node starts on its own line, preceded only by whitespace.\n\t\t * @param {ASTNode|Token|Comment} nodeOrToken The token or node to check\n\t\t * @returns {boolean} Whether the token or node starts on its own line\n\t\t */\n\t\tfunction startsOnOwnLine(nodeOrToken) {\n\t\t\treturn (\n\t\t\t\tsourceCode.getTokenBefore(nodeOrToken, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t}).loc.end.line !== nodeOrToken.loc.start.line\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Gets leading comments that are directly attached to a class member.\n\t\t * @param {ASTNode} classMemberNode The class member node\n\t\t * @returns {Comment[]} Leading comments to remove with the member\n\t\t */\n\t\tfunction getLeadingComments(classMemberNode) {\n\t\t\tconst commentsBefore =\n\t\t\t\tsourceCode.getCommentsBefore(classMemberNode);\n\t\t\tconst lastNonLeadingCommentIndex = commentsBefore.findLastIndex(\n\t\t\t\t(comment, index, self) => {\n\t\t\t\t\tconst next =\n\t\t\t\t\t\tindex < self.length - 1\n\t\t\t\t\t\t\t? self[index + 1]\n\t\t\t\t\t\t\t: classMemberNode;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!startsOnOwnLine(comment) ||\n\t\t\t\t\t\tnext.loc.start.line - comment.loc.end.line > 1\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn commentsBefore.slice(lastNonLeadingCommentIndex + 1);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a class member shares its line with another token.\n\t\t * @param {ASTNode} classMemberNode The class member node\n\t\t * @returns {boolean} Whether the member shares its line with another token\n\t\t */\n\t\tfunction sharesLineWithAnotherToken(classMemberNode) {\n\t\t\tconst previousToken = sourceCode.getTokenBefore(classMemberNode);\n\t\t\tconst nextToken = sourceCode.getTokenAfter(classMemberNode);\n\n\t\t\treturn (\n\t\t\t\tpreviousToken.loc.end.line === classMemberNode.loc.start.line ||\n\t\t\t\tnextToken.loc.start.line === classMemberNode.loc.end.line\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Gets trailing comments that are directly attached to a class member.\n\t\t * Same-line trailing comments are preserved when another token shares\n\t\t * the line, because the comment might describe the remaining code rather\n\t\t * than the unused member alone.\n\t\t * @param {ASTNode} classMemberNode The class member node\n\t\t * @returns {Comment[]} Trailing comments to remove with the member\n\t\t */\n\t\tfunction getTrailingComments(classMemberNode) {\n\t\t\tif (sharesLineWithAnotherToken(classMemberNode)) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\treturn sourceCode\n\t\t\t\t.getCommentsAfter(classMemberNode)\n\t\t\t\t.filter(\n\t\t\t\t\tcomment =>\n\t\t\t\t\t\tcomment.loc.start.line === classMemberNode.loc.end.line,\n\t\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Gets the token after which a semicolon should be inserted when removing a class member.\n\t\t * @param {ASTNode} classMemberNode The member that would be removed\n\t\t * @returns {Token|null} The token after which a semicolon should be inserted, or null if no semicolon is needed\n\t\t */\n\t\tfunction getSemicolonInsertionToken(classMemberNode) {\n\t\t\tconst nextToken = sourceCode.getTokenAfter(classMemberNode);\n\n\t\t\tif (\n\t\t\t\tastUtils.canContinueExpressionInClassBody(nextToken) &&\n\t\t\t\tastUtils.needsPrecedingSemicolon(sourceCode, classMemberNode)\n\t\t\t) {\n\t\t\t\treturn sourceCode.getTokenBefore(classMemberNode);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\t/**\n\t\t * Gets the replacement range for removing an unused class member.\n\t\t * @param {ASTNode} classMemberNode The member that would be removed\n\t\t * @returns {number[]} The text range to remove\n\t\t */\n\t\tfunction getMemberRemovalRange(classMemberNode) {\n\t\t\tconst leadingComments = getLeadingComments(classMemberNode);\n\t\t\tconst trailingComments = getTrailingComments(classMemberNode);\n\t\t\tconst shouldRemoveLeadingComments =\n\t\t\t\tleadingComments.length > 0 &&\n\t\t\t\t!sharesLineWithAnotherToken(classMemberNode);\n\t\t\tconst lastItemToRemove =\n\t\t\t\ttrailingComments.length > 0\n\t\t\t\t\t? trailingComments.at(-1)\n\t\t\t\t\t: classMemberNode;\n\n\t\t\tconst previousToken = sourceCode.getTokenBefore(classMemberNode);\n\t\t\tconst nextToken = sourceCode.getTokenAfter(lastItemToRemove, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\t\t\tconst nextTokenStartsOnNewLine =\n\t\t\t\tnextToken.loc.start.line > lastItemToRemove.loc.end.line;\n\t\t\tconst shouldRemoveOwnLine =\n\t\t\t\t!shouldRemoveLeadingComments &&\n\t\t\t\tstartsOnOwnLine(classMemberNode) &&\n\t\t\t\tnextTokenStartsOnNewLine;\n\t\t\tlet start = classMemberNode.range[0];\n\t\t\tlet end = lastItemToRemove.range[1];\n\n\t\t\tif (shouldRemoveLeadingComments) {\n\t\t\t\tstart = nextTokenStartsOnNewLine\n\t\t\t\t\t? getLineStartIndex(leadingComments[0])\n\t\t\t\t\t: leadingComments[0].range[0];\n\t\t\t\tend = nextTokenStartsOnNewLine\n\t\t\t\t\t? getLineStartIndex(nextToken)\n\t\t\t\t\t: nextToken.range[0];\n\t\t\t} else if (shouldRemoveOwnLine) {\n\t\t\t\tstart = getLineStartIndex(classMemberNode);\n\t\t\t\tend = getLineStartIndex(nextToken);\n\t\t\t} else if (\n\t\t\t\tpreviousToken.loc.end.line === classMemberNode.loc.start.line\n\t\t\t) {\n\t\t\t\tstart = previousToken.range[1];\n\t\t\t} else if (\n\t\t\t\tnextToken.loc.start.line === lastItemToRemove.loc.end.line\n\t\t\t) {\n\t\t\t\tend = nextToken.range[0];\n\t\t\t}\n\n\t\t\treturn [start, end];\n\t\t}\n\n\t\t/**\n\t\t * Check whether the current node is in a write only assignment.\n\t\t * @param {ASTNode} privateIdentifierNode Node referring to a private identifier\n\t\t * @returns {boolean} Whether the node is in a write only assignment\n\t\t * @private\n\t\t */\n\t\tfunction isWriteOnlyAssignment(privateIdentifierNode) {\n\t\t\tconst parentStatement = privateIdentifierNode.parent.parent;\n\t\t\tconst isAssignmentExpression =\n\t\t\t\tparentStatement.type === \"AssignmentExpression\";\n\n\t\t\tif (\n\t\t\t\t!isAssignmentExpression &&\n\t\t\t\tparentStatement.type !== \"ForInStatement\" &&\n\t\t\t\tparentStatement.type !== \"ForOfStatement\" &&\n\t\t\t\tparentStatement.type !== \"AssignmentPattern\"\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// It is a write-only usage, since we still allow usages on the right for reads\n\t\t\tif (parentStatement.left !== privateIdentifierNode.parent) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// For any other operator (such as '+=') we still consider it a read operation\n\t\t\tif (isAssignmentExpression && parentStatement.operator !== \"=\") {\n\t\t\t\t/*\n\t\t\t\t * However, if the read operation is \"discarded\" in an empty statement, then\n\t\t\t\t * we consider it write only.\n\t\t\t\t */\n\t\t\t\treturn parentStatement.parent.type === \"ExpressionStatement\";\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\t// Collect all declared members up front and assume they are all unused\n\t\t\tClassBody(classBodyNode) {\n\t\t\t\tconst privateMembers = new Map();\n\n\t\t\t\ttrackedClasses.unshift(privateMembers);\n\t\t\t\tfor (const bodyMember of classBodyNode.body) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tbodyMember.type === \"PropertyDefinition\" ||\n\t\t\t\t\t\tbodyMember.type === \"MethodDefinition\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (bodyMember.key.type === \"PrivateIdentifier\") {\n\t\t\t\t\t\t\tprivateMembers.set(bodyMember.key.name, {\n\t\t\t\t\t\t\t\tdeclaredNode: bodyMember,\n\t\t\t\t\t\t\t\thasReference: false,\n\t\t\t\t\t\t\t\tisAccessor:\n\t\t\t\t\t\t\t\t\tbodyMember.type === \"MethodDefinition\" &&\n\t\t\t\t\t\t\t\t\t(bodyMember.kind === \"set\" ||\n\t\t\t\t\t\t\t\t\t\tbodyMember.kind === \"get\"),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * Process all usages of the private identifier and remove a member from\n\t\t\t * `declaredAndUnusedPrivateMembers` if we deem it used.\n\t\t\t */\n\t\t\tPrivateIdentifier(privateIdentifierNode) {\n\t\t\t\tconst classBody = trackedClasses.find(classProperties =>\n\t\t\t\t\tclassProperties.has(privateIdentifierNode.name),\n\t\t\t\t);\n\n\t\t\t\t// Can't happen, as it is a parser to have a missing class body, but let's code defensively here.\n\t\t\t\tif (!classBody) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// In case any other usage was already detected, we can short circuit the logic here.\n\t\t\t\tconst memberDefinition = classBody.get(\n\t\t\t\t\tprivateIdentifierNode.name,\n\t\t\t\t);\n\n\t\t\t\tif (memberDefinition.isUsed) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// The definition of the class member itself\n\t\t\t\tif (\n\t\t\t\t\tprivateIdentifierNode.parent.type ===\n\t\t\t\t\t\t\"PropertyDefinition\" ||\n\t\t\t\t\tprivateIdentifierNode.parent.type === \"MethodDefinition\"\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tmemberDefinition.hasReference = true;\n\n\t\t\t\t/*\n\t\t\t\t * Any usage of an accessor is considered a read, as the getter/setter can have\n\t\t\t\t * side-effects in its definition.\n\t\t\t\t */\n\t\t\t\tif (memberDefinition.isAccessor) {\n\t\t\t\t\tmemberDefinition.isUsed = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Any assignments to this member, except for assignments that also read\n\t\t\t\tif (isWriteOnlyAssignment(privateIdentifierNode)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst wrappingExpressionType =\n\t\t\t\t\tprivateIdentifierNode.parent.parent.type;\n\t\t\t\tconst parentOfWrappingExpressionType =\n\t\t\t\t\tprivateIdentifierNode.parent.parent.parent.type;\n\n\t\t\t\t// A statement which only increments (`this.#x++;`)\n\t\t\t\tif (\n\t\t\t\t\twrappingExpressionType === \"UpdateExpression\" &&\n\t\t\t\t\tparentOfWrappingExpressionType === \"ExpressionStatement\"\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * ({ x: this.#usedInDestructuring } = bar);\n\t\t\t\t *\n\t\t\t\t * But should treat the following as a read:\n\t\t\t\t * ({ [this.#x]: a } = foo);\n\t\t\t\t */\n\t\t\t\tif (\n\t\t\t\t\twrappingExpressionType === \"Property\" &&\n\t\t\t\t\tparentOfWrappingExpressionType === \"ObjectPattern\" &&\n\t\t\t\t\tprivateIdentifierNode.parent.parent.value ===\n\t\t\t\t\t\tprivateIdentifierNode.parent\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// [...this.#unusedInRestPattern] = bar;\n\t\t\t\tif (wrappingExpressionType === \"RestElement\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// [this.#unusedInAssignmentPattern] = bar;\n\t\t\t\tif (wrappingExpressionType === \"ArrayPattern\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * We can't delete the memberDefinition, as we need to keep track of which member we are marking as used.\n\t\t\t\t * In the case of nested classes, we only mark the first member we encounter as used. If you were to delete\n\t\t\t\t * the member, then any subsequent usage could incorrectly mark the member of an encapsulating parent class\n\t\t\t\t * as used, which is incorrect.\n\t\t\t\t */\n\t\t\t\tmemberDefinition.isUsed = true;\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * Post-process the class members and report any remaining members.\n\t\t\t * Since private members can only be accessed in the current class context,\n\t\t\t * we can safely assume that all usages are within the current class body.\n\t\t\t */\n\t\t\t\"ClassBody:exit\"() {\n\t\t\t\tconst unusedPrivateMembers = trackedClasses.shift();\n\n\t\t\t\tfor (const [\n\t\t\t\t\tclassMemberName,\n\t\t\t\t\t{ declaredNode, hasReference, isUsed },\n\t\t\t\t] of unusedPrivateMembers.entries()) {\n\t\t\t\t\tif (isUsed) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: declaredNode,\n\t\t\t\t\t\tloc: declaredNode.key.loc,\n\t\t\t\t\t\tmessageId: \"unusedPrivateClassMember\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tclassMemberName: `#${classMemberName}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmessageId: \"removeUnusedPrivateClassMember\",\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\tclassMemberName: `#${classMemberName}`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t*fix(fixer) {\n\t\t\t\t\t\t\t\t\tif (hasReference) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst removalRange =\n\t\t\t\t\t\t\t\t\t\tgetMemberRemovalRange(declaredNode);\n\t\t\t\t\t\t\t\t\tconst semicolonInsertionToken =\n\t\t\t\t\t\t\t\t\t\tgetSemicolonInsertionToken(\n\t\t\t\t\t\t\t\t\t\t\tdeclaredNode,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tconst removalFix = fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\t\tremovalRange,\n\t\t\t\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\tyield removalFix;\n\n\t\t\t\t\t\t\t\t\tif (semicolonInsertionToken) {\n\t\t\t\t\t\t\t\t\t\tyield fixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\t\t\tsemicolonInsertionToken,\n\t\t\t\t\t\t\t\t\t\t\t\";\",\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag declared but unused variables\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Variable} Variable */\n/** @typedef {import(\"eslint-scope\").Reference} Reference */\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n/**\n * A simple name for the types of variables that this rule supports\n * @typedef {'array-destructure'|'catch-clause'|'parameter'|'variable'} VariableType\n */\n\n/**\n * Bag of data used for formatting the `unusedVar` lint message.\n * @typedef {Object} UnusedVarMessageData\n * @property {string} varName The name of the unused var.\n * @property {'defined'|'assigned a value'} action Description of the vars state.\n * @property {string} additional Any additional info to be appended at the end.\n */\n\n/**\n * Bag of data used for formatting the `usedIgnoredVar` lint message.\n * @typedef {Object} UsedIgnoredVarMessageData\n * @property {string} varName The name of the unused var.\n * @property {string} additional Any additional info to be appended at the end.\n */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst DEFAULT_OPTIONS = {\n\tvars: \"all\",\n\targs: \"after-used\",\n\tignoreRestSiblings: false,\n\tcaughtErrors: \"all\",\n\tignoreClassWithStaticInitBlock: false,\n\tignoreUsingDeclarations: false,\n\treportUsedIgnorePattern: false,\n};\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow unused variables\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-unused-vars\",\n\t\t},\n\n\t\thasSuggestions: true,\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: [\"all\", \"local\"],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tvars: {\n\t\t\t\t\t\t\t\tenum: [\"all\", \"local\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tvarsIgnorePattern: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\targs: {\n\t\t\t\t\t\t\t\tenum: [\"all\", \"after-used\", \"none\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tignoreRestSiblings: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\targsIgnorePattern: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcaughtErrors: {\n\t\t\t\t\t\t\t\tenum: [\"all\", \"none\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcaughtErrorsIgnorePattern: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdestructuredArrayIgnorePattern: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tignoreClassWithStaticInitBlock: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tignoreUsingDeclarations: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\treportUsedIgnorePattern: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [DEFAULT_OPTIONS],\n\n\t\tmessages: {\n\t\t\tunusedVar:\n\t\t\t\t\"'{{varName}}' is {{action}} but never used{{additional}}.\",\n\t\t\tusedIgnoredVar:\n\t\t\t\t\"'{{varName}}' is marked as ignored but is used{{additional}}.\",\n\t\t\tremoveVar: \"Remove unused variable '{{varName}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tconst REST_PROPERTY_TYPE =\n\t\t\t/^(?:RestElement|(?:Experimental)?RestProperty)$/u;\n\n\t\tlet config;\n\n\t\tconst firstOption = context.options[0];\n\n\t\tif (typeof firstOption === \"string\") {\n\t\t\tconfig = {\n\t\t\t\t...DEFAULT_OPTIONS,\n\t\t\t\tvars: firstOption,\n\t\t\t};\n\t\t} else {\n\t\t\tconfig = {\n\t\t\t\t...firstOption,\n\t\t\t};\n\n\t\t\tif (firstOption.varsIgnorePattern) {\n\t\t\t\tconfig.varsIgnorePattern = new RegExp(\n\t\t\t\t\tfirstOption.varsIgnorePattern,\n\t\t\t\t\t\"u\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (firstOption.argsIgnorePattern) {\n\t\t\t\tconfig.argsIgnorePattern = new RegExp(\n\t\t\t\t\tfirstOption.argsIgnorePattern,\n\t\t\t\t\t\"u\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (firstOption.caughtErrorsIgnorePattern) {\n\t\t\t\tconfig.caughtErrorsIgnorePattern = new RegExp(\n\t\t\t\t\tfirstOption.caughtErrorsIgnorePattern,\n\t\t\t\t\t\"u\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (firstOption.destructuredArrayIgnorePattern) {\n\t\t\t\tconfig.destructuredArrayIgnorePattern = new RegExp(\n\t\t\t\t\tfirstOption.destructuredArrayIgnorePattern,\n\t\t\t\t\t\"u\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Determines what variable type a def is.\n\t\t * @param  {Object} def the declaration to check\n\t\t * @returns {VariableType} a simple name for the types of variables that this rule supports\n\t\t */\n\t\tfunction defToVariableType(def) {\n\t\t\t/*\n\t\t\t * This `destructuredArrayIgnorePattern` error report works differently from the catch\n\t\t\t * clause and parameter error reports. _Both_ the `varsIgnorePattern` and the\n\t\t\t * `destructuredArrayIgnorePattern` will be checked for array destructuring. However,\n\t\t\t * for the purposes of the report, the currently defined behavior is to only inform the\n\t\t\t * user of the `destructuredArrayIgnorePattern` if it's present (regardless of the fact\n\t\t\t * that the `varsIgnorePattern` would also apply). If it's not present, the user will be\n\t\t\t * informed of the `varsIgnorePattern`, assuming that's present.\n\t\t\t */\n\t\t\tif (\n\t\t\t\tconfig.destructuredArrayIgnorePattern &&\n\t\t\t\tdef.name.parent.type === \"ArrayPattern\"\n\t\t\t) {\n\t\t\t\treturn \"array-destructure\";\n\t\t\t}\n\n\t\t\tswitch (def.type) {\n\t\t\t\tcase \"CatchClause\":\n\t\t\t\t\treturn \"catch-clause\";\n\t\t\t\tcase \"Parameter\":\n\t\t\t\t\treturn \"parameter\";\n\n\t\t\t\tdefault:\n\t\t\t\t\treturn \"variable\";\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Gets a given variable's description and configured ignore pattern\n\t\t * based on the provided variableType\n\t\t * @param {VariableType} variableType a simple name for the types of variables that this rule supports\n\t\t * @throws {Error} (Unreachable)\n\t\t * @returns {[string | undefined, string | undefined]} the given variable's description and\n\t\t * ignore pattern\n\t\t */\n\t\tfunction getVariableDescription(variableType) {\n\t\t\tlet pattern;\n\t\t\tlet variableDescription;\n\n\t\t\tswitch (variableType) {\n\t\t\t\tcase \"array-destructure\":\n\t\t\t\t\tpattern = config.destructuredArrayIgnorePattern;\n\t\t\t\t\tvariableDescription = \"elements of array destructuring\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"catch-clause\":\n\t\t\t\t\tpattern = config.caughtErrorsIgnorePattern;\n\t\t\t\t\tvariableDescription = \"caught errors\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"parameter\":\n\t\t\t\t\tpattern = config.argsIgnorePattern;\n\t\t\t\t\tvariableDescription = \"args\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"variable\":\n\t\t\t\t\tpattern = config.varsIgnorePattern;\n\t\t\t\t\tvariableDescription = \"vars\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Unexpected variable type: ${variableType}`,\n\t\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (pattern) {\n\t\t\t\tpattern = pattern.toString();\n\t\t\t}\n\n\t\t\treturn [variableDescription, pattern];\n\t\t}\n\n\t\t/**\n\t\t * Generates the message data about the variable being defined and unused,\n\t\t * including the ignore pattern if configured.\n\t\t * @param {Variable} unusedVar eslint-scope variable object.\n\t\t * @returns {UnusedVarMessageData} The message data to be used with this unused variable.\n\t\t */\n\t\tfunction getDefinedMessageData(unusedVar) {\n\t\t\tconst def = unusedVar.defs && unusedVar.defs[0];\n\t\t\tlet additionalMessageData = \"\";\n\n\t\t\tif (def) {\n\t\t\t\tconst [variableDescription, pattern] = getVariableDescription(\n\t\t\t\t\tdefToVariableType(def),\n\t\t\t\t);\n\n\t\t\t\tif (pattern && variableDescription) {\n\t\t\t\t\tadditionalMessageData = `. Allowed unused ${variableDescription} must match ${pattern}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tvarName: unusedVar.name,\n\t\t\t\taction: \"defined\",\n\t\t\t\tadditional: additionalMessageData,\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Generate the warning message about the variable being\n\t\t * assigned and unused, including the ignore pattern if configured.\n\t\t * @param {Variable} unusedVar eslint-scope variable object.\n\t\t * @returns {UnusedVarMessageData} The message data to be used with this unused variable.\n\t\t */\n\t\tfunction getAssignedMessageData(unusedVar) {\n\t\t\tconst def = unusedVar.defs && unusedVar.defs[0];\n\t\t\tlet additionalMessageData = \"\";\n\n\t\t\tif (def) {\n\t\t\t\tconst [variableDescription, pattern] = getVariableDescription(\n\t\t\t\t\tdefToVariableType(def),\n\t\t\t\t);\n\n\t\t\t\tif (pattern && variableDescription) {\n\t\t\t\t\tadditionalMessageData = `. Allowed unused ${variableDescription} must match ${pattern}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tvarName: unusedVar.name,\n\t\t\t\taction: \"assigned a value\",\n\t\t\t\tadditional: additionalMessageData,\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Generate the warning message about a variable being used even though\n\t\t * it is marked as being ignored.\n\t\t * @param {Variable} variable eslint-scope variable object\n\t\t * @param {VariableType} variableType a simple name for the types of variables that this rule supports\n\t\t * @returns {UsedIgnoredVarMessageData} The message data to be used with\n\t\t * this used ignored variable.\n\t\t */\n\t\tfunction getUsedIgnoredMessageData(variable, variableType) {\n\t\t\tconst [variableDescription, pattern] =\n\t\t\t\tgetVariableDescription(variableType);\n\n\t\t\tlet additionalMessageData = \"\";\n\n\t\t\tif (pattern && variableDescription) {\n\t\t\t\tadditionalMessageData = `. Used ${variableDescription} must not match ${pattern}`;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tvarName: variable.name,\n\t\t\t\tadditional: additionalMessageData,\n\t\t\t};\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\tconst STATEMENT_TYPE = /(?:Statement|Declaration)$/u;\n\n\t\t/**\n\t\t * Determines if a given variable is being exported from a module.\n\t\t * @param {Variable} variable eslint-scope variable object.\n\t\t * @returns {boolean} True if the variable is exported, false if not.\n\t\t * @private\n\t\t */\n\t\tfunction isExported(variable) {\n\t\t\tconst definition = variable.defs[0];\n\n\t\t\tif (definition) {\n\t\t\t\tlet node = definition.node;\n\n\t\t\t\tif (node.type === \"VariableDeclarator\") {\n\t\t\t\t\tnode = node.parent;\n\t\t\t\t} else if (definition.type === \"Parameter\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn node.parent.type.indexOf(\"Export\") === 0;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Determines if a given variable uses the explicit resource management protocol.\n\t\t * @param {Variable} variable eslint-scope variable object.\n\t\t * @returns {boolean} True if the variable is declared with \"using\" or \"await using\"\n\t\t * @private\n\t\t */\n\t\tfunction usesExplicitResourceManagement(variable) {\n\t\t\tconst [definition] = variable.defs;\n\n\t\t\treturn (\n\t\t\t\tdefinition?.type === \"Variable\" &&\n\t\t\t\t(definition.parent.kind === \"using\" ||\n\t\t\t\t\tdefinition.parent.kind === \"await using\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a node is a sibling of the rest property or not.\n\t\t * @param {ASTNode} node a node to check\n\t\t * @returns {boolean} True if the node is a sibling of the rest property, otherwise false.\n\t\t */\n\t\tfunction hasRestSibling(node) {\n\t\t\treturn (\n\t\t\t\tnode.type === \"Property\" &&\n\t\t\t\tnode.parent.type === \"ObjectPattern\" &&\n\t\t\t\tREST_PROPERTY_TYPE.test(node.parent.properties.at(-1).type)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a variable has a sibling rest property\n\t\t * @param {Variable} variable eslint-scope variable object.\n\t\t * @returns {boolean} True if the variable has a sibling rest property, false if not.\n\t\t * @private\n\t\t */\n\t\tfunction hasRestSpreadSibling(variable) {\n\t\t\tif (config.ignoreRestSiblings) {\n\t\t\t\tconst hasRestSiblingDefinition = variable.defs.some(def =>\n\t\t\t\t\thasRestSibling(def.name.parent),\n\t\t\t\t);\n\t\t\t\tconst hasRestSiblingReference = variable.references.some(ref =>\n\t\t\t\t\thasRestSibling(ref.identifier.parent),\n\t\t\t\t);\n\n\t\t\t\treturn hasRestSiblingDefinition || hasRestSiblingReference;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Determines if a reference is a read operation.\n\t\t * @param {Reference} ref An eslint-scope Reference\n\t\t * @returns {boolean} whether the given reference represents a read operation\n\t\t * @private\n\t\t */\n\t\tfunction isReadRef(ref) {\n\t\t\treturn ref.isRead();\n\t\t}\n\n\t\t/**\n\t\t * Determine if an identifier is referencing an enclosing function name.\n\t\t * @param {Reference} ref The reference to check.\n\t\t * @param {ASTNode[]} nodes The candidate function nodes.\n\t\t * @returns {boolean} True if it's a self-reference, false if not.\n\t\t * @private\n\t\t */\n\t\tfunction isSelfReference(ref, nodes) {\n\t\t\tlet scope = ref.from;\n\n\t\t\twhile (scope) {\n\t\t\t\tif (nodes.includes(scope.block)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tscope = scope.upper;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Gets a list of function definitions for a specified variable.\n\t\t * @param {Variable} variable eslint-scope variable object.\n\t\t * @returns {ASTNode[]} Function nodes.\n\t\t * @private\n\t\t */\n\t\tfunction getFunctionDefinitions(variable) {\n\t\t\tconst functionDefinitions = [];\n\n\t\t\tvariable.defs.forEach(def => {\n\t\t\t\tconst { type, node } = def;\n\n\t\t\t\t// FunctionDeclarations\n\t\t\t\tif (type === \"FunctionName\") {\n\t\t\t\t\tfunctionDefinitions.push(node);\n\t\t\t\t}\n\n\t\t\t\t// FunctionExpressions\n\t\t\t\tif (\n\t\t\t\t\ttype === \"Variable\" &&\n\t\t\t\t\tnode.init &&\n\t\t\t\t\t(node.init.type === \"FunctionExpression\" ||\n\t\t\t\t\t\tnode.init.type === \"ArrowFunctionExpression\")\n\t\t\t\t) {\n\t\t\t\t\tfunctionDefinitions.push(node.init);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn functionDefinitions;\n\t\t}\n\n\t\t/**\n\t\t * Checks the position of given nodes.\n\t\t * @param {ASTNode} inner A node which is expected as inside.\n\t\t * @param {ASTNode} outer A node which is expected as outside.\n\t\t * @returns {boolean} `true` if the `inner` node exists in the `outer` node.\n\t\t * @private\n\t\t */\n\t\tfunction isInside(inner, outer) {\n\t\t\treturn (\n\t\t\t\tinner.range[0] >= outer.range[0] &&\n\t\t\t\tinner.range[1] <= outer.range[1]\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a given node is unused expression or not.\n\t\t * @param {ASTNode} node The node itself\n\t\t * @returns {boolean} The node is an unused expression.\n\t\t * @private\n\t\t */\n\t\tfunction isUnusedExpression(node) {\n\t\t\tconst parent = node.parent;\n\n\t\t\tif (parent.type === \"ExpressionStatement\") {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (parent.type === \"SequenceExpression\") {\n\t\t\t\tconst isLastExpression = parent.expressions.at(-1) === node;\n\n\t\t\t\tif (!isLastExpression) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn isUnusedExpression(parent);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * If a given reference is left-hand side of an assignment, this gets\n\t\t * the right-hand side node of the assignment.\n\t\t *\n\t\t * In the following cases, this returns null.\n\t\t *\n\t\t * - The reference is not the LHS of an assignment expression.\n\t\t * - The reference is inside of a loop.\n\t\t * - The reference is inside of a function scope which is different from\n\t\t *   the declaration.\n\t\t * @param {Reference} ref A reference to check.\n\t\t * @param {ASTNode} prevRhsNode The previous RHS node.\n\t\t * @returns {ASTNode|null} The RHS node or null.\n\t\t * @private\n\t\t */\n\t\tfunction getRhsNode(ref, prevRhsNode) {\n\t\t\tconst id = ref.identifier;\n\t\t\tconst parent = id.parent;\n\t\t\tconst refScope = ref.from.variableScope;\n\t\t\tconst varScope = ref.resolved.scope.variableScope;\n\t\t\tconst canBeUsedLater =\n\t\t\t\trefScope !== varScope || astUtils.isInLoop(id);\n\n\t\t\t/*\n\t\t\t * Inherits the previous node if this reference is in the node.\n\t\t\t * This is for `a = a + a`-like code.\n\t\t\t */\n\t\t\tif (prevRhsNode && isInside(id, prevRhsNode)) {\n\t\t\t\treturn prevRhsNode;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tparent.type === \"AssignmentExpression\" &&\n\t\t\t\tisUnusedExpression(parent) &&\n\t\t\t\tid === parent.left &&\n\t\t\t\t!canBeUsedLater\n\t\t\t) {\n\t\t\t\treturn parent.right;\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a given function node is stored to somewhere or not.\n\t\t * If the function node is stored, the function can be used later.\n\t\t * @param {ASTNode} funcNode A function node to check.\n\t\t * @param {ASTNode} rhsNode The RHS node of the previous assignment.\n\t\t * @returns {boolean} `true` if under the following conditions:\n\t\t *      - the funcNode is assigned to a variable.\n\t\t *      - the funcNode is bound as an argument of a function call.\n\t\t *      - the function is bound to a property and the object satisfies above conditions.\n\t\t * @private\n\t\t */\n\t\tfunction isStorableFunction(funcNode, rhsNode) {\n\t\t\tlet node = funcNode;\n\t\t\tlet parent = funcNode.parent;\n\n\t\t\twhile (parent && isInside(parent, rhsNode)) {\n\t\t\t\tswitch (parent.type) {\n\t\t\t\t\tcase \"SequenceExpression\":\n\t\t\t\t\t\tif (parent.expressions.at(-1) !== node) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"CallExpression\":\n\t\t\t\t\tcase \"NewExpression\":\n\t\t\t\t\t\treturn parent.callee !== node;\n\n\t\t\t\t\tcase \"AssignmentExpression\":\n\t\t\t\t\tcase \"TaggedTemplateExpression\":\n\t\t\t\t\tcase \"YieldExpression\":\n\t\t\t\t\t\treturn true;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (STATEMENT_TYPE.test(parent.type)) {\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * If it encountered statements, this is a complex pattern.\n\t\t\t\t\t\t\t * Since analyzing complex patterns is hard, this returns `true` to avoid false positive.\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnode = parent;\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a given Identifier node exists inside of a function node which can be used later.\n\t\t *\n\t\t * \"can be used later\" means:\n\t\t * - the function is assigned to a variable.\n\t\t * - the function is bound to a property and the object can be used later.\n\t\t * - the function is bound as an argument of a function call.\n\t\t *\n\t\t * If a reference exists in a function which can be used later, the reference is read when the function is called.\n\t\t * @param {ASTNode} id An Identifier node to check.\n\t\t * @param {ASTNode} rhsNode The RHS node of the previous assignment.\n\t\t * @returns {boolean} `true` if the `id` node exists inside of a function node which can be used later.\n\t\t * @private\n\t\t */\n\t\tfunction isInsideOfStorableFunction(id, rhsNode) {\n\t\t\tconst funcNode = astUtils.getUpperFunction(id);\n\n\t\t\treturn (\n\t\t\t\tfuncNode &&\n\t\t\t\tisInside(funcNode, rhsNode) &&\n\t\t\t\tisStorableFunction(funcNode, rhsNode)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a given reference is a read to update itself or not.\n\t\t * @param {Reference} ref A reference to check.\n\t\t * @param {ASTNode} rhsNode The RHS node of the previous assignment.\n\t\t * @returns {boolean} The reference is a read to update itself.\n\t\t * @private\n\t\t */\n\t\tfunction isReadForItself(ref, rhsNode) {\n\t\t\tconst id = ref.identifier;\n\t\t\tconst parent = id.parent;\n\n\t\t\treturn (\n\t\t\t\tref.isRead() &&\n\t\t\t\t// self update. e.g. `a += 1`, `a++`\n\t\t\t\t((parent.type === \"AssignmentExpression\" &&\n\t\t\t\t\tparent.left === id &&\n\t\t\t\t\tisUnusedExpression(parent) &&\n\t\t\t\t\t!astUtils.isLogicalAssignmentOperator(parent.operator)) ||\n\t\t\t\t\t(parent.type === \"UpdateExpression\" &&\n\t\t\t\t\t\tisUnusedExpression(parent)) ||\n\t\t\t\t\t// in RHS of an assignment for itself. e.g. `a = a + 1`\n\t\t\t\t\t(rhsNode &&\n\t\t\t\t\t\tisInside(id, rhsNode) &&\n\t\t\t\t\t\t!isInsideOfStorableFunction(id, rhsNode)))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determine if an identifier is used either in for-in or for-of loops.\n\t\t * @param {Reference} ref The reference to check.\n\t\t * @returns {boolean} whether reference is used in the for-in loops\n\t\t * @private\n\t\t */\n\t\tfunction isForInOfRef(ref) {\n\t\t\tlet target = ref.identifier.parent;\n\n\t\t\t// \"for (var ...) { return; }\"\n\t\t\tif (target.type === \"VariableDeclarator\") {\n\t\t\t\ttarget = target.parent.parent;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttarget.type !== \"ForInStatement\" &&\n\t\t\t\ttarget.type !== \"ForOfStatement\"\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// \"for (...) { return; }\"\n\t\t\tif (target.body.type === \"BlockStatement\") {\n\t\t\t\ttarget = target.body.body[0];\n\n\t\t\t\t// \"for (...) return;\"\n\t\t\t} else {\n\t\t\t\ttarget = target.body;\n\t\t\t}\n\n\t\t\t// For empty loop body\n\t\t\tif (!target) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn target.type === \"ReturnStatement\";\n\t\t}\n\n\t\t/**\n\t\t * Determines if the variable is used.\n\t\t * @param {Variable} variable The variable to check.\n\t\t * @returns {boolean} True if the variable is used\n\t\t * @private\n\t\t */\n\t\tfunction isUsedVariable(variable) {\n\t\t\tif (variable.eslintUsed) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst functionNodes = getFunctionDefinitions(variable);\n\t\t\tconst isFunctionDefinition = functionNodes.length > 0;\n\n\t\t\tlet rhsNode = null;\n\n\t\t\treturn variable.references.some(ref => {\n\t\t\t\tif (isForInOfRef(ref)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tconst forItself = isReadForItself(ref, rhsNode);\n\n\t\t\t\trhsNode = getRhsNode(ref, rhsNode);\n\n\t\t\t\treturn (\n\t\t\t\t\tisReadRef(ref) &&\n\t\t\t\t\t!forItself &&\n\t\t\t\t\t!(\n\t\t\t\t\t\tisFunctionDefinition &&\n\t\t\t\t\t\tisSelfReference(ref, functionNodes)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Checks whether the given variable is after the last used parameter.\n\t\t * @param {Variable} variable The variable to check.\n\t\t * @returns {boolean} `true` if the variable is defined after the last\n\t\t * used parameter.\n\t\t */\n\t\tfunction isAfterLastUsedArg(variable) {\n\t\t\tconst def = variable.defs[0];\n\t\t\tconst params = sourceCode.getDeclaredVariables(def.node);\n\t\t\tconst posteriorParams = params.slice(params.indexOf(variable) + 1);\n\n\t\t\t// If any used parameters occur after this parameter, do not report.\n\t\t\treturn !posteriorParams.some(\n\t\t\t\tv => v.references.length > 0 || v.eslintUsed,\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Gets an array of variables without read references.\n\t\t * @param {Scope} scope an eslint-scope Scope object.\n\t\t * @param {Variable[]} unusedVars an array that saving result.\n\t\t * @returns {Variable[]} unused variables of the scope and descendant scopes.\n\t\t * @private\n\t\t */\n\t\tfunction collectUnusedVariables(scope, unusedVars) {\n\t\t\tconst variables = scope.variables;\n\t\t\tconst childScopes = scope.childScopes;\n\t\t\tlet i, l;\n\n\t\t\tif (scope.type !== \"global\" || config.vars === \"all\") {\n\t\t\t\tfor (i = 0, l = variables.length; i < l; ++i) {\n\t\t\t\t\tconst variable = variables[i];\n\n\t\t\t\t\t// skip a variable of class itself name in the class scope\n\t\t\t\t\tif (\n\t\t\t\t\t\tscope.type === \"class\" &&\n\t\t\t\t\t\tscope.block.id === variable.identifiers[0]\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// skip function expression names\n\t\t\t\t\tif (scope.functionExpressionScope) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// skip variables marked with markVariableAsUsed()\n\t\t\t\t\tif (\n\t\t\t\t\t\t!config.reportUsedIgnorePattern &&\n\t\t\t\t\t\tvariable.eslintUsed\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// skip implicit \"arguments\" variable\n\t\t\t\t\tif (\n\t\t\t\t\t\tscope.type === \"function\" &&\n\t\t\t\t\t\tvariable.name === \"arguments\" &&\n\t\t\t\t\t\tvariable.identifiers.length === 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// explicit global variables don't have definitions.\n\t\t\t\t\tconst def = variable.defs[0];\n\n\t\t\t\t\tif (def) {\n\t\t\t\t\t\tconst type = def.type;\n\t\t\t\t\t\tconst refUsedInArrayPatterns = variable.references.some(\n\t\t\t\t\t\t\tref =>\n\t\t\t\t\t\t\t\tref.identifier.parent.type === \"ArrayPattern\",\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// skip elements of array destructuring patterns\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t(def.name.parent.type === \"ArrayPattern\" ||\n\t\t\t\t\t\t\t\trefUsedInArrayPatterns) &&\n\t\t\t\t\t\t\tconfig.destructuredArrayIgnorePattern &&\n\t\t\t\t\t\t\tconfig.destructuredArrayIgnorePattern.test(\n\t\t\t\t\t\t\t\tdef.name.name,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tconfig.reportUsedIgnorePattern &&\n\t\t\t\t\t\t\t\tisUsedVariable(variable)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode: def.name,\n\t\t\t\t\t\t\t\t\tmessageId: \"usedIgnoredVar\",\n\t\t\t\t\t\t\t\t\tdata: getUsedIgnoredMessageData(\n\t\t\t\t\t\t\t\t\t\tvariable,\n\t\t\t\t\t\t\t\t\t\t\"array-destructure\",\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (type === \"ClassName\") {\n\t\t\t\t\t\t\tconst hasStaticBlock = def.node.body.body.some(\n\t\t\t\t\t\t\t\tnode => node.type === \"StaticBlock\",\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tconfig.ignoreClassWithStaticInitBlock &&\n\t\t\t\t\t\t\t\thasStaticBlock\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// skip catch variables\n\t\t\t\t\t\tif (type === \"CatchClause\") {\n\t\t\t\t\t\t\tif (config.caughtErrors === \"none\") {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// skip ignored parameters\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tconfig.caughtErrorsIgnorePattern &&\n\t\t\t\t\t\t\t\tconfig.caughtErrorsIgnorePattern.test(\n\t\t\t\t\t\t\t\t\tdef.name.name,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tconfig.reportUsedIgnorePattern &&\n\t\t\t\t\t\t\t\t\tisUsedVariable(variable)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\t\tnode: def.name,\n\t\t\t\t\t\t\t\t\t\tmessageId: \"usedIgnoredVar\",\n\t\t\t\t\t\t\t\t\t\tdata: getUsedIgnoredMessageData(\n\t\t\t\t\t\t\t\t\t\t\tvariable,\n\t\t\t\t\t\t\t\t\t\t\t\"catch-clause\",\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === \"Parameter\") {\n\t\t\t\t\t\t\t// skip any setter argument\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t(def.node.parent.type === \"Property\" ||\n\t\t\t\t\t\t\t\t\tdef.node.parent.type ===\n\t\t\t\t\t\t\t\t\t\t\"MethodDefinition\") &&\n\t\t\t\t\t\t\t\tdef.node.parent.kind === \"set\"\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// if \"args\" option is \"none\", skip any parameter\n\t\t\t\t\t\t\tif (config.args === \"none\") {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// skip ignored parameters\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tconfig.argsIgnorePattern &&\n\t\t\t\t\t\t\t\tconfig.argsIgnorePattern.test(def.name.name)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tconfig.reportUsedIgnorePattern &&\n\t\t\t\t\t\t\t\t\tisUsedVariable(variable)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\t\tnode: def.name,\n\t\t\t\t\t\t\t\t\t\tmessageId: \"usedIgnoredVar\",\n\t\t\t\t\t\t\t\t\t\tdata: getUsedIgnoredMessageData(\n\t\t\t\t\t\t\t\t\t\t\tvariable,\n\t\t\t\t\t\t\t\t\t\t\t\"parameter\",\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// if \"args\" option is \"after-used\", skip used variables\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tconfig.args === \"after-used\" &&\n\t\t\t\t\t\t\t\tastUtils.isFunction(def.name.parent) &&\n\t\t\t\t\t\t\t\t!isAfterLastUsedArg(variable)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// skip ignored variables\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tconfig.varsIgnorePattern &&\n\t\t\t\t\t\t\t\tconfig.varsIgnorePattern.test(def.name.name)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tconfig.reportUsedIgnorePattern &&\n\t\t\t\t\t\t\t\t\tisUsedVariable(variable)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\t\tnode: def.name,\n\t\t\t\t\t\t\t\t\t\tmessageId: \"usedIgnoredVar\",\n\t\t\t\t\t\t\t\t\t\tdata: getUsedIgnoredMessageData(\n\t\t\t\t\t\t\t\t\t\t\tvariable,\n\t\t\t\t\t\t\t\t\t\t\t\"variable\",\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!isUsedVariable(variable) &&\n\t\t\t\t\t\t!isExported(variable) &&\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\tconfig.ignoreUsingDeclarations &&\n\t\t\t\t\t\t\tusesExplicitResourceManagement(variable)\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\t!hasRestSpreadSibling(variable)\n\t\t\t\t\t) {\n\t\t\t\t\t\tunusedVars.push(variable);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i = 0, l = childScopes.length; i < l; ++i) {\n\t\t\t\tcollectUnusedVariables(childScopes[i], unusedVars);\n\t\t\t}\n\n\t\t\treturn unusedVars;\n\t\t}\n\n\t\t/**\n\t\t * fixes unused variables\n\t\t * @param {Object} fixer fixer object\n\t\t * @param {Object} unusedVar unused variable to fix\n\t\t * @returns {Object} fixer object\n\t\t */\n\t\tfunction handleFixes(fixer, unusedVar) {\n\t\t\tconst id = unusedVar.identifiers[0];\n\t\t\tconst parent = id.parent;\n\t\t\tconst parentType = parent.type;\n\t\t\tconst tokenBefore = sourceCode.getTokenBefore(id);\n\t\t\tconst tokenAfter = sourceCode.getTokenAfter(id);\n\t\t\tconst isFunction = astUtils.isFunction;\n\t\t\tconst isLoop = astUtils.isLoop;\n\t\t\tconst allWriteReferences = unusedVar.references.filter(ref =>\n\t\t\t\tref.isWrite(),\n\t\t\t);\n\n\t\t\t/**\n\t\t\t * get range from token before of a given node\n\t\t\t * @param {ASTNode} node node of identifier\n\t\t\t * @param {number} skips number of token to skip\n\t\t\t * @returns {number} start range of token before the identifier\n\t\t\t */\n\t\t\tfunction getPreviousTokenStart(node, skips) {\n\t\t\t\treturn sourceCode.getTokenBefore(node, skips).range[0];\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * get range to token after of a given node\n\t\t\t * @param {ASTNode} node node of identifier\n\t\t\t * @param {number} skips number of token to skip\n\t\t\t * @returns {number} end range of token after the identifier\n\t\t\t */\n\t\t\tfunction getNextTokenEnd(node, skips) {\n\t\t\t\treturn sourceCode.getTokenAfter(node, skips).range[1];\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * get the value of token before of a given node\n\t\t\t * @param {ASTNode} node node of identifier\n\t\t\t * @returns {string} value of token before the identifier\n\t\t\t */\n\t\t\tfunction getTokenBeforeValue(node) {\n\t\t\t\treturn sourceCode.getTokenBefore(node).value;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * get the value of token after of a given node\n\t\t\t * @param {ASTNode} node node of identifier\n\t\t\t * @returns {string} value of token after the identifier\n\t\t\t */\n\t\t\tfunction getTokenAfterValue(node) {\n\t\t\t\treturn sourceCode.getTokenAfter(node).value;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Check if an array has a single element with null as other element.\n\t\t\t * @param {ASTNode} node ArrayPattern node\n\t\t\t * @returns {boolean} true if array has single element with other null elements\n\t\t\t */\n\t\t\tfunction hasSingleElement(node) {\n\t\t\t\treturn node.elements.filter(e => e !== null).length === 1;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * check whether import specifier has an import of particular type\n\t\t\t * @param {ASTNode} node ImportDeclaration node\n\t\t\t * @param {string} type type of import to check\n\t\t\t * @returns {boolean} true if import specifier has import of specified type\n\t\t\t */\n\t\t\tfunction hasImportOfCertainType(node, type) {\n\t\t\t\treturn node.specifiers.some(e => e.type === type);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Check whether declaration is safe to remove or not\n\t\t\t * @param {ASTNode} nextToken next token of unused variable\n\t\t\t * @param {ASTNode} prevToken previous token of unused variable\n\t\t\t * @returns {boolean} true if declaration is not safe to remove\n\t\t\t */\n\t\t\tfunction isDeclarationNotSafeToRemove(nextToken, prevToken) {\n\t\t\t\treturn (\n\t\t\t\t\tnextToken.type === \"String\" ||\n\t\t\t\t\t(prevToken &&\n\t\t\t\t\t\t!astUtils.isSemicolonToken(prevToken) &&\n\t\t\t\t\t\t!astUtils.isOpeningBraceToken(prevToken))\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * give fixes for unused variables in function parameters\n\t\t\t * @param {ASTNode} node node to check\n\t\t\t * @returns {Object} fixer object\n\t\t\t */\n\t\t\tfunction fixFunctionParameters(node) {\n\t\t\t\tconst parentNode = node.parent;\n\n\t\t\t\tif (isFunction(parentNode)) {\n\t\t\t\t\t// remove unused function parameter if there is only a single parameter\n\t\t\t\t\tif (parentNode.params.length === 1) {\n\t\t\t\t\t\treturn fixer.removeRange(node.range);\n\t\t\t\t\t}\n\n\t\t\t\t\t// remove first unused function parameter when there are multiple parameters\n\t\t\t\t\tif (\n\t\t\t\t\t\tgetTokenBeforeValue(node) === \"(\" &&\n\t\t\t\t\t\tgetTokenAfterValue(node) === \",\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\tnode.range[0],\n\t\t\t\t\t\t\tgetNextTokenEnd(node),\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\n\t\t\t\t\t// remove unused function parameters except first one when there are multiple parameters\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tgetPreviousTokenStart(node),\n\t\t\t\t\t\tnode.range[1],\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * fix unused variable declarations and function parameters\n\t\t\t * @param {ASTNode} node parent node to identifier\n\t\t\t * @returns {Object} fixer object\n\t\t\t */\n\t\t\tfunction fixVariables(node) {\n\t\t\t\tconst parentNode = node.parent;\n\n\t\t\t\t// remove unused declared variables such as var a = b; or var a = b, c;\n\t\t\t\tif (parentNode.type === \"VariableDeclarator\") {\n\t\t\t\t\t// skip variable in for (const [ foo ] of bar);\n\t\t\t\t\tif (isLoop(parentNode.parent.parent)) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * remove unused declared variable with single declaration such as 'var a = b;'\n\t\t\t\t\t * remove complete declaration when there is an unused variable in 'const { a } = foo;', same for arrays.\n\t\t\t\t\t */\n\t\t\t\t\tif (parentNode.parent.declarations.length === 1) {\n\t\t\t\t\t\t// if next token is a string it could become a directive if node is removed -> no suggestion.\n\t\t\t\t\t\tconst nextToken = sourceCode.getTokenAfter(\n\t\t\t\t\t\t\tparentNode.parent,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// if previous token exists and is not \";\" or \"{\" not sure about ASI rules -> no suggestion.\n\t\t\t\t\t\tconst prevToken = sourceCode.getTokenBefore(\n\t\t\t\t\t\t\tparentNode.parent,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tnextToken &&\n\t\t\t\t\t\t\tisDeclarationNotSafeToRemove(nextToken, prevToken)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn fixer.removeRange(parentNode.parent.range);\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * remove unused declared variable with multiple declaration except first one such as 'var a = b, c = d;'\n\t\t\t\t\t * fix 'let bar = \"hello\", { a } = foo;' to 'let bar = \"hello\";' if 'a' is unused, same for arrays.\n\t\t\t\t\t */\n\t\t\t\t\tif (getTokenBeforeValue(parentNode) === \",\") {\n\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\tgetPreviousTokenStart(parentNode),\n\t\t\t\t\t\t\tparentNode.range[1],\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * remove first unused declared variable when there are multiple declarations\n\t\t\t\t\t * fix 'let { a } = foo, bar = \"hello\";' to 'let  bar = \"hello\";' if 'a' is unused, same for arrays.\n\t\t\t\t\t */\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tparentNode.range[0],\n\t\t\t\t\t\tgetNextTokenEnd(parentNode),\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\t// fixes [{a: {k}}], [{a: [k]}]\n\t\t\t\tif (getTokenBeforeValue(node) === \":\") {\n\t\t\t\t\tif (parentNode.parent.type === \"ObjectPattern\") {\n\t\t\t\t\t\t// eslint-disable-next-line no-use-before-define -- due to interdependency of functions\n\t\t\t\t\t\treturn fixObjectWithValueSeparator(node);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// fix unused function parameters\n\t\t\t\treturn fixFunctionParameters(node);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * fix nested object like { a: { b } }\n\t\t\t * @param {ASTNode} node parent node to check\n\t\t\t * @returns {Object} fixer object\n\t\t\t */\n\t\t\tfunction fixNestedObjectVariable(node) {\n\t\t\t\tconst parentNode = node.parent;\n\n\t\t\t\t// fix for { a: { b: { c: { d } } } }\n\t\t\t\tif (\n\t\t\t\t\tparentNode.parent.parent.parent.type === \"ObjectPattern\" &&\n\t\t\t\t\tparentNode.parent.properties.length === 1\n\t\t\t\t) {\n\t\t\t\t\treturn fixNestedObjectVariable(parentNode.parent);\n\t\t\t\t}\n\n\t\t\t\t// fix for { a: { b } }\n\t\t\t\tif (parentNode.parent.type === \"ObjectPattern\") {\n\t\t\t\t\t// fix for unused variables in destructured object with single property in variable declaration and function parameter\n\t\t\t\t\tif (parentNode.parent.properties.length === 1) {\n\t\t\t\t\t\treturn fixVariables(parentNode.parent);\n\t\t\t\t\t}\n\n\t\t\t\t\t// fix for first unused property when there are multiple properties such as '{ a: { b }, c }'\n\t\t\t\t\tif (getTokenBeforeValue(parentNode) === \"{\") {\n\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\tparentNode.range[0],\n\t\t\t\t\t\t\tgetNextTokenEnd(parentNode),\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\n\t\t\t\t\t// fix for unused property except first one when there are multiple properties such as '{ k, a: { b } }'\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tgetPreviousTokenStart(parentNode),\n\t\t\t\t\t\tparentNode.range[1],\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * fix unused variables in array and nested array\n\t\t\t * @param {ASTNode} node parent node to check\n\t\t\t * @returns {Object} fixer object\n\t\t\t */\n\t\t\tfunction fixNestedArrayVariable(node) {\n\t\t\t\tconst parentNode = node.parent;\n\n\t\t\t\t// fix for nested arrays [[ a ]]\n\t\t\t\tif (\n\t\t\t\t\tparentNode.parent.type === \"ArrayPattern\" &&\n\t\t\t\t\thasSingleElement(parentNode)\n\t\t\t\t) {\n\t\t\t\t\treturn fixNestedArrayVariable(parentNode);\n\t\t\t\t}\n\n\t\t\t\tif (hasSingleElement(parentNode)) {\n\t\t\t\t\t// fixes { a: [{ b }] } or { a: [[ b ]] }\n\t\t\t\t\tif (getTokenBeforeValue(parentNode) === \":\") {\n\t\t\t\t\t\treturn fixVariables(parentNode);\n\t\t\t\t\t}\n\n\t\t\t\t\t// fixes [a, ...[[ b ]]] or [a, ...[{ b }]]\n\t\t\t\t\tif (parentNode.parent.type === \"RestElement\") {\n\t\t\t\t\t\t// eslint-disable-next-line no-use-before-define -- due to interdependency of functions\n\t\t\t\t\t\treturn fixRestInPattern(parentNode.parent);\n\t\t\t\t\t}\n\n\t\t\t\t\t// fix unused variables in destructured array in variable declaration or function parameter\n\t\t\t\t\treturn fixVariables(parentNode);\n\t\t\t\t}\n\n\t\t\t\t// remove last unused array element\n\t\t\t\tif (\n\t\t\t\t\tgetTokenBeforeValue(node) === \",\" &&\n\t\t\t\t\tgetTokenAfterValue(node) === \"]\"\n\t\t\t\t) {\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tgetPreviousTokenStart(node),\n\t\t\t\t\t\tnode.range[1],\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\t// remove unused array element\n\t\t\t\treturn fixer.removeRange(node.range);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * fix cases like {a: {k}} or {a: [k]}\n\t\t\t * @param {ASTNode} node parent node to check\n\t\t\t * @returns {Object} fixer object\n\t\t\t */\n\t\t\tfunction fixObjectWithValueSeparator(node) {\n\t\t\t\tconst parentNode = node.parent.parent;\n\n\t\t\t\t// fix cases like [{a : { b }}] or [{a : [ b ]}]\n\t\t\t\tif (\n\t\t\t\t\tparentNode.parent.type === \"ArrayPattern\" &&\n\t\t\t\t\tparentNode.properties.length === 1\n\t\t\t\t) {\n\t\t\t\t\treturn fixNestedArrayVariable(parentNode);\n\t\t\t\t}\n\n\t\t\t\t// fix cases like {a: {k}} or {a: [k]}\n\t\t\t\treturn fixNestedObjectVariable(node);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * fix ...[[a]] or ...[{a}] like patterns\n\t\t\t * @param {ASTNode} node parent node to check\n\t\t\t * @returns {Object} fixer object\n\t\t\t */\n\t\t\tfunction fixRestInPattern(node) {\n\t\t\t\tconst parentNode = node.parent;\n\n\t\t\t\t// fix ...[[a]] or ...[{a}] in function parameters\n\t\t\t\tif (isFunction(parentNode)) {\n\t\t\t\t\tif (parentNode.params.length === 1) {\n\t\t\t\t\t\treturn fixer.removeRange(node.range);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tgetPreviousTokenStart(node),\n\t\t\t\t\t\tnode.range[1],\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\t// fix rest in nested array pattern like [[a, ...[b]]]\n\t\t\t\tif (parentNode.type === \"ArrayPattern\") {\n\t\t\t\t\t// fix [[...[b]]]\n\t\t\t\t\tif (hasSingleElement(parentNode)) {\n\t\t\t\t\t\tif (parentNode.parent.type === \"ArrayPattern\") {\n\t\t\t\t\t\t\treturn fixNestedArrayVariable(parentNode);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// fix 'const [...[b]] = foo; and function foo([...[b]]) {}\n\t\t\t\t\t\treturn fixVariables(parentNode);\n\t\t\t\t\t}\n\n\t\t\t\t\t// fix [[a, ...[b]]]\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tgetPreviousTokenStart(node),\n\t\t\t\t\t\tnode.range[1],\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// skip fix when variable has references that would be left behind\n\t\t\tif (\n\t\t\t\tallWriteReferences.some(\n\t\t\t\t\tref => ref.identifier.range[0] !== id.range[0],\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// remove declared variables such as var a; or var a, b;\n\t\t\tif (parentType === \"VariableDeclarator\") {\n\t\t\t\tif (parent.parent.declarations.length === 1) {\n\t\t\t\t\t// prevent fix of variable in forOf and forIn loops.\n\t\t\t\t\tif (\n\t\t\t\t\t\tisLoop(parent.parent.parent) &&\n\t\t\t\t\t\tparent.parent.parent.body !== parent.parent\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// removes only variable not semicolon in 'if (foo()) var bar;' or in 'loops' or in 'with' statement.\n\t\t\t\t\tif (\n\t\t\t\t\t\tparent.parent.parent.type === \"IfStatement\" ||\n\t\t\t\t\t\tisLoop(parent.parent.parent) ||\n\t\t\t\t\t\t(parent.parent.parent.type === \"WithStatement\" &&\n\t\t\t\t\t\t\tparent.parent.parent.body === parent.parent)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn fixer.replaceText(parent.parent, \";\");\n\t\t\t\t\t}\n\n\t\t\t\t\t// if next token is a string it could become a directive if node is removed -> no suggestion.\n\t\t\t\t\tconst nextToken = sourceCode.getTokenAfter(parent.parent);\n\n\t\t\t\t\t// if previous token exists and is not \";\" or \"{\" not sure about ASI rules -> no suggestion.\n\t\t\t\t\tconst prevToken = sourceCode.getTokenBefore(parent.parent);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tnextToken &&\n\t\t\t\t\t\tisDeclarationNotSafeToRemove(nextToken, prevToken)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// remove unused declared variable with single declaration like 'var a = b;'\n\t\t\t\t\treturn fixer.removeRange(parent.parent.range);\n\t\t\t\t}\n\n\t\t\t\t// remove unused declared variable with multiple declaration except first one like 'var a = b, c = d;'\n\t\t\t\tif (tokenBefore.value === \",\") {\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\ttokenBefore.range[0],\n\t\t\t\t\t\tparent.range[1],\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\t// remove first unused declared variable when there are multiple declarations\n\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\tparent.range[0],\n\t\t\t\t\tgetNextTokenEnd(parent),\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\t// remove variables in object patterns\n\t\t\tif (parent.parent.type === \"ObjectPattern\") {\n\t\t\t\tif (parent.parent.properties.length === 1) {\n\t\t\t\t\t// fix [a, ...{b}]\n\t\t\t\t\tif (parent.parent.parent.type === \"RestElement\") {\n\t\t\t\t\t\treturn fixRestInPattern(parent.parent.parent);\n\t\t\t\t\t}\n\n\t\t\t\t\t// fix [{ a }]\n\t\t\t\t\tif (parent.parent.parent.type === \"ArrayPattern\") {\n\t\t\t\t\t\treturn fixNestedArrayVariable(parent.parent);\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * var {a} = foo;\n\t\t\t\t\t * function a({a}) {}\n\t\t\t\t\t * fix const { a: { b } } = foo;\n\t\t\t\t\t */\n\t\t\t\t\treturn fixVariables(parent.parent);\n\t\t\t\t}\n\n\t\t\t\t// fix const { a:b } = foo;\n\t\t\t\tif (tokenBefore.value === \":\") {\n\t\t\t\t\t// remove first unused variable in const { a:b } = foo;\n\t\t\t\t\tif (\n\t\t\t\t\t\tgetTokenBeforeValue(parent) === \"{\" &&\n\t\t\t\t\t\tgetTokenAfterValue(parent) === \",\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\tparent.range[0],\n\t\t\t\t\t\t\tgetNextTokenEnd(parent),\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\n\t\t\t\t\t// remove unused variables in const { a: b, c: d } = foo; except first one\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tgetPreviousTokenStart(parent),\n\t\t\t\t\t\tid.range[1],\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove unused variables inside an array\n\t\t\tif (parentType === \"ArrayPattern\") {\n\t\t\t\tif (hasSingleElement(parent)) {\n\t\t\t\t\t// fix [a, ...[b]]\n\t\t\t\t\tif (parent.parent.type === \"RestElement\") {\n\t\t\t\t\t\treturn fixRestInPattern(parent.parent);\n\t\t\t\t\t}\n\n\t\t\t\t\t// fix [ [a] ]\n\t\t\t\t\tif (parent.parent.type === \"ArrayPattern\") {\n\t\t\t\t\t\treturn fixNestedArrayVariable(parent);\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * fix var [a] = foo;\n\t\t\t\t\t * fix function foo([a]) {}\n\t\t\t\t\t * fix const { a: [b] } = foo;\n\t\t\t\t\t */\n\t\t\t\t\treturn fixVariables(parent);\n\t\t\t\t}\n\n\t\t\t\t// if \"a\" is unused in [a, b ,c] fixes to [, b, c]\n\t\t\t\tif (tokenBefore.value === \",\" && tokenAfter.value === \",\") {\n\t\t\t\t\treturn fixer.removeRange(id.range);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove unused rest elements\n\t\t\tif (parentType === \"RestElement\") {\n\t\t\t\t// fix [a, ...rest]\n\t\t\t\tif (parent.parent.type === \"ArrayPattern\") {\n\t\t\t\t\tif (hasSingleElement(parent.parent)) {\n\t\t\t\t\t\t// fix [[...rest]] when there is only rest element\n\t\t\t\t\t\tif (parent.parent.parent.type === \"ArrayPattern\") {\n\t\t\t\t\t\t\treturn fixNestedArrayVariable(parent.parent);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// fix 'const [...rest] = foo;' and 'function foo([...rest]) {}'\n\t\t\t\t\t\treturn fixVariables(parent.parent);\n\t\t\t\t\t}\n\n\t\t\t\t\t// fix [a, ...rest]\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tgetPreviousTokenStart(id, 1),\n\t\t\t\t\t\tid.range[1],\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\t// fix { a, ...rest}\n\t\t\t\tif (parent.parent.type === \"ObjectPattern\") {\n\t\t\t\t\t// fix 'const {...rest} = foo;' and 'function foo({...rest}) {}'\n\t\t\t\t\tif (parent.parent.properties.length === 1) {\n\t\t\t\t\t\treturn fixVariables(parent.parent);\n\t\t\t\t\t}\n\n\t\t\t\t\t// fix { a, ...rest} when there are multiple properties\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tgetPreviousTokenStart(id, 1),\n\t\t\t\t\t\tid.range[1],\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\t// fix function foo(...rest) {}\n\t\t\t\tif (isFunction(parent.parent)) {\n\t\t\t\t\t// remove unused rest in function parameter if there is only single parameter\n\t\t\t\t\tif (parent.parent.params.length === 1) {\n\t\t\t\t\t\treturn fixer.removeRange(parent.range);\n\t\t\t\t\t}\n\n\t\t\t\t\t// remove unused rest in function parameter if there multiple parameter\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tgetPreviousTokenStart(parent),\n\t\t\t\t\t\tparent.range[1],\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (parentType === \"AssignmentPattern\") {\n\t\t\t\t// fix [a = aDefault]\n\t\t\t\tif (parent.parent.type === \"ArrayPattern\") {\n\t\t\t\t\treturn fixNestedArrayVariable(parent);\n\t\t\t\t}\n\n\t\t\t\t// fix {a = aDefault}\n\t\t\t\tif (parent.parent.parent.type === \"ObjectPattern\") {\n\t\t\t\t\tif (parent.parent.parent.properties.length === 1) {\n\t\t\t\t\t\t// fixes [{a = aDefault}]\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tparent.parent.parent.parent.type === \"ArrayPattern\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn fixNestedArrayVariable(parent.parent.parent);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// fix 'const {a = aDefault} = foo;' and 'function foo({a = aDefault}) {}'\n\t\t\t\t\t\treturn fixVariables(parent.parent.parent);\n\t\t\t\t\t}\n\n\t\t\t\t\t// fix unused 'a' in {a = aDefault} if it is the first property\n\t\t\t\t\tif (\n\t\t\t\t\t\tgetTokenBeforeValue(parent.parent) === \"{\" &&\n\t\t\t\t\t\tgetTokenAfterValue(parent.parent) === \",\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\tparent.parent.range[0],\n\t\t\t\t\t\t\tgetNextTokenEnd(parent.parent),\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\n\t\t\t\t\t// fix unused 'b' in {a, b = aDefault} if it is not the first property\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tgetPreviousTokenStart(parent.parent),\n\t\t\t\t\t\tparent.parent.range[1],\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\t// fix unused assignment patterns in function parameters\n\t\t\t\tif (isFunction(parent.parent)) {\n\t\t\t\t\treturn fixFunctionParameters(parent);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove unused functions\n\t\t\tif (parentType === \"FunctionDeclaration\" && parent.id === id) {\n\t\t\t\treturn fixer.removeRange(parent.range);\n\t\t\t}\n\n\t\t\t// remove unused default import\n\t\t\tif (parentType === \"ImportDefaultSpecifier\") {\n\t\t\t\t// remove unused default import when there are not other imports\n\t\t\t\tif (\n\t\t\t\t\t!hasImportOfCertainType(parent.parent, \"ImportSpecifier\") &&\n\t\t\t\t\t!hasImportOfCertainType(\n\t\t\t\t\t\tparent.parent,\n\t\t\t\t\t\t\"ImportNamespaceSpecifier\",\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tparent.range[0],\n\t\t\t\t\t\tparent.parent.source.range[0],\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\t// remove unused default import when there are other imports also\n\t\t\t\treturn fixer.removeRange([id.range[0], tokenAfter.range[1]]);\n\t\t\t}\n\n\t\t\tif (parentType === \"ImportSpecifier\") {\n\t\t\t\t// remove unused imports when there is a single import\n\t\t\t\tif (\n\t\t\t\t\tparent.parent.specifiers.filter(\n\t\t\t\t\t\te => e.type === \"ImportSpecifier\",\n\t\t\t\t\t).length === 1\n\t\t\t\t) {\n\t\t\t\t\t// remove unused import when there is no default import\n\t\t\t\t\tif (\n\t\t\t\t\t\t!hasImportOfCertainType(\n\t\t\t\t\t\t\tparent.parent,\n\t\t\t\t\t\t\t\"ImportDefaultSpecifier\",\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn fixer.removeRange(parent.parent.range);\n\t\t\t\t\t}\n\n\t\t\t\t\t// fixes \"import foo from 'module';\" to \"import 'module';\"\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tgetPreviousTokenStart(parent, 1),\n\t\t\t\t\t\ttokenAfter.range[1],\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\tif (getTokenBeforeValue(parent) === \"{\") {\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tparent.range[0],\n\t\t\t\t\t\tgetNextTokenEnd(parent),\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\tgetPreviousTokenStart(parent),\n\t\t\t\t\tparent.range[1],\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\tif (parentType === \"ImportNamespaceSpecifier\") {\n\t\t\t\tif (\n\t\t\t\t\thasImportOfCertainType(\n\t\t\t\t\t\tparent.parent,\n\t\t\t\t\t\t\"ImportDefaultSpecifier\",\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tgetPreviousTokenStart(parent),\n\t\t\t\t\t\tparent.range[1],\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\t// fixes \"import * as foo from 'module';\" to \"import 'module';\"\n\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\tparent.range[0],\n\t\t\t\t\tparent.parent.source.range[0],\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\t// skip error in catch(error) variable\n\t\t\tif (parentType === \"CatchClause\") {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// remove unused declared classes\n\t\t\tif (parentType === \"ClassDeclaration\") {\n\t\t\t\treturn fixer.removeRange(parent.range);\n\t\t\t}\n\n\t\t\t// remove unused variable that is in a sequence [a,b] fixes to [a]\n\t\t\tif (tokenBefore?.value === \",\") {\n\t\t\t\treturn fixer.removeRange([tokenBefore.range[0], id.range[1]]);\n\t\t\t}\n\n\t\t\t// remove unused variable that is in a sequence inside function arguments and object pattern\n\t\t\tif (tokenAfter.value === \",\") {\n\t\t\t\t// fix function foo(a, b) {}\n\t\t\t\tif (tokenBefore.value === \"(\") {\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tid.range[0],\n\t\t\t\t\t\ttokenAfter.range[1],\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\t// fix const {a, b} = foo;\n\t\t\t\tif (tokenBefore.value === \"{\") {\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tid.range[0],\n\t\t\t\t\t\ttokenAfter.range[1],\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tparentType === \"ArrowFunctionExpression\" &&\n\t\t\t\tparent.params.length === 1 &&\n\t\t\t\ttokenAfter?.value !== \")\"\n\t\t\t) {\n\t\t\t\treturn fixer.replaceText(id, \"()\");\n\t\t\t}\n\n\t\t\treturn fixer.removeRange(id.range);\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\t\"Program:exit\"(programNode) {\n\t\t\t\tconst unusedVars = collectUnusedVariables(\n\t\t\t\t\tsourceCode.getScope(programNode),\n\t\t\t\t\t[],\n\t\t\t\t);\n\n\t\t\t\tfor (let i = 0, l = unusedVars.length; i < l; ++i) {\n\t\t\t\t\tconst unusedVar = unusedVars[i];\n\n\t\t\t\t\t// Report the first declaration.\n\t\t\t\t\tif (unusedVar.defs.length > 0) {\n\t\t\t\t\t\t// report last write reference, https://github.com/eslint/eslint/issues/14324\n\t\t\t\t\t\tconst writeReferences = unusedVar.references.filter(\n\t\t\t\t\t\t\tref =>\n\t\t\t\t\t\t\t\tref.isWrite() &&\n\t\t\t\t\t\t\t\tref.from.variableScope ===\n\t\t\t\t\t\t\t\t\tunusedVar.scope.variableScope,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tlet referenceToReport;\n\n\t\t\t\t\t\tif (writeReferences.length > 0) {\n\t\t\t\t\t\t\treferenceToReport = writeReferences.at(-1);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: referenceToReport\n\t\t\t\t\t\t\t\t? referenceToReport.identifier\n\t\t\t\t\t\t\t\t: unusedVar.identifiers[0],\n\t\t\t\t\t\t\tmessageId: \"unusedVar\",\n\t\t\t\t\t\t\tdata: unusedVar.references.some(ref =>\n\t\t\t\t\t\t\t\tref.isWrite(),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t? getAssignedMessageData(unusedVar)\n\t\t\t\t\t\t\t\t: getDefinedMessageData(unusedVar),\n\t\t\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmessageId: \"removeVar\",\n\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\tvarName: unusedVar.name,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\t\treturn handleFixes(fixer, unusedVar);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// If there are no regular declaration, report the first `/*globals*/` comment directive.\n\t\t\t\t\t} else if (unusedVar.eslintExplicitGlobalComments) {\n\t\t\t\t\t\tconst directiveComment =\n\t\t\t\t\t\t\tunusedVar.eslintExplicitGlobalComments[0];\n\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: programNode,\n\t\t\t\t\t\t\tloc: astUtils.getNameLocationInGlobalDirectiveComment(\n\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\tdirectiveComment,\n\t\t\t\t\t\t\t\tunusedVar.name,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tmessageId: \"unusedVar\",\n\t\t\t\t\t\t\tdata: getDefinedMessageData(unusedVar),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of variables before they are defined\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Scope} Scope */\n/** @typedef {import(\"eslint-scope\").Reference} Reference */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst SENTINEL_TYPE =\n\t/^(?:(?:Function|Class)(?:Declaration|Expression)|ArrowFunctionExpression|CatchClause|ImportDeclaration|ExportNamedDeclaration)$/u;\nconst FOR_IN_OF_TYPE = /^For(?:In|Of)Statement$/u;\n\n/**\n * Parses a given value as options.\n * @param {any} options A value to parse.\n * @returns {Object} The parsed options.\n */\nfunction parseOptions(options) {\n\tif (typeof options === \"object\" && options !== null) {\n\t\treturn options;\n\t}\n\n\tconst functions = typeof options === \"string\" ? options !== \"nofunc\" : true;\n\n\treturn {\n\t\tfunctions,\n\t\tclasses: true,\n\t\tvariables: true,\n\t\tallowNamedExports: false,\n\t\tenums: true,\n\t\ttypedefs: true,\n\t\tignoreTypeReferences: true,\n\t};\n}\n\n/**\n * Checks whether or not a given location is inside of the range of a given node.\n * @param {ASTNode} node An node to check.\n * @param {number} location A location to check.\n * @returns {boolean} `true` if the location is inside of the range of the node.\n */\nfunction isInRange(node, location) {\n\treturn node && node.range[0] <= location && location <= node.range[1];\n}\n\n/**\n * Checks whether or not a given location is inside of the range of a class static initializer.\n * Static initializers are static blocks and initializers of static fields.\n * @param {ASTNode} node `ClassBody` node to check static initializers.\n * @param {number} location A location to check.\n * @returns {boolean} `true` if the location is inside of a class static initializer.\n */\nfunction isInClassStaticInitializerRange(node, location) {\n\treturn node.body.some(\n\t\tclassMember =>\n\t\t\t(classMember.type === \"StaticBlock\" &&\n\t\t\t\tisInRange(classMember, location)) ||\n\t\t\t(classMember.type === \"PropertyDefinition\" &&\n\t\t\t\tclassMember.static &&\n\t\t\t\tclassMember.value &&\n\t\t\t\tisInRange(classMember.value, location)),\n\t);\n}\n\n/**\n * Checks whether a given scope is the scope of a class static initializer.\n * Static initializers are static blocks and initializers of static fields.\n * @param {Scope} scope A scope to check.\n * @returns {boolean} `true` if the scope is a class static initializer scope.\n */\nfunction isClassStaticInitializerScope(scope) {\n\tif (scope.type === \"class-static-block\") {\n\t\treturn true;\n\t}\n\n\tif (scope.type === \"class-field-initializer\") {\n\t\t// `scope.block` is PropertyDefinition#value node\n\t\tconst propertyDefinition = scope.block.parent;\n\n\t\treturn propertyDefinition.static;\n\t}\n\n\treturn false;\n}\n\n/**\n * Checks whether a given reference is evaluated in an execution context\n * that isn't the one where the variable it refers to is defined.\n * Execution contexts are:\n * - top-level\n * - functions\n * - class field initializers (implicit functions)\n * - class static blocks (implicit functions)\n * Static class field initializers and class static blocks are automatically run during the class definition evaluation,\n * and therefore we'll consider them as a part of the parent execution context.\n * Example:\n *\n *   const x = 1;\n *\n *   x; // returns `false`\n *   () => x; // returns `true`\n *\n *   class C {\n *       field = x; // returns `true`\n *       static field = x; // returns `false`\n *\n *       method() {\n *           x; // returns `true`\n *       }\n *\n *       static method() {\n *           x; // returns `true`\n *       }\n *\n *       static {\n *           x; // returns `false`\n *       }\n *   }\n * @param {Reference} reference A reference to check.\n * @returns {boolean} `true` if the reference is from a separate execution context.\n */\nfunction isFromSeparateExecutionContext(reference) {\n\tconst variable = reference.resolved;\n\tlet scope = reference.from;\n\n\t// Scope#variableScope represents execution context\n\twhile (variable.scope.variableScope !== scope.variableScope) {\n\t\tif (isClassStaticInitializerScope(scope.variableScope)) {\n\t\t\tscope = scope.variableScope.upper;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Checks whether or not a given reference is evaluated during the initialization of its variable.\n *\n * This returns `true` in the following cases:\n *\n *     var a = a\n *     var [a = a] = list\n *     var {a = a} = obj\n *     for (var a in a) {}\n *     for (var a of a) {}\n *     var C = class { [C]; };\n *     var C = class { static foo = C; };\n *     var C = class { static { foo = C; } };\n *     class C extends C {}\n *     class C extends (class { static foo = C; }) {}\n *     class C { [C]; }\n * @param {Reference} reference A reference to check.\n * @returns {boolean} `true` if the reference is evaluated during the initialization.\n */\nfunction isEvaluatedDuringInitialization(reference) {\n\tif (isFromSeparateExecutionContext(reference)) {\n\t\t/*\n\t\t * Even if the reference appears in the initializer, it isn't evaluated during the initialization.\n\t\t * For example, `const x = () => x;` is valid.\n\t\t */\n\t\treturn false;\n\t}\n\n\tconst location = reference.identifier.range[1];\n\tconst definition = reference.resolved.defs[0];\n\n\tif (definition.type === \"ClassName\") {\n\t\t// `ClassDeclaration` or `ClassExpression`\n\t\tconst classDefinition = definition.node;\n\n\t\treturn (\n\t\t\tisInRange(classDefinition, location) &&\n\t\t\t/*\n\t\t\t * Class binding is initialized before running static initializers.\n\t\t\t * For example, `class C { static foo = C; static { bar = C; } }` is valid.\n\t\t\t */\n\t\t\t!isInClassStaticInitializerRange(classDefinition.body, location)\n\t\t);\n\t}\n\n\tlet node = definition.name.parent;\n\n\twhile (node) {\n\t\tif (node.type === \"VariableDeclarator\") {\n\t\t\tif (isInRange(node.init, location)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tFOR_IN_OF_TYPE.test(node.parent.parent.type) &&\n\t\t\t\tisInRange(node.parent.parent.right, location)\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tbreak;\n\t\t} else if (node.type === \"AssignmentPattern\") {\n\t\t\tif (isInRange(node.right, location)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if (SENTINEL_TYPE.test(node.type)) {\n\t\t\tbreak;\n\t\t}\n\n\t\tnode = node.parent;\n\t}\n\n\treturn false;\n}\n\n/**\n * check whether the reference contains a type query.\n * @param {ASTNode} node Identifier node to check.\n * @returns {boolean} true if reference contains type query.\n */\nfunction referenceContainsTypeQuery(node) {\n\tswitch (node.type) {\n\t\tcase \"TSTypeQuery\":\n\t\t\treturn true;\n\n\t\tcase \"TSQualifiedName\":\n\t\tcase \"Identifier\":\n\t\t\treturn referenceContainsTypeQuery(node.parent);\n\n\t\tdefault:\n\t\t\t// if we find a different node, there's no chance that we're in a TSTypeQuery\n\t\t\treturn false;\n\t}\n}\n\n/**\n * Decorators are transpiled such that the decorator is placed after the class declaration\n * So it is considered safe\n * @param {Variable} variable The variable to check.\n * @param {Reference} reference The reference to check.\n * @returns {boolean} `true` if the reference is in a class decorator.\n */\nfunction isClassRefInClassDecorator(variable, reference) {\n\tif (variable.defs[0].type !== \"ClassName\") {\n\t\treturn false;\n\t}\n\n\tif (\n\t\t!variable.defs[0].node.decorators ||\n\t\tvariable.defs[0].node.decorators.length === 0\n\t) {\n\t\treturn false;\n\t}\n\n\tfor (const deco of variable.defs[0].node.decorators) {\n\t\tif (\n\t\t\treference.identifier.range[0] >= deco.range[0] &&\n\t\t\treference.identifier.range[1] <= deco.range[1]\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow the use of variables before they are defined\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-use-before-define\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: [\"nofunc\"],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tfunctions: { type: \"boolean\" },\n\t\t\t\t\t\t\tclasses: { type: \"boolean\" },\n\t\t\t\t\t\t\tvariables: { type: \"boolean\" },\n\t\t\t\t\t\t\tallowNamedExports: { type: \"boolean\" },\n\t\t\t\t\t\t\tenums: { type: \"boolean\" },\n\t\t\t\t\t\t\ttypedefs: { type: \"boolean\" },\n\t\t\t\t\t\t\tignoreTypeReferences: { type: \"boolean\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tclasses: true,\n\t\t\t\tfunctions: true,\n\t\t\t\tvariables: true,\n\t\t\t\tallowNamedExports: false,\n\t\t\t\tenums: true,\n\t\t\t\ttypedefs: true,\n\t\t\t\tignoreTypeReferences: true,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tusedBeforeDefined: \"'{{name}}' was used before it was defined.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst options = parseOptions(context.options[0]);\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Determines whether a given reference should be checked.\n\t\t *\n\t\t * Returns `false` if the reference is:\n\t\t * - initialization's (e.g., `let a = 1`).\n\t\t * - referring to an undefined variable (i.e., if it's an unresolved reference).\n\t\t * - referring to a variable that is defined, but not in the given source code\n\t\t *   (e.g., global environment variable or `arguments` in functions).\n\t\t * - allowed by options.\n\t\t * @param {Reference} reference The reference\n\t\t * @returns {boolean} `true` if the reference should be checked\n\t\t */\n\t\tfunction shouldCheck(reference) {\n\t\t\tif (reference.init) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst { identifier } = reference;\n\n\t\t\tif (\n\t\t\t\toptions.allowNamedExports &&\n\t\t\t\tidentifier.parent.type === \"ExportSpecifier\" &&\n\t\t\t\tidentifier.parent.local === identifier\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst variable = reference.resolved;\n\n\t\t\tif (!variable || variable.defs.length === 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst definitionType = variable.defs[0].type;\n\n\t\t\tif (!options.functions && definitionType === \"FunctionName\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t((!options.variables && definitionType === \"Variable\") ||\n\t\t\t\t\t(!options.classes && definitionType === \"ClassName\")) &&\n\t\t\t\t// don't skip checking the reference if it's in the same execution context, because of TDZ\n\t\t\t\tisFromSeparateExecutionContext(reference)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!options.enums && definitionType === \"TSEnumName\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!options.typedefs && definitionType === \"Type\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\toptions.ignoreTypeReferences &&\n\t\t\t\t(referenceContainsTypeQuery(identifier) ||\n\t\t\t\t\tidentifier.parent.type === \"TSTypeReference\")\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// skip nested namespace aliases as variable references\n\t\t\tif (identifier.parent.type === \"TSQualifiedName\") {\n\t\t\t\tlet currentNode = identifier.parent;\n\n\t\t\t\twhile (currentNode.type === \"TSQualifiedName\") {\n\t\t\t\t\tcurrentNode = currentNode.left;\n\t\t\t\t}\n\n\t\t\t\tif (currentNode === identifier) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (isClassRefInClassDecorator(variable, reference)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * Finds and validates all references in a given scope and its child scopes.\n\t\t * @param {Scope} scope The scope object.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkReferencesInScope(scope) {\n\t\t\tscope.references.filter(shouldCheck).forEach(reference => {\n\t\t\t\tconst variable = reference.resolved;\n\t\t\t\tconst definitionIdentifier = variable.defs[0].name;\n\n\t\t\t\tif (\n\t\t\t\t\treference.identifier.range[1] <\n\t\t\t\t\t\tdefinitionIdentifier.range[1] ||\n\t\t\t\t\t(isEvaluatedDuringInitialization(reference) &&\n\t\t\t\t\t\treference.identifier.parent.type !== \"TSTypeReference\")\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: reference.identifier,\n\t\t\t\t\t\tmessageId: \"usedBeforeDefined\",\n\t\t\t\t\t\tdata: reference.identifier,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tscope.childScopes.forEach(checkReferencesInScope);\n\t\t}\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tcheckReferencesInScope(sourceCode.getScope(node));\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to disallow unnecessary assignments`.\n * @author Yosuke Ota\n */\n\n\"use strict\";\n\nconst { findVariable } = require(\"@eslint-community/eslint-utils\");\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"estree\").Node} ASTNode */\n/** @typedef {import(\"estree\").Pattern} Pattern */\n/** @typedef {import(\"estree\").Identifier} Identifier */\n/** @typedef {import(\"estree\").VariableDeclarator} VariableDeclarator */\n/** @typedef {import(\"estree\").AssignmentExpression} AssignmentExpression */\n/** @typedef {import(\"estree\").UpdateExpression} UpdateExpression */\n/** @typedef {import(\"estree\").Expression} Expression */\n/** @typedef {import(\"eslint-scope\").Scope} Scope */\n/** @typedef {import(\"eslint-scope\").Variable} Variable */\n/** @typedef {import(\"../linter/code-path-analysis/code-path\")} CodePath */\n/** @typedef {import(\"../linter/code-path-analysis/code-path-segment\")} CodePathSegment */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Extract identifier from the given pattern node used on the left-hand side of the assignment.\n * @param {Pattern} pattern The pattern node to extract identifier\n * @returns {Iterable<Identifier>} The extracted identifier\n */\nfunction* extractIdentifiersFromPattern(pattern) {\n\tswitch (pattern.type) {\n\t\tcase \"Identifier\":\n\t\t\tyield pattern;\n\t\t\treturn;\n\t\tcase \"ObjectPattern\":\n\t\t\tfor (const property of pattern.properties) {\n\t\t\t\tyield* extractIdentifiersFromPattern(\n\t\t\t\t\tproperty.type === \"Property\" ? property.value : property,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn;\n\t\tcase \"ArrayPattern\":\n\t\t\tfor (const element of pattern.elements) {\n\t\t\t\tif (!element) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tyield* extractIdentifiersFromPattern(element);\n\t\t\t}\n\t\t\treturn;\n\t\tcase \"RestElement\":\n\t\t\tyield* extractIdentifiersFromPattern(pattern.argument);\n\t\t\treturn;\n\t\tcase \"AssignmentPattern\":\n\t\t\tyield* extractIdentifiersFromPattern(pattern.left);\n\n\t\t// no default\n\t}\n}\n\n/**\n * Checks whether the given identifier node is evaluated after the assignment identifier.\n * @param {AssignmentInfo} assignment The assignment info.\n * @param {Identifier} identifier The identifier to check.\n * @returns {boolean} `true` if the given identifier node is evaluated after the assignment identifier.\n */\nfunction isIdentifierEvaluatedAfterAssignment(assignment, identifier) {\n\tif (identifier.range[0] < assignment.identifier.range[1]) {\n\t\treturn false;\n\t}\n\tif (\n\t\tassignment.expression &&\n\t\tassignment.expression.range[0] <= identifier.range[0] &&\n\t\tidentifier.range[1] <= assignment.expression.range[1]\n\t) {\n\t\t/*\n\t\t * The identifier node is in an expression that is evaluated before the assignment.\n\t\t * e.g. x = id;\n\t\t *          ^^ identifier to check\n\t\t *      ^      assignment identifier\n\t\t */\n\t\treturn false;\n\t}\n\n\t/*\n\t * e.g.\n\t *      x = 42; id;\n\t *              ^^ identifier to check\n\t *      ^          assignment identifier\n\t *      let { x, y = id } = obj;\n\t *                   ^^  identifier to check\n\t *            ^          assignment identifier\n\t */\n\treturn true;\n}\n\n/**\n * Checks whether the given identifier node is used between the assigned identifier and the equal sign.\n *\n * e.g. let { x, y = x } = obj;\n *                   ^   identifier to check\n *            ^          assigned identifier\n * @param {AssignmentInfo} assignment The assignment info.\n * @param {Identifier} identifier The identifier to check.\n * @returns {boolean} `true` if the given identifier node is used between the assigned identifier and the equal sign.\n */\nfunction isIdentifierUsedBetweenAssignedAndEqualSign(assignment, identifier) {\n\tif (!assignment.expression) {\n\t\treturn false;\n\t}\n\treturn (\n\t\tassignment.identifier.range[1] <= identifier.range[0] &&\n\t\tidentifier.range[1] <= assignment.expression.range[0]\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow variable assignments when the value is not used\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-useless-assignment\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunnecessaryAssignment:\n\t\t\t\t\"The value assigned to '{{name}}' is not used in subsequent statements.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * @typedef {Object} ScopeStack\n\t\t * @property {CodePath} codePath The code path of this scope stack.\n\t\t * @property {Scope} scope The scope of this scope stack.\n\t\t * @property {ScopeStack} upper The upper scope stack.\n\t\t * @property {Record<string, ScopeStackSegmentInfo>} segments The map of ScopeStackSegmentInfo.\n\t\t * @property {Set<CodePathSegment>} currentSegments The current CodePathSegments.\n\t\t * @property {Map<Variable, AssignmentInfo[]>} assignments The map of list of AssignmentInfo for each variable.\n\t\t * @property {Array} tryStatementBlocks The array of TryStatement block nodes in this scope stack.\n\t\t */\n\t\t/**\n\t\t * @typedef {Object} ScopeStackSegmentInfo\n\t\t * @property {CodePathSegment} segment The code path segment.\n\t\t * @property {Identifier|null} first The first identifier that appears within the segment.\n\t\t * @property {Identifier|null} last The last identifier that appears within the segment.\n\t\t * `first` and `last` are used to determine whether an identifier exists within the segment position range.\n\t\t * Since it is used as a range of segments, we should originally hold all nodes, not just identifiers,\n\t\t * but since the only nodes to be judged are identifiers, it is sufficient to have a range of identifiers.\n\t\t */\n\t\t/**\n\t\t * @typedef {Object} AssignmentInfo\n\t\t * @property {Variable} variable The variable that is assigned.\n\t\t * @property {Identifier} identifier The identifier that is assigned.\n\t\t * @property {VariableDeclarator|AssignmentExpression|UpdateExpression} node The node where the variable was updated.\n\t\t * @property {Expression|null} expression The expression that is evaluated before the assignment.\n\t\t * @property {CodePathSegment[]} segments The code path segments where the assignment was made.\n\t\t */\n\n\t\t/** @type {ScopeStack} */\n\t\tlet scopeStack = null;\n\n\t\t/** @type {Set<Scope>} */\n\t\tconst codePathStartScopes = new Set();\n\n\t\t/**\n\t\t * Gets the scope of code path start from given scope\n\t\t * @param {Scope} scope The initial scope\n\t\t * @returns {Scope} The scope of code path start\n\t\t * @throws {Error} Unexpected error\n\t\t */\n\t\tfunction getCodePathStartScope(scope) {\n\t\t\tlet target = scope;\n\n\t\t\twhile (target) {\n\t\t\t\tif (codePathStartScopes.has(target)) {\n\t\t\t\t\treturn target;\n\t\t\t\t}\n\t\t\t\ttarget = target.upper;\n\t\t\t}\n\n\t\t\t// Should be unreachable\n\t\t\treturn null;\n\t\t}\n\n\t\t/**\n\t\t * Verify the given scope stack.\n\t\t * @param {ScopeStack} target The scope stack to verify.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction verify(target) {\n\t\t\t/**\n\t\t\t * Checks whether the given identifier is used in the segment.\n\t\t\t * @param {CodePathSegment} segment The code path segment.\n\t\t\t * @param {Identifier} identifier The identifier to check.\n\t\t\t * @returns {boolean} `true` if the identifier is used in the segment.\n\t\t\t */\n\t\t\tfunction isIdentifierUsedInSegment(segment, identifier) {\n\t\t\t\tconst segmentInfo = target.segments[segment.id];\n\n\t\t\t\treturn (\n\t\t\t\t\tsegmentInfo.first &&\n\t\t\t\t\tsegmentInfo.last &&\n\t\t\t\t\tsegmentInfo.first.range[0] <= identifier.range[0] &&\n\t\t\t\t\tidentifier.range[1] <= segmentInfo.last.range[1]\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Verifies whether the given assignment info is an used assignment.\n\t\t\t * Report if it is an unused assignment.\n\t\t\t * @param {AssignmentInfo} targetAssignment The assignment info to verify.\n\t\t\t * @param {AssignmentInfo[]} allAssignments The list of all assignment info for variables.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tfunction verifyAssignmentIsUsed(targetAssignment, allAssignments) {\n\t\t\t\t// Skip assignment if it is in a try block.\n\t\t\t\tconst isAssignmentInTryBlock = target.tryStatementBlocks.some(\n\t\t\t\t\ttryBlock =>\n\t\t\t\t\t\ttryBlock.range[0] <=\n\t\t\t\t\t\t\ttargetAssignment.identifier.range[0] &&\n\t\t\t\t\t\ttargetAssignment.identifier.range[1] <=\n\t\t\t\t\t\t\ttryBlock.range[1],\n\t\t\t\t);\n\n\t\t\t\tif (isAssignmentInTryBlock) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/**\n\t\t\t\t * @typedef {Object} SubsequentSegmentData\n\t\t\t\t * @property {CodePathSegment} segment The code path segment\n\t\t\t\t * @property {AssignmentInfo} [assignment] The first occurrence of the assignment within the segment.\n\t\t\t\t * There is no need to check if the variable is used after this assignment,\n\t\t\t\t * as the value it was assigned will be used.\n\t\t\t\t */\n\n\t\t\t\t/**\n\t\t\t\t * Information used in `getSubsequentSegments()`.\n\t\t\t\t * To avoid unnecessary iterations, cache information that has already been iterated over,\n\t\t\t\t * and if additional iterations are needed, start iterating from the retained position.\n\t\t\t\t */\n\t\t\t\tconst subsequentSegmentData = {\n\t\t\t\t\t/**\n\t\t\t\t\t * Cache of subsequent segment information list that have already been iterated.\n\t\t\t\t\t * @type {SubsequentSegmentData[]}\n\t\t\t\t\t */\n\t\t\t\t\tresults: [],\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Subsequent segments that have already been iterated on. Used to avoid infinite loops.\n\t\t\t\t\t * @type {Set<CodePathSegment>}\n\t\t\t\t\t */\n\t\t\t\t\tsubsequentSegments: new Set(),\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Unexplored code path segment.\n\t\t\t\t\t * If additional iterations are needed, consume this information and iterate.\n\t\t\t\t\t * @type {CodePathSegment[]}\n\t\t\t\t\t */\n\t\t\t\t\tqueueSegments: targetAssignment.segments.flatMap(\n\t\t\t\t\t\tsegment => segment.nextSegments,\n\t\t\t\t\t),\n\t\t\t\t};\n\n\t\t\t\t/**\n\t\t\t\t * Gets the subsequent segments from the segment of\n\t\t\t\t * the assignment currently being validated (targetAssignment).\n\t\t\t\t * @returns {Iterable<SubsequentSegmentData>} the subsequent segments\n\t\t\t\t */\n\t\t\t\tfunction* getSubsequentSegments() {\n\t\t\t\t\tyield* subsequentSegmentData.results;\n\n\t\t\t\t\twhile (subsequentSegmentData.queueSegments.length > 0) {\n\t\t\t\t\t\tconst nextSegment =\n\t\t\t\t\t\t\tsubsequentSegmentData.queueSegments.shift();\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tsubsequentSegmentData.subsequentSegments.has(\n\t\t\t\t\t\t\t\tnextSegment,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsubsequentSegmentData.subsequentSegments.add(\n\t\t\t\t\t\t\tnextSegment,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst assignmentInSegment = allAssignments.find(\n\t\t\t\t\t\t\totherAssignment =>\n\t\t\t\t\t\t\t\totherAssignment.segments.includes(\n\t\t\t\t\t\t\t\t\tnextSegment,\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\t!isIdentifierUsedBetweenAssignedAndEqualSign(\n\t\t\t\t\t\t\t\t\totherAssignment,\n\t\t\t\t\t\t\t\t\ttargetAssignment.identifier,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (!assignmentInSegment) {\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * Stores the next segment to explore.\n\t\t\t\t\t\t\t * If `assignmentInSegment` exists,\n\t\t\t\t\t\t\t * we are guarding it because we don't need to explore the next segment.\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tsubsequentSegmentData.queueSegments.push(\n\t\t\t\t\t\t\t\t...nextSegment.nextSegments,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/** @type {SubsequentSegmentData} */\n\t\t\t\t\t\tconst result = {\n\t\t\t\t\t\t\tsegment: nextSegment,\n\t\t\t\t\t\t\tassignment: assignmentInSegment,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tsubsequentSegmentData.results.push(result);\n\t\t\t\t\t\tyield result;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\ttargetAssignment.variable.references.some(ref => {\n\t\t\t\t\t\tconst type = ref.identifier.type;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\ttype !== \"Identifier\" && type !== \"JSXIdentifier\"\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t) {\n\t\t\t\t\t/**\n\t\t\t\t\t * Skip checking for a variable that has at least one non-identifier reference.\n\t\t\t\t\t * It's generated by plugins and cannot be handled reliably in the core rule.\n\t\t\t\t\t */\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst readReferences =\n\t\t\t\t\ttargetAssignment.variable.references.filter(reference =>\n\t\t\t\t\t\treference.isRead(),\n\t\t\t\t\t);\n\n\t\t\t\tif (!readReferences.length) {\n\t\t\t\t\t/*\n\t\t\t\t\t * It is not just an unnecessary assignment, but an unnecessary (unused) variable\n\t\t\t\t\t * and thus should not be reported by this rule because it is reported by `no-unused-vars`.\n\t\t\t\t\t */\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/**\n\t\t\t\t * Other assignment on the current segment and after current assignment.\n\t\t\t\t */\n\t\t\t\tconst otherAssignmentAfterTargetAssignment =\n\t\t\t\t\tallAssignments.find(assignment => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tassignment === targetAssignment ||\n\t\t\t\t\t\t\t(assignment.segments.length &&\n\t\t\t\t\t\t\t\tassignment.segments.every(\n\t\t\t\t\t\t\t\t\tsegment =>\n\t\t\t\t\t\t\t\t\t\t!targetAssignment.segments.includes(\n\t\t\t\t\t\t\t\t\t\t\tsegment,\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tisIdentifierEvaluatedAfterAssignment(\n\t\t\t\t\t\t\t\ttargetAssignment,\n\t\t\t\t\t\t\t\tassignment.identifier,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tassignment.expression &&\n\t\t\t\t\t\t\tassignment.expression.range[0] <=\n\t\t\t\t\t\t\t\ttargetAssignment.identifier.range[0] &&\n\t\t\t\t\t\t\ttargetAssignment.identifier.range[1] <=\n\t\t\t\t\t\t\t\tassignment.expression.range[1]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * The target assignment is in an expression that is evaluated before the assignment.\n\t\t\t\t\t\t\t * e.g. x=(x=1);\n\t\t\t\t\t\t\t *         ^^^ targetAssignment\n\t\t\t\t\t\t\t *      ^^^^^^^ assignment\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\n\t\t\t\tfor (const reference of readReferences) {\n\t\t\t\t\t/*\n\t\t\t\t\t * If the scope of the reference is outside the current code path scope,\n\t\t\t\t\t * we cannot track whether this assignment is not used.\n\t\t\t\t\t * For example, it can also be called asynchronously.\n\t\t\t\t\t */\n\t\t\t\t\tif (\n\t\t\t\t\t\ttarget.scope !== getCodePathStartScope(reference.from)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Checks if it is used in the same segment as the target assignment.\n\t\t\t\t\tif (\n\t\t\t\t\t\tisIdentifierEvaluatedAfterAssignment(\n\t\t\t\t\t\t\ttargetAssignment,\n\t\t\t\t\t\t\treference.identifier,\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\t(isIdentifierUsedBetweenAssignedAndEqualSign(\n\t\t\t\t\t\t\ttargetAssignment,\n\t\t\t\t\t\t\treference.identifier,\n\t\t\t\t\t\t) ||\n\t\t\t\t\t\t\ttargetAssignment.segments.some(segment =>\n\t\t\t\t\t\t\t\tisIdentifierUsedInSegment(\n\t\t\t\t\t\t\t\t\tsegment,\n\t\t\t\t\t\t\t\t\treference.identifier,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t))\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\totherAssignmentAfterTargetAssignment &&\n\t\t\t\t\t\t\tisIdentifierEvaluatedAfterAssignment(\n\t\t\t\t\t\t\t\totherAssignmentAfterTargetAssignment,\n\t\t\t\t\t\t\t\treference.identifier,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// There was another assignment before the reference. Therefore, it has not been used yet.\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Uses in statements after the written identifier.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (otherAssignmentAfterTargetAssignment) {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * The assignment was followed by another assignment in the same segment.\n\t\t\t\t\t\t * Therefore, there is no need to check the next segment.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check subsequent segments.\n\t\t\t\t\tfor (const subsequentSegment of getSubsequentSegments()) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tisIdentifierUsedInSegment(\n\t\t\t\t\t\t\t\tsubsequentSegment.segment,\n\t\t\t\t\t\t\t\treference.identifier,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tsubsequentSegment.assignment &&\n\t\t\t\t\t\t\t\tisIdentifierEvaluatedAfterAssignment(\n\t\t\t\t\t\t\t\t\tsubsequentSegment.assignment,\n\t\t\t\t\t\t\t\t\treference.identifier,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// There was another assignment before the reference. Therefore, it has not been used yet.\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// It is used\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: targetAssignment.identifier,\n\t\t\t\t\tmessageId: \"unnecessaryAssignment\",\n\t\t\t\t\tdata: { name: targetAssignment.identifier.name },\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Verify that each assignment in the code path is used.\n\t\t\tfor (const assignments of target.assignments.values()) {\n\t\t\t\tassignments.sort(\n\t\t\t\t\t(a, b) => a.identifier.range[0] - b.identifier.range[0],\n\t\t\t\t);\n\t\t\t\tfor (const assignment of assignments) {\n\t\t\t\t\tverifyAssignmentIsUsed(assignment, assignments);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tonCodePathStart(codePath, node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\n\t\t\t\tscopeStack = {\n\t\t\t\t\tupper: scopeStack,\n\t\t\t\t\tcodePath,\n\t\t\t\t\tscope,\n\t\t\t\t\tsegments: Object.create(null),\n\t\t\t\t\tcurrentSegments: new Set(),\n\t\t\t\t\tassignments: new Map(),\n\t\t\t\t\ttryStatementBlocks: [],\n\t\t\t\t};\n\t\t\t\tcodePathStartScopes.add(scopeStack.scope);\n\t\t\t},\n\t\t\tonCodePathEnd() {\n\t\t\t\tverify(scopeStack);\n\n\t\t\t\tscopeStack = scopeStack.upper;\n\t\t\t},\n\t\t\tonCodePathSegmentStart(segment) {\n\t\t\t\tconst segmentInfo = { segment, first: null, last: null };\n\n\t\t\t\tscopeStack.segments[segment.id] = segmentInfo;\n\t\t\t\tscopeStack.currentSegments.add(segment);\n\t\t\t},\n\t\t\tonCodePathSegmentEnd(segment) {\n\t\t\t\tscopeStack.currentSegments.delete(segment);\n\t\t\t},\n\t\t\tTryStatement(node) {\n\t\t\t\tscopeStack.tryStatementBlocks.push(node.block);\n\t\t\t},\n\t\t\t\"Identifier, JSXIdentifier\"(node) {\n\t\t\t\tfor (const segment of scopeStack.currentSegments) {\n\t\t\t\t\tconst segmentInfo = scopeStack.segments[segment.id];\n\n\t\t\t\t\tif (!segmentInfo.first) {\n\t\t\t\t\t\tsegmentInfo.first = node;\n\t\t\t\t\t}\n\t\t\t\t\tsegmentInfo.last = node;\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"VariableDeclarator[init!=null], AssignmentExpression, UpdateExpression:exit\"(\n\t\t\t\tnode,\n\t\t\t) {\n\t\t\t\tif (scopeStack.currentSegments.size === 0) {\n\t\t\t\t\t// Ignore unreachable segments\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst assignments = scopeStack.assignments;\n\n\t\t\t\tlet pattern;\n\t\t\t\tlet expression = null;\n\n\t\t\t\tif (node.type === \"VariableDeclarator\") {\n\t\t\t\t\tpattern = node.id;\n\t\t\t\t\texpression = node.init;\n\t\t\t\t} else if (node.type === \"AssignmentExpression\") {\n\t\t\t\t\tpattern = node.left;\n\t\t\t\t\texpression = node.right;\n\t\t\t\t} else {\n\t\t\t\t\t// UpdateExpression\n\t\t\t\t\tpattern = node.argument;\n\t\t\t\t}\n\n\t\t\t\tfor (const identifier of extractIdentifiersFromPattern(\n\t\t\t\t\tpattern,\n\t\t\t\t)) {\n\t\t\t\t\tconst scope = sourceCode.getScope(identifier);\n\n\t\t\t\t\t/** @type {Variable} */\n\t\t\t\t\tconst variable = findVariable(scope, identifier);\n\n\t\t\t\t\tif (!variable) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// We don't know where global variables are used.\n\t\t\t\t\tif (\n\t\t\t\t\t\tvariable.scope.type === \"global\" &&\n\t\t\t\t\t\tvariable.defs.length === 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * If the scope of the variable is outside the current code path scope,\n\t\t\t\t\t * we cannot track whether this assignment is not used.\n\t\t\t\t\t */\n\t\t\t\t\tif (\n\t\t\t\t\t\tscopeStack.scope !==\n\t\t\t\t\t\tgetCodePathStartScope(variable.scope)\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Variables marked by `markVariableAsUsed()` or\n\t\t\t\t\t// exported by \"exported\" block comment.\n\t\t\t\t\tif (variable.eslintUsed) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Variables exported by ESM export syntax\n\t\t\t\t\tif (variable.scope.type === \"module\") {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tvariable.defs.some(\n\t\t\t\t\t\t\t\tdef =>\n\t\t\t\t\t\t\t\t\t(def.type === \"Variable\" &&\n\t\t\t\t\t\t\t\t\t\tdef.parent.parent.type ===\n\t\t\t\t\t\t\t\t\t\t\t\"ExportNamedDeclaration\") ||\n\t\t\t\t\t\t\t\t\t(def.type === \"FunctionName\" &&\n\t\t\t\t\t\t\t\t\t\t(def.node.parent.type ===\n\t\t\t\t\t\t\t\t\t\t\t\"ExportNamedDeclaration\" ||\n\t\t\t\t\t\t\t\t\t\t\tdef.node.parent.type ===\n\t\t\t\t\t\t\t\t\t\t\t\t\"ExportDefaultDeclaration\")) ||\n\t\t\t\t\t\t\t\t\t(def.type === \"ClassName\" &&\n\t\t\t\t\t\t\t\t\t\t(def.node.parent.type ===\n\t\t\t\t\t\t\t\t\t\t\t\"ExportNamedDeclaration\" ||\n\t\t\t\t\t\t\t\t\t\t\tdef.node.parent.type ===\n\t\t\t\t\t\t\t\t\t\t\t\t\"ExportDefaultDeclaration\")),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tvariable.references.some(\n\t\t\t\t\t\t\t\treference =>\n\t\t\t\t\t\t\t\t\treference.identifier.parent.type ===\n\t\t\t\t\t\t\t\t\t\"ExportSpecifier\",\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// It have `export { ... }` reference.\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet list = assignments.get(variable);\n\n\t\t\t\t\tif (!list) {\n\t\t\t\t\t\tlist = [];\n\t\t\t\t\t\tassignments.set(variable, list);\n\t\t\t\t\t}\n\t\t\t\t\tlist.push({\n\t\t\t\t\t\tvariable,\n\t\t\t\t\t\tidentifier,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\texpression,\n\t\t\t\t\t\tsegments: [...scopeStack.currentSegments],\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow useless backreferences in regular expressions\n * @author Milos Djermanovic\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst {\n\tCALL,\n\tCONSTRUCT,\n\tReferenceTracker,\n\tgetStringIfConstant,\n} = require(\"@eslint-community/eslint-utils\");\nconst { RegExpParser, visitRegExpAST } = require(\"@eslint-community/regexpp\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst parser = new RegExpParser();\n\n/**\n * Finds the path from the given `regexpp` AST node to the root node.\n * @param {regexpp.Node} node Node.\n * @returns {regexpp.Node[]} Array that starts with the given node and ends with the root node.\n */\nfunction getPathToRoot(node) {\n\tconst path = [];\n\tlet current = node;\n\n\tdo {\n\t\tpath.push(current);\n\t\tcurrent = current.parent;\n\t} while (current);\n\n\treturn path;\n}\n\n/**\n * Determines whether the given `regexpp` AST node is a lookaround node.\n * @param {regexpp.Node} node Node.\n * @returns {boolean} `true` if it is a lookaround node.\n */\nfunction isLookaround(node) {\n\treturn (\n\t\tnode.type === \"Assertion\" &&\n\t\t(node.kind === \"lookahead\" || node.kind === \"lookbehind\")\n\t);\n}\n\n/**\n * Determines whether the given `regexpp` AST node is a negative lookaround node.\n * @param {regexpp.Node} node Node.\n * @returns {boolean} `true` if it is a negative lookaround node.\n */\nfunction isNegativeLookaround(node) {\n\treturn isLookaround(node) && node.negate;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow useless backreferences in regular expressions\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-useless-backreference\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnested: \"Backreference '{{ bref }}' will be ignored. It references group '{{ group }}'{{ otherGroups }} from within that group.\",\n\t\t\tforward:\n\t\t\t\t\"Backreference '{{ bref }}' will be ignored. It references group '{{ group }}'{{ otherGroups }} which appears later in the pattern.\",\n\t\t\tbackward:\n\t\t\t\t\"Backreference '{{ bref }}' will be ignored. It references group '{{ group }}'{{ otherGroups }} which appears before in the same lookbehind.\",\n\t\t\tdisjunctive:\n\t\t\t\t\"Backreference '{{ bref }}' will be ignored. It references group '{{ group }}'{{ otherGroups }} which is in another alternative.\",\n\t\t\tintoNegativeLookaround:\n\t\t\t\t\"Backreference '{{ bref }}' will be ignored. It references group '{{ group }}'{{ otherGroups }} which is in a negative lookaround.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Checks and reports useless backreferences in the given regular expression.\n\t\t * @param {ASTNode} node Node that represents regular expression. A regex literal or RegExp constructor call.\n\t\t * @param {string} pattern Regular expression pattern.\n\t\t * @param {string} flags Regular expression flags.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkRegex(node, pattern, flags) {\n\t\t\tlet regExpAST;\n\n\t\t\ttry {\n\t\t\t\tregExpAST = parser.parsePattern(pattern, 0, pattern.length, {\n\t\t\t\t\tunicode: flags.includes(\"u\"),\n\t\t\t\t\tunicodeSets: flags.includes(\"v\"),\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\t// Ignore regular expressions with syntax errors\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvisitRegExpAST(regExpAST, {\n\t\t\t\tonBackreferenceEnter(bref) {\n\t\t\t\t\tconst groups = [bref.resolved].flat(),\n\t\t\t\t\t\tbrefPath = getPathToRoot(bref);\n\n\t\t\t\t\tconst problems = groups.map(group => {\n\t\t\t\t\t\tconst groupPath = getPathToRoot(group);\n\n\t\t\t\t\t\tif (brefPath.includes(group)) {\n\t\t\t\t\t\t\t// group is bref's ancestor => bref is nested ('nested reference') => group hasn't matched yet when bref starts to match.\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tmessageId: \"nested\",\n\t\t\t\t\t\t\t\tgroup,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Start from the root to find the lowest common ancestor.\n\t\t\t\t\t\tlet i = brefPath.length - 1,\n\t\t\t\t\t\t\tj = groupPath.length - 1;\n\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\ti--;\n\t\t\t\t\t\t\tj--;\n\t\t\t\t\t\t} while (brefPath[i] === groupPath[j]);\n\n\t\t\t\t\t\tconst indexOfLowestCommonAncestor = j + 1,\n\t\t\t\t\t\t\tgroupCut = groupPath.slice(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tindexOfLowestCommonAncestor,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tcommonPath = groupPath.slice(\n\t\t\t\t\t\t\t\tindexOfLowestCommonAncestor,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tlowestCommonLookaround =\n\t\t\t\t\t\t\t\tcommonPath.find(isLookaround),\n\t\t\t\t\t\t\tisMatchingBackward =\n\t\t\t\t\t\t\t\tlowestCommonLookaround &&\n\t\t\t\t\t\t\t\tlowestCommonLookaround.kind === \"lookbehind\";\n\n\t\t\t\t\t\tif (groupCut.at(-1).type === \"Alternative\") {\n\t\t\t\t\t\t\t// group's and bref's ancestor nodes below the lowest common ancestor are sibling alternatives => they're disjunctive.\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tmessageId: \"disjunctive\",\n\t\t\t\t\t\t\t\tgroup,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!isMatchingBackward && bref.end <= group.start) {\n\t\t\t\t\t\t\t// bref is left, group is right ('forward reference') => group hasn't matched yet when bref starts to match.\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tmessageId: \"forward\",\n\t\t\t\t\t\t\t\tgroup,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (isMatchingBackward && group.end <= bref.start) {\n\t\t\t\t\t\t\t// the opposite of the previous when the regex is matching backward in a lookbehind context.\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tmessageId: \"backward\",\n\t\t\t\t\t\t\t\tgroup,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (groupCut.some(isNegativeLookaround)) {\n\t\t\t\t\t\t\t// group is in a negative lookaround which isn't bref's ancestor => group has already failed when bref starts to match.\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tmessageId: \"intoNegativeLookaround\",\n\t\t\t\t\t\t\t\tgroup,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t});\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tproblems.length === 0 ||\n\t\t\t\t\t\tproblems.some(problem => !problem)\n\t\t\t\t\t) {\n\t\t\t\t\t\t// If there are no problems or no problems with any group then do not report it.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet problemsToReport;\n\n\t\t\t\t\t// Gets problems that appear in the same disjunction.\n\t\t\t\t\tconst problemsInSameDisjunction = problems.filter(\n\t\t\t\t\t\tproblem => problem.messageId !== \"disjunctive\",\n\t\t\t\t\t);\n\n\t\t\t\t\tif (problemsInSameDisjunction.length) {\n\t\t\t\t\t\t// Only report problems that appear in the same disjunction.\n\t\t\t\t\t\tproblemsToReport = problemsInSameDisjunction;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// If all groups appear in different disjunctions, report it.\n\t\t\t\t\t\tproblemsToReport = problems;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [{ messageId, group }, ...other] = problemsToReport;\n\t\t\t\t\tlet otherGroups = \"\";\n\n\t\t\t\t\tif (other.length === 1) {\n\t\t\t\t\t\totherGroups = \" and another group\";\n\t\t\t\t\t} else if (other.length > 1) {\n\t\t\t\t\t\totherGroups = ` and other ${other.length} groups`;\n\t\t\t\t\t}\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tbref: bref.raw,\n\t\t\t\t\t\t\tgroup: group.raw,\n\t\t\t\t\t\t\totherGroups,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\t\"Literal[regex]\"(node) {\n\t\t\t\tconst { pattern, flags } = node.regex;\n\n\t\t\t\tcheckRegex(node, pattern, flags);\n\t\t\t},\n\t\t\tProgram(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node),\n\t\t\t\t\ttracker = new ReferenceTracker(scope),\n\t\t\t\t\ttraceMap = {\n\t\t\t\t\t\tRegExp: {\n\t\t\t\t\t\t\t[CALL]: true,\n\t\t\t\t\t\t\t[CONSTRUCT]: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\tfor (const { node: refNode } of tracker.iterateGlobalReferences(\n\t\t\t\t\ttraceMap,\n\t\t\t\t)) {\n\t\t\t\t\tconst [patternNode, flagsNode] = refNode.arguments,\n\t\t\t\t\t\tpattern = getStringIfConstant(patternNode, scope),\n\t\t\t\t\t\tflags = getStringIfConstant(flagsNode, scope);\n\n\t\t\t\t\tif (typeof pattern === \"string\") {\n\t\t\t\t\t\tcheckRegex(refNode, pattern, flags || \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to disallow unnecessary `.call()` and `.apply()`.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether or not a node is a `.call()`/`.apply()`.\n * @param {ASTNode} node A CallExpression node to check.\n * @returns {boolean} Whether or not the node is a `.call()`/`.apply()`.\n */\nfunction isCallOrNonVariadicApply(node) {\n\tconst callee = astUtils.skipChainExpression(node.callee);\n\n\treturn (\n\t\tcallee.type === \"MemberExpression\" &&\n\t\tcallee.property.type === \"Identifier\" &&\n\t\tcallee.computed === false &&\n\t\t((callee.property.name === \"call\" && node.arguments.length >= 1) ||\n\t\t\t(callee.property.name === \"apply\" &&\n\t\t\t\tnode.arguments.length === 2 &&\n\t\t\t\tnode.arguments[1].type === \"ArrayExpression\"))\n\t);\n}\n\n/**\n * Checks whether or not `thisArg` is not changed by `.call()`/`.apply()`.\n * @param {ASTNode|null} expectedThis The node that is the owner of the applied function.\n * @param {ASTNode} thisArg The node that is given to the first argument of the `.call()`/`.apply()`.\n * @param {SourceCode} sourceCode The ESLint source code object.\n * @returns {boolean} Whether or not `thisArg` is not changed by `.call()`/`.apply()`.\n */\nfunction isValidThisArg(expectedThis, thisArg, sourceCode) {\n\tif (!expectedThis) {\n\t\treturn astUtils.isNullOrUndefined(thisArg);\n\t}\n\treturn astUtils.equalTokens(expectedThis, thisArg, sourceCode);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow unnecessary calls to `.call()` and `.apply()`\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-useless-call\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunnecessaryCall: \"Unnecessary '.{{name}}()'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tCallExpression(node) {\n\t\t\t\tif (!isCallOrNonVariadicApply(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst callee = astUtils.skipChainExpression(node.callee);\n\t\t\t\tconst applied = astUtils.skipChainExpression(callee.object);\n\t\t\t\tconst expectedThis =\n\t\t\t\t\tapplied.type === \"MemberExpression\" ? applied.object : null;\n\t\t\t\tconst thisArg = node.arguments[0];\n\n\t\t\t\tif (isValidThisArg(expectedThis, thisArg, sourceCode)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unnecessaryCall\",\n\t\t\t\t\t\tdata: { name: callee.property.name },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Reports useless `catch` clauses that just rethrow their error.\n * @author Teddy Katz\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow unnecessary `catch` clauses\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-useless-catch\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunnecessaryCatchClause: \"Unnecessary catch clause.\",\n\t\t\tunnecessaryCatch: \"Unnecessary try/catch wrapper.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\treturn {\n\t\t\tCatchClause(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.param &&\n\t\t\t\t\tnode.param.type === \"Identifier\" &&\n\t\t\t\t\tnode.body.body.length &&\n\t\t\t\t\tnode.body.body[0].type === \"ThrowStatement\" &&\n\t\t\t\t\tnode.body.body[0].argument.type === \"Identifier\" &&\n\t\t\t\t\tnode.body.body[0].argument.name === node.param.name\n\t\t\t\t) {\n\t\t\t\t\tif (node.parent.finalizer) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"unnecessaryCatchClause\",\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: node.parent,\n\t\t\t\t\t\t\tmessageId: \"unnecessaryCatch\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow unnecessary computed property keys in object literals\n * @author Burak Yigit Kaya\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Determines whether the computed key syntax is unnecessarily used for the given node.\n * In particular, it determines whether removing the square brackets and using the content between them\n * directly as the key (e.g. ['foo'] -> 'foo') would produce valid syntax and preserve the same behavior.\n * Valid non-computed keys are only: identifiers, number literals and string literals.\n * Only literals can preserve the same behavior, with a few exceptions for specific node types:\n * Property\n *   - { [\"__proto__\"]: foo } defines a property named \"__proto__\"\n *     { \"__proto__\": foo } defines object's prototype\n * PropertyDefinition\n *   - class C { [\"constructor\"]; } defines an instance field named \"constructor\"\n *     class C { \"constructor\"; } produces a parsing error\n *   - class C { static [\"constructor\"]; } defines a static field named \"constructor\"\n *     class C { static \"constructor\"; } produces a parsing error\n *   - class C { static [\"prototype\"]; } produces a runtime error (doesn't break the whole script)\n *     class C { static \"prototype\"; } produces a parsing error (breaks the whole script)\n * MethodDefinition\n *   - class C { [\"constructor\"]() {} } defines a prototype method named \"constructor\"\n *     class C { \"constructor\"() {} } defines the constructor\n *   - class C { static [\"prototype\"]() {} } produces a runtime error (doesn't break the whole script)\n *     class C { static \"prototype\"() {} } produces a parsing error (breaks the whole script)\n * @param {ASTNode} node The node to check. It can be `Property`, `PropertyDefinition` or `MethodDefinition`.\n * @throws {Error} (Unreachable.)\n * @returns {void} `true` if the node has useless computed key.\n */\nfunction hasUselessComputedKey(node) {\n\tif (!node.computed) {\n\t\treturn false;\n\t}\n\n\tconst { key } = node;\n\n\tif (key.type !== \"Literal\") {\n\t\treturn false;\n\t}\n\n\tconst { value } = key;\n\n\tif (typeof value !== \"number\" && typeof value !== \"string\") {\n\t\treturn false;\n\t}\n\n\tswitch (node.type) {\n\t\tcase \"Property\":\n\t\t\tif (node.parent.type === \"ObjectExpression\") {\n\t\t\t\treturn value !== \"__proto__\";\n\t\t\t}\n\t\t\treturn true;\n\n\t\tcase \"PropertyDefinition\":\n\t\t\tif (node.static) {\n\t\t\t\treturn value !== \"constructor\" && value !== \"prototype\";\n\t\t\t}\n\n\t\t\treturn value !== \"constructor\";\n\n\t\tcase \"MethodDefinition\":\n\t\t\tif (node.static) {\n\t\t\t\treturn value !== \"prototype\";\n\t\t\t}\n\n\t\t\treturn value !== \"constructor\";\n\n\t\t/* c8 ignore next */\n\t\tdefault:\n\t\t\tthrow new Error(`Unexpected node type: ${node.type}`);\n\t}\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tenforceForClassMembers: true,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow unnecessary computed property keys in objects and classes\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-useless-computed-key\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tenforceForClassMembers: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tunnecessarilyComputedProperty:\n\t\t\t\t\"Unnecessarily computed property [{{property}}] found.\",\n\t\t},\n\t},\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst [{ enforceForClassMembers }] = context.options;\n\n\t\t/**\n\t\t * Reports a given node if it violated this rule.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction check(node) {\n\t\t\tif (hasUselessComputedKey(node)) {\n\t\t\t\tconst { key } = node;\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unnecessarilyComputedProperty\",\n\t\t\t\t\tdata: { property: sourceCode.getText(key) },\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tconst leftSquareBracket = sourceCode.getTokenBefore(\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tastUtils.isOpeningBracketToken,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst rightSquareBracket = sourceCode.getTokenAfter(\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tastUtils.isClosingBracketToken,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// If there are comments between the brackets and the property name, don't do a fix.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tsourceCode.commentsExistBetween(\n\t\t\t\t\t\t\t\tleftSquareBracket,\n\t\t\t\t\t\t\t\trightSquareBracket,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst tokenBeforeLeftBracket =\n\t\t\t\t\t\t\tsourceCode.getTokenBefore(leftSquareBracket);\n\n\t\t\t\t\t\t// Insert a space before the key to avoid changing identifiers, e.g. ({ get[2]() {} }) to ({ get2() {} })\n\t\t\t\t\t\tconst needsSpaceBeforeKey =\n\t\t\t\t\t\t\ttokenBeforeLeftBracket.range[1] ===\n\t\t\t\t\t\t\t\tleftSquareBracket.range[0] &&\n\t\t\t\t\t\t\t!astUtils.canTokensBeAdjacent(\n\t\t\t\t\t\t\t\ttokenBeforeLeftBracket,\n\t\t\t\t\t\t\t\tsourceCode.getFirstToken(key),\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst replacementKey =\n\t\t\t\t\t\t\t(needsSpaceBeforeKey ? \" \" : \"\") + key.raw;\n\n\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tleftSquareBracket.range[0],\n\t\t\t\t\t\t\t\trightSquareBracket.range[1],\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\treplacementKey,\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * A no-op function to act as placeholder for checking a node when the `enforceForClassMembers` option is `false`.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction noop() {}\n\n\t\treturn {\n\t\t\tProperty: check,\n\t\t\tMethodDefinition: enforceForClassMembers ? check : noop,\n\t\t\tPropertyDefinition: enforceForClassMembers ? check : noop,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview disallow unnecessary concatenation of template strings\n * @author Henry Zhu\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether or not a given node is a concatenation.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} `true` if the node is a concatenation.\n */\nfunction isConcatenation(node) {\n\treturn node.type === \"BinaryExpression\" && node.operator === \"+\";\n}\n\n/**\n * Checks if the given token is a `+` token or not.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the token is a `+` token.\n */\nfunction isConcatOperatorToken(token) {\n\treturn token.value === \"+\" && token.type === \"Punctuator\";\n}\n\n/**\n * Gets the right most node on the left side of a BinaryExpression with + operator.\n * @param {ASTNode} node A BinaryExpression node to check.\n * @returns {ASTNode} node\n */\nfunction getLeft(node) {\n\tlet left = node.left;\n\n\twhile (isConcatenation(left)) {\n\t\tleft = left.right;\n\t}\n\treturn left;\n}\n\n/**\n * Gets the left most node on the right side of a BinaryExpression with + operator.\n * @param {ASTNode} node A BinaryExpression node to check.\n * @returns {ASTNode} node\n */\nfunction getRight(node) {\n\tlet right = node.right;\n\n\twhile (isConcatenation(right)) {\n\t\tright = right.left;\n\t}\n\treturn right;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow unnecessary concatenation of literals or template literals\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-useless-concat\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpectedConcat: \"Unexpected string concatenation of literals.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tBinaryExpression(node) {\n\t\t\t\t// check if not concatenation\n\t\t\t\tif (node.operator !== \"+\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// account for the `foo + \"a\" + \"b\"` case\n\t\t\t\tconst left = getLeft(node);\n\t\t\t\tconst right = getRight(node);\n\n\t\t\t\tif (\n\t\t\t\t\tastUtils.isStringLiteral(left) &&\n\t\t\t\t\tastUtils.isStringLiteral(right) &&\n\t\t\t\t\tastUtils.isTokenOnSameLine(left, right)\n\t\t\t\t) {\n\t\t\t\t\tconst operatorToken = sourceCode.getFirstTokenBetween(\n\t\t\t\t\t\tleft,\n\t\t\t\t\t\tright,\n\t\t\t\t\t\tisConcatOperatorToken,\n\t\t\t\t\t);\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: operatorToken.loc,\n\t\t\t\t\t\tmessageId: \"unexpectedConcat\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag the use of redundant constructors in classes.\n * @author Alberto Rodr\u00EDguez\n */\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether any of a method's parameters have a decorator or are a parameter property.\n * @param {ASTNode} node A method definition node.\n * @returns {boolean} `true` if any parameter had a decorator or is a parameter property.\n */\nfunction hasDecoratorsOrParameterProperty(node) {\n\treturn node.value.params.some(\n\t\tparam =>\n\t\t\tparam.decorators?.length || param.type === \"TSParameterProperty\",\n\t);\n}\n\n/**\n * Checks whether a node's accessibility makes it not useless.\n * @param {ASTNode} node A method definition node.\n * @returns {boolean} `true` if the node has a useful accessibility.\n */\nfunction hasUsefulAccessibility(node) {\n\tswitch (node.accessibility) {\n\t\tcase \"protected\":\n\t\tcase \"private\":\n\t\t\treturn true;\n\t\tcase \"public\":\n\t\t\treturn !!node.parent.parent.superClass;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\n/**\n * Checks whether a given array of statements is a single call of `super`.\n * @param {ASTNode[]} body An array of statements to check.\n * @returns {boolean} `true` if the body is a single call of `super`.\n */\nfunction isSingleSuperCall(body) {\n\treturn (\n\t\tbody.length === 1 &&\n\t\tbody[0].type === \"ExpressionStatement\" &&\n\t\tbody[0].expression.type === \"CallExpression\" &&\n\t\tbody[0].expression.callee.type === \"Super\"\n\t);\n}\n\n/**\n * Checks whether a given node is a pattern which doesn't have any side effects.\n * Default parameters and Destructuring parameters can have side effects.\n * @param {ASTNode} node A pattern node.\n * @returns {boolean} `true` if the node doesn't have any side effects.\n */\nfunction isSimple(node) {\n\treturn node.type === \"Identifier\" || node.type === \"RestElement\";\n}\n\n/**\n * Checks whether a given array of expressions is `...arguments` or not.\n * `super(...arguments)` passes all arguments through.\n * @param {ASTNode[]} superArgs An array of expressions to check.\n * @returns {boolean} `true` if the superArgs is `...arguments`.\n */\nfunction isSpreadArguments(superArgs) {\n\treturn (\n\t\tsuperArgs.length === 1 &&\n\t\tsuperArgs[0].type === \"SpreadElement\" &&\n\t\tsuperArgs[0].argument.type === \"Identifier\" &&\n\t\tsuperArgs[0].argument.name === \"arguments\"\n\t);\n}\n\n/**\n * Checks whether given 2 nodes are identifiers which have the same name or not.\n * @param {ASTNode} ctorParam A node to check.\n * @param {ASTNode} superArg A node to check.\n * @returns {boolean} `true` if the nodes are identifiers which have the same\n *      name.\n */\nfunction isValidIdentifierPair(ctorParam, superArg) {\n\treturn (\n\t\tctorParam.type === \"Identifier\" &&\n\t\tsuperArg.type === \"Identifier\" &&\n\t\tctorParam.name === superArg.name\n\t);\n}\n\n/**\n * Checks whether given 2 nodes are a rest/spread pair which has the same values.\n * @param {ASTNode} ctorParam A node to check.\n * @param {ASTNode} superArg A node to check.\n * @returns {boolean} `true` if the nodes are a rest/spread pair which has the\n *      same values.\n */\nfunction isValidRestSpreadPair(ctorParam, superArg) {\n\treturn (\n\t\tctorParam.type === \"RestElement\" &&\n\t\tsuperArg.type === \"SpreadElement\" &&\n\t\tisValidIdentifierPair(ctorParam.argument, superArg.argument)\n\t);\n}\n\n/**\n * Checks whether given 2 nodes have the same value or not.\n * @param {ASTNode} ctorParam A node to check.\n * @param {ASTNode} superArg A node to check.\n * @returns {boolean} `true` if the nodes have the same value or not.\n */\nfunction isValidPair(ctorParam, superArg) {\n\treturn (\n\t\tisValidIdentifierPair(ctorParam, superArg) ||\n\t\tisValidRestSpreadPair(ctorParam, superArg)\n\t);\n}\n\n/**\n * Checks whether the parameters of a constructor and the arguments of `super()`\n * have the same values or not.\n * @param {ASTNode} ctorParams The parameters of a constructor to check.\n * @param {ASTNode} superArgs The arguments of `super()` to check.\n * @returns {boolean} `true` if those have the same values.\n */\nfunction isPassingThrough(ctorParams, superArgs) {\n\tif (ctorParams.length !== superArgs.length) {\n\t\treturn false;\n\t}\n\n\tfor (let i = 0; i < ctorParams.length; ++i) {\n\t\tif (!isValidPair(ctorParams[i], superArgs[i])) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Checks whether the constructor body is a redundant super call.\n * @param {Array} body constructor body content.\n * @param {Array} ctorParams The params to check against super call.\n * @returns {boolean} true if the constructor body is redundant\n */\nfunction isRedundantSuperCall(body, ctorParams) {\n\treturn (\n\t\tisSingleSuperCall(body) &&\n\t\tctorParams.every(isSimple) &&\n\t\t(isSpreadArguments(body[0].expression.arguments) ||\n\t\t\tisPassingThrough(ctorParams, body[0].expression.arguments))\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow unnecessary constructors\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-useless-constructor\",\n\t\t},\n\n\t\thasSuggestions: true,\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tnoUselessConstructor: \"Useless constructor.\",\n\t\t\tremoveConstructor: \"Remove the constructor.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst { sourceCode } = context;\n\n\t\t/**\n\t\t * Checks whether a node is a redundant constructor\n\t\t * @param {ASTNode} node node to check\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForConstructor(node) {\n\t\t\tif (\n\t\t\t\tnode.kind !== \"constructor\" ||\n\t\t\t\tnode.value.type !== \"FunctionExpression\" ||\n\t\t\t\thasDecoratorsOrParameterProperty(node) ||\n\t\t\t\thasUsefulAccessibility(node)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Prevent crashing on parsers which do not require class constructor\n\t\t\t * to have a body, e.g. typescript and flow\n\t\t\t */\n\t\t\tif (!node.value.body) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst body = node.value.body.body;\n\t\t\tconst ctorParams = node.value.params;\n\t\t\tconst superClass = node.parent.parent.superClass;\n\t\t\tconst parenToken = sourceCode.getFirstToken(\n\t\t\t\tnode,\n\t\t\t\tastUtils.isOpeningParenToken,\n\t\t\t);\n\t\t\tconst loc = {\n\t\t\t\tstart: node.loc.start,\n\t\t\t\tend: sourceCode.getTokenBefore(parenToken).loc.end,\n\t\t\t};\n\n\t\t\tif (\n\t\t\t\tsuperClass\n\t\t\t\t\t? isRedundantSuperCall(body, ctorParams)\n\t\t\t\t\t: body.length === 0\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tloc,\n\t\t\t\t\tmessageId: \"noUselessConstructor\",\n\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmessageId: \"removeConstructor\",\n\t\t\t\t\t\t\t*fix(fixer) {\n\t\t\t\t\t\t\t\tconst nextToken =\n\t\t\t\t\t\t\t\t\tsourceCode.getTokenAfter(node);\n\t\t\t\t\t\t\t\tconst addSemiColon =\n\t\t\t\t\t\t\t\t\tastUtils.canContinueExpressionInClassBody(\n\t\t\t\t\t\t\t\t\t\tnextToken,\n\t\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\t\tastUtils.needsPrecedingSemicolon(\n\t\t\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tyield fixer.replaceText(\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\taddSemiColon ? \";\" : \"\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tMethodDefinition: checkForConstructor,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Look for useless escapes in strings and regexes\n * @author Onur Temizkan\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst { RegExpParser, visitRegExpAST } = require(\"@eslint-community/regexpp\");\n\n/**\n * @typedef {import('@eslint-community/regexpp').AST.CharacterClass} CharacterClass\n * @typedef {import('@eslint-community/regexpp').AST.ExpressionCharacterClass} ExpressionCharacterClass\n */\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/**\n * Returns the union of two sets.\n * @param {Set} setA The first set\n * @param {Set} setB The second set\n * @returns {Set} The union of the two sets\n */\nfunction union(setA, setB) {\n\treturn new Set(\n\t\t(function* () {\n\t\t\tyield* setA;\n\t\t\tyield* setB;\n\t\t})(),\n\t);\n}\n\nconst VALID_STRING_ESCAPES = union(new Set(\"\\\\nrvtbfux\"), astUtils.LINEBREAKS);\nconst REGEX_GENERAL_ESCAPES = new Set(\"\\\\bcdDfnpPrsStvwWxu0123456789]\");\nconst REGEX_NON_CHARCLASS_ESCAPES = union(\n\tREGEX_GENERAL_ESCAPES,\n\tnew Set(\"^/.$*+?[{}|()Bk\"),\n);\n\n/*\n * Set of characters that require escaping in character classes in `unicodeSets` mode.\n * ( ) [ ] { } / - \\ | are ClassSetSyntaxCharacter\n */\nconst REGEX_CLASSSET_CHARACTER_ESCAPES = union(\n\tREGEX_GENERAL_ESCAPES,\n\tnew Set(\"q/[{}|()-\"),\n);\n\n/*\n * A single character set of ClassSetReservedDoublePunctuator.\n * && !! ## $$ %% ** ++ ,, .. :: ;; << == >> ?? @@ ^^ `` ~~ are ClassSetReservedDoublePunctuator\n */\nconst REGEX_CLASS_SET_RESERVED_DOUBLE_PUNCTUATOR = new Set(\n\t\"!#$%&*+,.:;<=>?@^`~\",\n);\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowRegexCharacters: [],\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow unnecessary escape characters\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-useless-escape\",\n\t\t},\n\n\t\thasSuggestions: true,\n\n\t\tmessages: {\n\t\t\tunnecessaryEscape: \"Unnecessary escape character: \\\\{{character}}.\",\n\t\t\tremoveEscape:\n\t\t\t\t\"Remove the `\\\\`. This maintains the current functionality.\",\n\t\t\tremoveEscapeDoNotKeepSemantics:\n\t\t\t\t\"Remove the `\\\\` if it was inserted by mistake.\",\n\t\t\tescapeBackslash:\n\t\t\t\t\"Replace the `\\\\` with `\\\\\\\\` to include the actual backslash character.\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowRegexCharacters: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst [{ allowRegexCharacters }] = context.options;\n\t\tconst parser = new RegExpParser();\n\n\t\t/**\n\t\t * Reports a node\n\t\t * @param {ASTNode} node The node to report\n\t\t * @param {number} startOffset The backslash's offset from the start of the node\n\t\t * @param {string} character The uselessly escaped character (not including the backslash)\n\t\t * @param {boolean} [disableEscapeBackslashSuggest] `true` if escapeBackslash suggestion should be turned off.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(\n\t\t\tnode,\n\t\t\tstartOffset,\n\t\t\tcharacter,\n\t\t\tdisableEscapeBackslashSuggest,\n\t\t) {\n\t\t\tconst rangeStart = node.range[0] + startOffset;\n\t\t\tconst range = [rangeStart, rangeStart + 1];\n\t\t\tconst start = sourceCode.getLocFromIndex(rangeStart);\n\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: {\n\t\t\t\t\tstart,\n\t\t\t\t\tend: { line: start.line, column: start.column + 1 },\n\t\t\t\t},\n\t\t\t\tmessageId: \"unnecessaryEscape\",\n\t\t\t\tdata: { character },\n\t\t\t\tsuggest: [\n\t\t\t\t\t{\n\t\t\t\t\t\t// Removing unnecessary `\\` characters in a directive is not guaranteed to maintain functionality.\n\t\t\t\t\t\tmessageId: astUtils.isDirective(node.parent)\n\t\t\t\t\t\t\t? \"removeEscapeDoNotKeepSemantics\"\n\t\t\t\t\t\t\t: \"removeEscape\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.removeRange(range);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t...(disableEscapeBackslashSuggest\n\t\t\t\t\t\t? []\n\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmessageId: \"escapeBackslash\",\n\t\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\t\treturn fixer.insertTextBeforeRange(\n\t\t\t\t\t\t\t\t\t\t\trange,\n\t\t\t\t\t\t\t\t\t\t\t\"\\\\\",\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t]),\n\t\t\t\t],\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Checks if the escape character in given string slice is unnecessary.\n\t\t * @private\n\t\t * @param {ASTNode} node node to validate.\n\t\t * @param {string} match string slice to validate.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction validateString(node, match) {\n\t\t\tconst isTemplateElement = node.type === \"TemplateElement\";\n\t\t\tconst escapedChar = match[0][1];\n\t\t\tlet isUnnecessaryEscape = !VALID_STRING_ESCAPES.has(escapedChar);\n\t\t\tlet isQuoteEscape;\n\n\t\t\tif (isTemplateElement) {\n\t\t\t\tisQuoteEscape = escapedChar === \"`\";\n\n\t\t\t\tif (escapedChar === \"$\") {\n\t\t\t\t\t// Warn if `\\$` is not followed by `{`\n\t\t\t\t\tisUnnecessaryEscape = match.input[match.index + 2] !== \"{\";\n\t\t\t\t} else if (escapedChar === \"{\") {\n\t\t\t\t\t/*\n\t\t\t\t\t * Warn if `\\{` is not preceded by `$`. If preceded by `$`, escaping\n\t\t\t\t\t * is necessary and the rule should not warn. If preceded by `/$`, the rule\n\t\t\t\t\t * will warn for the `/$` instead, as it is the first unnecessarily escaped character.\n\t\t\t\t\t */\n\t\t\t\t\tisUnnecessaryEscape = match.input[match.index - 1] !== \"$\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisQuoteEscape = escapedChar === node.raw[0];\n\t\t\t}\n\n\t\t\tif (isUnnecessaryEscape && !isQuoteEscape) {\n\t\t\t\treport(node, match.index, match[0].slice(1));\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks if the escape character in given regexp is unnecessary.\n\t\t * @private\n\t\t * @param {ASTNode} node node to validate.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction validateRegExp(node) {\n\t\t\tconst { pattern, flags } = node.regex;\n\t\t\tlet patternNode;\n\t\t\tconst unicode = flags.includes(\"u\");\n\t\t\tconst unicodeSets = flags.includes(\"v\");\n\n\t\t\ttry {\n\t\t\t\tpatternNode = parser.parsePattern(pattern, 0, pattern.length, {\n\t\t\t\t\tunicode,\n\t\t\t\t\tunicodeSets,\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\t// Ignore regular expressions with syntax errors\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/** @type {(CharacterClass | ExpressionCharacterClass)[]} */\n\t\t\tconst characterClassStack = [];\n\n\t\t\tvisitRegExpAST(patternNode, {\n\t\t\t\tonCharacterClassEnter: characterClassNode =>\n\t\t\t\t\tcharacterClassStack.unshift(characterClassNode),\n\t\t\t\tonCharacterClassLeave: () => characterClassStack.shift(),\n\t\t\t\tonExpressionCharacterClassEnter: characterClassNode =>\n\t\t\t\t\tcharacterClassStack.unshift(characterClassNode),\n\t\t\t\tonExpressionCharacterClassLeave: () =>\n\t\t\t\t\tcharacterClassStack.shift(),\n\t\t\t\tonCharacterEnter(characterNode) {\n\t\t\t\t\tif (!characterNode.raw.startsWith(\"\\\\\")) {\n\t\t\t\t\t\t// It's not an escaped character.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst escapedChar = characterNode.raw.slice(1);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tescapedChar !==\n\t\t\t\t\t\t\tString.fromCodePoint(characterNode.value) ||\n\t\t\t\t\t\tallowRegexCharacters.includes(escapedChar)\n\t\t\t\t\t) {\n\t\t\t\t\t\t// It's a valid escape.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tlet allowedEscapes;\n\n\t\t\t\t\tif (characterClassStack.length) {\n\t\t\t\t\t\tallowedEscapes = unicodeSets\n\t\t\t\t\t\t\t? REGEX_CLASSSET_CHARACTER_ESCAPES\n\t\t\t\t\t\t\t: REGEX_GENERAL_ESCAPES;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tallowedEscapes = REGEX_NON_CHARCLASS_ESCAPES;\n\t\t\t\t\t}\n\t\t\t\t\tif (allowedEscapes.has(escapedChar)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst reportedIndex = characterNode.start + 1;\n\t\t\t\t\tlet disableEscapeBackslashSuggest = false;\n\n\t\t\t\t\tif (characterClassStack.length) {\n\t\t\t\t\t\tconst characterClassNode = characterClassStack[0];\n\n\t\t\t\t\t\tif (escapedChar === \"^\") {\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * The '^' character is also a special case; it must always be escaped outside of character classes, but\n\t\t\t\t\t\t\t * it only needs to be escaped in character classes if it's at the beginning of the character class. To\n\t\t\t\t\t\t\t * account for this, consider it to be a valid escape character outside of character classes, and filter\n\t\t\t\t\t\t\t * out '^' characters that appear at the start of a character class.\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tcharacterClassNode.start + 1 ===\n\t\t\t\t\t\t\t\tcharacterNode.start\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!unicodeSets) {\n\t\t\t\t\t\t\tif (escapedChar === \"-\") {\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * The '-' character is a special case, because it's only valid to escape it if it's in a character\n\t\t\t\t\t\t\t\t * class, and is not at either edge of the character class. To account for this, don't consider '-'\n\t\t\t\t\t\t\t\t * characters to be valid in general, and filter out '-' characters that appear in the middle of a\n\t\t\t\t\t\t\t\t * character class.\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tcharacterClassNode.start + 1 !==\n\t\t\t\t\t\t\t\t\t\tcharacterNode.start &&\n\t\t\t\t\t\t\t\t\tcharacterNode.end !==\n\t\t\t\t\t\t\t\t\t\tcharacterClassNode.end - 1\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// unicodeSets mode\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tREGEX_CLASS_SET_RESERVED_DOUBLE_PUNCTUATOR.has(\n\t\t\t\t\t\t\t\t\tescapedChar,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// Escaping is valid if it is a ClassSetReservedDoublePunctuator.\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tpattern[characterNode.end] === escapedChar\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tpattern[characterNode.start - 1] ===\n\t\t\t\t\t\t\t\t\tescapedChar\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tif (escapedChar !== \"^\") {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// If the previous character is a `negate` caret(`^`), escape to caret is unnecessary.\n\n\t\t\t\t\t\t\t\t\tif (!characterClassNode.negate) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst negateCaretIndex =\n\t\t\t\t\t\t\t\t\t\tcharacterClassNode.start + 1;\n\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tnegateCaretIndex <\n\t\t\t\t\t\t\t\t\t\tcharacterNode.start - 1\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tcharacterNode.parent.type ===\n\t\t\t\t\t\t\t\t\t\"ClassIntersection\" ||\n\t\t\t\t\t\t\t\tcharacterNode.parent.type === \"ClassSubtraction\"\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tdisableEscapeBackslashSuggest = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treport(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\treportedIndex,\n\t\t\t\t\t\tescapedChar,\n\t\t\t\t\t\tdisableEscapeBackslashSuggest,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Checks if a node has an escape.\n\t\t * @param {ASTNode} node node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction check(node) {\n\t\t\tconst isTemplateElement = node.type === \"TemplateElement\";\n\n\t\t\tif (\n\t\t\t\tisTemplateElement &&\n\t\t\t\tnode.parent &&\n\t\t\t\tnode.parent.parent &&\n\t\t\t\tnode.parent.parent.type === \"TaggedTemplateExpression\" &&\n\t\t\t\tnode.parent === node.parent.parent.quasi\n\t\t\t) {\n\t\t\t\t// Don't report tagged template literals, because the backslash character is accessible to the tag function.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof node.value === \"string\" || isTemplateElement) {\n\t\t\t\t/*\n\t\t\t\t * JSXAttribute doesn't have any escape sequence: https://facebook.github.io/jsx/.\n\t\t\t\t * In addition, backticks are not supported by JSX yet: https://github.com/facebook/jsx/issues/25.\n\t\t\t\t */\n\t\t\t\tif (\n\t\t\t\t\tnode.parent.type === \"JSXAttribute\" ||\n\t\t\t\t\tnode.parent.type === \"JSXElement\" ||\n\t\t\t\t\tnode.parent.type === \"JSXFragment\"\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst value = isTemplateElement\n\t\t\t\t\t? sourceCode.getText(node)\n\t\t\t\t\t: node.raw;\n\t\t\t\tconst pattern = /\\\\\\D/gu;\n\t\t\t\tlet match;\n\n\t\t\t\twhile ((match = pattern.exec(value))) {\n\t\t\t\t\tvalidateString(node, match);\n\t\t\t\t}\n\t\t\t} else if (node.regex) {\n\t\t\t\tvalidateRegExp(node);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tLiteral: check,\n\t\t\tTemplateElement: check,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallow renaming import, export, and destructured assignments to the same name.\n * @author Kai Cataldo\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tignoreDestructuring: false,\n\t\t\t\tignoreImport: false,\n\t\t\t\tignoreExport: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow renaming import, export, and destructured assignments to the same name\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-useless-rename\",\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tignoreDestructuring: { type: \"boolean\" },\n\t\t\t\t\tignoreImport: { type: \"boolean\" },\n\t\t\t\t\tignoreExport: { type: \"boolean\" },\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunnecessarilyRenamed: \"{{type}} {{name}} unnecessarily renamed.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst [{ ignoreDestructuring, ignoreImport, ignoreExport }] =\n\t\t\tcontext.options;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Reports error for unnecessarily renamed assignments\n\t\t * @param {ASTNode} node node to report\n\t\t * @param {ASTNode} initial node with initial name value\n\t\t * @param {string} type the type of the offending node\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportError(node, initial, type) {\n\t\t\tconst name =\n\t\t\t\tinitial.type === \"Identifier\" ? initial.name : initial.value;\n\n\t\t\treturn context.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"unnecessarilyRenamed\",\n\t\t\t\tdata: {\n\t\t\t\t\tname,\n\t\t\t\t\ttype,\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\tconst replacementNode =\n\t\t\t\t\t\tnode.type === \"Property\" ? node.value : node.local;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tsourceCode.getCommentsInside(node).length >\n\t\t\t\t\t\tsourceCode.getCommentsInside(replacementNode).length\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Don't autofix code such as `({foo: (foo) = a} = obj);`, parens are not allowed in shorthand properties.\n\t\t\t\t\tif (\n\t\t\t\t\t\treplacementNode.type === \"AssignmentPattern\" &&\n\t\t\t\t\t\tastUtils.isParenthesised(\n\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\treplacementNode.left,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tsourceCode.getText(replacementNode),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a destructured assignment is unnecessarily renamed\n\t\t * @param {ASTNode} node node to check\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkDestructured(node) {\n\t\t\tif (ignoreDestructuring) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (const property of node.properties) {\n\t\t\t\t/**\n\t\t\t\t * Properties using shorthand syntax and rest elements can not be renamed.\n\t\t\t\t * If the property is computed, we have no idea if a rename is useless or not.\n\t\t\t\t */\n\t\t\t\tif (\n\t\t\t\t\tproperty.type !== \"Property\" ||\n\t\t\t\t\tproperty.shorthand ||\n\t\t\t\t\tproperty.computed\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst key =\n\t\t\t\t\t(property.key.type === \"Identifier\" && property.key.name) ||\n\t\t\t\t\t(property.key.type === \"Literal\" && property.key.value);\n\t\t\t\tconst renamedKey =\n\t\t\t\t\tproperty.value.type === \"AssignmentPattern\"\n\t\t\t\t\t\t? property.value.left.name\n\t\t\t\t\t\t: property.value.name;\n\n\t\t\t\tif (key === renamedKey) {\n\t\t\t\t\treportError(\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\tproperty.key,\n\t\t\t\t\t\t\"Destructuring assignment\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks whether an import is unnecessarily renamed\n\t\t * @param {ASTNode} node node to check\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkImport(node) {\n\t\t\tif (ignoreImport) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tnode.imported.range[0] !== node.local.range[0] &&\n\t\t\t\tastUtils.getModuleExportName(node.imported) === node.local.name\n\t\t\t) {\n\t\t\t\treportError(node, node.imported, \"Import\");\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks whether an export is unnecessarily renamed\n\t\t * @param {ASTNode} node node to check\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkExport(node) {\n\t\t\tif (ignoreExport) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tnode.local.range[0] !== node.exported.range[0] &&\n\t\t\t\tastUtils.getModuleExportName(node.local) ===\n\t\t\t\t\tastUtils.getModuleExportName(node.exported)\n\t\t\t) {\n\t\t\t\treportError(node, node.local, \"Export\");\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tObjectPattern: checkDestructured,\n\t\t\tImportSpecifier: checkImport,\n\t\t\tExportSpecifier: checkExport,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallow redundant return statements\n * @author Teddy Katz\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\"),\n\tFixTracker = require(\"./utils/fix-tracker\");\nconst { isAnySegmentReachable } = require(\"./utils/code-path-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Removes the given element from the array.\n * @param {Array} array The source array to remove.\n * @param {any} element The target item to remove.\n * @returns {void}\n */\nfunction remove(array, element) {\n\tconst index = array.indexOf(element);\n\n\tif (index !== -1) {\n\t\tarray.splice(index, 1);\n\t}\n}\n\n/**\n * Checks whether it can remove the given return statement or not.\n * @param {ASTNode} node The return statement node to check.\n * @returns {boolean} `true` if the node is removable.\n */\nfunction isRemovable(node) {\n\treturn astUtils.STATEMENT_LIST_PARENTS.has(node.parent.type);\n}\n\n/**\n * Checks whether the given return statement is in a `finally` block or not.\n * @param {ASTNode} node The return statement node to check.\n * @returns {boolean} `true` if the node is in a `finally` block.\n */\nfunction isInFinally(node) {\n\tfor (\n\t\tlet currentNode = node;\n\t\tcurrentNode && currentNode.parent && !astUtils.isFunction(currentNode);\n\t\tcurrentNode = currentNode.parent\n\t) {\n\t\tif (\n\t\t\tcurrentNode.parent.type === \"TryStatement\" &&\n\t\t\tcurrentNode.parent.finalizer === currentNode\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow redundant return statements\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-useless-return\",\n\t\t},\n\n\t\tfixable: \"code\",\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunnecessaryReturn: \"Unnecessary return statement.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst segmentInfoMap = new WeakMap();\n\t\tconst sourceCode = context.sourceCode;\n\t\tlet scopeInfo = null;\n\n\t\t/**\n\t\t * Checks whether the given segment is terminated by a return statement or not.\n\t\t * @param {CodePathSegment} segment The segment to check.\n\t\t * @returns {boolean} `true` if the segment is terminated by a return statement, or if it's still a part of unreachable.\n\t\t */\n\t\tfunction isReturned(segment) {\n\t\t\tconst info = segmentInfoMap.get(segment);\n\n\t\t\treturn !info || info.returned;\n\t\t}\n\n\t\t/**\n\t\t * Collects useless return statements from the given previous segments.\n\t\t *\n\t\t * A previous segment may be an unreachable segment.\n\t\t * In that case, the information object of the unreachable segment is not\n\t\t * initialized because `onCodePathSegmentStart` event is not notified for\n\t\t * unreachable segments.\n\t\t * This goes to the previous segments of the unreachable segment recursively\n\t\t * if the unreachable segment was generated by a return statement. Otherwise,\n\t\t * this ignores the unreachable segment.\n\t\t *\n\t\t * This behavior would simulate code paths for the case that the return\n\t\t * statement does not exist.\n\t\t * @param {ASTNode[]} uselessReturns The collected return statements.\n\t\t * @param {CodePathSegment[]} prevSegments The previous segments to traverse.\n\t\t * @param {WeakSet<CodePathSegment>} [providedTraversedSegments] A set of segments that have already been traversed in this call\n\t\t * @returns {ASTNode[]} `uselessReturns`.\n\t\t */\n\t\tfunction getUselessReturns(\n\t\t\tuselessReturns,\n\t\t\tprevSegments,\n\t\t\tprovidedTraversedSegments,\n\t\t) {\n\t\t\tconst traversedSegments =\n\t\t\t\tprovidedTraversedSegments || new WeakSet();\n\n\t\t\tfor (const segment of prevSegments) {\n\t\t\t\tif (!segment.reachable) {\n\t\t\t\t\tif (!traversedSegments.has(segment)) {\n\t\t\t\t\t\ttraversedSegments.add(segment);\n\t\t\t\t\t\tgetUselessReturns(\n\t\t\t\t\t\t\tuselessReturns,\n\t\t\t\t\t\t\tsegment.allPrevSegments.filter(isReturned),\n\t\t\t\t\t\t\ttraversedSegments,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (segmentInfoMap.has(segment)) {\n\t\t\t\t\tuselessReturns.push(\n\t\t\t\t\t\t...segmentInfoMap.get(segment).uselessReturns,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn uselessReturns;\n\t\t}\n\n\t\t/**\n\t\t * Removes the return statements on the given segment from the useless return\n\t\t * statement list.\n\t\t *\n\t\t * This segment may be an unreachable segment.\n\t\t * In that case, the information object of the unreachable segment is not\n\t\t * initialized because `onCodePathSegmentStart` event is not notified for\n\t\t * unreachable segments.\n\t\t * This goes to the previous segments of the unreachable segment recursively\n\t\t * if the unreachable segment was generated by a return statement. Otherwise,\n\t\t * this ignores the unreachable segment.\n\t\t *\n\t\t * This behavior would simulate code paths for the case that the return\n\t\t * statement does not exist.\n\t\t * @param {CodePathSegment} segment The segment to get return statements.\n\t\t * @param {Set<CodePathSegment>} usedUnreachableSegments A set of segments that have already been traversed in this call.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction markReturnStatementsOnSegmentAsUsed(\n\t\t\tsegment,\n\t\t\tusedUnreachableSegments,\n\t\t) {\n\t\t\tif (!segment.reachable) {\n\t\t\t\tusedUnreachableSegments.add(segment);\n\t\t\t\tsegment.allPrevSegments\n\t\t\t\t\t.filter(isReturned)\n\t\t\t\t\t.filter(\n\t\t\t\t\t\tprevSegment =>\n\t\t\t\t\t\t\t!usedUnreachableSegments.has(prevSegment),\n\t\t\t\t\t)\n\t\t\t\t\t.forEach(prevSegment =>\n\t\t\t\t\t\tmarkReturnStatementsOnSegmentAsUsed(\n\t\t\t\t\t\t\tprevSegment,\n\t\t\t\t\t\t\tusedUnreachableSegments,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst info = segmentInfoMap.get(segment);\n\n\t\t\tif (!info) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinfo.uselessReturns = info.uselessReturns.filter(node => {\n\t\t\t\tif (\n\t\t\t\t\tscopeInfo.traversedTryBlockStatements &&\n\t\t\t\t\tscopeInfo.traversedTryBlockStatements.length > 0\n\t\t\t\t) {\n\t\t\t\t\tconst returnInitialRange = node.range[0];\n\t\t\t\t\tconst returnFinalRange = node.range[1];\n\n\t\t\t\t\tconst areBlocksInRange =\n\t\t\t\t\t\tscopeInfo.traversedTryBlockStatements.some(\n\t\t\t\t\t\t\ttryBlockStatement => {\n\t\t\t\t\t\t\t\tconst blockInitialRange =\n\t\t\t\t\t\t\t\t\ttryBlockStatement.range[0];\n\t\t\t\t\t\t\t\tconst blockFinalRange =\n\t\t\t\t\t\t\t\t\ttryBlockStatement.range[1];\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\treturnInitialRange >= blockInitialRange &&\n\t\t\t\t\t\t\t\t\treturnFinalRange <= blockFinalRange\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\n\t\t\t\t\tif (areBlocksInRange) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tremove(scopeInfo.uselessReturns, node);\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Removes the return statements on the current segments from the useless\n\t\t * return statement list.\n\t\t *\n\t\t * This function will be called at every statement except FunctionDeclaration,\n\t\t * BlockStatement, and BreakStatement.\n\t\t *\n\t\t * - FunctionDeclarations are always executed whether it's returned or not.\n\t\t * - BlockStatements do nothing.\n\t\t * - BreakStatements go the next merely.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction markReturnStatementsOnCurrentSegmentsAsUsed() {\n\t\t\tscopeInfo.currentSegments.forEach(segment =>\n\t\t\t\tmarkReturnStatementsOnSegmentAsUsed(segment, new Set()),\n\t\t\t);\n\t\t}\n\n\t\t//----------------------------------------------------------------------\n\t\t// Public\n\t\t//----------------------------------------------------------------------\n\n\t\treturn {\n\t\t\t// Makes and pushes a new scope information.\n\t\t\tonCodePathStart(codePath) {\n\t\t\t\tscopeInfo = {\n\t\t\t\t\tupper: scopeInfo,\n\t\t\t\t\tuselessReturns: [],\n\t\t\t\t\ttraversedTryBlockStatements: [],\n\t\t\t\t\tcodePath,\n\t\t\t\t\tcurrentSegments: new Set(),\n\t\t\t\t};\n\t\t\t},\n\n\t\t\t// Reports useless return statements if exist.\n\t\t\tonCodePathEnd() {\n\t\t\t\tfor (const node of scopeInfo.uselessReturns) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: node.loc,\n\t\t\t\t\t\tmessageId: \"unnecessaryReturn\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tisRemovable(node) &&\n\t\t\t\t\t\t\t\t!sourceCode.getCommentsInside(node).length\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * Extend the replacement range to include the\n\t\t\t\t\t\t\t\t * entire function to avoid conflicting with\n\t\t\t\t\t\t\t\t * no-else-return.\n\t\t\t\t\t\t\t\t * https://github.com/eslint/eslint/issues/8026\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\treturn new FixTracker(fixer, sourceCode)\n\t\t\t\t\t\t\t\t\t.retainEnclosingFunction(node)\n\t\t\t\t\t\t\t\t\t.remove(node);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tscopeInfo = scopeInfo.upper;\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * Initializes segments.\n\t\t\t * NOTE: This event is notified for only reachable segments.\n\t\t\t */\n\t\t\tonCodePathSegmentStart(segment) {\n\t\t\t\tscopeInfo.currentSegments.add(segment);\n\n\t\t\t\tconst info = {\n\t\t\t\t\tuselessReturns: getUselessReturns(\n\t\t\t\t\t\t[],\n\t\t\t\t\t\tsegment.allPrevSegments,\n\t\t\t\t\t),\n\t\t\t\t\treturned: false,\n\t\t\t\t};\n\n\t\t\t\t// Stores the info.\n\t\t\t\tsegmentInfoMap.set(segment, info);\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentStart(segment) {\n\t\t\t\tscopeInfo.currentSegments.add(segment);\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentEnd(segment) {\n\t\t\t\tscopeInfo.currentSegments.delete(segment);\n\t\t\t},\n\n\t\t\tonCodePathSegmentEnd(segment) {\n\t\t\t\tscopeInfo.currentSegments.delete(segment);\n\t\t\t},\n\n\t\t\t// Adds ReturnStatement node to check whether it's useless or not.\n\t\t\tReturnStatement(node) {\n\t\t\t\tif (node.argument) {\n\t\t\t\t\tmarkReturnStatementsOnCurrentSegmentsAsUsed();\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tnode.argument ||\n\t\t\t\t\tastUtils.isInLoop(node) ||\n\t\t\t\t\tisInFinally(node) ||\n\t\t\t\t\t// Ignore `return` statements in unreachable places (https://github.com/eslint/eslint/issues/11647).\n\t\t\t\t\t!isAnySegmentReachable(scopeInfo.currentSegments)\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (const segment of scopeInfo.currentSegments) {\n\t\t\t\t\tconst info = segmentInfoMap.get(segment);\n\n\t\t\t\t\tif (info) {\n\t\t\t\t\t\tinfo.uselessReturns.push(node);\n\t\t\t\t\t\tinfo.returned = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tscopeInfo.uselessReturns.push(node);\n\t\t\t},\n\n\t\t\t\"TryStatement > BlockStatement.block:exit\"(node) {\n\t\t\t\tscopeInfo.traversedTryBlockStatements.push(node);\n\t\t\t},\n\n\t\t\t\"TryStatement:exit\"() {\n\t\t\t\tscopeInfo.traversedTryBlockStatements.pop();\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * Registers for all statement nodes except FunctionDeclaration, BlockStatement, BreakStatement.\n\t\t\t * Removes return statements of the current segments from the useless return statement list.\n\t\t\t */\n\t\t\tClassDeclaration: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tContinueStatement: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tDebuggerStatement: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tDoWhileStatement: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tEmptyStatement: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tExpressionStatement: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tForInStatement: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tForOfStatement: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tForStatement: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tIfStatement: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tImportDeclaration: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tLabeledStatement: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tSwitchStatement: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tThrowStatement: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tTryStatement: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tVariableDeclaration: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tWhileStatement: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tWithStatement: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tExportNamedDeclaration: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tExportDefaultDeclaration:\n\t\t\t\tmarkReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t\tExportAllDeclaration: markReturnStatementsOnCurrentSegmentsAsUsed,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to check for the usage of var.\n * @author Jamund Ferguson\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Scope} Scope */\n/** @typedef {import(\"eslint-scope\").Variable} Variable */\n/** @typedef {import(\"eslint-scope\").Reference} Reference */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Check whether a given variable is a global variable or not.\n * @param {Variable} variable The variable to check.\n * @returns {boolean} `true` if the variable is a global variable.\n */\nfunction isGlobal(variable) {\n\treturn Boolean(variable.scope) && variable.scope.type === \"global\";\n}\n\n/**\n * Finds the nearest function scope or global scope walking up the scope\n * hierarchy.\n * @param {Scope} scope The scope to traverse.\n * @returns {Scope} a function scope or global scope containing the given\n *      scope.\n */\nfunction getEnclosingFunctionScope(scope) {\n\tlet currentScope = scope;\n\n\twhile (currentScope.type !== \"function\" && currentScope.type !== \"global\") {\n\t\tcurrentScope = currentScope.upper;\n\t}\n\treturn currentScope;\n}\n\n/**\n * Checks whether the given variable has any references from a more specific\n * function expression (i.e. a closure).\n * @param {Variable} variable A variable to check.\n * @returns {boolean} `true` if the variable is used from a closure.\n */\nfunction isReferencedInClosure(variable) {\n\tconst enclosingFunctionScope = getEnclosingFunctionScope(variable.scope);\n\n\treturn variable.references.some(\n\t\treference =>\n\t\t\tgetEnclosingFunctionScope(reference.from) !==\n\t\t\tenclosingFunctionScope,\n\t);\n}\n\n/**\n * Checks whether the given node is the assignee of a loop.\n * @param {ASTNode} node A VariableDeclaration node to check.\n * @returns {boolean} `true` if the declaration is assigned as part of loop\n *      iteration.\n */\nfunction isLoopAssignee(node) {\n\treturn (\n\t\t(node.parent.type === \"ForOfStatement\" ||\n\t\t\tnode.parent.type === \"ForInStatement\") &&\n\t\tnode === node.parent.left\n\t);\n}\n\n/**\n * Checks whether the given variable declaration is immediately initialized.\n * @param {ASTNode} node A VariableDeclaration node to check.\n * @returns {boolean} `true` if the declaration has an initializer.\n */\nfunction isDeclarationInitialized(node) {\n\treturn node.declarations.every(declarator => declarator.init !== null);\n}\n\nconst SCOPE_NODE_TYPE =\n\t/^(?:Program|BlockStatement|SwitchStatement|ForStatement|ForInStatement|ForOfStatement)$/u;\n\n/**\n * Gets the scope node which directly contains a given node.\n * @param {ASTNode} node A node to get. This is a `VariableDeclaration` or\n *      an `Identifier`.\n * @returns {ASTNode} A scope node. This is one of `Program`, `BlockStatement`,\n *      `SwitchStatement`, `ForStatement`, `ForInStatement`, and\n *      `ForOfStatement`.\n */\nfunction getScopeNode(node) {\n\tfor (\n\t\tlet currentNode = node;\n\t\tcurrentNode;\n\t\tcurrentNode = currentNode.parent\n\t) {\n\t\tif (SCOPE_NODE_TYPE.test(currentNode.type)) {\n\t\t\treturn currentNode;\n\t\t}\n\t}\n\n\t/* c8 ignore next */\n\treturn null;\n}\n\n/**\n * Checks whether a given variable is redeclared or not.\n * @param {Variable} variable A variable to check.\n * @returns {boolean} `true` if the variable is redeclared.\n */\nfunction isRedeclared(variable) {\n\treturn variable.defs.length >= 2;\n}\n\n/**\n * Checks whether a given variable is used from outside of the specified scope.\n * @param {ASTNode} scopeNode A scope node to check.\n * @returns {Function} The predicate function which checks whether a given\n *      variable is used from outside of the specified scope.\n */\nfunction isUsedFromOutsideOf(scopeNode) {\n\t/**\n\t * Checks whether a given reference is inside of the specified scope or not.\n\t * @param {Reference} reference A reference to check.\n\t * @returns {boolean} `true` if the reference is inside of the specified\n\t *      scope.\n\t */\n\tfunction isOutsideOfScope(reference) {\n\t\tconst scope = scopeNode.range;\n\t\tconst id = reference.identifier.range;\n\n\t\treturn id[0] < scope[0] || id[1] > scope[1];\n\t}\n\n\treturn function (variable) {\n\t\treturn variable.references.some(isOutsideOfScope);\n\t};\n}\n\n/**\n * Creates the predicate function which checks whether a variable has their references in TDZ.\n *\n * The predicate function would return `true`:\n *\n * - if a reference is before the declarator. E.g. (var a = b, b = 1;)(var {a = b, b} = {};)\n * - if a reference is in the expression of their default value.  E.g. (var {a = a} = {};)\n * - if a reference is in the expression of their initializer.  E.g. (var a = a;)\n * @param {ASTNode} node The initializer node of VariableDeclarator.\n * @returns {Function} The predicate function.\n * @private\n */\nfunction hasReferenceInTDZ(node) {\n\tconst initStart = node.range[0];\n\tconst initEnd = node.range[1];\n\n\treturn variable => {\n\t\tconst id = variable.defs[0].name;\n\t\tconst idStart = id.range[0];\n\t\tconst defaultValue =\n\t\t\tid.parent.type === \"AssignmentPattern\" ? id.parent.right : null;\n\t\tconst defaultStart = defaultValue && defaultValue.range[0];\n\t\tconst defaultEnd = defaultValue && defaultValue.range[1];\n\n\t\treturn variable.references.some(reference => {\n\t\t\tconst start = reference.identifier.range[0];\n\t\t\tconst end = reference.identifier.range[1];\n\n\t\t\treturn (\n\t\t\t\t!reference.init &&\n\t\t\t\t(start < idStart ||\n\t\t\t\t\t(defaultValue !== null &&\n\t\t\t\t\t\tstart >= defaultStart &&\n\t\t\t\t\t\tend <= defaultEnd) ||\n\t\t\t\t\t(!astUtils.isFunction(node) &&\n\t\t\t\t\t\tstart >= initStart &&\n\t\t\t\t\t\tend <= initEnd))\n\t\t\t);\n\t\t});\n\t};\n}\n\n/**\n * Checks whether a given variable has name that is allowed for 'var' declarations,\n * but disallowed for `let` declarations.\n * @param {Variable} variable The variable to check.\n * @returns {boolean} `true` if the variable has a disallowed name.\n */\nfunction hasNameDisallowedForLetDeclarations(variable) {\n\treturn variable.name === \"let\";\n}\n\n/**\n * Checks whether a given variable has any references before its declaration.\n * This is important because var allows hoisting, but let/const do not.\n * @param {Variable} variable The variable to check.\n * @returns {boolean} `true` if the variable is referenced before its declaration.\n */\nfunction hasReferenceBeforeDeclaration(variable) {\n\tconst declarationStart = variable.defs[0].node.range[0];\n\n\treturn variable.references.some(reference => {\n\t\tconst referenceStart = reference.identifier.range[0];\n\n\t\t/*\n\t\t * Check if the reference occurs before the declaration.\n\t\t * We don't need to check scopes because all references to this variable\n\t\t * are already in variable.references (which only includes references\n\t\t * that resolve to this specific variable binding).\n\t\t */\n\t\treturn !reference.init && referenceStart < declarationStart;\n\t});\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require `let` or `const` instead of `var`\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-var\",\n\t\t},\n\n\t\tschema: [],\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tunexpectedVar: \"Unexpected var, use let or const instead.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Checks whether the variables which are defined by the given declarator node have their references in TDZ.\n\t\t * @param {ASTNode} declarator The VariableDeclarator node to check.\n\t\t * @returns {boolean} `true` if one of the variables which are defined by the given declarator node have their references in TDZ.\n\t\t */\n\t\tfunction hasSelfReferenceInTDZ(declarator) {\n\t\t\tif (!declarator.init) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst variables = sourceCode.getDeclaredVariables(declarator);\n\n\t\t\treturn variables.some(hasReferenceInTDZ(declarator.init));\n\t\t}\n\n\t\t/**\n\t\t * Checks whether it can fix a given variable declaration or not.\n\t\t * It cannot fix if the following cases:\n\t\t *\n\t\t * - A variable is a global variable.\n\t\t * - A variable is declared on a SwitchCase node.\n\t\t * - A variable is redeclared.\n\t\t * - A variable is used from outside the scope.\n\t\t * - A variable is used from a closure within a loop.\n\t\t * - A variable might be used before it is assigned within a loop.\n\t\t * - A variable might be used in TDZ.\n\t\t * - A variable is referenced before its declaration.\n\t\t * - A variable is declared in statement position (e.g. a single-line `IfStatement`)\n\t\t * - A variable has name that is disallowed for `let` declarations.\n\t\t *\n\t\t * ## A variable is declared on a SwitchCase node.\n\t\t *\n\t\t * If this rule modifies 'var' declarations on a SwitchCase node, it\n\t\t * would generate the warnings of 'no-case-declarations' rule. And the\n\t\t * 'eslint:recommended' preset includes 'no-case-declarations' rule, so\n\t\t * this rule doesn't modify those declarations.\n\t\t *\n\t\t * ## A variable is redeclared.\n\t\t *\n\t\t * The language spec disallows redeclarations of `let` declarations.\n\t\t * Those variables would cause syntax errors.\n\t\t *\n\t\t * ## A variable is used from outside the scope.\n\t\t *\n\t\t * The language spec disallows accesses from outside of the scope for\n\t\t * `let` declarations. Those variables would cause reference errors.\n\t\t *\n\t\t * ## A variable is used from a closure within a loop.\n\t\t *\n\t\t * A `var` declaration within a loop shares the same variable instance\n\t\t * across all loop iterations, while a `let` declaration creates a new\n\t\t * instance for each iteration. This means if a variable in a loop is\n\t\t * referenced by any closure, changing it from `var` to `let` would\n\t\t * change the behavior in a way that is generally unsafe.\n\t\t *\n\t\t * ## A variable might be used before it is assigned within a loop.\n\t\t *\n\t\t * Within a loop, a `let` declaration without an initializer will be\n\t\t * initialized to null, while a `var` declaration will retain its value\n\t\t * from the previous iteration, so it is only safe to change `var` to\n\t\t * `let` if we can statically determine that the variable is always\n\t\t * assigned a value before its first access in the loop body. To keep\n\t\t * the implementation simple, we only convert `var` to `let` within\n\t\t * loops when the variable is a loop assignee or the declaration has an\n\t\t * initializer.\n\t\t * @param {ASTNode} node A variable declaration node to check.\n\t\t * @returns {boolean} `true` if it can fix the node.\n\t\t */\n\t\tfunction canFix(node) {\n\t\t\tconst variables = sourceCode.getDeclaredVariables(node);\n\t\t\tconst scopeNode = getScopeNode(node);\n\t\t\tconst parentStatementList = new Set([\n\t\t\t\t...astUtils.STATEMENT_LIST_PARENTS,\n\t\t\t\t\"TSModuleBlock\",\n\t\t\t]);\n\n\t\t\tif (\n\t\t\t\tnode.parent.type === \"SwitchCase\" ||\n\t\t\t\tnode.declarations.some(hasSelfReferenceInTDZ) ||\n\t\t\t\tvariables.some(isGlobal) ||\n\t\t\t\tvariables.some(isRedeclared) ||\n\t\t\t\tvariables.some(isUsedFromOutsideOf(scopeNode)) ||\n\t\t\t\tvariables.some(hasNameDisallowedForLetDeclarations) ||\n\t\t\t\tvariables.some(hasReferenceBeforeDeclaration)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (astUtils.isInLoop(node)) {\n\t\t\t\tif (variables.some(isReferencedInClosure)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (!isLoopAssignee(node) && !isDeclarationInitialized(node)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!isLoopAssignee(node) &&\n\t\t\t\t!(\n\t\t\t\t\tnode.parent.type === \"ForStatement\" &&\n\t\t\t\t\tnode.parent.init === node\n\t\t\t\t) &&\n\t\t\t\t!parentStatementList.has(node.parent.type)\n\t\t\t) {\n\t\t\t\t// If the declaration is not in a block, e.g. `if (foo) var bar = 1;`, then it can't be fixed.\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * Reports a given variable declaration node.\n\t\t * @param {ASTNode} node A variable declaration node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"unexpectedVar\",\n\n\t\t\t\tfix(fixer) {\n\t\t\t\t\tconst varToken = sourceCode.getFirstToken(node, {\n\t\t\t\t\t\tfilter: t => t.value === \"var\",\n\t\t\t\t\t});\n\n\t\t\t\t\treturn canFix(node)\n\t\t\t\t\t\t? fixer.replaceText(varToken, \"let\")\n\t\t\t\t\t\t: null;\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\t\"VariableDeclaration:exit\"(node) {\n\t\t\t\tif (node.kind !== \"var\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tnode.parent.type === \"TSModuleBlock\" &&\n\t\t\t\t\tnode.parent.parent.type === \"TSModuleDeclaration\" &&\n\t\t\t\t\tnode.parent.parent.global\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treport(node);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow use of void operator.\n * @author Mike Sidorov\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowAsStatement: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow `void` operators\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-void\",\n\t\t},\n\n\t\tmessages: {\n\t\t\tnoVoid: \"Expected 'undefined' and instead saw 'void'.\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowAsStatement: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t},\n\n\tcreate(context) {\n\t\tconst [{ allowAsStatement }] = context.options;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\t'UnaryExpression[operator=\"void\"]'(node) {\n\t\t\t\tif (\n\t\t\t\t\tallowAsStatement &&\n\t\t\t\t\tnode.parent &&\n\t\t\t\t\tnode.parent.type === \"ExpressionStatement\"\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"noVoid\",\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule that warns about used warning comments\n * @author Alexander Schmidt <https://github.com/lxanders>\n */\n\n\"use strict\";\n\nconst escapeRegExp = require(\"escape-string-regexp\");\nconst astUtils = require(\"./utils/ast-utils\");\n\nconst CHAR_LIMIT = 40;\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tlocation: \"start\",\n\t\t\t\tterms: [\"todo\", \"fixme\", \"xxx\"],\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow specified warning terms in comments\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-warning-comments\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tterms: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tlocation: {\n\t\t\t\t\t\tenum: [\"start\", \"anywhere\"],\n\t\t\t\t\t},\n\t\t\t\t\tdecoration: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\tpattern: \"^\\\\S$\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tminItems: 1,\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedComment:\n\t\t\t\t\"Unexpected '{{matchedTerm}}' comment: '{{comment}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst [{ decoration, location, terms: warningTerms }] = context.options;\n\t\tconst escapedDecoration = escapeRegExp(\n\t\t\tdecoration ? decoration.join(\"\") : \"\",\n\t\t);\n\t\tconst selfConfigRegEx = /\\bno-warning-comments\\b/u;\n\n\t\t/**\n\t\t * Convert a warning term into a RegExp which will match a comment containing that whole word in the specified\n\t\t * location (\"start\" or \"anywhere\"). If the term starts or ends with non word characters, then the match will not\n\t\t * require word boundaries on that side.\n\t\t * @param {string} term A term to convert to a RegExp\n\t\t * @returns {RegExp} The term converted to a RegExp\n\t\t */\n\t\tfunction convertToRegExp(term) {\n\t\t\tconst escaped = escapeRegExp(term);\n\n\t\t\t/*\n\t\t\t * When matching at the start, ignore leading whitespace, and\n\t\t\t * there's no need to worry about word boundaries.\n\t\t\t *\n\t\t\t * These expressions for the prefix and suffix are designed as follows:\n\t\t\t * ^   handles any terms at the beginning of a comment.\n\t\t\t *     e.g. terms [\"TODO\"] matches `//TODO something`\n\t\t\t * $   handles any terms at the end of a comment\n\t\t\t *     e.g. terms [\"TODO\"] matches `// something TODO`\n\t\t\t * \\b  handles terms preceded/followed by word boundary\n\t\t\t *     e.g. terms: [\"!FIX\", \"FIX!\"] matches `// FIX!something` or `// something!FIX`\n\t\t\t *          terms: [\"FIX\"] matches `// FIX!` or `// !FIX`, but not `// fixed or affix`\n\t\t\t *\n\t\t\t * For location start:\n\t\t\t * [\\s]* handles optional leading spaces\n\t\t\t *     e.g. terms [\"TODO\"] matches `//    TODO something`\n\t\t\t * [\\s\\*]* (where \"\\*\" is the escaped string of decoration)\n\t\t\t *     handles optional leading spaces or decoration characters (for \"start\" location only)\n\t\t\t *     e.g. terms [\"TODO\"] matches `/**** TODO something ... `\n\t\t\t */\n\t\t\tconst wordBoundary = \"\\\\b\";\n\n\t\t\tlet prefix = \"\";\n\n\t\t\tif (location === \"start\") {\n\t\t\t\tprefix = `^[\\\\s${escapedDecoration}]*`;\n\t\t\t} else if (/^\\w/u.test(term)) {\n\t\t\t\tprefix = wordBoundary;\n\t\t\t}\n\n\t\t\tconst suffix = /\\w$/u.test(term) ? wordBoundary : \"\";\n\t\t\tconst flags = \"iu\"; // Case-insensitive with Unicode case folding.\n\n\t\t\t/*\n\t\t\t * For location \"start\", the typical regex is:\n\t\t\t *   /^[\\s]*ESCAPED_TERM\\b/iu.\n\t\t\t * Or if decoration characters are specified (e.g. \"*\"), then any of\n\t\t\t * those characters may appear in any order at the start:\n\t\t\t *   /^[\\s\\*]*ESCAPED_TERM\\b/iu.\n\t\t\t *\n\t\t\t * For location \"anywhere\" the typical regex is\n\t\t\t *   /\\bESCAPED_TERM\\b/iu\n\t\t\t *\n\t\t\t * If it starts or ends with non-word character, the prefix and suffix are empty, respectively.\n\t\t\t */\n\t\t\treturn new RegExp(`${prefix}${escaped}${suffix}`, flags);\n\t\t}\n\n\t\tconst warningRegExps = warningTerms.map(convertToRegExp);\n\n\t\t/**\n\t\t * Checks the specified comment for matches of the configured warning terms and returns the matches.\n\t\t * @param {string} comment The comment which is checked.\n\t\t * @returns {Array} All matched warning terms for this comment.\n\t\t */\n\t\tfunction commentContainsWarningTerm(comment) {\n\t\t\tconst matches = [];\n\n\t\t\twarningRegExps.forEach((regex, index) => {\n\t\t\t\tif (regex.test(comment)) {\n\t\t\t\t\tmatches.push(warningTerms[index]);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn matches;\n\t\t}\n\n\t\t/**\n\t\t * Checks the specified node for matching warning comments and reports them.\n\t\t * @param {ASTNode} node The AST node being checked.\n\t\t * @returns {void} undefined.\n\t\t */\n\t\tfunction checkComment(node) {\n\t\t\tconst comment = node.value;\n\n\t\t\tif (\n\t\t\t\tastUtils.isDirectiveComment(node) &&\n\t\t\t\tselfConfigRegEx.test(comment)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst matches = commentContainsWarningTerm(comment);\n\n\t\t\tmatches.forEach(matchedTerm => {\n\t\t\t\tlet commentToDisplay = \"\";\n\t\t\t\tlet truncated = false;\n\n\t\t\t\tfor (const c of comment.trim().split(/\\s+/u)) {\n\t\t\t\t\tconst tmp = commentToDisplay\n\t\t\t\t\t\t? `${commentToDisplay} ${c}`\n\t\t\t\t\t\t: c;\n\n\t\t\t\t\tif (tmp.length <= CHAR_LIMIT) {\n\t\t\t\t\t\tcommentToDisplay = tmp;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttruncated = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unexpectedComment\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmatchedTerm,\n\t\t\t\t\t\tcomment: `${commentToDisplay}${truncated ? \"...\" : \"\"}`,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tProgram() {\n\t\t\t\tconst comments = sourceCode.getAllComments();\n\n\t\t\t\tcomments\n\t\t\t\t\t.filter(token => token.type !== \"Shebang\")\n\t\t\t\t\t.forEach(checkComment);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow whitespace before properties\n * @author Kai Cataldo\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"no-whitespace-before-property\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/no-whitespace-before-property\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow whitespace before properties\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-whitespace-before-property\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpectedWhitespace:\n\t\t\t\t\"Unexpected whitespace before property {{propName}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Reports whitespace before property token\n\t\t * @param {ASTNode} node the node to report in the event of an error\n\t\t * @param {Token} leftToken the left token\n\t\t * @param {Token} rightToken the right token\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction reportError(node, leftToken, rightToken) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"unexpectedWhitespace\",\n\t\t\t\tdata: {\n\t\t\t\t\tpropName: sourceCode.getText(node.property),\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\tlet replacementText = \"\";\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!node.computed &&\n\t\t\t\t\t\t!node.optional &&\n\t\t\t\t\t\tastUtils.isDecimalInteger(node.object)\n\t\t\t\t\t) {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If the object is a number literal, fixing it to something like 5.toString() would cause a SyntaxError.\n\t\t\t\t\t\t * Don't fix this case.\n\t\t\t\t\t\t */\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Don't fix if comments exist.\n\t\t\t\t\tif (\n\t\t\t\t\t\tsourceCode.commentsExistBetween(leftToken, rightToken)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (node.optional) {\n\t\t\t\t\t\treplacementText = \"?.\";\n\t\t\t\t\t} else if (!node.computed) {\n\t\t\t\t\t\treplacementText = \".\";\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t[leftToken.range[1], rightToken.range[0]],\n\t\t\t\t\t\treplacementText,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tMemberExpression(node) {\n\t\t\t\tlet rightToken;\n\t\t\t\tlet leftToken;\n\n\t\t\t\tif (!astUtils.isTokenOnSameLine(node.object, node.property)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (node.computed) {\n\t\t\t\t\trightToken = sourceCode.getTokenBefore(\n\t\t\t\t\t\tnode.property,\n\t\t\t\t\t\tastUtils.isOpeningBracketToken,\n\t\t\t\t\t);\n\t\t\t\t\tleftToken = sourceCode.getTokenBefore(\n\t\t\t\t\t\trightToken,\n\t\t\t\t\t\tnode.optional ? 1 : 0,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\trightToken = sourceCode.getFirstToken(node.property);\n\t\t\t\t\tleftToken = sourceCode.getTokenBefore(rightToken, 1);\n\t\t\t\t}\n\n\t\t\t\tif (sourceCode.isSpaceBetween(leftToken, rightToken)) {\n\t\t\t\t\treportError(node, leftToken, rightToken);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of with statement\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Disallow `with` statements\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/no-with\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tunexpectedWith: \"Unexpected use of 'with' statement.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tWithStatement(node) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: sourceCode.getFirstToken(node).loc,\n\t\t\t\t\tmessageId: \"unexpectedWith\",\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview enforce the location of single-line statements\n * @author Teddy Katz\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\nconst POSITION_SCHEMA = { enum: [\"beside\", \"below\", \"any\"] };\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"nonblock-statement-body-position\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/nonblock-statement-body-position\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce the location of single-line statements\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/nonblock-statement-body-position\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\tPOSITION_SCHEMA,\n\t\t\t{\n\t\t\t\tproperties: {\n\t\t\t\t\toverrides: {\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tif: POSITION_SCHEMA,\n\t\t\t\t\t\t\telse: POSITION_SCHEMA,\n\t\t\t\t\t\t\twhile: POSITION_SCHEMA,\n\t\t\t\t\t\t\tdo: POSITION_SCHEMA,\n\t\t\t\t\t\t\tfor: POSITION_SCHEMA,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\texpectNoLinebreak: \"Expected no linebreak before this statement.\",\n\t\t\texpectLinebreak: \"Expected a linebreak before this statement.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//----------------------------------------------------------------------\n\t\t// Helpers\n\t\t//----------------------------------------------------------------------\n\n\t\t/**\n\t\t * Gets the applicable preference for a particular keyword\n\t\t * @param {string} keywordName The name of a keyword, e.g. 'if'\n\t\t * @returns {string} The applicable option for the keyword, e.g. 'beside'\n\t\t */\n\t\tfunction getOption(keywordName) {\n\t\t\treturn (\n\t\t\t\t(context.options[1] &&\n\t\t\t\t\tcontext.options[1].overrides &&\n\t\t\t\t\tcontext.options[1].overrides[keywordName]) ||\n\t\t\t\tcontext.options[0] ||\n\t\t\t\t\"beside\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Validates the location of a single-line statement\n\t\t * @param {ASTNode} node The single-line statement\n\t\t * @param {string} keywordName The applicable keyword name for the single-line statement\n\t\t * @returns {void}\n\t\t */\n\t\tfunction validateStatement(node, keywordName) {\n\t\t\tconst option = getOption(keywordName);\n\n\t\t\tif (node.type === \"BlockStatement\" || option === \"any\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst tokenBefore = sourceCode.getTokenBefore(node);\n\n\t\t\tif (\n\t\t\t\ttokenBefore.loc.end.line === node.loc.start.line &&\n\t\t\t\toption === \"below\"\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"expectLinebreak\",\n\t\t\t\t\tfix: fixer => fixer.insertTextBefore(node, \"\\n\"),\n\t\t\t\t});\n\t\t\t} else if (\n\t\t\t\ttokenBefore.loc.end.line !== node.loc.start.line &&\n\t\t\t\toption === \"beside\"\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"expectNoLinebreak\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tsourceCode\n\t\t\t\t\t\t\t\t.getText()\n\t\t\t\t\t\t\t\t.slice(tokenBefore.range[1], node.range[0])\n\t\t\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t[tokenBefore.range[1], node.range[0]],\n\t\t\t\t\t\t\t\" \",\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//----------------------------------------------------------------------\n\t\t// Public\n\t\t//----------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tIfStatement(node) {\n\t\t\t\tvalidateStatement(node.consequent, \"if\");\n\n\t\t\t\t// Check the `else` node, but don't check 'else if' statements.\n\t\t\t\tif (node.alternate && node.alternate.type !== \"IfStatement\") {\n\t\t\t\t\tvalidateStatement(node.alternate, \"else\");\n\t\t\t\t}\n\t\t\t},\n\t\t\tWhileStatement: node => validateStatement(node.body, \"while\"),\n\t\t\tDoWhileStatement: node => validateStatement(node.body, \"do\"),\n\t\t\tForStatement: node => validateStatement(node.body, \"for\"),\n\t\t\tForInStatement: node => validateStatement(node.body, \"for\"),\n\t\t\tForOfStatement: node => validateStatement(node.body, \"for\"),\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to require or disallow line breaks inside braces.\n * @author Toru Nagashima\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n// Schema objects.\nconst OPTION_VALUE = {\n\toneOf: [\n\t\t{\n\t\t\tenum: [\"always\", \"never\"],\n\t\t},\n\t\t{\n\t\t\ttype: \"object\",\n\t\t\tproperties: {\n\t\t\t\tmultiline: {\n\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t},\n\t\t\t\tminProperties: {\n\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\tminimum: 0,\n\t\t\t\t},\n\t\t\t\tconsistent: {\n\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tadditionalProperties: false,\n\t\t\tminProperties: 1,\n\t\t},\n\t],\n};\n\n/**\n * Normalizes a given option value.\n * @param {string|Object|undefined} value An option value to parse.\n * @returns {{multiline: boolean, minProperties: number, consistent: boolean}} Normalized option object.\n */\nfunction normalizeOptionValue(value) {\n\tlet multiline = false;\n\tlet minProperties = Number.POSITIVE_INFINITY;\n\tlet consistent = false;\n\n\tif (value) {\n\t\tif (value === \"always\") {\n\t\t\tminProperties = 0;\n\t\t} else if (value === \"never\") {\n\t\t\tminProperties = Number.POSITIVE_INFINITY;\n\t\t} else {\n\t\t\tmultiline = Boolean(value.multiline);\n\t\t\tminProperties = value.minProperties || Number.POSITIVE_INFINITY;\n\t\t\tconsistent = Boolean(value.consistent);\n\t\t}\n\t} else {\n\t\tconsistent = true;\n\t}\n\n\treturn { multiline, minProperties, consistent };\n}\n\n/**\n * Checks if a value is an object.\n * @param {any} value The value to check\n * @returns {boolean} `true` if the value is an object, otherwise `false`\n */\nfunction isObject(value) {\n\treturn typeof value === \"object\" && value !== null;\n}\n\n/**\n * Checks if an option is a node-specific option\n * @param {any} option The option to check\n * @returns {boolean} `true` if the option is node-specific, otherwise `false`\n */\nfunction isNodeSpecificOption(option) {\n\treturn isObject(option) || typeof option === \"string\";\n}\n\n/**\n * Normalizes a given option value.\n * @param {string|Object|undefined} options An option value to parse.\n * @returns {{\n *   ObjectExpression: {multiline: boolean, minProperties: number, consistent: boolean},\n *   ObjectPattern: {multiline: boolean, minProperties: number, consistent: boolean},\n *   ImportDeclaration: {multiline: boolean, minProperties: number, consistent: boolean},\n *   ExportNamedDeclaration : {multiline: boolean, minProperties: number, consistent: boolean}\n * }} Normalized option object.\n */\nfunction normalizeOptions(options) {\n\tif (\n\t\tisObject(options) &&\n\t\tObject.values(options).some(isNodeSpecificOption)\n\t) {\n\t\treturn {\n\t\t\tObjectExpression: normalizeOptionValue(options.ObjectExpression),\n\t\t\tObjectPattern: normalizeOptionValue(options.ObjectPattern),\n\t\t\tImportDeclaration: normalizeOptionValue(options.ImportDeclaration),\n\t\t\tExportNamedDeclaration: normalizeOptionValue(\n\t\t\t\toptions.ExportDeclaration,\n\t\t\t),\n\t\t};\n\t}\n\n\tconst value = normalizeOptionValue(options);\n\n\treturn {\n\t\tObjectExpression: value,\n\t\tObjectPattern: value,\n\t\tImportDeclaration: value,\n\t\tExportNamedDeclaration: value,\n\t};\n}\n\n/**\n * Determines if ObjectExpression, ObjectPattern, ImportDeclaration or ExportNamedDeclaration\n * node needs to be checked for missing line breaks\n * @param {ASTNode} node Node under inspection\n * @param {Object} options option specific to node type\n * @param {Token} first First object property\n * @param {Token} last Last object property\n * @returns {boolean} `true` if node needs to be checked for missing line breaks\n */\nfunction areLineBreaksRequired(node, options, first, last) {\n\tlet objectProperties;\n\n\tif (node.type === \"ObjectExpression\" || node.type === \"ObjectPattern\") {\n\t\tobjectProperties = node.properties;\n\t} else {\n\t\t// is ImportDeclaration or ExportNamedDeclaration\n\t\tobjectProperties = node.specifiers.filter(\n\t\t\ts => s.type === \"ImportSpecifier\" || s.type === \"ExportSpecifier\",\n\t\t);\n\t}\n\n\treturn (\n\t\tobjectProperties.length >= options.minProperties ||\n\t\t(options.multiline &&\n\t\t\tobjectProperties.length > 0 &&\n\t\t\tfirst.loc.start.line !== last.loc.end.line)\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"object-curly-newline\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/object-curly-newline\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce consistent line breaks after opening and before closing braces\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/object-curly-newline\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\tOPTION_VALUE,\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tObjectExpression: OPTION_VALUE,\n\t\t\t\t\t\t\tObjectPattern: OPTION_VALUE,\n\t\t\t\t\t\t\tImportDeclaration: OPTION_VALUE,\n\t\t\t\t\t\t\tExportDeclaration: OPTION_VALUE,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\tminProperties: 1,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedLinebreakBeforeClosingBrace:\n\t\t\t\t\"Unexpected line break before this closing brace.\",\n\t\t\tunexpectedLinebreakAfterOpeningBrace:\n\t\t\t\t\"Unexpected line break after this opening brace.\",\n\t\t\texpectedLinebreakBeforeClosingBrace:\n\t\t\t\t\"Expected a line break before this closing brace.\",\n\t\t\texpectedLinebreakAfterOpeningBrace:\n\t\t\t\t\"Expected a line break after this opening brace.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst normalizedOptions = normalizeOptions(context.options[0]);\n\n\t\t/**\n\t\t * Reports a given node if it violated this rule.\n\t\t * @param {ASTNode} node A node to check. This is an ObjectExpression, ObjectPattern, ImportDeclaration or ExportNamedDeclaration node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction check(node) {\n\t\t\tconst options = normalizedOptions[node.type];\n\n\t\t\tif (\n\t\t\t\t(node.type === \"ImportDeclaration\" &&\n\t\t\t\t\t!node.specifiers.some(\n\t\t\t\t\t\tspecifier => specifier.type === \"ImportSpecifier\",\n\t\t\t\t\t)) ||\n\t\t\t\t(node.type === \"ExportNamedDeclaration\" &&\n\t\t\t\t\t!node.specifiers.some(\n\t\t\t\t\t\tspecifier => specifier.type === \"ExportSpecifier\",\n\t\t\t\t\t))\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst openBrace = sourceCode.getFirstToken(\n\t\t\t\tnode,\n\t\t\t\ttoken => token.value === \"{\",\n\t\t\t);\n\n\t\t\tlet closeBrace;\n\n\t\t\tif (node.typeAnnotation) {\n\t\t\t\tcloseBrace = sourceCode.getTokenBefore(node.typeAnnotation);\n\t\t\t} else {\n\t\t\t\tcloseBrace = sourceCode.getLastToken(\n\t\t\t\t\tnode,\n\t\t\t\t\ttoken => token.value === \"}\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tlet first = sourceCode.getTokenAfter(openBrace, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\t\t\tlet last = sourceCode.getTokenBefore(closeBrace, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\n\t\t\tconst needsLineBreaks = areLineBreaksRequired(\n\t\t\t\tnode,\n\t\t\t\toptions,\n\t\t\t\tfirst,\n\t\t\t\tlast,\n\t\t\t);\n\n\t\t\tconst hasCommentsFirstToken = astUtils.isCommentToken(first);\n\t\t\tconst hasCommentsLastToken = astUtils.isCommentToken(last);\n\n\t\t\t/*\n\t\t\t * Use tokens or comments to check multiline or not.\n\t\t\t * But use only tokens to check whether line breaks are needed.\n\t\t\t * This allows:\n\t\t\t *     var obj = { // eslint-disable-line foo\n\t\t\t *         a: 1\n\t\t\t *     }\n\t\t\t */\n\t\t\tfirst = sourceCode.getTokenAfter(openBrace);\n\t\t\tlast = sourceCode.getTokenBefore(closeBrace);\n\n\t\t\tif (needsLineBreaks) {\n\t\t\t\tif (astUtils.isTokenOnSameLine(openBrace, first)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tmessageId: \"expectedLinebreakAfterOpeningBrace\",\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: openBrace.loc,\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tif (hasCommentsFirstToken) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn fixer.insertTextAfter(openBrace, \"\\n\");\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (astUtils.isTokenOnSameLine(last, closeBrace)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tmessageId: \"expectedLinebreakBeforeClosingBrace\",\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: closeBrace.loc,\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tif (hasCommentsLastToken) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn fixer.insertTextBefore(closeBrace, \"\\n\");\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst consistent = options.consistent;\n\t\t\t\tconst hasLineBreakBetweenOpenBraceAndFirst =\n\t\t\t\t\t!astUtils.isTokenOnSameLine(openBrace, first);\n\t\t\t\tconst hasLineBreakBetweenCloseBraceAndLast =\n\t\t\t\t\t!astUtils.isTokenOnSameLine(last, closeBrace);\n\n\t\t\t\tif (\n\t\t\t\t\t(!consistent && hasLineBreakBetweenOpenBraceAndFirst) ||\n\t\t\t\t\t(consistent &&\n\t\t\t\t\t\thasLineBreakBetweenOpenBraceAndFirst &&\n\t\t\t\t\t\t!hasLineBreakBetweenCloseBraceAndLast)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tmessageId: \"unexpectedLinebreakAfterOpeningBrace\",\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: openBrace.loc,\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tif (hasCommentsFirstToken) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\t\topenBrace.range[1],\n\t\t\t\t\t\t\t\tfirst.range[0],\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t(!consistent && hasLineBreakBetweenCloseBraceAndLast) ||\n\t\t\t\t\t(consistent &&\n\t\t\t\t\t\t!hasLineBreakBetweenOpenBraceAndFirst &&\n\t\t\t\t\t\thasLineBreakBetweenCloseBraceAndLast)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tmessageId: \"unexpectedLinebreakBeforeClosingBrace\",\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: closeBrace.loc,\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tif (hasCommentsLastToken) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\t\tlast.range[1],\n\t\t\t\t\t\t\t\tcloseBrace.range[0],\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tObjectExpression: check,\n\t\t\tObjectPattern: check,\n\t\t\tImportDeclaration: check,\n\t\t\tExportNamedDeclaration: check,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallows or enforces spaces inside of object literals.\n * @author Jamund Ferguson\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"object-curly-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/object-curly-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce consistent spacing inside braces\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/object-curly-spacing\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tarraysInObjects: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tobjectsInObjects: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\trequireSpaceBefore: \"A space is required before '{{token}}'.\",\n\t\t\trequireSpaceAfter: \"A space is required after '{{token}}'.\",\n\t\t\tunexpectedSpaceBefore:\n\t\t\t\t\"There should be no space before '{{token}}'.\",\n\t\t\tunexpectedSpaceAfter: \"There should be no space after '{{token}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst spaced = context.options[0] === \"always\",\n\t\t\tsourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Determines whether an option is set, relative to the spacing option.\n\t\t * If spaced is \"always\", then check whether option is set to false.\n\t\t * If spaced is \"never\", then check whether option is set to true.\n\t\t * @param {Object} option The option to exclude.\n\t\t * @returns {boolean} Whether or not the property is excluded.\n\t\t */\n\t\tfunction isOptionSet(option) {\n\t\t\treturn context.options[1]\n\t\t\t\t? context.options[1][option] === !spaced\n\t\t\t\t: false;\n\t\t}\n\n\t\tconst options = {\n\t\t\tspaced,\n\t\t\tarraysInObjectsException: isOptionSet(\"arraysInObjects\"),\n\t\t\tobjectsInObjectsException: isOptionSet(\"objectsInObjects\"),\n\t\t};\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Reports that there shouldn't be a space after the first token\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportNoBeginningSpace(node, token) {\n\t\t\tconst nextToken = context.sourceCode.getTokenAfter(token, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: { start: token.loc.end, end: nextToken.loc.start },\n\t\t\t\tmessageId: \"unexpectedSpaceAfter\",\n\t\t\t\tdata: {\n\t\t\t\t\ttoken: token.value,\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\ttoken.range[1],\n\t\t\t\t\t\tnextToken.range[0],\n\t\t\t\t\t]);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports that there shouldn't be a space before the last token\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportNoEndingSpace(node, token) {\n\t\t\tconst previousToken = context.sourceCode.getTokenBefore(token, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: { start: previousToken.loc.end, end: token.loc.start },\n\t\t\t\tmessageId: \"unexpectedSpaceBefore\",\n\t\t\t\tdata: {\n\t\t\t\t\ttoken: token.value,\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\tpreviousToken.range[1],\n\t\t\t\t\t\ttoken.range[0],\n\t\t\t\t\t]);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports that there should be a space after the first token\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportRequiredBeginningSpace(node, token) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: token.loc,\n\t\t\t\tmessageId: \"requireSpaceAfter\",\n\t\t\t\tdata: {\n\t\t\t\t\ttoken: token.value,\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.insertTextAfter(token, \" \");\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports that there should be a space before the last token\n\t\t * @param {ASTNode} node The node to report in the event of an error.\n\t\t * @param {Token} token The token to use for the report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportRequiredEndingSpace(node, token) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc: token.loc,\n\t\t\t\tmessageId: \"requireSpaceBefore\",\n\t\t\t\tdata: {\n\t\t\t\t\ttoken: token.value,\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\treturn fixer.insertTextBefore(token, \" \");\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Determines if spacing in curly braces is valid.\n\t\t * @param {ASTNode} node The AST node to check.\n\t\t * @param {Token} first The first token to check (should be the opening brace)\n\t\t * @param {Token} second The second token to check (should be first after the opening brace)\n\t\t * @param {Token} penultimate The penultimate token to check (should be last before closing brace)\n\t\t * @param {Token} last The last token to check (should be closing brace)\n\t\t * @returns {void}\n\t\t */\n\t\tfunction validateBraceSpacing(node, first, second, penultimate, last) {\n\t\t\tif (astUtils.isTokenOnSameLine(first, second)) {\n\t\t\t\tconst firstSpaced = sourceCode.isSpaceBetween(first, second);\n\n\t\t\t\tif (options.spaced && !firstSpaced) {\n\t\t\t\t\treportRequiredBeginningSpace(node, first);\n\t\t\t\t}\n\t\t\t\tif (!options.spaced && firstSpaced && second.type !== \"Line\") {\n\t\t\t\t\treportNoBeginningSpace(node, first);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (astUtils.isTokenOnSameLine(penultimate, last)) {\n\t\t\t\tconst shouldCheckPenultimate =\n\t\t\t\t\t(options.arraysInObjectsException &&\n\t\t\t\t\t\tastUtils.isClosingBracketToken(penultimate)) ||\n\t\t\t\t\t(options.objectsInObjectsException &&\n\t\t\t\t\t\tastUtils.isClosingBraceToken(penultimate));\n\t\t\t\tconst penultimateType =\n\t\t\t\t\tshouldCheckPenultimate &&\n\t\t\t\t\tsourceCode.getNodeByRangeIndex(penultimate.range[0]).type;\n\n\t\t\t\tconst closingCurlyBraceMustBeSpaced =\n\t\t\t\t\t(options.arraysInObjectsException &&\n\t\t\t\t\t\tpenultimateType === \"ArrayExpression\") ||\n\t\t\t\t\t(options.objectsInObjectsException &&\n\t\t\t\t\t\t(penultimateType === \"ObjectExpression\" ||\n\t\t\t\t\t\t\tpenultimateType === \"ObjectPattern\"))\n\t\t\t\t\t\t? !options.spaced\n\t\t\t\t\t\t: options.spaced;\n\n\t\t\t\tconst lastSpaced = sourceCode.isSpaceBetween(penultimate, last);\n\n\t\t\t\tif (closingCurlyBraceMustBeSpaced && !lastSpaced) {\n\t\t\t\t\treportRequiredEndingSpace(node, last);\n\t\t\t\t}\n\t\t\t\tif (!closingCurlyBraceMustBeSpaced && lastSpaced) {\n\t\t\t\t\treportNoEndingSpace(node, last);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Gets '}' token of an object node.\n\t\t *\n\t\t * Because the last token of object patterns might be a type annotation,\n\t\t * this traverses tokens preceded by the last property, then returns the\n\t\t * first '}' token.\n\t\t * @param {ASTNode} node The node to get. This node is an\n\t\t *      ObjectExpression or an ObjectPattern. And this node has one or\n\t\t *      more properties.\n\t\t * @returns {Token} '}' token.\n\t\t */\n\t\tfunction getClosingBraceOfObject(node) {\n\t\t\tconst lastProperty = node.properties.at(-1);\n\n\t\t\treturn sourceCode.getTokenAfter(\n\t\t\t\tlastProperty,\n\t\t\t\tastUtils.isClosingBraceToken,\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Reports a given object node if spacing in curly braces is invalid.\n\t\t * @param {ASTNode} node An ObjectExpression or ObjectPattern node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForObject(node) {\n\t\t\tif (node.properties.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst first = sourceCode.getFirstToken(node),\n\t\t\t\tlast = getClosingBraceOfObject(node),\n\t\t\t\tsecond = sourceCode.getTokenAfter(first, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t}),\n\t\t\t\tpenultimate = sourceCode.getTokenBefore(last, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t});\n\n\t\t\tvalidateBraceSpacing(node, first, second, penultimate, last);\n\t\t}\n\n\t\t/**\n\t\t * Reports a given import node if spacing in curly braces is invalid.\n\t\t * @param {ASTNode} node An ImportDeclaration node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForImport(node) {\n\t\t\tif (node.specifiers.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet firstSpecifier = node.specifiers[0];\n\t\t\tconst lastSpecifier = node.specifiers.at(-1);\n\n\t\t\tif (lastSpecifier.type !== \"ImportSpecifier\") {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (firstSpecifier.type !== \"ImportSpecifier\") {\n\t\t\t\tfirstSpecifier = node.specifiers[1];\n\t\t\t}\n\n\t\t\tconst first = sourceCode.getTokenBefore(firstSpecifier),\n\t\t\t\tlast = sourceCode.getTokenAfter(\n\t\t\t\t\tlastSpecifier,\n\t\t\t\t\tastUtils.isNotCommaToken,\n\t\t\t\t),\n\t\t\t\tsecond = sourceCode.getTokenAfter(first, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t}),\n\t\t\t\tpenultimate = sourceCode.getTokenBefore(last, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t});\n\n\t\t\tvalidateBraceSpacing(node, first, second, penultimate, last);\n\t\t}\n\n\t\t/**\n\t\t * Reports a given export node if spacing in curly braces is invalid.\n\t\t * @param {ASTNode} node An ExportNamedDeclaration node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForExport(node) {\n\t\t\tif (node.specifiers.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst firstSpecifier = node.specifiers[0],\n\t\t\t\tlastSpecifier = node.specifiers.at(-1),\n\t\t\t\tfirst = sourceCode.getTokenBefore(firstSpecifier),\n\t\t\t\tlast = sourceCode.getTokenAfter(\n\t\t\t\t\tlastSpecifier,\n\t\t\t\t\tastUtils.isNotCommaToken,\n\t\t\t\t),\n\t\t\t\tsecond = sourceCode.getTokenAfter(first, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t}),\n\t\t\t\tpenultimate = sourceCode.getTokenBefore(last, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t});\n\n\t\t\tvalidateBraceSpacing(node, first, second, penultimate, last);\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\t// var {x} = y;\n\t\t\tObjectPattern: checkForObject,\n\n\t\t\t// var y = {x: 'y'}\n\t\t\tObjectExpression: checkForObject,\n\n\t\t\t// import {y} from 'x';\n\t\t\tImportDeclaration: checkForImport,\n\n\t\t\t// export {name} from 'yo';\n\t\t\tExportNamedDeclaration: checkForExport,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce placing object properties on separate lines.\n * @author Vitor Balocco\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"object-property-newline\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/object-property-newline\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce placing object properties on separate lines\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/object-property-newline\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowAllPropertiesOnSameLine: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t\tallowMultiplePropertiesPerLine: {\n\t\t\t\t\t\t// Deprecated\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tfixable: \"whitespace\",\n\n\t\tmessages: {\n\t\t\tpropertiesOnNewlineAll:\n\t\t\t\t\"Object properties must go on a new line if they aren't all on the same line.\",\n\t\t\tpropertiesOnNewline: \"Object properties must go on a new line.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst allowSameLine =\n\t\t\tcontext.options[0] &&\n\t\t\t(context.options[0].allowAllPropertiesOnSameLine ||\n\t\t\t\tcontext.options[0]\n\t\t\t\t\t.allowMultiplePropertiesPerLine); /* Deprecated */\n\t\tconst messageId = allowSameLine\n\t\t\t? \"propertiesOnNewlineAll\"\n\t\t\t: \"propertiesOnNewline\";\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tObjectExpression(node) {\n\t\t\t\tif (allowSameLine) {\n\t\t\t\t\tif (node.properties.length > 1) {\n\t\t\t\t\t\tconst firstTokenOfFirstProperty =\n\t\t\t\t\t\t\tsourceCode.getFirstToken(node.properties[0]);\n\t\t\t\t\t\tconst lastTokenOfLastProperty = sourceCode.getLastToken(\n\t\t\t\t\t\t\tnode.properties.at(-1),\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tfirstTokenOfFirstProperty.loc.end.line ===\n\t\t\t\t\t\t\tlastTokenOfLastProperty.loc.start.line\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// All keys and values are on the same line\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 1; i < node.properties.length; i++) {\n\t\t\t\t\tconst lastTokenOfPreviousProperty = sourceCode.getLastToken(\n\t\t\t\t\t\tnode.properties[i - 1],\n\t\t\t\t\t);\n\t\t\t\t\tconst firstTokenOfCurrentProperty =\n\t\t\t\t\t\tsourceCode.getFirstToken(node.properties[i]);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tlastTokenOfPreviousProperty.loc.end.line ===\n\t\t\t\t\t\tfirstTokenOfCurrentProperty.loc.start.line\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tloc: firstTokenOfCurrentProperty.loc,\n\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\tconst comma = sourceCode.getTokenBefore(\n\t\t\t\t\t\t\t\t\tfirstTokenOfCurrentProperty,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tconst rangeAfterComma = [\n\t\t\t\t\t\t\t\t\tcomma.range[1],\n\t\t\t\t\t\t\t\t\tfirstTokenOfCurrentProperty.range[0],\n\t\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\t\t// Don't perform a fix if there are any comments between the comma and the next property.\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tsourceCode.text\n\t\t\t\t\t\t\t\t\t\t.slice(\n\t\t\t\t\t\t\t\t\t\t\trangeAfterComma[0],\n\t\t\t\t\t\t\t\t\t\t\trangeAfterComma[1],\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\trangeAfterComma,\n\t\t\t\t\t\t\t\t\t\"\\n\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce concise object methods and properties.\n * @author Jamund Ferguson\n */\n\n\"use strict\";\n\nconst OPTIONS = {\n\talways: \"always\",\n\tnever: \"never\",\n\tmethods: \"methods\",\n\tproperties: \"properties\",\n\tconsistent: \"consistent\",\n\tconsistentAsNeeded: \"consistent-as-needed\",\n};\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\nconst astUtils = require(\"./utils/ast-utils\");\n\n//--------------------------------------------------------------------------\n// Helpers\n//--------------------------------------------------------------------------\nconst CTOR_PREFIX_REGEX = /[^_$0-9]/u;\nconst JSDOC_COMMENT_REGEX = /^\\s*\\*/u;\n\n/**\n * Determines if the first character of the name is a capital letter.\n * @param {string} name The name of the node to evaluate.\n * @returns {boolean} True if the first character of the property name is a capital letter, false if not.\n * @private\n */\nfunction isConstructor(name) {\n\tconst match = CTOR_PREFIX_REGEX.exec(name);\n\n\t// Not a constructor if name has no characters apart from '_', '$' and digits e.g. '_', '$$', '_8'\n\tif (!match) {\n\t\treturn false;\n\t}\n\n\tconst firstChar = name.charAt(match.index);\n\n\treturn firstChar === firstChar.toUpperCase();\n}\n\n/**\n * Determines if the property can have a shorthand form.\n * @param {ASTNode} property Property AST node\n * @returns {boolean} True if the property can have a shorthand form\n * @private\n */\nfunction canHaveShorthand(property) {\n\treturn (\n\t\tproperty.kind !== \"set\" &&\n\t\tproperty.kind !== \"get\" &&\n\t\tproperty.type !== \"SpreadElement\" &&\n\t\tproperty.type !== \"SpreadProperty\" &&\n\t\tproperty.type !== \"ExperimentalSpreadProperty\"\n\t);\n}\n\n/**\n * Checks whether a node is a string literal.\n * @param {ASTNode} node Any AST node.\n * @returns {boolean} `true` if it is a string literal.\n */\nfunction isStringLiteral(node) {\n\treturn node.type === \"Literal\" && typeof node.value === \"string\";\n}\n\n/**\n * Determines if the property is a shorthand or not.\n * @param {ASTNode} property Property AST node\n * @returns {boolean} True if the property is considered shorthand, false if not.\n * @private\n */\nfunction isShorthand(property) {\n\t// property.method is true when `{a(){}}`.\n\treturn property.shorthand || property.method;\n}\n\n/**\n * Determines if the property's key and method or value are named equally.\n * @param {ASTNode} property Property AST node\n * @returns {boolean} True if the key and value are named equally, false if not.\n * @private\n */\nfunction isRedundant(property) {\n\tconst value = property.value;\n\n\tif (value.type === \"FunctionExpression\") {\n\t\treturn !value.id; // Only anonymous should be shorthand method.\n\t}\n\tif (value.type === \"Identifier\") {\n\t\treturn astUtils.getStaticPropertyName(property) === value.name;\n\t}\n\n\treturn false;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require or disallow method and property shorthand syntax for object literals\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/object-shorthand\",\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\tschema: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\t\"always\",\n\t\t\t\t\t\t\t\t\"methods\",\n\t\t\t\t\t\t\t\t\"properties\",\n\t\t\t\t\t\t\t\t\"never\",\n\t\t\t\t\t\t\t\t\"consistent\",\n\t\t\t\t\t\t\t\t\"consistent-as-needed\",\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 1,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"always\", \"methods\", \"properties\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tavoidQuotes: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 2,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"always\", \"methods\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tignoreConstructors: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tmethodsIgnorePattern: {\n\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tavoidQuotes: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tavoidExplicitReturnArrows: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 2,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tdefaultOptions: [\"always\"],\n\n\t\tmessages: {\n\t\t\texpectedAllPropertiesShorthanded:\n\t\t\t\t\"Expected shorthand for all properties.\",\n\t\t\texpectedLiteralMethodLongform:\n\t\t\t\t\"Expected longform method syntax for string literal keys.\",\n\t\t\texpectedPropertyShorthand: \"Expected property shorthand.\",\n\t\t\texpectedPropertyLongform: \"Expected longform property syntax.\",\n\t\t\texpectedMethodShorthand: \"Expected method shorthand.\",\n\t\t\texpectedMethodLongform: \"Expected longform method syntax.\",\n\t\t\tunexpectedMix:\n\t\t\t\t\"Unexpected mix of shorthand and non-shorthand properties.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst APPLY = context.options[0];\n\t\tconst APPLY_TO_METHODS =\n\t\t\tAPPLY === OPTIONS.methods || APPLY === OPTIONS.always;\n\t\tconst APPLY_TO_PROPS =\n\t\t\tAPPLY === OPTIONS.properties || APPLY === OPTIONS.always;\n\t\tconst APPLY_NEVER = APPLY === OPTIONS.never;\n\t\tconst APPLY_CONSISTENT = APPLY === OPTIONS.consistent;\n\t\tconst APPLY_CONSISTENT_AS_NEEDED = APPLY === OPTIONS.consistentAsNeeded;\n\n\t\tconst PARAMS = context.options[1] || {};\n\t\tconst IGNORE_CONSTRUCTORS = PARAMS.ignoreConstructors;\n\t\tconst METHODS_IGNORE_PATTERN = PARAMS.methodsIgnorePattern\n\t\t\t? new RegExp(PARAMS.methodsIgnorePattern, \"u\")\n\t\t\t: null;\n\t\tconst AVOID_QUOTES = PARAMS.avoidQuotes;\n\t\tconst AVOID_EXPLICIT_RETURN_ARROWS = !!PARAMS.avoidExplicitReturnArrows;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Ensures that an object's properties are consistently shorthand, or not shorthand at all.\n\t\t * @param {ASTNode} node Property AST node\n\t\t * @param {boolean} checkRedundancy Whether to check longform redundancy\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkConsistency(node, checkRedundancy) {\n\t\t\t// We are excluding getters/setters and spread properties as they are considered neither longform nor shorthand.\n\t\t\tconst properties = node.properties.filter(canHaveShorthand);\n\n\t\t\t// Do we still have properties left after filtering the getters and setters?\n\t\t\tif (properties.length > 0) {\n\t\t\t\tconst shorthandProperties = properties.filter(isShorthand);\n\n\t\t\t\t/*\n\t\t\t\t * If we do not have an equal number of longform properties as\n\t\t\t\t * shorthand properties, we are using the annotations inconsistently\n\t\t\t\t */\n\t\t\t\tif (shorthandProperties.length !== properties.length) {\n\t\t\t\t\t// We have at least 1 shorthand property\n\t\t\t\t\tif (shorthandProperties.length > 0) {\n\t\t\t\t\t\tcontext.report({ node, messageId: \"unexpectedMix\" });\n\t\t\t\t\t} else if (checkRedundancy) {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If all properties of the object contain a method or value with a name matching it's key,\n\t\t\t\t\t\t * all the keys are redundant.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tconst canAlwaysUseShorthand =\n\t\t\t\t\t\t\tproperties.every(isRedundant);\n\n\t\t\t\t\t\tif (canAlwaysUseShorthand) {\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\tmessageId: \"expectedAllPropertiesShorthanded\",\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Fixes a FunctionExpression node by making it into a shorthand property.\n\t\t * @param {SourceCodeFixer} fixer The fixer object\n\t\t * @param {ASTNode} node A `Property` node that has a `FunctionExpression` or `ArrowFunctionExpression` as its value\n\t\t * @returns {Object} A fix for this node\n\t\t */\n\t\tfunction makeFunctionShorthand(fixer, node) {\n\t\t\tconst firstKeyToken = node.computed\n\t\t\t\t? sourceCode.getFirstToken(node, astUtils.isOpeningBracketToken)\n\t\t\t\t: sourceCode.getFirstToken(node.key);\n\t\t\tconst lastKeyToken = node.computed\n\t\t\t\t? sourceCode.getFirstTokenBetween(\n\t\t\t\t\t\tnode.key,\n\t\t\t\t\t\tnode.value,\n\t\t\t\t\t\tastUtils.isClosingBracketToken,\n\t\t\t\t\t)\n\t\t\t\t: sourceCode.getLastToken(node.key);\n\t\t\tconst keyText = sourceCode.text.slice(\n\t\t\t\tfirstKeyToken.range[0],\n\t\t\t\tlastKeyToken.range[1],\n\t\t\t);\n\t\t\tlet keyPrefix = \"\";\n\n\t\t\t// key: /* */ () => {}\n\t\t\tif (sourceCode.commentsExistBetween(lastKeyToken, node.value)) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (node.value.async) {\n\t\t\t\tkeyPrefix += \"async \";\n\t\t\t}\n\t\t\tif (node.value.generator) {\n\t\t\t\tkeyPrefix += \"*\";\n\t\t\t}\n\n\t\t\tconst fixRange = [firstKeyToken.range[0], node.range[1]];\n\t\t\tconst methodPrefix = keyPrefix + keyText;\n\n\t\t\tif (node.value.type === \"FunctionExpression\") {\n\t\t\t\tconst functionToken = sourceCode\n\t\t\t\t\t.getTokens(node.value)\n\t\t\t\t\t.find(\n\t\t\t\t\t\ttoken =>\n\t\t\t\t\t\t\ttoken.type === \"Keyword\" &&\n\t\t\t\t\t\t\ttoken.value === \"function\",\n\t\t\t\t\t);\n\t\t\t\tconst tokenBeforeParams = node.value.generator\n\t\t\t\t\t? sourceCode.getTokenAfter(functionToken)\n\t\t\t\t\t: functionToken;\n\n\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\tfixRange,\n\t\t\t\t\tmethodPrefix +\n\t\t\t\t\t\tsourceCode.text.slice(\n\t\t\t\t\t\t\ttokenBeforeParams.range[1],\n\t\t\t\t\t\t\tnode.value.range[1],\n\t\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst arrowToken = sourceCode.getTokenBefore(\n\t\t\t\tnode.value.body,\n\t\t\t\tastUtils.isArrowToken,\n\t\t\t);\n\t\t\tconst fnBody = sourceCode.text.slice(\n\t\t\t\tarrowToken.range[1],\n\t\t\t\tnode.value.range[1],\n\t\t\t);\n\n\t\t\t// First token should not be `async`\n\t\t\tconst firstValueToken = sourceCode.getFirstToken(node.value, {\n\t\t\t\tskip: node.value.async ? 1 : 0,\n\t\t\t});\n\n\t\t\tconst sliceStart = firstValueToken.range[0];\n\t\t\tconst sliceEnd = sourceCode.getTokenBefore(arrowToken).range[1];\n\t\t\tconst shouldAddParens =\n\t\t\t\tnode.value.params.length === 1 &&\n\t\t\t\tnode.value.params[0].range[0] === sliceStart;\n\n\t\t\tconst oldParamText = sourceCode.text.slice(sliceStart, sliceEnd);\n\t\t\tconst newParamText = shouldAddParens\n\t\t\t\t? `(${oldParamText})`\n\t\t\t\t: oldParamText;\n\n\t\t\treturn fixer.replaceTextRange(\n\t\t\t\tfixRange,\n\t\t\t\tmethodPrefix + newParamText + fnBody,\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Fixes a FunctionExpression node by making it into a longform property.\n\t\t * @param {SourceCodeFixer} fixer The fixer object\n\t\t * @param {ASTNode} node A `Property` node that has a `FunctionExpression` as its value\n\t\t * @returns {Object} A fix for this node\n\t\t */\n\t\tfunction makeFunctionLongform(fixer, node) {\n\t\t\tconst firstKeyToken = node.computed\n\t\t\t\t? sourceCode.getTokens(node).find(token => token.value === \"[\")\n\t\t\t\t: sourceCode.getFirstToken(node.key);\n\t\t\tconst lastKeyToken = node.computed\n\t\t\t\t? sourceCode\n\t\t\t\t\t\t.getTokensBetween(node.key, node.value)\n\t\t\t\t\t\t.find(token => token.value === \"]\")\n\t\t\t\t: sourceCode.getLastToken(node.key);\n\t\t\tconst keyText = sourceCode.text.slice(\n\t\t\t\tfirstKeyToken.range[0],\n\t\t\t\tlastKeyToken.range[1],\n\t\t\t);\n\t\t\tlet functionHeader = \"function\";\n\n\t\t\tif (node.value.async) {\n\t\t\t\tfunctionHeader = `async ${functionHeader}`;\n\t\t\t}\n\t\t\tif (node.value.generator) {\n\t\t\t\tfunctionHeader = `${functionHeader}*`;\n\t\t\t}\n\n\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t[node.range[0], lastKeyToken.range[1]],\n\t\t\t\t`${keyText}: ${functionHeader}`,\n\t\t\t);\n\t\t}\n\n\t\t/*\n\t\t * To determine whether a given arrow function has a lexical identifier (`this`, `arguments`, `super`, or `new.target`),\n\t\t * create a stack of functions that define these identifiers (i.e. all functions except arrow functions) as the AST is\n\t\t * traversed. Whenever a new function is encountered, create a new entry on the stack (corresponding to a different lexical\n\t\t * scope of `this`), and whenever a function is exited, pop that entry off the stack. When an arrow function is entered,\n\t\t * keep a reference to it on the current stack entry, and remove that reference when the arrow function is exited.\n\t\t * When a lexical identifier is encountered, mark all the arrow functions on the current stack entry by adding them\n\t\t * to an `arrowsWithLexicalIdentifiers` set. Any arrow function in that set will not be reported by this rule,\n\t\t * because converting it into a method would change the value of one of the lexical identifiers.\n\t\t */\n\t\tconst lexicalScopeStack = [];\n\t\tconst arrowsWithLexicalIdentifiers = new WeakSet();\n\t\tconst argumentsIdentifiers = new WeakSet();\n\n\t\t/**\n\t\t * Enters a function. This creates a new lexical identifier scope, so a new Set of arrow functions is pushed onto the stack.\n\t\t * Also, this marks all `arguments` identifiers so that they can be detected later.\n\t\t * @param {ASTNode} node The node representing the function.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction enterFunction(node) {\n\t\t\tlexicalScopeStack.unshift(new Set());\n\t\t\tsourceCode\n\t\t\t\t.getScope(node)\n\t\t\t\t.variables.filter(variable => variable.name === \"arguments\")\n\t\t\t\t.forEach(variable => {\n\t\t\t\t\tvariable.references\n\t\t\t\t\t\t.map(ref => ref.identifier)\n\t\t\t\t\t\t.forEach(identifier =>\n\t\t\t\t\t\t\targumentsIdentifiers.add(identifier),\n\t\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Exits a function. This pops the current set of arrow functions off the lexical scope stack.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction exitFunction() {\n\t\t\tlexicalScopeStack.shift();\n\t\t}\n\n\t\t/**\n\t\t * Marks the current function as having a lexical keyword. This implies that all arrow functions\n\t\t * in the current lexical scope contain a reference to this lexical keyword.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportLexicalIdentifier() {\n\t\t\tlexicalScopeStack[0].forEach(arrowFunction =>\n\t\t\t\tarrowsWithLexicalIdentifiers.add(arrowFunction),\n\t\t\t);\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram: enterFunction,\n\t\t\tFunctionDeclaration: enterFunction,\n\t\t\tFunctionExpression: enterFunction,\n\t\t\t\"Program:exit\": exitFunction,\n\t\t\t\"FunctionDeclaration:exit\": exitFunction,\n\t\t\t\"FunctionExpression:exit\": exitFunction,\n\n\t\t\tArrowFunctionExpression(node) {\n\t\t\t\tlexicalScopeStack[0].add(node);\n\t\t\t},\n\t\t\t\"ArrowFunctionExpression:exit\"(node) {\n\t\t\t\tlexicalScopeStack[0].delete(node);\n\t\t\t},\n\n\t\t\tThisExpression: reportLexicalIdentifier,\n\t\t\tSuper: reportLexicalIdentifier,\n\t\t\tMetaProperty(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.meta.name === \"new\" &&\n\t\t\t\t\tnode.property.name === \"target\"\n\t\t\t\t) {\n\t\t\t\t\treportLexicalIdentifier();\n\t\t\t\t}\n\t\t\t},\n\t\t\tIdentifier(node) {\n\t\t\t\tif (argumentsIdentifiers.has(node)) {\n\t\t\t\t\treportLexicalIdentifier();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tObjectExpression(node) {\n\t\t\t\tif (APPLY_CONSISTENT) {\n\t\t\t\t\tcheckConsistency(node, false);\n\t\t\t\t} else if (APPLY_CONSISTENT_AS_NEEDED) {\n\t\t\t\t\tcheckConsistency(node, true);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t\"Property:exit\"(node) {\n\t\t\t\tconst isConciseProperty = node.method || node.shorthand;\n\n\t\t\t\t// Ignore destructuring assignment\n\t\t\t\tif (node.parent.type === \"ObjectPattern\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// getters and setters are ignored\n\t\t\t\tif (node.kind === \"get\" || node.kind === \"set\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// only computed methods can fail the following checks\n\t\t\t\tif (\n\t\t\t\t\tnode.computed &&\n\t\t\t\t\tnode.value.type !== \"FunctionExpression\" &&\n\t\t\t\t\tnode.value.type !== \"ArrowFunctionExpression\"\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//--------------------------------------------------------------\n\t\t\t\t// Checks for property/method shorthand.\n\t\t\t\tif (isConciseProperty) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tnode.method &&\n\t\t\t\t\t\t(APPLY_NEVER ||\n\t\t\t\t\t\t\t(AVOID_QUOTES && isStringLiteral(node.key)))\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst messageId = APPLY_NEVER\n\t\t\t\t\t\t\t? \"expectedMethodLongform\"\n\t\t\t\t\t\t\t: \"expectedLiteralMethodLongform\";\n\n\t\t\t\t\t\t// { x() {} } should be written as { x: function() {} }\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\tfix: fixer => makeFunctionLongform(fixer, node),\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (APPLY_NEVER) {\n\t\t\t\t\t\t// { x } should be written as { x: x }\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"expectedPropertyLongform\",\n\t\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\t\tfixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\tnode.key,\n\t\t\t\t\t\t\t\t\t`: ${node.key.name}`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else if (\n\t\t\t\t\tAPPLY_TO_METHODS &&\n\t\t\t\t\t!node.value.id &&\n\t\t\t\t\t(node.value.type === \"FunctionExpression\" ||\n\t\t\t\t\t\tnode.value.type === \"ArrowFunctionExpression\")\n\t\t\t\t) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tIGNORE_CONSTRUCTORS &&\n\t\t\t\t\t\tnode.key.type === \"Identifier\" &&\n\t\t\t\t\t\tisConstructor(node.key.name)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (METHODS_IGNORE_PATTERN) {\n\t\t\t\t\t\tconst propertyName =\n\t\t\t\t\t\t\tastUtils.getStaticPropertyName(node);\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tpropertyName !== null &&\n\t\t\t\t\t\t\tMETHODS_IGNORE_PATTERN.test(propertyName)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (AVOID_QUOTES && isStringLiteral(node.key)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// {[x]: function(){}} should be written as {[x]() {}}\n\t\t\t\t\tif (\n\t\t\t\t\t\tnode.value.type === \"FunctionExpression\" ||\n\t\t\t\t\t\t(node.value.type === \"ArrowFunctionExpression\" &&\n\t\t\t\t\t\t\tnode.value.body.type === \"BlockStatement\" &&\n\t\t\t\t\t\t\tAVOID_EXPLICIT_RETURN_ARROWS &&\n\t\t\t\t\t\t\t!arrowsWithLexicalIdentifiers.has(node.value))\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"expectedMethodShorthand\",\n\t\t\t\t\t\t\tfix: fixer => makeFunctionShorthand(fixer, node),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else if (\n\t\t\t\t\tnode.value.type === \"Identifier\" &&\n\t\t\t\t\tnode.key.name === node.value.name &&\n\t\t\t\t\tAPPLY_TO_PROPS\n\t\t\t\t) {\n\t\t\t\t\t// Skip if there are JSDoc comments inside the property (e.g., JSDoc type annotations)\n\t\t\t\t\tconst comments = sourceCode.getCommentsInside(node);\n\t\t\t\t\tif (\n\t\t\t\t\t\tcomments.some(\n\t\t\t\t\t\t\tcomment =>\n\t\t\t\t\t\t\t\tcomment.type === \"Block\" &&\n\t\t\t\t\t\t\t\tJSDOC_COMMENT_REGEX.test(comment.value) &&\n\t\t\t\t\t\t\t\tcomment.value.includes(\"@type\"),\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// {x: x} should be written as {x}\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"expectedPropertyShorthand\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t// x: /* */ x\n\t\t\t\t\t\t\t// x: (/* */ x)\n\t\t\t\t\t\t\tif (sourceCode.getCommentsInside(node).length > 0) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn fixer.replaceText(node, node.value.name);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t} else if (\n\t\t\t\t\tnode.value.type === \"Identifier\" &&\n\t\t\t\t\tnode.key.type === \"Literal\" &&\n\t\t\t\t\tnode.key.value === node.value.name &&\n\t\t\t\t\tAPPLY_TO_PROPS\n\t\t\t\t) {\n\t\t\t\t\tif (AVOID_QUOTES) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst comments = sourceCode.getCommentsInside(node);\n\t\t\t\t\tif (\n\t\t\t\t\t\tcomments.some(\n\t\t\t\t\t\t\tcomment =>\n\t\t\t\t\t\t\t\tcomment.type === \"Block\" &&\n\t\t\t\t\t\t\t\tcomment.value.startsWith(\"*\") &&\n\t\t\t\t\t\t\t\tcomment.value.includes(\"@type\"),\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// {\"x\": x} should be written as {x}\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"expectedPropertyShorthand\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t// \"x\": /* */ x\n\t\t\t\t\t\t\t// \"x\": (/* */ x)\n\t\t\t\t\t\t\tif (sourceCode.getCommentsInside(node).length > 0) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn fixer.replaceText(node, node.value.name);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to control the use of single variable declarations.\n * @author Ian Christian Myers\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Determines whether the given node is in a statement list.\n * @param {ASTNode} node node to check\n * @returns {boolean} `true` if the given node is in a statement list\n */\nfunction isInStatementList(node) {\n\treturn astUtils.STATEMENT_LIST_PARENTS.has(node.parent.type);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce variables to be declared either together or separately in functions\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/one-var\",\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: [\"always\", \"never\", \"consecutive\"],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tseparateRequires: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tvar: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\", \"consecutive\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tlet: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\", \"consecutive\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tconst: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\", \"consecutive\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tusing: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\", \"consecutive\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tawaitUsing: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\", \"consecutive\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tinitialized: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\", \"consecutive\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tuninitialized: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\", \"consecutive\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [\"always\"],\n\n\t\tmessages: {\n\t\t\tcombineUninitialized:\n\t\t\t\t\"Combine this with the previous '{{type}}' statement with uninitialized variables.\",\n\t\t\tcombineInitialized:\n\t\t\t\t\"Combine this with the previous '{{type}}' statement with initialized variables.\",\n\t\t\tsplitUninitialized:\n\t\t\t\t\"Split uninitialized '{{type}}' declarations into multiple statements.\",\n\t\t\tsplitInitialized:\n\t\t\t\t\"Split initialized '{{type}}' declarations into multiple statements.\",\n\t\t\tsplitRequires:\n\t\t\t\t\"Split requires to be separated into a single block.\",\n\t\t\tcombine: \"Combine this with the previous '{{type}}' statement.\",\n\t\t\tsplit: \"Split '{{type}}' declarations into multiple statements.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst MODE_ALWAYS = \"always\";\n\t\tconst MODE_NEVER = \"never\";\n\t\tconst MODE_CONSECUTIVE = \"consecutive\";\n\t\tconst mode = context.options[0];\n\n\t\tconst options = {};\n\n\t\tif (typeof mode === \"string\") {\n\t\t\t// simple options configuration with just a string\n\t\t\toptions.var = { uninitialized: mode, initialized: mode };\n\t\t\toptions.let = { uninitialized: mode, initialized: mode };\n\t\t\toptions.const = { uninitialized: mode, initialized: mode };\n\t\t\toptions.using = { uninitialized: mode, initialized: mode };\n\t\t\toptions.awaitUsing = { uninitialized: mode, initialized: mode };\n\t\t} else if (typeof mode === \"object\") {\n\t\t\t// options configuration is an object\n\t\t\toptions.separateRequires = !!mode.separateRequires;\n\t\t\toptions.var = { uninitialized: mode.var, initialized: mode.var };\n\t\t\toptions.let = { uninitialized: mode.let, initialized: mode.let };\n\t\t\toptions.const = {\n\t\t\t\tuninitialized: mode.const,\n\t\t\t\tinitialized: mode.const,\n\t\t\t};\n\t\t\toptions.using = {\n\t\t\t\tuninitialized: mode.using,\n\t\t\t\tinitialized: mode.using,\n\t\t\t};\n\t\t\toptions.awaitUsing = {\n\t\t\t\tuninitialized: mode.awaitUsing,\n\t\t\t\tinitialized: mode.awaitUsing,\n\t\t\t};\n\t\t\tif (Object.hasOwn(mode, \"uninitialized\")) {\n\t\t\t\toptions.var.uninitialized = mode.uninitialized;\n\t\t\t\toptions.let.uninitialized = mode.uninitialized;\n\t\t\t\toptions.const.uninitialized = mode.uninitialized;\n\t\t\t\toptions.using.uninitialized = mode.uninitialized;\n\t\t\t\toptions.awaitUsing.uninitialized = mode.uninitialized;\n\t\t\t}\n\t\t\tif (Object.hasOwn(mode, \"initialized\")) {\n\t\t\t\toptions.var.initialized = mode.initialized;\n\t\t\t\toptions.let.initialized = mode.initialized;\n\t\t\t\toptions.const.initialized = mode.initialized;\n\t\t\t\toptions.using.initialized = mode.initialized;\n\t\t\t\toptions.awaitUsing.initialized = mode.initialized;\n\t\t\t}\n\t\t}\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\tconst functionStack = [];\n\t\tconst blockStack = [];\n\n\t\t/**\n\t\t * Increments the blockStack counter.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction startBlock() {\n\t\t\tblockStack.push({\n\t\t\t\tlet: { initialized: false, uninitialized: false },\n\t\t\t\tconst: { initialized: false, uninitialized: false },\n\t\t\t\tusing: { initialized: false, uninitialized: false },\n\t\t\t\tawaitUsing: { initialized: false, uninitialized: false },\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Increments the functionStack counter.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction startFunction() {\n\t\t\tfunctionStack.push({ initialized: false, uninitialized: false });\n\t\t\tstartBlock();\n\t\t}\n\n\t\t/**\n\t\t * Decrements the blockStack counter.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction endBlock() {\n\t\t\tblockStack.pop();\n\t\t}\n\n\t\t/**\n\t\t * Decrements the functionStack counter.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction endFunction() {\n\t\t\tfunctionStack.pop();\n\t\t\tendBlock();\n\t\t}\n\n\t\t/**\n\t\t * Check if a variable declaration is a require.\n\t\t * @param {ASTNode} decl variable declaration Node\n\t\t * @returns {bool} if decl is a require, return true; else return false.\n\t\t * @private\n\t\t */\n\t\tfunction isRequire(decl) {\n\t\t\treturn (\n\t\t\t\tdecl.init &&\n\t\t\t\tdecl.init.type === \"CallExpression\" &&\n\t\t\t\tdecl.init.callee.name === \"require\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Records whether initialized/uninitialized/required variables are defined in current scope.\n\t\t * @param {string} statementType one of: \"var\", \"let\", \"const\", \"using\", or \"awaitUsing\"\n\t\t * @param {ASTNode[]} declarations List of declarations\n\t\t * @param {Object} currentScope The scope being investigated\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction recordTypes(statementType, declarations, currentScope) {\n\t\t\tfor (let i = 0; i < declarations.length; i++) {\n\t\t\t\tif (declarations[i].init === null) {\n\t\t\t\t\tif (\n\t\t\t\t\t\toptions[statementType] &&\n\t\t\t\t\t\toptions[statementType].uninitialized === MODE_ALWAYS\n\t\t\t\t\t) {\n\t\t\t\t\t\tcurrentScope.uninitialized = true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (\n\t\t\t\t\t\toptions[statementType] &&\n\t\t\t\t\t\toptions[statementType].initialized === MODE_ALWAYS\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\toptions.separateRequires &&\n\t\t\t\t\t\t\tisRequire(declarations[i])\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcurrentScope.required = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentScope.initialized = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Determines the current scope (function or block)\n\t\t * @param {string} statementType one of: \"var\", \"let\", \"const\", \"using\", or \"awaitUsing\"\n\t\t * @returns {Object} The scope associated with statementType\n\t\t */\n\t\tfunction getCurrentScope(statementType) {\n\t\t\tlet currentScope;\n\n\t\t\tif (statementType === \"var\") {\n\t\t\t\tcurrentScope = functionStack.at(-1);\n\t\t\t} else if (statementType === \"let\") {\n\t\t\t\tcurrentScope = blockStack.at(-1).let;\n\t\t\t} else if (statementType === \"const\") {\n\t\t\t\tcurrentScope = blockStack.at(-1).const;\n\t\t\t} else if (statementType === \"using\") {\n\t\t\t\tcurrentScope = blockStack.at(-1).using;\n\t\t\t} else if (statementType === \"awaitUsing\") {\n\t\t\t\tcurrentScope = blockStack.at(-1).awaitUsing;\n\t\t\t}\n\t\t\treturn currentScope;\n\t\t}\n\n\t\t/**\n\t\t * Counts the number of initialized and uninitialized declarations in a list of declarations\n\t\t * @param {ASTNode[]} declarations List of declarations\n\t\t * @returns {Object} Counts of 'uninitialized' and 'initialized' declarations\n\t\t * @private\n\t\t */\n\t\tfunction countDeclarations(declarations) {\n\t\t\tconst counts = { uninitialized: 0, initialized: 0 };\n\n\t\t\tfor (let i = 0; i < declarations.length; i++) {\n\t\t\t\tif (declarations[i].init === null) {\n\t\t\t\t\tcounts.uninitialized++;\n\t\t\t\t} else {\n\t\t\t\t\tcounts.initialized++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn counts;\n\t\t}\n\n\t\t/**\n\t\t * Determines if there is more than one var statement in the current scope.\n\t\t * @param {string} statementType one of: \"var\", \"let\", \"const\", \"using\", or \"awaitUsing\"\n\t\t * @param {ASTNode[]} declarations List of declarations\n\t\t * @returns {boolean} Returns true if it is the first var declaration, false if not.\n\t\t * @private\n\t\t */\n\t\tfunction hasOnlyOneStatement(statementType, declarations) {\n\t\t\tconst declarationCounts = countDeclarations(declarations);\n\t\t\tconst currentOptions = options[statementType] || {};\n\t\t\tconst currentScope = getCurrentScope(statementType);\n\t\t\tconst hasRequires = declarations.some(isRequire);\n\n\t\t\tif (\n\t\t\t\tcurrentOptions.uninitialized === MODE_ALWAYS &&\n\t\t\t\tcurrentOptions.initialized === MODE_ALWAYS\n\t\t\t) {\n\t\t\t\tif (currentScope.uninitialized || currentScope.initialized) {\n\t\t\t\t\tif (!hasRequires) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (declarationCounts.uninitialized > 0) {\n\t\t\t\tif (\n\t\t\t\t\tcurrentOptions.uninitialized === MODE_ALWAYS &&\n\t\t\t\t\tcurrentScope.uninitialized\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (declarationCounts.initialized > 0) {\n\t\t\t\tif (\n\t\t\t\t\tcurrentOptions.initialized === MODE_ALWAYS &&\n\t\t\t\t\tcurrentScope.initialized\n\t\t\t\t) {\n\t\t\t\t\tif (!hasRequires) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (currentScope.required && hasRequires) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\trecordTypes(statementType, declarations, currentScope);\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * Fixer to join VariableDeclaration's into a single declaration\n\t\t * @param {VariableDeclarator[]} declarations The `VariableDeclaration` to join\n\t\t * @returns {Function} The fixer function\n\t\t */\n\t\tfunction joinDeclarations(declarations) {\n\t\t\tconst declaration = declarations[0];\n\t\t\tconst body = Array.isArray(declaration.parent.parent.body)\n\t\t\t\t? declaration.parent.parent.body\n\t\t\t\t: [];\n\t\t\tconst currentIndex = body.findIndex(\n\t\t\t\tnode => node.range[0] === declaration.parent.range[0],\n\t\t\t);\n\t\t\tconst previousNode = body[currentIndex - 1];\n\n\t\t\treturn function* joinDeclarationsFixer(fixer) {\n\t\t\t\tconst type = sourceCode.getFirstToken(declaration.parent);\n\t\t\t\tconst beforeType = sourceCode.getTokenBefore(type);\n\n\t\t\t\tif (\n\t\t\t\t\tpreviousNode &&\n\t\t\t\t\tpreviousNode.kind === declaration.parent.kind\n\t\t\t\t) {\n\t\t\t\t\tif (beforeType.value === \";\") {\n\t\t\t\t\t\tyield fixer.replaceText(beforeType, \",\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tyield fixer.insertTextAfter(beforeType, \",\");\n\t\t\t\t\t}\n\n\t\t\t\t\tif (declaration.parent.kind === \"await using\") {\n\t\t\t\t\t\tconst usingToken = sourceCode.getTokenAfter(type);\n\t\t\t\t\t\tyield fixer.remove(usingToken);\n\t\t\t\t\t}\n\n\t\t\t\t\tyield fixer.replaceText(type, \"\");\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Fixer to split a VariableDeclaration into individual declarations\n\t\t * @param {VariableDeclaration} declaration The `VariableDeclaration` to split\n\t\t * @returns {Function|null} The fixer function\n\t\t */\n\t\tfunction splitDeclarations(declaration) {\n\t\t\tconst { parent } = declaration;\n\n\t\t\t// don't autofix code such as: if (foo) var x, y;\n\t\t\tif (\n\t\t\t\t!isInStatementList(\n\t\t\t\t\tparent.type === \"ExportNamedDeclaration\"\n\t\t\t\t\t\t? parent\n\t\t\t\t\t\t: declaration,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn fixer =>\n\t\t\t\tdeclaration.declarations\n\t\t\t\t\t.map(declarator => {\n\t\t\t\t\t\tconst tokenAfterDeclarator =\n\t\t\t\t\t\t\tsourceCode.getTokenAfter(declarator);\n\n\t\t\t\t\t\tif (tokenAfterDeclarator === null) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst afterComma = sourceCode.getTokenAfter(\n\t\t\t\t\t\t\ttokenAfterDeclarator,\n\t\t\t\t\t\t\t{ includeComments: true },\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (tokenAfterDeclarator.value !== \",\") {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst exportPlacement =\n\t\t\t\t\t\t\tdeclaration.parent.type === \"ExportNamedDeclaration\"\n\t\t\t\t\t\t\t\t? \"export \"\n\t\t\t\t\t\t\t\t: \"\";\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * `var x,y`\n\t\t\t\t\t\t * tokenAfterDeclarator ^^ afterComma\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tafterComma.range[0] ===\n\t\t\t\t\t\t\ttokenAfterDeclarator.range[1]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\ttokenAfterDeclarator,\n\t\t\t\t\t\t\t\t`; ${exportPlacement}${declaration.kind} `,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * `var x,\n\t\t\t\t\t\t * tokenAfterDeclarator ^\n\t\t\t\t\t\t *      y`\n\t\t\t\t\t\t *      ^ afterComma\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tafterComma.loc.start.line >\n\t\t\t\t\t\t\t\ttokenAfterDeclarator.loc.end.line ||\n\t\t\t\t\t\t\tafterComma.type === \"Line\" ||\n\t\t\t\t\t\t\tafterComma.type === \"Block\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tlet lastComment = afterComma;\n\n\t\t\t\t\t\t\twhile (\n\t\t\t\t\t\t\t\tlastComment.type === \"Line\" ||\n\t\t\t\t\t\t\t\tlastComment.type === \"Block\"\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tlastComment = sourceCode.getTokenAfter(\n\t\t\t\t\t\t\t\t\tlastComment,\n\t\t\t\t\t\t\t\t\t{ includeComments: true },\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\ttokenAfterDeclarator.range[0],\n\t\t\t\t\t\t\t\t\tlastComment.range[0],\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t`;${sourceCode.text.slice(\n\t\t\t\t\t\t\t\t\ttokenAfterDeclarator.range[1],\n\t\t\t\t\t\t\t\t\tlastComment.range[0],\n\t\t\t\t\t\t\t\t)}${exportPlacement}${declaration.kind} `,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\ttokenAfterDeclarator,\n\t\t\t\t\t\t\t`; ${exportPlacement}${declaration.kind}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t\t.filter(x => x);\n\t\t}\n\n\t\t/**\n\t\t * Checks a given VariableDeclaration node for errors.\n\t\t * @param {ASTNode} node The VariableDeclaration node to check\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkVariableDeclaration(node) {\n\t\t\tconst parent = node.parent;\n\t\t\tconst type = node.kind;\n\t\t\tconst key = type === \"await using\" ? \"awaitUsing\" : type;\n\n\t\t\tif (!options[key]) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst declarations = node.declarations;\n\t\t\tconst declarationCounts = countDeclarations(declarations);\n\t\t\tconst mixedRequires =\n\t\t\t\tdeclarations.some(isRequire) && !declarations.every(isRequire);\n\n\t\t\tif (options[key].initialized === MODE_ALWAYS) {\n\t\t\t\tif (options.separateRequires && mixedRequires) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"splitRequires\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// consecutive\n\t\t\tconst nodeIndex =\n\t\t\t\t(parent.body &&\n\t\t\t\t\tparent.body.length > 0 &&\n\t\t\t\t\tparent.body.indexOf(node)) ||\n\t\t\t\t0;\n\n\t\t\tif (nodeIndex > 0) {\n\t\t\t\tconst previousNode = parent.body[nodeIndex - 1];\n\t\t\t\tconst isPreviousNodeDeclaration =\n\t\t\t\t\tpreviousNode.type === \"VariableDeclaration\";\n\t\t\t\tconst declarationsWithPrevious = declarations.concat(\n\t\t\t\t\tpreviousNode.declarations || [],\n\t\t\t\t);\n\n\t\t\t\tif (\n\t\t\t\t\tisPreviousNodeDeclaration &&\n\t\t\t\t\tpreviousNode.kind === type &&\n\t\t\t\t\t!(\n\t\t\t\t\t\tdeclarationsWithPrevious.some(isRequire) &&\n\t\t\t\t\t\t!declarationsWithPrevious.every(isRequire)\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tconst previousDeclCounts = countDeclarations(\n\t\t\t\t\t\tpreviousNode.declarations,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\toptions[key].initialized === MODE_CONSECUTIVE &&\n\t\t\t\t\t\toptions[key].uninitialized === MODE_CONSECUTIVE\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"combine\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfix: joinDeclarations(declarations),\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (\n\t\t\t\t\t\toptions[key].initialized === MODE_CONSECUTIVE &&\n\t\t\t\t\t\tdeclarationCounts.initialized > 0 &&\n\t\t\t\t\t\tpreviousDeclCounts.initialized > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"combineInitialized\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfix: joinDeclarations(declarations),\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (\n\t\t\t\t\t\toptions[key].uninitialized === MODE_CONSECUTIVE &&\n\t\t\t\t\t\tdeclarationCounts.uninitialized > 0 &&\n\t\t\t\t\t\tpreviousDeclCounts.uninitialized > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"combineUninitialized\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfix: joinDeclarations(declarations),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// always\n\t\t\tif (!hasOnlyOneStatement(key, declarations)) {\n\t\t\t\tif (\n\t\t\t\t\toptions[key].initialized === MODE_ALWAYS &&\n\t\t\t\t\toptions[key].uninitialized === MODE_ALWAYS\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"combine\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfix: joinDeclarations(declarations),\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tif (\n\t\t\t\t\t\toptions[key].initialized === MODE_ALWAYS &&\n\t\t\t\t\t\tdeclarationCounts.initialized > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"combineInitialized\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfix: joinDeclarations(declarations),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\toptions[key].uninitialized === MODE_ALWAYS &&\n\t\t\t\t\t\tdeclarationCounts.uninitialized > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tnode.parent.left === node &&\n\t\t\t\t\t\t\t(node.parent.type === \"ForInStatement\" ||\n\t\t\t\t\t\t\t\tnode.parent.type === \"ForOfStatement\")\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"combineUninitialized\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfix: joinDeclarations(declarations),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// never\n\t\t\tif (parent.type !== \"ForStatement\" || parent.init !== node) {\n\t\t\t\tconst totalDeclarations =\n\t\t\t\t\tdeclarationCounts.uninitialized +\n\t\t\t\t\tdeclarationCounts.initialized;\n\n\t\t\t\tif (totalDeclarations > 1) {\n\t\t\t\t\tif (\n\t\t\t\t\t\toptions[key].initialized === MODE_NEVER &&\n\t\t\t\t\t\toptions[key].uninitialized === MODE_NEVER\n\t\t\t\t\t) {\n\t\t\t\t\t\t// both initialized and uninitialized\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"split\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfix: splitDeclarations(node),\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (\n\t\t\t\t\t\toptions[key].initialized === MODE_NEVER &&\n\t\t\t\t\t\tdeclarationCounts.initialized > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\t// initialized\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"splitInitialized\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfix: splitDeclarations(node),\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (\n\t\t\t\t\t\toptions[key].uninitialized === MODE_NEVER &&\n\t\t\t\t\t\tdeclarationCounts.uninitialized > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\t// uninitialized\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"splitUninitialized\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfix: splitDeclarations(node),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram: startFunction,\n\t\t\tFunctionDeclaration: startFunction,\n\t\t\tFunctionExpression: startFunction,\n\t\t\tArrowFunctionExpression: startFunction,\n\t\t\tStaticBlock: startFunction, // StaticBlock creates a new scope for `var` variables\n\n\t\t\tBlockStatement: startBlock,\n\t\t\tForStatement: startBlock,\n\t\t\tForInStatement: startBlock,\n\t\t\tForOfStatement: startBlock,\n\t\t\tSwitchStatement: startBlock,\n\t\t\tVariableDeclaration: checkVariableDeclaration,\n\t\t\t\"ForStatement:exit\": endBlock,\n\t\t\t\"ForOfStatement:exit\": endBlock,\n\t\t\t\"ForInStatement:exit\": endBlock,\n\t\t\t\"SwitchStatement:exit\": endBlock,\n\t\t\t\"BlockStatement:exit\": endBlock,\n\n\t\t\t\"Program:exit\": endFunction,\n\t\t\t\"FunctionDeclaration:exit\": endFunction,\n\t\t\t\"FunctionExpression:exit\": endFunction,\n\t\t\t\"ArrowFunctionExpression:exit\": endFunction,\n\t\t\t\"StaticBlock:exit\": endFunction,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to check multiple var declarations per line\n * @author Alberto Rodr\u00EDguez\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"one-var-declaration-per-line\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/one-var-declaration-per-line\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require or disallow newlines around variable declarations\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/one-var-declaration-per-line\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"always\", \"initializations\"],\n\t\t\t},\n\t\t],\n\n\t\tfixable: \"whitespace\",\n\n\t\tmessages: {\n\t\t\texpectVarOnNewline:\n\t\t\t\t\"Expected variable declaration to be on a new line.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst always = context.options[0] === \"always\";\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Determine if provided keyword is a variant of for specifiers\n\t\t * @private\n\t\t * @param {string} keyword keyword to test\n\t\t * @returns {boolean} True if `keyword` is a variant of for specifier\n\t\t */\n\t\tfunction isForTypeSpecifier(keyword) {\n\t\t\treturn (\n\t\t\t\tkeyword === \"ForStatement\" ||\n\t\t\t\tkeyword === \"ForInStatement\" ||\n\t\t\t\tkeyword === \"ForOfStatement\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks newlines around variable declarations.\n\t\t * @private\n\t\t * @param {ASTNode} node `VariableDeclaration` node to test\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForNewLine(node) {\n\t\t\tif (isForTypeSpecifier(node.parent.type)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst declarations = node.declarations;\n\t\t\tlet prev;\n\n\t\t\tdeclarations.forEach(current => {\n\t\t\t\tif (prev && prev.loc.end.line === current.loc.start.line) {\n\t\t\t\t\tif (always || prev.init || current.init) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"expectVarOnNewline\",\n\t\t\t\t\t\t\tloc: current.loc,\n\t\t\t\t\t\t\tfix: fixer => fixer.insertTextBefore(current, \"\\n\"),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tprev = current;\n\t\t\t});\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tVariableDeclaration: checkForNewLine,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to replace assignment expressions with operator assignment\n * @author Brandon Mills\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether an operator is commutative and has an operator assignment\n * shorthand form.\n * @param {string} operator Operator to check.\n * @returns {boolean} True if the operator is commutative and has a\n *     shorthand form.\n */\nfunction isCommutativeOperatorWithShorthand(operator) {\n\treturn [\"*\", \"&\", \"^\", \"|\"].includes(operator);\n}\n\n/**\n * Checks whether an operator is not commutative and has an operator assignment\n * shorthand form.\n * @param {string} operator Operator to check.\n * @returns {boolean} True if the operator is not commutative and has\n *     a shorthand form.\n */\nfunction isNonCommutativeOperatorWithShorthand(operator) {\n\treturn [\"+\", \"-\", \"/\", \"%\", \"<<\", \">>\", \">>>\", \"**\"].includes(operator);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/**\n * Determines if the left side of a node can be safely fixed (i.e. if it activates the same getters/setters and)\n * toString calls regardless of whether assignment shorthand is used)\n * @param {ASTNode} node The node on the left side of the expression\n * @returns {boolean} `true` if the node can be fixed\n */\nfunction canBeFixed(node) {\n\treturn (\n\t\tnode.type === \"Identifier\" ||\n\t\t(node.type === \"MemberExpression\" &&\n\t\t\t(node.object.type === \"Identifier\" ||\n\t\t\t\tnode.object.type === \"ThisExpression\") &&\n\t\t\t(!node.computed || node.property.type === \"Literal\"))\n\t);\n}\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\"always\"],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require or disallow assignment operator shorthand where possible\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/operator-assignment\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t},\n\t\t],\n\n\t\tfixable: \"code\",\n\t\tmessages: {\n\t\t\treplaced:\n\t\t\t\t\"Assignment (=) can be replaced with operator assignment ({{operator}}).\",\n\t\t\tunexpected:\n\t\t\t\t\"Unexpected operator assignment ({{operator}}) shorthand.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst never = context.options[0] === \"never\";\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Returns the operator token of an AssignmentExpression or BinaryExpression\n\t\t * @param {ASTNode} node An AssignmentExpression or BinaryExpression node\n\t\t * @returns {Token} The operator token in the node\n\t\t */\n\t\tfunction getOperatorToken(node) {\n\t\t\treturn sourceCode.getFirstTokenBetween(\n\t\t\t\tnode.left,\n\t\t\t\tnode.right,\n\t\t\t\ttoken => token.value === node.operator,\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Ensures that an assignment uses the shorthand form where possible.\n\t\t * @param {ASTNode} node An AssignmentExpression node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction verify(node) {\n\t\t\tif (\n\t\t\t\tnode.operator !== \"=\" ||\n\t\t\t\tnode.right.type !== \"BinaryExpression\"\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst left = node.left;\n\t\t\tconst expr = node.right;\n\t\t\tconst operator = expr.operator;\n\n\t\t\tif (\n\t\t\t\tisCommutativeOperatorWithShorthand(operator) ||\n\t\t\t\tisNonCommutativeOperatorWithShorthand(operator)\n\t\t\t) {\n\t\t\t\tconst replacementOperator = `${operator}=`;\n\n\t\t\t\tif (astUtils.isSameReference(left, expr.left, true)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"replaced\",\n\t\t\t\t\t\tdata: { operator: replacementOperator },\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tif (canBeFixed(left) && canBeFixed(expr.left)) {\n\t\t\t\t\t\t\t\tconst equalsToken = getOperatorToken(node);\n\t\t\t\t\t\t\t\tconst operatorToken = getOperatorToken(expr);\n\t\t\t\t\t\t\t\tconst leftText = sourceCode\n\t\t\t\t\t\t\t\t\t.getText()\n\t\t\t\t\t\t\t\t\t.slice(node.range[0], equalsToken.range[0]);\n\t\t\t\t\t\t\t\tconst rightText = sourceCode\n\t\t\t\t\t\t\t\t\t.getText()\n\t\t\t\t\t\t\t\t\t.slice(\n\t\t\t\t\t\t\t\t\t\toperatorToken.range[1],\n\t\t\t\t\t\t\t\t\t\tnode.right.range[1],\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t// Check for comments that would be removed.\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tsourceCode.commentsExistBetween(\n\t\t\t\t\t\t\t\t\t\tequalsToken,\n\t\t\t\t\t\t\t\t\t\toperatorToken,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t`${leftText}${replacementOperator}${rightText}`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t} else if (\n\t\t\t\t\tastUtils.isSameReference(left, expr.right, true) &&\n\t\t\t\t\tisCommutativeOperatorWithShorthand(operator)\n\t\t\t\t) {\n\t\t\t\t\t/*\n\t\t\t\t\t * This case can't be fixed safely.\n\t\t\t\t\t * If `a` and `b` both have custom valueOf() behavior, then fixing `a = b * a` to `a *= b` would\n\t\t\t\t\t * change the execution order of the valueOf() functions.\n\t\t\t\t\t */\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"replaced\",\n\t\t\t\t\t\tdata: { operator: replacementOperator },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Warns if an assignment expression uses operator assignment shorthand.\n\t\t * @param {ASTNode} node An AssignmentExpression node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction prohibit(node) {\n\t\t\tif (\n\t\t\t\tnode.operator !== \"=\" &&\n\t\t\t\t!astUtils.isLogicalAssignmentOperator(node.operator)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\tdata: { operator: node.operator },\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tif (canBeFixed(node.left)) {\n\t\t\t\t\t\t\tconst firstToken = sourceCode.getFirstToken(node);\n\t\t\t\t\t\t\tconst operatorToken = getOperatorToken(node);\n\t\t\t\t\t\t\tconst leftText = sourceCode\n\t\t\t\t\t\t\t\t.getText()\n\t\t\t\t\t\t\t\t.slice(node.range[0], operatorToken.range[0]);\n\t\t\t\t\t\t\tconst newOperator = node.operator.slice(0, -1);\n\t\t\t\t\t\t\tlet rightText;\n\n\t\t\t\t\t\t\t// Check for comments that would be duplicated.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tsourceCode.commentsExistBetween(\n\t\t\t\t\t\t\t\t\tfirstToken,\n\t\t\t\t\t\t\t\t\toperatorToken,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// If this change would modify precedence (e.g. `foo *= bar + 1` => `foo = foo * (bar + 1)`), parenthesize the right side.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tastUtils.getPrecedence(node.right) <=\n\t\t\t\t\t\t\t\t\tastUtils.getPrecedence({\n\t\t\t\t\t\t\t\t\t\ttype: \"BinaryExpression\",\n\t\t\t\t\t\t\t\t\t\toperator: newOperator,\n\t\t\t\t\t\t\t\t\t}) &&\n\t\t\t\t\t\t\t\t!astUtils.isParenthesised(\n\t\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\t\tnode.right,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\trightText = `${sourceCode.text.slice(operatorToken.range[1], node.right.range[0])}(${sourceCode.getText(node.right)})`;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst tokenAfterOperator =\n\t\t\t\t\t\t\t\t\tsourceCode.getTokenAfter(operatorToken, {\n\t\t\t\t\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tlet rightTextPrefix = \"\";\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\toperatorToken.range[1] ===\n\t\t\t\t\t\t\t\t\t\ttokenAfterOperator.range[0] &&\n\t\t\t\t\t\t\t\t\t!astUtils.canTokensBeAdjacent(\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"Punctuator\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: newOperator,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ttokenAfterOperator,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\trightTextPrefix = \" \"; // foo+=+bar -> foo= foo+ +bar\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\trightText = `${rightTextPrefix}${sourceCode.text.slice(operatorToken.range[1], node.range[1])}`;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t`${leftText}= ${leftText}${newOperator}${rightText}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tAssignmentExpression: !never ? verify : prohibit,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Operator linebreak - enforces operator linebreak style of two types: after and before\n * @author Beno\u00EEt Zugmeyer\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"operator-linebreak\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/operator-linebreak\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce consistent linebreak style for operators\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/operator-linebreak\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"after\", \"before\", \"none\", null],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\toverrides: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tadditionalProperties: {\n\t\t\t\t\t\t\tenum: [\"after\", \"before\", \"none\", \"ignore\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\toperatorAtBeginning:\n\t\t\t\t\"'{{operator}}' should be placed at the beginning of the line.\",\n\t\t\toperatorAtEnd:\n\t\t\t\t\"'{{operator}}' should be placed at the end of the line.\",\n\t\t\tbadLinebreak: \"Bad line breaking before and after '{{operator}}'.\",\n\t\t\tnoLinebreak:\n\t\t\t\t\"There should be no line break before or after '{{operator}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst usedDefaultGlobal = !context.options[0];\n\t\tconst globalStyle = context.options[0] || \"after\";\n\t\tconst options = context.options[1] || {};\n\t\tconst styleOverrides = options.overrides\n\t\t\t? Object.assign({}, options.overrides)\n\t\t\t: {};\n\n\t\tif (usedDefaultGlobal && !styleOverrides[\"?\"]) {\n\t\t\tstyleOverrides[\"?\"] = \"before\";\n\t\t}\n\n\t\tif (usedDefaultGlobal && !styleOverrides[\":\"]) {\n\t\t\tstyleOverrides[\":\"] = \"before\";\n\t\t}\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Gets a fixer function to fix rule issues\n\t\t * @param {Token} operatorToken The operator token of an expression\n\t\t * @param {string} desiredStyle The style for the rule. One of 'before', 'after', 'none'\n\t\t * @returns {Function} A fixer function\n\t\t */\n\t\tfunction getFixer(operatorToken, desiredStyle) {\n\t\t\treturn fixer => {\n\t\t\t\tconst tokenBefore = sourceCode.getTokenBefore(operatorToken);\n\t\t\t\tconst tokenAfter = sourceCode.getTokenAfter(operatorToken);\n\t\t\t\tconst textBefore = sourceCode.text.slice(\n\t\t\t\t\ttokenBefore.range[1],\n\t\t\t\t\toperatorToken.range[0],\n\t\t\t\t);\n\t\t\t\tconst textAfter = sourceCode.text.slice(\n\t\t\t\t\toperatorToken.range[1],\n\t\t\t\t\ttokenAfter.range[0],\n\t\t\t\t);\n\t\t\t\tconst hasLinebreakBefore = !astUtils.isTokenOnSameLine(\n\t\t\t\t\ttokenBefore,\n\t\t\t\t\toperatorToken,\n\t\t\t\t);\n\t\t\t\tconst hasLinebreakAfter = !astUtils.isTokenOnSameLine(\n\t\t\t\t\toperatorToken,\n\t\t\t\t\ttokenAfter,\n\t\t\t\t);\n\t\t\t\tlet newTextBefore, newTextAfter;\n\n\t\t\t\tif (\n\t\t\t\t\thasLinebreakBefore !== hasLinebreakAfter &&\n\t\t\t\t\tdesiredStyle !== \"none\"\n\t\t\t\t) {\n\t\t\t\t\t// If there is a comment before and after the operator, don't do a fix.\n\t\t\t\t\tif (\n\t\t\t\t\t\tsourceCode.getTokenBefore(operatorToken, {\n\t\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t\t}) !== tokenBefore &&\n\t\t\t\t\t\tsourceCode.getTokenAfter(operatorToken, {\n\t\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t\t}) !== tokenAfter\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * If there is only one linebreak and it's on the wrong side of the operator, swap the text before and after the operator.\n\t\t\t\t\t * foo &&\n\t\t\t\t\t *           bar\n\t\t\t\t\t * would get fixed to\n\t\t\t\t\t * foo\n\t\t\t\t\t *        && bar\n\t\t\t\t\t */\n\t\t\t\t\tnewTextBefore = textAfter;\n\t\t\t\t\tnewTextAfter = textBefore;\n\t\t\t\t} else {\n\t\t\t\t\tconst LINEBREAK_REGEX =\n\t\t\t\t\t\tastUtils.createGlobalLinebreakMatcher();\n\n\t\t\t\t\t// Otherwise, if no linebreak is desired and no comments interfere, replace the linebreaks with empty strings.\n\t\t\t\t\tnewTextBefore =\n\t\t\t\t\t\tdesiredStyle === \"before\" || textBefore.trim()\n\t\t\t\t\t\t\t? textBefore\n\t\t\t\t\t\t\t: textBefore.replace(LINEBREAK_REGEX, \"\");\n\t\t\t\t\tnewTextAfter =\n\t\t\t\t\t\tdesiredStyle === \"after\" || textAfter.trim()\n\t\t\t\t\t\t\t? textAfter\n\t\t\t\t\t\t\t: textAfter.replace(LINEBREAK_REGEX, \"\");\n\n\t\t\t\t\t// If there was no change (due to interfering comments), don't output a fix.\n\t\t\t\t\tif (\n\t\t\t\t\t\tnewTextBefore === textBefore &&\n\t\t\t\t\t\tnewTextAfter === textAfter\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tnewTextAfter === \"\" &&\n\t\t\t\t\ttokenAfter.type === \"Punctuator\" &&\n\t\t\t\t\t\"+-\".includes(operatorToken.value) &&\n\t\t\t\t\ttokenAfter.value === operatorToken.value\n\t\t\t\t) {\n\t\t\t\t\t// To avoid accidentally creating a ++ or -- operator, insert a space if the operator is a +/- and the following token is a unary +/-.\n\t\t\t\t\tnewTextAfter += \" \";\n\t\t\t\t}\n\n\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t[tokenBefore.range[1], tokenAfter.range[0]],\n\t\t\t\t\tnewTextBefore + operatorToken.value + newTextAfter,\n\t\t\t\t);\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Checks the operator placement\n\t\t * @param {ASTNode} node The node to check\n\t\t * @param {ASTNode} rightSide The node that comes after the operator in `node`\n\t\t * @param {string} operator The operator\n\t\t * @private\n\t\t * @returns {void}\n\t\t */\n\t\tfunction validateNode(node, rightSide, operator) {\n\t\t\t/*\n\t\t\t * Find the operator token by searching from the right side, because between the left side and the operator\n\t\t\t * there could be additional tokens from type annotations. Search specifically for the token which\n\t\t\t * value equals the operator, in order to skip possible opening parentheses before the right side node.\n\t\t\t */\n\t\t\tconst operatorToken = sourceCode.getTokenBefore(\n\t\t\t\trightSide,\n\t\t\t\ttoken => token.value === operator,\n\t\t\t);\n\t\t\tconst leftToken = sourceCode.getTokenBefore(operatorToken);\n\t\t\tconst rightToken = sourceCode.getTokenAfter(operatorToken);\n\t\t\tconst operatorStyleOverride = styleOverrides[operator];\n\t\t\tconst style = operatorStyleOverride || globalStyle;\n\t\t\tconst fix = getFixer(operatorToken, style);\n\n\t\t\t// if single line\n\t\t\tif (\n\t\t\t\tastUtils.isTokenOnSameLine(leftToken, operatorToken) &&\n\t\t\t\tastUtils.isTokenOnSameLine(operatorToken, rightToken)\n\t\t\t) {\n\t\t\t\t// do nothing.\n\t\t\t} else if (\n\t\t\t\toperatorStyleOverride !== \"ignore\" &&\n\t\t\t\t!astUtils.isTokenOnSameLine(leftToken, operatorToken) &&\n\t\t\t\t!astUtils.isTokenOnSameLine(operatorToken, rightToken)\n\t\t\t) {\n\t\t\t\t// lone operator\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: operatorToken.loc,\n\t\t\t\t\tmessageId: \"badLinebreak\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\toperator,\n\t\t\t\t\t},\n\t\t\t\t\tfix,\n\t\t\t\t});\n\t\t\t} else if (\n\t\t\t\tstyle === \"before\" &&\n\t\t\t\tastUtils.isTokenOnSameLine(leftToken, operatorToken)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: operatorToken.loc,\n\t\t\t\t\tmessageId: \"operatorAtBeginning\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\toperator,\n\t\t\t\t\t},\n\t\t\t\t\tfix,\n\t\t\t\t});\n\t\t\t} else if (\n\t\t\t\tstyle === \"after\" &&\n\t\t\t\tastUtils.isTokenOnSameLine(operatorToken, rightToken)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: operatorToken.loc,\n\t\t\t\t\tmessageId: \"operatorAtEnd\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\toperator,\n\t\t\t\t\t},\n\t\t\t\t\tfix,\n\t\t\t\t});\n\t\t\t} else if (style === \"none\") {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: operatorToken.loc,\n\t\t\t\t\tmessageId: \"noLinebreak\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\toperator,\n\t\t\t\t\t},\n\t\t\t\t\tfix,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Validates a binary expression using `validateNode`\n\t\t * @param {BinaryExpression|LogicalExpression|AssignmentExpression} node node to be validated\n\t\t * @returns {void}\n\t\t */\n\t\tfunction validateBinaryExpression(node) {\n\t\t\tvalidateNode(node, node.right, node.operator);\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tBinaryExpression: validateBinaryExpression,\n\t\t\tLogicalExpression: validateBinaryExpression,\n\t\t\tAssignmentExpression: validateBinaryExpression,\n\t\t\tVariableDeclarator(node) {\n\t\t\t\tif (node.init) {\n\t\t\t\t\tvalidateNode(node, node.init, \"=\");\n\t\t\t\t}\n\t\t\t},\n\t\t\tPropertyDefinition(node) {\n\t\t\t\tif (node.value) {\n\t\t\t\t\tvalidateNode(node, node.value, \"=\");\n\t\t\t\t}\n\t\t\t},\n\t\t\tConditionalExpression(node) {\n\t\t\t\tvalidateNode(node, node.consequent, \"?\");\n\t\t\t\tvalidateNode(node, node.alternate, \":\");\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to ensure blank lines within blocks.\n * @author Mathias Schreck <https://github.com/lo1tuma>\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"padded-blocks\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/padded-blocks\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require or disallow padding within blocks\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/padded-blocks\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tblocks: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tswitches: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tclasses: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\tminProperties: 1,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowSingleLineBlocks: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\talwaysPadBlock: \"Block must be padded by blank lines.\",\n\t\t\tneverPadBlock: \"Block must not be padded by blank lines.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst options = {};\n\t\tconst typeOptions = context.options[0] || \"always\";\n\t\tconst exceptOptions = context.options[1] || {};\n\n\t\tif (typeof typeOptions === \"string\") {\n\t\t\tconst shouldHavePadding = typeOptions === \"always\";\n\n\t\t\toptions.blocks = shouldHavePadding;\n\t\t\toptions.switches = shouldHavePadding;\n\t\t\toptions.classes = shouldHavePadding;\n\t\t} else {\n\t\t\tif (Object.hasOwn(typeOptions, \"blocks\")) {\n\t\t\t\toptions.blocks = typeOptions.blocks === \"always\";\n\t\t\t}\n\t\t\tif (Object.hasOwn(typeOptions, \"switches\")) {\n\t\t\t\toptions.switches = typeOptions.switches === \"always\";\n\t\t\t}\n\t\t\tif (Object.hasOwn(typeOptions, \"classes\")) {\n\t\t\t\toptions.classes = typeOptions.classes === \"always\";\n\t\t\t}\n\t\t}\n\n\t\tif (Object.hasOwn(exceptOptions, \"allowSingleLineBlocks\")) {\n\t\t\toptions.allowSingleLineBlocks =\n\t\t\t\texceptOptions.allowSingleLineBlocks === true;\n\t\t}\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Gets the open brace token from a given node.\n\t\t * @param {ASTNode} node A BlockStatement or SwitchStatement node from which to get the open brace.\n\t\t * @returns {Token} The token of the open brace.\n\t\t */\n\t\tfunction getOpenBrace(node) {\n\t\t\tif (node.type === \"SwitchStatement\") {\n\t\t\t\treturn sourceCode.getTokenBefore(node.cases[0]);\n\t\t\t}\n\n\t\t\tif (node.type === \"StaticBlock\") {\n\t\t\t\treturn sourceCode.getFirstToken(node, { skip: 1 }); // skip the `static` token\n\t\t\t}\n\n\t\t\t// `BlockStatement` or `ClassBody`\n\t\t\treturn sourceCode.getFirstToken(node);\n\t\t}\n\n\t\t/**\n\t\t * Checks if the given parameter is a comment node\n\t\t * @param {ASTNode|Token} node An AST node or token\n\t\t * @returns {boolean} True if node is a comment\n\t\t */\n\t\tfunction isComment(node) {\n\t\t\treturn node.type === \"Line\" || node.type === \"Block\";\n\t\t}\n\n\t\t/**\n\t\t * Checks if there is padding between two tokens\n\t\t * @param {Token} first The first token\n\t\t * @param {Token} second The second token\n\t\t * @returns {boolean} True if there is at least a line between the tokens\n\t\t */\n\t\tfunction isPaddingBetweenTokens(first, second) {\n\t\t\treturn second.loc.start.line - first.loc.end.line >= 2;\n\t\t}\n\n\t\t/**\n\t\t * Checks if the given token has a blank line after it.\n\t\t * @param {Token} token The token to check.\n\t\t * @returns {boolean} Whether or not the token is followed by a blank line.\n\t\t */\n\t\tfunction getFirstBlockToken(token) {\n\t\t\tlet prev,\n\t\t\t\tfirst = token;\n\n\t\t\tdo {\n\t\t\t\tprev = first;\n\t\t\t\tfirst = sourceCode.getTokenAfter(first, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t});\n\t\t\t} while (\n\t\t\t\tisComment(first) &&\n\t\t\t\tfirst.loc.start.line === prev.loc.end.line\n\t\t\t);\n\n\t\t\treturn first;\n\t\t}\n\n\t\t/**\n\t\t * Checks if the given token is preceded by a blank line.\n\t\t * @param {Token} token The token to check\n\t\t * @returns {boolean} Whether or not the token is preceded by a blank line\n\t\t */\n\t\tfunction getLastBlockToken(token) {\n\t\t\tlet last = token,\n\t\t\t\tnext;\n\n\t\t\tdo {\n\t\t\t\tnext = last;\n\t\t\t\tlast = sourceCode.getTokenBefore(last, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t});\n\t\t\t} while (\n\t\t\t\tisComment(last) &&\n\t\t\t\tlast.loc.end.line === next.loc.start.line\n\t\t\t);\n\n\t\t\treturn last;\n\t\t}\n\n\t\t/**\n\t\t * Checks if a node should be padded, according to the rule config.\n\t\t * @param {ASTNode} node The AST node to check.\n\t\t * @throws {Error} (Unreachable)\n\t\t * @returns {boolean} True if the node should be padded, false otherwise.\n\t\t */\n\t\tfunction requirePaddingFor(node) {\n\t\t\tswitch (node.type) {\n\t\t\t\tcase \"BlockStatement\":\n\t\t\t\tcase \"StaticBlock\":\n\t\t\t\t\treturn options.blocks;\n\t\t\t\tcase \"SwitchStatement\":\n\t\t\t\t\treturn options.switches;\n\t\t\t\tcase \"ClassBody\":\n\t\t\t\t\treturn options.classes;\n\n\t\t\t\t/* c8 ignore next */\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(\"unreachable\");\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks the given BlockStatement node to be padded if the block is not empty.\n\t\t * @param {ASTNode} node The AST node of a BlockStatement.\n\t\t * @returns {void} undefined.\n\t\t */\n\t\tfunction checkPadding(node) {\n\t\t\tconst openBrace = getOpenBrace(node),\n\t\t\t\tfirstBlockToken = getFirstBlockToken(openBrace),\n\t\t\t\ttokenBeforeFirst = sourceCode.getTokenBefore(firstBlockToken, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t}),\n\t\t\t\tcloseBrace = sourceCode.getLastToken(node),\n\t\t\t\tlastBlockToken = getLastBlockToken(closeBrace),\n\t\t\t\ttokenAfterLast = sourceCode.getTokenAfter(lastBlockToken, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t}),\n\t\t\t\tblockHasTopPadding = isPaddingBetweenTokens(\n\t\t\t\t\ttokenBeforeFirst,\n\t\t\t\t\tfirstBlockToken,\n\t\t\t\t),\n\t\t\t\tblockHasBottomPadding = isPaddingBetweenTokens(\n\t\t\t\t\tlastBlockToken,\n\t\t\t\t\ttokenAfterLast,\n\t\t\t\t);\n\n\t\t\tif (\n\t\t\t\toptions.allowSingleLineBlocks &&\n\t\t\t\tastUtils.isTokenOnSameLine(tokenBeforeFirst, tokenAfterLast)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (requirePaddingFor(node)) {\n\t\t\t\tif (!blockHasTopPadding) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tstart: tokenBeforeFirst.loc.start,\n\t\t\t\t\t\t\tend: firstBlockToken.loc.start,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.insertTextAfter(\n\t\t\t\t\t\t\t\ttokenBeforeFirst,\n\t\t\t\t\t\t\t\t\"\\n\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmessageId: \"alwaysPadBlock\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (!blockHasBottomPadding) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tend: tokenAfterLast.loc.start,\n\t\t\t\t\t\t\tstart: lastBlockToken.loc.end,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.insertTextBefore(tokenAfterLast, \"\\n\");\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmessageId: \"alwaysPadBlock\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (blockHasTopPadding) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tstart: tokenBeforeFirst.loc.start,\n\t\t\t\t\t\t\tend: firstBlockToken.loc.start,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\ttokenBeforeFirst.range[1],\n\t\t\t\t\t\t\t\t\tfirstBlockToken.range[0] -\n\t\t\t\t\t\t\t\t\t\tfirstBlockToken.loc.start.column,\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"\\n\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmessageId: \"neverPadBlock\",\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (blockHasBottomPadding) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tend: tokenAfterLast.loc.start,\n\t\t\t\t\t\t\tstart: lastBlockToken.loc.end,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmessageId: \"neverPadBlock\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\tlastBlockToken.range[1],\n\t\t\t\t\t\t\t\t\ttokenAfterLast.range[0] -\n\t\t\t\t\t\t\t\t\t\ttokenAfterLast.loc.start.column,\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"\\n\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst rule = {};\n\n\t\tif (Object.hasOwn(options, \"switches\")) {\n\t\t\trule.SwitchStatement = function (node) {\n\t\t\t\tif (node.cases.length === 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcheckPadding(node);\n\t\t\t};\n\t\t}\n\n\t\tif (Object.hasOwn(options, \"blocks\")) {\n\t\t\trule.BlockStatement = function (node) {\n\t\t\t\tif (node.body.length === 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcheckPadding(node);\n\t\t\t};\n\t\t\trule.StaticBlock = rule.BlockStatement;\n\t\t}\n\n\t\tif (Object.hasOwn(options, \"classes\")) {\n\t\t\trule.ClassBody = function (node) {\n\t\t\t\tif (node.body.length === 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcheckPadding(node);\n\t\t\t};\n\t\t}\n\n\t\treturn rule;\n\t},\n};\n", "/**\n * @fileoverview Rule to require or disallow newlines between statements\n * @author Toru Nagashima\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst LT = `[${Array.from(astUtils.LINEBREAKS).join(\"\")}]`;\nconst PADDING_LINE_SEQUENCE = new RegExp(\n\tString.raw`^(\\s*?${LT})\\s*${LT}(\\s*;?)$`,\n\t\"u\",\n);\nconst CJS_EXPORT = /^(?:module\\s*\\.\\s*)?exports(?:\\s*\\.|\\s*\\[|$)/u;\nconst CJS_IMPORT = /^require\\(/u;\n\n/**\n * Creates tester which check if a node starts with specific keyword.\n * @param {string} keyword The keyword to test.\n * @returns {Object} the created tester.\n * @private\n */\nfunction newKeywordTester(keyword) {\n\treturn {\n\t\ttest: (node, sourceCode) =>\n\t\t\tsourceCode.getFirstToken(node).value === keyword,\n\t};\n}\n\n/**\n * Creates tester which check if a node starts with specific keyword and spans a single line.\n * @param {string} keyword The keyword to test.\n * @returns {Object} the created tester.\n * @private\n */\nfunction newSinglelineKeywordTester(keyword) {\n\treturn {\n\t\ttest: (node, sourceCode) =>\n\t\t\tnode.loc.start.line === node.loc.end.line &&\n\t\t\tsourceCode.getFirstToken(node).value === keyword,\n\t};\n}\n\n/**\n * Creates tester which check if a node starts with specific keyword and spans multiple lines.\n * @param {string} keyword The keyword to test.\n * @returns {Object} the created tester.\n * @private\n */\nfunction newMultilineKeywordTester(keyword) {\n\treturn {\n\t\ttest: (node, sourceCode) =>\n\t\t\tnode.loc.start.line !== node.loc.end.line &&\n\t\t\tsourceCode.getFirstToken(node).value === keyword,\n\t};\n}\n\n/**\n * Creates tester which check if a node is specific type.\n * @param {string} type The node type to test.\n * @returns {Object} the created tester.\n * @private\n */\nfunction newNodeTypeTester(type) {\n\treturn {\n\t\ttest: node => node.type === type,\n\t};\n}\n\n/**\n * Checks the given node is an expression statement of IIFE.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} `true` if the node is an expression statement of IIFE.\n * @private\n */\nfunction isIIFEStatement(node) {\n\tif (node.type === \"ExpressionStatement\") {\n\t\tlet call = astUtils.skipChainExpression(node.expression);\n\n\t\tif (call.type === \"UnaryExpression\") {\n\t\t\tcall = astUtils.skipChainExpression(call.argument);\n\t\t}\n\t\treturn (\n\t\t\tcall.type === \"CallExpression\" && astUtils.isFunction(call.callee)\n\t\t);\n\t}\n\treturn false;\n}\n\n/**\n * Checks whether the given node is a block-like statement.\n * This checks the last token of the node is the closing brace of a block.\n * @param {SourceCode} sourceCode The source code to get tokens.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} `true` if the node is a block-like statement.\n * @private\n */\nfunction isBlockLikeStatement(sourceCode, node) {\n\t// do-while with a block is a block-like statement.\n\tif (\n\t\tnode.type === \"DoWhileStatement\" &&\n\t\tnode.body.type === \"BlockStatement\"\n\t) {\n\t\treturn true;\n\t}\n\n\t/*\n\t * IIFE is a block-like statement specially from\n\t * JSCS#disallowPaddingNewLinesAfterBlocks.\n\t */\n\tif (isIIFEStatement(node)) {\n\t\treturn true;\n\t}\n\n\t// Checks the last token is a closing brace of blocks.\n\tconst lastToken = sourceCode.getLastToken(\n\t\tnode,\n\t\tastUtils.isNotSemicolonToken,\n\t);\n\tconst belongingNode =\n\t\tlastToken && astUtils.isClosingBraceToken(lastToken)\n\t\t\t? sourceCode.getNodeByRangeIndex(lastToken.range[0])\n\t\t\t: null;\n\n\treturn (\n\t\tBoolean(belongingNode) &&\n\t\t(belongingNode.type === \"BlockStatement\" ||\n\t\t\tbelongingNode.type === \"SwitchStatement\")\n\t);\n}\n\n/**\n * Gets the actual last token.\n *\n * If a semicolon is semicolon-less style's semicolon, this ignores it.\n * For example:\n *\n *     foo()\n *     ;[1, 2, 3].forEach(bar)\n * @param {SourceCode} sourceCode The source code to get tokens.\n * @param {ASTNode} node The node to get.\n * @returns {Token} The actual last token.\n * @private\n */\nfunction getActualLastToken(sourceCode, node) {\n\tconst semiToken = sourceCode.getLastToken(node);\n\tconst prevToken = sourceCode.getTokenBefore(semiToken);\n\tconst nextToken = sourceCode.getTokenAfter(semiToken);\n\tconst isSemicolonLessStyle = Boolean(\n\t\tprevToken &&\n\t\tnextToken &&\n\t\tprevToken.range[0] >= node.range[0] &&\n\t\tastUtils.isSemicolonToken(semiToken) &&\n\t\tsemiToken.loc.start.line !== prevToken.loc.end.line &&\n\t\tsemiToken.loc.end.line === nextToken.loc.start.line,\n\t);\n\n\treturn isSemicolonLessStyle ? prevToken : semiToken;\n}\n\n/**\n * This returns the concatenation of the first 2 captured strings.\n * @param {string} _ Unused. Whole matched string.\n * @param {string} trailingSpaces The trailing spaces of the first line.\n * @param {string} indentSpaces The indentation spaces of the last line.\n * @returns {string} The concatenation of trailingSpaces and indentSpaces.\n * @private\n */\nfunction replacerToRemovePaddingLines(_, trailingSpaces, indentSpaces) {\n\treturn trailingSpaces + indentSpaces;\n}\n\n/**\n * Check and report statements for `any` configuration.\n * It does nothing.\n * @returns {void}\n * @private\n */\nfunction verifyForAny() {}\n\n/**\n * Check and report statements for `never` configuration.\n * This autofix removes blank lines between the given 2 statements.\n * However, if comments exist between 2 blank lines, it does not remove those\n * blank lines automatically.\n * @param {RuleContext} context The rule context to report.\n * @param {ASTNode} _ Unused. The previous node to check.\n * @param {ASTNode} nextNode The next node to check.\n * @param {Array<Token[]>} paddingLines The array of token pairs that blank\n * lines exist between the pair.\n * @returns {void}\n * @private\n */\nfunction verifyForNever(context, _, nextNode, paddingLines) {\n\tif (paddingLines.length === 0) {\n\t\treturn;\n\t}\n\n\tcontext.report({\n\t\tnode: nextNode,\n\t\tmessageId: \"unexpectedBlankLine\",\n\t\tfix(fixer) {\n\t\t\tif (paddingLines.length >= 2) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst prevToken = paddingLines[0][0];\n\t\t\tconst nextToken = paddingLines[0][1];\n\t\t\tconst start = prevToken.range[1];\n\t\t\tconst end = nextToken.range[0];\n\t\t\tconst text = context.sourceCode.text\n\t\t\t\t.slice(start, end)\n\t\t\t\t.replace(PADDING_LINE_SEQUENCE, replacerToRemovePaddingLines);\n\n\t\t\treturn fixer.replaceTextRange([start, end], text);\n\t\t},\n\t});\n}\n\n/**\n * Check and report statements for `always` configuration.\n * This autofix inserts a blank line between the given 2 statements.\n * If the `prevNode` has trailing comments, it inserts a blank line after the\n * trailing comments.\n * @param {RuleContext} context The rule context to report.\n * @param {ASTNode} prevNode The previous node to check.\n * @param {ASTNode} nextNode The next node to check.\n * @param {Array<Token[]>} paddingLines The array of token pairs that blank\n * lines exist between the pair.\n * @returns {void}\n * @private\n */\nfunction verifyForAlways(context, prevNode, nextNode, paddingLines) {\n\tif (paddingLines.length > 0) {\n\t\treturn;\n\t}\n\n\tcontext.report({\n\t\tnode: nextNode,\n\t\tmessageId: \"expectedBlankLine\",\n\t\tfix(fixer) {\n\t\t\tconst sourceCode = context.sourceCode;\n\t\t\tlet prevToken = getActualLastToken(sourceCode, prevNode);\n\t\t\tconst nextToken =\n\t\t\t\tsourceCode.getFirstTokenBetween(prevToken, nextNode, {\n\t\t\t\t\tincludeComments: true,\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Skip the trailing comments of the previous node.\n\t\t\t\t\t * This inserts a blank line after the last trailing comment.\n\t\t\t\t\t *\n\t\t\t\t\t * For example:\n\t\t\t\t\t *\n\t\t\t\t\t *     foo(); // trailing comment.\n\t\t\t\t\t *     // comment.\n\t\t\t\t\t *     bar();\n\t\t\t\t\t *\n\t\t\t\t\t * Get fixed to:\n\t\t\t\t\t *\n\t\t\t\t\t *     foo(); // trailing comment.\n\t\t\t\t\t *\n\t\t\t\t\t *     // comment.\n\t\t\t\t\t *     bar();\n\t\t\t\t\t * @param {Token} token The token to check.\n\t\t\t\t\t * @returns {boolean} `true` if the token is not a trailing comment.\n\t\t\t\t\t * @private\n\t\t\t\t\t */\n\t\t\t\t\tfilter(token) {\n\t\t\t\t\t\tif (astUtils.isTokenOnSameLine(prevToken, token)) {\n\t\t\t\t\t\t\tprevToken = token;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t},\n\t\t\t\t}) || nextNode;\n\t\t\tconst insertText = astUtils.isTokenOnSameLine(prevToken, nextToken)\n\t\t\t\t? \"\\n\\n\"\n\t\t\t\t: \"\\n\";\n\n\t\t\treturn fixer.insertTextAfter(prevToken, insertText);\n\t\t},\n\t});\n}\n\n/**\n * Types of blank lines.\n * `any`, `never`, and `always` are defined.\n * Those have `verify` method to check and report statements.\n * @private\n */\nconst PaddingTypes = {\n\tany: { verify: verifyForAny },\n\tnever: { verify: verifyForNever },\n\talways: { verify: verifyForAlways },\n};\n\n/**\n * Types of statements.\n * Those have `test` method to check it matches to the given statement.\n * @private\n */\nconst StatementTypes = {\n\t\"*\": { test: () => true },\n\t\"block-like\": {\n\t\ttest: (node, sourceCode) => isBlockLikeStatement(sourceCode, node),\n\t},\n\t\"cjs-export\": {\n\t\ttest: (node, sourceCode) =>\n\t\t\tnode.type === \"ExpressionStatement\" &&\n\t\t\tnode.expression.type === \"AssignmentExpression\" &&\n\t\t\tCJS_EXPORT.test(sourceCode.getText(node.expression.left)),\n\t},\n\t\"cjs-import\": {\n\t\ttest: (node, sourceCode) =>\n\t\t\tnode.type === \"VariableDeclaration\" &&\n\t\t\tnode.declarations.length > 0 &&\n\t\t\tBoolean(node.declarations[0].init) &&\n\t\t\tCJS_IMPORT.test(sourceCode.getText(node.declarations[0].init)),\n\t},\n\tdirective: {\n\t\ttest: astUtils.isDirective,\n\t},\n\texpression: {\n\t\ttest: node =>\n\t\t\tnode.type === \"ExpressionStatement\" && !astUtils.isDirective(node),\n\t},\n\tiife: {\n\t\ttest: isIIFEStatement,\n\t},\n\t\"multiline-block-like\": {\n\t\ttest: (node, sourceCode) =>\n\t\t\tnode.loc.start.line !== node.loc.end.line &&\n\t\t\tisBlockLikeStatement(sourceCode, node),\n\t},\n\t\"multiline-expression\": {\n\t\ttest: node =>\n\t\t\tnode.loc.start.line !== node.loc.end.line &&\n\t\t\tnode.type === \"ExpressionStatement\" &&\n\t\t\t!astUtils.isDirective(node),\n\t},\n\n\t\"multiline-const\": newMultilineKeywordTester(\"const\"),\n\t\"multiline-let\": newMultilineKeywordTester(\"let\"),\n\t\"multiline-var\": newMultilineKeywordTester(\"var\"),\n\t\"singleline-const\": newSinglelineKeywordTester(\"const\"),\n\t\"singleline-let\": newSinglelineKeywordTester(\"let\"),\n\t\"singleline-var\": newSinglelineKeywordTester(\"var\"),\n\n\tblock: newNodeTypeTester(\"BlockStatement\"),\n\tempty: newNodeTypeTester(\"EmptyStatement\"),\n\tfunction: newNodeTypeTester(\"FunctionDeclaration\"),\n\n\tbreak: newKeywordTester(\"break\"),\n\tcase: newKeywordTester(\"case\"),\n\tclass: newKeywordTester(\"class\"),\n\tconst: newKeywordTester(\"const\"),\n\tcontinue: newKeywordTester(\"continue\"),\n\tdebugger: newKeywordTester(\"debugger\"),\n\tdefault: newKeywordTester(\"default\"),\n\tdo: newKeywordTester(\"do\"),\n\texport: newKeywordTester(\"export\"),\n\tfor: newKeywordTester(\"for\"),\n\tif: newKeywordTester(\"if\"),\n\timport: newKeywordTester(\"import\"),\n\tlet: newKeywordTester(\"let\"),\n\treturn: newKeywordTester(\"return\"),\n\tswitch: newKeywordTester(\"switch\"),\n\tthrow: newKeywordTester(\"throw\"),\n\ttry: newKeywordTester(\"try\"),\n\tvar: newKeywordTester(\"var\"),\n\twhile: newKeywordTester(\"while\"),\n\twith: newKeywordTester(\"with\"),\n};\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"padding-line-between-statements\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/padding-line-between-statements\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require or disallow padding lines between statements\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/padding-line-between-statements\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: {\n\t\t\tdefinitions: {\n\t\t\t\tpaddingType: {\n\t\t\t\t\tenum: Object.keys(PaddingTypes),\n\t\t\t\t},\n\t\t\t\tstatementType: {\n\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t{ enum: Object.keys(StatementTypes) },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\titems: { enum: Object.keys(StatementTypes) },\n\t\t\t\t\t\t\tminItems: 1,\n\t\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\ttype: \"array\",\n\t\t\titems: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tblankLine: { $ref: \"#/definitions/paddingType\" },\n\t\t\t\t\tprev: { $ref: \"#/definitions/statementType\" },\n\t\t\t\t\tnext: { $ref: \"#/definitions/statementType\" },\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t\trequired: [\"blankLine\", \"prev\", \"next\"],\n\t\t\t},\n\t\t},\n\n\t\tmessages: {\n\t\t\tunexpectedBlankLine: \"Unexpected blank line before this statement.\",\n\t\t\texpectedBlankLine: \"Expected blank line before this statement.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst configureList = context.options || [];\n\t\tlet scopeInfo = null;\n\n\t\t/**\n\t\t * Processes to enter to new scope.\n\t\t * This manages the current previous statement.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction enterScope() {\n\t\t\tscopeInfo = {\n\t\t\t\tupper: scopeInfo,\n\t\t\t\tprevNode: null,\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Processes to exit from the current scope.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction exitScope() {\n\t\t\tscopeInfo = scopeInfo.upper;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether the given node matches the given type.\n\t\t * @param {ASTNode} node The statement node to check.\n\t\t * @param {string|string[]} type The statement type to check.\n\t\t * @returns {boolean} `true` if the statement node matched the type.\n\t\t * @private\n\t\t */\n\t\tfunction match(node, type) {\n\t\t\tlet innerStatementNode = node;\n\n\t\t\twhile (innerStatementNode.type === \"LabeledStatement\") {\n\t\t\t\tinnerStatementNode = innerStatementNode.body;\n\t\t\t}\n\t\t\tif (Array.isArray(type)) {\n\t\t\t\treturn type.some(match.bind(null, innerStatementNode));\n\t\t\t}\n\t\t\treturn StatementTypes[type].test(innerStatementNode, sourceCode);\n\t\t}\n\n\t\t/**\n\t\t * Finds the last matched configure from configureList.\n\t\t * @param {ASTNode} prevNode The previous statement to match.\n\t\t * @param {ASTNode} nextNode The current statement to match.\n\t\t * @returns {Object} The tester of the last matched configure.\n\t\t * @private\n\t\t */\n\t\tfunction getPaddingType(prevNode, nextNode) {\n\t\t\tfor (let i = configureList.length - 1; i >= 0; --i) {\n\t\t\t\tconst configure = configureList[i];\n\t\t\t\tconst matched =\n\t\t\t\t\tmatch(prevNode, configure.prev) &&\n\t\t\t\t\tmatch(nextNode, configure.next);\n\n\t\t\t\tif (matched) {\n\t\t\t\t\treturn PaddingTypes[configure.blankLine];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn PaddingTypes.any;\n\t\t}\n\n\t\t/**\n\t\t * Gets padding line sequences between the given 2 statements.\n\t\t * Comments are separators of the padding line sequences.\n\t\t * @param {ASTNode} prevNode The previous statement to count.\n\t\t * @param {ASTNode} nextNode The current statement to count.\n\t\t * @returns {Array<Token[]>} The array of token pairs.\n\t\t * @private\n\t\t */\n\t\tfunction getPaddingLineSequences(prevNode, nextNode) {\n\t\t\tconst pairs = [];\n\t\t\tlet prevToken = getActualLastToken(sourceCode, prevNode);\n\n\t\t\tif (nextNode.loc.start.line - prevToken.loc.end.line >= 2) {\n\t\t\t\tdo {\n\t\t\t\t\tconst token = sourceCode.getTokenAfter(prevToken, {\n\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t});\n\n\t\t\t\t\tif (token.loc.start.line - prevToken.loc.end.line >= 2) {\n\t\t\t\t\t\tpairs.push([prevToken, token]);\n\t\t\t\t\t}\n\t\t\t\t\tprevToken = token;\n\t\t\t\t} while (prevToken.range[0] < nextNode.range[0]);\n\t\t\t}\n\n\t\t\treturn pairs;\n\t\t}\n\n\t\t/**\n\t\t * Verify padding lines between the given node and the previous node.\n\t\t * @param {ASTNode} node The node to verify.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction verify(node) {\n\t\t\tconst parentType = node.parent.type;\n\t\t\tconst validParent =\n\t\t\t\tastUtils.STATEMENT_LIST_PARENTS.has(parentType) ||\n\t\t\t\tparentType === \"SwitchStatement\";\n\n\t\t\tif (!validParent) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Save this node as the current previous statement.\n\t\t\tconst prevNode = scopeInfo.prevNode;\n\n\t\t\t// Verify.\n\t\t\tif (prevNode) {\n\t\t\t\tconst type = getPaddingType(prevNode, node);\n\t\t\t\tconst paddingLines = getPaddingLineSequences(prevNode, node);\n\n\t\t\t\ttype.verify(context, prevNode, node, paddingLines);\n\t\t\t}\n\n\t\t\tscopeInfo.prevNode = node;\n\t\t}\n\n\t\t/**\n\t\t * Verify padding lines between the given node and the previous node.\n\t\t * Then process to enter to new scope.\n\t\t * @param {ASTNode} node The node to verify.\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction verifyThenEnterScope(node) {\n\t\t\tverify(node);\n\t\t\tenterScope();\n\t\t}\n\n\t\treturn {\n\t\t\tProgram: enterScope,\n\t\t\tBlockStatement: enterScope,\n\t\t\tSwitchStatement: enterScope,\n\t\t\tStaticBlock: enterScope,\n\t\t\t\"Program:exit\": exitScope,\n\t\t\t\"BlockStatement:exit\": exitScope,\n\t\t\t\"SwitchStatement:exit\": exitScope,\n\t\t\t\"StaticBlock:exit\": exitScope,\n\n\t\t\t\":statement\": verify,\n\n\t\t\tSwitchCase: verifyThenEnterScope,\n\t\t\t\"SwitchCase:exit\": exitScope,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to suggest using arrow functions as callbacks.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Scope} Scope */\n/** @typedef {import(\"eslint-scope\").Variable} Variable */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether or not a given variable is a function name.\n * @param {Variable} variable A variable to check.\n * @returns {boolean} `true` if the variable is a function name.\n */\nfunction isFunctionName(variable) {\n\treturn variable && variable.defs[0].type === \"FunctionName\";\n}\n\n/**\n * Checks whether or not a given MetaProperty node equals to a given value.\n * @param {ASTNode} node A MetaProperty node to check.\n * @param {string} metaName The name of `MetaProperty.meta`.\n * @param {string} propertyName The name of `MetaProperty.property`.\n * @returns {boolean} `true` if the node is the specific value.\n */\nfunction checkMetaProperty(node, metaName, propertyName) {\n\treturn node.meta.name === metaName && node.property.name === propertyName;\n}\n\n/**\n * Gets the variable object of `arguments` which is defined implicitly.\n * @param {Scope} scope A scope to get.\n * @returns {Variable} The found variable object.\n */\nfunction getVariableOfArguments(scope) {\n\tconst variables = scope.variables;\n\n\tfor (let i = 0; i < variables.length; ++i) {\n\t\tconst variable = variables[i];\n\n\t\tif (variable.name === \"arguments\") {\n\t\t\t/*\n\t\t\t * If there was a parameter which is named \"arguments\", the\n\t\t\t * implicit \"arguments\" is not defined.\n\t\t\t * So does fast return with null.\n\t\t\t */\n\t\t\treturn variable.identifiers.length === 0 ? variable : null;\n\t\t}\n\t}\n\n\t/* c8 ignore next */\n\treturn null;\n}\n\n/**\n * Checks whether or not a given node is a callback.\n * @param {ASTNode} node A node to check.\n * @throws {Error} (Unreachable.)\n * @returns {Object}\n *   {boolean} retv.isCallback - `true` if the node is a callback.\n *   {boolean} retv.isLexicalThis - `true` if the node is with `.bind(this)`.\n */\nfunction getCallbackInfo(node) {\n\tconst retv = { isCallback: false, isLexicalThis: false };\n\tlet currentNode = node;\n\tlet parent = node.parent;\n\tlet bound = false;\n\n\twhile (currentNode) {\n\t\tswitch (parent.type) {\n\t\t\t// Checks parents recursively.\n\n\t\t\tcase \"LogicalExpression\":\n\t\t\tcase \"ChainExpression\":\n\t\t\tcase \"ConditionalExpression\":\n\t\t\t\tbreak;\n\n\t\t\t// Checks whether the parent node is `.bind(this)` call.\n\t\t\tcase \"MemberExpression\":\n\t\t\t\tif (\n\t\t\t\t\tparent.object === currentNode &&\n\t\t\t\t\t!parent.property.computed &&\n\t\t\t\t\tparent.property.type === \"Identifier\" &&\n\t\t\t\t\tparent.property.name === \"bind\"\n\t\t\t\t) {\n\t\t\t\t\tconst maybeCallee =\n\t\t\t\t\t\tparent.parent.type === \"ChainExpression\"\n\t\t\t\t\t\t\t? parent.parent\n\t\t\t\t\t\t\t: parent;\n\n\t\t\t\t\tif (astUtils.isCallee(maybeCallee)) {\n\t\t\t\t\t\tif (!bound) {\n\t\t\t\t\t\t\tbound = true; // Use only the first `.bind()` to make `isLexicalThis` value.\n\t\t\t\t\t\t\tretv.isLexicalThis =\n\t\t\t\t\t\t\t\tmaybeCallee.parent.arguments.length === 1 &&\n\t\t\t\t\t\t\t\tmaybeCallee.parent.arguments[0].type ===\n\t\t\t\t\t\t\t\t\t\"ThisExpression\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparent = maybeCallee.parent;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn retv;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn retv;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Checks whether the node is a callback.\n\t\t\tcase \"CallExpression\":\n\t\t\tcase \"NewExpression\":\n\t\t\t\tif (parent.callee !== currentNode) {\n\t\t\t\t\tretv.isCallback = true;\n\t\t\t\t}\n\t\t\t\treturn retv;\n\n\t\t\tdefault:\n\t\t\t\treturn retv;\n\t\t}\n\n\t\tcurrentNode = parent;\n\t\tparent = parent.parent;\n\t}\n\n\t/* c8 ignore next */\n\tthrow new Error(\"unreachable\");\n}\n\n/**\n * Checks whether a simple list of parameters contains any duplicates. This does not handle complex\n * parameter lists (e.g. with destructuring), since complex parameter lists are a SyntaxError with duplicate\n * parameter names anyway. Instead, it always returns `false` for complex parameter lists.\n * @param {ASTNode[]} paramsList The list of parameters for a function\n * @returns {boolean} `true` if the list of parameters contains any duplicates\n */\nfunction hasDuplicateParams(paramsList) {\n\treturn (\n\t\tparamsList.every(param => param.type === \"Identifier\") &&\n\t\tparamsList.length !== new Set(paramsList.map(param => param.name)).size\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{ allowNamedFunctions: false, allowUnboundThis: true },\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Require using arrow functions for callbacks\",\n\t\t\tdialects: [\"JavaScript\", \"TypeScript\"],\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/prefer-arrow-callback\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowNamedFunctions: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowUnboundThis: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tpreferArrowCallback: \"Unexpected function expression.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ allowNamedFunctions, allowUnboundThis }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/*\n\t\t * {Array<{this: boolean, super: boolean, meta: boolean}>}\n\t\t * - this - A flag which shows there are one or more ThisExpression.\n\t\t * - super - A flag which shows there are one or more Super.\n\t\t * - meta - A flag which shows there are one or more MethProperty.\n\t\t */\n\t\tlet stack = [];\n\n\t\t/**\n\t\t * Pushes new function scope with all `false` flags.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction enterScope() {\n\t\t\tstack.push({ this: false, super: false, meta: false });\n\t\t}\n\n\t\t/**\n\t\t * Pops a function scope from the stack.\n\t\t * @returns {{this: boolean, super: boolean, meta: boolean}} The information of the last scope.\n\t\t */\n\t\tfunction exitScope() {\n\t\t\treturn stack.pop();\n\t\t}\n\n\t\treturn {\n\t\t\t// Reset internal state.\n\t\t\tProgram() {\n\t\t\t\tstack = [];\n\t\t\t},\n\n\t\t\t// If there are below, it cannot replace with arrow functions merely.\n\t\t\tThisExpression() {\n\t\t\t\tconst info = stack.at(-1);\n\n\t\t\t\tif (info) {\n\t\t\t\t\tinfo.this = true;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tSuper() {\n\t\t\t\tconst info = stack.at(-1);\n\n\t\t\t\tif (info) {\n\t\t\t\t\tinfo.super = true;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tMetaProperty(node) {\n\t\t\t\tconst info = stack.at(-1);\n\n\t\t\t\tif (info && checkMetaProperty(node, \"new\", \"target\")) {\n\t\t\t\t\tinfo.meta = true;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// To skip nested scopes.\n\t\t\tFunctionDeclaration: enterScope,\n\t\t\t\"FunctionDeclaration:exit\": exitScope,\n\n\t\t\t// Main.\n\t\t\tFunctionExpression: enterScope,\n\t\t\t\"FunctionExpression:exit\"(node) {\n\t\t\t\tconst scopeInfo = exitScope();\n\n\t\t\t\t// Skip named function expressions\n\t\t\t\tif (allowNamedFunctions && node.id && node.id.name) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Skip generators.\n\t\t\t\tif (node.generator) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Skip recursive functions.\n\t\t\t\tconst nameVar = sourceCode.getDeclaredVariables(node)[0];\n\n\t\t\t\tif (isFunctionName(nameVar) && nameVar.references.length > 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Skip if it's using arguments.\n\t\t\t\tconst variable = getVariableOfArguments(\n\t\t\t\t\tsourceCode.getScope(node),\n\t\t\t\t);\n\n\t\t\t\tif (variable && variable.references.length > 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Reports if it's a callback which can replace with arrows.\n\t\t\t\tconst callbackInfo = getCallbackInfo(node);\n\n\t\t\t\tif (\n\t\t\t\t\tcallbackInfo.isCallback &&\n\t\t\t\t\t(!allowUnboundThis ||\n\t\t\t\t\t\t!scopeInfo.this ||\n\t\t\t\t\t\tcallbackInfo.isLexicalThis) &&\n\t\t\t\t\t!scopeInfo.super &&\n\t\t\t\t\t!scopeInfo.meta\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"preferArrowCallback\",\n\t\t\t\t\t\t*fix(fixer) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t(!callbackInfo.isLexicalThis &&\n\t\t\t\t\t\t\t\t\tscopeInfo.this) ||\n\t\t\t\t\t\t\t\thasDuplicateParams(node.params)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * If the callback function does not have .bind(this) and contains a reference to `this`, there\n\t\t\t\t\t\t\t\t * is no way to determine what `this` should be, so don't perform any fixes.\n\t\t\t\t\t\t\t\t * If the callback function has duplicates in its list of parameters (possible in sloppy mode),\n\t\t\t\t\t\t\t\t * don't replace it with an arrow function, because this is a SyntaxError with arrow functions.\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tnode.params.length &&\n\t\t\t\t\t\t\t\tnode.params[0].name === \"this\"\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst functionToken = sourceCode.getFirstToken(\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\tnode.async ? 1 : 0,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst leftParenToken = sourceCode.getTokenAfter(\n\t\t\t\t\t\t\t\tfunctionToken,\n\t\t\t\t\t\t\t\tastUtils.isOpeningParenToken,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (node.async) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tfunctionToken.loc.end.line <\n\t\t\t\t\t\t\t\t\tleftParenToken.loc.start.line\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Remove `.bind(this)` if exists.\n\t\t\t\t\t\t\tif (callbackInfo.isLexicalThis) {\n\t\t\t\t\t\t\t\tconst memberNode = node.parent;\n\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * If `.bind(this)` exists but the parent is not `.bind(this)`, don't remove it automatically.\n\t\t\t\t\t\t\t\t * E.g. `(foo || function(){}).bind(this)`\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\tif (memberNode.type !== \"MemberExpression\") {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst callNode = memberNode.parent;\n\t\t\t\t\t\t\t\tconst firstTokenToRemove =\n\t\t\t\t\t\t\t\t\tsourceCode.getTokenAfter(\n\t\t\t\t\t\t\t\t\t\tmemberNode.object,\n\t\t\t\t\t\t\t\t\t\tastUtils.isNotClosingParenToken,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tconst lastTokenToRemove =\n\t\t\t\t\t\t\t\t\tsourceCode.getLastToken(callNode);\n\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * If the member expression is parenthesized, don't remove the right paren.\n\t\t\t\t\t\t\t\t * E.g. `(function(){}.bind)(this)`\n\t\t\t\t\t\t\t\t *                    ^^^^^^^^^^^^\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tastUtils.isParenthesised(\n\t\t\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\t\t\tmemberNode,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If comments exist in the `.bind(this)`, don't remove those.\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tsourceCode.commentsExistBetween(\n\t\t\t\t\t\t\t\t\t\tfirstTokenToRemove,\n\t\t\t\t\t\t\t\t\t\tlastTokenToRemove,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tyield fixer.removeRange([\n\t\t\t\t\t\t\t\t\tfirstTokenToRemove.range[0],\n\t\t\t\t\t\t\t\t\tlastTokenToRemove.range[1],\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Convert the function expression to an arrow function.\n\t\t\t\t\t\t\tconst tokenBeforeBody = sourceCode.getTokenBefore(\n\t\t\t\t\t\t\t\tnode.body,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tsourceCode.commentsExistBetween(\n\t\t\t\t\t\t\t\t\tfunctionToken,\n\t\t\t\t\t\t\t\t\tleftParenToken,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// Remove only extra tokens to keep comments.\n\t\t\t\t\t\t\t\tyield fixer.remove(functionToken);\n\t\t\t\t\t\t\t\tif (node.id) {\n\t\t\t\t\t\t\t\t\tyield fixer.remove(node.id);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Remove extra tokens and spaces.\n\t\t\t\t\t\t\t\tyield fixer.removeRange([\n\t\t\t\t\t\t\t\t\tfunctionToken.range[0],\n\t\t\t\t\t\t\t\t\tleftParenToken.range[0],\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tyield fixer.insertTextAfter(tokenBeforeBody, \" =>\");\n\n\t\t\t\t\t\t\t// Get the node that will become the new arrow function.\n\t\t\t\t\t\t\tlet replacedNode = callbackInfo.isLexicalThis\n\t\t\t\t\t\t\t\t? node.parent.parent\n\t\t\t\t\t\t\t\t: node;\n\n\t\t\t\t\t\t\tif (replacedNode.type === \"ChainExpression\") {\n\t\t\t\t\t\t\t\treplacedNode = replacedNode.parent;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * If the replaced node is part of a BinaryExpression, LogicalExpression, or MemberExpression, then\n\t\t\t\t\t\t\t * the arrow function needs to be parenthesized, because `foo || () => {}` is invalid syntax even\n\t\t\t\t\t\t\t * though `foo || function() {}` is valid.\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\treplacedNode.parent.type !== \"CallExpression\" &&\n\t\t\t\t\t\t\t\treplacedNode.parent.type !==\n\t\t\t\t\t\t\t\t\t\"ConditionalExpression\" &&\n\t\t\t\t\t\t\t\t!astUtils.isParenthesised(\n\t\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t\t\treplacedNode,\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\t!astUtils.isParenthesised(sourceCode, node)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tyield fixer.insertTextBefore(replacedNode, \"(\");\n\t\t\t\t\t\t\t\tyield fixer.insertTextAfter(replacedNode, \")\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to suggest using of const declaration for variables that are never reassigned after declared.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst FixTracker = require(\"./utils/fix-tracker\");\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Scope} Scope */\n/** @typedef {import(\"eslint-scope\").Variable} Variable */\n/** @typedef {import(\"eslint-scope\").Reference} Reference */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst PATTERN_TYPE =\n\t/^(?:.+?Pattern|RestElement|SpreadProperty|ExperimentalRestProperty|Property)$/u;\nconst DECLARATION_HOST_TYPE =\n\t/^(?:Program|BlockStatement|StaticBlock|SwitchCase)$/u;\nconst DESTRUCTURING_HOST_TYPE =\n\t/^(?:VariableDeclarator|AssignmentExpression)$/u;\n\n/**\n * Checks whether a given node is located at `ForStatement.init` or not.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} `true` if the node is located at `ForStatement.init`.\n */\nfunction isInitOfForStatement(node) {\n\treturn node.parent.type === \"ForStatement\" && node.parent.init === node;\n}\n\n/**\n * Checks whether a given Identifier node becomes a VariableDeclaration or not.\n * @param {ASTNode} identifier An Identifier node to check.\n * @returns {boolean} `true` if the node can become a VariableDeclaration.\n */\nfunction canBecomeVariableDeclaration(identifier) {\n\tlet node = identifier.parent;\n\n\twhile (PATTERN_TYPE.test(node.type)) {\n\t\tnode = node.parent;\n\t}\n\n\treturn (\n\t\tnode.type === \"VariableDeclarator\" ||\n\t\t(node.type === \"AssignmentExpression\" &&\n\t\t\tnode.parent.type === \"ExpressionStatement\" &&\n\t\t\tDECLARATION_HOST_TYPE.test(node.parent.parent.type))\n\t);\n}\n\n/**\n * Checks if an property or element is from outer scope or function parameters\n * in destructing pattern.\n * @param {string} name A variable name to be checked.\n * @param {Scope} initScope A scope to start find.\n * @returns {boolean} Indicates if the variable is from outer scope or function parameters.\n */\nfunction isOuterVariableInDestructing(name, initScope) {\n\tif (\n\t\tinitScope.through.some(\n\t\t\tref => ref.resolved && ref.resolved.name === name,\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\n\tconst variable = astUtils.getVariableByName(initScope, name);\n\n\tif (variable !== null) {\n\t\treturn variable.defs.some(def => def.type === \"Parameter\");\n\t}\n\n\treturn false;\n}\n\n/**\n * Gets the VariableDeclarator/AssignmentExpression node that a given reference\n * belongs to.\n * This is used to detect a mix of reassigned and never reassigned in a\n * destructuring.\n * @param {Reference} reference A reference to get.\n * @returns {ASTNode|null} A VariableDeclarator/AssignmentExpression node or\n *      null.\n */\nfunction getDestructuringHost(reference) {\n\tif (!reference.isWrite()) {\n\t\treturn null;\n\t}\n\tlet node = reference.identifier.parent;\n\n\twhile (PATTERN_TYPE.test(node.type)) {\n\t\tnode = node.parent;\n\t}\n\n\tif (!DESTRUCTURING_HOST_TYPE.test(node.type)) {\n\t\treturn null;\n\t}\n\treturn node;\n}\n\n/**\n * Determines if a destructuring assignment node contains\n * any MemberExpression nodes. This is used to determine if a\n * variable that is only written once using destructuring can be\n * safely converted into a const declaration.\n * @param {ASTNode} node The ObjectPattern or ArrayPattern node to check.\n * @returns {boolean} True if the destructuring pattern contains\n *      a MemberExpression, false if not.\n */\nfunction hasMemberExpressionAssignment(node) {\n\tswitch (node.type) {\n\t\tcase \"ObjectPattern\":\n\t\t\treturn node.properties.some(prop => {\n\t\t\t\tif (prop) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Spread elements have an argument property while\n\t\t\t\t\t * others have a value property. Because different\n\t\t\t\t\t * parsers use different node types for spread elements,\n\t\t\t\t\t * we just check if there is an argument property.\n\t\t\t\t\t */\n\t\t\t\t\treturn hasMemberExpressionAssignment(\n\t\t\t\t\t\tprop.argument || prop.value,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\tcase \"ArrayPattern\":\n\t\t\treturn node.elements.some(element => {\n\t\t\t\tif (element) {\n\t\t\t\t\treturn hasMemberExpressionAssignment(element);\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\tcase \"AssignmentPattern\":\n\t\t\treturn hasMemberExpressionAssignment(node.left);\n\n\t\tcase \"MemberExpression\":\n\t\t\treturn true;\n\n\t\t// no default\n\t}\n\n\treturn false;\n}\n\n/**\n * Gets an identifier node of a given variable.\n *\n * If the initialization exists or one or more reading references exist before\n * the first assignment, the identifier node is the node of the declaration.\n * Otherwise, the identifier node is the node of the first assignment.\n *\n * If the variable should not change to const, this function returns null.\n * - If the variable is reassigned.\n * - If the variable is never initialized nor assigned.\n * - If the variable is initialized in a different scope from the declaration.\n * - If the unique assignment of the variable cannot change to a declaration.\n *   e.g. `if (a) b = 1` / `return (b = 1)`\n * - If the variable is declared in the global scope and `eslintUsed` is `true`.\n *   `/*exported foo` directive comment makes such variables. This rule does not\n *   warn such variables because this rule cannot distinguish whether the\n *   exported variables are reassigned or not.\n * @param {Variable} variable A variable to get.\n * @param {boolean} ignoreReadBeforeAssign\n *      The value of `ignoreReadBeforeAssign` option.\n * @returns {ASTNode|null}\n *      An Identifier node if the variable should change to const.\n *      Otherwise, null.\n */\nfunction getIdentifierIfShouldBeConst(variable, ignoreReadBeforeAssign) {\n\tif (variable.eslintUsed && variable.scope.type === \"global\") {\n\t\treturn null;\n\t}\n\n\t// Finds the unique WriteReference.\n\tlet writer = null;\n\tlet isReadBeforeInit = false;\n\tconst references = variable.references;\n\n\tfor (let i = 0; i < references.length; ++i) {\n\t\tconst reference = references[i];\n\n\t\tif (reference.isWrite()) {\n\t\t\tconst isReassigned =\n\t\t\t\twriter !== null && writer.identifier !== reference.identifier;\n\n\t\t\tif (isReassigned) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst destructuringHost = getDestructuringHost(reference);\n\n\t\t\tif (\n\t\t\t\tdestructuringHost !== null &&\n\t\t\t\tdestructuringHost.left !== void 0\n\t\t\t) {\n\t\t\t\tconst leftNode = destructuringHost.left;\n\t\t\t\tlet hasOuterVariables = false,\n\t\t\t\t\thasNonIdentifiers = false;\n\n\t\t\t\tif (leftNode.type === \"ObjectPattern\") {\n\t\t\t\t\tconst properties = leftNode.properties;\n\n\t\t\t\t\thasOuterVariables = properties\n\t\t\t\t\t\t.filter(prop => prop.value)\n\t\t\t\t\t\t.map(prop => prop.value.name)\n\t\t\t\t\t\t.some(name =>\n\t\t\t\t\t\t\tisOuterVariableInDestructing(name, variable.scope),\n\t\t\t\t\t\t);\n\n\t\t\t\t\thasNonIdentifiers = hasMemberExpressionAssignment(leftNode);\n\t\t\t\t} else if (leftNode.type === \"ArrayPattern\") {\n\t\t\t\t\tconst elements = leftNode.elements;\n\n\t\t\t\t\thasOuterVariables = elements\n\t\t\t\t\t\t.map(element => element && element.name)\n\t\t\t\t\t\t.some(name =>\n\t\t\t\t\t\t\tisOuterVariableInDestructing(name, variable.scope),\n\t\t\t\t\t\t);\n\n\t\t\t\t\thasNonIdentifiers = hasMemberExpressionAssignment(leftNode);\n\t\t\t\t}\n\n\t\t\t\tif (hasOuterVariables || hasNonIdentifiers) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twriter = reference;\n\t\t} else if (reference.isRead() && writer === null) {\n\t\t\tif (ignoreReadBeforeAssign) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tisReadBeforeInit = true;\n\t\t}\n\t}\n\n\t/*\n\t * If the assignment is from a different scope, ignore it.\n\t * If the assignment cannot change to a declaration, ignore it.\n\t */\n\tconst shouldBeConst =\n\t\twriter !== null &&\n\t\twriter.from === variable.scope &&\n\t\tcanBecomeVariableDeclaration(writer.identifier);\n\n\tif (!shouldBeConst) {\n\t\treturn null;\n\t}\n\n\tif (isReadBeforeInit) {\n\t\treturn variable.defs[0].name;\n\t}\n\n\treturn writer.identifier;\n}\n\n/**\n * Groups by the VariableDeclarator/AssignmentExpression node that each\n * reference of given variables belongs to.\n * This is used to detect a mix of reassigned and never reassigned in a\n * destructuring.\n * @param {Variable[]} variables Variables to group by destructuring.\n * @param {boolean} ignoreReadBeforeAssign\n *      The value of `ignoreReadBeforeAssign` option.\n * @returns {Map<ASTNode, ASTNode[]>} Grouped identifier nodes.\n */\nfunction groupByDestructuring(variables, ignoreReadBeforeAssign) {\n\tconst identifierMap = new Map();\n\n\tfor (let i = 0; i < variables.length; ++i) {\n\t\tconst variable = variables[i];\n\t\tconst references = variable.references;\n\t\tconst identifier = getIdentifierIfShouldBeConst(\n\t\t\tvariable,\n\t\t\tignoreReadBeforeAssign,\n\t\t);\n\t\tlet prevId = null;\n\n\t\tfor (let j = 0; j < references.length; ++j) {\n\t\t\tconst reference = references[j];\n\t\t\tconst id = reference.identifier;\n\n\t\t\t/*\n\t\t\t * Avoid counting a reference twice or more for default values of\n\t\t\t * destructuring.\n\t\t\t */\n\t\t\tif (id === prevId) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tprevId = id;\n\n\t\t\t// Add the identifier node into the destructuring group.\n\t\t\tconst group = getDestructuringHost(reference);\n\n\t\t\tif (group) {\n\t\t\t\tif (identifierMap.has(group)) {\n\t\t\t\t\tidentifierMap.get(group).push(identifier);\n\t\t\t\t} else {\n\t\t\t\t\tidentifierMap.set(group, [identifier]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn identifierMap;\n}\n\n/**\n * Finds the nearest parent of node with a given type.\n * @param {ASTNode} node The node to search from.\n * @param {string} type The type field of the parent node.\n * @param {Function} shouldStop A predicate that returns true if the traversal should stop, and false otherwise.\n * @returns {ASTNode} The closest ancestor with the specified type; null if no such ancestor exists.\n */\nfunction findUp(node, type, shouldStop) {\n\tif (!node || shouldStop(node)) {\n\t\treturn null;\n\t}\n\tif (node.type === type) {\n\t\treturn node;\n\t}\n\treturn findUp(node.parent, type, shouldStop);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tdestructuring: \"any\",\n\t\t\t\tignoreReadBeforeAssign: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require `const` declarations for variables that are never reassigned after declared\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/prefer-const\",\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tdestructuring: { enum: [\"any\", \"all\"] },\n\t\t\t\t\tignoreReadBeforeAssign: { type: \"boolean\" },\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\tuseConst: \"'{{name}}' is never reassigned. Use 'const' instead.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ destructuring, ignoreReadBeforeAssign }] = context.options;\n\t\tconst shouldMatchAnyDestructuredVariable = destructuring !== \"all\";\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst variables = [];\n\t\tlet reportCount = 0;\n\t\tlet checkedId = null;\n\t\tlet checkedName = \"\";\n\n\t\t/**\n\t\t * Reports given identifier nodes if all of the nodes should be declared\n\t\t * as const.\n\t\t *\n\t\t * The argument 'nodes' is an array of Identifier nodes.\n\t\t * This node is the result of 'getIdentifierIfShouldBeConst()', so it's\n\t\t * nullable. In simple declaration or assignment cases, the length of\n\t\t * the array is 1. In destructuring cases, the length of the array can\n\t\t * be 2 or more.\n\t\t * @param {(Reference|null)[]} nodes\n\t\t *      References which are grouped by destructuring to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkGroup(nodes) {\n\t\t\tconst nodesToReport = nodes.filter(Boolean);\n\n\t\t\tif (\n\t\t\t\tnodes.length &&\n\t\t\t\t(shouldMatchAnyDestructuredVariable ||\n\t\t\t\t\tnodesToReport.length === nodes.length)\n\t\t\t) {\n\t\t\t\tconst varDeclParent = findUp(\n\t\t\t\t\tnodes[0],\n\t\t\t\t\t\"VariableDeclaration\",\n\t\t\t\t\tparentNode => parentNode.type.endsWith(\"Statement\"),\n\t\t\t\t);\n\t\t\t\tconst isVarDecParentNull = varDeclParent === null;\n\n\t\t\t\tif (\n\t\t\t\t\t!isVarDecParentNull &&\n\t\t\t\t\tvarDeclParent.declarations.length > 0\n\t\t\t\t) {\n\t\t\t\t\tconst firstDeclaration = varDeclParent.declarations[0];\n\n\t\t\t\t\tif (firstDeclaration.init) {\n\t\t\t\t\t\tconst firstDecParent = firstDeclaration.init.parent;\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * First we check the declaration type and then depending on\n\t\t\t\t\t\t * if the type is a \"VariableDeclarator\" or its an \"ObjectPattern\"\n\t\t\t\t\t\t * we compare the name and id from the first identifier, if the names are different\n\t\t\t\t\t\t * we assign the new name, id and reset the count of reportCount and nodeCount in\n\t\t\t\t\t\t * order to check each block for the number of reported errors and base our fix\n\t\t\t\t\t\t * based on comparing nodes.length and nodesToReport.length.\n\t\t\t\t\t\t */\n\n\t\t\t\t\t\tif (firstDecParent.type === \"VariableDeclarator\") {\n\t\t\t\t\t\t\tif (firstDecParent.id.name !== checkedName) {\n\t\t\t\t\t\t\t\tcheckedName = firstDecParent.id.name;\n\t\t\t\t\t\t\t\treportCount = 0;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (firstDecParent.id.type === \"ObjectPattern\") {\n\t\t\t\t\t\t\t\tif (firstDecParent.init.name !== checkedName) {\n\t\t\t\t\t\t\t\t\tcheckedName = firstDecParent.init.name;\n\t\t\t\t\t\t\t\t\treportCount = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (firstDecParent.id !== checkedId) {\n\t\t\t\t\t\t\t\tcheckedId = firstDecParent.id;\n\t\t\t\t\t\t\t\treportCount = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet shouldFix =\n\t\t\t\t\tvarDeclParent &&\n\t\t\t\t\t// Don't do a fix unless all variables in the declarations are initialized (or it's in a for-in or for-of loop)\n\t\t\t\t\t(varDeclParent.parent.type === \"ForInStatement\" ||\n\t\t\t\t\t\tvarDeclParent.parent.type === \"ForOfStatement\" ||\n\t\t\t\t\t\tvarDeclParent.declarations.every(\n\t\t\t\t\t\t\tdeclaration => declaration.init,\n\t\t\t\t\t\t)) &&\n\t\t\t\t\t/*\n\t\t\t\t\t * If options.destructuring is \"all\", then this warning will not occur unless\n\t\t\t\t\t * every assignment in the destructuring should be const. In that case, it's safe\n\t\t\t\t\t * to apply the fix.\n\t\t\t\t\t */\n\t\t\t\t\tnodesToReport.length === nodes.length;\n\n\t\t\t\tif (\n\t\t\t\t\t!isVarDecParentNull &&\n\t\t\t\t\tvarDeclParent.declarations &&\n\t\t\t\t\tvarDeclParent.declarations.length !== 1\n\t\t\t\t) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tvarDeclParent &&\n\t\t\t\t\t\tvarDeclParent.declarations &&\n\t\t\t\t\t\tvarDeclParent.declarations.length >= 1\n\t\t\t\t\t) {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Add nodesToReport.length to a count, then comparing the count to the length\n\t\t\t\t\t\t * of the declarations in the current block.\n\t\t\t\t\t\t */\n\n\t\t\t\t\t\treportCount += nodesToReport.length;\n\n\t\t\t\t\t\tlet totalDeclarationsCount = 0;\n\n\t\t\t\t\t\tvarDeclParent.declarations.forEach(declaration => {\n\t\t\t\t\t\t\tif (declaration.id.type === \"ObjectPattern\") {\n\t\t\t\t\t\t\t\ttotalDeclarationsCount +=\n\t\t\t\t\t\t\t\t\tdeclaration.id.properties.length;\n\t\t\t\t\t\t\t} else if (declaration.id.type === \"ArrayPattern\") {\n\t\t\t\t\t\t\t\ttotalDeclarationsCount +=\n\t\t\t\t\t\t\t\t\tdeclaration.id.elements.length;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttotalDeclarationsCount += 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tshouldFix =\n\t\t\t\t\t\t\tshouldFix && reportCount === totalDeclarationsCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnodesToReport.forEach(node => {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"useConst\",\n\t\t\t\t\t\tdata: node,\n\t\t\t\t\t\tfix: shouldFix\n\t\t\t\t\t\t\t? fixer => {\n\t\t\t\t\t\t\t\t\tconst letKeywordToken =\n\t\t\t\t\t\t\t\t\t\tsourceCode.getFirstToken(\n\t\t\t\t\t\t\t\t\t\t\tvarDeclParent,\n\t\t\t\t\t\t\t\t\t\t\tt => t.value === varDeclParent.kind,\n\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t\t * Extend the replacement range to the whole declaration,\n\t\t\t\t\t\t\t\t\t * in order to prevent other fixes in the same pass\n\t\t\t\t\t\t\t\t\t * https://github.com/eslint/eslint/issues/13899\n\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\treturn new FixTracker(fixer, sourceCode)\n\t\t\t\t\t\t\t\t\t\t.retainRange(varDeclParent.range)\n\t\t\t\t\t\t\t\t\t\t.replaceTextRange(\n\t\t\t\t\t\t\t\t\t\t\tletKeywordToken.range,\n\t\t\t\t\t\t\t\t\t\t\t\"const\",\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: null,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t\"Program:exit\"() {\n\t\t\t\tgroupByDestructuring(variables, ignoreReadBeforeAssign).forEach(\n\t\t\t\t\tcheckGroup,\n\t\t\t\t);\n\t\t\t},\n\n\t\t\tVariableDeclaration(node) {\n\t\t\t\tif (node.kind === \"let\" && !isInitOfForStatement(node)) {\n\t\t\t\t\tvariables.push(...sourceCode.getDeclaredVariables(node));\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Prefer destructuring from arrays and objects\n * @author Alex LaFroscia\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst PRECEDENCE_OF_ASSIGNMENT_EXPR = astUtils.getPrecedence({\n\ttype: \"AssignmentExpression\",\n});\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require destructuring from arrays and/or objects\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/prefer-destructuring\",\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\t/*\n\t\t\t\t * old support {array: Boolean, object: Boolean}\n\t\t\t\t * new support {VariableDeclarator: {}, AssignmentExpression: {}}\n\t\t\t\t */\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tVariableDeclarator: {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tarray: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tobject: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAssignmentExpression: {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tarray: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tobject: {\n\t\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tarray: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tobject: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tenforceForRenamedProperties: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tpreferDestructuring: \"Use {{type}} destructuring.\",\n\t\t},\n\t},\n\tcreate(context) {\n\t\tconst enabledTypes = context.options[0];\n\t\tconst enforceForRenamedProperties =\n\t\t\tcontext.options[1] &&\n\t\t\tcontext.options[1].enforceForRenamedProperties;\n\t\tlet normalizedOptions = {\n\t\t\tVariableDeclarator: { array: true, object: true },\n\t\t\tAssignmentExpression: { array: true, object: true },\n\t\t};\n\n\t\tif (enabledTypes) {\n\t\t\tnormalizedOptions =\n\t\t\t\ttypeof enabledTypes.array !== \"undefined\" ||\n\t\t\t\ttypeof enabledTypes.object !== \"undefined\"\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tVariableDeclarator: enabledTypes,\n\t\t\t\t\t\t\tAssignmentExpression: enabledTypes,\n\t\t\t\t\t\t}\n\t\t\t\t\t: enabledTypes;\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Checks if destructuring type should be checked.\n\t\t * @param {string} nodeType \"AssignmentExpression\" or \"VariableDeclarator\"\n\t\t * @param {string} destructuringType \"array\" or \"object\"\n\t\t * @returns {boolean} `true` if the destructuring type should be checked for the given node\n\t\t */\n\t\tfunction shouldCheck(nodeType, destructuringType) {\n\t\t\treturn (\n\t\t\t\tnormalizedOptions &&\n\t\t\t\tnormalizedOptions[nodeType] &&\n\t\t\t\tnormalizedOptions[nodeType][destructuringType]\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines if the given node is accessing an array index\n\t\t *\n\t\t * This is used to differentiate array index access from object property\n\t\t * access.\n\t\t * @param {ASTNode} node the node to evaluate\n\t\t * @returns {boolean} whether or not the node is an integer\n\t\t */\n\t\tfunction isArrayIndexAccess(node) {\n\t\t\treturn Number.isInteger(node.property.value);\n\t\t}\n\n\t\t/**\n\t\t * Report that the given node should use destructuring\n\t\t * @param {ASTNode} reportNode the node to report\n\t\t * @param {string} type the type of destructuring that should have been done\n\t\t * @param {Function|null} fix the fix function or null to pass to context.report\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(reportNode, type, fix) {\n\t\t\tcontext.report({\n\t\t\t\tnode: reportNode,\n\t\t\t\tmessageId: \"preferDestructuring\",\n\t\t\t\tdata: { type },\n\t\t\t\tfix,\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Determines if a node should be fixed into object destructuring\n\t\t *\n\t\t * The fixer only fixes the simplest case of object destructuring,\n\t\t * like: `let x = a.x`;\n\t\t *\n\t\t * Assignment expression is not fixed.\n\t\t * Array destructuring is not fixed.\n\t\t * Renamed property is not fixed.\n\t\t * @param {ASTNode} node the node to evaluate\n\t\t * @returns {boolean} whether or not the node should be fixed\n\t\t */\n\t\tfunction shouldFix(node) {\n\t\t\treturn (\n\t\t\t\tnode.type === \"VariableDeclarator\" &&\n\t\t\t\tnode.id.type === \"Identifier\" &&\n\t\t\t\tnode.init.type === \"MemberExpression\" &&\n\t\t\t\t!node.init.computed &&\n\t\t\t\tnode.init.property.type === \"Identifier\" &&\n\t\t\t\tnode.id.name === node.init.property.name\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Fix a node into object destructuring.\n\t\t * This function only handles the simplest case of object destructuring,\n\t\t * see {@link shouldFix}.\n\t\t * @param {SourceCodeFixer} fixer the fixer object\n\t\t * @param {ASTNode} node the node to be fixed.\n\t\t * @returns {Object} a fix for the node\n\t\t */\n\t\tfunction fixIntoObjectDestructuring(fixer, node) {\n\t\t\tconst rightNode = node.init;\n\t\t\tconst sourceCode = context.sourceCode;\n\n\t\t\t// Don't fix if that would remove any comments. Only comments inside `rightNode.object` can be preserved.\n\t\t\tif (\n\t\t\t\tsourceCode.getCommentsInside(node).length >\n\t\t\t\tsourceCode.getCommentsInside(rightNode.object).length\n\t\t\t) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet objectText = sourceCode.getText(rightNode.object);\n\n\t\t\tif (\n\t\t\t\tastUtils.getPrecedence(rightNode.object) <\n\t\t\t\tPRECEDENCE_OF_ASSIGNMENT_EXPR\n\t\t\t) {\n\t\t\t\tobjectText = `(${objectText})`;\n\t\t\t}\n\n\t\t\treturn fixer.replaceText(\n\t\t\t\tnode,\n\t\t\t\t`{${rightNode.property.name}} = ${objectText}`,\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check that the `prefer-destructuring` rules are followed based on the\n\t\t * given left- and right-hand side of the assignment.\n\t\t *\n\t\t * Pulled out into a separate method so that VariableDeclarators and\n\t\t * AssignmentExpressions can share the same verification logic.\n\t\t * @param {ASTNode} leftNode the left-hand side of the assignment\n\t\t * @param {ASTNode} rightNode the right-hand side of the assignment\n\t\t * @param {ASTNode} reportNode the node to report the error on\n\t\t * @returns {void}\n\t\t */\n\t\tfunction performCheck(leftNode, rightNode, reportNode) {\n\t\t\tif (\n\t\t\t\trightNode.type !== \"MemberExpression\" ||\n\t\t\t\trightNode.object.type === \"Super\" ||\n\t\t\t\trightNode.property.type === \"PrivateIdentifier\"\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (isArrayIndexAccess(rightNode)) {\n\t\t\t\tif (shouldCheck(reportNode.type, \"array\")) {\n\t\t\t\t\treport(reportNode, \"array\", null);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst fix = shouldFix(reportNode)\n\t\t\t\t? fixer => fixIntoObjectDestructuring(fixer, reportNode)\n\t\t\t\t: null;\n\n\t\t\tif (\n\t\t\t\tshouldCheck(reportNode.type, \"object\") &&\n\t\t\t\tenforceForRenamedProperties\n\t\t\t) {\n\t\t\t\treport(reportNode, \"object\", fix);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (shouldCheck(reportNode.type, \"object\")) {\n\t\t\t\tconst property = rightNode.property;\n\n\t\t\t\tif (\n\t\t\t\t\t(property.type === \"Literal\" &&\n\t\t\t\t\t\tleftNode.name === property.value) ||\n\t\t\t\t\t(property.type === \"Identifier\" &&\n\t\t\t\t\t\tleftNode.name === property.name &&\n\t\t\t\t\t\t!rightNode.computed)\n\t\t\t\t) {\n\t\t\t\t\treport(reportNode, \"object\", fix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check if a given variable declarator is coming from an property access\n\t\t * that should be using destructuring instead\n\t\t * @param {ASTNode} node the variable declarator to check\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkVariableDeclarator(node) {\n\t\t\t// Skip if variable is declared without assignment\n\t\t\tif (!node.init) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Variable declarations using explicit resource management cannot use destructuring (parse error)\n\t\t\tif (\n\t\t\t\tnode.parent.kind === \"using\" ||\n\t\t\t\tnode.parent.kind === \"await using\"\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// We only care about member expressions past this point\n\t\t\tif (node.init.type !== \"MemberExpression\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tperformCheck(node.id, node.init, node);\n\t\t}\n\n\t\t/**\n\t\t * Run the `prefer-destructuring` check on an AssignmentExpression\n\t\t * @param {ASTNode} node the AssignmentExpression node\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkAssignmentExpression(node) {\n\t\t\tif (node.operator === \"=\") {\n\t\t\t\tperformCheck(node.left, node.right, node);\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tVariableDeclarator: checkVariableDeclarator,\n\t\t\tAssignmentExpression: checkAssignmentExpression,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow Math.pow in favor of the ** operator\n * @author Milos Djermanovic\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst { CALL, ReferenceTracker } = require(\"@eslint-community/eslint-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst PRECEDENCE_OF_EXPONENTIATION_EXPR = astUtils.getPrecedence({\n\ttype: \"BinaryExpression\",\n\toperator: \"**\",\n});\n\n/**\n * Determines whether the given node needs parens if used as the base in an exponentiation binary expression.\n * @param {ASTNode} base The node to check.\n * @returns {boolean} `true` if the node needs to be parenthesised.\n */\nfunction doesBaseNeedParens(base) {\n\treturn (\n\t\t// '**' is right-associative, parens are needed when Math.pow(a ** b, c) is converted to (a ** b) ** c\n\t\tastUtils.getPrecedence(base) <= PRECEDENCE_OF_EXPONENTIATION_EXPR ||\n\t\t// An unary operator cannot be used immediately before an exponentiation expression\n\t\tbase.type === \"AwaitExpression\" ||\n\t\tbase.type === \"UnaryExpression\"\n\t);\n}\n\n/**\n * Determines whether the given node needs parens if used as the exponent in an exponentiation binary expression.\n * @param {ASTNode} exponent The node to check.\n * @returns {boolean} `true` if the node needs to be parenthesised.\n */\nfunction doesExponentNeedParens(exponent) {\n\t// '**' is right-associative, there is no need for parens when Math.pow(a, b ** c) is converted to a ** b ** c\n\treturn astUtils.getPrecedence(exponent) < PRECEDENCE_OF_EXPONENTIATION_EXPR;\n}\n\n/**\n * Determines whether an exponentiation binary expression at the place of the given node would need parens.\n * @param {ASTNode} node A node that would be replaced by an exponentiation binary expression.\n * @param {SourceCode} sourceCode A SourceCode object.\n * @returns {boolean} `true` if the expression needs to be parenthesised.\n */\nfunction doesExponentiationExpressionNeedParens(node, sourceCode) {\n\tconst parent =\n\t\tnode.parent.type === \"ChainExpression\"\n\t\t\t? node.parent.parent\n\t\t\t: node.parent;\n\n\tconst parentPrecedence = astUtils.getPrecedence(parent);\n\tconst needsParens =\n\t\tparent.type === \"ClassDeclaration\" ||\n\t\t(parent.type.endsWith(\"Expression\") &&\n\t\t\t(parentPrecedence === -1 ||\n\t\t\t\tparentPrecedence >= PRECEDENCE_OF_EXPONENTIATION_EXPR) &&\n\t\t\t!(\n\t\t\t\tparent.type === \"BinaryExpression\" &&\n\t\t\t\tparent.operator === \"**\" &&\n\t\t\t\tparent.right === node\n\t\t\t) &&\n\t\t\t!(\n\t\t\t\t(parent.type === \"CallExpression\" ||\n\t\t\t\t\tparent.type === \"NewExpression\") &&\n\t\t\t\tparent.arguments.includes(node)\n\t\t\t) &&\n\t\t\t!(\n\t\t\t\tparent.type === \"MemberExpression\" &&\n\t\t\t\tparent.computed &&\n\t\t\t\tparent.property === node\n\t\t\t) &&\n\t\t\t!(parent.type === \"ArrayExpression\"));\n\n\treturn needsParens && !astUtils.isParenthesised(sourceCode, node);\n}\n\n/**\n * Optionally parenthesizes given text.\n * @param {string} text The text to parenthesize.\n * @param {boolean} shouldParenthesize If `true`, the text will be parenthesised.\n * @returns {string} parenthesised or unchanged text.\n */\nfunction parenthesizeIfShould(text, shouldParenthesize) {\n\treturn shouldParenthesize ? `(${text})` : text;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow the use of `Math.pow` in favor of the `**` operator\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/prefer-exponentiation-operator\",\n\t\t},\n\n\t\tschema: [],\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tuseExponentiation: \"Use the '**' operator instead of 'Math.pow'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Reports the given node.\n\t\t * @param {ASTNode} node 'Math.pow()' node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"useExponentiation\",\n\t\t\t\tfix(fixer) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tnode.arguments.length !== 2 ||\n\t\t\t\t\t\tnode.arguments.some(\n\t\t\t\t\t\t\targ => arg.type === \"SpreadElement\",\n\t\t\t\t\t\t) ||\n\t\t\t\t\t\tsourceCode.getCommentsInside(node).length > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst base = node.arguments[0],\n\t\t\t\t\t\texponent = node.arguments[1],\n\t\t\t\t\t\tbaseText = sourceCode.getText(base),\n\t\t\t\t\t\texponentText = sourceCode.getText(exponent),\n\t\t\t\t\t\tshouldParenthesizeBase = doesBaseNeedParens(base),\n\t\t\t\t\t\tshouldParenthesizeExponent =\n\t\t\t\t\t\t\tdoesExponentNeedParens(exponent),\n\t\t\t\t\t\tshouldParenthesizeAll =\n\t\t\t\t\t\t\tdoesExponentiationExpressionNeedParens(\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\tlet prefix = \"\",\n\t\t\t\t\t\tsuffix = \"\";\n\n\t\t\t\t\tif (!shouldParenthesizeAll) {\n\t\t\t\t\t\tif (!shouldParenthesizeBase) {\n\t\t\t\t\t\t\tconst firstReplacementToken =\n\t\t\t\t\t\t\t\t\tsourceCode.getFirstToken(base),\n\t\t\t\t\t\t\t\ttokenBefore = sourceCode.getTokenBefore(node);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttokenBefore &&\n\t\t\t\t\t\t\t\ttokenBefore.range[1] === node.range[0] &&\n\t\t\t\t\t\t\t\t!astUtils.canTokensBeAdjacent(\n\t\t\t\t\t\t\t\t\ttokenBefore,\n\t\t\t\t\t\t\t\t\tfirstReplacementToken,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tprefix = \" \"; // a+Math.pow(++b, c) -> a+ ++b**c\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!shouldParenthesizeExponent) {\n\t\t\t\t\t\t\tconst lastReplacementToken =\n\t\t\t\t\t\t\t\t\tsourceCode.getLastToken(exponent),\n\t\t\t\t\t\t\t\ttokenAfter = sourceCode.getTokenAfter(node);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttokenAfter &&\n\t\t\t\t\t\t\t\tnode.range[1] === tokenAfter.range[0] &&\n\t\t\t\t\t\t\t\t!astUtils.canTokensBeAdjacent(\n\t\t\t\t\t\t\t\t\tlastReplacementToken,\n\t\t\t\t\t\t\t\t\ttokenAfter,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tsuffix = \" \"; // Math.pow(a, b)in c -> a**b in c\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst baseReplacement = parenthesizeIfShould(\n\t\t\t\t\t\t\tbaseText,\n\t\t\t\t\t\t\tshouldParenthesizeBase,\n\t\t\t\t\t\t),\n\t\t\t\t\t\texponentReplacement = parenthesizeIfShould(\n\t\t\t\t\t\t\texponentText,\n\t\t\t\t\t\t\tshouldParenthesizeExponent,\n\t\t\t\t\t\t),\n\t\t\t\t\t\treplacement = parenthesizeIfShould(\n\t\t\t\t\t\t\t`${baseReplacement}**${exponentReplacement}`,\n\t\t\t\t\t\t\tshouldParenthesizeAll,\n\t\t\t\t\t\t);\n\n\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\t`${prefix}${replacement}${suffix}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\t\t\t\tconst tracker = new ReferenceTracker(scope);\n\t\t\t\tconst trackMap = {\n\t\t\t\t\tMath: {\n\t\t\t\t\t\tpow: { [CALL]: true },\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tfor (const { node: refNode } of tracker.iterateGlobalReferences(\n\t\t\t\t\ttrackMap,\n\t\t\t\t)) {\n\t\t\t\t\treport(refNode);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce requiring named capture groups in regular expression.\n * @author Pig Fang <https://github.com/g-plane>\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst {\n\tCALL,\n\tCONSTRUCT,\n\tReferenceTracker,\n\tgetStringIfConstant,\n} = require(\"@eslint-community/eslint-utils\");\nconst regexpp = require(\"@eslint-community/regexpp\");\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n/** @import { SuggestedEdit } from \"@eslint/core\"; */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst parser = new regexpp.RegExpParser();\n\n/**\n * Creates fixer suggestions for the regex, if statically determinable.\n * @param {number} groupStart Starting index of the regex group.\n * @param {string} pattern The regular expression pattern to be checked.\n * @param {string} rawText Source text of the regexNode.\n * @param {ASTNode} regexNode AST node which contains the regular expression.\n * @returns {Array<SuggestedEdit>} Fixer suggestions for the regex, if statically determinable.\n */\nfunction suggestIfPossible(groupStart, pattern, rawText, regexNode) {\n\tswitch (regexNode.type) {\n\t\tcase \"Literal\":\n\t\t\tif (typeof regexNode.value === \"string\" && rawText.includes(\"\\\\\")) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"TemplateLiteral\":\n\t\t\tif (\n\t\t\t\tregexNode.expressions.length ||\n\t\t\t\trawText.slice(1, -1) !== pattern\n\t\t\t) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n\n\tconst start = regexNode.range[0] + groupStart + 2;\n\n\treturn [\n\t\t{\n\t\t\tfix(fixer) {\n\t\t\t\tconst existingTemps = pattern.match(/temp\\d+/gu) || [];\n\t\t\t\tconst highestTempCount = existingTemps.reduce(\n\t\t\t\t\t(previous, next) =>\n\t\t\t\t\t\tMath.max(previous, Number(next.slice(\"temp\".length))),\n\t\t\t\t\t0,\n\t\t\t\t);\n\n\t\t\t\treturn fixer.insertTextBeforeRange(\n\t\t\t\t\t[start, start],\n\t\t\t\t\t`?<temp${highestTempCount + 1}>`,\n\t\t\t\t);\n\t\t\t},\n\t\t\tmessageId: \"addGroupName\",\n\t\t},\n\t\t{\n\t\t\tfix(fixer) {\n\t\t\t\treturn fixer.insertTextBeforeRange([start, start], \"?:\");\n\t\t\t},\n\t\t\tmessageId: \"addNonCapture\",\n\t\t},\n\t];\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce using named capture group in regular expression\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/prefer-named-capture-group\",\n\t\t},\n\n\t\thasSuggestions: true,\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\taddGroupName: \"Add name to capture group.\",\n\t\t\taddNonCapture: \"Convert group to non-capturing.\",\n\t\t\trequired:\n\t\t\t\t\"Capture group '{{group}}' should be converted to a named or non-capturing group.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Function to check regular expression.\n\t\t * @param {string} pattern The regular expression pattern to be checked.\n\t\t * @param {ASTNode} node AST node which contains the regular expression or a call/new expression.\n\t\t * @param {ASTNode} regexNode AST node which contains the regular expression.\n\t\t * @param {string|null} flags The regular expression flags to be checked.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkRegex(pattern, node, regexNode, flags) {\n\t\t\tlet ast;\n\n\t\t\ttry {\n\t\t\t\tast = parser.parsePattern(pattern, 0, pattern.length, {\n\t\t\t\t\tunicode: Boolean(flags && flags.includes(\"u\")),\n\t\t\t\t\tunicodeSets: Boolean(flags && flags.includes(\"v\")),\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\t// ignore regex syntax errors\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tregexpp.visitRegExpAST(ast, {\n\t\t\t\tonCapturingGroupEnter(group) {\n\t\t\t\t\tif (!group.name) {\n\t\t\t\t\t\tconst rawText = sourceCode.getText(regexNode);\n\t\t\t\t\t\tconst suggest = suggestIfPossible(\n\t\t\t\t\t\t\tgroup.start,\n\t\t\t\t\t\t\tpattern,\n\t\t\t\t\t\t\trawText,\n\t\t\t\t\t\t\tregexNode,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"required\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tgroup: group.raw,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsuggest,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tLiteral(node) {\n\t\t\t\tif (node.regex) {\n\t\t\t\t\tcheckRegex(\n\t\t\t\t\t\tnode.regex.pattern,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tnode.regex.flags,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t\tProgram(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\t\t\t\tconst tracker = new ReferenceTracker(scope);\n\t\t\t\tconst traceMap = {\n\t\t\t\t\tRegExp: {\n\t\t\t\t\t\t[CALL]: true,\n\t\t\t\t\t\t[CONSTRUCT]: true,\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tfor (const { node: refNode } of tracker.iterateGlobalReferences(\n\t\t\t\t\ttraceMap,\n\t\t\t\t)) {\n\t\t\t\t\tconst regex = getStringIfConstant(refNode.arguments[0]);\n\t\t\t\t\tconst flags = getStringIfConstant(refNode.arguments[1]);\n\n\t\t\t\t\tif (regex) {\n\t\t\t\t\t\tcheckRegex(regex, refNode, refNode.arguments[0], flags);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow `parseInt()` in favor of binary, octal, and hexadecimal literals\n * @author Annie Zhang, Henry Zhu\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst radixMap = new Map([\n\t[2, { system: \"binary\", literalPrefix: \"0b\" }],\n\t[8, { system: \"octal\", literalPrefix: \"0o\" }],\n\t[16, { system: \"hexadecimal\", literalPrefix: \"0x\" }],\n]);\n\n/**\n * Checks to see if a CallExpression's callee node is `parseInt` or\n * `Number.parseInt`.\n * @param {ASTNode} calleeNode The callee node to evaluate.\n * @returns {boolean} True if the callee is `parseInt` or `Number.parseInt`,\n * false otherwise.\n */\nfunction isParseInt(calleeNode) {\n\treturn (\n\t\tastUtils.isSpecificId(calleeNode, \"parseInt\") ||\n\t\tastUtils.isSpecificMemberAccess(calleeNode, \"Number\", \"parseInt\")\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/prefer-numeric-literals\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tuseLiteral:\n\t\t\t\t\"Use {{system}} literals instead of {{functionName}}().\",\n\t\t},\n\n\t\tfixable: \"code\",\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//----------------------------------------------------------------------\n\t\t// Public\n\t\t//----------------------------------------------------------------------\n\n\t\treturn {\n\t\t\t\"CallExpression[arguments.length=2]\"(node) {\n\t\t\t\tconst [strNode, radixNode] = node.arguments,\n\t\t\t\t\tstr = astUtils.getStaticStringValue(strNode),\n\t\t\t\t\tradix = radixNode.value;\n\n\t\t\t\tif (\n\t\t\t\t\tstr !== null &&\n\t\t\t\t\tastUtils.isStringLiteral(strNode) &&\n\t\t\t\t\tradixNode.type === \"Literal\" &&\n\t\t\t\t\ttypeof radix === \"number\" &&\n\t\t\t\t\tradixMap.has(radix) &&\n\t\t\t\t\tisParseInt(node.callee)\n\t\t\t\t) {\n\t\t\t\t\tconst { system, literalPrefix } = radixMap.get(radix);\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"useLiteral\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tsystem,\n\t\t\t\t\t\t\tfunctionName: sourceCode.getText(node.callee),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tif (sourceCode.getCommentsInside(node).length) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst replacement = `${literalPrefix}${str}`;\n\n\t\t\t\t\t\t\tif (+replacement !== parseInt(str, radix)) {\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * If the newly-produced literal would be invalid, (e.g. 0b1234),\n\t\t\t\t\t\t\t\t * or it would yield an incorrect parseInt result for some other reason, don't make a fix.\n\t\t\t\t\t\t\t\t *\n\t\t\t\t\t\t\t\t * If `str` had numeric separators, `+replacement` will evaluate to `NaN` because unary `+`\n\t\t\t\t\t\t\t\t * per the specification doesn't support numeric separators. Thus, the above condition will be `true`\n\t\t\t\t\t\t\t\t * (`NaN !== anything` is always `true`) regardless of the `parseInt(str, radix)` value.\n\t\t\t\t\t\t\t\t * Consequently, no autofixes will be made. This is correct behavior because `parseInt` also\n\t\t\t\t\t\t\t\t * doesn't support numeric separators, but it does parse part of the string before the first `_`,\n\t\t\t\t\t\t\t\t * so the autofix would be invalid:\n\t\t\t\t\t\t\t\t *\n\t\t\t\t\t\t\t\t *   parseInt(\"1_1\", 2) // === 1\n\t\t\t\t\t\t\t\t *   0b1_1 // === 3\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst tokenBefore = sourceCode.getTokenBefore(node),\n\t\t\t\t\t\t\t\ttokenAfter = sourceCode.getTokenAfter(node);\n\t\t\t\t\t\t\tlet prefix = \"\",\n\t\t\t\t\t\t\t\tsuffix = \"\";\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttokenBefore &&\n\t\t\t\t\t\t\t\ttokenBefore.range[1] === node.range[0] &&\n\t\t\t\t\t\t\t\t!astUtils.canTokensBeAdjacent(\n\t\t\t\t\t\t\t\t\ttokenBefore,\n\t\t\t\t\t\t\t\t\treplacement,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tprefix = \" \";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttokenAfter &&\n\t\t\t\t\t\t\t\tnode.range[1] === tokenAfter.range[0] &&\n\t\t\t\t\t\t\t\t!astUtils.canTokensBeAdjacent(\n\t\t\t\t\t\t\t\t\treplacement,\n\t\t\t\t\t\t\t\t\ttokenAfter,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tsuffix = \" \";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t`${prefix}${replacement}${suffix}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Prefers Object.hasOwn() instead of Object.prototype.hasOwnProperty.call()\n * @author Nitin Kumar\n * @author Gautam Arora\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks if the given node is considered to be an access to a property of `Object.prototype`.\n * @param {ASTNode} node `MemberExpression` node to evaluate.\n * @returns {boolean} `true` if `node.object` is `Object`, `Object.prototype`, or `{}` (empty 'ObjectExpression' node).\n */\nfunction hasLeftHandObject(node) {\n\t/*\n\t * ({}).hasOwnProperty.call(obj, prop) - `true`\n\t * ({ foo }.hasOwnProperty.call(obj, prop)) - `false`, object literal should be empty\n\t */\n\tif (\n\t\tnode.object.type === \"ObjectExpression\" &&\n\t\tnode.object.properties.length === 0\n\t) {\n\t\treturn true;\n\t}\n\n\tconst objectNodeToCheck =\n\t\tnode.object.type === \"MemberExpression\" &&\n\t\tastUtils.getStaticPropertyName(node.object) === \"prototype\"\n\t\t\t? node.object.object\n\t\t\t: node.object;\n\n\tif (\n\t\tobjectNodeToCheck.type === \"Identifier\" &&\n\t\tobjectNodeToCheck.name === \"Object\"\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow use of `Object.prototype.hasOwnProperty.call()` and prefer use of `Object.hasOwn()`\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/prefer-object-has-own\",\n\t\t},\n\t\tschema: [],\n\t\tmessages: {\n\t\t\tuseHasOwn:\n\t\t\t\t\"Use 'Object.hasOwn()' instead of 'Object.prototype.hasOwnProperty.call()'.\",\n\t\t},\n\t\tfixable: \"code\",\n\t},\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tCallExpression(node) {\n\t\t\t\tif (\n\t\t\t\t\t!(\n\t\t\t\t\t\tnode.callee.type === \"MemberExpression\" &&\n\t\t\t\t\t\tnode.callee.object.type === \"MemberExpression\"\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst calleePropertyName = astUtils.getStaticPropertyName(\n\t\t\t\t\tnode.callee,\n\t\t\t\t);\n\t\t\t\tconst objectPropertyName = astUtils.getStaticPropertyName(\n\t\t\t\t\tnode.callee.object,\n\t\t\t\t);\n\t\t\t\tconst isObject = hasLeftHandObject(node.callee.object);\n\n\t\t\t\t// check `Object` scope\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\t\t\t\tconst variable = astUtils.getVariableByName(scope, \"Object\");\n\n\t\t\t\tif (\n\t\t\t\t\tcalleePropertyName === \"call\" &&\n\t\t\t\t\tobjectPropertyName === \"hasOwnProperty\" &&\n\t\t\t\t\tisObject &&\n\t\t\t\t\tvariable &&\n\t\t\t\t\tvariable.scope.type === \"global\"\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"useHasOwn\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tsourceCode.getCommentsInside(node.callee)\n\t\t\t\t\t\t\t\t\t.length > 0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst tokenJustBeforeNode =\n\t\t\t\t\t\t\t\tsourceCode.getTokenBefore(node.callee, {\n\t\t\t\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t// for https://github.com/eslint/eslint/pull/15346#issuecomment-991417335\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttokenJustBeforeNode &&\n\t\t\t\t\t\t\t\ttokenJustBeforeNode.range[1] ===\n\t\t\t\t\t\t\t\t\tnode.callee.range[0] &&\n\t\t\t\t\t\t\t\t!astUtils.canTokensBeAdjacent(\n\t\t\t\t\t\t\t\t\ttokenJustBeforeNode,\n\t\t\t\t\t\t\t\t\t\"Object.hasOwn\",\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\tnode.callee,\n\t\t\t\t\t\t\t\t\t\" Object.hasOwn\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\tnode.callee,\n\t\t\t\t\t\t\t\t\"Object.hasOwn\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow using `Object.assign` with an object literal as the first argument and prefer the use of object spread instead\n * @author Sharmila Jesupaul\n */\n\n\"use strict\";\n\nconst { CALL, ReferenceTracker } = require(\"@eslint-community/eslint-utils\");\nconst {\n\tisCommaToken,\n\tisOpeningParenToken,\n\tisClosingParenToken,\n\tisParenthesised,\n} = require(\"./utils/ast-utils\");\n\nconst ANY_SPACE = /\\s/u;\n\n/**\n * Helper that checks if the Object.assign call has array spread\n * @param {ASTNode} node The node that the rule warns on\n * @returns {boolean} - Returns true if the Object.assign call has array spread\n */\nfunction hasArraySpread(node) {\n\treturn node.arguments.some(arg => arg.type === \"SpreadElement\");\n}\n\n/**\n * Determines whether the given node is an accessor property (getter/setter).\n * @param {ASTNode} node Node to check.\n * @returns {boolean} `true` if the node is a getter or a setter.\n */\nfunction isAccessorProperty(node) {\n\treturn (\n\t\tnode.type === \"Property\" && (node.kind === \"get\" || node.kind === \"set\")\n\t);\n}\n\n/**\n * Determines whether the given object expression node has accessor properties (getters/setters).\n * @param {ASTNode} node `ObjectExpression` node to check.\n * @returns {boolean} `true` if the node has at least one getter/setter.\n */\nfunction hasAccessors(node) {\n\treturn node.properties.some(isAccessorProperty);\n}\n\n/**\n * Determines whether the given call expression node has object expression arguments with accessor properties (getters/setters).\n * @param {ASTNode} node `CallExpression` node to check.\n * @returns {boolean} `true` if the node has at least one argument that is an object expression with at least one getter/setter.\n */\nfunction hasArgumentsWithAccessors(node) {\n\treturn node.arguments\n\t\t.filter(arg => arg.type === \"ObjectExpression\")\n\t\t.some(hasAccessors);\n}\n\n/**\n * Helper that checks if the node needs parentheses to be valid JS.\n * The default is to wrap the node in parentheses to avoid parsing errors.\n * @param {ASTNode} node The node that the rule warns on\n * @param {Object} sourceCode in context sourcecode object\n * @returns {boolean} - Returns true if the node needs parentheses\n */\nfunction needsParens(node, sourceCode) {\n\tconst parent = node.parent;\n\n\tswitch (parent.type) {\n\t\tcase \"VariableDeclarator\":\n\t\tcase \"ArrayExpression\":\n\t\tcase \"ReturnStatement\":\n\t\tcase \"CallExpression\":\n\t\tcase \"Property\":\n\t\t\treturn false;\n\t\tcase \"AssignmentExpression\":\n\t\t\treturn parent.left === node && !isParenthesised(sourceCode, node);\n\t\tdefault:\n\t\t\treturn !isParenthesised(sourceCode, node);\n\t}\n}\n\n/**\n * Determines if an argument needs parentheses. The default is to not add parens.\n * @param {ASTNode} node The node to be checked.\n * @param {Object} sourceCode in context sourcecode object\n * @returns {boolean} True if the node needs parentheses\n */\nfunction argNeedsParens(node, sourceCode) {\n\tswitch (node.type) {\n\t\tcase \"AssignmentExpression\":\n\t\tcase \"ArrowFunctionExpression\":\n\t\tcase \"ConditionalExpression\":\n\t\t\treturn !isParenthesised(sourceCode, node);\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\n/**\n * Get the parenthesis tokens of a given ObjectExpression node.\n * This includes the braces of the object literal and enclosing parentheses.\n * @param {ASTNode} node The node to get.\n * @param {Token} leftArgumentListParen The opening paren token of the argument list.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {Token[]} The parenthesis tokens of the node. This is sorted by the location.\n */\nfunction getParenTokens(node, leftArgumentListParen, sourceCode) {\n\tconst parens = [\n\t\tsourceCode.getFirstToken(node),\n\t\tsourceCode.getLastToken(node),\n\t];\n\tlet leftNext = sourceCode.getTokenBefore(node);\n\tlet rightNext = sourceCode.getTokenAfter(node);\n\n\t// Note: don't include the parens of the argument list.\n\twhile (\n\t\tleftNext &&\n\t\trightNext &&\n\t\tleftNext.range[0] > leftArgumentListParen.range[0] &&\n\t\tisOpeningParenToken(leftNext) &&\n\t\tisClosingParenToken(rightNext)\n\t) {\n\t\tparens.push(leftNext, rightNext);\n\t\tleftNext = sourceCode.getTokenBefore(leftNext);\n\t\trightNext = sourceCode.getTokenAfter(rightNext);\n\t}\n\n\treturn parens.sort((a, b) => a.range[0] - b.range[0]);\n}\n\n/**\n * Get the range of a given token and around whitespaces.\n * @param {Token} token The token to get range.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {number} The end of the range of the token and around whitespaces.\n */\nfunction getStartWithSpaces(token, sourceCode) {\n\tconst text = sourceCode.text;\n\tlet start = token.range[0];\n\n\t// If the previous token is a line comment then skip this step to avoid commenting this token out.\n\t{\n\t\tconst prevToken = sourceCode.getTokenBefore(token, {\n\t\t\tincludeComments: true,\n\t\t});\n\n\t\tif (prevToken && prevToken.type === \"Line\") {\n\t\t\treturn start;\n\t\t}\n\t}\n\n\t// Detect spaces before the token.\n\twhile (ANY_SPACE.test(text[start - 1] || \"\")) {\n\t\tstart -= 1;\n\t}\n\n\treturn start;\n}\n\n/**\n * Get the range of a given token and around whitespaces.\n * @param {Token} token The token to get range.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {number} The start of the range of the token and around whitespaces.\n */\nfunction getEndWithSpaces(token, sourceCode) {\n\tconst text = sourceCode.text;\n\tlet end = token.range[1];\n\n\t// Detect spaces after the token.\n\twhile (ANY_SPACE.test(text[end] || \"\")) {\n\t\tend += 1;\n\t}\n\n\treturn end;\n}\n\n/**\n * Autofixes the Object.assign call to use an object spread instead.\n * @param {ASTNode|null} node The node that the rule warns on, i.e. the Object.assign call\n * @param {string} sourceCode sourceCode of the Object.assign call\n * @returns {Function} autofixer - replaces the Object.assign with a spread object.\n */\nfunction defineFixer(node, sourceCode) {\n\treturn function* (fixer) {\n\t\tconst leftParen = sourceCode.getTokenAfter(\n\t\t\tnode.callee,\n\t\t\tisOpeningParenToken,\n\t\t);\n\t\tconst rightParen = sourceCode.getLastToken(node);\n\n\t\t// Remove everything before the opening paren: callee `Object.assign`, type arguments, and whitespace between the callee and the paren.\n\t\tyield fixer.removeRange([node.range[0], leftParen.range[0]]);\n\n\t\t// Replace the parens of argument list to braces.\n\t\tif (needsParens(node, sourceCode)) {\n\t\t\tyield fixer.replaceText(leftParen, \"({\");\n\t\t\tyield fixer.replaceText(rightParen, \"})\");\n\t\t} else {\n\t\t\tyield fixer.replaceText(leftParen, \"{\");\n\t\t\tyield fixer.replaceText(rightParen, \"}\");\n\t\t}\n\n\t\t// Process arguments.\n\t\tfor (const argNode of node.arguments) {\n\t\t\tconst innerParens = getParenTokens(argNode, leftParen, sourceCode);\n\t\t\tconst left = innerParens.shift();\n\t\t\tconst right = innerParens.pop();\n\n\t\t\tif (argNode.type === \"ObjectExpression\") {\n\t\t\t\tconst maybeTrailingComma = sourceCode.getLastToken(argNode, 1);\n\t\t\t\tconst maybeArgumentComma = sourceCode.getTokenAfter(right);\n\n\t\t\t\t/*\n\t\t\t\t * Make bare this object literal.\n\t\t\t\t * And remove spaces inside of the braces for better formatting.\n\t\t\t\t */\n\t\t\t\tfor (const innerParen of innerParens) {\n\t\t\t\t\tyield fixer.remove(innerParen);\n\t\t\t\t}\n\t\t\t\tconst leftRange = [\n\t\t\t\t\tleft.range[0],\n\t\t\t\t\tgetEndWithSpaces(left, sourceCode),\n\t\t\t\t];\n\t\t\t\tconst rightRange = [\n\t\t\t\t\tMath.max(\n\t\t\t\t\t\tgetStartWithSpaces(right, sourceCode),\n\t\t\t\t\t\tleftRange[1],\n\t\t\t\t\t), // Ensure ranges don't overlap\n\t\t\t\t\tright.range[1],\n\t\t\t\t];\n\n\t\t\t\tyield fixer.removeRange(leftRange);\n\t\t\t\tyield fixer.removeRange(rightRange);\n\n\t\t\t\t// Remove the comma of this argument if it's duplication.\n\t\t\t\tif (\n\t\t\t\t\t(argNode.properties.length === 0 ||\n\t\t\t\t\t\tisCommaToken(maybeTrailingComma)) &&\n\t\t\t\t\tisCommaToken(maybeArgumentComma)\n\t\t\t\t) {\n\t\t\t\t\tyield fixer.remove(maybeArgumentComma);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Make spread.\n\t\t\t\tif (argNeedsParens(argNode, sourceCode)) {\n\t\t\t\t\tyield fixer.insertTextBefore(left, \"...(\");\n\t\t\t\t\tyield fixer.insertTextAfter(right, \")\");\n\t\t\t\t} else {\n\t\t\t\t\tyield fixer.insertTextBefore(left, \"...\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow using `Object.assign` with an object literal as the first argument and prefer the use of object spread instead\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/prefer-object-spread\",\n\t\t},\n\n\t\tschema: [],\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tuseSpreadMessage:\n\t\t\t\t\"Use an object spread instead of `Object.assign` eg: `{ ...foo }`.\",\n\t\t\tuseLiteralMessage:\n\t\t\t\t\"Use an object literal instead of `Object.assign`. eg: `{ foo: bar }`.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\t\t\t\tconst tracker = new ReferenceTracker(scope);\n\t\t\t\tconst trackMap = {\n\t\t\t\t\tObject: {\n\t\t\t\t\t\tassign: { [CALL]: true },\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\t// Iterate all calls of `Object.assign` (only of the global variable `Object`).\n\t\t\t\tfor (const { node: refNode } of tracker.iterateGlobalReferences(\n\t\t\t\t\ttrackMap,\n\t\t\t\t)) {\n\t\t\t\t\tif (\n\t\t\t\t\t\trefNode.arguments.length >= 1 &&\n\t\t\t\t\t\trefNode.arguments[0].type === \"ObjectExpression\" &&\n\t\t\t\t\t\t!hasArraySpread(refNode) &&\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\trefNode.arguments.length > 1 &&\n\t\t\t\t\t\t\thasArgumentsWithAccessors(refNode)\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst messageId =\n\t\t\t\t\t\t\trefNode.arguments.length === 1\n\t\t\t\t\t\t\t\t? \"useLiteralMessage\"\n\t\t\t\t\t\t\t\t: \"useSpreadMessage\";\n\t\t\t\t\t\tconst fix = defineFixer(refNode, sourceCode);\n\n\t\t\t\t\t\tcontext.report({ node: refNode, messageId, fix });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview restrict values that can be used as Promise rejection reasons\n * @author Teddy Katz\n */\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowEmptyReject: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require using Error objects as Promise rejection reasons\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/prefer-promise-reject-errors\",\n\t\t},\n\n\t\tfixable: null,\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowEmptyReject: { type: \"boolean\" },\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\trejectAnError:\n\t\t\t\t\"Expected the Promise rejection reason to be an Error.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ allowEmptyReject }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//----------------------------------------------------------------------\n\t\t// Helpers\n\t\t//----------------------------------------------------------------------\n\n\t\t/**\n\t\t * Checks the argument of a reject() or Promise.reject() CallExpression, and reports it if it can't be an Error\n\t\t * @param {ASTNode} callExpression A CallExpression node which is used to reject a Promise\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkRejectCall(callExpression) {\n\t\t\tif (!callExpression.arguments.length && allowEmptyReject) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!callExpression.arguments.length ||\n\t\t\t\t!astUtils.couldBeError(callExpression.arguments[0]) ||\n\t\t\t\t(callExpression.arguments[0].type === \"Identifier\" &&\n\t\t\t\t\tcallExpression.arguments[0].name === \"undefined\")\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: callExpression,\n\t\t\t\t\tmessageId: \"rejectAnError\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Determines whether a function call is a Promise.reject() call\n\t\t * @param {ASTNode} node A CallExpression node\n\t\t * @returns {boolean} `true` if the call is a Promise.reject() call\n\t\t */\n\t\tfunction isPromiseRejectCall(node) {\n\t\t\treturn astUtils.isSpecificMemberAccess(\n\t\t\t\tnode.callee,\n\t\t\t\t\"Promise\",\n\t\t\t\t\"reject\",\n\t\t\t);\n\t\t}\n\n\t\t//----------------------------------------------------------------------\n\t\t// Public\n\t\t//----------------------------------------------------------------------\n\n\t\treturn {\n\t\t\t// Check `Promise.reject(value)` calls.\n\t\t\tCallExpression(node) {\n\t\t\t\tif (isPromiseRejectCall(node)) {\n\t\t\t\t\tcheckRejectCall(node);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * Check for `new Promise((resolve, reject) => {})`, and check for reject() calls.\n\t\t\t * This function is run on \"NewExpression:exit\" instead of \"NewExpression\" to ensure that\n\t\t\t * the nodes in the expression already have the `parent` property.\n\t\t\t */\n\t\t\t\"NewExpression:exit\"(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.callee.type === \"Identifier\" &&\n\t\t\t\t\tnode.callee.name === \"Promise\" &&\n\t\t\t\t\tnode.arguments.length &&\n\t\t\t\t\tastUtils.isFunction(node.arguments[0]) &&\n\t\t\t\t\tnode.arguments[0].params.length > 1 &&\n\t\t\t\t\tnode.arguments[0].params[1].type === \"Identifier\"\n\t\t\t\t) {\n\t\t\t\t\tsourceCode\n\t\t\t\t\t\t.getDeclaredVariables(node.arguments[0])\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Find the first variable that matches the second parameter's name.\n\t\t\t\t\t\t * If the first parameter has the same name as the second parameter, then the variable will actually\n\t\t\t\t\t\t * be \"declared\" when the first parameter is evaluated, but then it will be immediately overwritten\n\t\t\t\t\t\t * by the second parameter. It's not possible for an expression with the variable to be evaluated before\n\t\t\t\t\t\t * the variable is overwritten, because functions with duplicate parameters cannot have destructuring or\n\t\t\t\t\t\t * default assignments in their parameter lists. Therefore, it's not necessary to explicitly account for\n\t\t\t\t\t\t * this case.\n\t\t\t\t\t\t */\n\t\t\t\t\t\t.find(\n\t\t\t\t\t\t\tvariable =>\n\t\t\t\t\t\t\t\tvariable.name ===\n\t\t\t\t\t\t\t\tnode.arguments[0].params[1].name,\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\t// Get the references to that variable.\n\t\t\t\t\t\t.references // Only check the references that read the parameter's value.\n\t\t\t\t\t\t.filter(ref => ref.isRead())\n\n\t\t\t\t\t\t// Only check the references that are used as the callee in a function call, e.g. `reject(foo)`.\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\tref =>\n\t\t\t\t\t\t\t\tref.identifier.parent.type ===\n\t\t\t\t\t\t\t\t\t\"CallExpression\" &&\n\t\t\t\t\t\t\t\tref.identifier === ref.identifier.parent.callee,\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\t// Check the argument of the function call to determine whether it's an Error.\n\t\t\t\t\t\t.forEach(ref => checkRejectCall(ref.identifier.parent));\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to suggest using \"Reflect\" api over Function/Object methods\n * @author Keith Cirkel <http://keithcirkel.co.uk>\n * @deprecated in ESLint v3.9.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require `Reflect` methods where applicable\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/prefer-reflect\",\n\t\t},\n\n\t\tdeprecated: {\n\t\t\tmessage: \"The original intention of this rule was misguided.\",\n\t\t\tdeprecatedSince: \"3.9.0\",\n\t\t\tavailableUntil: null,\n\t\t\treplacedBy: [],\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\texceptions: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\t\"apply\",\n\t\t\t\t\t\t\t\t\"call\",\n\t\t\t\t\t\t\t\t\"delete\",\n\t\t\t\t\t\t\t\t\"defineProperty\",\n\t\t\t\t\t\t\t\t\"getOwnPropertyDescriptor\",\n\t\t\t\t\t\t\t\t\"getPrototypeOf\",\n\t\t\t\t\t\t\t\t\"setPrototypeOf\",\n\t\t\t\t\t\t\t\t\"isExtensible\",\n\t\t\t\t\t\t\t\t\"getOwnPropertyNames\",\n\t\t\t\t\t\t\t\t\"preventExtensions\",\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tpreferReflect:\n\t\t\t\t\"Avoid using {{existing}}, instead use {{substitute}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst existingNames = {\n\t\t\tapply: \"Function.prototype.apply\",\n\t\t\tcall: \"Function.prototype.call\",\n\t\t\tdefineProperty: \"Object.defineProperty\",\n\t\t\tgetOwnPropertyDescriptor: \"Object.getOwnPropertyDescriptor\",\n\t\t\tgetPrototypeOf: \"Object.getPrototypeOf\",\n\t\t\tsetPrototypeOf: \"Object.setPrototypeOf\",\n\t\t\tisExtensible: \"Object.isExtensible\",\n\t\t\tgetOwnPropertyNames: \"Object.getOwnPropertyNames\",\n\t\t\tpreventExtensions: \"Object.preventExtensions\",\n\t\t};\n\n\t\tconst reflectSubstitutes = {\n\t\t\tapply: \"Reflect.apply\",\n\t\t\tcall: \"Reflect.apply\",\n\t\t\tdefineProperty: \"Reflect.defineProperty\",\n\t\t\tgetOwnPropertyDescriptor: \"Reflect.getOwnPropertyDescriptor\",\n\t\t\tgetPrototypeOf: \"Reflect.getPrototypeOf\",\n\t\t\tsetPrototypeOf: \"Reflect.setPrototypeOf\",\n\t\t\tisExtensible: \"Reflect.isExtensible\",\n\t\t\tgetOwnPropertyNames: \"Reflect.getOwnPropertyNames\",\n\t\t\tpreventExtensions: \"Reflect.preventExtensions\",\n\t\t};\n\n\t\tconst exceptions = (context.options[0] || {}).exceptions || [];\n\n\t\t/**\n\t\t * Reports the Reflect violation based on the `existing` and `substitute`\n\t\t * @param {Object} node The node that violates the rule.\n\t\t * @param {string} existing The existing method name that has been used.\n\t\t * @param {string} substitute The Reflect substitute that should be used.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node, existing, substitute) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tmessageId: \"preferReflect\",\n\t\t\t\tdata: {\n\t\t\t\t\texisting,\n\t\t\t\t\tsubstitute,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tCallExpression(node) {\n\t\t\t\tconst methodName = (node.callee.property || {}).name;\n\t\t\t\tconst isReflectCall =\n\t\t\t\t\t(node.callee.object || {}).name === \"Reflect\";\n\t\t\t\tconst hasReflectSubstitute = Object.hasOwn(\n\t\t\t\t\treflectSubstitutes,\n\t\t\t\t\tmethodName,\n\t\t\t\t);\n\t\t\t\tconst userConfiguredException = exceptions.includes(methodName);\n\n\t\t\t\tif (\n\t\t\t\t\thasReflectSubstitute &&\n\t\t\t\t\t!isReflectCall &&\n\t\t\t\t\t!userConfiguredException\n\t\t\t\t) {\n\t\t\t\t\treport(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\texistingNames[methodName],\n\t\t\t\t\t\treflectSubstitutes[methodName],\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t\tUnaryExpression(node) {\n\t\t\t\tconst isDeleteOperator = node.operator === \"delete\";\n\t\t\t\tconst targetsIdentifier = node.argument.type === \"Identifier\";\n\t\t\t\tconst userConfiguredException = exceptions.includes(\"delete\");\n\n\t\t\t\tif (\n\t\t\t\t\tisDeleteOperator &&\n\t\t\t\t\t!targetsIdentifier &&\n\t\t\t\t\t!userConfiguredException\n\t\t\t\t) {\n\t\t\t\t\treport(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\"the delete keyword\",\n\t\t\t\t\t\t\"Reflect.deleteProperty\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow use of the `RegExp` constructor in favor of regular expression literals\n * @author Milos Djermanovic\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst {\n\tCALL,\n\tCONSTRUCT,\n\tReferenceTracker,\n} = require(\"@eslint-community/eslint-utils\");\nconst {\n\tRegExpValidator,\n\tvisitRegExpAST,\n\tRegExpParser,\n} = require(\"@eslint-community/regexpp\");\nconst { canTokensBeAdjacent } = require(\"./utils/ast-utils\");\nconst { REGEXPP_LATEST_ECMA_VERSION } = require(\"./utils/regular-expressions\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Determines whether the given node is a string literal.\n * @param {ASTNode} node Node to check.\n * @returns {boolean} True if the node is a string literal.\n */\nfunction isStringLiteral(node) {\n\treturn node.type === \"Literal\" && typeof node.value === \"string\";\n}\n\n/**\n * Determines whether the given node is a regex literal.\n * @param {ASTNode} node Node to check.\n * @returns {boolean} True if the node is a regex literal.\n */\nfunction isRegexLiteral(node) {\n\treturn node.type === \"Literal\" && Object.hasOwn(node, \"regex\");\n}\n\nconst validPrecedingTokens = new Set([\n\t\"(\",\n\t\";\",\n\t\"[\",\n\t\",\",\n\t\"=\",\n\t\"+\",\n\t\"*\",\n\t\"-\",\n\t\"?\",\n\t\"~\",\n\t\"%\",\n\t\"**\",\n\t\"!\",\n\t\"typeof\",\n\t\"instanceof\",\n\t\"&&\",\n\t\"||\",\n\t\"??\",\n\t\"return\",\n\t\"...\",\n\t\"delete\",\n\t\"void\",\n\t\"in\",\n\t\"<\",\n\t\">\",\n\t\"<=\",\n\t\">=\",\n\t\"==\",\n\t\"===\",\n\t\"!=\",\n\t\"!==\",\n\t\"<<\",\n\t\">>\",\n\t\">>>\",\n\t\"&\",\n\t\"|\",\n\t\"^\",\n\t\":\",\n\t\"{\",\n\t\"=>\",\n\t\"*=\",\n\t\"<<=\",\n\t\">>=\",\n\t\">>>=\",\n\t\"^=\",\n\t\"|=\",\n\t\"&=\",\n\t\"??=\",\n\t\"||=\",\n\t\"&&=\",\n\t\"**=\",\n\t\"+=\",\n\t\"-=\",\n\t\"/=\",\n\t\"%=\",\n\t\"/\",\n\t\"do\",\n\t\"break\",\n\t\"continue\",\n\t\"debugger\",\n\t\"case\",\n\t\"throw\",\n]);\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tdisallowRedundantWrapping: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow use of the `RegExp` constructor in favor of regular expression literals\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/prefer-regex-literals\",\n\t\t},\n\n\t\thasSuggestions: true,\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tdisallowRedundantWrapping: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedRegExp:\n\t\t\t\t\"Use a regular expression literal instead of the 'RegExp' constructor.\",\n\t\t\treplaceWithLiteral:\n\t\t\t\t\"Replace with an equivalent regular expression literal.\",\n\t\t\treplaceWithLiteralAndFlags:\n\t\t\t\t\"Replace with an equivalent regular expression literal with flags '{{ flags }}'.\",\n\t\t\treplaceWithIntendedLiteralAndFlags:\n\t\t\t\t\"Replace with a regular expression literal with flags '{{ flags }}'.\",\n\t\t\tunexpectedRedundantRegExp:\n\t\t\t\t\"Regular expression literal is unnecessarily wrapped within a 'RegExp' constructor.\",\n\t\t\tunexpectedRedundantRegExpWithFlags:\n\t\t\t\t\"Use regular expression literal with flags instead of the 'RegExp' constructor.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ disallowRedundantWrapping }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Determines whether the given node is a String.raw`` tagged template expression\n\t\t * with a static template literal.\n\t\t * @param {ASTNode} node Node to check.\n\t\t * @returns {boolean} True if the node is String.raw`` with a static template.\n\t\t */\n\t\tfunction isStringRawTaggedStaticTemplateLiteral(node) {\n\t\t\treturn (\n\t\t\t\tnode.type === \"TaggedTemplateExpression\" &&\n\t\t\t\tastUtils.isSpecificMemberAccess(node.tag, \"String\", \"raw\") &&\n\t\t\t\tsourceCode.isGlobalReference(\n\t\t\t\t\tastUtils.skipChainExpression(node.tag).object,\n\t\t\t\t) &&\n\t\t\t\tastUtils.isStaticTemplateLiteral(node.quasi)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Gets the value of a string\n\t\t * @param {ASTNode} node The node to get the string of.\n\t\t * @returns {string|null} The value of the node.\n\t\t */\n\t\tfunction getStringValue(node) {\n\t\t\tif (isStringLiteral(node)) {\n\t\t\t\treturn node.value;\n\t\t\t}\n\n\t\t\tif (astUtils.isStaticTemplateLiteral(node)) {\n\t\t\t\treturn node.quasis[0].value.cooked;\n\t\t\t}\n\n\t\t\tif (isStringRawTaggedStaticTemplateLiteral(node)) {\n\t\t\t\treturn node.quasi.quasis[0].value.raw;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\t/**\n\t\t * Determines whether the given node is considered to be a static string by the logic of this rule.\n\t\t * @param {ASTNode} node Node to check.\n\t\t * @returns {boolean} True if the node is a static string.\n\t\t */\n\t\tfunction isStaticString(node) {\n\t\t\treturn (\n\t\t\t\tisStringLiteral(node) ||\n\t\t\t\tastUtils.isStaticTemplateLiteral(node) ||\n\t\t\t\tisStringRawTaggedStaticTemplateLiteral(node)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines whether the relevant arguments of the given are all static string literals.\n\t\t * @param {ASTNode} node Node to check.\n\t\t * @returns {boolean} True if all arguments are static strings.\n\t\t */\n\t\tfunction hasOnlyStaticStringArguments(node) {\n\t\t\tconst args = node.arguments;\n\n\t\t\tif (\n\t\t\t\t(args.length === 1 || args.length === 2) &&\n\t\t\t\targs.every(isStaticString)\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Determines whether the arguments of the given node indicate that a regex literal is unnecessarily wrapped.\n\t\t * @param {ASTNode} node Node to check.\n\t\t * @returns {boolean} True if the node already contains a regex literal argument.\n\t\t */\n\t\tfunction isUnnecessarilyWrappedRegexLiteral(node) {\n\t\t\tconst args = node.arguments;\n\n\t\t\tif (args.length === 1 && isRegexLiteral(args[0])) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\targs.length === 2 &&\n\t\t\t\tisRegexLiteral(args[0]) &&\n\t\t\t\tisStaticString(args[1])\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Returns a ecmaVersion compatible for regexpp.\n\t\t * @param {number} ecmaVersion The ecmaVersion to convert.\n\t\t * @returns {import(\"@eslint-community/regexpp/ecma-versions\").EcmaVersion} The resulting ecmaVersion compatible for regexpp.\n\t\t */\n\t\tfunction getRegexppEcmaVersion(ecmaVersion) {\n\t\t\tif (ecmaVersion <= 5) {\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t\treturn Math.min(ecmaVersion, REGEXPP_LATEST_ECMA_VERSION);\n\t\t}\n\n\t\tconst regexppEcmaVersion = getRegexppEcmaVersion(\n\t\t\tcontext.languageOptions.ecmaVersion,\n\t\t);\n\n\t\t/**\n\t\t * Makes a character escaped or else returns null.\n\t\t * @param {string} character The character to escape.\n\t\t * @returns {string} The resulting escaped character.\n\t\t */\n\t\tfunction resolveEscapes(character) {\n\t\t\tswitch (character) {\n\t\t\t\tcase \"\\n\":\n\t\t\t\tcase \"\\\\\\n\":\n\t\t\t\t\treturn \"\\\\n\";\n\n\t\t\t\tcase \"\\r\":\n\t\t\t\tcase \"\\\\\\r\":\n\t\t\t\t\treturn \"\\\\r\";\n\n\t\t\t\tcase \"\\t\":\n\t\t\t\tcase \"\\\\\\t\":\n\t\t\t\t\treturn \"\\\\t\";\n\n\t\t\t\tcase \"\\v\":\n\t\t\t\tcase \"\\\\\\v\":\n\t\t\t\t\treturn \"\\\\v\";\n\n\t\t\t\tcase \"\\f\":\n\t\t\t\tcase \"\\\\\\f\":\n\t\t\t\t\treturn \"\\\\f\";\n\n\t\t\t\tcase \"/\":\n\t\t\t\t\treturn \"\\\\/\";\n\n\t\t\t\tdefault:\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks whether the given regex and flags are valid for the ecma version or not.\n\t\t * @param {string} pattern The regex pattern to check.\n\t\t * @param {string | undefined} flags The regex flags to check.\n\t\t * @returns {boolean} True if the given regex pattern and flags are valid for the ecma version.\n\t\t */\n\t\tfunction isValidRegexForEcmaVersion(pattern, flags) {\n\t\t\tconst validator = new RegExpValidator({\n\t\t\t\tecmaVersion: regexppEcmaVersion,\n\t\t\t});\n\n\t\t\ttry {\n\t\t\t\tvalidator.validatePattern(pattern, 0, pattern.length, {\n\t\t\t\t\tunicode: flags ? flags.includes(\"u\") : false,\n\t\t\t\t\tunicodeSets: flags ? flags.includes(\"v\") : false,\n\t\t\t\t});\n\t\t\t\tif (flags) {\n\t\t\t\t\tvalidator.validateFlags(flags);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks whether two given regex flags contain the same flags or not.\n\t\t * @param {string} flagsA The regex flags.\n\t\t * @param {string} flagsB The regex flags.\n\t\t * @returns {boolean} True if two regex flags contain same flags.\n\t\t */\n\t\tfunction areFlagsEqual(flagsA, flagsB) {\n\t\t\treturn [...flagsA].sort().join(\"\") === [...flagsB].sort().join(\"\");\n\t\t}\n\n\t\t/**\n\t\t * Merges two regex flags.\n\t\t * @param {string} flagsA The regex flags.\n\t\t * @param {string} flagsB The regex flags.\n\t\t * @returns {string} The merged regex flags.\n\t\t */\n\t\tfunction mergeRegexFlags(flagsA, flagsB) {\n\t\t\tconst flagsSet = new Set([...flagsA, ...flagsB]);\n\n\t\t\treturn [...flagsSet].join(\"\");\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a give node can be fixed to the given regex pattern and flags.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @param {string} pattern The regex pattern to check.\n\t\t * @param {string} flags The regex flags\n\t\t * @returns {boolean} True if a node can be fixed to the given regex pattern and flags.\n\t\t */\n\t\tfunction canFixTo(node, pattern, flags) {\n\t\t\tconst tokenBefore = sourceCode.getTokenBefore(node);\n\n\t\t\treturn (\n\t\t\t\tsourceCode.getCommentsInside(node).length === 0 &&\n\t\t\t\t(!tokenBefore || validPrecedingTokens.has(tokenBefore.value)) &&\n\t\t\t\tisValidRegexForEcmaVersion(pattern, flags)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Returns a safe output code considering the before and after tokens.\n\t\t * @param {ASTNode} node The regex node.\n\t\t * @param {string} newRegExpValue The new regex expression value.\n\t\t * @returns {string} The output code.\n\t\t */\n\t\tfunction getSafeOutput(node, newRegExpValue) {\n\t\t\tconst tokenBefore = sourceCode.getTokenBefore(node);\n\t\t\tconst tokenAfter = sourceCode.getTokenAfter(node);\n\n\t\t\treturn (\n\t\t\t\t(tokenBefore &&\n\t\t\t\t!canTokensBeAdjacent(tokenBefore, newRegExpValue) &&\n\t\t\t\ttokenBefore.range[1] === node.range[0]\n\t\t\t\t\t? \" \"\n\t\t\t\t\t: \"\") +\n\t\t\t\tnewRegExpValue +\n\t\t\t\t(tokenAfter &&\n\t\t\t\t!canTokensBeAdjacent(newRegExpValue, tokenAfter) &&\n\t\t\t\tnode.range[1] === tokenAfter.range[0]\n\t\t\t\t\t? \" \"\n\t\t\t\t\t: \"\")\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\t\t\t\tconst tracker = new ReferenceTracker(scope);\n\t\t\t\tconst traceMap = {\n\t\t\t\t\tRegExp: {\n\t\t\t\t\t\t[CALL]: true,\n\t\t\t\t\t\t[CONSTRUCT]: true,\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tfor (const { node: refNode } of tracker.iterateGlobalReferences(\n\t\t\t\t\ttraceMap,\n\t\t\t\t)) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tdisallowRedundantWrapping &&\n\t\t\t\t\t\tisUnnecessarilyWrappedRegexLiteral(refNode)\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst regexNode = refNode.arguments[0];\n\n\t\t\t\t\t\tif (refNode.arguments.length === 2) {\n\t\t\t\t\t\t\tconst suggests = [];\n\n\t\t\t\t\t\t\tconst argFlags =\n\t\t\t\t\t\t\t\tgetStringValue(refNode.arguments[1]) || \"\";\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tcanFixTo(\n\t\t\t\t\t\t\t\t\trefNode,\n\t\t\t\t\t\t\t\t\tregexNode.regex.pattern,\n\t\t\t\t\t\t\t\t\targFlags,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tsuggests.push({\n\t\t\t\t\t\t\t\t\tmessageId: \"replaceWithLiteralAndFlags\",\n\t\t\t\t\t\t\t\t\tpattern: regexNode.regex.pattern,\n\t\t\t\t\t\t\t\t\tflags: argFlags,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst literalFlags = regexNode.regex.flags || \"\";\n\t\t\t\t\t\t\tconst mergedFlags = mergeRegexFlags(\n\t\t\t\t\t\t\t\tliteralFlags,\n\t\t\t\t\t\t\t\targFlags,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t!areFlagsEqual(mergedFlags, argFlags) &&\n\t\t\t\t\t\t\t\tcanFixTo(\n\t\t\t\t\t\t\t\t\trefNode,\n\t\t\t\t\t\t\t\t\tregexNode.regex.pattern,\n\t\t\t\t\t\t\t\t\tmergedFlags,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tsuggests.push({\n\t\t\t\t\t\t\t\t\tmessageId:\n\t\t\t\t\t\t\t\t\t\t\"replaceWithIntendedLiteralAndFlags\",\n\t\t\t\t\t\t\t\t\tpattern: regexNode.regex.pattern,\n\t\t\t\t\t\t\t\t\tflags: mergedFlags,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode: refNode,\n\t\t\t\t\t\t\t\tmessageId: \"unexpectedRedundantRegExpWithFlags\",\n\t\t\t\t\t\t\t\tsuggest: suggests.map(\n\t\t\t\t\t\t\t\t\t({ flags, pattern, messageId }) => ({\n\t\t\t\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\t\tflags,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\t\t\t\trefNode,\n\t\t\t\t\t\t\t\t\t\t\t\tgetSafeOutput(\n\t\t\t\t\t\t\t\t\t\t\t\t\trefNode,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`/${pattern}/${flags}`,\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst outputs = [];\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tcanFixTo(\n\t\t\t\t\t\t\t\t\trefNode,\n\t\t\t\t\t\t\t\t\tregexNode.regex.pattern,\n\t\t\t\t\t\t\t\t\tregexNode.regex.flags,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\toutputs.push(sourceCode.getText(regexNode));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode: refNode,\n\t\t\t\t\t\t\t\tmessageId: \"unexpectedRedundantRegExp\",\n\t\t\t\t\t\t\t\tsuggest: outputs.map(output => ({\n\t\t\t\t\t\t\t\t\tmessageId: \"replaceWithLiteral\",\n\t\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\t\t\trefNode,\n\t\t\t\t\t\t\t\t\t\t\tgetSafeOutput(refNode, output),\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (hasOnlyStaticStringArguments(refNode)) {\n\t\t\t\t\t\tlet regexContent = getStringValue(refNode.arguments[0]);\n\t\t\t\t\t\tlet noFix = false;\n\t\t\t\t\t\tlet flags;\n\n\t\t\t\t\t\tif (refNode.arguments[1]) {\n\t\t\t\t\t\t\tflags = getStringValue(refNode.arguments[1]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!canFixTo(refNode, regexContent, flags)) {\n\t\t\t\t\t\t\tnoFix = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!/^[-\\w\\\\[\\](){} \\t\\r\\n\\v\\f!@#$%^&*+=/~`.><?,'\"|:;]*$/u.test(\n\t\t\t\t\t\t\t\tregexContent,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tnoFix = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (regexContent && !noFix) {\n\t\t\t\t\t\t\tlet charIncrease = 0;\n\n\t\t\t\t\t\t\tconst ast = new RegExpParser({\n\t\t\t\t\t\t\t\tecmaVersion: regexppEcmaVersion,\n\t\t\t\t\t\t\t}).parsePattern(\n\t\t\t\t\t\t\t\tregexContent,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tregexContent.length,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tunicode: flags\n\t\t\t\t\t\t\t\t\t\t? flags.includes(\"u\")\n\t\t\t\t\t\t\t\t\t\t: false,\n\t\t\t\t\t\t\t\t\tunicodeSets: flags\n\t\t\t\t\t\t\t\t\t\t? flags.includes(\"v\")\n\t\t\t\t\t\t\t\t\t\t: false,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tvisitRegExpAST(ast, {\n\t\t\t\t\t\t\t\tonCharacterEnter(characterNode) {\n\t\t\t\t\t\t\t\t\tconst escaped = resolveEscapes(\n\t\t\t\t\t\t\t\t\t\tcharacterNode.raw,\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\tif (escaped) {\n\t\t\t\t\t\t\t\t\t\tregexContent =\n\t\t\t\t\t\t\t\t\t\t\tregexContent.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\tcharacterNode.start +\n\t\t\t\t\t\t\t\t\t\t\t\t\tcharIncrease,\n\t\t\t\t\t\t\t\t\t\t\t) +\n\t\t\t\t\t\t\t\t\t\t\tescaped +\n\t\t\t\t\t\t\t\t\t\t\tregexContent.slice(\n\t\t\t\t\t\t\t\t\t\t\t\tcharacterNode.end +\n\t\t\t\t\t\t\t\t\t\t\t\t\tcharIncrease,\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\tif (characterNode.raw.length === 1) {\n\t\t\t\t\t\t\t\t\t\t\tcharIncrease += 1;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst newRegExpValue = `/${regexContent || \"(?:)\"}/${flags || \"\"}`;\n\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: refNode,\n\t\t\t\t\t\t\tmessageId: \"unexpectedRegExp\",\n\t\t\t\t\t\t\tsuggest: noFix\n\t\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tmessageId: \"replaceWithLiteral\",\n\t\t\t\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\t\t\t\t\trefNode,\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetSafeOutput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trefNode,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewRegExpValue,\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Scope} Scope */\n/** @typedef {import(\"eslint-scope\").Variable} Variable */\n/** @typedef {import(\"eslint-scope\").Reference} Reference */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Gets the variable object of `arguments` which is defined implicitly.\n * @param {Scope} scope A scope to get.\n * @returns {Variable} The found variable object.\n */\nfunction getVariableOfArguments(scope) {\n\tconst variables = scope.variables;\n\n\tfor (let i = 0; i < variables.length; ++i) {\n\t\tconst variable = variables[i];\n\n\t\tif (variable.name === \"arguments\") {\n\t\t\t/*\n\t\t\t * If there was a parameter which is named \"arguments\", the implicit \"arguments\" is not defined.\n\t\t\t * So does fast return with null.\n\t\t\t */\n\t\t\treturn variable.identifiers.length === 0 ? variable : null;\n\t\t}\n\t}\n\n\t/* c8 ignore next */\n\treturn null;\n}\n\n/**\n * Checks if the given reference is not normal member access.\n *\n * - arguments         .... true    // not member access\n * - arguments[i]      .... true    // computed member access\n * - arguments[0]      .... true    // computed member access\n * - arguments.length  .... false   // normal member access\n * @param {Reference} reference The reference to check.\n * @returns {boolean} `true` if the reference is not normal member access.\n */\nfunction isNotNormalMemberAccess(reference) {\n\tconst id = reference.identifier;\n\tconst parent = id.parent;\n\n\treturn !(\n\t\tparent.type === \"MemberExpression\" &&\n\t\tparent.object === id &&\n\t\t!parent.computed\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require rest parameters instead of `arguments`\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/prefer-rest-params\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tpreferRestParams: \"Use the rest parameters instead of 'arguments'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Reports a given reference.\n\t\t * @param {Reference} reference A reference to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(reference) {\n\t\t\tcontext.report({\n\t\t\t\tnode: reference.identifier,\n\t\t\t\tloc: reference.identifier.loc,\n\t\t\t\tmessageId: \"preferRestParams\",\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports references of the implicit `arguments` variable if exist.\n\t\t * @param {ASTNode} node The node representing the function.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForArguments(node) {\n\t\t\tconst argumentsVar = getVariableOfArguments(\n\t\t\t\tsourceCode.getScope(node),\n\t\t\t);\n\n\t\t\tif (argumentsVar) {\n\t\t\t\targumentsVar.references\n\t\t\t\t\t.filter(isNotNormalMemberAccess)\n\t\t\t\t\t.forEach(report);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t\"FunctionDeclaration:exit\": checkForArguments,\n\t\t\t\"FunctionExpression:exit\": checkForArguments,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to suggest using of the spread operator instead of `.apply()`.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether or not a node is a `.apply()` for variadic.\n * @param {ASTNode} node A CallExpression node to check.\n * @returns {boolean} Whether or not the node is a `.apply()` for variadic.\n */\nfunction isVariadicApplyCalling(node) {\n\treturn (\n\t\tastUtils.isSpecificMemberAccess(node.callee, null, \"apply\") &&\n\t\tnode.arguments.length === 2 &&\n\t\tnode.arguments[1].type !== \"ArrayExpression\" &&\n\t\tnode.arguments[1].type !== \"SpreadElement\"\n\t);\n}\n\n/**\n * Checks whether or not `thisArg` is not changed by `.apply()`.\n * @param {ASTNode|null} expectedThis The node that is the owner of the applied function.\n * @param {ASTNode} thisArg The node that is given to the first argument of the `.apply()`.\n * @param {RuleContext} context The ESLint rule context object.\n * @returns {boolean} Whether or not `thisArg` is not changed by `.apply()`.\n */\nfunction isValidThisArg(expectedThis, thisArg, context) {\n\tif (!expectedThis) {\n\t\treturn astUtils.isNullOrUndefined(thisArg);\n\t}\n\treturn astUtils.equalTokens(expectedThis, thisArg, context);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require spread operators instead of `.apply()`\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/prefer-spread\",\n\t\t},\n\n\t\tschema: [],\n\t\tfixable: null,\n\n\t\tmessages: {\n\t\t\tpreferSpread: \"Use the spread operator instead of '.apply()'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tCallExpression(node) {\n\t\t\t\tif (!isVariadicApplyCalling(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst applied = astUtils.skipChainExpression(\n\t\t\t\t\tastUtils.skipChainExpression(node.callee).object,\n\t\t\t\t);\n\t\t\t\tconst expectedThis =\n\t\t\t\t\tapplied.type === \"MemberExpression\" ? applied.object : null;\n\t\t\t\tconst thisArg = node.arguments[0];\n\n\t\t\t\tif (isValidThisArg(expectedThis, thisArg, sourceCode)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"preferSpread\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to suggest using template literals instead of string concatenation.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether or not a given node is a concatenation.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} `true` if the node is a concatenation.\n */\nfunction isConcatenation(node) {\n\treturn node.type === \"BinaryExpression\" && node.operator === \"+\";\n}\n\n/**\n * Gets the top binary expression node for concatenation in parents of a given node.\n * @param {ASTNode} node A node to get.\n * @returns {ASTNode} the top binary expression node in parents of a given node.\n */\nfunction getTopConcatBinaryExpression(node) {\n\tlet currentNode = node;\n\n\twhile (isConcatenation(currentNode.parent)) {\n\t\tcurrentNode = currentNode.parent;\n\t}\n\treturn currentNode;\n}\n\n/**\n * Checks whether or not a node contains a string literal with an octal or non-octal decimal escape sequence\n * @param {ASTNode} node A node to check\n * @returns {boolean} `true` if at least one string literal within the node contains\n * an octal or non-octal decimal escape sequence\n */\nfunction hasOctalOrNonOctalDecimalEscapeSequence(node) {\n\tif (isConcatenation(node)) {\n\t\treturn (\n\t\t\thasOctalOrNonOctalDecimalEscapeSequence(node.left) ||\n\t\t\thasOctalOrNonOctalDecimalEscapeSequence(node.right)\n\t\t);\n\t}\n\n\t// No need to check TemplateLiterals \u2013 would throw parsing error\n\tif (node.type === \"Literal\" && typeof node.value === \"string\") {\n\t\treturn astUtils.hasOctalOrNonOctalDecimalEscapeSequence(node.raw);\n\t}\n\n\treturn false;\n}\n\n/**\n * Checks whether or not a given binary expression has string literals.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} `true` if the node has string literals.\n */\nfunction hasStringLiteral(node) {\n\tif (isConcatenation(node)) {\n\t\t// `left` is deeper than `right` normally.\n\t\treturn hasStringLiteral(node.right) || hasStringLiteral(node.left);\n\t}\n\treturn astUtils.isStringLiteral(node);\n}\n\n/**\n * Checks whether or not a given binary expression has non string literals.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} `true` if the node has non string literals.\n */\nfunction hasNonStringLiteral(node) {\n\tif (isConcatenation(node)) {\n\t\t// `left` is deeper than `right` normally.\n\t\treturn (\n\t\t\thasNonStringLiteral(node.right) || hasNonStringLiteral(node.left)\n\t\t);\n\t}\n\treturn !astUtils.isStringLiteral(node);\n}\n\n/**\n * Determines whether a given node will start with a template curly expression (`${}`) when being converted to a template literal.\n * @param {ASTNode} node The node that will be fixed to a template literal\n * @returns {boolean} `true` if the node will start with a template curly.\n */\nfunction startsWithTemplateCurly(node) {\n\tif (node.type === \"BinaryExpression\") {\n\t\treturn startsWithTemplateCurly(node.left);\n\t}\n\tif (node.type === \"TemplateLiteral\") {\n\t\treturn (\n\t\t\tnode.expressions.length &&\n\t\t\tnode.quasis.length &&\n\t\t\tnode.quasis[0].range[0] === node.quasis[0].range[1]\n\t\t);\n\t}\n\treturn node.type !== \"Literal\" || typeof node.value !== \"string\";\n}\n\n/**\n * Determines whether a given node end with a template curly expression (`${}`) when being converted to a template literal.\n * @param {ASTNode} node The node that will be fixed to a template literal\n * @returns {boolean} `true` if the node will end with a template curly.\n */\nfunction endsWithTemplateCurly(node) {\n\tif (node.type === \"BinaryExpression\") {\n\t\treturn startsWithTemplateCurly(node.right);\n\t}\n\tif (node.type === \"TemplateLiteral\") {\n\t\treturn (\n\t\t\tnode.expressions.length &&\n\t\t\tnode.quasis.length &&\n\t\t\tnode.quasis.at(-1).range[0] === node.quasis.at(-1).range[1]\n\t\t);\n\t}\n\treturn node.type !== \"Literal\" || typeof node.value !== \"string\";\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require template literals instead of string concatenation\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/prefer-template\",\n\t\t},\n\n\t\tschema: [],\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tunexpectedStringConcatenation: \"Unexpected string concatenation.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tlet done = Object.create(null);\n\n\t\t/**\n\t\t * Gets the non-token text between two nodes, ignoring any other tokens that appear between the two tokens.\n\t\t * @param {ASTNode} node1 The first node\n\t\t * @param {ASTNode} node2 The second node\n\t\t * @returns {string} The text between the nodes, excluding other tokens\n\t\t */\n\t\tfunction getTextBetween(node1, node2) {\n\t\t\tconst allTokens = [node1]\n\t\t\t\t.concat(sourceCode.getTokensBetween(node1, node2))\n\t\t\t\t.concat(node2);\n\t\t\tconst sourceText = sourceCode.getText();\n\n\t\t\treturn allTokens\n\t\t\t\t.slice(0, -1)\n\t\t\t\t.reduce(\n\t\t\t\t\t(accumulator, token, index) =>\n\t\t\t\t\t\taccumulator +\n\t\t\t\t\t\tsourceText.slice(\n\t\t\t\t\t\t\ttoken.range[1],\n\t\t\t\t\t\t\tallTokens[index + 1].range[0],\n\t\t\t\t\t\t),\n\t\t\t\t\t\"\",\n\t\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Returns a template literal form of the given node.\n\t\t * @param {ASTNode} currentNode A node that should be converted to a template literal\n\t\t * @param {string} textBeforeNode Text that should appear before the node\n\t\t * @param {string} textAfterNode Text that should appear after the node\n\t\t * @returns {string} A string form of this node, represented as a template literal\n\t\t */\n\t\tfunction getTemplateLiteral(\n\t\t\tcurrentNode,\n\t\t\ttextBeforeNode,\n\t\t\ttextAfterNode,\n\t\t) {\n\t\t\tif (\n\t\t\t\tcurrentNode.type === \"Literal\" &&\n\t\t\t\ttypeof currentNode.value === \"string\"\n\t\t\t) {\n\t\t\t\t/*\n\t\t\t\t * If the current node is a string literal, escape any instances of ${ or ` to prevent them from being interpreted\n\t\t\t\t * as a template placeholder. However, if the code already contains a backslash before the ${ or `\n\t\t\t\t * for some reason, don't add another backslash, because that would change the meaning of the code (it would cause\n\t\t\t\t * an actual backslash character to appear before the dollar sign).\n\t\t\t\t */\n\t\t\t\treturn `\\`${currentNode.raw\n\t\t\t\t\t.slice(1, -1)\n\t\t\t\t\t.replace(/\\\\*(\\$\\{|`)/gu, matched => {\n\t\t\t\t\t\tif (matched.lastIndexOf(\"\\\\\") % 2) {\n\t\t\t\t\t\t\treturn `\\\\${matched}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn matched;\n\n\t\t\t\t\t\t// Unescape any quotes that appear in the original Literal that no longer need to be escaped.\n\t\t\t\t\t})\n\t\t\t\t\t.replace(\n\t\t\t\t\t\tnew RegExp(`\\\\\\\\${currentNode.raw[0]}`, \"gu\"),\n\t\t\t\t\t\tcurrentNode.raw[0],\n\t\t\t\t\t)}\\``;\n\t\t\t}\n\n\t\t\tif (currentNode.type === \"TemplateLiteral\") {\n\t\t\t\treturn sourceCode.getText(currentNode);\n\t\t\t}\n\n\t\t\tif (isConcatenation(currentNode) && hasStringLiteral(currentNode)) {\n\t\t\t\tconst plusSign = sourceCode.getFirstTokenBetween(\n\t\t\t\t\tcurrentNode.left,\n\t\t\t\t\tcurrentNode.right,\n\t\t\t\t\ttoken => token.value === \"+\",\n\t\t\t\t);\n\t\t\t\tconst textBeforePlus = getTextBetween(\n\t\t\t\t\tcurrentNode.left,\n\t\t\t\t\tplusSign,\n\t\t\t\t);\n\t\t\t\tconst textAfterPlus = getTextBetween(\n\t\t\t\t\tplusSign,\n\t\t\t\t\tcurrentNode.right,\n\t\t\t\t);\n\t\t\t\tconst leftEndsWithCurly = endsWithTemplateCurly(\n\t\t\t\t\tcurrentNode.left,\n\t\t\t\t);\n\t\t\t\tconst rightStartsWithCurly = startsWithTemplateCurly(\n\t\t\t\t\tcurrentNode.right,\n\t\t\t\t);\n\n\t\t\t\tif (leftEndsWithCurly) {\n\t\t\t\t\t// If the left side of the expression ends with a template curly, add the extra text to the end of the curly bracket.\n\t\t\t\t\t// `foo${bar}` /* comment */ + 'baz' --> `foo${bar /* comment */  }${baz}`\n\t\t\t\t\treturn (\n\t\t\t\t\t\tgetTemplateLiteral(\n\t\t\t\t\t\t\tcurrentNode.left,\n\t\t\t\t\t\t\ttextBeforeNode,\n\t\t\t\t\t\t\ttextBeforePlus + textAfterPlus,\n\t\t\t\t\t\t).slice(0, -1) +\n\t\t\t\t\t\tgetTemplateLiteral(\n\t\t\t\t\t\t\tcurrentNode.right,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\ttextAfterNode,\n\t\t\t\t\t\t).slice(1)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (rightStartsWithCurly) {\n\t\t\t\t\t// Otherwise, if the right side of the expression starts with a template curly, add the text there.\n\t\t\t\t\t// 'foo' /* comment */ + `${bar}baz` --> `foo${ /* comment */  bar}baz`\n\t\t\t\t\treturn (\n\t\t\t\t\t\tgetTemplateLiteral(\n\t\t\t\t\t\t\tcurrentNode.left,\n\t\t\t\t\t\t\ttextBeforeNode,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t).slice(0, -1) +\n\t\t\t\t\t\tgetTemplateLiteral(\n\t\t\t\t\t\t\tcurrentNode.right,\n\t\t\t\t\t\t\ttextBeforePlus + textAfterPlus,\n\t\t\t\t\t\t\ttextAfterNode,\n\t\t\t\t\t\t).slice(1)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * Otherwise, these nodes should not be combined into a template curly, since there is nowhere to put\n\t\t\t\t * the text between them.\n\t\t\t\t */\n\t\t\t\treturn `${getTemplateLiteral(currentNode.left, textBeforeNode, null)}${textBeforePlus}+${textAfterPlus}${getTemplateLiteral(currentNode.right, textAfterNode, null)}`;\n\t\t\t}\n\n\t\t\treturn `\\`\\${${textBeforeNode || \"\"}${sourceCode.getText(currentNode)}${textAfterNode || \"\"}}\\``;\n\t\t}\n\n\t\t/**\n\t\t * Returns a fixer object that converts a non-string binary expression to a template literal\n\t\t * @param {SourceCodeFixer} fixer The fixer object\n\t\t * @param {ASTNode} node A node that should be converted to a template literal\n\t\t * @returns {Object} A fix for this binary expression\n\t\t */\n\t\tfunction fixNonStringBinaryExpression(fixer, node) {\n\t\t\tconst topBinaryExpr = getTopConcatBinaryExpression(node.parent);\n\n\t\t\tif (hasOctalOrNonOctalDecimalEscapeSequence(topBinaryExpr)) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn fixer.replaceText(\n\t\t\t\ttopBinaryExpr,\n\t\t\t\tgetTemplateLiteral(topBinaryExpr, null, null),\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Reports if a given node is string concatenation with non string literals.\n\t\t * @param {ASTNode} node A node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForStringConcat(node) {\n\t\t\tif (\n\t\t\t\t!astUtils.isStringLiteral(node) ||\n\t\t\t\t!isConcatenation(node.parent)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst topBinaryExpr = getTopConcatBinaryExpression(node.parent);\n\n\t\t\t// Checks whether or not this node had been checked already.\n\t\t\tif (done[topBinaryExpr.range[0]]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdone[topBinaryExpr.range[0]] = true;\n\n\t\t\tif (hasNonStringLiteral(topBinaryExpr)) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode: topBinaryExpr,\n\t\t\t\t\tmessageId: \"unexpectedStringConcatenation\",\n\t\t\t\t\tfix: fixer => fixNonStringBinaryExpression(fixer, node),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tProgram() {\n\t\t\t\tdone = Object.create(null);\n\t\t\t},\n\n\t\t\tLiteral: checkForStringConcat,\n\t\t\tTemplateLiteral: checkForStringConcat,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to preserve caught errors when re-throwing exceptions\n * @author Amnish Singh Arora\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"estree\").Node} ASTNode */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/*\n * This is an indicator of an error cause node, that is too complicated to be detected and fixed.\n * Eg, when error options is an `Identifier` or a `SpreadElement`.\n */\nconst UNKNOWN_CAUSE = Symbol(\"unknown_cause\");\n\nconst BUILT_IN_ERROR_TYPES = new Set([\n\t\"Error\",\n\t\"EvalError\",\n\t\"RangeError\",\n\t\"ReferenceError\",\n\t\"SyntaxError\",\n\t\"TypeError\",\n\t\"URIError\",\n\t\"AggregateError\",\n]);\n\n/**\n * Finds and returns information about the `cause` property of an error being thrown.\n * @param {ASTNode} throwStatement `ThrowStatement` to be checked.\n * @returns {{ value: ASTNode; multipleDefinitions: boolean; } | UNKNOWN_CAUSE | null}\n * Information about the `cause` of the error being thrown, such as the value node and\n * whether there are multiple definitions of `cause`. `null` if there is no `cause`.\n */\nfunction getErrorCause(throwStatement) {\n\tconst throwExpression = throwStatement.argument;\n\t/*\n\t * Determine which argument index holds the options object\n\t * `AggregateError` is a special case as it accepts the `options` object as third argument.\n\t */\n\tconst optionsIndex =\n\t\tthrowExpression.callee.name === \"AggregateError\" ? 2 : 1;\n\n\t/*\n\t * Make sure there is no `SpreadElement` at or before the `optionsIndex`\n\t * as this messes up the effective order of arguments and makes it complicated\n\t * to track where the actual error options need to be at\n\t */\n\tconst spreadExpressionIndex = throwExpression.arguments.findIndex(\n\t\targ => arg.type === \"SpreadElement\",\n\t);\n\tif (spreadExpressionIndex >= 0 && spreadExpressionIndex <= optionsIndex) {\n\t\treturn UNKNOWN_CAUSE;\n\t}\n\n\tconst errorOptions = throwExpression.arguments[optionsIndex];\n\n\tif (errorOptions) {\n\t\tif (errorOptions.type === \"ObjectExpression\") {\n\t\t\tif (\n\t\t\t\terrorOptions.properties.some(\n\t\t\t\t\tprop => prop.type === \"SpreadElement\",\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t/*\n\t\t\t\t * If there is a spread element as part of error options, it is too complicated\n\t\t\t\t * to verify if the cause is used properly and auto-fix.\n\t\t\t\t */\n\t\t\t\treturn UNKNOWN_CAUSE;\n\t\t\t}\n\n\t\t\tconst causeProperties = errorOptions.properties.filter(\n\t\t\t\tprop => astUtils.getStaticPropertyName(prop) === \"cause\",\n\t\t\t);\n\n\t\t\tconst causeProperty = causeProperties.at(-1);\n\t\t\treturn causeProperty\n\t\t\t\t? {\n\t\t\t\t\t\tvalue: causeProperty.value,\n\t\t\t\t\t\tmultipleDefinitions: causeProperties.length > 1,\n\t\t\t\t\t}\n\t\t\t\t: null;\n\t\t}\n\n\t\t// Error options exist, but too complicated to be analyzed/fixed\n\t\treturn UNKNOWN_CAUSE;\n\t}\n\n\treturn null;\n}\n\n/**\n * Finds and returns the `CatchClause` node, that the `node` is part of.\n * @param {ASTNode} node The AST node to be evaluated.\n * @returns {ASTNode | null } The closest parent `CatchClause` node, `null` if the `node` is not in a catch block.\n */\nfunction findParentCatch(node) {\n\tlet currentNode = node;\n\n\twhile (currentNode && currentNode.type !== \"CatchClause\") {\n\t\tif (\n\t\t\t[\n\t\t\t\t\"FunctionDeclaration\",\n\t\t\t\t\"FunctionExpression\",\n\t\t\t\t\"ArrowFunctionExpression\",\n\t\t\t\t\"StaticBlock\",\n\t\t\t].includes(currentNode.type)\n\t\t) {\n\t\t\t/*\n\t\t\t * Make sure the ThrowStatement is not made inside a function definition or a static block inside a high level catch.\n\t\t\t * In such cases, the caught error is not directly related to the Throw.\n\t\t\t *\n\t\t\t * For example,\n\t\t\t * try {\n\t\t\t * } catch (error) {\n\t\t\t * \tfoo = {\n\t\t\t * \t\tbar() {\n\t\t\t *\t \tthrow new Error();\n\t\t\t * \t  }\n\t\t\t * };\n\t\t\t * }\n\t\t\t */\n\t\t\treturn null;\n\t\t}\n\t\tcurrentNode = currentNode.parent;\n\t}\n\n\treturn currentNode;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\trequireCatchParameter: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow losing originally caught error when re-throwing custom errors\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/preserve-caught-error\", // URL to the documentation page for this rule\n\t\t},\n\t\t/*\n\t\t * TODO: We should allow passing `customErrorTypes` option once something like `typescript-eslint`'s\n\t\t * \t\t`TypeOrValueSpecifier` is implemented in core Eslint.\n\t\t *      See:\n\t\t * \t\t1. https://typescript-eslint.io/packages/type-utils/type-or-value-specifier/\n\t\t *      2. https://github.com/eslint/eslint/pull/19913#discussion_r2192608593\n\t\t *      3. https://github.com/eslint/eslint/discussions/16540\n\t\t */\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\trequireCatchParameter: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\"Requires the catch blocks to always have the caught error parameter so it is not discarded.\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\tmissingCause:\n\t\t\t\t\"There is no `cause` attached to the symptom error being thrown.\",\n\t\t\tincorrectCause:\n\t\t\t\t\"The symptom error is being thrown with an incorrect `cause`.\",\n\t\t\tincludeCause:\n\t\t\t\t\"Include the original caught error as the `cause` of the symptom error.\",\n\t\t\tmissingCatchErrorParam:\n\t\t\t\t\"The caught error is not accessible because the catch clause lacks the error parameter. Start referencing the caught error using the catch parameter.\",\n\t\t\tpartiallyLostError:\n\t\t\t\t\"Re-throws cannot preserve the caught error as a part of it is being lost due to destructuring.\",\n\t\t\tcaughtErrorShadowed:\n\t\t\t\t\"The caught error is being attached as `cause`, but is shadowed by a closer scoped redeclaration.\",\n\t\t},\n\t\thasSuggestions: true,\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst [{ requireCatchParameter }] = context.options;\n\n\t\t//----------------------------------------------------------------------\n\t\t// Helpers\n\t\t//----------------------------------------------------------------------\n\n\t\t/**\n\t\t * Checks if a `ThrowStatement` is constructing and throwing a new `Error` object.\n\t\t *\n\t\t * Covers all the error types on `globalThis` that support `cause` property:\n\t\t * https://github.com/microsoft/TypeScript/blob/main/src/lib/es2022.error.d.ts\n\t\t * @param {ASTNode} throwStatement The `ThrowStatement` that needs to be checked.\n\t\t * @returns {boolean} `true` if a new \"Error\" is being thrown, else `false`.\n\t\t */\n\t\tfunction isThrowingNewError(throwStatement) {\n\t\t\treturn (\n\t\t\t\t(throwStatement.argument.type === \"NewExpression\" ||\n\t\t\t\t\tthrowStatement.argument.type === \"CallExpression\") &&\n\t\t\t\tthrowStatement.argument.callee.type === \"Identifier\" &&\n\t\t\t\tBUILT_IN_ERROR_TYPES.has(throwStatement.argument.callee.name) &&\n\t\t\t\t/*\n\t\t\t\t * Make sure the thrown Error is instance is one of the built-in global error types.\n\t\t\t\t * Custom imports could shadow this, which would lead to false positives.\n\t\t\t\t * e.g. import { Error } from \"./my-custom-error.js\";\n\t\t\t\t *      throw Error(\"Failed to perform error prone operations\");\n\t\t\t\t */\n\t\t\t\tsourceCode.isGlobalReference(throwStatement.argument.callee)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Inserts `cause: <caughtErrorName>` into an inline options object expression.\n\t\t * @param {RuleFixer} fixer The fixer object.\n\t\t * @param {ASTNode} optionsNode The options object node.\n\t\t * @param {string} caughtErrorName The name of the caught error (e.g., \"err\").\n\t\t * @returns {Fix} The fix object.\n\t\t */\n\t\tfunction insertCauseIntoOptions(fixer, optionsNode, caughtErrorName) {\n\t\t\tconst properties = optionsNode.properties;\n\n\t\t\tif (properties.length === 0) {\n\t\t\t\t// Insert inside empty braces: `{}` \u2192 `{ cause: err }`\n\t\t\t\treturn fixer.insertTextAfter(\n\t\t\t\t\tsourceCode.getFirstToken(optionsNode),\n\t\t\t\t\t`cause: ${caughtErrorName}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst lastProp = properties.at(-1);\n\t\t\treturn fixer.insertTextAfter(\n\t\t\t\tlastProp,\n\t\t\t\t`, cause: ${caughtErrorName}`,\n\t\t\t);\n\t\t}\n\n\t\t//----------------------------------------------------------------------\n\t\t// Public\n\t\t//----------------------------------------------------------------------\n\t\treturn {\n\t\t\tThrowStatement(node) {\n\t\t\t\t// Check if the throw is inside a catch block\n\t\t\t\tconst parentCatch = findParentCatch(node);\n\t\t\t\tconst throwStatement = node;\n\n\t\t\t\t// Check if a new error is being thrown in a catch block\n\t\t\t\tif (parentCatch && isThrowingNewError(throwStatement)) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tparentCatch.param &&\n\t\t\t\t\t\tparentCatch.param.type !== \"Identifier\"\n\t\t\t\t\t) {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * When a part of the caught error is being lost at the parameter level, commonly due to destructuring.\n\t\t\t\t\t\t * e.g. catch({ message, ...rest })\n\t\t\t\t\t\t */\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tmessageId: \"partiallyLostError\",\n\t\t\t\t\t\t\tnode: parentCatch,\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst caughtError =\n\t\t\t\t\t\tparentCatch.param?.type === \"Identifier\"\n\t\t\t\t\t\t\t? parentCatch.param\n\t\t\t\t\t\t\t: null;\n\n\t\t\t\t\t// Check if there are throw statements and caught error is being ignored\n\t\t\t\t\tif (!caughtError) {\n\t\t\t\t\t\tif (requireCatchParameter) {\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode: throwStatement,\n\t\t\t\t\t\t\t\tmessageId: \"missingCatchErrorParam\",\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check if there is a cause attached to the new error\n\t\t\t\t\tconst errorCauseInfo = getErrorCause(throwStatement);\n\n\t\t\t\t\tif (errorCauseInfo === UNKNOWN_CAUSE) {\n\t\t\t\t\t\t// Error options exist, but too complicated to be analyzed/fixed\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (errorCauseInfo === null) {\n\t\t\t\t\t\t// If there is no `cause` attached to the error being thrown.\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tmessageId: \"missingCause\",\n\t\t\t\t\t\t\tnode: throwStatement,\n\t\t\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmessageId: \"includeCause\",\n\t\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\t\tconst throwExpression =\n\t\t\t\t\t\t\t\t\t\t\tthrowStatement.argument;\n\t\t\t\t\t\t\t\t\t\tconst args = throwExpression.arguments;\n\t\t\t\t\t\t\t\t\t\tconst errorType =\n\t\t\t\t\t\t\t\t\t\t\tthrowExpression.callee.name;\n\n\t\t\t\t\t\t\t\t\t\t// AggregateError: errors, message, options\n\t\t\t\t\t\t\t\t\t\tif (errorType === \"AggregateError\") {\n\t\t\t\t\t\t\t\t\t\t\tconst errorsArg = args[0];\n\t\t\t\t\t\t\t\t\t\t\tconst messageArg = args[1];\n\t\t\t\t\t\t\t\t\t\t\tconst optionsArg = args[2];\n\n\t\t\t\t\t\t\t\t\t\t\tif (!errorsArg) {\n\t\t\t\t\t\t\t\t\t\t\t\t// Case: `throw new AggregateError()` \u2192 insert all arguments\n\t\t\t\t\t\t\t\t\t\t\t\tconst lastToken =\n\t\t\t\t\t\t\t\t\t\t\t\t\tsourceCode.getLastToken(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthrowExpression,\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tconst lastCalleeToken =\n\t\t\t\t\t\t\t\t\t\t\t\t\tsourceCode.getLastToken(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthrowExpression.callee,\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tconst parenToken =\n\t\t\t\t\t\t\t\t\t\t\t\t\tsourceCode.getFirstTokenBetween(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlastCalleeToken,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlastToken,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tastUtils.isOpeningParenToken,\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t\t\tif (parenToken) {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn fixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tparenToken,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`[], \"\", { cause: ${caughtError.name} }`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\treturn fixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\t\t\t\t\tthrowExpression.callee,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`([], \"\", { cause: ${caughtError.name} })`,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tif (!messageArg) {\n\t\t\t\t\t\t\t\t\t\t\t\t// Case: `throw new AggregateError([])` \u2192 insert message and options\n\t\t\t\t\t\t\t\t\t\t\t\treturn fixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\t\t\t\t\terrorsArg,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`, \"\", { cause: ${caughtError.name} }`,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tif (!optionsArg) {\n\t\t\t\t\t\t\t\t\t\t\t\t// Case: `throw new AggregateError([], \"\")` \u2192 insert error options only\n\t\t\t\t\t\t\t\t\t\t\t\treturn fixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\t\t\t\t\tmessageArg,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`, { cause: ${caughtError.name} }`,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\toptionsArg.type ===\n\t\t\t\t\t\t\t\t\t\t\t\t\"ObjectExpression\"\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn insertCauseIntoOptions(\n\t\t\t\t\t\t\t\t\t\t\t\t\tfixer,\n\t\t\t\t\t\t\t\t\t\t\t\t\toptionsArg,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcaughtError.name,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Complex dynamic options \u2014 skip\n\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Normal Error types\n\t\t\t\t\t\t\t\t\t\tconst messageArg = args[0];\n\t\t\t\t\t\t\t\t\t\tconst optionsArg = args[1];\n\n\t\t\t\t\t\t\t\t\t\tif (!messageArg) {\n\t\t\t\t\t\t\t\t\t\t\t// Case: `throw new Error()` \u2192 insert both message and options\n\t\t\t\t\t\t\t\t\t\t\tconst lastToken =\n\t\t\t\t\t\t\t\t\t\t\t\tsourceCode.getLastToken(\n\t\t\t\t\t\t\t\t\t\t\t\t\tthrowExpression,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tconst lastCalleeToken =\n\t\t\t\t\t\t\t\t\t\t\t\tsourceCode.getLastToken(\n\t\t\t\t\t\t\t\t\t\t\t\t\tthrowExpression.callee,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tconst parenToken =\n\t\t\t\t\t\t\t\t\t\t\t\tsourceCode.getFirstTokenBetween(\n\t\t\t\t\t\t\t\t\t\t\t\t\tlastCalleeToken,\n\t\t\t\t\t\t\t\t\t\t\t\t\tlastToken,\n\t\t\t\t\t\t\t\t\t\t\t\t\tastUtils.isOpeningParenToken,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t\tif (parenToken) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn fixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\t\t\t\t\tparenToken,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`\"\", { cause: ${caughtError.name} }`,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn fixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\t\t\t\tthrowExpression.callee,\n\t\t\t\t\t\t\t\t\t\t\t\t`(\"\", { cause: ${caughtError.name} })`,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!optionsArg) {\n\t\t\t\t\t\t\t\t\t\t\t// Case: `throw new Error(\"Some message\")` \u2192 insert only options\n\t\t\t\t\t\t\t\t\t\t\treturn fixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\t\t\t\tmessageArg,\n\t\t\t\t\t\t\t\t\t\t\t\t`, { cause: ${caughtError.name} }`,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\toptionsArg.type ===\n\t\t\t\t\t\t\t\t\t\t\t\"ObjectExpression\"\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\treturn insertCauseIntoOptions(\n\t\t\t\t\t\t\t\t\t\t\t\tfixer,\n\t\t\t\t\t\t\t\t\t\t\t\toptionsArg,\n\t\t\t\t\t\t\t\t\t\t\t\tcaughtError.name,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\treturn null; // Identifier or spread \u2014 do not fix\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// We don't need to check further\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { value: thrownErrorCause } = errorCauseInfo;\n\n\t\t\t\t\t// If there is an attached cause, verify that it matches the caught error\n\t\t\t\t\tif (\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\tthrownErrorCause.type === \"Identifier\" &&\n\t\t\t\t\t\t\tthrownErrorCause.name === caughtError.name\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst suggest = errorCauseInfo.multipleDefinitions\n\t\t\t\t\t\t\t? null // If there are multiple `cause` definitions, a suggestion could be confusing.\n\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tmessageId: \"includeCause\",\n\t\t\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t\t\t * In case `cause` is attached using object property shorthand or as a method or accessor.\n\t\t\t\t\t\t\t\t\t\t\t * e.g. throw Error(\"fail\", { cause });\n\t\t\t\t\t\t\t\t\t\t\t *      throw Error(\"fail\", { cause() { doSomething(); } });\n\t\t\t\t\t\t\t\t\t\t\t *      throw Error(\"fail\", { get cause() { return error; } });\n\t\t\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tthrownErrorCause.parent\n\t\t\t\t\t\t\t\t\t\t\t\t\t.method ||\n\t\t\t\t\t\t\t\t\t\t\t\tthrownErrorCause.parent\n\t\t\t\t\t\t\t\t\t\t\t\t\t.shorthand ||\n\t\t\t\t\t\t\t\t\t\t\t\tthrownErrorCause.parent.kind !==\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"init\"\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\t\t\t\t\tthrownErrorCause.parent,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`cause: ${caughtError.name}`,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\t\t\t\tthrownErrorCause,\n\t\t\t\t\t\t\t\t\t\t\t\tcaughtError.name,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tmessageId: \"incorrectCause\",\n\t\t\t\t\t\t\tnode: thrownErrorCause,\n\t\t\t\t\t\t\tsuggest,\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * If the attached cause matches the identifier name of the caught error,\n\t\t\t\t\t * make sure it is not being shadowed by a closer scoped redeclaration.\n\t\t\t\t\t *\n\t\t\t\t\t * e.g. try {\n\t\t\t\t\t *      doSomething();\n\t\t\t\t\t * \t  } catch (error) {\n\t\t\t\t\t * \t     if (whatever) {\n\t\t\t\t\t * \t       const error = anotherError;\n\t\t\t\t\t * \t       throw new Error(\"Something went wrong\");\n\t\t\t\t\t * \t     }\n\t\t\t\t\t *   }\n\t\t\t\t\t */\n\t\t\t\t\tlet scope = sourceCode.getScope(throwStatement);\n\t\t\t\t\tdo {\n\t\t\t\t\t\tconst variable = scope.set.get(caughtError.name);\n\t\t\t\t\t\tif (variable) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tscope = scope.upper;\n\t\t\t\t\t} while (scope);\n\n\t\t\t\t\tif (scope?.block !== parentCatch) {\n\t\t\t\t\t\t// Caught error is being shadowed\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tmessageId: \"caughtErrorShadowed\",\n\t\t\t\t\t\t\tnode: throwStatement,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag non-quoted property names in object literals.\n * @author Mathias Bynens <http://mathiasbynens.be/>\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst espree = require(\"espree\");\nconst astUtils = require(\"./utils/ast-utils\");\nconst keywords = require(\"./utils/keywords\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"quote-props\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/quote-props\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require quotes around object literal property names\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/quote-props\",\n\t\t},\n\n\t\tschema: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\t\"always\",\n\t\t\t\t\t\t\t\t\"as-needed\",\n\t\t\t\t\t\t\t\t\"consistent\",\n\t\t\t\t\t\t\t\t\"consistent-as-needed\",\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 1,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\t\"always\",\n\t\t\t\t\t\t\t\t\"as-needed\",\n\t\t\t\t\t\t\t\t\"consistent\",\n\t\t\t\t\t\t\t\t\"consistent-as-needed\",\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tkeywords: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tunnecessary: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnumbers: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 2,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tfixable: \"code\",\n\t\tmessages: {\n\t\t\trequireQuotesDueToReservedWord:\n\t\t\t\t\"Properties should be quoted as '{{property}}' is a reserved word.\",\n\t\t\tinconsistentlyQuotedProperty:\n\t\t\t\t\"Inconsistently quoted property '{{key}}' found.\",\n\t\t\tunnecessarilyQuotedProperty:\n\t\t\t\t\"Unnecessarily quoted property '{{property}}' found.\",\n\t\t\tunquotedReservedProperty:\n\t\t\t\t\"Unquoted reserved word '{{property}}' used as key.\",\n\t\t\tunquotedNumericProperty:\n\t\t\t\t\"Unquoted number literal '{{property}}' used as key.\",\n\t\t\tunquotedPropertyFound: \"Unquoted property '{{property}}' found.\",\n\t\t\tredundantQuoting:\n\t\t\t\t\"Properties shouldn't be quoted as all quotes are redundant.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst MODE = context.options[0],\n\t\t\tKEYWORDS = context.options[1] && context.options[1].keywords,\n\t\t\tCHECK_UNNECESSARY =\n\t\t\t\t!context.options[1] || context.options[1].unnecessary !== false,\n\t\t\tNUMBERS = context.options[1] && context.options[1].numbers,\n\t\t\tsourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Checks whether a certain string constitutes an ES3 token\n\t\t * @param {string} tokenStr The string to be checked.\n\t\t * @returns {boolean} `true` if it is an ES3 token.\n\t\t */\n\t\tfunction isKeyword(tokenStr) {\n\t\t\treturn keywords.includes(tokenStr);\n\t\t}\n\n\t\t/**\n\t\t * Checks if an espree-tokenized key has redundant quotes (i.e. whether quotes are unnecessary)\n\t\t * @param {string} rawKey The raw key value from the source\n\t\t * @param {espreeTokens} tokens The espree-tokenized node key\n\t\t * @param {boolean} [skipNumberLiterals=false] Indicates whether number literals should be checked\n\t\t * @returns {boolean} Whether or not a key has redundant quotes.\n\t\t * @private\n\t\t */\n\t\tfunction areQuotesRedundant(rawKey, tokens, skipNumberLiterals) {\n\t\t\treturn (\n\t\t\t\ttokens.length === 1 &&\n\t\t\t\ttokens[0].start === 0 &&\n\t\t\t\ttokens[0].end === rawKey.length &&\n\t\t\t\t([\"Identifier\", \"Keyword\", \"Null\", \"Boolean\"].includes(\n\t\t\t\t\ttokens[0].type,\n\t\t\t\t) ||\n\t\t\t\t\t(tokens[0].type === \"Numeric\" &&\n\t\t\t\t\t\t!skipNumberLiterals &&\n\t\t\t\t\t\tString(+tokens[0].value) === tokens[0].value))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Returns a string representation of a property node with quotes removed\n\t\t * @param {ASTNode} key Key AST Node, which may or may not be quoted\n\t\t * @returns {string} A replacement string for this property\n\t\t */\n\t\tfunction getUnquotedKey(key) {\n\t\t\treturn key.type === \"Identifier\" ? key.name : key.value;\n\t\t}\n\n\t\t/**\n\t\t * Returns a string representation of a property node with quotes added\n\t\t * @param {ASTNode} key Key AST Node, which may or may not be quoted\n\t\t * @returns {string} A replacement string for this property\n\t\t */\n\t\tfunction getQuotedKey(key) {\n\t\t\tif (key.type === \"Literal\" && typeof key.value === \"string\") {\n\t\t\t\t// If the key is already a string literal, don't replace the quotes with double quotes.\n\t\t\t\treturn sourceCode.getText(key);\n\t\t\t}\n\n\t\t\t// Otherwise, the key is either an identifier or a number literal.\n\t\t\treturn `\"${key.type === \"Identifier\" ? key.name : key.value}\"`;\n\t\t}\n\n\t\t/**\n\t\t * Ensures that a property's key is quoted only when necessary\n\t\t * @param {ASTNode} node Property AST node\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkUnnecessaryQuotes(node) {\n\t\t\tconst key = node.key;\n\n\t\t\tif (node.method || node.computed || node.shorthand) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (key.type === \"Literal\" && typeof key.value === \"string\") {\n\t\t\t\tlet tokens;\n\n\t\t\t\ttry {\n\t\t\t\t\ttokens = espree.tokenize(key.value);\n\t\t\t\t} catch {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (tokens.length !== 1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst isKeywordToken = isKeyword(tokens[0].value);\n\n\t\t\t\tif (isKeywordToken && KEYWORDS) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tCHECK_UNNECESSARY &&\n\t\t\t\t\tareQuotesRedundant(key.value, tokens, NUMBERS)\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unnecessarilyQuotedProperty\",\n\t\t\t\t\t\tdata: { property: key.value },\n\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\tfixer.replaceText(key, getUnquotedKey(key)),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tKEYWORDS &&\n\t\t\t\tkey.type === \"Identifier\" &&\n\t\t\t\tisKeyword(key.name)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unquotedReservedProperty\",\n\t\t\t\t\tdata: { property: key.name },\n\t\t\t\t\tfix: fixer => fixer.replaceText(key, getQuotedKey(key)),\n\t\t\t\t});\n\t\t\t} else if (\n\t\t\t\tNUMBERS &&\n\t\t\t\tkey.type === \"Literal\" &&\n\t\t\t\tastUtils.isNumericLiteral(key)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unquotedNumericProperty\",\n\t\t\t\t\tdata: { property: key.value },\n\t\t\t\t\tfix: fixer => fixer.replaceText(key, getQuotedKey(key)),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Ensures that a property's key is quoted\n\t\t * @param {ASTNode} node Property AST node\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkOmittedQuotes(node) {\n\t\t\tconst key = node.key;\n\n\t\t\tif (\n\t\t\t\t!node.method &&\n\t\t\t\t!node.computed &&\n\t\t\t\t!node.shorthand &&\n\t\t\t\t!(key.type === \"Literal\" && typeof key.value === \"string\")\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"unquotedPropertyFound\",\n\t\t\t\t\tdata: { property: key.name || key.value },\n\t\t\t\t\tfix: fixer => fixer.replaceText(key, getQuotedKey(key)),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Ensures that an object's keys are consistently quoted, optionally checks for redundancy of quotes\n\t\t * @param {ASTNode} node Property AST node\n\t\t * @param {boolean} checkQuotesRedundancy Whether to check quotes' redundancy\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkConsistency(node, checkQuotesRedundancy) {\n\t\t\tconst quotedProps = [],\n\t\t\t\tunquotedProps = [];\n\t\t\tlet keywordKeyName = null,\n\t\t\t\tnecessaryQuotes = false;\n\n\t\t\tnode.properties.forEach(property => {\n\t\t\t\tconst key = property.key;\n\n\t\t\t\tif (\n\t\t\t\t\t!key ||\n\t\t\t\t\tproperty.method ||\n\t\t\t\t\tproperty.computed ||\n\t\t\t\t\tproperty.shorthand\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (key.type === \"Literal\" && typeof key.value === \"string\") {\n\t\t\t\t\tquotedProps.push(property);\n\n\t\t\t\t\tif (checkQuotesRedundancy) {\n\t\t\t\t\t\tlet tokens;\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\ttokens = espree.tokenize(key.value);\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\tnecessaryQuotes = true;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnecessaryQuotes =\n\t\t\t\t\t\t\tnecessaryQuotes ||\n\t\t\t\t\t\t\t!areQuotesRedundant(key.value, tokens) ||\n\t\t\t\t\t\t\t(KEYWORDS && isKeyword(tokens[0].value));\n\t\t\t\t\t}\n\t\t\t\t} else if (\n\t\t\t\t\tKEYWORDS &&\n\t\t\t\t\tcheckQuotesRedundancy &&\n\t\t\t\t\tkey.type === \"Identifier\" &&\n\t\t\t\t\tisKeyword(key.name)\n\t\t\t\t) {\n\t\t\t\t\tunquotedProps.push(property);\n\t\t\t\t\tnecessaryQuotes = true;\n\t\t\t\t\tkeywordKeyName = key.name;\n\t\t\t\t} else {\n\t\t\t\t\tunquotedProps.push(property);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (\n\t\t\t\tcheckQuotesRedundancy &&\n\t\t\t\tquotedProps.length &&\n\t\t\t\t!necessaryQuotes\n\t\t\t) {\n\t\t\t\tquotedProps.forEach(property => {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: property,\n\t\t\t\t\t\tmessageId: \"redundantQuoting\",\n\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\tfixer.replaceText(\n\t\t\t\t\t\t\t\tproperty.key,\n\t\t\t\t\t\t\t\tgetUnquotedKey(property.key),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else if (unquotedProps.length && keywordKeyName) {\n\t\t\t\tunquotedProps.forEach(property => {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: property,\n\t\t\t\t\t\tmessageId: \"requireQuotesDueToReservedWord\",\n\t\t\t\t\t\tdata: { property: keywordKeyName },\n\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\tfixer.replaceText(\n\t\t\t\t\t\t\t\tproperty.key,\n\t\t\t\t\t\t\t\tgetQuotedKey(property.key),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else if (quotedProps.length && unquotedProps.length) {\n\t\t\t\tunquotedProps.forEach(property => {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: property,\n\t\t\t\t\t\tmessageId: \"inconsistentlyQuotedProperty\",\n\t\t\t\t\t\tdata: { key: property.key.name || property.key.value },\n\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\tfixer.replaceText(\n\t\t\t\t\t\t\t\tproperty.key,\n\t\t\t\t\t\t\t\tgetQuotedKey(property.key),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tProperty(node) {\n\t\t\t\tif (MODE === \"always\" || !MODE) {\n\t\t\t\t\tcheckOmittedQuotes(node);\n\t\t\t\t}\n\t\t\t\tif (MODE === \"as-needed\") {\n\t\t\t\t\tcheckUnnecessaryQuotes(node);\n\t\t\t\t}\n\t\t\t},\n\t\t\tObjectExpression(node) {\n\t\t\t\tif (MODE === \"consistent\") {\n\t\t\t\t\tcheckConsistency(node, false);\n\t\t\t\t}\n\t\t\t\tif (MODE === \"consistent-as-needed\") {\n\t\t\t\t\tcheckConsistency(node, true);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to choose between single and double quote marks\n * @author Matt DuVall <http://www.mattduvall.com/>, Brandon Payton\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Constants\n//------------------------------------------------------------------------------\n\nconst QUOTE_SETTINGS = {\n\tdouble: {\n\t\tquote: '\"',\n\t\talternateQuote: \"'\",\n\t\tdescription: \"doublequote\",\n\t},\n\tsingle: {\n\t\tquote: \"'\",\n\t\talternateQuote: '\"',\n\t\tdescription: \"singlequote\",\n\t},\n\tbacktick: {\n\t\tquote: \"`\",\n\t\talternateQuote: '\"',\n\t\tdescription: \"backtick\",\n\t},\n};\n\n// An unescaped newline is a newline preceded by an even number of backslashes.\nconst UNESCAPED_LINEBREAK_PATTERN = new RegExp(\n\tString.raw`(^|[^\\\\])(\\\\\\\\)*[${Array.from(astUtils.LINEBREAKS).join(\"\")}]`,\n\t\"u\",\n);\n\n/**\n * Switches quoting of javascript string between ' \" and `\n * escaping and unescaping as necessary.\n * Only escaping of the minimal set of characters is changed.\n * Note: escaping of newlines when switching from backtick to other quotes is not handled.\n * @param {string} str A string to convert.\n * @returns {string} The string with changed quotes.\n * @private\n */\nQUOTE_SETTINGS.double.convert =\n\tQUOTE_SETTINGS.single.convert =\n\tQUOTE_SETTINGS.backtick.convert =\n\t\tfunction (str) {\n\t\t\tconst newQuote = this.quote;\n\t\t\tconst oldQuote = str[0];\n\n\t\t\tif (newQuote === oldQuote) {\n\t\t\t\treturn str;\n\t\t\t}\n\t\t\treturn (\n\t\t\t\tnewQuote +\n\t\t\t\tstr\n\t\t\t\t\t.slice(1, -1)\n\t\t\t\t\t.replace(\n\t\t\t\t\t\t/\\\\(\\$\\{|\\r\\n?|\\n|.)|[\"'`]|\\$\\{|(\\r\\n?|\\n)/gu,\n\t\t\t\t\t\t(match, escaped, newline) => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tescaped === oldQuote ||\n\t\t\t\t\t\t\t\t(oldQuote === \"`\" && escaped === \"${\")\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn escaped; // unescape\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tmatch === newQuote ||\n\t\t\t\t\t\t\t\t(newQuote === \"`\" && match === \"${\")\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn `\\\\${match}`; // escape\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (newline && oldQuote === \"`\") {\n\t\t\t\t\t\t\t\treturn \"\\\\n\"; // escape newlines\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn match;\n\t\t\t\t\t\t},\n\t\t\t\t\t) +\n\t\t\t\tnewQuote\n\t\t\t);\n\t\t};\n\nconst AVOID_ESCAPE = \"avoid-escape\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"quotes\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/quotes\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce the consistent use of either backticks, double, or single quotes\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/quotes\",\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"single\", \"double\", \"backtick\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: [\"avoid-escape\"],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tavoidEscape: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tallowTemplateLiterals: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\twrongQuotes: \"Strings must use {{description}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst quoteOption = context.options[0],\n\t\t\tsettings = QUOTE_SETTINGS[quoteOption || \"double\"],\n\t\t\toptions = context.options[1],\n\t\t\tallowTemplateLiterals =\n\t\t\t\toptions && options.allowTemplateLiterals === true,\n\t\t\tsourceCode = context.sourceCode;\n\t\tlet avoidEscape = options && options.avoidEscape === true;\n\n\t\t// deprecated\n\t\tif (options === AVOID_ESCAPE) {\n\t\t\tavoidEscape = true;\n\t\t}\n\n\t\t/**\n\t\t * Determines if a given node is part of JSX syntax.\n\t\t *\n\t\t * This function returns `true` in the following cases:\n\t\t *\n\t\t * - `<div className=\"foo\"></div>` ... If the literal is an attribute value, the parent of the literal is `JSXAttribute`.\n\t\t * - `<div>foo</div>` ... If the literal is a text content, the parent of the literal is `JSXElement`.\n\t\t * - `<>foo</>` ... If the literal is a text content, the parent of the literal is `JSXFragment`.\n\t\t *\n\t\t * In particular, this function returns `false` in the following cases:\n\t\t *\n\t\t * - `<div className={\"foo\"}></div>`\n\t\t * - `<div>{\"foo\"}</div>`\n\t\t *\n\t\t * In both cases, inside of the braces is handled as normal JavaScript.\n\t\t * The braces are `JSXExpressionContainer` nodes.\n\t\t * @param {ASTNode} node The Literal node to check.\n\t\t * @returns {boolean} True if the node is a part of JSX, false if not.\n\t\t * @private\n\t\t */\n\t\tfunction isJSXLiteral(node) {\n\t\t\treturn (\n\t\t\t\tnode.parent.type === \"JSXAttribute\" ||\n\t\t\t\tnode.parent.type === \"JSXElement\" ||\n\t\t\t\tnode.parent.type === \"JSXFragment\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether or not a given node is a directive.\n\t\t * The directive is a `ExpressionStatement` which has only a string literal not surrounded by\n\t\t * parentheses.\n\t\t * @param {ASTNode} node A node to check.\n\t\t * @returns {boolean} Whether or not the node is a directive.\n\t\t * @private\n\t\t */\n\t\tfunction isDirective(node) {\n\t\t\treturn (\n\t\t\t\tnode.type === \"ExpressionStatement\" &&\n\t\t\t\tnode.expression.type === \"Literal\" &&\n\t\t\t\ttypeof node.expression.value === \"string\" &&\n\t\t\t\t!astUtils.isParenthesised(sourceCode, node.expression)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a specified node is either part of, or immediately follows a (possibly empty) directive prologue.\n\t\t * @see {@link http://www.ecma-international.org/ecma-262/6.0/#sec-directive-prologues-and-the-use-strict-directive}\n\t\t * @param {ASTNode} node A node to check.\n\t\t * @returns {boolean} Whether a specified node is either part of, or immediately follows a (possibly empty) directive prologue.\n\t\t * @private\n\t\t */\n\t\tfunction isExpressionInOrJustAfterDirectivePrologue(node) {\n\t\t\tif (!astUtils.isTopLevelExpressionStatement(node.parent)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst block = node.parent.parent;\n\n\t\t\t// Check the node is at a prologue.\n\t\t\tfor (let i = 0; i < block.body.length; ++i) {\n\t\t\t\tconst statement = block.body[i];\n\n\t\t\t\tif (statement === node.parent) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (!isDirective(statement)) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether or not a given node is allowed as non backtick.\n\t\t * @param {ASTNode} node A node to check.\n\t\t * @returns {boolean} Whether or not the node is allowed as non backtick.\n\t\t * @private\n\t\t */\n\t\tfunction isAllowedAsNonBacktick(node) {\n\t\t\tconst parent = node.parent;\n\n\t\t\tswitch (parent.type) {\n\t\t\t\t// Directive Prologues.\n\t\t\t\tcase \"ExpressionStatement\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!astUtils.isParenthesised(sourceCode, node) &&\n\t\t\t\t\t\tisExpressionInOrJustAfterDirectivePrologue(node)\n\t\t\t\t\t);\n\n\t\t\t\t// LiteralPropertyName.\n\t\t\t\tcase \"Property\":\n\t\t\t\tcase \"PropertyDefinition\":\n\t\t\t\tcase \"MethodDefinition\":\n\t\t\t\t\treturn parent.key === node && !parent.computed;\n\n\t\t\t\t// ModuleSpecifier.\n\t\t\t\tcase \"ImportDeclaration\":\n\t\t\t\tcase \"ExportNamedDeclaration\":\n\t\t\t\t\treturn parent.source === node;\n\n\t\t\t\t// ModuleExportName or ModuleSpecifier.\n\t\t\t\tcase \"ExportAllDeclaration\":\n\t\t\t\t\treturn parent.exported === node || parent.source === node;\n\n\t\t\t\t// ModuleExportName.\n\t\t\t\tcase \"ImportSpecifier\":\n\t\t\t\t\treturn parent.imported === node;\n\n\t\t\t\t// ModuleExportName.\n\t\t\t\tcase \"ExportSpecifier\":\n\t\t\t\t\treturn parent.local === node || parent.exported === node;\n\n\t\t\t\t// Others don't allow.\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks whether or not a given TemplateLiteral node is actually using any of the special features provided by template literal strings.\n\t\t * @param {ASTNode} node A TemplateLiteral node to check.\n\t\t * @returns {boolean} Whether or not the TemplateLiteral node is using any of the special features provided by template literal strings.\n\t\t * @private\n\t\t */\n\t\tfunction isUsingFeatureOfTemplateLiteral(node) {\n\t\t\tconst hasTag =\n\t\t\t\tnode.parent.type === \"TaggedTemplateExpression\" &&\n\t\t\t\tnode === node.parent.quasi;\n\n\t\t\tif (hasTag) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst hasStringInterpolation = node.expressions.length > 0;\n\n\t\t\tif (hasStringInterpolation) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst isMultilineString =\n\t\t\t\tnode.quasis.length >= 1 &&\n\t\t\t\tUNESCAPED_LINEBREAK_PATTERN.test(node.quasis[0].value.raw);\n\n\t\t\tif (isMultilineString) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\treturn {\n\t\t\tLiteral(node) {\n\t\t\t\tconst val = node.value,\n\t\t\t\t\trawVal = node.raw;\n\n\t\t\t\tif (settings && typeof val === \"string\") {\n\t\t\t\t\tlet isValid =\n\t\t\t\t\t\t(quoteOption === \"backtick\" &&\n\t\t\t\t\t\t\tisAllowedAsNonBacktick(node)) ||\n\t\t\t\t\t\tisJSXLiteral(node) ||\n\t\t\t\t\t\tastUtils.isSurroundedBy(rawVal, settings.quote);\n\n\t\t\t\t\tif (!isValid && avoidEscape) {\n\t\t\t\t\t\tisValid =\n\t\t\t\t\t\t\tastUtils.isSurroundedBy(\n\t\t\t\t\t\t\t\trawVal,\n\t\t\t\t\t\t\t\tsettings.alternateQuote,\n\t\t\t\t\t\t\t) && rawVal.includes(settings.quote);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!isValid) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"wrongQuotes\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tdescription: settings.description,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tquoteOption === \"backtick\" &&\n\t\t\t\t\t\t\t\t\tastUtils.hasOctalOrNonOctalDecimalEscapeSequence(\n\t\t\t\t\t\t\t\t\t\trawVal,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t * An octal or non-octal decimal escape sequence in a template literal would\n\t\t\t\t\t\t\t\t\t * produce syntax error, even in non-strict mode.\n\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tsettings.convert(node.raw),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tTemplateLiteral(node) {\n\t\t\t\t// Don't throw an error if backticks are expected or a template literal feature is in use.\n\t\t\t\tif (\n\t\t\t\t\tallowTemplateLiterals ||\n\t\t\t\t\tquoteOption === \"backtick\" ||\n\t\t\t\t\tisUsingFeatureOfTemplateLiteral(node)\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"wrongQuotes\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tdescription: settings.description,\n\t\t\t\t\t},\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tastUtils.isTopLevelExpressionStatement(\n\t\t\t\t\t\t\t\tnode.parent,\n\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t!astUtils.isParenthesised(sourceCode, node)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * TemplateLiterals aren't actually directives, but fixing them might turn\n\t\t\t\t\t\t\t * them into directives and change the behavior of the code.\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tsettings.convert(sourceCode.getText(node)),\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag use of parseInt without a radix argument\n * @author James Allardice\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Variable} Variable */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst validRadixValues = new Set(\n\tArray.from({ length: 37 - 2 }, (_, index) => index + 2),\n);\n\n/**\n * Checks whether a given variable is shadowed or not.\n * @param {Variable} variable A variable to check.\n * @returns {boolean} `true` if the variable is shadowed.\n */\nfunction isShadowed(variable) {\n\treturn variable.defs.length >= 1;\n}\n\n/**\n * Checks whether a given node is a MemberExpression of `parseInt` method or not.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} `true` if the node is a MemberExpression of `parseInt`\n *      method.\n */\nfunction isParseIntMethod(node) {\n\treturn (\n\t\tnode.type === \"MemberExpression\" &&\n\t\t!node.computed &&\n\t\tnode.property.type === \"Identifier\" &&\n\t\tnode.property.name === \"parseInt\"\n\t);\n}\n\n/**\n * Checks whether a given node is a valid value of radix or not.\n *\n * The following values are invalid.\n *\n * - A literal except integers between 2 and 36.\n * - undefined.\n * @param {ASTNode} radix A node of radix to check.\n * @returns {boolean} `true` if the node is valid.\n */\nfunction isValidRadix(radix) {\n\treturn !(\n\t\t(radix.type === \"Literal\" && !validRadixValues.has(radix.value)) ||\n\t\t(radix.type === \"Identifier\" && radix.name === \"undefined\")\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce the use of the radix argument when using `parseInt()`\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/radix\",\n\t\t},\n\n\t\thasSuggestions: true,\n\n\t\tschema: [\n\t\t\t// deprecated\n\t\t\t{\n\t\t\t\tenum: [\"always\", \"as-needed\"],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tmissingParameters: \"Missing parameters.\",\n\t\t\tmissingRadix: \"Missing radix parameter.\",\n\t\t\tinvalidRadix:\n\t\t\t\t\"Invalid radix parameter, must be an integer between 2 and 36.\",\n\t\t\taddRadixParameter10:\n\t\t\t\t\"Add radix parameter `10` for parsing decimal numbers.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Checks the arguments of a given CallExpression node and reports it if it\n\t\t * offends this rule.\n\t\t * @param {ASTNode} node A CallExpression node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkArguments(node) {\n\t\t\tconst args = node.arguments;\n\n\t\t\tswitch (args.length) {\n\t\t\t\tcase 0:\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"missingParameters\",\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1:\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"missingRadix\",\n\t\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmessageId: \"addRadixParameter10\",\n\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\tconst tokens = sourceCode.getTokens(node);\n\t\t\t\t\t\t\t\t\tconst lastToken = tokens.at(-1); // Parenthesis.\n\t\t\t\t\t\t\t\t\tconst secondToLastToken = tokens.at(-2); // May or may not be a comma.\n\t\t\t\t\t\t\t\t\tconst hasTrailingComma =\n\t\t\t\t\t\t\t\t\t\tsecondToLastToken.type ===\n\t\t\t\t\t\t\t\t\t\t\t\"Punctuator\" &&\n\t\t\t\t\t\t\t\t\t\tsecondToLastToken.value === \",\";\n\n\t\t\t\t\t\t\t\t\treturn fixer.insertTextBefore(\n\t\t\t\t\t\t\t\t\t\tlastToken,\n\t\t\t\t\t\t\t\t\t\thasTrailingComma ? \" 10,\" : \", 10\",\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif (!isValidRadix(args[1])) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"invalidRadix\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\t\t\t\tlet variable;\n\n\t\t\t\t// Check `parseInt()`\n\t\t\t\tvariable = astUtils.getVariableByName(scope, \"parseInt\");\n\t\t\t\tif (variable && !isShadowed(variable)) {\n\t\t\t\t\tvariable.references.forEach(reference => {\n\t\t\t\t\t\tconst idNode = reference.identifier;\n\n\t\t\t\t\t\tif (astUtils.isCallee(idNode)) {\n\t\t\t\t\t\t\tcheckArguments(idNode.parent);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Check `Number.parseInt()`\n\t\t\t\tvariable = astUtils.getVariableByName(scope, \"Number\");\n\t\t\t\tif (variable && !isShadowed(variable)) {\n\t\t\t\t\tvariable.references.forEach(reference => {\n\t\t\t\t\t\tconst parentNode = reference.identifier.parent;\n\t\t\t\t\t\tconst maybeCallee =\n\t\t\t\t\t\t\tparentNode.parent.type === \"ChainExpression\"\n\t\t\t\t\t\t\t\t? parentNode.parent\n\t\t\t\t\t\t\t\t: parentNode;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tisParseIntMethod(parentNode) &&\n\t\t\t\t\t\t\tastUtils.isCallee(maybeCallee)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcheckArguments(maybeCallee.parent);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview disallow assignments that can lead to race conditions due to usage of `await` or `yield`\n * @author Teddy Katz\n * @author Toru Nagashima\n */\n\"use strict\";\n\n/**\n * Make the map from identifiers to each reference.\n * @param {escope.Scope} scope The scope to get references.\n * @param {Map<Identifier, escope.Reference>} [outReferenceMap] The map from identifier nodes to each reference object.\n * @returns {Map<Identifier, escope.Reference>} `referenceMap`.\n */\nfunction createReferenceMap(scope, outReferenceMap = new Map()) {\n\tfor (const reference of scope.references) {\n\t\tif (reference.resolved === null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\toutReferenceMap.set(reference.identifier, reference);\n\t}\n\tfor (const childScope of scope.childScopes) {\n\t\tif (childScope.type !== \"function\") {\n\t\t\tcreateReferenceMap(childScope, outReferenceMap);\n\t\t}\n\t}\n\n\treturn outReferenceMap;\n}\n\n/**\n * Get `reference.writeExpr` of a given reference.\n * If it's the read reference of MemberExpression in LHS, returns RHS in order to address `a.b = await a`\n * @param {escope.Reference} reference The reference to get.\n * @returns {Expression|null} The `reference.writeExpr`.\n */\nfunction getWriteExpr(reference) {\n\tif (reference.writeExpr) {\n\t\treturn reference.writeExpr;\n\t}\n\tlet node = reference.identifier;\n\n\twhile (node) {\n\t\tconst t = node.parent.type;\n\n\t\tif (t === \"AssignmentExpression\" && node.parent.left === node) {\n\t\t\treturn node.parent.right;\n\t\t}\n\t\tif (t === \"MemberExpression\" && node.parent.object === node) {\n\t\t\tnode = node.parent;\n\t\t\tcontinue;\n\t\t}\n\n\t\tbreak;\n\t}\n\n\treturn null;\n}\n\n/**\n * Checks if an expression is a variable that can only be observed within the given function.\n * @param {Variable|null} variable The variable to check\n * @param {boolean} isMemberAccess If `true` then this is a member access.\n * @returns {boolean} `true` if the variable is local to the given function, and is never referenced in a closure.\n */\nfunction isLocalVariableWithoutEscape(variable, isMemberAccess) {\n\tif (!variable) {\n\t\treturn false; // A global variable which was not defined.\n\t}\n\n\t// If the reference is a property access and the variable is a parameter, it handles the variable is not local.\n\tif (isMemberAccess && variable.defs.some(d => d.type === \"Parameter\")) {\n\t\treturn false;\n\t}\n\n\tconst functionScope = variable.scope.variableScope;\n\n\treturn variable.references.every(\n\t\treference => reference.from.variableScope === functionScope,\n\t);\n}\n\n/**\n * Represents segment information.\n */\nclass SegmentInfo {\n\tconstructor() {\n\t\tthis.info = new WeakMap();\n\t}\n\n\t/**\n\t * Initialize the segment information.\n\t * @param {PathSegment} segment The segment to initialize.\n\t * @returns {void}\n\t */\n\tinitialize(segment) {\n\t\tconst outdatedReadVariables = new Set();\n\t\tconst freshReadVariables = new Set();\n\n\t\tfor (const prevSegment of segment.prevSegments) {\n\t\t\tconst info = this.info.get(prevSegment);\n\n\t\t\tif (info) {\n\t\t\t\tinfo.outdatedReadVariables.forEach(\n\t\t\t\t\tSet.prototype.add,\n\t\t\t\t\toutdatedReadVariables,\n\t\t\t\t);\n\t\t\t\tinfo.freshReadVariables.forEach(\n\t\t\t\t\tSet.prototype.add,\n\t\t\t\t\tfreshReadVariables,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tthis.info.set(segment, { outdatedReadVariables, freshReadVariables });\n\t}\n\n\t/**\n\t * Mark a given variable as read on given segments.\n\t * @param {PathSegment[]} segments The segments that it read the variable on.\n\t * @param {Variable} variable The variable to be read.\n\t * @returns {void}\n\t */\n\tmarkAsRead(segments, variable) {\n\t\tfor (const segment of segments) {\n\t\t\tconst info = this.info.get(segment);\n\n\t\t\tif (info) {\n\t\t\t\tinfo.freshReadVariables.add(variable);\n\n\t\t\t\t// If a variable is freshly read again, then it's no more out-dated.\n\t\t\t\tinfo.outdatedReadVariables.delete(variable);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Move `freshReadVariables` to `outdatedReadVariables`.\n\t * @param {PathSegment[]} segments The segments to process.\n\t * @returns {void}\n\t */\n\tmakeOutdated(segments) {\n\t\tfor (const segment of segments) {\n\t\t\tconst info = this.info.get(segment);\n\n\t\t\tif (info) {\n\t\t\t\tinfo.freshReadVariables.forEach(\n\t\t\t\t\tSet.prototype.add,\n\t\t\t\t\tinfo.outdatedReadVariables,\n\t\t\t\t);\n\t\t\t\tinfo.freshReadVariables.clear();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Check if a given variable is outdated on the current segments.\n\t * @param {PathSegment[]} segments The current segments.\n\t * @param {Variable} variable The variable to check.\n\t * @returns {boolean} `true` if the variable is outdated on the segments.\n\t */\n\tisOutdated(segments, variable) {\n\t\tfor (const segment of segments) {\n\t\t\tconst info = this.info.get(segment);\n\n\t\t\tif (info && info.outdatedReadVariables.has(variable)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow assignments that can lead to race conditions due to usage of `await` or `yield`\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/require-atomic-updates\",\n\t\t},\n\n\t\tfixable: null,\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tallowProperties: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tnonAtomicUpdate:\n\t\t\t\t\"Possible race condition: `{{value}}` might be reassigned based on an outdated value of `{{value}}`.\",\n\t\t\tnonAtomicObjectUpdate:\n\t\t\t\t\"Possible race condition: `{{value}}` might be assigned based on an outdated state of `{{object}}`.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ allowProperties }] = context.options;\n\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst assignmentReferences = new Map();\n\t\tconst segmentInfo = new SegmentInfo();\n\t\tlet stack = null;\n\n\t\treturn {\n\t\t\tonCodePathStart(codePath, node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\t\t\t\tconst shouldVerify =\n\t\t\t\t\tscope.type === \"function\" &&\n\t\t\t\t\t(scope.block.async || scope.block.generator);\n\n\t\t\t\tstack = {\n\t\t\t\t\tupper: stack,\n\t\t\t\t\tcodePath,\n\t\t\t\t\treferenceMap: shouldVerify\n\t\t\t\t\t\t? createReferenceMap(scope)\n\t\t\t\t\t\t: null,\n\t\t\t\t\tcurrentSegments: new Set(),\n\t\t\t\t};\n\t\t\t},\n\t\t\tonCodePathEnd() {\n\t\t\t\tstack = stack.upper;\n\t\t\t},\n\n\t\t\t// Initialize the segment information.\n\t\t\tonCodePathSegmentStart(segment) {\n\t\t\t\tsegmentInfo.initialize(segment);\n\t\t\t\tstack.currentSegments.add(segment);\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentStart(segment) {\n\t\t\t\tstack.currentSegments.add(segment);\n\t\t\t},\n\n\t\t\tonUnreachableCodePathSegmentEnd(segment) {\n\t\t\t\tstack.currentSegments.delete(segment);\n\t\t\t},\n\n\t\t\tonCodePathSegmentEnd(segment) {\n\t\t\t\tstack.currentSegments.delete(segment);\n\t\t\t},\n\n\t\t\t// Handle references to prepare verification.\n\t\t\tIdentifier(node) {\n\t\t\t\tconst { referenceMap } = stack;\n\t\t\t\tconst reference = referenceMap && referenceMap.get(node);\n\n\t\t\t\t// Ignore if this is not a valid variable reference.\n\t\t\t\tif (!reference) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst variable = reference.resolved;\n\t\t\t\tconst writeExpr = getWriteExpr(reference);\n\t\t\t\tconst isMemberAccess =\n\t\t\t\t\treference.identifier.parent.type === \"MemberExpression\";\n\n\t\t\t\t// Add a fresh read variable.\n\t\t\t\tif (\n\t\t\t\t\treference.isRead() &&\n\t\t\t\t\t!(writeExpr && writeExpr.parent.operator === \"=\")\n\t\t\t\t) {\n\t\t\t\t\tsegmentInfo.markAsRead(stack.currentSegments, variable);\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * Register the variable to verify after ESLint traversed the `writeExpr` node\n\t\t\t\t * if this reference is an assignment to a variable which is referred from other closure.\n\t\t\t\t */\n\t\t\t\tif (\n\t\t\t\t\twriteExpr &&\n\t\t\t\t\twriteExpr.parent.right === writeExpr && // \u2190 exclude variable declarations.\n\t\t\t\t\t!isLocalVariableWithoutEscape(variable, isMemberAccess)\n\t\t\t\t) {\n\t\t\t\t\tlet refs = assignmentReferences.get(writeExpr);\n\n\t\t\t\t\tif (!refs) {\n\t\t\t\t\t\trefs = [];\n\t\t\t\t\t\tassignmentReferences.set(writeExpr, refs);\n\t\t\t\t\t}\n\n\t\t\t\t\trefs.push(reference);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * Verify assignments.\n\t\t\t * If the reference exists in `outdatedReadVariables` list, report it.\n\t\t\t */\n\t\t\t\":expression:exit\"(node) {\n\t\t\t\t// referenceMap exists if this is in a resumable function scope.\n\t\t\t\tif (!stack.referenceMap) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Mark the read variables on this code path as outdated.\n\t\t\t\tif (\n\t\t\t\t\tnode.type === \"AwaitExpression\" ||\n\t\t\t\t\tnode.type === \"YieldExpression\"\n\t\t\t\t) {\n\t\t\t\t\tsegmentInfo.makeOutdated(stack.currentSegments);\n\t\t\t\t}\n\n\t\t\t\t// Verify.\n\t\t\t\tconst references = assignmentReferences.get(node);\n\n\t\t\t\tif (references) {\n\t\t\t\t\tassignmentReferences.delete(node);\n\n\t\t\t\t\tfor (const reference of references) {\n\t\t\t\t\t\tconst variable = reference.resolved;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tsegmentInfo.isOutdated(\n\t\t\t\t\t\t\t\tstack.currentSegments,\n\t\t\t\t\t\t\t\tvariable,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (node.parent.left === reference.identifier) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode: node.parent,\n\t\t\t\t\t\t\t\t\tmessageId: \"nonAtomicUpdate\",\n\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\tvalue: variable.name,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else if (!allowProperties) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode: node.parent,\n\t\t\t\t\t\t\t\t\tmessageId: \"nonAtomicObjectUpdate\",\n\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\tvalue: sourceCode.getText(\n\t\t\t\t\t\t\t\t\t\t\tnode.parent.left,\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tobject: variable.name,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to disallow async functions which have no `await` expression.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Capitalize the 1st letter of the given text.\n * @param {string} text The text to capitalize.\n * @returns {string} The text that the 1st letter was capitalized.\n */\nfunction capitalizeFirstLetter(text) {\n\treturn text[0].toUpperCase() + text.slice(1);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Disallow async functions which have no `await` expression\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/require-await\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tmissingAwait: \"{{name}} has no 'await' expression.\",\n\t\t\tremoveAsync: \"Remove 'async'.\",\n\t\t},\n\n\t\thasSuggestions: true,\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tlet scopeInfo = null;\n\n\t\t/**\n\t\t * Push the scope info object to the stack.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction enterFunction() {\n\t\t\tscopeInfo = {\n\t\t\t\tupper: scopeInfo,\n\t\t\t\thasAwait: false,\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Pop the top scope info object from the stack.\n\t\t * Also, it reports the function if needed.\n\t\t * @param {ASTNode} node The node to report.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction exitFunction(node) {\n\t\t\tif (\n\t\t\t\t!node.generator &&\n\t\t\t\tnode.async &&\n\t\t\t\t!scopeInfo.hasAwait &&\n\t\t\t\t!astUtils.isEmptyFunction(node)\n\t\t\t) {\n\t\t\t\t/*\n\t\t\t\t * If the function belongs to a method definition or\n\t\t\t\t * property, then the function's range may not include the\n\t\t\t\t * `async` keyword and we should look at the parent instead.\n\t\t\t\t */\n\t\t\t\tconst nodeWithAsyncKeyword =\n\t\t\t\t\t(node.parent.type === \"MethodDefinition\" &&\n\t\t\t\t\t\tnode.parent.value === node) ||\n\t\t\t\t\t(node.parent.type === \"Property\" &&\n\t\t\t\t\t\tnode.parent.method &&\n\t\t\t\t\t\tnode.parent.value === node)\n\t\t\t\t\t\t? node.parent\n\t\t\t\t\t\t: node;\n\n\t\t\t\tconst asyncToken = sourceCode.getFirstToken(\n\t\t\t\t\tnodeWithAsyncKeyword,\n\t\t\t\t\ttoken => token.value === \"async\",\n\t\t\t\t);\n\t\t\t\tconst asyncRange = [\n\t\t\t\t\tasyncToken.range[0],\n\t\t\t\t\tsourceCode.getTokenAfter(asyncToken, {\n\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t}).range[0],\n\t\t\t\t];\n\n\t\t\t\t/*\n\t\t\t\t * Removing the `async` keyword can cause parsing errors if the current\n\t\t\t\t * statement is relying on automatic semicolon insertion. If ASI is currently\n\t\t\t\t * being used, then we should replace the `async` keyword with a semicolon.\n\t\t\t\t */\n\t\t\t\tconst nextToken = sourceCode.getTokenAfter(asyncToken);\n\t\t\t\tconst addSemiColon =\n\t\t\t\t\t((astUtils.isOpeningParenToken(nextToken) &&\n\t\t\t\t\t\tastUtils.isStartOfExpressionStatement(\n\t\t\t\t\t\t\tnodeWithAsyncKeyword,\n\t\t\t\t\t\t)) ||\n\t\t\t\t\t\t(nodeWithAsyncKeyword.type === \"MethodDefinition\" &&\n\t\t\t\t\t\t\tastUtils.canContinueExpressionInClassBody(\n\t\t\t\t\t\t\t\tnextToken,\n\t\t\t\t\t\t\t))) &&\n\t\t\t\t\tastUtils.needsPrecedingSemicolon(\n\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\tnodeWithAsyncKeyword,\n\t\t\t\t\t);\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: astUtils.getFunctionHeadLoc(node, sourceCode),\n\t\t\t\t\tmessageId: \"missingAwait\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tname: capitalizeFirstLetter(\n\t\t\t\t\t\t\tastUtils.getFunctionNameWithKind(node),\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmessageId: \"removeAsync\",\n\t\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\t\tfixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\tasyncRange,\n\t\t\t\t\t\t\t\t\taddSemiColon ? \";\" : \"\",\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tscopeInfo = scopeInfo.upper;\n\t\t}\n\n\t\treturn {\n\t\t\tFunctionDeclaration: enterFunction,\n\t\t\tFunctionExpression: enterFunction,\n\t\t\tArrowFunctionExpression: enterFunction,\n\t\t\t\"FunctionDeclaration:exit\": exitFunction,\n\t\t\t\"FunctionExpression:exit\": exitFunction,\n\t\t\t\"ArrowFunctionExpression:exit\": exitFunction,\n\n\t\t\tAwaitExpression() {\n\t\t\t\tif (!scopeInfo) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tscopeInfo.hasAwait = true;\n\t\t\t},\n\t\t\tForOfStatement(node) {\n\t\t\t\tif (!scopeInfo) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (node.await) {\n\t\t\t\t\tscopeInfo.hasAwait = true;\n\t\t\t\t}\n\t\t\t},\n\t\t\tVariableDeclaration(node) {\n\t\t\t\tif (!scopeInfo) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (node.kind === \"await using\") {\n\t\t\t\t\tscopeInfo.hasAwait = true;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce the use of `u` or `v` flag on regular expressions.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst {\n\tCALL,\n\tCONSTRUCT,\n\tReferenceTracker,\n\tgetStringIfConstant,\n} = require(\"@eslint-community/eslint-utils\");\nconst astUtils = require(\"./utils/ast-utils.js\");\nconst { isValidWithUnicodeFlag } = require(\"./utils/regular-expressions\");\n\n/**\n * Checks whether the flag configuration should be treated as a missing flag.\n * @param {\"u\"|\"v\"|undefined} requireFlag A particular flag to require\n * @param {string} flags The regex flags\n * @returns {boolean} Whether the flag configuration results in a missing flag.\n */\nfunction checkFlags(requireFlag, flags) {\n\tlet missingFlag;\n\n\tif (requireFlag === \"v\") {\n\t\tmissingFlag = !flags.includes(\"v\");\n\t} else if (requireFlag === \"u\") {\n\t\tmissingFlag = !flags.includes(\"u\");\n\t} else {\n\t\tmissingFlag = !flags.includes(\"u\") && !flags.includes(\"v\");\n\t}\n\n\treturn missingFlag;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [{}],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce the use of `u` or `v` flag on regular expressions\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/require-unicode-regexp\",\n\t\t},\n\n\t\thasSuggestions: true,\n\n\t\tmessages: {\n\t\t\taddUFlag: \"Add the 'u' flag.\",\n\t\t\taddVFlag: \"Add the 'v' flag.\",\n\t\t\trequireUFlag: \"Use the 'u' flag.\",\n\t\t\trequireVFlag: \"Use the 'v' flag.\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\trequireFlag: {\n\t\t\t\t\t\tenum: [\"u\", \"v\"],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tconst [{ requireFlag }] = context.options;\n\n\t\treturn {\n\t\t\t\"Literal[regex]\"(node) {\n\t\t\t\tconst flags = node.regex.flags || \"\";\n\n\t\t\t\tconst missingFlag = checkFlags(requireFlag, flags);\n\n\t\t\t\tif (missingFlag) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tmessageId:\n\t\t\t\t\t\t\trequireFlag === \"v\"\n\t\t\t\t\t\t\t\t? \"requireVFlag\"\n\t\t\t\t\t\t\t\t: \"requireUFlag\",\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tsuggest: isValidWithUnicodeFlag(\n\t\t\t\t\t\t\tcontext.languageOptions.ecmaVersion,\n\t\t\t\t\t\t\tnode.regex.pattern,\n\t\t\t\t\t\t\trequireFlag,\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\t\t\tconst replaceFlag =\n\t\t\t\t\t\t\t\t\t\t\t\trequireFlag ?? \"u\";\n\t\t\t\t\t\t\t\t\t\t\tconst regex =\n\t\t\t\t\t\t\t\t\t\t\t\tsourceCode.getText(node);\n\t\t\t\t\t\t\t\t\t\t\tconst slashPos =\n\t\t\t\t\t\t\t\t\t\t\t\tregex.lastIndexOf(\"/\");\n\n\t\t\t\t\t\t\t\t\t\t\tif (requireFlag) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst flag =\n\t\t\t\t\t\t\t\t\t\t\t\t\trequireFlag === \"u\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"v\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"u\";\n\n\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\tregex.includes(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tflag,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tslashPos,\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tregex.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tslashPos,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tregex\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.slice(slashPos)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.replace(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflag,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trequireFlag,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\treturn fixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t\t\t\treplaceFlag,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tmessageId:\n\t\t\t\t\t\t\t\t\t\t\trequireFlag === \"v\"\n\t\t\t\t\t\t\t\t\t\t\t\t? \"addVFlag\"\n\t\t\t\t\t\t\t\t\t\t\t\t: \"addUFlag\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t: null,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tProgram(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\t\t\t\tconst tracker = new ReferenceTracker(scope);\n\t\t\t\tconst trackMap = {\n\t\t\t\t\tRegExp: { [CALL]: true, [CONSTRUCT]: true },\n\t\t\t\t};\n\n\t\t\t\tfor (const { node: refNode } of tracker.iterateGlobalReferences(\n\t\t\t\t\ttrackMap,\n\t\t\t\t)) {\n\t\t\t\t\tconst [patternNode, flagsNode] = refNode.arguments;\n\n\t\t\t\t\tif (patternNode && patternNode.type === \"SpreadElement\") {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst pattern = getStringIfConstant(patternNode, scope);\n\t\t\t\t\tconst flags = getStringIfConstant(flagsNode, scope);\n\n\t\t\t\t\tlet missingFlag = !flagsNode;\n\n\t\t\t\t\tif (typeof flags === \"string\") {\n\t\t\t\t\t\tmissingFlag = checkFlags(requireFlag, flags);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (missingFlag) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tmessageId:\n\t\t\t\t\t\t\t\trequireFlag === \"v\"\n\t\t\t\t\t\t\t\t\t? \"requireVFlag\"\n\t\t\t\t\t\t\t\t\t: \"requireUFlag\",\n\t\t\t\t\t\t\tnode: refNode,\n\t\t\t\t\t\t\tsuggest:\n\t\t\t\t\t\t\t\ttypeof pattern === \"string\" &&\n\t\t\t\t\t\t\t\tisValidWithUnicodeFlag(\n\t\t\t\t\t\t\t\t\tcontext.languageOptions.ecmaVersion,\n\t\t\t\t\t\t\t\t\tpattern,\n\t\t\t\t\t\t\t\t\trequireFlag,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst replaceFlag =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trequireFlag ?? \"u\";\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (flagsNode) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(flagsNode.type ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Literal\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttypeof flagsNode.value ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"string\") ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflagsNode.type ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"TemplateLiteral\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst flagsNodeText =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsourceCode.getText(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflagsNode,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst flag =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trequireFlag ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"u\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"v\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"u\";\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflags.includes(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflag,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Avoid replacing \"u\" in escapes like `\\uXXXX`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflagsNode.type ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Literal\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflagsNode.raw.includes(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"\\\\\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Avoid replacing \"u\" in expressions like \"`${regularFlags}g`\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflagsNode.type ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"TemplateLiteral\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(flagsNode\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.expressions\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.length ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflagsNode.quasis.some(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\traw,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\traw.includes(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"\\\\\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflagsNode,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflagsNodeText.replace(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflag,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treplaceFlag,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflagsNode,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflagsNodeText.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflagsNodeText.length -\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflagsNodeText.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflagsNodeText.length -\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t].join(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treplaceFlag,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// We intentionally don't suggest concatenating + \"u\" to non-literals\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst penultimateToken =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsourceCode.getLastToken(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trefNode,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ skip: 1 },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t); // skip closing parenthesis\n\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn fixer.insertTextAfter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpenultimateToken,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tastUtils.isCommaToken(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpenultimateToken,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? ` \"${replaceFlag}\",`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: `, \"${replaceFlag}\"`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\tmessageId:\n\t\t\t\t\t\t\t\t\t\t\t\t\trequireFlag === \"v\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"addVFlag\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"addUFlag\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag the generator functions that does not have yield.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require generator functions to contain `yield`\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/require-yield\",\n\t\t},\n\n\t\tschema: [],\n\n\t\tmessages: {\n\t\t\tmissingYield: \"This generator function does not have 'yield'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst stack = [];\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * If the node is a generator function, start counting `yield` keywords.\n\t\t * @param {Node} node A function node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction beginChecking(node) {\n\t\t\tif (node.generator) {\n\t\t\t\tstack.push(0);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * If the node is a generator function, end counting `yield` keywords, then\n\t\t * reports result.\n\t\t * @param {Node} node A function node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction endChecking(node) {\n\t\t\tif (!node.generator) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst countYield = stack.pop();\n\n\t\t\tif (countYield === 0 && node.body.body.length > 0) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tloc: astUtils.getFunctionHeadLoc(node, sourceCode),\n\t\t\t\t\tmessageId: \"missingYield\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tFunctionDeclaration: beginChecking,\n\t\t\t\"FunctionDeclaration:exit\": endChecking,\n\t\t\tFunctionExpression: beginChecking,\n\t\t\t\"FunctionExpression:exit\": endChecking,\n\n\t\t\t// Increases the count of `yield` keyword.\n\t\t\tYieldExpression() {\n\t\t\t\tif (stack.length > 0) {\n\t\t\t\t\tstack[stack.length - 1] += 1;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Enforce spacing between rest and spread operators and their expressions.\n * @author Kai Cataldo\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"rest-spread-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/rest-spread-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce spacing between rest and spread operators and their expressions\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/rest-spread-spacing\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedWhitespace:\n\t\t\t\t\"Unexpected whitespace after {{type}} operator.\",\n\t\t\texpectedWhitespace: \"Expected whitespace after {{type}} operator.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode,\n\t\t\talwaysSpace = context.options[0] === \"always\";\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Checks whitespace between rest/spread operators and their expressions\n\t\t * @param {ASTNode} node The node to check\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkWhiteSpace(node) {\n\t\t\tconst operator = sourceCode.getFirstToken(node),\n\t\t\t\tnextToken = sourceCode.getTokenAfter(operator),\n\t\t\t\thasWhitespace = sourceCode.isSpaceBetween(operator, nextToken);\n\t\t\tlet type;\n\n\t\t\tswitch (node.type) {\n\t\t\t\tcase \"SpreadElement\":\n\t\t\t\t\ttype = \"spread\";\n\t\t\t\t\tif (node.parent.type === \"ObjectExpression\") {\n\t\t\t\t\t\ttype += \" property\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"RestElement\":\n\t\t\t\t\ttype = \"rest\";\n\t\t\t\t\tif (node.parent.type === \"ObjectPattern\") {\n\t\t\t\t\t\ttype += \" property\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ExperimentalSpreadProperty\":\n\t\t\t\t\ttype = \"spread property\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ExperimentalRestProperty\":\n\t\t\t\t\ttype = \"rest property\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (alwaysSpace && !hasWhitespace) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: operator.loc,\n\t\t\t\t\tmessageId: \"expectedWhitespace\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttype,\n\t\t\t\t\t},\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t[operator.range[1], nextToken.range[0]],\n\t\t\t\t\t\t\t\" \",\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else if (!alwaysSpace && hasWhitespace) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: {\n\t\t\t\t\t\tstart: operator.loc.end,\n\t\t\t\t\t\tend: nextToken.loc.start,\n\t\t\t\t\t},\n\t\t\t\t\tmessageId: \"unexpectedWhitespace\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttype,\n\t\t\t\t\t},\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\toperator.range[1],\n\t\t\t\t\t\t\tnextToken.range[0],\n\t\t\t\t\t\t]);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tSpreadElement: checkWhiteSpace,\n\t\t\tRestElement: checkWhiteSpace,\n\t\t\tExperimentalSpreadProperty: checkWhiteSpace,\n\t\t\tExperimentalRestProperty: checkWhiteSpace,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag missing semicolons.\n * @author Nicholas C. Zakas\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst FixTracker = require(\"./utils/fix-tracker\");\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"semi\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/semi\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require or disallow semicolons instead of ASI\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/semi\",\n\t\t},\n\n\t\tfixable: \"code\",\n\n\t\tschema: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"never\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tbeforeStatementContinuationChars: {\n\t\t\t\t\t\t\t\t\tenum: [\"always\", \"any\", \"never\"],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 2,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenum: [\"always\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tomitLastInOneLineBlock: { type: \"boolean\" },\n\t\t\t\t\t\t\t\tomitLastInOneLineClassBody: { type: \"boolean\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tminItems: 0,\n\t\t\t\t\tmaxItems: 2,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tmessages: {\n\t\t\tmissingSemi: \"Missing semicolon.\",\n\t\t\textraSemi: \"Extra semicolon.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst OPT_OUT_PATTERN = /^[-[(/+`]/u; // One of [(/+-`\n\t\tconst unsafeClassFieldNames = new Set([\"get\", \"set\", \"static\"]);\n\t\tconst unsafeClassFieldFollowers = new Set([\"*\", \"in\", \"instanceof\"]);\n\t\tconst options = context.options[1];\n\t\tconst never = context.options[0] === \"never\";\n\t\tconst exceptOneLine = Boolean(\n\t\t\toptions && options.omitLastInOneLineBlock,\n\t\t);\n\t\tconst exceptOneLineClassBody = Boolean(\n\t\t\toptions && options.omitLastInOneLineClassBody,\n\t\t);\n\t\tconst beforeStatementContinuationChars =\n\t\t\t(options && options.beforeStatementContinuationChars) || \"any\";\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Reports a semicolon error with appropriate location and message.\n\t\t * @param {ASTNode} node The node with an extra or missing semicolon.\n\t\t * @param {boolean} missing True if the semicolon is missing.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction report(node, missing) {\n\t\t\tconst lastToken = sourceCode.getLastToken(node);\n\t\t\tlet messageId, fix, loc;\n\n\t\t\tif (!missing) {\n\t\t\t\tmessageId = \"missingSemi\";\n\t\t\t\tloc = {\n\t\t\t\t\tstart: lastToken.loc.end,\n\t\t\t\t\tend: astUtils.getNextLocation(\n\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\tlastToken.loc.end,\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t\tfix = function (fixer) {\n\t\t\t\t\treturn fixer.insertTextAfter(lastToken, \";\");\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tmessageId = \"extraSemi\";\n\t\t\t\tloc = lastToken.loc;\n\t\t\t\tfix = function (fixer) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Expand the replacement range to include the surrounding\n\t\t\t\t\t * tokens to avoid conflicting with no-extra-semi.\n\t\t\t\t\t * https://github.com/eslint/eslint/issues/7928\n\t\t\t\t\t */\n\t\t\t\t\treturn new FixTracker(fixer, sourceCode)\n\t\t\t\t\t\t.retainSurroundingTokens(lastToken)\n\t\t\t\t\t\t.remove(lastToken);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tloc,\n\t\t\t\tmessageId,\n\t\t\t\tfix,\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Check whether a given semicolon token is redundant.\n\t\t * @param {Token} semiToken A semicolon token to check.\n\t\t * @returns {boolean} `true` if the next token is `;` or `}`.\n\t\t */\n\t\tfunction isRedundantSemi(semiToken) {\n\t\t\tconst nextToken = sourceCode.getTokenAfter(semiToken);\n\n\t\t\treturn (\n\t\t\t\t!nextToken ||\n\t\t\t\tastUtils.isClosingBraceToken(nextToken) ||\n\t\t\t\tastUtils.isSemicolonToken(nextToken)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check whether a given token is the closing brace of an arrow function.\n\t\t * @param {Token} lastToken A token to check.\n\t\t * @returns {boolean} `true` if the token is the closing brace of an arrow function.\n\t\t */\n\t\tfunction isEndOfArrowBlock(lastToken) {\n\t\t\tif (!astUtils.isClosingBraceToken(lastToken)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst node = sourceCode.getNodeByRangeIndex(lastToken.range[0]);\n\n\t\t\treturn (\n\t\t\t\tnode.type === \"BlockStatement\" &&\n\t\t\t\tnode.parent.type === \"ArrowFunctionExpression\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if a given PropertyDefinition node followed by a semicolon\n\t\t * can safely remove that semicolon. It is not to safe to remove if\n\t\t * the class field name is \"get\", \"set\", or \"static\", or if\n\t\t * followed by a generator method.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} `true` if the node cannot have the semicolon\n\t\t *      removed.\n\t\t */\n\t\tfunction maybeClassFieldAsiHazard(node) {\n\t\t\tif (node.type !== \"PropertyDefinition\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Computed property names and non-identifiers are always safe\n\t\t\t * as they can be distinguished from keywords easily.\n\t\t\t */\n\t\t\tconst needsNameCheck =\n\t\t\t\t!node.computed && node.key.type === \"Identifier\";\n\n\t\t\t/*\n\t\t\t * Certain names are problematic unless they also have a\n\t\t\t * a way to distinguish between keywords and property\n\t\t\t * names.\n\t\t\t */\n\t\t\tif (needsNameCheck && unsafeClassFieldNames.has(node.key.name)) {\n\t\t\t\t/*\n\t\t\t\t * Special case: If the field name is `static`,\n\t\t\t\t * it is only valid if the field is marked as static,\n\t\t\t\t * so \"static static\" is okay but \"static\" is not.\n\t\t\t\t */\n\t\t\t\tconst isStaticStatic =\n\t\t\t\t\tnode.static && node.key.name === \"static\";\n\n\t\t\t\t/*\n\t\t\t\t * For other unsafe names, we only care if there is no\n\t\t\t\t * initializer. No initializer = hazard.\n\t\t\t\t */\n\t\t\t\tif (!isStaticStatic && !node.value) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst followingToken = sourceCode.getTokenAfter(node);\n\n\t\t\treturn unsafeClassFieldFollowers.has(followingToken.value);\n\t\t}\n\n\t\t/**\n\t\t * Check whether a given node is on the same line with the next token.\n\t\t * @param {Node} node A statement node to check.\n\t\t * @returns {boolean} `true` if the node is on the same line with the next token.\n\t\t */\n\t\tfunction isOnSameLineWithNextToken(node) {\n\t\t\tconst prevToken = sourceCode.getLastToken(node, 1);\n\t\t\tconst nextToken = sourceCode.getTokenAfter(node);\n\n\t\t\treturn (\n\t\t\t\t!!nextToken && astUtils.isTokenOnSameLine(prevToken, nextToken)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check whether a given node can connect the next line if the next line is unreliable.\n\t\t * @param {Node} node A statement node to check.\n\t\t * @returns {boolean} `true` if the node can connect the next line.\n\t\t */\n\t\tfunction maybeAsiHazardAfter(node) {\n\t\t\tconst t = node.type;\n\n\t\t\tif (\n\t\t\t\tt === \"DoWhileStatement\" ||\n\t\t\t\tt === \"BreakStatement\" ||\n\t\t\t\tt === \"ContinueStatement\" ||\n\t\t\t\tt === \"DebuggerStatement\" ||\n\t\t\t\tt === \"ImportDeclaration\" ||\n\t\t\t\tt === \"ExportAllDeclaration\"\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (t === \"ReturnStatement\") {\n\t\t\t\treturn Boolean(node.argument);\n\t\t\t}\n\t\t\tif (t === \"ExportNamedDeclaration\") {\n\t\t\t\treturn Boolean(node.declaration);\n\t\t\t}\n\t\t\tif (isEndOfArrowBlock(sourceCode.getLastToken(node, 1))) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * Check whether a given token can connect the previous statement.\n\t\t * @param {Token} token A token to check.\n\t\t * @returns {boolean} `true` if the token is one of `[`, `(`, `/`, `+`, `-`, ```, `++`, and `--`.\n\t\t */\n\t\tfunction maybeAsiHazardBefore(token) {\n\t\t\treturn (\n\t\t\t\tBoolean(token) &&\n\t\t\t\tOPT_OUT_PATTERN.test(token.value) &&\n\t\t\t\ttoken.value !== \"++\" &&\n\t\t\t\ttoken.value !== \"--\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check if the semicolon of a given node is unnecessary, only true if:\n\t\t *   - next token is a valid statement divider (`;` or `}`).\n\t\t *   - next token is on a new line and the node is not connectable to the new line.\n\t\t * @param {Node} node A statement node to check.\n\t\t * @returns {boolean} whether the semicolon is unnecessary.\n\t\t */\n\t\tfunction canRemoveSemicolon(node) {\n\t\t\tif (isRedundantSemi(sourceCode.getLastToken(node))) {\n\t\t\t\treturn true; // `;;` or `;}`\n\t\t\t}\n\t\t\tif (maybeClassFieldAsiHazard(node)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (isOnSameLineWithNextToken(node)) {\n\t\t\t\treturn false; // One liner.\n\t\t\t}\n\n\t\t\t// continuation characters should not apply to class fields\n\t\t\tif (\n\t\t\t\tnode.type !== \"PropertyDefinition\" &&\n\t\t\t\tbeforeStatementContinuationChars === \"never\" &&\n\t\t\t\t!maybeAsiHazardAfter(node)\n\t\t\t) {\n\t\t\t\treturn true; // ASI works. This statement doesn't connect to the next.\n\t\t\t}\n\t\t\tif (!maybeAsiHazardBefore(sourceCode.getTokenAfter(node))) {\n\t\t\t\treturn true; // ASI works. The next token doesn't connect to this statement.\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Checks a node to see if it's the last item in a one-liner block.\n\t\t * Block is any `BlockStatement` or `StaticBlock` node. Block is a one-liner if its\n\t\t * braces (and consequently everything between them) are on the same line.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} whether the node is the last item in a one-liner block.\n\t\t */\n\t\tfunction isLastInOneLinerBlock(node) {\n\t\t\tconst parent = node.parent;\n\t\t\tconst nextToken = sourceCode.getTokenAfter(node);\n\n\t\t\tif (!nextToken || nextToken.value !== \"}\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (parent.type === \"BlockStatement\") {\n\t\t\t\treturn parent.loc.start.line === parent.loc.end.line;\n\t\t\t}\n\n\t\t\tif (parent.type === \"StaticBlock\") {\n\t\t\t\tconst openingBrace = sourceCode.getFirstToken(parent, {\n\t\t\t\t\tskip: 1,\n\t\t\t\t}); // skip the `static` token\n\n\t\t\t\treturn openingBrace.loc.start.line === parent.loc.end.line;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Checks a node to see if it's the last item in a one-liner `ClassBody` node.\n\t\t * ClassBody is a one-liner if its braces (and consequently everything between them) are on the same line.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {boolean} whether the node is the last item in a one-liner ClassBody.\n\t\t */\n\t\tfunction isLastInOneLinerClassBody(node) {\n\t\t\tconst parent = node.parent;\n\t\t\tconst nextToken = sourceCode.getTokenAfter(node);\n\n\t\t\tif (!nextToken || nextToken.value !== \"}\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (parent.type === \"ClassBody\") {\n\t\t\t\treturn parent.loc.start.line === parent.loc.end.line;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Checks a node to see if it's followed by a semicolon.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForSemicolon(node) {\n\t\t\tconst isSemi = astUtils.isSemicolonToken(\n\t\t\t\tsourceCode.getLastToken(node),\n\t\t\t);\n\n\t\t\tif (never) {\n\t\t\t\tif (isSemi && canRemoveSemicolon(node)) {\n\t\t\t\t\treport(node, true);\n\t\t\t\t} else if (\n\t\t\t\t\t!isSemi &&\n\t\t\t\t\tbeforeStatementContinuationChars === \"always\" &&\n\t\t\t\t\tnode.type !== \"PropertyDefinition\" &&\n\t\t\t\t\tmaybeAsiHazardBefore(sourceCode.getTokenAfter(node))\n\t\t\t\t) {\n\t\t\t\t\treport(node);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst oneLinerBlock =\n\t\t\t\t\texceptOneLine && isLastInOneLinerBlock(node);\n\t\t\t\tconst oneLinerClassBody =\n\t\t\t\t\texceptOneLineClassBody && isLastInOneLinerClassBody(node);\n\t\t\t\tconst oneLinerBlockOrClassBody =\n\t\t\t\t\toneLinerBlock || oneLinerClassBody;\n\n\t\t\t\tif (isSemi && oneLinerBlockOrClassBody) {\n\t\t\t\t\treport(node, true);\n\t\t\t\t} else if (!isSemi && !oneLinerBlockOrClassBody) {\n\t\t\t\t\treport(node);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks to see if there's a semicolon after a variable declaration.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForSemicolonForVariableDeclaration(node) {\n\t\t\tconst parent = node.parent;\n\n\t\t\tif (\n\t\t\t\t(parent.type !== \"ForStatement\" || parent.init !== node) &&\n\t\t\t\t(!/^For(?:In|Of)Statement/u.test(parent.type) ||\n\t\t\t\t\tparent.left !== node)\n\t\t\t) {\n\t\t\t\tcheckForSemicolon(node);\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tVariableDeclaration: checkForSemicolonForVariableDeclaration,\n\t\t\tExpressionStatement: checkForSemicolon,\n\t\t\tReturnStatement: checkForSemicolon,\n\t\t\tThrowStatement: checkForSemicolon,\n\t\t\tDoWhileStatement: checkForSemicolon,\n\t\t\tDebuggerStatement: checkForSemicolon,\n\t\t\tBreakStatement: checkForSemicolon,\n\t\t\tContinueStatement: checkForSemicolon,\n\t\t\tImportDeclaration: checkForSemicolon,\n\t\t\tExportAllDeclaration: checkForSemicolon,\n\t\t\tExportNamedDeclaration(node) {\n\t\t\t\tif (!node.declaration) {\n\t\t\t\t\tcheckForSemicolon(node);\n\t\t\t\t}\n\t\t\t},\n\t\t\tExportDefaultDeclaration(node) {\n\t\t\t\tif (\n\t\t\t\t\t!/(?:Class|Function)Declaration/u.test(\n\t\t\t\t\t\tnode.declaration.type,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tcheckForSemicolon(node);\n\t\t\t\t}\n\t\t\t},\n\t\t\tPropertyDefinition: checkForSemicolon,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Validates spacing before and after semicolon\n * @author Mathias Schreck\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"semi-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/semi-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce consistent spacing before and after semicolons\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/semi-spacing\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tbefore: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t\tafter: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedWhitespaceBefore:\n\t\t\t\t\"Unexpected whitespace before semicolon.\",\n\t\t\tunexpectedWhitespaceAfter: \"Unexpected whitespace after semicolon.\",\n\t\t\tmissingWhitespaceBefore: \"Missing whitespace before semicolon.\",\n\t\t\tmissingWhitespaceAfter: \"Missing whitespace after semicolon.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst config = context.options[0],\n\t\t\tsourceCode = context.sourceCode;\n\t\tlet requireSpaceBefore = false,\n\t\t\trequireSpaceAfter = true;\n\n\t\tif (typeof config === \"object\") {\n\t\t\trequireSpaceBefore = config.before;\n\t\t\trequireSpaceAfter = config.after;\n\t\t}\n\n\t\t/**\n\t\t * Checks if a given token has leading whitespace.\n\t\t * @param {Object} token The token to check.\n\t\t * @returns {boolean} True if the given token has leading space, false if not.\n\t\t */\n\t\tfunction hasLeadingSpace(token) {\n\t\t\tconst tokenBefore = sourceCode.getTokenBefore(token);\n\n\t\t\treturn (\n\t\t\t\ttokenBefore &&\n\t\t\t\tastUtils.isTokenOnSameLine(tokenBefore, token) &&\n\t\t\t\tsourceCode.isSpaceBetween(tokenBefore, token)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if a given token has trailing whitespace.\n\t\t * @param {Object} token The token to check.\n\t\t * @returns {boolean} True if the given token has trailing space, false if not.\n\t\t */\n\t\tfunction hasTrailingSpace(token) {\n\t\t\tconst tokenAfter = sourceCode.getTokenAfter(token);\n\n\t\t\treturn (\n\t\t\t\ttokenAfter &&\n\t\t\t\tastUtils.isTokenOnSameLine(token, tokenAfter) &&\n\t\t\t\tsourceCode.isSpaceBetween(token, tokenAfter)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if the given token is the last token in its line.\n\t\t * @param {Token} token The token to check.\n\t\t * @returns {boolean} Whether or not the token is the last in its line.\n\t\t */\n\t\tfunction isLastTokenInCurrentLine(token) {\n\t\t\tconst tokenAfter = sourceCode.getTokenAfter(token);\n\n\t\t\treturn !(\n\t\t\t\ttokenAfter && astUtils.isTokenOnSameLine(token, tokenAfter)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if the given token is the first token in its line\n\t\t * @param {Token} token The token to check.\n\t\t * @returns {boolean} Whether or not the token is the first in its line.\n\t\t */\n\t\tfunction isFirstTokenInCurrentLine(token) {\n\t\t\tconst tokenBefore = sourceCode.getTokenBefore(token);\n\n\t\t\treturn !(\n\t\t\t\ttokenBefore && astUtils.isTokenOnSameLine(token, tokenBefore)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if the next token of a given token is a closing parenthesis.\n\t\t * @param {Token} token The token to check.\n\t\t * @returns {boolean} Whether or not the next token of a given token is a closing parenthesis.\n\t\t */\n\t\tfunction isBeforeClosingParen(token) {\n\t\t\tconst nextToken = sourceCode.getTokenAfter(token);\n\n\t\t\treturn (\n\t\t\t\t(nextToken && astUtils.isClosingBraceToken(nextToken)) ||\n\t\t\t\tastUtils.isClosingParenToken(nextToken)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Report location example :\n\t\t *\n\t\t * for unexpected space `before`\n\t\t *\n\t\t * var a = 'b'   ;\n\t\t *            ^^^\n\t\t *\n\t\t * for unexpected space `after`\n\t\t *\n\t\t * var a = 'b';  c = 10;\n\t\t *             ^^\n\t\t *\n\t\t * Reports if the given token has invalid spacing.\n\t\t * @param {Token} token The semicolon token to check.\n\t\t * @param {ASTNode} node The corresponding node of the token.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSemicolonSpacing(token, node) {\n\t\t\tif (astUtils.isSemicolonToken(token)) {\n\t\t\t\tif (hasLeadingSpace(token)) {\n\t\t\t\t\tif (!requireSpaceBefore) {\n\t\t\t\t\t\tconst tokenBefore = sourceCode.getTokenBefore(token);\n\t\t\t\t\t\tconst loc = {\n\t\t\t\t\t\t\tstart: tokenBefore.loc.end,\n\t\t\t\t\t\t\tend: token.loc.start,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tmessageId: \"unexpectedWhitespaceBefore\",\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\t\t\ttokenBefore.range[1],\n\t\t\t\t\t\t\t\t\ttoken.range[0],\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (requireSpaceBefore) {\n\t\t\t\t\t\tconst loc = token.loc;\n\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tmessageId: \"missingWhitespaceBefore\",\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\treturn fixer.insertTextBefore(token, \" \");\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!isFirstTokenInCurrentLine(token) &&\n\t\t\t\t\t!isLastTokenInCurrentLine(token) &&\n\t\t\t\t\t!isBeforeClosingParen(token)\n\t\t\t\t) {\n\t\t\t\t\tif (hasTrailingSpace(token)) {\n\t\t\t\t\t\tif (!requireSpaceAfter) {\n\t\t\t\t\t\t\tconst tokenAfter = sourceCode.getTokenAfter(token);\n\t\t\t\t\t\t\tconst loc = {\n\t\t\t\t\t\t\t\tstart: token.loc.end,\n\t\t\t\t\t\t\t\tend: tokenAfter.loc.start,\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\t\tmessageId: \"unexpectedWhitespaceAfter\",\n\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\t\t\t\ttoken.range[1],\n\t\t\t\t\t\t\t\t\t\ttokenAfter.range[0],\n\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (requireSpaceAfter) {\n\t\t\t\t\t\t\tconst loc = token.loc;\n\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\t\tmessageId: \"missingWhitespaceAfter\",\n\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\treturn fixer.insertTextAfter(token, \" \");\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks the spacing of the semicolon with the assumption that the last token is the semicolon.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkNode(node) {\n\t\t\tconst token = sourceCode.getLastToken(node);\n\n\t\t\tcheckSemicolonSpacing(token, node);\n\t\t}\n\n\t\treturn {\n\t\t\tVariableDeclaration: checkNode,\n\t\t\tExpressionStatement: checkNode,\n\t\t\tBreakStatement: checkNode,\n\t\t\tContinueStatement: checkNode,\n\t\t\tDebuggerStatement: checkNode,\n\t\t\tDoWhileStatement: checkNode,\n\t\t\tReturnStatement: checkNode,\n\t\t\tThrowStatement: checkNode,\n\t\t\tImportDeclaration: checkNode,\n\t\t\tExportNamedDeclaration: checkNode,\n\t\t\tExportAllDeclaration: checkNode,\n\t\t\tExportDefaultDeclaration: checkNode,\n\t\t\tForStatement(node) {\n\t\t\t\tif (node.init) {\n\t\t\t\t\tcheckSemicolonSpacing(\n\t\t\t\t\t\tsourceCode.getTokenAfter(node.init),\n\t\t\t\t\t\tnode,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (node.test) {\n\t\t\t\t\tcheckSemicolonSpacing(\n\t\t\t\t\t\tsourceCode.getTokenAfter(node.test),\n\t\t\t\t\t\tnode,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t\tPropertyDefinition: checkNode,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce location of semicolons.\n * @author Toru Nagashima\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\nconst SELECTOR = [\n\t\"BreakStatement\",\n\t\"ContinueStatement\",\n\t\"DebuggerStatement\",\n\t\"DoWhileStatement\",\n\t\"ExportAllDeclaration\",\n\t\"ExportDefaultDeclaration\",\n\t\"ExportNamedDeclaration\",\n\t\"ExpressionStatement\",\n\t\"ImportDeclaration\",\n\t\"ReturnStatement\",\n\t\"ThrowStatement\",\n\t\"VariableDeclaration\",\n\t\"PropertyDefinition\",\n].join(\",\");\n\n/**\n * Get the child node list of a given node.\n * This returns `BlockStatement#body`, `StaticBlock#body`, `Program#body`,\n * `ClassBody#body`, or `SwitchCase#consequent`.\n * This is used to check whether a node is the first/last child.\n * @param {Node} node A node to get child node list.\n * @returns {Node[]|null} The child node list.\n */\nfunction getChildren(node) {\n\tconst t = node.type;\n\n\tif (\n\t\tt === \"BlockStatement\" ||\n\t\tt === \"StaticBlock\" ||\n\t\tt === \"Program\" ||\n\t\tt === \"ClassBody\"\n\t) {\n\t\treturn node.body;\n\t}\n\tif (t === \"SwitchCase\") {\n\t\treturn node.consequent;\n\t}\n\treturn null;\n}\n\n/**\n * Check whether a given node is the last statement in the parent block.\n * @param {Node} node A node to check.\n * @returns {boolean} `true` if the node is the last statement in the parent block.\n */\nfunction isLastChild(node) {\n\tconst t = node.parent.type;\n\n\tif (\n\t\tt === \"IfStatement\" &&\n\t\tnode.parent.consequent === node &&\n\t\tnode.parent.alternate\n\t) {\n\t\t// before `else` keyword.\n\t\treturn true;\n\t}\n\tif (t === \"DoWhileStatement\") {\n\t\t// before `while` keyword.\n\t\treturn true;\n\t}\n\tconst nodeList = getChildren(node.parent);\n\n\treturn nodeList !== null && nodeList.at(-1) === node; // before `}` or etc.\n}\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"semi-style\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/semi-style\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce location of semicolons\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/semi-style\",\n\t\t},\n\n\t\tschema: [{ enum: [\"last\", \"first\"] }],\n\t\tfixable: \"whitespace\",\n\n\t\tmessages: {\n\t\t\texpectedSemiColon: \"Expected this semicolon to be at {{pos}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst option = context.options[0] || \"last\";\n\n\t\t/**\n\t\t * Check the given semicolon token.\n\t\t * @param {Token} semiToken The semicolon token to check.\n\t\t * @param {\"first\"|\"last\"} expected The expected location to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction check(semiToken, expected) {\n\t\t\tconst prevToken = sourceCode.getTokenBefore(semiToken);\n\t\t\tconst nextToken = sourceCode.getTokenAfter(semiToken);\n\t\t\tconst prevIsSameLine =\n\t\t\t\t!prevToken || astUtils.isTokenOnSameLine(prevToken, semiToken);\n\t\t\tconst nextIsSameLine =\n\t\t\t\t!nextToken || astUtils.isTokenOnSameLine(semiToken, nextToken);\n\n\t\t\tif (\n\t\t\t\t(expected === \"last\" && !prevIsSameLine) ||\n\t\t\t\t(expected === \"first\" && !nextIsSameLine)\n\t\t\t) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tloc: semiToken.loc,\n\t\t\t\t\tmessageId: \"expectedSemiColon\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tpos:\n\t\t\t\t\t\t\texpected === \"last\"\n\t\t\t\t\t\t\t\t? \"the end of the previous line\"\n\t\t\t\t\t\t\t\t: \"the beginning of the next line\",\n\t\t\t\t\t},\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tprevToken &&\n\t\t\t\t\t\t\tnextToken &&\n\t\t\t\t\t\t\tsourceCode.commentsExistBetween(\n\t\t\t\t\t\t\t\tprevToken,\n\t\t\t\t\t\t\t\tnextToken,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst start = prevToken\n\t\t\t\t\t\t\t? prevToken.range[1]\n\t\t\t\t\t\t\t: semiToken.range[0];\n\t\t\t\t\t\tconst end = nextToken\n\t\t\t\t\t\t\t? nextToken.range[0]\n\t\t\t\t\t\t\t: semiToken.range[1];\n\t\t\t\t\t\tconst text = expected === \"last\" ? \";\\n\" : \"\\n;\";\n\n\t\t\t\t\t\treturn fixer.replaceTextRange([start, end], text);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t[SELECTOR](node) {\n\t\t\t\tif (option === \"first\" && isLastChild(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst lastToken = sourceCode.getLastToken(node);\n\n\t\t\t\tif (astUtils.isSemicolonToken(lastToken)) {\n\t\t\t\t\tcheck(lastToken, option);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tForStatement(node) {\n\t\t\t\tconst firstSemi =\n\t\t\t\t\tnode.init &&\n\t\t\t\t\tsourceCode.getTokenAfter(\n\t\t\t\t\t\tnode.init,\n\t\t\t\t\t\tastUtils.isSemicolonToken,\n\t\t\t\t\t);\n\t\t\t\tconst secondSemi =\n\t\t\t\t\tnode.test &&\n\t\t\t\t\tsourceCode.getTokenAfter(\n\t\t\t\t\t\tnode.test,\n\t\t\t\t\t\tastUtils.isSemicolonToken,\n\t\t\t\t\t);\n\n\t\t\t\tif (firstSemi) {\n\t\t\t\t\tcheck(firstSemi, \"last\");\n\t\t\t\t}\n\t\t\t\tif (secondSemi) {\n\t\t\t\t\tcheck(secondSemi, \"last\");\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce sorted `import` declarations within modules\n * @author Christian Schuller\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tallowSeparatedGroups: false,\n\t\t\t\tignoreCase: false,\n\t\t\t\tignoreDeclarationSort: false,\n\t\t\t\tignoreMemberSort: false,\n\t\t\t\tmemberSyntaxSortOrder: [\"none\", \"all\", \"multiple\", \"single\"],\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce sorted `import` declarations within modules\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/sort-imports\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tignoreCase: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tmemberSyntaxSortOrder: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\tenum: [\"none\", \"all\", \"multiple\", \"single\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t\tminItems: 4,\n\t\t\t\t\t\tmaxItems: 4,\n\t\t\t\t\t},\n\t\t\t\t\tignoreDeclarationSort: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tignoreMemberSort: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tallowSeparatedGroups: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tsortImportsAlphabetically:\n\t\t\t\t\"Imports should be sorted alphabetically.\",\n\t\t\tsortMembersAlphabetically:\n\t\t\t\t\"Member '{{memberName}}' of the import declaration should be sorted alphabetically.\",\n\t\t\tunexpectedSyntaxOrder:\n\t\t\t\t\"Expected '{{syntaxA}}' syntax before '{{syntaxB}}' syntax.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [\n\t\t\t{\n\t\t\t\tignoreCase,\n\t\t\t\tignoreDeclarationSort,\n\t\t\t\tignoreMemberSort,\n\t\t\t\tmemberSyntaxSortOrder,\n\t\t\t\tallowSeparatedGroups,\n\t\t\t},\n\t\t] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\t\tlet previousDeclaration = null;\n\n\t\t/**\n\t\t * Gets the used member syntax style.\n\t\t *\n\t\t * import \"my-module.js\" --> none\n\t\t * import * as myModule from \"my-module.js\" --> all\n\t\t * import {myMember} from \"my-module.js\" --> single\n\t\t * import {foo, bar} from  \"my-module.js\" --> multiple\n\t\t * @param {ASTNode} node the ImportDeclaration node.\n\t\t * @returns {string} used member parameter style, [\"all\", \"multiple\", \"single\"]\n\t\t */\n\t\tfunction usedMemberSyntax(node) {\n\t\t\tif (node.specifiers.length === 0) {\n\t\t\t\treturn \"none\";\n\t\t\t}\n\t\t\tif (node.specifiers[0].type === \"ImportNamespaceSpecifier\") {\n\t\t\t\treturn \"all\";\n\t\t\t}\n\t\t\tif (node.specifiers.length === 1) {\n\t\t\t\treturn \"single\";\n\t\t\t}\n\t\t\treturn \"multiple\";\n\t\t}\n\n\t\t/**\n\t\t * Gets the group by member parameter index for given declaration.\n\t\t * @param {ASTNode} node the ImportDeclaration node.\n\t\t * @returns {number} the declaration group by member index.\n\t\t */\n\t\tfunction getMemberParameterGroupIndex(node) {\n\t\t\treturn memberSyntaxSortOrder.indexOf(usedMemberSyntax(node));\n\t\t}\n\n\t\t/**\n\t\t * Gets the local name of the first imported module.\n\t\t * @param {ASTNode} node the ImportDeclaration node.\n\t\t * @returns {?string} the local name of the first imported module.\n\t\t */\n\t\tfunction getFirstLocalMemberName(node) {\n\t\t\tif (node.specifiers[0]) {\n\t\t\t\treturn node.specifiers[0].local.name;\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\t/**\n\t\t * Calculates number of lines between two nodes. It is assumed that the given `left` node appears before\n\t\t * the given `right` node in the source code. Lines are counted from the end of the `left` node till the\n\t\t * start of the `right` node. If the given nodes are on the same line, it returns `0`, same as if they were\n\t\t * on two consecutive lines.\n\t\t * @param {ASTNode} left node that appears before the given `right` node.\n\t\t * @param {ASTNode} right node that appears after the given `left` node.\n\t\t * @returns {number} number of lines between nodes.\n\t\t */\n\t\tfunction getNumberOfLinesBetween(left, right) {\n\t\t\treturn Math.max(right.loc.start.line - left.loc.end.line - 1, 0);\n\t\t}\n\n\t\treturn {\n\t\t\tImportDeclaration(node) {\n\t\t\t\tif (!ignoreDeclarationSort) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousDeclaration &&\n\t\t\t\t\t\tallowSeparatedGroups &&\n\t\t\t\t\t\tgetNumberOfLinesBetween(previousDeclaration, node) > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\t// reset declaration sort\n\t\t\t\t\t\tpreviousDeclaration = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (previousDeclaration) {\n\t\t\t\t\t\tconst currentMemberSyntaxGroupIndex =\n\t\t\t\t\t\t\t\tgetMemberParameterGroupIndex(node),\n\t\t\t\t\t\t\tpreviousMemberSyntaxGroupIndex =\n\t\t\t\t\t\t\t\tgetMemberParameterGroupIndex(\n\t\t\t\t\t\t\t\t\tpreviousDeclaration,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\tlet currentLocalMemberName =\n\t\t\t\t\t\t\t\tgetFirstLocalMemberName(node),\n\t\t\t\t\t\t\tpreviousLocalMemberName =\n\t\t\t\t\t\t\t\tgetFirstLocalMemberName(previousDeclaration);\n\n\t\t\t\t\t\tif (ignoreCase) {\n\t\t\t\t\t\t\tpreviousLocalMemberName =\n\t\t\t\t\t\t\t\tpreviousLocalMemberName &&\n\t\t\t\t\t\t\t\tpreviousLocalMemberName.toLowerCase();\n\t\t\t\t\t\t\tcurrentLocalMemberName =\n\t\t\t\t\t\t\t\tcurrentLocalMemberName &&\n\t\t\t\t\t\t\t\tcurrentLocalMemberName.toLowerCase();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * When the current declaration uses a different member syntax,\n\t\t\t\t\t\t * then check if the ordering is correct.\n\t\t\t\t\t\t * Otherwise, make a default string compare (like rule sort-vars to be consistent) of the first used local member name.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcurrentMemberSyntaxGroupIndex !==\n\t\t\t\t\t\t\tpreviousMemberSyntaxGroupIndex\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tcurrentMemberSyntaxGroupIndex <\n\t\t\t\t\t\t\t\tpreviousMemberSyntaxGroupIndex\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tmessageId: \"unexpectedSyntaxOrder\",\n\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\tsyntaxA:\n\t\t\t\t\t\t\t\t\t\t\tmemberSyntaxSortOrder[\n\t\t\t\t\t\t\t\t\t\t\t\tcurrentMemberSyntaxGroupIndex\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tsyntaxB:\n\t\t\t\t\t\t\t\t\t\t\tmemberSyntaxSortOrder[\n\t\t\t\t\t\t\t\t\t\t\t\tpreviousMemberSyntaxGroupIndex\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tpreviousLocalMemberName &&\n\t\t\t\t\t\t\t\tcurrentLocalMemberName &&\n\t\t\t\t\t\t\t\tcurrentLocalMemberName < previousLocalMemberName\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tmessageId: \"sortImportsAlphabetically\",\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tpreviousDeclaration = node;\n\t\t\t\t}\n\n\t\t\t\tif (!ignoreMemberSort) {\n\t\t\t\t\tconst importSpecifiers = node.specifiers.filter(\n\t\t\t\t\t\tspecifier => specifier.type === \"ImportSpecifier\",\n\t\t\t\t\t);\n\t\t\t\t\tconst getSortableName = ignoreCase\n\t\t\t\t\t\t? specifier => specifier.local.name.toLowerCase()\n\t\t\t\t\t\t: specifier => specifier.local.name;\n\t\t\t\t\tconst firstUnsortedIndex = importSpecifiers\n\t\t\t\t\t\t.map(getSortableName)\n\t\t\t\t\t\t.findIndex(\n\t\t\t\t\t\t\t(name, index, array) => array[index - 1] > name,\n\t\t\t\t\t\t);\n\n\t\t\t\t\tif (firstUnsortedIndex !== -1) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: importSpecifiers[firstUnsortedIndex],\n\t\t\t\t\t\t\tmessageId: \"sortMembersAlphabetically\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tmemberName:\n\t\t\t\t\t\t\t\t\timportSpecifiers[firstUnsortedIndex].local\n\t\t\t\t\t\t\t\t\t\t.name,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\timportSpecifiers.some(\n\t\t\t\t\t\t\t\t\t\tspecifier =>\n\t\t\t\t\t\t\t\t\t\t\tsourceCode.getCommentsBefore(\n\t\t\t\t\t\t\t\t\t\t\t\tspecifier,\n\t\t\t\t\t\t\t\t\t\t\t).length ||\n\t\t\t\t\t\t\t\t\t\t\tsourceCode.getCommentsAfter(\n\t\t\t\t\t\t\t\t\t\t\t\tspecifier,\n\t\t\t\t\t\t\t\t\t\t\t).length,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t// If there are comments in the ImportSpecifier list, don't rearrange the specifiers.\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\timportSpecifiers[0].range[0],\n\t\t\t\t\t\t\t\t\t\timportSpecifiers.at(-1).range[1],\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\timportSpecifiers\n\n\t\t\t\t\t\t\t\t\t\t// Clone the importSpecifiers array to avoid mutating it\n\t\t\t\t\t\t\t\t\t\t.slice()\n\n\t\t\t\t\t\t\t\t\t\t// Sort the array into the desired order\n\t\t\t\t\t\t\t\t\t\t.sort((specifierA, specifierB) => {\n\t\t\t\t\t\t\t\t\t\t\tconst aName =\n\t\t\t\t\t\t\t\t\t\t\t\tgetSortableName(specifierA);\n\t\t\t\t\t\t\t\t\t\t\tconst bName =\n\t\t\t\t\t\t\t\t\t\t\t\tgetSortableName(specifierB);\n\n\t\t\t\t\t\t\t\t\t\t\treturn aName > bName ? 1 : -1;\n\t\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\t\t\t// Build a string out of the sorted list of import specifiers and the text between the originals\n\t\t\t\t\t\t\t\t\t\t.reduce(\n\t\t\t\t\t\t\t\t\t\t\t(sourceText, specifier, index) => {\n\t\t\t\t\t\t\t\t\t\t\t\tconst textAfterSpecifier =\n\t\t\t\t\t\t\t\t\t\t\t\t\tindex ===\n\t\t\t\t\t\t\t\t\t\t\t\t\timportSpecifiers.length - 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: sourceCode\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.getText()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\timportSpecifiers[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t].range[1],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\timportSpecifiers[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t].range[0],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\tsourceText +\n\t\t\t\t\t\t\t\t\t\t\t\t\tsourceCode.getText(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tspecifier,\n\t\t\t\t\t\t\t\t\t\t\t\t\t) +\n\t\t\t\t\t\t\t\t\t\t\t\t\ttextAfterSpecifier\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "\n\n\n/*\n * @version    1.4.0\n * @date       2015-10-26\n * @stability  3 - Stable\n * @author     Lauri Rooden (https://github.com/litejs/natural-compare-lite)\n * @license    MIT License\n */\n\n\nvar naturalCompare = function(a, b) {\n\tvar i, codeA\n\t, codeB = 1\n\t, posA = 0\n\t, posB = 0\n\t, alphabet = String.alphabet\n\n\tfunction getCode(str, pos, code) {\n\t\tif (code) {\n\t\t\tfor (i = pos; code = getCode(str, i), code < 76 && code > 65;) ++i;\n\t\t\treturn +str.slice(pos - 1, i)\n\t\t}\n\t\tcode = alphabet && alphabet.indexOf(str.charAt(pos))\n\t\treturn code > -1 ? code + 76 : ((code = str.charCodeAt(pos) || 0), code < 45 || code > 127) ? code\n\t\t\t: code < 46 ? 65               // -\n\t\t\t: code < 48 ? code - 1\n\t\t\t: code < 58 ? code + 18        // 0-9\n\t\t\t: code < 65 ? code - 11\n\t\t\t: code < 91 ? code + 11        // A-Z\n\t\t\t: code < 97 ? code - 37\n\t\t\t: code < 123 ? code + 5        // a-z\n\t\t\t: code - 63\n\t}\n\n\n\tif ((a+=\"\") != (b+=\"\")) for (;codeB;) {\n\t\tcodeA = getCode(a, posA++)\n\t\tcodeB = getCode(b, posB++)\n\n\t\tif (codeA < 76 && codeB < 76 && codeA > 66 && codeB > 66) {\n\t\t\tcodeA = getCode(a, posA, posA)\n\t\t\tcodeB = getCode(b, posB, posA = i)\n\t\t\tposB = i\n\t\t}\n\n\t\tif (codeA != codeB) return (codeA < codeB) ? -1 : 1\n\t}\n\treturn 0\n}\n\ntry {\n\tmodule.exports = naturalCompare;\n} catch (e) {\n\tString.naturalCompare = naturalCompare;\n}\n", "/**\n * @fileoverview Rule to require object keys to be sorted\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\"),\n\tnaturalCompare = require(\"natural-compare\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Gets the property name of the given `Property` node.\n *\n * - If the property's key is an `Identifier` node, this returns the key's name\n *   whether it's a computed property or not.\n * - If the property has a static name, this returns the static name.\n * - Otherwise, this returns null.\n * @param {ASTNode} node The `Property` node to get.\n * @returns {string|null} The property name or null.\n * @private\n */\nfunction getPropertyName(node) {\n\tconst staticName = astUtils.getStaticPropertyName(node);\n\n\tif (staticName !== null) {\n\t\treturn staticName;\n\t}\n\n\treturn node.key.name || null;\n}\n\n/**\n * Functions which check that the given 2 names are in specific order.\n *\n * Postfix `I` is meant insensitive.\n * Postfix `N` is meant natural.\n * @private\n */\nconst isValidOrders = {\n\tasc(a, b) {\n\t\treturn a <= b;\n\t},\n\tascI(a, b) {\n\t\treturn a.toLowerCase() <= b.toLowerCase();\n\t},\n\tascN(a, b) {\n\t\treturn naturalCompare(a, b) <= 0;\n\t},\n\tascIN(a, b) {\n\t\treturn naturalCompare(a.toLowerCase(), b.toLowerCase()) <= 0;\n\t},\n\tdesc(a, b) {\n\t\treturn isValidOrders.asc(b, a);\n\t},\n\tdescI(a, b) {\n\t\treturn isValidOrders.ascI(b, a);\n\t},\n\tdescN(a, b) {\n\t\treturn isValidOrders.ascN(b, a);\n\t},\n\tdescIN(a, b) {\n\t\treturn isValidOrders.ascIN(b, a);\n\t},\n};\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t\"asc\",\n\t\t\t{\n\t\t\t\tallowLineSeparatedGroups: false,\n\t\t\t\tcaseSensitive: true,\n\t\t\t\tignoreComputedKeys: false,\n\t\t\t\tminKeys: 2,\n\t\t\t\tnatural: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: \"Require object keys to be sorted\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/sort-keys\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"asc\", \"desc\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tcaseSensitive: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tnatural: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tminKeys: {\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 2,\n\t\t\t\t\t},\n\t\t\t\t\tallowLineSeparatedGroups: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tignoreComputedKeys: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tsortKeys:\n\t\t\t\t\"Expected object keys to be in {{natural}}{{insensitive}}{{order}}ending order. '{{thisName}}' should be before '{{prevName}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [\n\t\t\torder,\n\t\t\t{\n\t\t\t\tcaseSensitive,\n\t\t\t\tnatural,\n\t\t\t\tminKeys,\n\t\t\t\tallowLineSeparatedGroups,\n\t\t\t\tignoreComputedKeys,\n\t\t\t},\n\t\t] = context.options;\n\t\tconst insensitive = !caseSensitive;\n\t\tconst isValidOrder =\n\t\t\tisValidOrders[\n\t\t\t\torder + (insensitive ? \"I\" : \"\") + (natural ? \"N\" : \"\")\n\t\t\t];\n\n\t\t// The stack to save the previous property's name for each object literals.\n\t\tlet stack = null;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tObjectExpression(node) {\n\t\t\t\tstack = {\n\t\t\t\t\tupper: stack,\n\t\t\t\t\tprevNode: null,\n\t\t\t\t\tprevBlankLine: false,\n\t\t\t\t\tprevName: null,\n\t\t\t\t\tnumKeys: node.properties.length,\n\t\t\t\t};\n\t\t\t},\n\n\t\t\t\"ObjectExpression:exit\"() {\n\t\t\t\tstack = stack.upper;\n\t\t\t},\n\n\t\t\tSpreadElement(node) {\n\t\t\t\tif (node.parent.type === \"ObjectExpression\") {\n\t\t\t\t\tstack.prevName = null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tProperty(node) {\n\t\t\t\tif (node.parent.type === \"ObjectPattern\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (ignoreComputedKeys && node.computed) {\n\t\t\t\t\tstack.prevName = null; // reset sort\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst prevName = stack.prevName;\n\t\t\t\tconst numKeys = stack.numKeys;\n\t\t\t\tconst thisName = getPropertyName(node);\n\n\t\t\t\t// Get tokens between current node and previous node\n\t\t\t\tconst tokens =\n\t\t\t\t\tstack.prevNode &&\n\t\t\t\t\tsourceCode.getTokensBetween(stack.prevNode, node, {\n\t\t\t\t\t\tincludeComments: true,\n\t\t\t\t\t});\n\n\t\t\t\tlet isBlankLineBetweenNodes = stack.prevBlankLine;\n\n\t\t\t\tif (tokens) {\n\t\t\t\t\t// check blank line between tokens\n\t\t\t\t\ttokens.forEach((token, index) => {\n\t\t\t\t\t\tconst previousToken = tokens[index - 1];\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tpreviousToken &&\n\t\t\t\t\t\t\ttoken.loc.start.line - previousToken.loc.end.line >\n\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tisBlankLineBetweenNodes = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// check blank line between the current node and the last token\n\t\t\t\t\tif (\n\t\t\t\t\t\t!isBlankLineBetweenNodes &&\n\t\t\t\t\t\tnode.loc.start.line - tokens.at(-1).loc.end.line > 1\n\t\t\t\t\t) {\n\t\t\t\t\t\tisBlankLineBetweenNodes = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// check blank line between the first token and the previous node\n\t\t\t\t\tif (\n\t\t\t\t\t\t!isBlankLineBetweenNodes &&\n\t\t\t\t\t\ttokens[0].loc.start.line - stack.prevNode.loc.end.line >\n\t\t\t\t\t\t\t1\n\t\t\t\t\t) {\n\t\t\t\t\t\tisBlankLineBetweenNodes = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tstack.prevNode = node;\n\n\t\t\t\tif (thisName !== null) {\n\t\t\t\t\tstack.prevName = thisName;\n\t\t\t\t}\n\n\t\t\t\tif (allowLineSeparatedGroups && isBlankLineBetweenNodes) {\n\t\t\t\t\tstack.prevBlankLine = thisName === null;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tprevName === null ||\n\t\t\t\t\tthisName === null ||\n\t\t\t\t\tnumKeys < minKeys\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!isValidOrder(prevName, thisName)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: node.key.loc,\n\t\t\t\t\t\tmessageId: \"sortKeys\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tthisName,\n\t\t\t\t\t\t\tprevName,\n\t\t\t\t\t\t\torder,\n\t\t\t\t\t\t\tinsensitive: insensitive ? \"insensitive \" : \"\",\n\t\t\t\t\t\t\tnatural: natural ? \"natural \" : \"\",\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to require sorting of variables within a single Variable Declaration block\n * @author Ilya Volodin\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tignoreCase: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require variables within the same declaration block to be sorted\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/sort-vars\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tignoreCase: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\tsortVars:\n\t\t\t\t\"Variables within the same declaration block should be sorted alphabetically.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ ignoreCase }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tVariableDeclaration(node) {\n\t\t\t\tconst idDeclarations = node.declarations.filter(\n\t\t\t\t\tdecl => decl.id.type === \"Identifier\",\n\t\t\t\t);\n\t\t\t\tconst getSortableName = ignoreCase\n\t\t\t\t\t? decl => decl.id.name.toLowerCase()\n\t\t\t\t\t: decl => decl.id.name;\n\t\t\t\tconst unfixable = idDeclarations.some(\n\t\t\t\t\tdecl => decl.init !== null && decl.init.type !== \"Literal\",\n\t\t\t\t);\n\t\t\t\tlet fixed = false;\n\n\t\t\t\tidDeclarations.slice(1).reduce((memo, decl) => {\n\t\t\t\t\tconst lastVariableName = getSortableName(memo),\n\t\t\t\t\t\tcurrentVariableName = getSortableName(decl);\n\n\t\t\t\t\tif (currentVariableName < lastVariableName) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode: decl,\n\t\t\t\t\t\t\tmessageId: \"sortVars\",\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\tif (unfixable || fixed) {\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tidDeclarations[0].range[0],\n\t\t\t\t\t\t\t\t\t\tidDeclarations.at(-1).range[1],\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tidDeclarations\n\n\t\t\t\t\t\t\t\t\t\t// Clone the idDeclarations array to avoid mutating it\n\t\t\t\t\t\t\t\t\t\t.slice()\n\n\t\t\t\t\t\t\t\t\t\t// Sort the array into the desired order\n\t\t\t\t\t\t\t\t\t\t.sort((declA, declB) => {\n\t\t\t\t\t\t\t\t\t\t\tconst aName =\n\t\t\t\t\t\t\t\t\t\t\t\tgetSortableName(declA);\n\t\t\t\t\t\t\t\t\t\t\tconst bName =\n\t\t\t\t\t\t\t\t\t\t\t\tgetSortableName(declB);\n\n\t\t\t\t\t\t\t\t\t\t\treturn aName > bName ? 1 : -1;\n\t\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\t\t\t// Build a string out of the sorted list of identifier declarations and the text between the originals\n\t\t\t\t\t\t\t\t\t\t.reduce(\n\t\t\t\t\t\t\t\t\t\t\t(sourceText, identifier, index) => {\n\t\t\t\t\t\t\t\t\t\t\t\tconst textAfterIdentifier =\n\t\t\t\t\t\t\t\t\t\t\t\t\tindex ===\n\t\t\t\t\t\t\t\t\t\t\t\t\tidDeclarations.length - 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: sourceCode\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.getText()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tidDeclarations[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t].range[1],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tidDeclarations[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t].range[0],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\tsourceText +\n\t\t\t\t\t\t\t\t\t\t\t\t\tsourceCode.getText(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tidentifier,\n\t\t\t\t\t\t\t\t\t\t\t\t\t) +\n\t\t\t\t\t\t\t\t\t\t\t\t\ttextAfterIdentifier\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfixed = true;\n\t\t\t\t\t\treturn memo;\n\t\t\t\t\t}\n\t\t\t\t\treturn decl;\n\t\t\t\t}, idDeclarations[0]);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview A rule to ensure whitespace before blocks.\n * @author Mathias Schreck <https://github.com/lo1tuma>\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether the given node represents the body of a function.\n * @param {ASTNode} node the node to check.\n * @returns {boolean} `true` if the node is function body.\n */\nfunction isFunctionBody(node) {\n\tconst parent = node.parent;\n\n\treturn (\n\t\tnode.type === \"BlockStatement\" &&\n\t\tastUtils.isFunction(parent) &&\n\t\tparent.body === node\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"space-before-blocks\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/space-before-blocks\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce consistent spacing before blocks\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/space-before-blocks\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tkeywords: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\", \"off\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfunctions: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\", \"off\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tclasses: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\", \"off\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedSpace: \"Unexpected space before opening brace.\",\n\t\t\tmissingSpace: \"Missing space before opening brace.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst config = context.options[0],\n\t\t\tsourceCode = context.sourceCode;\n\t\tlet alwaysFunctions = true,\n\t\t\talwaysKeywords = true,\n\t\t\talwaysClasses = true,\n\t\t\tneverFunctions = false,\n\t\t\tneverKeywords = false,\n\t\t\tneverClasses = false;\n\n\t\tif (typeof config === \"object\") {\n\t\t\talwaysFunctions = config.functions === \"always\";\n\t\t\talwaysKeywords = config.keywords === \"always\";\n\t\t\talwaysClasses = config.classes === \"always\";\n\t\t\tneverFunctions = config.functions === \"never\";\n\t\t\tneverKeywords = config.keywords === \"never\";\n\t\t\tneverClasses = config.classes === \"never\";\n\t\t} else if (config === \"never\") {\n\t\t\talwaysFunctions = false;\n\t\t\talwaysKeywords = false;\n\t\t\talwaysClasses = false;\n\t\t\tneverFunctions = true;\n\t\t\tneverKeywords = true;\n\t\t\tneverClasses = true;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether the spacing before the given block is already controlled by another rule:\n\t\t * - `arrow-spacing` checks spaces after `=>`.\n\t\t * - `keyword-spacing` checks spaces after keywords in certain contexts.\n\t\t * - `switch-colon-spacing` checks spaces after `:` of switch cases.\n\t\t * @param {Token} precedingToken first token before the block.\n\t\t * @param {ASTNode|Token} node `BlockStatement` node or `{` token of a `SwitchStatement` node.\n\t\t * @returns {boolean} `true` if requiring or disallowing spaces before the given block could produce conflicts with other rules.\n\t\t */\n\t\tfunction isConflicted(precedingToken, node) {\n\t\t\treturn (\n\t\t\t\tastUtils.isArrowToken(precedingToken) ||\n\t\t\t\t(astUtils.isKeywordToken(precedingToken) &&\n\t\t\t\t\t!isFunctionBody(node)) ||\n\t\t\t\t(astUtils.isColonToken(precedingToken) &&\n\t\t\t\t\tnode.parent &&\n\t\t\t\t\tnode.parent.type === \"SwitchCase\" &&\n\t\t\t\t\tprecedingToken ===\n\t\t\t\t\t\tastUtils.getSwitchCaseColonToken(\n\t\t\t\t\t\t\tnode.parent,\n\t\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\t))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks the given BlockStatement node has a preceding space if it doesn\u2019t start on a new line.\n\t\t * @param {ASTNode|Token} node The AST node of a BlockStatement.\n\t\t * @returns {void} undefined.\n\t\t */\n\t\tfunction checkPrecedingSpace(node) {\n\t\t\tconst precedingToken = sourceCode.getTokenBefore(node);\n\n\t\t\tif (\n\t\t\t\tprecedingToken &&\n\t\t\t\t!isConflicted(precedingToken, node) &&\n\t\t\t\tastUtils.isTokenOnSameLine(precedingToken, node)\n\t\t\t) {\n\t\t\t\tconst hasSpace = sourceCode.isSpaceBetween(\n\t\t\t\t\tprecedingToken,\n\t\t\t\t\tnode,\n\t\t\t\t);\n\t\t\t\tlet requireSpace;\n\t\t\t\tlet requireNoSpace;\n\n\t\t\t\tif (isFunctionBody(node)) {\n\t\t\t\t\trequireSpace = alwaysFunctions;\n\t\t\t\t\trequireNoSpace = neverFunctions;\n\t\t\t\t} else if (node.type === \"ClassBody\") {\n\t\t\t\t\trequireSpace = alwaysClasses;\n\t\t\t\t\trequireNoSpace = neverClasses;\n\t\t\t\t} else {\n\t\t\t\t\trequireSpace = alwaysKeywords;\n\t\t\t\t\trequireNoSpace = neverKeywords;\n\t\t\t\t}\n\n\t\t\t\tif (requireSpace && !hasSpace) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"missingSpace\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.insertTextBefore(node, \" \");\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t} else if (requireNoSpace && hasSpace) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpectedSpace\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\t\tprecedingToken.range[1],\n\t\t\t\t\t\t\t\tnode.range[0],\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks if the CaseBlock of an given SwitchStatement node has a preceding space.\n\t\t * @param {ASTNode} node The node of a SwitchStatement.\n\t\t * @returns {void} undefined.\n\t\t */\n\t\tfunction checkSpaceBeforeCaseBlock(node) {\n\t\t\tconst cases = node.cases;\n\t\t\tlet openingBrace;\n\n\t\t\tif (cases.length > 0) {\n\t\t\t\topeningBrace = sourceCode.getTokenBefore(cases[0]);\n\t\t\t} else {\n\t\t\t\topeningBrace = sourceCode.getLastToken(node, 1);\n\t\t\t}\n\n\t\t\tcheckPrecedingSpace(openingBrace);\n\t\t}\n\n\t\treturn {\n\t\t\tBlockStatement: checkPrecedingSpace,\n\t\t\tClassBody: checkPrecedingSpace,\n\t\t\tSwitchStatement: checkSpaceBeforeCaseBlock,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to validate spacing before function paren.\n * @author Mathias Schreck <https://github.com/lo1tuma>\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"space-before-function-paren\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/space-before-function-paren\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce consistent spacing before `function` definition opening parenthesis\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/space-before-function-paren\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tanonymous: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\", \"ignore\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnamed: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\", \"ignore\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tasyncArrow: {\n\t\t\t\t\t\t\t\tenum: [\"always\", \"never\", \"ignore\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedSpace: \"Unexpected space before function parentheses.\",\n\t\t\tmissingSpace: \"Missing space before function parentheses.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst baseConfig =\n\t\t\ttypeof context.options[0] === \"string\"\n\t\t\t\t? context.options[0]\n\t\t\t\t: \"always\";\n\t\tconst overrideConfig =\n\t\t\ttypeof context.options[0] === \"object\" ? context.options[0] : {};\n\n\t\t/**\n\t\t * Determines whether a function has a name.\n\t\t * @param {ASTNode} node The function node.\n\t\t * @returns {boolean} Whether the function has a name.\n\t\t */\n\t\tfunction isNamedFunction(node) {\n\t\t\tif (node.id) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst parent = node.parent;\n\n\t\t\treturn (\n\t\t\t\tparent.type === \"MethodDefinition\" ||\n\t\t\t\t(parent.type === \"Property\" &&\n\t\t\t\t\t(parent.kind === \"get\" ||\n\t\t\t\t\t\tparent.kind === \"set\" ||\n\t\t\t\t\t\tparent.method))\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Gets the config for a given function\n\t\t * @param {ASTNode} node The function node\n\t\t * @returns {string} \"always\", \"never\", or \"ignore\"\n\t\t */\n\t\tfunction getConfigForFunction(node) {\n\t\t\tif (node.type === \"ArrowFunctionExpression\") {\n\t\t\t\t// Always ignore non-async functions and arrow functions without parens, e.g. async foo => bar\n\t\t\t\tif (\n\t\t\t\t\tnode.async &&\n\t\t\t\t\tastUtils.isOpeningParenToken(\n\t\t\t\t\t\tsourceCode.getFirstToken(node, { skip: 1 }),\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn overrideConfig.asyncArrow || baseConfig;\n\t\t\t\t}\n\t\t\t} else if (isNamedFunction(node)) {\n\t\t\t\treturn overrideConfig.named || baseConfig;\n\n\t\t\t\t// `generator-star-spacing` should warn anonymous generators. E.g. `function* () {}`\n\t\t\t} else if (!node.generator) {\n\t\t\t\treturn overrideConfig.anonymous || baseConfig;\n\t\t\t}\n\n\t\t\treturn \"ignore\";\n\t\t}\n\n\t\t/**\n\t\t * Checks the parens of a function node\n\t\t * @param {ASTNode} node A function node\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkFunction(node) {\n\t\t\tconst functionConfig = getConfigForFunction(node);\n\n\t\t\tif (functionConfig === \"ignore\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst rightToken = sourceCode.getFirstToken(\n\t\t\t\tnode,\n\t\t\t\tastUtils.isOpeningParenToken,\n\t\t\t);\n\t\t\tconst leftToken = sourceCode.getTokenBefore(rightToken);\n\t\t\tconst hasSpacing = sourceCode.isSpaceBetween(leftToken, rightToken);\n\n\t\t\tif (hasSpacing && functionConfig === \"never\") {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: {\n\t\t\t\t\t\tstart: leftToken.loc.end,\n\t\t\t\t\t\tend: rightToken.loc.start,\n\t\t\t\t\t},\n\t\t\t\t\tmessageId: \"unexpectedSpace\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tconst comments =\n\t\t\t\t\t\t\tsourceCode.getCommentsBefore(rightToken);\n\n\t\t\t\t\t\t// Don't fix anything if there's a single line comment between the left and the right token\n\t\t\t\t\t\tif (comments.some(comment => comment.type === \"Line\")) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t[leftToken.range[1], rightToken.range[0]],\n\t\t\t\t\t\t\tcomments.reduce(\n\t\t\t\t\t\t\t\t(text, comment) =>\n\t\t\t\t\t\t\t\t\ttext + sourceCode.getText(comment),\n\t\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else if (!hasSpacing && functionConfig === \"always\") {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: rightToken.loc,\n\t\t\t\t\tmessageId: \"missingSpace\",\n\t\t\t\t\tfix: fixer => fixer.insertTextAfter(leftToken, \" \"),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tArrowFunctionExpression: checkFunction,\n\t\t\tFunctionDeclaration: checkFunction,\n\t\t\tFunctionExpression: checkFunction,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Disallows or enforces spaces inside of parentheses.\n * @author Jonathan Rajavuori\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"space-in-parens\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/space-in-parens\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce consistent spacing inside parentheses\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/space-in-parens\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\texceptions: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\tenum: [\"{}\", \"[]\", \"()\", \"empty\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tuniqueItems: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tmissingOpeningSpace: \"There must be a space after this paren.\",\n\t\t\tmissingClosingSpace: \"There must be a space before this paren.\",\n\t\t\trejectedOpeningSpace: \"There should be no space after this paren.\",\n\t\t\trejectedClosingSpace: \"There should be no space before this paren.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst ALWAYS = context.options[0] === \"always\",\n\t\t\texceptionsArrayOptions =\n\t\t\t\t(context.options[1] && context.options[1].exceptions) || [],\n\t\t\toptions = {};\n\n\t\tlet exceptions;\n\n\t\tif (exceptionsArrayOptions.length) {\n\t\t\toptions.braceException = exceptionsArrayOptions.includes(\"{}\");\n\t\t\toptions.bracketException = exceptionsArrayOptions.includes(\"[]\");\n\t\t\toptions.parenException = exceptionsArrayOptions.includes(\"()\");\n\t\t\toptions.empty = exceptionsArrayOptions.includes(\"empty\");\n\t\t}\n\n\t\t/**\n\t\t * Produces an object with the opener and closer exception values\n\t\t * @returns {Object} `openers` and `closers` exception values\n\t\t * @private\n\t\t */\n\t\tfunction getExceptions() {\n\t\t\tconst openers = [],\n\t\t\t\tclosers = [];\n\n\t\t\tif (options.braceException) {\n\t\t\t\topeners.push(\"{\");\n\t\t\t\tclosers.push(\"}\");\n\t\t\t}\n\n\t\t\tif (options.bracketException) {\n\t\t\t\topeners.push(\"[\");\n\t\t\t\tclosers.push(\"]\");\n\t\t\t}\n\n\t\t\tif (options.parenException) {\n\t\t\t\topeners.push(\"(\");\n\t\t\t\tclosers.push(\")\");\n\t\t\t}\n\n\t\t\tif (options.empty) {\n\t\t\t\topeners.push(\")\");\n\t\t\t\tclosers.push(\"(\");\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\topeners,\n\t\t\t\tclosers,\n\t\t\t};\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Determines if a token is one of the exceptions for the opener paren\n\t\t * @param {Object} token The token to check\n\t\t * @returns {boolean} True if the token is one of the exceptions for the opener paren\n\t\t */\n\t\tfunction isOpenerException(token) {\n\t\t\treturn exceptions.openers.includes(token.value);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a token is one of the exceptions for the closer paren\n\t\t * @param {Object} token The token to check\n\t\t * @returns {boolean} True if the token is one of the exceptions for the closer paren\n\t\t */\n\t\tfunction isCloserException(token) {\n\t\t\treturn exceptions.closers.includes(token.value);\n\t\t}\n\n\t\t/**\n\t\t * Determines if an opening paren is immediately followed by a required space\n\t\t * @param {Object} openingParenToken The paren token\n\t\t * @param {Object} tokenAfterOpeningParen The token after it\n\t\t * @returns {boolean} True if the opening paren is missing a required space\n\t\t */\n\t\tfunction openerMissingSpace(openingParenToken, tokenAfterOpeningParen) {\n\t\t\tif (\n\t\t\t\tsourceCode.isSpaceBetween(\n\t\t\t\t\topeningParenToken,\n\t\t\t\t\ttokenAfterOpeningParen,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!options.empty &&\n\t\t\t\tastUtils.isClosingParenToken(tokenAfterOpeningParen)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (ALWAYS) {\n\t\t\t\treturn !isOpenerException(tokenAfterOpeningParen);\n\t\t\t}\n\t\t\treturn isOpenerException(tokenAfterOpeningParen);\n\t\t}\n\n\t\t/**\n\t\t * Determines if an opening paren is immediately followed by a disallowed space\n\t\t * @param {Object} openingParenToken The paren token\n\t\t * @param {Object} tokenAfterOpeningParen The token after it\n\t\t * @returns {boolean} True if the opening paren has a disallowed space\n\t\t */\n\t\tfunction openerRejectsSpace(openingParenToken, tokenAfterOpeningParen) {\n\t\t\tif (\n\t\t\t\t!astUtils.isTokenOnSameLine(\n\t\t\t\t\topeningParenToken,\n\t\t\t\t\ttokenAfterOpeningParen,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (tokenAfterOpeningParen.type === \"Line\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!sourceCode.isSpaceBetween(\n\t\t\t\t\topeningParenToken,\n\t\t\t\t\ttokenAfterOpeningParen,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (ALWAYS) {\n\t\t\t\treturn isOpenerException(tokenAfterOpeningParen);\n\t\t\t}\n\t\t\treturn !isOpenerException(tokenAfterOpeningParen);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a closing paren is immediately preceded by a required space\n\t\t * @param {Object} tokenBeforeClosingParen The token before the paren\n\t\t * @param {Object} closingParenToken The paren token\n\t\t * @returns {boolean} True if the closing paren is missing a required space\n\t\t */\n\t\tfunction closerMissingSpace(\n\t\t\ttokenBeforeClosingParen,\n\t\t\tclosingParenToken,\n\t\t) {\n\t\t\tif (\n\t\t\t\tsourceCode.isSpaceBetween(\n\t\t\t\t\ttokenBeforeClosingParen,\n\t\t\t\t\tclosingParenToken,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!options.empty &&\n\t\t\t\tastUtils.isOpeningParenToken(tokenBeforeClosingParen)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (ALWAYS) {\n\t\t\t\treturn !isCloserException(tokenBeforeClosingParen);\n\t\t\t}\n\t\t\treturn isCloserException(tokenBeforeClosingParen);\n\t\t}\n\n\t\t/**\n\t\t * Determines if a closer paren is immediately preceded by a disallowed space\n\t\t * @param {Object} tokenBeforeClosingParen The token before the paren\n\t\t * @param {Object} closingParenToken The paren token\n\t\t * @returns {boolean} True if the closing paren has a disallowed space\n\t\t */\n\t\tfunction closerRejectsSpace(\n\t\t\ttokenBeforeClosingParen,\n\t\t\tclosingParenToken,\n\t\t) {\n\t\t\tif (\n\t\t\t\t!astUtils.isTokenOnSameLine(\n\t\t\t\t\ttokenBeforeClosingParen,\n\t\t\t\t\tclosingParenToken,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!sourceCode.isSpaceBetween(\n\t\t\t\t\ttokenBeforeClosingParen,\n\t\t\t\t\tclosingParenToken,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (ALWAYS) {\n\t\t\t\treturn isCloserException(tokenBeforeClosingParen);\n\t\t\t}\n\t\t\treturn !isCloserException(tokenBeforeClosingParen);\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram: function checkParenSpaces(node) {\n\t\t\t\texceptions = getExceptions();\n\t\t\t\tconst tokens = sourceCode.tokensAndComments;\n\n\t\t\t\ttokens.forEach((token, i) => {\n\t\t\t\t\tconst prevToken = tokens[i - 1];\n\t\t\t\t\tconst nextToken = tokens[i + 1];\n\n\t\t\t\t\t// if token is not an opening or closing paren token, do nothing\n\t\t\t\t\tif (\n\t\t\t\t\t\t!astUtils.isOpeningParenToken(token) &&\n\t\t\t\t\t\t!astUtils.isClosingParenToken(token)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// if token is an opening paren and is not followed by a required space\n\t\t\t\t\tif (\n\t\t\t\t\t\ttoken.value === \"(\" &&\n\t\t\t\t\t\topenerMissingSpace(token, nextToken)\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tloc: token.loc,\n\t\t\t\t\t\t\tmessageId: \"missingOpeningSpace\",\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\treturn fixer.insertTextAfter(token, \" \");\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// if token is an opening paren and is followed by a disallowed space\n\t\t\t\t\tif (\n\t\t\t\t\t\ttoken.value === \"(\" &&\n\t\t\t\t\t\topenerRejectsSpace(token, nextToken)\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\t\tstart: token.loc.end,\n\t\t\t\t\t\t\t\tend: nextToken.loc.start,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmessageId: \"rejectedOpeningSpace\",\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\t\t\ttoken.range[1],\n\t\t\t\t\t\t\t\t\tnextToken.range[0],\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// if token is a closing paren and is not preceded by a required space\n\t\t\t\t\tif (\n\t\t\t\t\t\ttoken.value === \")\" &&\n\t\t\t\t\t\tcloserMissingSpace(prevToken, token)\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tloc: token.loc,\n\t\t\t\t\t\t\tmessageId: \"missingClosingSpace\",\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\treturn fixer.insertTextBefore(token, \" \");\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// if token is a closing paren and is preceded by a disallowed space\n\t\t\t\t\tif (\n\t\t\t\t\t\ttoken.value === \")\" &&\n\t\t\t\t\t\tcloserRejectsSpace(prevToken, token)\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\t\tstart: prevToken.loc.end,\n\t\t\t\t\t\t\t\tend: token.loc.start,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmessageId: \"rejectedClosingSpace\",\n\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\t\t\tprevToken.range[1],\n\t\t\t\t\t\t\t\t\ttoken.range[0],\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Require spaces around infix operators\n * @author Michael Ficarra\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\nconst { isEqToken } = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"space-infix-ops\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/space-infix-ops\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require spacing around infix operators\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/space-infix-ops\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tint32Hint: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tmissingSpace: \"Operator '{{operator}}' must be spaced.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst int32Hint = context.options[0]\n\t\t\t? context.options[0].int32Hint === true\n\t\t\t: false;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Returns the first token which violates the rule\n\t\t * @param {ASTNode} left The left node of the main node\n\t\t * @param {ASTNode} right The right node of the main node\n\t\t * @param {string} op The operator of the main node\n\t\t * @returns {Object} The violator token or null\n\t\t * @private\n\t\t */\n\t\tfunction getFirstNonSpacedToken(left, right, op) {\n\t\t\tconst operator = sourceCode.getFirstTokenBetween(\n\t\t\t\tleft,\n\t\t\t\tright,\n\t\t\t\ttoken => token.value === op,\n\t\t\t);\n\t\t\tconst prev = sourceCode.getTokenBefore(operator);\n\t\t\tconst next = sourceCode.getTokenAfter(operator);\n\n\t\t\tif (\n\t\t\t\t!sourceCode.isSpaceBetween(prev, operator) ||\n\t\t\t\t!sourceCode.isSpaceBetween(operator, next)\n\t\t\t) {\n\t\t\t\treturn operator;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\t/**\n\t\t * Reports an AST node as a rule violation\n\t\t * @param {ASTNode} mainNode The node to report\n\t\t * @param {Object} culpritToken The token which has a problem\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction report(mainNode, culpritToken) {\n\t\t\tcontext.report({\n\t\t\t\tnode: mainNode,\n\t\t\t\tloc: culpritToken.loc,\n\t\t\t\tmessageId: \"missingSpace\",\n\t\t\t\tdata: {\n\t\t\t\t\toperator: culpritToken.value,\n\t\t\t\t},\n\t\t\t\tfix(fixer) {\n\t\t\t\t\tconst previousToken =\n\t\t\t\t\t\tsourceCode.getTokenBefore(culpritToken);\n\t\t\t\t\tconst afterToken = sourceCode.getTokenAfter(culpritToken);\n\t\t\t\t\tlet fixString = \"\";\n\n\t\t\t\t\tif (culpritToken.range[0] - previousToken.range[1] === 0) {\n\t\t\t\t\t\tfixString = \" \";\n\t\t\t\t\t}\n\n\t\t\t\t\tfixString += culpritToken.value;\n\n\t\t\t\t\tif (afterToken.range[0] - culpritToken.range[1] === 0) {\n\t\t\t\t\t\tfixString += \" \";\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fixer.replaceText(culpritToken, fixString);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Check if the node is binary then report\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkBinary(node) {\n\t\t\tconst leftNode = node.left.typeAnnotation\n\t\t\t\t? node.left.typeAnnotation\n\t\t\t\t: node.left;\n\t\t\tconst rightNode = node.right;\n\n\t\t\t// search for = in AssignmentPattern nodes\n\t\t\tconst operator = node.operator || \"=\";\n\n\t\t\tconst nonSpacedNode = getFirstNonSpacedToken(\n\t\t\t\tleftNode,\n\t\t\t\trightNode,\n\t\t\t\toperator,\n\t\t\t);\n\n\t\t\tif (nonSpacedNode) {\n\t\t\t\tif (!(int32Hint && sourceCode.getText(node).endsWith(\"|0\"))) {\n\t\t\t\t\treport(node, nonSpacedNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check if the node is conditional\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkConditional(node) {\n\t\t\tconst nonSpacedConsequentNode = getFirstNonSpacedToken(\n\t\t\t\tnode.test,\n\t\t\t\tnode.consequent,\n\t\t\t\t\"?\",\n\t\t\t);\n\t\t\tconst nonSpacedAlternateNode = getFirstNonSpacedToken(\n\t\t\t\tnode.consequent,\n\t\t\t\tnode.alternate,\n\t\t\t\t\":\",\n\t\t\t);\n\n\t\t\tif (nonSpacedConsequentNode) {\n\t\t\t\treport(node, nonSpacedConsequentNode);\n\t\t\t}\n\n\t\t\tif (nonSpacedAlternateNode) {\n\t\t\t\treport(node, nonSpacedAlternateNode);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check if the node is a variable\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkVar(node) {\n\t\t\tconst leftNode = node.id.typeAnnotation\n\t\t\t\t? node.id.typeAnnotation\n\t\t\t\t: node.id;\n\t\t\tconst rightNode = node.init;\n\n\t\t\tif (rightNode) {\n\t\t\t\tconst nonSpacedNode = getFirstNonSpacedToken(\n\t\t\t\t\tleftNode,\n\t\t\t\t\trightNode,\n\t\t\t\t\t\"=\",\n\t\t\t\t);\n\n\t\t\t\tif (nonSpacedNode) {\n\t\t\t\t\treport(node, nonSpacedNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tAssignmentExpression: checkBinary,\n\t\t\tAssignmentPattern: checkBinary,\n\t\t\tBinaryExpression: checkBinary,\n\t\t\tLogicalExpression: checkBinary,\n\t\t\tConditionalExpression: checkConditional,\n\t\t\tVariableDeclarator: checkVar,\n\n\t\t\tPropertyDefinition(node) {\n\t\t\t\tif (!node.value) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * Because of computed properties and type annotations, some\n\t\t\t\t * tokens may exist between `node.key` and `=`.\n\t\t\t\t * Therefore, find the `=` from the right.\n\t\t\t\t */\n\t\t\t\tconst operatorToken = sourceCode.getTokenBefore(\n\t\t\t\t\tnode.value,\n\t\t\t\t\tisEqToken,\n\t\t\t\t);\n\t\t\t\tconst leftToken = sourceCode.getTokenBefore(operatorToken);\n\t\t\t\tconst rightToken = sourceCode.getTokenAfter(operatorToken);\n\n\t\t\t\tif (\n\t\t\t\t\t!sourceCode.isSpaceBetween(leftToken, operatorToken) ||\n\t\t\t\t\t!sourceCode.isSpaceBetween(operatorToken, rightToken)\n\t\t\t\t) {\n\t\t\t\t\treport(node, operatorToken);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview This rule should require or disallow spaces before or after unary operations.\n * @author Marcin Kumorek\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"space-unary-ops\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/space-unary-ops\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce consistent spacing before or after unary operators\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/space-unary-ops\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\twords: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t},\n\t\t\t\t\tnonwords: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t\toverrides: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tadditionalProperties: {\n\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\tunexpectedBefore:\n\t\t\t\t\"Unexpected space before unary operator '{{operator}}'.\",\n\t\t\tunexpectedAfter:\n\t\t\t\t\"Unexpected space after unary operator '{{operator}}'.\",\n\t\t\tunexpectedAfterWord:\n\t\t\t\t\"Unexpected space after unary word operator '{{word}}'.\",\n\t\t\twordOperator:\n\t\t\t\t\"Unary word operator '{{word}}' must be followed by whitespace.\",\n\t\t\toperator:\n\t\t\t\t\"Unary operator '{{operator}}' must be followed by whitespace.\",\n\t\t\tbeforeUnaryExpressions:\n\t\t\t\t\"Space is required before unary expressions '{{token}}'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst options = context.options[0] || { words: true, nonwords: false };\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Check if the node is the first \"!\" in a \"!!\" convert to Boolean expression\n\t\t * @param {ASTnode} node AST node\n\t\t * @returns {boolean} Whether or not the node is first \"!\" in \"!!\"\n\t\t */\n\t\tfunction isFirstBangInBangBangExpression(node) {\n\t\t\treturn (\n\t\t\t\tnode &&\n\t\t\t\tnode.type === \"UnaryExpression\" &&\n\t\t\t\tnode.argument.operator === \"!\" &&\n\t\t\t\tnode.argument &&\n\t\t\t\tnode.argument.type === \"UnaryExpression\" &&\n\t\t\t\tnode.argument.operator === \"!\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if an override exists for a given operator.\n\t\t * @param {string} operator Operator\n\t\t * @returns {boolean} Whether or not an override has been provided for the operator\n\t\t */\n\t\tfunction overrideExistsForOperator(operator) {\n\t\t\treturn (\n\t\t\t\toptions.overrides && Object.hasOwn(options.overrides, operator)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Gets the value that the override was set to for this operator\n\t\t * @param {string} operator Operator\n\t\t * @returns {boolean} Whether or not an override enforces a space with this operator\n\t\t */\n\t\tfunction overrideEnforcesSpaces(operator) {\n\t\t\treturn options.overrides[operator];\n\t\t}\n\n\t\t/**\n\t\t * Verify Unary Word Operator has spaces after the word operator\n\t\t * @param {ASTnode} node AST node\n\t\t * @param {Object} firstToken first token from the AST node\n\t\t * @param {Object} secondToken second token from the AST node\n\t\t * @param {string} word The word to be used for reporting\n\t\t * @returns {void}\n\t\t */\n\t\tfunction verifyWordHasSpaces(node, firstToken, secondToken, word) {\n\t\t\tif (secondToken.range[0] === firstToken.range[1]) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"wordOperator\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tword,\n\t\t\t\t\t},\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\treturn fixer.insertTextAfter(firstToken, \" \");\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Verify Unary Word Operator doesn't have spaces after the word operator\n\t\t * @param {ASTnode} node AST node\n\t\t * @param {Object} firstToken first token from the AST node\n\t\t * @param {Object} secondToken second token from the AST node\n\t\t * @param {string} word The word to be used for reporting\n\t\t * @returns {void}\n\t\t */\n\t\tfunction verifyWordDoesntHaveSpaces(\n\t\t\tnode,\n\t\t\tfirstToken,\n\t\t\tsecondToken,\n\t\t\tword,\n\t\t) {\n\t\t\tif (astUtils.canTokensBeAdjacent(firstToken, secondToken)) {\n\t\t\t\tif (secondToken.range[0] > firstToken.range[1]) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpectedAfterWord\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tword,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\t\tfirstToken.range[1],\n\t\t\t\t\t\t\t\tsecondToken.range[0],\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check Unary Word Operators for spaces after the word operator\n\t\t * @param {ASTnode} node AST node\n\t\t * @param {Object} firstToken first token from the AST node\n\t\t * @param {Object} secondToken second token from the AST node\n\t\t * @param {string} word The word to be used for reporting\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkUnaryWordOperatorForSpaces(\n\t\t\tnode,\n\t\t\tfirstToken,\n\t\t\tsecondToken,\n\t\t\tword,\n\t\t) {\n\t\t\tif (overrideExistsForOperator(word)) {\n\t\t\t\tif (overrideEnforcesSpaces(word)) {\n\t\t\t\t\tverifyWordHasSpaces(node, firstToken, secondToken, word);\n\t\t\t\t} else {\n\t\t\t\t\tverifyWordDoesntHaveSpaces(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tfirstToken,\n\t\t\t\t\t\tsecondToken,\n\t\t\t\t\t\tword,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else if (options.words) {\n\t\t\t\tverifyWordHasSpaces(node, firstToken, secondToken, word);\n\t\t\t} else {\n\t\t\t\tverifyWordDoesntHaveSpaces(node, firstToken, secondToken, word);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Verifies YieldExpressions satisfy spacing requirements\n\t\t * @param {ASTnode} node AST node\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForSpacesAfterYield(node) {\n\t\t\tconst tokens = sourceCode.getFirstTokens(node, 3),\n\t\t\t\tword = \"yield\";\n\n\t\t\tif (!node.argument || node.delegate) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcheckUnaryWordOperatorForSpaces(node, tokens[0], tokens[1], word);\n\t\t}\n\n\t\t/**\n\t\t * Verifies AwaitExpressions satisfy spacing requirements\n\t\t * @param {ASTNode} node AwaitExpression AST node\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForSpacesAfterAwait(node) {\n\t\t\tconst tokens = sourceCode.getFirstTokens(node, 3);\n\n\t\t\tcheckUnaryWordOperatorForSpaces(\n\t\t\t\tnode,\n\t\t\t\ttokens[0],\n\t\t\t\ttokens[1],\n\t\t\t\t\"await\",\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Verifies UnaryExpression, UpdateExpression and NewExpression have spaces before or after the operator\n\t\t * @param {ASTnode} node AST node\n\t\t * @param {Object} firstToken First token in the expression\n\t\t * @param {Object} secondToken Second token in the expression\n\t\t * @returns {void}\n\t\t */\n\t\tfunction verifyNonWordsHaveSpaces(node, firstToken, secondToken) {\n\t\t\tif (node.prefix) {\n\t\t\t\tif (isFirstBangInBangBangExpression(node)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (firstToken.range[1] === secondToken.range[0]) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"operator\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\toperator: firstToken.value,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.insertTextAfter(firstToken, \" \");\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (firstToken.range[1] === secondToken.range[0]) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"beforeUnaryExpressions\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttoken: secondToken.value,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.insertTextBefore(secondToken, \" \");\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Verifies UnaryExpression, UpdateExpression and NewExpression don't have spaces before or after the operator\n\t\t * @param {ASTnode} node AST node\n\t\t * @param {Object} firstToken First token in the expression\n\t\t * @param {Object} secondToken Second token in the expression\n\t\t * @returns {void}\n\t\t */\n\t\tfunction verifyNonWordsDontHaveSpaces(node, firstToken, secondToken) {\n\t\t\tif (node.prefix) {\n\t\t\t\tif (secondToken.range[0] > firstToken.range[1]) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpectedAfter\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\toperator: firstToken.value,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tastUtils.canTokensBeAdjacent(\n\t\t\t\t\t\t\t\t\tfirstToken,\n\t\t\t\t\t\t\t\t\tsecondToken,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\t\t\tfirstToken.range[1],\n\t\t\t\t\t\t\t\t\tsecondToken.range[0],\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (secondToken.range[0] > firstToken.range[1]) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"unexpectedBefore\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\toperator: secondToken.value,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\t\tfirstToken.range[1],\n\t\t\t\t\t\t\t\tsecondToken.range[0],\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Verifies UnaryExpression, UpdateExpression and NewExpression satisfy spacing requirements\n\t\t * @param {ASTnode} node AST node\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkForSpaces(node) {\n\t\t\tconst tokens =\n\t\t\t\tnode.type === \"UpdateExpression\" && !node.prefix\n\t\t\t\t\t? sourceCode.getLastTokens(node, 2)\n\t\t\t\t\t: sourceCode.getFirstTokens(node, 2);\n\t\t\tconst firstToken = tokens[0];\n\t\t\tconst secondToken = tokens[1];\n\n\t\t\tif (\n\t\t\t\t(node.type === \"NewExpression\" || node.prefix) &&\n\t\t\t\tfirstToken.type === \"Keyword\"\n\t\t\t) {\n\t\t\t\tcheckUnaryWordOperatorForSpaces(\n\t\t\t\t\tnode,\n\t\t\t\t\tfirstToken,\n\t\t\t\t\tsecondToken,\n\t\t\t\t\tfirstToken.value,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst operator = node.prefix ? tokens[0].value : tokens[1].value;\n\n\t\t\tif (overrideExistsForOperator(operator)) {\n\t\t\t\tif (overrideEnforcesSpaces(operator)) {\n\t\t\t\t\tverifyNonWordsHaveSpaces(node, firstToken, secondToken);\n\t\t\t\t} else {\n\t\t\t\t\tverifyNonWordsDontHaveSpaces(node, firstToken, secondToken);\n\t\t\t\t}\n\t\t\t} else if (options.nonwords) {\n\t\t\t\tverifyNonWordsHaveSpaces(node, firstToken, secondToken);\n\t\t\t} else {\n\t\t\t\tverifyNonWordsDontHaveSpaces(node, firstToken, secondToken);\n\t\t\t}\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tUnaryExpression: checkForSpaces,\n\t\t\tUpdateExpression: checkForSpaces,\n\t\t\tNewExpression: checkForSpaces,\n\t\t\tYieldExpression: checkForSpacesAfterYield,\n\t\t\tAwaitExpression: checkForSpacesAfterAwait,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Source code for spaced-comments rule\n * @author Gyandeep Singh\n * @deprecated in ESLint v8.53.0\n */\n\"use strict\";\n\nconst escapeRegExp = require(\"escape-string-regexp\");\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Escapes the control characters of a given string.\n * @param {string} s A string to escape.\n * @returns {string} An escaped string.\n */\nfunction escape(s) {\n\treturn `(?:${escapeRegExp(s)})`;\n}\n\n/**\n * Escapes the control characters of a given string.\n * And adds a repeat flag.\n * @param {string} s A string to escape.\n * @returns {string} An escaped string.\n */\nfunction escapeAndRepeat(s) {\n\treturn `${escape(s)}+`;\n}\n\n/**\n * Parses `markers` option.\n * If markers don't include `\"*\"`, this adds `\"*\"` to allow JSDoc comments.\n * @param {string[]} [markers] A marker list.\n * @returns {string[]} A marker list.\n */\nfunction parseMarkersOption(markers) {\n\t// `*` is a marker for JSDoc comments.\n\tif (!markers.includes(\"*\")) {\n\t\treturn markers.concat(\"*\");\n\t}\n\n\treturn markers;\n}\n\n/**\n * Creates string pattern for exceptions.\n * Generated pattern:\n *\n * 1. A space or an exception pattern sequence.\n * @param {string[]} exceptions An exception pattern list.\n * @returns {string} A regular expression string for exceptions.\n */\nfunction createExceptionsPattern(exceptions) {\n\tlet pattern = \"\";\n\n\t/*\n\t * A space or an exception pattern sequence.\n\t * []                 ==> \"\\s\"\n\t * [\"-\"]              ==> \"(?:\\s|\\-+$)\"\n\t * [\"-\", \"=\"]         ==> \"(?:\\s|(?:\\-+|=+)$)\"\n\t * [\"-\", \"=\", \"--==\"] ==> \"(?:\\s|(?:\\-+|=+|(?:\\-\\-==)+)$)\" ==> https://jex.im/regulex/#!embed=false&flags=&re=(%3F%3A%5Cs%7C(%3F%3A%5C-%2B%7C%3D%2B%7C(%3F%3A%5C-%5C-%3D%3D)%2B)%24)\n\t */\n\tif (exceptions.length === 0) {\n\t\t// a space.\n\t\tpattern += \"\\\\s\";\n\t} else {\n\t\t// a space or...\n\t\tpattern += \"(?:\\\\s|\";\n\n\t\tif (exceptions.length === 1) {\n\t\t\t// a sequence of the exception pattern.\n\t\t\tpattern += escapeAndRepeat(exceptions[0]);\n\t\t} else {\n\t\t\t// a sequence of one of the exception patterns.\n\t\t\tpattern += \"(?:\";\n\t\t\tpattern += exceptions.map(escapeAndRepeat).join(\"|\");\n\t\t\tpattern += \")\";\n\t\t}\n\t\tpattern += `(?:$|[${Array.from(astUtils.LINEBREAKS).join(\"\")}]))`;\n\t}\n\n\treturn pattern;\n}\n\n/**\n * Creates RegExp object for `always` mode.\n * Generated pattern for beginning of comment:\n *\n * 1. First, a marker or nothing.\n * 2. Next, a space or an exception pattern sequence.\n * @param {string[]} markers A marker list.\n * @param {string[]} exceptions An exception pattern list.\n * @returns {RegExp} A RegExp object for the beginning of a comment in `always` mode.\n */\nfunction createAlwaysStylePattern(markers, exceptions) {\n\tlet pattern = \"^\";\n\n\t/*\n\t * A marker or nothing.\n\t * [\"*\"]            ==> \"\\*?\"\n\t * [\"*\", \"!\"]       ==> \"(?:\\*|!)?\"\n\t * [\"*\", \"/\", \"!<\"] ==> \"(?:\\*|\\/|(?:!<))?\" ==> https://jex.im/regulex/#!embed=false&flags=&re=(%3F%3A%5C*%7C%5C%2F%7C(%3F%3A!%3C))%3F\n\t */\n\tif (markers.length === 1) {\n\t\t// the marker.\n\t\tpattern += escape(markers[0]);\n\t} else {\n\t\t// one of markers.\n\t\tpattern += \"(?:\";\n\t\tpattern += markers.map(escape).join(\"|\");\n\t\tpattern += \")\";\n\t}\n\n\tpattern += \"?\"; // or nothing.\n\tpattern += createExceptionsPattern(exceptions);\n\n\treturn new RegExp(pattern, \"u\");\n}\n\n/**\n * Creates RegExp object for `never` mode.\n * Generated pattern for beginning of comment:\n *\n * 1. First, a marker or nothing (captured).\n * 2. Next, a space or a tab.\n * @param {string[]} markers A marker list.\n * @returns {RegExp} A RegExp object for `never` mode.\n */\nfunction createNeverStylePattern(markers) {\n\tconst pattern = `^(${markers.map(escape).join(\"|\")})?[ \\t]+`;\n\n\treturn new RegExp(pattern, \"u\");\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"spaced-comment\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/spaced-comment\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce consistent spacing after the `//` or `/*` in a comment\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/spaced-comment\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\texceptions: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmarkers: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tline: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\texceptions: {\n\t\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmarkers: {\n\t\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tblock: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\texceptions: {\n\t\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmarkers: {\n\t\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbalanced: {\n\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tunexpectedSpaceAfterMarker:\n\t\t\t\t\"Unexpected space or tab after marker ({{refChar}}) in comment.\",\n\t\t\texpectedExceptionAfter:\n\t\t\t\t\"Expected exception block, space or tab after '{{refChar}}' in comment.\",\n\t\t\tunexpectedSpaceBefore:\n\t\t\t\t\"Unexpected space or tab before '*/' in comment.\",\n\t\t\tunexpectedSpaceAfter:\n\t\t\t\t\"Unexpected space or tab after '{{refChar}}' in comment.\",\n\t\t\texpectedSpaceBefore:\n\t\t\t\t\"Expected space or tab before '*/' in comment.\",\n\t\t\texpectedSpaceAfter:\n\t\t\t\t\"Expected space or tab after '{{refChar}}' in comment.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t// Unless the first option is never, require a space\n\t\tconst requireSpace = context.options[0] !== \"never\";\n\n\t\t/*\n\t\t * Parse the second options.\n\t\t * If markers don't include `\"*\"`, it's added automatically for JSDoc\n\t\t * comments.\n\t\t */\n\t\tconst config = context.options[1] || {};\n\t\tconst balanced = config.block && config.block.balanced;\n\n\t\tconst styleRules = [\"block\", \"line\"].reduce((rule, type) => {\n\t\t\tconst markers = parseMarkersOption(\n\t\t\t\t(config[type] && config[type].markers) || config.markers || [],\n\t\t\t);\n\t\t\tconst exceptions =\n\t\t\t\t(config[type] && config[type].exceptions) ||\n\t\t\t\tconfig.exceptions ||\n\t\t\t\t[];\n\t\t\tconst endNeverPattern = \"[ \\t]+$\";\n\n\t\t\t// Create RegExp object for valid patterns.\n\t\t\trule[type] = {\n\t\t\t\tbeginRegex: requireSpace\n\t\t\t\t\t? createAlwaysStylePattern(markers, exceptions)\n\t\t\t\t\t: createNeverStylePattern(markers),\n\t\t\t\tendRegex:\n\t\t\t\t\tbalanced && requireSpace\n\t\t\t\t\t\t? new RegExp(\n\t\t\t\t\t\t\t\t`${createExceptionsPattern(exceptions)}$`,\n\t\t\t\t\t\t\t\t\"u\",\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: new RegExp(endNeverPattern, \"u\"),\n\t\t\t\thasExceptions: exceptions.length > 0,\n\t\t\t\tcaptureMarker: new RegExp(\n\t\t\t\t\t`^(${markers.map(escape).join(\"|\")})`,\n\t\t\t\t\t\"u\",\n\t\t\t\t),\n\t\t\t\tmarkers: new Set(markers),\n\t\t\t};\n\n\t\t\treturn rule;\n\t\t}, {});\n\n\t\t/**\n\t\t * Reports a beginning spacing error with an appropriate message.\n\t\t * @param {ASTNode} node A comment node to check.\n\t\t * @param {string} messageId An error message to report.\n\t\t * @param {Array} match An array of match results for markers.\n\t\t * @param {string} refChar Character used for reference in the error message.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportBegin(node, messageId, match, refChar) {\n\t\t\tconst type = node.type.toLowerCase(),\n\t\t\t\tcommentIdentifier = type === \"block\" ? \"/*\" : \"//\";\n\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tfix(fixer) {\n\t\t\t\t\tconst start = node.range[0];\n\t\t\t\t\tlet end = start + 2;\n\n\t\t\t\t\tif (requireSpace) {\n\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\tend += match[0].length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fixer.insertTextAfterRange([start, end], \" \");\n\t\t\t\t\t}\n\t\t\t\t\tend += match[0].length;\n\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t[start, end],\n\t\t\t\t\t\tcommentIdentifier + (match[1] ? match[1] : \"\"),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tmessageId,\n\t\t\t\tdata: { refChar },\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports an ending spacing error with an appropriate message.\n\t\t * @param {ASTNode} node A comment node to check.\n\t\t * @param {string} messageId An error message to report.\n\t\t * @param {string} match An array of the matched whitespace characters.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportEnd(node, messageId, match) {\n\t\t\tcontext.report({\n\t\t\t\tnode,\n\t\t\t\tfix(fixer) {\n\t\t\t\t\tif (requireSpace) {\n\t\t\t\t\t\treturn fixer.insertTextAfterRange(\n\t\t\t\t\t\t\t[node.range[0], node.range[1] - 2],\n\t\t\t\t\t\t\t\" \",\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst end = node.range[1] - 2,\n\t\t\t\t\t\tstart = end - match[0].length;\n\n\t\t\t\t\treturn fixer.replaceTextRange([start, end], \"\");\n\t\t\t\t},\n\t\t\t\tmessageId,\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Reports a given comment if it's invalid.\n\t\t * @param {ASTNode} node a comment node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkCommentForSpace(node) {\n\t\t\tconst type = node.type.toLowerCase(),\n\t\t\t\trule = styleRules[type],\n\t\t\t\tcommentIdentifier = type === \"block\" ? \"/*\" : \"//\";\n\n\t\t\t// Ignores empty comments and comments that consist only of a marker.\n\t\t\tif (node.value.length === 0 || rule.markers.has(node.value)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst beginMatch = rule.beginRegex.exec(node.value);\n\t\t\tconst endMatch = rule.endRegex.exec(node.value);\n\n\t\t\t// Checks.\n\t\t\tif (requireSpace) {\n\t\t\t\tif (!beginMatch) {\n\t\t\t\t\tconst hasMarker = rule.captureMarker.exec(node.value);\n\t\t\t\t\tconst marker = hasMarker\n\t\t\t\t\t\t? commentIdentifier + hasMarker[0]\n\t\t\t\t\t\t: commentIdentifier;\n\n\t\t\t\t\tif (rule.hasExceptions) {\n\t\t\t\t\t\treportBegin(\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\"expectedExceptionAfter\",\n\t\t\t\t\t\t\thasMarker,\n\t\t\t\t\t\t\tmarker,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treportBegin(\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\"expectedSpaceAfter\",\n\t\t\t\t\t\t\thasMarker,\n\t\t\t\t\t\t\tmarker,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (balanced && type === \"block\" && !endMatch) {\n\t\t\t\t\treportEnd(node, \"expectedSpaceBefore\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (beginMatch) {\n\t\t\t\t\tif (!beginMatch[1]) {\n\t\t\t\t\t\treportBegin(\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\"unexpectedSpaceAfter\",\n\t\t\t\t\t\t\tbeginMatch,\n\t\t\t\t\t\t\tcommentIdentifier,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treportBegin(\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\"unexpectedSpaceAfterMarker\",\n\t\t\t\t\t\t\tbeginMatch,\n\t\t\t\t\t\t\tbeginMatch[1],\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (balanced && type === \"block\" && endMatch) {\n\t\t\t\t\treportEnd(node, \"unexpectedSpaceBefore\", endMatch);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tProgram() {\n\t\t\t\tconst comments = sourceCode.getAllComments();\n\n\t\t\t\tcomments\n\t\t\t\t\t.filter(token => token.type !== \"Shebang\")\n\t\t\t\t\t.forEach(checkCommentForSpace);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to control usage of strict mode directives.\n * @author Brandon Mills\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Gets all of the Use Strict Directives in the Directive Prologue of a group of\n * statements.\n * @param {ASTNode[]} statements Statements in the program or function body.\n * @returns {ASTNode[]} All of the Use Strict Directives.\n */\nfunction getUseStrictDirectives(statements) {\n\tconst directives = [];\n\n\tfor (let i = 0; i < statements.length; i++) {\n\t\tconst statement = statements[i];\n\n\t\tif (\n\t\t\tstatement.type === \"ExpressionStatement\" &&\n\t\t\tstatement.expression.type === \"Literal\" &&\n\t\t\tstatement.expression.value === \"use strict\"\n\t\t) {\n\t\t\tdirectives[i] = statement;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn directives;\n}\n\n/**\n * Checks whether a given parameter is a simple parameter.\n * @param {ASTNode} node A pattern node to check.\n * @returns {boolean} `true` if the node is an Identifier node.\n */\nfunction isSimpleParameter(node) {\n\treturn node.type === \"Identifier\";\n}\n\n/**\n * Checks whether a given parameter list is a simple parameter list.\n * @param {ASTNode[]} params A parameter list to check.\n * @returns {boolean} `true` if the every parameter is an Identifier node.\n */\nfunction isSimpleParameterList(params) {\n\treturn params.every(isSimpleParameter);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\"safe\"],\n\n\t\tdocs: {\n\t\t\tdescription: \"Require or disallow strict mode directives\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/strict\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"never\", \"global\", \"function\", \"safe\"],\n\t\t\t},\n\t\t],\n\n\t\tfixable: \"code\",\n\t\tmessages: {\n\t\t\tfunction: \"Use the function form of 'use strict'.\",\n\t\t\tglobal: \"Use the global form of 'use strict'.\",\n\t\t\tmultiple: \"Multiple 'use strict' directives.\",\n\t\t\tnever: \"Strict mode is not permitted.\",\n\t\t\tunnecessary: \"Unnecessary 'use strict' directive.\",\n\t\t\tmodule: \"'use strict' is unnecessary inside of modules.\",\n\t\t\timplied:\n\t\t\t\t\"'use strict' is unnecessary when implied strict mode is enabled.\",\n\t\t\tunnecessaryInClasses:\n\t\t\t\t\"'use strict' is unnecessary inside of classes.\",\n\t\t\tnonSimpleParameterList:\n\t\t\t\t\"'use strict' directive inside a function with non-simple parameter list throws a syntax error since ES2016.\",\n\t\t\twrap: \"Wrap {{name}} in a function with 'use strict' directive.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst ecmaFeatures =\n\t\t\t\tcontext.languageOptions.parserOptions.ecmaFeatures || {},\n\t\t\tscopes = [],\n\t\t\tclassScopes = [];\n\t\tlet [mode] = context.options;\n\n\t\tif (ecmaFeatures.impliedStrict) {\n\t\t\tmode = \"implied\";\n\t\t} else if (mode === \"safe\") {\n\t\t\tmode =\n\t\t\t\tecmaFeatures.globalReturn ||\n\t\t\t\tcontext.languageOptions.sourceType === \"commonjs\"\n\t\t\t\t\t? \"global\"\n\t\t\t\t\t: \"function\";\n\t\t}\n\n\t\t/**\n\t\t * Determines whether a reported error should be fixed, depending on the error type.\n\t\t * @param {string} errorType The type of error\n\t\t * @returns {boolean} `true` if the reported error should be fixed\n\t\t */\n\t\tfunction shouldFix(errorType) {\n\t\t\treturn (\n\t\t\t\terrorType === \"multiple\" ||\n\t\t\t\terrorType === \"unnecessary\" ||\n\t\t\t\terrorType === \"module\" ||\n\t\t\t\terrorType === \"implied\" ||\n\t\t\t\terrorType === \"unnecessaryInClasses\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Gets a fixer function to remove a given 'use strict' directive.\n\t\t * @param {ASTNode} node The directive that should be removed\n\t\t * @returns {Function} A fixer function\n\t\t */\n\t\tfunction getFixFunction(node) {\n\t\t\treturn fixer => fixer.remove(node);\n\t\t}\n\n\t\t/**\n\t\t * Report a slice of an array of nodes with a given message.\n\t\t * @param {ASTNode[]} nodes Nodes.\n\t\t * @param {string} start Index to start from.\n\t\t * @param {string} end Index to end before.\n\t\t * @param {string} messageId Message to display.\n\t\t * @param {boolean} fix `true` if the directive should be fixed (i.e. removed)\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportSlice(nodes, start, end, messageId, fix) {\n\t\t\tnodes.slice(start, end).forEach(node => {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId,\n\t\t\t\t\tfix: fix ? getFixFunction(node) : null,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Report all nodes in an array with a given message.\n\t\t * @param {ASTNode[]} nodes Nodes.\n\t\t * @param {string} messageId Message id to display.\n\t\t * @param {boolean} fix `true` if the directive should be fixed (i.e. removed)\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportAll(nodes, messageId, fix) {\n\t\t\treportSlice(nodes, 0, nodes.length, messageId, fix);\n\t\t}\n\n\t\t/**\n\t\t * Report all nodes in an array, except the first, with a given message.\n\t\t * @param {ASTNode[]} nodes Nodes.\n\t\t * @param {string} messageId Message id to display.\n\t\t * @param {boolean} fix `true` if the directive should be fixed (i.e. removed)\n\t\t * @returns {void}\n\t\t */\n\t\tfunction reportAllExceptFirst(nodes, messageId, fix) {\n\t\t\treportSlice(nodes, 1, nodes.length, messageId, fix);\n\t\t}\n\n\t\t/**\n\t\t * Entering a function in 'function' mode pushes a new nested scope onto the\n\t\t * stack. The new scope is true if the nested function is strict mode code.\n\t\t * @param {ASTNode} node The function declaration or expression.\n\t\t * @param {ASTNode[]} useStrictDirectives The Use Strict Directives of the node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction enterFunctionInFunctionMode(node, useStrictDirectives) {\n\t\t\tconst isInClass = classScopes.length > 0,\n\t\t\t\tisParentGlobal =\n\t\t\t\t\tscopes.length === 0 && classScopes.length === 0,\n\t\t\t\tisParentStrict = scopes.length > 0 && scopes.at(-1),\n\t\t\t\tisStrict = useStrictDirectives.length > 0;\n\n\t\t\tif (isStrict) {\n\t\t\t\tif (!isSimpleParameterList(node.params)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: useStrictDirectives[0],\n\t\t\t\t\t\tmessageId: \"nonSimpleParameterList\",\n\t\t\t\t\t});\n\t\t\t\t} else if (isParentStrict) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: useStrictDirectives[0],\n\t\t\t\t\t\tmessageId: \"unnecessary\",\n\t\t\t\t\t\tfix: getFixFunction(useStrictDirectives[0]),\n\t\t\t\t\t});\n\t\t\t\t} else if (isInClass) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: useStrictDirectives[0],\n\t\t\t\t\t\tmessageId: \"unnecessaryInClasses\",\n\t\t\t\t\t\tfix: getFixFunction(useStrictDirectives[0]),\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treportAllExceptFirst(useStrictDirectives, \"multiple\", true);\n\t\t\t} else if (isParentGlobal) {\n\t\t\t\tif (isSimpleParameterList(node.params)) {\n\t\t\t\t\tcontext.report({ node, messageId: \"function\" });\n\t\t\t\t} else {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"wrap\",\n\t\t\t\t\t\tdata: { name: astUtils.getFunctionNameWithKind(node) },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tscopes.push(isParentStrict || isStrict);\n\t\t}\n\n\t\t/**\n\t\t * Exiting a function in 'function' mode pops its scope off the stack.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction exitFunctionInFunctionMode() {\n\t\t\tscopes.pop();\n\t\t}\n\n\t\t/**\n\t\t * Enter a function and either:\n\t\t * - Push a new nested scope onto the stack (in 'function' mode).\n\t\t * - Report all the Use Strict Directives (in the other modes).\n\t\t * @param {ASTNode} node The function declaration or expression.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction enterFunction(node) {\n\t\t\tconst isBlock = node.body.type === \"BlockStatement\",\n\t\t\t\tuseStrictDirectives = isBlock\n\t\t\t\t\t? getUseStrictDirectives(node.body.body)\n\t\t\t\t\t: [];\n\n\t\t\tif (mode === \"function\") {\n\t\t\t\tenterFunctionInFunctionMode(node, useStrictDirectives);\n\t\t\t} else if (useStrictDirectives.length > 0) {\n\t\t\t\tif (isSimpleParameterList(node.params)) {\n\t\t\t\t\treportAll(useStrictDirectives, mode, shouldFix(mode));\n\t\t\t\t} else {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode: useStrictDirectives[0],\n\t\t\t\t\t\tmessageId: \"nonSimpleParameterList\",\n\t\t\t\t\t});\n\t\t\t\t\treportAllExceptFirst(useStrictDirectives, \"multiple\", true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/** @type {import('../types').Rule.RuleListener} */\n\t\tconst rule = {\n\t\t\tProgram(node) {\n\t\t\t\tconst useStrictDirectives = getUseStrictDirectives(node.body);\n\n\t\t\t\tif (node.sourceType === \"module\") {\n\t\t\t\t\tmode = \"module\";\n\t\t\t\t}\n\n\t\t\t\tif (mode === \"global\") {\n\t\t\t\t\tif (\n\t\t\t\t\t\tnode.body.length > 0 &&\n\t\t\t\t\t\tuseStrictDirectives.length === 0\n\t\t\t\t\t) {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Report the range as v9 does\n\t\t\t\t\t\t */\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\t\tstart: node.body[0].loc.start,\n\t\t\t\t\t\t\t\tend: node.body.at(-1).loc.end,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmessageId: \"global\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treportAllExceptFirst(useStrictDirectives, \"multiple\", true);\n\t\t\t\t} else {\n\t\t\t\t\treportAll(useStrictDirectives, mode, shouldFix(mode));\n\t\t\t\t}\n\t\t\t},\n\t\t\tFunctionDeclaration: enterFunction,\n\t\t\tFunctionExpression: enterFunction,\n\t\t\tArrowFunctionExpression: enterFunction,\n\t\t};\n\n\t\tif (mode === \"function\") {\n\t\t\tObject.assign(rule, {\n\t\t\t\t// Inside of class bodies are always strict mode.\n\t\t\t\tClassBody() {\n\t\t\t\t\tclassScopes.push(true);\n\t\t\t\t},\n\t\t\t\t\"ClassBody:exit\"() {\n\t\t\t\t\tclassScopes.pop();\n\t\t\t\t},\n\n\t\t\t\t\"FunctionDeclaration:exit\": exitFunctionInFunctionMode,\n\t\t\t\t\"FunctionExpression:exit\": exitFunctionInFunctionMode,\n\t\t\t\t\"ArrowFunctionExpression:exit\": exitFunctionInFunctionMode,\n\t\t\t});\n\t\t}\n\n\t\treturn rule;\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce spacing around colons of switch statements.\n * @author Toru Nagashima\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"switch-colon-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/switch-colon-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Enforce spacing around colons of switch statements\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/switch-colon-spacing\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tbefore: { type: \"boolean\", default: false },\n\t\t\t\t\tafter: { type: \"boolean\", default: true },\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tfixable: \"whitespace\",\n\t\tmessages: {\n\t\t\texpectedBefore: \"Expected space(s) before this colon.\",\n\t\t\texpectedAfter: \"Expected space(s) after this colon.\",\n\t\t\tunexpectedBefore: \"Unexpected space(s) before this colon.\",\n\t\t\tunexpectedAfter: \"Unexpected space(s) after this colon.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst options = context.options[0] || {};\n\t\tconst beforeSpacing = options.before === true; // false by default\n\t\tconst afterSpacing = options.after !== false; // true by default\n\n\t\t/**\n\t\t * Check whether the spacing between the given 2 tokens is valid or not.\n\t\t * @param {Token} left The left token to check.\n\t\t * @param {Token} right The right token to check.\n\t\t * @param {boolean} expected The expected spacing to check. `true` if there should be a space.\n\t\t * @returns {boolean} `true` if the spacing between the tokens is valid.\n\t\t */\n\t\tfunction isValidSpacing(left, right, expected) {\n\t\t\treturn (\n\t\t\t\tastUtils.isClosingBraceToken(right) ||\n\t\t\t\t!astUtils.isTokenOnSameLine(left, right) ||\n\t\t\t\tsourceCode.isSpaceBetween(left, right) === expected\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check whether comments exist between the given 2 tokens.\n\t\t * @param {Token} left The left token to check.\n\t\t * @param {Token} right The right token to check.\n\t\t * @returns {boolean} `true` if comments exist between the given 2 tokens.\n\t\t */\n\t\tfunction commentsExistBetween(left, right) {\n\t\t\treturn (\n\t\t\t\tsourceCode.getFirstTokenBetween(left, right, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t\tfilter: astUtils.isCommentToken,\n\t\t\t\t}) !== null\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Fix the spacing between the given 2 tokens.\n\t\t * @param {RuleFixer} fixer The fixer to fix.\n\t\t * @param {Token} left The left token of fix range.\n\t\t * @param {Token} right The right token of fix range.\n\t\t * @param {boolean} spacing The spacing style. `true` if there should be a space.\n\t\t * @returns {Fix|null} The fix object.\n\t\t */\n\t\tfunction fix(fixer, left, right, spacing) {\n\t\t\tif (commentsExistBetween(left, right)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (spacing) {\n\t\t\t\treturn fixer.insertTextAfter(left, \" \");\n\t\t\t}\n\t\t\treturn fixer.removeRange([left.range[1], right.range[0]]);\n\t\t}\n\n\t\treturn {\n\t\t\tSwitchCase(node) {\n\t\t\t\tconst colonToken = astUtils.getSwitchCaseColonToken(\n\t\t\t\t\tnode,\n\t\t\t\t\tsourceCode,\n\t\t\t\t);\n\t\t\t\tconst beforeToken = sourceCode.getTokenBefore(colonToken);\n\t\t\t\tconst afterToken = sourceCode.getTokenAfter(colonToken);\n\n\t\t\t\tif (!isValidSpacing(beforeToken, colonToken, beforeSpacing)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: colonToken.loc,\n\t\t\t\t\t\tmessageId: beforeSpacing\n\t\t\t\t\t\t\t? \"expectedBefore\"\n\t\t\t\t\t\t\t: \"unexpectedBefore\",\n\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\tfix(fixer, beforeToken, colonToken, beforeSpacing),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (!isValidSpacing(colonToken, afterToken, afterSpacing)) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: colonToken.loc,\n\t\t\t\t\t\tmessageId: afterSpacing\n\t\t\t\t\t\t\t? \"expectedAfter\"\n\t\t\t\t\t\t\t: \"unexpectedAfter\",\n\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\tfix(fixer, colonToken, afterToken, afterSpacing),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce description with the `Symbol` object\n * @author Jarek Rencz\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require symbol descriptions\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/symbol-description\",\n\t\t},\n\t\tfixable: null,\n\t\tschema: [],\n\t\tmessages: {\n\t\t\texpected: \"Expected Symbol to have a description.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Reports if node does not conform the rule in case rule is set to\n\t\t * report missing description\n\t\t * @param {ASTNode} node A CallExpression node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkArgument(node) {\n\t\t\tif (node.arguments.length === 0) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"expected\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t\"Program:exit\"(node) {\n\t\t\t\tconst scope = sourceCode.getScope(node);\n\t\t\t\tconst variable = astUtils.getVariableByName(scope, \"Symbol\");\n\n\t\t\t\tif (variable && variable.defs.length === 0) {\n\t\t\t\t\tvariable.references.forEach(reference => {\n\t\t\t\t\t\tconst idNode = reference.identifier;\n\n\t\t\t\t\t\tif (astUtils.isCallee(idNode)) {\n\t\t\t\t\t\t\tcheckArgument(idNode.parent);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce spacing around embedded expressions of template strings\n * @author Toru Nagashima\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"template-curly-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/template-curly-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require or disallow spacing around embedded expressions of template strings\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/template-curly-spacing\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [{ enum: [\"always\", \"never\"] }],\n\t\tmessages: {\n\t\t\texpectedBefore: \"Expected space(s) before '}'.\",\n\t\t\texpectedAfter: \"Expected space(s) after '${'.\",\n\t\t\tunexpectedBefore: \"Unexpected space(s) before '}'.\",\n\t\t\tunexpectedAfter: \"Unexpected space(s) after '${'.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst always = context.options[0] === \"always\";\n\n\t\t/**\n\t\t * Checks spacing before `}` of a given token.\n\t\t * @param {Token} token A token to check. This is a Template token.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingBefore(token) {\n\t\t\tif (!token.value.startsWith(\"}\")) {\n\t\t\t\treturn; // starts with a backtick, this is the first template element in the template literal\n\t\t\t}\n\n\t\t\tconst prevToken = sourceCode.getTokenBefore(token, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t}),\n\t\t\t\thasSpace = sourceCode.isSpaceBetween(prevToken, token);\n\n\t\t\tif (!astUtils.isTokenOnSameLine(prevToken, token)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (always && !hasSpace) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tloc: {\n\t\t\t\t\t\tstart: token.loc.start,\n\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\tline: token.loc.start.line,\n\t\t\t\t\t\t\tcolumn: token.loc.start.column + 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmessageId: \"expectedBefore\",\n\t\t\t\t\tfix: fixer => fixer.insertTextBefore(token, \" \"),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!always && hasSpace) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tloc: {\n\t\t\t\t\t\tstart: prevToken.loc.end,\n\t\t\t\t\t\tend: token.loc.start,\n\t\t\t\t\t},\n\t\t\t\t\tmessageId: \"unexpectedBefore\",\n\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\tfixer.removeRange([prevToken.range[1], token.range[0]]),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks spacing after `${` of a given token.\n\t\t * @param {Token} token A token to check. This is a Template token.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacingAfter(token) {\n\t\t\tif (!token.value.endsWith(\"${\")) {\n\t\t\t\treturn; // ends with a backtick, this is the last template element in the template literal\n\t\t\t}\n\n\t\t\tconst nextToken = sourceCode.getTokenAfter(token, {\n\t\t\t\t\tincludeComments: true,\n\t\t\t\t}),\n\t\t\t\thasSpace = sourceCode.isSpaceBetween(token, nextToken);\n\n\t\t\tif (!astUtils.isTokenOnSameLine(token, nextToken)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (always && !hasSpace) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tloc: {\n\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\tline: token.loc.end.line,\n\t\t\t\t\t\t\tcolumn: token.loc.end.column - 2,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tend: token.loc.end,\n\t\t\t\t\t},\n\t\t\t\t\tmessageId: \"expectedAfter\",\n\t\t\t\t\tfix: fixer => fixer.insertTextAfter(token, \" \"),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!always && hasSpace) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tloc: {\n\t\t\t\t\t\tstart: token.loc.end,\n\t\t\t\t\t\tend: nextToken.loc.start,\n\t\t\t\t\t},\n\t\t\t\t\tmessageId: \"unexpectedAfter\",\n\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\tfixer.removeRange([token.range[1], nextToken.range[0]]),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tTemplateElement(node) {\n\t\t\t\tconst token = sourceCode.getFirstToken(node);\n\n\t\t\t\tcheckSpacingBefore(token);\n\t\t\t\tcheckSpacingAfter(token);\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to check spacing between template tags and their literals\n * @author Jonathan Wilsson\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"template-tag-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/template-tag-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require or disallow spacing between template tags and their literals\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/template-tag-spacing\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [{ enum: [\"always\", \"never\"] }],\n\t\tmessages: {\n\t\t\tunexpected:\n\t\t\t\t\"Unexpected space between template tag and template literal.\",\n\t\t\tmissing: \"Missing space between template tag and template literal.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst never = context.options[0] !== \"always\";\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Check if a space is present between a template tag and its literal\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction checkSpacing(node) {\n\t\t\tconst tagToken = sourceCode.getTokenBefore(node.quasi);\n\t\t\tconst literalToken = sourceCode.getFirstToken(node.quasi);\n\t\t\tconst hasWhitespace = sourceCode.isSpaceBetween(\n\t\t\t\ttagToken,\n\t\t\t\tliteralToken,\n\t\t\t);\n\n\t\t\tif (never && hasWhitespace) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: {\n\t\t\t\t\t\tstart: tagToken.loc.end,\n\t\t\t\t\t\tend: literalToken.loc.start,\n\t\t\t\t\t},\n\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tconst comments = sourceCode.getCommentsBefore(\n\t\t\t\t\t\t\tnode.quasi,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// Don't fix anything if there's a single line comment after the template tag\n\t\t\t\t\t\tif (comments.some(comment => comment.type === \"Line\")) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t[tagToken.range[1], literalToken.range[0]],\n\t\t\t\t\t\t\tcomments.reduce(\n\t\t\t\t\t\t\t\t(text, comment) =>\n\t\t\t\t\t\t\t\t\ttext + sourceCode.getText(comment),\n\t\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else if (!never && !hasWhitespace) {\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tloc: {\n\t\t\t\t\t\tstart: node.loc.start,\n\t\t\t\t\t\tend: literalToken.loc.start,\n\t\t\t\t\t},\n\t\t\t\t\tmessageId: \"missing\",\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\treturn fixer.insertTextAfter(tagToken, \" \");\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tTaggedTemplateExpression: checkSpacing,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Require or disallow Unicode BOM\n * @author Andrew Johnston <https://github.com/ehjay>\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"layout\",\n\n\t\tdefaultOptions: [\"never\"],\n\n\t\tdocs: {\n\t\t\tdescription: \"Require or disallow Unicode byte order mark (BOM)\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/unicode-bom\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\texpected: \"Expected Unicode BOM (Byte Order Mark).\",\n\t\t\tunexpected: \"Unexpected Unicode BOM (Byte Order Mark).\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram: function checkUnicodeBOM(node) {\n\t\t\t\tconst sourceCode = context.sourceCode,\n\t\t\t\t\tlocation = { column: 0, line: 1 };\n\t\t\t\tconst [requireBOM] = context.options;\n\n\t\t\t\tif (!sourceCode.hasBOM && requireBOM === \"always\") {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: location,\n\t\t\t\t\t\tmessageId: \"expected\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.insertTextBeforeRange(\n\t\t\t\t\t\t\t\t[0, 1],\n\t\t\t\t\t\t\t\t\"\\uFEFF\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t} else if (sourceCode.hasBOM && requireBOM === \"never\") {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tloc: location,\n\t\t\t\t\t\tmessageId: \"unexpected\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\treturn fixer.removeRange([-1, 0]);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag comparisons to the value NaN\n * @author James Allardice\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Determines if the given node is a NaN `Identifier` node.\n * @param {ASTNode|null} node The node to check.\n * @returns {boolean} `true` if the node is 'NaN' identifier.\n */\nfunction isNaNIdentifier(node) {\n\tif (!node) {\n\t\treturn false;\n\t}\n\n\tconst nodeToCheck =\n\t\tnode.type === \"SequenceExpression\" ? node.expressions.at(-1) : node;\n\n\treturn (\n\t\tastUtils.isSpecificId(nodeToCheck, \"NaN\") ||\n\t\tastUtils.isSpecificMemberAccess(nodeToCheck, \"Number\", \"NaN\")\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\thasSuggestions: true,\n\t\ttype: \"problem\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require calls to `isNaN()` when checking for `NaN`\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/use-isnan\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tenforceForSwitchCase: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tenforceForIndexOf: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\tenforceForIndexOf: false,\n\t\t\t\tenforceForSwitchCase: true,\n\t\t\t},\n\t\t],\n\n\t\tmessages: {\n\t\t\tcomparisonWithNaN: \"Use the isNaN function to compare with NaN.\",\n\t\t\tswitchNaN:\n\t\t\t\t\"'switch(NaN)' can never match a case clause. Use Number.isNaN instead of the switch.\",\n\t\t\tcaseNaN:\n\t\t\t\t\"'case NaN' can never match. Use Number.isNaN before the switch.\",\n\t\t\tindexOfNaN:\n\t\t\t\t\"Array prototype method '{{ methodName }}' cannot find NaN.\",\n\t\t\treplaceWithIsNaN: \"Replace with Number.isNaN.\",\n\t\t\treplaceWithCastingAndIsNaN:\n\t\t\t\t\"Replace with Number.isNaN and cast to a Number.\",\n\t\t\treplaceWithFindIndex:\n\t\t\t\t\"Replace with Array.prototype.{{ methodName }}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [{ enforceForIndexOf, enforceForSwitchCase }] = context.options;\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tconst fixableOperators = new Set([\"==\", \"===\", \"!=\", \"!==\"]);\n\t\tconst castableOperators = new Set([\"==\", \"!=\"]);\n\n\t\t/**\n\t\t * Get a fixer for a binary expression that compares to NaN.\n\t\t * @param  {ASTNode} node The node to fix.\n\t\t * @param {function(string): string} wrapValue A function that wraps the compared value with a fix.\n\t\t * @returns {function(Fixer): Fix} The fixer function.\n\t\t */\n\t\tfunction getBinaryExpressionFixer(node, wrapValue) {\n\t\t\treturn fixer => {\n\t\t\t\tconst comparedValue = isNaNIdentifier(node.left)\n\t\t\t\t\t? node.right\n\t\t\t\t\t: node.left;\n\t\t\t\tconst shouldWrap = comparedValue.type === \"SequenceExpression\";\n\t\t\t\tconst shouldNegate = node.operator[0] === \"!\";\n\n\t\t\t\tconst negation = shouldNegate ? \"!\" : \"\";\n\t\t\t\tlet comparedValueText = sourceCode.getText(comparedValue);\n\n\t\t\t\tif (shouldWrap) {\n\t\t\t\t\tcomparedValueText = `(${comparedValueText})`;\n\t\t\t\t}\n\n\t\t\t\tconst fixedValue = wrapValue(comparedValueText);\n\n\t\t\t\treturn fixer.replaceText(node, `${negation}${fixedValue}`);\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Checks the given `BinaryExpression` node for `foo === NaN` and other comparisons.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkBinaryExpression(node) {\n\t\t\tif (\n\t\t\t\t/^(?:[<>]|[!=]=)=?$/u.test(node.operator) &&\n\t\t\t\t(isNaNIdentifier(node.left) || isNaNIdentifier(node.right))\n\t\t\t) {\n\t\t\t\tconst suggestedFixes = [];\n\t\t\t\tconst NaNNode = isNaNIdentifier(node.left)\n\t\t\t\t\t? node.left\n\t\t\t\t\t: node.right;\n\n\t\t\t\tconst isSequenceExpression =\n\t\t\t\t\tNaNNode.type === \"SequenceExpression\";\n\t\t\t\tconst isSuggestable =\n\t\t\t\t\tfixableOperators.has(node.operator) &&\n\t\t\t\t\t!isSequenceExpression;\n\t\t\t\tconst isCastable = castableOperators.has(node.operator);\n\n\t\t\t\tif (isSuggestable) {\n\t\t\t\t\tsuggestedFixes.push({\n\t\t\t\t\t\tmessageId: \"replaceWithIsNaN\",\n\t\t\t\t\t\tfix: getBinaryExpressionFixer(\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tvalue => `Number.isNaN(${value})`,\n\t\t\t\t\t\t),\n\t\t\t\t\t});\n\n\t\t\t\t\tif (isCastable) {\n\t\t\t\t\t\tsuggestedFixes.push({\n\t\t\t\t\t\t\tmessageId: \"replaceWithCastingAndIsNaN\",\n\t\t\t\t\t\t\tfix: getBinaryExpressionFixer(\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\tvalue => `Number.isNaN(Number(${value}))`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId: \"comparisonWithNaN\",\n\t\t\t\t\tsuggest: suggestedFixes,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks the discriminant and all case clauses of the given `SwitchStatement` node for `switch(NaN)` and `case NaN:`\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSwitchStatement(node) {\n\t\t\tif (isNaNIdentifier(node.discriminant)) {\n\t\t\t\tcontext.report({ node, messageId: \"switchNaN\" });\n\t\t\t}\n\n\t\t\tfor (const switchCase of node.cases) {\n\t\t\t\tif (isNaNIdentifier(switchCase.test)) {\n\t\t\t\t\tcontext.report({ node: switchCase, messageId: \"caseNaN\" });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks the given `CallExpression` node for `.indexOf(NaN)` and `.lastIndexOf(NaN)`.\n\t\t * @param {ASTNode} node The node to check.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkCallExpression(node) {\n\t\t\tconst callee = astUtils.skipChainExpression(node.callee);\n\n\t\t\tif (callee.type === \"MemberExpression\") {\n\t\t\t\tconst methodName = astUtils.getStaticPropertyName(callee);\n\n\t\t\t\tif (\n\t\t\t\t\t(methodName === \"indexOf\" ||\n\t\t\t\t\t\tmethodName === \"lastIndexOf\") &&\n\t\t\t\t\tnode.arguments.length <= 2 &&\n\t\t\t\t\tisNaNIdentifier(node.arguments[0])\n\t\t\t\t) {\n\t\t\t\t\t/*\n\t\t\t\t\t * To retain side effects, it's essential to address `NaN` beforehand, which\n\t\t\t\t\t * is not possible with fixes like `arr.findIndex(Number.isNaN)`.\n\t\t\t\t\t */\n\t\t\t\t\tconst isSuggestable =\n\t\t\t\t\t\tnode.arguments[0].type !== \"SequenceExpression\" &&\n\t\t\t\t\t\t!node.arguments[1];\n\t\t\t\t\tconst suggestedFixes = [];\n\n\t\t\t\t\tif (isSuggestable) {\n\t\t\t\t\t\tconst shouldWrap = callee.computed;\n\t\t\t\t\t\tconst findIndexMethod =\n\t\t\t\t\t\t\tmethodName === \"indexOf\"\n\t\t\t\t\t\t\t\t? \"findIndex\"\n\t\t\t\t\t\t\t\t: \"findLastIndex\";\n\t\t\t\t\t\tconst propertyName = shouldWrap\n\t\t\t\t\t\t\t? `\"${findIndexMethod}\"`\n\t\t\t\t\t\t\t: findIndexMethod;\n\n\t\t\t\t\t\tsuggestedFixes.push({\n\t\t\t\t\t\t\tmessageId: \"replaceWithFindIndex\",\n\t\t\t\t\t\t\tdata: { methodName: findIndexMethod },\n\t\t\t\t\t\t\tfix: fixer => [\n\t\t\t\t\t\t\t\tfixer.replaceText(\n\t\t\t\t\t\t\t\t\tcallee.property,\n\t\t\t\t\t\t\t\t\tpropertyName,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tfixer.replaceText(\n\t\t\t\t\t\t\t\t\tnode.arguments[0],\n\t\t\t\t\t\t\t\t\t\"Number.isNaN\",\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"indexOfNaN\",\n\t\t\t\t\t\tdata: { methodName },\n\t\t\t\t\t\tsuggest: suggestedFixes,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst listeners = {\n\t\t\tBinaryExpression: checkBinaryExpression,\n\t\t};\n\n\t\tif (enforceForSwitchCase) {\n\t\t\tlisteners.SwitchStatement = checkSwitchStatement;\n\t\t}\n\n\t\tif (enforceForIndexOf) {\n\t\t\tlisteners.CallExpression = checkCallExpression;\n\t\t}\n\n\t\treturn listeners;\n\t},\n};\n", "/**\n * @fileoverview Ensures that the results of typeof are compared against a valid string\n * @author Ian Christian Myers\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"problem\",\n\n\t\tdefaultOptions: [\n\t\t\t{\n\t\t\t\trequireStringLiterals: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Enforce comparing `typeof` expressions against valid strings\",\n\t\t\trecommended: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/valid-typeof\",\n\t\t},\n\n\t\thasSuggestions: true,\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\trequireStringLiterals: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\tinvalidValue: \"Invalid typeof comparison value.\",\n\t\t\tnotString: \"Typeof comparisons should be to string literals.\",\n\t\t\tsuggestString: 'Use `\"{{type}}\"` instead of `{{type}}`.',\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst VALID_TYPES = new Set([\n\t\t\t\t\"symbol\",\n\t\t\t\t\"undefined\",\n\t\t\t\t\"object\",\n\t\t\t\t\"boolean\",\n\t\t\t\t\"number\",\n\t\t\t\t\"string\",\n\t\t\t\t\"function\",\n\t\t\t\t\"bigint\",\n\t\t\t]),\n\t\t\tOPERATORS = new Set([\"==\", \"===\", \"!=\", \"!==\"]);\n\t\tconst sourceCode = context.sourceCode;\n\t\tconst [{ requireStringLiterals }] = context.options;\n\n\t\tlet globalScope;\n\n\t\t/**\n\t\t * Checks whether the given node represents a reference to a global variable that is not declared in the source code.\n\t\t * These identifiers will be allowed, as it is assumed that user has no control over the names of external global variables.\n\t\t * @param {ASTNode} node `Identifier` node to check.\n\t\t * @returns {boolean} `true` if the node is a reference to a global variable.\n\t\t */\n\t\tfunction isReferenceToGlobalVariable(node) {\n\t\t\tconst variable = globalScope.set.get(node.name);\n\n\t\t\treturn (\n\t\t\t\tvariable &&\n\t\t\t\tvariable.defs.length === 0 &&\n\t\t\t\tvariable.references.some(ref => ref.identifier === node)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Determines whether a node is a typeof expression.\n\t\t * @param {ASTNode} node The node\n\t\t * @returns {boolean} `true` if the node is a typeof expression\n\t\t */\n\t\tfunction isTypeofExpression(node) {\n\t\t\treturn (\n\t\t\t\tnode.type === \"UnaryExpression\" && node.operator === \"typeof\"\n\t\t\t);\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tProgram(node) {\n\t\t\t\tglobalScope = sourceCode.getScope(node);\n\t\t\t},\n\n\t\t\tUnaryExpression(node) {\n\t\t\t\tif (isTypeofExpression(node)) {\n\t\t\t\t\tconst { parent } = node;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tparent.type === \"BinaryExpression\" &&\n\t\t\t\t\t\tOPERATORS.has(parent.operator)\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst sibling =\n\t\t\t\t\t\t\tparent.left === node ? parent.right : parent.left;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tsibling.type === \"Literal\" ||\n\t\t\t\t\t\t\tastUtils.isStaticTemplateLiteral(sibling)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst value =\n\t\t\t\t\t\t\t\tsibling.type === \"Literal\"\n\t\t\t\t\t\t\t\t\t? sibling.value\n\t\t\t\t\t\t\t\t\t: sibling.quasis[0].value.cooked;\n\n\t\t\t\t\t\t\tif (!VALID_TYPES.has(value)) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode: sibling,\n\t\t\t\t\t\t\t\t\tmessageId: \"invalidValue\",\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tsibling.type === \"Identifier\" &&\n\t\t\t\t\t\t\tsibling.name === \"undefined\" &&\n\t\t\t\t\t\t\tisReferenceToGlobalVariable(sibling)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode: sibling,\n\t\t\t\t\t\t\t\tmessageId: requireStringLiterals\n\t\t\t\t\t\t\t\t\t? \"notString\"\n\t\t\t\t\t\t\t\t\t: \"invalidValue\",\n\t\t\t\t\t\t\t\tsuggest: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tmessageId: \"suggestString\",\n\t\t\t\t\t\t\t\t\t\tdata: { type: \"undefined\" },\n\t\t\t\t\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\t\t\t\t\tsibling,\n\t\t\t\t\t\t\t\t\t\t\t\t'\"undefined\"',\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\trequireStringLiterals &&\n\t\t\t\t\t\t\t!isTypeofExpression(sibling)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode: sibling,\n\t\t\t\t\t\t\t\tmessageId: \"notString\",\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to enforce var declarations are only at the top of a function.\n * @author Danny Fritz\n * @author Gyandeep Singh\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require `var` declarations be placed at the top of their containing scope\",\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/vars-on-top\",\n\t\t},\n\n\t\tschema: [],\n\t\tmessages: {\n\t\t\ttop: \"All 'var' declarations must be at the top of the function scope.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\t//--------------------------------------------------------------------------\n\t\t// Helpers\n\t\t//--------------------------------------------------------------------------\n\n\t\t/**\n\t\t * Has AST suggesting a directive.\n\t\t * @param {ASTNode} node any node\n\t\t * @returns {boolean} whether the given node structurally represents a directive\n\t\t */\n\t\tfunction looksLikeDirective(node) {\n\t\t\treturn (\n\t\t\t\tnode.type === \"ExpressionStatement\" &&\n\t\t\t\tnode.expression.type === \"Literal\" &&\n\t\t\t\ttypeof node.expression.value === \"string\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Check to see if its a ES6 import declaration\n\t\t * @param {ASTNode} node any node\n\t\t * @returns {boolean} whether the given node represents a import declaration\n\t\t */\n\t\tfunction looksLikeImport(node) {\n\t\t\treturn (\n\t\t\t\tnode.type === \"ImportDeclaration\" ||\n\t\t\t\tnode.type === \"ImportSpecifier\" ||\n\t\t\t\tnode.type === \"ImportDefaultSpecifier\" ||\n\t\t\t\tnode.type === \"ImportNamespaceSpecifier\"\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether a given node is a variable declaration or not.\n\t\t * @param {ASTNode} node any node\n\t\t * @returns {boolean} `true` if the node is a variable declaration.\n\t\t */\n\t\tfunction isVariableDeclaration(node) {\n\t\t\treturn (\n\t\t\t\tnode.type === \"VariableDeclaration\" ||\n\t\t\t\t(node.type === \"ExportNamedDeclaration\" &&\n\t\t\t\t\tnode.declaration &&\n\t\t\t\t\tnode.declaration.type === \"VariableDeclaration\")\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks whether this variable is on top of the block body\n\t\t * @param {ASTNode} node The node to check\n\t\t * @param {ASTNode[]} statements collection of ASTNodes for the parent node block\n\t\t * @returns {boolean} True if var is on top otherwise false\n\t\t */\n\t\tfunction isVarOnTop(node, statements) {\n\t\t\tconst l = statements.length;\n\t\t\tlet i = 0;\n\n\t\t\t// Skip over directives and imports. Static blocks don't have either.\n\t\t\tif (node.parent.type !== \"StaticBlock\") {\n\t\t\t\tfor (; i < l; ++i) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!looksLikeDirective(statements[i]) &&\n\t\t\t\t\t\t!looksLikeImport(statements[i])\n\t\t\t\t\t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (; i < l; ++i) {\n\t\t\t\tif (!isVariableDeclaration(statements[i])) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (statements[i] === node) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Checks whether variable is on top at the global level\n\t\t * @param {ASTNode} node The node to check\n\t\t * @param {ASTNode} parent Parent of the node\n\t\t * @returns {void}\n\t\t */\n\t\tfunction globalVarCheck(node, parent) {\n\t\t\tif (!isVarOnTop(node, parent.body)) {\n\t\t\t\tcontext.report({ node, messageId: \"top\" });\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks whether variable is on top at functional block scope level\n\t\t * @param {ASTNode} node The node to check\n\t\t * @returns {void}\n\t\t */\n\t\tfunction blockScopeVarCheck(node) {\n\t\t\tconst { parent } = node;\n\n\t\t\tif (\n\t\t\t\tparent.type === \"BlockStatement\" &&\n\t\t\t\t/Function/u.test(parent.parent.type) &&\n\t\t\t\tisVarOnTop(node, parent.body)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tparent.type === \"StaticBlock\" &&\n\t\t\t\tisVarOnTop(node, parent.body)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcontext.report({ node, messageId: \"top\" });\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public API\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\t\"VariableDeclaration[kind='var']\"(node) {\n\t\t\t\tif (node.parent.type === \"ExportNamedDeclaration\") {\n\t\t\t\t\tglobalVarCheck(node.parent, node.parent.parent);\n\t\t\t\t} else if (node.parent.type === \"Program\") {\n\t\t\t\t\tglobalVarCheck(node, node.parent);\n\t\t\t\t} else {\n\t\t\t\t\tblockScopeVarCheck(node);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag when IIFE is not wrapped in parens\n * @author Ilya Volodin\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\nconst eslintUtils = require(\"@eslint-community/eslint-utils\");\n\n//----------------------------------------------------------------------\n// Helpers\n//----------------------------------------------------------------------\n\n/**\n * Check if the given node is callee of a `NewExpression` node\n * @param {ASTNode} node node to check\n * @returns {boolean} True if the node is callee of a `NewExpression` node\n * @private\n */\nfunction isCalleeOfNewExpression(node) {\n\tconst maybeCallee =\n\t\tnode.parent.type === \"ChainExpression\" ? node.parent : node;\n\n\treturn (\n\t\tmaybeCallee.parent.type === \"NewExpression\" &&\n\t\tmaybeCallee.parent.callee === maybeCallee\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"wrap-iife\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/wrap-iife\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require parentheses around immediate `function` invocations\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/wrap-iife\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"outside\", \"inside\", \"any\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tfunctionPrototypeMethods: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tfixable: \"code\",\n\t\tmessages: {\n\t\t\twrapInvocation:\n\t\t\t\t\"Wrap an immediate function invocation in parentheses.\",\n\t\t\twrapExpression: \"Wrap only the function expression in parens.\",\n\t\t\tmoveInvocation:\n\t\t\t\t\"Move the invocation into the parens that contain the function.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst style = context.options[0] || \"outside\";\n\t\tconst includeFunctionPrototypeMethods =\n\t\t\tcontext.options[1] && context.options[1].functionPrototypeMethods;\n\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Check if the node is wrapped in any (). All parens count: grouping parens and parens for constructs such as if()\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {boolean} True if it is wrapped in any parens\n\t\t * @private\n\t\t */\n\t\tfunction isWrappedInAnyParens(node) {\n\t\t\treturn astUtils.isParenthesised(sourceCode, node);\n\t\t}\n\n\t\t/**\n\t\t * Check if the node is wrapped in grouping (). Parens for constructs such as if() don't count\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {boolean} True if it is wrapped in grouping parens\n\t\t * @private\n\t\t */\n\t\tfunction isWrappedInGroupingParens(node) {\n\t\t\treturn eslintUtils.isParenthesized(1, node, sourceCode);\n\t\t}\n\n\t\t/**\n\t\t * Get the function node from an IIFE\n\t\t * @param {ASTNode} node node to evaluate\n\t\t * @returns {ASTNode} node that is the function expression of the given IIFE, or null if none exist\n\t\t */\n\t\tfunction getFunctionNodeFromIIFE(node) {\n\t\t\tconst callee = astUtils.skipChainExpression(node.callee);\n\n\t\t\tif (callee.type === \"FunctionExpression\") {\n\t\t\t\treturn callee;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tincludeFunctionPrototypeMethods &&\n\t\t\t\tcallee.type === \"MemberExpression\" &&\n\t\t\t\tcallee.object.type === \"FunctionExpression\" &&\n\t\t\t\t(astUtils.getStaticPropertyName(callee) === \"call\" ||\n\t\t\t\t\tastUtils.getStaticPropertyName(callee) === \"apply\")\n\t\t\t) {\n\t\t\t\treturn callee.object;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\tCallExpression(node) {\n\t\t\t\tconst innerNode = getFunctionNodeFromIIFE(node);\n\n\t\t\t\tif (!innerNode) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst isCallExpressionWrapped = isWrappedInAnyParens(node),\n\t\t\t\t\tisFunctionExpressionWrapped =\n\t\t\t\t\t\tisWrappedInAnyParens(innerNode);\n\n\t\t\t\tif (!isCallExpressionWrapped && !isFunctionExpressionWrapped) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"wrapInvocation\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\tconst nodeToSurround =\n\t\t\t\t\t\t\t\tstyle === \"inside\" ? innerNode : node;\n\n\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\tnodeToSurround,\n\t\t\t\t\t\t\t\t`(${sourceCode.getText(nodeToSurround)})`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t} else if (style === \"inside\" && !isFunctionExpressionWrapped) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"wrapExpression\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t// The outer call expression will always be wrapped at this point.\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tisWrappedInGroupingParens(node) &&\n\t\t\t\t\t\t\t\t!isCalleeOfNewExpression(node)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * Parenthesize the function expression and remove unnecessary grouping parens around the call expression.\n\t\t\t\t\t\t\t\t * Replace the range between the end of the function expression and the end of the call expression.\n\t\t\t\t\t\t\t\t * for example, in `(function(foo) {}(bar))`, the range `(bar))` should get replaced with `)(bar)`.\n\t\t\t\t\t\t\t\t */\n\n\t\t\t\t\t\t\t\tconst parenAfter =\n\t\t\t\t\t\t\t\t\tsourceCode.getTokenAfter(node);\n\n\t\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t\t[innerNode.range[1], parenAfter.range[1]],\n\t\t\t\t\t\t\t\t\t`)${sourceCode.getText().slice(innerNode.range[1], parenAfter.range[0])}`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * Call expression is wrapped in mandatory parens such as if(), or in necessary grouping parens.\n\t\t\t\t\t\t\t * These parens cannot be removed, so just parenthesize the function expression.\n\t\t\t\t\t\t\t */\n\n\t\t\t\t\t\t\treturn fixer.replaceText(\n\t\t\t\t\t\t\t\tinnerNode,\n\t\t\t\t\t\t\t\t`(${sourceCode.getText(innerNode)})`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t} else if (style === \"outside\" && !isCallExpressionWrapped) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"moveInvocation\",\n\t\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * The inner function expression will always be wrapped at this point.\n\t\t\t\t\t\t\t * It's only necessary to replace the range between the end of the function expression\n\t\t\t\t\t\t\t * and the call expression. For example, in `(function(foo) {})(bar)`, the range `)(bar)`\n\t\t\t\t\t\t\t * should get replaced with `(bar))`.\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tconst parenAfter =\n\t\t\t\t\t\t\t\tsourceCode.getTokenAfter(innerNode);\n\n\t\t\t\t\t\t\treturn fixer.replaceTextRange(\n\t\t\t\t\t\t\t\t[parenAfter.range[0], node.range[1]],\n\t\t\t\t\t\t\t\t`${sourceCode.getText().slice(parenAfter.range[1], node.range[1])})`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to flag when regex literals are not wrapped in parens\n * @author Matt DuVall <http://www.mattduvall.com>\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"wrap-regex\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/wrap-regex\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription: \"Require parenthesis around regex literals\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/wrap-regex\",\n\t\t},\n\n\t\tschema: [],\n\t\tfixable: \"code\",\n\n\t\tmessages: {\n\t\t\trequireParens:\n\t\t\t\t\"Wrap the regexp literal in parens to disambiguate the slash.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\treturn {\n\t\t\tLiteral(node) {\n\t\t\t\tconst token = sourceCode.getFirstToken(node),\n\t\t\t\t\tnodeType = token.type;\n\n\t\t\t\tif (nodeType === \"RegularExpression\") {\n\t\t\t\t\tconst beforeToken = sourceCode.getTokenBefore(node);\n\t\t\t\t\tconst afterToken = sourceCode.getTokenAfter(node);\n\t\t\t\t\tconst { parent } = node;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tparent.type === \"MemberExpression\" &&\n\t\t\t\t\t\tparent.object === node &&\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\tbeforeToken &&\n\t\t\t\t\t\t\tbeforeToken.value === \"(\" &&\n\t\t\t\t\t\t\tafterToken &&\n\t\t\t\t\t\t\tafterToken.value === \")\"\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tmessageId: \"requireParens\",\n\t\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\t\tfixer.replaceText(\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t`(${sourceCode.getText(node)})`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to check the spacing around the * in yield* expressions.\n * @author Bryan Smith\n * @deprecated in ESLint v8.53.0\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\tdeprecated: {\n\t\t\tmessage: \"Formatting rules are being moved out of ESLint core.\",\n\t\t\turl: \"https://eslint.org/blog/2023/10/deprecating-formatting-rules/\",\n\t\t\tdeprecatedSince: \"8.53.0\",\n\t\t\tavailableUntil: \"11.0.0\",\n\t\t\treplacedBy: [\n\t\t\t\t{\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"ESLint Stylistic now maintains deprecated stylistic core rules.\",\n\t\t\t\t\turl: \"https://eslint.style/guide/migration\",\n\t\t\t\t\tplugin: {\n\t\t\t\t\t\tname: \"@stylistic/eslint-plugin\",\n\t\t\t\t\t\turl: \"https://eslint.style\",\n\t\t\t\t\t},\n\t\t\t\t\trule: {\n\t\t\t\t\t\tname: \"yield-star-spacing\",\n\t\t\t\t\t\turl: \"https://eslint.style/rules/yield-star-spacing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\ttype: \"layout\",\n\n\t\tdocs: {\n\t\t\tdescription:\n\t\t\t\t\"Require or disallow spacing around the `*` in `yield*` expressions\",\n\t\t\trecommended: false,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/yield-star-spacing\",\n\t\t},\n\n\t\tfixable: \"whitespace\",\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: [\"before\", \"after\", \"both\", \"neither\"],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbefore: { type: \"boolean\" },\n\t\t\t\t\t\t\tafter: { type: \"boolean\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tmessages: {\n\t\t\tmissingBefore: \"Missing space before *.\",\n\t\t\tmissingAfter: \"Missing space after *.\",\n\t\t\tunexpectedBefore: \"Unexpected space before *.\",\n\t\t\tunexpectedAfter: \"Unexpected space after *.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst sourceCode = context.sourceCode;\n\n\t\tconst mode = (function (option) {\n\t\t\tif (!option || typeof option === \"string\") {\n\t\t\t\treturn {\n\t\t\t\t\tbefore: { before: true, after: false },\n\t\t\t\t\tafter: { before: false, after: true },\n\t\t\t\t\tboth: { before: true, after: true },\n\t\t\t\t\tneither: { before: false, after: false },\n\t\t\t\t}[option || \"after\"];\n\t\t\t}\n\t\t\treturn option;\n\t\t})(context.options[0]);\n\n\t\t/**\n\t\t * Checks the spacing between two tokens before or after the star token.\n\t\t * @param {string} side Either \"before\" or \"after\".\n\t\t * @param {Token} leftToken `function` keyword token if side is \"before\", or\n\t\t *     star token if side is \"after\".\n\t\t * @param {Token} rightToken Star token if side is \"before\", or identifier\n\t\t *     token if side is \"after\".\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkSpacing(side, leftToken, rightToken) {\n\t\t\tif (\n\t\t\t\tsourceCode.isSpaceBetween(leftToken, rightToken) !== mode[side]\n\t\t\t) {\n\t\t\t\tconst after = leftToken.value === \"*\";\n\t\t\t\tconst spaceRequired = mode[side];\n\t\t\t\tconst node = after ? leftToken : rightToken;\n\t\t\t\tlet messageId;\n\n\t\t\t\tif (spaceRequired) {\n\t\t\t\t\tmessageId =\n\t\t\t\t\t\tside === \"before\" ? \"missingBefore\" : \"missingAfter\";\n\t\t\t\t} else {\n\t\t\t\t\tmessageId =\n\t\t\t\t\t\tside === \"before\"\n\t\t\t\t\t\t\t? \"unexpectedBefore\"\n\t\t\t\t\t\t\t: \"unexpectedAfter\";\n\t\t\t\t}\n\n\t\t\t\tcontext.report({\n\t\t\t\t\tnode,\n\t\t\t\t\tmessageId,\n\t\t\t\t\tfix(fixer) {\n\t\t\t\t\t\tif (spaceRequired) {\n\t\t\t\t\t\t\tif (after) {\n\t\t\t\t\t\t\t\treturn fixer.insertTextAfter(node, \" \");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn fixer.insertTextBefore(node, \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fixer.removeRange([\n\t\t\t\t\t\t\tleftToken.range[1],\n\t\t\t\t\t\t\trightToken.range[0],\n\t\t\t\t\t\t]);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Enforces the spacing around the star if node is a yield* expression.\n\t\t * @param {ASTNode} node A yield expression node.\n\t\t * @returns {void}\n\t\t */\n\t\tfunction checkExpression(node) {\n\t\t\tif (!node.delegate) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst tokens = sourceCode.getFirstTokens(node, 3);\n\t\t\tconst yieldToken = tokens[0];\n\t\t\tconst starToken = tokens[1];\n\t\t\tconst nextToken = tokens[2];\n\n\t\t\tcheckSpacing(\"before\", yieldToken, starToken);\n\t\t\tcheckSpacing(\"after\", starToken, nextToken);\n\t\t}\n\n\t\treturn {\n\t\t\tYieldExpression: checkExpression,\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Rule to require or disallow yoda comparisons\n * @author Nicholas C. Zakas\n */\n\"use strict\";\n\n//--------------------------------------------------------------------------\n// Requirements\n//--------------------------------------------------------------------------\n\nconst astUtils = require(\"./utils/ast-utils\");\n\n//--------------------------------------------------------------------------\n// Helpers\n//--------------------------------------------------------------------------\n\n/**\n * Determines whether an operator is a comparison operator.\n * @param {string} operator The operator to check.\n * @returns {boolean} Whether or not it is a comparison operator.\n */\nfunction isComparisonOperator(operator) {\n\treturn /^(?:==|===|!=|!==|<|>|<=|>=)$/u.test(operator);\n}\n\n/**\n * Determines whether an operator is an equality operator.\n * @param {string} operator The operator to check.\n * @returns {boolean} Whether or not it is an equality operator.\n */\nfunction isEqualityOperator(operator) {\n\treturn /^(?:==|===)$/u.test(operator);\n}\n\n/**\n * Determines whether an operator is one used in a range test.\n * Allowed operators are `<` and `<=`.\n * @param {string} operator The operator to check.\n * @returns {boolean} Whether the operator is used in range tests.\n */\nfunction isRangeTestOperator(operator) {\n\treturn [\"<\", \"<=\"].includes(operator);\n}\n\n/**\n * Determines whether a non-Literal node is a negative number that should be\n * treated as if it were a single Literal node.\n * @param {ASTNode} node Node to test.\n * @returns {boolean} True if the node is a negative number that looks like a\n *                    real literal and should be treated as such.\n */\nfunction isNegativeNumericLiteral(node) {\n\treturn (\n\t\tnode.type === \"UnaryExpression\" &&\n\t\tnode.operator === \"-\" &&\n\t\tnode.prefix &&\n\t\tastUtils.isNumericLiteral(node.argument)\n\t);\n}\n\n/**\n * Determines whether a non-Literal node should be treated as a single Literal node.\n * @param {ASTNode} node Node to test\n * @returns {boolean} True if the node should be treated as a single Literal node.\n */\nfunction looksLikeLiteral(node) {\n\treturn (\n\t\tisNegativeNumericLiteral(node) || astUtils.isStaticTemplateLiteral(node)\n\t);\n}\n\n/**\n * Attempts to derive a Literal node from nodes that are treated like literals.\n * @param {ASTNode} node Node to normalize.\n * @returns {ASTNode} One of the following options.\n *  1. The original node if the node is already a Literal\n *  2. A normalized Literal node with the negative number as the value if the\n *     node represents a negative number literal.\n *  3. A normalized Literal node with the string as the value if the node is\n *     a Template Literal without expression.\n *  4. Otherwise `null`.\n */\nfunction getNormalizedLiteral(node) {\n\tif (node.type === \"Literal\") {\n\t\treturn node;\n\t}\n\n\tif (isNegativeNumericLiteral(node)) {\n\t\treturn {\n\t\t\ttype: \"Literal\",\n\t\t\tvalue: -node.argument.value,\n\t\t\traw: `-${node.argument.value}`,\n\t\t};\n\t}\n\n\tif (astUtils.isStaticTemplateLiteral(node)) {\n\t\treturn {\n\t\t\ttype: \"Literal\",\n\t\t\tvalue: node.quasis[0].value.cooked,\n\t\t\traw: node.quasis[0].value.raw,\n\t\t};\n\t}\n\n\treturn null;\n}\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\n/** @type {import('../types').Rule.RuleModule} */\nmodule.exports = {\n\tmeta: {\n\t\ttype: \"suggestion\",\n\n\t\tdefaultOptions: [\n\t\t\t\"never\",\n\t\t\t{\n\t\t\t\texceptRange: false,\n\t\t\t\tonlyEquality: false,\n\t\t\t},\n\t\t],\n\n\t\tdocs: {\n\t\t\tdescription: 'Require or disallow \"Yoda\" conditions',\n\t\t\trecommended: false,\n\t\t\tfrozen: true,\n\t\t\turl: \"https://eslint.org/docs/latest/rules/yoda\",\n\t\t},\n\n\t\tschema: [\n\t\t\t{\n\t\t\t\tenum: [\"always\", \"never\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\texceptRange: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t\tonlyEquality: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t],\n\n\t\tfixable: \"code\",\n\t\tmessages: {\n\t\t\texpected:\n\t\t\t\t\"Expected literal to be on the {{expectedSide}} side of {{operator}}.\",\n\t\t},\n\t},\n\n\tcreate(context) {\n\t\tconst [when, { exceptRange, onlyEquality }] = context.options;\n\t\tconst always = when === \"always\";\n\t\tconst sourceCode = context.sourceCode;\n\n\t\t/**\n\t\t * Determines whether node represents a range test.\n\t\t * A range test is a \"between\" test like `(0 <= x && x < 1)` or an \"outside\"\n\t\t * test like `(x < 0 || 1 <= x)`. It must be wrapped in parentheses, and\n\t\t * both operators must be `<` or `<=`. Finally, the literal on the left side\n\t\t * must be less than or equal to the literal on the right side so that the\n\t\t * test makes any sense.\n\t\t * @param {ASTNode} node LogicalExpression node to test.\n\t\t * @returns {boolean} Whether node is a range test.\n\t\t */\n\t\tfunction isRangeTest(node) {\n\t\t\tconst left = node.left,\n\t\t\t\tright = node.right;\n\n\t\t\t/**\n\t\t\t * Determines whether node is of the form `0 <= x && x < 1`.\n\t\t\t * @returns {boolean} Whether node is a \"between\" range test.\n\t\t\t */\n\t\t\tfunction isBetweenTest() {\n\t\t\t\tif (\n\t\t\t\t\tnode.operator === \"&&\" &&\n\t\t\t\t\tastUtils.isSameReference(left.right, right.left)\n\t\t\t\t) {\n\t\t\t\t\tconst leftLiteral = getNormalizedLiteral(left.left);\n\t\t\t\t\tconst rightLiteral = getNormalizedLiteral(right.right);\n\n\t\t\t\t\tif (leftLiteral === null && rightLiteral === null) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (rightLiteral === null || leftLiteral === null) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (leftLiteral.value <= rightLiteral.value) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Determines whether node is of the form `x < 0 || 1 <= x`.\n\t\t\t * @returns {boolean} Whether node is an \"outside\" range test.\n\t\t\t */\n\t\t\tfunction isOutsideTest() {\n\t\t\t\tif (\n\t\t\t\t\tnode.operator === \"||\" &&\n\t\t\t\t\tastUtils.isSameReference(left.left, right.right)\n\t\t\t\t) {\n\t\t\t\t\tconst leftLiteral = getNormalizedLiteral(left.right);\n\t\t\t\t\tconst rightLiteral = getNormalizedLiteral(right.left);\n\n\t\t\t\t\tif (leftLiteral === null && rightLiteral === null) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (rightLiteral === null || leftLiteral === null) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (leftLiteral.value <= rightLiteral.value) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Determines whether node is wrapped in parentheses.\n\t\t\t * @returns {boolean} Whether node is preceded immediately by an open\n\t\t\t *                    paren token and followed immediately by a close\n\t\t\t *                    paren token.\n\t\t\t */\n\t\t\tfunction isParenWrapped() {\n\t\t\t\treturn astUtils.isParenthesised(sourceCode, node);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\tnode.type === \"LogicalExpression\" &&\n\t\t\t\tleft.type === \"BinaryExpression\" &&\n\t\t\t\tright.type === \"BinaryExpression\" &&\n\t\t\t\tisRangeTestOperator(left.operator) &&\n\t\t\t\tisRangeTestOperator(right.operator) &&\n\t\t\t\t(isBetweenTest() || isOutsideTest()) &&\n\t\t\t\tisParenWrapped()\n\t\t\t);\n\t\t}\n\n\t\tconst OPERATOR_FLIP_MAP = {\n\t\t\t\"===\": \"===\",\n\t\t\t\"!==\": \"!==\",\n\t\t\t\"==\": \"==\",\n\t\t\t\"!=\": \"!=\",\n\t\t\t\"<\": \">\",\n\t\t\t\">\": \"<\",\n\t\t\t\"<=\": \">=\",\n\t\t\t\">=\": \"<=\",\n\t\t};\n\n\t\t/**\n\t\t * Returns a string representation of a BinaryExpression node with its sides/operator flipped around.\n\t\t * @param {ASTNode} node The BinaryExpression node\n\t\t * @returns {string} A string representation of the node with the sides and operator flipped\n\t\t */\n\t\tfunction getFlippedString(node) {\n\t\t\tconst operatorToken = sourceCode.getFirstTokenBetween(\n\t\t\t\tnode.left,\n\t\t\t\tnode.right,\n\t\t\t\ttoken => token.value === node.operator,\n\t\t\t);\n\t\t\tconst lastLeftToken = sourceCode.getTokenBefore(operatorToken);\n\t\t\tconst firstRightToken = sourceCode.getTokenAfter(operatorToken);\n\n\t\t\tconst source = sourceCode.getText();\n\n\t\t\tconst leftText = source.slice(\n\t\t\t\tnode.range[0],\n\t\t\t\tlastLeftToken.range[1],\n\t\t\t);\n\t\t\tconst textBeforeOperator = source.slice(\n\t\t\t\tlastLeftToken.range[1],\n\t\t\t\toperatorToken.range[0],\n\t\t\t);\n\t\t\tconst textAfterOperator = source.slice(\n\t\t\t\toperatorToken.range[1],\n\t\t\t\tfirstRightToken.range[0],\n\t\t\t);\n\t\t\tconst rightText = source.slice(\n\t\t\t\tfirstRightToken.range[0],\n\t\t\t\tnode.range[1],\n\t\t\t);\n\n\t\t\tconst tokenBefore = sourceCode.getTokenBefore(node);\n\t\t\tconst tokenAfter = sourceCode.getTokenAfter(node);\n\t\t\tlet prefix = \"\";\n\t\t\tlet suffix = \"\";\n\n\t\t\tif (\n\t\t\t\ttokenBefore &&\n\t\t\t\ttokenBefore.range[1] === node.range[0] &&\n\t\t\t\t!astUtils.canTokensBeAdjacent(tokenBefore, firstRightToken)\n\t\t\t) {\n\t\t\t\tprefix = \" \";\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttokenAfter &&\n\t\t\t\tnode.range[1] === tokenAfter.range[0] &&\n\t\t\t\t!astUtils.canTokensBeAdjacent(lastLeftToken, tokenAfter)\n\t\t\t) {\n\t\t\t\tsuffix = \" \";\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\tprefix +\n\t\t\t\trightText +\n\t\t\t\ttextBeforeOperator +\n\t\t\t\tOPERATOR_FLIP_MAP[operatorToken.value] +\n\t\t\t\ttextAfterOperator +\n\t\t\t\tleftText +\n\t\t\t\tsuffix\n\t\t\t);\n\t\t}\n\n\t\t//--------------------------------------------------------------------------\n\t\t// Public\n\t\t//--------------------------------------------------------------------------\n\n\t\treturn {\n\t\t\tBinaryExpression(node) {\n\t\t\t\tconst expectedLiteral = always ? node.left : node.right;\n\t\t\t\tconst expectedNonLiteral = always ? node.right : node.left;\n\n\t\t\t\t// If `expectedLiteral` is not a literal, and `expectedNonLiteral` is a literal, raise an error.\n\t\t\t\tif (\n\t\t\t\t\t(expectedNonLiteral.type === \"Literal\" ||\n\t\t\t\t\t\tlooksLikeLiteral(expectedNonLiteral)) &&\n\t\t\t\t\t!(\n\t\t\t\t\t\texpectedLiteral.type === \"Literal\" ||\n\t\t\t\t\t\tlooksLikeLiteral(expectedLiteral)\n\t\t\t\t\t) &&\n\t\t\t\t\t!(!isEqualityOperator(node.operator) && onlyEquality) &&\n\t\t\t\t\tisComparisonOperator(node.operator) &&\n\t\t\t\t\t!(exceptRange && isRangeTest(node.parent))\n\t\t\t\t) {\n\t\t\t\t\tcontext.report({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tmessageId: \"expected\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\toperator: node.operator,\n\t\t\t\t\t\t\texpectedSide: always ? \"left\" : \"right\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfix: fixer =>\n\t\t\t\t\t\t\tfixer.replaceText(node, getFlippedString(node)),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t},\n};\n", "/**\n * @fileoverview Collects the built-in rules into a map structure so that they can be imported all at once and without\n * using the file-system directly.\n * @author Peter (Somogyvari) Metz\n */\n\n\"use strict\";\n\n/* eslint sort-keys: [\"error\", \"asc\"] -- More readable for long list */\n\nconst { LazyLoadingRuleMap } = require(\"./utils/lazy-loading-rule-map\");\n\n/** @type {Map<string, import(\"../types\").Rule.RuleModule>} */\nmodule.exports = new LazyLoadingRuleMap(\n\tObject.entries({\n\t\t\"accessor-pairs\": () => require(\"./accessor-pairs\"),\n\t\t\"array-bracket-newline\": () => require(\"./array-bracket-newline\"),\n\t\t\"array-bracket-spacing\": () => require(\"./array-bracket-spacing\"),\n\t\t\"array-callback-return\": () => require(\"./array-callback-return\"),\n\t\t\"array-element-newline\": () => require(\"./array-element-newline\"),\n\t\t\"arrow-body-style\": () => require(\"./arrow-body-style\"),\n\t\t\"arrow-parens\": () => require(\"./arrow-parens\"),\n\t\t\"arrow-spacing\": () => require(\"./arrow-spacing\"),\n\t\t\"block-scoped-var\": () => require(\"./block-scoped-var\"),\n\t\t\"block-spacing\": () => require(\"./block-spacing\"),\n\t\t\"brace-style\": () => require(\"./brace-style\"),\n\t\t\"callback-return\": () => require(\"./callback-return\"),\n\t\tcamelcase: () => require(\"./camelcase\"),\n\t\t\"capitalized-comments\": () => require(\"./capitalized-comments\"),\n\t\t\"class-methods-use-this\": () => require(\"./class-methods-use-this\"),\n\t\t\"comma-dangle\": () => require(\"./comma-dangle\"),\n\t\t\"comma-spacing\": () => require(\"./comma-spacing\"),\n\t\t\"comma-style\": () => require(\"./comma-style\"),\n\t\tcomplexity: () => require(\"./complexity\"),\n\t\t\"computed-property-spacing\": () =>\n\t\t\trequire(\"./computed-property-spacing\"),\n\t\t\"consistent-return\": () => require(\"./consistent-return\"),\n\t\t\"consistent-this\": () => require(\"./consistent-this\"),\n\t\t\"constructor-super\": () => require(\"./constructor-super\"),\n\t\tcurly: () => require(\"./curly\"),\n\t\t\"default-case\": () => require(\"./default-case\"),\n\t\t\"default-case-last\": () => require(\"./default-case-last\"),\n\t\t\"default-param-last\": () => require(\"./default-param-last\"),\n\t\t\"dot-location\": () => require(\"./dot-location\"),\n\t\t\"dot-notation\": () => require(\"./dot-notation\"),\n\t\t\"eol-last\": () => require(\"./eol-last\"),\n\t\teqeqeq: () => require(\"./eqeqeq\"),\n\t\t\"for-direction\": () => require(\"./for-direction\"),\n\t\t\"func-call-spacing\": () => require(\"./func-call-spacing\"),\n\t\t\"func-name-matching\": () => require(\"./func-name-matching\"),\n\t\t\"func-names\": () => require(\"./func-names\"),\n\t\t\"func-style\": () => require(\"./func-style\"),\n\t\t\"function-call-argument-newline\": () =>\n\t\t\trequire(\"./function-call-argument-newline\"),\n\t\t\"function-paren-newline\": () => require(\"./function-paren-newline\"),\n\t\t\"generator-star-spacing\": () => require(\"./generator-star-spacing\"),\n\t\t\"getter-return\": () => require(\"./getter-return\"),\n\t\t\"global-require\": () => require(\"./global-require\"),\n\t\t\"grouped-accessor-pairs\": () => require(\"./grouped-accessor-pairs\"),\n\t\t\"guard-for-in\": () => require(\"./guard-for-in\"),\n\t\t\"handle-callback-err\": () => require(\"./handle-callback-err\"),\n\t\t\"id-blacklist\": () => require(\"./id-blacklist\"),\n\t\t\"id-denylist\": () => require(\"./id-denylist\"),\n\t\t\"id-length\": () => require(\"./id-length\"),\n\t\t\"id-match\": () => require(\"./id-match\"),\n\t\t\"implicit-arrow-linebreak\": () => require(\"./implicit-arrow-linebreak\"),\n\t\tindent: () => require(\"./indent\"),\n\t\t\"indent-legacy\": () => require(\"./indent-legacy\"),\n\t\t\"init-declarations\": () => require(\"./init-declarations\"),\n\t\t\"jsx-quotes\": () => require(\"./jsx-quotes\"),\n\t\t\"key-spacing\": () => require(\"./key-spacing\"),\n\t\t\"keyword-spacing\": () => require(\"./keyword-spacing\"),\n\t\t\"line-comment-position\": () => require(\"./line-comment-position\"),\n\t\t\"linebreak-style\": () => require(\"./linebreak-style\"),\n\t\t\"lines-around-comment\": () => require(\"./lines-around-comment\"),\n\t\t\"lines-around-directive\": () => require(\"./lines-around-directive\"),\n\t\t\"lines-between-class-members\": () =>\n\t\t\trequire(\"./lines-between-class-members\"),\n\t\t\"logical-assignment-operators\": () =>\n\t\t\trequire(\"./logical-assignment-operators\"),\n\t\t\"max-classes-per-file\": () => require(\"./max-classes-per-file\"),\n\t\t\"max-depth\": () => require(\"./max-depth\"),\n\t\t\"max-len\": () => require(\"./max-len\"),\n\t\t\"max-lines\": () => require(\"./max-lines\"),\n\t\t\"max-lines-per-function\": () => require(\"./max-lines-per-function\"),\n\t\t\"max-nested-callbacks\": () => require(\"./max-nested-callbacks\"),\n\t\t\"max-params\": () => require(\"./max-params\"),\n\t\t\"max-statements\": () => require(\"./max-statements\"),\n\t\t\"max-statements-per-line\": () => require(\"./max-statements-per-line\"),\n\t\t\"multiline-comment-style\": () => require(\"./multiline-comment-style\"),\n\t\t\"multiline-ternary\": () => require(\"./multiline-ternary\"),\n\t\t\"new-cap\": () => require(\"./new-cap\"),\n\t\t\"new-parens\": () => require(\"./new-parens\"),\n\t\t\"newline-after-var\": () => require(\"./newline-after-var\"),\n\t\t\"newline-before-return\": () => require(\"./newline-before-return\"),\n\t\t\"newline-per-chained-call\": () => require(\"./newline-per-chained-call\"),\n\t\t\"no-alert\": () => require(\"./no-alert\"),\n\t\t\"no-array-constructor\": () => require(\"./no-array-constructor\"),\n\t\t\"no-async-promise-executor\": () =>\n\t\t\trequire(\"./no-async-promise-executor\"),\n\t\t\"no-await-in-loop\": () => require(\"./no-await-in-loop\"),\n\t\t\"no-bitwise\": () => require(\"./no-bitwise\"),\n\t\t\"no-buffer-constructor\": () => require(\"./no-buffer-constructor\"),\n\t\t\"no-caller\": () => require(\"./no-caller\"),\n\t\t\"no-case-declarations\": () => require(\"./no-case-declarations\"),\n\t\t\"no-catch-shadow\": () => require(\"./no-catch-shadow\"),\n\t\t\"no-class-assign\": () => require(\"./no-class-assign\"),\n\t\t\"no-compare-neg-zero\": () => require(\"./no-compare-neg-zero\"),\n\t\t\"no-cond-assign\": () => require(\"./no-cond-assign\"),\n\t\t\"no-confusing-arrow\": () => require(\"./no-confusing-arrow\"),\n\t\t\"no-console\": () => require(\"./no-console\"),\n\t\t\"no-const-assign\": () => require(\"./no-const-assign\"),\n\t\t\"no-constant-binary-expression\": () =>\n\t\t\trequire(\"./no-constant-binary-expression\"),\n\t\t\"no-constant-condition\": () => require(\"./no-constant-condition\"),\n\t\t\"no-constructor-return\": () => require(\"./no-constructor-return\"),\n\t\t\"no-continue\": () => require(\"./no-continue\"),\n\t\t\"no-control-regex\": () => require(\"./no-control-regex\"),\n\t\t\"no-debugger\": () => require(\"./no-debugger\"),\n\t\t\"no-delete-var\": () => require(\"./no-delete-var\"),\n\t\t\"no-div-regex\": () => require(\"./no-div-regex\"),\n\t\t\"no-dupe-args\": () => require(\"./no-dupe-args\"),\n\t\t\"no-dupe-class-members\": () => require(\"./no-dupe-class-members\"),\n\t\t\"no-dupe-else-if\": () => require(\"./no-dupe-else-if\"),\n\t\t\"no-dupe-keys\": () => require(\"./no-dupe-keys\"),\n\t\t\"no-duplicate-case\": () => require(\"./no-duplicate-case\"),\n\t\t\"no-duplicate-imports\": () => require(\"./no-duplicate-imports\"),\n\t\t\"no-else-return\": () => require(\"./no-else-return\"),\n\t\t\"no-empty\": () => require(\"./no-empty\"),\n\t\t\"no-empty-character-class\": () => require(\"./no-empty-character-class\"),\n\t\t\"no-empty-function\": () => require(\"./no-empty-function\"),\n\t\t\"no-empty-pattern\": () => require(\"./no-empty-pattern\"),\n\t\t\"no-empty-static-block\": () => require(\"./no-empty-static-block\"),\n\t\t\"no-eq-null\": () => require(\"./no-eq-null\"),\n\t\t\"no-eval\": () => require(\"./no-eval\"),\n\t\t\"no-ex-assign\": () => require(\"./no-ex-assign\"),\n\t\t\"no-extend-native\": () => require(\"./no-extend-native\"),\n\t\t\"no-extra-bind\": () => require(\"./no-extra-bind\"),\n\t\t\"no-extra-boolean-cast\": () => require(\"./no-extra-boolean-cast\"),\n\t\t\"no-extra-label\": () => require(\"./no-extra-label\"),\n\t\t\"no-extra-parens\": () => require(\"./no-extra-parens\"),\n\t\t\"no-extra-semi\": () => require(\"./no-extra-semi\"),\n\t\t\"no-fallthrough\": () => require(\"./no-fallthrough\"),\n\t\t\"no-floating-decimal\": () => require(\"./no-floating-decimal\"),\n\t\t\"no-func-assign\": () => require(\"./no-func-assign\"),\n\t\t\"no-global-assign\": () => require(\"./no-global-assign\"),\n\t\t\"no-implicit-coercion\": () => require(\"./no-implicit-coercion\"),\n\t\t\"no-implicit-globals\": () => require(\"./no-implicit-globals\"),\n\t\t\"no-implied-eval\": () => require(\"./no-implied-eval\"),\n\t\t\"no-import-assign\": () => require(\"./no-import-assign\"),\n\t\t\"no-inline-comments\": () => require(\"./no-inline-comments\"),\n\t\t\"no-inner-declarations\": () => require(\"./no-inner-declarations\"),\n\t\t\"no-invalid-regexp\": () => require(\"./no-invalid-regexp\"),\n\t\t\"no-invalid-this\": () => require(\"./no-invalid-this\"),\n\t\t\"no-irregular-whitespace\": () => require(\"./no-irregular-whitespace\"),\n\t\t\"no-iterator\": () => require(\"./no-iterator\"),\n\t\t\"no-label-var\": () => require(\"./no-label-var\"),\n\t\t\"no-labels\": () => require(\"./no-labels\"),\n\t\t\"no-lone-blocks\": () => require(\"./no-lone-blocks\"),\n\t\t\"no-lonely-if\": () => require(\"./no-lonely-if\"),\n\t\t\"no-loop-func\": () => require(\"./no-loop-func\"),\n\t\t\"no-loss-of-precision\": () => require(\"./no-loss-of-precision\"),\n\t\t\"no-magic-numbers\": () => require(\"./no-magic-numbers\"),\n\t\t\"no-misleading-character-class\": () =>\n\t\t\trequire(\"./no-misleading-character-class\"),\n\t\t\"no-mixed-operators\": () => require(\"./no-mixed-operators\"),\n\t\t\"no-mixed-requires\": () => require(\"./no-mixed-requires\"),\n\t\t\"no-mixed-spaces-and-tabs\": () => require(\"./no-mixed-spaces-and-tabs\"),\n\t\t\"no-multi-assign\": () => require(\"./no-multi-assign\"),\n\t\t\"no-multi-spaces\": () => require(\"./no-multi-spaces\"),\n\t\t\"no-multi-str\": () => require(\"./no-multi-str\"),\n\t\t\"no-multiple-empty-lines\": () => require(\"./no-multiple-empty-lines\"),\n\t\t\"no-native-reassign\": () => require(\"./no-native-reassign\"),\n\t\t\"no-negated-condition\": () => require(\"./no-negated-condition\"),\n\t\t\"no-negated-in-lhs\": () => require(\"./no-negated-in-lhs\"),\n\t\t\"no-nested-ternary\": () => require(\"./no-nested-ternary\"),\n\t\t\"no-new\": () => require(\"./no-new\"),\n\t\t\"no-new-func\": () => require(\"./no-new-func\"),\n\t\t\"no-new-native-nonconstructor\": () =>\n\t\t\trequire(\"./no-new-native-nonconstructor\"),\n\t\t\"no-new-object\": () => require(\"./no-new-object\"),\n\t\t\"no-new-require\": () => require(\"./no-new-require\"),\n\t\t\"no-new-symbol\": () => require(\"./no-new-symbol\"),\n\t\t\"no-new-wrappers\": () => require(\"./no-new-wrappers\"),\n\t\t\"no-nonoctal-decimal-escape\": () =>\n\t\t\trequire(\"./no-nonoctal-decimal-escape\"),\n\t\t\"no-obj-calls\": () => require(\"./no-obj-calls\"),\n\t\t\"no-object-constructor\": () => require(\"./no-object-constructor\"),\n\t\t\"no-octal\": () => require(\"./no-octal\"),\n\t\t\"no-octal-escape\": () => require(\"./no-octal-escape\"),\n\t\t\"no-param-reassign\": () => require(\"./no-param-reassign\"),\n\t\t\"no-path-concat\": () => require(\"./no-path-concat\"),\n\t\t\"no-plusplus\": () => require(\"./no-plusplus\"),\n\t\t\"no-process-env\": () => require(\"./no-process-env\"),\n\t\t\"no-process-exit\": () => require(\"./no-process-exit\"),\n\t\t\"no-promise-executor-return\": () =>\n\t\t\trequire(\"./no-promise-executor-return\"),\n\t\t\"no-proto\": () => require(\"./no-proto\"),\n\t\t\"no-prototype-builtins\": () => require(\"./no-prototype-builtins\"),\n\t\t\"no-redeclare\": () => require(\"./no-redeclare\"),\n\t\t\"no-regex-spaces\": () => require(\"./no-regex-spaces\"),\n\t\t\"no-restricted-exports\": () => require(\"./no-restricted-exports\"),\n\t\t\"no-restricted-globals\": () => require(\"./no-restricted-globals\"),\n\t\t\"no-restricted-imports\": () => require(\"./no-restricted-imports\"),\n\t\t\"no-restricted-modules\": () => require(\"./no-restricted-modules\"),\n\t\t\"no-restricted-properties\": () => require(\"./no-restricted-properties\"),\n\t\t\"no-restricted-syntax\": () => require(\"./no-restricted-syntax\"),\n\t\t\"no-return-assign\": () => require(\"./no-return-assign\"),\n\t\t\"no-return-await\": () => require(\"./no-return-await\"),\n\t\t\"no-script-url\": () => require(\"./no-script-url\"),\n\t\t\"no-self-assign\": () => require(\"./no-self-assign\"),\n\t\t\"no-self-compare\": () => require(\"./no-self-compare\"),\n\t\t\"no-sequences\": () => require(\"./no-sequences\"),\n\t\t\"no-setter-return\": () => require(\"./no-setter-return\"),\n\t\t\"no-shadow\": () => require(\"./no-shadow\"),\n\t\t\"no-shadow-restricted-names\": () =>\n\t\t\trequire(\"./no-shadow-restricted-names\"),\n\t\t\"no-spaced-func\": () => require(\"./no-spaced-func\"),\n\t\t\"no-sparse-arrays\": () => require(\"./no-sparse-arrays\"),\n\t\t\"no-sync\": () => require(\"./no-sync\"),\n\t\t\"no-tabs\": () => require(\"./no-tabs\"),\n\t\t\"no-template-curly-in-string\": () =>\n\t\t\trequire(\"./no-template-curly-in-string\"),\n\t\t\"no-ternary\": () => require(\"./no-ternary\"),\n\t\t\"no-this-before-super\": () => require(\"./no-this-before-super\"),\n\t\t\"no-throw-literal\": () => require(\"./no-throw-literal\"),\n\t\t\"no-trailing-spaces\": () => require(\"./no-trailing-spaces\"),\n\t\t\"no-unassigned-vars\": () => require(\"./no-unassigned-vars\"),\n\t\t\"no-undef\": () => require(\"./no-undef\"),\n\t\t\"no-undef-init\": () => require(\"./no-undef-init\"),\n\t\t\"no-undefined\": () => require(\"./no-undefined\"),\n\t\t\"no-underscore-dangle\": () => require(\"./no-underscore-dangle\"),\n\t\t\"no-unexpected-multiline\": () => require(\"./no-unexpected-multiline\"),\n\t\t\"no-unmodified-loop-condition\": () =>\n\t\t\trequire(\"./no-unmodified-loop-condition\"),\n\t\t\"no-unneeded-ternary\": () => require(\"./no-unneeded-ternary\"),\n\t\t\"no-unreachable\": () => require(\"./no-unreachable\"),\n\t\t\"no-unreachable-loop\": () => require(\"./no-unreachable-loop\"),\n\t\t\"no-unsafe-finally\": () => require(\"./no-unsafe-finally\"),\n\t\t\"no-unsafe-negation\": () => require(\"./no-unsafe-negation\"),\n\t\t\"no-unsafe-optional-chaining\": () =>\n\t\t\trequire(\"./no-unsafe-optional-chaining\"),\n\t\t\"no-unused-expressions\": () => require(\"./no-unused-expressions\"),\n\t\t\"no-unused-labels\": () => require(\"./no-unused-labels\"),\n\t\t\"no-unused-private-class-members\": () =>\n\t\t\trequire(\"./no-unused-private-class-members\"),\n\t\t\"no-unused-vars\": () => require(\"./no-unused-vars\"),\n\t\t\"no-use-before-define\": () => require(\"./no-use-before-define\"),\n\t\t\"no-useless-assignment\": () => require(\"./no-useless-assignment\"),\n\t\t\"no-useless-backreference\": () => require(\"./no-useless-backreference\"),\n\t\t\"no-useless-call\": () => require(\"./no-useless-call\"),\n\t\t\"no-useless-catch\": () => require(\"./no-useless-catch\"),\n\t\t\"no-useless-computed-key\": () => require(\"./no-useless-computed-key\"),\n\t\t\"no-useless-concat\": () => require(\"./no-useless-concat\"),\n\t\t\"no-useless-constructor\": () => require(\"./no-useless-constructor\"),\n\t\t\"no-useless-escape\": () => require(\"./no-useless-escape\"),\n\t\t\"no-useless-rename\": () => require(\"./no-useless-rename\"),\n\t\t\"no-useless-return\": () => require(\"./no-useless-return\"),\n\t\t\"no-var\": () => require(\"./no-var\"),\n\t\t\"no-void\": () => require(\"./no-void\"),\n\t\t\"no-warning-comments\": () => require(\"./no-warning-comments\"),\n\t\t\"no-whitespace-before-property\": () =>\n\t\t\trequire(\"./no-whitespace-before-property\"),\n\t\t\"no-with\": () => require(\"./no-with\"),\n\t\t\"nonblock-statement-body-position\": () =>\n\t\t\trequire(\"./nonblock-statement-body-position\"),\n\t\t\"object-curly-newline\": () => require(\"./object-curly-newline\"),\n\t\t\"object-curly-spacing\": () => require(\"./object-curly-spacing\"),\n\t\t\"object-property-newline\": () => require(\"./object-property-newline\"),\n\t\t\"object-shorthand\": () => require(\"./object-shorthand\"),\n\t\t\"one-var\": () => require(\"./one-var\"),\n\t\t\"one-var-declaration-per-line\": () =>\n\t\t\trequire(\"./one-var-declaration-per-line\"),\n\t\t\"operator-assignment\": () => require(\"./operator-assignment\"),\n\t\t\"operator-linebreak\": () => require(\"./operator-linebreak\"),\n\t\t\"padded-blocks\": () => require(\"./padded-blocks\"),\n\t\t\"padding-line-between-statements\": () =>\n\t\t\trequire(\"./padding-line-between-statements\"),\n\t\t\"prefer-arrow-callback\": () => require(\"./prefer-arrow-callback\"),\n\t\t\"prefer-const\": () => require(\"./prefer-const\"),\n\t\t\"prefer-destructuring\": () => require(\"./prefer-destructuring\"),\n\t\t\"prefer-exponentiation-operator\": () =>\n\t\t\trequire(\"./prefer-exponentiation-operator\"),\n\t\t\"prefer-named-capture-group\": () =>\n\t\t\trequire(\"./prefer-named-capture-group\"),\n\t\t\"prefer-numeric-literals\": () => require(\"./prefer-numeric-literals\"),\n\t\t\"prefer-object-has-own\": () => require(\"./prefer-object-has-own\"),\n\t\t\"prefer-object-spread\": () => require(\"./prefer-object-spread\"),\n\t\t\"prefer-promise-reject-errors\": () =>\n\t\t\trequire(\"./prefer-promise-reject-errors\"),\n\t\t\"prefer-reflect\": () => require(\"./prefer-reflect\"),\n\t\t\"prefer-regex-literals\": () => require(\"./prefer-regex-literals\"),\n\t\t\"prefer-rest-params\": () => require(\"./prefer-rest-params\"),\n\t\t\"prefer-spread\": () => require(\"./prefer-spread\"),\n\t\t\"prefer-template\": () => require(\"./prefer-template\"),\n\t\t\"preserve-caught-error\": () => require(\"./preserve-caught-error\"),\n\t\t\"quote-props\": () => require(\"./quote-props\"),\n\t\tquotes: () => require(\"./quotes\"),\n\t\tradix: () => require(\"./radix\"),\n\t\t\"require-atomic-updates\": () => require(\"./require-atomic-updates\"),\n\t\t\"require-await\": () => require(\"./require-await\"),\n\t\t\"require-unicode-regexp\": () => require(\"./require-unicode-regexp\"),\n\t\t\"require-yield\": () => require(\"./require-yield\"),\n\t\t\"rest-spread-spacing\": () => require(\"./rest-spread-spacing\"),\n\t\tsemi: () => require(\"./semi\"),\n\t\t\"semi-spacing\": () => require(\"./semi-spacing\"),\n\t\t\"semi-style\": () => require(\"./semi-style\"),\n\t\t\"sort-imports\": () => require(\"./sort-imports\"),\n\t\t\"sort-keys\": () => require(\"./sort-keys\"),\n\t\t\"sort-vars\": () => require(\"./sort-vars\"),\n\t\t\"space-before-blocks\": () => require(\"./space-before-blocks\"),\n\t\t\"space-before-function-paren\": () =>\n\t\t\trequire(\"./space-before-function-paren\"),\n\t\t\"space-in-parens\": () => require(\"./space-in-parens\"),\n\t\t\"space-infix-ops\": () => require(\"./space-infix-ops\"),\n\t\t\"space-unary-ops\": () => require(\"./space-unary-ops\"),\n\t\t\"spaced-comment\": () => require(\"./spaced-comment\"),\n\t\tstrict: () => require(\"./strict\"),\n\t\t\"switch-colon-spacing\": () => require(\"./switch-colon-spacing\"),\n\t\t\"symbol-description\": () => require(\"./symbol-description\"),\n\t\t\"template-curly-spacing\": () => require(\"./template-curly-spacing\"),\n\t\t\"template-tag-spacing\": () => require(\"./template-tag-spacing\"),\n\t\t\"unicode-bom\": () => require(\"./unicode-bom\"),\n\t\t\"use-isnan\": () => require(\"./use-isnan\"),\n\t\t\"valid-typeof\": () => require(\"./valid-typeof\"),\n\t\t\"vars-on-top\": () => require(\"./vars-on-top\"),\n\t\t\"wrap-iife\": () => require(\"./wrap-iife\"),\n\t\t\"wrap-regex\": () => require(\"./wrap-regex\"),\n\t\t\"yield-star-spacing\": () => require(\"./yield-star-spacing\"),\n\t\tyoda: () => require(\"./yoda\"),\n\t}),\n);\n", "/**\n * @fileoverview Assertion utilities equivalent to the Node.js node:asserts module.\n * @author Josh Goldberg\n */\n\n\"use strict\";\n\n/**\n * Throws an error if the input is not truthy.\n * @param {unknown} value The input that is checked for being truthy.\n * @param {string} message Message to throw if the input is not truthy.\n * @returns {void}\n * @throws {Error} When the condition is not truthy.\n */\nfunction ok(value, message = \"Assertion failed.\") {\n\tif (!value) {\n\t\tthrow new Error(message);\n\t}\n}\n\nmodule.exports = ok;\n", "/**\n * @fileoverview Define the abstract class about cursors which iterate tokens.\n * @author Toru Nagashima\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The abstract class about cursors which iterate tokens.\n *\n * This class has 2 abstract methods.\n *\n * - `current: Token | Comment | null` ... The current token.\n * - `moveNext(): boolean` ... Moves this cursor to the next token. If the next token didn't exist, it returns `false`.\n *\n * This is similar to ES2015 Iterators.\n * However, Iterators were slow (at 2017-01), so I created this class as similar to C# IEnumerable.\n *\n * There are the following known sub classes.\n *\n * - ForwardTokenCursor .......... The cursor which iterates tokens only.\n * - BackwardTokenCursor ......... The cursor which iterates tokens only in reverse.\n * - ForwardTokenCommentCursor ... The cursor which iterates tokens and comments.\n * - BackwardTokenCommentCursor .. The cursor which iterates tokens and comments in reverse.\n * - DecorativeCursor\n *     - FilterCursor ............ The cursor which ignores the specified tokens.\n *     - SkipCursor .............. The cursor which ignores the first few tokens.\n *     - LimitCursor ............. The cursor which limits the count of tokens.\n *\n */\nmodule.exports = class Cursor {\n\t/**\n\t * Initializes this cursor.\n\t */\n\tconstructor() {\n\t\tthis.current = null;\n\t}\n\n\t/**\n\t * Gets the first token.\n\t * This consumes this cursor.\n\t * @returns {Token|Comment} The first token or null.\n\t */\n\tgetOneToken() {\n\t\treturn this.moveNext() ? this.current : null;\n\t}\n\n\t/**\n\t * Gets the first tokens.\n\t * This consumes this cursor.\n\t * @returns {(Token|Comment)[]} All tokens.\n\t */\n\tgetAllTokens() {\n\t\tconst tokens = [];\n\n\t\twhile (this.moveNext()) {\n\t\t\ttokens.push(this.current);\n\t\t}\n\n\t\treturn tokens;\n\t}\n\n\t/**\n\t * Moves this cursor to the next token.\n\t * @returns {boolean} `true` if the next token exists.\n\t * @abstract\n\t */\n\t/* c8 ignore next */\n\t// eslint-disable-next-line class-methods-use-this -- Unused\n\tmoveNext() {\n\t\tthrow new Error(\"Not implemented.\");\n\t}\n};\n", "/**\n * @fileoverview Define utility functions for token store.\n * @author Toru Nagashima\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Finds the index of the first token which is after the given location.\n * If it was not found, this returns `tokens.length`.\n * @param {(Token|Comment)[]} tokens It searches the token in this list.\n * @param {number} location The location to search.\n * @returns {number} The found index or `tokens.length`.\n */\nfunction search(tokens, location) {\n\tfor (\n\t\tlet minIndex = 0, maxIndex = tokens.length - 1;\n\t\tminIndex <= maxIndex;\n\t) {\n\t\t/*\n\t\t * Calculate the index in the middle between minIndex and maxIndex.\n\t\t * `| 0` is used to round a fractional value down to the nearest integer: this is similar to\n\t\t * using `Math.trunc()` or `Math.floor()`, but performance tests have shown this method to\n\t\t * be faster.\n\t\t */\n\t\tconst index = ((minIndex + maxIndex) / 2) | 0;\n\t\tconst token = tokens[index];\n\t\tconst tokenStartLocation = token.range[0];\n\n\t\tif (location <= tokenStartLocation) {\n\t\t\tif (index === minIndex) {\n\t\t\t\treturn index;\n\t\t\t}\n\t\t\tmaxIndex = index;\n\t\t} else {\n\t\t\tminIndex = index + 1;\n\t\t}\n\t}\n\treturn tokens.length;\n}\n\n/**\n * Gets the index of the `startLoc` in `tokens`.\n * `startLoc` can be the value of `node.range[1]`, so this checks about `startLoc - 1` as well.\n * @param {(Token|Comment)[]} tokens The tokens to find an index.\n * @param {Object} indexMap The map from locations to indices.\n * @param {number} startLoc The location to get an index.\n * @returns {number} The index.\n */\nfunction getFirstIndex(tokens, indexMap, startLoc) {\n\tif (startLoc === -1) {\n\t\treturn 0;\n\t}\n\tif (startLoc in indexMap) {\n\t\treturn indexMap[startLoc];\n\t}\n\tif (startLoc - 1 in indexMap) {\n\t\tconst index = indexMap[startLoc - 1];\n\t\tconst token = tokens[index];\n\n\t\t// If the mapped index is out of bounds, the returned cursor index will point after the end of the tokens array.\n\t\tif (!token) {\n\t\t\treturn tokens.length;\n\t\t}\n\n\t\t/*\n\t\t * For the map of \"comment's location -> token's index\", it points the next token of a comment.\n\t\t * In that case, +1 is unnecessary.\n\t\t */\n\t\tif (token.range[0] >= startLoc) {\n\t\t\treturn index;\n\t\t}\n\t\treturn index + 1;\n\t}\n\n\t// Program node that doesn't start/end with a token or comment\n\tif (startLoc === 0) {\n\t\treturn 0;\n\t}\n\treturn tokens.length;\n}\n/**\n * Gets the index of the `endLoc` in `tokens`.\n * The information of end locations are recorded at `endLoc - 1` in `indexMap`, so this checks about `endLoc - 1` as well.\n * @param {(Token|Comment)[]} tokens The tokens to find an index.\n * @param {Object} indexMap The map from locations to indices.\n * @param {number} endLoc The location to get an index.\n * @returns {number} The index.\n */\nfunction getLastIndex(tokens, indexMap, endLoc) {\n\tif (endLoc === -1) {\n\t\treturn tokens.length - 1;\n\t}\n\tif (endLoc in indexMap) {\n\t\treturn indexMap[endLoc] - 1;\n\t}\n\tif (endLoc - 1 in indexMap) {\n\t\tconst index = indexMap[endLoc - 1];\n\t\tconst token = tokens[index];\n\n\t\t// If the mapped index is out of bounds, the returned cursor index will point before the end of the tokens array.\n\t\tif (!token) {\n\t\t\treturn tokens.length - 1;\n\t\t}\n\n\t\t/*\n\t\t * For the map of \"comment's location -> token's index\", it points the next token of a comment.\n\t\t * In that case, -1 is necessary.\n\t\t */\n\t\tif (token.range[1] > endLoc) {\n\t\t\treturn index - 1;\n\t\t}\n\t\treturn index;\n\t}\n\n\t// Program node that doesn't start/end with a token or comment\n\tif (endLoc === 0) {\n\t\treturn -1;\n\t}\n\treturn tokens.length - 1;\n}\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\nmodule.exports = { search, getFirstIndex, getLastIndex };\n", "/**\n * @fileoverview Define the cursor which iterates tokens and comments in reverse.\n * @author Toru Nagashima\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst Cursor = require(\"./cursor\");\nconst utils = require(\"./utils\");\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The cursor which iterates tokens and comments in reverse.\n */\nmodule.exports = class BackwardTokenCommentCursor extends Cursor {\n\t/**\n\t * Initializes this cursor.\n\t * @param {Token[]} tokens The array of tokens.\n\t * @param {Comment[]} comments The array of comments.\n\t * @param {Object} indexMap The map from locations to indices in `tokens`.\n\t * @param {number} startLoc The start location of the iteration range.\n\t * @param {number} endLoc The end location of the iteration range.\n\t */\n\tconstructor(tokens, comments, indexMap, startLoc, endLoc) {\n\t\tsuper();\n\t\tthis.tokens = tokens;\n\t\tthis.comments = comments;\n\t\tthis.tokenIndex = utils.getLastIndex(tokens, indexMap, endLoc);\n\t\tthis.commentIndex = utils.search(comments, endLoc) - 1;\n\t\tthis.border = startLoc;\n\t}\n\n\t/** @inheritdoc */\n\tmoveNext() {\n\t\tconst token =\n\t\t\tthis.tokenIndex >= 0 ? this.tokens[this.tokenIndex] : null;\n\t\tconst comment =\n\t\t\tthis.commentIndex >= 0 ? this.comments[this.commentIndex] : null;\n\n\t\tif (token && (!comment || token.range[1] > comment.range[1])) {\n\t\t\tthis.current = token;\n\t\t\tthis.tokenIndex -= 1;\n\t\t} else if (comment) {\n\t\t\tthis.current = comment;\n\t\t\tthis.commentIndex -= 1;\n\t\t} else {\n\t\t\tthis.current = null;\n\t\t}\n\n\t\treturn (\n\t\t\tBoolean(this.current) &&\n\t\t\t(this.border === -1 || this.current.range[0] >= this.border)\n\t\t);\n\t}\n};\n", "/**\n * @fileoverview Define the cursor which iterates tokens only in reverse.\n * @author Toru Nagashima\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst Cursor = require(\"./cursor\");\nconst { getLastIndex, getFirstIndex } = require(\"./utils\");\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The cursor which iterates tokens only in reverse.\n */\nmodule.exports = class BackwardTokenCursor extends Cursor {\n\t/**\n\t * Initializes this cursor.\n\t * @param {Token[]} tokens The array of tokens.\n\t * @param {Comment[]} comments The array of comments.\n\t * @param {Object} indexMap The map from locations to indices in `tokens`.\n\t * @param {number} startLoc The start location of the iteration range.\n\t * @param {number} endLoc The end location of the iteration range.\n\t */\n\tconstructor(tokens, comments, indexMap, startLoc, endLoc) {\n\t\tsuper();\n\t\tthis.tokens = tokens;\n\t\tthis.index = getLastIndex(tokens, indexMap, endLoc);\n\t\tthis.indexEnd = getFirstIndex(tokens, indexMap, startLoc);\n\t}\n\n\t/** @inheritdoc */\n\tmoveNext() {\n\t\tif (this.index >= this.indexEnd) {\n\t\t\tthis.current = this.tokens[this.index];\n\t\t\tthis.index -= 1;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/*\n\t *\n\t * Shorthand for performance.\n\t *\n\t */\n\n\t/** @inheritdoc */\n\tgetOneToken() {\n\t\treturn this.index >= this.indexEnd ? this.tokens[this.index] : null;\n\t}\n};\n", "/**\n * @fileoverview Define the abstract class about cursors which manipulate another cursor.\n * @author Toru Nagashima\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst Cursor = require(\"./cursor\");\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The abstract class about cursors which manipulate another cursor.\n */\nmodule.exports = class DecorativeCursor extends Cursor {\n\t/**\n\t * Initializes this cursor.\n\t * @param {Cursor} cursor The cursor to be decorated.\n\t */\n\tconstructor(cursor) {\n\t\tsuper();\n\t\tthis.cursor = cursor;\n\t}\n\n\t/** @inheritdoc */\n\tmoveNext() {\n\t\tconst retv = this.cursor.moveNext();\n\n\t\tthis.current = this.cursor.current;\n\n\t\treturn retv;\n\t}\n};\n", "/**\n * @fileoverview Define the cursor which ignores specified tokens.\n * @author Toru Nagashima\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst DecorativeCursor = require(\"./decorative-cursor\");\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The decorative cursor which ignores specified tokens.\n */\nmodule.exports = class FilterCursor extends DecorativeCursor {\n\t/**\n\t * Initializes this cursor.\n\t * @param {Cursor} cursor The cursor to be decorated.\n\t * @param {Function} predicate The predicate function to decide tokens this cursor iterates.\n\t */\n\tconstructor(cursor, predicate) {\n\t\tsuper(cursor);\n\t\tthis.predicate = predicate;\n\t}\n\n\t/** @inheritdoc */\n\tmoveNext() {\n\t\tconst predicate = this.predicate;\n\n\t\twhile (super.moveNext()) {\n\t\t\tif (predicate(this.current)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n};\n", "/**\n * @fileoverview Define the cursor which iterates tokens and comments.\n * @author Toru Nagashima\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst Cursor = require(\"./cursor\");\nconst { getFirstIndex, search } = require(\"./utils\");\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The cursor which iterates tokens and comments.\n */\nmodule.exports = class ForwardTokenCommentCursor extends Cursor {\n\t/**\n\t * Initializes this cursor.\n\t * @param {Token[]} tokens The array of tokens.\n\t * @param {Comment[]} comments The array of comments.\n\t * @param {Object} indexMap The map from locations to indices in `tokens`.\n\t * @param {number} startLoc The start location of the iteration range.\n\t * @param {number} endLoc The end location of the iteration range.\n\t */\n\tconstructor(tokens, comments, indexMap, startLoc, endLoc) {\n\t\tsuper();\n\t\tthis.tokens = tokens;\n\t\tthis.comments = comments;\n\t\tthis.tokenIndex = getFirstIndex(tokens, indexMap, startLoc);\n\t\tthis.commentIndex = search(comments, startLoc);\n\t\tthis.border = endLoc;\n\t}\n\n\t/** @inheritdoc */\n\tmoveNext() {\n\t\tconst token =\n\t\t\tthis.tokenIndex < this.tokens.length\n\t\t\t\t? this.tokens[this.tokenIndex]\n\t\t\t\t: null;\n\t\tconst comment =\n\t\t\tthis.commentIndex < this.comments.length\n\t\t\t\t? this.comments[this.commentIndex]\n\t\t\t\t: null;\n\n\t\tif (token && (!comment || token.range[0] < comment.range[0])) {\n\t\t\tthis.current = token;\n\t\t\tthis.tokenIndex += 1;\n\t\t} else if (comment) {\n\t\t\tthis.current = comment;\n\t\t\tthis.commentIndex += 1;\n\t\t} else {\n\t\t\tthis.current = null;\n\t\t}\n\n\t\treturn (\n\t\t\tBoolean(this.current) &&\n\t\t\t(this.border === -1 || this.current.range[1] <= this.border)\n\t\t);\n\t}\n};\n", "/**\n * @fileoverview Define the cursor which iterates tokens only.\n * @author Toru Nagashima\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst Cursor = require(\"./cursor\");\nconst { getFirstIndex, getLastIndex } = require(\"./utils\");\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The cursor which iterates tokens only.\n */\nmodule.exports = class ForwardTokenCursor extends Cursor {\n\t/**\n\t * Initializes this cursor.\n\t * @param {Token[]} tokens The array of tokens.\n\t * @param {Comment[]} comments The array of comments.\n\t * @param {Object} indexMap The map from locations to indices in `tokens`.\n\t * @param {number} startLoc The start location of the iteration range.\n\t * @param {number} endLoc The end location of the iteration range.\n\t */\n\tconstructor(tokens, comments, indexMap, startLoc, endLoc) {\n\t\tsuper();\n\t\tthis.tokens = tokens;\n\t\tthis.index = getFirstIndex(tokens, indexMap, startLoc);\n\t\tthis.indexEnd = getLastIndex(tokens, indexMap, endLoc);\n\t}\n\n\t/** @inheritdoc */\n\tmoveNext() {\n\t\tif (this.index <= this.indexEnd) {\n\t\t\tthis.current = this.tokens[this.index];\n\t\t\tthis.index += 1;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/*\n\t *\n\t * Shorthand for performance.\n\t *\n\t */\n\n\t/** @inheritdoc */\n\tgetOneToken() {\n\t\treturn this.index <= this.indexEnd ? this.tokens[this.index] : null;\n\t}\n\n\t/** @inheritdoc */\n\tgetAllTokens() {\n\t\treturn this.tokens.slice(this.index, this.indexEnd + 1);\n\t}\n};\n", "/**\n * @fileoverview Define the cursor which limits the number of tokens.\n * @author Toru Nagashima\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst DecorativeCursor = require(\"./decorative-cursor\");\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The decorative cursor which limits the number of tokens.\n */\nmodule.exports = class LimitCursor extends DecorativeCursor {\n\t/**\n\t * Initializes this cursor.\n\t * @param {Cursor} cursor The cursor to be decorated.\n\t * @param {number} count The count of tokens this cursor iterates.\n\t */\n\tconstructor(cursor, count) {\n\t\tsuper(cursor);\n\t\tthis.count = count;\n\t}\n\n\t/** @inheritdoc */\n\tmoveNext() {\n\t\tif (this.count > 0) {\n\t\t\tthis.count -= 1;\n\t\t\treturn super.moveNext();\n\t\t}\n\t\treturn false;\n\t}\n};\n", "/**\n * @fileoverview Define the cursor which ignores the first few tokens.\n * @author Toru Nagashima\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst DecorativeCursor = require(\"./decorative-cursor\");\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The decorative cursor which ignores the first few tokens.\n */\nmodule.exports = class SkipCursor extends DecorativeCursor {\n\t/**\n\t * Initializes this cursor.\n\t * @param {Cursor} cursor The cursor to be decorated.\n\t * @param {number} count The count of tokens this cursor skips.\n\t */\n\tconstructor(cursor, count) {\n\t\tsuper(cursor);\n\t\tthis.count = count;\n\t}\n\n\t/** @inheritdoc */\n\tmoveNext() {\n\t\twhile (this.count > 0) {\n\t\t\tthis.count -= 1;\n\t\t\tif (!super.moveNext()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn super.moveNext();\n\t}\n};\n", "/**\n * @fileoverview Define 2 token factories; forward and backward.\n * @author Toru Nagashima\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst BackwardTokenCommentCursor = require(\"./backward-token-comment-cursor\");\nconst BackwardTokenCursor = require(\"./backward-token-cursor\");\nconst FilterCursor = require(\"./filter-cursor\");\nconst ForwardTokenCommentCursor = require(\"./forward-token-comment-cursor\");\nconst ForwardTokenCursor = require(\"./forward-token-cursor\");\nconst LimitCursor = require(\"./limit-cursor\");\nconst SkipCursor = require(\"./skip-cursor\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * The cursor factory.\n * @private\n */\nclass CursorFactory {\n\t/**\n\t * Initializes this cursor.\n\t * @param {Function} TokenCursor The class of the cursor which iterates tokens only.\n\t * @param {Function} TokenCommentCursor The class of the cursor which iterates the mix of tokens and comments.\n\t */\n\tconstructor(TokenCursor, TokenCommentCursor) {\n\t\tthis.TokenCursor = TokenCursor;\n\t\tthis.TokenCommentCursor = TokenCommentCursor;\n\t}\n\n\t/**\n\t * Creates a base cursor instance that can be decorated by createCursor.\n\t * @param {Token[]} tokens The array of tokens.\n\t * @param {Comment[]} comments The array of comments.\n\t * @param {Object} indexMap The map from locations to indices in `tokens`.\n\t * @param {number} startLoc The start location of the iteration range.\n\t * @param {number} endLoc The end location of the iteration range.\n\t * @param {boolean} includeComments The flag to iterate comments as well.\n\t * @returns {Cursor} The created base cursor.\n\t */\n\tcreateBaseCursor(\n\t\ttokens,\n\t\tcomments,\n\t\tindexMap,\n\t\tstartLoc,\n\t\tendLoc,\n\t\tincludeComments,\n\t) {\n\t\tconst Cursor = includeComments\n\t\t\t? this.TokenCommentCursor\n\t\t\t: this.TokenCursor;\n\n\t\treturn new Cursor(tokens, comments, indexMap, startLoc, endLoc);\n\t}\n\n\t/**\n\t * Creates a cursor that iterates tokens with normalized options.\n\t * @param {Token[]} tokens The array of tokens.\n\t * @param {Comment[]} comments The array of comments.\n\t * @param {Object} indexMap The map from locations to indices in `tokens`.\n\t * @param {number} startLoc The start location of the iteration range.\n\t * @param {number} endLoc The end location of the iteration range.\n\t * @param {boolean} includeComments The flag to iterate comments as well.\n\t * @param {Function|null} filter The predicate function to choose tokens.\n\t * @param {number} skip The count of tokens the cursor skips.\n\t * @param {number} count The maximum count of tokens the cursor iterates. Zero is no iteration for backward compatibility.\n\t * @returns {Cursor} The created cursor.\n\t */\n\tcreateCursor(\n\t\ttokens,\n\t\tcomments,\n\t\tindexMap,\n\t\tstartLoc,\n\t\tendLoc,\n\t\tincludeComments,\n\t\tfilter,\n\t\tskip,\n\t\tcount,\n\t) {\n\t\tlet cursor = this.createBaseCursor(\n\t\t\ttokens,\n\t\t\tcomments,\n\t\t\tindexMap,\n\t\t\tstartLoc,\n\t\t\tendLoc,\n\t\t\tincludeComments,\n\t\t);\n\n\t\tif (filter) {\n\t\t\tcursor = new FilterCursor(cursor, filter);\n\t\t}\n\t\tif (skip >= 1) {\n\t\t\tcursor = new SkipCursor(cursor, skip);\n\t\t}\n\t\tif (count >= 0) {\n\t\t\tcursor = new LimitCursor(cursor, count);\n\t\t}\n\n\t\treturn cursor;\n\t}\n}\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\nmodule.exports = {\n\tforward: new CursorFactory(ForwardTokenCursor, ForwardTokenCommentCursor),\n\tbackward: new CursorFactory(\n\t\tBackwardTokenCursor,\n\t\tBackwardTokenCommentCursor,\n\t),\n};\n", "/**\n * @fileoverview Define the cursor which iterates tokens only, with inflated range.\n * @author Toru Nagashima\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst ForwardTokenCursor = require(\"./forward-token-cursor\");\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The cursor which iterates tokens only, with inflated range.\n * This is for the backward compatibility of padding options.\n */\nmodule.exports = class PaddedTokenCursor extends ForwardTokenCursor {\n\t/**\n\t * Initializes this cursor.\n\t * @param {Token[]} tokens The array of tokens.\n\t * @param {Comment[]} comments The array of comments.\n\t * @param {Object} indexMap The map from locations to indices in `tokens`.\n\t * @param {number} startLoc The start location of the iteration range.\n\t * @param {number} endLoc The end location of the iteration range.\n\t * @param {number} beforeCount The number of tokens this cursor iterates before start.\n\t * @param {number} afterCount The number of tokens this cursor iterates after end.\n\t */\n\tconstructor(\n\t\ttokens,\n\t\tcomments,\n\t\tindexMap,\n\t\tstartLoc,\n\t\tendLoc,\n\t\tbeforeCount,\n\t\tafterCount,\n\t) {\n\t\tsuper(tokens, comments, indexMap, startLoc, endLoc);\n\t\tthis.index = Math.max(0, this.index - beforeCount);\n\t\tthis.indexEnd = Math.min(tokens.length - 1, this.indexEnd + afterCount);\n\t}\n};\n", "/**\n * @fileoverview Object to handle access and retrieval of tokens.\n * @author Brandon Mills\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst { isCommentToken } = require(\"@eslint-community/eslint-utils\");\nconst assert = require(\"../../../../shared/assert\");\nconst cursors = require(\"./cursors\");\nconst ForwardTokenCursor = require(\"./forward-token-cursor\");\nconst PaddedTokenCursor = require(\"./padded-token-cursor\");\nconst utils = require(\"./utils\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst TOKENS = Symbol(\"tokens\");\nconst COMMENTS = Symbol(\"comments\");\nconst INDEX_MAP = Symbol(\"indexMap\");\n\n/**\n * Creates the map from locations to indices in `tokens`.\n *\n * The first/last location of tokens is mapped to the index of the token.\n * The first/last location of comments is mapped to the index of the next token of each comment.\n * @param {Token[]} tokens The array of tokens.\n * @param {Comment[]} comments The array of comments.\n * @returns {Object} The map from locations to indices in `tokens`.\n * @private\n */\nfunction createIndexMap(tokens, comments) {\n\tconst map = Object.create(null);\n\tlet tokenIndex = 0;\n\tlet commentIndex = 0;\n\tlet nextStart;\n\tlet range;\n\n\twhile (tokenIndex < tokens.length || commentIndex < comments.length) {\n\t\tnextStart =\n\t\t\tcommentIndex < comments.length\n\t\t\t\t? comments[commentIndex].range[0]\n\t\t\t\t: Number.MAX_SAFE_INTEGER;\n\t\twhile (\n\t\t\ttokenIndex < tokens.length &&\n\t\t\t(range = tokens[tokenIndex].range)[0] < nextStart\n\t\t) {\n\t\t\tmap[range[0]] = tokenIndex;\n\t\t\tmap[range[1] - 1] = tokenIndex;\n\t\t\ttokenIndex += 1;\n\t\t}\n\n\t\tnextStart =\n\t\t\ttokenIndex < tokens.length\n\t\t\t\t? tokens[tokenIndex].range[0]\n\t\t\t\t: Number.MAX_SAFE_INTEGER;\n\t\twhile (\n\t\t\tcommentIndex < comments.length &&\n\t\t\t(range = comments[commentIndex].range)[0] < nextStart\n\t\t) {\n\t\t\tmap[range[0]] = tokenIndex;\n\t\t\tmap[range[1] - 1] = tokenIndex;\n\t\t\tcommentIndex += 1;\n\t\t}\n\t}\n\n\treturn map;\n}\n\n/**\n * Creates the cursor iterates tokens with options.\n * @param {CursorFactory} factory The cursor factory to initialize cursor.\n * @param {Token[]} tokens The array of tokens.\n * @param {Comment[]} comments The array of comments.\n * @param {Object} indexMap The map from locations to indices in `tokens`.\n * @param {number} startLoc The start location of the iteration range.\n * @param {number} endLoc The end location of the iteration range.\n * @param {number|Function|Object} [opts=0] The option object. If this is a number then it's `opts.skip`. If this is a function then it's `opts.filter`.\n * @param {boolean} [opts.includeComments=false] The flag to iterate comments as well.\n * @param {Function|null} [opts.filter=null] The predicate function to choose tokens.\n * @param {number} [opts.skip=0] The count of tokens the cursor skips.\n * @returns {Cursor} The created cursor.\n * @private\n */\nfunction createCursorWithSkip(\n\tfactory,\n\ttokens,\n\tcomments,\n\tindexMap,\n\tstartLoc,\n\tendLoc,\n\topts,\n) {\n\tlet includeComments = false;\n\tlet skip = 0;\n\tlet filter = null;\n\n\tif (typeof opts === \"number\") {\n\t\tskip = opts | 0;\n\t} else if (typeof opts === \"function\") {\n\t\tfilter = opts;\n\t} else if (opts) {\n\t\tincludeComments = !!opts.includeComments;\n\t\tskip = opts.skip | 0;\n\t\tfilter = opts.filter || null;\n\t}\n\tassert(skip >= 0, \"options.skip should be zero or a positive integer.\");\n\tassert(\n\t\t!filter || typeof filter === \"function\",\n\t\t\"options.filter should be a function.\",\n\t);\n\n\treturn factory.createCursor(\n\t\ttokens,\n\t\tcomments,\n\t\tindexMap,\n\t\tstartLoc,\n\t\tendLoc,\n\t\tincludeComments,\n\t\tfilter,\n\t\tskip,\n\t\t-1,\n\t);\n}\n\n/**\n * Creates the cursor iterates tokens with options.\n * @param {CursorFactory} factory The cursor factory to initialize cursor.\n * @param {Token[]} tokens The array of tokens.\n * @param {Comment[]} comments The array of comments.\n * @param {Object} indexMap The map from locations to indices in `tokens`.\n * @param {number} startLoc The start location of the iteration range.\n * @param {number} endLoc The end location of the iteration range.\n * @param {number|Function|Object} [opts=0] The option object. If this is a number then it's `opts.count`. If this is a function then it's `opts.filter`.\n * @param {boolean} [opts.includeComments] The flag to iterate comments as well.\n * @param {Function|null} [opts.filter=null] The predicate function to choose tokens.\n * @param {number} [opts.count=0] The maximum count of tokens the cursor iterates. Zero is no iteration for backward compatibility.\n * @returns {Cursor} The created cursor.\n * @private\n */\nfunction createCursorWithCount(\n\tfactory,\n\ttokens,\n\tcomments,\n\tindexMap,\n\tstartLoc,\n\tendLoc,\n\topts,\n) {\n\tlet includeComments = false;\n\tlet count = 0;\n\tlet countExists = false;\n\tlet filter = null;\n\n\tif (typeof opts === \"number\") {\n\t\tcount = opts | 0;\n\t\tcountExists = true;\n\t} else if (typeof opts === \"function\") {\n\t\tfilter = opts;\n\t} else if (opts) {\n\t\tincludeComments = !!opts.includeComments;\n\t\tcount = opts.count | 0;\n\t\tcountExists = typeof opts.count === \"number\";\n\t\tfilter = opts.filter || null;\n\t}\n\tassert(count >= 0, \"options.count should be zero or a positive integer.\");\n\tassert(\n\t\t!filter || typeof filter === \"function\",\n\t\t\"options.filter should be a function.\",\n\t);\n\n\treturn factory.createCursor(\n\t\ttokens,\n\t\tcomments,\n\t\tindexMap,\n\t\tstartLoc,\n\t\tendLoc,\n\t\tincludeComments,\n\t\tfilter,\n\t\t0,\n\t\tcountExists ? count : -1,\n\t);\n}\n\n/**\n * Creates the cursor iterates tokens with options.\n * This is overload function of the below.\n * @param {Token[]} tokens The array of tokens.\n * @param {Comment[]} comments The array of comments.\n * @param {Object} indexMap The map from locations to indices in `tokens`.\n * @param {number} startLoc The start location of the iteration range.\n * @param {number} endLoc The end location of the iteration range.\n * @param {Function|Object} opts The option object. If this is a function then it's `opts.filter`.\n * @param {boolean} [opts.includeComments] The flag to iterate comments as well.\n * @param {Function|null} [opts.filter=null] The predicate function to choose tokens.\n * @param {number} [opts.count=0] The maximum count of tokens the cursor iterates. Zero is no iteration for backward compatibility.\n * @returns {Cursor} The created cursor.\n * @private\n */\n/**\n * Creates the cursor iterates tokens with options.\n * @param {Token[]} tokens The array of tokens.\n * @param {Comment[]} comments The array of comments.\n * @param {Object} indexMap The map from locations to indices in `tokens`.\n * @param {number} startLoc The start location of the iteration range.\n * @param {number} endLoc The end location of the iteration range.\n * @param {number} [beforeCount=0] The number of tokens before the node to retrieve.\n * @param {boolean} [afterCount=0] The number of tokens after the node to retrieve.\n * @returns {Cursor} The created cursor.\n * @private\n */\nfunction createCursorWithPadding(\n\ttokens,\n\tcomments,\n\tindexMap,\n\tstartLoc,\n\tendLoc,\n\tbeforeCount,\n\tafterCount,\n) {\n\tif (\n\t\ttypeof beforeCount === \"undefined\" &&\n\t\ttypeof afterCount === \"undefined\"\n\t) {\n\t\treturn new ForwardTokenCursor(\n\t\t\ttokens,\n\t\t\tcomments,\n\t\t\tindexMap,\n\t\t\tstartLoc,\n\t\t\tendLoc,\n\t\t);\n\t}\n\tif (typeof beforeCount === \"number\" || typeof beforeCount === \"undefined\") {\n\t\treturn new PaddedTokenCursor(\n\t\t\ttokens,\n\t\t\tcomments,\n\t\t\tindexMap,\n\t\t\tstartLoc,\n\t\t\tendLoc,\n\t\t\tbeforeCount | 0,\n\t\t\tafterCount | 0,\n\t\t);\n\t}\n\treturn createCursorWithCount(\n\t\tcursors.forward,\n\t\ttokens,\n\t\tcomments,\n\t\tindexMap,\n\t\tstartLoc,\n\t\tendLoc,\n\t\tbeforeCount,\n\t);\n}\n\n/**\n * Gets comment tokens that are adjacent to the current cursor position.\n * @param {Cursor} cursor A cursor instance.\n * @returns {Array} An array of comment tokens adjacent to the current cursor position.\n * @private\n */\nfunction getAdjacentCommentTokensFromCursor(cursor) {\n\tconst tokens = [];\n\tlet currentToken = cursor.getOneToken();\n\n\twhile (currentToken && isCommentToken(currentToken)) {\n\t\ttokens.push(currentToken);\n\t\tcurrentToken = cursor.getOneToken();\n\t}\n\n\treturn tokens;\n}\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The token store.\n *\n * This class provides methods to get tokens by locations as fast as possible.\n * The methods are a part of public API, so we should be careful if it changes this class.\n *\n * People can get tokens in O(1) by the hash map which is mapping from the location of tokens/comments to tokens.\n * Also people can get a mix of tokens and comments in O(log k), the k is the number of comments.\n * Assuming that comments to be much fewer than tokens, this does not make hash map from token's locations to comments to reduce memory cost.\n * This uses binary-searching instead for comments.\n */\nmodule.exports = class TokenStore {\n\t/**\n\t * Initializes this token store.\n\t * @param {Token[]} tokens The array of tokens.\n\t * @param {Comment[]} comments The array of comments.\n\t */\n\tconstructor(tokens, comments) {\n\t\tthis[TOKENS] = tokens;\n\t\tthis[COMMENTS] = comments;\n\t\tthis[INDEX_MAP] = createIndexMap(tokens, comments);\n\t}\n\n\t//--------------------------------------------------------------------------\n\t// Gets single token.\n\t//--------------------------------------------------------------------------\n\n\t/**\n\t * Gets the token starting at the specified index.\n\t * @param {number} offset Index of the start of the token's range.\n\t * @param {Object} [options=0] The option object.\n\t * @param {boolean} [options.includeComments=false] The flag to iterate comments as well.\n\t * @returns {Token|null} The token starting at index, or null if no such token.\n\t */\n\tgetTokenByRangeStart(offset, options) {\n\t\tconst includeComments = options && options.includeComments;\n\t\tconst token = cursors.forward\n\t\t\t.createBaseCursor(\n\t\t\t\tthis[TOKENS],\n\t\t\t\tthis[COMMENTS],\n\t\t\t\tthis[INDEX_MAP],\n\t\t\t\toffset,\n\t\t\t\t-1,\n\t\t\t\tincludeComments,\n\t\t\t)\n\t\t\t.getOneToken();\n\n\t\tif (token && token.range[0] === offset) {\n\t\t\treturn token;\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Gets the first token of the given node.\n\t * @param {ASTNode} node The AST node.\n\t * @param {number|Function|Object} [options=0] The option object. If this is a number then it's `options.skip`. If this is a function then it's `options.filter`.\n\t * @param {boolean} [options.includeComments=false] The flag to iterate comments as well.\n\t * @param {Function|null} [options.filter=null] The predicate function to choose tokens.\n\t * @param {number} [options.skip=0] The count of tokens the cursor skips.\n\t * @returns {Token|null} An object representing the token.\n\t */\n\tgetFirstToken(node, options) {\n\t\treturn createCursorWithSkip(\n\t\t\tcursors.forward,\n\t\t\tthis[TOKENS],\n\t\t\tthis[COMMENTS],\n\t\t\tthis[INDEX_MAP],\n\t\t\tnode.range[0],\n\t\t\tnode.range[1],\n\t\t\toptions,\n\t\t).getOneToken();\n\t}\n\n\t/**\n\t * Gets the last token of the given node.\n\t * @param {ASTNode} node The AST node.\n\t * @param {number|Function|Object} [options=0] The option object. Same options as getFirstToken()\n\t * @returns {Token|null} An object representing the token.\n\t */\n\tgetLastToken(node, options) {\n\t\treturn createCursorWithSkip(\n\t\t\tcursors.backward,\n\t\t\tthis[TOKENS],\n\t\t\tthis[COMMENTS],\n\t\t\tthis[INDEX_MAP],\n\t\t\tnode.range[0],\n\t\t\tnode.range[1],\n\t\t\toptions,\n\t\t).getOneToken();\n\t}\n\n\t/**\n\t * Gets the token that precedes a given node or token.\n\t * @param {ASTNode|Token|Comment} node The AST node or token.\n\t * @param {number|Function|Object} [options=0] The option object. Same options as getFirstToken()\n\t * @returns {Token|null} An object representing the token.\n\t */\n\tgetTokenBefore(node, options) {\n\t\treturn createCursorWithSkip(\n\t\t\tcursors.backward,\n\t\t\tthis[TOKENS],\n\t\t\tthis[COMMENTS],\n\t\t\tthis[INDEX_MAP],\n\t\t\t-1,\n\t\t\tnode.range[0],\n\t\t\toptions,\n\t\t).getOneToken();\n\t}\n\n\t/**\n\t * Gets the token that follows a given node or token.\n\t * @param {ASTNode|Token|Comment} node The AST node or token.\n\t * @param {number|Function|Object} [options=0] The option object. Same options as getFirstToken()\n\t * @returns {Token|null} An object representing the token.\n\t */\n\tgetTokenAfter(node, options) {\n\t\treturn createCursorWithSkip(\n\t\t\tcursors.forward,\n\t\t\tthis[TOKENS],\n\t\t\tthis[COMMENTS],\n\t\t\tthis[INDEX_MAP],\n\t\t\tnode.range[1],\n\t\t\t-1,\n\t\t\toptions,\n\t\t).getOneToken();\n\t}\n\n\t/**\n\t * Gets the first token between two non-overlapping nodes.\n\t * @param {ASTNode|Token|Comment} left Node before the desired token range.\n\t * @param {ASTNode|Token|Comment} right Node after the desired token range.\n\t * @param {number|Function|Object} [options=0] The option object. Same options as getFirstToken()\n\t * @returns {Token|null} An object representing the token.\n\t */\n\tgetFirstTokenBetween(left, right, options) {\n\t\treturn createCursorWithSkip(\n\t\t\tcursors.forward,\n\t\t\tthis[TOKENS],\n\t\t\tthis[COMMENTS],\n\t\t\tthis[INDEX_MAP],\n\t\t\tleft.range[1],\n\t\t\tright.range[0],\n\t\t\toptions,\n\t\t).getOneToken();\n\t}\n\n\t/**\n\t * Gets the last token between two non-overlapping nodes.\n\t * @param {ASTNode|Token|Comment} left Node before the desired token range.\n\t * @param {ASTNode|Token|Comment} right Node after the desired token range.\n\t * @param {number|Function|Object} [options=0] The option object. Same options as getFirstToken()\n\t * @returns {Token|null} An object representing the token.\n\t */\n\tgetLastTokenBetween(left, right, options) {\n\t\treturn createCursorWithSkip(\n\t\t\tcursors.backward,\n\t\t\tthis[TOKENS],\n\t\t\tthis[COMMENTS],\n\t\t\tthis[INDEX_MAP],\n\t\t\tleft.range[1],\n\t\t\tright.range[0],\n\t\t\toptions,\n\t\t).getOneToken();\n\t}\n\n\t//--------------------------------------------------------------------------\n\t// Gets multiple tokens.\n\t//--------------------------------------------------------------------------\n\n\t/**\n\t * Gets the first `count` tokens of the given node.\n\t * @param {ASTNode} node The AST node.\n\t * @param {number|Function|Object} [options=0] The option object. If this is a number then it's `options.count`. If this is a function then it's `options.filter`.\n\t * @param {boolean} [options.includeComments=false] The flag to iterate comments as well.\n\t * @param {Function|null} [options.filter=null] The predicate function to choose tokens.\n\t * @param {number} [options.count=0] The maximum count of tokens the cursor iterates.\n\t * @returns {Token[]} Tokens.\n\t */\n\tgetFirstTokens(node, options) {\n\t\treturn createCursorWithCount(\n\t\t\tcursors.forward,\n\t\t\tthis[TOKENS],\n\t\t\tthis[COMMENTS],\n\t\t\tthis[INDEX_MAP],\n\t\t\tnode.range[0],\n\t\t\tnode.range[1],\n\t\t\toptions,\n\t\t).getAllTokens();\n\t}\n\n\t/**\n\t * Gets the last `count` tokens of the given node.\n\t * @param {ASTNode} node The AST node.\n\t * @param {number|Function|Object} [options=0] The option object. Same options as getFirstTokens()\n\t * @returns {Token[]} Tokens.\n\t */\n\tgetLastTokens(node, options) {\n\t\treturn createCursorWithCount(\n\t\t\tcursors.backward,\n\t\t\tthis[TOKENS],\n\t\t\tthis[COMMENTS],\n\t\t\tthis[INDEX_MAP],\n\t\t\tnode.range[0],\n\t\t\tnode.range[1],\n\t\t\toptions,\n\t\t)\n\t\t\t.getAllTokens()\n\t\t\t.reverse();\n\t}\n\n\t/**\n\t * Gets the `count` tokens that precedes a given node or token.\n\t * @param {ASTNode|Token|Comment} node The AST node or token.\n\t * @param {number|Function|Object} [options=0] The option object. Same options as getFirstTokens()\n\t * @returns {Token[]} Tokens.\n\t */\n\tgetTokensBefore(node, options) {\n\t\treturn createCursorWithCount(\n\t\t\tcursors.backward,\n\t\t\tthis[TOKENS],\n\t\t\tthis[COMMENTS],\n\t\t\tthis[INDEX_MAP],\n\t\t\t-1,\n\t\t\tnode.range[0],\n\t\t\toptions,\n\t\t)\n\t\t\t.getAllTokens()\n\t\t\t.reverse();\n\t}\n\n\t/**\n\t * Gets the `count` tokens that follows a given node or token.\n\t * @param {ASTNode|Token|Comment} node The AST node or token.\n\t * @param {number|Function|Object} [options=0] The option object. Same options as getFirstTokens()\n\t * @returns {Token[]} Tokens.\n\t */\n\tgetTokensAfter(node, options) {\n\t\treturn createCursorWithCount(\n\t\t\tcursors.forward,\n\t\t\tthis[TOKENS],\n\t\t\tthis[COMMENTS],\n\t\t\tthis[INDEX_MAP],\n\t\t\tnode.range[1],\n\t\t\t-1,\n\t\t\toptions,\n\t\t).getAllTokens();\n\t}\n\n\t/**\n\t * Gets the first `count` tokens between two non-overlapping nodes.\n\t * @param {ASTNode|Token|Comment} left Node before the desired token range.\n\t * @param {ASTNode|Token|Comment} right Node after the desired token range.\n\t * @param {number|Function|Object} [options=0] The option object. Same options as getFirstTokens()\n\t * @returns {Token[]} Tokens between left and right.\n\t */\n\tgetFirstTokensBetween(left, right, options) {\n\t\treturn createCursorWithCount(\n\t\t\tcursors.forward,\n\t\t\tthis[TOKENS],\n\t\t\tthis[COMMENTS],\n\t\t\tthis[INDEX_MAP],\n\t\t\tleft.range[1],\n\t\t\tright.range[0],\n\t\t\toptions,\n\t\t).getAllTokens();\n\t}\n\n\t/**\n\t * Gets the last `count` tokens between two non-overlapping nodes.\n\t * @param {ASTNode|Token|Comment} left Node before the desired token range.\n\t * @param {ASTNode|Token|Comment} right Node after the desired token range.\n\t * @param {number|Function|Object} [options=0] The option object. Same options as getFirstTokens()\n\t * @returns {Token[]} Tokens between left and right.\n\t */\n\tgetLastTokensBetween(left, right, options) {\n\t\treturn createCursorWithCount(\n\t\t\tcursors.backward,\n\t\t\tthis[TOKENS],\n\t\t\tthis[COMMENTS],\n\t\t\tthis[INDEX_MAP],\n\t\t\tleft.range[1],\n\t\t\tright.range[0],\n\t\t\toptions,\n\t\t)\n\t\t\t.getAllTokens()\n\t\t\t.reverse();\n\t}\n\n\t/**\n\t * Gets all tokens that are related to the given node.\n\t * @param {ASTNode} node The AST node.\n\t * @param {Function|Object} options The option object. If this is a function then it's `options.filter`.\n\t * @param {boolean} [options.includeComments=false] The flag to iterate comments as well.\n\t * @param {Function|null} [options.filter=null] The predicate function to choose tokens.\n\t * @param {number} [options.count=0] The maximum count of tokens the cursor iterates.\n\t * @returns {Token[]} Array of objects representing tokens.\n\t */\n\t/**\n\t * Gets all tokens that are related to the given node.\n\t * @param {ASTNode} node The AST node.\n\t * @param {number} [beforeCount=0] The number of tokens before the node to retrieve.\n\t * @param {number} [afterCount=0] The number of tokens after the node to retrieve.\n\t * @returns {Token[]} Array of objects representing tokens.\n\t */\n\tgetTokens(node, beforeCount, afterCount) {\n\t\treturn createCursorWithPadding(\n\t\t\tthis[TOKENS],\n\t\t\tthis[COMMENTS],\n\t\t\tthis[INDEX_MAP],\n\t\t\tnode.range[0],\n\t\t\tnode.range[1],\n\t\t\tbeforeCount,\n\t\t\tafterCount,\n\t\t).getAllTokens();\n\t}\n\n\t/**\n\t * Gets all of the tokens between two non-overlapping nodes.\n\t * @param {ASTNode|Token|Comment} left Node before the desired token range.\n\t * @param {ASTNode|Token|Comment} right Node after the desired token range.\n\t * @param {Function|Object} options The option object. If this is a function then it's `options.filter`.\n\t * @param {boolean} [options.includeComments=false] The flag to iterate comments as well.\n\t * @param {Function|null} [options.filter=null] The predicate function to choose tokens.\n\t * @param {number} [options.count=0] The maximum count of tokens the cursor iterates.\n\t * @returns {Token[]} Tokens between left and right.\n\t */\n\t/**\n\t * Gets all of the tokens between two non-overlapping nodes.\n\t * @param {ASTNode|Token|Comment} left Node before the desired token range.\n\t * @param {ASTNode|Token|Comment} right Node after the desired token range.\n\t * @param {number} [padding=0] Number of extra tokens on either side of center.\n\t * @returns {Token[]} Tokens between left and right.\n\t */\n\tgetTokensBetween(left, right, padding) {\n\t\treturn createCursorWithPadding(\n\t\t\tthis[TOKENS],\n\t\t\tthis[COMMENTS],\n\t\t\tthis[INDEX_MAP],\n\t\t\tleft.range[1],\n\t\t\tright.range[0],\n\t\t\tpadding,\n\t\t\tpadding,\n\t\t).getAllTokens();\n\t}\n\n\t//--------------------------------------------------------------------------\n\t// Others.\n\t//--------------------------------------------------------------------------\n\n\t/**\n\t * Checks whether any comments exist or not between the given 2 nodes.\n\t * @param {ASTNode} left The node to check.\n\t * @param {ASTNode} right The node to check.\n\t * @returns {boolean} `true` if one or more comments exist.\n\t */\n\tcommentsExistBetween(left, right) {\n\t\tconst index = utils.search(this[COMMENTS], left.range[1]);\n\n\t\treturn (\n\t\t\tindex < this[COMMENTS].length &&\n\t\t\tthis[COMMENTS][index].range[1] <= right.range[0]\n\t\t);\n\t}\n\n\t/**\n\t * Gets all comment tokens directly before the given node or token.\n\t * @param {ASTNode|token} nodeOrToken The AST node or token to check for adjacent comment tokens.\n\t * @returns {Array} An array of comments in occurrence order.\n\t */\n\tgetCommentsBefore(nodeOrToken) {\n\t\tconst cursor = createCursorWithCount(\n\t\t\tcursors.backward,\n\t\t\tthis[TOKENS],\n\t\t\tthis[COMMENTS],\n\t\t\tthis[INDEX_MAP],\n\t\t\t-1,\n\t\t\tnodeOrToken.range[0],\n\t\t\t{ includeComments: true },\n\t\t);\n\n\t\treturn getAdjacentCommentTokensFromCursor(cursor).reverse();\n\t}\n\n\t/**\n\t * Gets all comment tokens directly after the given node or token.\n\t * @param {ASTNode|token} nodeOrToken The AST node or token to check for adjacent comment tokens.\n\t * @returns {Array} An array of comments in occurrence order.\n\t */\n\tgetCommentsAfter(nodeOrToken) {\n\t\tconst cursor = createCursorWithCount(\n\t\t\tcursors.forward,\n\t\t\tthis[TOKENS],\n\t\t\tthis[COMMENTS],\n\t\t\tthis[INDEX_MAP],\n\t\t\tnodeOrToken.range[1],\n\t\t\t-1,\n\t\t\t{ includeComments: true },\n\t\t);\n\n\t\treturn getAdjacentCommentTokensFromCursor(cursor);\n\t}\n\n\t/**\n\t * Gets all comment tokens inside the given node.\n\t * @param {ASTNode} node The AST node to get the comments for.\n\t * @returns {Array} An array of comments in occurrence order.\n\t */\n\tgetCommentsInside(node) {\n\t\treturn this.getTokens(node, {\n\t\t\tincludeComments: true,\n\t\t\tfilter: isCommentToken,\n\t\t});\n\t}\n};\n", "/**\n * @fileoverview Helpers to debug for code path analysis.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst debug = require(\"debug\")(\"eslint:code-path\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Gets id of a given segment.\n * @param {CodePathSegment} segment A segment to get.\n * @returns {string} Id of the segment.\n */\n/* c8 ignore next */\n// eslint-disable-next-line jsdoc/require-jsdoc -- Ignoring\nfunction getId(segment) {\n\treturn segment.id + (segment.reachable ? \"\" : \"!\");\n}\n\n/**\n * Get string for the given node and operation.\n * @param {ASTNode} node The node to convert.\n * @param {\"enter\" | \"exit\" | undefined} label The operation label.\n * @returns {string} The string representation.\n */\nfunction nodeToString(node, label) {\n\tconst suffix = label ? `:${label}` : \"\";\n\n\tswitch (node.type) {\n\t\tcase \"Identifier\":\n\t\t\treturn `${node.type}${suffix} (${node.name})`;\n\t\tcase \"Literal\":\n\t\t\treturn `${node.type}${suffix} (${node.value})`;\n\t\tdefault:\n\t\t\treturn `${node.type}${suffix}`;\n\t}\n}\n\n/**\n * Escape text for use in a DOT label.\n * @param {string} value The value to escape.\n * @returns {string} The escaped value.\n */\nfunction escapeDotLabelText(value) {\n\treturn value.replace(/\\\\/gu, String.raw`\\\\`).replace(/\"/gu, String.raw`\\\"`);\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nmodule.exports = {\n\t/**\n\t * A flag that debug dumping is enabled or not.\n\t * @type {boolean}\n\t */\n\tenabled: debug.enabled,\n\n\t/**\n\t * Dumps given objects.\n\t * @param {...any} args objects to dump.\n\t * @returns {void}\n\t */\n\tdump: debug,\n\n\t/**\n\t * Dumps the current analyzing state.\n\t * @param {ASTNode} node A node to dump.\n\t * @param {CodePathState} state A state to dump.\n\t * @param {boolean} leaving A flag whether or not it's leaving\n\t * @returns {void}\n\t */\n\tdumpState: !debug.enabled\n\t\t? debug\n\t\t: /* c8 ignore next */ function (node, state, leaving) {\n\t\t\t\tfor (let i = 0; i < state.currentSegments.length; ++i) {\n\t\t\t\t\tconst segInternal = state.currentSegments[i].internal;\n\n\t\t\t\t\tif (leaving) {\n\t\t\t\t\t\tconst last = segInternal.nodes.length - 1;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tlast >= 0 &&\n\t\t\t\t\t\t\tsegInternal.nodes[last] ===\n\t\t\t\t\t\t\t\tnodeToString(node, \"enter\")\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tsegInternal.nodes[last] = nodeToString(\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsegInternal.nodes.push(nodeToString(node, \"exit\"));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsegInternal.nodes.push(nodeToString(node, \"enter\"));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdebug(\n\t\t\t\t\t[\n\t\t\t\t\t\t`${state.currentSegments.map(getId).join(\",\")})`,\n\t\t\t\t\t\t`${node.type}${leaving ? \":exit\" : \"\"}`,\n\t\t\t\t\t].join(\" \"),\n\t\t\t\t);\n\t\t\t},\n\n\t/**\n\t * Dumps a DOT code of a given code path.\n\t * The DOT code can be visualized with Graphvis.\n\t * @param {CodePath} codePath A code path to dump.\n\t * @returns {void}\n\t * @see http://www.graphviz.org\n\t * @see http://www.webgraphviz.com\n\t */\n\tdumpDot: !debug.enabled\n\t\t? debug\n\t\t: /* c8 ignore next */ function (codePath) {\n\t\t\t\tlet text =\n\t\t\t\t\t\"\\n\" +\n\t\t\t\t\t\"digraph {\\n\" +\n\t\t\t\t\t'node[shape=box,style=\"rounded,filled\",fillcolor=white];\\n' +\n\t\t\t\t\t'initial[label=\"\",shape=circle,style=filled,fillcolor=black,width=0.25,height=0.25];\\n';\n\n\t\t\t\tif (codePath.returnedSegments.length > 0) {\n\t\t\t\t\ttext +=\n\t\t\t\t\t\t'final[label=\"\",shape=doublecircle,style=filled,fillcolor=black,width=0.25,height=0.25];\\n';\n\t\t\t\t}\n\t\t\t\tif (codePath.thrownSegments.length > 0) {\n\t\t\t\t\ttext +=\n\t\t\t\t\t\t'thrown[label=\"\u2718\",shape=circle,width=0.3,height=0.3,fixedsize=true];\\n';\n\t\t\t\t}\n\n\t\t\t\tconst traceMap = Object.create(null);\n\t\t\t\tconst arrows = this.makeDotArrows(codePath, traceMap);\n\n\t\t\t\t// eslint-disable-next-line guard-for-in -- Want ability to traverse prototype\n\t\t\t\tfor (const id in traceMap) {\n\t\t\t\t\tconst segment = traceMap[id];\n\n\t\t\t\t\ttext += `${id}[`;\n\n\t\t\t\t\tif (segment.reachable) {\n\t\t\t\t\t\ttext += 'label=\"';\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttext +=\n\t\t\t\t\t\t\t'style=\"rounded,dashed,filled\",fillcolor=\"#FF9800\",label=\"<<unreachable>>\\\\n';\n\t\t\t\t\t}\n\n\t\t\t\t\tif (segment.internal.nodes.length > 0) {\n\t\t\t\t\t\ttext += segment.internal.nodes\n\t\t\t\t\t\t\t.map(escapeDotLabelText)\n\t\t\t\t\t\t\t.join(\"\\\\n\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttext += \"????\";\n\t\t\t\t\t}\n\n\t\t\t\t\ttext += '\"];\\n';\n\t\t\t\t}\n\n\t\t\t\ttext += `${arrows}\\n`;\n\t\t\t\ttext += \"}\";\n\t\t\t\tdebug(\"DOT\", text);\n\t\t\t},\n\n\t/**\n\t * Makes a DOT code of a given code path.\n\t * The DOT code can be visualized with Graphvis.\n\t * @param {CodePath} codePath A code path to make DOT.\n\t * @param {Object} traceMap Optional. A map to check whether or not segments had been done.\n\t * @returns {string} A DOT code of the code path.\n\t */\n\tmakeDotArrows(codePath, traceMap) {\n\t\tconst stack = [[codePath.initialSegment, 0]];\n\t\tconst done = traceMap || Object.create(null);\n\t\tlet lastId = codePath.initialSegment.id;\n\t\tlet text = `initial->${codePath.initialSegment.id}`;\n\n\t\twhile (stack.length > 0) {\n\t\t\tconst item = stack.pop();\n\t\t\tconst segment = item[0];\n\t\t\tconst index = item[1];\n\n\t\t\tif (done[segment.id] && index === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdone[segment.id] = segment;\n\n\t\t\tconst nextSegment = segment.allNextSegments[index];\n\n\t\t\tif (!nextSegment) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (lastId === segment.id) {\n\t\t\t\ttext += `->${nextSegment.id}`;\n\t\t\t} else {\n\t\t\t\ttext += `;\\n${segment.id}->${nextSegment.id}`;\n\t\t\t}\n\t\t\tlastId = nextSegment.id;\n\n\t\t\tstack.unshift([segment, 1 + index]);\n\t\t\tstack.push([nextSegment, 0]);\n\t\t}\n\n\t\tcodePath.returnedSegments.forEach(finalSegment => {\n\t\t\tif (lastId === finalSegment.id) {\n\t\t\t\ttext += \"->final\";\n\t\t\t} else {\n\t\t\t\ttext += `;\\n${finalSegment.id}->final`;\n\t\t\t}\n\t\t\tlastId = null;\n\t\t});\n\n\t\tcodePath.thrownSegments.forEach(finalSegment => {\n\t\t\tif (lastId === finalSegment.id) {\n\t\t\t\ttext += \"->thrown\";\n\t\t\t} else {\n\t\t\t\ttext += `;\\n${finalSegment.id}->thrown`;\n\t\t\t}\n\t\t\tlastId = null;\n\t\t});\n\n\t\treturn `${text};`;\n\t},\n};\n", "/**\n * @fileoverview The CodePathSegment class.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst debug = require(\"./debug-helpers\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether or not a given segment is reachable.\n * @param {CodePathSegment} segment A segment to check.\n * @returns {boolean} `true` if the segment is reachable.\n */\nfunction isReachable(segment) {\n\treturn segment.reachable;\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * A code path segment.\n *\n * Each segment is arranged in a series of linked lists (implemented by arrays)\n * that keep track of the previous and next segments in a code path. In this way,\n * you can navigate between all segments in any code path so long as you have a\n * reference to any segment in that code path.\n *\n * When first created, the segment is in a detached state, meaning that it knows the\n * segments that came before it but those segments don't know that this new segment\n * follows it. Only when `CodePathSegment#markUsed()` is called on a segment does it\n * officially become part of the code path by updating the previous segments to know\n * that this new segment follows.\n */\nclass CodePathSegment {\n\t/**\n\t * Creates a new instance.\n\t * @param {string} id An identifier.\n\t * @param {CodePathSegment[]} allPrevSegments An array of the previous segments.\n\t *   This array includes unreachable segments.\n\t * @param {boolean} reachable A flag which shows this is reachable.\n\t */\n\tconstructor(id, allPrevSegments, reachable) {\n\t\t/**\n\t\t * The identifier of this code path.\n\t\t * Rules use it to store additional information of each rule.\n\t\t * @type {string}\n\t\t */\n\t\tthis.id = id;\n\n\t\t/**\n\t\t * An array of the next reachable segments.\n\t\t * @type {CodePathSegment[]}\n\t\t */\n\t\tthis.nextSegments = [];\n\n\t\t/**\n\t\t * An array of the previous reachable segments.\n\t\t * @type {CodePathSegment[]}\n\t\t */\n\t\tthis.prevSegments = allPrevSegments.filter(isReachable);\n\n\t\t/**\n\t\t * An array of all next segments including reachable and unreachable.\n\t\t * @type {CodePathSegment[]}\n\t\t */\n\t\tthis.allNextSegments = [];\n\n\t\t/**\n\t\t * An array of all previous segments including reachable and unreachable.\n\t\t * @type {CodePathSegment[]}\n\t\t */\n\t\tthis.allPrevSegments = allPrevSegments;\n\n\t\t/**\n\t\t * A flag which shows this is reachable.\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.reachable = reachable;\n\n\t\t// Internal data.\n\t\tObject.defineProperty(this, \"internal\", {\n\t\t\tvalue: {\n\t\t\t\t// determines if the segment has been attached to the code path\n\t\t\t\tused: false,\n\n\t\t\t\t// array of previous segments coming from the end of a loop\n\t\t\t\tloopedPrevSegments: [],\n\t\t\t},\n\t\t});\n\n\t\t/* c8 ignore start */\n\t\tif (debug.enabled) {\n\t\t\tthis.internal.nodes = [];\n\t\t} /* c8 ignore stop */\n\t}\n\n\t/**\n\t * Checks a given previous segment is coming from the end of a loop.\n\t * @param {CodePathSegment} segment A previous segment to check.\n\t * @returns {boolean} `true` if the segment is coming from the end of a loop.\n\t */\n\tisLoopedPrevSegment(segment) {\n\t\treturn this.internal.loopedPrevSegments.includes(segment);\n\t}\n\n\t/**\n\t * Creates the root segment.\n\t * @param {string} id An identifier.\n\t * @returns {CodePathSegment} The created segment.\n\t */\n\tstatic newRoot(id) {\n\t\treturn new CodePathSegment(id, [], true);\n\t}\n\n\t/**\n\t * Creates a new segment and appends it after the given segments.\n\t * @param {string} id An identifier.\n\t * @param {CodePathSegment[]} allPrevSegments An array of the previous segments\n\t *      to append to.\n\t * @returns {CodePathSegment} The created segment.\n\t */\n\tstatic newNext(id, allPrevSegments) {\n\t\treturn new CodePathSegment(\n\t\t\tid,\n\t\t\tCodePathSegment.flattenUnusedSegments(allPrevSegments),\n\t\t\tallPrevSegments.some(isReachable),\n\t\t);\n\t}\n\n\t/**\n\t * Creates an unreachable segment and appends it after the given segments.\n\t * @param {string} id An identifier.\n\t * @param {CodePathSegment[]} allPrevSegments An array of the previous segments.\n\t * @returns {CodePathSegment} The created segment.\n\t */\n\tstatic newUnreachable(id, allPrevSegments) {\n\t\tconst segment = new CodePathSegment(\n\t\t\tid,\n\t\t\tCodePathSegment.flattenUnusedSegments(allPrevSegments),\n\t\t\tfalse,\n\t\t);\n\n\t\t/*\n\t\t * In `if (a) return a; foo();` case, the unreachable segment preceded by\n\t\t * the return statement is not used but must not be removed.\n\t\t */\n\t\tCodePathSegment.markUsed(segment);\n\n\t\treturn segment;\n\t}\n\n\t/**\n\t * Creates a segment that follows given segments.\n\t * This factory method does not connect with `allPrevSegments`.\n\t * But this inherits `reachable` flag.\n\t * @param {string} id An identifier.\n\t * @param {CodePathSegment[]} allPrevSegments An array of the previous segments.\n\t * @returns {CodePathSegment} The created segment.\n\t */\n\tstatic newDisconnected(id, allPrevSegments) {\n\t\treturn new CodePathSegment(id, [], allPrevSegments.some(isReachable));\n\t}\n\n\t/**\n\t * Marks a given segment as used.\n\t *\n\t * And this function registers the segment into the previous segments as a next.\n\t * @param {CodePathSegment} segment A segment to mark.\n\t * @returns {void}\n\t */\n\tstatic markUsed(segment) {\n\t\tif (segment.internal.used) {\n\t\t\treturn;\n\t\t}\n\t\tsegment.internal.used = true;\n\n\t\tlet i;\n\n\t\tif (segment.reachable) {\n\t\t\t/*\n\t\t\t * If the segment is reachable, then it's officially part of the\n\t\t\t * code path. This loops through all previous segments to update\n\t\t\t * their list of next segments. Because the segment is reachable,\n\t\t\t * it's added to both `nextSegments` and `allNextSegments`.\n\t\t\t */\n\t\t\tfor (i = 0; i < segment.allPrevSegments.length; ++i) {\n\t\t\t\tconst prevSegment = segment.allPrevSegments[i];\n\n\t\t\t\tprevSegment.allNextSegments.push(segment);\n\t\t\t\tprevSegment.nextSegments.push(segment);\n\t\t\t}\n\t\t} else {\n\t\t\t/*\n\t\t\t * If the segment is not reachable, then it's not officially part of the\n\t\t\t * code path. This loops through all previous segments to update\n\t\t\t * their list of next segments. Because the segment is not reachable,\n\t\t\t * it's added only to `allNextSegments`.\n\t\t\t */\n\t\t\tfor (i = 0; i < segment.allPrevSegments.length; ++i) {\n\t\t\t\tsegment.allPrevSegments[i].allNextSegments.push(segment);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Marks a previous segment as looped.\n\t * @param {CodePathSegment} segment A segment.\n\t * @param {CodePathSegment} prevSegment A previous segment to mark.\n\t * @returns {void}\n\t */\n\tstatic markPrevSegmentAsLooped(segment, prevSegment) {\n\t\tsegment.internal.loopedPrevSegments.push(prevSegment);\n\t}\n\n\t/**\n\t * Creates a new array based on an array of segments. If any segment in the\n\t * array is unused, then it is replaced by all of its previous segments.\n\t * All used segments are returned as-is without replacement.\n\t * @param {CodePathSegment[]} segments The array of segments to flatten.\n\t * @returns {CodePathSegment[]} The flattened array.\n\t */\n\tstatic flattenUnusedSegments(segments) {\n\t\tconst done = new Set();\n\n\t\tfor (let i = 0; i < segments.length; ++i) {\n\t\t\tconst segment = segments[i];\n\n\t\t\t// Ignores duplicated.\n\t\t\tif (done.has(segment)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Use previous segments if unused.\n\t\t\tif (!segment.internal.used) {\n\t\t\t\tfor (let j = 0; j < segment.allPrevSegments.length; ++j) {\n\t\t\t\t\tconst prevSegment = segment.allPrevSegments[j];\n\n\t\t\t\t\tif (!done.has(prevSegment)) {\n\t\t\t\t\t\tdone.add(prevSegment);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdone.add(segment);\n\t\t\t}\n\t\t}\n\n\t\treturn [...done];\n\t}\n}\n\nmodule.exports = CodePathSegment;\n", "/**\n * @fileoverview A class to operate forking.\n *\n * This is state of forking.\n * This has a fork list and manages it.\n *\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst assert = require(\"../../shared/assert\"),\n\tCodePathSegment = require(\"./code-path-segment\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Determines whether or not a given segment is reachable.\n * @param {CodePathSegment} segment The segment to check.\n * @returns {boolean} `true` if the segment is reachable.\n */\nfunction isReachable(segment) {\n\treturn segment.reachable;\n}\n\n/**\n * Creates a new segment for each fork in the given context and appends it\n * to the end of the specified range of segments. Ultimately, this ends up calling\n * `new CodePathSegment()` for each of the forks using the `create` argument\n * as a wrapper around special behavior.\n *\n * The `startIndex` and `endIndex` arguments specify a range of segments in\n * `context` that should become `allPrevSegments` for the newly created\n * `CodePathSegment` objects.\n *\n * When `context.segmentsList` is `[[a, b], [c, d], [e, f]]`, `begin` is `0`, and\n * `end` is `-1`, this creates two new segments, `[g, h]`. This `g` is appended to\n * the end of the path from `a`, `c`, and `e`. This `h` is appended to the end of\n * `b`, `d`, and `f`.\n * @param {ForkContext} context An instance from which the previous segments\n *      will be obtained.\n * @param {number} startIndex The index of the first segment in the context\n *      that should be specified as previous segments for the newly created segments.\n * @param {number} endIndex The index of the last segment in the context\n *      that should be specified as previous segments for the newly created segments.\n * @param {Function} create A function that creates new `CodePathSegment`\n *      instances in a particular way. See the `CodePathSegment.new*` methods.\n * @returns {Array<CodePathSegment>} An array of the newly-created segments.\n */\nfunction createSegments(context, startIndex, endIndex, create) {\n\t/** @type {Array<Array<CodePathSegment>>} */\n\tconst list = context.segmentsList;\n\n\t/*\n\t * Both `startIndex` and `endIndex` work the same way: if the number is zero\n\t * or more, then the number is used as-is. If the number is negative,\n\t * then that number is added to the length of the segments list to\n\t * determine the index to use. That means -1 for either argument\n\t * is the last element, -2 is the second to last, and so on.\n\t *\n\t * So if `startIndex` is 0, `endIndex` is -1, and `list.length` is 3, the\n\t * effective `startIndex` is 0 and the effective `endIndex` is 2, so this function\n\t * will include items at indices 0, 1, and 2.\n\t *\n\t * Therefore, if `startIndex` is -1 and `endIndex` is -1, that means we'll only\n\t * be using the last segment in `list`.\n\t */\n\tconst normalizedBegin =\n\t\tstartIndex >= 0 ? startIndex : list.length + startIndex;\n\tconst normalizedEnd = endIndex >= 0 ? endIndex : list.length + endIndex;\n\n\t/** @type {Array<CodePathSegment>} */\n\tconst segments = [];\n\n\tfor (let i = 0; i < context.count; ++i) {\n\t\t// this is passed into `new CodePathSegment` to add to code path.\n\t\tconst allPrevSegments = [];\n\n\t\tfor (let j = normalizedBegin; j <= normalizedEnd; ++j) {\n\t\t\tallPrevSegments.push(list[j][i]);\n\t\t}\n\n\t\t// note: `create` is just a wrapper that augments `new CodePathSegment`.\n\t\tsegments.push(create(context.idGenerator.next(), allPrevSegments));\n\t}\n\n\treturn segments;\n}\n\n/**\n * Inside of a `finally` block we end up with two parallel paths. If the code path\n * exits by a control statement (such as `break` or `continue`) from the `finally`\n * block, then we need to merge the remaining parallel paths back into one.\n * @param {ForkContext} context The fork context to work on.\n * @param {Array<CodePathSegment>} segments Segments to merge.\n * @returns {Array<CodePathSegment>} The merged segments.\n */\nfunction mergeExtraSegments(context, segments) {\n\tlet currentSegments = segments;\n\n\t/*\n\t * We need to ensure that the array returned from this function contains no more\n\t * than the number of segments that the context allows. `context.count` indicates\n\t * how many items should be in the returned array to ensure that the new segment\n\t * entries will line up with the already existing segment entries.\n\t */\n\twhile (currentSegments.length > context.count) {\n\t\tconst merged = [];\n\n\t\t/*\n\t\t * Because `context.count` is a factor of 2 inside of a `finally` block,\n\t\t * we can divide the segment count by 2 to merge the paths together.\n\t\t * This loops through each segment in the list and creates a new `CodePathSegment`\n\t\t * that has the segment and the segment two slots away as previous segments.\n\t\t *\n\t\t * If `currentSegments` is [a,b,c,d], this will create new segments e and f, such\n\t\t * that:\n\t\t *\n\t\t * When `i` is 0:\n\t\t * a->e\n\t\t * c->e\n\t\t *\n\t\t * When `i` is 1:\n\t\t * b->f\n\t\t * d->f\n\t\t */\n\t\tfor (\n\t\t\tlet i = 0, length = Math.floor(currentSegments.length / 2);\n\t\t\ti < length;\n\t\t\t++i\n\t\t) {\n\t\t\tmerged.push(\n\t\t\t\tCodePathSegment.newNext(context.idGenerator.next(), [\n\t\t\t\t\tcurrentSegments[i],\n\t\t\t\t\tcurrentSegments[i + length],\n\t\t\t\t]),\n\t\t\t);\n\t\t}\n\n\t\t/*\n\t\t * Go through the loop condition one more time to see if we have the\n\t\t * number of segments for the context. If not, we'll keep merging paths\n\t\t * of the merged segments until we get there.\n\t\t */\n\t\tcurrentSegments = merged;\n\t}\n\n\treturn currentSegments;\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * Manages the forking of code paths.\n */\nclass ForkContext {\n\t/**\n\t * Creates a new instance.\n\t * @param {IdGenerator} idGenerator An identifier generator for segments.\n\t * @param {ForkContext|null} upper The preceding fork context.\n\t * @param {number} count The number of parallel segments in each element\n\t *      of `segmentsList`.\n\t */\n\tconstructor(idGenerator, upper, count) {\n\t\t/**\n\t\t * The ID generator that will generate segment IDs for any new\n\t\t * segments that are created.\n\t\t * @type {IdGenerator}\n\t\t */\n\t\tthis.idGenerator = idGenerator;\n\n\t\t/**\n\t\t * The preceding fork context.\n\t\t * @type {ForkContext|null}\n\t\t */\n\t\tthis.upper = upper;\n\n\t\t/**\n\t\t * The number of elements in each element of `segmentsList`. In most\n\t\t * cases, this is 1 but can be 2 when there is a `finally` present,\n\t\t * which forks the code path outside of normal flow. In the case of nested\n\t\t * `finally` blocks, this can be a multiple of 2.\n\t\t * @type {number}\n\t\t */\n\t\tthis.count = count;\n\n\t\t/**\n\t\t * The segments within this context. Each element in this array has\n\t\t * `count` elements that represent one step in each fork. For example,\n\t\t * when `segmentsList` is `[[a, b], [c, d], [e, f]]`, there is one path\n\t\t * a->c->e and one path b->d->f, and `count` is 2 because each element\n\t\t * is an array with two elements.\n\t\t * @type {Array<Array<CodePathSegment>>}\n\t\t */\n\t\tthis.segmentsList = [];\n\t}\n\n\t/**\n\t * The segments that begin this fork context.\n\t * @type {Array<CodePathSegment>}\n\t */\n\tget head() {\n\t\tconst list = this.segmentsList;\n\n\t\treturn list.length === 0 ? [] : list.at(-1);\n\t}\n\n\t/**\n\t * Indicates if the context contains no segments.\n\t * @type {boolean}\n\t */\n\tget empty() {\n\t\treturn this.segmentsList.length === 0;\n\t}\n\n\t/**\n\t * Indicates if there are any segments that are reachable.\n\t * @type {boolean}\n\t */\n\tget reachable() {\n\t\tconst segments = this.head;\n\n\t\treturn segments.length > 0 && segments.some(isReachable);\n\t}\n\n\t/**\n\t * Creates new segments in this context and appends them to the end of the\n\t * already existing `CodePathSegment`s specified by `startIndex` and\n\t * `endIndex`.\n\t * @param {number} startIndex The index of the first segment in the context\n\t *      that should be specified as previous segments for the newly created segments.\n\t * @param {number} endIndex The index of the last segment in the context\n\t *      that should be specified as previous segments for the newly created segments.\n\t * @returns {Array<CodePathSegment>} An array of the newly created segments.\n\t */\n\tmakeNext(startIndex, endIndex) {\n\t\treturn createSegments(\n\t\t\tthis,\n\t\t\tstartIndex,\n\t\t\tendIndex,\n\t\t\tCodePathSegment.newNext,\n\t\t);\n\t}\n\n\t/**\n\t * Creates new unreachable segments in this context and appends them to the end of the\n\t * already existing `CodePathSegment`s specified by `startIndex` and\n\t * `endIndex`.\n\t * @param {number} startIndex The index of the first segment in the context\n\t *      that should be specified as previous segments for the newly created segments.\n\t * @param {number} endIndex The index of the last segment in the context\n\t *      that should be specified as previous segments for the newly created segments.\n\t * @returns {Array<CodePathSegment>} An array of the newly created segments.\n\t */\n\tmakeUnreachable(startIndex, endIndex) {\n\t\treturn createSegments(\n\t\t\tthis,\n\t\t\tstartIndex,\n\t\t\tendIndex,\n\t\t\tCodePathSegment.newUnreachable,\n\t\t);\n\t}\n\n\t/**\n\t * Creates new segments in this context and does not append them to the end\n\t *  of the already existing `CodePathSegment`s specified by `startIndex` and\n\t * `endIndex`. The `startIndex` and `endIndex` are only used to determine if\n\t * the new segments should be reachable. If any of the segments in this range\n\t * are reachable then the new segments are also reachable; otherwise, the new\n\t * segments are unreachable.\n\t * @param {number} startIndex The index of the first segment in the context\n\t *      that should be considered for reachability.\n\t * @param {number} endIndex The index of the last segment in the context\n\t *      that should be considered for reachability.\n\t * @returns {Array<CodePathSegment>} An array of the newly created segments.\n\t */\n\tmakeDisconnected(startIndex, endIndex) {\n\t\treturn createSegments(\n\t\t\tthis,\n\t\t\tstartIndex,\n\t\t\tendIndex,\n\t\t\tCodePathSegment.newDisconnected,\n\t\t);\n\t}\n\n\t/**\n\t * Adds segments to the head of this context.\n\t * @param {Array<CodePathSegment>} segments The segments to add.\n\t * @returns {void}\n\t */\n\tadd(segments) {\n\t\tassert(\n\t\t\tsegments.length >= this.count,\n\t\t\t`${segments.length} >= ${this.count}`,\n\t\t);\n\t\tthis.segmentsList.push(mergeExtraSegments(this, segments));\n\t}\n\n\t/**\n\t * Replaces the head segments with the given segments.\n\t * The current head segments are removed.\n\t * @param {Array<CodePathSegment>} replacementHeadSegments The new head segments.\n\t * @returns {void}\n\t */\n\treplaceHead(replacementHeadSegments) {\n\t\tassert(\n\t\t\treplacementHeadSegments.length >= this.count,\n\t\t\t`${replacementHeadSegments.length} >= ${this.count}`,\n\t\t);\n\t\tthis.segmentsList.splice(\n\t\t\t-1,\n\t\t\t1,\n\t\t\tmergeExtraSegments(this, replacementHeadSegments),\n\t\t);\n\t}\n\n\t/**\n\t * Adds all segments of a given fork context into this context.\n\t * @param {ForkContext} otherForkContext The fork context to add from.\n\t * @returns {void}\n\t */\n\taddAll(otherForkContext) {\n\t\tassert(otherForkContext.count === this.count);\n\t\tthis.segmentsList.push(...otherForkContext.segmentsList);\n\t}\n\n\t/**\n\t * Clears all segments in this context.\n\t * @returns {void}\n\t */\n\tclear() {\n\t\tthis.segmentsList = [];\n\t}\n\n\t/**\n\t * Creates a new root context, meaning that there are no parent\n\t * fork contexts.\n\t * @param {IdGenerator} idGenerator An identifier generator for segments.\n\t * @returns {ForkContext} New fork context.\n\t */\n\tstatic newRoot(idGenerator) {\n\t\tconst context = new ForkContext(idGenerator, null, 1);\n\n\t\tcontext.add([CodePathSegment.newRoot(idGenerator.next())]);\n\n\t\treturn context;\n\t}\n\n\t/**\n\t * Creates an empty fork context preceded by a given context.\n\t * @param {ForkContext} parentContext The parent fork context.\n\t * @param {boolean} shouldForkLeavingPath Indicates that we are inside of\n\t *      a `finally` block and should therefore fork the path that leaves\n\t *      `finally`.\n\t * @returns {ForkContext} New fork context.\n\t */\n\tstatic newEmpty(parentContext, shouldForkLeavingPath) {\n\t\treturn new ForkContext(\n\t\t\tparentContext.idGenerator,\n\t\t\tparentContext,\n\t\t\t(shouldForkLeavingPath ? 2 : 1) * parentContext.count,\n\t\t);\n\t}\n}\n\nmodule.exports = ForkContext;\n", "/**\n * @fileoverview A class to manage state of generating a code path.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst CodePathSegment = require(\"./code-path-segment\"),\n\tForkContext = require(\"./fork-context\");\n\n//-----------------------------------------------------------------------------\n// Contexts\n//-----------------------------------------------------------------------------\n\n/**\n * Represents the context in which a `break` statement can be used.\n *\n * A `break` statement without a label is only valid in a few places in\n * JavaScript: any type of loop or a `switch` statement. Otherwise, `break`\n * without a label causes a syntax error. For these contexts, `breakable` is\n * set to `true` to indicate that a `break` without a label is valid.\n *\n * However, a `break` statement with a label is also valid inside of a labeled\n * statement. For example, this is valid:\n *\n *     a : {\n *         break a;\n *     }\n *\n * The `breakable` property is set false for labeled statements to indicate\n * that `break` without a label is invalid.\n */\nclass BreakContext {\n\t/**\n\t * Creates a new instance.\n\t * @param {BreakContext} upperContext The previous `BreakContext`.\n\t * @param {boolean} breakable Indicates if we are inside a statement where\n\t *      `break` without a label will exit the statement.\n\t * @param {string|null} label The label for the statement.\n\t * @param {ForkContext} forkContext The current fork context.\n\t */\n\tconstructor(upperContext, breakable, label, forkContext) {\n\t\t/**\n\t\t * The previous `BreakContext`\n\t\t * @type {BreakContext}\n\t\t */\n\t\tthis.upper = upperContext;\n\n\t\t/**\n\t\t * Indicates if we are inside a statement where `break` without a label\n\t\t * will exit the statement.\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.breakable = breakable;\n\n\t\t/**\n\t\t * The label associated with the statement.\n\t\t * @type {string|null}\n\t\t */\n\t\tthis.label = label;\n\n\t\t/**\n\t\t * The fork context for the `break`.\n\t\t * @type {ForkContext}\n\t\t */\n\t\tthis.brokenForkContext = ForkContext.newEmpty(forkContext);\n\t}\n}\n\n/**\n * Represents the context for `ChainExpression` nodes.\n */\nclass ChainContext {\n\t/**\n\t * Creates a new instance.\n\t * @param {ChainContext} upperContext The previous `ChainContext`.\n\t */\n\tconstructor(upperContext) {\n\t\t/**\n\t\t * The previous `ChainContext`\n\t\t * @type {ChainContext}\n\t\t */\n\t\tthis.upper = upperContext;\n\n\t\t/**\n\t\t * The number of choice contexts inside of the `ChainContext`.\n\t\t * @type {number}\n\t\t */\n\t\tthis.choiceContextCount = 0;\n\t}\n}\n\n/**\n * Represents a choice in the code path.\n *\n * Choices are created by logical operators such as `&&`, loops, conditionals,\n * and `if` statements. This is the point at which the code path has a choice of\n * which direction to go.\n *\n * The result of a choice might be in the left (test) expression of another choice,\n * and in that case, may create a new fork. For example, `a || b` is a choice\n * but does not create a new fork because the result of the expression is\n * not used as the test expression in another expression. In this case,\n * `isForkingAsResult` is false. In the expression `a || b || c`, the `a || b`\n * expression appears as the test expression for `|| c`, so the\n * result of `a || b` creates a fork because execution may or may not\n * continue to `|| c`. `isForkingAsResult` for `a || b` in this case is true\n * while `isForkingAsResult` for `|| c` is false. (`isForkingAsResult` is always\n * false for `if` statements, conditional expressions, and loops.)\n *\n * All of the choices except one (`??`) operate on a true/false fork, meaning if\n * true go one way and if false go the other (tracked by `trueForkContext` and\n * `falseForkContext`). The `??` operator doesn't operate on true/false because\n * the left expression is evaluated to be nullish or not, so only if nullish do\n * we fork to the right expression (tracked by `nullishForkContext`).\n */\nclass ChoiceContext {\n\t/**\n\t * Creates a new instance.\n\t * @param {ChoiceContext} upperContext The previous `ChoiceContext`.\n\t * @param {string} kind The kind of choice. If it's a logical or assignment expression, this\n\t *      is `\"&&\"` or `\"||\"` or `\"??\"`; if it's an `if` statement or\n\t *      conditional expression, this is `\"test\"`; otherwise, this is `\"loop\"`.\n\t * @param {boolean} isForkingAsResult Indicates if the result of the choice\n\t *      creates a fork.\n\t * @param {ForkContext} forkContext The containing `ForkContext`.\n\t */\n\tconstructor(upperContext, kind, isForkingAsResult, forkContext) {\n\t\t/**\n\t\t * The previous `ChoiceContext`\n\t\t * @type {ChoiceContext}\n\t\t */\n\t\tthis.upper = upperContext;\n\n\t\t/**\n\t\t * The kind of choice. If it's a logical or assignment expression, this\n\t\t * is `\"&&\"` or `\"||\"` or `\"??\"`; if it's an `if` statement or\n\t\t * conditional expression, this is `\"test\"`; otherwise, this is `\"loop\"`.\n\t\t * @type {string}\n\t\t */\n\t\tthis.kind = kind;\n\n\t\t/**\n\t\t * Indicates if the result of the choice forks the code path.\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.isForkingAsResult = isForkingAsResult;\n\n\t\t/**\n\t\t * The fork context for the `true` path of the choice.\n\t\t * @type {ForkContext}\n\t\t */\n\t\tthis.trueForkContext = ForkContext.newEmpty(forkContext);\n\n\t\t/**\n\t\t * The fork context for the `false` path of the choice.\n\t\t * @type {ForkContext}\n\t\t */\n\t\tthis.falseForkContext = ForkContext.newEmpty(forkContext);\n\n\t\t/**\n\t\t * The fork context for when the choice result is `null` or `undefined`.\n\t\t * @type {ForkContext}\n\t\t */\n\t\tthis.nullishForkContext = ForkContext.newEmpty(forkContext);\n\n\t\t/**\n\t\t * Indicates if any of `trueForkContext`, `falseForkContext`, or\n\t\t * `nullishForkContext` have been updated with segments from a child context.\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.processed = false;\n\t}\n}\n\n/**\n * Base class for all loop contexts.\n */\nclass LoopContextBase {\n\t/**\n\t * Creates a new instance.\n\t * @param {LoopContext|null} upperContext The previous `LoopContext`.\n\t * @param {string} type The AST node's `type` for the loop.\n\t * @param {string|null} label The label for the loop from an enclosing `LabeledStatement`.\n\t * @param {BreakContext} breakContext The context for breaking the loop.\n\t */\n\tconstructor(upperContext, type, label, breakContext) {\n\t\t/**\n\t\t * The previous `LoopContext`.\n\t\t * @type {LoopContext}\n\t\t */\n\t\tthis.upper = upperContext;\n\n\t\t/**\n\t\t * The AST node's `type` for the loop.\n\t\t * @type {string}\n\t\t */\n\t\tthis.type = type;\n\n\t\t/**\n\t\t * The label for the loop from an enclosing `LabeledStatement`.\n\t\t * @type {string|null}\n\t\t */\n\t\tthis.label = label;\n\n\t\t/**\n\t\t * The fork context for when `break` is encountered.\n\t\t * @type {ForkContext}\n\t\t */\n\t\tthis.brokenForkContext = breakContext.brokenForkContext;\n\t}\n}\n\n/**\n * Represents the context for a `while` loop.\n */\nclass WhileLoopContext extends LoopContextBase {\n\t/**\n\t * Creates a new instance.\n\t * @param {LoopContext|null} upperContext The previous `LoopContext`.\n\t * @param {string|null} label The label for the loop from an enclosing `LabeledStatement`.\n\t * @param {BreakContext} breakContext The context for breaking the loop.\n\t */\n\tconstructor(upperContext, label, breakContext) {\n\t\tsuper(upperContext, \"WhileStatement\", label, breakContext);\n\n\t\t/**\n\t\t * The hardcoded literal boolean test condition for\n\t\t * the loop. Used to catch infinite or skipped loops.\n\t\t * @type {boolean|undefined}\n\t\t */\n\t\tthis.test = void 0;\n\n\t\t/**\n\t\t * The segments representing the test condition where `continue` will\n\t\t * jump to. The test condition will typically have just one segment but\n\t\t * it's possible for there to be more than one.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.continueDestSegments = null;\n\t}\n}\n\n/**\n * Represents the context for a `do-while` loop.\n */\nclass DoWhileLoopContext extends LoopContextBase {\n\t/**\n\t * Creates a new instance.\n\t * @param {LoopContext|null} upperContext The previous `LoopContext`.\n\t * @param {string|null} label The label for the loop from an enclosing `LabeledStatement`.\n\t * @param {BreakContext} breakContext The context for breaking the loop.\n\t * @param {ForkContext} forkContext The enclosing fork context.\n\t */\n\tconstructor(upperContext, label, breakContext, forkContext) {\n\t\tsuper(upperContext, \"DoWhileStatement\", label, breakContext);\n\n\t\t/**\n\t\t * The hardcoded literal boolean test condition for\n\t\t * the loop. Used to catch infinite or skipped loops.\n\t\t * @type {boolean|undefined}\n\t\t */\n\t\tthis.test = void 0;\n\n\t\t/**\n\t\t * The segments at the start of the loop body. This is the only loop\n\t\t * where the test comes at the end, so the first iteration always\n\t\t * happens and we need a reference to the first statements.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.entrySegments = null;\n\n\t\t/**\n\t\t * The fork context to follow when a `continue` is found.\n\t\t * @type {ForkContext}\n\t\t */\n\t\tthis.continueForkContext = ForkContext.newEmpty(forkContext);\n\t}\n}\n\n/**\n * Represents the context for a `for` loop.\n */\nclass ForLoopContext extends LoopContextBase {\n\t/**\n\t * Creates a new instance.\n\t * @param {LoopContext|null} upperContext The previous `LoopContext`.\n\t * @param {string|null} label The label for the loop from an enclosing `LabeledStatement`.\n\t * @param {BreakContext} breakContext The context for breaking the loop.\n\t */\n\tconstructor(upperContext, label, breakContext) {\n\t\tsuper(upperContext, \"ForStatement\", label, breakContext);\n\n\t\t/**\n\t\t * The hardcoded literal boolean test condition for\n\t\t * the loop. Used to catch infinite or skipped loops.\n\t\t * @type {boolean|undefined}\n\t\t */\n\t\tthis.test = void 0;\n\n\t\t/**\n\t\t * The end of the init expression. This may change during the lifetime\n\t\t * of the instance as we traverse the loop because some loops don't have\n\t\t * an init expression.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.endOfInitSegments = null;\n\n\t\t/**\n\t\t * The start of the test expression. This may change during the lifetime\n\t\t * of the instance as we traverse the loop because some loops don't have\n\t\t * a test expression.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.testSegments = null;\n\n\t\t/**\n\t\t * The end of the test expression. This may change during the lifetime\n\t\t * of the instance as we traverse the loop because some loops don't have\n\t\t * a test expression.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.endOfTestSegments = null;\n\n\t\t/**\n\t\t * The start of the update expression. This may change during the lifetime\n\t\t * of the instance as we traverse the loop because some loops don't have\n\t\t * an update expression.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.updateSegments = null;\n\n\t\t/**\n\t\t * The end of the update expression. This may change during the lifetime\n\t\t * of the instance as we traverse the loop because some loops don't have\n\t\t * an update expression.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.endOfUpdateSegments = null;\n\n\t\t/**\n\t\t * The segments representing the test condition where `continue` will\n\t\t * jump to. The test condition will typically have just one segment but\n\t\t * it's possible for there to be more than one. This may change during the\n\t\t * lifetime of the instance as we traverse the loop because some loops\n\t\t * don't have an update expression. When there is an update expression, this\n\t\t * will end up pointing to that expression; otherwise it will end up pointing\n\t\t * to the test expression.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.continueDestSegments = null;\n\t}\n}\n\n/**\n * Represents the context for a `for-in` loop.\n *\n * Terminology:\n * - \"left\" means the part of the loop to the left of the `in` keyword. For\n *   example, in `for (var x in y)`, the left is `var x`.\n * - \"right\" means the part of the loop to the right of the `in` keyword. For\n *   example, in `for (var x in y)`, the right is `y`.\n */\nclass ForInLoopContext extends LoopContextBase {\n\t/**\n\t * Creates a new instance.\n\t * @param {LoopContext|null} upperContext The previous `LoopContext`.\n\t * @param {string|null} label The label for the loop from an enclosing `LabeledStatement`.\n\t * @param {BreakContext} breakContext The context for breaking the loop.\n\t */\n\tconstructor(upperContext, label, breakContext) {\n\t\tsuper(upperContext, \"ForInStatement\", label, breakContext);\n\n\t\t/**\n\t\t * The segments that came immediately before the start of the loop.\n\t\t * This allows you to traverse backwards out of the loop into the\n\t\t * surrounding code. This is necessary to evaluate the right expression\n\t\t * correctly, as it must be evaluated in the same way as the left\n\t\t * expression, but the pointer to these segments would otherwise be\n\t\t * lost if not stored on the instance. Once the right expression has\n\t\t * been evaluated, this property is no longer used.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.prevSegments = null;\n\n\t\t/**\n\t\t * Segments representing the start of everything to the left of the\n\t\t * `in` keyword. This can be used to move forward towards\n\t\t * `endOfLeftSegments`. `leftSegments` and `endOfLeftSegments` are\n\t\t * effectively the head and tail of a doubly-linked list.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.leftSegments = null;\n\n\t\t/**\n\t\t * Segments representing the end of everything to the left of the\n\t\t * `in` keyword. This can be used to move backward towards `leftSegments`.\n\t\t * `leftSegments` and `endOfLeftSegments` are effectively the head\n\t\t * and tail of a doubly-linked list.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.endOfLeftSegments = null;\n\n\t\t/**\n\t\t * The segments representing the left expression where `continue` will\n\t\t * jump to. In `for-in` loops, `continue` must always re-execute the\n\t\t * left expression each time through the loop. This contains the same\n\t\t * segments as `leftSegments`, but is duplicated here so each loop\n\t\t * context has the same property pointing to where `continue` should\n\t\t * end up.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.continueDestSegments = null;\n\t}\n}\n\n/**\n * Represents the context for a `for-of` loop.\n */\nclass ForOfLoopContext extends LoopContextBase {\n\t/**\n\t * Creates a new instance.\n\t * @param {LoopContext|null} upperContext The previous `LoopContext`.\n\t * @param {string|null} label The label for the loop from an enclosing `LabeledStatement`.\n\t * @param {BreakContext} breakContext The context for breaking the loop.\n\t */\n\tconstructor(upperContext, label, breakContext) {\n\t\tsuper(upperContext, \"ForOfStatement\", label, breakContext);\n\n\t\t/**\n\t\t * The segments that came immediately before the start of the loop.\n\t\t * This allows you to traverse backwards out of the loop into the\n\t\t * surrounding code. This is necessary to evaluate the right expression\n\t\t * correctly, as it must be evaluated in the same way as the left\n\t\t * expression, but the pointer to these segments would otherwise be\n\t\t * lost if not stored on the instance. Once the right expression has\n\t\t * been evaluated, this property is no longer used.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.prevSegments = null;\n\n\t\t/**\n\t\t * Segments representing the start of everything to the left of the\n\t\t * `of` keyword. This can be used to move forward towards\n\t\t * `endOfLeftSegments`. `leftSegments` and `endOfLeftSegments` are\n\t\t * effectively the head and tail of a doubly-linked list.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.leftSegments = null;\n\n\t\t/**\n\t\t * Segments representing the end of everything to the left of the\n\t\t * `of` keyword. This can be used to move backward towards `leftSegments`.\n\t\t * `leftSegments` and `endOfLeftSegments` are effectively the head\n\t\t * and tail of a doubly-linked list.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.endOfLeftSegments = null;\n\n\t\t/**\n\t\t * The segments representing the left expression where `continue` will\n\t\t * jump to. In `for-in` loops, `continue` must always re-execute the\n\t\t * left expression each time through the loop. This contains the same\n\t\t * segments as `leftSegments`, but is duplicated here so each loop\n\t\t * context has the same property pointing to where `continue` should\n\t\t * end up.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.continueDestSegments = null;\n\t}\n}\n\n/**\n * Represents the context for any loop.\n * @typedef {WhileLoopContext|DoWhileLoopContext|ForLoopContext|ForInLoopContext|ForOfLoopContext} LoopContext\n */\n\n/**\n * Represents the context for a `switch` statement.\n */\nclass SwitchContext {\n\t/**\n\t * Creates a new instance.\n\t * @param {SwitchContext} upperContext The previous context.\n\t * @param {boolean} hasCase Indicates if there is at least one `case` statement.\n\t *      `default` doesn't count.\n\t */\n\tconstructor(upperContext, hasCase) {\n\t\t/**\n\t\t * The previous context.\n\t\t * @type {SwitchContext}\n\t\t */\n\t\tthis.upper = upperContext;\n\n\t\t/**\n\t\t * Indicates if there is at least one `case` statement. `default` doesn't count.\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.hasCase = hasCase;\n\n\t\t/**\n\t\t * The `default` keyword.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.defaultSegments = null;\n\n\t\t/**\n\t\t * The default case body starting segments.\n\t\t * @type {Array<CodePathSegment>|null}\n\t\t */\n\t\tthis.defaultBodySegments = null;\n\n\t\t/**\n\t\t * Indicates if a `default` case and is empty exists.\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.foundEmptyDefault = false;\n\n\t\t/**\n\t\t * Indicates that a `default` exists and is the last case.\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.lastIsDefault = false;\n\n\t\t/**\n\t\t * The number of fork contexts created. This is equivalent to the\n\t\t * number of `case` statements plus a `default` statement (if present).\n\t\t * @type {number}\n\t\t */\n\t\tthis.forkCount = 0;\n\t}\n}\n\n/**\n * Represents the context for a `try` statement.\n */\nclass TryContext {\n\t/**\n\t * Creates a new instance.\n\t * @param {TryContext} upperContext The previous context.\n\t * @param {boolean} hasFinalizer Indicates if the `try` statement has a\n\t *      `finally` block.\n\t * @param {ForkContext} forkContext The enclosing fork context.\n\t */\n\tconstructor(upperContext, hasFinalizer, forkContext) {\n\t\t/**\n\t\t * The previous context.\n\t\t * @type {TryContext}\n\t\t */\n\t\tthis.upper = upperContext;\n\n\t\t/**\n\t\t * Indicates if the `try` statement has a `finally` block.\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.hasFinalizer = hasFinalizer;\n\n\t\t/**\n\t\t * Tracks the traversal position inside of the `try` statement. This is\n\t\t * used to help determine the context necessary to create paths because\n\t\t * a `try` statement may or may not have `catch` or `finally` blocks,\n\t\t * and code paths behave differently in those blocks.\n\t\t * @type {\"try\"|\"catch\"|\"finally\"}\n\t\t */\n\t\tthis.position = \"try\";\n\n\t\t/**\n\t\t * If the `try` statement has a `finally` block, this affects how return-like\n\t\t * leaving paths behave in the `try` block. Without `finally`, they behave as\n\t\t * usual and don't require a fork; with `finally`, they fork into the\n\t\t * `finally` block, so we need a fork context to track them.\n\t\t * @type {ForkContext|null}\n\t\t */\n\t\tthis.returnedForkContext = hasFinalizer\n\t\t\t? ForkContext.newEmpty(forkContext)\n\t\t\t: null;\n\n\t\t/**\n\t\t * When a `throw` occurs inside of a `try` block, the code path forks\n\t\t * into the `catch` or `finally` blocks, and this fork context tracks\n\t\t * that path.\n\t\t * @type {ForkContext}\n\t\t */\n\t\tthis.thrownForkContext = ForkContext.newEmpty(forkContext);\n\n\t\t/**\n\t\t * Indicates if the last segment in the `try` block is reachable.\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.lastOfTryIsReachable = false;\n\n\t\t/**\n\t\t * Indicates if the last segment in the `catch` block is reachable.\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.lastOfCatchIsReachable = false;\n\t}\n}\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Adds given segments into the `dest` array.\n * If the `others` array does not include the given segments, adds to the `all`\n * array as well.\n *\n * This adds only reachable and used segments.\n * @param {CodePathSegment[]} dest A destination array (`returnedSegments` or `thrownSegments`).\n * @param {CodePathSegment[]} others Another destination array (`returnedSegments` or `thrownSegments`).\n * @param {CodePathSegment[]} all The unified destination array (`finalSegments`).\n * @param {CodePathSegment[]} segments Segments to add.\n * @returns {void}\n */\nfunction addToReturnedOrThrown(dest, others, all, segments) {\n\tfor (let i = 0; i < segments.length; ++i) {\n\t\tconst segment = segments[i];\n\n\t\tdest.push(segment);\n\t\tif (!others.includes(segment)) {\n\t\t\tall.push(segment);\n\t\t}\n\t}\n}\n\n/**\n * Gets a loop context for a `continue` statement based on a given label.\n * @param {CodePathState} state The state to search within.\n * @param {string|null} label The label of a `continue` statement.\n * @returns {LoopContext} A loop-context for a `continue` statement.\n */\nfunction getContinueContext(state, label) {\n\tif (!label) {\n\t\treturn state.loopContext;\n\t}\n\n\tlet context = state.loopContext;\n\n\twhile (context) {\n\t\tif (context.label === label) {\n\t\t\treturn context;\n\t\t}\n\t\tcontext = context.upper;\n\t}\n\n\t/* c8 ignore next */\n\treturn null;\n}\n\n/**\n * Gets a context for a `break` statement.\n * @param {CodePathState} state The state to search within.\n * @param {string|null} label The label of a `break` statement.\n * @returns {BreakContext} A context for a `break` statement.\n */\nfunction getBreakContext(state, label) {\n\tlet context = state.breakContext;\n\n\twhile (context) {\n\t\tif (label ? context.label === label : context.breakable) {\n\t\t\treturn context;\n\t\t}\n\t\tcontext = context.upper;\n\t}\n\n\t/* c8 ignore next */\n\treturn null;\n}\n\n/**\n * Gets a context for a `return` statement. There is just one special case:\n * if there is a `try` statement with a `finally` block, because that alters\n * how `return` behaves; otherwise, this just passes through the given state.\n * @param {CodePathState} state The state to search within\n * @returns {TryContext|CodePathState} A context for a `return` statement.\n */\nfunction getReturnContext(state) {\n\tlet context = state.tryContext;\n\n\twhile (context) {\n\t\tif (context.hasFinalizer && context.position !== \"finally\") {\n\t\t\treturn context;\n\t\t}\n\t\tcontext = context.upper;\n\t}\n\n\treturn state;\n}\n\n/**\n * Gets a context for a `throw` statement. There is just one special case:\n * if there is a `try` statement with a `finally` block and we are inside of\n * a `catch` because that changes how `throw` behaves; otherwise, this just\n * passes through the given state.\n * @param {CodePathState} state The state to search within.\n * @returns {TryContext|CodePathState} A context for a `throw` statement.\n */\nfunction getThrowContext(state) {\n\tlet context = state.tryContext;\n\n\twhile (context) {\n\t\tif (\n\t\t\tcontext.position === \"try\" ||\n\t\t\t(context.hasFinalizer && context.position === \"catch\")\n\t\t) {\n\t\t\treturn context;\n\t\t}\n\t\tcontext = context.upper;\n\t}\n\n\treturn state;\n}\n\n/**\n * Removes a given value from a given array.\n * @param {any[]} elements An array to remove the specific element.\n * @param {any} value The value to be removed.\n * @returns {void}\n */\nfunction removeFromArray(elements, value) {\n\telements.splice(elements.indexOf(value), 1);\n}\n\n/**\n * Disconnect given segments.\n *\n * This is used in a process for switch statements.\n * If there is the \"default\" chunk before other cases, the order is different\n * between node's and running's.\n * @param {CodePathSegment[]} prevSegments Forward segments to disconnect.\n * @param {CodePathSegment[]} nextSegments Backward segments to disconnect.\n * @returns {void}\n */\nfunction disconnectSegments(prevSegments, nextSegments) {\n\tfor (let i = 0; i < prevSegments.length; ++i) {\n\t\tconst prevSegment = prevSegments[i];\n\t\tconst nextSegment = nextSegments[i];\n\n\t\tremoveFromArray(prevSegment.nextSegments, nextSegment);\n\t\tremoveFromArray(prevSegment.allNextSegments, nextSegment);\n\t\tremoveFromArray(nextSegment.prevSegments, prevSegment);\n\t\tremoveFromArray(nextSegment.allPrevSegments, prevSegment);\n\t}\n}\n\n/**\n * Creates looping path between two arrays of segments, ensuring that there are\n * paths going between matching segments in the arrays.\n * @param {CodePathState} state The state to operate on.\n * @param {CodePathSegment[]} unflattenedFromSegments Segments which are source.\n * @param {CodePathSegment[]} unflattenedToSegments Segments which are destination.\n * @returns {void}\n */\nfunction makeLooped(state, unflattenedFromSegments, unflattenedToSegments) {\n\tconst fromSegments = CodePathSegment.flattenUnusedSegments(\n\t\tunflattenedFromSegments,\n\t);\n\tconst toSegments = CodePathSegment.flattenUnusedSegments(\n\t\tunflattenedToSegments,\n\t);\n\tconst end = Math.min(fromSegments.length, toSegments.length);\n\n\t/*\n\t * This loop effectively updates a doubly-linked list between two collections\n\t * of segments making sure that segments in the same array indices are\n\t * combined to create a path.\n\t */\n\tfor (let i = 0; i < end; ++i) {\n\t\t// get the segments in matching array indices\n\t\tconst fromSegment = fromSegments[i];\n\t\tconst toSegment = toSegments[i];\n\n\t\t/*\n\t\t * If the destination segment is reachable, then create a path from the\n\t\t * source segment to the destination segment.\n\t\t */\n\t\tif (toSegment.reachable) {\n\t\t\tfromSegment.nextSegments.push(toSegment);\n\t\t}\n\n\t\t/*\n\t\t * If the source segment is reachable, then create a path from the\n\t\t * destination segment back to the source segment.\n\t\t */\n\t\tif (fromSegment.reachable) {\n\t\t\ttoSegment.prevSegments.push(fromSegment);\n\t\t}\n\n\t\t/*\n\t\t * Also update the arrays that don't care if the segments are reachable\n\t\t * or not. This should always happen regardless of anything else.\n\t\t */\n\t\tfromSegment.allNextSegments.push(toSegment);\n\t\ttoSegment.allPrevSegments.push(fromSegment);\n\n\t\t/*\n\t\t * If the destination segment has at least two previous segments in its\n\t\t * path then that means there was one previous segment before this iteration\n\t\t * of the loop was executed. So, we need to mark the source segment as\n\t\t * looped.\n\t\t */\n\t\tif (toSegment.allPrevSegments.length >= 2) {\n\t\t\tCodePathSegment.markPrevSegmentAsLooped(toSegment, fromSegment);\n\t\t}\n\n\t\t// let the code path analyzer know that there's been a loop created\n\t\tstate.notifyLooped(fromSegment, toSegment);\n\t}\n}\n\n/**\n * Finalizes segments of `test` chunk of a ForStatement.\n *\n * - Adds `false` paths to paths which are leaving from the loop.\n * - Sets `true` paths to paths which go to the body.\n * @param {LoopContext} context A loop context to modify.\n * @param {ChoiceContext} choiceContext A choice context of this loop.\n * @param {CodePathSegment[]} head The current head paths.\n * @returns {void}\n */\nfunction finalizeTestSegmentsOfFor(context, choiceContext, head) {\n\t/*\n\t * If this choice context doesn't already contain paths from a\n\t * child context, then add the current head to each potential path.\n\t */\n\tif (!choiceContext.processed) {\n\t\tchoiceContext.trueForkContext.add(head);\n\t\tchoiceContext.falseForkContext.add(head);\n\t\tchoiceContext.nullishForkContext.add(head);\n\t}\n\n\t/*\n\t * If the test condition isn't a hardcoded truthy value, then `break`\n\t * must follow the same path as if the test condition is false. To represent\n\t * that, we append the path for when the loop test is false (represented by\n\t * `falseForkContext`) to the `brokenForkContext`.\n\t */\n\tif (context.test !== true) {\n\t\tcontext.brokenForkContext.addAll(choiceContext.falseForkContext);\n\t}\n\n\tcontext.endOfTestSegments = choiceContext.trueForkContext.makeNext(0, -1);\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * A class which manages state to analyze code paths.\n */\nclass CodePathState {\n\t/**\n\t * Creates a new instance.\n\t * @param {IdGenerator} idGenerator An id generator to generate id for code\n\t *   path segments.\n\t * @param {Function} onLooped A callback function to notify looping.\n\t */\n\tconstructor(idGenerator, onLooped) {\n\t\t/**\n\t\t * The ID generator to use when creating new segments.\n\t\t * @type {IdGenerator}\n\t\t */\n\t\tthis.idGenerator = idGenerator;\n\n\t\t/**\n\t\t * A callback function to call when there is a loop.\n\t\t * @type {Function}\n\t\t */\n\t\tthis.notifyLooped = onLooped;\n\n\t\t/**\n\t\t * The root fork context for this state.\n\t\t * @type {ForkContext}\n\t\t */\n\t\tthis.forkContext = ForkContext.newRoot(idGenerator);\n\n\t\t/**\n\t\t * Context for logical expressions, conditional expressions, `if` statements,\n\t\t * and loops.\n\t\t * @type {ChoiceContext}\n\t\t */\n\t\tthis.choiceContext = null;\n\n\t\t/**\n\t\t * Context for `switch` statements.\n\t\t * @type {SwitchContext}\n\t\t */\n\t\tthis.switchContext = null;\n\n\t\t/**\n\t\t * Context for `try` statements.\n\t\t * @type {TryContext}\n\t\t */\n\t\tthis.tryContext = null;\n\n\t\t/**\n\t\t * Context for loop statements.\n\t\t * @type {LoopContext}\n\t\t */\n\t\tthis.loopContext = null;\n\n\t\t/**\n\t\t * Context for `break` statements.\n\t\t * @type {BreakContext}\n\t\t */\n\t\tthis.breakContext = null;\n\n\t\t/**\n\t\t * Context for `ChainExpression` nodes.\n\t\t * @type {ChainContext}\n\t\t */\n\t\tthis.chainContext = null;\n\n\t\t/**\n\t\t * An array that tracks the current segments in the state. The array\n\t\t * starts empty and segments are added with each `onCodePathSegmentStart`\n\t\t * event and removed with each `onCodePathSegmentEnd` event. Effectively,\n\t\t * this is tracking the code path segment traversal as the state is\n\t\t * modified.\n\t\t * @type {Array<CodePathSegment>}\n\t\t */\n\t\tthis.currentSegments = [];\n\n\t\t/**\n\t\t * Tracks the starting segment for this path. This value never changes.\n\t\t * @type {CodePathSegment}\n\t\t */\n\t\tthis.initialSegment = this.forkContext.head[0];\n\n\t\t/**\n\t\t * The final segments of the code path which are either `return` or `throw`.\n\t\t * This is a union of the segments in `returnedForkContext` and `thrownForkContext`.\n\t\t * @type {Array<CodePathSegment>}\n\t\t */\n\t\tthis.finalSegments = [];\n\n\t\t/**\n\t\t * The final segments of the code path which are `return`. These\n\t\t * segments are also contained in `finalSegments`.\n\t\t * @type {Array<CodePathSegment>}\n\t\t */\n\t\tthis.returnedForkContext = [];\n\n\t\t/**\n\t\t * The final segments of the code path which are `throw`. These\n\t\t * segments are also contained in `finalSegments`.\n\t\t * @type {Array<CodePathSegment>}\n\t\t */\n\t\tthis.thrownForkContext = [];\n\n\t\t/*\n\t\t * We add an `add` method so that these look more like fork contexts and\n\t\t * can be used interchangeably when a fork context is needed to add more\n\t\t * segments to a path.\n\t\t *\n\t\t * Ultimately, we want anything added to `returned` or `thrown` to also\n\t\t * be added to `final`. We only add reachable and used segments to these\n\t\t * arrays.\n\t\t */\n\t\tconst final = this.finalSegments;\n\t\tconst returned = this.returnedForkContext;\n\t\tconst thrown = this.thrownForkContext;\n\n\t\treturned.add = addToReturnedOrThrown.bind(\n\t\t\tnull,\n\t\t\treturned,\n\t\t\tthrown,\n\t\t\tfinal,\n\t\t);\n\t\tthrown.add = addToReturnedOrThrown.bind(null, thrown, returned, final);\n\t}\n\n\t/**\n\t * A passthrough property exposing the current pointer as part of the API.\n\t * @type {CodePathSegment[]}\n\t */\n\tget headSegments() {\n\t\treturn this.forkContext.head;\n\t}\n\n\t/**\n\t * The parent forking context.\n\t * This is used for the root of new forks.\n\t * @type {ForkContext}\n\t */\n\tget parentForkContext() {\n\t\tconst current = this.forkContext;\n\n\t\treturn current && current.upper;\n\t}\n\n\t/**\n\t * Creates and stacks new forking context.\n\t * @param {boolean} forkLeavingPath A flag which shows being in a\n\t *   \"finally\" block.\n\t * @returns {ForkContext} The created context.\n\t */\n\tpushForkContext(forkLeavingPath) {\n\t\tthis.forkContext = ForkContext.newEmpty(\n\t\t\tthis.forkContext,\n\t\t\tforkLeavingPath,\n\t\t);\n\n\t\treturn this.forkContext;\n\t}\n\n\t/**\n\t * Pops and merges the last forking context.\n\t * @returns {ForkContext} The last context.\n\t */\n\tpopForkContext() {\n\t\tconst lastContext = this.forkContext;\n\n\t\tthis.forkContext = lastContext.upper;\n\t\tthis.forkContext.replaceHead(lastContext.makeNext(0, -1));\n\n\t\treturn lastContext;\n\t}\n\n\t/**\n\t * Creates a new path.\n\t * @returns {void}\n\t */\n\tforkPath() {\n\t\tthis.forkContext.add(this.parentForkContext.makeNext(-1, -1));\n\t}\n\n\t/**\n\t * Creates a bypass path.\n\t * This is used for such as IfStatement which does not have \"else\" chunk.\n\t * @returns {void}\n\t */\n\tforkBypassPath() {\n\t\tthis.forkContext.add(this.parentForkContext.head);\n\t}\n\n\t//--------------------------------------------------------------------------\n\t// ConditionalExpression, LogicalExpression, IfStatement\n\t//--------------------------------------------------------------------------\n\n\t/**\n\t * Creates a context for ConditionalExpression, LogicalExpression, AssignmentExpression (logical assignments only),\n\t * IfStatement, WhileStatement, DoWhileStatement, or ForStatement.\n\t *\n\t * LogicalExpressions have cases that it goes different paths between the\n\t * `true` case and the `false` case.\n\t *\n\t * For Example:\n\t *\n\t *     if (a || b) {\n\t *         foo();\n\t *     } else {\n\t *         bar();\n\t *     }\n\t *\n\t * In this case, `b` is evaluated always in the code path of the `else`\n\t * block, but it's not so in the code path of the `if` block.\n\t * So there are 3 paths.\n\t *\n\t *     a -> foo();\n\t *     a -> b -> foo();\n\t *     a -> b -> bar();\n\t * @param {string} kind A kind string.\n\t *   If the new context is LogicalExpression's or AssignmentExpression's, this is `\"&&\"` or `\"||\"` or `\"??\"`.\n\t *   If it's IfStatement's or ConditionalExpression's, this is `\"test\"`.\n\t *   Otherwise, this is `\"loop\"`.\n\t * @param {boolean} isForkingAsResult Indicates if the result of the choice\n\t *      creates a fork.\n\t * @returns {void}\n\t */\n\tpushChoiceContext(kind, isForkingAsResult) {\n\t\tthis.choiceContext = new ChoiceContext(\n\t\t\tthis.choiceContext,\n\t\t\tkind,\n\t\t\tisForkingAsResult,\n\t\t\tthis.forkContext,\n\t\t);\n\t}\n\n\t/**\n\t * Pops the last choice context and finalizes it.\n\t * This is called upon leaving a node that represents a choice.\n\t * @throws {Error} (Unreachable.)\n\t * @returns {ChoiceContext} The popped context.\n\t */\n\tpopChoiceContext() {\n\t\tconst poppedChoiceContext = this.choiceContext;\n\t\tconst forkContext = this.forkContext;\n\t\tconst head = forkContext.head;\n\n\t\tthis.choiceContext = poppedChoiceContext.upper;\n\n\t\tswitch (poppedChoiceContext.kind) {\n\t\t\tcase \"&&\":\n\t\t\tcase \"||\":\n\t\t\tcase \"??\":\n\t\t\t\t/*\n\t\t\t\t * The `head` are the path of the right-hand operand.\n\t\t\t\t * If we haven't previously added segments from child contexts,\n\t\t\t\t * then we add these segments to all possible forks.\n\t\t\t\t */\n\t\t\t\tif (!poppedChoiceContext.processed) {\n\t\t\t\t\tpoppedChoiceContext.trueForkContext.add(head);\n\t\t\t\t\tpoppedChoiceContext.falseForkContext.add(head);\n\t\t\t\t\tpoppedChoiceContext.nullishForkContext.add(head);\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * If this context is the left (test) expression for another choice\n\t\t\t\t * context, such as `a || b` in the expression `a || b || c`,\n\t\t\t\t * then we take the segments for this context and move them up\n\t\t\t\t * to the parent context.\n\t\t\t\t */\n\t\t\t\tif (poppedChoiceContext.isForkingAsResult) {\n\t\t\t\t\tconst parentContext = this.choiceContext;\n\n\t\t\t\t\tparentContext.trueForkContext.addAll(\n\t\t\t\t\t\tpoppedChoiceContext.trueForkContext,\n\t\t\t\t\t);\n\t\t\t\t\tparentContext.falseForkContext.addAll(\n\t\t\t\t\t\tpoppedChoiceContext.falseForkContext,\n\t\t\t\t\t);\n\t\t\t\t\tparentContext.nullishForkContext.addAll(\n\t\t\t\t\t\tpoppedChoiceContext.nullishForkContext,\n\t\t\t\t\t);\n\t\t\t\t\tparentContext.processed = true;\n\n\t\t\t\t\t// Exit early so we don't collapse all paths into one.\n\t\t\t\t\treturn poppedChoiceContext;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"test\":\n\t\t\t\tif (!poppedChoiceContext.processed) {\n\t\t\t\t\t/*\n\t\t\t\t\t * The head segments are the path of the `if` block here.\n\t\t\t\t\t * Updates the `true` path with the end of the `if` block.\n\t\t\t\t\t */\n\t\t\t\t\tpoppedChoiceContext.trueForkContext.clear();\n\t\t\t\t\tpoppedChoiceContext.trueForkContext.add(head);\n\t\t\t\t} else {\n\t\t\t\t\t/*\n\t\t\t\t\t * The head segments are the path of the `else` block here.\n\t\t\t\t\t * Updates the `false` path with the end of the `else`\n\t\t\t\t\t * block.\n\t\t\t\t\t */\n\t\t\t\t\tpoppedChoiceContext.falseForkContext.clear();\n\t\t\t\t\tpoppedChoiceContext.falseForkContext.add(head);\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"loop\":\n\t\t\t\t/*\n\t\t\t\t * Loops are addressed in `popLoopContext()` so just return\n\t\t\t\t * the context without modification.\n\t\t\t\t */\n\t\t\t\treturn poppedChoiceContext;\n\n\t\t\t/* c8 ignore next */\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"unreachable\");\n\t\t}\n\n\t\t/*\n\t\t * Merge the true path with the false path to create a single path.\n\t\t */\n\t\tconst combinedForkContext = poppedChoiceContext.trueForkContext;\n\n\t\tcombinedForkContext.addAll(poppedChoiceContext.falseForkContext);\n\t\tforkContext.replaceHead(combinedForkContext.makeNext(0, -1));\n\n\t\treturn poppedChoiceContext;\n\t}\n\n\t/**\n\t * Creates a code path segment to represent right-hand operand of a logical\n\t * expression.\n\t * This is called in the preprocessing phase when entering a node.\n\t * @throws {Error} (Unreachable.)\n\t * @returns {void}\n\t */\n\tmakeLogicalRight() {\n\t\tconst currentChoiceContext = this.choiceContext;\n\t\tconst forkContext = this.forkContext;\n\n\t\tif (currentChoiceContext.processed) {\n\t\t\t/*\n\t\t\t * This context was already assigned segments from a child\n\t\t\t * choice context. In this case, we are concerned only about\n\t\t\t * the path that does not short-circuit and so ends up on the\n\t\t\t * right-hand operand of the logical expression.\n\t\t\t */\n\t\t\tlet prevForkContext;\n\n\t\t\tswitch (currentChoiceContext.kind) {\n\t\t\t\tcase \"&&\": // if true then go to the right-hand side.\n\t\t\t\t\tprevForkContext = currentChoiceContext.trueForkContext;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"||\": // if false then go to the right-hand side.\n\t\t\t\t\tprevForkContext = currentChoiceContext.falseForkContext;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"??\": // Both true/false can short-circuit, so needs the third path to go to the right-hand side. That's nullishForkContext.\n\t\t\t\t\tprevForkContext = currentChoiceContext.nullishForkContext;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(\"unreachable\");\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Create the segment for the right-hand operand of the logical expression\n\t\t\t * and adjust the fork context pointer to point there. The right-hand segment\n\t\t\t * is added at the end of all segments in `prevForkContext`.\n\t\t\t */\n\t\t\tforkContext.replaceHead(prevForkContext.makeNext(0, -1));\n\n\t\t\t/*\n\t\t\t * We no longer need this list of segments.\n\t\t\t *\n\t\t\t * Reset `processed` because we've removed the segments from the child\n\t\t\t * choice context. This allows `popChoiceContext()` to continue adding\n\t\t\t * segments later.\n\t\t\t */\n\t\t\tprevForkContext.clear();\n\t\t\tcurrentChoiceContext.processed = false;\n\t\t} else {\n\t\t\t/*\n\t\t\t * This choice context was not assigned segments from a child\n\t\t\t * choice context, which means that it's a terminal logical\n\t\t\t * expression.\n\t\t\t *\n\t\t\t * `head` is the segments for the left-hand operand of the\n\t\t\t * logical expression.\n\t\t\t *\n\t\t\t * Each of the fork contexts below are empty at this point. We choose\n\t\t\t * the path(s) that will short-circuit and add the segment for the\n\t\t\t * left-hand operand to it. Ultimately, this will be the only segment\n\t\t\t * in that path due to the short-circuting, so we are just seeding\n\t\t\t * these paths to start.\n\t\t\t */\n\t\t\tswitch (currentChoiceContext.kind) {\n\t\t\t\tcase \"&&\":\n\t\t\t\t\t/*\n\t\t\t\t\t * In most contexts, when a && expression evaluates to false,\n\t\t\t\t\t * it short circuits, so we need to account for that by setting\n\t\t\t\t\t * the `falseForkContext` to the left operand.\n\t\t\t\t\t *\n\t\t\t\t\t * When a && expression is the left-hand operand for a ??\n\t\t\t\t\t * expression, such as `(a && b) ?? c`, a nullish value will\n\t\t\t\t\t * also short-circuit in a different way than a false value,\n\t\t\t\t\t * so we also set the `nullishForkContext` to the left operand.\n\t\t\t\t\t * This path is only used with a ?? expression and is thrown\n\t\t\t\t\t * away for any other type of logical expression, so it's safe\n\t\t\t\t\t * to always add.\n\t\t\t\t\t */\n\t\t\t\t\tcurrentChoiceContext.falseForkContext.add(forkContext.head);\n\t\t\t\t\tcurrentChoiceContext.nullishForkContext.add(\n\t\t\t\t\t\tforkContext.head,\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"||\": // the true path can short-circuit.\n\t\t\t\t\tcurrentChoiceContext.trueForkContext.add(forkContext.head);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"??\": // both can short-circuit.\n\t\t\t\t\tcurrentChoiceContext.trueForkContext.add(forkContext.head);\n\t\t\t\t\tcurrentChoiceContext.falseForkContext.add(forkContext.head);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(\"unreachable\");\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Create the segment for the right-hand operand of the logical expression\n\t\t\t * and adjust the fork context pointer to point there.\n\t\t\t */\n\t\t\tforkContext.replaceHead(forkContext.makeNext(-1, -1));\n\t\t}\n\t}\n\n\t/**\n\t * Makes a code path segment of the `if` block.\n\t * @returns {void}\n\t */\n\tmakeIfConsequent() {\n\t\tconst context = this.choiceContext;\n\t\tconst forkContext = this.forkContext;\n\n\t\t/*\n\t\t * If any result were not transferred from child contexts,\n\t\t * this sets the head segments to both cases.\n\t\t * The head segments are the path of the test expression.\n\t\t */\n\t\tif (!context.processed) {\n\t\t\tcontext.trueForkContext.add(forkContext.head);\n\t\t\tcontext.falseForkContext.add(forkContext.head);\n\t\t\tcontext.nullishForkContext.add(forkContext.head);\n\t\t}\n\n\t\tcontext.processed = false;\n\n\t\t// Creates new path from the `true` case.\n\t\tforkContext.replaceHead(context.trueForkContext.makeNext(0, -1));\n\t}\n\n\t/**\n\t * Makes a code path segment of the `else` block.\n\t * @returns {void}\n\t */\n\tmakeIfAlternate() {\n\t\tconst context = this.choiceContext;\n\t\tconst forkContext = this.forkContext;\n\n\t\t/*\n\t\t * The head segments are the path of the `if` block.\n\t\t * Updates the `true` path with the end of the `if` block.\n\t\t */\n\t\tcontext.trueForkContext.clear();\n\t\tcontext.trueForkContext.add(forkContext.head);\n\t\tcontext.processed = true;\n\n\t\t// Creates new path from the `false` case.\n\t\tforkContext.replaceHead(context.falseForkContext.makeNext(0, -1));\n\t}\n\n\t//--------------------------------------------------------------------------\n\t// ChainExpression\n\t//--------------------------------------------------------------------------\n\n\t/**\n\t * Pushes a new `ChainExpression` context to the stack. This method is\n\t * called when entering a `ChainExpression` node. A chain context is used to\n\t * count forking in the optional chain then merge them on the exiting from the\n\t * `ChainExpression` node.\n\t * @returns {void}\n\t */\n\tpushChainContext() {\n\t\tthis.chainContext = new ChainContext(this.chainContext);\n\t}\n\n\t/**\n\t * Pop a `ChainExpression` context from the stack. This method is called on\n\t * exiting from each `ChainExpression` node. This merges all forks of the\n\t * last optional chaining.\n\t * @returns {void}\n\t */\n\tpopChainContext() {\n\t\tconst context = this.chainContext;\n\n\t\tthis.chainContext = context.upper;\n\n\t\t// pop all choice contexts of this.\n\t\tfor (let i = context.choiceContextCount; i > 0; --i) {\n\t\t\tthis.popChoiceContext();\n\t\t}\n\t}\n\n\t/**\n\t * Create a choice context for optional access.\n\t * This method is called on entering to each `(Call|Member)Expression[optional=true]` node.\n\t * This creates a choice context as similar to `LogicalExpression[operator=\"??\"]` node.\n\t * @returns {void}\n\t */\n\tmakeOptionalNode() {\n\t\tif (this.chainContext) {\n\t\t\tthis.chainContext.choiceContextCount += 1;\n\t\t\tthis.pushChoiceContext(\"??\", false);\n\t\t}\n\t}\n\n\t/**\n\t * Create a fork.\n\t * This method is called on entering to the `arguments|property` property of each `(Call|Member)Expression` node.\n\t * @returns {void}\n\t */\n\tmakeOptionalRight() {\n\t\tif (this.chainContext) {\n\t\t\tthis.makeLogicalRight();\n\t\t}\n\t}\n\n\t//--------------------------------------------------------------------------\n\t// SwitchStatement\n\t//--------------------------------------------------------------------------\n\n\t/**\n\t * Creates a context object of SwitchStatement and stacks it.\n\t * @param {boolean} hasCase `true` if the switch statement has one or more\n\t *   case parts.\n\t * @param {string|null} label The label text.\n\t * @returns {void}\n\t */\n\tpushSwitchContext(hasCase, label) {\n\t\tthis.switchContext = new SwitchContext(this.switchContext, hasCase);\n\t\tthis.pushBreakContext(true, label);\n\t}\n\n\t/**\n\t * Pops the last context of SwitchStatement and finalizes it.\n\t *\n\t * - Disposes all forking stack for `case` and `default`.\n\t * - Creates the next code path segment from `context.brokenForkContext`.\n\t * - If the last `SwitchCase` node is not a `default` part, creates a path\n\t *   to the `default` body.\n\t * @returns {void}\n\t */\n\tpopSwitchContext() {\n\t\tconst context = this.switchContext;\n\n\t\tthis.switchContext = context.upper;\n\n\t\tconst forkContext = this.forkContext;\n\t\tconst brokenForkContext = this.popBreakContext().brokenForkContext;\n\n\t\tif (context.forkCount === 0) {\n\t\t\t/*\n\t\t\t * When there is only one `default` chunk and there is one or more\n\t\t\t * `break` statements, even if forks are nothing, it needs to merge\n\t\t\t * those.\n\t\t\t */\n\t\t\tif (!brokenForkContext.empty) {\n\t\t\t\tbrokenForkContext.add(forkContext.makeNext(-1, -1));\n\t\t\t\tforkContext.replaceHead(brokenForkContext.makeNext(0, -1));\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst lastSegments = forkContext.head;\n\n\t\tthis.forkBypassPath();\n\t\tconst lastCaseSegments = forkContext.head;\n\n\t\t/*\n\t\t * `brokenForkContext` is used to make the next segment.\n\t\t * It must add the last segment into `brokenForkContext`.\n\t\t */\n\t\tbrokenForkContext.add(lastSegments);\n\n\t\t/*\n\t\t * Any value that doesn't match a `case` test should flow to the default\n\t\t * case. That happens normally when the default case is last in the `switch`,\n\t\t * but if it's not, we need to rewire some of the paths to be correct.\n\t\t */\n\t\tif (!context.lastIsDefault) {\n\t\t\tif (context.defaultBodySegments) {\n\t\t\t\t/*\n\t\t\t\t * There is a non-empty default case, so remove the path from the `default`\n\t\t\t\t * label to its body for an accurate representation.\n\t\t\t\t */\n\t\t\t\tdisconnectSegments(\n\t\t\t\t\tcontext.defaultSegments,\n\t\t\t\t\tcontext.defaultBodySegments,\n\t\t\t\t);\n\n\t\t\t\t/*\n\t\t\t\t * Connect the path from the last non-default case to the body of the\n\t\t\t\t * default case.\n\t\t\t\t */\n\t\t\t\tmakeLooped(this, lastCaseSegments, context.defaultBodySegments);\n\t\t\t} else {\n\t\t\t\t/*\n\t\t\t\t * There is no default case, so we treat this as if the last case\n\t\t\t\t * had a `break` in it.\n\t\t\t\t */\n\t\t\t\tbrokenForkContext.add(lastCaseSegments);\n\t\t\t}\n\t\t}\n\n\t\t// Traverse up to the original fork context for the `switch` statement\n\t\tfor (let i = 0; i < context.forkCount; ++i) {\n\t\t\tthis.forkContext = this.forkContext.upper;\n\t\t}\n\n\t\t/*\n\t\t * Creates a path from all `brokenForkContext` paths.\n\t\t * This is a path after `switch` statement.\n\t\t */\n\t\tthis.forkContext.replaceHead(brokenForkContext.makeNext(0, -1));\n\t}\n\n\t/**\n\t * Makes a code path segment for a `SwitchCase` node.\n\t * @param {boolean} isCaseBodyEmpty `true` if the body is empty.\n\t * @param {boolean} isDefaultCase `true` if the body is the default case.\n\t * @returns {void}\n\t */\n\tmakeSwitchCaseBody(isCaseBodyEmpty, isDefaultCase) {\n\t\tconst context = this.switchContext;\n\n\t\tif (!context.hasCase) {\n\t\t\treturn;\n\t\t}\n\n\t\t/*\n\t\t * Merge forks.\n\t\t * The parent fork context has two segments.\n\t\t * Those are from the current `case` and the body of the previous case.\n\t\t */\n\t\tconst parentForkContext = this.forkContext;\n\t\tconst forkContext = this.pushForkContext();\n\n\t\tforkContext.add(parentForkContext.makeNext(0, -1));\n\n\t\t/*\n\t\t * Add information about the default case.\n\t\t *\n\t\t * The purpose of this is to identify the starting segments for the\n\t\t * default case to make sure there is a path there.\n\t\t */\n\t\tif (isDefaultCase) {\n\t\t\t/*\n\t\t\t * This is the default case in the `switch`.\n\t\t\t *\n\t\t\t * We first save the current pointer as `defaultSegments` to point\n\t\t\t * to the `default` keyword.\n\t\t\t */\n\t\t\tcontext.defaultSegments = parentForkContext.head;\n\n\t\t\t/*\n\t\t\t * If the body of the case is empty then we just set\n\t\t\t * `foundEmptyDefault` to true; otherwise, we save a reference\n\t\t\t * to the current pointer as `defaultBodySegments`.\n\t\t\t */\n\t\t\tif (isCaseBodyEmpty) {\n\t\t\t\tcontext.foundEmptyDefault = true;\n\t\t\t} else {\n\t\t\t\tcontext.defaultBodySegments = forkContext.head;\n\t\t\t}\n\t\t} else {\n\t\t\t/*\n\t\t\t * This is not the default case in the `switch`.\n\t\t\t *\n\t\t\t * If it's not empty and there is already an empty default case found,\n\t\t\t * that means the default case actually comes before this case,\n\t\t\t * and that it will fall through to this case. So, we can now\n\t\t\t * ignore the previous default case (reset `foundEmptyDefault` to false)\n\t\t\t * and set `defaultBodySegments` to the current segments because this is\n\t\t\t * effectively the new default case.\n\t\t\t */\n\t\t\tif (!isCaseBodyEmpty && context.foundEmptyDefault) {\n\t\t\t\tcontext.foundEmptyDefault = false;\n\t\t\t\tcontext.defaultBodySegments = forkContext.head;\n\t\t\t}\n\t\t}\n\n\t\t// keep track if the default case ends up last\n\t\tcontext.lastIsDefault = isDefaultCase;\n\t\tcontext.forkCount += 1;\n\t}\n\n\t//--------------------------------------------------------------------------\n\t// TryStatement\n\t//--------------------------------------------------------------------------\n\n\t/**\n\t * Creates a context object of TryStatement and stacks it.\n\t * @param {boolean} hasFinalizer `true` if the try statement has a\n\t *   `finally` block.\n\t * @returns {void}\n\t */\n\tpushTryContext(hasFinalizer) {\n\t\tthis.tryContext = new TryContext(\n\t\t\tthis.tryContext,\n\t\t\thasFinalizer,\n\t\t\tthis.forkContext,\n\t\t);\n\t}\n\n\t/**\n\t * Pops the last context of TryStatement and finalizes it.\n\t * @returns {void}\n\t */\n\tpopTryContext() {\n\t\tconst context = this.tryContext;\n\n\t\tthis.tryContext = context.upper;\n\n\t\t/*\n\t\t * If we're inside the `catch` block, that means there is no `finally`,\n\t\t * so we can process the `try` and `catch` blocks the simple way and\n\t\t * merge their two paths.\n\t\t */\n\t\tif (context.position === \"catch\") {\n\t\t\tthis.popForkContext();\n\t\t\treturn;\n\t\t}\n\n\t\t/*\n\t\t * The following process is executed only when there is a `finally`\n\t\t * block.\n\t\t */\n\n\t\tconst originalReturnedForkContext = context.returnedForkContext;\n\t\tconst originalThrownForkContext = context.thrownForkContext;\n\n\t\t// no `return` or `throw` in `try` or `catch` so there's nothing left to do\n\t\tif (\n\t\t\toriginalReturnedForkContext.empty &&\n\t\t\toriginalThrownForkContext.empty\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t/*\n\t\t * The following process is executed only when there is a `finally`\n\t\t * block and there was a `return` or `throw` in the `try` or `catch`\n\t\t * blocks.\n\t\t */\n\n\t\t// Separate head to normal paths and leaving paths.\n\t\tconst headSegments = this.forkContext.head;\n\n\t\tthis.forkContext = this.forkContext.upper;\n\t\tconst normalSegments = headSegments.slice(\n\t\t\t0,\n\t\t\t(headSegments.length / 2) | 0,\n\t\t);\n\t\tconst leavingSegments = headSegments.slice(\n\t\t\t(headSegments.length / 2) | 0,\n\t\t);\n\n\t\t// Forwards the leaving path to upper contexts.\n\t\tif (!originalReturnedForkContext.empty) {\n\t\t\tgetReturnContext(this).returnedForkContext.add(leavingSegments);\n\t\t}\n\t\tif (!originalThrownForkContext.empty) {\n\t\t\tgetThrowContext(this).thrownForkContext.add(leavingSegments);\n\t\t}\n\n\t\t// Sets the normal path as the next.\n\t\tthis.forkContext.replaceHead(normalSegments);\n\n\t\t/*\n\t\t * If both paths of the `try` block and the `catch` block are\n\t\t * unreachable, the next path becomes unreachable as well.\n\t\t */\n\t\tif (!context.lastOfTryIsReachable && !context.lastOfCatchIsReachable) {\n\t\t\tthis.forkContext.makeUnreachable();\n\t\t}\n\t}\n\n\t/**\n\t * Makes a code path segment for a `catch` block.\n\t * @returns {void}\n\t */\n\tmakeCatchBlock() {\n\t\tconst context = this.tryContext;\n\t\tconst forkContext = this.forkContext;\n\t\tconst originalThrownForkContext = context.thrownForkContext;\n\n\t\t/*\n\t\t * We are now in a catch block so we need to update the context\n\t\t * with that information. This includes creating a new fork\n\t\t * context in case we encounter any `throw` statements here.\n\t\t */\n\t\tcontext.position = \"catch\";\n\t\tcontext.thrownForkContext = ForkContext.newEmpty(forkContext);\n\t\tcontext.lastOfTryIsReachable = forkContext.reachable;\n\n\t\t// Merge the thrown paths from the `try` and `catch` blocks\n\t\toriginalThrownForkContext.add(forkContext.head);\n\t\tconst thrownSegments = originalThrownForkContext.makeNext(0, -1);\n\n\t\t// Fork to a bypass and the merged thrown path.\n\t\tthis.pushForkContext();\n\t\tthis.forkBypassPath();\n\t\tthis.forkContext.add(thrownSegments);\n\t}\n\n\t/**\n\t * Makes a code path segment for a `finally` block.\n\t *\n\t * In the `finally` block, parallel paths are created. The parallel paths\n\t * are used as leaving-paths. The leaving-paths are paths from `return`\n\t * statements and `throw` statements in a `try` block or a `catch` block.\n\t * @returns {void}\n\t */\n\tmakeFinallyBlock() {\n\t\tconst context = this.tryContext;\n\t\tlet forkContext = this.forkContext;\n\t\tconst originalReturnedForkContext = context.returnedForkContext;\n\t\tconst originalThrownForContext = context.thrownForkContext;\n\t\tconst headOfLeavingSegments = forkContext.head;\n\n\t\t// Update state.\n\t\tif (context.position === \"catch\") {\n\t\t\t// Merges two paths from the `try` block and `catch` block.\n\t\t\tthis.popForkContext();\n\t\t\tforkContext = this.forkContext;\n\n\t\t\tcontext.lastOfCatchIsReachable = forkContext.reachable;\n\t\t} else {\n\t\t\tcontext.lastOfTryIsReachable = forkContext.reachable;\n\t\t}\n\n\t\tcontext.position = \"finally\";\n\n\t\t/*\n\t\t * If there was no `return` or `throw` in either the `try` or `catch`\n\t\t * blocks, then there's no further code paths to create for `finally`.\n\t\t */\n\t\tif (\n\t\t\toriginalReturnedForkContext.empty &&\n\t\t\toriginalThrownForContext.empty\n\t\t) {\n\t\t\t// This path does not leave.\n\t\t\treturn;\n\t\t}\n\n\t\t/*\n\t\t * Create a parallel segment from merging returned and thrown.\n\t\t * This segment will leave at the end of this `finally` block.\n\t\t */\n\t\tconst segments = forkContext.makeNext(-1, -1);\n\n\t\tfor (let i = 0; i < forkContext.count; ++i) {\n\t\t\tconst prevSegsOfLeavingSegment = [headOfLeavingSegments[i]];\n\n\t\t\tfor (\n\t\t\t\tlet j = 0;\n\t\t\t\tj < originalReturnedForkContext.segmentsList.length;\n\t\t\t\t++j\n\t\t\t) {\n\t\t\t\tprevSegsOfLeavingSegment.push(\n\t\t\t\t\toriginalReturnedForkContext.segmentsList[j][i],\n\t\t\t\t);\n\t\t\t}\n\t\t\tfor (\n\t\t\t\tlet j = 0;\n\t\t\t\tj < originalThrownForContext.segmentsList.length;\n\t\t\t\t++j\n\t\t\t) {\n\t\t\t\tprevSegsOfLeavingSegment.push(\n\t\t\t\t\toriginalThrownForContext.segmentsList[j][i],\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsegments.push(\n\t\t\t\tCodePathSegment.newNext(\n\t\t\t\t\tthis.idGenerator.next(),\n\t\t\t\t\tprevSegsOfLeavingSegment,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\n\t\tthis.pushForkContext(true);\n\t\tthis.forkContext.add(segments);\n\t}\n\n\t/**\n\t * Records abrupt resumption paths from a suspended `yield` expression,\n\t * then splits normal post-`yield` continuation into a fresh segment.\n\t * @returns {void}\n\t */\n\tmakeYield() {\n\t\tconst forkContext = this.forkContext;\n\t\tconst leavingSegments = forkContext.head;\n\n\t\tif (forkContext.reachable) {\n\t\t\tgetReturnContext(this).returnedForkContext.add(leavingSegments);\n\t\t\tgetThrowContext(this).thrownForkContext.add(leavingSegments);\n\n\t\t\tforkContext.replaceHead(forkContext.makeNext(-1, -1));\n\t\t}\n\t}\n\n\t/**\n\t * Makes a code path segment from the first throwable node in a `try` block to the `catch`\n\t * block or the `finally` block or from the first throwable node in a `catch` block\n\t * to the `finally` block.\n\t * @returns {void}\n\t */\n\tmakeFirstThrowablePathInTryOrCatchBlock() {\n\t\tconst forkContext = this.forkContext;\n\n\t\tif (!forkContext.reachable) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst context = getThrowContext(this);\n\n\t\tif (context === this || !context.thrownForkContext.empty) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tcontext.position !== \"try\" &&\n\t\t\t(context.position !== \"catch\" || !context.hasFinalizer)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontext.thrownForkContext.add(forkContext.head);\n\t\tforkContext.replaceHead(forkContext.makeNext(-1, -1));\n\t}\n\n\t//--------------------------------------------------------------------------\n\t// Loop Statements\n\t//--------------------------------------------------------------------------\n\n\t/**\n\t * Creates a context object of a loop statement and stacks it.\n\t * @param {string} type The type of the node which was triggered. One of\n\t *   `WhileStatement`, `DoWhileStatement`, `ForStatement`, `ForInStatement`,\n\t *   and `ForStatement`.\n\t * @param {string|null} label A label of the node which was triggered.\n\t * @throws {Error} (Unreachable - unknown type.)\n\t * @returns {void}\n\t */\n\tpushLoopContext(type, label) {\n\t\tconst forkContext = this.forkContext;\n\n\t\t// All loops need a path to account for `break` statements\n\t\tconst breakContext = this.pushBreakContext(true, label);\n\n\t\tswitch (type) {\n\t\t\tcase \"WhileStatement\":\n\t\t\t\tthis.pushChoiceContext(\"loop\", false);\n\t\t\t\tthis.loopContext = new WhileLoopContext(\n\t\t\t\t\tthis.loopContext,\n\t\t\t\t\tlabel,\n\t\t\t\t\tbreakContext,\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\tcase \"DoWhileStatement\":\n\t\t\t\tthis.pushChoiceContext(\"loop\", false);\n\t\t\t\tthis.loopContext = new DoWhileLoopContext(\n\t\t\t\t\tthis.loopContext,\n\t\t\t\t\tlabel,\n\t\t\t\t\tbreakContext,\n\t\t\t\t\tforkContext,\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\tcase \"ForStatement\":\n\t\t\t\tthis.pushChoiceContext(\"loop\", false);\n\t\t\t\tthis.loopContext = new ForLoopContext(\n\t\t\t\t\tthis.loopContext,\n\t\t\t\t\tlabel,\n\t\t\t\t\tbreakContext,\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\tcase \"ForInStatement\":\n\t\t\t\tthis.loopContext = new ForInLoopContext(\n\t\t\t\t\tthis.loopContext,\n\t\t\t\t\tlabel,\n\t\t\t\t\tbreakContext,\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\tcase \"ForOfStatement\":\n\t\t\t\tthis.loopContext = new ForOfLoopContext(\n\t\t\t\t\tthis.loopContext,\n\t\t\t\t\tlabel,\n\t\t\t\t\tbreakContext,\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\t/* c8 ignore next */\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`unknown type: \"${type}\"`);\n\t\t}\n\t}\n\n\t/**\n\t * Pops the last context of a loop statement and finalizes it.\n\t * @throws {Error} (Unreachable - unknown type.)\n\t * @returns {void}\n\t */\n\tpopLoopContext() {\n\t\tconst context = this.loopContext;\n\n\t\tthis.loopContext = context.upper;\n\n\t\tconst forkContext = this.forkContext;\n\t\tconst brokenForkContext = this.popBreakContext().brokenForkContext;\n\n\t\t// Creates a looped path.\n\t\tswitch (context.type) {\n\t\t\tcase \"WhileStatement\":\n\t\t\tcase \"ForStatement\":\n\t\t\t\tthis.popChoiceContext();\n\n\t\t\t\t/*\n\t\t\t\t * Creates the path from the end of the loop body up to the\n\t\t\t\t * location where `continue` would jump to.\n\t\t\t\t */\n\t\t\t\tmakeLooped(\n\t\t\t\t\tthis,\n\t\t\t\t\tforkContext.head,\n\t\t\t\t\tcontext.continueDestSegments,\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\tcase \"DoWhileStatement\": {\n\t\t\t\tconst choiceContext = this.popChoiceContext();\n\n\t\t\t\tif (!choiceContext.processed) {\n\t\t\t\t\tchoiceContext.trueForkContext.add(forkContext.head);\n\t\t\t\t\tchoiceContext.falseForkContext.add(forkContext.head);\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * If this isn't a hardcoded `true` condition, then `break`\n\t\t\t\t * should continue down the path as if the condition evaluated\n\t\t\t\t * to false.\n\t\t\t\t */\n\t\t\t\tif (context.test !== true) {\n\t\t\t\t\tbrokenForkContext.addAll(choiceContext.falseForkContext);\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * When the condition is true, the loop continues back to the top,\n\t\t\t\t * so create a path from each possible true condition back to the\n\t\t\t\t * top of the loop.\n\t\t\t\t */\n\t\t\t\tconst segmentsList = choiceContext.trueForkContext.segmentsList;\n\n\t\t\t\tfor (let i = 0; i < segmentsList.length; ++i) {\n\t\t\t\t\tmakeLooped(this, segmentsList[i], context.entrySegments);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase \"ForInStatement\":\n\t\t\tcase \"ForOfStatement\":\n\t\t\t\tbrokenForkContext.add(forkContext.head);\n\n\t\t\t\t/*\n\t\t\t\t * Creates the path from the end of the loop body up to the\n\t\t\t\t * left expression (left of `in` or `of`) of the loop.\n\t\t\t\t */\n\t\t\t\tmakeLooped(this, forkContext.head, context.leftSegments);\n\t\t\t\tbreak;\n\n\t\t\t/* c8 ignore next */\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"unreachable\");\n\t\t}\n\n\t\t/*\n\t\t * If there wasn't a `break` statement in the loop, then we're at\n\t\t * the end of the loop's path, so we make an unreachable segment\n\t\t * to mark that.\n\t\t *\n\t\t * If there was a `break` statement, then we continue on into the\n\t\t * `brokenForkContext`.\n\t\t */\n\t\tif (brokenForkContext.empty) {\n\t\t\tforkContext.replaceHead(forkContext.makeUnreachable(-1, -1));\n\t\t} else {\n\t\t\tforkContext.replaceHead(brokenForkContext.makeNext(0, -1));\n\t\t}\n\t}\n\n\t/**\n\t * Makes a code path segment for the test part of a WhileStatement.\n\t * @param {boolean|undefined} test The test value (only when constant).\n\t * @returns {void}\n\t */\n\tmakeWhileTest(test) {\n\t\tconst context = this.loopContext;\n\t\tconst forkContext = this.forkContext;\n\t\tconst testSegments = forkContext.makeNext(0, -1);\n\n\t\t// Update state.\n\t\tcontext.test = test;\n\t\tcontext.continueDestSegments = testSegments;\n\t\tforkContext.replaceHead(testSegments);\n\t}\n\n\t/**\n\t * Makes a code path segment for the body part of a WhileStatement.\n\t * @returns {void}\n\t */\n\tmakeWhileBody() {\n\t\tconst context = this.loopContext;\n\t\tconst choiceContext = this.choiceContext;\n\t\tconst forkContext = this.forkContext;\n\n\t\tif (!choiceContext.processed) {\n\t\t\tchoiceContext.trueForkContext.add(forkContext.head);\n\t\t\tchoiceContext.falseForkContext.add(forkContext.head);\n\t\t}\n\n\t\t/*\n\t\t * If this isn't a hardcoded `true` condition, then `break`\n\t\t * should continue down the path as if the condition evaluated\n\t\t * to false.\n\t\t */\n\t\tif (context.test !== true) {\n\t\t\tcontext.brokenForkContext.addAll(choiceContext.falseForkContext);\n\t\t}\n\t\tforkContext.replaceHead(choiceContext.trueForkContext.makeNext(0, -1));\n\t}\n\n\t/**\n\t * Makes a code path segment for the body part of a DoWhileStatement.\n\t * @returns {void}\n\t */\n\tmakeDoWhileBody() {\n\t\tconst context = this.loopContext;\n\t\tconst forkContext = this.forkContext;\n\t\tconst bodySegments = forkContext.makeNext(-1, -1);\n\n\t\t// Update state.\n\t\tcontext.entrySegments = bodySegments;\n\t\tforkContext.replaceHead(bodySegments);\n\t}\n\n\t/**\n\t * Makes a code path segment for the test part of a DoWhileStatement.\n\t * @param {boolean|undefined} test The test value (only when constant).\n\t * @returns {void}\n\t */\n\tmakeDoWhileTest(test) {\n\t\tconst context = this.loopContext;\n\t\tconst forkContext = this.forkContext;\n\n\t\tcontext.test = test;\n\n\t\t/*\n\t\t * If there is a `continue` statement in the loop then `continueForkContext`\n\t\t * won't be empty. We wire up the path from `continue` to the loop\n\t\t * test condition and then continue the traversal in the root fork context.\n\t\t */\n\t\tif (!context.continueForkContext.empty) {\n\t\t\tcontext.continueForkContext.add(forkContext.head);\n\t\t\tconst testSegments = context.continueForkContext.makeNext(0, -1);\n\n\t\t\tforkContext.replaceHead(testSegments);\n\t\t}\n\t}\n\n\t/**\n\t * Makes a code path segment for the test part of a ForStatement.\n\t * @param {boolean|undefined} test The test value (only when constant).\n\t * @returns {void}\n\t */\n\tmakeForTest(test) {\n\t\tconst context = this.loopContext;\n\t\tconst forkContext = this.forkContext;\n\t\tconst endOfInitSegments = forkContext.head;\n\t\tconst testSegments = forkContext.makeNext(-1, -1);\n\n\t\t/*\n\t\t * Update the state.\n\t\t *\n\t\t * The `continueDestSegments` are set to `testSegments` because we\n\t\t * don't yet know if there is an update expression in this loop. So,\n\t\t * from what we already know at this point, a `continue` statement\n\t\t * will jump back to the test expression.\n\t\t */\n\t\tcontext.test = test;\n\t\tcontext.endOfInitSegments = endOfInitSegments;\n\t\tcontext.continueDestSegments = context.testSegments = testSegments;\n\t\tforkContext.replaceHead(testSegments);\n\t}\n\n\t/**\n\t * Makes a code path segment for the update part of a ForStatement.\n\t * @returns {void}\n\t */\n\tmakeForUpdate() {\n\t\tconst context = this.loopContext;\n\t\tconst choiceContext = this.choiceContext;\n\t\tconst forkContext = this.forkContext;\n\n\t\t// Make the next paths of the test.\n\t\tif (context.testSegments) {\n\t\t\tfinalizeTestSegmentsOfFor(context, choiceContext, forkContext.head);\n\t\t} else {\n\t\t\tcontext.endOfInitSegments = forkContext.head;\n\t\t}\n\n\t\t/*\n\t\t * Update the state.\n\t\t *\n\t\t * The `continueDestSegments` are now set to `updateSegments` because we\n\t\t * know there is an update expression in this loop. So, a `continue` statement\n\t\t * in the loop will jump to the update expression first, and then to any\n\t\t * test expression the loop might have.\n\t\t */\n\t\tconst updateSegments = forkContext.makeDisconnected(-1, -1);\n\n\t\tcontext.continueDestSegments = context.updateSegments = updateSegments;\n\t\tforkContext.replaceHead(updateSegments);\n\t}\n\n\t/**\n\t * Makes a code path segment for the body part of a ForStatement.\n\t * @returns {void}\n\t */\n\tmakeForBody() {\n\t\tconst context = this.loopContext;\n\t\tconst choiceContext = this.choiceContext;\n\t\tconst forkContext = this.forkContext;\n\n\t\t/*\n\t\t * Determine what to do based on which part of the `for` loop are present.\n\t\t * 1. If there is an update expression, then `updateSegments` is not null and\n\t\t *    we need to assign `endOfUpdateSegments`, and if there is a test\n\t\t *    expression, we then need to create the looped path to get back to\n\t\t *    the test condition.\n\t\t * 2. If there is no update expression but there is a test expression,\n\t\t *    then we only need to update the test segment information.\n\t\t * 3. If there is no update expression and no test expression, then we\n\t\t *    just save `endOfInitSegments`.\n\t\t */\n\t\tif (context.updateSegments) {\n\t\t\tcontext.endOfUpdateSegments = forkContext.head;\n\n\t\t\t/*\n\t\t\t * In a `for` loop that has both an update expression and a test\n\t\t\t * condition, execution flows from the test expression into the\n\t\t\t * loop body, to the update expression, and then back to the test\n\t\t\t * expression to determine if the loop should continue.\n\t\t\t *\n\t\t\t * To account for that, we need to make a path from the end of the\n\t\t\t * update expression to the start of the test expression. This is\n\t\t\t * effectively what creates the loop in the code path.\n\t\t\t */\n\t\t\tif (context.testSegments) {\n\t\t\t\tmakeLooped(\n\t\t\t\t\tthis,\n\t\t\t\t\tcontext.endOfUpdateSegments,\n\t\t\t\t\tcontext.testSegments,\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (context.testSegments) {\n\t\t\tfinalizeTestSegmentsOfFor(context, choiceContext, forkContext.head);\n\t\t} else {\n\t\t\tcontext.endOfInitSegments = forkContext.head;\n\t\t}\n\n\t\tlet bodySegments = context.endOfTestSegments;\n\n\t\t/*\n\t\t * If there is a test condition, then there `endOfTestSegments` is also\n\t\t * the start of the loop body. If there isn't a test condition then\n\t\t * `bodySegments` will be null and we need to look elsewhere to find\n\t\t * the start of the body.\n\t\t *\n\t\t * The body starts at the end of the init expression and ends at the end\n\t\t * of the update expression, so we use those locations to determine the\n\t\t * body segments.\n\t\t */\n\t\tif (!bodySegments) {\n\t\t\tconst prevForkContext = ForkContext.newEmpty(forkContext);\n\n\t\t\tprevForkContext.add(context.endOfInitSegments);\n\t\t\tif (context.endOfUpdateSegments) {\n\t\t\t\tprevForkContext.add(context.endOfUpdateSegments);\n\t\t\t}\n\n\t\t\tbodySegments = prevForkContext.makeNext(0, -1);\n\t\t}\n\n\t\t/*\n\t\t * If there was no test condition and no update expression, then\n\t\t * `continueDestSegments` will be null. In that case, a\n\t\t * `continue` should skip directly to the body of the loop.\n\t\t * Otherwise, we want to keep the current `continueDestSegments`.\n\t\t */\n\t\tcontext.continueDestSegments =\n\t\t\tcontext.continueDestSegments || bodySegments;\n\n\t\t// move pointer to the body\n\t\tforkContext.replaceHead(bodySegments);\n\t}\n\n\t/**\n\t * Makes a code path segment for the left part of a ForInStatement and a\n\t * ForOfStatement.\n\t * @returns {void}\n\t */\n\tmakeForInOfLeft() {\n\t\tconst context = this.loopContext;\n\t\tconst forkContext = this.forkContext;\n\t\tconst leftSegments = forkContext.makeDisconnected(-1, -1);\n\n\t\t// Update state.\n\t\tcontext.prevSegments = forkContext.head;\n\t\tcontext.leftSegments = context.continueDestSegments = leftSegments;\n\t\tforkContext.replaceHead(leftSegments);\n\t}\n\n\t/**\n\t * Makes a code path segment for the right part of a ForInStatement and a\n\t * ForOfStatement.\n\t * @returns {void}\n\t */\n\tmakeForInOfRight() {\n\t\tconst context = this.loopContext;\n\t\tconst forkContext = this.forkContext;\n\t\tconst temp = ForkContext.newEmpty(forkContext);\n\n\t\ttemp.add(context.prevSegments);\n\t\tconst rightSegments = temp.makeNext(-1, -1);\n\n\t\t// Update state.\n\t\tcontext.endOfLeftSegments = forkContext.head;\n\t\tforkContext.replaceHead(rightSegments);\n\t}\n\n\t/**\n\t * Makes a code path segment for the body part of a ForInStatement and a\n\t * ForOfStatement.\n\t * @returns {void}\n\t */\n\tmakeForInOfBody() {\n\t\tconst context = this.loopContext;\n\t\tconst forkContext = this.forkContext;\n\t\tconst temp = ForkContext.newEmpty(forkContext);\n\n\t\ttemp.add(context.endOfLeftSegments);\n\t\tconst bodySegments = temp.makeNext(-1, -1);\n\n\t\t// Make a path: `right` -> `left`.\n\t\tmakeLooped(this, forkContext.head, context.leftSegments);\n\n\t\t// Update state.\n\t\tcontext.brokenForkContext.add(forkContext.head);\n\t\tforkContext.replaceHead(bodySegments);\n\t}\n\n\t//--------------------------------------------------------------------------\n\t// Control Statements\n\t//--------------------------------------------------------------------------\n\n\t/**\n\t * Creates new context in which a `break` statement can be used. This occurs inside of a loop,\n\t * labeled statement, or switch statement.\n\t * @param {boolean} breakable Indicates if we are inside a statement where\n\t *      `break` without a label will exit the statement.\n\t * @param {string|null} label The label associated with the statement.\n\t * @returns {BreakContext} The new context.\n\t */\n\tpushBreakContext(breakable, label) {\n\t\tthis.breakContext = new BreakContext(\n\t\t\tthis.breakContext,\n\t\t\tbreakable,\n\t\t\tlabel,\n\t\t\tthis.forkContext,\n\t\t);\n\t\treturn this.breakContext;\n\t}\n\n\t/**\n\t * Removes the top item of the break context stack.\n\t * @returns {Object} The removed context.\n\t */\n\tpopBreakContext() {\n\t\tconst context = this.breakContext;\n\t\tconst forkContext = this.forkContext;\n\n\t\tthis.breakContext = context.upper;\n\n\t\t// Process this context here for other than switches and loops.\n\t\tif (!context.breakable) {\n\t\t\tconst brokenForkContext = context.brokenForkContext;\n\n\t\t\tif (!brokenForkContext.empty) {\n\t\t\t\tbrokenForkContext.add(forkContext.head);\n\t\t\t\tforkContext.replaceHead(brokenForkContext.makeNext(0, -1));\n\t\t\t}\n\t\t}\n\n\t\treturn context;\n\t}\n\n\t/**\n\t * Makes a path for a `break` statement.\n\t *\n\t * It registers the head segment to a context of `break`.\n\t * It makes new unreachable segment, then it set the head with the segment.\n\t * @param {string|null} label A label of the break statement.\n\t * @returns {void}\n\t */\n\tmakeBreak(label) {\n\t\tconst forkContext = this.forkContext;\n\n\t\tif (!forkContext.reachable) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst context = getBreakContext(this, label);\n\n\t\tif (context) {\n\t\t\tcontext.brokenForkContext.add(forkContext.head);\n\t\t}\n\n\t\t/* c8 ignore next */\n\t\tforkContext.replaceHead(forkContext.makeUnreachable(-1, -1));\n\t}\n\n\t/**\n\t * Makes a path for a `continue` statement.\n\t *\n\t * It makes a looping path.\n\t * It makes new unreachable segment, then it set the head with the segment.\n\t * @param {string|null} label A label of the continue statement.\n\t * @returns {void}\n\t */\n\tmakeContinue(label) {\n\t\tconst forkContext = this.forkContext;\n\n\t\tif (!forkContext.reachable) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst context = getContinueContext(this, label);\n\n\t\tif (context) {\n\t\t\tif (context.continueDestSegments) {\n\t\t\t\tmakeLooped(\n\t\t\t\t\tthis,\n\t\t\t\t\tforkContext.head,\n\t\t\t\t\tcontext.continueDestSegments,\n\t\t\t\t);\n\n\t\t\t\t// If the context is a for-in/of loop, this affects a break also.\n\t\t\t\tif (\n\t\t\t\t\tcontext.type === \"ForInStatement\" ||\n\t\t\t\t\tcontext.type === \"ForOfStatement\"\n\t\t\t\t) {\n\t\t\t\t\tcontext.brokenForkContext.add(forkContext.head);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontext.continueForkContext.add(forkContext.head);\n\t\t\t}\n\t\t}\n\t\tforkContext.replaceHead(forkContext.makeUnreachable(-1, -1));\n\t}\n\n\t/**\n\t * Makes a path for a `return` statement.\n\t *\n\t * It registers the head segment to a context of `return`.\n\t * It makes new unreachable segment, then it set the head with the segment.\n\t * @returns {void}\n\t */\n\tmakeReturn() {\n\t\tconst forkContext = this.forkContext;\n\n\t\tif (forkContext.reachable) {\n\t\t\tgetReturnContext(this).returnedForkContext.add(forkContext.head);\n\t\t\tforkContext.replaceHead(forkContext.makeUnreachable(-1, -1));\n\t\t}\n\t}\n\n\t/**\n\t * Makes a path for a `throw` statement.\n\t *\n\t * It registers the head segment to a context of `throw`.\n\t * It makes new unreachable segment, then it set the head with the segment.\n\t * @returns {void}\n\t */\n\tmakeThrow() {\n\t\tconst forkContext = this.forkContext;\n\n\t\tif (forkContext.reachable) {\n\t\t\tgetThrowContext(this).thrownForkContext.add(forkContext.head);\n\t\t\tforkContext.replaceHead(forkContext.makeUnreachable(-1, -1));\n\t\t}\n\t}\n\n\t/**\n\t * Makes the final path.\n\t * @returns {void}\n\t */\n\tmakeFinal() {\n\t\tconst segments = this.currentSegments;\n\n\t\tif (segments.length > 0 && segments[0].reachable) {\n\t\t\tthis.returnedForkContext.add(segments);\n\t\t}\n\t}\n}\n\nmodule.exports = CodePathState;\n", "/**\n * @fileoverview A class of identifiers generator for code path segments.\n *\n * Each rule uses the identifier of code path segments to store additional\n * information of the code path.\n *\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * A generator for unique ids.\n */\nclass IdGenerator {\n\t/**\n\t * @param {string} prefix Optional. A prefix of generated ids.\n\t */\n\tconstructor(prefix) {\n\t\tthis.prefix = String(prefix);\n\t\tthis.n = 0;\n\t}\n\n\t/**\n\t * Generates id.\n\t * @returns {string} A generated id.\n\t */\n\tnext() {\n\t\tthis.n = (1 + this.n) | 0;\n\n\t\tif (this.n < 0) {\n\t\t\tthis.n = 1;\n\t\t}\n\n\t\treturn this.prefix + this.n;\n\t}\n}\n\nmodule.exports = IdGenerator;\n", "/**\n * @fileoverview A class of the code path.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst CodePathState = require(\"./code-path-state\");\nconst IdGenerator = require(\"./id-generator\");\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * A code path.\n */\nclass CodePath {\n\t/**\n\t * Creates a new instance.\n\t * @param {Object} options Options for the function (see below).\n\t * @param {string} options.id An identifier.\n\t * @param {string} options.origin The type of code path origin.\n\t * @param {CodePath|null} options.upper The code path of the upper function scope.\n\t * @param {Function} options.onLooped A callback function to notify looping.\n\t */\n\tconstructor({ id, origin, upper, onLooped }) {\n\t\t/**\n\t\t * The identifier of this code path.\n\t\t * Rules use it to store additional information of each rule.\n\t\t * @type {string}\n\t\t */\n\t\tthis.id = id;\n\n\t\t/**\n\t\t * The reason that this code path was started. May be \"program\",\n\t\t * \"function\", \"class-field-initializer\", or \"class-static-block\".\n\t\t * @type {string}\n\t\t */\n\t\tthis.origin = origin;\n\n\t\t/**\n\t\t * The code path of the upper function scope.\n\t\t * @type {CodePath|null}\n\t\t */\n\t\tthis.upper = upper;\n\n\t\t/**\n\t\t * The code paths of nested function scopes.\n\t\t * @type {CodePath[]}\n\t\t */\n\t\tthis.childCodePaths = [];\n\n\t\t// Initializes internal state.\n\t\tObject.defineProperty(this, \"internal\", {\n\t\t\tvalue: new CodePathState(new IdGenerator(`${id}_`), onLooped),\n\t\t});\n\n\t\t// Adds this into `childCodePaths` of `upper`.\n\t\tif (upper) {\n\t\t\tupper.childCodePaths.push(this);\n\t\t}\n\t}\n\n\t/**\n\t * Gets the state of a given code path.\n\t * @param {CodePath} codePath A code path to get.\n\t * @returns {CodePathState} The state of the code path.\n\t */\n\tstatic getState(codePath) {\n\t\treturn codePath.internal;\n\t}\n\n\t/**\n\t * The initial code path segment. This is the segment that is at the head\n\t * of the code path.\n\t * This is a passthrough to the underlying `CodePathState`.\n\t * @type {CodePathSegment}\n\t */\n\tget initialSegment() {\n\t\treturn this.internal.initialSegment;\n\t}\n\n\t/**\n\t * Final code path segments. These are the terminal (tail) segments in the\n\t * code path, which is the combination of `returnedSegments` and `thrownSegments`.\n\t * All segments in this array are reachable.\n\t * This is a passthrough to the underlying `CodePathState`.\n\t * @type {CodePathSegment[]}\n\t */\n\tget finalSegments() {\n\t\treturn this.internal.finalSegments;\n\t}\n\n\t/**\n\t * Final code path segments that represent normal completion of the code path.\n\t * For functions, this means both explicit `return` statements and implicit returns,\n\t * such as the last reachable segment in a function that does not have an\n\t * explicit `return` as this implicitly returns `undefined`, as well as\n\t * return-like exits from suspended `yield` expressions. For scripts, modules,\n\t * class field initializers, and class static blocks, this means all lines of\n\t * code have been executed.\n\t * These segments are also present in `finalSegments`.\n\t * This is a passthrough to the underlying `CodePathState`.\n\t * @type {CodePathSegment[]}\n\t */\n\tget returnedSegments() {\n\t\treturn this.internal.returnedForkContext;\n\t}\n\n\t/**\n\t * Final code path segments that represent `throw` statements and throw-like\n\t * exits from suspended `yield` expressions.\n\t * This is a passthrough to the underlying `CodePathState`.\n\t * These segments are also present in `finalSegments`.\n\t * @type {CodePathSegment[]}\n\t */\n\tget thrownSegments() {\n\t\treturn this.internal.thrownForkContext;\n\t}\n\n\t/**\n\t * Traverses all segments in this code path.\n\t *\n\t *     codePath.traverseSegments((segment, controller) => {\n\t *         // do something.\n\t *     });\n\t *\n\t * This method enumerates segments in order from the head.\n\t *\n\t * The `controller` argument has two methods:\n\t *\n\t * - `skip()` - skips the following segments in this branch\n\t * - `break()` - skips all following segments in the traversal\n\t *\n\t * A note on the parameters: the `options` argument is optional. This means\n\t * the first argument might be an options object or the callback function.\n\t * @param {Object} [optionsOrCallback] Optional first and last segments to traverse.\n\t * @param {CodePathSegment} [optionsOrCallback.first] The first segment to traverse.\n\t * @param {CodePathSegment} [optionsOrCallback.last] The last segment to traverse.\n\t * @param {Function} callback A callback function.\n\t * @returns {void}\n\t */\n\ttraverseSegments(optionsOrCallback, callback) {\n\t\t// normalize the arguments into a callback and options\n\t\tlet resolvedOptions;\n\t\tlet resolvedCallback;\n\n\t\tif (typeof optionsOrCallback === \"function\") {\n\t\t\tresolvedCallback = optionsOrCallback;\n\t\t\tresolvedOptions = {};\n\t\t} else {\n\t\t\tresolvedOptions = optionsOrCallback || {};\n\t\t\tresolvedCallback = callback;\n\t\t}\n\n\t\t// determine where to start traversing from based on the options\n\t\tconst startSegment =\n\t\t\tresolvedOptions.first || this.internal.initialSegment;\n\t\tconst lastSegment = resolvedOptions.last;\n\n\t\t// set up initial location information\n\t\tlet record;\n\t\tlet index;\n\t\tlet end;\n\t\tlet segment = null;\n\n\t\t// segments that have already been visited during traversal\n\t\tconst visited = new Set();\n\n\t\t// tracks the traversal steps\n\t\tconst stack = [[startSegment, 0]];\n\n\t\t// segments that have been skipped during traversal\n\t\tconst skipped = new Set();\n\n\t\t// indicates if we exited early from the traversal\n\t\tlet broken = false;\n\n\t\t/**\n\t\t * Maintains traversal state.\n\t\t */\n\t\tconst controller = {\n\t\t\t/**\n\t\t\t * Skip the following segments in this branch.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tskip() {\n\t\t\t\tskipped.add(segment);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Stop traversal completely - do not traverse to any\n\t\t\t * other segments.\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tbreak() {\n\t\t\t\tbroken = true;\n\t\t\t},\n\t\t};\n\n\t\t/**\n\t\t * Checks if a given previous segment has been visited.\n\t\t * @param {CodePathSegment} prevSegment A previous segment to check.\n\t\t * @returns {boolean} `true` if the segment has been visited.\n\t\t */\n\t\tfunction isVisited(prevSegment) {\n\t\t\treturn (\n\t\t\t\tvisited.has(prevSegment) ||\n\t\t\t\tsegment.isLoopedPrevSegment(prevSegment)\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Checks if a given previous segment has been skipped.\n\t\t * @param {CodePathSegment} prevSegment A previous segment to check.\n\t\t * @returns {boolean} `true` if the segment has been skipped.\n\t\t */\n\t\tfunction isSkipped(prevSegment) {\n\t\t\treturn (\n\t\t\t\tskipped.has(prevSegment) ||\n\t\t\t\tsegment.isLoopedPrevSegment(prevSegment)\n\t\t\t);\n\t\t}\n\n\t\t// the traversal\n\t\twhile (stack.length > 0) {\n\t\t\t/*\n\t\t\t * This isn't a pure stack. We use the top record all the time\n\t\t\t * but don't always pop it off. The record is popped only if\n\t\t\t * one of the following is true:\n\t\t\t *\n\t\t\t * 1) We have already visited the segment.\n\t\t\t * 2) We have not visited *all* of the previous segments.\n\t\t\t * 3) We have traversed past the available next segments.\n\t\t\t *\n\t\t\t * Otherwise, we just read the value and sometimes modify the\n\t\t\t * record as we traverse.\n\t\t\t */\n\t\t\trecord = stack.at(-1);\n\t\t\tsegment = record[0];\n\t\t\tindex = record[1];\n\n\t\t\tif (index === 0) {\n\t\t\t\t// Skip if this segment has been visited already.\n\t\t\t\tif (visited.has(segment)) {\n\t\t\t\t\tstack.pop();\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Skip if all previous segments have not been visited.\n\t\t\t\tif (\n\t\t\t\t\tsegment !== startSegment &&\n\t\t\t\t\tsegment.prevSegments.length > 0 &&\n\t\t\t\t\t!segment.prevSegments.every(isVisited)\n\t\t\t\t) {\n\t\t\t\t\tstack.pop();\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvisited.add(segment);\n\n\t\t\t\t// Skips the segment if all previous segments have been skipped.\n\t\t\t\tconst shouldSkip =\n\t\t\t\t\tskipped.size > 0 &&\n\t\t\t\t\tsegment.prevSegments.length > 0 &&\n\t\t\t\t\tsegment.prevSegments.every(isSkipped);\n\n\t\t\t\t/*\n\t\t\t\t * If the most recent segment hasn't been skipped, then we call\n\t\t\t\t * the callback, passing in the segment and the controller.\n\t\t\t\t */\n\t\t\t\tif (!shouldSkip) {\n\t\t\t\t\tresolvedCallback.call(this, segment, controller);\n\n\t\t\t\t\t// exit if we're at the last segment\n\t\t\t\t\tif (segment === lastSegment) {\n\t\t\t\t\t\tcontroller.skip();\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t * If the previous statement was executed, or if the callback\n\t\t\t\t\t * called a method on the controller, we might need to exit the\n\t\t\t\t\t * loop, so check for that and break accordingly.\n\t\t\t\t\t */\n\t\t\t\t\tif (broken) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If the most recent segment has been skipped, then mark it as skipped.\n\t\t\t\t\tskipped.add(segment);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Update the stack.\n\t\t\tend = segment.nextSegments.length - 1;\n\t\t\tif (index < end) {\n\t\t\t\t/*\n\t\t\t\t * If we haven't yet visited all of the next segments, update\n\t\t\t\t * the current top record on the stack to the next index to visit\n\t\t\t\t * and then push a record for the current segment on top.\n\t\t\t\t *\n\t\t\t\t * Setting the current top record's index lets us know how many\n\t\t\t\t * times we've been here and ensures that the segment won't be\n\t\t\t\t * reprocessed (because we only process segments with an index\n\t\t\t\t * of 0).\n\t\t\t\t */\n\t\t\t\trecord[1] += 1;\n\t\t\t\tstack.push([segment.nextSegments[index], 0]);\n\t\t\t} else if (index === end) {\n\t\t\t\t/*\n\t\t\t\t * If we are at the last next segment, then reset the top record\n\t\t\t\t * in the stack to next segment and set its index to 0 so it will\n\t\t\t\t * be processed next.\n\t\t\t\t */\n\t\t\t\trecord[0] = segment.nextSegments[index];\n\t\t\t\trecord[1] = 0;\n\t\t\t} else {\n\t\t\t\t/*\n\t\t\t\t * If index > end, that means we have no more segments that need\n\t\t\t\t * processing. So, we pop that record off of the stack in order to\n\t\t\t\t * continue traversing at the next level up.\n\t\t\t\t */\n\t\t\t\tstack.pop();\n\t\t\t}\n\t\t}\n\t}\n}\n\nmodule.exports = CodePath;\n", "/**\n * @fileoverview A class of the code path analyzer.\n * @author Toru Nagashima\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst assert = require(\"../../shared/assert\"),\n\t{ breakableTypePattern } = require(\"../../shared/ast-utils\"),\n\tCodePath = require(\"./code-path\"),\n\tCodePathSegment = require(\"./code-path-segment\"),\n\tIdGenerator = require(\"./id-generator\"),\n\tdebug = require(\"./debug-helpers\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Checks whether or not a given node is a `case` node (not `default` node).\n * @param {ASTNode} node A `SwitchCase` node to check.\n * @returns {boolean} `true` if the node is a `case` node (not `default` node).\n */\nfunction isCaseNode(node) {\n\treturn Boolean(node.test);\n}\n\n/**\n * Checks if a given node appears as the value of a PropertyDefinition node.\n * @param {ASTNode} node The node to check.\n * @returns {boolean} `true` if the node is a PropertyDefinition value,\n *      false if not.\n */\nfunction isPropertyDefinitionValue(node) {\n\tconst parent = node.parent;\n\n\treturn (\n\t\tparent && parent.type === \"PropertyDefinition\" && parent.value === node\n\t);\n}\n\n/**\n * Checks whether the given logical operator is taken into account for the code\n * path analysis.\n * @param {string} operator The operator found in the LogicalExpression node\n * @returns {boolean} `true` if the operator is \"&&\" or \"||\" or \"??\"\n */\nfunction isHandledLogicalOperator(operator) {\n\treturn operator === \"&&\" || operator === \"||\" || operator === \"??\";\n}\n\n/**\n * Checks whether the given assignment operator is a logical assignment operator.\n * Logical assignments are taken into account for the code path analysis\n * because of their short-circuiting semantics.\n * @param {string} operator The operator found in the AssignmentExpression node\n * @returns {boolean} `true` if the operator is \"&&=\" or \"||=\" or \"??=\"\n */\nfunction isLogicalAssignmentOperator(operator) {\n\treturn operator === \"&&=\" || operator === \"||=\" || operator === \"??=\";\n}\n\n/**\n * Gets the label if the parent node of a given node is a LabeledStatement.\n * @param {ASTNode} node A node to get.\n * @returns {string|null} The label or `null`.\n */\nfunction getLabel(node) {\n\tif (node.parent.type === \"LabeledStatement\") {\n\t\treturn node.parent.label.name;\n\t}\n\treturn null;\n}\n\n/**\n * Checks whether a given logical expression node takes different paths for the\n * `true` and `false` cases.\n * @param {ASTNode} node A node to check.\n * @returns {boolean} `true` if the node is a test of a choice statement.\n */\nfunction isForkingByTrueOrFalse(node) {\n\tconst parent = node.parent;\n\n\tswitch (parent.type) {\n\t\tcase \"ConditionalExpression\":\n\t\tcase \"IfStatement\":\n\t\tcase \"WhileStatement\":\n\t\tcase \"DoWhileStatement\":\n\t\tcase \"ForStatement\":\n\t\t\treturn parent.test === node;\n\n\t\tcase \"LogicalExpression\":\n\t\t\treturn isHandledLogicalOperator(parent.operator);\n\n\t\tcase \"AssignmentExpression\":\n\t\t\treturn isLogicalAssignmentOperator(parent.operator);\n\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\n/**\n * Gets the boolean value of a given literal node.\n *\n * This is used to detect infinite loops (e.g. `while (true) {}`).\n * Statements preceded by an infinite loop are unreachable if the loop didn't\n * have any `break` statement.\n * @param {ASTNode} node A node to get.\n * @returns {boolean|undefined} a boolean value if the node is a Literal node,\n *   otherwise `undefined`.\n */\nfunction getBooleanValueIfSimpleConstant(node) {\n\tif (node.type === \"Literal\") {\n\t\treturn Boolean(node.value);\n\t}\n\treturn void 0;\n}\n\n/**\n * Checks that a given identifier node is a reference or not.\n *\n * This is used to detect the first throwable node in a `try` block.\n * @param {ASTNode} node An Identifier node to check.\n * @returns {boolean} `true` if the node is a reference.\n */\nfunction isIdentifierReference(node) {\n\tconst parent = node.parent;\n\n\tswitch (parent.type) {\n\t\tcase \"LabeledStatement\":\n\t\tcase \"BreakStatement\":\n\t\tcase \"ContinueStatement\":\n\t\tcase \"ArrayPattern\":\n\t\tcase \"RestElement\":\n\t\tcase \"ImportSpecifier\":\n\t\tcase \"ImportDefaultSpecifier\":\n\t\tcase \"ImportNamespaceSpecifier\":\n\t\tcase \"CatchClause\":\n\t\t\treturn false;\n\n\t\tcase \"FunctionDeclaration\":\n\t\tcase \"FunctionExpression\":\n\t\tcase \"ArrowFunctionExpression\":\n\t\tcase \"ClassDeclaration\":\n\t\tcase \"ClassExpression\":\n\t\tcase \"VariableDeclarator\":\n\t\t\treturn parent.id !== node;\n\n\t\tcase \"Property\":\n\t\tcase \"PropertyDefinition\":\n\t\tcase \"MethodDefinition\":\n\t\t\treturn parent.key !== node || parent.computed || parent.shorthand;\n\n\t\tcase \"AssignmentPattern\":\n\t\t\treturn parent.key !== node;\n\n\t\tdefault:\n\t\t\treturn true;\n\t}\n}\n\n/**\n * Updates the current segment with the head segment.\n * This is similar to local branches and tracking branches of git.\n *\n * To separate the current and the head is in order to not make useless segments.\n *\n * In this process, both \"onCodePathSegmentStart\" and \"onCodePathSegmentEnd\"\n * events are fired.\n * @param {CodePathAnalyzer} analyzer The instance.\n * @param {ASTNode} node The current AST node.\n * @returns {void}\n */\nfunction forwardCurrentToHead(analyzer, node) {\n\tconst codePath = analyzer.codePath;\n\tconst state = CodePath.getState(codePath);\n\tconst currentSegments = state.currentSegments;\n\tconst headSegments = state.headSegments;\n\tconst end = Math.max(currentSegments.length, headSegments.length);\n\tlet i, currentSegment, headSegment;\n\n\t// Fires leaving events.\n\tfor (i = 0; i < end; ++i) {\n\t\tcurrentSegment = currentSegments[i];\n\t\theadSegment = headSegments[i];\n\n\t\tif (currentSegment !== headSegment && currentSegment) {\n\t\t\tconst eventName = currentSegment.reachable\n\t\t\t\t? \"onCodePathSegmentEnd\"\n\t\t\t\t: \"onUnreachableCodePathSegmentEnd\";\n\n\t\t\tdebug.dump(`${eventName} ${currentSegment.id}`);\n\n\t\t\tanalyzer.emit(eventName, [currentSegment, node]);\n\t\t}\n\t}\n\n\t// Update state.\n\tstate.currentSegments = headSegments;\n\n\t// Fires entering events.\n\tfor (i = 0; i < end; ++i) {\n\t\tcurrentSegment = currentSegments[i];\n\t\theadSegment = headSegments[i];\n\n\t\tif (currentSegment !== headSegment && headSegment) {\n\t\t\tconst eventName = headSegment.reachable\n\t\t\t\t? \"onCodePathSegmentStart\"\n\t\t\t\t: \"onUnreachableCodePathSegmentStart\";\n\n\t\t\tdebug.dump(`${eventName} ${headSegment.id}`);\n\t\t\tCodePathSegment.markUsed(headSegment);\n\t\t\tanalyzer.emit(eventName, [headSegment, node]);\n\t\t}\n\t}\n}\n\n/**\n * Updates the current segment with an empty array.\n * This is called when a code path ends.\n * @param {CodePathAnalyzer} analyzer The instance.\n * @param {ASTNode} node The current AST node.\n * @returns {void}\n */\nfunction leaveFromCurrentSegment(analyzer, node) {\n\tconst state = CodePath.getState(analyzer.codePath);\n\tconst currentSegments = state.currentSegments;\n\n\tfor (let i = 0; i < currentSegments.length; ++i) {\n\t\tconst currentSegment = currentSegments[i];\n\t\tconst eventName = currentSegment.reachable\n\t\t\t? \"onCodePathSegmentEnd\"\n\t\t\t: \"onUnreachableCodePathSegmentEnd\";\n\n\t\tdebug.dump(`${eventName} ${currentSegment.id}`);\n\n\t\tanalyzer.emit(eventName, [currentSegment, node]);\n\t}\n\n\tstate.currentSegments = [];\n}\n\n/**\n * Updates the code path due to the position of a given node in the parent node\n * thereof.\n *\n * For example, if the node is `parent.consequent`, this creates a fork from the\n * current path.\n * @param {CodePathAnalyzer} analyzer The instance.\n * @param {ASTNode} node The current AST node.\n * @returns {void}\n */\nfunction preprocess(analyzer, node) {\n\tconst codePath = analyzer.codePath;\n\tconst state = CodePath.getState(codePath);\n\tconst parent = node.parent;\n\n\tswitch (parent.type) {\n\t\t// The `arguments.length == 0` case is in `postprocess` function.\n\t\tcase \"CallExpression\":\n\t\t\tif (\n\t\t\t\tparent.optional === true &&\n\t\t\t\tparent.arguments.length >= 1 &&\n\t\t\t\tparent.arguments[0] === node\n\t\t\t) {\n\t\t\t\tstate.makeOptionalRight();\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"MemberExpression\":\n\t\t\tif (parent.optional === true && parent.property === node) {\n\t\t\t\tstate.makeOptionalRight();\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"LogicalExpression\":\n\t\t\tif (\n\t\t\t\tparent.right === node &&\n\t\t\t\tisHandledLogicalOperator(parent.operator)\n\t\t\t) {\n\t\t\t\tstate.makeLogicalRight();\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"AssignmentExpression\":\n\t\t\tif (\n\t\t\t\tparent.right === node &&\n\t\t\t\tisLogicalAssignmentOperator(parent.operator)\n\t\t\t) {\n\t\t\t\tstate.makeLogicalRight();\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"ConditionalExpression\":\n\t\tcase \"IfStatement\":\n\t\t\t/*\n\t\t\t * Fork if this node is at `consequent`/`alternate`.\n\t\t\t * `popForkContext()` exists at `IfStatement:exit` and\n\t\t\t * `ConditionalExpression:exit`.\n\t\t\t */\n\t\t\tif (parent.consequent === node) {\n\t\t\t\tstate.makeIfConsequent();\n\t\t\t} else if (parent.alternate === node) {\n\t\t\t\tstate.makeIfAlternate();\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"SwitchCase\":\n\t\t\tif (parent.consequent[0] === node) {\n\t\t\t\tstate.makeSwitchCaseBody(false, !parent.test);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"TryStatement\":\n\t\t\tif (parent.handler === node) {\n\t\t\t\tstate.makeCatchBlock();\n\t\t\t} else if (parent.finalizer === node) {\n\t\t\t\tstate.makeFinallyBlock();\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"WhileStatement\":\n\t\t\tif (parent.test === node) {\n\t\t\t\tstate.makeWhileTest(getBooleanValueIfSimpleConstant(node));\n\t\t\t} else {\n\t\t\t\tassert(parent.body === node);\n\t\t\t\tstate.makeWhileBody();\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"DoWhileStatement\":\n\t\t\tif (parent.body === node) {\n\t\t\t\tstate.makeDoWhileBody();\n\t\t\t} else {\n\t\t\t\tassert(parent.test === node);\n\t\t\t\tstate.makeDoWhileTest(getBooleanValueIfSimpleConstant(node));\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"ForStatement\":\n\t\t\tif (parent.test === node) {\n\t\t\t\tstate.makeForTest(getBooleanValueIfSimpleConstant(node));\n\t\t\t} else if (parent.update === node) {\n\t\t\t\tstate.makeForUpdate();\n\t\t\t} else if (parent.body === node) {\n\t\t\t\tstate.makeForBody();\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"ForInStatement\":\n\t\tcase \"ForOfStatement\":\n\t\t\tif (parent.left === node) {\n\t\t\t\tstate.makeForInOfLeft();\n\t\t\t} else if (parent.right === node) {\n\t\t\t\tstate.makeForInOfRight();\n\t\t\t} else {\n\t\t\t\tassert(parent.body === node);\n\t\t\t\tstate.makeForInOfBody();\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"AssignmentPattern\":\n\t\t\t/*\n\t\t\t * Fork if this node is at `right`.\n\t\t\t * `left` is executed always, so it uses the current path.\n\t\t\t * `popForkContext()` exists at `AssignmentPattern:exit`.\n\t\t\t */\n\t\t\tif (parent.right === node) {\n\t\t\t\tstate.pushForkContext();\n\t\t\t\tstate.forkBypassPath();\n\t\t\t\tstate.forkPath();\n\t\t\t}\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tbreak;\n\t}\n}\n\n/**\n * Updates the code path due to the type of a given node in entering.\n * @param {CodePathAnalyzer} analyzer The instance.\n * @param {ASTNode} node The current AST node.\n * @returns {void}\n */\nfunction processCodePathToEnter(analyzer, node) {\n\tlet codePath = analyzer.codePath;\n\tlet state = codePath && CodePath.getState(codePath);\n\tconst parent = node.parent;\n\n\t/**\n\t * Creates a new code path and trigger the onCodePathStart event\n\t * based on the currently selected node.\n\t * @param {string} origin The reason the code path was started.\n\t * @returns {void}\n\t */\n\tfunction startCodePath(origin) {\n\t\tif (codePath) {\n\t\t\t// Emits onCodePathSegmentStart events if updated.\n\t\t\tforwardCurrentToHead(analyzer, node);\n\t\t\tdebug.dumpState(node, state, false);\n\t\t}\n\n\t\t// Create the code path of this scope.\n\t\tcodePath = analyzer.codePath = new CodePath({\n\t\t\tid: analyzer.idGenerator.next(),\n\t\t\torigin,\n\t\t\tupper: codePath,\n\t\t\tonLooped: analyzer.onLooped,\n\t\t});\n\t\tstate = CodePath.getState(codePath);\n\n\t\t// Emits onCodePathStart events.\n\t\tdebug.dump(`onCodePathStart ${codePath.id}`);\n\t\tanalyzer.emit(\"onCodePathStart\", [codePath, node]);\n\t}\n\n\t/*\n\t * Special case: The right side of class field initializer is considered\n\t * to be its own function, so we need to start a new code path in this\n\t * case.\n\t */\n\tif (isPropertyDefinitionValue(node)) {\n\t\tstartCodePath(\"class-field-initializer\");\n\n\t\t/*\n\t\t * Intentional fall through because `node` needs to also be\n\t\t * processed by the code below. For example, if we have:\n\t\t *\n\t\t * class Foo {\n\t\t *     a = () => {}\n\t\t * }\n\t\t *\n\t\t * In this case, we also need start a second code path.\n\t\t */\n\t}\n\n\tswitch (node.type) {\n\t\tcase \"Program\":\n\t\t\tstartCodePath(\"program\");\n\t\t\tbreak;\n\n\t\tcase \"FunctionDeclaration\":\n\t\tcase \"FunctionExpression\":\n\t\tcase \"ArrowFunctionExpression\":\n\t\t\tstartCodePath(\"function\");\n\t\t\tbreak;\n\n\t\tcase \"StaticBlock\":\n\t\t\tstartCodePath(\"class-static-block\");\n\t\t\tbreak;\n\n\t\tcase \"ChainExpression\":\n\t\t\tstate.pushChainContext();\n\t\t\tbreak;\n\t\tcase \"CallExpression\":\n\t\t\tif (node.optional === true) {\n\t\t\t\tstate.makeOptionalNode();\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"MemberExpression\":\n\t\t\tif (node.optional === true) {\n\t\t\t\tstate.makeOptionalNode();\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"LogicalExpression\":\n\t\t\tif (isHandledLogicalOperator(node.operator)) {\n\t\t\t\tstate.pushChoiceContext(\n\t\t\t\t\tnode.operator,\n\t\t\t\t\tisForkingByTrueOrFalse(node),\n\t\t\t\t);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"AssignmentExpression\":\n\t\t\tif (isLogicalAssignmentOperator(node.operator)) {\n\t\t\t\tstate.pushChoiceContext(\n\t\t\t\t\tnode.operator.slice(0, -1), // removes `=` from the end\n\t\t\t\t\tisForkingByTrueOrFalse(node),\n\t\t\t\t);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"ConditionalExpression\":\n\t\tcase \"IfStatement\":\n\t\t\tstate.pushChoiceContext(\"test\", false);\n\t\t\tbreak;\n\n\t\tcase \"SwitchStatement\":\n\t\t\tstate.pushSwitchContext(\n\t\t\t\tnode.cases.some(isCaseNode),\n\t\t\t\tgetLabel(node),\n\t\t\t);\n\t\t\tbreak;\n\n\t\tcase \"TryStatement\":\n\t\t\tstate.pushTryContext(Boolean(node.finalizer));\n\t\t\tbreak;\n\n\t\tcase \"SwitchCase\":\n\t\t\t/*\n\t\t\t * Fork if this node is after the 1st node in `cases`.\n\t\t\t * It's similar to `else` blocks.\n\t\t\t * The next `test` node is processed in this path.\n\t\t\t */\n\t\t\tif (parent.discriminant !== node && parent.cases[0] !== node) {\n\t\t\t\tstate.forkPath();\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"WhileStatement\":\n\t\tcase \"DoWhileStatement\":\n\t\tcase \"ForStatement\":\n\t\tcase \"ForInStatement\":\n\t\tcase \"ForOfStatement\":\n\t\t\tstate.pushLoopContext(node.type, getLabel(node));\n\t\t\tbreak;\n\n\t\tcase \"LabeledStatement\":\n\t\t\tif (!breakableTypePattern.test(node.body.type)) {\n\t\t\t\tstate.pushBreakContext(false, node.label.name);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\t// Emits onCodePathSegmentStart events if updated.\n\tforwardCurrentToHead(analyzer, node);\n\tdebug.dumpState(node, state, false);\n}\n\n/**\n * Updates the code path due to the type of a given node in leaving.\n * @param {CodePathAnalyzer} analyzer The instance.\n * @param {ASTNode} node The current AST node.\n * @returns {void}\n */\nfunction processCodePathToExit(analyzer, node) {\n\tconst codePath = analyzer.codePath;\n\tconst state = CodePath.getState(codePath);\n\tlet dontForward = false;\n\n\tswitch (node.type) {\n\t\tcase \"ChainExpression\":\n\t\t\tstate.popChainContext();\n\t\t\tbreak;\n\n\t\tcase \"IfStatement\":\n\t\tcase \"ConditionalExpression\":\n\t\t\tstate.popChoiceContext();\n\t\t\tbreak;\n\n\t\tcase \"LogicalExpression\":\n\t\t\tif (isHandledLogicalOperator(node.operator)) {\n\t\t\t\tstate.popChoiceContext();\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"AssignmentExpression\":\n\t\t\tif (isLogicalAssignmentOperator(node.operator)) {\n\t\t\t\tstate.popChoiceContext();\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"SwitchStatement\":\n\t\t\tstate.popSwitchContext();\n\t\t\tbreak;\n\n\t\tcase \"SwitchCase\":\n\t\t\t/*\n\t\t\t * This is the same as the process at the 1st `consequent` node in\n\t\t\t * `preprocess` function.\n\t\t\t * Must do if this `consequent` is empty.\n\t\t\t */\n\t\t\tif (node.consequent.length === 0) {\n\t\t\t\tstate.makeSwitchCaseBody(true, !node.test);\n\t\t\t}\n\t\t\tif (state.forkContext.reachable) {\n\t\t\t\tdontForward = true;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"TryStatement\":\n\t\t\tstate.popTryContext();\n\t\t\tbreak;\n\n\t\tcase \"BreakStatement\":\n\t\t\tforwardCurrentToHead(analyzer, node);\n\t\t\tstate.makeBreak(node.label && node.label.name);\n\t\t\tdontForward = true;\n\t\t\tbreak;\n\n\t\tcase \"ContinueStatement\":\n\t\t\tforwardCurrentToHead(analyzer, node);\n\t\t\tstate.makeContinue(node.label && node.label.name);\n\t\t\tdontForward = true;\n\t\t\tbreak;\n\n\t\tcase \"ReturnStatement\":\n\t\t\tforwardCurrentToHead(analyzer, node);\n\t\t\tstate.makeReturn();\n\t\t\tdontForward = true;\n\t\t\tbreak;\n\n\t\tcase \"ThrowStatement\":\n\t\t\tforwardCurrentToHead(analyzer, node);\n\t\t\tstate.makeThrow();\n\t\t\tdontForward = true;\n\t\t\tbreak;\n\n\t\tcase \"Identifier\":\n\t\t\tif (isIdentifierReference(node)) {\n\t\t\t\tstate.makeFirstThrowablePathInTryOrCatchBlock();\n\t\t\t\tdontForward = true;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"CallExpression\":\n\t\tcase \"ImportExpression\":\n\t\tcase \"MemberExpression\":\n\t\tcase \"NewExpression\":\n\t\t\tstate.makeFirstThrowablePathInTryOrCatchBlock();\n\t\t\tbreak;\n\n\t\tcase \"YieldExpression\":\n\t\t\tstate.makeYield();\n\t\t\tbreak;\n\n\t\tcase \"WhileStatement\":\n\t\tcase \"DoWhileStatement\":\n\t\tcase \"ForStatement\":\n\t\tcase \"ForInStatement\":\n\t\tcase \"ForOfStatement\":\n\t\t\tstate.popLoopContext();\n\t\t\tbreak;\n\n\t\tcase \"AssignmentPattern\":\n\t\t\tstate.popForkContext();\n\t\t\tbreak;\n\n\t\tcase \"LabeledStatement\":\n\t\t\tif (!breakableTypePattern.test(node.body.type)) {\n\t\t\t\tstate.popBreakContext();\n\t\t\t}\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\t// Emits onCodePathSegmentStart events if updated.\n\tif (!dontForward) {\n\t\tforwardCurrentToHead(analyzer, node);\n\t}\n\tdebug.dumpState(node, state, true);\n}\n\n/**\n * Updates the code path to finalize the current code path.\n * @param {CodePathAnalyzer} analyzer The instance.\n * @param {ASTNode} node The current AST node.\n * @returns {void}\n */\nfunction postprocess(analyzer, node) {\n\t/**\n\t * Ends the code path for the current node.\n\t * @returns {void}\n\t */\n\tfunction endCodePath() {\n\t\tlet codePath = analyzer.codePath;\n\n\t\t// Mark the current path as the final node.\n\t\tCodePath.getState(codePath).makeFinal();\n\n\t\t// Emits onCodePathSegmentEnd event of the current segments.\n\t\tleaveFromCurrentSegment(analyzer, node);\n\n\t\t// Emits onCodePathEnd event of this code path.\n\t\tdebug.dump(`onCodePathEnd ${codePath.id}`);\n\t\tanalyzer.emit(\"onCodePathEnd\", [codePath, node]);\n\t\tdebug.dumpDot(codePath);\n\n\t\tcodePath = analyzer.codePath = analyzer.codePath.upper;\n\t\tif (codePath) {\n\t\t\tdebug.dumpState(node, CodePath.getState(codePath), true);\n\t\t}\n\t}\n\n\tswitch (node.type) {\n\t\tcase \"Program\":\n\t\tcase \"FunctionDeclaration\":\n\t\tcase \"FunctionExpression\":\n\t\tcase \"ArrowFunctionExpression\":\n\t\tcase \"StaticBlock\": {\n\t\t\tendCodePath();\n\t\t\tbreak;\n\t\t}\n\n\t\t// The `arguments.length >= 1` case is in `preprocess` function.\n\t\tcase \"CallExpression\":\n\t\t\tif (node.optional === true && node.arguments.length === 0) {\n\t\t\t\tCodePath.getState(analyzer.codePath).makeOptionalRight();\n\t\t\t}\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\t/*\n\t * Special case: The right side of class field initializer is considered\n\t * to be its own function, so we need to end a code path in this\n\t * case.\n\t *\n\t * We need to check after the other checks in order to close the\n\t * code paths in the correct order for code like this:\n\t *\n\t *\n\t * class Foo {\n\t *     a = () => {}\n\t * }\n\t *\n\t * In this case, the ArrowFunctionExpression code path is closed first,\n\t * and then we need to close the code path for the PropertyDefinition\n\t * value.\n\t */\n\tif (isPropertyDefinitionValue(node)) {\n\t\tendCodePath();\n\t}\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * The class to analyze code paths.\n * This class implements the EventGenerator interface.\n */\nclass CodePathAnalyzer {\n\t/**\n\t * @param {EventGenerator} eventGenerator An event generator to wrap.\n\t */\n\tconstructor(eventGenerator) {\n\t\tthis.original = eventGenerator;\n\t\tthis.emit = eventGenerator.emit;\n\t\tthis.codePath = null;\n\t\tthis.idGenerator = new IdGenerator(\"s\");\n\t\tthis.currentNode = null;\n\t\tthis.onLooped = this.onLooped.bind(this);\n\t}\n\n\t/**\n\t * Does the process to enter a given AST node.\n\t * This updates state of analysis and calls `enterNode` of the wrapped.\n\t * @param {ASTNode} node A node which is entering.\n\t * @returns {void}\n\t */\n\tenterNode(node) {\n\t\tthis.currentNode = node;\n\n\t\t// Updates the code path due to node's position in its parent node.\n\t\tif (node.parent) {\n\t\t\tpreprocess(this, node);\n\t\t}\n\n\t\t/*\n\t\t * Updates the code path.\n\t\t * And emits onCodePathStart/onCodePathSegmentStart events.\n\t\t */\n\t\tprocessCodePathToEnter(this, node);\n\n\t\t// Emits node events.\n\t\tthis.original.enterNode(node);\n\n\t\tthis.currentNode = null;\n\t}\n\n\t/**\n\t * Does the process to leave a given AST node.\n\t * This updates state of analysis and calls `leaveNode` of the wrapped.\n\t * @param {ASTNode} node A node which is leaving.\n\t * @returns {void}\n\t */\n\tleaveNode(node) {\n\t\tthis.currentNode = node;\n\n\t\t/*\n\t\t * Updates the code path.\n\t\t * And emits onCodePathStart/onCodePathSegmentStart events.\n\t\t */\n\t\tprocessCodePathToExit(this, node);\n\n\t\t// Emits node events.\n\t\tthis.original.leaveNode(node);\n\n\t\t// Emits the last onCodePathStart/onCodePathSegmentStart events.\n\t\tpostprocess(this, node);\n\n\t\tthis.currentNode = null;\n\t}\n\n\t/**\n\t * This is called on a code path looped.\n\t * Then this raises a looped event.\n\t * @param {CodePathSegment} fromSegment A segment of prev.\n\t * @param {CodePathSegment} toSegment A segment of next.\n\t * @returns {void}\n\t */\n\tonLooped(fromSegment, toSegment) {\n\t\tif (fromSegment.reachable && toSegment.reachable) {\n\t\t\tdebug.dump(\n\t\t\t\t`onCodePathSegmentLoop ${fromSegment.id} -> ${toSegment.id}`,\n\t\t\t);\n\t\t\tthis.emit(\"onCodePathSegmentLoop\", [\n\t\t\t\tfromSegment,\n\t\t\t\ttoSegment,\n\t\t\t\tthis.currentNode,\n\t\t\t]);\n\t\t}\n\t}\n}\n\nmodule.exports = CodePathAnalyzer;\n", "// Generated by LiveScript 1.6.0\nvar apply, curry, flip, fix, over, memoize, toString$ = {}.toString;\napply = curry$(function(f, list){\n  return f.apply(null, list);\n});\ncurry = function(f){\n  return curry$(f);\n};\nflip = curry$(function(f, x, y){\n  return f(y, x);\n});\nfix = function(f){\n  return function(g){\n    return function(){\n      return f(g(g)).apply(null, arguments);\n    };\n  }(function(g){\n    return function(){\n      return f(g(g)).apply(null, arguments);\n    };\n  });\n};\nover = curry$(function(f, g, x, y){\n  return f(g(x), g(y));\n});\nmemoize = function(f){\n  var memo;\n  memo = {};\n  return function(){\n    var args, res$, i$, to$, key, arg;\n    res$ = [];\n    for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) {\n      res$.push(arguments[i$]);\n    }\n    args = res$;\n    key = (function(){\n      var i$, ref$, len$, results$ = [];\n      for (i$ = 0, len$ = (ref$ = args).length; i$ < len$; ++i$) {\n        arg = ref$[i$];\n        results$.push(arg + toString$.call(arg).slice(8, -1));\n      }\n      return results$;\n    }()).join('');\n    return memo[key] = key in memo\n      ? memo[key]\n      : f.apply(null, args);\n  };\n};\nmodule.exports = {\n  curry: curry,\n  flip: flip,\n  fix: fix,\n  apply: apply,\n  over: over,\n  memoize: memoize\n};\nfunction curry$(f, bound){\n  var context,\n  _curry = function(args) {\n    return f.length > 1 ? function(){\n      var params = args ? args.concat() : [];\n      context = bound ? context || this : this;\n      return params.push.apply(params, arguments) <\n          f.length && arguments.length ?\n        _curry.call(context, params) : f.apply(context, params);\n    } : f;\n  };\n  return _curry();\n}", "// Generated by LiveScript 1.6.0\nvar each, map, compact, filter, reject, remove, partition, find, head, first, tail, last, initial, empty, reverse, unique, uniqueBy, fold, foldl, fold1, foldl1, foldr, foldr1, unfoldr, concat, concatMap, flatten, difference, intersection, union, countBy, groupBy, andList, orList, any, all, sort, sortWith, sortBy, sum, product, mean, average, maximum, minimum, maximumBy, minimumBy, scan, scanl, scan1, scanl1, scanr, scanr1, slice, take, drop, splitAt, takeWhile, dropWhile, span, breakList, zip, zipWith, zipAll, zipAllWith, at, elemIndex, elemIndices, findIndex, findIndices, toString$ = {}.toString;\neach = curry$(function(f, xs){\n  var i$, len$, x;\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    f(x);\n  }\n  return xs;\n});\nmap = curry$(function(f, xs){\n  var i$, len$, x, results$ = [];\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    results$.push(f(x));\n  }\n  return results$;\n});\ncompact = function(xs){\n  var i$, len$, x, results$ = [];\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    if (x) {\n      results$.push(x);\n    }\n  }\n  return results$;\n};\nfilter = curry$(function(f, xs){\n  var i$, len$, x, results$ = [];\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    if (f(x)) {\n      results$.push(x);\n    }\n  }\n  return results$;\n});\nreject = curry$(function(f, xs){\n  var i$, len$, x, results$ = [];\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    if (!f(x)) {\n      results$.push(x);\n    }\n  }\n  return results$;\n});\nremove = curry$(function(el, xs){\n  var i, x$;\n  i = elemIndex(el, xs);\n  x$ = xs.slice();\n  if (i != null) {\n    x$.splice(i, 1);\n  }\n  return x$;\n});\npartition = curry$(function(f, xs){\n  var passed, failed, i$, len$, x;\n  passed = [];\n  failed = [];\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    (f(x) ? passed : failed).push(x);\n  }\n  return [passed, failed];\n});\nfind = curry$(function(f, xs){\n  var i$, len$, x;\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    if (f(x)) {\n      return x;\n    }\n  }\n});\nhead = first = function(xs){\n  return xs[0];\n};\ntail = function(xs){\n  if (!xs.length) {\n    return;\n  }\n  return xs.slice(1);\n};\nlast = function(xs){\n  return xs[xs.length - 1];\n};\ninitial = function(xs){\n  if (!xs.length) {\n    return;\n  }\n  return xs.slice(0, -1);\n};\nempty = function(xs){\n  return !xs.length;\n};\nreverse = function(xs){\n  return xs.concat().reverse();\n};\nunique = function(xs){\n  var result, i$, len$, x;\n  result = [];\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    if (!in$(x, result)) {\n      result.push(x);\n    }\n  }\n  return result;\n};\nuniqueBy = curry$(function(f, xs){\n  var seen, i$, len$, x, val, results$ = [];\n  seen = [];\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    val = f(x);\n    if (in$(val, seen)) {\n      continue;\n    }\n    seen.push(val);\n    results$.push(x);\n  }\n  return results$;\n});\nfold = foldl = curry$(function(f, memo, xs){\n  var i$, len$, x;\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    memo = f(memo, x);\n  }\n  return memo;\n});\nfold1 = foldl1 = curry$(function(f, xs){\n  return fold(f, xs[0], xs.slice(1));\n});\nfoldr = curry$(function(f, memo, xs){\n  var i$, x;\n  for (i$ = xs.length - 1; i$ >= 0; --i$) {\n    x = xs[i$];\n    memo = f(x, memo);\n  }\n  return memo;\n});\nfoldr1 = curry$(function(f, xs){\n  return foldr(f, xs[xs.length - 1], xs.slice(0, -1));\n});\nunfoldr = curry$(function(f, b){\n  var result, x, that;\n  result = [];\n  x = b;\n  while ((that = f(x)) != null) {\n    result.push(that[0]);\n    x = that[1];\n  }\n  return result;\n});\nconcat = function(xss){\n  return [].concat.apply([], xss);\n};\nconcatMap = curry$(function(f, xs){\n  var x;\n  return [].concat.apply([], (function(){\n    var i$, ref$, len$, results$ = [];\n    for (i$ = 0, len$ = (ref$ = xs).length; i$ < len$; ++i$) {\n      x = ref$[i$];\n      results$.push(f(x));\n    }\n    return results$;\n  }()));\n});\nflatten = function(xs){\n  var x;\n  return [].concat.apply([], (function(){\n    var i$, ref$, len$, results$ = [];\n    for (i$ = 0, len$ = (ref$ = xs).length; i$ < len$; ++i$) {\n      x = ref$[i$];\n      if (toString$.call(x).slice(8, -1) === 'Array') {\n        results$.push(flatten(x));\n      } else {\n        results$.push(x);\n      }\n    }\n    return results$;\n  }()));\n};\ndifference = function(xs){\n  var yss, res$, i$, to$, results, len$, x, j$, len1$, ys;\n  res$ = [];\n  for (i$ = 1, to$ = arguments.length; i$ < to$; ++i$) {\n    res$.push(arguments[i$]);\n  }\n  yss = res$;\n  results = [];\n  outer: for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    for (j$ = 0, len1$ = yss.length; j$ < len1$; ++j$) {\n      ys = yss[j$];\n      if (in$(x, ys)) {\n        continue outer;\n      }\n    }\n    results.push(x);\n  }\n  return results;\n};\nintersection = function(xs){\n  var yss, res$, i$, to$, results, len$, x, j$, len1$, ys;\n  res$ = [];\n  for (i$ = 1, to$ = arguments.length; i$ < to$; ++i$) {\n    res$.push(arguments[i$]);\n  }\n  yss = res$;\n  results = [];\n  outer: for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    for (j$ = 0, len1$ = yss.length; j$ < len1$; ++j$) {\n      ys = yss[j$];\n      if (!in$(x, ys)) {\n        continue outer;\n      }\n    }\n    results.push(x);\n  }\n  return results;\n};\nunion = function(){\n  var xss, res$, i$, to$, results, len$, xs, j$, len1$, x;\n  res$ = [];\n  for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) {\n    res$.push(arguments[i$]);\n  }\n  xss = res$;\n  results = [];\n  for (i$ = 0, len$ = xss.length; i$ < len$; ++i$) {\n    xs = xss[i$];\n    for (j$ = 0, len1$ = xs.length; j$ < len1$; ++j$) {\n      x = xs[j$];\n      if (!in$(x, results)) {\n        results.push(x);\n      }\n    }\n  }\n  return results;\n};\ncountBy = curry$(function(f, xs){\n  var results, i$, len$, x, key;\n  results = {};\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    key = f(x);\n    if (key in results) {\n      results[key] += 1;\n    } else {\n      results[key] = 1;\n    }\n  }\n  return results;\n});\ngroupBy = curry$(function(f, xs){\n  var results, i$, len$, x, key;\n  results = {};\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    key = f(x);\n    if (key in results) {\n      results[key].push(x);\n    } else {\n      results[key] = [x];\n    }\n  }\n  return results;\n});\nandList = function(xs){\n  var i$, len$, x;\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    if (!x) {\n      return false;\n    }\n  }\n  return true;\n};\norList = function(xs){\n  var i$, len$, x;\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    if (x) {\n      return true;\n    }\n  }\n  return false;\n};\nany = curry$(function(f, xs){\n  var i$, len$, x;\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    if (f(x)) {\n      return true;\n    }\n  }\n  return false;\n});\nall = curry$(function(f, xs){\n  var i$, len$, x;\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    if (!f(x)) {\n      return false;\n    }\n  }\n  return true;\n});\nsort = function(xs){\n  return xs.concat().sort(function(x, y){\n    if (x > y) {\n      return 1;\n    } else if (x < y) {\n      return -1;\n    } else {\n      return 0;\n    }\n  });\n};\nsortWith = curry$(function(f, xs){\n  return xs.concat().sort(f);\n});\nsortBy = curry$(function(f, xs){\n  return xs.concat().sort(function(x, y){\n    if (f(x) > f(y)) {\n      return 1;\n    } else if (f(x) < f(y)) {\n      return -1;\n    } else {\n      return 0;\n    }\n  });\n});\nsum = function(xs){\n  var result, i$, len$, x;\n  result = 0;\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    result += x;\n  }\n  return result;\n};\nproduct = function(xs){\n  var result, i$, len$, x;\n  result = 1;\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    result *= x;\n  }\n  return result;\n};\nmean = average = function(xs){\n  var sum, i$, len$, x;\n  sum = 0;\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    x = xs[i$];\n    sum += x;\n  }\n  return sum / xs.length;\n};\nmaximum = function(xs){\n  var max, i$, ref$, len$, x;\n  max = xs[0];\n  for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) {\n    x = ref$[i$];\n    if (x > max) {\n      max = x;\n    }\n  }\n  return max;\n};\nminimum = function(xs){\n  var min, i$, ref$, len$, x;\n  min = xs[0];\n  for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) {\n    x = ref$[i$];\n    if (x < min) {\n      min = x;\n    }\n  }\n  return min;\n};\nmaximumBy = curry$(function(f, xs){\n  var max, i$, ref$, len$, x;\n  max = xs[0];\n  for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) {\n    x = ref$[i$];\n    if (f(x) > f(max)) {\n      max = x;\n    }\n  }\n  return max;\n});\nminimumBy = curry$(function(f, xs){\n  var min, i$, ref$, len$, x;\n  min = xs[0];\n  for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) {\n    x = ref$[i$];\n    if (f(x) < f(min)) {\n      min = x;\n    }\n  }\n  return min;\n});\nscan = scanl = curry$(function(f, memo, xs){\n  var last, x;\n  last = memo;\n  return [memo].concat((function(){\n    var i$, ref$, len$, results$ = [];\n    for (i$ = 0, len$ = (ref$ = xs).length; i$ < len$; ++i$) {\n      x = ref$[i$];\n      results$.push(last = f(last, x));\n    }\n    return results$;\n  }()));\n});\nscan1 = scanl1 = curry$(function(f, xs){\n  if (!xs.length) {\n    return;\n  }\n  return scan(f, xs[0], xs.slice(1));\n});\nscanr = curry$(function(f, memo, xs){\n  xs = xs.concat().reverse();\n  return scan(f, memo, xs).reverse();\n});\nscanr1 = curry$(function(f, xs){\n  if (!xs.length) {\n    return;\n  }\n  xs = xs.concat().reverse();\n  return scan(f, xs[0], xs.slice(1)).reverse();\n});\nslice = curry$(function(x, y, xs){\n  return xs.slice(x, y);\n});\ntake = curry$(function(n, xs){\n  if (n <= 0) {\n    return xs.slice(0, 0);\n  } else {\n    return xs.slice(0, n);\n  }\n});\ndrop = curry$(function(n, xs){\n  if (n <= 0) {\n    return xs;\n  } else {\n    return xs.slice(n);\n  }\n});\nsplitAt = curry$(function(n, xs){\n  return [take(n, xs), drop(n, xs)];\n});\ntakeWhile = curry$(function(p, xs){\n  var len, i;\n  len = xs.length;\n  if (!len) {\n    return xs;\n  }\n  i = 0;\n  while (i < len && p(xs[i])) {\n    i += 1;\n  }\n  return xs.slice(0, i);\n});\ndropWhile = curry$(function(p, xs){\n  var len, i;\n  len = xs.length;\n  if (!len) {\n    return xs;\n  }\n  i = 0;\n  while (i < len && p(xs[i])) {\n    i += 1;\n  }\n  return xs.slice(i);\n});\nspan = curry$(function(p, xs){\n  return [takeWhile(p, xs), dropWhile(p, xs)];\n});\nbreakList = curry$(function(p, xs){\n  return span(compose$(p, not$), xs);\n});\nzip = curry$(function(xs, ys){\n  var result, len, i$, len$, i, x;\n  result = [];\n  len = ys.length;\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    i = i$;\n    x = xs[i$];\n    if (i === len) {\n      break;\n    }\n    result.push([x, ys[i]]);\n  }\n  return result;\n});\nzipWith = curry$(function(f, xs, ys){\n  var result, len, i$, len$, i, x;\n  result = [];\n  len = ys.length;\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    i = i$;\n    x = xs[i$];\n    if (i === len) {\n      break;\n    }\n    result.push(f(x, ys[i]));\n  }\n  return result;\n});\nzipAll = function(){\n  var xss, res$, i$, to$, minLength, len$, xs, ref$, i, lresult$, j$, results$ = [];\n  res$ = [];\n  for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) {\n    res$.push(arguments[i$]);\n  }\n  xss = res$;\n  minLength = undefined;\n  for (i$ = 0, len$ = xss.length; i$ < len$; ++i$) {\n    xs = xss[i$];\n    minLength <= (ref$ = xs.length) || (minLength = ref$);\n  }\n  for (i$ = 0; i$ < minLength; ++i$) {\n    i = i$;\n    lresult$ = [];\n    for (j$ = 0, len$ = xss.length; j$ < len$; ++j$) {\n      xs = xss[j$];\n      lresult$.push(xs[i]);\n    }\n    results$.push(lresult$);\n  }\n  return results$;\n};\nzipAllWith = function(f){\n  var xss, res$, i$, to$, minLength, len$, xs, ref$, i, results$ = [];\n  res$ = [];\n  for (i$ = 1, to$ = arguments.length; i$ < to$; ++i$) {\n    res$.push(arguments[i$]);\n  }\n  xss = res$;\n  minLength = undefined;\n  for (i$ = 0, len$ = xss.length; i$ < len$; ++i$) {\n    xs = xss[i$];\n    minLength <= (ref$ = xs.length) || (minLength = ref$);\n  }\n  for (i$ = 0; i$ < minLength; ++i$) {\n    i = i$;\n    results$.push(f.apply(null, (fn$())));\n  }\n  return results$;\n  function fn$(){\n    var i$, ref$, len$, results$ = [];\n    for (i$ = 0, len$ = (ref$ = xss).length; i$ < len$; ++i$) {\n      xs = ref$[i$];\n      results$.push(xs[i]);\n    }\n    return results$;\n  }\n};\nat = curry$(function(n, xs){\n  if (n < 0) {\n    return xs[xs.length + n];\n  } else {\n    return xs[n];\n  }\n});\nelemIndex = curry$(function(el, xs){\n  var i$, len$, i, x;\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    i = i$;\n    x = xs[i$];\n    if (x === el) {\n      return i;\n    }\n  }\n});\nelemIndices = curry$(function(el, xs){\n  var i$, len$, i, x, results$ = [];\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    i = i$;\n    x = xs[i$];\n    if (x === el) {\n      results$.push(i);\n    }\n  }\n  return results$;\n});\nfindIndex = curry$(function(f, xs){\n  var i$, len$, i, x;\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    i = i$;\n    x = xs[i$];\n    if (f(x)) {\n      return i;\n    }\n  }\n});\nfindIndices = curry$(function(f, xs){\n  var i$, len$, i, x, results$ = [];\n  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {\n    i = i$;\n    x = xs[i$];\n    if (f(x)) {\n      results$.push(i);\n    }\n  }\n  return results$;\n});\nmodule.exports = {\n  each: each,\n  map: map,\n  filter: filter,\n  compact: compact,\n  reject: reject,\n  remove: remove,\n  partition: partition,\n  find: find,\n  head: head,\n  first: first,\n  tail: tail,\n  last: last,\n  initial: initial,\n  empty: empty,\n  reverse: reverse,\n  difference: difference,\n  intersection: intersection,\n  union: union,\n  countBy: countBy,\n  groupBy: groupBy,\n  fold: fold,\n  fold1: fold1,\n  foldl: foldl,\n  foldl1: foldl1,\n  foldr: foldr,\n  foldr1: foldr1,\n  unfoldr: unfoldr,\n  andList: andList,\n  orList: orList,\n  any: any,\n  all: all,\n  unique: unique,\n  uniqueBy: uniqueBy,\n  sort: sort,\n  sortWith: sortWith,\n  sortBy: sortBy,\n  sum: sum,\n  product: product,\n  mean: mean,\n  average: average,\n  concat: concat,\n  concatMap: concatMap,\n  flatten: flatten,\n  maximum: maximum,\n  minimum: minimum,\n  maximumBy: maximumBy,\n  minimumBy: minimumBy,\n  scan: scan,\n  scan1: scan1,\n  scanl: scanl,\n  scanl1: scanl1,\n  scanr: scanr,\n  scanr1: scanr1,\n  slice: slice,\n  take: take,\n  drop: drop,\n  splitAt: splitAt,\n  takeWhile: takeWhile,\n  dropWhile: dropWhile,\n  span: span,\n  breakList: breakList,\n  zip: zip,\n  zipWith: zipWith,\n  zipAll: zipAll,\n  zipAllWith: zipAllWith,\n  at: at,\n  elemIndex: elemIndex,\n  elemIndices: elemIndices,\n  findIndex: findIndex,\n  findIndices: findIndices\n};\nfunction curry$(f, bound){\n  var context,\n  _curry = function(args) {\n    return f.length > 1 ? function(){\n      var params = args ? args.concat() : [];\n      context = bound ? context || this : this;\n      return params.push.apply(params, arguments) <\n          f.length && arguments.length ?\n        _curry.call(context, params) : f.apply(context, params);\n    } : f;\n  };\n  return _curry();\n}\nfunction in$(x, xs){\n  var i = -1, l = xs.length >>> 0;\n  while (++i < l) if (x === xs[i]) return true;\n  return false;\n}\nfunction compose$() {\n  var functions = arguments;\n  return function() {\n    var i, result;\n    result = functions[0].apply(this, arguments);\n    for (i = 1; i < functions.length; ++i) {\n      result = functions[i](result);\n    }\n    return result;\n  };\n}\nfunction not$(x){ return !x; }", "// Generated by LiveScript 1.6.0\nvar values, keys, pairsToObj, objToPairs, listsToObj, objToLists, empty, each, map, compact, filter, reject, partition, find;\nvalues = function(object){\n  var i$, x, results$ = [];\n  for (i$ in object) {\n    x = object[i$];\n    results$.push(x);\n  }\n  return results$;\n};\nkeys = function(object){\n  var x, results$ = [];\n  for (x in object) {\n    results$.push(x);\n  }\n  return results$;\n};\npairsToObj = function(object){\n  var i$, len$, x, resultObj$ = {};\n  for (i$ = 0, len$ = object.length; i$ < len$; ++i$) {\n    x = object[i$];\n    resultObj$[x[0]] = x[1];\n  }\n  return resultObj$;\n};\nobjToPairs = function(object){\n  var key, value, results$ = [];\n  for (key in object) {\n    value = object[key];\n    results$.push([key, value]);\n  }\n  return results$;\n};\nlistsToObj = curry$(function(keys, values){\n  var i$, len$, i, key, resultObj$ = {};\n  for (i$ = 0, len$ = keys.length; i$ < len$; ++i$) {\n    i = i$;\n    key = keys[i$];\n    resultObj$[key] = values[i];\n  }\n  return resultObj$;\n});\nobjToLists = function(object){\n  var keys, values, key, value;\n  keys = [];\n  values = [];\n  for (key in object) {\n    value = object[key];\n    keys.push(key);\n    values.push(value);\n  }\n  return [keys, values];\n};\nempty = function(object){\n  var x;\n  for (x in object) {\n    return false;\n  }\n  return true;\n};\neach = curry$(function(f, object){\n  var i$, x;\n  for (i$ in object) {\n    x = object[i$];\n    f(x);\n  }\n  return object;\n});\nmap = curry$(function(f, object){\n  var k, x, resultObj$ = {};\n  for (k in object) {\n    x = object[k];\n    resultObj$[k] = f(x);\n  }\n  return resultObj$;\n});\ncompact = function(object){\n  var k, x, resultObj$ = {};\n  for (k in object) {\n    x = object[k];\n    if (x) {\n      resultObj$[k] = x;\n    }\n  }\n  return resultObj$;\n};\nfilter = curry$(function(f, object){\n  var k, x, resultObj$ = {};\n  for (k in object) {\n    x = object[k];\n    if (f(x)) {\n      resultObj$[k] = x;\n    }\n  }\n  return resultObj$;\n});\nreject = curry$(function(f, object){\n  var k, x, resultObj$ = {};\n  for (k in object) {\n    x = object[k];\n    if (!f(x)) {\n      resultObj$[k] = x;\n    }\n  }\n  return resultObj$;\n});\npartition = curry$(function(f, object){\n  var passed, failed, k, x;\n  passed = {};\n  failed = {};\n  for (k in object) {\n    x = object[k];\n    (f(x) ? passed : failed)[k] = x;\n  }\n  return [passed, failed];\n});\nfind = curry$(function(f, object){\n  var i$, x;\n  for (i$ in object) {\n    x = object[i$];\n    if (f(x)) {\n      return x;\n    }\n  }\n});\nmodule.exports = {\n  values: values,\n  keys: keys,\n  pairsToObj: pairsToObj,\n  objToPairs: objToPairs,\n  listsToObj: listsToObj,\n  objToLists: objToLists,\n  empty: empty,\n  each: each,\n  map: map,\n  filter: filter,\n  compact: compact,\n  reject: reject,\n  partition: partition,\n  find: find\n};\nfunction curry$(f, bound){\n  var context,\n  _curry = function(args) {\n    return f.length > 1 ? function(){\n      var params = args ? args.concat() : [];\n      context = bound ? context || this : this;\n      return params.push.apply(params, arguments) <\n          f.length && arguments.length ?\n        _curry.call(context, params) : f.apply(context, params);\n    } : f;\n  };\n  return _curry();\n}", "// Generated by LiveScript 1.6.0\nvar split, join, lines, unlines, words, unwords, chars, unchars, reverse, repeat, capitalize, camelize, dasherize;\nsplit = curry$(function(sep, str){\n  return str.split(sep);\n});\njoin = curry$(function(sep, xs){\n  return xs.join(sep);\n});\nlines = function(str){\n  if (!str.length) {\n    return [];\n  }\n  return str.split('\\n');\n};\nunlines = function(it){\n  return it.join('\\n');\n};\nwords = function(str){\n  if (!str.length) {\n    return [];\n  }\n  return str.split(/[ ]+/);\n};\nunwords = function(it){\n  return it.join(' ');\n};\nchars = function(it){\n  return it.split('');\n};\nunchars = function(it){\n  return it.join('');\n};\nreverse = function(str){\n  return str.split('').reverse().join('');\n};\nrepeat = curry$(function(n, str){\n  var result, i$;\n  result = '';\n  for (i$ = 0; i$ < n; ++i$) {\n    result += str;\n  }\n  return result;\n});\ncapitalize = function(str){\n  return str.charAt(0).toUpperCase() + str.slice(1);\n};\ncamelize = function(it){\n  return it.replace(/[-_]+(.)?/g, function(arg$, c){\n    return (c != null ? c : '').toUpperCase();\n  });\n};\ndasherize = function(str){\n  return str.replace(/([^-A-Z])([A-Z]+)/g, function(arg$, lower, upper){\n    return lower + \"-\" + (upper.length > 1\n      ? upper\n      : upper.toLowerCase());\n  }).replace(/^([A-Z]+)/, function(arg$, upper){\n    if (upper.length > 1) {\n      return upper + \"-\";\n    } else {\n      return upper.toLowerCase();\n    }\n  });\n};\nmodule.exports = {\n  split: split,\n  join: join,\n  lines: lines,\n  unlines: unlines,\n  words: words,\n  unwords: unwords,\n  chars: chars,\n  unchars: unchars,\n  reverse: reverse,\n  repeat: repeat,\n  capitalize: capitalize,\n  camelize: camelize,\n  dasherize: dasherize\n};\nfunction curry$(f, bound){\n  var context,\n  _curry = function(args) {\n    return f.length > 1 ? function(){\n      var params = args ? args.concat() : [];\n      context = bound ? context || this : this;\n      return params.push.apply(params, arguments) <\n          f.length && arguments.length ?\n        _curry.call(context, params) : f.apply(context, params);\n    } : f;\n  };\n  return _curry();\n}", "// Generated by LiveScript 1.6.0\nvar max, min, negate, abs, signum, quot, rem, div, mod, recip, pi, tau, exp, sqrt, ln, pow, sin, tan, cos, asin, acos, atan, atan2, truncate, round, ceiling, floor, isItNaN, even, odd, gcd, lcm;\nmax = curry$(function(x$, y$){\n  return x$ > y$ ? x$ : y$;\n});\nmin = curry$(function(x$, y$){\n  return x$ < y$ ? x$ : y$;\n});\nnegate = function(x){\n  return -x;\n};\nabs = Math.abs;\nsignum = function(x){\n  if (x < 0) {\n    return -1;\n  } else if (x > 0) {\n    return 1;\n  } else {\n    return 0;\n  }\n};\nquot = curry$(function(x, y){\n  return ~~(x / y);\n});\nrem = curry$(function(x$, y$){\n  return x$ % y$;\n});\ndiv = curry$(function(x, y){\n  return Math.floor(x / y);\n});\nmod = curry$(function(x$, y$){\n  var ref$;\n  return ((x$) % (ref$ = y$) + ref$) % ref$;\n});\nrecip = (function(it){\n  return 1 / it;\n});\npi = Math.PI;\ntau = pi * 2;\nexp = Math.exp;\nsqrt = Math.sqrt;\nln = Math.log;\npow = curry$(function(x$, y$){\n  return Math.pow(x$, y$);\n});\nsin = Math.sin;\ntan = Math.tan;\ncos = Math.cos;\nasin = Math.asin;\nacos = Math.acos;\natan = Math.atan;\natan2 = curry$(function(x, y){\n  return Math.atan2(x, y);\n});\ntruncate = function(x){\n  return ~~x;\n};\nround = Math.round;\nceiling = Math.ceil;\nfloor = Math.floor;\nisItNaN = function(x){\n  return x !== x;\n};\neven = function(x){\n  return x % 2 === 0;\n};\nodd = function(x){\n  return x % 2 !== 0;\n};\ngcd = curry$(function(x, y){\n  var z;\n  x = Math.abs(x);\n  y = Math.abs(y);\n  while (y !== 0) {\n    z = x % y;\n    x = y;\n    y = z;\n  }\n  return x;\n});\nlcm = curry$(function(x, y){\n  return Math.abs(Math.floor(x / gcd(x, y) * y));\n});\nmodule.exports = {\n  max: max,\n  min: min,\n  negate: negate,\n  abs: abs,\n  signum: signum,\n  quot: quot,\n  rem: rem,\n  div: div,\n  mod: mod,\n  recip: recip,\n  pi: pi,\n  tau: tau,\n  exp: exp,\n  sqrt: sqrt,\n  ln: ln,\n  pow: pow,\n  sin: sin,\n  tan: tan,\n  cos: cos,\n  acos: acos,\n  asin: asin,\n  atan: atan,\n  atan2: atan2,\n  truncate: truncate,\n  round: round,\n  ceiling: ceiling,\n  floor: floor,\n  isItNaN: isItNaN,\n  even: even,\n  odd: odd,\n  gcd: gcd,\n  lcm: lcm\n};\nfunction curry$(f, bound){\n  var context,\n  _curry = function(args) {\n    return f.length > 1 ? function(){\n      var params = args ? args.concat() : [];\n      context = bound ? context || this : this;\n      return params.push.apply(params, arguments) <\n          f.length && arguments.length ?\n        _curry.call(context, params) : f.apply(context, params);\n    } : f;\n  };\n  return _curry();\n}", "// Generated by LiveScript 1.6.0\nvar Func, List, Obj, Str, Num, id, isType, replicate, prelude, toString$ = {}.toString;\nFunc = require('./Func.js');\nList = require('./List.js');\nObj = require('./Obj.js');\nStr = require('./Str.js');\nNum = require('./Num.js');\nid = function(x){\n  return x;\n};\nisType = curry$(function(type, x){\n  return toString$.call(x).slice(8, -1) === type;\n});\nreplicate = curry$(function(n, x){\n  var i$, results$ = [];\n  for (i$ = 0; i$ < n; ++i$) {\n    results$.push(x);\n  }\n  return results$;\n});\nStr.empty = List.empty;\nStr.slice = List.slice;\nStr.take = List.take;\nStr.drop = List.drop;\nStr.splitAt = List.splitAt;\nStr.takeWhile = List.takeWhile;\nStr.dropWhile = List.dropWhile;\nStr.span = List.span;\nStr.breakStr = List.breakList;\nprelude = {\n  Func: Func,\n  List: List,\n  Obj: Obj,\n  Str: Str,\n  Num: Num,\n  id: id,\n  isType: isType,\n  replicate: replicate\n};\nprelude.each = List.each;\nprelude.map = List.map;\nprelude.filter = List.filter;\nprelude.compact = List.compact;\nprelude.reject = List.reject;\nprelude.partition = List.partition;\nprelude.find = List.find;\nprelude.head = List.head;\nprelude.first = List.first;\nprelude.tail = List.tail;\nprelude.last = List.last;\nprelude.initial = List.initial;\nprelude.empty = List.empty;\nprelude.reverse = List.reverse;\nprelude.difference = List.difference;\nprelude.intersection = List.intersection;\nprelude.union = List.union;\nprelude.countBy = List.countBy;\nprelude.groupBy = List.groupBy;\nprelude.fold = List.fold;\nprelude.foldl = List.foldl;\nprelude.fold1 = List.fold1;\nprelude.foldl1 = List.foldl1;\nprelude.foldr = List.foldr;\nprelude.foldr1 = List.foldr1;\nprelude.unfoldr = List.unfoldr;\nprelude.andList = List.andList;\nprelude.orList = List.orList;\nprelude.any = List.any;\nprelude.all = List.all;\nprelude.unique = List.unique;\nprelude.uniqueBy = List.uniqueBy;\nprelude.sort = List.sort;\nprelude.sortWith = List.sortWith;\nprelude.sortBy = List.sortBy;\nprelude.sum = List.sum;\nprelude.product = List.product;\nprelude.mean = List.mean;\nprelude.average = List.average;\nprelude.concat = List.concat;\nprelude.concatMap = List.concatMap;\nprelude.flatten = List.flatten;\nprelude.maximum = List.maximum;\nprelude.minimum = List.minimum;\nprelude.maximumBy = List.maximumBy;\nprelude.minimumBy = List.minimumBy;\nprelude.scan = List.scan;\nprelude.scanl = List.scanl;\nprelude.scan1 = List.scan1;\nprelude.scanl1 = List.scanl1;\nprelude.scanr = List.scanr;\nprelude.scanr1 = List.scanr1;\nprelude.slice = List.slice;\nprelude.take = List.take;\nprelude.drop = List.drop;\nprelude.splitAt = List.splitAt;\nprelude.takeWhile = List.takeWhile;\nprelude.dropWhile = List.dropWhile;\nprelude.span = List.span;\nprelude.breakList = List.breakList;\nprelude.zip = List.zip;\nprelude.zipWith = List.zipWith;\nprelude.zipAll = List.zipAll;\nprelude.zipAllWith = List.zipAllWith;\nprelude.at = List.at;\nprelude.elemIndex = List.elemIndex;\nprelude.elemIndices = List.elemIndices;\nprelude.findIndex = List.findIndex;\nprelude.findIndices = List.findIndices;\nprelude.apply = Func.apply;\nprelude.curry = Func.curry;\nprelude.flip = Func.flip;\nprelude.fix = Func.fix;\nprelude.over = Func.over;\nprelude.split = Str.split;\nprelude.join = Str.join;\nprelude.lines = Str.lines;\nprelude.unlines = Str.unlines;\nprelude.words = Str.words;\nprelude.unwords = Str.unwords;\nprelude.chars = Str.chars;\nprelude.unchars = Str.unchars;\nprelude.repeat = Str.repeat;\nprelude.capitalize = Str.capitalize;\nprelude.camelize = Str.camelize;\nprelude.dasherize = Str.dasherize;\nprelude.values = Obj.values;\nprelude.keys = Obj.keys;\nprelude.pairsToObj = Obj.pairsToObj;\nprelude.objToPairs = Obj.objToPairs;\nprelude.listsToObj = Obj.listsToObj;\nprelude.objToLists = Obj.objToLists;\nprelude.max = Num.max;\nprelude.min = Num.min;\nprelude.negate = Num.negate;\nprelude.abs = Num.abs;\nprelude.signum = Num.signum;\nprelude.quot = Num.quot;\nprelude.rem = Num.rem;\nprelude.div = Num.div;\nprelude.mod = Num.mod;\nprelude.recip = Num.recip;\nprelude.pi = Num.pi;\nprelude.tau = Num.tau;\nprelude.exp = Num.exp;\nprelude.sqrt = Num.sqrt;\nprelude.ln = Num.ln;\nprelude.pow = Num.pow;\nprelude.sin = Num.sin;\nprelude.tan = Num.tan;\nprelude.cos = Num.cos;\nprelude.acos = Num.acos;\nprelude.asin = Num.asin;\nprelude.atan = Num.atan;\nprelude.atan2 = Num.atan2;\nprelude.truncate = Num.truncate;\nprelude.round = Num.round;\nprelude.ceiling = Num.ceiling;\nprelude.floor = Num.floor;\nprelude.isItNaN = Num.isItNaN;\nprelude.even = Num.even;\nprelude.odd = Num.odd;\nprelude.gcd = Num.gcd;\nprelude.lcm = Num.lcm;\nprelude.VERSION = '1.2.1';\nmodule.exports = prelude;\nfunction curry$(f, bound){\n  var context,\n  _curry = function(args) {\n    return f.length > 1 ? function(){\n      var params = args ? args.concat() : [];\n      context = bound ? context || this : this;\n      return params.push.apply(params, arguments) <\n          f.length && arguments.length ?\n        _curry.call(context, params) : f.apply(context, params);\n    } : f;\n  };\n  return _curry();\n}", "// Generated by LiveScript 1.6.0\n(function(){\n  var reject, special, tokenRegex;\n  reject = require('prelude-ls').reject;\n  function consumeOp(tokens, op){\n    if (tokens[0] === op) {\n      return tokens.shift();\n    } else {\n      throw new Error(\"Expected '\" + op + \"', but got '\" + tokens[0] + \"' instead in \" + JSON.stringify(tokens) + \".\");\n    }\n  }\n  function maybeConsumeOp(tokens, op){\n    if (tokens[0] === op) {\n      return tokens.shift();\n    }\n  }\n  function consumeList(tokens, arg$, hasDelimiters){\n    var open, close, result, untilTest;\n    open = arg$[0], close = arg$[1];\n    if (hasDelimiters) {\n      consumeOp(tokens, open);\n    }\n    result = [];\n    untilTest = \",\" + (hasDelimiters ? close : '');\n    while (tokens.length && (hasDelimiters && tokens[0] !== close)) {\n      result.push(consumeElement(tokens, untilTest));\n      maybeConsumeOp(tokens, ',');\n    }\n    if (hasDelimiters) {\n      consumeOp(tokens, close);\n    }\n    return result;\n  }\n  function consumeArray(tokens, hasDelimiters){\n    return consumeList(tokens, ['[', ']'], hasDelimiters);\n  }\n  function consumeTuple(tokens, hasDelimiters){\n    return consumeList(tokens, ['(', ')'], hasDelimiters);\n  }\n  function consumeFields(tokens, hasDelimiters){\n    var result, untilTest, key;\n    if (hasDelimiters) {\n      consumeOp(tokens, '{');\n    }\n    result = {};\n    untilTest = \",\" + (hasDelimiters ? '}' : '');\n    while (tokens.length && (!hasDelimiters || tokens[0] !== '}')) {\n      key = consumeValue(tokens, ':');\n      consumeOp(tokens, ':');\n      result[key] = consumeElement(tokens, untilTest);\n      maybeConsumeOp(tokens, ',');\n    }\n    if (hasDelimiters) {\n      consumeOp(tokens, '}');\n    }\n    return result;\n  }\n  function consumeValue(tokens, untilTest){\n    var out;\n    untilTest == null && (untilTest = '');\n    out = '';\n    while (tokens.length && -1 === untilTest.indexOf(tokens[0])) {\n      out += tokens.shift();\n    }\n    return out;\n  }\n  function consumeElement(tokens, untilTest){\n    switch (tokens[0]) {\n    case '[':\n      return consumeArray(tokens, true);\n    case '(':\n      return consumeTuple(tokens, true);\n    case '{':\n      return consumeFields(tokens, true);\n    default:\n      return consumeValue(tokens, untilTest);\n    }\n  }\n  function consumeTopLevel(tokens, types, options){\n    var ref$, type, structure, origTokens, result, finalResult, x$, y$;\n    ref$ = types[0], type = ref$.type, structure = ref$.structure;\n    origTokens = tokens.concat();\n    if (!options.explicit && types.length === 1 && ((!type && structure) || (type === 'Array' || type === 'Object'))) {\n      result = structure === 'array' || type === 'Array'\n        ? consumeArray(tokens, tokens[0] === '[')\n        : structure === 'tuple'\n          ? consumeTuple(tokens, tokens[0] === '(')\n          : consumeFields(tokens, tokens[0] === '{');\n      finalResult = tokens.length ? consumeElement(structure === 'array' || type === 'Array'\n        ? (x$ = origTokens, x$.unshift('['), x$.push(']'), x$)\n        : (y$ = origTokens, y$.unshift('('), y$.push(')'), y$)) : result;\n    } else {\n      finalResult = consumeElement(tokens);\n    }\n    return finalResult;\n  }\n  special = /\\[\\]\\(\\)}{:,/.source;\n  tokenRegex = RegExp('(\"(?:\\\\\\\\\"|[^\"])*\")|(\\'(?:\\\\\\\\\\'|[^\\'])*\\')|(/(?:\\\\\\\\/|[^/])*/[a-zA-Z]*)|(#.*#)|([' + special + '])|([^\\\\s' + special + '](?:\\\\s*[^\\\\s' + special + ']+)*)|\\\\s*');\n  module.exports = function(types, string, options){\n    var tokens, node;\n    options == null && (options = {});\n    if (!options.explicit && types.length === 1 && types[0].type === 'String') {\n      return string;\n    }\n    tokens = reject(not$, string.split(tokenRegex));\n    node = consumeTopLevel(tokens, types, options);\n    if (!node) {\n      throw new Error(\"Error parsing '\" + string + \"'.\");\n    }\n    return node;\n  };\n  function not$(x){ return !x; }\n}).call(this);\n", "// Generated by LiveScript 1.6.0\n(function(){\n  var identifierRegex, tokenRegex;\n  identifierRegex = /[\\$\\w]+/;\n  function peek(tokens){\n    var token;\n    token = tokens[0];\n    if (token == null) {\n      throw new Error('Unexpected end of input.');\n    }\n    return token;\n  }\n  function consumeIdent(tokens){\n    var token;\n    token = peek(tokens);\n    if (!identifierRegex.test(token)) {\n      throw new Error(\"Expected text, got '\" + token + \"' instead.\");\n    }\n    return tokens.shift();\n  }\n  function consumeOp(tokens, op){\n    var token;\n    token = peek(tokens);\n    if (token !== op) {\n      throw new Error(\"Expected '\" + op + \"', got '\" + token + \"' instead.\");\n    }\n    return tokens.shift();\n  }\n  function maybeConsumeOp(tokens, op){\n    var token;\n    token = tokens[0];\n    if (token === op) {\n      return tokens.shift();\n    } else {\n      return null;\n    }\n  }\n  function consumeArray(tokens){\n    var types;\n    consumeOp(tokens, '[');\n    if (peek(tokens) === ']') {\n      throw new Error(\"Must specify type of Array - eg. [Type], got [] instead.\");\n    }\n    types = consumeTypes(tokens);\n    consumeOp(tokens, ']');\n    return {\n      structure: 'array',\n      of: types\n    };\n  }\n  function consumeTuple(tokens){\n    var components;\n    components = [];\n    consumeOp(tokens, '(');\n    if (peek(tokens) === ')') {\n      throw new Error(\"Tuple must be of at least length 1 - eg. (Type), got () instead.\");\n    }\n    for (;;) {\n      components.push(consumeTypes(tokens));\n      maybeConsumeOp(tokens, ',');\n      if (')' === peek(tokens)) {\n        break;\n      }\n    }\n    consumeOp(tokens, ')');\n    return {\n      structure: 'tuple',\n      of: components\n    };\n  }\n  function consumeFields(tokens){\n    var fields, subset, ref$, key, types;\n    fields = {};\n    consumeOp(tokens, '{');\n    subset = false;\n    for (;;) {\n      if (maybeConsumeOp(tokens, '...')) {\n        subset = true;\n        break;\n      }\n      ref$ = consumeField(tokens), key = ref$[0], types = ref$[1];\n      fields[key] = types;\n      maybeConsumeOp(tokens, ',');\n      if ('}' === peek(tokens)) {\n        break;\n      }\n    }\n    consumeOp(tokens, '}');\n    return {\n      structure: 'fields',\n      of: fields,\n      subset: subset\n    };\n  }\n  function consumeField(tokens){\n    var key, types;\n    key = consumeIdent(tokens);\n    consumeOp(tokens, ':');\n    types = consumeTypes(tokens);\n    return [key, types];\n  }\n  function maybeConsumeStructure(tokens){\n    switch (tokens[0]) {\n    case '[':\n      return consumeArray(tokens);\n    case '(':\n      return consumeTuple(tokens);\n    case '{':\n      return consumeFields(tokens);\n    }\n  }\n  function consumeType(tokens){\n    var token, wildcard, type, structure;\n    token = peek(tokens);\n    wildcard = token === '*';\n    if (wildcard || identifierRegex.test(token)) {\n      type = wildcard\n        ? consumeOp(tokens, '*')\n        : consumeIdent(tokens);\n      structure = maybeConsumeStructure(tokens);\n      if (structure) {\n        return structure.type = type, structure;\n      } else {\n        return {\n          type: type\n        };\n      }\n    } else {\n      structure = maybeConsumeStructure(tokens);\n      if (!structure) {\n        throw new Error(\"Unexpected character: \" + token);\n      }\n      return structure;\n    }\n  }\n  function consumeTypes(tokens){\n    var lookahead, types, typesSoFar, typeObj, type, structure;\n    if ('::' === peek(tokens)) {\n      throw new Error(\"No comment before comment separator '::' found.\");\n    }\n    lookahead = tokens[1];\n    if (lookahead != null && lookahead === '::') {\n      tokens.shift();\n      tokens.shift();\n    }\n    types = [];\n    typesSoFar = {};\n    if ('Maybe' === peek(tokens)) {\n      tokens.shift();\n      types = [\n        {\n          type: 'Undefined'\n        }, {\n          type: 'Null'\n        }\n      ];\n      typesSoFar = {\n        Undefined: true,\n        Null: true\n      };\n    }\n    for (;;) {\n      typeObj = consumeType(tokens), type = typeObj.type, structure = typeObj.structure;\n      if (!typesSoFar[type]) {\n        types.push(typeObj);\n      }\n      if (structure == null) {\n        typesSoFar[type] = true;\n      }\n      if (!maybeConsumeOp(tokens, '|')) {\n        break;\n      }\n    }\n    return types;\n  }\n  tokenRegex = RegExp('\\\\.\\\\.\\\\.|::|->|' + identifierRegex.source + '|\\\\S', 'g');\n  module.exports = function(input){\n    var tokens, e;\n    if (!input.length) {\n      throw new Error('No type specified.');\n    }\n    tokens = input.match(tokenRegex) || [];\n    if (in$('->', tokens)) {\n      throw new Error(\"Function types are not supported.\\ To validate that something is a function, you may use 'Function'.\");\n    }\n    try {\n      return consumeTypes(tokens);\n    } catch (e$) {\n      e = e$;\n      throw new Error(e.message + \" - Remaining tokens: \" + JSON.stringify(tokens) + \" - Initial input: '\" + input + \"'\");\n    }\n  };\n  function in$(x, xs){\n    var i = -1, l = xs.length >>> 0;\n    while (++i < l) if (x === xs[i]) return true;\n    return false;\n  }\n}).call(this);\n", "// Generated by LiveScript 1.6.0\n(function(){\n  var ref$, any, all, isItNaN, types, defaultType, toString$ = {}.toString;\n  ref$ = require('prelude-ls'), any = ref$.any, all = ref$.all, isItNaN = ref$.isItNaN;\n  types = {\n    Number: {\n      typeOf: 'Number',\n      validate: function(it){\n        return !isItNaN(it);\n      }\n    },\n    NaN: {\n      typeOf: 'Number',\n      validate: isItNaN\n    },\n    Int: {\n      typeOf: 'Number',\n      validate: function(it){\n        return !isItNaN(it) && it % 1 === 0;\n      }\n    },\n    Float: {\n      typeOf: 'Number',\n      validate: function(it){\n        return !isItNaN(it);\n      }\n    },\n    Date: {\n      typeOf: 'Date',\n      validate: function(it){\n        return !isItNaN(it.getTime());\n      }\n    }\n  };\n  defaultType = {\n    array: 'Array',\n    tuple: 'Array'\n  };\n  function checkArray(input, type, options){\n    return all(function(it){\n      return checkMultiple(it, type.of, options);\n    }, input);\n  }\n  function checkTuple(input, type, options){\n    var i, i$, ref$, len$, types;\n    i = 0;\n    for (i$ = 0, len$ = (ref$ = type.of).length; i$ < len$; ++i$) {\n      types = ref$[i$];\n      if (!checkMultiple(input[i], types, options)) {\n        return false;\n      }\n      i++;\n    }\n    return input.length <= i;\n  }\n  function checkFields(input, type, options){\n    var inputKeys, numInputKeys, k, numOfKeys, key, ref$, types;\n    inputKeys = {};\n    numInputKeys = 0;\n    for (k in input) {\n      inputKeys[k] = true;\n      numInputKeys++;\n    }\n    numOfKeys = 0;\n    for (key in ref$ = type.of) {\n      types = ref$[key];\n      if (!checkMultiple(input[key], types, options)) {\n        return false;\n      }\n      if (inputKeys[key]) {\n        numOfKeys++;\n      }\n    }\n    return type.subset || numInputKeys === numOfKeys;\n  }\n  function checkStructure(input, type, options){\n    if (!(input instanceof Object)) {\n      return false;\n    }\n    switch (type.structure) {\n    case 'fields':\n      return checkFields(input, type, options);\n    case 'array':\n      return checkArray(input, type, options);\n    case 'tuple':\n      return checkTuple(input, type, options);\n    }\n  }\n  function check(input, typeObj, options){\n    var type, structure, setting, that;\n    type = typeObj.type, structure = typeObj.structure;\n    if (type) {\n      if (type === '*') {\n        return true;\n      }\n      setting = options.customTypes[type] || types[type];\n      if (setting) {\n        return (setting.typeOf === void 8 || setting.typeOf === toString$.call(input).slice(8, -1)) && setting.validate(input);\n      } else {\n        return type === toString$.call(input).slice(8, -1) && (!structure || checkStructure(input, typeObj, options));\n      }\n    } else if (structure) {\n      if (that = defaultType[structure]) {\n        if (that !== toString$.call(input).slice(8, -1)) {\n          return false;\n        }\n      }\n      return checkStructure(input, typeObj, options);\n    } else {\n      throw new Error(\"No type defined. Input: \" + input + \".\");\n    }\n  }\n  function checkMultiple(input, types, options){\n    if (toString$.call(types).slice(8, -1) !== 'Array') {\n      throw new Error(\"Types must be in an array. Input: \" + input + \".\");\n    }\n    return any(function(it){\n      return check(input, it, options);\n    }, types);\n  }\n  module.exports = function(parsedType, input, options){\n    options == null && (options = {});\n    if (options.customTypes == null) {\n      options.customTypes = {};\n    }\n    return checkMultiple(input, parsedType, options);\n  };\n}).call(this);\n", "// Generated by LiveScript 1.6.0\n(function(){\n  var VERSION, parseType, parsedTypeCheck, typeCheck;\n  VERSION = '0.4.0';\n  parseType = require('./parse-type');\n  parsedTypeCheck = require('./check');\n  typeCheck = function(type, input, options){\n    return parsedTypeCheck(parseType(type), input, options);\n  };\n  module.exports = {\n    VERSION: VERSION,\n    typeCheck: typeCheck,\n    parsedTypeCheck: parsedTypeCheck,\n    parseType: parseType\n  };\n}).call(this);\n", "// Generated by LiveScript 1.6.0\n(function(){\n  var parsedTypeCheck, types, toString$ = {}.toString;\n  parsedTypeCheck = require('type-check').parsedTypeCheck;\n  types = {\n    '*': function(value, options){\n      switch (toString$.call(value).slice(8, -1)) {\n      case 'Array':\n        return typeCast(value, {\n          type: 'Array'\n        }, options);\n      case 'Object':\n        return typeCast(value, {\n          type: 'Object'\n        }, options);\n      default:\n        return {\n          type: 'Just',\n          value: typesCast(value, [\n            {\n              type: 'Undefined'\n            }, {\n              type: 'Null'\n            }, {\n              type: 'NaN'\n            }, {\n              type: 'Boolean'\n            }, {\n              type: 'Number'\n            }, {\n              type: 'Date'\n            }, {\n              type: 'RegExp'\n            }, {\n              type: 'Array'\n            }, {\n              type: 'Object'\n            }, {\n              type: 'String'\n            }\n          ], (options.explicit = true, options))\n        };\n      }\n    },\n    Undefined: function(it){\n      if (it === 'undefined' || it === void 8) {\n        return {\n          type: 'Just',\n          value: void 8\n        };\n      } else {\n        return {\n          type: 'Nothing'\n        };\n      }\n    },\n    Null: function(it){\n      if (it === 'null') {\n        return {\n          type: 'Just',\n          value: null\n        };\n      } else {\n        return {\n          type: 'Nothing'\n        };\n      }\n    },\n    NaN: function(it){\n      if (it === 'NaN') {\n        return {\n          type: 'Just',\n          value: NaN\n        };\n      } else {\n        return {\n          type: 'Nothing'\n        };\n      }\n    },\n    Boolean: function(it){\n      if (it === 'true') {\n        return {\n          type: 'Just',\n          value: true\n        };\n      } else if (it === 'false') {\n        return {\n          type: 'Just',\n          value: false\n        };\n      } else {\n        return {\n          type: 'Nothing'\n        };\n      }\n    },\n    Number: function(it){\n      return {\n        type: 'Just',\n        value: +it\n      };\n    },\n    Int: function(it){\n      return {\n        type: 'Just',\n        value: +it\n      };\n    },\n    Float: function(it){\n      return {\n        type: 'Just',\n        value: +it\n      };\n    },\n    Date: function(value, options){\n      var that;\n      if (that = /^\\#([\\s\\S]*)\\#$/.exec(value)) {\n        return {\n          type: 'Just',\n          value: new Date(+that[1] || that[1])\n        };\n      } else if (options.explicit) {\n        return {\n          type: 'Nothing'\n        };\n      } else {\n        return {\n          type: 'Just',\n          value: new Date(+value || value)\n        };\n      }\n    },\n    RegExp: function(value, options){\n      var that;\n      if (that = /^\\/([\\s\\S]*)\\/([gimy]*)$/.exec(value)) {\n        return {\n          type: 'Just',\n          value: new RegExp(that[1], that[2])\n        };\n      } else if (options.explicit) {\n        return {\n          type: 'Nothing'\n        };\n      } else {\n        return {\n          type: 'Just',\n          value: new RegExp(value)\n        };\n      }\n    },\n    Array: function(value, options){\n      return castArray(value, {\n        of: [{\n          type: '*'\n        }]\n      }, options);\n    },\n    Object: function(value, options){\n      return castFields(value, {\n        of: {}\n      }, options);\n    },\n    String: function(it){\n      var replace, that;\n      if (toString$.call(it).slice(8, -1) !== 'String') {\n        return {\n          type: 'Nothing'\n        };\n      }\n      replace = function(value, quote){\n        return value.replace(/\\\\([^u]|u[0-9a-fA-F]{4})/g, function(all, escaped){\n          switch (escaped[0]) {\n          case quote:\n            return quote;\n          case '\\\\':\n            return '\\\\';\n          case 'b':\n            return '\\b';\n          case 'f':\n            return '\\f';\n          case 'n':\n            return '\\n';\n          case 'r':\n            return '\\r';\n          case 't':\n            return '\\t';\n          case 'u':\n            return JSON.parse(\"\\\"\" + all + \"\\\"\");\n          default:\n            return escaped;\n          }\n        });\n      };\n      if (that = it.match(/^'([\\s\\S]*)'$/)) {\n        return {\n          type: 'Just',\n          value: replace(that[1], \"'\")\n        };\n      } else if (that = it.match(/^\"([\\s\\S]*)\"$/)) {\n        return {\n          type: 'Just',\n          value: replace(that[1], '\"')\n        };\n      } else {\n        return {\n          type: 'Just',\n          value: it\n        };\n      }\n    }\n  };\n  function castArray(node, type, options){\n    var typeOf, element;\n    if (toString$.call(node).slice(8, -1) !== 'Array') {\n      return {\n        type: 'Nothing'\n      };\n    }\n    typeOf = type.of;\n    return {\n      type: 'Just',\n      value: (function(){\n        var i$, ref$, len$, results$ = [];\n        for (i$ = 0, len$ = (ref$ = node).length; i$ < len$; ++i$) {\n          element = ref$[i$];\n          results$.push(typesCast(element, typeOf, options));\n        }\n        return results$;\n      }())\n    };\n  }\n  function castTuple(node, type, options){\n    var result, i, i$, ref$, len$, types, cast;\n    if (toString$.call(node).slice(8, -1) !== 'Array') {\n      return {\n        type: 'Nothing'\n      };\n    }\n    result = [];\n    i = 0;\n    for (i$ = 0, len$ = (ref$ = type.of).length; i$ < len$; ++i$) {\n      types = ref$[i$];\n      cast = typesCast(node[i], types, options);\n      if (toString$.call(cast).slice(8, -1) !== 'Undefined') {\n        result.push(cast);\n      }\n      i++;\n    }\n    if (node.length <= i) {\n      return {\n        type: 'Just',\n        value: result\n      };\n    } else {\n      return {\n        type: 'Nothing'\n      };\n    }\n  }\n  function castFields(node, type, options){\n    var typeOf, key, value;\n    if (toString$.call(node).slice(8, -1) !== 'Object') {\n      return {\n        type: 'Nothing'\n      };\n    }\n    typeOf = type.of;\n    return {\n      type: 'Just',\n      value: (function(){\n        var ref$, resultObj$ = {};\n        for (key in ref$ = node) {\n          value = ref$[key];\n          resultObj$[typesCast(key, [{\n            type: 'String'\n          }], options)] = typesCast(value, typeOf[key] || [{\n            type: '*'\n          }], options);\n        }\n        return resultObj$;\n      }())\n    };\n  }\n  function typeCast(node, typeObj, options){\n    var type, structure, castFunc, ref$;\n    type = typeObj.type, structure = typeObj.structure;\n    if (type) {\n      castFunc = ((ref$ = options.customTypes[type]) != null ? ref$.cast : void 8) || types[type];\n      if (!castFunc) {\n        throw new Error(\"Type not defined: \" + type + \".\");\n      }\n      return castFunc(node, options, typesCast);\n    } else {\n      switch (structure) {\n      case 'array':\n        return castArray(node, typeObj, options);\n      case 'tuple':\n        return castTuple(node, typeObj, options);\n      case 'fields':\n        return castFields(node, typeObj, options);\n      }\n    }\n  }\n  function typesCast(node, types, options){\n    var i$, len$, type, ref$, valueType, value;\n    for (i$ = 0, len$ = types.length; i$ < len$; ++i$) {\n      type = types[i$];\n      ref$ = typeCast(node, type, options), valueType = ref$.type, value = ref$.value;\n      if (valueType === 'Nothing') {\n        continue;\n      }\n      if (parsedTypeCheck([type], value, {\n        customTypes: options.customTypes\n      })) {\n        return value;\n      }\n    }\n    throw new Error(\"Value \" + JSON.stringify(node) + \" does not type check against \" + JSON.stringify(types) + \".\");\n  }\n  module.exports = function(node, types, options){\n    if (!options.explicit && types.length === 1 && types[0].type === 'String') {\n      return node;\n    }\n    return typesCast(node, types, options);\n  };\n}).call(this);\n", "// Generated by LiveScript 1.6.0\n(function(){\n  var parseString, cast, parseType, VERSION, parsedTypeParse, parse;\n  parseString = require('./parse-string');\n  cast = require('./cast');\n  parseType = require('type-check').parseType;\n  VERSION = '0.4.1';\n  parsedTypeParse = function(parsedType, string, options){\n    options == null && (options = {});\n    options.explicit == null && (options.explicit = false);\n    options.customTypes == null && (options.customTypes = {});\n    return cast(parseString(parsedType, string, options), parsedType, options);\n  };\n  parse = function(type, string, options){\n    return parsedTypeParse(parseType(type), string, options);\n  };\n  module.exports = {\n    VERSION: VERSION,\n    parse: parse,\n    parsedTypeParse: parsedTypeParse\n  };\n}).call(this);\n", "'use strict';\n\nvar levn = require('levn');\n\n/**\n * @fileoverview Config Comment Parser\n * @author Nicholas C. Zakas\n */\n\n\n//-----------------------------------------------------------------------------\n// Type Definitions\n//-----------------------------------------------------------------------------\n\n/** @import * as $eslintcore from \"@eslint/core\"; */\n/** @typedef {$eslintcore.RuleConfig} RuleConfig */\n/** @typedef {$eslintcore.RulesConfig} RulesConfig */\n/** @import * as $typests from \"./types.ts\"; */\n/** @typedef {$typests.StringConfig} StringConfig */\n/** @typedef {$typests.BooleanConfig} BooleanConfig */\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\nconst directivesPattern = /^([a-z]+(?:-[a-z]+)*)(?:\\s|$)/u;\nconst validSeverities = new Set([0, 1, 2, \"off\", \"warn\", \"error\"]);\n\n/**\n * Determines if the severity in the rule configuration is valid.\n * @param {RuleConfig} ruleConfig A rule's configuration.\n * @returns {boolean} `true` if the severity is valid, otherwise `false`.\n */\nfunction isSeverityValid(ruleConfig) {\n\tconst severity = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;\n\treturn validSeverities.has(severity);\n}\n\n/**\n * Determines if all severities in the rules configuration are valid.\n * @param {RulesConfig} rulesConfig The rules configuration to check.\n * @returns {boolean} `true` if all severities are valid, otherwise `false`.\n */\nfunction isEverySeverityValid(rulesConfig) {\n\treturn Object.values(rulesConfig).every(isSeverityValid);\n}\n\n/**\n * Represents a directive comment.\n */\nclass DirectiveComment {\n\t/**\n\t * The label of the directive, such as \"eslint\", \"eslint-disable\", etc.\n\t * @type {string}\n\t */\n\tlabel = \"\";\n\n\t/**\n\t * The value of the directive (the string after the label).\n\t * @type {string}\n\t */\n\tvalue = \"\";\n\n\t/**\n\t * The justification of the directive (the string after the --).\n\t * @type {string}\n\t */\n\tjustification = \"\";\n\n\t/**\n\t * Creates a new directive comment.\n\t * @param {string} label The label of the directive.\n\t * @param {string} value The value of the directive.\n\t * @param {string} justification The justification of the directive.\n\t */\n\tconstructor(label, value, justification) {\n\t\tthis.label = label;\n\t\tthis.value = value;\n\t\tthis.justification = justification;\n\t}\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * Object to parse ESLint configuration comments.\n */\nclass ConfigCommentParser {\n\t/**\n\t * Parses a list of \"name:string_value\" or/and \"name\" options divided by comma or\n\t * whitespace. Used for \"global\" comments.\n\t * @param {string} string The string to parse.\n\t * @returns {StringConfig} Result map object of names and string values, or null values if no value was provided.\n\t */\n\tparseStringConfig(string) {\n\t\tconst items = /** @type {StringConfig} */ ({});\n\n\t\t// Collapse whitespace around `:` and `,` to make parsing easier\n\t\tconst trimmedString = string\n\t\t\t.trim()\n\t\t\t.replace(/(?<!\\s)\\s*([:,])\\s*/gu, \"$1\");\n\n\t\ttrimmedString.split(/\\s|,+/u).forEach(name => {\n\t\t\tif (!name) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// value defaults to null (if not provided), e.g: \"foo\" => [\"foo\", null]\n\t\t\tconst [key, value = null] = name.split(\":\");\n\n\t\t\titems[key] = value;\n\t\t});\n\n\t\treturn items;\n\t}\n\n\t/**\n\t * Parses a JSON-like config.\n\t * @param {string} string The string to parse.\n\t * @returns {({ok: true, config: RulesConfig}|{ok: false, error: {message: string}})} Result map object\n\t */\n\tparseJSONLikeConfig(string) {\n\t\t// Parses a JSON-like comment by the same way as parsing CLI option.\n\t\ttry {\n\t\t\tconst items =\n\t\t\t\t/** @type {RulesConfig} */ (levn.parse(\"Object\", string)) || {};\n\n\t\t\t/*\n\t\t\t * When the configuration has any invalid severities, it should be completely\n\t\t\t * ignored. This is because the configuration is not valid and should not be\n\t\t\t * applied.\n\t\t\t *\n\t\t\t * For example, the following configuration is invalid:\n\t\t\t *\n\t\t\t *    \"no-alert: 2 no-console: 2\"\n\t\t\t *\n\t\t\t * This results in a configuration of { \"no-alert\": \"2 no-console: 2\" }, which is\n\t\t\t * not valid. In this case, the configuration should be ignored.\n\t\t\t */\n\t\t\tif (isEverySeverityValid(items)) {\n\t\t\t\treturn {\n\t\t\t\t\tok: true,\n\t\t\t\t\tconfig: items,\n\t\t\t\t};\n\t\t\t}\n\t\t} catch {\n\t\t\t// levn parsing error: ignore to parse the string by a fallback.\n\t\t}\n\n\t\t/*\n\t\t * Optionator cannot parse commaless notations.\n\t\t * But we are supporting that. So this is a fallback for that.\n\t\t */\n\t\tconst normalizedString = string\n\t\t\t.replace(/(?<![-a-zA-Z0-9/])([-a-zA-Z0-9/]+):/gu, '\"$1\":')\n\t\t\t.replace(/([\\]0-9])\\s+(?=\")/u, \"$1,\");\n\n\t\ttry {\n\t\t\tconst items = JSON.parse(`{${normalizedString}}`);\n\n\t\t\treturn {\n\t\t\t\tok: true,\n\t\t\t\tconfig: items,\n\t\t\t};\n\t\t} catch (ex) {\n\t\t\tconst errorMessage = ex instanceof Error ? ex.message : String(ex);\n\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\terror: {\n\t\t\t\t\tmessage: `Failed to parse JSON from '${normalizedString}': ${errorMessage}`,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * Parses a config of values separated by comma.\n\t * @param {string} string The string to parse.\n\t * @returns {BooleanConfig} Result map of values and true values\n\t */\n\tparseListConfig(string) {\n\t\tconst items = /** @type {BooleanConfig} */ ({});\n\n\t\tstring.split(\",\").forEach(name => {\n\t\t\tconst trimmedName = name\n\t\t\t\t.trim()\n\t\t\t\t.replace(\n\t\t\t\t\t/^(?<quote>['\"]?)(?<ruleId>.*)\\k<quote>$/su,\n\t\t\t\t\t\"$<ruleId>\",\n\t\t\t\t);\n\n\t\t\tif (trimmedName) {\n\t\t\t\titems[trimmedName] = true;\n\t\t\t}\n\t\t});\n\n\t\treturn items;\n\t}\n\n\t/**\n\t * Extract the directive and the justification from a given directive comment and trim them.\n\t * @param {string} value The comment text to extract.\n\t * @returns {{directivePart: string, justificationPart: string}} The extracted directive and justification.\n\t */\n\t#extractDirectiveComment(value) {\n\t\tconst match = /\\s-{2,}\\s/u.exec(value);\n\n\t\tif (!match) {\n\t\t\treturn { directivePart: value.trim(), justificationPart: \"\" };\n\t\t}\n\n\t\tconst directive = value.slice(0, match.index).trim();\n\t\tconst justification = value.slice(match.index + match[0].length).trim();\n\n\t\treturn { directivePart: directive, justificationPart: justification };\n\t}\n\n\t/**\n\t * Parses a directive comment into directive text and value.\n\t * @param {string} string The string with the directive to be parsed.\n\t * @returns {DirectiveComment|undefined} The parsed directive or `undefined` if the directive is invalid.\n\t */\n\tparseDirective(string) {\n\t\tconst { directivePart, justificationPart } =\n\t\t\tthis.#extractDirectiveComment(string);\n\t\tconst match = directivesPattern.exec(directivePart);\n\n\t\tif (!match) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst directiveText = match[1];\n\t\tconst directiveValue = directivePart.slice(\n\t\t\tmatch.index + directiveText.length,\n\t\t);\n\n\t\treturn new DirectiveComment(\n\t\t\tdirectiveText,\n\t\t\tdirectiveValue.trim(),\n\t\t\tjustificationPart,\n\t\t);\n\t}\n}\n\n/**\n * @fileoverview A collection of helper classes for implementing `SourceCode`.\n * @author Nicholas C. Zakas\n */\n\n/* eslint class-methods-use-this: off -- Required to complete interface. */\n\n//-----------------------------------------------------------------------------\n// Type Definitions\n//-----------------------------------------------------------------------------\n\n/** @typedef {$eslintcore.VisitTraversalStep} VisitTraversalStep */\n/** @typedef {$eslintcore.CallTraversalStep} CallTraversalStep */\n/** @typedef {$eslintcore.TraversalStep} TraversalStep */\n/** @typedef {$eslintcore.SourceLocation} SourceLocation */\n/** @typedef {$eslintcore.SourceLocationWithOffset} SourceLocationWithOffset */\n/** @typedef {$eslintcore.SourceRange} SourceRange */\n/** @typedef {$eslintcore.Directive} IDirective */\n/** @typedef {$eslintcore.DirectiveType} DirectiveType */\n/** @typedef {$eslintcore.SourceCodeBaseTypeOptions} SourceCodeBaseTypeOptions */\n/**\n * @typedef {import(\"@eslint/core\").TextSourceCode<Options>} TextSourceCode\n * @template {SourceCodeBaseTypeOptions} [Options=SourceCodeBaseTypeOptions]\n */\n/** @typedef {$eslintcore.RuleVisitor} RuleVisitor */\n/**\n * @typedef {import(\"./types.ts\").CustomRuleVisitorWithExit<RuleVisitorType>} CustomRuleVisitorWithExit\n * @template {RuleVisitor} RuleVisitorType\n */\n/** @typedef {$typests.CustomRuleTypeDefinitions} CustomRuleTypeDefinitions */\n/**\n * @typedef {import(\"./types.ts\").CustomRuleDefinitionType<LanguageSpecificOptions, Options>} CustomRuleDefinitionType\n * @template {Omit<import(\"@eslint/core\").RuleDefinitionTypeOptions, keyof CustomRuleTypeDefinitions>} LanguageSpecificOptions\n * @template {Partial<CustomRuleTypeDefinitions>} Options\n */\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\n/**\n * Determines if a node has ESTree-style loc information.\n * @param {object} node The node to check.\n * @returns {node is {loc:SourceLocation}} `true` if the node has ESTree-style loc information, `false` if not.\n */\nfunction hasESTreeStyleLoc(node) {\n\treturn \"loc\" in node;\n}\n\n/**\n * Determines if a node has position-style loc information.\n * @param {object} node The node to check.\n * @returns {node is {position:SourceLocation}} `true` if the node has position-style range information, `false` if not.\n */\nfunction hasPosStyleLoc(node) {\n\treturn \"position\" in node;\n}\n\n/**\n * Determines if a node has ESTree-style range information.\n * @param {object} node The node to check.\n * @returns {node is {range:SourceRange}} `true` if the node has ESTree-style range information, `false` if not.\n */\nfunction hasESTreeStyleRange(node) {\n\treturn \"range\" in node;\n}\n\n/**\n * Determines if a node has position-style range information.\n * @param {object} node The node to check.\n * @returns {node is {position:SourceLocationWithOffset}} `true` if the node has position-style range information, `false` if not.\n */\nfunction hasPosStyleRange(node) {\n\treturn \"position\" in node;\n}\n\n/**\n * Performs binary search to find the line number containing a given target index.\n * Returns the lower bound - the index of the first element greater than the target.\n * **Please note that the `lineStartIndices` should be sorted in ascending order**.\n * - Time Complexity: O(log n) - Significantly faster than linear search for large files.\n * @param {number[]} lineStartIndices Sorted array of line start indices.\n * @param {number} targetIndex The target index to find the line number for.\n * @returns {number} The line number for the target index.\n */\nfunction findLineNumberBinarySearch(lineStartIndices, targetIndex) {\n\tlet low = 0;\n\tlet high = lineStartIndices.length - 1;\n\n\twhile (low < high) {\n\t\tconst mid = ((low + high) / 2) | 0; // Use bitwise OR to floor the division.\n\n\t\tif (targetIndex < lineStartIndices[mid]) {\n\t\t\thigh = mid;\n\t\t} else {\n\t\t\tlow = mid + 1;\n\t\t}\n\t}\n\n\treturn low;\n}\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * A class to represent a step in the traversal process where a node is visited.\n * @implements {VisitTraversalStep}\n */\nclass VisitNodeStep {\n\t/**\n\t * The type of the step.\n\t * @type {\"visit\"}\n\t * @readonly\n\t */\n\ttype = \"visit\";\n\n\t/**\n\t * The kind of the step. Represents the same data as the `type` property\n\t * but it's a number for performance.\n\t * @type {1}\n\t * @readonly\n\t */\n\tkind = 1;\n\n\t/**\n\t * The target of the step.\n\t * @type {object}\n\t */\n\ttarget;\n\n\t/**\n\t * The phase of the step.\n\t * @type {1|2}\n\t */\n\tphase;\n\n\t/**\n\t * The arguments of the step.\n\t * @type {Array<any>}\n\t */\n\targs;\n\n\t/**\n\t * Creates a new instance.\n\t * @param {Object} options The options for the step.\n\t * @param {object} options.target The target of the step.\n\t * @param {1|2} options.phase The phase of the step.\n\t * @param {Array<any>} options.args The arguments of the step.\n\t */\n\tconstructor({ target, phase, args }) {\n\t\tthis.target = target;\n\t\tthis.phase = phase;\n\t\tthis.args = args;\n\t}\n}\n\n/**\n * A class to represent a step in the traversal process where a\n * method is called.\n * @implements {CallTraversalStep}\n */\nclass CallMethodStep {\n\t/**\n\t * The type of the step.\n\t * @type {\"call\"}\n\t * @readonly\n\t */\n\ttype = \"call\";\n\n\t/**\n\t * The kind of the step. Represents the same data as the `type` property\n\t * but it's a number for performance.\n\t * @type {2}\n\t * @readonly\n\t */\n\tkind = 2;\n\n\t/**\n\t * The name of the method to call.\n\t * @type {string}\n\t */\n\ttarget;\n\n\t/**\n\t * The arguments to pass to the method.\n\t * @type {Array<any>}\n\t */\n\targs;\n\n\t/**\n\t * Creates a new instance.\n\t * @param {Object} options The options for the step.\n\t * @param {string} options.target The target of the step.\n\t * @param {Array<any>} options.args The arguments of the step.\n\t */\n\tconstructor({ target, args }) {\n\t\tthis.target = target;\n\t\tthis.args = args;\n\t}\n}\n\n/**\n * A class to represent a directive comment.\n * @implements {IDirective}\n */\nclass Directive {\n\t/**\n\t * The type of directive.\n\t * @type {DirectiveType}\n\t * @readonly\n\t */\n\ttype;\n\n\t/**\n\t * The node representing the directive.\n\t * @type {unknown}\n\t * @readonly\n\t */\n\tnode;\n\n\t/**\n\t * Everything after the \"eslint-disable\" portion of the directive,\n\t * but before the \"--\" that indicates the justification.\n\t * @type {string}\n\t * @readonly\n\t */\n\tvalue;\n\n\t/**\n\t * The justification for the directive.\n\t * @type {string}\n\t * @readonly\n\t */\n\tjustification;\n\n\t/**\n\t * Creates a new instance.\n\t * @param {Object} options The options for the directive.\n\t * @param {\"disable\"|\"enable\"|\"disable-next-line\"|\"disable-line\"} options.type The type of directive.\n\t * @param {unknown} options.node The node representing the directive.\n\t * @param {string} options.value The value of the directive.\n\t * @param {string} options.justification The justification for the directive.\n\t */\n\tconstructor({ type, node, value, justification }) {\n\t\tthis.type = type;\n\t\tthis.node = node;\n\t\tthis.value = value;\n\t\tthis.justification = justification;\n\t}\n}\n\n/**\n * Source Code Base Object\n * @template {SourceCodeBaseTypeOptions & {RootNode: object, SyntaxElementWithLoc: object}} [Options=SourceCodeBaseTypeOptions & {RootNode: object, SyntaxElementWithLoc: object}]\n * @implements {TextSourceCode<Options>}\n */\nclass TextSourceCodeBase {\n\t/**\n\t * The lines of text in the source code.\n\t * @type {Array<string>}\n\t */\n\t#lines = [];\n\n\t/**\n\t * The indices of the start of each line in the source code.\n\t * @type {Array<number>}\n\t */\n\t#lineStartIndices = [0];\n\n\t/**\n\t * The pattern to match lineEndings in the source code.\n\t * @type {RegExp}\n\t */\n\t#lineEndingPattern;\n\n\t/**\n\t * The AST of the source code.\n\t * @type {Options['RootNode']}\n\t */\n\tast;\n\n\t/**\n\t * The text of the source code.\n\t * @type {string}\n\t */\n\ttext;\n\n\t/**\n\t * Creates a new instance.\n\t * @param {Object} options The options for the instance.\n\t * @param {string} options.text The source code text.\n\t * @param {Options['RootNode']} options.ast The root AST node.\n\t * @param {RegExp} [options.lineEndingPattern] The pattern to match lineEndings in the source code. Defaults to `/\\r?\\n/u`.\n\t */\n\tconstructor({ text, ast, lineEndingPattern = /\\r?\\n/u }) {\n\t\tthis.ast = ast;\n\t\tthis.text = text;\n\t\t// Remove the global(`g`) and sticky(`y`) flags from the `lineEndingPattern` to avoid issues with lastIndex.\n\t\tthis.#lineEndingPattern = new RegExp(\n\t\t\tlineEndingPattern.source,\n\t\t\tlineEndingPattern.flags.replace(/[gy]/gu, \"\"),\n\t\t);\n\t}\n\n\t/**\n\t * Finds the next line in the source text and updates `#lines` and `#lineStartIndices`.\n\t * @param {string} text The text to search for the next line.\n\t * @returns {boolean} `true` if a next line was found, `false` otherwise.\n\t */\n\t#findNextLine(text) {\n\t\tconst match = this.#lineEndingPattern.exec(text);\n\n\t\tif (!match) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.#lines.push(text.slice(0, match.index));\n\t\tthis.#lineStartIndices.push(\n\t\t\t(this.#lineStartIndices.at(-1) ?? 0) +\n\t\t\t\tmatch.index +\n\t\t\t\tmatch[0].length,\n\t\t);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Ensures `#lines` is lazily calculated from the source text.\n\t * @returns {void}\n\t */\n\t#ensureLines() {\n\t\t// If `#lines` has already been calculated, do nothing.\n\t\tif (this.#lines.length === this.#lineStartIndices.length) {\n\t\t\treturn;\n\t\t}\n\n\t\twhile (\n\t\t\tthis.#findNextLine(this.text.slice(this.#lineStartIndices.at(-1)))\n\t\t) {\n\t\t\t// Continue parsing until no more matches are found.\n\t\t}\n\n\t\tthis.#lines.push(this.text.slice(this.#lineStartIndices.at(-1)));\n\n\t\tObject.freeze(this.#lines);\n\t}\n\n\t/**\n\t * Ensures `#lineStartIndices` is lazily calculated up to the specified index.\n\t * @param {number} index The index of a character in a file.\n\t * @returns {void}\n\t */\n\t#ensureLineStartIndicesFromIndex(index) {\n\t\t// If we've already parsed up to or beyond this index, do nothing.\n\t\tif (index <= (this.#lineStartIndices.at(-1) ?? 0)) {\n\t\t\treturn;\n\t\t}\n\n\t\twhile (\n\t\t\tindex > (this.#lineStartIndices.at(-1) ?? 0) &&\n\t\t\tthis.#findNextLine(this.text.slice(this.#lineStartIndices.at(-1)))\n\t\t) {\n\t\t\t// Continue parsing until no more matches are found.\n\t\t}\n\t}\n\n\t/**\n\t * Ensures `#lineStartIndices` is lazily calculated up to the specified loc.\n\t * @param {Object} loc A line/column location.\n\t * @param {number} loc.line The line number of the location. (0 or 1-indexed based on language.)\n\t * @param {number} lineStart The line number at which the parser starts counting.\n\t * @returns {void}\n\t */\n\t#ensureLineStartIndicesFromLoc(loc, lineStart) {\n\t\t// Calculate line indices up to the potentially next line, as it is needed for the follow\u2011up calculation.\n\t\tconst nextLocLineIndex = loc.line - lineStart + 1;\n\t\tconst lastCalculatedLineIndex = this.#lineStartIndices.length - 1;\n\t\tlet additionalLinesNeeded = nextLocLineIndex - lastCalculatedLineIndex;\n\n\t\t// If we've already parsed up to or beyond this line, do nothing.\n\t\tif (additionalLinesNeeded <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\twhile (\n\t\t\tadditionalLinesNeeded > 0 &&\n\t\t\tthis.#findNextLine(this.text.slice(this.#lineStartIndices.at(-1)))\n\t\t) {\n\t\t\t// Continue parsing until no more matches are found or we have enough lines.\n\t\t\tadditionalLinesNeeded -= 1;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the loc information for the given node or token.\n\t * @param {Options['SyntaxElementWithLoc']} nodeOrToken The node or token to get the loc information for.\n\t * @returns {SourceLocation} The loc information for the node or token.\n\t * @throws {Error} If the node or token does not have loc information.\n\t */\n\tgetLoc(nodeOrToken) {\n\t\tif (hasESTreeStyleLoc(nodeOrToken)) {\n\t\t\treturn nodeOrToken.loc;\n\t\t}\n\n\t\tif (hasPosStyleLoc(nodeOrToken)) {\n\t\t\treturn nodeOrToken.position;\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t\"Custom getLoc() method must be implemented in the subclass.\",\n\t\t);\n\t}\n\n\t/**\n\t * Converts a source text index into a `{ line: number, column: number }` pair.\n\t * @param {number} index The index of a character in a file.\n\t * @throws {TypeError|RangeError} If non-numeric index or index out of range.\n\t * @returns {{line: number, column: number}} A `{ line: number, column: number }` location object with 0 or 1-indexed line and 0 or 1-indexed column based on language.\n\t * @public\n\t */\n\tgetLocFromIndex(index) {\n\t\tif (typeof index !== \"number\") {\n\t\t\tthrow new TypeError(\"Expected `index` to be a number.\");\n\t\t}\n\n\t\tif (index < 0 || index > this.text.length) {\n\t\t\tthrow new RangeError(\n\t\t\t\t`Index out of range (requested index ${index}, but source text has length ${this.text.length}).`,\n\t\t\t);\n\t\t}\n\n\t\tconst {\n\t\t\tstart: { line: lineStart, column: columnStart },\n\t\t\tend: { line: lineEnd, column: columnEnd },\n\t\t} = this.getLoc(this.ast);\n\n\t\t// If the index is at the start, return the start location of the root node.\n\t\tif (index === 0) {\n\t\t\treturn {\n\t\t\t\tline: lineStart,\n\t\t\t\tcolumn: columnStart,\n\t\t\t};\n\t\t}\n\n\t\t// If the index is `this.text.length`, return the location one \"spot\" past the last character of the file.\n\t\tif (index === this.text.length) {\n\t\t\treturn {\n\t\t\t\tline: lineEnd,\n\t\t\t\tcolumn: columnEnd,\n\t\t\t};\n\t\t}\n\n\t\t// Ensure `#lineStartIndices` are lazily calculated.\n\t\tthis.#ensureLineStartIndicesFromIndex(index);\n\n\t\t/*\n\t\t * To figure out which line `index` is on, determine the last place at which index could\n\t\t * be inserted into `#lineStartIndices` to keep the list sorted.\n\t\t */\n\t\tconst lineNumber =\n\t\t\t(index >= (this.#lineStartIndices.at(-1) ?? 0)\n\t\t\t\t? this.#lineStartIndices.length\n\t\t\t\t: findLineNumberBinarySearch(this.#lineStartIndices, index)) -\n\t\t\t1 +\n\t\t\tlineStart;\n\n\t\treturn {\n\t\t\tline: lineNumber,\n\t\t\tcolumn:\n\t\t\t\tindex -\n\t\t\t\tthis.#lineStartIndices[lineNumber - lineStart] +\n\t\t\t\tcolumnStart,\n\t\t};\n\t}\n\n\t/**\n\t * Converts a `{ line: number, column: number }` pair into a source text index.\n\t * @param {Object} loc A line/column location.\n\t * @param {number} loc.line The line number of the location. (0 or 1-indexed based on language.)\n\t * @param {number} loc.column The column number of the location. (0 or 1-indexed based on language.)\n\t * @throws {TypeError|RangeError} If `loc` is not an object with a numeric\n\t * `line` and `column`, if the `line` is less than or equal to zero or\n\t * the `line` or `column` is out of the expected range.\n\t * @returns {number} The index of the line/column location in a file.\n\t * @public\n\t */\n\tgetIndexFromLoc(loc) {\n\t\tif (\n\t\t\tloc === null ||\n\t\t\ttypeof loc !== \"object\" ||\n\t\t\ttypeof loc.line !== \"number\" ||\n\t\t\ttypeof loc.column !== \"number\"\n\t\t) {\n\t\t\tthrow new TypeError(\n\t\t\t\t\"Expected `loc` to be an object with numeric `line` and `column` properties.\",\n\t\t\t);\n\t\t}\n\n\t\tconst {\n\t\t\tstart: { line: lineStart, column: columnStart },\n\t\t\tend: { line: lineEnd, column: columnEnd },\n\t\t} = this.getLoc(this.ast);\n\n\t\tif (loc.line < lineStart || lineEnd < loc.line) {\n\t\t\tthrow new RangeError(\n\t\t\t\t`Line number out of range (line ${loc.line} requested). Valid range: ${lineStart}-${lineEnd}`,\n\t\t\t);\n\t\t}\n\n\t\t// If the loc is at the start, return the start index of the root node.\n\t\tif (loc.line === lineStart && loc.column === columnStart) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t// If the loc is at the end, return the index one \"spot\" past the last character of the file.\n\t\tif (loc.line === lineEnd && loc.column === columnEnd) {\n\t\t\treturn this.text.length;\n\t\t}\n\n\t\t// Ensure `#lineStartIndices` are lazily calculated.\n\t\tthis.#ensureLineStartIndicesFromLoc(loc, lineStart);\n\n\t\tconst isLastLine = loc.line === lineEnd;\n\t\tconst lineStartIndex = this.#lineStartIndices[loc.line - lineStart];\n\t\tconst lineEndIndex = isLastLine\n\t\t\t? this.text.length\n\t\t\t: this.#lineStartIndices[loc.line - lineStart + 1];\n\t\tconst positionIndex = lineStartIndex + loc.column - columnStart;\n\n\t\tif (\n\t\t\tloc.column < columnStart ||\n\t\t\t(isLastLine && positionIndex > lineEndIndex) ||\n\t\t\t(!isLastLine && positionIndex >= lineEndIndex)\n\t\t) {\n\t\t\tthrow new RangeError(\n\t\t\t\t`Column number out of range (column ${loc.column} requested). Valid range for line ${loc.line}: ${columnStart}-${lineEndIndex - lineStartIndex + columnStart + (isLastLine ? 0 : -1)}`,\n\t\t\t);\n\t\t}\n\n\t\treturn positionIndex;\n\t}\n\n\t/**\n\t * Returns the range information for the given node or token.\n\t * @param {Options['SyntaxElementWithLoc']} nodeOrToken The node or token to get the range information for.\n\t * @returns {SourceRange} The range information for the node or token.\n\t * @throws {Error} If the node or token does not have range information.\n\t */\n\tgetRange(nodeOrToken) {\n\t\tif (hasESTreeStyleRange(nodeOrToken)) {\n\t\t\treturn nodeOrToken.range;\n\t\t}\n\n\t\tif (hasPosStyleRange(nodeOrToken)) {\n\t\t\treturn [\n\t\t\t\tnodeOrToken.position.start.offset,\n\t\t\t\tnodeOrToken.position.end.offset,\n\t\t\t];\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t\"Custom getRange() method must be implemented in the subclass.\",\n\t\t);\n\t}\n\n\t/* eslint-disable no-unused-vars -- Required to complete interface. */\n\t/**\n\t * Returns the parent of the given node.\n\t * @param {Options['SyntaxElementWithLoc']} node The node to get the parent of.\n\t * @returns {Options['SyntaxElementWithLoc']|undefined} The parent of the node.\n\t * @throws {Error} If the method is not implemented in the subclass.\n\t */\n\tgetParent(node) {\n\t\tthrow new Error(\"Not implemented.\");\n\t}\n\t/* eslint-enable no-unused-vars -- Required to complete interface. */\n\n\t/**\n\t * Gets all the ancestors of a given node\n\t * @param {Options['SyntaxElementWithLoc']} node The node\n\t * @returns {Array<Options['SyntaxElementWithLoc']>} All the ancestor nodes in the AST, not including the provided node, starting\n\t * from the root node at index 0 and going inwards to the parent node.\n\t * @throws {TypeError} When `node` is missing.\n\t */\n\tgetAncestors(node) {\n\t\tif (!node) {\n\t\t\tthrow new TypeError(\"Missing required argument: node.\");\n\t\t}\n\n\t\tconst ancestorsStartingAtParent = [];\n\n\t\tfor (\n\t\t\tlet ancestor = this.getParent(node);\n\t\t\tancestor;\n\t\t\tancestor = this.getParent(ancestor)\n\t\t) {\n\t\t\tancestorsStartingAtParent.push(ancestor);\n\t\t}\n\n\t\treturn ancestorsStartingAtParent.reverse();\n\t}\n\n\t/**\n\t * Gets the source code for the given node.\n\t * @param {Options['SyntaxElementWithLoc']} [node] The AST node to get the text for.\n\t * @param {number} [beforeCount] The number of characters before the node to retrieve.\n\t * @param {number} [afterCount] The number of characters after the node to retrieve.\n\t * @returns {string} The text representing the AST node.\n\t * @public\n\t */\n\tgetText(node, beforeCount, afterCount) {\n\t\tif (node) {\n\t\t\tconst range = this.getRange(node);\n\t\t\treturn this.text.slice(\n\t\t\t\tMath.max(range[0] - (beforeCount || 0), 0),\n\t\t\t\trange[1] + (afterCount || 0),\n\t\t\t);\n\t\t}\n\t\treturn this.text;\n\t}\n\n\t/**\n\t * Gets the entire source text split into an array of lines.\n\t * @returns {Array<string>} The source text as an array of lines.\n\t * @public\n\t */\n\tget lines() {\n\t\tthis.#ensureLines(); // Ensure `#lines` is lazily calculated.\n\n\t\treturn this.#lines;\n\t}\n\n\t/**\n\t * Traverse the source code and return the steps that were taken.\n\t * @returns {Iterable<TraversalStep>} The steps that were taken while traversing the source code.\n\t */\n\ttraverse() {\n\t\tthrow new Error(\"Not implemented.\");\n\t}\n}\n\nexports.CallMethodStep = CallMethodStep;\nexports.ConfigCommentParser = ConfigCommentParser;\nexports.Directive = Directive;\nexports.TextSourceCodeBase = TextSourceCodeBase;\nexports.VisitNodeStep = VisitNodeStep;\n", "/**\n * @fileoverview Abstraction of JavaScript source code.\n * @author Nicholas C. Zakas\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst TokenStore = require(\"./token-store\"),\n\tastUtils = require(\"../../../shared/ast-utils\"),\n\tTraverser = require(\"../../../shared/traverser\"),\n\tglobals = require(\"../../../../conf/globals\"),\n\t{ directivesPattern } = require(\"../../../shared/directives\"),\n\tCodePathAnalyzer = require(\"../../../linter/code-path-analysis/code-path-analyzer\"),\n\t{\n\t\tConfigCommentParser,\n\t\tVisitNodeStep,\n\t\tCallMethodStep,\n\t\tDirective,\n\t} = require(\"@eslint/plugin-kit\");\n\n//------------------------------------------------------------------------------\n// Type Definitions\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint-scope\").Variable} Variable */\n/** @typedef {import(\"eslint-scope\").Scope} Scope */\n/** @typedef {import(\"eslint-scope\").ScopeManager} ScopeManager */\n/** @typedef {import(\"@eslint/core\").SourceCode} ISourceCode */\n/** @typedef {import(\"@eslint/core\").Directive} IDirective */\n/** @typedef {import(\"@eslint/core\").TraversalStep} ITraversalStep */\n\n//------------------------------------------------------------------------------\n// Private\n//------------------------------------------------------------------------------\n\nconst commentParser = new ConfigCommentParser();\n\n/**\n * Validates that the given AST has the required information.\n * @param {ASTNode} ast The Program node of the AST to check.\n * @throws {TypeError} If the AST doesn't contain the correct information.\n * @returns {void}\n * @private\n */\nfunction validate(ast) {\n\tif (!ast) {\n\t\tthrow new TypeError(`Unexpected empty AST. (${ast})`);\n\t}\n\n\tif (!ast.tokens) {\n\t\tthrow new TypeError(\"AST is missing the tokens array.\");\n\t}\n\n\tif (!ast.comments) {\n\t\tthrow new TypeError(\"AST is missing the comments array.\");\n\t}\n\n\tif (!ast.loc) {\n\t\tthrow new TypeError(\"AST is missing location information.\");\n\t}\n\n\tif (!ast.range) {\n\t\tthrow new TypeError(\"AST is missing range information\");\n\t}\n}\n\n/**\n * Retrieves globals for the given ecmaVersion.\n * @param {number} ecmaVersion The version to retrieve globals for.\n * @returns {Object} The globals for the given ecmaVersion.\n */\nfunction getGlobalsForEcmaVersion(ecmaVersion) {\n\tswitch (ecmaVersion) {\n\t\tcase 3:\n\t\t\treturn globals.es3;\n\n\t\tcase 5:\n\t\t\treturn globals.es5;\n\n\t\tdefault:\n\t\t\tif (ecmaVersion < 2015) {\n\t\t\t\treturn globals[`es${ecmaVersion + 2009}`];\n\t\t\t}\n\n\t\t\treturn globals[`es${ecmaVersion}`];\n\t}\n}\n\n/**\n * Merges two sorted lists into a larger sorted list in O(n) time.\n * @param {Token[]} tokens The list of tokens.\n * @param {Token[]} comments The list of comments.\n * @returns {Token[]} A sorted list of tokens and comments.\n * @private\n */\nfunction sortedMerge(tokens, comments) {\n\tconst result = [];\n\tlet tokenIndex = 0;\n\tlet commentIndex = 0;\n\n\twhile (tokenIndex < tokens.length || commentIndex < comments.length) {\n\t\tif (\n\t\t\tcommentIndex >= comments.length ||\n\t\t\t(tokenIndex < tokens.length &&\n\t\t\t\ttokens[tokenIndex].range[0] < comments[commentIndex].range[0])\n\t\t) {\n\t\t\tresult.push(tokens[tokenIndex++]);\n\t\t} else {\n\t\t\tresult.push(comments[commentIndex++]);\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Normalizes a value for a global in a config\n * @param {(boolean|string|null)} configuredValue The value given for a global in configuration or in\n * a global directive comment\n * @returns {(\"readonly\"|\"writable\"|\"off\")} The value normalized as a string\n * @throws {Error} if global value is invalid\n */\nfunction normalizeConfigGlobal(configuredValue) {\n\tswitch (configuredValue) {\n\t\tcase \"off\":\n\t\t\treturn \"off\";\n\n\t\tcase true:\n\t\tcase \"true\":\n\t\tcase \"writeable\":\n\t\tcase \"writable\":\n\t\t\treturn \"writable\";\n\n\t\tcase null:\n\t\tcase false:\n\t\tcase \"false\":\n\t\tcase \"readable\":\n\t\tcase \"readonly\":\n\t\t\treturn \"readonly\";\n\n\t\tdefault:\n\t\t\tthrow new Error(\n\t\t\t\t`'${configuredValue}' is not a valid configuration for a global (use 'readonly', 'writable', or 'off')`,\n\t\t\t);\n\t}\n}\n\n/**\n * Determines if two nodes or tokens overlap.\n * @param {ASTNode|Token} first The first node or token to check.\n * @param {ASTNode|Token} second The second node or token to check.\n * @returns {boolean} True if the two nodes or tokens overlap.\n * @private\n */\nfunction nodesOrTokensOverlap(first, second) {\n\treturn (\n\t\t(first.range[0] <= second.range[0] &&\n\t\t\tfirst.range[1] >= second.range[0]) ||\n\t\t(second.range[0] <= first.range[0] && second.range[1] >= first.range[0])\n\t);\n}\n\n/**\n * Performs binary search to find the line number containing a given character index.\n * Returns the lower bound - the index of the first element greater than the target.\n * **Please note that the `lineStartIndices` should be sorted in ascending order**.\n * - Time Complexity: O(log n) - Significantly faster than linear search for large files.\n * @param {number[]} lineStartIndices Sorted array of line start indices.\n * @param {number} target The character index to find the line number for.\n * @returns {number} The 1-based line number for the target index.\n * @private\n */\nfunction findLineNumberBinarySearch(lineStartIndices, target) {\n\tlet low = 0;\n\tlet high = lineStartIndices.length;\n\n\twhile (low < high) {\n\t\tconst mid = ((low + high) / 2) | 0; // Use bitwise OR to floor the division\n\n\t\tif (target < lineStartIndices[mid]) {\n\t\t\thigh = mid;\n\t\t} else {\n\t\t\tlow = mid + 1;\n\t\t}\n\t}\n\n\treturn low;\n}\n\n//-----------------------------------------------------------------------------\n// Directive Comments\n//-----------------------------------------------------------------------------\n\n/**\n * Ensures that variables representing built-in properties of the Global Object,\n * and any globals declared by special block comments, are present in the global\n * scope.\n * @param {ScopeManager} scopeManager Scope manager.\n * @param {Object|undefined} configGlobals The globals declared in configuration\n * @param {Object|undefined} inlineGlobals The globals declared in the source code\n * @returns {void}\n */\nfunction addDeclaredGlobals(\n\tscopeManager,\n\tconfigGlobals = Object.create(null),\n\tinlineGlobals = Object.create(null),\n) {\n\tconst finalGlobals = { __proto__: null, ...configGlobals };\n\n\tfor (const [name, data] of Object.entries(inlineGlobals)) {\n\t\tfinalGlobals[name] = data.value;\n\t}\n\n\tconst names = Object.keys(finalGlobals).filter(\n\t\tname => finalGlobals[name] !== \"off\",\n\t);\n\n\tscopeManager.addGlobals(names);\n\n\tconst globalScope = scopeManager.scopes[0];\n\n\tfor (const name of names) {\n\t\tconst variable = globalScope.set.get(name);\n\n\t\tvariable.eslintImplicitGlobalSetting = configGlobals[name];\n\t\tvariable.eslintExplicitGlobal = !!inlineGlobals[name];\n\t\tvariable.eslintExplicitGlobalComments = inlineGlobals[name]?.comments;\n\t\tvariable.writeable = finalGlobals[name] === \"writable\";\n\t}\n}\n\n/**\n * Sets the given variable names as exported so they won't be triggered by\n * the `no-unused-vars` rule.\n * @param {eslint.Scope} globalScope The global scope to define exports in.\n * @param {Record<string,string>} variables An object whose keys are the variable\n *      names to export.\n * @returns {void}\n */\nfunction markExportedVariables(globalScope, variables) {\n\tObject.keys(variables).forEach(name => {\n\t\tconst variable = globalScope.set.get(name);\n\n\t\tif (variable) {\n\t\t\tvariable.eslintUsed = true;\n\t\t\tvariable.eslintExported = true;\n\t\t}\n\t});\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nconst caches = Symbol(\"caches\");\n\n/**\n * Represents parsed source code.\n * @implements {ISourceCode}\n */\nclass SourceCode extends TokenStore {\n\t/**\n\t * The cache of steps that were taken while traversing the source code.\n\t * @type {Array<ITraversalStep>}\n\t */\n\t#steps;\n\n\t/**\n\t * Creates a new instance.\n\t * @param {string|Object} textOrConfig The source code text or config object.\n\t * @param {string} textOrConfig.text The source code text.\n\t * @param {ASTNode} textOrConfig.ast The Program node of the AST representing the code. This AST should be created from the text that BOM was stripped.\n\t * @param {boolean} textOrConfig.hasBOM Indicates if the text has a Unicode BOM.\n\t * @param {Object|null} textOrConfig.parserServices The parser services.\n\t * @param {ScopeManager|null} textOrConfig.scopeManager The scope of this source code.\n\t * @param {Object|null} textOrConfig.visitorKeys The visitor keys to traverse AST.\n\t * @param {ASTNode} [astIfNoConfig] The Program node of the AST representing the code. This AST should be created from the text that BOM was stripped.\n\t */\n\tconstructor(textOrConfig, astIfNoConfig) {\n\t\tlet text, hasBOM, ast, parserServices, scopeManager, visitorKeys;\n\n\t\t// Process overloading of arguments\n\t\tif (typeof textOrConfig === \"string\") {\n\t\t\ttext = textOrConfig;\n\t\t\tast = astIfNoConfig;\n\t\t\thasBOM = false;\n\t\t} else if (typeof textOrConfig === \"object\" && textOrConfig !== null) {\n\t\t\ttext = textOrConfig.text;\n\t\t\tast = textOrConfig.ast;\n\t\t\thasBOM = textOrConfig.hasBOM;\n\t\t\tparserServices = textOrConfig.parserServices;\n\t\t\tscopeManager = textOrConfig.scopeManager;\n\t\t\tvisitorKeys = textOrConfig.visitorKeys;\n\t\t}\n\n\t\tvalidate(ast);\n\t\tsuper(ast.tokens, ast.comments);\n\n\t\t/**\n\t\t * General purpose caching for the class.\n\t\t */\n\t\tthis[caches] = new Map([\n\t\t\t[\"scopes\", new WeakMap()],\n\t\t\t[\"vars\", new Map()],\n\t\t\t[\"configNodes\", void 0],\n\t\t\t[\"isGlobalReference\", new WeakMap()],\n\t\t]);\n\n\t\t/**\n\t\t * Indicates if the AST is ESTree compatible.\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.isESTree = ast.type === \"Program\";\n\n\t\t/*\n\t\t * Backwards compatibility for BOM handling.\n\t\t *\n\t\t * The `hasBOM` property has been available on the `SourceCode` object\n\t\t * for a long time and is used to indicate if the source contains a BOM.\n\t\t * The linter strips the BOM and just passes the `hasBOM` property to the\n\t\t * `SourceCode` constructor to make it easier for languages to not deal with\n\t\t * the BOM.\n\t\t *\n\t\t * However, the text passed in to the `SourceCode` constructor might still\n\t\t * have a BOM if the constructor is called outside of the linter, so we still\n\t\t * need to check for the BOM in the text.\n\t\t */\n\t\tconst textHasBOM = text.charCodeAt(0) === 0xfeff;\n\n\t\t/**\n\t\t * The flag to indicate that the source code has Unicode BOM.\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.hasBOM = textHasBOM || !!hasBOM;\n\n\t\t/**\n\t\t * The original text source code.\n\t\t * BOM was stripped from this text.\n\t\t * @type {string}\n\t\t */\n\t\tthis.text = textHasBOM ? text.slice(1) : text;\n\n\t\t/**\n\t\t * The parsed AST for the source code.\n\t\t * @type {ASTNode}\n\t\t */\n\t\tthis.ast = ast;\n\n\t\t/**\n\t\t * The parser services of this source code.\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parserServices = parserServices || {};\n\n\t\t/**\n\t\t * The scope of this source code.\n\t\t * @type {ScopeManager|null}\n\t\t */\n\t\tthis.scopeManager = scopeManager || null;\n\n\t\t/**\n\t\t * The visitor keys to traverse AST.\n\t\t * @type {Object}\n\t\t */\n\t\tthis.visitorKeys = visitorKeys || Traverser.DEFAULT_VISITOR_KEYS;\n\n\t\t// Check the source text for the presence of a shebang since it is parsed as a standard line comment.\n\t\tconst shebangMatched = this.text.match(astUtils.shebangPattern);\n\t\tconst hasShebang =\n\t\t\tshebangMatched &&\n\t\t\tast.comments.length &&\n\t\t\tast.comments[0].value === shebangMatched[1];\n\n\t\tif (hasShebang) {\n\t\t\tast.comments[0].type = \"Shebang\";\n\t\t}\n\n\t\tthis.tokensAndComments = sortedMerge(ast.tokens, ast.comments);\n\n\t\t/**\n\t\t * The source code split into lines according to ECMA-262 specification.\n\t\t * This is done to avoid each rule needing to do so separately.\n\t\t * @type {string[]}\n\t\t */\n\t\tthis.lines = [];\n\n\t\t/**\n\t\t * @type {number[]}\n\t\t */\n\t\tthis.lineStartIndices = [0];\n\n\t\tconst lineEndingPattern = astUtils.createGlobalLinebreakMatcher();\n\t\tlet match;\n\n\t\t/*\n\t\t * Previously, this was implemented using a regex that\n\t\t * matched a sequence of non-linebreak characters followed by a\n\t\t * linebreak, then adding the lengths of the matches. However,\n\t\t * this caused a catastrophic backtracking issue when the end\n\t\t * of a file contained a large number of non-newline characters.\n\t\t * To avoid this, the current implementation just matches newlines\n\t\t * and uses match.index to get the correct line start indices.\n\t\t */\n\t\twhile ((match = lineEndingPattern.exec(this.text))) {\n\t\t\tthis.lines.push(\n\t\t\t\tthis.text.slice(this.lineStartIndices.at(-1), match.index),\n\t\t\t);\n\t\t\tthis.lineStartIndices.push(match.index + match[0].length);\n\t\t}\n\t\tthis.lines.push(this.text.slice(this.lineStartIndices.at(-1)));\n\n\t\t// don't allow further modification of this object\n\t\tObject.freeze(this);\n\t\tObject.freeze(this.lines);\n\t}\n\n\t/**\n\t * Split the source code into multiple lines based on the line delimiters.\n\t * @param {string} text Source code as a string.\n\t * @returns {string[]} Array of source code lines.\n\t * @public\n\t */\n\tstatic splitLines(text) {\n\t\treturn text.split(astUtils.createGlobalLinebreakMatcher());\n\t}\n\n\t/**\n\t * Gets the source code for the given node.\n\t * @param {ASTNode} [node] The AST node to get the text for.\n\t * @param {number} [beforeCount] The number of characters before the node to retrieve.\n\t * @param {number} [afterCount] The number of characters after the node to retrieve.\n\t * @returns {string} The text representing the AST node.\n\t * @public\n\t */\n\tgetText(node, beforeCount, afterCount) {\n\t\tif (node) {\n\t\t\treturn this.text.slice(\n\t\t\t\tMath.max(node.range[0] - (beforeCount || 0), 0),\n\t\t\t\tnode.range[1] + (afterCount || 0),\n\t\t\t);\n\t\t}\n\t\treturn this.text;\n\t}\n\n\t/**\n\t * Gets the entire source text split into an array of lines.\n\t * @returns {string[]} The source text as an array of lines.\n\t * @public\n\t */\n\tgetLines() {\n\t\treturn this.lines;\n\t}\n\n\t/**\n\t * Retrieves an array containing all comments in the source code.\n\t * @returns {ASTNode[]} An array of comment nodes.\n\t * @public\n\t */\n\tgetAllComments() {\n\t\treturn this.ast.comments;\n\t}\n\n\t/**\n\t * Gets the deepest node containing a range index.\n\t * @param {number} index Range index of the desired node.\n\t * @returns {ASTNode} The node if found or null if not found.\n\t * @public\n\t */\n\tgetNodeByRangeIndex(index) {\n\t\tlet result = null;\n\n\t\tTraverser.traverse(this.ast, {\n\t\t\tvisitorKeys: this.visitorKeys,\n\t\t\tenter(node) {\n\t\t\t\tif (node.range[0] <= index && index < node.range[1]) {\n\t\t\t\t\tresult = node;\n\t\t\t\t} else {\n\t\t\t\t\tthis.skip();\n\t\t\t\t}\n\t\t\t},\n\t\t\tleave(node) {\n\t\t\t\tif (node === result) {\n\t\t\t\t\tthis.break();\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Determines if two nodes or tokens have at least one whitespace character\n\t * between them. Order does not matter. Returns false if the given nodes or\n\t * tokens overlap.\n\t * @param {ASTNode|Token} first The first node or token to check between.\n\t * @param {ASTNode|Token} second The second node or token to check between.\n\t * @returns {boolean} True if there is a whitespace character between\n\t * any of the tokens found between the two given nodes or tokens.\n\t * @public\n\t */\n\tisSpaceBetween(first, second) {\n\t\tif (nodesOrTokensOverlap(first, second)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst [startingNodeOrToken, endingNodeOrToken] =\n\t\t\tfirst.range[1] <= second.range[0]\n\t\t\t\t? [first, second]\n\t\t\t\t: [second, first];\n\t\tconst firstToken =\n\t\t\tthis.getLastToken(startingNodeOrToken) || startingNodeOrToken;\n\t\tconst finalToken =\n\t\t\tthis.getFirstToken(endingNodeOrToken) || endingNodeOrToken;\n\t\tlet currentToken = firstToken;\n\n\t\twhile (currentToken !== finalToken) {\n\t\t\tconst nextToken = this.getTokenAfter(currentToken, {\n\t\t\t\tincludeComments: true,\n\t\t\t});\n\n\t\t\tif (currentToken.range[1] !== nextToken.range[0]) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcurrentToken = nextToken;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Converts a source text index into a (line, column) pair.\n\t * @param {number} index The index of a character in a file.\n\t * @throws {TypeError|RangeError} If non-numeric index or index out of range.\n\t * @returns {{line: number, column: number}} A {line, column} location object with 1-indexed line and 0-indexed column.\n\t * @public\n\t */\n\tgetLocFromIndex(index) {\n\t\tif (typeof index !== \"number\") {\n\t\t\tthrow new TypeError(\"Expected `index` to be a number.\");\n\t\t}\n\n\t\tif (index < 0 || index > this.text.length) {\n\t\t\tthrow new RangeError(\n\t\t\t\t`Index out of range (requested index ${index}, but source text has length ${this.text.length}).`,\n\t\t\t);\n\t\t}\n\n\t\t/*\n\t\t * For an argument of this.text.length, return the location one \"spot\" past the last character\n\t\t * of the file. If the last character is a linebreak, the location will be column 0 of the next\n\t\t * line; otherwise, the location will be in the next column on the same line.\n\t\t *\n\t\t * See getIndexFromLoc for the motivation for this special case.\n\t\t */\n\t\tif (index === this.text.length) {\n\t\t\treturn {\n\t\t\t\tline: this.lines.length,\n\t\t\t\tcolumn: this.lines.at(-1).length,\n\t\t\t};\n\t\t}\n\n\t\t/*\n\t\t * To figure out which line index is on, determine the last place at which index could\n\t\t * be inserted into lineStartIndices to keep the list sorted.\n\t\t */\n\t\tconst lineNumber =\n\t\t\tindex >= this.lineStartIndices.at(-1)\n\t\t\t\t? this.lineStartIndices.length\n\t\t\t\t: findLineNumberBinarySearch(this.lineStartIndices, index);\n\n\t\treturn {\n\t\t\tline: lineNumber,\n\t\t\tcolumn: index - this.lineStartIndices[lineNumber - 1],\n\t\t};\n\t}\n\n\t/**\n\t * Converts a (line, column) pair into a range index.\n\t * @param {Object} loc A line/column location\n\t * @param {number} loc.line The line number of the location (1-indexed)\n\t * @param {number} loc.column The column number of the location (0-indexed)\n\t * @throws {TypeError|RangeError} If `loc` is not an object with a numeric\n\t *   `line` and `column`, if the `line` is less than or equal to zero or\n\t *   the line or column is out of the expected range.\n\t * @returns {number} The range index of the location in the file.\n\t * @public\n\t */\n\tgetIndexFromLoc(loc) {\n\t\tif (\n\t\t\tloc === null ||\n\t\t\ttypeof loc !== \"object\" ||\n\t\t\ttypeof loc.line !== \"number\" ||\n\t\t\ttypeof loc.column !== \"number\"\n\t\t) {\n\t\t\tthrow new TypeError(\n\t\t\t\t\"Expected `loc` to be an object with numeric `line` and `column` properties.\",\n\t\t\t);\n\t\t}\n\n\t\tif (loc.line <= 0) {\n\t\t\tthrow new RangeError(\n\t\t\t\t`Line number out of range (line ${loc.line} requested). Line numbers should be 1-based.`,\n\t\t\t);\n\t\t}\n\n\t\tif (loc.line > this.lineStartIndices.length) {\n\t\t\tthrow new RangeError(\n\t\t\t\t`Line number out of range (line ${loc.line} requested, but only ${this.lineStartIndices.length} lines present).`,\n\t\t\t);\n\t\t}\n\n\t\tif (loc.column < 0) {\n\t\t\tthrow new RangeError(\n\t\t\t\t`Invalid column number (column ${loc.column} requested).`,\n\t\t\t);\n\t\t}\n\n\t\tconst lineStartIndex = this.lineStartIndices[loc.line - 1];\n\t\tconst lineEndIndex =\n\t\t\tloc.line === this.lineStartIndices.length\n\t\t\t\t? this.text.length\n\t\t\t\t: this.lineStartIndices[loc.line];\n\t\tconst positionIndex = lineStartIndex + loc.column;\n\n\t\t/*\n\t\t * By design, getIndexFromLoc({ line: lineNum, column: 0 }) should return the start index of\n\t\t * the given line, provided that the line number is valid element of this.lines. Since the\n\t\t * last element of this.lines is an empty string for files with trailing newlines, add a\n\t\t * special case where getting the index for the first location after the end of the file\n\t\t * will return the length of the file, rather than throwing an error. This allows rules to\n\t\t * use getIndexFromLoc consistently without worrying about edge cases at the end of a file.\n\t\t */\n\t\tif (\n\t\t\t(loc.line === this.lineStartIndices.length &&\n\t\t\t\tpositionIndex > lineEndIndex) ||\n\t\t\t(loc.line < this.lineStartIndices.length &&\n\t\t\t\tpositionIndex >= lineEndIndex)\n\t\t) {\n\t\t\tthrow new RangeError(\n\t\t\t\t`Column number out of range (column ${loc.column} requested, but the length of line ${loc.line} is ${lineEndIndex - lineStartIndex}).`,\n\t\t\t);\n\t\t}\n\n\t\treturn positionIndex;\n\t}\n\n\t/**\n\t * Gets the scope for the given node\n\t * @param {ASTNode} currentNode The node to get the scope of\n\t * @returns {Scope} The scope information for this node\n\t * @throws {TypeError} If the `currentNode` argument is missing.\n\t */\n\tgetScope(currentNode) {\n\t\tif (!currentNode) {\n\t\t\tthrow new TypeError(\"Missing required argument: node.\");\n\t\t}\n\n\t\t// check cache first\n\t\tconst cache = this[caches].get(\"scopes\");\n\t\tconst cachedScope = cache.get(currentNode);\n\n\t\tif (cachedScope) {\n\t\t\treturn cachedScope;\n\t\t}\n\n\t\t// On Program node, get the outermost scope to avoid return Node.js special function scope or ES modules scope.\n\t\tconst inner = currentNode.type !== \"Program\";\n\n\t\tfor (let node = currentNode; node; node = node.parent) {\n\t\t\tconst scope = this.scopeManager.acquire(node, inner);\n\n\t\t\tif (scope) {\n\t\t\t\tif (scope.type === \"function-expression-name\") {\n\t\t\t\t\tcache.set(currentNode, scope.childScopes[0]);\n\t\t\t\t\treturn scope.childScopes[0];\n\t\t\t\t}\n\n\t\t\t\tcache.set(currentNode, scope);\n\t\t\t\treturn scope;\n\t\t\t}\n\t\t}\n\n\t\tcache.set(currentNode, this.scopeManager.scopes[0]);\n\t\treturn this.scopeManager.scopes[0];\n\t}\n\n\t/**\n\t * Get the variables that `node` defines.\n\t * This is a convenience method that passes through\n\t * to the same method on the `scopeManager`.\n\t * @param {ASTNode} node The node for which the variables are obtained.\n\t * @returns {Array<Variable>} An array of variable nodes representing\n\t *      the variables that `node` defines.\n\t */\n\tgetDeclaredVariables(node) {\n\t\treturn this.scopeManager.getDeclaredVariables(node);\n\t}\n\n\t/* eslint-disable class-methods-use-this -- node is owned by SourceCode */\n\t/**\n\t * Gets all the ancestors of a given node\n\t * @param {ASTNode} node The node\n\t * @returns {Array<ASTNode>} All the ancestor nodes in the AST, not including the provided node, starting\n\t * from the root node at index 0 and going inwards to the parent node.\n\t * @throws {TypeError} When `node` is missing.\n\t */\n\tgetAncestors(node) {\n\t\tif (!node) {\n\t\t\tthrow new TypeError(\"Missing required argument: node.\");\n\t\t}\n\n\t\tconst ancestorsStartingAtParent = [];\n\n\t\tfor (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n\t\t\tancestorsStartingAtParent.push(ancestor);\n\t\t}\n\n\t\treturn ancestorsStartingAtParent.reverse();\n\t}\n\n\t/**\n\t * Determines whether the given identifier node is a reference to a global variable.\n\t * @param {ASTNode} node `Identifier` node to check.\n\t * @returns {boolean} True if the identifier is a reference to a global variable.\n\t */\n\tisGlobalReference(node) {\n\t\tif (!node) {\n\t\t\tthrow new TypeError(\"Missing required argument: node.\");\n\t\t}\n\n\t\tconst cache = this[caches].get(\"isGlobalReference\");\n\n\t\tif (cache.has(node)) {\n\t\t\treturn cache.get(node);\n\t\t}\n\n\t\tif (node.type !== \"Identifier\") {\n\t\t\tcache.set(node, false);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst variable = this.scopeManager.scopes[0].set.get(node.name);\n\n\t\tif (!variable || variable.defs.length > 0) {\n\t\t\tcache.set(node, false);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst result = variable.references.some(\n\t\t\t({ identifier }) => identifier === node,\n\t\t);\n\t\tcache.set(node, result);\n\t\treturn result;\n\t}\n\n\t/**\n\t * Returns the location of the given node or token.\n\t * @param {ASTNode|Token} nodeOrToken The node or token to get the location of.\n\t * @returns {SourceLocation} The location of the node or token.\n\t */\n\tgetLoc(nodeOrToken) {\n\t\treturn nodeOrToken.loc;\n\t}\n\n\t/**\n\t * Returns the range of the given node or token.\n\t * @param {ASTNode|Token} nodeOrToken The node or token to get the range of.\n\t * @returns {[number, number]} The range of the node or token.\n\t */\n\tgetRange(nodeOrToken) {\n\t\treturn nodeOrToken.range;\n\t}\n\n\t/* eslint-enable class-methods-use-this -- node is owned by SourceCode */\n\n\t/**\n\t * Marks a variable as used in the current scope\n\t * @param {string} name The name of the variable to mark as used.\n\t * @param {ASTNode} [refNode] The closest node to the variable reference.\n\t * @returns {boolean} True if the variable was found and marked as used, false if not.\n\t */\n\tmarkVariableAsUsed(name, refNode = this.ast) {\n\t\tconst currentScope = this.getScope(refNode);\n\t\tlet initialScope = currentScope;\n\n\t\t/*\n\t\t * When we are in an ESM or CommonJS module, we need to start searching\n\t\t * from the top-level scope, not the global scope. For ESM the top-level\n\t\t * scope is the module scope; for CommonJS the top-level scope is the\n\t\t * outer function scope.\n\t\t *\n\t\t * Without this check, we might miss a variable declared with `var` at\n\t\t * the top-level because it won't exist in the global scope.\n\t\t */\n\t\tif (\n\t\t\tcurrentScope.type === \"global\" &&\n\t\t\tcurrentScope.childScopes.length > 0 &&\n\t\t\t// top-level scopes refer to a `Program` node\n\t\t\tcurrentScope.childScopes[0].block === this.ast\n\t\t) {\n\t\t\tinitialScope = currentScope.childScopes[0];\n\t\t}\n\n\t\tfor (let scope = initialScope; scope; scope = scope.upper) {\n\t\t\tconst variable = scope.variables.find(\n\t\t\t\tscopeVar => scopeVar.name === name,\n\t\t\t);\n\n\t\t\tif (variable) {\n\t\t\t\tvariable.eslintUsed = true;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Returns an array of all inline configuration nodes found in the\n\t * source code.\n\t * @returns {Array<Token>} An array of all inline configuration nodes.\n\t */\n\tgetInlineConfigNodes() {\n\t\t// check the cache first\n\t\tlet configNodes = this[caches].get(\"configNodes\");\n\n\t\tif (configNodes) {\n\t\t\treturn configNodes;\n\t\t}\n\n\t\t// calculate fresh config nodes\n\t\tconfigNodes = this.ast.comments.filter(comment => {\n\t\t\t// shebang comments are never directives\n\t\t\tif (comment.type === \"Shebang\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst directive = commentParser.parseDirective(comment.value);\n\n\t\t\tif (!directive) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!directivesPattern.test(directive.label)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// only certain comment types are supported as line comments\n\t\t\treturn (\n\t\t\t\tcomment.type !== \"Line\" ||\n\t\t\t\t!!/^eslint-disable-(?:next-)?line$/u.test(directive.label)\n\t\t\t);\n\t\t});\n\n\t\tthis[caches].set(\"configNodes\", configNodes);\n\n\t\treturn configNodes;\n\t}\n\n\t/**\n\t * Returns an all directive nodes that enable or disable rules along with any problems\n\t * encountered while parsing the directives.\n\t * @returns {{problems:Array<Problem>,directives:Array<Directive>}} Information\n\t *      that ESLint needs to further process the directives.\n\t */\n\tgetDisableDirectives() {\n\t\t// check the cache first\n\t\tconst cachedDirectives = this[caches].get(\"disableDirectives\");\n\n\t\tif (cachedDirectives) {\n\t\t\treturn cachedDirectives;\n\t\t}\n\n\t\tconst problems = [];\n\t\tconst directives = [];\n\n\t\tthis.getInlineConfigNodes().forEach(comment => {\n\t\t\t// Step 1: Parse the directive\n\t\t\tconst {\n\t\t\t\tlabel,\n\t\t\t\tvalue,\n\t\t\t\tjustification: justificationPart,\n\t\t\t} = commentParser.parseDirective(comment.value);\n\n\t\t\t// Step 2: Extract the directive value\n\t\t\tconst lineCommentSupported =\n\t\t\t\t/^eslint-disable-(?:next-)?line$/u.test(label);\n\n\t\t\tif (comment.type === \"Line\" && !lineCommentSupported) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Step 3: Validate the directive does not span multiple lines\n\t\t\tif (\n\t\t\t\tlabel === \"eslint-disable-line\" &&\n\t\t\t\tcomment.loc.start.line !== comment.loc.end.line\n\t\t\t) {\n\t\t\t\tconst message = `${label} comment should not span multiple lines.`;\n\n\t\t\t\tproblems.push({\n\t\t\t\t\truleId: null,\n\t\t\t\t\tmessage,\n\t\t\t\t\tloc: comment.loc,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Step 4: Extract the directive value and create the Directive object\n\t\t\tswitch (label) {\n\t\t\t\tcase \"eslint-disable\":\n\t\t\t\tcase \"eslint-enable\":\n\t\t\t\tcase \"eslint-disable-next-line\":\n\t\t\t\tcase \"eslint-disable-line\": {\n\t\t\t\t\tconst directiveType = label.slice(\"eslint-\".length);\n\n\t\t\t\t\tdirectives.push(\n\t\t\t\t\t\tnew Directive({\n\t\t\t\t\t\t\ttype: directiveType,\n\t\t\t\t\t\t\tnode: comment,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tjustification: justificationPart,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// no default\n\t\t\t}\n\t\t});\n\n\t\tconst result = { problems, directives };\n\n\t\tthis[caches].set(\"disableDirectives\", result);\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Applies language options sent in from the core.\n\t * @param {Object} languageOptions The language options for this run.\n\t * @returns {void}\n\t */\n\tapplyLanguageOptions(languageOptions) {\n\t\t/*\n\t\t * Add configured globals and language globals\n\t\t *\n\t\t * Using Object.assign instead of object spread for performance reasons\n\t\t * https://github.com/eslint/eslint/issues/16302\n\t\t */\n\t\tconst configGlobals = Object.assign(\n\t\t\tObject.create(null), // https://github.com/eslint/eslint/issues/18363\n\t\t\tgetGlobalsForEcmaVersion(languageOptions.ecmaVersion),\n\t\t\tlanguageOptions.sourceType === \"commonjs\"\n\t\t\t\t? globals.commonjs\n\t\t\t\t: void 0,\n\t\t\tlanguageOptions.globals,\n\t\t);\n\n\t\t/*\n\t\t * `normalizeConfigGlobal` will throw an error if a configured global value is invalid. However, these errors would\n\t\t * typically be caught when validating a config anyway (validity for inline global comments is checked separately).\n\t\t */\n\t\tfor (const [name, value] of Object.entries(configGlobals)) {\n\t\t\tconfigGlobals[name] = normalizeConfigGlobal(value);\n\t\t}\n\n\t\tconst varsCache = this[caches].get(\"vars\");\n\n\t\tvarsCache.set(\"configGlobals\", configGlobals);\n\t}\n\n\t/**\n\t * Applies configuration found inside of the source code. This method is only\n\t * called when ESLint is running with inline configuration allowed.\n\t * @returns {{problems:Array<Problem>,configs:{config:FlatConfigArray,loc:Location}}} Information\n\t *      that ESLint needs to further process the inline configuration.\n\t */\n\tapplyInlineConfig() {\n\t\tconst problems = [];\n\t\tconst configs = [];\n\t\tconst exportedVariables = {};\n\t\tconst inlineGlobals = Object.create(null);\n\n\t\tthis.getInlineConfigNodes().forEach(comment => {\n\t\t\tconst { label, value } = commentParser.parseDirective(\n\t\t\t\tcomment.value,\n\t\t\t);\n\n\t\t\tswitch (label) {\n\t\t\t\tcase \"exported\":\n\t\t\t\t\tObject.assign(\n\t\t\t\t\t\texportedVariables,\n\t\t\t\t\t\tcommentParser.parseListConfig(value),\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"globals\":\n\t\t\t\tcase \"global\":\n\t\t\t\t\tfor (const [id, idSetting] of Object.entries(\n\t\t\t\t\t\tcommentParser.parseStringConfig(value),\n\t\t\t\t\t)) {\n\t\t\t\t\t\tlet normalizedValue;\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tnormalizedValue = normalizeConfigGlobal(idSetting);\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\tproblems.push({\n\t\t\t\t\t\t\t\truleId: null,\n\t\t\t\t\t\t\t\tloc: comment.loc,\n\t\t\t\t\t\t\t\tmessage: err.message,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (inlineGlobals[id]) {\n\t\t\t\t\t\t\tinlineGlobals[id].comments.push(comment);\n\t\t\t\t\t\t\tinlineGlobals[id].value = normalizedValue;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tinlineGlobals[id] = {\n\t\t\t\t\t\t\t\tcomments: [comment],\n\t\t\t\t\t\t\t\tvalue: normalizedValue,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"eslint\": {\n\t\t\t\t\tconst parseResult =\n\t\t\t\t\t\tcommentParser.parseJSONLikeConfig(value);\n\n\t\t\t\t\tif (parseResult.ok) {\n\t\t\t\t\t\tconfigs.push({\n\t\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\t\trules: parseResult.config,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tloc: comment.loc,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproblems.push({\n\t\t\t\t\t\t\truleId: null,\n\t\t\t\t\t\t\tloc: comment.loc,\n\t\t\t\t\t\t\tmessage: parseResult.error.message,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"eslint-env\": {\n\t\t\t\t\tproblems.push({\n\t\t\t\t\t\truleId: null,\n\t\t\t\t\t\tloc: comment.loc,\n\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\"/* eslint-env */ comments are no longer supported.\",\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t// no default\n\t\t\t}\n\t\t});\n\n\t\t// save all the new variables for later\n\t\tconst varsCache = this[caches].get(\"vars\");\n\n\t\tvarsCache.set(\"inlineGlobals\", inlineGlobals);\n\t\tvarsCache.set(\"exportedVariables\", exportedVariables);\n\n\t\treturn {\n\t\t\tconfigs,\n\t\t\tproblems,\n\t\t};\n\t}\n\n\t/**\n\t * Called by ESLint core to indicate that it has finished providing\n\t * information. We now add in all the missing variables and ensure that\n\t * state-changing methods cannot be called by rules.\n\t * @returns {void}\n\t */\n\tfinalize() {\n\t\tconst varsCache = this[caches].get(\"vars\");\n\t\tconst configGlobals = varsCache.get(\"configGlobals\");\n\t\tconst inlineGlobals = varsCache.get(\"inlineGlobals\");\n\t\tconst exportedVariables = varsCache.get(\"exportedVariables\");\n\t\tconst globalScope = this.scopeManager.scopes[0];\n\n\t\taddDeclaredGlobals(this.scopeManager, configGlobals, inlineGlobals);\n\n\t\tif (exportedVariables) {\n\t\t\tmarkExportedVariables(globalScope, exportedVariables);\n\t\t}\n\t}\n\n\t/**\n\t * Traverse the source code and return the steps that were taken.\n\t * @returns {Array<TraversalStep>} The steps that were taken while traversing the source code.\n\t */\n\ttraverse() {\n\t\t// Because the AST doesn't mutate, we can cache the steps\n\t\tif (this.#steps) {\n\t\t\treturn this.#steps;\n\t\t}\n\n\t\tconst steps = (this.#steps = []);\n\n\t\t/*\n\t\t * This logic works for any AST, not just ESTree. Because ESLint has allowed\n\t\t * custom parsers to return any AST, we need to ensure that the traversal\n\t\t * logic works for any AST.\n\t\t */\n\t\tlet analyzer = {\n\t\t\tenterNode(node) {\n\t\t\t\tsteps.push(\n\t\t\t\t\tnew VisitNodeStep({\n\t\t\t\t\t\ttarget: node,\n\t\t\t\t\t\tphase: 1,\n\t\t\t\t\t\targs: [node],\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t},\n\t\t\tleaveNode(node) {\n\t\t\t\tsteps.push(\n\t\t\t\t\tnew VisitNodeStep({\n\t\t\t\t\t\ttarget: node,\n\t\t\t\t\t\tphase: 2,\n\t\t\t\t\t\targs: [node],\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t},\n\t\t\temit(eventName, args) {\n\t\t\t\tsteps.push(\n\t\t\t\t\tnew CallMethodStep({\n\t\t\t\t\t\ttarget: eventName,\n\t\t\t\t\t\targs,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t},\n\t\t};\n\n\t\t/*\n\t\t * We do code path analysis for ESTree only. Code path analysis is not\n\t\t * necessary for other ASTs, and it's also not possible to do for other\n\t\t * ASTs because the necessary information is not available.\n\t\t *\n\t\t * Generally speaking, we can tell that the AST is an ESTree if it has a\n\t\t * Program node at the top level. This is not a perfect heuristic, but it\n\t\t * is good enough for now.\n\t\t */\n\t\tif (this.isESTree) {\n\t\t\tanalyzer = new CodePathAnalyzer(analyzer);\n\t\t}\n\n\t\t/*\n\t\t * The actual AST traversal is done by the `Traverser` class. This class\n\t\t * is responsible for walking the AST and calling the appropriate methods\n\t\t * on the `analyzer` object, which is appropriate for the given AST.\n\t\t */\n\t\tTraverser.traverse(this.ast, {\n\t\t\tenter(node, parent) {\n\t\t\t\t// save the parent node on a property for backwards compatibility\n\t\t\t\tnode.parent = parent;\n\n\t\t\t\tanalyzer.enterNode(node);\n\t\t\t},\n\t\t\tleave(node) {\n\t\t\t\tanalyzer.leaveNode(node);\n\t\t\t},\n\t\t\tvisitorKeys: this.visitorKeys,\n\t\t});\n\n\t\treturn steps;\n\t}\n}\n\nmodule.exports = SourceCode;\n", "\"use strict\";\n\nconst SourceCode = require(\"./source-code\");\n\nmodule.exports = {\n\tSourceCode,\n};\n", "/*\n  Copyright (C) 2012-2013 Yusuke Suzuki <utatane.tea@gmail.com>\n  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n/*jslint vars:false, bitwise:true*/\n/*jshint indent:4*/\n/*global exports:true*/\n(function clone(exports) {\n    'use strict';\n\n    var Syntax,\n        VisitorOption,\n        VisitorKeys,\n        BREAK,\n        SKIP,\n        REMOVE;\n\n    function deepCopy(obj) {\n        var ret = {}, key, val;\n        for (key in obj) {\n            if (obj.hasOwnProperty(key)) {\n                val = obj[key];\n                if (typeof val === 'object' && val !== null) {\n                    ret[key] = deepCopy(val);\n                } else {\n                    ret[key] = val;\n                }\n            }\n        }\n        return ret;\n    }\n\n    // based on LLVM libc++ upper_bound / lower_bound\n    // MIT License\n\n    function upperBound(array, func) {\n        var diff, len, i, current;\n\n        len = array.length;\n        i = 0;\n\n        while (len) {\n            diff = len >>> 1;\n            current = i + diff;\n            if (func(array[current])) {\n                len = diff;\n            } else {\n                i = current + 1;\n                len -= diff + 1;\n            }\n        }\n        return i;\n    }\n\n    Syntax = {\n        AssignmentExpression: 'AssignmentExpression',\n        AssignmentPattern: 'AssignmentPattern',\n        ArrayExpression: 'ArrayExpression',\n        ArrayPattern: 'ArrayPattern',\n        ArrowFunctionExpression: 'ArrowFunctionExpression',\n        AwaitExpression: 'AwaitExpression', // CAUTION: It's deferred to ES7.\n        BlockStatement: 'BlockStatement',\n        BinaryExpression: 'BinaryExpression',\n        BreakStatement: 'BreakStatement',\n        CallExpression: 'CallExpression',\n        CatchClause: 'CatchClause',\n        ChainExpression: 'ChainExpression',\n        ClassBody: 'ClassBody',\n        ClassDeclaration: 'ClassDeclaration',\n        ClassExpression: 'ClassExpression',\n        ComprehensionBlock: 'ComprehensionBlock',  // CAUTION: It's deferred to ES7.\n        ComprehensionExpression: 'ComprehensionExpression',  // CAUTION: It's deferred to ES7.\n        ConditionalExpression: 'ConditionalExpression',\n        ContinueStatement: 'ContinueStatement',\n        DebuggerStatement: 'DebuggerStatement',\n        DirectiveStatement: 'DirectiveStatement',\n        DoWhileStatement: 'DoWhileStatement',\n        EmptyStatement: 'EmptyStatement',\n        ExportAllDeclaration: 'ExportAllDeclaration',\n        ExportDefaultDeclaration: 'ExportDefaultDeclaration',\n        ExportNamedDeclaration: 'ExportNamedDeclaration',\n        ExportSpecifier: 'ExportSpecifier',\n        ExpressionStatement: 'ExpressionStatement',\n        ForStatement: 'ForStatement',\n        ForInStatement: 'ForInStatement',\n        ForOfStatement: 'ForOfStatement',\n        FunctionDeclaration: 'FunctionDeclaration',\n        FunctionExpression: 'FunctionExpression',\n        GeneratorExpression: 'GeneratorExpression',  // CAUTION: It's deferred to ES7.\n        Identifier: 'Identifier',\n        IfStatement: 'IfStatement',\n        ImportExpression: 'ImportExpression',\n        ImportDeclaration: 'ImportDeclaration',\n        ImportDefaultSpecifier: 'ImportDefaultSpecifier',\n        ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',\n        ImportSpecifier: 'ImportSpecifier',\n        Literal: 'Literal',\n        LabeledStatement: 'LabeledStatement',\n        LogicalExpression: 'LogicalExpression',\n        MemberExpression: 'MemberExpression',\n        MetaProperty: 'MetaProperty',\n        MethodDefinition: 'MethodDefinition',\n        ModuleSpecifier: 'ModuleSpecifier',\n        NewExpression: 'NewExpression',\n        ObjectExpression: 'ObjectExpression',\n        ObjectPattern: 'ObjectPattern',\n        PrivateIdentifier: 'PrivateIdentifier',\n        Program: 'Program',\n        Property: 'Property',\n        PropertyDefinition: 'PropertyDefinition',\n        RestElement: 'RestElement',\n        ReturnStatement: 'ReturnStatement',\n        SequenceExpression: 'SequenceExpression',\n        SpreadElement: 'SpreadElement',\n        Super: 'Super',\n        SwitchStatement: 'SwitchStatement',\n        SwitchCase: 'SwitchCase',\n        TaggedTemplateExpression: 'TaggedTemplateExpression',\n        TemplateElement: 'TemplateElement',\n        TemplateLiteral: 'TemplateLiteral',\n        ThisExpression: 'ThisExpression',\n        ThrowStatement: 'ThrowStatement',\n        TryStatement: 'TryStatement',\n        UnaryExpression: 'UnaryExpression',\n        UpdateExpression: 'UpdateExpression',\n        VariableDeclaration: 'VariableDeclaration',\n        VariableDeclarator: 'VariableDeclarator',\n        WhileStatement: 'WhileStatement',\n        WithStatement: 'WithStatement',\n        YieldExpression: 'YieldExpression'\n    };\n\n    VisitorKeys = {\n        AssignmentExpression: ['left', 'right'],\n        AssignmentPattern: ['left', 'right'],\n        ArrayExpression: ['elements'],\n        ArrayPattern: ['elements'],\n        ArrowFunctionExpression: ['params', 'body'],\n        AwaitExpression: ['argument'], // CAUTION: It's deferred to ES7.\n        BlockStatement: ['body'],\n        BinaryExpression: ['left', 'right'],\n        BreakStatement: ['label'],\n        CallExpression: ['callee', 'arguments'],\n        CatchClause: ['param', 'body'],\n        ChainExpression: ['expression'],\n        ClassBody: ['body'],\n        ClassDeclaration: ['id', 'superClass', 'body'],\n        ClassExpression: ['id', 'superClass', 'body'],\n        ComprehensionBlock: ['left', 'right'],  // CAUTION: It's deferred to ES7.\n        ComprehensionExpression: ['blocks', 'filter', 'body'],  // CAUTION: It's deferred to ES7.\n        ConditionalExpression: ['test', 'consequent', 'alternate'],\n        ContinueStatement: ['label'],\n        DebuggerStatement: [],\n        DirectiveStatement: [],\n        DoWhileStatement: ['body', 'test'],\n        EmptyStatement: [],\n        ExportAllDeclaration: ['source'],\n        ExportDefaultDeclaration: ['declaration'],\n        ExportNamedDeclaration: ['declaration', 'specifiers', 'source'],\n        ExportSpecifier: ['exported', 'local'],\n        ExpressionStatement: ['expression'],\n        ForStatement: ['init', 'test', 'update', 'body'],\n        ForInStatement: ['left', 'right', 'body'],\n        ForOfStatement: ['left', 'right', 'body'],\n        FunctionDeclaration: ['id', 'params', 'body'],\n        FunctionExpression: ['id', 'params', 'body'],\n        GeneratorExpression: ['blocks', 'filter', 'body'],  // CAUTION: It's deferred to ES7.\n        Identifier: [],\n        IfStatement: ['test', 'consequent', 'alternate'],\n        ImportExpression: ['source'],\n        ImportDeclaration: ['specifiers', 'source'],\n        ImportDefaultSpecifier: ['local'],\n        ImportNamespaceSpecifier: ['local'],\n        ImportSpecifier: ['imported', 'local'],\n        Literal: [],\n        LabeledStatement: ['label', 'body'],\n        LogicalExpression: ['left', 'right'],\n        MemberExpression: ['object', 'property'],\n        MetaProperty: ['meta', 'property'],\n        MethodDefinition: ['key', 'value'],\n        ModuleSpecifier: [],\n        NewExpression: ['callee', 'arguments'],\n        ObjectExpression: ['properties'],\n        ObjectPattern: ['properties'],\n        PrivateIdentifier: [],\n        Program: ['body'],\n        Property: ['key', 'value'],\n        PropertyDefinition: ['key', 'value'],\n        RestElement: [ 'argument' ],\n        ReturnStatement: ['argument'],\n        SequenceExpression: ['expressions'],\n        SpreadElement: ['argument'],\n        Super: [],\n        SwitchStatement: ['discriminant', 'cases'],\n        SwitchCase: ['test', 'consequent'],\n        TaggedTemplateExpression: ['tag', 'quasi'],\n        TemplateElement: [],\n        TemplateLiteral: ['quasis', 'expressions'],\n        ThisExpression: [],\n        ThrowStatement: ['argument'],\n        TryStatement: ['block', 'handler', 'finalizer'],\n        UnaryExpression: ['argument'],\n        UpdateExpression: ['argument'],\n        VariableDeclaration: ['declarations'],\n        VariableDeclarator: ['id', 'init'],\n        WhileStatement: ['test', 'body'],\n        WithStatement: ['object', 'body'],\n        YieldExpression: ['argument']\n    };\n\n    // unique id\n    BREAK = {};\n    SKIP = {};\n    REMOVE = {};\n\n    VisitorOption = {\n        Break: BREAK,\n        Skip: SKIP,\n        Remove: REMOVE\n    };\n\n    function Reference(parent, key) {\n        this.parent = parent;\n        this.key = key;\n    }\n\n    Reference.prototype.replace = function replace(node) {\n        this.parent[this.key] = node;\n    };\n\n    Reference.prototype.remove = function remove() {\n        if (Array.isArray(this.parent)) {\n            this.parent.splice(this.key, 1);\n            return true;\n        } else {\n            this.replace(null);\n            return false;\n        }\n    };\n\n    function Element(node, path, wrap, ref) {\n        this.node = node;\n        this.path = path;\n        this.wrap = wrap;\n        this.ref = ref;\n    }\n\n    function Controller() { }\n\n    // API:\n    // return property path array from root to current node\n    Controller.prototype.path = function path() {\n        var i, iz, j, jz, result, element;\n\n        function addToPath(result, path) {\n            if (Array.isArray(path)) {\n                for (j = 0, jz = path.length; j < jz; ++j) {\n                    result.push(path[j]);\n                }\n            } else {\n                result.push(path);\n            }\n        }\n\n        // root node\n        if (!this.__current.path) {\n            return null;\n        }\n\n        // first node is sentinel, second node is root element\n        result = [];\n        for (i = 2, iz = this.__leavelist.length; i < iz; ++i) {\n            element = this.__leavelist[i];\n            addToPath(result, element.path);\n        }\n        addToPath(result, this.__current.path);\n        return result;\n    };\n\n    // API:\n    // return type of current node\n    Controller.prototype.type = function () {\n        var node = this.current();\n        return node.type || this.__current.wrap;\n    };\n\n    // API:\n    // return array of parent elements\n    Controller.prototype.parents = function parents() {\n        var i, iz, result;\n\n        // first node is sentinel\n        result = [];\n        for (i = 1, iz = this.__leavelist.length; i < iz; ++i) {\n            result.push(this.__leavelist[i].node);\n        }\n\n        return result;\n    };\n\n    // API:\n    // return current node\n    Controller.prototype.current = function current() {\n        return this.__current.node;\n    };\n\n    Controller.prototype.__execute = function __execute(callback, element) {\n        var previous, result;\n\n        result = undefined;\n\n        previous  = this.__current;\n        this.__current = element;\n        this.__state = null;\n        if (callback) {\n            result = callback.call(this, element.node, this.__leavelist[this.__leavelist.length - 1].node);\n        }\n        this.__current = previous;\n\n        return result;\n    };\n\n    // API:\n    // notify control skip / break\n    Controller.prototype.notify = function notify(flag) {\n        this.__state = flag;\n    };\n\n    // API:\n    // skip child nodes of current node\n    Controller.prototype.skip = function () {\n        this.notify(SKIP);\n    };\n\n    // API:\n    // break traversals\n    Controller.prototype['break'] = function () {\n        this.notify(BREAK);\n    };\n\n    // API:\n    // remove node\n    Controller.prototype.remove = function () {\n        this.notify(REMOVE);\n    };\n\n    Controller.prototype.__initialize = function(root, visitor) {\n        this.visitor = visitor;\n        this.root = root;\n        this.__worklist = [];\n        this.__leavelist = [];\n        this.__current = null;\n        this.__state = null;\n        this.__fallback = null;\n        if (visitor.fallback === 'iteration') {\n            this.__fallback = Object.keys;\n        } else if (typeof visitor.fallback === 'function') {\n            this.__fallback = visitor.fallback;\n        }\n\n        this.__keys = VisitorKeys;\n        if (visitor.keys) {\n            this.__keys = Object.assign(Object.create(this.__keys), visitor.keys);\n        }\n    };\n\n    function isNode(node) {\n        if (node == null) {\n            return false;\n        }\n        return typeof node === 'object' && typeof node.type === 'string';\n    }\n\n    function isProperty(nodeType, key) {\n        return (nodeType === Syntax.ObjectExpression || nodeType === Syntax.ObjectPattern) && 'properties' === key;\n    }\n  \n    function candidateExistsInLeaveList(leavelist, candidate) {\n        for (var i = leavelist.length - 1; i >= 0; --i) {\n            if (leavelist[i].node === candidate) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    Controller.prototype.traverse = function traverse(root, visitor) {\n        var worklist,\n            leavelist,\n            element,\n            node,\n            nodeType,\n            ret,\n            key,\n            current,\n            current2,\n            candidates,\n            candidate,\n            sentinel;\n\n        this.__initialize(root, visitor);\n\n        sentinel = {};\n\n        // reference\n        worklist = this.__worklist;\n        leavelist = this.__leavelist;\n\n        // initialize\n        worklist.push(new Element(root, null, null, null));\n        leavelist.push(new Element(null, null, null, null));\n\n        while (worklist.length) {\n            element = worklist.pop();\n\n            if (element === sentinel) {\n                element = leavelist.pop();\n\n                ret = this.__execute(visitor.leave, element);\n\n                if (this.__state === BREAK || ret === BREAK) {\n                    return;\n                }\n                continue;\n            }\n\n            if (element.node) {\n\n                ret = this.__execute(visitor.enter, element);\n\n                if (this.__state === BREAK || ret === BREAK) {\n                    return;\n                }\n\n                worklist.push(sentinel);\n                leavelist.push(element);\n\n                if (this.__state === SKIP || ret === SKIP) {\n                    continue;\n                }\n\n                node = element.node;\n                nodeType = node.type || element.wrap;\n                candidates = this.__keys[nodeType];\n                if (!candidates) {\n                    if (this.__fallback) {\n                        candidates = this.__fallback(node);\n                    } else {\n                        throw new Error('Unknown node type ' + nodeType + '.');\n                    }\n                }\n\n                current = candidates.length;\n                while ((current -= 1) >= 0) {\n                    key = candidates[current];\n                    candidate = node[key];\n                    if (!candidate) {\n                        continue;\n                    }\n\n                    if (Array.isArray(candidate)) {\n                        current2 = candidate.length;\n                        while ((current2 -= 1) >= 0) {\n                            if (!candidate[current2]) {\n                                continue;\n                            }\n\n                            if (candidateExistsInLeaveList(leavelist, candidate[current2])) {\n                              continue;\n                            }\n\n                            if (isProperty(nodeType, candidates[current])) {\n                                element = new Element(candidate[current2], [key, current2], 'Property', null);\n                            } else if (isNode(candidate[current2])) {\n                                element = new Element(candidate[current2], [key, current2], null, null);\n                            } else {\n                                continue;\n                            }\n                            worklist.push(element);\n                        }\n                    } else if (isNode(candidate)) {\n                        if (candidateExistsInLeaveList(leavelist, candidate)) {\n                          continue;\n                        }\n\n                        worklist.push(new Element(candidate, key, null, null));\n                    }\n                }\n            }\n        }\n    };\n\n    Controller.prototype.replace = function replace(root, visitor) {\n        var worklist,\n            leavelist,\n            node,\n            nodeType,\n            target,\n            element,\n            current,\n            current2,\n            candidates,\n            candidate,\n            sentinel,\n            outer,\n            key;\n\n        function removeElem(element) {\n            var i,\n                key,\n                nextElem,\n                parent;\n\n            if (element.ref.remove()) {\n                // When the reference is an element of an array.\n                key = element.ref.key;\n                parent = element.ref.parent;\n\n                // If removed from array, then decrease following items' keys.\n                i = worklist.length;\n                while (i--) {\n                    nextElem = worklist[i];\n                    if (nextElem.ref && nextElem.ref.parent === parent) {\n                        if  (nextElem.ref.key < key) {\n                            break;\n                        }\n                        --nextElem.ref.key;\n                    }\n                }\n            }\n        }\n\n        this.__initialize(root, visitor);\n\n        sentinel = {};\n\n        // reference\n        worklist = this.__worklist;\n        leavelist = this.__leavelist;\n\n        // initialize\n        outer = {\n            root: root\n        };\n        element = new Element(root, null, null, new Reference(outer, 'root'));\n        worklist.push(element);\n        leavelist.push(element);\n\n        while (worklist.length) {\n            element = worklist.pop();\n\n            if (element === sentinel) {\n                element = leavelist.pop();\n\n                target = this.__execute(visitor.leave, element);\n\n                // node may be replaced with null,\n                // so distinguish between undefined and null in this place\n                if (target !== undefined && target !== BREAK && target !== SKIP && target !== REMOVE) {\n                    // replace\n                    element.ref.replace(target);\n                }\n\n                if (this.__state === REMOVE || target === REMOVE) {\n                    removeElem(element);\n                }\n\n                if (this.__state === BREAK || target === BREAK) {\n                    return outer.root;\n                }\n                continue;\n            }\n\n            target = this.__execute(visitor.enter, element);\n\n            // node may be replaced with null,\n            // so distinguish between undefined and null in this place\n            if (target !== undefined && target !== BREAK && target !== SKIP && target !== REMOVE) {\n                // replace\n                element.ref.replace(target);\n                element.node = target;\n            }\n\n            if (this.__state === REMOVE || target === REMOVE) {\n                removeElem(element);\n                element.node = null;\n            }\n\n            if (this.__state === BREAK || target === BREAK) {\n                return outer.root;\n            }\n\n            // node may be null\n            node = element.node;\n            if (!node) {\n                continue;\n            }\n\n            worklist.push(sentinel);\n            leavelist.push(element);\n\n            if (this.__state === SKIP || target === SKIP) {\n                continue;\n            }\n\n            nodeType = node.type || element.wrap;\n            candidates = this.__keys[nodeType];\n            if (!candidates) {\n                if (this.__fallback) {\n                    candidates = this.__fallback(node);\n                } else {\n                    throw new Error('Unknown node type ' + nodeType + '.');\n                }\n            }\n\n            current = candidates.length;\n            while ((current -= 1) >= 0) {\n                key = candidates[current];\n                candidate = node[key];\n                if (!candidate) {\n                    continue;\n                }\n\n                if (Array.isArray(candidate)) {\n                    current2 = candidate.length;\n                    while ((current2 -= 1) >= 0) {\n                        if (!candidate[current2]) {\n                            continue;\n                        }\n                        if (isProperty(nodeType, candidates[current])) {\n                            element = new Element(candidate[current2], [key, current2], 'Property', new Reference(candidate, current2));\n                        } else if (isNode(candidate[current2])) {\n                            element = new Element(candidate[current2], [key, current2], null, new Reference(candidate, current2));\n                        } else {\n                            continue;\n                        }\n                        worklist.push(element);\n                    }\n                } else if (isNode(candidate)) {\n                    worklist.push(new Element(candidate, key, null, new Reference(node, key)));\n                }\n            }\n        }\n\n        return outer.root;\n    };\n\n    function traverse(root, visitor) {\n        var controller = new Controller();\n        return controller.traverse(root, visitor);\n    }\n\n    function replace(root, visitor) {\n        var controller = new Controller();\n        return controller.replace(root, visitor);\n    }\n\n    function extendCommentRange(comment, tokens) {\n        var target;\n\n        target = upperBound(tokens, function search(token) {\n            return token.range[0] > comment.range[0];\n        });\n\n        comment.extendedRange = [comment.range[0], comment.range[1]];\n\n        if (target !== tokens.length) {\n            comment.extendedRange[1] = tokens[target].range[0];\n        }\n\n        target -= 1;\n        if (target >= 0) {\n            comment.extendedRange[0] = tokens[target].range[1];\n        }\n\n        return comment;\n    }\n\n    function attachComments(tree, providedComments, tokens) {\n        // At first, we should calculate extended comment ranges.\n        var comments = [], comment, len, i, cursor;\n\n        if (!tree.range) {\n            throw new Error('attachComments needs range information');\n        }\n\n        // tokens array is empty, we attach comments to tree as 'leadingComments'\n        if (!tokens.length) {\n            if (providedComments.length) {\n                for (i = 0, len = providedComments.length; i < len; i += 1) {\n                    comment = deepCopy(providedComments[i]);\n                    comment.extendedRange = [0, tree.range[0]];\n                    comments.push(comment);\n                }\n                tree.leadingComments = comments;\n            }\n            return tree;\n        }\n\n        for (i = 0, len = providedComments.length; i < len; i += 1) {\n            comments.push(extendCommentRange(deepCopy(providedComments[i]), tokens));\n        }\n\n        // This is based on John Freeman's implementation.\n        cursor = 0;\n        traverse(tree, {\n            enter: function (node) {\n                var comment;\n\n                while (cursor < comments.length) {\n                    comment = comments[cursor];\n                    if (comment.extendedRange[1] > node.range[0]) {\n                        break;\n                    }\n\n                    if (comment.extendedRange[1] === node.range[0]) {\n                        if (!node.leadingComments) {\n                            node.leadingComments = [];\n                        }\n                        node.leadingComments.push(comment);\n                        comments.splice(cursor, 1);\n                    } else {\n                        cursor += 1;\n                    }\n                }\n\n                // already out of owned node\n                if (cursor === comments.length) {\n                    return VisitorOption.Break;\n                }\n\n                if (comments[cursor].extendedRange[0] > node.range[1]) {\n                    return VisitorOption.Skip;\n                }\n            }\n        });\n\n        cursor = 0;\n        traverse(tree, {\n            leave: function (node) {\n                var comment;\n\n                while (cursor < comments.length) {\n                    comment = comments[cursor];\n                    if (node.range[1] < comment.extendedRange[0]) {\n                        break;\n                    }\n\n                    if (node.range[1] === comment.extendedRange[0]) {\n                        if (!node.trailingComments) {\n                            node.trailingComments = [];\n                        }\n                        node.trailingComments.push(comment);\n                        comments.splice(cursor, 1);\n                    } else {\n                        cursor += 1;\n                    }\n                }\n\n                // already out of owned node\n                if (cursor === comments.length) {\n                    return VisitorOption.Break;\n                }\n\n                if (comments[cursor].extendedRange[0] > node.range[1]) {\n                    return VisitorOption.Skip;\n                }\n            }\n        });\n\n        return tree;\n    }\n\n    exports.Syntax = Syntax;\n    exports.traverse = traverse;\n    exports.replace = replace;\n    exports.attachComments = attachComments;\n    exports.VisitorKeys = VisitorKeys;\n    exports.VisitorOption = VisitorOption;\n    exports.Controller = Controller;\n    exports.cloneEnvironment = function () { return clone({}); };\n\n    return exports;\n}(exports));\n/* vim: set sw=4 ts=4 et tw=80 : */\n", "{\n  \"name\": \"esrecurse\",\n  \"description\": \"ECMAScript AST recursive visitor\",\n  \"homepage\": \"https://github.com/estools/esrecurse\",\n  \"main\": \"esrecurse.js\",\n  \"version\": \"4.3.0\",\n  \"engines\": {\n    \"node\": \">=4.0\"\n  },\n  \"maintainers\": [\n    {\n      \"name\": \"Yusuke Suzuki\",\n      \"email\": \"utatane.tea@gmail.com\",\n      \"web\": \"https://github.com/Constellation\"\n    }\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/estools/esrecurse.git\"\n  },\n  \"dependencies\": {\n    \"estraverse\": \"^5.2.0\"\n  },\n  \"devDependencies\": {\n    \"babel-cli\": \"^6.24.1\",\n    \"babel-eslint\": \"^7.2.3\",\n    \"babel-preset-es2015\": \"^6.24.1\",\n    \"babel-register\": \"^6.24.1\",\n    \"chai\": \"^4.0.2\",\n    \"esprima\": \"^4.0.0\",\n    \"gulp\": \"^3.9.0\",\n    \"gulp-bump\": \"^2.7.0\",\n    \"gulp-eslint\": \"^4.0.0\",\n    \"gulp-filter\": \"^5.0.0\",\n    \"gulp-git\": \"^2.4.1\",\n    \"gulp-mocha\": \"^4.3.1\",\n    \"gulp-tag-version\": \"^1.2.1\",\n    \"jsdoc\": \"^3.3.0-alpha10\",\n    \"minimist\": \"^1.1.0\"\n  },\n  \"license\": \"BSD-2-Clause\",\n  \"scripts\": {\n    \"test\": \"gulp travis\",\n    \"unit-test\": \"gulp test\",\n    \"lint\": \"gulp lint\"\n  },\n  \"babel\": {\n    \"presets\": [\n      \"es2015\"\n    ]\n  }\n}\n", "/*\n  Copyright (C) 2014 Yusuke Suzuki <utatane.tea@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n(function () {\n    'use strict';\n\n    var estraverse = require('estraverse');\n\n    function isNode(node) {\n        if (node == null) {\n            return false;\n        }\n        return typeof node === 'object' && typeof node.type === 'string';\n    }\n\n    function isProperty(nodeType, key) {\n        return (nodeType === estraverse.Syntax.ObjectExpression || nodeType === estraverse.Syntax.ObjectPattern) && key === 'properties';\n    }\n\n    function Visitor(visitor, options) {\n        options = options || {};\n\n        this.__visitor = visitor ||  this;\n        this.__childVisitorKeys = options.childVisitorKeys\n            ? Object.assign({}, estraverse.VisitorKeys, options.childVisitorKeys)\n            : estraverse.VisitorKeys;\n        if (options.fallback === 'iteration') {\n            this.__fallback = Object.keys;\n        } else if (typeof options.fallback === 'function') {\n            this.__fallback = options.fallback;\n        }\n    }\n\n    /* Default method for visiting children.\n     * When you need to call default visiting operation inside custom visiting\n     * operation, you can use it with `this.visitChildren(node)`.\n     */\n    Visitor.prototype.visitChildren = function (node) {\n        var type, children, i, iz, j, jz, child;\n\n        if (node == null) {\n            return;\n        }\n\n        type = node.type || estraverse.Syntax.Property;\n\n        children = this.__childVisitorKeys[type];\n        if (!children) {\n            if (this.__fallback) {\n                children = this.__fallback(node);\n            } else {\n                throw new Error('Unknown node type ' + type + '.');\n            }\n        }\n\n        for (i = 0, iz = children.length; i < iz; ++i) {\n            child = node[children[i]];\n            if (child) {\n                if (Array.isArray(child)) {\n                    for (j = 0, jz = child.length; j < jz; ++j) {\n                        if (child[j]) {\n                            if (isNode(child[j]) || isProperty(type, children[i])) {\n                                this.visit(child[j]);\n                            }\n                        }\n                    }\n                } else if (isNode(child)) {\n                    this.visit(child);\n                }\n            }\n        }\n    };\n\n    /* Dispatching node. */\n    Visitor.prototype.visit = function (node) {\n        var type;\n\n        if (node == null) {\n            return;\n        }\n\n        type = node.type || estraverse.Syntax.Property;\n        if (this.__visitor[type]) {\n            this.__visitor[type].call(this, node);\n            return;\n        }\n        this.visitChildren(node);\n    };\n\n    exports.version = require('./package.json').version;\n    exports.Visitor = Visitor;\n    exports.visit = function (node, visitor, options) {\n        var v = new Visitor(visitor, options);\n        v.visit(node);\n    };\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n", "'use strict';\n\nvar estraverse = require('estraverse');\nvar esrecurse = require('esrecurse');\n\n/**\n * @fileoverview Assertion utilities.\n * @author Nicholas C. Zakas\n */\n\n/**\n * Throws an error if the given condition is not truthy.\n * @param {boolean} condition The condition to check.\n * @param {string} message The message to include with the error.\n * @returns {void}\n * @throws {Error} When the condition is not truthy.\n */\nfunction assert(condition, message = \"Assertion failed.\") {\n\tif (!condition) {\n\t\tthrow new Error(message);\n\t}\n}\n\n/*\n  Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/** @import * as types from \"eslint-scope\" */\n\nconst READ = 0x1;\nconst WRITE = 0x2;\nconst RW = READ | WRITE;\n\n/**\n * A Reference represents a single occurrence of an identifier in code.\n * @constructor Reference\n * @implements {types.Reference}\n */\nclass Reference {\n\tconstructor(\n\t\tident,\n\t\tscope,\n\t\tflag,\n\t\twriteExpr,\n\t\tmaybeImplicitGlobal,\n\t\tpartial,\n\t\tinit,\n\t) {\n\t\t/**\n\t\t * Identifier syntax node.\n\t\t * @member {espreeIdentifier} Reference#identifier\n\t\t */\n\t\tthis.identifier = ident;\n\n\t\t/**\n\t\t * Reference to the enclosing Scope.\n\t\t * @member {Scope} Reference#from\n\t\t */\n\t\tthis.from = scope;\n\n\t\t/**\n\t\t * Whether the reference comes from a dynamic scope (such as 'eval',\n\t\t * 'with', etc.), and may be trapped by dynamic scopes.\n\t\t * @member {boolean} Reference#tainted\n\t\t */\n\t\tthis.tainted = false;\n\n\t\t/**\n\t\t * The variable this reference is resolved with.\n\t\t * @member {Variable} Reference#resolved\n\t\t */\n\t\tthis.resolved = null;\n\n\t\t/**\n\t\t * The read-write mode of the reference. (Value is one of {@link\n\t\t * Reference.READ}, {@link Reference.RW}, {@link Reference.WRITE}).\n\t\t * @member {number} Reference#flag\n\t\t */\n\t\tthis.flag = flag;\n\t\tif (this.isWrite()) {\n\t\t\t/**\n\t\t\t * If reference is writeable, this is the tree being written to it.\n\t\t\t * @member {espreeNode} Reference#writeExpr\n\t\t\t */\n\t\t\tthis.writeExpr = writeExpr;\n\n\t\t\t/**\n\t\t\t * Whether the Reference might refer to a partial value of writeExpr.\n\t\t\t * @member {boolean} Reference#partial\n\t\t\t */\n\t\t\tthis.partial = partial;\n\n\t\t\t/**\n\t\t\t * Whether the Reference is to write of initialization.\n\t\t\t * @member {boolean} Reference#init\n\t\t\t */\n\t\t\tthis.init = init;\n\t\t}\n\t\tthis.__maybeImplicitGlobal = maybeImplicitGlobal;\n\t}\n\n\t/**\n\t * Whether the reference is static.\n\t * @function Reference#isStatic\n\t * @returns {boolean} static\n\t */\n\tisStatic() {\n\t\treturn (\n\t\t\t!this.tainted && !!this.resolved && this.resolved.scope.isStatic()\n\t\t);\n\t}\n\n\t/**\n\t * Whether the reference is writeable.\n\t * @function Reference#isWrite\n\t * @returns {boolean} write\n\t */\n\tisWrite() {\n\t\treturn !!(this.flag & Reference.WRITE);\n\t}\n\n\t/**\n\t * Whether the reference is readable.\n\t * @function Reference#isRead\n\t * @returns {boolean} read\n\t */\n\tisRead() {\n\t\treturn !!(this.flag & Reference.READ);\n\t}\n\n\t/**\n\t * Whether the reference is read-only.\n\t * @function Reference#isReadOnly\n\t * @returns {boolean} read only\n\t */\n\tisReadOnly() {\n\t\treturn this.flag === Reference.READ;\n\t}\n\n\t/**\n\t * Whether the reference is write-only.\n\t * @function Reference#isWriteOnly\n\t * @returns {boolean} write only\n\t */\n\tisWriteOnly() {\n\t\treturn this.flag === Reference.WRITE;\n\t}\n\n\t/**\n\t * Whether the reference is read-write.\n\t * @function Reference#isReadWrite\n\t * @returns {boolean} read write\n\t */\n\tisReadWrite() {\n\t\treturn this.flag === Reference.RW;\n\t}\n}\n\n/**\n * @constant Reference.READ\n */\nReference.READ = READ;\n\n/**\n * @constant Reference.WRITE\n */\nReference.WRITE = WRITE;\n\n/**\n * @constant Reference.RW\n */\nReference.RW = RW;\n\n/* vim: set sw=4 ts=4 et tw=80 : */\n\n/*\n  Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/** @import * as types from \"eslint-scope\" */\n/** @import Reference from \"./reference.js\" */\n\n/**\n * A Variable represents a locally scoped identifier. These include arguments to\n * functions.\n * @constructor Variable\n * @implements {types.Variable}\n */\nclass Variable {\n\tconstructor(name, scope) {\n\t\t/**\n\t\t * The variable name, as given in the source code.\n\t\t * @member {string} Variable#name\n\t\t */\n\t\tthis.name = name;\n\n\t\t/**\n\t\t * List of defining occurrences of this variable (like in 'var ...'\n\t\t * statements or as parameter), as AST nodes.\n\t\t * @member {espree.Identifier[]} Variable#identifiers\n\t\t */\n\t\tthis.identifiers = [];\n\n\t\t/**\n\t\t * List of {@link Reference|references} of this variable (excluding parameter entries)\n\t\t * in its defining scope and all nested scopes. For defining\n\t\t * occurrences only see {@link Variable#defs}.\n\t\t * @member {Reference[]} Variable#references\n\t\t */\n\t\tthis.references = [];\n\n\t\t/**\n\t\t * List of defining occurrences of this variable (like in 'var ...'\n\t\t * statements or as parameter), as custom objects.\n\t\t * @member {Definition[]} Variable#defs\n\t\t */\n\t\tthis.defs = [];\n\n\t\tthis.tainted = false;\n\n\t\t/**\n\t\t * Whether this is a stack variable.\n\t\t * @member {boolean} Variable#stack\n\t\t */\n\t\tthis.stack = true;\n\n\t\t/**\n\t\t * Reference to the enclosing Scope.\n\t\t * @member {Scope} Variable#scope\n\t\t */\n\t\tthis.scope = scope;\n\t}\n}\n\nVariable.CatchClause = \"CatchClause\";\nVariable.Parameter = \"Parameter\";\nVariable.FunctionName = \"FunctionName\";\nVariable.ClassName = \"ClassName\";\nVariable.Variable = \"Variable\";\nVariable.ImportBinding = \"ImportBinding\";\nVariable.ImplicitGlobalVariable = \"ImplicitGlobalVariable\";\n\n/* vim: set sw=4 ts=4 et tw=80 : */\n\n/*\n  Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n\n/** @import * as types from \"eslint-scope\" */\n\n// Cannot implement `types.Definition` directly because it contains a union.\n/**\n * @constructor Definition\n * @implements {Omit<types.Definition, never>}\n */\nclass Definition {\n\tconstructor(type, name, node, parent, index, kind) {\n\t\t/**\n\t\t * @member {string} Definition#type - type of the occurrence (e.g. \"Parameter\", \"Variable\", ...).\n\t\t */\n\t\tthis.type = type;\n\n\t\t/**\n\t\t * @member {espree.Identifier} Definition#name - the identifier AST node of the occurrence.\n\t\t */\n\t\tthis.name = name;\n\n\t\t/**\n\t\t * @member {espree.Node} Definition#node - the enclosing node of the identifier.\n\t\t */\n\t\tthis.node = node;\n\n\t\t/**\n\t\t * @member {espree.Node?} Definition#parent - the enclosing statement node of the identifier.\n\t\t */\n\t\tthis.parent = parent;\n\n\t\t/**\n\t\t * @member {number?} Definition#index - the index in the declaration statement.\n\t\t */\n\t\tthis.index = index;\n\n\t\t/**\n\t\t * @member {string?} Definition#kind - the kind of the declaration statement.\n\t\t */\n\t\tthis.kind = kind;\n\t}\n}\n\n/**\n * @constructor ParameterDefinition\n */\nclass ParameterDefinition extends Definition {\n\tconstructor(name, node, index, rest) {\n\t\tsuper(Variable.Parameter, name, node, null, index, null);\n\n\t\t/**\n\t\t * Whether the parameter definition is a part of a rest parameter.\n\t\t * @member {boolean} ParameterDefinition#rest\n\t\t */\n\t\tthis.rest = rest;\n\t}\n}\n\n/* vim: set sw=4 ts=4 et tw=80 : */\n\n/*\n  Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n\n/** @import * as types from \"eslint-scope\" */\n/** @import ESTree from \"estree\" */\n/** @import ScopeManager from \"./scope-manager.js\" */\n/** @typedef {ESTree.Function | ESTree.Program | ESTree.StaticBlock} Block */\n/** @typedef {{pattern: unknown, node: unknown}} MaybeImplicitGlobal */\n\nconst { Syntax: Syntax$2 } = estraverse;\n\n/**\n * Test if scope is struct\n * @param {Scope} scope scope\n * @param {Block} block block\n * @param {boolean} isMethodDefinition is method definition\n * @returns {boolean} is strict scope\n */\nfunction isStrictScope(scope, block, isMethodDefinition) {\n\tlet body;\n\n\t// When upper scope is exists and strict, inner scope is also strict.\n\tif (scope.upper && scope.upper.isStrict) {\n\t\treturn true;\n\t}\n\n\tif (isMethodDefinition) {\n\t\treturn true;\n\t}\n\n\tif (scope.type === \"class\" || scope.type === \"module\") {\n\t\treturn true;\n\t}\n\n\tif (scope.type === \"block\" || scope.type === \"switch\") {\n\t\treturn false;\n\t}\n\n\tif (scope.type === \"function\") {\n\t\tif (\n\t\t\tblock.type === Syntax$2.ArrowFunctionExpression &&\n\t\t\t// @ts-ignore -- when block is ArrowFunctionExpression\n\t\t\tblock.body.type !== Syntax$2.BlockStatement\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (block.type === Syntax$2.Program) {\n\t\t\tbody = block;\n\t\t} else {\n\t\t\tbody = block.body;\n\t\t}\n\n\t\tif (!body) {\n\t\t\treturn false;\n\t\t}\n\t} else if (scope.type === \"global\") {\n\t\tbody = block;\n\t} else {\n\t\treturn false;\n\t}\n\n\t// Search for a 'use strict' directive.\n\t// @ts-ignore -- body is a function body\n\tfor (let i = 0, iz = body.body.length; i < iz; ++i) {\n\t\t// @ts-ignore -- body is a function body\n\t\tconst stmt = body.body[i];\n\n\t\t/*\n\t\t * Check if the current statement is a directive.\n\t\t * If it isn't, then we're past the directive prologue\n\t\t * so stop the search because directives cannot\n\t\t * appear after this point.\n\t\t *\n\t\t * Some parsers set `directive:null` on non-directive\n\t\t * statements, so the `typeof` check is safer than\n\t\t * checking for property existence.\n\t\t */\n\t\tif (typeof stmt.directive !== \"string\") {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (stmt.directive === \"use strict\") {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Register scope\n * @param {ScopeManager} scopeManager scope manager\n * @param {Scope} scope scope\n * @returns {void}\n */\nfunction registerScope(scopeManager, scope) {\n\tscopeManager.scopes.push(scope);\n\n\tconst scopes = scopeManager.__nodeToScope.get(scope.block);\n\n\tif (scopes) {\n\t\tscopes.push(scope);\n\t} else {\n\t\tscopeManager.__nodeToScope.set(scope.block, [scope]);\n\t}\n}\n\n/**\n * @constructor Scope\n * @implements {types.Scope}\n */\nclass Scope {\n\tconstructor(scopeManager, type, upperScope, block, isMethodDefinition) {\n\t\t/**\n\t\t * One of \"global\", \"module\", \"function\", \"function-expression-name\", \"block\", \"switch\", \"catch\", \"with\", \"for\",\n\t\t * \"class\", \"class-field-initializer\", \"class-static-block\".\n\t\t * @member {string} Scope#type\n\t\t */\n\t\tthis.type = type;\n\n\t\t/**\n\t\t * The scoped {@link Variable}s of this scope, as <code>{ Variable.name\n\t\t * : Variable }</code>.\n\t\t * @member {Map} Scope#set\n\t\t */\n\t\tthis.set = new Map();\n\n\t\t/**\n\t\t * The tainted variables of this scope, as <code>{ Variable.name :\n\t\t * boolean }</code>.\n\t\t *  @member {Map} Scope#taints\n\t\t */\n\t\tthis.taints = new Map();\n\n\t\t/**\n\t\t * Generally, through the lexical scoping of JS you can always know\n\t\t * which variable an identifier in the source code refers to. There are\n\t\t * a few exceptions to this rule. With 'global' and 'with' scopes you\n\t\t * can only decide at runtime which variable a reference refers to.\n\t\t * Moreover, if 'eval()' is used in a scope, it might introduce new\n\t\t * bindings in this or its parent scopes.\n\t\t * All those scopes are considered 'dynamic'.\n\t\t * @member {boolean} Scope#dynamic\n\t\t */\n\t\tthis.dynamic = this.type === \"global\" || this.type === \"with\";\n\n\t\t/**\n\t\t * A reference to the scope-defining syntax node.\n\t\t * @member {espree.Node} Scope#block\n\t\t */\n\t\tthis.block = block;\n\n\t\t/**\n\t\t * The {@link Reference|references} that are not resolved with this scope.\n\t\t * @member {Reference[]} Scope#through\n\t\t */\n\t\tthis.through = [];\n\n\t\t/**\n\t\t * The scoped {@link Variable}s of this scope. In the case of a\n\t\t * 'function' scope this includes the automatic argument <em>arguments</em> as\n\t\t * its first element, as well as all further formal arguments.\n\t\t * @member {Variable[]} Scope#variables\n\t\t */\n\t\tthis.variables = [];\n\n\t\t/**\n\t\t * Any variable {@link Reference|reference} found in this scope. This\n\t\t * includes occurrences of local variables as well as variables from\n\t\t * parent scopes (including the global scope). For local variables\n\t\t * this also includes defining occurrences (like in a 'var' statement).\n\t\t * In a 'function' scope this does not include the occurrences of the\n\t\t * formal parameter in the parameter list.\n\t\t * @member {Reference[]} Scope#references\n\t\t */\n\t\tthis.references = [];\n\n\t\t/**\n\t\t * For 'global' and 'function' scopes, this is a self-reference. For\n\t\t * other scope types this is the <em>variableScope</em> value of the\n\t\t * parent scope.\n\t\t * @member {Scope} Scope#variableScope\n\t\t */\n\t\tthis.variableScope =\n\t\t\tthis.type === \"global\" ||\n\t\t\tthis.type === \"module\" ||\n\t\t\tthis.type === \"function\" ||\n\t\t\tthis.type === \"class-field-initializer\" ||\n\t\t\tthis.type === \"class-static-block\"\n\t\t\t\t? this\n\t\t\t\t: upperScope.variableScope;\n\n\t\t/**\n\t\t * Whether this scope is created by a FunctionExpression.\n\t\t * @member {boolean} Scope#functionExpressionScope\n\t\t */\n\t\tthis.functionExpressionScope = /** @type {any} */ (false);\n\n\t\t/**\n\t\t * Whether this is a scope that contains an 'eval()' invocation.\n\t\t * @member {boolean} Scope#directCallToEvalScope\n\t\t */\n\t\tthis.directCallToEvalScope = false;\n\n\t\t/**\n\t\t * @member {boolean} Scope#thisFound\n\t\t */\n\t\tthis.thisFound = false;\n\n\t\t/** @type {?Reference[]} */\n\t\tthis.__left = [];\n\n\t\t/**\n\t\t * Reference to the parent {@link Scope|scope}.\n\t\t * @member {Scope} Scope#upper\n\t\t */\n\t\tthis.upper = upperScope;\n\n\t\t/**\n\t\t * Whether 'use strict' is in effect in this scope.\n\t\t * @member {boolean} Scope#isStrict\n\t\t */\n\t\tthis.isStrict = scopeManager.isStrictModeSupported()\n\t\t\t? isStrictScope(this, block, isMethodDefinition)\n\t\t\t: false;\n\n\t\t/**\n\t\t * List of nested {@link Scope}s.\n\t\t * @member {Scope[]} Scope#childScopes\n\t\t */\n\t\tthis.childScopes = [];\n\t\tif (this.upper) {\n\t\t\tthis.upper.childScopes.push(this);\n\t\t}\n\n\t\tthis.__declaredVariables = scopeManager.__declaredVariables;\n\n\t\tregisterScope(scopeManager, this);\n\t}\n\n\t__shouldStaticallyClose(scopeManager) {\n\t\treturn (\n\t\t\t!this.dynamic ||\n\t\t\tscopeManager.__isOptimistic() ||\n\t\t\tthis.type === \"global\"\n\t\t);\n\t}\n\n\t__staticCloseRef(ref) {\n\t\tif (!this.__resolve(ref)) {\n\t\t\tthis.__delegateToUpperScope(ref);\n\t\t}\n\t}\n\n\t__dynamicCloseRef(ref) {\n\t\t// notify all names are through to global\n\t\tlet current = this;\n\n\t\tdo {\n\t\t\tcurrent.through.push(ref);\n\t\t\tcurrent = current.upper;\n\t\t} while (current);\n\t}\n\n\t__close(scopeManager) {\n\t\tlet closeRef;\n\n\t\tif (this.__shouldStaticallyClose(scopeManager)) {\n\t\t\tcloseRef = this.__staticCloseRef;\n\t\t} else {\n\t\t\tcloseRef = this.__dynamicCloseRef;\n\t\t}\n\n\t\t// Try Resolving all references in this scope.\n\t\t// @ts-ignore -- __left should be an array here\n\t\tfor (let i = 0, iz = this.__left.length; i < iz; ++i) {\n\t\t\t// @ts-ignore -- __left should be an array here\n\t\t\tconst ref = this.__left[i];\n\n\t\t\tcloseRef.call(this, ref);\n\t\t}\n\t\tthis.__left = null;\n\n\t\treturn this.upper;\n\t}\n\n\t// To override by function scopes.\n\t// References in default parameters isn't resolved to variables which are in their function body.\n\t// eslint-disable-next-line class-methods-use-this, no-unused-vars  -- Desired as instance method with signature\n\t__isValidResolution(ref, variable) {\n\t\treturn true;\n\t}\n\n\t__resolve(ref) {\n\t\tconst name = ref.identifier.name;\n\n\t\tif (!this.set.has(name)) {\n\t\t\treturn false;\n\t\t}\n\t\tconst variable = this.set.get(name);\n\n\t\tif (!this.__isValidResolution(ref, variable)) {\n\t\t\treturn false;\n\t\t}\n\t\tvariable.references.push(ref);\n\t\tvariable.stack =\n\t\t\tvariable.stack && ref.from.variableScope === this.variableScope;\n\t\tif (ref.tainted) {\n\t\t\tvariable.tainted = true;\n\t\t\tthis.taints.set(variable.name, true);\n\t\t}\n\t\tref.resolved = variable;\n\n\t\treturn true;\n\t}\n\n\t__delegateToUpperScope(ref) {\n\t\tif (this.upper) {\n\t\t\tthis.upper.__left.push(ref);\n\t\t}\n\t\tthis.through.push(ref);\n\t}\n\n\t__addDeclaredVariablesOfNode(variable, node) {\n\t\tif (node === null || node === void 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet variables = this.__declaredVariables.get(node);\n\n\t\tif (variables === null || variables === void 0) {\n\t\t\tvariables = [];\n\t\t\tthis.__declaredVariables.set(node, variables);\n\t\t}\n\t\tif (!variables.includes(variable)) {\n\t\t\tvariables.push(variable);\n\t\t}\n\t}\n\n\t__defineGeneric(name, set, variables, node, def) {\n\t\tlet variable;\n\n\t\tvariable = set.get(name);\n\t\tif (!variable) {\n\t\t\tvariable = new Variable(name, this);\n\t\t\tset.set(name, variable);\n\t\t\tvariables.push(variable);\n\t\t}\n\n\t\tif (def) {\n\t\t\tvariable.defs.push(def);\n\t\t\tthis.__addDeclaredVariablesOfNode(variable, def.node);\n\t\t\tthis.__addDeclaredVariablesOfNode(variable, def.parent);\n\t\t}\n\t\tif (node) {\n\t\t\tvariable.identifiers.push(node);\n\t\t}\n\t}\n\n\t__define(node, def) {\n\t\tif (node && node.type === Syntax$2.Identifier) {\n\t\t\tthis.__defineGeneric(\n\t\t\t\tnode.name,\n\t\t\t\tthis.set,\n\t\t\t\tthis.variables,\n\t\t\t\tnode,\n\t\t\t\tdef,\n\t\t\t);\n\t\t}\n\t}\n\n\t__referencing(node, assign, writeExpr, maybeImplicitGlobal, partial, init) {\n\t\t// because Array element may be null\n\t\tif (\n\t\t\t!node ||\n\t\t\t(node.type !== Syntax$2.Identifier && node.type !== \"JSXIdentifier\")\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Specially handle like `this`.\n\t\tif (node.name === \"super\") {\n\t\t\treturn;\n\t\t}\n\n\t\tconst ref = new Reference(\n\t\t\tnode,\n\t\t\tthis,\n\t\t\tassign || Reference.READ,\n\t\t\twriteExpr,\n\t\t\tmaybeImplicitGlobal,\n\t\t\t!!partial,\n\t\t\t!!init,\n\t\t);\n\n\t\tthis.references.push(ref);\n\n\t\t// @ts-ignore -- __left should be an array here\n\t\tthis.__left.push(ref);\n\t}\n\n\t__detectEval() {\n\t\tlet current = this;\n\n\t\tthis.directCallToEvalScope = true;\n\t\tdo {\n\t\t\tcurrent.dynamic = true;\n\t\t\tcurrent = current.upper;\n\t\t} while (current);\n\t}\n\n\t__detectThis() {\n\t\tthis.thisFound = true;\n\t}\n\n\t__isClosed() {\n\t\treturn this.__left === null;\n\t}\n\n\t/**\n\t * returns resolved {Reference}\n\t * @function Scope#resolve\n\t * @param {ESTree.Identifier} ident identifier to be resolved.\n\t * @returns {?Reference} reference\n\t */\n\tresolve(ident) {\n\t\tlet ref, i, iz;\n\n\t\tassert(this.__isClosed(), \"Scope should be closed.\");\n\t\tassert(\n\t\t\tident.type === Syntax$2.Identifier,\n\t\t\t\"Target should be identifier.\",\n\t\t);\n\t\tfor (i = 0, iz = this.references.length; i < iz; ++i) {\n\t\t\tref = this.references[i];\n\t\t\tif (ref.identifier === ident) {\n\t\t\t\treturn ref;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * returns this scope is static\n\t * @function Scope#isStatic\n\t * @returns {boolean} static\n\t */\n\tisStatic() {\n\t\treturn !this.dynamic;\n\t}\n\n\t/**\n\t * returns this scope has materialized arguments\n\t * @function Scope#isArgumentsMaterialized\n\t * @returns {any} arguments materialized\n\t */ // eslint-disable-next-line class-methods-use-this -- Desired as instance method\n\tisArgumentsMaterialized() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * returns this scope has materialized `this` reference\n\t * @function Scope#isThisMaterialized\n\t * @returns {any} this materialized\n\t */ // eslint-disable-next-line class-methods-use-this -- Desired as instance method\n\tisThisMaterialized() {\n\t\treturn true;\n\t}\n\n\tisUsedName(name) {\n\t\tif (this.set.has(name)) {\n\t\t\treturn true;\n\t\t}\n\t\tfor (let i = 0, iz = this.through.length; i < iz; ++i) {\n\t\t\tif (this.through[i].identifier.name === name) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n}\n\n/**\n * Global scope.\n * @implements {types.GlobalScope}\n */\nclass GlobalScope extends Scope {\n\tconstructor(scopeManager, block) {\n\t\tsuper(scopeManager, \"global\", null, block, false);\n\t\tthis.implicit = {\n\t\t\tset: new Map(),\n\n\t\t\t/** @type {Variable[]} */\n\t\t\tvariables: [],\n\n\t\t\t/**\n\t\t\t * List of {@link Reference}s that are left to be resolved (i.e. which\n\t\t\t * need to be linked to the variable they refer to).\n\t\t\t * @member {Reference[]} Scope#implicit#left\n\t\t\t * @type {Reference[]}\n\t\t\t */\n\t\t\tleft: [],\n\t\t};\n\t}\n\n\t__close(scopeManager) {\n\t\tconst implicit = [];\n\n\t\t// @ts-ignore -- __left should be an array here\n\t\tfor (let i = 0, iz = this.__left.length; i < iz; ++i) {\n\t\t\t// @ts-ignore -- __left should be an array here\n\t\t\tconst ref = this.__left[i];\n\n\t\t\tif (\n\t\t\t\tref.__maybeImplicitGlobal &&\n\t\t\t\t!this.set.has(ref.identifier.name)\n\t\t\t) {\n\t\t\t\timplicit.push(ref.__maybeImplicitGlobal);\n\t\t\t}\n\t\t}\n\n\t\t// create an implicit global variable from assignment expression\n\t\tfor (let i = 0, iz = implicit.length; i < iz; ++i) {\n\t\t\tconst info = implicit[i];\n\n\t\t\tthis.__defineImplicit(\n\t\t\t\tinfo.pattern,\n\t\t\t\tnew Definition(\n\t\t\t\t\tVariable.ImplicitGlobalVariable,\n\t\t\t\t\tinfo.pattern,\n\t\t\t\t\tinfo.node,\n\t\t\t\t\tnull,\n\t\t\t\t\tnull,\n\t\t\t\t\tnull,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\n\t\tsuper.__close(scopeManager);\n\n\t\tthis.implicit.left = [...this.through];\n\n\t\treturn null;\n\t}\n\n\t__defineImplicit(node, def) {\n\t\tif (node && node.type === Syntax$2.Identifier) {\n\t\t\tthis.__defineGeneric(\n\t\t\t\tnode.name,\n\t\t\t\tthis.implicit.set,\n\t\t\t\tthis.implicit.variables,\n\t\t\t\tnode,\n\t\t\t\tdef,\n\t\t\t);\n\t\t}\n\t}\n\n\t__addVariables(names) {\n\t\tfor (const name of names) {\n\t\t\tthis.__defineGeneric(name, this.set, this.variables, null, null);\n\t\t}\n\n\t\tconst namesSet = new Set(names);\n\n\t\tthis.through = this.through.filter(reference => {\n\t\t\tconst name = reference.identifier.name;\n\n\t\t\tif (namesSet.has(name)) {\n\t\t\t\tconst variable = this.set.get(name);\n\n\t\t\t\treference.resolved = variable;\n\t\t\t\tvariable.references.push(reference);\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\n\t\tthis.implicit.variables = this.implicit.variables.filter(variable => {\n\t\t\tconst name = variable.name;\n\n\t\t\tif (namesSet.has(name)) {\n\t\t\t\tthis.implicit.set.delete(name);\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\n\t\tthis.implicit.left = this.implicit.left.filter(\n\t\t\treference => !namesSet.has(reference.identifier.name),\n\t\t);\n\t}\n}\n\n/**\n * Module scope.\n * @implements {types.ModuleScope}\n */\nclass ModuleScope extends Scope {\n\tconstructor(scopeManager, upperScope, block) {\n\t\tsuper(scopeManager, \"module\", upperScope, block, false);\n\t}\n}\n\n/**\n * Function expression name scope.\n * @implements {types.FunctionExpressionNameScope}\n */\nclass FunctionExpressionNameScope extends Scope {\n\tconstructor(scopeManager, upperScope, block) {\n\t\tsuper(\n\t\t\tscopeManager,\n\t\t\t\"function-expression-name\",\n\t\t\tupperScope,\n\t\t\tblock,\n\t\t\tfalse,\n\t\t);\n\t\tthis.__define(\n\t\t\tblock.id,\n\t\t\tnew Definition(\n\t\t\t\tVariable.FunctionName,\n\t\t\t\tblock.id,\n\t\t\t\tblock,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t),\n\t\t);\n\t\tthis.functionExpressionScope = /** @type {const} */ (true);\n\t}\n}\n\n/**\n * Catch scope.\n * @implements {types.CatchScope}\n */\nclass CatchScope extends Scope {\n\tconstructor(scopeManager, upperScope, block) {\n\t\tsuper(scopeManager, \"catch\", upperScope, block, false);\n\t}\n}\n\n/**\n * With statement scope.\n * @implements {types.WithScope}\n */\nclass WithScope extends Scope {\n\tconstructor(scopeManager, upperScope, block) {\n\t\tsuper(scopeManager, \"with\", upperScope, block, false);\n\t}\n\n\t__close(scopeManager) {\n\t\tif (this.__shouldStaticallyClose(scopeManager)) {\n\t\t\treturn super.__close(scopeManager);\n\t\t}\n\n\t\t// @ts-ignore -- __left should be an array here\n\t\tfor (let i = 0, iz = this.__left.length; i < iz; ++i) {\n\t\t\t// @ts-ignore -- __left should be an array here\n\t\t\tconst ref = this.__left[i];\n\n\t\t\tref.tainted = true;\n\t\t\tthis.__delegateToUpperScope(ref);\n\t\t}\n\t\tthis.__left = null;\n\n\t\treturn this.upper;\n\t}\n}\n\n/**\n * Block scope.\n * @implements {types.BlockScope}\n */\nclass BlockScope extends Scope {\n\tconstructor(scopeManager, upperScope, block) {\n\t\tsuper(scopeManager, \"block\", upperScope, block, false);\n\t}\n}\n\n/**\n * Switch scope.\n * @implements {types.SwitchScope}\n */\nclass SwitchScope extends Scope {\n\tconstructor(scopeManager, upperScope, block) {\n\t\tsuper(scopeManager, \"switch\", upperScope, block, false);\n\t}\n}\n\n/**\n * Function scope.\n * @implements {types.FunctionScope}\n */\nclass FunctionScope extends Scope {\n\tconstructor(scopeManager, upperScope, block, isMethodDefinition) {\n\t\tsuper(scopeManager, \"function\", upperScope, block, isMethodDefinition);\n\n\t\t// section 9.2.13, FunctionDeclarationInstantiation.\n\t\t// NOTE Arrow functions never have an arguments objects.\n\t\tif (this.block.type !== Syntax$2.ArrowFunctionExpression) {\n\t\t\tthis.__defineArguments();\n\t\t}\n\t}\n\n\tisArgumentsMaterialized() {\n\t\t// TODO(Constellation)\n\t\t// We can more aggressive on this condition like this.\n\t\t//\n\t\t// function t() {\n\t\t//     // arguments of t is always hidden.\n\t\t//     function arguments() {\n\t\t//     }\n\t\t// }\n\t\tif (this.block.type === Syntax$2.ArrowFunctionExpression) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this.isStatic()) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst variable = this.set.get(\"arguments\");\n\n\t\tassert(variable, \"Always have arguments variable.\");\n\t\treturn variable.tainted || variable.references.length !== 0;\n\t}\n\n\tisThisMaterialized() {\n\t\tif (!this.isStatic()) {\n\t\t\treturn true;\n\t\t}\n\t\treturn this.thisFound;\n\t}\n\n\t__defineArguments() {\n\t\tthis.__defineGeneric(\"arguments\", this.set, this.variables, null, null);\n\t\tthis.taints.set(\"arguments\", true);\n\t}\n\n\t// References in default parameters isn't resolved to variables which are in their function body.\n\t//     const x = 1\n\t//     function f(a = x) { // This `x` is resolved to the `x` in the outer scope.\n\t//         const x = 2\n\t//         console.log(a)\n\t//     }\n\t__isValidResolution(ref, variable) {\n\t\t// If `options.nodejsScope` is true, `this.block` becomes a Program node.\n\t\tif (this.block.type === \"Program\") {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst bodyStart = this.block.body.range[0];\n\n\t\t// It's invalid resolution in the following case:\n\t\treturn !(\n\t\t\tvariable.scope === this &&\n\t\t\tref.identifier.range[0] < bodyStart && // the reference is in the parameter part.\n\t\t\tvariable.defs.every(d => d.name.range[0] >= bodyStart) // the variable is in the body.\n\t\t);\n\t}\n}\n\n/**\n * Scope of for, for-in, and for-of statements.\n * @implements {types.ForScope}\n */\nclass ForScope extends Scope {\n\tconstructor(scopeManager, upperScope, block) {\n\t\tsuper(scopeManager, \"for\", upperScope, block, false);\n\t}\n}\n\n/**\n * Class scope.\n * @implements {types.ClassScope}\n */\nclass ClassScope extends Scope {\n\tconstructor(scopeManager, upperScope, block) {\n\t\tsuper(scopeManager, \"class\", upperScope, block, false);\n\t}\n}\n\n/**\n * Class field initializer scope.\n * @implements {types.ClassFieldInitializerScope}\n */\nclass ClassFieldInitializerScope extends Scope {\n\tconstructor(scopeManager, upperScope, block) {\n\t\tsuper(scopeManager, \"class-field-initializer\", upperScope, block, true);\n\t}\n}\n\n/**\n * Class static block scope.\n * @implements {types.ClassStaticBlockScope}\n */\nclass ClassStaticBlockScope extends Scope {\n\tconstructor(scopeManager, upperScope, block) {\n\t\tsuper(scopeManager, \"class-static-block\", upperScope, block, true);\n\t}\n}\n\n/* vim: set sw=4 ts=4 et tw=80 : */\n\n/*\n  Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n\n/** @import * as types from \"eslint-scope\" */\n/** @import ESTree from \"estree\" */\n/** @import { Scope } from \"./scope.js\" */\n/** @import Variable from \"./variable.js\" */\n\n/**\n * @constructor ScopeManager\n * @implements {types.ScopeManager}\n */\nclass ScopeManager {\n\tconstructor(options) {\n\t\tthis.scopes = [];\n\t\tthis.globalScope = null;\n\t\tthis.__nodeToScope = new WeakMap();\n\t\tthis.__currentScope = null;\n\t\tthis.__options = options;\n\t\tthis.__declaredVariables = new WeakMap();\n\t}\n\n\t__isOptimistic() {\n\t\treturn this.__options.optimistic;\n\t}\n\n\t__ignoreEval() {\n\t\treturn this.__options.ignoreEval;\n\t}\n\n\t__isJSXEnabled() {\n\t\treturn this.__options.jsx === true;\n\t}\n\n\tisGlobalReturn() {\n\t\treturn (\n\t\t\tthis.__options.nodejsScope ||\n\t\t\tthis.__options.sourceType === \"commonjs\"\n\t\t);\n\t}\n\n\tisModule() {\n\t\treturn this.__options.sourceType === \"module\";\n\t}\n\n\tisImpliedStrict() {\n\t\treturn !!this.__options.impliedStrict;\n\t}\n\n\tisStrictModeSupported() {\n\t\treturn this.__options.ecmaVersion >= 5;\n\t}\n\n\t// Returns appropriate scope for this node.\n\t__get(node) {\n\t\treturn this.__nodeToScope.get(node);\n\t}\n\n\t/**\n\t * Get variables that are declared by the node.\n\t *\n\t * \"are declared by the node\" means the node is same as `Variable.defs[].node` or `Variable.defs[].parent`.\n\t * If the node declares nothing, this method returns an empty array.\n\t * CAUTION: This API is experimental. See https://github.com/estools/escope/pull/69 for more details.\n\t * @param {ESTree.Node} node a node to get.\n\t * @returns {Variable[]} variables that declared by the node.\n\t */\n\tgetDeclaredVariables(node) {\n\t\treturn this.__declaredVariables.get(node) || [];\n\t}\n\n\t/**\n\t * acquire scope from node.\n\t * @function ScopeManager#acquire\n\t * @param {ESTree.Node} node node for the acquired scope.\n\t * @param {?boolean} [inner=false] look up the most inner scope, default value is false.\n\t * @returns {Scope?} Scope from node\n\t */\n\tacquire(node, inner) {\n\t\t/**\n\t\t * predicate\n\t\t * @param {Scope} testScope scope to test\n\t\t * @returns {boolean} predicate\n\t\t */\n\t\tfunction predicate(testScope) {\n\t\t\tif (\n\t\t\t\ttestScope.type === \"function\" &&\n\t\t\t\ttestScope.functionExpressionScope\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tconst scopes = this.__get(node);\n\n\t\tif (!scopes || scopes.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Heuristic selection from all scopes.\n\t\t// If you would like to get all scopes, please use ScopeManager#acquireAll.\n\t\tif (scopes.length === 1) {\n\t\t\treturn scopes[0];\n\t\t}\n\n\t\tif (inner) {\n\t\t\tfor (let i = scopes.length - 1; i >= 0; --i) {\n\t\t\t\tconst scope = scopes[i];\n\n\t\t\t\tif (predicate(scope)) {\n\t\t\t\t\treturn scope;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let i = 0, iz = scopes.length; i < iz; ++i) {\n\t\t\t\tconst scope = scopes[i];\n\n\t\t\t\tif (predicate(scope)) {\n\t\t\t\t\treturn scope;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * acquire all scopes from node.\n\t * @function ScopeManager#acquireAll\n\t * @param {ESTree.Node} node node for the acquired scope.\n\t * @returns {Scope[]?} Scope array\n\t */\n\tacquireAll(node) {\n\t\treturn this.__get(node);\n\t}\n\n\t/**\n\t * release the node.\n\t * @function ScopeManager#release\n\t * @param {ESTree.Node} node releasing node.\n\t * @param {?boolean} [inner=false] look up the most inner scope, default value is false.\n\t * @returns {Scope?} upper scope for the node.\n\t */\n\trelease(node, inner) {\n\t\tconst scopes = this.__get(node);\n\n\t\tif (scopes && scopes.length) {\n\t\t\tconst scope = scopes[0].upper;\n\n\t\t\tif (!scope) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn this.acquire(scope.block, inner);\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Add global variables and resolve their references.\n\t * @function ScopeManager#addGlobals\n\t * @param {string[]} names Names of global variables to add.\n\t * @returns {void}\n\t */\n\taddGlobals(names) {\n\t\t// @ts-ignore -- globalScope must be set before this method is called.\n\t\tthis.globalScope.__addVariables(names);\n\t}\n\n\tattach() {} // eslint-disable-line class-methods-use-this -- Desired as instance method\n\n\tdetach() {} // eslint-disable-line class-methods-use-this -- Desired as instance method\n\n\t__nestScope(scope) {\n\t\tif (scope instanceof GlobalScope) {\n\t\t\tassert(this.__currentScope === null);\n\t\t\tthis.globalScope = scope;\n\t\t}\n\t\tthis.__currentScope = scope;\n\t\treturn scope;\n\t}\n\n\t__nestGlobalScope(node) {\n\t\treturn this.__nestScope(new GlobalScope(this, node));\n\t}\n\n\t__nestBlockScope(node) {\n\t\treturn this.__nestScope(\n\t\t\tnew BlockScope(this, this.__currentScope, node),\n\t\t);\n\t}\n\n\t__nestFunctionScope(node, isMethodDefinition) {\n\t\treturn this.__nestScope(\n\t\t\tnew FunctionScope(\n\t\t\t\tthis,\n\t\t\t\tthis.__currentScope,\n\t\t\t\tnode,\n\t\t\t\tisMethodDefinition,\n\t\t\t),\n\t\t);\n\t}\n\n\t__nestForScope(node) {\n\t\treturn this.__nestScope(new ForScope(this, this.__currentScope, node));\n\t}\n\n\t__nestCatchScope(node) {\n\t\treturn this.__nestScope(\n\t\t\tnew CatchScope(this, this.__currentScope, node),\n\t\t);\n\t}\n\n\t__nestWithScope(node) {\n\t\treturn this.__nestScope(new WithScope(this, this.__currentScope, node));\n\t}\n\n\t__nestClassScope(node) {\n\t\treturn this.__nestScope(\n\t\t\tnew ClassScope(this, this.__currentScope, node),\n\t\t);\n\t}\n\n\t__nestClassFieldInitializerScope(node) {\n\t\treturn this.__nestScope(\n\t\t\tnew ClassFieldInitializerScope(this, this.__currentScope, node),\n\t\t);\n\t}\n\n\t__nestClassStaticBlockScope(node) {\n\t\treturn this.__nestScope(\n\t\t\tnew ClassStaticBlockScope(this, this.__currentScope, node),\n\t\t);\n\t}\n\n\t__nestSwitchScope(node) {\n\t\treturn this.__nestScope(\n\t\t\tnew SwitchScope(this, this.__currentScope, node),\n\t\t);\n\t}\n\n\t__nestModuleScope(node) {\n\t\treturn this.__nestScope(\n\t\t\tnew ModuleScope(this, this.__currentScope, node),\n\t\t);\n\t}\n\n\t__nestFunctionExpressionNameScope(node) {\n\t\treturn this.__nestScope(\n\t\t\tnew FunctionExpressionNameScope(this, this.__currentScope, node),\n\t\t);\n\t}\n\n\t__isES6() {\n\t\treturn this.__options.ecmaVersion >= 6;\n\t}\n}\n\n/* vim: set sw=4 ts=4 et tw=80 : */\n\n/*\n  Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n\n/** @import * as types from \"eslint-scope\" */\n\nconst { Syntax: Syntax$1 } = estraverse;\n\n/**\n * Get last array element\n * @param {Array} xs array\n * @returns {any} Last elment\n */\nfunction getLast(xs) {\n\treturn xs.at(-1) || null;\n}\n\n/**\n * Visitor for destructuring patterns.\n * @implements {types.PatternVisitor}\n */\nclass PatternVisitor extends esrecurse.Visitor {\n\tstatic isPattern(node) {\n\t\tconst nodeType = node.type;\n\n\t\treturn (\n\t\t\tnodeType === Syntax$1.Identifier ||\n\t\t\tnodeType === Syntax$1.ObjectPattern ||\n\t\t\tnodeType === Syntax$1.ArrayPattern ||\n\t\t\tnodeType === Syntax$1.SpreadElement ||\n\t\t\tnodeType === Syntax$1.RestElement ||\n\t\t\tnodeType === Syntax$1.AssignmentPattern\n\t\t);\n\t}\n\n\tconstructor(options, rootPattern, callback) {\n\t\tsuper(null, options);\n\t\tthis.rootPattern = rootPattern;\n\t\tthis.callback = callback;\n\t\tthis.assignments = [];\n\t\tthis.rightHandNodes = [];\n\t\tthis.restElements = [];\n\t}\n\n\tIdentifier(pattern) {\n\t\tconst lastRestElement = getLast(this.restElements);\n\n\t\tthis.callback(pattern, {\n\t\t\ttopLevel: pattern === this.rootPattern,\n\t\t\trest:\n\t\t\t\tlastRestElement !== null &&\n\t\t\t\tlastRestElement !== void 0 &&\n\t\t\t\tlastRestElement.argument === pattern,\n\t\t\tassignments: this.assignments,\n\t\t});\n\t}\n\n\tProperty(property) {\n\t\t// Computed property's key is a right hand node.\n\t\tif (property.computed) {\n\t\t\tthis.rightHandNodes.push(property.key);\n\t\t}\n\n\t\t// If it's shorthand, its key is same as its value.\n\t\t// If it's shorthand and has its default value, its key is same as its value.left (the value is AssignmentPattern).\n\t\t// If it's not shorthand, the name of new variable is its value's.\n\t\tthis.visit(property.value);\n\t}\n\n\tArrayPattern(pattern) {\n\t\tfor (let i = 0, iz = pattern.elements.length; i < iz; ++i) {\n\t\t\tconst element = pattern.elements[i];\n\n\t\t\tthis.visit(element);\n\t\t}\n\t}\n\n\tAssignmentPattern(pattern) {\n\t\tthis.assignments.push(pattern);\n\t\tthis.visit(pattern.left);\n\t\tthis.rightHandNodes.push(pattern.right);\n\t\tthis.assignments.pop();\n\t}\n\n\tRestElement(pattern) {\n\t\tthis.restElements.push(pattern);\n\t\tthis.visit(pattern.argument);\n\t\tthis.restElements.pop();\n\t}\n\n\tMemberExpression(node) {\n\t\t// Computed property's key is a right hand node.\n\t\tif (node.computed) {\n\t\t\tthis.rightHandNodes.push(node.property);\n\t\t}\n\n\t\t// the object is only read, write to its property.\n\t\tthis.rightHandNodes.push(node.object);\n\t}\n\n\t//\n\t// ForInStatement.left and AssignmentExpression.left are LeftHandSideExpression.\n\t// By spec, LeftHandSideExpression is Pattern or MemberExpression.\n\t//   (see also: https://github.com/estree/estree/pull/20#issuecomment-74584758)\n\t// But espree 2.0 parses to ArrayExpression, ObjectExpression, etc...\n\t//\n\n\tSpreadElement(node) {\n\t\tthis.visit(node.argument);\n\t}\n\n\tArrayExpression(node) {\n\t\tnode.elements.forEach(this.visit, this);\n\t}\n\n\tAssignmentExpression(node) {\n\t\tthis.assignments.push(node);\n\t\tthis.visit(node.left);\n\t\tthis.rightHandNodes.push(node.right);\n\t\tthis.assignments.pop();\n\t}\n\n\tCallExpression(node) {\n\t\t// arguments are right hand nodes.\n\t\tnode.arguments.forEach(a => {\n\t\t\tthis.rightHandNodes.push(a);\n\t\t});\n\t\tthis.visit(node.callee);\n\t}\n}\n\n/* vim: set sw=4 ts=4 et tw=80 : */\n\n/*\n  Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n\n/** @import * as types from \"eslint-scope\" */\n/** @import ESTree from \"estree\" */\n\nconst { Syntax } = estraverse;\n\n/**\n * Traverse identifier in pattern\n * @param {Object} options options\n * @param {ESTree.Pattern} rootPattern root pattern\n * @param {?Referencer} referencer referencer\n * @param {types.PatternVisitorCallback} callback callback\n * @returns {void}\n */\nfunction traverseIdentifierInPattern(\n\toptions,\n\trootPattern,\n\treferencer,\n\tcallback,\n) {\n\t// Call the callback at left hand identifier nodes, and Collect right hand nodes.\n\tconst visitor = new PatternVisitor(options, rootPattern, callback);\n\n\tvisitor.visit(rootPattern);\n\n\t// Process the right hand nodes recursively.\n\tif (referencer !== null && referencer !== void 0) {\n\t\tvisitor.rightHandNodes.forEach(referencer.visit, referencer);\n\t}\n}\n\n// Importing ImportDeclaration.\n// http://people.mozilla.org/~jorendorff/es6-draft.html#sec-moduledeclarationinstantiation\n// https://github.com/estree/estree/blob/master/es6.md#importdeclaration\n// FIXME: Now, we don't create module environment, because the context is\n// implementation dependent.\n\n/**\n * Visitor for import specifiers.\n */\nclass Importer extends esrecurse.Visitor {\n\tconstructor(declaration, referencer) {\n\t\tsuper(null, referencer.options);\n\t\tthis.declaration = declaration;\n\t\tthis.referencer = referencer;\n\t}\n\n\tvisitImport(id, specifier) {\n\t\tthis.referencer.visitPattern(id, pattern => {\n\t\t\tthis.referencer\n\t\t\t\t.currentScope()\n\t\t\t\t.__define(\n\t\t\t\t\tpattern,\n\t\t\t\t\tnew Definition(\n\t\t\t\t\t\tVariable.ImportBinding,\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tspecifier,\n\t\t\t\t\t\tthis.declaration,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t});\n\t}\n\n\tImportNamespaceSpecifier(node) {\n\t\tconst local = node.local || node.id;\n\n\t\tif (local) {\n\t\t\tthis.visitImport(local, node);\n\t\t}\n\t}\n\n\tImportDefaultSpecifier(node) {\n\t\tconst local = node.local || node.id;\n\n\t\tthis.visitImport(local, node);\n\t}\n\n\tImportSpecifier(node) {\n\t\tconst local = node.local || node.id;\n\n\t\tif (node.name) {\n\t\t\tthis.visitImport(node.name, node);\n\t\t} else {\n\t\t\tthis.visitImport(local, node);\n\t\t}\n\t}\n}\n\n/**\n * Referencing variables and creating bindings.\n * @implements {types.Referencer}\n */\nclass Referencer extends esrecurse.Visitor {\n\tconstructor(options, scopeManager) {\n\t\tsuper(null, options);\n\t\tthis.options = options;\n\t\tthis.scopeManager = scopeManager;\n\t\tthis.parent = null;\n\t\tthis.isInnerMethodDefinition = false;\n\t}\n\n\tcurrentScope() {\n\t\treturn this.scopeManager.__currentScope;\n\t}\n\n\tclose(node) {\n\t\twhile (this.currentScope() && node === this.currentScope().block) {\n\t\t\tthis.scopeManager.__currentScope = this.currentScope().__close(\n\t\t\t\tthis.scopeManager,\n\t\t\t);\n\t\t}\n\t}\n\n\tpushInnerMethodDefinition(isInnerMethodDefinition) {\n\t\tconst previous = this.isInnerMethodDefinition;\n\n\t\tthis.isInnerMethodDefinition = isInnerMethodDefinition;\n\t\treturn previous;\n\t}\n\n\tpopInnerMethodDefinition(isInnerMethodDefinition) {\n\t\tthis.isInnerMethodDefinition = isInnerMethodDefinition;\n\t}\n\n\treferencingDefaultValue(pattern, assignments, maybeImplicitGlobal, init) {\n\t\tconst scope = this.currentScope();\n\n\t\tassignments.forEach(assignment => {\n\t\t\tscope.__referencing(\n\t\t\t\tpattern,\n\t\t\t\tReference.WRITE,\n\t\t\t\tassignment.right,\n\t\t\t\tmaybeImplicitGlobal,\n\t\t\t\tpattern !== assignment.left,\n\t\t\t\tinit,\n\t\t\t);\n\t\t});\n\t}\n\n\tvisitPattern(node, options, callback) {\n\t\tlet visitPatternOptions = options;\n\t\tlet visitPatternCallback = callback;\n\n\t\tif (typeof options === \"function\") {\n\t\t\tvisitPatternCallback = options;\n\t\t\tvisitPatternOptions = { processRightHandNodes: false };\n\t\t}\n\n\t\ttraverseIdentifierInPattern(\n\t\t\tthis.options,\n\t\t\tnode,\n\t\t\tvisitPatternOptions.processRightHandNodes ? this : null,\n\t\t\tvisitPatternCallback,\n\t\t);\n\t}\n\n\tvisitFunction(node) {\n\t\tlet i, iz;\n\n\t\t// FunctionDeclaration name is defined in upper scope\n\t\t// NOTE: Not referring variableScope. It is intended.\n\t\t// Since\n\t\t//  in ES5, FunctionDeclaration should be in FunctionBody.\n\t\t//  in ES6, FunctionDeclaration should be block scoped.\n\n\t\tif (node.type === Syntax.FunctionDeclaration) {\n\t\t\t// id is defined in upper scope\n\t\t\tthis.currentScope().__define(\n\t\t\t\tnode.id,\n\t\t\t\tnew Definition(\n\t\t\t\t\tVariable.FunctionName,\n\t\t\t\t\tnode.id,\n\t\t\t\t\tnode,\n\t\t\t\t\tnull,\n\t\t\t\t\tnull,\n\t\t\t\t\tnull,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\n\t\t// FunctionExpression with name creates its special scope;\n\t\t// FunctionExpressionNameScope.\n\t\tif (node.type === Syntax.FunctionExpression && node.id) {\n\t\t\tthis.scopeManager.__nestFunctionExpressionNameScope(node);\n\t\t}\n\n\t\t// Consider this function is in the MethodDefinition.\n\t\tthis.scopeManager.__nestFunctionScope(\n\t\t\tnode,\n\t\t\tthis.isInnerMethodDefinition,\n\t\t);\n\n\t\tconst that = this;\n\n\t\t/**\n\t\t * Visit pattern callback\n\t\t * @param {ESTree.Pattern} pattern pattern\n\t\t * @param {Object} info info\n\t\t * @returns {void}\n\t\t */\n\t\tfunction visitPatternCallback(pattern, info) {\n\t\t\tthat.currentScope().__define(\n\t\t\t\tpattern,\n\t\t\t\tnew ParameterDefinition(pattern, node, i, info.rest),\n\t\t\t);\n\n\t\t\tthat.referencingDefaultValue(pattern, info.assignments, null, true);\n\t\t}\n\n\t\t// Process parameter declarations.\n\t\tfor (i = 0, iz = node.params.length; i < iz; ++i) {\n\t\t\tthis.visitPattern(\n\t\t\t\tnode.params[i],\n\t\t\t\t{ processRightHandNodes: true },\n\t\t\t\tvisitPatternCallback,\n\t\t\t);\n\t\t}\n\n\t\t// if there's a rest argument, add that\n\t\tif (node.rest) {\n\t\t\tthis.visitPattern(\n\t\t\t\t{\n\t\t\t\t\ttype: \"RestElement\",\n\t\t\t\t\targument: node.rest,\n\t\t\t\t},\n\t\t\t\tpattern => {\n\t\t\t\t\tthis.currentScope().__define(\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tnew ParameterDefinition(\n\t\t\t\t\t\t\tpattern,\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tnode.params.length,\n\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\t// In TypeScript there are a number of function-like constructs which have no body,\n\t\t// so check it exists before traversing\n\t\tif (node.body) {\n\t\t\t// Skip BlockStatement to prevent creating BlockStatement scope.\n\t\t\tif (node.body.type === Syntax.BlockStatement) {\n\t\t\t\tthis.visitChildren(node.body);\n\t\t\t} else {\n\t\t\t\tthis.visit(node.body);\n\t\t\t}\n\t\t}\n\n\t\tthis.close(node);\n\t}\n\n\tvisitClass(node) {\n\t\tif (node.type === Syntax.ClassDeclaration) {\n\t\t\tthis.currentScope().__define(\n\t\t\t\tnode.id,\n\t\t\t\tnew Definition(\n\t\t\t\t\tVariable.ClassName,\n\t\t\t\t\tnode.id,\n\t\t\t\t\tnode,\n\t\t\t\t\tnull,\n\t\t\t\t\tnull,\n\t\t\t\t\tnull,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\n\t\tthis.scopeManager.__nestClassScope(node);\n\n\t\tif (node.id) {\n\t\t\tthis.currentScope().__define(\n\t\t\t\tnode.id,\n\t\t\t\tnew Definition(Variable.ClassName, node.id, node),\n\t\t\t);\n\t\t}\n\n\t\tthis.visit(node.superClass);\n\t\tthis.visit(node.body);\n\n\t\tthis.close(node);\n\t}\n\n\tvisitProperty(node) {\n\t\tlet previous;\n\n\t\tif (node.computed) {\n\t\t\tthis.visit(node.key);\n\t\t}\n\n\t\tconst isMethodDefinition = node.type === Syntax.MethodDefinition;\n\n\t\tif (isMethodDefinition) {\n\t\t\tprevious = this.pushInnerMethodDefinition(true);\n\t\t}\n\t\tthis.visit(node.value);\n\t\tif (isMethodDefinition) {\n\t\t\tthis.popInnerMethodDefinition(previous);\n\t\t}\n\t}\n\n\tvisitForIn(node) {\n\t\tif (\n\t\t\tnode.left.type === Syntax.VariableDeclaration &&\n\t\t\tnode.left.kind !== \"var\"\n\t\t) {\n\t\t\tthis.scopeManager.__nestForScope(node);\n\t\t}\n\n\t\tif (node.left.type === Syntax.VariableDeclaration) {\n\t\t\tthis.visit(node.left);\n\t\t\tthis.visitPattern(node.left.declarations[0].id, pattern => {\n\t\t\t\tthis.currentScope().__referencing(\n\t\t\t\t\tpattern,\n\t\t\t\t\tReference.WRITE,\n\t\t\t\t\tnode.right,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\t\t} else {\n\t\t\tthis.visitPattern(\n\t\t\t\tnode.left,\n\t\t\t\t{ processRightHandNodes: true },\n\t\t\t\t(pattern, info) => {\n\t\t\t\t\tlet maybeImplicitGlobal = null;\n\n\t\t\t\t\tif (!this.currentScope().isStrict) {\n\t\t\t\t\t\tmaybeImplicitGlobal = {\n\t\t\t\t\t\t\tpattern,\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tthis.referencingDefaultValue(\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tinfo.assignments,\n\t\t\t\t\t\tmaybeImplicitGlobal,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t);\n\t\t\t\t\tthis.currentScope().__referencing(\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tReference.WRITE,\n\t\t\t\t\t\tnode.right,\n\t\t\t\t\t\tmaybeImplicitGlobal,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\tthis.visit(node.right);\n\t\tthis.visit(node.body);\n\n\t\tthis.close(node);\n\t}\n\n\tvisitVariableDeclaration(variableTargetScope, type, node, index) {\n\t\tconst decl = node.declarations[index];\n\t\tconst init = decl.init;\n\n\t\tthis.visitPattern(\n\t\t\tdecl.id,\n\t\t\t{ processRightHandNodes: true },\n\t\t\t(pattern, info) => {\n\t\t\t\tvariableTargetScope.__define(\n\t\t\t\t\tpattern,\n\t\t\t\t\tnew Definition(type, pattern, decl, node, index, node.kind),\n\t\t\t\t);\n\n\t\t\t\tthis.referencingDefaultValue(\n\t\t\t\t\tpattern,\n\t\t\t\t\tinfo.assignments,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t\tif (init) {\n\t\t\t\t\tthis.currentScope().__referencing(\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tReference.WRITE,\n\t\t\t\t\t\tinit,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t!info.topLevel,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\t}\n\n\tAssignmentExpression(node) {\n\t\tif (PatternVisitor.isPattern(node.left)) {\n\t\t\tif (node.operator === \"=\") {\n\t\t\t\tthis.visitPattern(\n\t\t\t\t\tnode.left,\n\t\t\t\t\t{ processRightHandNodes: true },\n\t\t\t\t\t(pattern, info) => {\n\t\t\t\t\t\tlet maybeImplicitGlobal = null;\n\n\t\t\t\t\t\tif (!this.currentScope().isStrict) {\n\t\t\t\t\t\t\tmaybeImplicitGlobal = {\n\t\t\t\t\t\t\t\tpattern,\n\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.referencingDefaultValue(\n\t\t\t\t\t\t\tpattern,\n\t\t\t\t\t\t\tinfo.assignments,\n\t\t\t\t\t\t\tmaybeImplicitGlobal,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.currentScope().__referencing(\n\t\t\t\t\t\t\tpattern,\n\t\t\t\t\t\t\tReference.WRITE,\n\t\t\t\t\t\t\tnode.right,\n\t\t\t\t\t\t\tmaybeImplicitGlobal,\n\t\t\t\t\t\t\t!info.topLevel,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.currentScope().__referencing(\n\t\t\t\t\tnode.left,\n\t\t\t\t\tReference.RW,\n\t\t\t\t\tnode.right,\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.visit(node.left);\n\t\t}\n\t\tthis.visit(node.right);\n\t}\n\n\tCatchClause(node) {\n\t\tthis.scopeManager.__nestCatchScope(node);\n\n\t\tthis.visitPattern(\n\t\t\tnode.param,\n\t\t\t{ processRightHandNodes: true },\n\t\t\t(pattern, info) => {\n\t\t\t\tthis.currentScope().__define(\n\t\t\t\t\tpattern,\n\t\t\t\t\tnew Definition(\n\t\t\t\t\t\tVariable.CatchClause,\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tthis.referencingDefaultValue(\n\t\t\t\t\tpattern,\n\t\t\t\t\tinfo.assignments,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t},\n\t\t);\n\t\tthis.visit(node.body);\n\n\t\tthis.close(node);\n\t}\n\n\tProgram(node) {\n\t\tthis.scopeManager.__nestGlobalScope(node);\n\n\t\tif (this.scopeManager.isGlobalReturn()) {\n\t\t\t// Force strictness of GlobalScope to false when using node.js scope.\n\t\t\tthis.currentScope().isStrict = false;\n\t\t\tthis.scopeManager.__nestFunctionScope(node, false);\n\t\t}\n\n\t\tif (this.scopeManager.__isES6() && this.scopeManager.isModule()) {\n\t\t\tthis.scopeManager.__nestModuleScope(node);\n\t\t}\n\n\t\tif (\n\t\t\tthis.scopeManager.isStrictModeSupported() &&\n\t\t\tthis.scopeManager.isImpliedStrict()\n\t\t) {\n\t\t\tthis.currentScope().isStrict = true;\n\t\t}\n\n\t\tthis.visitChildren(node);\n\t\tthis.close(node);\n\t}\n\n\tIdentifier(node) {\n\t\tthis.currentScope().__referencing(node);\n\t}\n\n\t// eslint-disable-next-line class-methods-use-this -- Desired as instance method\n\tPrivateIdentifier() {\n\t\t// Do nothing.\n\t}\n\n\tUpdateExpression(node) {\n\t\tif (PatternVisitor.isPattern(node.argument)) {\n\t\t\tthis.currentScope().__referencing(\n\t\t\t\tnode.argument,\n\t\t\t\tReference.RW,\n\t\t\t\tnull,\n\t\t\t);\n\t\t} else {\n\t\t\tthis.visitChildren(node);\n\t\t}\n\t}\n\n\tMemberExpression(node) {\n\t\tthis.visit(node.object);\n\t\tif (node.computed) {\n\t\t\tthis.visit(node.property);\n\t\t}\n\t}\n\n\tProperty(node) {\n\t\tthis.visitProperty(node);\n\t}\n\n\tPropertyDefinition(node) {\n\t\tconst { computed, key, value } = node;\n\n\t\tif (computed) {\n\t\t\tthis.visit(key);\n\t\t}\n\t\tif (value) {\n\t\t\tthis.scopeManager.__nestClassFieldInitializerScope(value);\n\t\t\tthis.visit(value);\n\t\t\tthis.close(value);\n\t\t}\n\t}\n\n\tStaticBlock(node) {\n\t\tthis.scopeManager.__nestClassStaticBlockScope(node);\n\n\t\tthis.visitChildren(node);\n\n\t\tthis.close(node);\n\t}\n\n\tMethodDefinition(node) {\n\t\tthis.visitProperty(node);\n\t}\n\n\tBreakStatement() {} // eslint-disable-line class-methods-use-this -- Desired as instance method\n\n\tContinueStatement() {} // eslint-disable-line class-methods-use-this -- Desired as instance method\n\n\tLabeledStatement(node) {\n\t\tthis.visit(node.body);\n\t}\n\n\tForStatement(node) {\n\t\t// Create ForStatement declaration.\n\t\t// NOTE: In ES6, ForStatement dynamically generates\n\t\t// per iteration environment. However, escope is\n\t\t// a static analyzer, we only generate one scope for ForStatement.\n\t\tif (\n\t\t\tnode.init &&\n\t\t\tnode.init.type === Syntax.VariableDeclaration &&\n\t\t\tnode.init.kind !== \"var\"\n\t\t) {\n\t\t\tthis.scopeManager.__nestForScope(node);\n\t\t}\n\n\t\tthis.visitChildren(node);\n\n\t\tthis.close(node);\n\t}\n\n\tClassExpression(node) {\n\t\tthis.visitClass(node);\n\t}\n\n\tClassDeclaration(node) {\n\t\tthis.visitClass(node);\n\t}\n\n\tCallExpression(node) {\n\t\t// Check this is direct call to eval\n\t\tif (\n\t\t\t!this.scopeManager.__ignoreEval() &&\n\t\t\tnode.callee.type === Syntax.Identifier &&\n\t\t\tnode.callee.name === \"eval\"\n\t\t) {\n\t\t\t// NOTE: This should be `variableScope`. Since direct eval call always creates Lexical environment and\n\t\t\t// let / const should be enclosed into it. Only VariableDeclaration affects on the caller's environment.\n\t\t\tthis.currentScope().variableScope.__detectEval();\n\t\t}\n\t\tthis.visitChildren(node);\n\t}\n\n\tBlockStatement(node) {\n\t\tif (this.scopeManager.__isES6()) {\n\t\t\tthis.scopeManager.__nestBlockScope(node);\n\t\t}\n\n\t\tthis.visitChildren(node);\n\n\t\tthis.close(node);\n\t}\n\n\tThisExpression() {\n\t\tthis.currentScope().variableScope.__detectThis();\n\t}\n\n\tWithStatement(node) {\n\t\tthis.visit(node.object);\n\n\t\t// Then nest scope for WithStatement.\n\t\tthis.scopeManager.__nestWithScope(node);\n\n\t\tthis.visit(node.body);\n\n\t\tthis.close(node);\n\t}\n\n\tVariableDeclaration(node) {\n\t\tconst variableTargetScope =\n\t\t\tnode.kind === \"var\"\n\t\t\t\t? this.currentScope().variableScope\n\t\t\t\t: this.currentScope();\n\n\t\tfor (let i = 0, iz = node.declarations.length; i < iz; ++i) {\n\t\t\tconst decl = node.declarations[i];\n\n\t\t\tthis.visitVariableDeclaration(\n\t\t\t\tvariableTargetScope,\n\t\t\t\tVariable.Variable,\n\t\t\t\tnode,\n\t\t\t\ti,\n\t\t\t);\n\t\t\tif (decl.init) {\n\t\t\t\tthis.visit(decl.init);\n\t\t\t}\n\t\t}\n\t}\n\n\t// sec 13.11.8\n\tSwitchStatement(node) {\n\t\tthis.visit(node.discriminant);\n\n\t\tif (this.scopeManager.__isES6()) {\n\t\t\tthis.scopeManager.__nestSwitchScope(node);\n\t\t}\n\n\t\tfor (let i = 0, iz = node.cases.length; i < iz; ++i) {\n\t\t\tthis.visit(node.cases[i]);\n\t\t}\n\n\t\tthis.close(node);\n\t}\n\n\tFunctionDeclaration(node) {\n\t\tthis.visitFunction(node);\n\t}\n\n\tFunctionExpression(node) {\n\t\tthis.visitFunction(node);\n\t}\n\n\tForOfStatement(node) {\n\t\tthis.visitForIn(node);\n\t}\n\n\tForInStatement(node) {\n\t\tthis.visitForIn(node);\n\t}\n\n\tArrowFunctionExpression(node) {\n\t\tthis.visitFunction(node);\n\t}\n\n\tImportDeclaration(node) {\n\t\tassert(\n\t\t\tthis.scopeManager.__isES6() && this.scopeManager.isModule(),\n\t\t\t\"ImportDeclaration should appear when the mode is ES6 and in the module context.\",\n\t\t);\n\n\t\tconst importer = new Importer(node, this);\n\n\t\timporter.visit(node);\n\t}\n\n\tvisitExportDeclaration(node) {\n\t\tif (node.source) {\n\t\t\treturn;\n\t\t}\n\t\tif (node.declaration) {\n\t\t\tthis.visit(node.declaration);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.visitChildren(node);\n\t}\n\n\t// TODO: ExportDeclaration doesn't exist. for bc?\n\tExportDeclaration(node) {\n\t\tthis.visitExportDeclaration(node);\n\t}\n\n\tExportAllDeclaration(node) {\n\t\tthis.visitExportDeclaration(node);\n\t}\n\n\tExportDefaultDeclaration(node) {\n\t\tthis.visitExportDeclaration(node);\n\t}\n\n\tExportNamedDeclaration(node) {\n\t\tthis.visitExportDeclaration(node);\n\t}\n\n\tExportSpecifier(node) {\n\t\t// TODO: `node.id` doesn't exist. for bc?\n\t\tconst local = node.id || node.local;\n\n\t\tthis.visit(local);\n\t}\n\n\t// eslint-disable-next-line class-methods-use-this -- Desired as instance method\n\tMetaProperty() {\n\t\t// do nothing.\n\t}\n\n\tJSXIdentifier(node) {\n\t\t// Special case: \"this\" should not count as a reference\n\t\tif (this.scopeManager.__isJSXEnabled() && node.name !== \"this\") {\n\t\t\tthis.currentScope().__referencing(node);\n\t\t}\n\t}\n\n\tJSXMemberExpression(node) {\n\t\tthis.visit(node.object);\n\t}\n\n\tJSXElement(node) {\n\t\tif (this.scopeManager.__isJSXEnabled()) {\n\t\t\tthis.visit(node.openingElement);\n\t\t\tnode.children.forEach(this.visit, this);\n\t\t} else {\n\t\t\tthis.visitChildren(node);\n\t\t}\n\t}\n\n\tJSXOpeningElement(node) {\n\t\tif (this.scopeManager.__isJSXEnabled()) {\n\t\t\tconst nameNode = node.name;\n\t\t\tconst isComponentName =\n\t\t\t\tnameNode.type === \"JSXIdentifier\" &&\n\t\t\t\tnameNode.name[0].toUpperCase() === nameNode.name[0];\n\t\t\tconst isComponent =\n\t\t\t\tisComponentName || nameNode.type === \"JSXMemberExpression\";\n\n\t\t\t// we only want to visit JSXIdentifier nodes if they are capitalized\n\t\t\tif (isComponent) {\n\t\t\t\tthis.visit(nameNode);\n\t\t\t}\n\t\t}\n\n\t\tnode.attributes.forEach(this.visit, this);\n\t}\n\n\tJSXAttribute(node) {\n\t\tif (node.value) {\n\t\t\tthis.visit(node.value);\n\t\t}\n\t}\n\n\tJSXExpressionContainer(node) {\n\t\tthis.visit(node.expression);\n\t}\n\n\tJSXNamespacedName(node) {\n\t\tthis.visit(node.namespace);\n\t\tthis.visit(node.name);\n\t}\n}\n\n/* vim: set sw=4 ts=4 et tw=80 : */\n\n/*\n  Copyright (C) 2012-2014 Yusuke Suzuki <utatane.tea@gmail.com>\n  Copyright (C) 2013 Alex Seville <hi@alexanderseville.com>\n  Copyright (C) 2014 Thiago de Arruda <tpadilha84@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n\n/** @import ESTree from \"estree\" */\n\n/**\n * Set the default options\n * @returns {Object} options\n */\nfunction defaultOptions() {\n\treturn {\n\t\toptimistic: false,\n\t\tnodejsScope: false,\n\t\timpliedStrict: false,\n\t\tsourceType: \"script\", // one of ['script', 'module', 'commonjs']\n\t\tecmaVersion: 5,\n\t\tchildVisitorKeys: null,\n\t\tfallback: \"iteration\",\n\t};\n}\n\n/**\n * Preform deep update on option object\n * @param {Record<string, unknown>} target Options\n * @param {Record<string, unknown>} override Updates\n * @returns {Record<string, unknown>} Updated options\n */\nfunction updateDeeply(target, override) {\n\t/**\n\t * Is hash object\n\t * @param {Object} value Test value\n\t * @returns {value is Record<string, unknown>} Result\n\t */\n\tfunction isHashObject(value) {\n\t\treturn (\n\t\t\ttypeof value === \"object\" &&\n\t\t\tvalue instanceof Object &&\n\t\t\t!(value instanceof Array) &&\n\t\t\t!(value instanceof RegExp)\n\t\t);\n\t}\n\n\tfor (const key in override) {\n\t\tif (Object.hasOwn(override, key)) {\n\t\t\tconst val = override[key];\n\n\t\t\tif (isHashObject(val)) {\n\t\t\t\tif (isHashObject(target[key])) {\n\t\t\t\t\tupdateDeeply(target[key], val);\n\t\t\t\t} else {\n\t\t\t\t\ttarget[key] = updateDeeply({}, val);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttarget[key] = val;\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n}\n\n/**\n * Main interface function. Takes an Espree syntax tree and returns the\n * analyzed scopes.\n * @function analyze\n * @param {ESTree.Program} tree Abstract Syntax Tree\n * @param {Object} providedOptions Options that tailor the scope analysis\n * @param {boolean} [providedOptions.optimistic=false] the optimistic flag\n * @param {boolean} [providedOptions.ignoreEval=false] whether to check 'eval()' calls\n * @param {boolean} [providedOptions.nodejsScope=false] whether the whole\n * script is executed under node.js environment. When enabled, escope adds\n * a function scope immediately following the global scope.\n * @param {boolean} [providedOptions.impliedStrict=false] implied strict mode\n * (if ecmaVersion >= 5).\n * @param {string} [providedOptions.sourceType='script'] the source type of the script. one of 'script', 'module', and 'commonjs'\n * @param {number} [providedOptions.ecmaVersion=5] which ECMAScript version is considered\n * @param {boolean} [providedOptions.jsx=false] support JSX references\n * @param {Object} [providedOptions.childVisitorKeys=null] Additional known visitor keys. See [esrecurse](https://github.com/estools/esrecurse)'s the `childVisitorKeys` option.\n * @param {string} [providedOptions.fallback='iteration'] A kind of the fallback in order to encounter with unknown node. See [esrecurse](https://github.com/estools/esrecurse)'s the `fallback` option.\n * @returns {ScopeManager} ScopeManager\n */\nfunction analyze(tree, providedOptions) {\n\tconst options = updateDeeply(defaultOptions(), providedOptions);\n\tconst scopeManager = new ScopeManager(options);\n\tconst referencer = new Referencer(options, scopeManager);\n\n\treferencer.visit(tree);\n\n\tassert(\n\t\tscopeManager.__currentScope === null,\n\t\t\"currentScope should be null.\",\n\t);\n\n\treturn scopeManager;\n}\n\n/** @name module:escope.version */\nconst version = \"9.1.2\"; // x-release-please-version\n\n/* vim: set sw=4 ts=4 et tw=80 : */\n\nexports.Definition = Definition;\nexports.PatternVisitor = PatternVisitor;\nexports.Reference = Reference;\nexports.Referencer = Referencer;\nexports.Scope = Scope;\nexports.ScopeManager = ScopeManager;\nexports.Variable = Variable;\nexports.analyze = analyze;\nexports.version = version;\n//# sourceMappingURL=eslint-scope.cjs.map\n", "/**\n * @fileoverview The schema to validate language options\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Data\n//-----------------------------------------------------------------------------\n\nconst globalVariablesValues = new Set([\n\ttrue,\n\t\"true\",\n\t\"writable\",\n\t\"writeable\",\n\tfalse,\n\t\"false\",\n\t\"readonly\",\n\t\"readable\",\n\tnull,\n\t\"off\",\n]);\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Check if a value is a non-null object.\n * @param {any} value The value to check.\n * @returns {boolean} `true` if the value is a non-null object.\n */\nfunction isNonNullObject(value) {\n\treturn typeof value === \"object\" && value !== null;\n}\n\n/**\n * Check if a value is a non-null non-array object.\n * @param {any} value The value to check.\n * @returns {boolean} `true` if the value is a non-null non-array object.\n */\nfunction isNonArrayObject(value) {\n\treturn isNonNullObject(value) && !Array.isArray(value);\n}\n\n/**\n * Check if a value is undefined.\n * @param {any} value The value to check.\n * @returns {boolean} `true` if the value is undefined.\n */\nfunction isUndefined(value) {\n\treturn typeof value === \"undefined\";\n}\n\n//-----------------------------------------------------------------------------\n// Schemas\n//-----------------------------------------------------------------------------\n\n/**\n * Validates the ecmaVersion property.\n * @param {string|number} ecmaVersion The value to check.\n * @returns {void}\n * @throws {TypeError} If the value is invalid.\n */\nfunction validateEcmaVersion(ecmaVersion) {\n\tif (isUndefined(ecmaVersion)) {\n\t\tthrow new TypeError(\n\t\t\t'Key \"ecmaVersion\": Expected an \"ecmaVersion\" property.',\n\t\t);\n\t}\n\n\tif (typeof ecmaVersion !== \"number\" && ecmaVersion !== \"latest\") {\n\t\tthrow new TypeError(\n\t\t\t'Key \"ecmaVersion\": Expected a number or \"latest\".',\n\t\t);\n\t}\n}\n\n/**\n * Validates the sourceType property.\n * @param {string} sourceType The value to check.\n * @returns {void}\n * @throws {TypeError} If the value is invalid.\n */\nfunction validateSourceType(sourceType) {\n\tif (\n\t\ttypeof sourceType !== \"string\" ||\n\t\t!/^(?:script|module|commonjs)$/u.test(sourceType)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Key \"sourceType\": Expected \"script\", \"module\", or \"commonjs\".',\n\t\t);\n\t}\n}\n\n/**\n * Validates the globals property.\n * @param {Object} globals The value to check.\n * @returns {void}\n * @throws {TypeError} If the value is invalid.\n */\nfunction validateGlobals(globals) {\n\tif (!isNonArrayObject(globals)) {\n\t\tthrow new TypeError('Key \"globals\": Expected an object.');\n\t}\n\n\tfor (const key of Object.keys(globals)) {\n\t\t// avoid hairy edge case\n\t\tif (key === \"__proto__\") {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (key !== key.trim()) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Key \"globals\": Global \"${key}\" has leading or trailing whitespace.`,\n\t\t\t);\n\t\t}\n\n\t\tif (!globalVariablesValues.has(globals[key])) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Key \"globals\": Key \"${key}\": Expected \"readonly\", \"writable\", or \"off\".`,\n\t\t\t);\n\t\t}\n\t}\n}\n\n/**\n * Validates the parser property.\n * @param {Object} parser The value to check.\n * @returns {void}\n * @throws {TypeError} If the value is invalid.\n */\nfunction validateParser(parser) {\n\tif (\n\t\t!parser ||\n\t\ttypeof parser !== \"object\" ||\n\t\t(typeof parser.parse !== \"function\" &&\n\t\t\ttypeof parser.parseForESLint !== \"function\")\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Key \"parser\": Expected object with parse() or parseForESLint() method.',\n\t\t);\n\t}\n}\n\n/**\n * Validates the language options.\n * @param {Object} languageOptions The language options to validate.\n * @returns {void}\n * @throws {TypeError} If the language options are invalid.\n */\nfunction validateLanguageOptions(languageOptions) {\n\tif (!isNonArrayObject(languageOptions)) {\n\t\tthrow new TypeError(\"Expected an object.\");\n\t}\n\n\tconst {\n\t\tecmaVersion,\n\t\tsourceType,\n\t\tglobals,\n\t\tparser,\n\t\tparserOptions,\n\t\t...otherOptions\n\t} = languageOptions;\n\n\tif (\"ecmaVersion\" in languageOptions) {\n\t\tvalidateEcmaVersion(ecmaVersion);\n\t}\n\n\tif (\"sourceType\" in languageOptions) {\n\t\tvalidateSourceType(sourceType);\n\t}\n\n\tif (\"globals\" in languageOptions) {\n\t\tvalidateGlobals(globals);\n\t}\n\n\tif (\"parser\" in languageOptions) {\n\t\tvalidateParser(parser);\n\t}\n\n\tif (\"parserOptions\" in languageOptions) {\n\t\tif (!isNonArrayObject(parserOptions)) {\n\t\t\tthrow new TypeError('Key \"parserOptions\": Expected an object.');\n\t\t}\n\t}\n\n\tconst otherOptionKeys = Object.keys(otherOptions);\n\n\tif (otherOptionKeys.length > 0) {\n\t\tthrow new TypeError(`Unexpected key \"${otherOptionKeys[0]}\" found.`);\n\t}\n}\n\nmodule.exports = { validateLanguageOptions };\n", "/**\n * @fileoverview JavaScript Language Object\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Requirements\n//-----------------------------------------------------------------------------\n\nconst { SourceCode } = require(\"./source-code\");\nconst createDebug = require(\"debug\");\nconst astUtils = require(\"../../shared/ast-utils\");\nconst espree = require(\"espree\");\nconst eslintScope = require(\"eslint-scope\");\nconst evk = require(\"eslint-visitor-keys\");\nconst { validateLanguageOptions } = require(\"./validate-language-options\");\nconst { LATEST_ECMA_VERSION } = require(\"../../../conf/ecma-version\");\n\n//-----------------------------------------------------------------------------\n// Type Definitions\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"@eslint/core\").File} File */\n/** @typedef {import(\"@eslint/core\").Language} Language */\n/** @typedef {import(\"@eslint/core\").OkParseResult} OkParseResult */\n/** @typedef {import(\"../../types\").Linter.LanguageOptions} JSLanguageOptions */\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\nconst debug = createDebug(\"eslint:languages:js\");\nconst DEFAULT_ECMA_VERSION = 5;\nconst parserSymbol = Symbol.for(\"eslint.RuleTester.parser\");\n\n/**\n * Analyze scope of the given AST.\n * @param {ASTNode} ast The `Program` node to analyze.\n * @param {JSLanguageOptions} languageOptions The parser options.\n * @param {Record<string, string[]>} visitorKeys The visitor keys.\n * @returns {ScopeManager} The analysis result.\n */\nfunction analyzeScope(ast, languageOptions, visitorKeys) {\n\tconst parserOptions = languageOptions.parserOptions;\n\tconst ecmaFeatures = parserOptions.ecmaFeatures || {};\n\tconst ecmaVersion = languageOptions.ecmaVersion || DEFAULT_ECMA_VERSION;\n\n\treturn eslintScope.analyze(ast, {\n\t\tignoreEval: true,\n\t\tnodejsScope: ecmaFeatures.globalReturn,\n\t\timpliedStrict: ecmaFeatures.impliedStrict,\n\t\tecmaVersion: typeof ecmaVersion === \"number\" ? ecmaVersion : 6,\n\t\tsourceType: languageOptions.sourceType || \"script\",\n\t\tchildVisitorKeys: visitorKeys || evk.KEYS,\n\t\tfallback: evk.getKeys,\n\t\tjsx: ecmaFeatures.jsx,\n\t});\n}\n\n/**\n * Determines if a given object is Espree.\n * @param {Object} parser The parser to check.\n * @returns {boolean} True if the parser is Espree or false if not.\n */\nfunction isEspree(parser) {\n\treturn !!(parser === espree || parser[parserSymbol] === espree);\n}\n\n/**\n * Normalize ECMAScript version from the initial config into languageOptions (year)\n * format.\n * @param {any} [ecmaVersion] ECMAScript version from the initial config\n * @returns {number} normalized ECMAScript version\n */\nfunction normalizeEcmaVersionForLanguageOptions(ecmaVersion) {\n\tswitch (ecmaVersion) {\n\t\tcase 3:\n\t\t\treturn 3;\n\n\t\t// void 0 = no ecmaVersion specified so use the default\n\t\tcase 5:\n\t\tcase void 0:\n\t\t\treturn 5;\n\n\t\tdefault:\n\t\t\tif (typeof ecmaVersion === \"number\") {\n\t\t\t\treturn ecmaVersion >= 2015 ? ecmaVersion : ecmaVersion + 2009;\n\t\t\t}\n\t}\n\n\t/*\n\t * We default to the latest supported ecmaVersion for everything else.\n\t * Remember, this is for languageOptions.ecmaVersion, which sets the version\n\t * that is used for a number of processes inside of ESLint. It's normally\n\t * safe to assume people want the latest unless otherwise specified.\n\t */\n\treturn LATEST_ECMA_VERSION;\n}\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * @type {Language}\n */\nmodule.exports = {\n\tfileType: \"text\",\n\tlineStart: 1,\n\tcolumnStart: 0,\n\tnodeTypeKey: \"type\",\n\tvisitorKeys: evk.KEYS,\n\n\tdefaultLanguageOptions: {\n\t\tsourceType: \"module\",\n\t\tecmaVersion: \"latest\",\n\t\tparser: espree,\n\t\tparserOptions: {},\n\t},\n\n\tvalidateLanguageOptions,\n\n\t/**\n\t * Normalizes the language options.\n\t * @param {Object} languageOptions The language options to normalize.\n\t * @returns {Object} The normalized language options.\n\t */\n\tnormalizeLanguageOptions(languageOptions) {\n\t\tlanguageOptions.ecmaVersion = normalizeEcmaVersionForLanguageOptions(\n\t\t\tlanguageOptions.ecmaVersion,\n\t\t);\n\n\t\t// Espree expects this information to be passed in\n\t\tif (isEspree(languageOptions.parser)) {\n\t\t\tconst parserOptions = languageOptions.parserOptions;\n\n\t\t\tif (languageOptions.sourceType) {\n\t\t\t\tparserOptions.sourceType = languageOptions.sourceType;\n\n\t\t\t\tif (\n\t\t\t\t\tparserOptions.sourceType === \"module\" &&\n\t\t\t\t\tparserOptions.ecmaFeatures &&\n\t\t\t\t\tparserOptions.ecmaFeatures.globalReturn\n\t\t\t\t) {\n\t\t\t\t\tparserOptions.ecmaFeatures.globalReturn = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn languageOptions;\n\t},\n\n\t/**\n\t * Determines if a given node matches a given selector class.\n\t * @param {string} className The class name to check.\n\t * @param {ASTNode} node The node to check.\n\t * @param {Array<ASTNode>} ancestry The ancestry of the node.\n\t * @returns {boolean} True if there's a match, false if not.\n\t * @throws {Error} When an unknown class name is passed.\n\t */\n\tmatchesSelectorClass(className, node, ancestry) {\n\t\t/*\n\t\t * Copyright (c) 2013, Joel Feenstra\n\t\t * All rights reserved.\n\t\t *\n\t\t * Redistribution and use in source and binary forms, with or without\n\t\t * modification, are permitted provided that the following conditions are met:\n\t\t *    * Redistributions of source code must retain the above copyright\n\t\t *      notice, this list of conditions and the following disclaimer.\n\t\t *    * Redistributions in binary form must reproduce the above copyright\n\t\t *      notice, this list of conditions and the following disclaimer in the\n\t\t *      documentation and/or other materials provided with the distribution.\n\t\t *    * Neither the name of the ESQuery nor the names of its contributors may\n\t\t *      be used to endorse or promote products derived from this software without\n\t\t *      specific prior written permission.\n\t\t *\n\t\t * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n\t\t * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n\t\t * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n\t\t * DISCLAIMED. IN NO EVENT SHALL JOEL FEENSTRA BE LIABLE FOR ANY\n\t\t * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t\t * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\t\t * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\t\t * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t\t * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n\t\t * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t\t */\n\n\t\tswitch (className.toLowerCase()) {\n\t\t\tcase \"statement\":\n\t\t\t\tif (node.type.slice(-9) === \"Statement\") {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t// fallthrough: interface Declaration <: Statement { }\n\n\t\t\tcase \"declaration\":\n\t\t\t\treturn node.type.slice(-11) === \"Declaration\";\n\n\t\t\tcase \"pattern\":\n\t\t\t\tif (node.type.slice(-7) === \"Pattern\") {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t// fallthrough: interface Expression <: Node, Pattern { }\n\n\t\t\tcase \"expression\":\n\t\t\t\treturn (\n\t\t\t\t\tnode.type.slice(-10) === \"Expression\" ||\n\t\t\t\t\tnode.type.slice(-7) === \"Literal\" ||\n\t\t\t\t\t(node.type === \"Identifier\" &&\n\t\t\t\t\t\t(ancestry.length === 0 ||\n\t\t\t\t\t\t\tancestry[0].type !== \"MetaProperty\")) ||\n\t\t\t\t\tnode.type === \"MetaProperty\"\n\t\t\t\t);\n\n\t\t\tcase \"function\":\n\t\t\t\treturn (\n\t\t\t\t\tnode.type === \"FunctionDeclaration\" ||\n\t\t\t\t\tnode.type === \"FunctionExpression\" ||\n\t\t\t\t\tnode.type === \"ArrowFunctionExpression\"\n\t\t\t\t);\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unknown class name: ${className}`);\n\t\t}\n\t},\n\n\t/**\n\t * Parses the given file into an AST.\n\t * @param {File} file The virtual file to parse.\n\t * @param {Object} options Additional options passed from ESLint.\n\t * @param {JSLanguageOptions} options.languageOptions The language options.\n\t * @returns {Object} The result of parsing.\n\t */\n\tparse(file, { languageOptions }) {\n\t\t// Note: BOM already removed\n\t\tconst { body: text, path: filePath } = file;\n\t\tconst textToParse = text.replace(\n\t\t\tastUtils.shebangPattern,\n\t\t\t(match, captured) => `//${captured}`,\n\t\t);\n\t\tconst { ecmaVersion, sourceType, parser } = languageOptions;\n\t\tconst parserOptions = Object.assign(\n\t\t\t{ ecmaVersion, sourceType },\n\t\t\tlanguageOptions.parserOptions,\n\t\t\t{\n\t\t\t\tloc: true,\n\t\t\t\trange: true,\n\t\t\t\ttokens: true,\n\t\t\t\tcomment: true,\n\t\t\t\teslintVisitorKeys: true,\n\t\t\t\teslintScopeManager: true,\n\t\t\t\tfilePath,\n\t\t\t},\n\t\t);\n\n\t\t/*\n\t\t * Check for parsing errors first. If there's a parsing error, nothing\n\t\t * else can happen. However, a parsing error does not throw an error\n\t\t * from this method - it's just considered a fatal error message, a\n\t\t * problem that ESLint identified just like any other.\n\t\t */\n\t\ttry {\n\t\t\tdebug(\"Parsing:\", filePath);\n\t\t\tconst parseResult =\n\t\t\t\ttypeof parser.parseForESLint === \"function\"\n\t\t\t\t\t? parser.parseForESLint(textToParse, parserOptions)\n\t\t\t\t\t: { ast: parser.parse(textToParse, parserOptions) };\n\n\t\t\tdebug(\"Parsing successful:\", filePath);\n\n\t\t\tconst {\n\t\t\t\tast,\n\t\t\t\tservices: parserServices = {},\n\t\t\t\tvisitorKeys = evk.KEYS,\n\t\t\t\tscopeManager,\n\t\t\t} = parseResult;\n\n\t\t\treturn {\n\t\t\t\tok: true,\n\t\t\t\tast,\n\t\t\t\tparserServices,\n\t\t\t\tvisitorKeys,\n\t\t\t\tscopeManager,\n\t\t\t};\n\t\t} catch (ex) {\n\t\t\t// If the message includes a leading line number, strip it:\n\t\t\tconst message = ex.message.replace(/^line \\d+:/iu, \"\").trim();\n\n\t\t\tdebug(\"%s\\n%s\", message, ex.stack);\n\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\terrors: [\n\t\t\t\t\t{\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tline: ex.lineNumber,\n\t\t\t\t\t\tcolumn: ex.column,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\t},\n\n\t/**\n\t * Creates a new `SourceCode` object from the given information.\n\t * @param {File} file The virtual file to create a `SourceCode` object from.\n\t * @param {OkParseResult} parseResult The result returned from `parse()`.\n\t * @param {Object} options Additional options passed from ESLint.\n\t * @param {JSLanguageOptions} options.languageOptions The language options.\n\t * @returns {SourceCode} The new `SourceCode` object.\n\t */\n\tcreateSourceCode(file, parseResult, { languageOptions }) {\n\t\tconst { body: text, path: filePath, bom: hasBOM } = file;\n\t\tconst { ast, parserServices, visitorKeys } = parseResult;\n\n\t\tdebug(\"Scope analysis:\", filePath);\n\t\tconst scopeManager =\n\t\t\tparseResult.scopeManager ||\n\t\t\tanalyzeScope(ast, languageOptions, visitorKeys);\n\n\t\tdebug(\"Scope analysis successful:\", filePath);\n\n\t\treturn new SourceCode({\n\t\t\ttext,\n\t\t\tast,\n\t\t\thasBOM,\n\t\t\tparserServices,\n\t\t\tscopeManager,\n\t\t\tvisitorKeys,\n\t\t});\n\t},\n};\n", "/**\n * @fileoverview Default configuration\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Requirements\n//-----------------------------------------------------------------------------\n\nconst Rules = require(\"../rules\");\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\nconst sharedDefaultConfig = [\n\t// intentionally empty config to ensure these files are globbed by default\n\t{\n\t\tfiles: [\"**/*.js\", \"**/*.mjs\"],\n\t},\n\t{\n\t\tfiles: [\"**/*.cjs\"],\n\t\tlanguageOptions: {\n\t\t\tsourceType: \"commonjs\",\n\t\t\tecmaVersion: \"latest\",\n\t\t},\n\t},\n];\n\nexports.defaultConfig = Object.freeze([\n\t{\n\t\tplugins: {\n\t\t\t\"@\": {\n\t\t\t\tlanguages: {\n\t\t\t\t\tjs: require(\"../languages/js\"),\n\t\t\t\t},\n\n\t\t\t\t/*\n\t\t\t\t * Because we try to delay loading rules until absolutely\n\t\t\t\t * necessary, a proxy allows us to hook into the lazy-loading\n\t\t\t\t * aspect of the rules map while still keeping all of the\n\t\t\t\t * relevant configuration inside of the config array.\n\t\t\t\t */\n\t\t\t\trules: new Proxy(\n\t\t\t\t\t{},\n\t\t\t\t\t{\n\t\t\t\t\t\tget(target, property) {\n\t\t\t\t\t\t\treturn Rules.get(property);\n\t\t\t\t\t\t},\n\n\t\t\t\t\t\thas(target, property) {\n\t\t\t\t\t\t\treturn Rules.has(property);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t},\n\t\t},\n\t\tlanguage: \"@/js\",\n\t\tlinterOptions: {\n\t\t\treportUnusedDisableDirectives: 1,\n\t\t},\n\t},\n\n\t// default ignores are listed here\n\t{\n\t\tignores: [\"**/node_modules/\", \".git/\"],\n\t},\n\n\t...sharedDefaultConfig,\n]);\n\nexports.defaultRuleTesterConfig = Object.freeze([\n\t{ files: [\"**\"] }, // Make sure the default config matches for all files\n\n\t...sharedDefaultConfig,\n]);\n", "/**\n * @fileoverview Provides helper functions to start/stop the time measurements\n * that are provided by the ESLint 'stats' option.\n * @author Mara Kiefer <http://github.com/mnkiefer>\n */\n\"use strict\";\n\n/**\n * Start time measurement\n * @returns {[number, number]} t variable for tracking time\n */\nfunction startTime() {\n\treturn process.hrtime();\n}\n\n/**\n * End time measurement\n * @param {[number, number]} t Variable for tracking time\n * @returns {number} The measured time in milliseconds\n */\nfunction endTime(t) {\n\tconst time = process.hrtime(t);\n\n\treturn time[0] * 1e3 + time[1] / 1e6;\n}\n\nmodule.exports = {\n\tstartTime,\n\tendTime,\n};\n", "/**\n * @fileoverview Tracks performance of individual rules.\n * @author Brandon Mills\n */\n\n\"use strict\";\n\nconst { startTime, endTime } = require(\"../shared/stats\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/* c8 ignore next */\n/**\n * Align the string to left\n * @param {string} str string to evaluate\n * @param {number} len length of the string\n * @param {string} ch delimiter character\n * @returns {string} modified string\n * @private\n */\nfunction alignLeft(str, len, ch) {\n\treturn str + new Array(len - str.length + 1).join(ch || \" \");\n}\n\n/* c8 ignore next */\n/**\n * Align the string to right\n * @param {string} str string to evaluate\n * @param {number} len length of the string\n * @param {string} ch delimiter character\n * @returns {string} modified string\n * @private\n */\nfunction alignRight(str, len, ch) {\n\treturn new Array(len - str.length + 1).join(ch || \" \") + str;\n}\n\n//------------------------------------------------------------------------------\n// Module definition\n//------------------------------------------------------------------------------\n\nconst enabled = !!process.env.TIMING;\n\nconst HEADERS = [\"Rule\", \"Time (ms)\", \"Relative\"];\nconst ALIGN = [alignLeft, alignRight, alignRight];\n\n/**\n * Decide how many rules to show in the output list.\n * @returns {number} the number of rules to show\n */\nfunction getListSize() {\n\tconst MINIMUM_SIZE = 10;\n\n\tif (typeof process.env.TIMING !== \"string\") {\n\t\treturn MINIMUM_SIZE;\n\t}\n\n\tif (process.env.TIMING.toLowerCase() === \"all\") {\n\t\treturn Number.POSITIVE_INFINITY;\n\t}\n\n\tconst TIMING_ENV_VAR_AS_INTEGER = Number.parseInt(process.env.TIMING, 10);\n\n\treturn TIMING_ENV_VAR_AS_INTEGER > 10\n\t\t? TIMING_ENV_VAR_AS_INTEGER\n\t\t: MINIMUM_SIZE;\n}\n\n/* c8 ignore next */\n/**\n * display the data\n * @param {Object} data Data object to be displayed\n * @returns {void} prints modified string with console.log\n * @private\n */\nfunction display(data) {\n\tlet total = 0;\n\tconst rows = Object.keys(data)\n\t\t.map(key => {\n\t\t\tconst time = data[key];\n\n\t\t\ttotal += time;\n\t\t\treturn [key, time];\n\t\t})\n\t\t.sort((a, b) => b[1] - a[1])\n\t\t.slice(0, getListSize());\n\n\trows.forEach(row => {\n\t\trow.push(`${((row[1] * 100) / total).toFixed(1)}%`);\n\t\trow[1] = row[1].toFixed(3);\n\t});\n\n\trows.unshift(HEADERS);\n\n\tconst widths = [];\n\n\trows.forEach(row => {\n\t\tconst len = row.length;\n\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\tconst n = row[i].length;\n\n\t\t\tif (!widths[i] || n > widths[i]) {\n\t\t\t\twidths[i] = n;\n\t\t\t}\n\t\t}\n\t});\n\n\tconst table = rows.map(row =>\n\t\trow.map((cell, index) => ALIGN[index](cell, widths[index])).join(\" | \"),\n\t);\n\n\ttable.splice(\n\t\t1,\n\t\t0,\n\t\twidths\n\t\t\t.map((width, index) => {\n\t\t\t\tconst extraAlignment =\n\t\t\t\t\tindex !== 0 && index !== widths.length - 1 ? 2 : 1;\n\n\t\t\t\treturn ALIGN[index](\":\", width + extraAlignment, \"-\");\n\t\t\t})\n\t\t\t.join(\"|\"),\n\t);\n\n\tconsole.log(table.join(\"\\n\")); // eslint-disable-line no-console -- Debugging function\n}\n\n/* c8 ignore next */\nmodule.exports = (function () {\n\tconst data = Object.create(null);\n\tlet displayEnabled = true;\n\n\t/**\n\t * Time the run\n\t * @param {any} key key from the data object\n\t * @param {Function} fn function to be called\n\t * @param {boolean} stats if 'stats' is true, return the result and the time difference\n\t * @returns {Function} function to be executed\n\t * @private\n\t */\n\tfunction time(key, fn, stats) {\n\t\treturn function (...args) {\n\t\t\tconst t = startTime();\n\t\t\tconst result = fn(...args);\n\t\t\tconst tdiff = endTime(t);\n\n\t\t\tif (enabled) {\n\t\t\t\tif (typeof data[key] === \"undefined\") {\n\t\t\t\t\tdata[key] = 0;\n\t\t\t\t}\n\n\t\t\t\tdata[key] += tdiff;\n\t\t\t}\n\n\t\t\treturn stats ? { result, tdiff } : result;\n\t\t};\n\t}\n\n\t/**\n\t * Returns a shallow copy of the collected timings data.\n\t * @returns {Record<string, number>} mapping of ruleId to total time in ms\n\t */\n\tfunction getData() {\n\t\treturn { ...data };\n\t}\n\n\t/**\n\t * Merges rule timing totals collected elsewhere into this process' totals.\n\t * @param {Record<string, number>} dataToMerge mapping of ruleId to total time in ms\n\t * @returns {void}\n\t */\n\tfunction mergeData(dataToMerge) {\n\t\tfor (const [key, value] of Object.entries(dataToMerge)) {\n\t\t\tif (typeof data[key] === \"undefined\") {\n\t\t\t\tdata[key] = 0;\n\t\t\t}\n\t\t\tdata[key] += value;\n\t\t}\n\t}\n\n\t/**\n\t * Disables printing of timing data on process exit.\n\t * Intended for worker threads or non-main contexts.\n\t * @returns {void}\n\t */\n\tfunction disableDisplay() {\n\t\tdisplayEnabled = false;\n\t}\n\n\tif (enabled) {\n\t\tprocess.on(\"exit\", () => {\n\t\t\tif (displayEnabled && Object.keys(data).length > 0) {\n\t\t\t\tdisplay(data);\n\t\t\t}\n\t\t});\n\t}\n\n\treturn {\n\t\ttime,\n\t\tenabled,\n\t\tgetListSize,\n\t\tgetData,\n\t\tmergeData,\n\t\tdisableDisplay,\n\t};\n})();\n", "/*!\n * is-extglob <https://github.com/jonschlinkert/is-extglob>\n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n  if (typeof str !== 'string' || str === '') {\n    return false;\n  }\n\n  var match;\n  while ((match = /(\\\\).|([@?!+*]\\(.*\\))/g.exec(str))) {\n    if (match[2]) return true;\n    str = str.slice(match.index + match[0].length);\n  }\n\n  return false;\n};\n", "/*!\n * is-glob <https://github.com/jonschlinkert/is-glob>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar isExtglob = require('is-extglob');\nvar chars = { '{': '}', '(': ')', '[': ']'};\nvar strictCheck = function(str) {\n  if (str[0] === '!') {\n    return true;\n  }\n  var index = 0;\n  var pipeIndex = -2;\n  var closeSquareIndex = -2;\n  var closeCurlyIndex = -2;\n  var closeParenIndex = -2;\n  var backSlashIndex = -2;\n  while (index < str.length) {\n    if (str[index] === '*') {\n      return true;\n    }\n\n    if (str[index + 1] === '?' && /[\\].+)]/.test(str[index])) {\n      return true;\n    }\n\n    if (closeSquareIndex !== -1 && str[index] === '[' && str[index + 1] !== ']') {\n      if (closeSquareIndex < index) {\n        closeSquareIndex = str.indexOf(']', index);\n      }\n      if (closeSquareIndex > index) {\n        if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n          return true;\n        }\n        backSlashIndex = str.indexOf('\\\\', index);\n        if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n          return true;\n        }\n      }\n    }\n\n    if (closeCurlyIndex !== -1 && str[index] === '{' && str[index + 1] !== '}') {\n      closeCurlyIndex = str.indexOf('}', index);\n      if (closeCurlyIndex > index) {\n        backSlashIndex = str.indexOf('\\\\', index);\n        if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) {\n          return true;\n        }\n      }\n    }\n\n    if (closeParenIndex !== -1 && str[index] === '(' && str[index + 1] === '?' && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ')') {\n      closeParenIndex = str.indexOf(')', index);\n      if (closeParenIndex > index) {\n        backSlashIndex = str.indexOf('\\\\', index);\n        if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n          return true;\n        }\n      }\n    }\n\n    if (pipeIndex !== -1 && str[index] === '(' && str[index + 1] !== '|') {\n      if (pipeIndex < index) {\n        pipeIndex = str.indexOf('|', index);\n      }\n      if (pipeIndex !== -1 && str[pipeIndex + 1] !== ')') {\n        closeParenIndex = str.indexOf(')', pipeIndex);\n        if (closeParenIndex > pipeIndex) {\n          backSlashIndex = str.indexOf('\\\\', pipeIndex);\n          if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n            return true;\n          }\n        }\n      }\n    }\n\n    if (str[index] === '\\\\') {\n      var open = str[index + 1];\n      index += 2;\n      var close = chars[open];\n\n      if (close) {\n        var n = str.indexOf(close, index);\n        if (n !== -1) {\n          index = n + 1;\n        }\n      }\n\n      if (str[index] === '!') {\n        return true;\n      }\n    } else {\n      index++;\n    }\n  }\n  return false;\n};\n\nvar relaxedCheck = function(str) {\n  if (str[0] === '!') {\n    return true;\n  }\n  var index = 0;\n  while (index < str.length) {\n    if (/[*?{}()[\\]]/.test(str[index])) {\n      return true;\n    }\n\n    if (str[index] === '\\\\') {\n      var open = str[index + 1];\n      index += 2;\n      var close = chars[open];\n\n      if (close) {\n        var n = str.indexOf(close, index);\n        if (n !== -1) {\n          index = n + 1;\n        }\n      }\n\n      if (str[index] === '!') {\n        return true;\n      }\n    } else {\n      index++;\n    }\n  }\n  return false;\n};\n\nmodule.exports = function isGlob(str, options) {\n  if (typeof str !== 'string' || str === '') {\n    return false;\n  }\n\n  if (isExtglob(str)) {\n    return true;\n  }\n\n  var check = strictCheck;\n\n  // optionally relax check\n  if (options && options.strict === false) {\n    check = relaxedCheck;\n  }\n\n  return check(str);\n};\n", "/**\n * @preserve\n * JS Implementation of incremental MurmurHash3 (r150) (as of May 10, 2013)\n *\n * @author <a href=\"mailto:jensyt@gmail.com\">Jens Taylor</a>\n * @see http://github.com/homebrewing/brauhaus-diff\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/murmurhash-js\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\n * @see http://sites.google.com/site/murmurhash/\n */\n(function(){\n    var cache;\n\n    // Call this function without `new` to use the cached object (good for\n    // single-threaded environments), or with `new` to create a new object.\n    //\n    // @param {string} key A UTF-16 or ASCII string\n    // @param {number} seed An optional positive integer\n    // @return {object} A MurmurHash3 object for incremental hashing\n    function MurmurHash3(key, seed) {\n        var m = this instanceof MurmurHash3 ? this : cache;\n        m.reset(seed)\n        if (typeof key === 'string' && key.length > 0) {\n            m.hash(key);\n        }\n\n        if (m !== this) {\n            return m;\n        }\n    };\n\n    // Incrementally add a string to this hash\n    //\n    // @param {string} key A UTF-16 or ASCII string\n    // @return {object} this\n    MurmurHash3.prototype.hash = function(key) {\n        var h1, k1, i, top, len;\n\n        len = key.length;\n        this.len += len;\n\n        k1 = this.k1;\n        i = 0;\n        switch (this.rem) {\n            case 0: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) : 0;\n            case 1: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) << 8 : 0;\n            case 2: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) << 16 : 0;\n            case 3:\n                k1 ^= len > i ? (key.charCodeAt(i) & 0xff) << 24 : 0;\n                k1 ^= len > i ? (key.charCodeAt(i++) & 0xff00) >> 8 : 0;\n        }\n\n        this.rem = (len + this.rem) & 3; // & 3 is same as % 4\n        len -= this.rem;\n        if (len > 0) {\n            h1 = this.h1;\n            while (1) {\n                k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff;\n                k1 = (k1 << 15) | (k1 >>> 17);\n                k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff;\n\n                h1 ^= k1;\n                h1 = (h1 << 13) | (h1 >>> 19);\n                h1 = (h1 * 5 + 0xe6546b64) & 0xffffffff;\n\n                if (i >= len) {\n                    break;\n                }\n\n                k1 = ((key.charCodeAt(i++) & 0xffff)) ^\n                     ((key.charCodeAt(i++) & 0xffff) << 8) ^\n                     ((key.charCodeAt(i++) & 0xffff) << 16);\n                top = key.charCodeAt(i++);\n                k1 ^= ((top & 0xff) << 24) ^\n                      ((top & 0xff00) >> 8);\n            }\n\n            k1 = 0;\n            switch (this.rem) {\n                case 3: k1 ^= (key.charCodeAt(i + 2) & 0xffff) << 16;\n                case 2: k1 ^= (key.charCodeAt(i + 1) & 0xffff) << 8;\n                case 1: k1 ^= (key.charCodeAt(i) & 0xffff);\n            }\n\n            this.h1 = h1;\n        }\n\n        this.k1 = k1;\n        return this;\n    };\n\n    // Get the result of this hash\n    //\n    // @return {number} The 32-bit hash\n    MurmurHash3.prototype.result = function() {\n        var k1, h1;\n        \n        k1 = this.k1;\n        h1 = this.h1;\n\n        if (k1 > 0) {\n            k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff;\n            k1 = (k1 << 15) | (k1 >>> 17);\n            k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff;\n            h1 ^= k1;\n        }\n\n        h1 ^= this.len;\n\n        h1 ^= h1 >>> 16;\n        h1 = (h1 * 0xca6b + (h1 & 0xffff) * 0x85eb0000) & 0xffffffff;\n        h1 ^= h1 >>> 13;\n        h1 = (h1 * 0xae35 + (h1 & 0xffff) * 0xc2b20000) & 0xffffffff;\n        h1 ^= h1 >>> 16;\n\n        return h1 >>> 0;\n    };\n\n    // Reset the hash object for reuse\n    //\n    // @param {number} seed An optional positive integer\n    MurmurHash3.prototype.reset = function(seed) {\n        this.h1 = typeof seed === 'number' ? seed : 0;\n        this.rem = this.k1 = this.len = 0;\n        return this;\n    };\n\n    // A cached object to use. This can be safely used if you're in a single-\n    // threaded environment, otherwise you need to create new hashes to use.\n    cache = new MurmurHash3();\n\n    if (typeof(module) != 'undefined') {\n        module.exports = MurmurHash3;\n    } else {\n        this.MurmurHash3 = MurmurHash3;\n    }\n}());\n", "/**\n * @fileoverview Defining the hashing function in one place.\n * @author Michael Ficarra\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst murmur = require(\"imurmurhash\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n//------------------------------------------------------------------------------\n// Private\n//------------------------------------------------------------------------------\n\n/**\n * hash the given string\n * @param {string} str the string to hash\n * @returns {string} the hash\n */\nfunction hash(str) {\n\treturn murmur(str).result().toString(36);\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nmodule.exports = hash;\n", "export const balanced = (\n  a: string | RegExp,\n  b: string | RegExp,\n  str: string,\n) => {\n  const ma = a instanceof RegExp ? maybeMatch(a, str) : a\n  const mb = b instanceof RegExp ? maybeMatch(b, str) : b\n\n  const r = ma !== null && mb != null && range(ma, mb, str)\n\n  return (\n    r && {\n      start: r[0],\n      end: r[1],\n      pre: str.slice(0, r[0]),\n      body: str.slice(r[0] + ma.length, r[1]),\n      post: str.slice(r[1] + mb.length),\n    }\n  )\n}\n\nconst maybeMatch = (reg: RegExp, str: string) => {\n  const m = str.match(reg)\n  return m ? m[0] : null\n}\n\nexport const range = (\n  a: string,\n  b: string,\n  str: string,\n): undefined | [number, number] => {\n  let begs: number[],\n    beg: number | undefined,\n    left: number,\n    right: number | undefined = undefined,\n    result: undefined | [number, number]\n  let ai = str.indexOf(a)\n  let bi = str.indexOf(b, ai + 1)\n  let i = ai\n\n  if (ai >= 0 && bi > 0) {\n    if (a === b) {\n      return [ai, bi]\n    }\n    begs = []\n    left = str.length\n\n    while (i >= 0 && !result) {\n      if (i === ai) {\n        begs.push(i)\n        ai = str.indexOf(a, i + 1)\n      } else if (begs.length === 1) {\n        const r = begs.pop()\n        if (r !== undefined) result = [r, bi]\n      } else {\n        beg = begs.pop()\n        if (beg !== undefined && beg < left) {\n          left = beg\n          right = bi\n        }\n\n        bi = str.indexOf(b, i + 1)\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi\n    }\n\n    if (begs.length && right !== undefined) {\n      result = [left, right]\n    }\n  }\n\n  return result\n}\n", "import { balanced } from 'balanced-match'\n\nconst escSlash = '\\0SLASH' + Math.random() + '\\0'\nconst escOpen = '\\0OPEN' + Math.random() + '\\0'\nconst escClose = '\\0CLOSE' + Math.random() + '\\0'\nconst escComma = '\\0COMMA' + Math.random() + '\\0'\nconst escPeriod = '\\0PERIOD' + Math.random() + '\\0'\nconst escSlashPattern = new RegExp(escSlash, 'g')\nconst escOpenPattern = new RegExp(escOpen, 'g')\nconst escClosePattern = new RegExp(escClose, 'g')\nconst escCommaPattern = new RegExp(escComma, 'g')\nconst escPeriodPattern = new RegExp(escPeriod, 'g')\nconst slashPattern = /\\\\\\\\/g\nconst openPattern = /\\\\{/g\nconst closePattern = /\\\\}/g\nconst commaPattern = /\\\\,/g\nconst periodPattern = /\\\\\\./g\n\nexport const EXPANSION_MAX = 100_000\n\nfunction numeric(str: string) {\n  return !isNaN(str as any) ? parseInt(str, 10) : str.charCodeAt(0)\n}\n\nfunction escapeBraces(str: string) {\n  return str\n    .replace(slashPattern, escSlash)\n    .replace(openPattern, escOpen)\n    .replace(closePattern, escClose)\n    .replace(commaPattern, escComma)\n    .replace(periodPattern, escPeriod)\n}\n\nfunction unescapeBraces(str: string) {\n  return str\n    .replace(escSlashPattern, '\\\\')\n    .replace(escOpenPattern, '{')\n    .replace(escClosePattern, '}')\n    .replace(escCommaPattern, ',')\n    .replace(escPeriodPattern, '.')\n}\n\n/**\n * Basically just str.split(\",\"), but handling cases\n * where we have nested braced sections, which should be\n * treated as individual members, like {a,{b,c},d}\n */\nfunction parseCommaParts(str: string) {\n  if (!str) {\n    return ['']\n  }\n\n  const parts: string[] = []\n  const m = balanced('{', '}', str)\n\n  if (!m) {\n    return str.split(',')\n  }\n\n  const { pre, body, post } = m\n  const p = pre.split(',')\n\n  p[p.length - 1] += '{' + body + '}'\n  const postParts = parseCommaParts(post)\n  if (post.length) {\n    ;(p[p.length - 1] as string) += postParts.shift()\n    p.push.apply(p, postParts)\n  }\n\n  parts.push.apply(parts, p)\n\n  return parts\n}\n\nexport type BraceExpansionOptions = {\n  max?: number\n}\n\nexport function expand(str: string, options: BraceExpansionOptions = {}) {\n  if (!str) {\n    return []\n  }\n\n  const { max = EXPANSION_MAX } = options\n\n  // I don't know why Bash 4.3 does this, but it does.\n  // Anything starting with {} will have the first two bytes preserved\n  // but *only* at the top level, so {},a}b will not expand to anything,\n  // but a{},b}c will be expanded to [a}c,abc].\n  // One could argue that this is a bug in Bash, but since the goal of\n  // this module is to match Bash's rules, we escape a leading {}\n  if (str.slice(0, 2) === '{}') {\n    str = '\\\\{\\\\}' + str.slice(2)\n  }\n\n  return expand_(escapeBraces(str), max, true).map(unescapeBraces)\n}\n\nfunction embrace(str: string) {\n  return '{' + str + '}'\n}\n\nfunction isPadded(el: string) {\n  return /^-?0\\d/.test(el)\n}\n\nfunction lte(i: number, y: number) {\n  return i <= y\n}\n\nfunction gte(i: number, y: number) {\n  return i >= y\n}\n\nfunction expand_(str: string, max: number, isTop: boolean): string[] {\n  /** @type {string[]} */\n  const expansions: string[] = []\n\n  const m = balanced('{', '}', str)\n  if (!m) return [str]\n\n  // no need to expand pre, since it is guaranteed to be free of brace-sets\n  const pre = m.pre\n  const post: string[] = m.post.length ? expand_(m.post, max, false) : ['']\n\n  if (/\\$$/.test(m.pre)) {\n    for (let k = 0; k < post.length && k < max; k++) {\n      const expansion = pre + '{' + m.body + '}' + post[k]\n      expansions.push(expansion)\n    }\n  } else {\n    const isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body)\n    const isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(\n      m.body,\n    )\n    const isSequence = isNumericSequence || isAlphaSequence\n    const isOptions = m.body.indexOf(',') >= 0\n    if (!isSequence && !isOptions) {\n      // {a},b}\n      if (m.post.match(/,(?!,).*\\}/)) {\n        str = m.pre + '{' + m.body + escClose + m.post\n        return expand_(str, max, true)\n      }\n      return [str]\n    }\n\n    let n: string[]\n    if (isSequence) {\n      n = m.body.split(/\\.\\./)\n    } else {\n      n = parseCommaParts(m.body)\n      if (n.length === 1 && n[0] !== undefined) {\n        // x{{a,b}}y ==> x{a}y x{b}y\n        n = expand_(n[0], max, false).map(embrace)\n        //XXX is this necessary? Can't seem to hit it in tests.\n        /* c8 ignore start */\n        if (n.length === 1) {\n          return post.map(p => m.pre + n[0] + p)\n        }\n        /* c8 ignore stop */\n      }\n    }\n\n    // at this point, n is the parts, and we know it's not a comma set\n    // with a single entry.\n    let N: string[]\n\n    if (isSequence && n[0] !== undefined && n[1] !== undefined) {\n      const x = numeric(n[0])\n      const y = numeric(n[1])\n      const width = Math.max(n[0].length, n[1].length)\n      let incr =\n        n.length === 3 && n[2] !== undefined ?\n          Math.max(Math.abs(numeric(n[2])), 1)\n        : 1\n      let test = lte\n      const reverse = y < x\n      if (reverse) {\n        incr *= -1\n        test = gte\n      }\n      const pad = n.some(isPadded)\n\n      N = []\n\n      for (let i = x; test(i, y) && N.length < max; i += incr) {\n        let c\n        if (isAlphaSequence) {\n          c = String.fromCharCode(i)\n          if (c === '\\\\') {\n            c = ''\n          }\n        } else {\n          c = String(i)\n          if (pad) {\n            const need = width - c.length\n            if (need > 0) {\n              const z = new Array(need + 1).join('0')\n              if (i < 0) {\n                c = '-' + z + c.slice(1)\n              } else {\n                c = z + c\n              }\n            }\n          }\n        }\n        N.push(c)\n      }\n    } else {\n      N = []\n\n      for (let j = 0; j < n.length; j++) {\n        N.push.apply(N, expand_(n[j] as string, max, false))\n      }\n    }\n\n    for (let j = 0; j < N.length; j++) {\n      for (let k = 0; k < post.length && expansions.length < max; k++) {\n        const expansion = pre + N[j] + post[k]\n        if (!isTop || isSequence || expansion) {\n          expansions.push(expansion)\n        }\n      }\n    }\n  }\n\n  return expansions\n}\n", "const MAX_PATTERN_LENGTH = 1024 * 64\nexport const assertValidPattern: (pattern: unknown) => void = (\n  pattern: unknown,\n): asserts pattern is string => {\n  if (typeof pattern !== 'string') {\n    throw new TypeError('invalid pattern')\n  }\n\n  if (pattern.length > MAX_PATTERN_LENGTH) {\n    throw new TypeError('pattern is too long')\n  }\n}\n", "// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n\n// { <posix class>: [<translation>, /u flag required, negated]\nconst posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } =\n  {\n    '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n    '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n    '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n    '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n    '[:cntrl:]': ['\\\\p{Cc}', true],\n    '[:digit:]': ['\\\\p{Nd}', true],\n    '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n    '[:lower:]': ['\\\\p{Ll}', true],\n    '[:print:]': ['\\\\p{C}', true],\n    '[:punct:]': ['\\\\p{P}', true],\n    '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n    '[:upper:]': ['\\\\p{Lu}', true],\n    '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n    '[:xdigit:]': ['A-Fa-f0-9', false],\n  }\n\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s: string) => s.replace(/[[\\]\\\\-]/g, '\\\\$&')\n// escape all regexp magic characters\nconst regexpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges: string[]): string => ranges.join('')\n\nexport type ParseClassResult = [\n  src: string,\n  uFlag: boolean,\n  consumed: number,\n  hasMagic: boolean,\n]\n\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (\n  glob: string,\n  position: number,\n): ParseClassResult => {\n  const pos = position\n  /* c8 ignore start */\n  if (glob.charAt(pos) !== '[') {\n    throw new Error('not in a brace expression')\n  }\n  /* c8 ignore stop */\n  const ranges: string[] = []\n  const negs: string[] = []\n\n  let i = pos + 1\n  let sawStart = false\n  let uflag = false\n  let escaping = false\n  let negate = false\n  let endPos = pos\n  let rangeStart = ''\n  WHILE: while (i < glob.length) {\n    const c = glob.charAt(i)\n    if ((c === '!' || c === '^') && i === pos + 1) {\n      negate = true\n      i++\n      continue\n    }\n\n    if (c === ']' && sawStart && !escaping) {\n      endPos = i + 1\n      break\n    }\n\n    sawStart = true\n    if (c === '\\\\') {\n      if (!escaping) {\n        escaping = true\n        i++\n        continue\n      }\n      // escaped \\ char, fall through and treat like normal char\n    }\n    if (c === '[' && !escaping) {\n      // either a posix class, a collation equivalent, or just a [\n      for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n        if (glob.startsWith(cls, i)) {\n          // invalid, [a-[] is fine, but not [a-[:alpha]]\n          if (rangeStart) {\n            return ['$.', false, glob.length - pos, true]\n          }\n          i += cls.length\n          if (neg) negs.push(unip)\n          else ranges.push(unip)\n          uflag = uflag || u\n          continue WHILE\n        }\n      }\n    }\n\n    // now it's just a normal character, effectively\n    escaping = false\n    if (rangeStart) {\n      // throw this range away if it's not valid, but others\n      // can still match.\n      if (c > rangeStart) {\n        ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c))\n      } else if (c === rangeStart) {\n        ranges.push(braceEscape(c))\n      }\n      rangeStart = ''\n      i++\n      continue\n    }\n\n    // now might be the start of a range.\n    // can be either c-d or c-] or c<more...>] or c] at this point\n    if (glob.startsWith('-]', i + 1)) {\n      ranges.push(braceEscape(c + '-'))\n      i += 2\n      continue\n    }\n    if (glob.startsWith('-', i + 1)) {\n      rangeStart = c\n      i += 2\n      continue\n    }\n\n    // not the start of a range, just a single character\n    ranges.push(braceEscape(c))\n    i++\n  }\n\n  if (endPos < i) {\n    // didn't see the end of the class, not a valid class,\n    // but might still be valid as a literal match.\n    return ['', false, 0, false]\n  }\n\n  // if we got no ranges and no negates, then we have a range that\n  // cannot possibly match anything, and that poisons the whole glob\n  if (!ranges.length && !negs.length) {\n    return ['$.', false, glob.length - pos, true]\n  }\n\n  // if we got one positive range, and it's a single character, then that's\n  // not actually a magic pattern, it's just that one literal character.\n  // we should not treat that as \"magic\", we should just return the literal\n  // character. [_] is a perfectly valid way to escape glob magic chars.\n  if (\n    negs.length === 0 &&\n    ranges.length === 1 &&\n    /^\\\\?.$/.test(ranges[0]) &&\n    !negate\n  ) {\n    const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]\n    return [regexpEscape(r), false, endPos - pos, false]\n  }\n\n  const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'\n  const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'\n  const comb =\n    ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')'\n    : ranges.length ? sranges\n    : snegs\n\n  return [comb, uflag, endPos - pos, true]\n}\n", "import type { MinimatchOptions } from './index.js'\n\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\n\nexport const unescape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n    magicalBraces = true,\n  }: Pick<MinimatchOptions, 'windowsPathsNoEscape' | 'magicalBraces'> = {},\n) => {\n  if (magicalBraces) {\n    return windowsPathsNoEscape ?\n        s.replace(/\\[([^/\\\\])\\]/g, '$1')\n      : s\n          .replace(/((?!\\\\).|^)\\[([^/\\\\])\\]/g, '$1$2')\n          .replace(/\\\\([^/])/g, '$1')\n  }\n  return windowsPathsNoEscape ?\n      s.replace(/\\[([^/\\\\{}])\\]/g, '$1')\n    : s\n        .replace(/((?!\\\\).|^)\\[([^/\\\\{}])\\]/g, '$1$2')\n        .replace(/\\\\([^/{}])/g, '$1')\n}\n", "// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport type { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n//   1   2 3   4 5 6      1   2    3   46      5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n//                                 v----- .* because there's more following,\n//                                 v    v  otherwise, .+ because it must be\n//                                 v    v  *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n//   copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set<ExtglobType>(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string | null): c is ExtglobType =>\n  types.has(c as ExtglobType)\nconst isExtglobAST = (c: AST): c is AST & { type: ExtglobType } =>\n  isExtglobType(c.type)\n\n// Map of which extglob types can adopt the children of a nested extglob\n//\n// anything but ! can adopt a matching type:\n// +(a|+(b|c)|d) => +(a|b|c|d)\n// *(a|*(b|c)|d) => *(a|b|c|d)\n// @(a|@(b|c)|d) => @(a|b|c|d)\n// ?(a|?(b|c)|d) => ?(a|b|c|d)\n//\n// * can adopt anything, because 0 or repetition is allowed\n// *(a|?(b|c)|d) => *(a|b|c|d)\n// *(a|+(b|c)|d) => *(a|b|c|d)\n// *(a|@(b|c)|d) => *(a|b|c|d)\n//\n// + can adopt @, because 1 or repetition is allowed\n// +(a|@(b|c)|d) => +(a|b|c|d)\n//\n// + and @ CANNOT adopt *, because 0 would be allowed\n// +(a|*(b|c)|d) => would match \"\", on *(b|c)\n// @(a|*(b|c)|d) => would match \"\", on *(b|c)\n//\n// + and @ CANNOT adopt ?, because 0 would be allowed\n// +(a|?(b|c)|d) => would match \"\", on ?(b|c)\n// @(a|?(b|c)|d) => would match \"\", on ?(b|c)\n//\n// ? can adopt @, because 0 or 1 is allowed\n// ?(a|@(b|c)|d) => ?(a|b|c|d)\n//\n// ? and @ CANNOT adopt * or +, because >1 would be allowed\n// ?(a|*(b|c)|d) => would match bbb on *(b|c)\n// @(a|*(b|c)|d) => would match bbb on *(b|c)\n// ?(a|+(b|c)|d) => would match bbb on +(b|c)\n// @(a|+(b|c)|d) => would match bbb on +(b|c)\n//\n// ! CANNOT adopt ! (nothing else can either)\n// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)\n//\n// ! can adopt @\n// !(a|@(b|c)|d) => !(a|b|c|d)\n//\n// ! CANNOT adopt *\n// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt +\n// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt ?\n// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match \"x\"\nconst adoptionMap = new Map<ExtglobType, ExtglobType[]>([\n  ['!', ['@']],\n  ['?', ['?', '@']],\n  ['@', ['@']],\n  ['*', ['*', '+', '?', '@']],\n  ['+', ['+', '@']],\n])\n\n// nested extglobs that can be adopted in, but with the addition of\n// a blank '' element.\nconst adoptionWithSpaceMap = new Map<ExtglobType, ExtglobType[]>([\n  ['!', ['?']],\n  ['@', ['?']],\n  ['+', ['?', '*']],\n])\n\n// union of the previous two maps\nconst adoptionAnyMap = new Map<ExtglobType, ExtglobType[]>([\n  ['!', ['?', '@']],\n  ['?', ['?', '@']],\n  ['@', ['?', '@']],\n  ['*', ['*', '+', '?', '@']],\n  ['+', ['+', '@', '?', '*']],\n])\n\n// Extglobs that can take over their parent if they are the only child\n// the key is parent, value maps child to resulting extglob parent type\n// '@' is omitted because it's a special case. An `@` extglob with a single\n// member can always be usurped by that subpattern.\nconst usurpMap = new Map<\n  ExtglobType,\n  Map<ExtglobType | null, ExtglobType | null>\n>([\n  ['!', new Map([['!', '@']])],\n  [\n    '?',\n    new Map([\n      ['*', '*'],\n      ['+', '*'],\n    ]),\n  ],\n  [\n    '@',\n    new Map([\n      ['!', '!'],\n      ['?', '?'],\n      ['@', '@'],\n      ['*', '*'],\n      ['+', '+'],\n    ]),\n  ],\n  [\n    '+',\n    new Map([\n      ['?', '*'],\n      ['*', '*'],\n    ]),\n  ],\n])\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nlet ID = 0\nexport class AST {\n  type: ExtglobType | null\n  readonly #root: AST\n\n  #hasMagic?: boolean\n  #uflag: boolean = false\n  #parts: (string | AST)[] = []\n  #parent?: AST\n  #parentIndex: number\n  #negs: AST[]\n  #filledNegs: boolean = false\n  #options: MinimatchOptions\n  #toString?: string\n  // set to true if it's an extglob with no children\n  // (which really means one child of '')\n  #emptyExt: boolean = false\n  id = ++ID\n\n  get depth(): number {\n    return (this.#parent?.depth ?? -1) + 1\n  }\n\n  [Symbol.for('nodejs.util.inspect.custom')]() {\n    return {\n      '@@type': 'AST',\n      id: this.id,\n      type: this.type,\n      root: this.#root.id,\n      parent: this.#parent?.id,\n      depth: this.depth,\n      partsLength: this.#parts.length,\n      parts: this.#parts,\n    }\n  }\n\n  constructor(\n    type: ExtglobType | null,\n    parent?: AST,\n    options: MinimatchOptions = {},\n  ) {\n    this.type = type\n    // extglobs are inherently magical\n    if (type) this.#hasMagic = true\n    this.#parent = parent\n    this.#root = this.#parent ? this.#parent.#root : this\n    this.#options = this.#root === this ? options : this.#root.#options\n    this.#negs = this.#root === this ? [] : this.#root.#negs\n    if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n    this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n  }\n\n  get hasMagic(): boolean | undefined {\n    /* c8 ignore start */\n    if (this.#hasMagic !== undefined) return this.#hasMagic\n    /* c8 ignore stop */\n    for (const p of this.#parts) {\n      if (typeof p === 'string') continue\n      if (p.type || p.hasMagic) return (this.#hasMagic = true)\n    }\n    // note: will be undefined until we generate the regexp src and find out\n    return this.#hasMagic\n  }\n\n  // reconstructs the pattern\n  toString(): string {\n    return (\n      this.#toString !== undefined ? this.#toString\n      : !this.type ?\n        (this.#toString = this.#parts.map(p => String(p)).join(''))\n      : (this.#toString =\n          this.type +\n          '(' +\n          this.#parts.map(p => String(p)).join('|') +\n          ')')\n    )\n  }\n\n  #fillNegs() {\n    /* c8 ignore start */\n    if (this !== this.#root) throw new Error('should only call on root')\n    if (this.#filledNegs) return this\n    /* c8 ignore stop */\n\n    // call toString() once to fill this out\n    this.toString()\n    this.#filledNegs = true\n    let n: AST | undefined\n    while ((n = this.#negs.pop())) {\n      if (n.type !== '!') continue\n      // walk up the tree, appending everthing that comes AFTER parentIndex\n      let p: AST | undefined = n\n      let pp = p.#parent\n      while (pp) {\n        for (\n          let i = p.#parentIndex + 1;\n          !pp.type && i < pp.#parts.length;\n          i++\n        ) {\n          for (const part of n.#parts) {\n            /* c8 ignore start */\n            if (typeof part === 'string') {\n              throw new Error('string part in extglob AST??')\n            }\n            /* c8 ignore stop */\n            part.copyIn(pp.#parts[i])\n          }\n        }\n        p = pp\n        pp = p.#parent\n      }\n    }\n    return this\n  }\n\n  push(...parts: (string | AST)[]) {\n    for (const p of parts) {\n      if (p === '') continue\n      /* c8 ignore start */\n      if (\n        typeof p !== 'string' &&\n        !(p instanceof AST && p.#parent === this)\n      ) {\n        throw new Error('invalid part: ' + p)\n      }\n      /* c8 ignore stop */\n      this.#parts.push(p)\n    }\n  }\n\n  toJSON() {\n    const ret: unknown[] =\n      this.type === null ?\n        this.#parts\n          .slice()\n          .map(p => (typeof p === 'string' ? p : p.toJSON()))\n      : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n    if (this.isStart() && !this.type) ret.unshift([])\n    if (\n      this.isEnd() &&\n      (this === this.#root ||\n        (this.#root.#filledNegs && this.#parent?.type === '!'))\n    ) {\n      ret.push({})\n    }\n    return ret\n  }\n\n  isStart(): boolean {\n    if (this.#root === this) return true\n    // if (this.type) return !!this.#parent?.isStart()\n    if (!this.#parent?.isStart()) return false\n    if (this.#parentIndex === 0) return true\n    // if everything AHEAD of this is a negation, then it's still the \"start\"\n    const p = this.#parent\n    for (let i = 0; i < this.#parentIndex; i++) {\n      const pp = p.#parts[i]\n      if (!(pp instanceof AST && pp.type === '!')) {\n        return false\n      }\n    }\n    return true\n  }\n\n  isEnd(): boolean {\n    if (this.#root === this) return true\n    if (this.#parent?.type === '!') return true\n    if (!this.#parent?.isEnd()) return false\n    if (!this.type) return this.#parent?.isEnd()\n    // if not root, it'll always have a parent\n    /* c8 ignore start */\n    const pl = this.#parent ? this.#parent.#parts.length : 0\n    /* c8 ignore stop */\n    return this.#parentIndex === pl - 1\n  }\n\n  copyIn(part: AST | string) {\n    if (typeof part === 'string') this.push(part)\n    else this.push(part.clone(this))\n  }\n\n  clone(parent: AST) {\n    const c = new AST(this.type, parent)\n    for (const p of this.#parts) {\n      c.copyIn(p)\n    }\n    return c\n  }\n\n  static #parseAST(\n    str: string,\n    ast: AST,\n    pos: number,\n    opt: MinimatchOptions,\n    extDepth: number,\n  ): number {\n    const maxDepth = opt.maxExtglobRecursion ?? 2\n    let escaping = false\n    let inBrace = false\n    let braceStart = -1\n    let braceNeg = false\n    if (ast.type === null) {\n      // outside of a extglob, append until we find a start\n      let i = pos\n      let acc = ''\n      while (i < str.length) {\n        const c = str.charAt(i++)\n        // still accumulate escapes at this point, but we do ignore\n        // starts that are escaped\n        if (escaping || c === '\\\\') {\n          escaping = !escaping\n          acc += c\n          continue\n        }\n\n        if (inBrace) {\n          if (i === braceStart + 1) {\n            if (c === '^' || c === '!') {\n              braceNeg = true\n            }\n          } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n            inBrace = false\n          }\n          acc += c\n          continue\n        } else if (c === '[') {\n          inBrace = true\n          braceStart = i\n          braceNeg = false\n          acc += c\n          continue\n        }\n\n        // we don't have to check for adoption here, because that's\n        // done at the other recursion point.\n        const doRecurse =\n          !opt.noext &&\n          isExtglobType(c) &&\n          str.charAt(i) === '(' &&\n          extDepth <= maxDepth\n        if (doRecurse) {\n          ast.push(acc)\n          acc = ''\n          const ext = new AST(c, ast)\n          i = AST.#parseAST(str, ext, i, opt, extDepth + 1)\n          ast.push(ext)\n          continue\n        }\n        acc += c\n      }\n      ast.push(acc)\n      return i\n    }\n\n    // some kind of extglob, pos is at the (\n    // find the next | or )\n    let i = pos + 1\n    let part = new AST(null, ast)\n    const parts: AST[] = []\n    let acc = ''\n    while (i < str.length) {\n      const c = str.charAt(i++)\n      // still accumulate escapes at this point, but we do ignore\n      // starts that are escaped\n      if (escaping || c === '\\\\') {\n        escaping = !escaping\n        acc += c\n        continue\n      }\n\n      if (inBrace) {\n        if (i === braceStart + 1) {\n          if (c === '^' || c === '!') {\n            braceNeg = true\n          }\n        } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n          inBrace = false\n        }\n        acc += c\n        continue\n      } else if (c === '[') {\n        inBrace = true\n        braceStart = i\n        braceNeg = false\n        acc += c\n        continue\n      }\n\n      const doRecurse =\n        !opt.noext &&\n        isExtglobType(c) &&\n        str.charAt(i) === '(' &&\n        /* c8 ignore start - the maxDepth is sufficient here */\n        (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)))\n      /* c8 ignore stop */\n      if (doRecurse) {\n        const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1\n        part.push(acc)\n        acc = ''\n        const ext = new AST(c, part)\n        part.push(ext)\n        i = AST.#parseAST(str, ext, i, opt, extDepth + depthAdd)\n        continue\n      }\n      if (c === '|') {\n        part.push(acc)\n        acc = ''\n        parts.push(part)\n        part = new AST(null, ast)\n        continue\n      }\n      if (c === ')') {\n        if (acc === '' && ast.#parts.length === 0) {\n          ast.#emptyExt = true\n        }\n        part.push(acc)\n        acc = ''\n        ast.push(...parts, part)\n        return i\n      }\n      acc += c\n    }\n\n    // unfinished extglob\n    // if we got here, it was a malformed extglob! not an extglob, but\n    // maybe something else in there.\n    ast.type = null\n    ast.#hasMagic = undefined\n    ast.#parts = [str.substring(pos - 1)]\n    return i\n  }\n\n  #canAdoptWithSpace(child?: AST | string): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    return this.#canAdopt(child, adoptionWithSpaceMap)\n  }\n\n  #canAdopt(\n    child?: AST | string,\n    map: Map<ExtglobType, ExtglobType[]> = adoptionMap,\n  ): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    if (\n      !child ||\n      typeof child !== 'object' ||\n      child.type !== null ||\n      child.#parts.length !== 1 ||\n      this.type === null\n    ) {\n      return false\n    }\n    const gc = child.#parts[0]\n    if (!gc || typeof gc !== 'object' || gc.type === null) {\n      return false\n    }\n    return (this as AST & { type: ExtglobType }).#canAdoptType(\n      gc.type,\n      map,\n    )\n  }\n  #canAdoptType(\n    c: string,\n    map: Map<ExtglobType, ExtglobType[]> = adoptionAnyMap,\n  ): c is ExtglobType {\n    return !!map.get(this.type as ExtglobType)?.includes(c as ExtglobType)\n  }\n\n  #adoptWithSpace(\n    this: AST & { type: ExtglobType },\n    child: AST & {\n      type: null\n    },\n    index: number,\n  ) {\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    const blank = new AST(null, gc, this.options)\n    blank.#parts.push('')\n    gc.push(blank)\n    this.#adopt(child, index)\n  }\n\n  #adopt(\n    child: AST & {\n      type: null\n    },\n    index: number,\n  ) {\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    this.#parts.splice(index, 1, ...gc.#parts)\n    for (const p of gc.#parts) {\n      if (typeof p === 'object') p.#parent = this\n    }\n    this.#toString = undefined\n  }\n\n  #canUsurpType(c: string): boolean {\n    const m = usurpMap.get(this.type as ExtglobType)\n    return !!m?.has(c as ExtglobType)\n  }\n\n  #canUsurp(child?: AST | string): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    if (\n      !child ||\n      typeof child !== 'object' ||\n      child.type !== null ||\n      child.#parts.length !== 1 ||\n      this.type === null ||\n      this.#parts.length !== 1\n    ) {\n      return false\n    }\n    const gc = child.#parts[0]\n    if (!gc || typeof gc !== 'object' || gc.type === null) {\n      return false\n    }\n    return (this as AST & { type: ExtglobType }).#canUsurpType(gc.type)\n  }\n\n  #usurp(this: AST & { type: ExtglobType }, child: AST & { type: null }) {\n    const m = usurpMap.get(this.type as ExtglobType)\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    const nt = m?.get(gc.type)\n    /* c8 ignore start - impossible */\n    if (!nt) return false\n    /* c8 ignore stop */\n    this.#parts = gc.#parts\n    for (const p of this.#parts) {\n      if (typeof p === 'object') {\n        p.#parent = this\n      }\n    }\n    this.type = nt\n    this.#toString = undefined\n    this.#emptyExt = false\n  }\n\n  static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n    const ast = new AST(null, undefined, options)\n    AST.#parseAST(pattern, ast, 0, options, 0)\n    return ast\n  }\n\n  // returns the regular expression if there's magic, or the unescaped\n  // string if not.\n  toMMPattern(): MMRegExp | string {\n    // should only be called on root\n    /* c8 ignore start */\n    if (this !== this.#root) return this.#root.toMMPattern()\n    /* c8 ignore stop */\n    const glob = this.toString()\n    const [re, body, hasMagic, uflag] = this.toRegExpSource()\n    // if we're in nocase mode, and not nocaseMagicOnly, then we do\n    // still need a regular expression if we have to case-insensitively\n    // match capital/lowercase characters.\n    const anyMagic =\n      hasMagic ||\n      this.#hasMagic ||\n      (this.#options.nocase &&\n        !this.#options.nocaseMagicOnly &&\n        glob.toUpperCase() !== glob.toLowerCase())\n    if (!anyMagic) {\n      return body\n    }\n\n    const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    return Object.assign(new RegExp(`^${re}$`, flags), {\n      _src: re,\n      _glob: glob,\n    })\n  }\n\n  get options() {\n    return this.#options\n  }\n\n  // returns the string match, the regexp source, whether there's magic\n  // in the regexp (so a regular expression is required) and whether or\n  // not the uflag is needed for the regular expression (for posix classes)\n  // TODO: instead of injecting the start/end at this point, just return\n  // the BODY of the regexp, along with the start/end portions suitable\n  // for binding the start/end in either a joined full-path makeRe context\n  // (where we bind to (^|/), or a standalone matchPart context (where\n  // we bind to ^, and not /).  Otherwise slashes get duped!\n  //\n  // In part-matching mode, the start is:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n  // - if dots allowed or not possible: ^\n  // - if dots possible and not allowed: ^(?!\\.)\n  // end is:\n  // - if not isEnd(): nothing\n  // - else: $\n  //\n  // In full-path matching mode, we put the slash at the START of the\n  // pattern, so start is:\n  // - if first pattern: same as part-matching mode\n  // - if not isStart(): nothing\n  // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n  // - if dots allowed or not possible: /\n  // - if dots possible and not allowed: /(?!\\.)\n  // end is:\n  // - if last pattern, same as part-matching mode\n  // - else nothing\n  //\n  // Always put the (?:$|/) on negated tails, though, because that has to be\n  // there to bind the end of the negated pattern portion, and it's easier to\n  // just stick it in now rather than try to inject it later in the middle of\n  // the pattern.\n  //\n  // We can just always return the same end, and leave it up to the caller\n  // to know whether it's going to be used joined or in parts.\n  // And, if the start is adjusted slightly, can do the same there:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n  // - if dots allowed or not possible: (?:/|^)\n  // - if dots possible and not allowed: (?:/|^)(?!\\.)\n  //\n  // But it's better to have a simpler binding without a conditional, for\n  // performance, so probably better to return both start options.\n  //\n  // Then the caller just ignores the end if it's not the first pattern,\n  // and the start always gets applied.\n  //\n  // But that's always going to be $ if it's the ending pattern, or nothing,\n  // so the caller can just attach $ at the end of the pattern when building.\n  //\n  // So the todo is:\n  // - better detect what kind of start is needed\n  // - return both flavors of starting pattern\n  // - attach $ at the end of the pattern when creating the actual RegExp\n  //\n  // Ah, but wait, no, that all only applies to the root when the first pattern\n  // is not an extglob. If the first pattern IS an extglob, then we need all\n  // that dot prevention biz to live in the extglob portions, because eg\n  // +(*|.x*) can match .xy but not .yx.\n  //\n  // So, return the two flavors if it's #root and the first child is not an\n  // AST, otherwise leave it to the child AST to handle it, and there,\n  // use the (?:^|/) style of start binding.\n  //\n  // Even simplified further:\n  // - Since the start for a join is eg /(?!\\.) and the start for a part\n  // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n  // or start or whatever) and prepend ^ or / at the Regexp construction.\n  toRegExpSource(\n    allowDot?: boolean,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    const dot = allowDot ?? !!this.#options.dot\n    if (this.#root === this) {\n      this.#flatten()\n      this.#fillNegs()\n    }\n    if (!isExtglobAST(this)) {\n      const noEmpty =\n        this.isStart() &&\n        this.isEnd() &&\n        !this.#parts.some(s => typeof s !== 'string')\n      const src = this.#parts\n        .map(p => {\n          const [re, _, hasMagic, uflag] =\n            typeof p === 'string' ?\n              AST.#parseGlob(p, this.#hasMagic, noEmpty)\n            : p.toRegExpSource(allowDot)\n          this.#hasMagic = this.#hasMagic || hasMagic\n          this.#uflag = this.#uflag || uflag\n          return re\n        })\n        .join('')\n\n      let start = ''\n      if (this.isStart()) {\n        if (typeof this.#parts[0] === 'string') {\n          // this is the string that will match the start of the pattern,\n          // so we need to protect against dots and such.\n\n          // '.' and '..' cannot match unless the pattern is that exactly,\n          // even if it starts with . or dot:true is set.\n          const dotTravAllowed =\n            this.#parts.length === 1 && justDots.has(this.#parts[0])\n          if (!dotTravAllowed) {\n            const aps = addPatternStart\n            // check if we have a possibility of matching . or ..,\n            // and prevent that.\n            const needNoTrav =\n              // dots are allowed, and the pattern starts with [ or .\n              (dot && aps.has(src.charAt(0))) ||\n              // the pattern starts with \\., and then [ or .\n              (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n              // the pattern starts with \\.\\., and then [ or .\n              (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n            // no need to prevent dots if it can't match a dot, or if a\n            // sub-pattern will be preventing it anyway.\n            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n            start =\n              needNoTrav ? startNoTraversal\n              : needNoDot ? startNoDot\n              : ''\n          }\n        }\n      }\n\n      // append the \"end of path portion\" pattern to negation tails\n      let end = ''\n      if (\n        this.isEnd() &&\n        this.#root.#filledNegs &&\n        this.#parent?.type === '!'\n      ) {\n        end = '(?:$|\\\\/)'\n      }\n      const final = start + src + end\n      return [\n        final,\n        unescape(src),\n        (this.#hasMagic = !!this.#hasMagic),\n        this.#uflag,\n      ]\n    }\n\n    // We need to calculate the body *twice* if it's a repeat pattern\n    // at the start, once in nodot mode, then again in dot mode, so a\n    // pattern like *(?) can match 'x.y'\n\n    const repeated = this.type === '*' || this.type === '+'\n    // some kind of extglob\n    const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n    let body = (this as AST & { type: ExtglobType }).#partsToRegExp(dot)\n\n    if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n      // invalid extglob, has to at least be *something* present, if it's\n      // the entire path portion.\n      const s = this.toString()\n      const me = this as AST\n      me.#parts = [s]\n      me.type = null\n      me.#hasMagic = undefined\n      return [s, unescape(this.toString()), false, false]\n    }\n\n    let bodyDotAllowed =\n      !repeated || allowDot || dot || !startNoDot ?\n        ''\n      : this.#partsToRegExp(true)\n    if (bodyDotAllowed === body) {\n      bodyDotAllowed = ''\n    }\n    if (bodyDotAllowed) {\n      body = `(?:${body})(?:${bodyDotAllowed})*?`\n    }\n\n    // an empty !() is exactly equivalent to a starNoEmpty\n    let final = ''\n    if (this.type === '!' && this.#emptyExt) {\n      final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n    } else {\n      const close =\n        this.type === '!' ?\n          // !() must match something,but !(x) can match ''\n          '))' +\n          (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n          star +\n          ')'\n        : this.type === '@' ? ')'\n        : this.type === '?' ? ')?'\n        : this.type === '+' && bodyDotAllowed ? ')'\n        : this.type === '*' && bodyDotAllowed ? `)?`\n        : `)${this.type}`\n      final = start + body + close\n    }\n    return [\n      final,\n      unescape(body),\n      (this.#hasMagic = !!this.#hasMagic),\n      this.#uflag,\n    ]\n  }\n\n  #flatten() {\n    if (!isExtglobAST(this)) {\n      for (const p of this.#parts) {\n        if (typeof p === 'object') {\n          p.#flatten()\n        }\n      }\n    } else {\n      // do up to 10 passes to flatten as much as possible\n      let iterations = 0\n      let done = false\n      do {\n        done = true\n        for (let i = 0; i < this.#parts.length; i++) {\n          const c = this.#parts[i]\n          if (typeof c === 'object') {\n            c.#flatten()\n            if (this.#canAdopt(c)) {\n              done = false\n              this.#adopt(c, i)\n            } else if (this.#canAdoptWithSpace(c)) {\n              done = false\n              ;(this as AST & { type: ExtglobType }).#adoptWithSpace(c, i)\n            } else if (this.#canUsurp(c)) {\n              done = false\n              ;(this as AST & { type: ExtglobType }).#usurp(c)\n            }\n          }\n        }\n      } while (!done && ++iterations < 10)\n    }\n    this.#toString = undefined\n  }\n\n  #partsToRegExp(this: AST & { type: ExtglobType }, dot: boolean) {\n    return this.#parts\n      .map(p => {\n        // extglob ASTs should only contain parent ASTs\n        /* c8 ignore start */\n        if (typeof p === 'string') {\n          throw new Error('string type in extglob ast??')\n        }\n        /* c8 ignore stop */\n        // can ignore hasMagic, because extglobs are already always magic\n        const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n        this.#uflag = this.#uflag || uflag\n        return re\n      })\n      .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n      .join('|')\n  }\n\n  static #parseGlob(\n    glob: string,\n    hasMagic: boolean | undefined,\n    noEmpty: boolean = false,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    let escaping = false\n    let re = ''\n    let uflag = false\n    // multiple stars that aren't globstars coalesce into one *\n    let inStar = false\n    for (let i = 0; i < glob.length; i++) {\n      const c = glob.charAt(i)\n      if (escaping) {\n        escaping = false\n        re += (reSpecials.has(c) ? '\\\\' : '') + c\n        continue\n      }\n      if (c === '*') {\n        if (inStar) continue\n        inStar = true\n        re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star\n        hasMagic = true\n        continue\n      } else {\n        inStar = false\n      }\n      if (c === '\\\\') {\n        if (i === glob.length - 1) {\n          re += '\\\\\\\\'\n        } else {\n          escaping = true\n        }\n        continue\n      }\n      if (c === '[') {\n        const [src, needUflag, consumed, magic] = parseClass(glob, i)\n        if (consumed) {\n          re += src\n          uflag = uflag || needUflag\n          i += consumed - 1\n          hasMagic = hasMagic || magic\n          continue\n        }\n      }\n      if (c === '?') {\n        re += qmark\n        hasMagic = true\n        continue\n      }\n      re += regExpEscape(c)\n    }\n    return [re, unescape(glob), !!hasMagic, uflag]\n  }\n}\n", "import type { MinimatchOptions } from './index.js'\n\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n *\n * If the {@link MinimatchOptions.magicalBraces} option is used,\n * then braces (`{` and `}`) will be escaped.\n */\nexport const escape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n    magicalBraces = false,\n  }: Pick<MinimatchOptions, 'windowsPathsNoEscape' | 'magicalBraces'> = {},\n) => {\n  // don't need to escape +@! because we escape the parens\n  // that make those magic, and escaping ! as [!] isn't valid,\n  // because [!]] is a valid glob class meaning not ']'.\n  if (magicalBraces) {\n    return windowsPathsNoEscape ?\n        s.replace(/[?*()[\\]{}]/g, '[$&]')\n      : s.replace(/[?*()[\\]\\\\{}]/g, '\\\\$&')\n  }\n  return windowsPathsNoEscape ?\n      s.replace(/[?*()[\\]]/g, '[$&]')\n    : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n", "import { expand } from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport type { ExtglobType } from './ast.js'\nimport { AST } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  /** do not expand `{x,y}` style braces */\n  nobrace?: boolean\n  /** do not treat patterns starting with `#` as a comment */\n  nocomment?: boolean\n  /** do not treat patterns starting with `!` as a negation */\n  nonegate?: boolean\n  /** print LOTS of debugging output */\n  debug?: boolean\n  /** treat `**` the same as `*` */\n  noglobstar?: boolean\n  /** do not expand extglobs like `+(a|b)` */\n  noext?: boolean\n  /** return the pattern if nothing matches */\n  nonull?: boolean\n  /** treat `\\\\` as a path separator, not an escape character */\n  windowsPathsNoEscape?: boolean\n  /**\n   * inverse of {@link MinimatchOptions.windowsPathsNoEscape}\n   * @deprecated\n   */\n  allowWindowsEscape?: boolean\n  /**\n   * Compare a partial path to a pattern. As long as the parts\n   * of the path that are present are not contradicted by the\n   * pattern, it will be treated as a match. This is useful in\n   * applications where you're walking through a folder structure,\n   * and don't yet have the full path, but want to ensure that you\n   * do not walk down paths that can never be a match.\n   */\n  partial?: boolean\n  /** allow matches that start with `.` even if the pattern does not */\n  dot?: boolean\n  /** ignore case */\n  nocase?: boolean\n  /** ignore case only in wildcard patterns */\n  nocaseMagicOnly?: boolean\n  /** consider braces to be \"magic\" for the purpose of `hasMagic` */\n  magicalBraces?: boolean\n  /**\n   * If set, then patterns without slashes will be matched\n   * against the basename of the path if it contains slashes.\n   * For example, `a?b` would match the path `/xyz/123/acb`, but\n   * not `/xyz/acb/123`.\n   */\n  matchBase?: boolean\n  /** invert the results of negated matches */\n  flipNegate?: boolean\n  /** do not collapse multiple `/` into a single `/` */\n  preserveMultipleSlashes?: boolean\n  /**\n   * A number indicating the level of optimization that should be done\n   * to the pattern prior to parsing and using it for matches.\n   */\n  optimizationLevel?: number\n  /** operating system platform */\n  platform?: Platform\n  /**\n   * When a pattern starts with a UNC path or drive letter, and in\n   * `nocase:true` mode, do not convert the root portions of the\n   * pattern into a case-insensitive regular expression, and instead\n   * leave them as strings.\n   *\n   * This is the default when the platform is `win32` and\n   * `nocase:true` is set.\n   */\n  windowsNoMagicRoot?: boolean\n  /**\n   * max number of `{...}` patterns to expand. Default 100_000.\n   */\n  braceExpandMax?: number\n  /**\n   * Max number of non-adjacent `**` patterns to recursively walk down.\n   *\n   * The default of 200 is almost certainly high enough for most purposes,\n   * and can handle absurdly excessive patterns.\n   */\n  maxGlobstarRecursion?: number\n\n  /**\n   * Max depth to traverse for nested extglobs like `*(a|b|c)`\n   *\n   * Default is 2, which is quite low, but any higher value\n   * swiftly results in punishing performance impacts. Note\n   * that this is *not*  relevant when the globstar types can\n   * be safely coalesced into a single set.\n   *\n   * For example, `*(a|@(b|c)|d)` would be flattened into\n   * `*(a|b|c|d)`. Thus, many common extglobs will retain good\n   * performance and  never hit this limit, even if they are\n   * excessively deep and complicated.\n   *\n   * If the limit is hit, then the extglob characters are simply\n   * not parsed, and the pattern effectively switches into\n   * `noextglob: true` mode for the contents of that nested\n   * sub-pattern. This will typically _not_ result in a match,\n   * but is considered a valid trade-off for security and\n   * performance.\n   */\n  maxExtglobRecursion?: number\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?*[(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) =>\n  !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) =>\n  f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) =>\n  f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?*[(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process ?\n    (typeof process.env === 'object' &&\n      process.env &&\n      process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n    process.platform\n  : 'posix') as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep =\n  defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {},\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) =>\n      orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (\n      list: string[],\n      pattern: string,\n      options: MinimatchOptions = {},\n    ) => orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li <https://github.com/yetingli> for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern, { max: options.braceExpandMax })\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n  maxGlobstarRecursion: number\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    // avoid the annoying deprecation flag lol\n    const awe = ('allowWindow' + 'sEscape') as keyof MinimatchOptions\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options[awe] === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined ?\n        options.windowsNoMagicRoot\n      : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: unknown[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      //oxlint-disable-next-line no-console\n      this.debug = (...args: unknown[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [\n            ...s.slice(0, 4),\n            ...s.slice(4).map(ss => this.parse(ss)),\n          ]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1,\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn ** into *\n    if (this.options.noglobstar) {\n      for (const partset of globParts) {\n        for (let j = 0; j < partset.length; j++) {\n          if (partset[j] === '**') {\n            partset[j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n\n    do {\n      didSomething = false\n      // <pre>/<e>/<rest> -> <pre>/<rest>\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // <pre>/<p>/../<rest> -> <pre>/<rest>\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (\n          p &&\n          p !== '.' &&\n          p !== '..' &&\n          p !== '**' &&\n          !(this.isWindows && /^[a-z]:$/i.test(p))\n        ) {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // <pre> is 1 or more portions\n  // <rest> is 1 or more portions\n  // <p> is any portion other than ., .., '', or **\n  // <e> is . or ''\n  //\n  // **/.. is *brutal* for filesystem walking performance, because\n  // it effectively resets the recursive walk each time it occurs,\n  // and ** cannot be reduced out by a .. pattern part like a regexp\n  // or most strings (other than .., ., and '') can be.\n  //\n  // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n  // <pre>/<e>/<rest> -> <pre>/<rest>\n  // <pre>/<p>/../<rest> -> <pre>/<rest>\n  // **/**/<rest> -> **/<rest>\n  //\n  // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n      for (let parts of globParts) {\n        let gs: number = -1\n        while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n          let gss: number = gs\n          while (parts[gss + 1] === '**') {\n            // <pre>/**/**/<rest> -> <pre>/**/<rest>\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // <pre>/<e>/<rest> -> <pre>/<rest>\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // <pre>/<p>/../<rest> -> <pre>/<rest>\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest>\n  // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest>\n  // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest>\n  //\n  // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest>\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean = false,\n  ) {\n    let fileStartIndex = 0\n    let patternStartIndex = 0\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive =\n        typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi =\n        fileUNC ? 3\n        : fileDrive ? 0\n        : undefined\n      const pdi =\n        patternUNC ? 3\n        : patternDrive ? 0\n        : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [\n          file[fdi],\n          pattern[pdi] as string,\n        ]\n        // start matching at the drive letter index of each\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          patternStartIndex = pdi\n          fileStartIndex = fdi\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    if (pattern.includes(GLOBSTAR)) {\n      return this.#matchGlobstar(\n        file,\n        pattern,\n        partial,\n        fileStartIndex,\n        patternStartIndex,\n      )\n    }\n\n    return this.#matchOne(\n      file,\n      pattern,\n      partial,\n      fileStartIndex,\n      patternStartIndex,\n    )\n  }\n\n  #matchGlobstar(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    // split the pattern into head, tail, and middle of ** delimited parts\n    const firstgs = pattern.indexOf(GLOBSTAR, patternIndex)\n    const lastgs = pattern.lastIndexOf(GLOBSTAR)\n\n    // split the pattern up into globstar-delimited sections\n    // the tail has to be at the end, and the others just have\n    // to be found in order from the head.\n    const [head, body, tail] =\n      partial ?\n        [\n          pattern.slice(patternIndex, firstgs),\n          pattern.slice(firstgs + 1),\n          [],\n        ]\n      : [\n          pattern.slice(patternIndex, firstgs),\n          pattern.slice(firstgs + 1, lastgs),\n          pattern.slice(lastgs + 1),\n        ]\n\n    // check the head, from the current file/pattern index.\n    if (head.length) {\n      const fileHead = file.slice(fileIndex, fileIndex + head.length)\n      if (!this.#matchOne(fileHead, head, partial, 0, 0)) {\n        return false\n      }\n      fileIndex += head.length\n      patternIndex += head.length\n    }\n    // now we know the head matches!\n\n    // if the last portion is not empty, it MUST match the end\n    // check the tail\n    let fileTailMatch: number = 0\n    if (tail.length) {\n      // if head + tail > file, then we cannot possibly match\n      if (tail.length + fileIndex > file.length) return false\n\n      // try to match the tail\n      let tailStart = file.length - tail.length\n      if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n        fileTailMatch = tail.length\n      } else {\n        // affordance for stuff like a/**/* matching a/b/\n        // if the last file portion is '', and there's more to the pattern\n        // then try without the '' bit.\n        if (\n          file[file.length - 1] !== '' ||\n          fileIndex + tail.length === file.length\n        ) {\n          return false\n        }\n        tailStart--\n        if (!this.#matchOne(file, tail, partial, tailStart, 0)) {\n          return false\n        }\n        fileTailMatch = tail.length + 1\n      }\n    }\n\n    // now we know the tail matches!\n\n    // the middle is zero or more portions wrapped in **, possibly\n    // containing more ** sections.\n    // so a/**/b/**/c/**/d has become **/b/**/c/**\n    // if it's empty, it means a/**/b, just verify we have no bad dots\n    // if there's no tail, so it ends on /**, then we must have *something*\n    // after the head, or it's not a matc\n    if (!body.length) {\n      let sawSome = !!fileTailMatch\n      for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n        const f = String(file[i])\n        sawSome = true\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      // in partial mode, we just need to get past all file parts\n      return partial || sawSome\n    }\n\n    // now we know that there's one or more body sections, which can\n    // be matched anywhere from the 0 index (because the head was pruned)\n    // through to the length-fileTailMatch index.\n    // split the body up into sections, and note the minimum index it can\n    // be found at (start with the length of all previous segments)\n    // [section, before, after]\n    const bodySegments: [ParseReturn[], number][] = [[[], 0]]\n    let currentBody: [ParseReturn[], number] = bodySegments[0]\n    let nonGsParts = 0\n    const nonGsPartsSums: number[] = [0]\n    for (const b of body) {\n      if (b === GLOBSTAR) {\n        nonGsPartsSums.push(nonGsParts)\n        currentBody = [[], 0]\n        bodySegments.push(currentBody)\n      } else {\n        currentBody[0].push(b)\n        nonGsParts++\n      }\n    }\n    let i = bodySegments.length - 1\n    const fileLength = file.length - fileTailMatch\n    for (const b of bodySegments) {\n      b[1] = fileLength - ((nonGsPartsSums[i--] as number) + b[0].length)\n    }\n\n    return !!this.#matchGlobStarBodySections(\n      file,\n      bodySegments,\n      fileIndex,\n      0,\n      partial,\n      0,\n      !!fileTailMatch,\n    )\n  }\n\n  // return false for \"nope, not matching\"\n  // return null for \"not matching, cannot keep trying\"\n  #matchGlobStarBodySections(\n    file: string[],\n    // pattern section, last possible position for it\n    bodySegments: [ParseReturn[], number][],\n    fileIndex: number,\n    bodyIndex: number,\n    partial: boolean,\n    globStarDepth: number,\n    sawTail: boolean,\n  ): boolean | null {\n    // take the first body segment, and walk from fileIndex to its \"after\"\n    // value at the end\n    // If it doesn't match at that position, we increment, until we hit\n    // that final possible position, and give up.\n    // If it does match, then advance and try to rest.\n    // If any of them fail we keep walking forward.\n    // this is still a bit recursively painful, but it's more constrained\n    // than previous implementations, because we never test something that\n    // can't possibly be a valid matching condition.\n    const bs = bodySegments[bodyIndex]\n    if (!bs) {\n      // just make sure that there's no bad dots\n      for (let i = fileIndex; i < file.length; i++) {\n        sawTail = true\n        const f = file[i]\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      return sawTail\n    }\n\n    // have a non-globstar body section to test\n    const [body, after] = bs\n    while (fileIndex <= after) {\n      const m = this.#matchOne(\n        file.slice(0, fileIndex + body.length),\n        body,\n        partial,\n        fileIndex,\n        0,\n      )\n      // if limit exceeded, no match. intentional false negative,\n      // acceptable break in correctness for security.\n      if (m && globStarDepth < this.maxGlobstarRecursion) {\n        // match! see if the rest match. if so, we're done!\n        const sub = this.#matchGlobStarBodySections(\n          file,\n          bodySegments,\n          fileIndex + body.length,\n          bodyIndex + 1,\n          partial,\n          globStarDepth + 1,\n          sawTail,\n        )\n        if (sub !== false) {\n          return sub\n        }\n      }\n      const f = file[fileIndex]\n      if (\n        f === '.' ||\n        f === '..' ||\n        (!this.options.dot && f.startsWith('.'))\n      ) {\n        return false\n      }\n\n      fileIndex++\n    }\n    // walked off. no point continuing\n    return partial || null\n  }\n\n  #matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    let fi: number\n    let pi: number\n    let pl: number\n    let fl: number\n    for (\n      fi = fileIndex,\n        pi = patternIndex,\n        fl = file.length,\n        pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      let p = pattern[pi]\n      let f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false || p === GLOBSTAR) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.<ext>  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            starDotExtTestNocaseDot\n          : starDotExtTestNocase\n        : options.dot ? starDotExtTestDot\n        : starDotExtTest)(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            qmarksTestNocaseDot\n          : qmarksTestNocase\n        : options.dot ? qmarksTestDot\n        : qmarksTest)(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar =\n      options.noglobstar ? star\n      : options.dot ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return (\n            typeof p === 'string' ? regExpEscape(p)\n            : p === GLOBSTAR ? GLOBSTAR\n            : p._src\n          )\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (const pattern of set) {\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n", "'use strict';\n\nvar isGlob = require('is-glob');\nvar pathPosixDirname = require('path').posix.dirname;\nvar isWin32 = require('os').platform() === 'win32';\n\nvar slash = '/';\nvar backslash = /\\\\/g;\nvar escaped = /\\\\([!*?|[\\](){}])/g;\n\n/**\n * @param {string} str\n * @param {Object} opts\n * @param {boolean} [opts.flipBackslashes=true]\n */\nmodule.exports = function globParent(str, opts) {\n  var options = Object.assign({ flipBackslashes: true }, opts);\n\n  // flip windows path separators\n  if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {\n    str = str.replace(backslash, slash);\n  }\n\n  // special case for strings ending in enclosure containing path separator\n  if (isEnclosure(str)) {\n    str += slash;\n  }\n\n  // preserves full path in case of trailing path separator\n  str += 'a';\n\n  // remove path parts that are globby\n  do {\n    str = pathPosixDirname(str);\n  } while (isGlobby(str));\n\n  // remove escape chars and return result\n  return str.replace(escaped, '$1');\n};\n\nfunction isEnclosure(str) {\n  var lastChar = str.slice(-1);\n\n  var enclosureStart;\n  switch (lastChar) {\n    case '}':\n      enclosureStart = '{';\n      break;\n    case ']':\n      enclosureStart = '[';\n      break;\n    default:\n      return false;\n  }\n\n  var foundIndex = str.indexOf(enclosureStart);\n  if (foundIndex < 0) {\n    return false;\n  }\n\n  return str.slice(foundIndex + 1, -1).includes(slash);\n}\n\nfunction isGlobby(str) {\n  if (/\\([^()]+$/.test(str)) {\n    return true;\n  }\n  if (str[0] === '{' || str[0] === '[') {\n    return true;\n  }\n  if (/[^\\\\][{[]/.test(str)) {\n    return true;\n  }\n  return isGlob(str);\n}\n", "/**\n * @fileoverview Applies default rule options\n * @author JoshuaKGoldberg\n */\n\n\"use strict\";\n\n/**\n * Check if the variable contains an object strictly rejecting arrays\n * @param {unknown} value an object\n * @returns {boolean} Whether value is an object\n */\nfunction isObjectNotArray(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/**\n * Deeply merges second on top of first, creating a new {} object if needed.\n * @param {T} first Base, default value.\n * @param {U} second User-specified value.\n * @returns {T | U | (T & U)} Merged equivalent of second on top of first.\n */\nfunction deepMergeObjects(first, second) {\n\tif (second === void 0) {\n\t\treturn first;\n\t}\n\n\tif (!isObjectNotArray(first) || !isObjectNotArray(second)) {\n\t\treturn second;\n\t}\n\n\tconst result = { ...first, ...second };\n\n\tfor (const key of Object.keys(second)) {\n\t\tif (Object.prototype.propertyIsEnumerable.call(first, key)) {\n\t\t\tresult[key] = deepMergeObjects(first[key], second[key]);\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Deeply merges second on top of first, creating a new [] array if needed.\n * @param {T[]} first Base, default values.\n * @param {U[]} second User-specified values.\n * @returns {(T | U | (T & U))[]} Merged equivalent of second on top of first.\n */\nfunction deepMergeArrays(first, second) {\n\tif (!first || !second) {\n\t\treturn second || first || [];\n\t}\n\n\treturn [\n\t\t...first.map((value, i) =>\n\t\t\tdeepMergeObjects(value, i < second.length ? second[i] : void 0),\n\t\t),\n\t\t...second.slice(first.length),\n\t];\n}\n\nmodule.exports = { deepMergeArrays };\n", "/**\n * @fileoverview Helpers for severity values (e.g. normalizing different types).\n * @author Bryan Mishkin\n */\n\n\"use strict\";\n\n/**\n * Convert severity value of different types to a string.\n * @param {string|number} severity severity value\n * @throws error if severity is invalid\n * @returns {string} severity string\n */\nfunction normalizeSeverityToString(severity) {\n\tif ([2, \"2\", \"error\"].includes(severity)) {\n\t\treturn \"error\";\n\t}\n\tif ([1, \"1\", \"warn\"].includes(severity)) {\n\t\treturn \"warn\";\n\t}\n\tif ([0, \"0\", \"off\"].includes(severity)) {\n\t\treturn \"off\";\n\t}\n\tthrow new Error(`Invalid severity value: ${severity}`);\n}\n\n/**\n * Convert severity value of different types to a number.\n * @param {string|number} severity severity value\n * @throws error if severity is invalid\n * @returns {number} severity number\n */\nfunction normalizeSeverityToNumber(severity) {\n\tif ([2, \"2\", \"error\"].includes(severity)) {\n\t\treturn 2;\n\t}\n\tif ([1, \"1\", \"warn\"].includes(severity)) {\n\t\treturn 1;\n\t}\n\tif ([0, \"0\", \"off\"].includes(severity)) {\n\t\treturn 0;\n\t}\n\tthrow new Error(`Invalid severity value: ${severity}`);\n}\n\nmodule.exports = {\n\tnormalizeSeverityToString,\n\tnormalizeSeverityToNumber,\n};\n", "/**\n * @fileoverview Flat config schema\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Requirements\n//-----------------------------------------------------------------------------\n\nconst { normalizeSeverityToNumber } = require(\"../shared/severity\");\n\n//-----------------------------------------------------------------------------\n// Type Definitions\n//-----------------------------------------------------------------------------\n\n/**\n * @typedef ObjectPropertySchema\n * @property {Function|string} merge The function or name of the function to call\n *      to merge multiple objects with this property.\n * @property {Function|string} validate The function or name of the function to call\n *      to validate the value of this property.\n */\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\nconst ruleSeverities = new Map([\n\t[0, 0],\n\t[\"off\", 0],\n\t[1, 1],\n\t[\"warn\", 1],\n\t[2, 2],\n\t[\"error\", 2],\n]);\n\n/**\n * Check if a value is a non-null object.\n * @param {any} value The value to check.\n * @returns {boolean} `true` if the value is a non-null object.\n */\nfunction isNonNullObject(value) {\n\treturn typeof value === \"object\" && value !== null;\n}\n\n/**\n * Check if a value is a non-null non-array object.\n * @param {any} value The value to check.\n * @returns {boolean} `true` if the value is a non-null non-array object.\n */\nfunction isNonArrayObject(value) {\n\treturn isNonNullObject(value) && !Array.isArray(value);\n}\n\n/**\n * Check if a value is undefined.\n * @param {any} value The value to check.\n * @returns {boolean} `true` if the value is undefined.\n */\nfunction isUndefined(value) {\n\treturn typeof value === \"undefined\";\n}\n\n/**\n * Deeply merges two non-array objects.\n * @param {Object} first The base object.\n * @param {Object} second The overrides object.\n * @param {Map<string, Map<string, Object>>} [mergeMap] Maps the combination of first and second arguments to a merged result.\n * @returns {Object} An object with properties from both first and second.\n */\nfunction deepMerge(first, second, mergeMap = new Map()) {\n\tlet secondMergeMap = mergeMap.get(first);\n\n\tif (secondMergeMap) {\n\t\tconst result = secondMergeMap.get(second);\n\n\t\tif (result) {\n\t\t\t// If this combination of first and second arguments has been already visited, return the previously created result.\n\t\t\treturn result;\n\t\t}\n\t} else {\n\t\tsecondMergeMap = new Map();\n\t\tmergeMap.set(first, secondMergeMap);\n\t}\n\n\t/*\n\t * First create a result object where properties from the second object\n\t * overwrite properties from the first. This sets up a baseline to use\n\t * later rather than needing to inspect and change every property\n\t * individually.\n\t */\n\tconst result = {\n\t\t...first,\n\t\t...second,\n\t};\n\n\tdelete result.__proto__; // eslint-disable-line no-proto -- don't merge own property \"__proto__\"\n\n\t// Store the pending result for this combination of first and second arguments.\n\tsecondMergeMap.set(second, result);\n\n\tfor (const key of Object.keys(second)) {\n\t\t// avoid hairy edge case\n\t\tif (\n\t\t\tkey === \"__proto__\" ||\n\t\t\t!Object.prototype.propertyIsEnumerable.call(first, key)\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst firstValue = first[key];\n\t\tconst secondValue = second[key];\n\n\t\tif (isNonArrayObject(firstValue) && isNonArrayObject(secondValue)) {\n\t\t\tresult[key] = deepMerge(firstValue, secondValue, mergeMap);\n\t\t} else if (isUndefined(secondValue)) {\n\t\t\tresult[key] = firstValue;\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Normalizes the rule options config for a given rule by ensuring that\n * it is an array and that the first item is 0, 1, or 2.\n * @param {Array|string|number} ruleOptions The rule options config.\n * @returns {Array} An array of rule options.\n */\nfunction normalizeRuleOptions(ruleOptions) {\n\tconst finalOptions = Array.isArray(ruleOptions)\n\t\t? ruleOptions.slice(0)\n\t\t: [ruleOptions];\n\n\tfinalOptions[0] = ruleSeverities.get(finalOptions[0]);\n\treturn structuredClone(finalOptions);\n}\n\n/**\n * Determines if an object has any methods.\n * @param {Object} object The object to check.\n * @returns {boolean} `true` if the object has any methods.\n */\nfunction hasMethod(object) {\n\tfor (const key of Object.keys(object)) {\n\t\tif (typeof object[key] === \"function\") {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n//-----------------------------------------------------------------------------\n// Assertions\n//-----------------------------------------------------------------------------\n\n/**\n * The error type when a rule's options are configured with an invalid type.\n */\nclass InvalidRuleOptionsError extends Error {\n\t/**\n\t * @param {string} ruleId Rule name being configured.\n\t * @param {any} value The invalid value.\n\t */\n\tconstructor(ruleId, value) {\n\t\tsuper(\n\t\t\t`Key \"${ruleId}\": Expected severity of \"off\", 0, \"warn\", 1, \"error\", or 2.`,\n\t\t);\n\t\tthis.messageTemplate = \"invalid-rule-options\";\n\t\tthis.messageData = { ruleId, value };\n\t}\n}\n\n/**\n * Validates that a value is a valid rule options entry.\n * @param {string} ruleId Rule name being configured.\n * @param {any} value The value to check.\n * @returns {void}\n * @throws {InvalidRuleOptionsError} If the value isn't a valid rule options.\n */\nfunction assertIsRuleOptions(ruleId, value) {\n\tif (\n\t\ttypeof value !== \"string\" &&\n\t\ttypeof value !== \"number\" &&\n\t\t!Array.isArray(value)\n\t) {\n\t\tthrow new InvalidRuleOptionsError(ruleId, value);\n\t}\n}\n\n/**\n * The error type when a rule's severity is invalid.\n */\nclass InvalidRuleSeverityError extends Error {\n\t/**\n\t * @param {string} ruleId Rule name being configured.\n\t * @param {any} value The invalid value.\n\t */\n\tconstructor(ruleId, value) {\n\t\tsuper(\n\t\t\t`Key \"${ruleId}\": Expected severity of \"off\", 0, \"warn\", 1, \"error\", or 2.`,\n\t\t);\n\t\tthis.messageTemplate = \"invalid-rule-severity\";\n\t\tthis.messageData = { ruleId, value };\n\t}\n}\n\n/**\n * Validates that a value is valid rule severity.\n * @param {string} ruleId Rule name being configured.\n * @param {any} value The value to check.\n * @returns {void}\n * @throws {InvalidRuleSeverityError} If the value isn't a valid rule severity.\n */\nfunction assertIsRuleSeverity(ruleId, value) {\n\tconst severity = ruleSeverities.get(value);\n\n\tif (typeof severity === \"undefined\") {\n\t\tthrow new InvalidRuleSeverityError(ruleId, value);\n\t}\n}\n\n/**\n * Validates that a given string matches the \"pluginName/memberPlaceholder\" pattern.\n * @param {string} value The string to check.\n * @param {string} memberPlaceholder The placeholder for the member portion of the expected format in the error message.\n * @returns {void}\n * @throws {TypeError} If the string doesn't match the expected pattern.\n */\nfunction assertIsPluginMemberName(value, memberPlaceholder) {\n\tif (!/[\\w\\-@$]+(?:\\/[\\w\\-$]+)+$/iu.test(value)) {\n\t\tthrow new TypeError(\n\t\t\t`Expected string in the form \"pluginName/${memberPlaceholder}\" but found \"${value}\".`,\n\t\t);\n\t}\n}\n\n/**\n * Validates that a value is an object.\n * @param {any} value The value to check.\n * @returns {void}\n * @throws {TypeError} If the value isn't an object.\n */\nfunction assertIsObject(value) {\n\tif (!isNonNullObject(value)) {\n\t\tthrow new TypeError(\"Expected an object.\");\n\t}\n}\n\n/**\n * The error type when there's an eslintrc-style options in a flat config.\n */\nclass IncompatibleKeyError extends Error {\n\t/**\n\t * @param {string} key The invalid key.\n\t */\n\tconstructor(key) {\n\t\tsuper(\n\t\t\t\"This appears to be in eslintrc format rather than flat config format.\",\n\t\t);\n\t\tthis.messageTemplate = \"eslintrc-incompat\";\n\t\tthis.messageData = { key };\n\t}\n}\n\n/**\n * The error type when there's an eslintrc-style plugins array found.\n */\nclass IncompatiblePluginsError extends Error {\n\t/**\n\t * Creates a new instance.\n\t * @param {Array<string>} plugins The plugins array.\n\t */\n\tconstructor(plugins) {\n\t\tsuper(\n\t\t\t\"This appears to be in eslintrc format (array of strings) rather than flat config format (object).\",\n\t\t);\n\t\tthis.messageTemplate = \"eslintrc-plugins\";\n\t\tthis.messageData = { plugins };\n\t}\n}\n\n//-----------------------------------------------------------------------------\n// Low-Level Schemas\n//-----------------------------------------------------------------------------\n\n/** @type {ObjectPropertySchema} */\nconst booleanSchema = {\n\tmerge: \"replace\",\n\tvalidate: \"boolean\",\n};\n\nconst ALLOWED_SEVERITIES = new Set([\"error\", \"warn\", \"off\", 2, 1, 0]);\n\n/** @type {ObjectPropertySchema} */\nconst disableDirectiveSeveritySchema = {\n\tmerge(first, second) {\n\t\tconst value = second === void 0 ? first : second;\n\n\t\tif (typeof value === \"boolean\") {\n\t\t\treturn value ? \"warn\" : \"off\";\n\t\t}\n\n\t\treturn normalizeSeverityToNumber(value);\n\t},\n\tvalidate(value) {\n\t\tif (!(ALLOWED_SEVERITIES.has(value) || typeof value === \"boolean\")) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'Expected one of: \"error\", \"warn\", \"off\", 0, 1, 2, or a boolean.',\n\t\t\t);\n\t\t}\n\t},\n};\n\n/** @type {ObjectPropertySchema} */\nconst unusedInlineConfigsSeveritySchema = {\n\tmerge(first, second) {\n\t\tconst value = second === void 0 ? first : second;\n\n\t\treturn normalizeSeverityToNumber(value);\n\t},\n\tvalidate(value) {\n\t\tif (!ALLOWED_SEVERITIES.has(value)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'Expected one of: \"error\", \"warn\", \"off\", 0, 1, or 2.',\n\t\t\t);\n\t\t}\n\t},\n};\n\n/** @type {ObjectPropertySchema} */\nconst deepObjectAssignSchema = {\n\tmerge(first = {}, second = {}) {\n\t\treturn deepMerge(first, second);\n\t},\n\tvalidate: \"object\",\n};\n\n//-----------------------------------------------------------------------------\n// High-Level Schemas\n//-----------------------------------------------------------------------------\n\n/** @type {ObjectPropertySchema} */\nconst languageOptionsSchema = {\n\tmerge(first = {}, second = {}) {\n\t\tconst result = deepMerge(first, second);\n\n\t\tfor (const [key, value] of Object.entries(result)) {\n\t\t\t/*\n\t\t\t * Special case: Because the `parser` property is an object, it should\n\t\t\t * not be deep merged. Instead, it should be replaced if it exists in\n\t\t\t * the second object. To make this more generic, we just check for\n\t\t\t * objects with methods and replace them if they exist in the second\n\t\t\t * object.\n\t\t\t */\n\t\t\tif (isNonArrayObject(value)) {\n\t\t\t\tif (hasMethod(value)) {\n\t\t\t\t\tresult[key] = second[key] ?? first[key];\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// for other objects, make sure we aren't reusing the same object\n\t\t\t\tresult[key] = { ...result[key] };\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t},\n\tvalidate: \"object\",\n};\n\n/** @type {ObjectPropertySchema} */\nconst languageSchema = {\n\tmerge: \"replace\",\n\tvalidate(value) {\n\t\tassertIsPluginMemberName(value, \"languageName\");\n\t},\n};\n\n/** @type {ObjectPropertySchema} */\nconst pluginsSchema = {\n\tmerge(first = {}, second = {}) {\n\t\tconst keys = new Set([...Object.keys(first), ...Object.keys(second)]);\n\t\tconst result = {};\n\n\t\t// manually validate that plugins are not redefined\n\t\tfor (const key of keys) {\n\t\t\t// avoid hairy edge case\n\t\t\tif (key === \"__proto__\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (key in first && key in second && first[key] !== second[key]) {\n\t\t\t\tthrow new TypeError(`Cannot redefine plugin \"${key}\".`);\n\t\t\t}\n\n\t\t\tresult[key] = second[key] || first[key];\n\t\t}\n\n\t\treturn result;\n\t},\n\tvalidate(value) {\n\t\t// first check the value to be sure it's an object\n\t\tif (value === null || typeof value !== \"object\") {\n\t\t\tthrow new TypeError(\"Expected an object.\");\n\t\t}\n\n\t\t// make sure it's not an array, which would mean eslintrc-style is used\n\t\tif (Array.isArray(value)) {\n\t\t\tthrow new IncompatiblePluginsError(value);\n\t\t}\n\n\t\t// second check the keys to make sure they are objects\n\t\tfor (const key of Object.keys(value)) {\n\t\t\t// avoid hairy edge case\n\t\t\tif (key === \"__proto__\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (value[key] === null || typeof value[key] !== \"object\") {\n\t\t\t\tthrow new TypeError(`Key \"${key}\": Expected an object.`);\n\t\t\t}\n\t\t}\n\t},\n};\n\n/** @type {ObjectPropertySchema} */\nconst processorSchema = {\n\tmerge: \"replace\",\n\tvalidate(value) {\n\t\tif (typeof value === \"string\") {\n\t\t\tassertIsPluginMemberName(value, \"processorName\");\n\t\t} else if (value && typeof value === \"object\") {\n\t\t\tif (\n\t\t\t\ttypeof value.preprocess !== \"function\" ||\n\t\t\t\ttypeof value.postprocess !== \"function\"\n\t\t\t) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\"Object must have a preprocess() and a postprocess() method.\",\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError(\"Expected an object or a string.\");\n\t\t}\n\t},\n};\n\n/** @type {ObjectPropertySchema} */\nconst rulesSchema = {\n\tmerge(first = {}, second = {}) {\n\t\tconst result = {\n\t\t\t...first,\n\t\t\t...second,\n\t\t};\n\n\t\tfor (const ruleId of Object.keys(result)) {\n\t\t\ttry {\n\t\t\t\t// avoid hairy edge case\n\t\t\t\tif (ruleId === \"__proto__\") {\n\t\t\t\t\t/* eslint-disable-next-line no-proto -- Though deprecated, may still be present */\n\t\t\t\t\tdelete result.__proto__;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tresult[ruleId] = normalizeRuleOptions(result[ruleId]);\n\n\t\t\t\t/*\n\t\t\t\t * If either rule config is missing, then the correct\n\t\t\t\t * config is already present and we just need to normalize\n\t\t\t\t * the severity.\n\t\t\t\t */\n\t\t\t\tif (!(ruleId in first) || !(ruleId in second)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst firstRuleOptions = normalizeRuleOptions(first[ruleId]);\n\t\t\t\tconst secondRuleOptions = normalizeRuleOptions(second[ruleId]);\n\n\t\t\t\t/*\n\t\t\t\t * If the second rule config only has a severity (length of 1),\n\t\t\t\t * then use that severity and keep the rest of the options from\n\t\t\t\t * the first rule config.\n\t\t\t\t */\n\t\t\t\tif (secondRuleOptions.length === 1) {\n\t\t\t\t\tresult[ruleId] = [\n\t\t\t\t\t\tsecondRuleOptions[0],\n\t\t\t\t\t\t...firstRuleOptions.slice(1),\n\t\t\t\t\t];\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * In any other situation, then the second rule config takes\n\t\t\t\t * precedence. That means the value at `result[ruleId]` is\n\t\t\t\t * already correct and no further work is necessary.\n\t\t\t\t */\n\t\t\t} catch (ex) {\n\t\t\t\tthrow new Error(`Key \"${ruleId}\": ${ex.message}`, {\n\t\t\t\t\tcause: ex,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tvalidate(value) {\n\t\tassertIsObject(value);\n\n\t\t/*\n\t\t * We are not checking the rule schema here because there is no\n\t\t * guarantee that the rule definition is present at this point. Instead\n\t\t * we wait and check the rule schema during the finalization step\n\t\t * of calculating a config.\n\t\t */\n\t\tfor (const ruleId of Object.keys(value)) {\n\t\t\t// avoid hairy edge case\n\t\t\tif (ruleId === \"__proto__\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst ruleOptions = value[ruleId];\n\n\t\t\tassertIsRuleOptions(ruleId, ruleOptions);\n\n\t\t\tif (Array.isArray(ruleOptions)) {\n\t\t\t\tassertIsRuleSeverity(ruleId, ruleOptions[0]);\n\t\t\t} else {\n\t\t\t\tassertIsRuleSeverity(ruleId, ruleOptions);\n\t\t\t}\n\t\t}\n\t},\n};\n\n/**\n * Creates a schema that always throws an error. Useful for warning\n * about eslintrc-style keys.\n * @param {string} key The eslintrc key to create a schema for.\n * @returns {ObjectPropertySchema} The schema.\n */\nfunction createEslintrcErrorSchema(key) {\n\treturn {\n\t\tmerge: \"replace\",\n\t\tvalidate() {\n\t\t\tthrow new IncompatibleKeyError(key);\n\t\t},\n\t};\n}\n\nconst eslintrcKeys = [\n\t\"env\",\n\t\"extends\",\n\t\"globals\",\n\t\"ignorePatterns\",\n\t\"noInlineConfig\",\n\t\"overrides\",\n\t\"parser\",\n\t\"parserOptions\",\n\t\"reportUnusedDisableDirectives\",\n\t\"root\",\n];\n\n//-----------------------------------------------------------------------------\n// Full schema\n//-----------------------------------------------------------------------------\n\nconst flatConfigSchema = {\n\t// eslintrc-style keys that should always error\n\t...Object.fromEntries(\n\t\teslintrcKeys.map(key => [key, createEslintrcErrorSchema(key)]),\n\t),\n\n\t// flat config keys\n\tsettings: deepObjectAssignSchema,\n\tlinterOptions: {\n\t\tschema: {\n\t\t\tnoInlineConfig: booleanSchema,\n\t\t\treportUnusedDisableDirectives: disableDirectiveSeveritySchema,\n\t\t\treportUnusedInlineConfigs: unusedInlineConfigsSeveritySchema,\n\t\t},\n\t},\n\tlanguage: languageSchema,\n\tlanguageOptions: languageOptionsSchema,\n\tprocessor: processorSchema,\n\tplugins: pluginsSchema,\n\trules: rulesSchema,\n};\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\nmodule.exports = {\n\tflatConfigSchema,\n\thasMethod,\n\tassertIsRuleSeverity,\n};\n", "// @ts-nocheck\n'use strict';\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// Copyright the Browserify authors. MIT License.\nfunction assertPath(path) {\n  if (typeof path !== \"string\") {\n    throw new TypeError(`Path must be a string, received \"${JSON.stringify(path)}\"`);\n  }\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nfunction stripSuffix(name, suffix) {\n  if (suffix.length >= name.length) {\n    return name;\n  }\n  const lenDiff = name.length - suffix.length;\n  for(let i = suffix.length - 1; i >= 0; --i){\n    if (name.charCodeAt(lenDiff + i) !== suffix.charCodeAt(i)) {\n      return name;\n    }\n  }\n  return name.slice(0, -suffix.length);\n}\nfunction lastPathSegment(path, isSep, start = 0) {\n  let matchedNonSeparator = false;\n  let end = path.length;\n  for(let i = path.length - 1; i >= start; --i){\n    if (isSep(path.charCodeAt(i))) {\n      if (matchedNonSeparator) {\n        start = i + 1;\n        break;\n      }\n    } else if (!matchedNonSeparator) {\n      matchedNonSeparator = true;\n      end = i + 1;\n    }\n  }\n  return path.slice(start, end);\n}\nfunction assertArgs$1(path, suffix) {\n  assertPath(path);\n  if (path.length === 0) return path;\n  if (typeof suffix !== \"string\") {\n    throw new TypeError(`Suffix must be a string, received \"${JSON.stringify(suffix)}\"`);\n  }\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nfunction assertArg$3(url) {\n  url = url instanceof URL ? url : new URL(url);\n  if (url.protocol !== \"file:\") {\n    throw new TypeError(`URL must be a file URL: received \"${url.protocol}\"`);\n  }\n  return url;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Converts a file URL to a path string.\n *\n * @example Usage\n * ```ts\n * import { fromFileUrl } from \"@std/path/posix/from-file-url\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(fromFileUrl(new URL(\"file:///home/foo\")), \"/home/foo\");\n * ```\n *\n * @param url The file URL to convert.\n * @returns The path string.\n */ function fromFileUrl(url) {\n  url = assertArg$3(url);\n  return decodeURIComponent(url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, \"%25\"));\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// Copyright the Browserify authors. MIT License.\n// Ported from https://github.com/browserify/path-browserify/\n// This module is browser compatible.\nfunction stripTrailingSeparators(segment, isSep) {\n  if (segment.length <= 1) {\n    return segment;\n  }\n  let end = segment.length;\n  for(let i = segment.length - 1; i > 0; i--){\n    if (isSep(segment.charCodeAt(i))) {\n      end = i;\n    } else {\n      break;\n    }\n  }\n  return segment.slice(0, end);\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// Copyright the Browserify authors. MIT License.\n// Ported from https://github.com/browserify/path-browserify/\n// This module is browser compatible.\n// Alphabet chars.\n// Non-alphabetic chars.\nconst CHAR_DOT = 46; /* . */ \nconst CHAR_FORWARD_SLASH = 47; /* / */\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// Copyright the Browserify authors. MIT License.\n// Ported from https://github.com/browserify/path-browserify/\n// This module is browser compatible.\nfunction isPosixPathSeparator(code) {\n  return code === CHAR_FORWARD_SLASH;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Return the last portion of a `path`.\n * Trailing directory separators are ignored, and optional suffix is removed.\n *\n * @example Usage\n * ```ts\n * import { basename } from \"@std/path/posix/basename\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(basename(\"/home/user/Documents/\"), \"Documents\");\n * assertEquals(basename(\"/home/user/Documents/image.png\"), \"image.png\");\n * assertEquals(basename(\"/home/user/Documents/image.png\", \".png\"), \"image\");\n * assertEquals(basename(new URL(\"file:///home/user/Documents/image.png\")), \"image.png\");\n * assertEquals(basename(new URL(\"file:///home/user/Documents/image.png\"), \".png\"), \"image\");\n * ```\n *\n * @example Working with URLs\n *\n * Note: This function doesn't automatically strip hash and query parts from\n * URLs. If your URL contains a hash or query, remove them before passing the\n * URL to the function. This can be done by passing the URL to `new URL(url)`,\n * and setting the `hash` and `search` properties to empty strings.\n *\n * ```ts\n * import { basename } from \"@std/path/posix/basename\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(basename(\"https://deno.land/std/path/mod.ts\"), \"mod.ts\");\n * assertEquals(basename(\"https://deno.land/std/path/mod.ts\", \".ts\"), \"mod\");\n * assertEquals(basename(\"https://deno.land/std/path/mod.ts?a=b\"), \"mod.ts?a=b\");\n * assertEquals(basename(\"https://deno.land/std/path/mod.ts#header\"), \"mod.ts#header\");\n * ```\n *\n * @param path The path to extract the name from.\n * @param suffix The suffix to remove from extracted name.\n * @returns The extracted name.\n */ function basename(path, suffix = \"\") {\n  if (path instanceof URL) {\n    path = fromFileUrl(path);\n  }\n  assertArgs$1(path, suffix);\n  const lastSegment = lastPathSegment(path, isPosixPathSeparator);\n  const strippedSegment = stripTrailingSeparators(lastSegment, isPosixPathSeparator);\n  return suffix ? stripSuffix(strippedSegment, suffix) : strippedSegment;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * The character used to separate entries in the PATH environment variable.\n */ const DELIMITER = \":\";\n/**\n * The character used to separate components of a file path.\n */ const SEPARATOR = \"/\";\n/**\n * A regular expression that matches one or more path separators.\n */ const SEPARATOR_PATTERN = /\\/+/;\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nfunction assertArg$2(path) {\n  assertPath(path);\n  if (path.length === 0) return \".\";\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Return the directory path of a `path`.\n *\n * @example Usage\n * ```ts\n * import { dirname } from \"@std/path/posix/dirname\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(dirname(\"/home/user/Documents/\"), \"/home/user\");\n * assertEquals(dirname(\"/home/user/Documents/image.png\"), \"/home/user/Documents\");\n * assertEquals(dirname(\"https://deno.land/std/path/mod.ts\"), \"https://deno.land/std/path\");\n * assertEquals(dirname(new URL(\"file:///home/user/Documents/image.png\")), \"/home/user/Documents\");\n * ```\n *\n * @example Working with URLs\n *\n * ```ts\n * import { dirname } from \"@std/path/posix/dirname\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(dirname(\"https://deno.land/std/path/mod.ts\"), \"https://deno.land/std/path\");\n * assertEquals(dirname(\"https://deno.land/std/path/mod.ts?a=b\"), \"https://deno.land/std/path\");\n * assertEquals(dirname(\"https://deno.land/std/path/mod.ts#header\"), \"https://deno.land/std/path\");\n * ```\n *\n * @param path The path to get the directory from.\n * @returns The directory path.\n */ function dirname(path) {\n  if (path instanceof URL) {\n    path = fromFileUrl(path);\n  }\n  assertArg$2(path);\n  let end = -1;\n  let matchedNonSeparator = false;\n  for(let i = path.length - 1; i >= 1; --i){\n    if (isPosixPathSeparator(path.charCodeAt(i))) {\n      if (matchedNonSeparator) {\n        end = i;\n        break;\n      }\n    } else {\n      matchedNonSeparator = true;\n    }\n  }\n  // No matches. Fallback based on provided path:\n  //\n  // - leading slashes paths\n  //     \"/foo\" => \"/\"\n  //     \"///foo\" => \"/\"\n  // - no slash path\n  //     \"foo\" => \".\"\n  if (end === -1) {\n    return isPosixPathSeparator(path.charCodeAt(0)) ? \"/\" : \".\";\n  }\n  return stripTrailingSeparators(path.slice(0, end), isPosixPathSeparator);\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Return the extension of the `path` with leading period.\n *\n * @example Usage\n * ```ts\n * import { extname } from \"@std/path/posix/extname\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(extname(\"/home/user/Documents/file.ts\"), \".ts\");\n * assertEquals(extname(\"/home/user/Documents/\"), \"\");\n * assertEquals(extname(\"/home/user/Documents/image.png\"), \".png\");\n * assertEquals(extname(new URL(\"file:///home/user/Documents/file.ts\")), \".ts\");\n * assertEquals(extname(new URL(\"file:///home/user/Documents/file.ts?a=b\")), \".ts\");\n * assertEquals(extname(new URL(\"file:///home/user/Documents/file.ts#header\")), \".ts\");\n * ```\n *\n * @example Working with URLs\n *\n * Note: This function doesn't automatically strip hash and query parts from\n * URLs. If your URL contains a hash or query, remove them before passing the\n * URL to the function. This can be done by passing the URL to `new URL(url)`,\n * and setting the `hash` and `search` properties to empty strings.\n *\n * ```ts\n * import { extname } from \"@std/path/posix/extname\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(extname(\"https://deno.land/std/path/mod.ts\"), \".ts\");\n * assertEquals(extname(\"https://deno.land/std/path/mod.ts?a=b\"), \".ts?a=b\");\n * assertEquals(extname(\"https://deno.land/std/path/mod.ts#header\"), \".ts#header\");\n * ```\n *\n * @param path The path to get the extension from.\n * @returns The extension (ex. for `file.ts` returns `.ts`).\n */ function extname(path) {\n  if (path instanceof URL) {\n    path = fromFileUrl(path);\n  }\n  assertPath(path);\n  let startDot = -1;\n  let startPart = 0;\n  let end = -1;\n  let matchedSlash = true;\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find\n  let preDotState = 0;\n  for(let i = path.length - 1; i >= 0; --i){\n    const code = path.charCodeAt(i);\n    if (isPosixPathSeparator(code)) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now\n      if (!matchedSlash) {\n        startPart = i + 1;\n        break;\n      }\n      continue;\n    }\n    if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension\n      matchedSlash = false;\n      end = i + 1;\n    }\n    if (code === CHAR_DOT) {\n      // If this is our first dot, mark it as the start of our extension\n      if (startDot === -1) startDot = i;\n      else if (preDotState !== 1) preDotState = 1;\n    } else if (startDot !== -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension\n      preDotState = -1;\n    }\n  }\n  if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot\n  preDotState === 0 || // The (right-most) trimmed path component is exactly '..'\n  preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n    return \"\";\n  }\n  return path.slice(startDot, end);\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nfunction _format(sep, pathObject) {\n  const dir = pathObject.dir || pathObject.root;\n  const base = pathObject.base || (pathObject.name ?? \"\") + (pathObject.ext ?? \"\");\n  if (!dir) return base;\n  if (base === sep) return dir;\n  if (dir === pathObject.root) return dir + base;\n  return dir + sep + base;\n}\nfunction assertArg$1(pathObject) {\n  if (pathObject === null || typeof pathObject !== \"object\") {\n    throw new TypeError(`The \"pathObject\" argument must be of type Object, received type \"${typeof pathObject}\"`);\n  }\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Generate a path from `ParsedPath` object.\n *\n * @example Usage\n * ```ts\n * import { format } from \"@std/path/posix/format\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const path = format({\n *   root: \"/\",\n *   dir: \"/path/dir\",\n *   base: \"file.txt\",\n *   ext: \".txt\",\n *   name: \"file\"\n * });\n * assertEquals(path, \"/path/dir/file.txt\");\n * ```\n *\n * @param pathObject The path object to format.\n * @returns The formatted path.\n */ function format(pathObject) {\n  assertArg$1(pathObject);\n  return _format(\"/\", pathObject);\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Verifies whether provided path is absolute.\n *\n * @example Usage\n * ```ts\n * import { isAbsolute } from \"@std/path/posix/is-absolute\";\n * import { assert, assertFalse } from \"@std/assert\";\n *\n * assert(isAbsolute(\"/home/user/Documents/\"));\n * assertFalse(isAbsolute(\"home/user/Documents/\"));\n * ```\n *\n * @param path The path to verify.\n * @returns Whether the path is absolute.\n */ function isAbsolute(path) {\n  assertPath(path);\n  return path.length > 0 && isPosixPathSeparator(path.charCodeAt(0));\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nfunction assertArg(path) {\n  assertPath(path);\n  if (path.length === 0) return \".\";\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// Copyright the Browserify authors. MIT License.\n// Ported from https://github.com/browserify/path-browserify/\n// This module is browser compatible.\n// Resolves . and .. elements in a path with directory names\nfunction normalizeString(path, allowAboveRoot, separator, isPathSeparator) {\n  let res = \"\";\n  let lastSegmentLength = 0;\n  let lastSlash = -1;\n  let dots = 0;\n  let code;\n  for(let i = 0; i <= path.length; ++i){\n    if (i < path.length) code = path.charCodeAt(i);\n    else if (isPathSeparator(code)) break;\n    else code = CHAR_FORWARD_SLASH;\n    if (isPathSeparator(code)) {\n      if (lastSlash === i - 1 || dots === 1) ; else if (lastSlash !== i - 1 && dots === 2) {\n        if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== CHAR_DOT || res.charCodeAt(res.length - 2) !== CHAR_DOT) {\n          if (res.length > 2) {\n            const lastSlashIndex = res.lastIndexOf(separator);\n            if (lastSlashIndex === -1) {\n              res = \"\";\n              lastSegmentLength = 0;\n            } else {\n              res = res.slice(0, lastSlashIndex);\n              lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);\n            }\n            lastSlash = i;\n            dots = 0;\n            continue;\n          } else if (res.length === 2 || res.length === 1) {\n            res = \"\";\n            lastSegmentLength = 0;\n            lastSlash = i;\n            dots = 0;\n            continue;\n          }\n        }\n        if (allowAboveRoot) {\n          if (res.length > 0) res += `${separator}..`;\n          else res = \"..\";\n          lastSegmentLength = 2;\n        }\n      } else {\n        if (res.length > 0) res += separator + path.slice(lastSlash + 1, i);\n        else res = path.slice(lastSlash + 1, i);\n        lastSegmentLength = i - lastSlash - 1;\n      }\n      lastSlash = i;\n      dots = 0;\n    } else if (code === CHAR_DOT && dots !== -1) {\n      ++dots;\n    } else {\n      dots = -1;\n    }\n  }\n  return res;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Normalize the `path`, resolving `'..'` and `'.'` segments.\n * Note that resolving these segments does not necessarily mean that all will be eliminated.\n * A `'..'` at the top-level will be preserved, and an empty path is canonically `'.'`.\n *\n * @example Usage\n * ```ts\n * import { normalize } from \"@std/path/posix/normalize\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(normalize(\"/foo/bar//baz/asdf/quux/..\"), \"/foo/bar/baz/asdf\");\n * assertEquals(normalize(new URL(\"file:///foo/bar//baz/asdf/quux/..\")), \"/foo/bar/baz/asdf/\");\n * ```\n *\n * @example Working with URLs\n *\n * Note: This function will remove the double slashes from a URL's scheme.\n * Hence, do not pass a full URL to this function. Instead, pass the pathname of\n * the URL.\n *\n * ```ts\n * import { normalize } from \"@std/path/posix/normalize\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const url = new URL(\"https://deno.land\");\n * url.pathname = normalize(\"//std//assert//.//mod.ts\");\n * assertEquals(url.href, \"https://deno.land/std/assert/mod.ts\");\n *\n * url.pathname = normalize(\"std/assert/../async/retry.ts\");\n * assertEquals(url.href, \"https://deno.land/std/async/retry.ts\");\n * ```\n *\n * @param path The path to normalize.\n * @returns The normalized path.\n */ function normalize(path) {\n  if (path instanceof URL) {\n    path = fromFileUrl(path);\n  }\n  assertArg(path);\n  const isAbsolute = isPosixPathSeparator(path.charCodeAt(0));\n  const trailingSeparator = isPosixPathSeparator(path.charCodeAt(path.length - 1));\n  // Normalize the path\n  path = normalizeString(path, !isAbsolute, \"/\", isPosixPathSeparator);\n  if (path.length === 0 && !isAbsolute) path = \".\";\n  if (path.length > 0 && trailingSeparator) path += \"/\";\n  if (isAbsolute) return `/${path}`;\n  return path;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Join all given a sequence of `paths`,then normalizes the resulting path.\n *\n * @example Usage\n * ```ts\n * import { join } from \"@std/path/posix/join\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(join(\"/foo\", \"bar\", \"baz/asdf\", \"quux\", \"..\"), \"/foo/bar/baz/asdf\");\n * assertEquals(join(new URL(\"file:///foo\"), \"bar\", \"baz/asdf\", \"quux\", \"..\"), \"/foo/bar/baz/asdf\");\n * ```\n *\n * @example Working with URLs\n * ```ts\n * import { join } from \"@std/path/posix/join\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const url = new URL(\"https://deno.land\");\n * url.pathname = join(\"std\", \"path\", \"mod.ts\");\n * assertEquals(url.href, \"https://deno.land/std/path/mod.ts\");\n *\n * url.pathname = join(\"//std\", \"path/\", \"/mod.ts\");\n * assertEquals(url.href, \"https://deno.land/std/path/mod.ts\");\n * ```\n *\n * @param path The path to join. This can be string or file URL.\n * @param paths The paths to join.\n * @returns The joined path.\n */ function join(path, ...paths) {\n  if (path === undefined) return \".\";\n  if (path instanceof URL) {\n    path = fromFileUrl(path);\n  }\n  paths = path ? [\n    path,\n    ...paths\n  ] : paths;\n  paths.forEach((path)=>assertPath(path));\n  const joined = paths.filter((path)=>path.length > 0).join(\"/\");\n  return joined === \"\" ? \".\" : normalize(joined);\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Return a `ParsedPath` object of the `path`.\n *\n * @example Usage\n * ```ts\n * import { parse } from \"@std/path/posix/parse\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const path = parse(\"/home/user/file.txt\");\n * assertEquals(path, {\n *   root: \"/\",\n *   dir: \"/home/user\",\n *   base: \"file.txt\",\n *   ext: \".txt\",\n *   name: \"file\"\n * });\n * ```\n *\n * @param path The path to parse.\n * @returns The parsed path object.\n */ function parse(path) {\n  assertPath(path);\n  const ret = {\n    root: \"\",\n    dir: \"\",\n    base: \"\",\n    ext: \"\",\n    name: \"\"\n  };\n  if (path.length === 0) return ret;\n  const isAbsolute = isPosixPathSeparator(path.charCodeAt(0));\n  let start;\n  if (isAbsolute) {\n    ret.root = \"/\";\n    start = 1;\n  } else {\n    start = 0;\n  }\n  let startDot = -1;\n  let startPart = 0;\n  let end = -1;\n  let matchedSlash = true;\n  let i = path.length - 1;\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find\n  let preDotState = 0;\n  // Get non-dir info\n  for(; i >= start; --i){\n    const code = path.charCodeAt(i);\n    if (isPosixPathSeparator(code)) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now\n      if (!matchedSlash) {\n        startPart = i + 1;\n        break;\n      }\n      continue;\n    }\n    if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension\n      matchedSlash = false;\n      end = i + 1;\n    }\n    if (code === CHAR_DOT) {\n      // If this is our first dot, mark it as the start of our extension\n      if (startDot === -1) startDot = i;\n      else if (preDotState !== 1) preDotState = 1;\n    } else if (startDot !== -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension\n      preDotState = -1;\n    }\n  }\n  if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot\n  preDotState === 0 || // The (right-most) trimmed path component is exactly '..'\n  preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n    if (end !== -1) {\n      if (startPart === 0 && isAbsolute) {\n        ret.base = ret.name = path.slice(1, end);\n      } else {\n        ret.base = ret.name = path.slice(startPart, end);\n      }\n    }\n    // Fallback to '/' in case there is no basename\n    ret.base = ret.base || \"/\";\n  } else {\n    if (startPart === 0 && isAbsolute) {\n      ret.name = path.slice(1, startDot);\n      ret.base = path.slice(1, end);\n    } else {\n      ret.name = path.slice(startPart, startDot);\n      ret.base = path.slice(startPart, end);\n    }\n    ret.ext = path.slice(startDot, end);\n  }\n  if (startPart > 0) {\n    ret.dir = stripTrailingSeparators(path.slice(0, startPart - 1), isPosixPathSeparator);\n  } else if (isAbsolute) ret.dir = \"/\";\n  return ret;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Resolves path segments into a `path`.\n *\n * @example Usage\n * ```ts\n * import { resolve } from \"@std/path/posix/resolve\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const path = resolve(\"/foo\", \"bar\", \"baz/asdf\", \"quux\", \"..\");\n * assertEquals(path, \"/foo/bar/baz/asdf\");\n * ```\n *\n * @param pathSegments The path segments to resolve.\n * @returns The resolved path.\n */ function resolve(...pathSegments) {\n  let resolvedPath = \"\";\n  let resolvedAbsolute = false;\n  for(let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--){\n    let path;\n    if (i >= 0) path = pathSegments[i];\n    else {\n      // deno-lint-ignore no-explicit-any\n      const { Deno } = globalThis;\n      if (typeof Deno?.cwd !== \"function\") {\n        throw new TypeError(\"Resolved a relative path without a current working directory (CWD)\");\n      }\n      path = Deno.cwd();\n    }\n    assertPath(path);\n    // Skip empty entries\n    if (path.length === 0) {\n      continue;\n    }\n    resolvedPath = `${path}/${resolvedPath}`;\n    resolvedAbsolute = isPosixPathSeparator(path.charCodeAt(0));\n  }\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when Deno.cwd() fails)\n  // Normalize the path\n  resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, \"/\", isPosixPathSeparator);\n  if (resolvedAbsolute) {\n    if (resolvedPath.length > 0) return `/${resolvedPath}`;\n    else return \"/\";\n  } else if (resolvedPath.length > 0) return resolvedPath;\n  else return \".\";\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nfunction assertArgs(from, to) {\n  assertPath(from);\n  assertPath(to);\n  if (from === to) return \"\";\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Return the relative path from `from` to `to` based on current working directory.\n *\n * If `from` and `to` are the same, return an empty string.\n *\n * @example Usage\n * ```ts\n * import { relative } from \"@std/path/posix/relative\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const path = relative(\"/data/orandea/test/aaa\", \"/data/orandea/impl/bbb\");\n * assertEquals(path, \"../../impl/bbb\");\n * ```\n *\n * @param from The path to start from.\n * @param to The path to reach.\n * @returns The relative path.\n */ function relative(from, to) {\n  assertArgs(from, to);\n  from = resolve(from);\n  to = resolve(to);\n  if (from === to) return \"\";\n  // Trim any leading backslashes\n  let fromStart = 1;\n  const fromEnd = from.length;\n  for(; fromStart < fromEnd; ++fromStart){\n    if (!isPosixPathSeparator(from.charCodeAt(fromStart))) break;\n  }\n  const fromLen = fromEnd - fromStart;\n  // Trim any leading backslashes\n  let toStart = 1;\n  const toEnd = to.length;\n  for(; toStart < toEnd; ++toStart){\n    if (!isPosixPathSeparator(to.charCodeAt(toStart))) break;\n  }\n  const toLen = toEnd - toStart;\n  // Compare paths to find the longest common path from root\n  const length = fromLen < toLen ? fromLen : toLen;\n  let lastCommonSep = -1;\n  let i = 0;\n  for(; i <= length; ++i){\n    if (i === length) {\n      if (toLen > length) {\n        if (isPosixPathSeparator(to.charCodeAt(toStart + i))) {\n          // We get here if `from` is the exact base path for `to`.\n          // For example: from='/foo/bar'; to='/foo/bar/baz'\n          return to.slice(toStart + i + 1);\n        } else if (i === 0) {\n          // We get here if `from` is the root\n          // For example: from='/'; to='/foo'\n          return to.slice(toStart + i);\n        }\n      } else if (fromLen > length) {\n        if (isPosixPathSeparator(from.charCodeAt(fromStart + i))) {\n          // We get here if `to` is the exact base path for `from`.\n          // For example: from='/foo/bar/baz'; to='/foo/bar'\n          lastCommonSep = i;\n        } else if (i === 0) {\n          // We get here if `to` is the root.\n          // For example: from='/foo'; to='/'\n          lastCommonSep = 0;\n        }\n      }\n      break;\n    }\n    const fromCode = from.charCodeAt(fromStart + i);\n    const toCode = to.charCodeAt(toStart + i);\n    if (fromCode !== toCode) break;\n    else if (isPosixPathSeparator(fromCode)) lastCommonSep = i;\n  }\n  let out = \"\";\n  // Generate the relative path based on the path difference between `to`\n  // and `from`\n  for(i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i){\n    if (i === fromEnd || isPosixPathSeparator(from.charCodeAt(i))) {\n      if (out.length === 0) out += \"..\";\n      else out += \"/..\";\n    }\n  }\n  // Lastly, append the rest of the destination (`to`) path that comes after\n  // the common path parts\n  if (out.length > 0) return out + to.slice(toStart + lastCommonSep);\n  else {\n    toStart += lastCommonSep;\n    if (isPosixPathSeparator(to.charCodeAt(toStart))) ++toStart;\n    return to.slice(toStart);\n  }\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nconst WHITESPACE_ENCODINGS = {\n  \"\\u0009\": \"%09\",\n  \"\\u000A\": \"%0A\",\n  \"\\u000B\": \"%0B\",\n  \"\\u000C\": \"%0C\",\n  \"\\u000D\": \"%0D\",\n  \"\\u0020\": \"%20\"\n};\nfunction encodeWhitespace(string) {\n  return string.replaceAll(/[\\s]/g, (c)=>{\n    return WHITESPACE_ENCODINGS[c] ?? c;\n  });\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Converts a path string to a file URL.\n *\n * @example Usage\n * ```ts\n * import { toFileUrl } from \"@std/path/posix/to-file-url\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(toFileUrl(\"/home/foo\"), new URL(\"file:///home/foo\"));\n * assertEquals(toFileUrl(\"/home/foo bar\"), new URL(\"file:///home/foo%20bar\"));\n * ```\n *\n * @param path The path to convert.\n * @returns The file URL.\n */ function toFileUrl(path) {\n  if (!isAbsolute(path)) {\n    throw new TypeError(`Path must be absolute: received \"${path}\"`);\n  }\n  const url = new URL(\"file:///\");\n  url.pathname = encodeWhitespace(path.replace(/%/g, \"%25\").replace(/\\\\/g, \"%5C\"));\n  return url;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Converts a path to a namespaced path. This function returns the path as is on posix.\n *\n * @example Usage\n * ```ts\n * import { toNamespacedPath } from \"@std/path/posix/to-namespaced-path\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(toNamespacedPath(\"/home/foo\"), \"/home/foo\");\n * ```\n *\n * @param path The path.\n * @returns The namespaced path.\n */ function toNamespacedPath(path) {\n  // Non-op on posix systems\n  return path;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nfunction common$1(paths, sep) {\n  const [first = \"\", ...remaining] = paths;\n  const parts = first.split(sep);\n  let endOfPrefix = parts.length;\n  let append = \"\";\n  for (const path of remaining){\n    const compare = path.split(sep);\n    if (compare.length <= endOfPrefix) {\n      endOfPrefix = compare.length;\n      append = \"\";\n    }\n    for(let i = 0; i < endOfPrefix; i++){\n      if (compare[i] !== parts[i]) {\n        endOfPrefix = i;\n        append = i === 0 ? \"\" : sep;\n        break;\n      }\n    }\n  }\n  return parts.slice(0, endOfPrefix).join(sep) + append;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/** Determines the common path from a set of paths for POSIX systems.\n *\n * @example Usage\n * ```ts\n * import { common } from \"@std/path/posix/common\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const path = common([\n *   \"./deno/std/path/mod.ts\",\n *   \"./deno/std/fs/mod.ts\",\n * ]);\n * assertEquals(path, \"./deno/std/\");\n * ```\n *\n * @param paths The paths to compare.\n * @returns The common path.\n */ function common(paths) {\n  return common$1(paths, SEPARATOR);\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Options for {@linkcode globToRegExp}, {@linkcode joinGlobs},\n * {@linkcode normalizeGlob} and {@linkcode expandGlob}.\n */ const REG_EXP_ESCAPE_CHARS = [\n  \"!\",\n  \"$\",\n  \"(\",\n  \")\",\n  \"*\",\n  \"+\",\n  \".\",\n  \"=\",\n  \"?\",\n  \"[\",\n  \"\\\\\",\n  \"^\",\n  \"{\",\n  \"|\"\n];\nconst RANGE_ESCAPE_CHARS = [\n  \"-\",\n  \"\\\\\",\n  \"]\"\n];\nfunction _globToRegExp(c, glob, { extended = true, globstar: globstarOption = true, // os = osType,\ncaseInsensitive = false } = {}) {\n  if (glob === \"\") {\n    return /(?!)/;\n  }\n  // Remove trailing separators.\n  let newLength = glob.length;\n  for(; newLength > 1 && c.seps.includes(glob[newLength - 1]); newLength--);\n  glob = glob.slice(0, newLength);\n  let regExpString = \"\";\n  // Terminates correctly. Trust that `j` is incremented every iteration.\n  for(let j = 0; j < glob.length;){\n    let segment = \"\";\n    const groupStack = [];\n    let inRange = false;\n    let inEscape = false;\n    let endsWithSep = false;\n    let i = j;\n    // Terminates with `i` at the non-inclusive end of the current segment.\n    for(; i < glob.length && !(c.seps.includes(glob[i]) && groupStack.length === 0); i++){\n      if (inEscape) {\n        inEscape = false;\n        const escapeChars = inRange ? RANGE_ESCAPE_CHARS : REG_EXP_ESCAPE_CHARS;\n        segment += escapeChars.includes(glob[i]) ? `\\\\${glob[i]}` : glob[i];\n        continue;\n      }\n      if (glob[i] === c.escapePrefix) {\n        inEscape = true;\n        continue;\n      }\n      if (glob[i] === \"[\") {\n        if (!inRange) {\n          inRange = true;\n          segment += \"[\";\n          if (glob[i + 1] === \"!\") {\n            i++;\n            segment += \"^\";\n          } else if (glob[i + 1] === \"^\") {\n            i++;\n            segment += \"\\\\^\";\n          }\n          continue;\n        } else if (glob[i + 1] === \":\") {\n          let k = i + 1;\n          let value = \"\";\n          while(glob[k + 1] !== undefined && glob[k + 1] !== \":\"){\n            value += glob[k + 1];\n            k++;\n          }\n          if (glob[k + 1] === \":\" && glob[k + 2] === \"]\") {\n            i = k + 2;\n            if (value === \"alnum\") segment += \"\\\\dA-Za-z\";\n            else if (value === \"alpha\") segment += \"A-Za-z\";\n            else if (value === \"ascii\") segment += \"\\x00-\\x7F\";\n            else if (value === \"blank\") segment += \"\\t \";\n            else if (value === \"cntrl\") segment += \"\\x00-\\x1F\\x7F\";\n            else if (value === \"digit\") segment += \"\\\\d\";\n            else if (value === \"graph\") segment += \"\\x21-\\x7E\";\n            else if (value === \"lower\") segment += \"a-z\";\n            else if (value === \"print\") segment += \"\\x20-\\x7E\";\n            else if (value === \"punct\") {\n              segment += \"!\\\"#$%&'()*+,\\\\-./:;<=>?@[\\\\\\\\\\\\]^_\u2018{|}~\";\n            } else if (value === \"space\") segment += \"\\\\s\\v\";\n            else if (value === \"upper\") segment += \"A-Z\";\n            else if (value === \"word\") segment += \"\\\\w\";\n            else if (value === \"xdigit\") segment += \"\\\\dA-Fa-f\";\n            continue;\n          }\n        }\n      }\n      if (glob[i] === \"]\" && inRange) {\n        inRange = false;\n        segment += \"]\";\n        continue;\n      }\n      if (inRange) {\n        segment += glob[i];\n        continue;\n      }\n      if (glob[i] === \")\" && groupStack.length > 0 && groupStack[groupStack.length - 1] !== \"BRACE\") {\n        segment += \")\";\n        const type = groupStack.pop();\n        if (type === \"!\") {\n          segment += c.wildcard;\n        } else if (type !== \"@\") {\n          segment += type;\n        }\n        continue;\n      }\n      if (glob[i] === \"|\" && groupStack.length > 0 && groupStack[groupStack.length - 1] !== \"BRACE\") {\n        segment += \"|\";\n        continue;\n      }\n      if (glob[i] === \"+\" && extended && glob[i + 1] === \"(\") {\n        i++;\n        groupStack.push(\"+\");\n        segment += \"(?:\";\n        continue;\n      }\n      if (glob[i] === \"@\" && extended && glob[i + 1] === \"(\") {\n        i++;\n        groupStack.push(\"@\");\n        segment += \"(?:\";\n        continue;\n      }\n      if (glob[i] === \"?\") {\n        if (extended && glob[i + 1] === \"(\") {\n          i++;\n          groupStack.push(\"?\");\n          segment += \"(?:\";\n        } else {\n          segment += \".\";\n        }\n        continue;\n      }\n      if (glob[i] === \"!\" && extended && glob[i + 1] === \"(\") {\n        i++;\n        groupStack.push(\"!\");\n        segment += \"(?!\";\n        continue;\n      }\n      if (glob[i] === \"{\") {\n        groupStack.push(\"BRACE\");\n        segment += \"(?:\";\n        continue;\n      }\n      if (glob[i] === \"}\" && groupStack[groupStack.length - 1] === \"BRACE\") {\n        groupStack.pop();\n        segment += \")\";\n        continue;\n      }\n      if (glob[i] === \",\" && groupStack[groupStack.length - 1] === \"BRACE\") {\n        segment += \"|\";\n        continue;\n      }\n      if (glob[i] === \"*\") {\n        if (extended && glob[i + 1] === \"(\") {\n          i++;\n          groupStack.push(\"*\");\n          segment += \"(?:\";\n        } else {\n          const prevChar = glob[i - 1];\n          let numStars = 1;\n          while(glob[i + 1] === \"*\"){\n            i++;\n            numStars++;\n          }\n          const nextChar = glob[i + 1];\n          if (globstarOption && numStars === 2 && [\n            ...c.seps,\n            undefined\n          ].includes(prevChar) && [\n            ...c.seps,\n            undefined\n          ].includes(nextChar)) {\n            segment += c.globstar;\n            endsWithSep = true;\n          } else {\n            segment += c.wildcard;\n          }\n        }\n        continue;\n      }\n      segment += REG_EXP_ESCAPE_CHARS.includes(glob[i]) ? `\\\\${glob[i]}` : glob[i];\n    }\n    // Check for unclosed groups or a dangling backslash.\n    if (groupStack.length > 0 || inRange || inEscape) {\n      // Parse failure. Take all characters from this segment literally.\n      segment = \"\";\n      for (const c of glob.slice(j, i)){\n        segment += REG_EXP_ESCAPE_CHARS.includes(c) ? `\\\\${c}` : c;\n        endsWithSep = false;\n      }\n    }\n    regExpString += segment;\n    if (!endsWithSep) {\n      regExpString += i < glob.length ? c.sep : c.sepMaybe;\n      endsWithSep = true;\n    }\n    // Terminates with `i` at the start of the next segment.\n    while(c.seps.includes(glob[i]))i++;\n    j = i;\n  }\n  regExpString = `^${regExpString}$`;\n  return new RegExp(regExpString, caseInsensitive ? \"i\" : \"\");\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nconst constants = {\n  sep: \"/+\",\n  sepMaybe: \"/*\",\n  seps: [\n    \"/\"\n  ],\n  globstar: \"(?:[^/]*(?:/|$)+)*\",\n  wildcard: \"[^/]*\",\n  escapePrefix: \"\\\\\"\n};\n/** Convert a glob string to a regular expression.\n *\n * Tries to match bash glob expansion as closely as possible.\n *\n * Basic glob syntax:\n * - `*` - Matches everything without leaving the path segment.\n * - `?` - Matches any single character.\n * - `{foo,bar}` - Matches `foo` or `bar`.\n * - `[abcd]` - Matches `a`, `b`, `c` or `d`.\n * - `[a-d]` - Matches `a`, `b`, `c` or `d`.\n * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`.\n * - `[[:<class>:]]` - Matches any character belonging to `<class>`.\n *     - `[[:alnum:]]` - Matches any digit or letter.\n *     - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`.\n *     - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes\n *       for a complete list of supported character classes.\n * - `\\` - Escapes the next character for an `os` other than `\"windows\"`.\n * - \\` - Escapes the next character for `os` set to `\"windows\"`.\n * - `/` - Path separator.\n * - `\\` - Additional path separator only for `os` set to `\"windows\"`.\n *\n * Extended syntax:\n * - Requires `{ extended: true }`.\n * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`.\n * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same.\n * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`.\n * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`.\n * - `!(foo|bar)` - Matches anything other than `{foo,bar}`.\n * - See https://www.linuxjournal.com/content/bash-extended-globbing.\n *\n * Globstar syntax:\n * - Requires `{ globstar: true }`.\n * - `**` - Matches any number of any path segments.\n *     - Must comprise its entire path segment in the provided glob.\n * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option.\n *\n * Note the following properties:\n * - The generated `RegExp` is anchored at both start and end.\n * - Repeating and trailing separators are tolerated. Trailing separators in the\n *   provided glob have no meaning and are discarded.\n * - Absolute globs will only match absolute paths, etc.\n * - Empty globs will match nothing.\n * - Any special glob syntax must be contained to one path segment. For example,\n *   `?(foo|bar/baz)` is invalid. The separator will take precedence and the\n *   first segment ends with an unclosed group.\n * - If a path segment ends with unclosed groups or a dangling escape prefix, a\n *   parse error has occurred. Every character for that segment is taken\n *   literally in this event.\n *\n * Limitations:\n * - A negative group like `!(foo|bar)` will wrongly be converted to a negative\n *   look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly\n *   fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively,\n *   `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if\n *   the group occurs not nested at the end of the segment.\n *\n * @example Usage\n * ```ts\n * import { globToRegExp } from \"@std/path/posix/glob-to-regexp\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(globToRegExp(\"*.js\"), /^[^/]*\\.js\\/*$/);\n * ```\n *\n * @param glob Glob string to convert.\n * @param options Conversion options.\n * @returns The regular expression equivalent to the glob.\n */ function globToRegExp(glob, options = {}) {\n  return _globToRegExp(constants, glob, options);\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Test whether the given string is a glob.\n *\n * @example Usage\n * ```ts\n * import { isGlob } from \"@std/path/is-glob\";\n * import { assert } from \"@std/assert\";\n *\n * assert(!isGlob(\"foo/bar/../baz\"));\n * assert(isGlob(\"foo/*ar/../baz\"));\n * ```\n *\n * @param str String to test.\n * @returns `true` if the given string is a glob, otherwise `false`\n */ function isGlob(str) {\n  const chars = {\n    \"{\": \"}\",\n    \"(\": \")\",\n    \"[\": \"]\"\n  };\n  const regex = /\\\\(.)|(^!|\\*|\\?|[\\].+)]\\?|\\[[^[\\\\\\]]+\\]|\\{[^{\\\\}]+\\}|\\(\\?[:!=][^\\\\)]+\\)|\\([^(|]+\\|[^\\\\)]+\\)|@\\([^)]+\\))/;\n  if (str === \"\") {\n    return false;\n  }\n  let match;\n  while(match = regex.exec(str)){\n    if (match[2]) return true;\n    let idx = match.index + match[0].length;\n    // if an open bracket/brace/paren is escaped,\n    // set the index to the next closing character\n    const open = match[1];\n    const close = open ? chars[open] : null;\n    if (open && close) {\n      const n = str.indexOf(close, idx);\n      if (n !== -1) {\n        idx = n + 1;\n      }\n    }\n    str = str.slice(idx);\n  }\n  return false;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Like normalize(), but doesn't collapse \"**\\/..\" when `globstar` is true.\n *\n * @example Usage\n * ```ts\n * import { normalizeGlob } from \"@std/path/posix/normalize-glob\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const path = normalizeGlob(\"foo/bar/../*\", { globstar: true });\n * assertEquals(path, \"foo/*\");\n * ```\n *\n * @param glob The glob to normalize.\n * @param options The options to use.\n * @returns The normalized path.\n */ function normalizeGlob(glob, options = {}) {\n  const { globstar = false } = options;\n  if (glob.match(/\\0/g)) {\n    throw new Error(`Glob contains invalid characters: \"${glob}\"`);\n  }\n  if (!globstar) {\n    return normalize(glob);\n  }\n  const s = SEPARATOR_PATTERN.source;\n  const badParentPattern = new RegExp(`(?<=(${s}|^)\\\\*\\\\*${s})\\\\.\\\\.(?=${s}|$)`, \"g\");\n  return normalize(glob.replace(badParentPattern, \"\\0\")).replace(/\\0/g, \"..\");\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Like join(), but doesn't collapse \"**\\/..\" when `globstar` is true.\n *\n * @example Usage\n * ```ts\n * import { joinGlobs } from \"@std/path/posix/join-globs\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const path = joinGlobs([\"foo\", \"bar\", \"**\"], { globstar: true });\n * assertEquals(path, \"foo/bar/**\");\n * ```\n *\n * @param globs The globs to join.\n * @param options The options to use.\n * @returns The joined path.\n */ function joinGlobs(globs, options = {}) {\n  const { globstar = false } = options;\n  if (!globstar || globs.length === 0) {\n    return join(...globs);\n  }\n  let joined;\n  for (const glob of globs){\n    const path = glob;\n    if (path.length > 0) {\n      if (!joined) joined = path;\n      else joined += `${SEPARATOR}${path}`;\n    }\n  }\n  if (!joined) return \".\";\n  return normalizeGlob(joined, {\n    globstar\n  });\n}\n\nexports.DELIMITER = DELIMITER;\nexports.SEPARATOR = SEPARATOR;\nexports.SEPARATOR_PATTERN = SEPARATOR_PATTERN;\nexports.basename = basename;\nexports.common = common;\nexports.dirname = dirname;\nexports.extname = extname;\nexports.format = format;\nexports.fromFileUrl = fromFileUrl;\nexports.globToRegExp = globToRegExp;\nexports.isAbsolute = isAbsolute;\nexports.isGlob = isGlob;\nexports.join = join;\nexports.joinGlobs = joinGlobs;\nexports.normalize = normalize;\nexports.normalizeGlob = normalizeGlob;\nexports.parse = parse;\nexports.relative = relative;\nexports.resolve = resolve;\nexports.toFileUrl = toFileUrl;\nexports.toNamespacedPath = toNamespacedPath;\n", "// @ts-nocheck\n'use strict';\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// Copyright the Browserify authors. MIT License.\nfunction assertPath(path) {\n  if (typeof path !== \"string\") {\n    throw new TypeError(`Path must be a string, received \"${JSON.stringify(path)}\"`);\n  }\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nfunction stripSuffix(name, suffix) {\n  if (suffix.length >= name.length) {\n    return name;\n  }\n  const lenDiff = name.length - suffix.length;\n  for(let i = suffix.length - 1; i >= 0; --i){\n    if (name.charCodeAt(lenDiff + i) !== suffix.charCodeAt(i)) {\n      return name;\n    }\n  }\n  return name.slice(0, -suffix.length);\n}\nfunction lastPathSegment(path, isSep, start = 0) {\n  let matchedNonSeparator = false;\n  let end = path.length;\n  for(let i = path.length - 1; i >= start; --i){\n    if (isSep(path.charCodeAt(i))) {\n      if (matchedNonSeparator) {\n        start = i + 1;\n        break;\n      }\n    } else if (!matchedNonSeparator) {\n      matchedNonSeparator = true;\n      end = i + 1;\n    }\n  }\n  return path.slice(start, end);\n}\nfunction assertArgs$1(path, suffix) {\n  assertPath(path);\n  if (path.length === 0) return path;\n  if (typeof suffix !== \"string\") {\n    throw new TypeError(`Suffix must be a string, received \"${JSON.stringify(suffix)}\"`);\n  }\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// Copyright the Browserify authors. MIT License.\n// Ported from https://github.com/browserify/path-browserify/\n// This module is browser compatible.\n// Alphabet chars.\nconst CHAR_UPPERCASE_A = 65; /* A */ \nconst CHAR_LOWERCASE_A = 97; /* a */ \nconst CHAR_UPPERCASE_Z = 90; /* Z */ \nconst CHAR_LOWERCASE_Z = 122; /* z */ \n// Non-alphabetic chars.\nconst CHAR_DOT = 46; /* . */ \nconst CHAR_FORWARD_SLASH = 47; /* / */ \nconst CHAR_BACKWARD_SLASH = 92; /* \\ */ \nconst CHAR_COLON = 58; /* : */ \nconst CHAR_QUESTION_MARK = 63; /* ? */\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// Copyright the Browserify authors. MIT License.\n// Ported from https://github.com/browserify/path-browserify/\n// This module is browser compatible.\nfunction stripTrailingSeparators(segment, isSep) {\n  if (segment.length <= 1) {\n    return segment;\n  }\n  let end = segment.length;\n  for(let i = segment.length - 1; i > 0; i--){\n    if (isSep(segment.charCodeAt(i))) {\n      end = i;\n    } else {\n      break;\n    }\n  }\n  return segment.slice(0, end);\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// Copyright the Browserify authors. MIT License.\n// Ported from https://github.com/browserify/path-browserify/\n// This module is browser compatible.\nfunction isPosixPathSeparator(code) {\n  return code === CHAR_FORWARD_SLASH;\n}\nfunction isPathSeparator(code) {\n  return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n}\nfunction isWindowsDeviceRoot(code) {\n  return code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z || code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nfunction assertArg$3(url) {\n  url = url instanceof URL ? url : new URL(url);\n  if (url.protocol !== \"file:\") {\n    throw new TypeError(`URL must be a file URL: received \"${url.protocol}\"`);\n  }\n  return url;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Converts a file URL to a path string.\n *\n * @example Usage\n * ```ts\n * import { fromFileUrl } from \"@std/path/windows/from-file-url\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(fromFileUrl(\"file:///home/foo\"), \"\\\\home\\\\foo\");\n * assertEquals(fromFileUrl(\"file:///C:/Users/foo\"), \"C:\\\\Users\\\\foo\");\n * assertEquals(fromFileUrl(\"file://localhost/home/foo\"), \"\\\\home\\\\foo\");\n * ```\n *\n * @param url The file URL to convert.\n * @returns The path string.\n */ function fromFileUrl(url) {\n  url = assertArg$3(url);\n  let path = decodeURIComponent(url.pathname.replace(/\\//g, \"\\\\\").replace(/%(?![0-9A-Fa-f]{2})/g, \"%25\")).replace(/^\\\\*([A-Za-z]:)(\\\\|$)/, \"$1\\\\\");\n  if (url.hostname !== \"\") {\n    // Note: The `URL` implementation guarantees that the drive letter and\n    // hostname are mutually exclusive. Otherwise it would not have been valid\n    // to append the hostname and path like this.\n    path = `\\\\\\\\${url.hostname}${path}`;\n  }\n  return path;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Return the last portion of a `path`.\n * Trailing directory separators are ignored, and optional suffix is removed.\n *\n * @example Usage\n * ```ts\n * import { basename } from \"@std/path/windows/basename\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(basename(\"C:\\\\user\\\\Documents\\\\\"), \"Documents\");\n * assertEquals(basename(\"C:\\\\user\\\\Documents\\\\image.png\"), \"image.png\");\n * assertEquals(basename(\"C:\\\\user\\\\Documents\\\\image.png\", \".png\"), \"image\");\n * assertEquals(basename(new URL(\"file:///C:/user/Documents/image.png\")), \"image.png\");\n * assertEquals(basename(new URL(\"file:///C:/user/Documents/image.png\"), \".png\"), \"image\");\n * ```\n *\n * @param path The path to extract the name from.\n * @param suffix The suffix to remove from extracted name.\n * @returns The extracted name.\n */ function basename(path, suffix = \"\") {\n  if (path instanceof URL) {\n    path = fromFileUrl(path);\n  }\n  assertArgs$1(path, suffix);\n  // Check for a drive letter prefix so as not to mistake the following\n  // path separator as an extra separator at the end of the path that can be\n  // disregarded\n  let start = 0;\n  if (path.length >= 2) {\n    const drive = path.charCodeAt(0);\n    if (isWindowsDeviceRoot(drive)) {\n      if (path.charCodeAt(1) === CHAR_COLON) start = 2;\n    }\n  }\n  const lastSegment = lastPathSegment(path, isPathSeparator, start);\n  const strippedSegment = stripTrailingSeparators(lastSegment, isPathSeparator);\n  return suffix ? stripSuffix(strippedSegment, suffix) : strippedSegment;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * The character used to separate entries in the PATH environment variable.\n */ const DELIMITER = \";\";\n/**\n * The character used to separate components of a file path.\n */ const SEPARATOR = \"\\\\\";\n/**\n * A regular expression that matches one or more path separators.\n */ const SEPARATOR_PATTERN = /[\\\\/]+/;\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nfunction assertArg$2(path) {\n  assertPath(path);\n  if (path.length === 0) return \".\";\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Return the directory path of a `path`.\n *\n * @example Usage\n * ```ts\n * import { dirname } from \"@std/path/windows/dirname\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(dirname(\"C:\\\\foo\\\\bar\\\\baz.ext\"), \"C:\\\\foo\\\\bar\");\n * assertEquals(dirname(new URL(\"file:///C:/foo/bar/baz.ext\")), \"C:\\\\foo\\\\bar\");\n * ```\n *\n * @param path The path to get the directory from.\n * @returns The directory path.\n */ function dirname(path) {\n  if (path instanceof URL) {\n    path = fromFileUrl(path);\n  }\n  assertArg$2(path);\n  const len = path.length;\n  let rootEnd = -1;\n  let end = -1;\n  let matchedSlash = true;\n  let offset = 0;\n  const code = path.charCodeAt(0);\n  // Try to match a root\n  if (len > 1) {\n    if (isPathSeparator(code)) {\n      // Possible UNC root\n      rootEnd = offset = 1;\n      if (isPathSeparator(path.charCodeAt(1))) {\n        // Matched double path separator at beginning\n        let j = 2;\n        let last = j;\n        // Match 1 or more non-path separators\n        for(; j < len; ++j){\n          if (isPathSeparator(path.charCodeAt(j))) break;\n        }\n        if (j < len && j !== last) {\n          // Matched!\n          last = j;\n          // Match 1 or more path separators\n          for(; j < len; ++j){\n            if (!isPathSeparator(path.charCodeAt(j))) break;\n          }\n          if (j < len && j !== last) {\n            // Matched!\n            last = j;\n            // Match 1 or more non-path separators\n            for(; j < len; ++j){\n              if (isPathSeparator(path.charCodeAt(j))) break;\n            }\n            if (j === len) {\n              // We matched a UNC root only\n              return path;\n            }\n            if (j !== last) {\n              // We matched a UNC root with leftovers\n              // Offset by 1 to include the separator after the UNC root to\n              // treat it as a \"normal root\" on top of a (UNC) root\n              rootEnd = offset = j + 1;\n            }\n          }\n        }\n      }\n    } else if (isWindowsDeviceRoot(code)) {\n      // Possible device root\n      if (path.charCodeAt(1) === CHAR_COLON) {\n        rootEnd = offset = 2;\n        if (len > 2) {\n          if (isPathSeparator(path.charCodeAt(2))) rootEnd = offset = 3;\n        }\n      }\n    }\n  } else if (isPathSeparator(code)) {\n    // `path` contains just a path separator, exit early to avoid\n    // unnecessary work\n    return path;\n  }\n  for(let i = len - 1; i >= offset; --i){\n    if (isPathSeparator(path.charCodeAt(i))) {\n      if (!matchedSlash) {\n        end = i;\n        break;\n      }\n    } else {\n      // We saw the first non-path separator\n      matchedSlash = false;\n    }\n  }\n  if (end === -1) {\n    if (rootEnd === -1) return \".\";\n    else end = rootEnd;\n  }\n  return stripTrailingSeparators(path.slice(0, end), isPosixPathSeparator);\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Return the extension of the `path` with leading period.\n *\n * @example Usage\n * ```ts\n * import { extname } from \"@std/path/windows/extname\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(extname(\"file.ts\"), \".ts\");\n * assertEquals(extname(new URL(\"file:///C:/foo/bar/baz.ext\")), \".ext\");\n * ```\n *\n * @param path The path to get the extension from.\n * @returns The extension of the `path`.\n */ function extname(path) {\n  if (path instanceof URL) {\n    path = fromFileUrl(path);\n  }\n  assertPath(path);\n  let start = 0;\n  let startDot = -1;\n  let startPart = 0;\n  let end = -1;\n  let matchedSlash = true;\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find\n  let preDotState = 0;\n  // Check for a drive letter prefix so as not to mistake the following\n  // path separator as an extra separator at the end of the path that can be\n  // disregarded\n  if (path.length >= 2 && path.charCodeAt(1) === CHAR_COLON && isWindowsDeviceRoot(path.charCodeAt(0))) {\n    start = startPart = 2;\n  }\n  for(let i = path.length - 1; i >= start; --i){\n    const code = path.charCodeAt(i);\n    if (isPathSeparator(code)) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now\n      if (!matchedSlash) {\n        startPart = i + 1;\n        break;\n      }\n      continue;\n    }\n    if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension\n      matchedSlash = false;\n      end = i + 1;\n    }\n    if (code === CHAR_DOT) {\n      // If this is our first dot, mark it as the start of our extension\n      if (startDot === -1) startDot = i;\n      else if (preDotState !== 1) preDotState = 1;\n    } else if (startDot !== -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension\n      preDotState = -1;\n    }\n  }\n  if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot\n  preDotState === 0 || // The (right-most) trimmed path component is exactly '..'\n  preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n    return \"\";\n  }\n  return path.slice(startDot, end);\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nfunction _format(sep, pathObject) {\n  const dir = pathObject.dir || pathObject.root;\n  const base = pathObject.base || (pathObject.name ?? \"\") + (pathObject.ext ?? \"\");\n  if (!dir) return base;\n  if (base === sep) return dir;\n  if (dir === pathObject.root) return dir + base;\n  return dir + sep + base;\n}\nfunction assertArg$1(pathObject) {\n  if (pathObject === null || typeof pathObject !== \"object\") {\n    throw new TypeError(`The \"pathObject\" argument must be of type Object, received type \"${typeof pathObject}\"`);\n  }\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Generate a path from `ParsedPath` object.\n *\n * @example Usage\n * ```ts\n * import { format } from \"@std/path/windows/format\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const path = format({\n *   root: \"C:\\\\\",\n *   dir: \"C:\\\\path\\\\dir\",\n *   base: \"file.txt\",\n *   ext: \".txt\",\n *   name: \"file\"\n * });\n * assertEquals(path, \"C:\\\\path\\\\dir\\\\file.txt\");\n * ```\n *\n * @param pathObject The path object to format.\n * @returns The formatted path.\n */ function format(pathObject) {\n  assertArg$1(pathObject);\n  return _format(\"\\\\\", pathObject);\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Verifies whether provided path is absolute.\n *\n * @example Usage\n * ```ts\n * import { isAbsolute } from \"@std/path/windows/is-absolute\";\n * import { assert, assertFalse } from \"@std/assert\";\n *\n * assert(isAbsolute(\"C:\\\\foo\\\\bar\"));\n * assertFalse(isAbsolute(\"..\\\\baz\"));\n * ```\n *\n * @param path The path to verify.\n * @returns `true` if the path is absolute, `false` otherwise.\n */ function isAbsolute(path) {\n  assertPath(path);\n  const len = path.length;\n  if (len === 0) return false;\n  const code = path.charCodeAt(0);\n  if (isPathSeparator(code)) {\n    return true;\n  } else if (isWindowsDeviceRoot(code)) {\n    // Possible device root\n    if (len > 2 && path.charCodeAt(1) === CHAR_COLON) {\n      if (isPathSeparator(path.charCodeAt(2))) return true;\n    }\n  }\n  return false;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nfunction assertArg(path) {\n  assertPath(path);\n  if (path.length === 0) return \".\";\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// Copyright the Browserify authors. MIT License.\n// Ported from https://github.com/browserify/path-browserify/\n// This module is browser compatible.\n// Resolves . and .. elements in a path with directory names\nfunction normalizeString(path, allowAboveRoot, separator, isPathSeparator) {\n  let res = \"\";\n  let lastSegmentLength = 0;\n  let lastSlash = -1;\n  let dots = 0;\n  let code;\n  for(let i = 0; i <= path.length; ++i){\n    if (i < path.length) code = path.charCodeAt(i);\n    else if (isPathSeparator(code)) break;\n    else code = CHAR_FORWARD_SLASH;\n    if (isPathSeparator(code)) {\n      if (lastSlash === i - 1 || dots === 1) ; else if (lastSlash !== i - 1 && dots === 2) {\n        if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== CHAR_DOT || res.charCodeAt(res.length - 2) !== CHAR_DOT) {\n          if (res.length > 2) {\n            const lastSlashIndex = res.lastIndexOf(separator);\n            if (lastSlashIndex === -1) {\n              res = \"\";\n              lastSegmentLength = 0;\n            } else {\n              res = res.slice(0, lastSlashIndex);\n              lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);\n            }\n            lastSlash = i;\n            dots = 0;\n            continue;\n          } else if (res.length === 2 || res.length === 1) {\n            res = \"\";\n            lastSegmentLength = 0;\n            lastSlash = i;\n            dots = 0;\n            continue;\n          }\n        }\n        if (allowAboveRoot) {\n          if (res.length > 0) res += `${separator}..`;\n          else res = \"..\";\n          lastSegmentLength = 2;\n        }\n      } else {\n        if (res.length > 0) res += separator + path.slice(lastSlash + 1, i);\n        else res = path.slice(lastSlash + 1, i);\n        lastSegmentLength = i - lastSlash - 1;\n      }\n      lastSlash = i;\n      dots = 0;\n    } else if (code === CHAR_DOT && dots !== -1) {\n      ++dots;\n    } else {\n      dots = -1;\n    }\n  }\n  return res;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Normalize the `path`, resolving `'..'` and `'.'` segments.\n * Note that resolving these segments does not necessarily mean that all will be eliminated.\n * A `'..'` at the top-level will be preserved, and an empty path is canonically `'.'`.\n *\n * @example Usage\n * ```ts\n * import { normalize } from \"@std/path/windows/normalize\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(normalize(\"C:\\\\foo\\\\..\\\\bar\"), \"C:\\\\bar\");\n * assertEquals(normalize(new URL(\"file:///C:/foo/../bar\")), \"C:\\\\bar\");\n * ```\n *\n * @param path The path to normalize\n * @returns The normalized path\n */ function normalize(path) {\n  if (path instanceof URL) {\n    path = fromFileUrl(path);\n  }\n  assertArg(path);\n  const len = path.length;\n  let rootEnd = 0;\n  let device;\n  let isAbsolute = false;\n  const code = path.charCodeAt(0);\n  // Try to match a root\n  if (len > 1) {\n    if (isPathSeparator(code)) {\n      // Possible UNC root\n      // If we started with a separator, we know we at least have an absolute\n      // path of some kind (UNC or otherwise)\n      isAbsolute = true;\n      if (isPathSeparator(path.charCodeAt(1))) {\n        // Matched double path separator at beginning\n        let j = 2;\n        let last = j;\n        // Match 1 or more non-path separators\n        for(; j < len; ++j){\n          if (isPathSeparator(path.charCodeAt(j))) break;\n        }\n        if (j < len && j !== last) {\n          const firstPart = path.slice(last, j);\n          // Matched!\n          last = j;\n          // Match 1 or more path separators\n          for(; j < len; ++j){\n            if (!isPathSeparator(path.charCodeAt(j))) break;\n          }\n          if (j < len && j !== last) {\n            // Matched!\n            last = j;\n            // Match 1 or more non-path separators\n            for(; j < len; ++j){\n              if (isPathSeparator(path.charCodeAt(j))) break;\n            }\n            if (j === len) {\n              // We matched a UNC root only\n              // Return the normalized version of the UNC root since there\n              // is nothing left to process\n              return `\\\\\\\\${firstPart}\\\\${path.slice(last)}\\\\`;\n            } else if (j !== last) {\n              // We matched a UNC root with leftovers\n              device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\n              rootEnd = j;\n            }\n          }\n        }\n      } else {\n        rootEnd = 1;\n      }\n    } else if (isWindowsDeviceRoot(code)) {\n      // Possible device root\n      if (path.charCodeAt(1) === CHAR_COLON) {\n        device = path.slice(0, 2);\n        rootEnd = 2;\n        if (len > 2) {\n          if (isPathSeparator(path.charCodeAt(2))) {\n            // Treat separator following drive name as an absolute path\n            // indicator\n            isAbsolute = true;\n            rootEnd = 3;\n          }\n        }\n      }\n    }\n  } else if (isPathSeparator(code)) {\n    // `path` contains just a path separator, exit early to avoid unnecessary\n    // work\n    return \"\\\\\";\n  }\n  let tail;\n  if (rootEnd < len) {\n    tail = normalizeString(path.slice(rootEnd), !isAbsolute, \"\\\\\", isPathSeparator);\n  } else {\n    tail = \"\";\n  }\n  if (tail.length === 0 && !isAbsolute) tail = \".\";\n  if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) {\n    tail += \"\\\\\";\n  }\n  if (device === undefined) {\n    if (isAbsolute) {\n      if (tail.length > 0) return `\\\\${tail}`;\n      else return \"\\\\\";\n    }\n    return tail;\n  } else if (isAbsolute) {\n    if (tail.length > 0) return `${device}\\\\${tail}`;\n    else return `${device}\\\\`;\n  }\n  return device + tail;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Join all given a sequence of `paths`,then normalizes the resulting path.\n *\n * @example Usage\n * ```ts\n * import { join } from \"@std/path/windows/join\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(join(\"C:\\\\foo\", \"bar\", \"baz\\\\..\"), \"C:\\\\foo\\\\bar\");\n * assertEquals(join(new URL(\"file:///C:/foo\"), \"bar\", \"baz\\\\..\"), \"C:\\\\foo\\\\bar\");\n * ```\n *\n * @param path The path to join. This can be string or file URL.\n * @param paths The paths to join.\n * @returns The joined path.\n */ function join(path, ...paths) {\n  if (path instanceof URL) {\n    path = fromFileUrl(path);\n  }\n  paths = path ? [\n    path,\n    ...paths\n  ] : paths;\n  paths.forEach((path)=>assertPath(path));\n  paths = paths.filter((path)=>path.length > 0);\n  if (paths.length === 0) return \".\";\n  // Make sure that the joined path doesn't start with two slashes, because\n  // normalize() will mistake it for an UNC path then.\n  //\n  // This step is skipped when it is very clear that the user actually\n  // intended to point at an UNC path. This is assumed when the first\n  // non-empty string arguments starts with exactly two slashes followed by\n  // at least one more non-slash character.\n  //\n  // Note that for normalize() to treat a path as an UNC path it needs to\n  // have at least 2 components, so we don't filter for that here.\n  // This means that the user can use join to construct UNC paths from\n  // a server name and a share name; for example:\n  //   path.join('//server', 'share') -> '\\\\\\\\server\\\\share\\\\'\n  let needsReplace = true;\n  let slashCount = 0;\n  const firstPart = paths[0];\n  if (isPathSeparator(firstPart.charCodeAt(0))) {\n    ++slashCount;\n    const firstLen = firstPart.length;\n    if (firstLen > 1) {\n      if (isPathSeparator(firstPart.charCodeAt(1))) {\n        ++slashCount;\n        if (firstLen > 2) {\n          if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount;\n          else {\n            // We matched a UNC path in the first part\n            needsReplace = false;\n          }\n        }\n      }\n    }\n  }\n  let joined = paths.join(\"\\\\\");\n  if (needsReplace) {\n    // Find any more consecutive slashes we need to replace\n    for(; slashCount < joined.length; ++slashCount){\n      if (!isPathSeparator(joined.charCodeAt(slashCount))) break;\n    }\n    // Replace the slashes if needed\n    if (slashCount >= 2) joined = `\\\\${joined.slice(slashCount)}`;\n  }\n  return normalize(joined);\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Return a `ParsedPath` object of the `path`.\n *\n * @example Usage\n * ```ts\n * import { parse } from \"@std/path/windows/parse\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const parsed = parse(\"C:\\\\foo\\\\bar\\\\baz.ext\");\n * assertEquals(parsed, {\n *   root: \"C:\\\\\",\n *   dir: \"C:\\\\foo\\\\bar\",\n *   base: \"baz.ext\",\n *   ext: \".ext\",\n *   name: \"baz\",\n * });\n * ```\n *\n * @param path The path to parse.\n * @returns The `ParsedPath` object.\n */ function parse(path) {\n  assertPath(path);\n  const ret = {\n    root: \"\",\n    dir: \"\",\n    base: \"\",\n    ext: \"\",\n    name: \"\"\n  };\n  const len = path.length;\n  if (len === 0) return ret;\n  let rootEnd = 0;\n  let code = path.charCodeAt(0);\n  // Try to match a root\n  if (len > 1) {\n    if (isPathSeparator(code)) {\n      // Possible UNC root\n      rootEnd = 1;\n      if (isPathSeparator(path.charCodeAt(1))) {\n        // Matched double path separator at beginning\n        let j = 2;\n        let last = j;\n        // Match 1 or more non-path separators\n        for(; j < len; ++j){\n          if (isPathSeparator(path.charCodeAt(j))) break;\n        }\n        if (j < len && j !== last) {\n          // Matched!\n          last = j;\n          // Match 1 or more path separators\n          for(; j < len; ++j){\n            if (!isPathSeparator(path.charCodeAt(j))) break;\n          }\n          if (j < len && j !== last) {\n            // Matched!\n            last = j;\n            // Match 1 or more non-path separators\n            for(; j < len; ++j){\n              if (isPathSeparator(path.charCodeAt(j))) break;\n            }\n            if (j === len) {\n              // We matched a UNC root only\n              rootEnd = j;\n            } else if (j !== last) {\n              // We matched a UNC root with leftovers\n              rootEnd = j + 1;\n            }\n          }\n        }\n      }\n    } else if (isWindowsDeviceRoot(code)) {\n      // Possible device root\n      if (path.charCodeAt(1) === CHAR_COLON) {\n        rootEnd = 2;\n        if (len > 2) {\n          if (isPathSeparator(path.charCodeAt(2))) {\n            if (len === 3) {\n              // `path` contains just a drive root, exit early to avoid\n              // unnecessary work\n              ret.root = ret.dir = path;\n              ret.base = \"\\\\\";\n              return ret;\n            }\n            rootEnd = 3;\n          }\n        } else {\n          // `path` contains just a relative drive root, exit early to avoid\n          // unnecessary work\n          ret.root = ret.dir = path;\n          return ret;\n        }\n      }\n    }\n  } else if (isPathSeparator(code)) {\n    // `path` contains just a path separator, exit early to avoid\n    // unnecessary work\n    ret.root = ret.dir = path;\n    ret.base = \"\\\\\";\n    return ret;\n  }\n  if (rootEnd > 0) ret.root = path.slice(0, rootEnd);\n  let startDot = -1;\n  let startPart = rootEnd;\n  let end = -1;\n  let matchedSlash = true;\n  let i = path.length - 1;\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find\n  let preDotState = 0;\n  // Get non-dir info\n  for(; i >= rootEnd; --i){\n    code = path.charCodeAt(i);\n    if (isPathSeparator(code)) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now\n      if (!matchedSlash) {\n        startPart = i + 1;\n        break;\n      }\n      continue;\n    }\n    if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension\n      matchedSlash = false;\n      end = i + 1;\n    }\n    if (code === CHAR_DOT) {\n      // If this is our first dot, mark it as the start of our extension\n      if (startDot === -1) startDot = i;\n      else if (preDotState !== 1) preDotState = 1;\n    } else if (startDot !== -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension\n      preDotState = -1;\n    }\n  }\n  if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot\n  preDotState === 0 || // The (right-most) trimmed path component is exactly '..'\n  preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n    if (end !== -1) {\n      ret.base = ret.name = path.slice(startPart, end);\n    }\n  } else {\n    ret.name = path.slice(startPart, startDot);\n    ret.base = path.slice(startPart, end);\n    ret.ext = path.slice(startDot, end);\n  }\n  // Fallback to '\\' in case there is no basename\n  ret.base = ret.base || \"\\\\\";\n  // If the directory is the root, use the entire root as the `dir` including\n  // the trailing slash if any (`C:\\abc` -> `C:\\`). Otherwise, strip out the\n  // trailing slash (`C:\\abc\\def` -> `C:\\abc`).\n  if (startPart > 0 && startPart !== rootEnd) {\n    ret.dir = path.slice(0, startPart - 1);\n  } else ret.dir = ret.root;\n  return ret;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Resolves path segments into a `path`.\n *\n * @example Usage\n * ```ts\n * import { resolve } from \"@std/path/windows/resolve\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const resolved = resolve(\"C:\\\\foo\\\\bar\", \"..\\\\baz\");\n * assertEquals(resolved, \"C:\\\\foo\\\\baz\");\n * ```\n *\n * @param pathSegments The path segments to process to path\n * @returns The resolved path\n */ function resolve(...pathSegments) {\n  let resolvedDevice = \"\";\n  let resolvedTail = \"\";\n  let resolvedAbsolute = false;\n  for(let i = pathSegments.length - 1; i >= -1; i--){\n    let path;\n    // deno-lint-ignore no-explicit-any\n    const { Deno } = globalThis;\n    if (i >= 0) {\n      path = pathSegments[i];\n    } else if (!resolvedDevice) {\n      if (typeof Deno?.cwd !== \"function\") {\n        throw new TypeError(\"Resolved a drive-letter-less path without a current working directory (CWD)\");\n      }\n      path = Deno.cwd();\n    } else {\n      if (typeof Deno?.env?.get !== \"function\" || typeof Deno?.cwd !== \"function\") {\n        throw new TypeError(\"Resolved a relative path without a current working directory (CWD)\");\n      }\n      path = Deno.cwd();\n      // Verify that a cwd was found and that it actually points\n      // to our drive. If not, default to the drive's root.\n      if (path === undefined || path.slice(0, 3).toLowerCase() !== `${resolvedDevice.toLowerCase()}\\\\`) {\n        path = `${resolvedDevice}\\\\`;\n      }\n    }\n    assertPath(path);\n    const len = path.length;\n    // Skip empty entries\n    if (len === 0) continue;\n    let rootEnd = 0;\n    let device = \"\";\n    let isAbsolute = false;\n    const code = path.charCodeAt(0);\n    // Try to match a root\n    if (len > 1) {\n      if (isPathSeparator(code)) {\n        // Possible UNC root\n        // If we started with a separator, we know we at least have an\n        // absolute path of some kind (UNC or otherwise)\n        isAbsolute = true;\n        if (isPathSeparator(path.charCodeAt(1))) {\n          // Matched double path separator at beginning\n          let j = 2;\n          let last = j;\n          // Match 1 or more non-path separators\n          for(; j < len; ++j){\n            if (isPathSeparator(path.charCodeAt(j))) break;\n          }\n          if (j < len && j !== last) {\n            const firstPart = path.slice(last, j);\n            // Matched!\n            last = j;\n            // Match 1 or more path separators\n            for(; j < len; ++j){\n              if (!isPathSeparator(path.charCodeAt(j))) break;\n            }\n            if (j < len && j !== last) {\n              // Matched!\n              last = j;\n              // Match 1 or more non-path separators\n              for(; j < len; ++j){\n                if (isPathSeparator(path.charCodeAt(j))) break;\n              }\n              if (j === len) {\n                // We matched a UNC root only\n                device = `\\\\\\\\${firstPart}\\\\${path.slice(last)}`;\n                rootEnd = j;\n              } else if (j !== last) {\n                // We matched a UNC root with leftovers\n                device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\n                rootEnd = j;\n              }\n            }\n          }\n        } else {\n          rootEnd = 1;\n        }\n      } else if (isWindowsDeviceRoot(code)) {\n        // Possible device root\n        if (path.charCodeAt(1) === CHAR_COLON) {\n          device = path.slice(0, 2);\n          rootEnd = 2;\n          if (len > 2) {\n            if (isPathSeparator(path.charCodeAt(2))) {\n              // Treat separator following drive name as an absolute path\n              // indicator\n              isAbsolute = true;\n              rootEnd = 3;\n            }\n          }\n        }\n      }\n    } else if (isPathSeparator(code)) {\n      // `path` contains just a path separator\n      rootEnd = 1;\n      isAbsolute = true;\n    }\n    if (device.length > 0 && resolvedDevice.length > 0 && device.toLowerCase() !== resolvedDevice.toLowerCase()) {\n      continue;\n    }\n    if (resolvedDevice.length === 0 && device.length > 0) {\n      resolvedDevice = device;\n    }\n    if (!resolvedAbsolute) {\n      resolvedTail = `${path.slice(rootEnd)}\\\\${resolvedTail}`;\n      resolvedAbsolute = isAbsolute;\n    }\n    if (resolvedAbsolute && resolvedDevice.length > 0) break;\n  }\n  // At this point the path should be resolved to a full absolute path,\n  // but handle relative paths to be safe (might happen when Deno.cwd()\n  // fails)\n  // Normalize the tail path\n  resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, \"\\\\\", isPathSeparator);\n  return resolvedDevice + (resolvedAbsolute ? \"\\\\\" : \"\") + resolvedTail || \".\";\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nfunction assertArgs(from, to) {\n  assertPath(from);\n  assertPath(to);\n  if (from === to) return \"\";\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Return the relative path from `from` to `to` based on current working directory.\n *\n * An example in windows, for instance:\n *  from = 'C:\\\\orandea\\\\test\\\\aaa'\n *  to = 'C:\\\\orandea\\\\impl\\\\bbb'\n * The output of the function should be: '..\\\\..\\\\impl\\\\bbb'\n *\n * @example Usage\n * ```ts\n * import { relative } from \"@std/path/windows/relative\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const relativePath = relative(\"C:\\\\foobar\\\\test\\\\aaa\", \"C:\\\\foobar\\\\impl\\\\bbb\");\n * assertEquals(relativePath, \"..\\\\..\\\\impl\\\\bbb\");\n * ```\n *\n * @param from The path from which to calculate the relative path\n * @param to The path to which to calculate the relative path\n * @returns The relative path from `from` to `to`\n */ function relative(from, to) {\n  assertArgs(from, to);\n  const fromOrig = resolve(from);\n  const toOrig = resolve(to);\n  if (fromOrig === toOrig) return \"\";\n  from = fromOrig.toLowerCase();\n  to = toOrig.toLowerCase();\n  if (from === to) return \"\";\n  // Trim any leading backslashes\n  let fromStart = 0;\n  let fromEnd = from.length;\n  for(; fromStart < fromEnd; ++fromStart){\n    if (from.charCodeAt(fromStart) !== CHAR_BACKWARD_SLASH) break;\n  }\n  // Trim trailing backslashes (applicable to UNC paths only)\n  for(; fromEnd - 1 > fromStart; --fromEnd){\n    if (from.charCodeAt(fromEnd - 1) !== CHAR_BACKWARD_SLASH) break;\n  }\n  const fromLen = fromEnd - fromStart;\n  // Trim any leading backslashes\n  let toStart = 0;\n  let toEnd = to.length;\n  for(; toStart < toEnd; ++toStart){\n    if (to.charCodeAt(toStart) !== CHAR_BACKWARD_SLASH) break;\n  }\n  // Trim trailing backslashes (applicable to UNC paths only)\n  for(; toEnd - 1 > toStart; --toEnd){\n    if (to.charCodeAt(toEnd - 1) !== CHAR_BACKWARD_SLASH) break;\n  }\n  const toLen = toEnd - toStart;\n  // Compare paths to find the longest common path from root\n  const length = fromLen < toLen ? fromLen : toLen;\n  let lastCommonSep = -1;\n  let i = 0;\n  for(; i <= length; ++i){\n    if (i === length) {\n      if (toLen > length) {\n        if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) {\n          // We get here if `from` is the exact base path for `to`.\n          // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo\\\\bar\\\\baz'\n          return toOrig.slice(toStart + i + 1);\n        } else if (i === 2) {\n          // We get here if `from` is the device root.\n          // For example: from='C:\\\\'; to='C:\\\\foo'\n          return toOrig.slice(toStart + i);\n        }\n      }\n      if (fromLen > length) {\n        if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) {\n          // We get here if `to` is the exact base path for `from`.\n          // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo'\n          lastCommonSep = i;\n        } else if (i === 2) {\n          // We get here if `to` is the device root.\n          // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\'\n          lastCommonSep = 3;\n        }\n      }\n      break;\n    }\n    const fromCode = from.charCodeAt(fromStart + i);\n    const toCode = to.charCodeAt(toStart + i);\n    if (fromCode !== toCode) break;\n    else if (fromCode === CHAR_BACKWARD_SLASH) lastCommonSep = i;\n  }\n  // We found a mismatch before the first common path separator was seen, so\n  // return the original `to`.\n  if (i !== length && lastCommonSep === -1) {\n    return toOrig;\n  }\n  let out = \"\";\n  if (lastCommonSep === -1) lastCommonSep = 0;\n  // Generate the relative path based on the path difference between `to` and\n  // `from`\n  for(i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i){\n    if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) {\n      if (out.length === 0) out += \"..\";\n      else out += \"\\\\..\";\n    }\n  }\n  // Lastly, append the rest of the destination (`to`) path that comes after\n  // the common path parts\n  if (out.length > 0) {\n    return out + toOrig.slice(toStart + lastCommonSep, toEnd);\n  } else {\n    toStart += lastCommonSep;\n    if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) ++toStart;\n    return toOrig.slice(toStart, toEnd);\n  }\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nconst WHITESPACE_ENCODINGS = {\n  \"\\u0009\": \"%09\",\n  \"\\u000A\": \"%0A\",\n  \"\\u000B\": \"%0B\",\n  \"\\u000C\": \"%0C\",\n  \"\\u000D\": \"%0D\",\n  \"\\u0020\": \"%20\"\n};\nfunction encodeWhitespace(string) {\n  return string.replaceAll(/[\\s]/g, (c)=>{\n    return WHITESPACE_ENCODINGS[c] ?? c;\n  });\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Converts a path string to a file URL.\n *\n * @example Usage\n * ```ts\n * import { toFileUrl } from \"@std/path/windows/to-file-url\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(toFileUrl(\"\\\\home\\\\foo\"), new URL(\"file:///home/foo\"));\n * assertEquals(toFileUrl(\"C:\\\\Users\\\\foo\"), new URL(\"file:///C:/Users/foo\"));\n * assertEquals(toFileUrl(\"\\\\\\\\127.0.0.1\\\\home\\\\foo\"), new URL(\"file://127.0.0.1/home/foo\"));\n * ```\n * @param path The path to convert.\n * @returns The file URL.\n */ function toFileUrl(path) {\n  if (!isAbsolute(path)) {\n    throw new TypeError(`Path must be absolute: received \"${path}\"`);\n  }\n  const [, hostname, pathname] = path.match(/^(?:[/\\\\]{2}([^/\\\\]+)(?=[/\\\\](?:[^/\\\\]|$)))?(.*)/);\n  const url = new URL(\"file:///\");\n  url.pathname = encodeWhitespace(pathname.replace(/%/g, \"%25\"));\n  if (hostname !== undefined && hostname !== \"localhost\") {\n    url.hostname = hostname;\n    if (!url.hostname) {\n      throw new TypeError(`Invalid hostname: \"${url.hostname}\"`);\n    }\n  }\n  return url;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Resolves path to a namespace path\n *\n * @example Usage\n * ```ts\n * import { toNamespacedPath } from \"@std/path/windows/to-namespaced-path\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const namespaced = toNamespacedPath(\"C:\\\\foo\\\\bar\");\n * assertEquals(namespaced, \"\\\\\\\\?\\\\C:\\\\foo\\\\bar\");\n * ```\n *\n * @param path The path to resolve to namespaced path\n * @returns The resolved namespaced path\n */ function toNamespacedPath(path) {\n  // Note: this will *probably* throw somewhere.\n  if (typeof path !== \"string\") return path;\n  if (path.length === 0) return \"\";\n  const resolvedPath = resolve(path);\n  if (resolvedPath.length >= 3) {\n    if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) {\n      // Possible UNC root\n      if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) {\n        const code = resolvedPath.charCodeAt(2);\n        if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) {\n          // Matched non-long UNC root, convert the path to a long UNC path\n          return `\\\\\\\\?\\\\UNC\\\\${resolvedPath.slice(2)}`;\n        }\n      }\n    } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) {\n      // Possible device root\n      if (resolvedPath.charCodeAt(1) === CHAR_COLON && resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) {\n        // Matched device root, convert the path to a long UNC path\n        return `\\\\\\\\?\\\\${resolvedPath}`;\n      }\n    }\n  }\n  return path;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nfunction common$1(paths, sep) {\n  const [first = \"\", ...remaining] = paths;\n  const parts = first.split(sep);\n  let endOfPrefix = parts.length;\n  let append = \"\";\n  for (const path of remaining){\n    const compare = path.split(sep);\n    if (compare.length <= endOfPrefix) {\n      endOfPrefix = compare.length;\n      append = \"\";\n    }\n    for(let i = 0; i < endOfPrefix; i++){\n      if (compare[i] !== parts[i]) {\n        endOfPrefix = i;\n        append = i === 0 ? \"\" : sep;\n        break;\n      }\n    }\n  }\n  return parts.slice(0, endOfPrefix).join(sep) + append;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Determines the common path from a set of paths for Windows systems.\n *\n * @example Usage\n * ```ts\n * import { common } from \"@std/path/windows/common\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const path = common([\n *   \"C:\\\\foo\\\\bar\",\n *   \"C:\\\\foo\\\\baz\",\n * ]);\n * assertEquals(path, \"C:\\\\foo\\\\\");\n * ```\n *\n * @param paths The paths to compare.\n * @returns The common path.\n */ function common(paths) {\n  return common$1(paths, SEPARATOR);\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Options for {@linkcode globToRegExp}, {@linkcode joinGlobs},\n * {@linkcode normalizeGlob} and {@linkcode expandGlob}.\n */ const REG_EXP_ESCAPE_CHARS = [\n  \"!\",\n  \"$\",\n  \"(\",\n  \")\",\n  \"*\",\n  \"+\",\n  \".\",\n  \"=\",\n  \"?\",\n  \"[\",\n  \"\\\\\",\n  \"^\",\n  \"{\",\n  \"|\"\n];\nconst RANGE_ESCAPE_CHARS = [\n  \"-\",\n  \"\\\\\",\n  \"]\"\n];\nfunction _globToRegExp(c, glob, { extended = true, globstar: globstarOption = true, // os = osType,\ncaseInsensitive = false } = {}) {\n  if (glob === \"\") {\n    return /(?!)/;\n  }\n  // Remove trailing separators.\n  let newLength = glob.length;\n  for(; newLength > 1 && c.seps.includes(glob[newLength - 1]); newLength--);\n  glob = glob.slice(0, newLength);\n  let regExpString = \"\";\n  // Terminates correctly. Trust that `j` is incremented every iteration.\n  for(let j = 0; j < glob.length;){\n    let segment = \"\";\n    const groupStack = [];\n    let inRange = false;\n    let inEscape = false;\n    let endsWithSep = false;\n    let i = j;\n    // Terminates with `i` at the non-inclusive end of the current segment.\n    for(; i < glob.length && !(c.seps.includes(glob[i]) && groupStack.length === 0); i++){\n      if (inEscape) {\n        inEscape = false;\n        const escapeChars = inRange ? RANGE_ESCAPE_CHARS : REG_EXP_ESCAPE_CHARS;\n        segment += escapeChars.includes(glob[i]) ? `\\\\${glob[i]}` : glob[i];\n        continue;\n      }\n      if (glob[i] === c.escapePrefix) {\n        inEscape = true;\n        continue;\n      }\n      if (glob[i] === \"[\") {\n        if (!inRange) {\n          inRange = true;\n          segment += \"[\";\n          if (glob[i + 1] === \"!\") {\n            i++;\n            segment += \"^\";\n          } else if (glob[i + 1] === \"^\") {\n            i++;\n            segment += \"\\\\^\";\n          }\n          continue;\n        } else if (glob[i + 1] === \":\") {\n          let k = i + 1;\n          let value = \"\";\n          while(glob[k + 1] !== undefined && glob[k + 1] !== \":\"){\n            value += glob[k + 1];\n            k++;\n          }\n          if (glob[k + 1] === \":\" && glob[k + 2] === \"]\") {\n            i = k + 2;\n            if (value === \"alnum\") segment += \"\\\\dA-Za-z\";\n            else if (value === \"alpha\") segment += \"A-Za-z\";\n            else if (value === \"ascii\") segment += \"\\x00-\\x7F\";\n            else if (value === \"blank\") segment += \"\\t \";\n            else if (value === \"cntrl\") segment += \"\\x00-\\x1F\\x7F\";\n            else if (value === \"digit\") segment += \"\\\\d\";\n            else if (value === \"graph\") segment += \"\\x21-\\x7E\";\n            else if (value === \"lower\") segment += \"a-z\";\n            else if (value === \"print\") segment += \"\\x20-\\x7E\";\n            else if (value === \"punct\") {\n              segment += \"!\\\"#$%&'()*+,\\\\-./:;<=>?@[\\\\\\\\\\\\]^_\u2018{|}~\";\n            } else if (value === \"space\") segment += \"\\\\s\\v\";\n            else if (value === \"upper\") segment += \"A-Z\";\n            else if (value === \"word\") segment += \"\\\\w\";\n            else if (value === \"xdigit\") segment += \"\\\\dA-Fa-f\";\n            continue;\n          }\n        }\n      }\n      if (glob[i] === \"]\" && inRange) {\n        inRange = false;\n        segment += \"]\";\n        continue;\n      }\n      if (inRange) {\n        segment += glob[i];\n        continue;\n      }\n      if (glob[i] === \")\" && groupStack.length > 0 && groupStack[groupStack.length - 1] !== \"BRACE\") {\n        segment += \")\";\n        const type = groupStack.pop();\n        if (type === \"!\") {\n          segment += c.wildcard;\n        } else if (type !== \"@\") {\n          segment += type;\n        }\n        continue;\n      }\n      if (glob[i] === \"|\" && groupStack.length > 0 && groupStack[groupStack.length - 1] !== \"BRACE\") {\n        segment += \"|\";\n        continue;\n      }\n      if (glob[i] === \"+\" && extended && glob[i + 1] === \"(\") {\n        i++;\n        groupStack.push(\"+\");\n        segment += \"(?:\";\n        continue;\n      }\n      if (glob[i] === \"@\" && extended && glob[i + 1] === \"(\") {\n        i++;\n        groupStack.push(\"@\");\n        segment += \"(?:\";\n        continue;\n      }\n      if (glob[i] === \"?\") {\n        if (extended && glob[i + 1] === \"(\") {\n          i++;\n          groupStack.push(\"?\");\n          segment += \"(?:\";\n        } else {\n          segment += \".\";\n        }\n        continue;\n      }\n      if (glob[i] === \"!\" && extended && glob[i + 1] === \"(\") {\n        i++;\n        groupStack.push(\"!\");\n        segment += \"(?!\";\n        continue;\n      }\n      if (glob[i] === \"{\") {\n        groupStack.push(\"BRACE\");\n        segment += \"(?:\";\n        continue;\n      }\n      if (glob[i] === \"}\" && groupStack[groupStack.length - 1] === \"BRACE\") {\n        groupStack.pop();\n        segment += \")\";\n        continue;\n      }\n      if (glob[i] === \",\" && groupStack[groupStack.length - 1] === \"BRACE\") {\n        segment += \"|\";\n        continue;\n      }\n      if (glob[i] === \"*\") {\n        if (extended && glob[i + 1] === \"(\") {\n          i++;\n          groupStack.push(\"*\");\n          segment += \"(?:\";\n        } else {\n          const prevChar = glob[i - 1];\n          let numStars = 1;\n          while(glob[i + 1] === \"*\"){\n            i++;\n            numStars++;\n          }\n          const nextChar = glob[i + 1];\n          if (globstarOption && numStars === 2 && [\n            ...c.seps,\n            undefined\n          ].includes(prevChar) && [\n            ...c.seps,\n            undefined\n          ].includes(nextChar)) {\n            segment += c.globstar;\n            endsWithSep = true;\n          } else {\n            segment += c.wildcard;\n          }\n        }\n        continue;\n      }\n      segment += REG_EXP_ESCAPE_CHARS.includes(glob[i]) ? `\\\\${glob[i]}` : glob[i];\n    }\n    // Check for unclosed groups or a dangling backslash.\n    if (groupStack.length > 0 || inRange || inEscape) {\n      // Parse failure. Take all characters from this segment literally.\n      segment = \"\";\n      for (const c of glob.slice(j, i)){\n        segment += REG_EXP_ESCAPE_CHARS.includes(c) ? `\\\\${c}` : c;\n        endsWithSep = false;\n      }\n    }\n    regExpString += segment;\n    if (!endsWithSep) {\n      regExpString += i < glob.length ? c.sep : c.sepMaybe;\n      endsWithSep = true;\n    }\n    // Terminates with `i` at the start of the next segment.\n    while(c.seps.includes(glob[i]))i++;\n    j = i;\n  }\n  regExpString = `^${regExpString}$`;\n  return new RegExp(regExpString, caseInsensitive ? \"i\" : \"\");\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\nconst constants = {\n  sep: \"(?:\\\\\\\\|/)+\",\n  sepMaybe: \"(?:\\\\\\\\|/)*\",\n  seps: [\n    \"\\\\\",\n    \"/\"\n  ],\n  globstar: \"(?:[^\\\\\\\\/]*(?:\\\\\\\\|/|$)+)*\",\n  wildcard: \"[^\\\\\\\\/]*\",\n  escapePrefix: \"`\"\n};\n/** Convert a glob string to a regular expression.\n *\n * Tries to match bash glob expansion as closely as possible.\n *\n * Basic glob syntax:\n * - `*` - Matches everything without leaving the path segment.\n * - `?` - Matches any single character.\n * - `{foo,bar}` - Matches `foo` or `bar`.\n * - `[abcd]` - Matches `a`, `b`, `c` or `d`.\n * - `[a-d]` - Matches `a`, `b`, `c` or `d`.\n * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`.\n * - `[[:<class>:]]` - Matches any character belonging to `<class>`.\n *     - `[[:alnum:]]` - Matches any digit or letter.\n *     - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`.\n *     - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes\n *       for a complete list of supported character classes.\n * - `\\` - Escapes the next character for an `os` other than `\"windows\"`.\n * - \\` - Escapes the next character for `os` set to `\"windows\"`.\n * - `/` - Path separator.\n * - `\\` - Additional path separator only for `os` set to `\"windows\"`.\n *\n * Extended syntax:\n * - Requires `{ extended: true }`.\n * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`.\n * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same.\n * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`.\n * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`.\n * - `!(foo|bar)` - Matches anything other than `{foo,bar}`.\n * - See https://www.linuxjournal.com/content/bash-extended-globbing.\n *\n * Globstar syntax:\n * - Requires `{ globstar: true }`.\n * - `**` - Matches any number of any path segments.\n *     - Must comprise its entire path segment in the provided glob.\n * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option.\n *\n * Note the following properties:\n * - The generated `RegExp` is anchored at both start and end.\n * - Repeating and trailing separators are tolerated. Trailing separators in the\n *   provided glob have no meaning and are discarded.\n * - Absolute globs will only match absolute paths, etc.\n * - Empty globs will match nothing.\n * - Any special glob syntax must be contained to one path segment. For example,\n *   `?(foo|bar/baz)` is invalid. The separator will take precedence and the\n *   first segment ends with an unclosed group.\n * - If a path segment ends with unclosed groups or a dangling escape prefix, a\n *   parse error has occurred. Every character for that segment is taken\n *   literally in this event.\n *\n * Limitations:\n * - A negative group like `!(foo|bar)` will wrongly be converted to a negative\n *   look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly\n *   fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively,\n *   `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if\n *   the group occurs not nested at the end of the segment.\n *\n * @example Usage\n * ```ts\n * import { globToRegExp } from \"@std/path/windows/glob-to-regexp\";\n * import { assertEquals } from \"@std/assert\";\n *\n * assertEquals(globToRegExp(\"*.js\"), /^[^\\\\/]*\\.js(?:\\\\|\\/)*$/);\n * ```\n *\n * @param glob Glob string to convert.\n * @param options Conversion options.\n * @returns The regular expression equivalent to the glob.\n */ function globToRegExp(glob, options = {}) {\n  return _globToRegExp(constants, glob, options);\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Test whether the given string is a glob.\n *\n * @example Usage\n * ```ts\n * import { isGlob } from \"@std/path/is-glob\";\n * import { assert } from \"@std/assert\";\n *\n * assert(!isGlob(\"foo/bar/../baz\"));\n * assert(isGlob(\"foo/*ar/../baz\"));\n * ```\n *\n * @param str String to test.\n * @returns `true` if the given string is a glob, otherwise `false`\n */ function isGlob(str) {\n  const chars = {\n    \"{\": \"}\",\n    \"(\": \")\",\n    \"[\": \"]\"\n  };\n  const regex = /\\\\(.)|(^!|\\*|\\?|[\\].+)]\\?|\\[[^[\\\\\\]]+\\]|\\{[^{\\\\}]+\\}|\\(\\?[:!=][^\\\\)]+\\)|\\([^(|]+\\|[^\\\\)]+\\)|@\\([^)]+\\))/;\n  if (str === \"\") {\n    return false;\n  }\n  let match;\n  while(match = regex.exec(str)){\n    if (match[2]) return true;\n    let idx = match.index + match[0].length;\n    // if an open bracket/brace/paren is escaped,\n    // set the index to the next closing character\n    const open = match[1];\n    const close = open ? chars[open] : null;\n    if (open && close) {\n      const n = str.indexOf(close, idx);\n      if (n !== -1) {\n        idx = n + 1;\n      }\n    }\n    str = str.slice(idx);\n  }\n  return false;\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Like normalize(), but doesn't collapse \"**\\/..\" when `globstar` is true.\n *\n * @example Usage\n * ```ts\n * import { normalizeGlob } from \"@std/path/windows/normalize-glob\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const normalized = normalizeGlob(\"**\\\\foo\\\\..\\\\bar\", { globstar: true });\n * assertEquals(normalized, \"**\\\\bar\");\n * ```\n *\n * @param glob The glob pattern to normalize.\n * @param options The options for glob pattern.\n * @returns The normalized glob pattern.\n */ function normalizeGlob(glob, options = {}) {\n  const { globstar = false } = options;\n  if (glob.match(/\\0/g)) {\n    throw new Error(`Glob contains invalid characters: \"${glob}\"`);\n  }\n  if (!globstar) {\n    return normalize(glob);\n  }\n  const s = SEPARATOR_PATTERN.source;\n  const badParentPattern = new RegExp(`(?<=(${s}|^)\\\\*\\\\*${s})\\\\.\\\\.(?=${s}|$)`, \"g\");\n  return normalize(glob.replace(badParentPattern, \"\\0\")).replace(/\\0/g, \"..\");\n}\n\n// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n/**\n * Like join(), but doesn't collapse \"**\\/..\" when `globstar` is true.\n *\n * @example Usage\n *\n * ```ts\n * import { joinGlobs } from \"@std/path/windows/join-globs\";\n * import { assertEquals } from \"@std/assert\";\n *\n * const joined = joinGlobs([\"foo\", \"**\", \"bar\"], { globstar: true });\n * assertEquals(joined, \"foo\\\\**\\\\bar\");\n * ```\n *\n * @param globs The globs to join.\n * @param options The options for glob pattern.\n * @returns The joined glob pattern.\n */ function joinGlobs(globs, options = {}) {\n  const { globstar = false } = options;\n  if (!globstar || globs.length === 0) {\n    return join(...globs);\n  }\n  let joined;\n  for (const glob of globs){\n    const path = glob;\n    if (path.length > 0) {\n      if (!joined) joined = path;\n      else joined += `${SEPARATOR}${path}`;\n    }\n  }\n  if (!joined) return \".\";\n  return normalizeGlob(joined, {\n    globstar\n  });\n}\n\nexports.DELIMITER = DELIMITER;\nexports.SEPARATOR = SEPARATOR;\nexports.SEPARATOR_PATTERN = SEPARATOR_PATTERN;\nexports.basename = basename;\nexports.common = common;\nexports.dirname = dirname;\nexports.extname = extname;\nexports.format = format;\nexports.fromFileUrl = fromFileUrl;\nexports.globToRegExp = globToRegExp;\nexports.isAbsolute = isAbsolute;\nexports.isGlob = isGlob;\nexports.join = join;\nexports.joinGlobs = joinGlobs;\nexports.normalize = normalize;\nexports.normalizeGlob = normalizeGlob;\nexports.parse = parse;\nexports.relative = relative;\nexports.resolve = resolve;\nexports.toFileUrl = toFileUrl;\nexports.toNamespacedPath = toNamespacedPath;\n", "'use strict';\n\n/**\n * @fileoverview Merge Strategy\n */\n\n//-----------------------------------------------------------------------------\n// Class\n//-----------------------------------------------------------------------------\n\n/**\n * Container class for several different merge strategies.\n */\nclass MergeStrategy {\n\t/**\n\t * Merges two keys by overwriting the first with the second.\n\t * @template TValue1 The type of the value from the first object key.\n\t * @template TValue2 The type of the value from the second object key.\n\t * @param {TValue1} value1 The value from the first object key.\n\t * @param {TValue2} value2 The value from the second object key.\n\t * @returns {TValue2} The second value.\n\t */\n\tstatic overwrite(value1, value2) {\n\t\treturn value2;\n\t}\n\n\t/**\n\t * Merges two keys by replacing the first with the second only if the\n\t * second is defined.\n\t * @template TValue1 The type of the value from the first object key.\n\t * @template TValue2 The type of the value from the second object key.\n\t * @param {TValue1} value1 The value from the first object key.\n\t * @param {TValue2} value2 The value from the second object key.\n\t * @returns {TValue1 | TValue2} The second value if it is defined.\n\t */\n\tstatic replace(value1, value2) {\n\t\tif (typeof value2 !== \"undefined\") {\n\t\t\treturn value2;\n\t\t}\n\n\t\treturn value1;\n\t}\n\n\t/**\n\t * Merges two properties by assigning properties from the second to the first.\n\t * @template {Record<string | number | symbol, unknown> | undefined} TValue1 The type of the value from the first object key.\n\t * @template {Record<string | number | symbol, unknown>} TValue2 The type of the value from the second object key.\n\t * @param {TValue1} value1 The value from the first object key.\n\t * @param {TValue2} value2 The value from the second object key.\n\t * @returns {Omit<TValue1, keyof TValue2> & TValue2} A new object containing properties from both value1 and\n\t *      value2.\n\t */\n\tstatic assign(value1, value2) {\n\t\treturn Object.assign({}, value1, value2);\n\t}\n}\n\n/**\n * @fileoverview Validation Strategy\n */\n\n//-----------------------------------------------------------------------------\n// Class\n//-----------------------------------------------------------------------------\n\n/**\n * Container class for several different validation strategies.\n */\nclass ValidationStrategy {\n\t/**\n\t * Validates that a value is an array.\n\t * @param {unknown} value The value to validate.\n\t * @returns {void}\n\t * @throws {TypeError} If the value is invalid.\n\t */\n\tstatic array(value) {\n\t\tif (!Array.isArray(value)) {\n\t\t\tthrow new TypeError(\"Expected an array.\");\n\t\t}\n\t}\n\n\t/**\n\t * Validates that a value is a boolean.\n\t * @param {unknown} value The value to validate.\n\t * @returns {void}\n\t * @throws {TypeError} If the value is invalid.\n\t */\n\tstatic boolean(value) {\n\t\tif (typeof value !== \"boolean\") {\n\t\t\tthrow new TypeError(\"Expected a boolean.\");\n\t\t}\n\t}\n\n\t/**\n\t * Validates that a value is a number.\n\t * @param {unknown} value The value to validate.\n\t * @returns {void}\n\t * @throws {TypeError} If the value is invalid.\n\t */\n\tstatic number(value) {\n\t\tif (typeof value !== \"number\") {\n\t\t\tthrow new TypeError(\"Expected a number.\");\n\t\t}\n\t}\n\n\t/**\n\t * Validates that a value is an object.\n\t * @param {unknown} value The value to validate.\n\t * @returns {void}\n\t * @throws {TypeError} If the value is invalid.\n\t */\n\tstatic object(value) {\n\t\tif (!value || typeof value !== \"object\") {\n\t\t\tthrow new TypeError(\"Expected an object.\");\n\t\t}\n\t}\n\n\t/**\n\t * Validates that a value is an object or null.\n\t * @param {unknown} value The value to validate.\n\t * @returns {void}\n\t * @throws {TypeError} If the value is invalid.\n\t */\n\tstatic \"object?\"(value) {\n\t\tif (typeof value !== \"object\") {\n\t\t\tthrow new TypeError(\"Expected an object or null.\");\n\t\t}\n\t}\n\n\t/**\n\t * Validates that a value is a string.\n\t * @param {unknown} value The value to validate.\n\t * @returns {void}\n\t * @throws {TypeError} If the value is invalid.\n\t */\n\tstatic string(value) {\n\t\tif (typeof value !== \"string\") {\n\t\t\tthrow new TypeError(\"Expected a string.\");\n\t\t}\n\t}\n\n\t/**\n\t * Validates that a value is a non-empty string.\n\t * @param {unknown} value The value to validate.\n\t * @returns {void}\n\t * @throws {TypeError} If the value is invalid.\n\t */\n\tstatic \"string!\"(value) {\n\t\tif (typeof value !== \"string\" || value.length === 0) {\n\t\t\tthrow new TypeError(\"Expected a non-empty string.\");\n\t\t}\n\t}\n}\n\n/**\n * @fileoverview Object Schema\n */\n\n\n//-----------------------------------------------------------------------------\n// Types\n//-----------------------------------------------------------------------------\n\n/** @import * as $typests from \"./types.ts\"; */\n/** @typedef {$typests.BuiltInMergeStrategy} BuiltInMergeStrategy */\n/** @typedef {$typests.BuiltInValidationStrategy} BuiltInValidationStrategy */\n/** @typedef {$typests.CustomMergeStrategy} CustomMergeStrategy */\n/** @typedef {$typests.CustomValidationStrategy} CustomValidationStrategy */\n/** @typedef {$typests.ObjectDefinition} ObjectDefinition */\n/** @typedef {$typests.PropertyDefinition} PropertyDefinition */\n/** @typedef {$typests.PropertyDefinitionWithSchema} PropertyDefinitionWithSchema */\n/** @typedef {$typests.PropertyDefinitionWithStrategies} PropertyDefinitionWithStrategies */\n\n//-----------------------------------------------------------------------------\n// Private\n//-----------------------------------------------------------------------------\n\n/**\n * Validates a schema strategy.\n * @param {string} name The name of the key this strategy is for.\n * @param {PropertyDefinition} definition The strategy for the object key.\n * @returns {void}\n * @throws {TypeError} When the strategy is missing a name.\n * @throws {TypeError} When the strategy is missing a merge() method.\n * @throws {TypeError} When the strategy is missing a validate() method.\n */\nfunction validateDefinition(name, definition) {\n\tlet hasSchema = false;\n\tif (definition.schema) {\n\t\tif (typeof definition.schema === \"object\") {\n\t\t\thasSchema = true;\n\t\t} else {\n\t\t\tthrow new TypeError(\"Schema must be an object.\");\n\t\t}\n\t}\n\n\tif (typeof definition.merge === \"string\") {\n\t\tif (!(definition.merge in MergeStrategy)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Definition for key \"${name}\" missing valid merge strategy.`,\n\t\t\t);\n\t\t}\n\t} else if (!hasSchema && typeof definition.merge !== \"function\") {\n\t\tthrow new TypeError(\n\t\t\t`Definition for key \"${name}\" must have a merge property.`,\n\t\t);\n\t}\n\n\tif (typeof definition.validate === \"string\") {\n\t\tif (!(definition.validate in ValidationStrategy)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Definition for key \"${name}\" missing valid validation strategy.`,\n\t\t\t);\n\t\t}\n\t} else if (!hasSchema && typeof definition.validate !== \"function\") {\n\t\tthrow new TypeError(\n\t\t\t`Definition for key \"${name}\" must have a validate() method.`,\n\t\t);\n\t}\n}\n\n//-----------------------------------------------------------------------------\n// Errors\n//-----------------------------------------------------------------------------\n\n/**\n * Error when an unexpected key is found.\n */\nclass UnexpectedKeyError extends Error {\n\t/**\n\t * Creates a new instance.\n\t * @param {string} key The key that was unexpected.\n\t */\n\tconstructor(key) {\n\t\tsuper(`Unexpected key \"${key}\" found.`);\n\t}\n}\n\n/**\n * Error when a required key is missing.\n */\nclass MissingKeyError extends Error {\n\t/**\n\t * Creates a new instance.\n\t * @param {string} key The key that was missing.\n\t */\n\tconstructor(key) {\n\t\tsuper(`Missing required key \"${key}\".`);\n\t}\n}\n\n/**\n * Error when a key requires other keys that are missing.\n */\nclass MissingDependentKeysError extends Error {\n\t/**\n\t * Creates a new instance.\n\t * @param {string} key The key that was unexpected.\n\t * @param {Array<string>} requiredKeys The keys that are required.\n\t */\n\tconstructor(key, requiredKeys) {\n\t\tsuper(`Key \"${key}\" requires keys \"${requiredKeys.join('\", \"')}\".`);\n\t}\n}\n\n/**\n * Wrapper error for errors occuring during a merge or validate operation.\n */\nclass WrapperError extends Error {\n\t/**\n\t * Creates a new instance.\n\t * @param {string} key The object key causing the error.\n\t * @param {Error} source The source error.\n\t */\n\tconstructor(key, source) {\n\t\tsuper(`Key \"${key}\": ${source.message}`, { cause: source });\n\n\t\t// copy over custom properties that aren't represented\n\t\tfor (const sourceKey of Object.keys(source)) {\n\t\t\tif (!(sourceKey in this)) {\n\t\t\t\tthis[sourceKey] = source[sourceKey];\n\t\t\t}\n\t\t}\n\t}\n}\n\n//-----------------------------------------------------------------------------\n// Main\n//-----------------------------------------------------------------------------\n\n/**\n * Represents an object validation/merging schema.\n */\nclass ObjectSchema {\n\t/**\n\t * Track all definitions in the schema by key.\n\t * @type {Map<string, PropertyDefinition>}\n\t */\n\t#definitions = new Map();\n\n\t/**\n\t * Separately track any keys that are required for faster validation.\n\t * @type {Map<string, PropertyDefinition>}\n\t */\n\t#requiredKeys = new Map();\n\n\t/**\n\t * Creates a new instance.\n\t * @param {ObjectDefinition} definitions The schema definitions.\n\t * @throws {Error} When the definitions are missing or invalid.\n\t */\n\tconstructor(definitions) {\n\t\tif (!definitions) {\n\t\t\tthrow new Error(\"Schema definitions missing.\");\n\t\t}\n\n\t\t// add in all strategies\n\t\tfor (const key of Object.keys(definitions)) {\n\t\t\tconst definition = definitions[key];\n\n\t\t\tvalidateDefinition(key, definition);\n\n\t\t\tlet normalizedDefinition = definition;\n\n\t\t\t// normalize merge and validate methods if subschema is present\n\t\t\tif (typeof normalizedDefinition.schema === \"object\") {\n\t\t\t\tconst schema = new ObjectSchema(normalizedDefinition.schema);\n\t\t\t\tnormalizedDefinition = {\n\t\t\t\t\t...normalizedDefinition,\n\t\t\t\t\tmerge(first = {}, second = {}) {\n\t\t\t\t\t\treturn schema.merge(first, second);\n\t\t\t\t\t},\n\t\t\t\t\tvalidate(value) {\n\t\t\t\t\t\tValidationStrategy.object(value);\n\t\t\t\t\t\tschema.validate(value);\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// normalize the merge method in case there's a string\n\t\t\tif (typeof normalizedDefinition.merge === \"string\") {\n\t\t\t\tnormalizedDefinition = {\n\t\t\t\t\t...normalizedDefinition,\n\t\t\t\t\tmerge: MergeStrategy[normalizedDefinition.merge],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// normalize the validate method in case there's a string\n\t\t\tif (typeof normalizedDefinition.validate === \"string\") {\n\t\t\t\tnormalizedDefinition = {\n\t\t\t\t\t...normalizedDefinition,\n\t\t\t\t\tvalidate: ValidationStrategy[normalizedDefinition.validate],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.#definitions.set(key, normalizedDefinition);\n\n\t\t\tif (normalizedDefinition.required) {\n\t\t\t\tthis.#requiredKeys.set(key, normalizedDefinition);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Determines if a strategy has been registered for the given object key.\n\t * @param {string} key The object key to find a strategy for.\n\t * @returns {boolean} True if the key has a strategy registered, false if not.\n\t */\n\thasKey(key) {\n\t\treturn this.#definitions.has(key);\n\t}\n\n\t/**\n\t * Merges objects together to create a new object comprised of the keys\n\t * of the all objects. Keys are merged based on the each key's merge\n\t * strategy.\n\t * @param {...Object} objects The objects to merge.\n\t * @returns {Object} A new object with a mix of all objects' keys.\n\t * @throws {TypeError} If any object is invalid.\n\t */\n\tmerge(...objects) {\n\t\t// double check arguments\n\t\tif (objects.length < 2) {\n\t\t\tthrow new TypeError(\"merge() requires at least two arguments.\");\n\t\t}\n\n\t\tif (\n\t\t\tobjects.some(\n\t\t\t\tobject => object === null || typeof object !== \"object\",\n\t\t\t)\n\t\t) {\n\t\t\tthrow new TypeError(\"All arguments must be objects.\");\n\t\t}\n\n\t\treturn objects.reduce((result, object) => {\n\t\t\tthis.validate(object);\n\n\t\t\tfor (const [key, strategy] of this.#definitions) {\n\t\t\t\ttry {\n\t\t\t\t\tif (key in result || key in object) {\n\t\t\t\t\t\tconst merge = /** @type {Function} */ (strategy.merge);\n\t\t\t\t\t\tconst value = merge.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\tresult[key],\n\t\t\t\t\t\t\tobject[key],\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\t\tresult[key] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (ex) {\n\t\t\t\t\tthrow new WrapperError(key, ex);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t}, {});\n\t}\n\n\t/**\n\t * Validates an object's keys based on the validate strategy for each key.\n\t * @param {Object} object The object to validate.\n\t * @returns {void}\n\t * @throws {Error} When the object is invalid.\n\t */\n\tvalidate(object) {\n\t\t// check existing keys first\n\t\tfor (const key of Object.keys(object)) {\n\t\t\t// check to see if the key is defined\n\t\t\tif (!this.hasKey(key)) {\n\t\t\t\tthrow new UnexpectedKeyError(key);\n\t\t\t}\n\n\t\t\t// validate existing keys\n\t\t\tconst definition = /** @type {PropertyDefinition} */ (\n\t\t\t\tthis.#definitions.get(key)\n\t\t\t); // `definition` is guaranteed to exist since we check with `hasKey()` above.\n\n\t\t\t// first check to see if any other keys are required\n\t\t\tif (Array.isArray(definition.requires)) {\n\t\t\t\tif (\n\t\t\t\t\t!definition.requires.every(otherKey => otherKey in object)\n\t\t\t\t) {\n\t\t\t\t\tthrow new MissingDependentKeysError(\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tdefinition.requires,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// now apply remaining validation strategy\n\t\t\ttry {\n\t\t\t\tconst validate = /** @type {Function} */ (definition.validate);\n\t\t\t\tvalidate.call(definition, object[key]);\n\t\t\t} catch (ex) {\n\t\t\t\tthrow new WrapperError(key, ex);\n\t\t\t}\n\t\t}\n\n\t\t// ensure required keys aren't missing\n\t\tfor (const [key] of this.#requiredKeys) {\n\t\t\tif (!(key in object)) {\n\t\t\t\tthrow new MissingKeyError(key);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexports.MergeStrategy = MergeStrategy;\nexports.ObjectSchema = ObjectSchema;\nexports.ValidationStrategy = ValidationStrategy;\n", "'use strict';\n\nvar posixPath = require('./std__path/posix.cjs');\nvar windowsPath = require('./std__path/windows.cjs');\nvar minimatch = require('minimatch');\nvar createDebug = require('debug');\nvar objectSchema = require('@eslint/object-schema');\n\nfunction _interopNamespaceDefault(e) {\n\tvar n = Object.create(null);\n\tif (e) {\n\t\tObject.keys(e).forEach(function (k) {\n\t\t\tif (k !== 'default') {\n\t\t\t\tvar d = Object.getOwnPropertyDescriptor(e, k);\n\t\t\t\tObject.defineProperty(n, k, d.get ? d : {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function () { return e[k]; }\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\tn.default = e;\n\treturn Object.freeze(n);\n}\n\nvar posixPath__namespace = /*#__PURE__*/_interopNamespaceDefault(posixPath);\nvar windowsPath__namespace = /*#__PURE__*/_interopNamespaceDefault(windowsPath);\n\n/**\n * @fileoverview ConfigSchema\n * @author Nicholas C. Zakas\n */\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @import * as $eslintobjectschema from \"@eslint/object-schema\"; */\n/** @typedef {$eslintobjectschema.PropertyDefinition} PropertyDefinition */\n/** @typedef {$eslintobjectschema.ObjectDefinition} ObjectDefinition */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * A strategy that does nothing.\n * @type {PropertyDefinition}\n */\nconst NOOP_STRATEGY = {\n\trequired: false,\n\tmerge() {\n\t\treturn undefined;\n\t},\n\tvalidate() {},\n};\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The base schema that every ConfigArray uses.\n * @type {ObjectDefinition}\n */\nconst baseSchema = Object.freeze({\n\tname: {\n\t\trequired: false,\n\t\tmerge() {\n\t\t\treturn undefined;\n\t\t},\n\t\tvalidate(value) {\n\t\t\tif (typeof value !== \"string\") {\n\t\t\t\tthrow new TypeError(\"Property must be a string.\");\n\t\t\t}\n\t\t},\n\t},\n\tbasePath: NOOP_STRATEGY,\n\tfiles: NOOP_STRATEGY,\n\tignores: NOOP_STRATEGY,\n});\n\n/**\n * @fileoverview ConfigSchema\n * @author Nicholas C. Zakas\n */\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Asserts that a given value is an array.\n * @param {*} value The value to check.\n * @returns {void}\n * @throws {TypeError} When the value is not an array.\n */\nfunction assertIsArray(value) {\n\tif (!Array.isArray(value)) {\n\t\tthrow new TypeError(\"Expected value to be an array.\");\n\t}\n}\n\n/**\n * Asserts that a given value is an array containing only strings and functions.\n * @param {*} value The value to check.\n * @returns {void}\n * @throws {TypeError} When the value is not an array of strings and functions.\n */\nfunction assertIsArrayOfStringsAndFunctions(value) {\n\tassertIsArray(value);\n\n\tif (\n\t\tvalue.some(\n\t\t\titem => typeof item !== \"string\" && typeof item !== \"function\",\n\t\t)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t\"Expected array to only contain strings and functions.\",\n\t\t);\n\t}\n}\n\n/**\n * Asserts that a given value is a non-empty array.\n * @param {*} value The value to check.\n * @returns {void}\n * @throws {TypeError} When the value is not an array or an empty array.\n */\nfunction assertIsNonEmptyArray(value) {\n\tif (!Array.isArray(value) || value.length === 0) {\n\t\tthrow new TypeError(\"Expected value to be a non-empty array.\");\n\t}\n}\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The schema for `files` and `ignores` that every ConfigArray uses.\n * @type {ObjectDefinition}\n */\nconst filesAndIgnoresSchema = Object.freeze({\n\tbasePath: {\n\t\trequired: false,\n\t\tmerge() {\n\t\t\treturn undefined;\n\t\t},\n\t\tvalidate(value) {\n\t\t\tif (typeof value !== \"string\") {\n\t\t\t\tthrow new TypeError(\"Expected value to be a string.\");\n\t\t\t}\n\t\t},\n\t},\n\tfiles: {\n\t\trequired: false,\n\t\tmerge() {\n\t\t\treturn undefined;\n\t\t},\n\t\tvalidate(value) {\n\t\t\t// first check if it's an array\n\t\t\tassertIsNonEmptyArray(value);\n\n\t\t\t// then check each member\n\t\t\tvalue.forEach(item => {\n\t\t\t\tif (Array.isArray(item)) {\n\t\t\t\t\tassertIsArrayOfStringsAndFunctions(item);\n\t\t\t\t} else if (\n\t\t\t\t\ttypeof item !== \"string\" &&\n\t\t\t\t\ttypeof item !== \"function\"\n\t\t\t\t) {\n\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t\"Items must be a string, a function, or an array of strings and functions.\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t},\n\tignores: {\n\t\trequired: false,\n\t\tmerge() {\n\t\t\treturn undefined;\n\t\t},\n\t\tvalidate: assertIsArrayOfStringsAndFunctions,\n\t},\n});\n\n/**\n * @fileoverview ConfigArray\n * @author Nicholas C. Zakas\n */\n\n\n//------------------------------------------------------------------------------\n// Types\n//------------------------------------------------------------------------------\n\n/** @import * as $typests from \"./types.ts\"; */\n/** @typedef {$typests.ConfigObject} ConfigObject */\n/** @typedef {$typests.FileMatcher} FileMatcher */\n/** @typedef {$typests.FilesMatcher} FilesMatcher */\n/** @typedef {$typests.ExtraConfigType} ExtraConfigType */\n/** @import * as $minimatch from \"minimatch\"; */\n/** @typedef {$minimatch.MinimatchOptions} MinimatchOptions */\n/** @import * as PathImpl from \"@jsr/std__path\" */\n\n/*\n * This is a bit of a hack to make TypeScript happy with the Rollup-created\n * CommonJS file. Rollup doesn't do object destructuring for imported files\n * and instead imports the default via `require()`. This messes up type checking\n * for `ObjectSchema`. To work around that, we just import the type manually\n * and give it a different name to use in the JSDoc comments.\n */\n/** @typedef {ObjectSchema} ObjectSchemaInstance */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst debug = createDebug(\"@eslint/config-array\");\n\n/**\n * A cache for minimatch instances.\n * @type {Map<string, Minimatch>}\n */\nconst minimatchCache = new Map();\n\n/**\n * A cache for negated minimatch instances.\n * @type {Map<string, Minimatch>}\n */\nconst negatedMinimatchCache = new Map();\n\n/**\n * Options to use with minimatch.\n * @type {MinimatchOptions}\n */\nconst MINIMATCH_OPTIONS = {\n\t// matchBase: true,\n\tdot: true,\n};\n\n/**\n * The types of config objects that are supported.\n * @type {Set<ExtraConfigType>}\n */\nconst CONFIG_TYPES = new Set([\"array\", \"function\"]);\n\n/**\n * Fields that are considered metadata and not part of the config object.\n * @type {Set<string>}\n */\nconst META_FIELDS = new Set([\"name\", \"basePath\"]);\n\n/**\n * A schema containing just files and ignores for early validation.\n * @type {ObjectSchemaInstance}\n */\nconst FILES_AND_IGNORES_SCHEMA = new objectSchema.ObjectSchema(filesAndIgnoresSchema);\n\n// Precomputed constant objects returned by `ConfigArray.getConfigWithStatus`.\n\nconst CONFIG_WITH_STATUS_EXTERNAL = Object.freeze({ status: \"external\" });\nconst CONFIG_WITH_STATUS_IGNORED = Object.freeze({ status: \"ignored\" });\nconst CONFIG_WITH_STATUS_UNCONFIGURED = Object.freeze({\n\tstatus: \"unconfigured\",\n});\n\n// Match two leading dots followed by a slash or the end of input.\nconst EXTERNAL_PATH_REGEX = /^\\.\\.(?:\\/|$)/u;\n\n/**\n * Wrapper error for config validation errors that adds a name to the front of the\n * error message.\n */\nclass ConfigError extends Error {\n\t/**\n\t * Creates a new instance.\n\t * @param {string} name The config object name causing the error.\n\t * @param {number} index The index of the config object in the array.\n\t * @param {Object} options The options for the error.\n\t * @param {Error} [options.cause] The error that caused this error.\n\t * @param {string} [options.message] The message to use for the error.\n\t */\n\tconstructor(name, index, { cause, message }) {\n\t\tconst finalMessage = message || cause.message;\n\n\t\tsuper(`Config ${name}: ${finalMessage}`, { cause });\n\n\t\t// copy over custom properties that aren't represented\n\t\tif (cause) {\n\t\t\tfor (const key of Object.keys(cause)) {\n\t\t\t\tif (!(key in this)) {\n\t\t\t\t\tthis[key] = cause[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * The name of the error.\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.name = \"ConfigError\";\n\n\t\t/**\n\t\t * The index of the config object in the array.\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tthis.index = index;\n\t}\n}\n\n/**\n * Gets the name of a config object.\n * @param {ConfigObject} config The config object to get the name of.\n * @returns {string} The name of the config object.\n */\nfunction getConfigName(config) {\n\tif (config && typeof config.name === \"string\" && config.name) {\n\t\treturn `\"${config.name}\"`;\n\t}\n\n\treturn \"(unnamed)\";\n}\n\n/**\n * Rethrows a config error with additional information about the config object.\n * @param {ConfigObject} config The config object to get the name of.\n * @param {number} index The index of the config object in the array.\n * @param {Error} error The error to rethrow.\n * @throws {ConfigError} When the error is rethrown for a config.\n */\nfunction rethrowConfigError(config, index, error) {\n\tconst configName = getConfigName(config);\n\tthrow new ConfigError(configName, index, { cause: error });\n}\n\n/**\n * Shorthand for checking if a value is a string.\n * @param {any} value The value to check.\n * @returns {value is string} True if a string, false if not.\n */\nfunction isString(value) {\n\treturn typeof value === \"string\";\n}\n\n/**\n * Creates a function that asserts that the config is valid\n * during normalization. This checks that the config is not nullish\n * and that files and ignores keys  of a config object are valid as per base schema.\n * @param {Object} config The config object to check.\n * @param {number} index The index of the config object in the array.\n * @returns {void}\n * @throws {ConfigError} If the files and ignores keys of a config object are not valid.\n */\nfunction assertValidBaseConfig(config, index) {\n\tif (config === null) {\n\t\tthrow new ConfigError(getConfigName(config), index, {\n\t\t\tmessage: \"Unexpected null config.\",\n\t\t});\n\t}\n\n\tif (config === undefined) {\n\t\tthrow new ConfigError(getConfigName(config), index, {\n\t\t\tmessage: \"Unexpected undefined config.\",\n\t\t});\n\t}\n\n\tif (typeof config !== \"object\") {\n\t\tthrow new ConfigError(getConfigName(config), index, {\n\t\t\tmessage: \"Unexpected non-object config.\",\n\t\t});\n\t}\n\n\tconst validateConfig = {};\n\n\tif (\"basePath\" in config) {\n\t\tvalidateConfig.basePath = config.basePath;\n\t}\n\n\tif (\"files\" in config) {\n\t\tvalidateConfig.files = config.files;\n\t}\n\n\tif (\"ignores\" in config) {\n\t\tvalidateConfig.ignores = config.ignores;\n\t}\n\n\ttry {\n\t\tFILES_AND_IGNORES_SCHEMA.validate(validateConfig);\n\t} catch (validationError) {\n\t\trethrowConfigError(config, index, validationError);\n\t}\n}\n\n/**\n * Wrapper around minimatch that caches minimatch patterns for\n * faster matching speed over multiple file path evaluations.\n * @param {string} filepath The file path to match.\n * @param {string} pattern The glob pattern to match against.\n * @param {MinimatchOptions} options The minimatch options to use.\n * @returns {boolean} True if the file path matches, false if not.\n */\nfunction doMatch(filepath, pattern, options = {}) {\n\tlet cache = minimatchCache;\n\n\tif (options.flipNegate) {\n\t\tcache = negatedMinimatchCache;\n\t}\n\n\tlet matcher = cache.get(pattern);\n\n\tif (!matcher) {\n\t\tmatcher = new minimatch.Minimatch(\n\t\t\tpattern,\n\t\t\tObject.assign({}, MINIMATCH_OPTIONS, options),\n\t\t);\n\t\tcache.set(pattern, matcher);\n\t}\n\n\treturn matcher.match(filepath);\n}\n\n/**\n * Normalizes a pattern by removing the leading \"./\" if present.\n * @param {FileMatcher} pattern The pattern to normalize.\n * @returns {FileMatcher} The normalized pattern.\n */\nfunction normalizePattern(pattern) {\n\tif (isString(pattern)) {\n\t\tif (pattern.startsWith(\"./\")) {\n\t\t\treturn pattern.slice(2);\n\t\t}\n\n\t\tif (pattern.startsWith(\"!./\")) {\n\t\t\treturn `!${pattern.slice(3)}`;\n\t\t}\n\t}\n\n\treturn pattern;\n}\n\n/**\n * Checks if a given pattern requires normalization.\n * @param {any} pattern The pattern to check.\n * @returns {boolean} True if the pattern needs normalization, false otherwise.\n *\n */\nfunction needsPatternNormalization(pattern) {\n\treturn (\n\t\tisString(pattern) &&\n\t\t(pattern.startsWith(\"./\") || pattern.startsWith(\"!./\"))\n\t);\n}\n\n/**\n * Normalizes `files` and `ignores` patterns in a config by removing \"./\" prefixes.\n * @param {Object} config The config object to normalize patterns in.\n * @param {string} namespacedBasePath The namespaced base path of the directory to which config base path is relative.\n * @param {PathImpl} path Path-handling implementation.\n * @returns {Object} The normalized config object.\n */\nfunction normalizeConfigPatterns(config, namespacedBasePath, path) {\n\tif (!config) {\n\t\treturn config;\n\t}\n\n\tconst hasBasePath = typeof config.basePath === \"string\";\n\n\tlet needsNormalization = false;\n\n\tif (hasBasePath) {\n\t\tneedsNormalization = true;\n\t}\n\n\tif (!needsNormalization && Array.isArray(config.files)) {\n\t\tneedsNormalization = config.files.some(pattern => {\n\t\t\tif (Array.isArray(pattern)) {\n\t\t\t\treturn pattern.some(needsPatternNormalization);\n\t\t\t}\n\t\t\treturn needsPatternNormalization(pattern);\n\t\t});\n\t}\n\n\tif (!needsNormalization && Array.isArray(config.ignores)) {\n\t\tneedsNormalization = config.ignores.some(needsPatternNormalization);\n\t}\n\n\tif (!needsNormalization) {\n\t\treturn config;\n\t}\n\n\tconst newConfig = { ...config };\n\n\tif (hasBasePath) {\n\t\tif (path.isAbsolute(config.basePath)) {\n\t\t\tnewConfig.basePath = path.toNamespacedPath(config.basePath);\n\t\t} else {\n\t\t\tnewConfig.basePath = path.resolve(\n\t\t\t\tnamespacedBasePath,\n\t\t\t\tconfig.basePath,\n\t\t\t);\n\t\t}\n\t}\n\n\tif (Array.isArray(newConfig.files)) {\n\t\tnewConfig.files = newConfig.files.map(pattern => {\n\t\t\tif (Array.isArray(pattern)) {\n\t\t\t\treturn pattern.map(normalizePattern);\n\t\t\t}\n\t\t\treturn normalizePattern(pattern);\n\t\t});\n\t}\n\n\tif (Array.isArray(newConfig.ignores)) {\n\t\tnewConfig.ignores = newConfig.ignores.map(normalizePattern);\n\t}\n\n\treturn newConfig;\n}\n\n/**\n * Normalizes a `ConfigArray` by flattening it and executing any functions\n * that are found inside.\n * @param {Array} items The items in a `ConfigArray`.\n * @param {Object} context The context object to pass into any function\n *      found.\n * @param {ReadonlyArray<ExtraConfigType>} extraConfigTypes The config types to check.\n * @param {string} namespacedBasePath The namespaced base path of the directory to which config base paths are relative.\n * @param {PathImpl} path Path-handling implementation.\n * @returns {Promise<Array>} A flattened array containing only config objects.\n * @throws {TypeError} When a config function returns a function.\n */\nasync function normalize(\n\titems,\n\tcontext,\n\textraConfigTypes,\n\tnamespacedBasePath,\n\tpath,\n) {\n\tconst allowFunctions = extraConfigTypes.includes(\"function\");\n\tconst allowArrays = extraConfigTypes.includes(\"array\");\n\n\tasync function* flatTraverse(array) {\n\t\tfor (let item of array) {\n\t\t\tif (typeof item === \"function\") {\n\t\t\t\tif (!allowFunctions) {\n\t\t\t\t\tthrow new TypeError(\"Unexpected function.\");\n\t\t\t\t}\n\n\t\t\t\titem = item(context);\n\t\t\t\tif (item.then) {\n\t\t\t\t\titem = await item;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\tif (!allowArrays) {\n\t\t\t\t\tthrow new TypeError(\"Unexpected array.\");\n\t\t\t\t}\n\t\t\t\tyield* flatTraverse(item);\n\t\t\t} else if (typeof item === \"function\") {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\"A config function can only return an object or array.\",\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * Async iterables cannot be used with the spread operator, so we need to manually\n\t * create the array to return.\n\t */\n\tconst asyncIterable = flatTraverse(items);\n\tconst configs = [];\n\n\tfor await (const config of asyncIterable) {\n\t\tconfigs.push(normalizeConfigPatterns(config, namespacedBasePath, path));\n\t}\n\n\treturn configs;\n}\n\n/**\n * Normalizes a `ConfigArray` by flattening it and executing any functions\n * that are found inside.\n * @param {Array} items The items in a `ConfigArray`.\n * @param {Object} context The context object to pass into any function\n *      found.\n * @param {ReadonlyArray<ExtraConfigType>} extraConfigTypes The config types to check.\n * @param {string} namespacedBasePath The namespaced base path of the directory to which config base paths are relative.\n * @param {PathImpl} path Path-handling implementation\n * @returns {Array} A flattened array containing only config objects.\n * @throws {TypeError} When a config function returns a function.\n */\nfunction normalizeSync(\n\titems,\n\tcontext,\n\textraConfigTypes,\n\tnamespacedBasePath,\n\tpath,\n) {\n\tconst allowFunctions = extraConfigTypes.includes(\"function\");\n\tconst allowArrays = extraConfigTypes.includes(\"array\");\n\n\tfunction* flatTraverse(array) {\n\t\tfor (let item of array) {\n\t\t\tif (typeof item === \"function\") {\n\t\t\t\tif (!allowFunctions) {\n\t\t\t\t\tthrow new TypeError(\"Unexpected function.\");\n\t\t\t\t}\n\n\t\t\t\titem = item(context);\n\t\t\t\tif (item.then) {\n\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t\"Async config functions are not supported.\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\tif (!allowArrays) {\n\t\t\t\t\tthrow new TypeError(\"Unexpected array.\");\n\t\t\t\t}\n\n\t\t\t\tyield* flatTraverse(item);\n\t\t\t} else if (typeof item === \"function\") {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\"A config function can only return an object or array.\",\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst configs = [];\n\n\tfor (const config of flatTraverse(items)) {\n\t\tconfigs.push(normalizeConfigPatterns(config, namespacedBasePath, path));\n\t}\n\n\treturn configs;\n}\n\n/**\n * Converts a given path to a relative path with all separator characters replaced by forward slashes (`\"/\"`).\n * @param {string} fileOrDirPath The unprocessed path to convert.\n * @param {string} namespacedBasePath The namespaced base path of the directory to which the calculated path shall be relative.\n * @param {PathImpl} path Path-handling implementations.\n * @returns {string} A relative path with all separator characters replaced by forward slashes.\n */\nfunction toRelativePath(fileOrDirPath, namespacedBasePath, path) {\n\tconst fullPath = path.resolve(namespacedBasePath, fileOrDirPath);\n\tconst namespacedFullPath = path.toNamespacedPath(fullPath);\n\tconst relativePath = path.relative(namespacedBasePath, namespacedFullPath);\n\treturn relativePath.replaceAll(path.SEPARATOR, \"/\");\n}\n\n/**\n * Determines if a given file path should be ignored based on the given\n * matcher.\n * @param {Array<{ basePath?: string, ignores: FileMatcher[] }>} configs Configuration objects containing `ignores`.\n * @param {string} filePath The unprocessed file path to check.\n * @param {string} relativeFilePath The path of the file to check relative to the base path,\n * \t\tusing forward slash (`\"/\"`) as a separator.\n * @param {Object} [basePathData] Additional data needed to recalculate paths for configuration objects\n *  \tthat have `basePath` property.\n * @param {string} [basePathData.basePath] Namespaced path to which `relativeFilePath` is relative.\n * @param {PathImpl} [basePathData.path] Path-handling implementation.\n * @returns {boolean} True if the path should be ignored and false if not.\n */\nfunction shouldIgnorePath(\n\tconfigs,\n\tfilePath,\n\trelativeFilePath,\n\t{ basePath, path } = {},\n) {\n\tlet shouldIgnore = false;\n\n\tfor (const config of configs) {\n\t\tlet relativeFilePathToCheck = relativeFilePath;\n\t\tif (config.basePath) {\n\t\t\trelativeFilePathToCheck = toRelativePath(\n\t\t\t\tpath.resolve(basePath, relativeFilePath),\n\t\t\t\tconfig.basePath,\n\t\t\t\tpath,\n\t\t\t);\n\n\t\t\tif (\n\t\t\t\trelativeFilePathToCheck === \"\" ||\n\t\t\t\tEXTERNAL_PATH_REGEX.test(relativeFilePathToCheck)\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (relativeFilePath.endsWith(\"/\")) {\n\t\t\t\trelativeFilePathToCheck += \"/\";\n\t\t\t}\n\t\t}\n\t\tshouldIgnore = config.ignores.reduce((ignored, matcher) => {\n\t\t\tif (!ignored) {\n\t\t\t\tif (typeof matcher === \"function\") {\n\t\t\t\t\treturn matcher(filePath);\n\t\t\t\t}\n\n\t\t\t\t// don't check negated patterns because we're not ignored yet\n\t\t\t\tif (!matcher.startsWith(\"!\")) {\n\t\t\t\t\treturn doMatch(relativeFilePathToCheck, matcher);\n\t\t\t\t}\n\n\t\t\t\t// otherwise we're still not ignored\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// only need to check negated patterns because we're ignored\n\t\t\tif (typeof matcher === \"string\" && matcher.startsWith(\"!\")) {\n\t\t\t\treturn !doMatch(relativeFilePathToCheck, matcher, {\n\t\t\t\t\tflipNegate: true,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn ignored;\n\t\t}, shouldIgnore);\n\t}\n\n\treturn shouldIgnore;\n}\n\n/**\n * Determines if a given file path is matched by a config. If the config\n * has no `files` field, then it matches; otherwise, if a `files` field\n * is present then we match the globs in `files` and exclude any globs in\n * `ignores`.\n * @param {string} filePath The unprocessed file path to check.\n * @param {string} relativeFilePath The path of the file to check relative to the base path,\n * \t\tusing forward slash (`\"/\"`) as a separator.\n * @param {ConfigObject & { files: FilesMatcher[] }} config The config object to check.\n * @returns {boolean} True if the file path is matched by the config,\n *      false if not.\n */\nfunction pathMatches(filePath, relativeFilePath, config) {\n\t// match both strings and functions\n\tfunction match(pattern) {\n\t\tif (isString(pattern)) {\n\t\t\treturn doMatch(relativeFilePath, pattern);\n\t\t}\n\n\t\tif (typeof pattern === \"function\") {\n\t\t\treturn pattern(filePath);\n\t\t}\n\n\t\tthrow new TypeError(`Unexpected matcher type ${pattern}.`);\n\t}\n\n\t// check for all matches to config.files\n\tlet filePathMatchesPattern = config.files.some(pattern => {\n\t\tif (Array.isArray(pattern)) {\n\t\t\treturn pattern.every(match);\n\t\t}\n\n\t\treturn match(pattern);\n\t});\n\n\t/*\n\t * If the file path matches the config.files patterns, then check to see\n\t * if there are any files to ignore.\n\t */\n\tif (filePathMatchesPattern && config.ignores) {\n\t\t/*\n\t\t * Pass config object without `basePath`, because `relativeFilePath` is already\n\t\t * calculated as relative to it.\n\t\t */\n\t\tfilePathMatchesPattern = !shouldIgnorePath(\n\t\t\t[{ ignores: config.ignores }],\n\t\t\tfilePath,\n\t\t\trelativeFilePath,\n\t\t);\n\t}\n\n\treturn filePathMatchesPattern;\n}\n\n/**\n * Ensures that a ConfigArray has been normalized.\n * @param {ConfigArray} configArray The ConfigArray to check.\n * @returns {void}\n * @throws {Error} When the `ConfigArray` is not normalized.\n */\nfunction assertNormalized(configArray) {\n\t// TODO: Throw more verbose error\n\tif (!configArray.isNormalized()) {\n\t\tthrow new Error(\n\t\t\t\"ConfigArray must be normalized to perform this operation.\",\n\t\t);\n\t}\n}\n\n/**\n * Ensures that config types are valid.\n * @param {ReadonlyArray<ExtraConfigType>} extraConfigTypes The config types to check.\n * @returns {void}\n * @throws {TypeError} When the config types array is invalid.\n */\nfunction assertExtraConfigTypes(extraConfigTypes) {\n\tif (!Array.isArray(extraConfigTypes)) {\n\t\tthrow new TypeError(\"extraConfigTypes must be an array.\");\n\t}\n\n\tif (extraConfigTypes.length > 2) {\n\t\tthrow new TypeError(\"extraConfigTypes must contain at most two items.\");\n\t}\n\n\tfor (const configType of extraConfigTypes) {\n\t\tif (!CONFIG_TYPES.has(configType)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Unexpected config type \"${configType}\" in extraConfigTypes. Expected one of: \"array\", \"function\".`,\n\t\t\t);\n\t\t}\n\t}\n}\n\n/**\n * Returns path-handling implementations for Unix or Windows, depending on a given absolute path.\n * @param {string} fileOrDirPath The absolute path to check.\n * @returns {PathImpl} Path-handling implementations for the specified path.\n * @throws {Error} An error is thrown if the specified argument is not an absolute path.\n */\nfunction getPathImpl(fileOrDirPath) {\n\t// Posix absolute paths always start with a slash.\n\tif (fileOrDirPath.startsWith(\"/\")) {\n\t\treturn posixPath__namespace;\n\t}\n\n\t// Windows absolute paths start with a letter followed by a colon and at least one backslash,\n\t// or with two backslashes in the case of UNC paths.\n\t// Forward slashed are automatically normalized to backslashes.\n\tif (/^(?:[A-Za-z]:[/\\\\]|[/\\\\]{2})/u.test(fileOrDirPath)) {\n\t\treturn windowsPath__namespace;\n\t}\n\n\tthrow new Error(\n\t\t`Expected an absolute path but received \"${fileOrDirPath}\"`,\n\t);\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nconst ConfigArraySymbol = {\n\tisNormalized: Symbol(\"isNormalized\"),\n\tconfigCache: Symbol(\"configCache\"),\n\tschema: Symbol(\"schema\"),\n\tfinalizeConfig: Symbol(\"finalizeConfig\"),\n\tpreprocessConfig: Symbol(\"preprocessConfig\"),\n};\n\n// used to store calculate data for faster lookup\nconst dataCache = new WeakMap();\n\n/**\n * Represents an array of config objects and provides method for working with\n * those config objects.\n */\nclass ConfigArray extends Array {\n\t/**\n\t * The namespaced path of the config file directory.\n\t * @type {string}\n\t */\n\t#namespacedBasePath;\n\n\t/**\n\t * Path-handling implementations.\n\t * @type {PathImpl}\n\t */\n\t#path;\n\n\t/**\n\t * Creates a new instance of ConfigArray.\n\t * @param {Iterable|Function|Object} configs An iterable yielding config\n\t *      objects, or a config function, or a config object.\n\t * @param {Object} options The options for the ConfigArray.\n\t * @param {string} [options.basePath=\"/\"] The absolute path of the config file directory.\n\t * \t\tDefaults to `\"/\"`.\n\t * @param {boolean} [options.normalized=false] Flag indicating if the\n\t *      configs have already been normalized.\n\t * @param {ObjectDefinition} [options.schema] The additional schema\n\t *      definitions to use for the ConfigArray schema.\n\t * @param {ReadonlyArray<ExtraConfigType>} [options.extraConfigTypes] List of config types supported.\n\t * @throws {TypeError} When the `basePath` is not a non-empty string,\n\t */\n\tconstructor(\n\t\tconfigs,\n\t\t{\n\t\t\tbasePath = \"/\",\n\t\t\tnormalized = false,\n\t\t\tschema: customSchema,\n\t\t\textraConfigTypes = [],\n\t\t} = {},\n\t) {\n\t\tsuper();\n\n\t\t/**\n\t\t * Tracks if the array has been normalized.\n\t\t * @property isNormalized\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\tthis[ConfigArraySymbol.isNormalized] = normalized;\n\n\t\t/**\n\t\t * The schema used for validating and merging configs.\n\t\t * @property schema\n\t\t * @type {ObjectSchemaInstance}\n\t\t * @private\n\t\t */\n\t\tthis[ConfigArraySymbol.schema] = new objectSchema.ObjectSchema(\n\t\t\tObject.assign({}, customSchema, baseSchema),\n\t\t);\n\n\t\tif (!isString(basePath) || !basePath) {\n\t\t\tthrow new TypeError(\"basePath must be a non-empty string\");\n\t\t}\n\n\t\t/**\n\t\t * The path of the config file that this array was loaded from.\n\t\t * This is used to calculate filename matches.\n\t\t * @property basePath\n\t\t * @type {string}\n\t\t */\n\t\tthis.basePath = basePath;\n\n\t\tassertExtraConfigTypes(extraConfigTypes);\n\n\t\t/**\n\t\t * The supported config types.\n\t\t * @type {ReadonlyArray<ExtraConfigType>}\n\t\t */\n\t\tthis.extraConfigTypes = [...extraConfigTypes];\n\t\tObject.freeze(this.extraConfigTypes);\n\n\t\t/**\n\t\t * A cache to store calculated configs for faster repeat lookup.\n\t\t * @property configCache\n\t\t * @type {Map<string, Object>}\n\t\t * @private\n\t\t */\n\t\tthis[ConfigArraySymbol.configCache] = new Map();\n\n\t\t// init cache\n\t\tdataCache.set(this, {\n\t\t\texplicitMatches: new Map(),\n\t\t\tdirectoryMatches: new Map(),\n\t\t\tfiles: undefined,\n\t\t\tignores: undefined,\n\t\t});\n\n\t\t// load the configs into this array\n\t\tif (Array.isArray(configs)) {\n\t\t\tthis.push(...configs);\n\t\t} else {\n\t\t\tthis.push(configs);\n\t\t}\n\n\t\t// select path-handling implementations depending on the base path\n\t\tthis.#path = getPathImpl(basePath);\n\n\t\t// On Windows, `path.relative()` returns an absolute path when given two paths on different drives.\n\t\t// The namespaced base path is useful to make sure that calculated relative paths are always relative.\n\t\t// On Unix, it is identical to the base path.\n\t\tthis.#namespacedBasePath = this.#path.toNamespacedPath(basePath);\n\t}\n\n\t/**\n\t * Prevent normal array methods from creating a new `ConfigArray` instance.\n\t * This is to ensure that methods such as `slice()` won't try to create a\n\t * new instance of `ConfigArray` behind the scenes as doing so may throw\n\t * an error due to the different constructor signature.\n\t * @type {ArrayConstructor} The `Array` constructor.\n\t */\n\tstatic get [Symbol.species]() {\n\t\treturn Array;\n\t}\n\n\t/**\n\t * Returns the `files` globs from every config object in the array.\n\t * This can be used to determine which files will be matched by a\n\t * config array or to use as a glob pattern when no patterns are provided\n\t * for a command line interface.\n\t * @returns {Array<FilesMatcher>} An array of matchers.\n\t */\n\tget files() {\n\t\tassertNormalized(this);\n\n\t\t// if this data has been cached, retrieve it\n\t\tconst cache = dataCache.get(this);\n\n\t\tif (cache.files) {\n\t\t\treturn cache.files;\n\t\t}\n\n\t\t// otherwise calculate it\n\n\t\tconst result = [];\n\n\t\tfor (const config of this) {\n\t\t\tif (config.files) {\n\t\t\t\tconfig.files.forEach(filePattern => {\n\t\t\t\t\tresult.push(filePattern);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// store result\n\t\tcache.files = result;\n\t\tdataCache.set(this, cache);\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Returns ignore matchers that should always be ignored regardless of\n\t * the matching `files` fields in any configs. This is necessary to mimic\n\t * the behavior of things like .gitignore and .eslintignore, allowing a\n\t * globbing operation to be faster.\n\t * @returns {Array<{ basePath?: string, name?: string, ignores: FileMatcher[] }>} An array of config objects representing global ignores.\n\t */\n\tget ignores() {\n\t\tassertNormalized(this);\n\n\t\t// if this data has been cached, retrieve it\n\t\tconst cache = dataCache.get(this);\n\n\t\tif (cache.ignores) {\n\t\t\treturn cache.ignores;\n\t\t}\n\n\t\t// otherwise calculate it\n\n\t\tconst result = [];\n\n\t\tfor (const config of this) {\n\t\t\t/*\n\t\t\t * We only count ignores if there are no other keys in the object.\n\t\t\t * In this case, it acts like a globally ignored pattern. If there\n\t\t\t * are additional keys, then ignores act like exclusions.\n\t\t\t */\n\t\t\tif (\n\t\t\t\tconfig.ignores &&\n\t\t\t\tObject.keys(config).filter(key => !META_FIELDS.has(key))\n\t\t\t\t\t.length === 1\n\t\t\t) {\n\t\t\t\tresult.push(config);\n\t\t\t}\n\t\t}\n\n\t\t// store result\n\t\tcache.ignores = result;\n\t\tdataCache.set(this, cache);\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Indicates if the config array has been normalized.\n\t * @returns {boolean} True if the config array is normalized, false if not.\n\t */\n\tisNormalized() {\n\t\treturn this[ConfigArraySymbol.isNormalized];\n\t}\n\n\t/**\n\t * Normalizes a config array by flattening embedded arrays and executing\n\t * config functions.\n\t * @param {Object} [context] The context object for config functions.\n\t * @returns {Promise<ConfigArray>} The current ConfigArray instance.\n\t */\n\tasync normalize(context = {}) {\n\t\tif (!this.isNormalized()) {\n\t\t\tconst normalizedConfigs = await normalize(\n\t\t\t\tthis,\n\t\t\t\tcontext,\n\t\t\t\tthis.extraConfigTypes,\n\t\t\t\tthis.#namespacedBasePath,\n\t\t\t\tthis.#path,\n\t\t\t);\n\t\t\tthis.length = 0;\n\t\t\tthis.push(\n\t\t\t\t...normalizedConfigs.map(\n\t\t\t\t\tthis[ConfigArraySymbol.preprocessConfig].bind(this),\n\t\t\t\t),\n\t\t\t);\n\t\t\tthis.forEach(assertValidBaseConfig);\n\t\t\tthis[ConfigArraySymbol.isNormalized] = true;\n\n\t\t\t// prevent further changes\n\t\t\tObject.freeze(this);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Normalizes a config array by flattening embedded arrays and executing\n\t * config functions.\n\t * @param {Object} [context] The context object for config functions.\n\t * @returns {ConfigArray} The current ConfigArray instance.\n\t */\n\tnormalizeSync(context = {}) {\n\t\tif (!this.isNormalized()) {\n\t\t\tconst normalizedConfigs = normalizeSync(\n\t\t\t\tthis,\n\t\t\t\tcontext,\n\t\t\t\tthis.extraConfigTypes,\n\t\t\t\tthis.#namespacedBasePath,\n\t\t\t\tthis.#path,\n\t\t\t);\n\t\t\tthis.length = 0;\n\t\t\tthis.push(\n\t\t\t\t...normalizedConfigs.map(\n\t\t\t\t\tthis[ConfigArraySymbol.preprocessConfig].bind(this),\n\t\t\t\t),\n\t\t\t);\n\t\t\tthis.forEach(assertValidBaseConfig);\n\t\t\tthis[ConfigArraySymbol.isNormalized] = true;\n\n\t\t\t// prevent further changes\n\t\t\tObject.freeze(this);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/* eslint-disable class-methods-use-this -- Desired as instance methods */\n\n\t/**\n\t * Finalizes the state of a config before being cached and returned by\n\t * `getConfig()`. Does nothing by default but is provided to be\n\t * overridden by subclasses as necessary.\n\t * @param {Object} config The config to finalize.\n\t * @returns {Object} The finalized config.\n\t */\n\t// Cast key to `never` to prevent TypeScript from adding the signature `[x: symbol]: (config: any) => any` to the type of the class.\n\t[/** @type {never} */ (ConfigArraySymbol.finalizeConfig)](config) {\n\t\treturn config;\n\t}\n\n\t/**\n\t * Preprocesses a config during the normalization process. This is the\n\t * method to override if you want to convert an array item before it is\n\t * validated for the first time. For example, if you want to replace a\n\t * string with an object, this is the method to override.\n\t * @param {Object} config The config to preprocess.\n\t * @returns {Object} The config to use in place of the argument.\n\t */\n\t// Cast key to `never` to prevent TypeScript from adding the signature `[x: symbol]: (config: any) => any` to the type of the class.\n\t[/** @type {never} */ (ConfigArraySymbol.preprocessConfig)](config) {\n\t\treturn config;\n\t}\n\n\t/* eslint-enable class-methods-use-this -- Desired as instance methods */\n\n\t/**\n\t * Returns the config object for a given file path and a status that can be used to determine why a file has no config.\n\t * @param {string} filePath The path of a file to get a config for.\n\t * @returns {{ config?: Object, status: \"ignored\"|\"external\"|\"unconfigured\"|\"matched\" }}\n\t * An object with an optional property `config` and property `status`.\n\t * `config` is the config object for the specified file as returned by {@linkcode ConfigArray.getConfig},\n\t * `status` a is one of the constants returned by {@linkcode ConfigArray.getConfigStatus}.\n\t */\n\tgetConfigWithStatus(filePath) {\n\t\tassertNormalized(this);\n\n\t\tconst cache = this[ConfigArraySymbol.configCache];\n\n\t\t// first check the cache for a filename match to avoid duplicate work\n\t\tif (cache.has(filePath)) {\n\t\t\treturn cache.get(filePath);\n\t\t}\n\n\t\t// check to see if the file is outside the base path\n\n\t\tconst relativeToBaseFilePath = toRelativePath(\n\t\t\tfilePath,\n\t\t\tthis.#namespacedBasePath,\n\t\t\tthis.#path,\n\t\t);\n\n\t\tif (EXTERNAL_PATH_REGEX.test(relativeToBaseFilePath)) {\n\t\t\tdebug(`No config for file ${filePath} outside of base path`);\n\n\t\t\t// cache and return result\n\t\t\tcache.set(filePath, CONFIG_WITH_STATUS_EXTERNAL);\n\t\t\treturn CONFIG_WITH_STATUS_EXTERNAL;\n\t\t}\n\n\t\t// next check to see if the file should be ignored\n\n\t\t// check if this should be ignored due to its directory\n\t\tif (this.isDirectoryIgnored(this.#path.dirname(filePath))) {\n\t\t\tdebug(`Ignoring ${filePath} based on directory pattern`);\n\n\t\t\t// cache and return result\n\t\t\tcache.set(filePath, CONFIG_WITH_STATUS_IGNORED);\n\t\t\treturn CONFIG_WITH_STATUS_IGNORED;\n\t\t}\n\n\t\tif (\n\t\t\tshouldIgnorePath(this.ignores, filePath, relativeToBaseFilePath, {\n\t\t\t\tbasePath: this.#namespacedBasePath,\n\t\t\t\tpath: this.#path,\n\t\t\t})\n\t\t) {\n\t\t\tdebug(`Ignoring ${filePath} based on file pattern`);\n\n\t\t\t// cache and return result\n\t\t\tcache.set(filePath, CONFIG_WITH_STATUS_IGNORED);\n\t\t\treturn CONFIG_WITH_STATUS_IGNORED;\n\t\t}\n\n\t\t// filePath isn't automatically ignored, so try to construct config\n\n\t\tconst matchingConfigIndices = [];\n\t\tlet matchFound = false;\n\t\tconst universalPattern = /^\\*$|^!|\\/\\*{1,2}$/u;\n\n\t\tthis.forEach((config, index) => {\n\t\t\tconst relativeFilePath = config.basePath\n\t\t\t\t? toRelativePath(\n\t\t\t\t\t\tthis.#path.resolve(this.#namespacedBasePath, filePath),\n\t\t\t\t\t\tconfig.basePath,\n\t\t\t\t\t\tthis.#path,\n\t\t\t\t\t)\n\t\t\t\t: relativeToBaseFilePath;\n\n\t\t\tif (config.basePath && EXTERNAL_PATH_REGEX.test(relativeFilePath)) {\n\t\t\t\tdebug(\n\t\t\t\t\t`Skipped config found for ${filePath} (based on config's base path: ${config.basePath}`,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!config.files) {\n\t\t\t\tif (!config.ignores) {\n\t\t\t\t\tdebug(`Universal config found for ${filePath}`);\n\t\t\t\t\tmatchingConfigIndices.push(index);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tObject.keys(config).filter(key => !META_FIELDS.has(key))\n\t\t\t\t\t\t.length === 1\n\t\t\t\t) {\n\t\t\t\t\tdebug(\n\t\t\t\t\t\t`Skipped config found for ${filePath} (global ignores)`,\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * Pass config object without `basePath`, because `relativeFilePath` is already\n\t\t\t\t * calculated as relative to it.\n\t\t\t\t */\n\t\t\t\tif (\n\t\t\t\t\tshouldIgnorePath(\n\t\t\t\t\t\t[{ ignores: config.ignores }],\n\t\t\t\t\t\tfilePath,\n\t\t\t\t\t\trelativeFilePath,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tdebug(\n\t\t\t\t\t\t`Skipped config found for ${filePath} (based on ignores: ${config.ignores})`,\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tdebug(\n\t\t\t\t\t`Matching config found for ${filePath} (based on ignores: ${config.ignores})`,\n\t\t\t\t);\n\t\t\t\tmatchingConfigIndices.push(index);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * If a config has a files pattern * or patterns ending in /** or /*,\n\t\t\t * and the filePath only matches those patterns, then the config is only\n\t\t\t * applied if there is another config where the filePath matches\n\t\t\t * a file with a specific extensions such as *.js.\n\t\t\t */\n\n\t\t\tconst nonUniversalFiles = [];\n\t\t\tconst universalFiles = config.files.filter(element => {\n\t\t\t\tif (Array.isArray(element)) {\n\t\t\t\t\t/*\n\t\t\t\t\t * filePath matches an element that is an array only if it matches\n\t\t\t\t\t * all patterns in it (AND operation). Therefore, if there is at least\n\t\t\t\t\t * one non-universal pattern in the array, and filePath matches the array,\n\t\t\t\t\t * then we know for sure that filePath matches at least one non-universal\n\t\t\t\t\t * pattern, so we can consider the entire array to be non-universal.\n\t\t\t\t\t * In other words, all patterns in the array need to be universal\n\t\t\t\t\t * for it to be considered universal.\n\t\t\t\t\t */\n\t\t\t\t\tif (\n\t\t\t\t\t\telement.every(pattern => universalPattern.test(pattern))\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tnonUniversalFiles.push(element);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// element is a string\n\n\t\t\t\tif (universalPattern.test(element)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tnonUniversalFiles.push(element);\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\t// universal patterns were found so we need to check the config twice\n\t\t\tif (universalFiles.length) {\n\t\t\t\tdebug(\"Universal files patterns found. Checking carefully.\");\n\n\t\t\t\t// check that the config matches without the non-universal files first\n\t\t\t\tif (\n\t\t\t\t\tnonUniversalFiles.length &&\n\t\t\t\t\tpathMatches(filePath, relativeFilePath, {\n\t\t\t\t\t\tfiles: nonUniversalFiles,\n\t\t\t\t\t\tignores: config.ignores,\n\t\t\t\t\t})\n\t\t\t\t) {\n\t\t\t\t\tdebug(`Matching config found for ${filePath}`);\n\t\t\t\t\tmatchingConfigIndices.push(index);\n\t\t\t\t\tmatchFound = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// if there wasn't a match then check if it matches with universal files\n\t\t\t\tif (\n\t\t\t\t\tuniversalFiles.length &&\n\t\t\t\t\tpathMatches(filePath, relativeFilePath, {\n\t\t\t\t\t\tfiles: universalFiles,\n\t\t\t\t\t\tignores: config.ignores,\n\t\t\t\t\t})\n\t\t\t\t) {\n\t\t\t\t\tdebug(`Matching config found for ${filePath}`);\n\t\t\t\t\tmatchingConfigIndices.push(index);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// if we make here, then there was no match\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// the normal case\n\t\t\tif (pathMatches(filePath, relativeFilePath, config)) {\n\t\t\t\tdebug(`Matching config found for ${filePath}`);\n\t\t\t\tmatchingConfigIndices.push(index);\n\t\t\t\tmatchFound = true;\n\t\t\t}\n\t\t});\n\n\t\t// if matching both files and ignores, there will be no config to create\n\t\tif (!matchFound) {\n\t\t\tdebug(`No matching configs found for ${filePath}`);\n\n\t\t\t// cache and return result\n\t\t\tcache.set(filePath, CONFIG_WITH_STATUS_UNCONFIGURED);\n\t\t\treturn CONFIG_WITH_STATUS_UNCONFIGURED;\n\t\t}\n\n\t\t// check to see if there is a config cached by indices\n\t\tconst indicesKey = matchingConfigIndices.toString();\n\t\tlet configWithStatus = cache.get(indicesKey);\n\n\t\tif (configWithStatus) {\n\t\t\t// also store for filename for faster lookup next time\n\t\t\tcache.set(filePath, configWithStatus);\n\n\t\t\treturn configWithStatus;\n\t\t}\n\n\t\t// otherwise construct the config\n\n\t\t// eslint-disable-next-line array-callback-return, consistent-return -- rethrowConfigError always throws an error\n\t\tlet finalConfig = matchingConfigIndices.reduce((result, index) => {\n\t\t\ttry {\n\t\t\t\treturn this[ConfigArraySymbol.schema].merge(\n\t\t\t\t\tresult,\n\t\t\t\t\tthis[index],\n\t\t\t\t);\n\t\t\t} catch (validationError) {\n\t\t\t\trethrowConfigError(this[index], index, validationError);\n\t\t\t}\n\t\t}, {});\n\n\t\tfinalConfig = this[ConfigArraySymbol.finalizeConfig](finalConfig);\n\n\t\tconfigWithStatus = Object.freeze({\n\t\t\tconfig: finalConfig,\n\t\t\tstatus: \"matched\",\n\t\t});\n\t\tcache.set(filePath, configWithStatus);\n\t\tcache.set(indicesKey, configWithStatus);\n\n\t\treturn configWithStatus;\n\t}\n\n\t/**\n\t * Returns the config object for a given file path.\n\t * @param {string} filePath The path of a file to get a config for.\n\t * @returns {Object|undefined} The config object for this file or `undefined`.\n\t */\n\tgetConfig(filePath) {\n\t\treturn this.getConfigWithStatus(filePath).config;\n\t}\n\n\t/**\n\t * Determines whether a file has a config or why it doesn't.\n\t * @param {string} filePath The path of the file to check.\n\t * @returns {\"ignored\"|\"external\"|\"unconfigured\"|\"matched\"} One of the following values:\n\t * * `\"ignored\"`: the file is ignored\n\t * * `\"external\"`: the file is outside the base path\n\t * * `\"unconfigured\"`: the file is not matched by any config\n\t * * `\"matched\"`: the file has a matching config\n\t */\n\tgetConfigStatus(filePath) {\n\t\treturn this.getConfigWithStatus(filePath).status;\n\t}\n\n\t/**\n\t * Determines if the given filepath is ignored based on the configs.\n\t * @param {string} filePath The path of a file to check.\n\t * @returns {boolean} True if the path is ignored, false if not.\n\t * @deprecated Use `isFileIgnored` instead.\n\t */\n\tisIgnored(filePath) {\n\t\treturn this.isFileIgnored(filePath);\n\t}\n\n\t/**\n\t * Determines if the given filepath is ignored based on the configs.\n\t * @param {string} filePath The path of a file to check.\n\t * @returns {boolean} True if the path is ignored, false if not.\n\t */\n\tisFileIgnored(filePath) {\n\t\treturn this.getConfigStatus(filePath) === \"ignored\";\n\t}\n\n\t/**\n\t * Determines if the given directory is ignored based on the configs.\n\t * This checks only default `ignores` that don't have `files` in the\n\t * same config. A pattern such as `/foo` be considered to ignore the directory\n\t * while a pattern such as `/foo/**` is not considered to ignore the\n\t * directory because it is matching files.\n\t * @param {string} directoryPath The path of a directory to check.\n\t * @returns {boolean} True if the directory is ignored, false if not. Will\n\t * \t\treturn true for any directory that is not inside of `basePath`.\n\t * @throws {Error} When the `ConfigArray` is not normalized.\n\t */\n\tisDirectoryIgnored(directoryPath) {\n\t\tassertNormalized(this);\n\n\t\tconst relativeDirectoryPath = toRelativePath(\n\t\t\tdirectoryPath,\n\t\t\tthis.#namespacedBasePath,\n\t\t\tthis.#path,\n\t\t);\n\n\t\t// basePath directory can never be ignored\n\t\tif (relativeDirectoryPath === \"\") {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (EXTERNAL_PATH_REGEX.test(relativeDirectoryPath)) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// first check the cache\n\t\tconst cache = dataCache.get(this).directoryMatches;\n\n\t\tif (cache.has(relativeDirectoryPath)) {\n\t\t\treturn cache.get(relativeDirectoryPath);\n\t\t}\n\n\t\tconst directoryParts = relativeDirectoryPath.split(\"/\");\n\t\tlet relativeDirectoryToCheck = \"\";\n\t\tlet result;\n\n\t\t/*\n\t\t * In order to get the correct gitignore-style ignores, where an\n\t\t * ignored parent directory cannot have any descendants unignored,\n\t\t * we need to check every directory starting at the parent all\n\t\t * the way down to the actual requested directory.\n\t\t *\n\t\t * We aggressively cache all of this info to make sure we don't\n\t\t * have to recalculate everything for every call.\n\t\t */\n\t\tdo {\n\t\t\trelativeDirectoryToCheck += `${directoryParts.shift()}/`;\n\n\t\t\tresult = shouldIgnorePath(\n\t\t\t\tthis.ignores,\n\t\t\t\tthis.#path.join(this.basePath, relativeDirectoryToCheck),\n\t\t\t\trelativeDirectoryToCheck,\n\t\t\t\t{\n\t\t\t\t\tbasePath: this.#namespacedBasePath,\n\t\t\t\t\tpath: this.#path,\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tcache.set(relativeDirectoryToCheck, result);\n\t\t} while (!result && directoryParts.length);\n\n\t\t// also cache the result for the requested path\n\t\tcache.set(relativeDirectoryPath, result);\n\n\t\treturn result;\n\t}\n}\n\nObject.defineProperty(exports, \"ObjectSchema\", {\n\tenumerable: true,\n\tget: function () { return objectSchema.ObjectSchema; }\n});\nexports.ConfigArray = ConfigArray;\nexports.ConfigArraySymbol = ConfigArraySymbol;\n", "import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport ws from \"./schemes/ws\";\nSCHEMES[ws.scheme] = ws;\n\nimport wss from \"./schemes/wss\";\nSCHEMES[wss.scheme] = wss;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler<UUIDComponents, URIOptions, URNComponents> = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler<URNComponents,URNOptions> = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array<string>,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\";  //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$));  //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\";  //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$);  //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$));  //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\";  //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler<MailtoComponents> =  {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport ws from \"./ws\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"wss\",\n\tdomainHost : ws.domainHost,\n\tparse : ws.parse,\n\tserialize : ws.serialize\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nexport interface WSComponents extends URIComponents {\n\tresourceName?: string;\n\tsecure?: boolean;\n}\n\nfunction isSecure(wsComponents:WSComponents):boolean {\n\treturn typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === \"wss\";\n}\n\n//RFC 6455\nconst handler:URISchemeHandler = {\n\tscheme : \"ws\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):WSComponents {\n\t\tconst wsComponents = components as WSComponents;\n\n\t\t//indicate if the secure flag is set\n\t\twsComponents.secure = isSecure(wsComponents);\n\n\t\t//construct resouce name\n\t\twsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');\n\t\twsComponents.path = undefined;\n\t\twsComponents.query = undefined;\n\n\t\treturn wsComponents;\n\t},\n\n\tserialize : function (wsComponents:WSComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === \"\") {\n\t\t\twsComponents.port = undefined;\n\t\t}\n\n\t\t//ensure scheme matches secure flag\n\t\tif (typeof wsComponents.secure === 'boolean') {\n\t\t\twsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws');\n\t\t\twsComponents.secure = undefined;\n\t\t}\n\n\t\t//reconstruct path from resource name\n\t\tif (wsComponents.resourceName) {\n\t\t\tconst [path, query] = wsComponents.resourceName.split('?');\n\t\t\twsComponents.path = (path && path !== '/' ? path : undefined);\n\t\t\twsComponents.query = query;\n\t\t\twsComponents.resourceName = undefined;\n\t\t}\n\n\t\t//forbid fragment component\n\t\twsComponents.fragment = undefined;\n\n\t\treturn wsComponents;\n\t}\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\tconst secure = String(components.scheme).toLowerCase() === \"https\";\n\n\t\t//normalize the default port\n\t\tif (components.port === (secure ? 443 : 80) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;", "/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n *    1. Redistributions of source code must retain the above copyright notice, this list of\n *       conditions and the following disclaimer.\n *\n *    2. Redistributions in binary form must reproduce the above copyright notice, this list\n *       of conditions and the following disclaimer in the documentation and/or other materials\n *       provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler<Components extends URIComponents = URIComponents, Options extends URIOptions = URIOptions, ParentComponents extends URIComponents = URIComponents> {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array<string>(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce<Array<{index:number,length:number}>>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = (<RegExpMatchArray>(\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else {  //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\" || typeof components.port === \"string\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(String(components.port));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array<string> = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\");  //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\");  //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options);  //normalize base components\n\t\trelative = parse(serialize(relative, options), options);  //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(<URIComponents>uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(<URIComponents>uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(<URIComponents>uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n", "'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t//  0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n", "import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n", "import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"),  //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)),  //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\",  //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\",  //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$),  //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp(                                                            subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), //                           6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp(                                                 \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), //                      \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp(                                 H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[               h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" +        H16$ + \"\\\\:\"          + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\"    h16 \":\"   ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\"                                + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\"              ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\"                                + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\"              h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\"                                       ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"),  //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$),  //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$),  //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"),  //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"),  //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$),  //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$),  //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\")  //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n", "export function merge(...sets:Array<string>):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array<any> {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\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\n// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nmodule.exports = function ucs2length(str) {\n  var length = 0\n    , len = str.length\n    , pos = 0\n    , value;\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", "'use strict';\n\n\nmodule.exports = {\n  copy: copy,\n  checkDataType: checkDataType,\n  checkDataTypes: checkDataTypes,\n  coerceToTypes: coerceToTypes,\n  toHash: toHash,\n  getProperty: getProperty,\n  escapeQuotes: escapeQuotes,\n  equal: require('fast-deep-equal'),\n  ucs2length: require('./ucs2length'),\n  varOccurences: varOccurences,\n  varReplace: varReplace,\n  schemaHasRules: schemaHasRules,\n  schemaHasRulesExcept: schemaHasRulesExcept,\n  schemaUnknownRules: schemaUnknownRules,\n  toQuotedString: toQuotedString,\n  getPathExpr: getPathExpr,\n  getPath: getPath,\n  getData: getData,\n  unescapeFragment: unescapeFragment,\n  unescapeJsonPointer: unescapeJsonPointer,\n  escapeFragment: escapeFragment,\n  escapeJsonPointer: escapeJsonPointer\n};\n\n\nfunction copy(o, to) {\n  to = to || {};\n  for (var key in o) to[key] = o[key];\n  return to;\n}\n\n\nfunction checkDataType(dataType, data, strictNumbers, negate) {\n  var EQUAL = negate ? ' !== ' : ' === '\n    , AND = negate ? ' || ' : ' && '\n    , OK = negate ? '!' : ''\n    , NOT = negate ? '' : '!';\n  switch (dataType) {\n    case 'null': return data + EQUAL + 'null';\n    case 'array': return OK + 'Array.isArray(' + data + ')';\n    case 'object': return '(' + OK + data + AND +\n                          'typeof ' + data + EQUAL + '\"object\"' + AND +\n                          NOT + 'Array.isArray(' + data + '))';\n    case 'integer': return '(typeof ' + data + EQUAL + '\"number\"' + AND +\n                           NOT + '(' + data + ' % 1)' +\n                           AND + data + EQUAL + data +\n                           (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n    case 'number': return '(typeof ' + data + EQUAL + '\"' + dataType + '\"' +\n                          (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n    default: return 'typeof ' + data + EQUAL + '\"' + dataType + '\"';\n  }\n}\n\n\nfunction checkDataTypes(dataTypes, data, strictNumbers) {\n  switch (dataTypes.length) {\n    case 1: return checkDataType(dataTypes[0], data, strictNumbers, true);\n    default:\n      var code = '';\n      var types = toHash(dataTypes);\n      if (types.array && types.object) {\n        code = types.null ? '(': '(!' + data + ' || ';\n        code += 'typeof ' + data + ' !== \"object\")';\n        delete types.null;\n        delete types.array;\n        delete types.object;\n      }\n      if (types.number) delete types.integer;\n      for (var t in types)\n        code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true);\n\n      return code;\n  }\n}\n\n\nvar COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);\nfunction coerceToTypes(optionCoerceTypes, dataTypes) {\n  if (Array.isArray(dataTypes)) {\n    var types = [];\n    for (var i=0; i<dataTypes.length; i++) {\n      var t = dataTypes[i];\n      if (COERCE_TO_TYPES[t]) types[types.length] = t;\n      else if (optionCoerceTypes === 'array' && t === 'array') types[types.length] = t;\n    }\n    if (types.length) return types;\n  } else if (COERCE_TO_TYPES[dataTypes]) {\n    return [dataTypes];\n  } else if (optionCoerceTypes === 'array' && dataTypes === 'array') {\n    return ['array'];\n  }\n}\n\n\nfunction toHash(arr) {\n  var hash = {};\n  for (var i=0; i<arr.length; i++) hash[arr[i]] = true;\n  return hash;\n}\n\n\nvar IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;\nvar SINGLE_QUOTE = /'|\\\\/g;\nfunction getProperty(key) {\n  return typeof key == 'number'\n          ? '[' + key + ']'\n          : IDENTIFIER.test(key)\n            ? '.' + key\n            : \"['\" + escapeQuotes(key) + \"']\";\n}\n\n\nfunction escapeQuotes(str) {\n  return str.replace(SINGLE_QUOTE, '\\\\$&')\n            .replace(/\\n/g, '\\\\n')\n            .replace(/\\r/g, '\\\\r')\n            .replace(/\\f/g, '\\\\f')\n            .replace(/\\t/g, '\\\\t');\n}\n\n\nfunction varOccurences(str, dataVar) {\n  dataVar += '[^0-9]';\n  var matches = str.match(new RegExp(dataVar, 'g'));\n  return matches ? matches.length : 0;\n}\n\n\nfunction varReplace(str, dataVar, expr) {\n  dataVar += '([^0-9])';\n  expr = expr.replace(/\\$/g, '$$$$');\n  return str.replace(new RegExp(dataVar, 'g'), expr + '$1');\n}\n\n\nfunction schemaHasRules(schema, rules) {\n  if (typeof schema == 'boolean') return !schema;\n  for (var key in schema) if (rules[key]) return true;\n}\n\n\nfunction schemaHasRulesExcept(schema, rules, exceptKeyword) {\n  if (typeof schema == 'boolean') return !schema && exceptKeyword != 'not';\n  for (var key in schema) if (key != exceptKeyword && rules[key]) return true;\n}\n\n\nfunction schemaUnknownRules(schema, rules) {\n  if (typeof schema == 'boolean') return;\n  for (var key in schema) if (!rules[key]) return key;\n}\n\n\nfunction toQuotedString(str) {\n  return '\\'' + escapeQuotes(str) + '\\'';\n}\n\n\nfunction getPathExpr(currentPath, expr, jsonPointers, isNumber) {\n  var path = jsonPointers // false by default\n              ? '\\'/\\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \\'~0\\').replace(/\\\\//g, \\'~1\\')')\n              : (isNumber ? '\\'[\\' + ' + expr + ' + \\']\\'' : '\\'[\\\\\\'\\' + ' + expr + ' + \\'\\\\\\']\\'');\n  return joinPaths(currentPath, path);\n}\n\n\nfunction getPath(currentPath, prop, jsonPointers) {\n  var path = jsonPointers // false by default\n              ? toQuotedString('/' + escapeJsonPointer(prop))\n              : toQuotedString(getProperty(prop));\n  return joinPaths(currentPath, path);\n}\n\n\nvar JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/;\nvar RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/;\nfunction getData($data, lvl, paths) {\n  var up, jsonPointer, data, matches;\n  if ($data === '') return 'rootData';\n  if ($data[0] == '/') {\n    if (!JSON_POINTER.test($data)) throw new Error('Invalid JSON-pointer: ' + $data);\n    jsonPointer = $data;\n    data = 'rootData';\n  } else {\n    matches = $data.match(RELATIVE_JSON_POINTER);\n    if (!matches) throw new Error('Invalid JSON-pointer: ' + $data);\n    up = +matches[1];\n    jsonPointer = matches[2];\n    if (jsonPointer == '#') {\n      if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);\n      return paths[lvl - up];\n    }\n\n    if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);\n    data = 'data' + ((lvl - up) || '');\n    if (!jsonPointer) return data;\n  }\n\n  var expr = data;\n  var segments = jsonPointer.split('/');\n  for (var i=0; i<segments.length; i++) {\n    var segment = segments[i];\n    if (segment) {\n      data += getProperty(unescapeJsonPointer(segment));\n      expr += ' && ' + data;\n    }\n  }\n  return expr;\n}\n\n\nfunction joinPaths (a, b) {\n  if (a == '\"\"') return b;\n  return (a + ' + ' + b).replace(/([^\\\\])' \\+ '/g, '$1');\n}\n\n\nfunction unescapeFragment(str) {\n  return unescapeJsonPointer(decodeURIComponent(str));\n}\n\n\nfunction escapeFragment(str) {\n  return encodeURIComponent(escapeJsonPointer(str));\n}\n\n\nfunction escapeJsonPointer(str) {\n  return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n\n\nfunction unescapeJsonPointer(str) {\n  return str.replace(/~1/g, '/').replace(/~0/g, '~');\n}\n", "'use strict';\n\nvar util = require('./util');\n\nmodule.exports = SchemaObject;\n\nfunction SchemaObject(obj) {\n  util.copy(obj, this);\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};\n\ntraverse.arrayKeywords = {\n  items: true,\n  allOf: true,\n  anyOf: true,\n  oneOf: true\n};\n\ntraverse.propsKeywords = {\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", "'use strict';\n\nvar URI = require('uri-js')\n  , equal = require('fast-deep-equal')\n  , util = require('./util')\n  , SchemaObject = require('./schema_obj')\n  , traverse = require('json-schema-traverse');\n\nmodule.exports = resolve;\n\nresolve.normalizeId = normalizeId;\nresolve.fullPath = getFullPath;\nresolve.url = resolveUrl;\nresolve.ids = resolveIds;\nresolve.inlineRef = inlineRef;\nresolve.schema = resolveSchema;\n\n/**\n * [resolve and compile the references ($ref)]\n * @this   Ajv\n * @param  {Function} compile reference to schema compilation funciton (localCompile)\n * @param  {Object} root object with information about the root schema for the current schema\n * @param  {String} ref reference to resolve\n * @return {Object|Function} schema object (if the schema can be inlined) or validation function\n */\nfunction resolve(compile, root, ref) {\n  /* jshint validthis: true */\n  var refVal = this._refs[ref];\n  if (typeof refVal == 'string') {\n    if (this._refs[refVal]) refVal = this._refs[refVal];\n    else return resolve.call(this, compile, root, refVal);\n  }\n\n  refVal = refVal || this._schemas[ref];\n  if (refVal instanceof SchemaObject) {\n    return inlineRef(refVal.schema, this._opts.inlineRefs)\n            ? refVal.schema\n            : refVal.validate || this._compile(refVal);\n  }\n\n  var res = resolveSchema.call(this, root, ref);\n  var schema, v, baseId;\n  if (res) {\n    schema = res.schema;\n    root = res.root;\n    baseId = res.baseId;\n  }\n\n  if (schema instanceof SchemaObject) {\n    v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId);\n  } else if (schema !== undefined) {\n    v = inlineRef(schema, this._opts.inlineRefs)\n        ? schema\n        : compile.call(this, schema, root, undefined, baseId);\n  }\n\n  return v;\n}\n\n\n/**\n * Resolve schema, its root and baseId\n * @this Ajv\n * @param  {Object} root root object with properties schema, refVal, refs\n * @param  {String} ref  reference to resolve\n * @return {Object} object with properties schema, root, baseId\n */\nfunction resolveSchema(root, ref) {\n  /* jshint validthis: true */\n  var p = URI.parse(ref)\n    , refPath = _getFullPath(p)\n    , baseId = getFullPath(this._getId(root.schema));\n  if (Object.keys(root.schema).length === 0 || refPath !== baseId) {\n    var id = normalizeId(refPath);\n    var refVal = this._refs[id];\n    if (typeof refVal == 'string') {\n      return resolveRecursive.call(this, root, refVal, p);\n    } else if (refVal instanceof SchemaObject) {\n      if (!refVal.validate) this._compile(refVal);\n      root = refVal;\n    } else {\n      refVal = this._schemas[id];\n      if (refVal instanceof SchemaObject) {\n        if (!refVal.validate) this._compile(refVal);\n        if (id == normalizeId(ref))\n          return { schema: refVal, root: root, baseId: baseId };\n        root = refVal;\n      } else {\n        return;\n      }\n    }\n    if (!root.schema) return;\n    baseId = getFullPath(this._getId(root.schema));\n  }\n  return getJsonPointer.call(this, p, baseId, root.schema, root);\n}\n\n\n/* @this Ajv */\nfunction resolveRecursive(root, ref, parsedRef) {\n  /* jshint validthis: true */\n  var res = resolveSchema.call(this, root, ref);\n  if (res) {\n    var schema = res.schema;\n    var baseId = res.baseId;\n    root = res.root;\n    var id = this._getId(schema);\n    if (id) baseId = resolveUrl(baseId, id);\n    return getJsonPointer.call(this, parsedRef, baseId, schema, root);\n  }\n}\n\n\nvar PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']);\n/* @this Ajv */\nfunction getJsonPointer(parsedRef, baseId, schema, root) {\n  /* jshint validthis: true */\n  parsedRef.fragment = parsedRef.fragment || '';\n  if (parsedRef.fragment.slice(0,1) != '/') return;\n  var parts = parsedRef.fragment.split('/');\n\n  for (var i = 1; i < parts.length; i++) {\n    var part = parts[i];\n    if (part) {\n      part = util.unescapeFragment(part);\n      schema = schema[part];\n      if (schema === undefined) break;\n      var id;\n      if (!PREVENT_SCOPE_CHANGE[part]) {\n        id = this._getId(schema);\n        if (id) baseId = resolveUrl(baseId, id);\n        if (schema.$ref) {\n          var $ref = resolveUrl(baseId, schema.$ref);\n          var res = resolveSchema.call(this, root, $ref);\n          if (res) {\n            schema = res.schema;\n            root = res.root;\n            baseId = res.baseId;\n          }\n        }\n      }\n    }\n  }\n  if (schema !== undefined && schema !== root.schema)\n    return { schema: schema, root: root, baseId: baseId };\n}\n\n\nvar SIMPLE_INLINED = util.toHash([\n  'type', 'format', 'pattern',\n  'maxLength', 'minLength',\n  'maxProperties', 'minProperties',\n  'maxItems', 'minItems',\n  'maximum', 'minimum',\n  'uniqueItems', 'multipleOf',\n  'required', 'enum'\n]);\nfunction inlineRef(schema, limit) {\n  if (limit === false) return false;\n  if (limit === undefined || limit === true) return checkNoRef(schema);\n  else if (limit) return countKeys(schema) <= limit;\n}\n\n\nfunction checkNoRef(schema) {\n  var item;\n  if (Array.isArray(schema)) {\n    for (var i=0; i<schema.length; i++) {\n      item = schema[i];\n      if (typeof item == 'object' && !checkNoRef(item)) return false;\n    }\n  } else {\n    for (var key in schema) {\n      if (key == '$ref') return false;\n      item = schema[key];\n      if (typeof item == 'object' && !checkNoRef(item)) return false;\n    }\n  }\n  return true;\n}\n\n\nfunction countKeys(schema) {\n  var count = 0, item;\n  if (Array.isArray(schema)) {\n    for (var i=0; i<schema.length; i++) {\n      item = schema[i];\n      if (typeof item == 'object') count += countKeys(item);\n      if (count == Infinity) return Infinity;\n    }\n  } else {\n    for (var key in schema) {\n      if (key == '$ref') return Infinity;\n      if (SIMPLE_INLINED[key]) {\n        count++;\n      } else {\n        item = schema[key];\n        if (typeof item == 'object') count += countKeys(item) + 1;\n        if (count == Infinity) return Infinity;\n      }\n    }\n  }\n  return count;\n}\n\n\nfunction getFullPath(id, normalize) {\n  if (normalize !== false) id = normalizeId(id);\n  var p = URI.parse(id);\n  return _getFullPath(p);\n}\n\n\nfunction _getFullPath(p) {\n  return URI.serialize(p).split('#')[0] + '#';\n}\n\n\nvar TRAILING_SLASH_HASH = /#\\/?$/;\nfunction normalizeId(id) {\n  return id ? id.replace(TRAILING_SLASH_HASH, '') : '';\n}\n\n\nfunction resolveUrl(baseId, id) {\n  id = normalizeId(id);\n  return URI.resolve(baseId, id);\n}\n\n\n/* @this Ajv */\nfunction resolveIds(schema) {\n  var schemaId = normalizeId(this._getId(schema));\n  var baseIds = {'': schemaId};\n  var fullPaths = {'': getFullPath(schemaId, false)};\n  var localRefs = {};\n  var self = this;\n\n  traverse(schema, {allKeys: true}, function(sch, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n    if (jsonPtr === '') return;\n    var id = self._getId(sch);\n    var baseId = baseIds[parentJsonPtr];\n    var fullPath = fullPaths[parentJsonPtr] + '/' + parentKeyword;\n    if (keyIndex !== undefined)\n      fullPath += '/' + (typeof keyIndex == 'number' ? keyIndex : util.escapeFragment(keyIndex));\n\n    if (typeof id == 'string') {\n      id = baseId = normalizeId(baseId ? URI.resolve(baseId, id) : id);\n\n      var refVal = self._refs[id];\n      if (typeof refVal == 'string') refVal = self._refs[refVal];\n      if (refVal && refVal.schema) {\n        if (!equal(sch, refVal.schema))\n          throw new Error('id \"' + id + '\" resolves to more than one schema');\n      } else if (id != normalizeId(fullPath)) {\n        if (id[0] == '#') {\n          if (localRefs[id] && !equal(sch, localRefs[id]))\n            throw new Error('id \"' + id + '\" resolves to more than one schema');\n          localRefs[id] = sch;\n        } else {\n          self._refs[id] = fullPath;\n        }\n      }\n    }\n    baseIds[jsonPtr] = baseId;\n    fullPaths[jsonPtr] = fullPath;\n  });\n\n  return localRefs;\n}\n", "'use strict';\n\nvar resolve = require('./resolve');\n\nmodule.exports = {\n  Validation: errorSubclass(ValidationError),\n  MissingRef: errorSubclass(MissingRefError)\n};\n\n\nfunction ValidationError(errors) {\n  this.message = 'validation failed';\n  this.errors = errors;\n  this.ajv = this.validation = true;\n}\n\n\nMissingRefError.message = function (baseId, ref) {\n  return 'can\\'t resolve reference ' + ref + ' from id ' + baseId;\n};\n\n\nfunction MissingRefError(baseId, ref, message) {\n  this.message = message || MissingRefError.message(baseId, ref);\n  this.missingRef = resolve.url(baseId, ref);\n  this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef));\n}\n\n\nfunction errorSubclass(Subclass) {\n  Subclass.prototype = Object.create(Error.prototype);\n  Subclass.prototype.constructor = Subclass;\n  return Subclass;\n}\n", "'use strict';\n\nmodule.exports = function (data, opts) {\n    if (!opts) opts = {};\n    if (typeof opts === 'function') opts = { cmp: opts };\n    var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n    var cmp = opts.cmp && (function (f) {\n        return function (node) {\n            return function (a, b) {\n                var aobj = { key: a, value: node[a] };\n                var bobj = { key: b, value: node[b] };\n                return f(aobj, bobj);\n            };\n        };\n    })(opts.cmp);\n\n    var seen = [];\n    return (function stringify (node) {\n        if (node && node.toJSON && typeof node.toJSON === 'function') {\n            node = node.toJSON();\n        }\n\n        if (node === undefined) return;\n        if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n        if (typeof node !== 'object') return JSON.stringify(node);\n\n        var i, out;\n        if (Array.isArray(node)) {\n            out = '[';\n            for (i = 0; i < node.length; i++) {\n                if (i) out += ',';\n                out += stringify(node[i]) || 'null';\n            }\n            return out + ']';\n        }\n\n        if (node === null) return 'null';\n\n        if (seen.indexOf(node) !== -1) {\n            if (cycles) return JSON.stringify('__cycle__');\n            throw new TypeError('Converting circular structure to JSON');\n        }\n\n        var seenIndex = seen.push(node) - 1;\n        var keys = Object.keys(node).sort(cmp && cmp(node));\n        out = '';\n        for (i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            var value = stringify(node[key]);\n\n            if (!value) continue;\n            if (out) out += ',';\n            out += JSON.stringify(key) + ':' + value;\n        }\n        seen.splice(seenIndex, 1);\n        return '{' + out + '}';\n    })(data);\n};\n", "'use strict';\nmodule.exports = function generate_validate(it, $keyword, $ruleType) {\n  var out = '';\n  var $async = it.schema.$async === true,\n    $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'),\n    $id = it.self._getId(it.schema);\n  if (it.opts.strictKeywords) {\n    var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords);\n    if ($unknownKwd) {\n      var $keywordsMsg = 'unknown keyword: ' + $unknownKwd;\n      if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg);\n      else throw new Error($keywordsMsg);\n    }\n  }\n  if (it.isTop) {\n    out += ' var validate = ';\n    if ($async) {\n      it.async = true;\n      out += 'async ';\n    }\n    out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \\'use strict\\'; ';\n    if ($id && (it.opts.sourceCode || it.opts.processCode)) {\n      out += ' ' + ('/\\*# sourceURL=' + $id + ' */') + ' ';\n    }\n  }\n  if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) {\n    var $keyword = 'false schema';\n    var $lvl = it.level;\n    var $dataLvl = it.dataLevel;\n    var $schema = it.schema[$keyword];\n    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n    var $breakOnError = !it.opts.allErrors;\n    var $errorKeyword;\n    var $data = 'data' + ($dataLvl || '');\n    var $valid = 'valid' + $lvl;\n    if (it.schema === false) {\n      if (it.isTop) {\n        $breakOnError = true;\n      } else {\n        out += ' var ' + ($valid) + ' = false; ';\n      }\n      var $$outStack = $$outStack || [];\n      $$outStack.push(out);\n      out = ''; /* istanbul ignore else */\n      if (it.createErrors !== false) {\n        out += ' { keyword: \\'' + ($errorKeyword || 'false schema') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n        if (it.opts.messages !== false) {\n          out += ' , message: \\'boolean schema is false\\' ';\n        }\n        if (it.opts.verbose) {\n          out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n        }\n        out += ' } ';\n      } else {\n        out += ' {} ';\n      }\n      var __err = out;\n      out = $$outStack.pop();\n      if (!it.compositeRule && $breakOnError) {\n        /* istanbul ignore if */\n        if (it.async) {\n          out += ' throw new ValidationError([' + (__err) + ']); ';\n        } else {\n          out += ' validate.errors = [' + (__err) + ']; return false; ';\n        }\n      } else {\n        out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n      }\n    } else {\n      if (it.isTop) {\n        if ($async) {\n          out += ' return data; ';\n        } else {\n          out += ' validate.errors = null; return true; ';\n        }\n      } else {\n        out += ' var ' + ($valid) + ' = true; ';\n      }\n    }\n    if (it.isTop) {\n      out += ' }; return validate; ';\n    }\n    return out;\n  }\n  if (it.isTop) {\n    var $top = it.isTop,\n      $lvl = it.level = 0,\n      $dataLvl = it.dataLevel = 0,\n      $data = 'data';\n    it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema));\n    it.baseId = it.baseId || it.rootId;\n    delete it.isTop;\n    it.dataPathArr = [\"\"];\n    if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) {\n      var $defaultMsg = 'default is ignored in the schema root';\n      if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n      else throw new Error($defaultMsg);\n    }\n    out += ' var vErrors = null; ';\n    out += ' var errors = 0;     ';\n    out += ' if (rootData === undefined) rootData = data; ';\n  } else {\n    var $lvl = it.level,\n      $dataLvl = it.dataLevel,\n      $data = 'data' + ($dataLvl || '');\n    if ($id) it.baseId = it.resolve.url(it.baseId, $id);\n    if ($async && !it.async) throw new Error('async schema in sync schema');\n    out += ' var errs_' + ($lvl) + ' = errors;';\n  }\n  var $valid = 'valid' + $lvl,\n    $breakOnError = !it.opts.allErrors,\n    $closingBraces1 = '',\n    $closingBraces2 = '';\n  var $errorKeyword;\n  var $typeSchema = it.schema.type,\n    $typeIsArray = Array.isArray($typeSchema);\n  if ($typeSchema && it.opts.nullable && it.schema.nullable === true) {\n    if ($typeIsArray) {\n      if ($typeSchema.indexOf('null') == -1) $typeSchema = $typeSchema.concat('null');\n    } else if ($typeSchema != 'null') {\n      $typeSchema = [$typeSchema, 'null'];\n      $typeIsArray = true;\n    }\n  }\n  if ($typeIsArray && $typeSchema.length == 1) {\n    $typeSchema = $typeSchema[0];\n    $typeIsArray = false;\n  }\n  if (it.schema.$ref && $refKeywords) {\n    if (it.opts.extendRefs == 'fail') {\n      throw new Error('$ref: validation keywords used in schema at path \"' + it.errSchemaPath + '\" (see option extendRefs)');\n    } else if (it.opts.extendRefs !== true) {\n      $refKeywords = false;\n      it.logger.warn('$ref: keywords ignored in schema at path \"' + it.errSchemaPath + '\"');\n    }\n  }\n  if (it.schema.$comment && it.opts.$comment) {\n    out += ' ' + (it.RULES.all.$comment.code(it, '$comment'));\n  }\n  if ($typeSchema) {\n    if (it.opts.coerceTypes) {\n      var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema);\n    }\n    var $rulesGroup = it.RULES.types[$typeSchema];\n    if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) {\n      var $schemaPath = it.schemaPath + '.type',\n        $errSchemaPath = it.errSchemaPath + '/type';\n      var $schemaPath = it.schemaPath + '.type',\n        $errSchemaPath = it.errSchemaPath + '/type',\n        $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType';\n      out += ' if (' + (it.util[$method]($typeSchema, $data, it.opts.strictNumbers, true)) + ') { ';\n      if ($coerceToTypes) {\n        var $dataType = 'dataType' + $lvl,\n          $coerced = 'coerced' + $lvl;\n        out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; var ' + ($coerced) + ' = undefined; ';\n        if (it.opts.coerceTypes == 'array') {\n          out += ' if (' + ($dataType) + ' == \\'object\\' && Array.isArray(' + ($data) + ') && ' + ($data) + '.length == 1) { ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; if (' + (it.util.checkDataType(it.schema.type, $data, it.opts.strictNumbers)) + ') ' + ($coerced) + ' = ' + ($data) + '; } ';\n        }\n        out += ' if (' + ($coerced) + ' !== undefined) ; ';\n        var arr1 = $coerceToTypes;\n        if (arr1) {\n          var $type, $i = -1,\n            l1 = arr1.length - 1;\n          while ($i < l1) {\n            $type = arr1[$i += 1];\n            if ($type == 'string') {\n              out += ' else if (' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\') ' + ($coerced) + ' = \\'\\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \\'\\'; ';\n            } else if ($type == 'number' || $type == 'integer') {\n              out += ' else if (' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \\'string\\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' ';\n              if ($type == 'integer') {\n                out += ' && !(' + ($data) + ' % 1)';\n              }\n              out += ')) ' + ($coerced) + ' = +' + ($data) + '; ';\n            } else if ($type == 'boolean') {\n              out += ' else if (' + ($data) + ' === \\'false\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \\'true\\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; ';\n            } else if ($type == 'null') {\n              out += ' else if (' + ($data) + ' === \\'\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; ';\n            } else if (it.opts.coerceTypes == 'array' && $type == 'array') {\n              out += ' else if (' + ($dataType) + ' == \\'string\\' || ' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; ';\n            }\n          }\n        }\n        out += ' else {   ';\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n          if ($typeIsArray) {\n            out += '' + ($typeSchema.join(\",\"));\n          } else {\n            out += '' + ($typeSchema);\n          }\n          out += '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'should be ';\n            if ($typeIsArray) {\n              out += '' + ($typeSchema.join(\",\"));\n            } else {\n              out += '' + ($typeSchema);\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) {\n          /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n        out += ' } if (' + ($coerced) + ' !== undefined) {  ';\n        var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n          $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n        out += ' ' + ($data) + ' = ' + ($coerced) + '; ';\n        if (!$dataLvl) {\n          out += 'if (' + ($parentData) + ' !== undefined)';\n        }\n        out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } ';\n      } else {\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n          if ($typeIsArray) {\n            out += '' + ($typeSchema.join(\",\"));\n          } else {\n            out += '' + ($typeSchema);\n          }\n          out += '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'should be ';\n            if ($typeIsArray) {\n              out += '' + ($typeSchema.join(\",\"));\n            } else {\n              out += '' + ($typeSchema);\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) {\n          /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n      }\n      out += ' } ';\n    }\n  }\n  if (it.schema.$ref && !$refKeywords) {\n    out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' ';\n    if ($breakOnError) {\n      out += ' } if (errors === ';\n      if ($top) {\n        out += '0';\n      } else {\n        out += 'errs_' + ($lvl);\n      }\n      out += ') { ';\n      $closingBraces2 += '}';\n    }\n  } else {\n    var arr2 = it.RULES;\n    if (arr2) {\n      var $rulesGroup, i2 = -1,\n        l2 = arr2.length - 1;\n      while (i2 < l2) {\n        $rulesGroup = arr2[i2 += 1];\n        if ($shouldUseGroup($rulesGroup)) {\n          if ($rulesGroup.type) {\n            out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data, it.opts.strictNumbers)) + ') { ';\n          }\n          if (it.opts.useDefaults) {\n            if ($rulesGroup.type == 'object' && it.schema.properties) {\n              var $schema = it.schema.properties,\n                $schemaKeys = Object.keys($schema);\n              var arr3 = $schemaKeys;\n              if (arr3) {\n                var $propertyKey, i3 = -1,\n                  l3 = arr3.length - 1;\n                while (i3 < l3) {\n                  $propertyKey = arr3[i3 += 1];\n                  var $sch = $schema[$propertyKey];\n                  if ($sch.default !== undefined) {\n                    var $passData = $data + it.util.getProperty($propertyKey);\n                    if (it.compositeRule) {\n                      if (it.opts.strictDefaults) {\n                        var $defaultMsg = 'default is ignored for: ' + $passData;\n                        if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n                        else throw new Error($defaultMsg);\n                      }\n                    } else {\n                      out += ' if (' + ($passData) + ' === undefined ';\n                      if (it.opts.useDefaults == 'empty') {\n                        out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \\'\\' ';\n                      }\n                      out += ' ) ' + ($passData) + ' = ';\n                      if (it.opts.useDefaults == 'shared') {\n                        out += ' ' + (it.useDefault($sch.default)) + ' ';\n                      } else {\n                        out += ' ' + (JSON.stringify($sch.default)) + ' ';\n                      }\n                      out += '; ';\n                    }\n                  }\n                }\n              }\n            } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) {\n              var arr4 = it.schema.items;\n              if (arr4) {\n                var $sch, $i = -1,\n                  l4 = arr4.length - 1;\n                while ($i < l4) {\n                  $sch = arr4[$i += 1];\n                  if ($sch.default !== undefined) {\n                    var $passData = $data + '[' + $i + ']';\n                    if (it.compositeRule) {\n                      if (it.opts.strictDefaults) {\n                        var $defaultMsg = 'default is ignored for: ' + $passData;\n                        if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n                        else throw new Error($defaultMsg);\n                      }\n                    } else {\n                      out += ' if (' + ($passData) + ' === undefined ';\n                      if (it.opts.useDefaults == 'empty') {\n                        out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \\'\\' ';\n                      }\n                      out += ' ) ' + ($passData) + ' = ';\n                      if (it.opts.useDefaults == 'shared') {\n                        out += ' ' + (it.useDefault($sch.default)) + ' ';\n                      } else {\n                        out += ' ' + (JSON.stringify($sch.default)) + ' ';\n                      }\n                      out += '; ';\n                    }\n                  }\n                }\n              }\n            }\n          }\n          var arr5 = $rulesGroup.rules;\n          if (arr5) {\n            var $rule, i5 = -1,\n              l5 = arr5.length - 1;\n            while (i5 < l5) {\n              $rule = arr5[i5 += 1];\n              if ($shouldUseRule($rule)) {\n                var $code = $rule.code(it, $rule.keyword, $rulesGroup.type);\n                if ($code) {\n                  out += ' ' + ($code) + ' ';\n                  if ($breakOnError) {\n                    $closingBraces1 += '}';\n                  }\n                }\n              }\n            }\n          }\n          if ($breakOnError) {\n            out += ' ' + ($closingBraces1) + ' ';\n            $closingBraces1 = '';\n          }\n          if ($rulesGroup.type) {\n            out += ' } ';\n            if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) {\n              out += ' else { ';\n              var $schemaPath = it.schemaPath + '.type',\n                $errSchemaPath = it.errSchemaPath + '/type';\n              var $$outStack = $$outStack || [];\n              $$outStack.push(out);\n              out = ''; /* istanbul ignore else */\n              if (it.createErrors !== false) {\n                out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n                if ($typeIsArray) {\n                  out += '' + ($typeSchema.join(\",\"));\n                } else {\n                  out += '' + ($typeSchema);\n                }\n                out += '\\' } ';\n                if (it.opts.messages !== false) {\n                  out += ' , message: \\'should be ';\n                  if ($typeIsArray) {\n                    out += '' + ($typeSchema.join(\",\"));\n                  } else {\n                    out += '' + ($typeSchema);\n                  }\n                  out += '\\' ';\n                }\n                if (it.opts.verbose) {\n                  out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n                }\n                out += ' } ';\n              } else {\n                out += ' {} ';\n              }\n              var __err = out;\n              out = $$outStack.pop();\n              if (!it.compositeRule && $breakOnError) {\n                /* istanbul ignore if */\n                if (it.async) {\n                  out += ' throw new ValidationError([' + (__err) + ']); ';\n                } else {\n                  out += ' validate.errors = [' + (__err) + ']; return false; ';\n                }\n              } else {\n                out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n              }\n              out += ' } ';\n            }\n          }\n          if ($breakOnError) {\n            out += ' if (errors === ';\n            if ($top) {\n              out += '0';\n            } else {\n              out += 'errs_' + ($lvl);\n            }\n            out += ') { ';\n            $closingBraces2 += '}';\n          }\n        }\n      }\n    }\n  }\n  if ($breakOnError) {\n    out += ' ' + ($closingBraces2) + ' ';\n  }\n  if ($top) {\n    if ($async) {\n      out += ' if (errors === 0) return data;           ';\n      out += ' else throw new ValidationError(vErrors); ';\n    } else {\n      out += ' validate.errors = vErrors; ';\n      out += ' return errors === 0;       ';\n    }\n    out += ' }; return validate;';\n  } else {\n    out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';';\n  }\n\n  function $shouldUseGroup($rulesGroup) {\n    var rules = $rulesGroup.rules;\n    for (var i = 0; i < rules.length; i++)\n      if ($shouldUseRule(rules[i])) return true;\n  }\n\n  function $shouldUseRule($rule) {\n    return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule));\n  }\n\n  function $ruleImplementsSomeKeyword($rule) {\n    var impl = $rule.implements;\n    for (var i = 0; i < impl.length; i++)\n      if (it.schema[impl[i]] !== undefined) return true;\n  }\n  return out;\n}\n", "'use strict';\n\nvar resolve = require('./resolve')\n  , util = require('./util')\n  , errorClasses = require('./error_classes')\n  , stableStringify = require('fast-json-stable-stringify');\n\nvar validateGenerator = require('../dotjs/validate');\n\n/**\n * Functions below are used inside compiled validations function\n */\n\nvar ucs2length = util.ucs2length;\nvar equal = require('fast-deep-equal');\n\n// this error is thrown by async schemas to return validation errors via exception\nvar ValidationError = errorClasses.Validation;\n\nmodule.exports = compile;\n\n\n/**\n * Compiles schema to validation function\n * @this   Ajv\n * @param  {Object} schema schema object\n * @param  {Object} root object with information about the root schema for this schema\n * @param  {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution\n * @param  {String} baseId base ID for IDs in the schema\n * @return {Function} validation function\n */\nfunction compile(schema, root, localRefs, baseId) {\n  /* jshint validthis: true, evil: true */\n  /* eslint no-shadow: 0 */\n  var self = this\n    , opts = this._opts\n    , refVal = [ undefined ]\n    , refs = {}\n    , patterns = []\n    , patternsHash = {}\n    , defaults = []\n    , defaultsHash = {}\n    , customRules = [];\n\n  function patternCode(i, patterns) {\n    var regExpCode = opts.regExp ? 'regExp' : 'new RegExp';\n    return 'var pattern' + i + ' = ' + regExpCode + '(' + util.toQuotedString(patterns[i]) + ');';\n  }\n\n  root = root || { schema: schema, refVal: refVal, refs: refs };\n\n  var c = checkCompiling.call(this, schema, root, baseId);\n  var compilation = this._compilations[c.index];\n  if (c.compiling) return (compilation.callValidate = callValidate);\n\n  var formats = this._formats;\n  var RULES = this.RULES;\n\n  try {\n    var v = localCompile(schema, root, localRefs, baseId);\n    compilation.validate = v;\n    var cv = compilation.callValidate;\n    if (cv) {\n      cv.schema = v.schema;\n      cv.errors = null;\n      cv.refs = v.refs;\n      cv.refVal = v.refVal;\n      cv.root = v.root;\n      cv.$async = v.$async;\n      if (opts.sourceCode) cv.source = v.source;\n    }\n    return v;\n  } finally {\n    endCompiling.call(this, schema, root, baseId);\n  }\n\n  /* @this   {*} - custom context, see passContext option */\n  function callValidate() {\n    /* jshint validthis: true */\n    var validate = compilation.validate;\n    var result = validate.apply(this, arguments);\n    callValidate.errors = validate.errors;\n    return result;\n  }\n\n  function localCompile(_schema, _root, localRefs, baseId) {\n    var isRoot = !_root || (_root && _root.schema == _schema);\n    if (_root.schema != root.schema)\n      return compile.call(self, _schema, _root, localRefs, baseId);\n\n    var $async = _schema.$async === true;\n\n    var sourceCode = validateGenerator({\n      isTop: true,\n      schema: _schema,\n      isRoot: isRoot,\n      baseId: baseId,\n      root: _root,\n      schemaPath: '',\n      errSchemaPath: '#',\n      errorPath: '\"\"',\n      MissingRefError: errorClasses.MissingRef,\n      RULES: RULES,\n      validate: validateGenerator,\n      util: util,\n      resolve: resolve,\n      resolveRef: resolveRef,\n      usePattern: usePattern,\n      useDefault: useDefault,\n      useCustomRule: useCustomRule,\n      opts: opts,\n      formats: formats,\n      logger: self.logger,\n      self: self\n    });\n\n    sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode)\n                   + vars(defaults, defaultCode) + vars(customRules, customRuleCode)\n                   + sourceCode;\n\n    if (opts.processCode) sourceCode = opts.processCode(sourceCode, _schema);\n    // console.log('\\n\\n\\n *** \\n', JSON.stringify(sourceCode));\n    var validate;\n    try {\n      var makeValidate = new Function(\n        'self',\n        'RULES',\n        'formats',\n        'root',\n        'refVal',\n        'defaults',\n        'customRules',\n        'equal',\n        'ucs2length',\n        'ValidationError',\n        'regExp',\n        sourceCode\n      );\n\n      validate = makeValidate(\n        self,\n        RULES,\n        formats,\n        root,\n        refVal,\n        defaults,\n        customRules,\n        equal,\n        ucs2length,\n        ValidationError,\n        opts.regExp\n      );\n\n      refVal[0] = validate;\n    } catch(e) {\n      self.logger.error('Error compiling schema, function code:', sourceCode);\n      throw e;\n    }\n\n    validate.schema = _schema;\n    validate.errors = null;\n    validate.refs = refs;\n    validate.refVal = refVal;\n    validate.root = isRoot ? validate : _root;\n    if ($async) validate.$async = true;\n    if (opts.sourceCode === true) {\n      validate.source = {\n        code: sourceCode,\n        patterns: patterns,\n        defaults: defaults\n      };\n    }\n\n    return validate;\n  }\n\n  function resolveRef(baseId, ref, isRoot) {\n    ref = resolve.url(baseId, ref);\n    var refIndex = refs[ref];\n    var _refVal, refCode;\n    if (refIndex !== undefined) {\n      _refVal = refVal[refIndex];\n      refCode = 'refVal[' + refIndex + ']';\n      return resolvedRef(_refVal, refCode);\n    }\n    if (!isRoot && root.refs) {\n      var rootRefId = root.refs[ref];\n      if (rootRefId !== undefined) {\n        _refVal = root.refVal[rootRefId];\n        refCode = addLocalRef(ref, _refVal);\n        return resolvedRef(_refVal, refCode);\n      }\n    }\n\n    refCode = addLocalRef(ref);\n    var v = resolve.call(self, localCompile, root, ref);\n    if (v === undefined) {\n      var localSchema = localRefs && localRefs[ref];\n      if (localSchema) {\n        v = resolve.inlineRef(localSchema, opts.inlineRefs)\n            ? localSchema\n            : compile.call(self, localSchema, root, localRefs, baseId);\n      }\n    }\n\n    if (v === undefined) {\n      removeLocalRef(ref);\n    } else {\n      replaceLocalRef(ref, v);\n      return resolvedRef(v, refCode);\n    }\n  }\n\n  function addLocalRef(ref, v) {\n    var refId = refVal.length;\n    refVal[refId] = v;\n    refs[ref] = refId;\n    return 'refVal' + refId;\n  }\n\n  function removeLocalRef(ref) {\n    delete refs[ref];\n  }\n\n  function replaceLocalRef(ref, v) {\n    var refId = refs[ref];\n    refVal[refId] = v;\n  }\n\n  function resolvedRef(refVal, code) {\n    return typeof refVal == 'object' || typeof refVal == 'boolean'\n            ? { code: code, schema: refVal, inline: true }\n            : { code: code, $async: refVal && !!refVal.$async };\n  }\n\n  function usePattern(regexStr) {\n    var index = patternsHash[regexStr];\n    if (index === undefined) {\n      index = patternsHash[regexStr] = patterns.length;\n      patterns[index] = regexStr;\n    }\n    return 'pattern' + index;\n  }\n\n  function useDefault(value) {\n    switch (typeof value) {\n      case 'boolean':\n      case 'number':\n        return '' + value;\n      case 'string':\n        return util.toQuotedString(value);\n      case 'object':\n        if (value === null) return 'null';\n        var valueStr = stableStringify(value);\n        var index = defaultsHash[valueStr];\n        if (index === undefined) {\n          index = defaultsHash[valueStr] = defaults.length;\n          defaults[index] = value;\n        }\n        return 'default' + index;\n    }\n  }\n\n  function useCustomRule(rule, schema, parentSchema, it) {\n    if (self._opts.validateSchema !== false) {\n      var deps = rule.definition.dependencies;\n      if (deps && !deps.every(function(keyword) {\n        return Object.prototype.hasOwnProperty.call(parentSchema, keyword);\n      }))\n        throw new Error('parent schema must have all required keywords: ' + deps.join(','));\n\n      var validateSchema = rule.definition.validateSchema;\n      if (validateSchema) {\n        var valid = validateSchema(schema);\n        if (!valid) {\n          var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);\n          if (self._opts.validateSchema == 'log') self.logger.error(message);\n          else throw new Error(message);\n        }\n      }\n    }\n\n    var compile = rule.definition.compile\n      , inline = rule.definition.inline\n      , macro = rule.definition.macro;\n\n    var validate;\n    if (compile) {\n      validate = compile.call(self, schema, parentSchema, it);\n    } else if (macro) {\n      validate = macro.call(self, schema, parentSchema, it);\n      if (opts.validateSchema !== false) self.validateSchema(validate, true);\n    } else if (inline) {\n      validate = inline.call(self, it, rule.keyword, schema, parentSchema);\n    } else {\n      validate = rule.definition.validate;\n      if (!validate) return;\n    }\n\n    if (validate === undefined)\n      throw new Error('custom keyword \"' + rule.keyword + '\"failed to compile');\n\n    var index = customRules.length;\n    customRules[index] = validate;\n\n    return {\n      code: 'customRule' + index,\n      validate: validate\n    };\n  }\n}\n\n\n/**\n * Checks if the schema is currently compiled\n * @this   Ajv\n * @param  {Object} schema schema to compile\n * @param  {Object} root root object\n * @param  {String} baseId base schema ID\n * @return {Object} object with properties \"index\" (compilation index) and \"compiling\" (boolean)\n */\nfunction checkCompiling(schema, root, baseId) {\n  /* jshint validthis: true */\n  var index = compIndex.call(this, schema, root, baseId);\n  if (index >= 0) return { index: index, compiling: true };\n  index = this._compilations.length;\n  this._compilations[index] = {\n    schema: schema,\n    root: root,\n    baseId: baseId\n  };\n  return { index: index, compiling: false };\n}\n\n\n/**\n * Removes the schema from the currently compiled list\n * @this   Ajv\n * @param  {Object} schema schema to compile\n * @param  {Object} root root object\n * @param  {String} baseId base schema ID\n */\nfunction endCompiling(schema, root, baseId) {\n  /* jshint validthis: true */\n  var i = compIndex.call(this, schema, root, baseId);\n  if (i >= 0) this._compilations.splice(i, 1);\n}\n\n\n/**\n * Index of schema compilation in the currently compiled list\n * @this   Ajv\n * @param  {Object} schema schema to compile\n * @param  {Object} root root object\n * @param  {String} baseId base schema ID\n * @return {Integer} compilation index\n */\nfunction compIndex(schema, root, baseId) {\n  /* jshint validthis: true */\n  for (var i=0; i<this._compilations.length; i++) {\n    var c = this._compilations[i];\n    if (c.schema == schema && c.root == root && c.baseId == baseId) return i;\n  }\n  return -1;\n}\n\n\nfunction defaultCode(i) {\n  return 'var default' + i + ' = defaults[' + i + '];';\n}\n\n\nfunction refValCode(i, refVal) {\n  return refVal[i] === undefined ? '' : 'var refVal' + i + ' = refVal[' + i + '];';\n}\n\n\nfunction customRuleCode(i) {\n  return 'var customRule' + i + ' = customRules[' + i + '];';\n}\n\n\nfunction vars(arr, statement) {\n  if (!arr.length) return '';\n  var code = '';\n  for (var i=0; i<arr.length; i++)\n    code += statement(i, arr);\n  return code;\n}\n", "'use strict';\n\n\nvar Cache = module.exports = function Cache() {\n  this._cache = {};\n};\n\n\nCache.prototype.put = function Cache_put(key, value) {\n  this._cache[key] = value;\n};\n\n\nCache.prototype.get = function Cache_get(key) {\n  return this._cache[key];\n};\n\n\nCache.prototype.del = function Cache_del(key) {\n  delete this._cache[key];\n};\n\n\nCache.prototype.clear = function Cache_clear() {\n  this._cache = {};\n};\n", "'use strict';\n\nvar util = require('./util');\n\nvar DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/;\nvar DAYS = [0,31,28,31,30,31,30,31,31,30,31,30,31];\nvar TIME = /^(\\d\\d):(\\d\\d):(\\d\\d)(\\.\\d+)?(z|[+-]\\d\\d(?::?\\d\\d)?)?$/i;\nvar HOSTNAME = /^(?=.{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;\nvar URI = /^(?:[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;\nvar URIREF = /^(?:[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\nvar URITEMPLATE = /^(?:(?:[^\\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// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.\n// var URL = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!10(?:\\.\\d{1,3}){3})(?!127(?:\\.\\d{1,3}){3})(?!169\\.254(?:\\.\\d{1,3}){2})(?!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-z\\u{00a1}-\\u{ffff}0-9]+-)*[a-z\\u{00a1}-\\u{ffff}0-9]+)(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-)*[a-z\\u{00a1}-\\u{ffff}0-9]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu;\nvar URL = /^(?:(?:http[s\\u017F]?|ftp):\\/\\/)(?:(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+(?::(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?@)?(?:(?!10(?:\\.[0-9]{1,3}){3})(?!127(?:\\.[0-9]{1,3}){3})(?!169\\.254(?:\\.[0-9]{1,3}){2})(?!192\\.168(?:\\.[0-9]{1,3}){2})(?!172\\.(?:1[6-9]|2[0-9]|3[01])(?:\\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)(?:\\.(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)*(?:\\.(?:(?:[a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\\/(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?$/i;\nvar UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;\nvar JSON_POINTER = /^(?:\\/(?:[^~/]|~0|~1)*)*$/;\nvar JSON_POINTER_URI_FRAGMENT = /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;\nvar RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/;\n\n\nmodule.exports = formats;\n\nfunction formats(mode) {\n  mode = mode == 'full' ? 'full' : 'fast';\n  return util.copy(formats[mode], Object.create(null));\n}\n\n\nformats.fast = {\n  // date: http://tools.ietf.org/html/rfc3339#section-5.6\n  date: /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/,\n  // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n  time: /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n  'date-time': /^\\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  // 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  'uri-template': URITEMPLATE,\n  url: URL,\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 'willful violation')\n  email: /^[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  hostname: HOSTNAME,\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  // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses\n  ipv6: /^\\s*(?:(?:(?:[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}))|:)))(?:%.+)?\\s*$/i,\n  regex: regex,\n  // uuid: http://tools.ietf.org/html/rfc4122\n  uuid: UUID,\n  // JSON-pointer: https://tools.ietf.org/html/rfc6901\n  // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n  'json-pointer': JSON_POINTER,\n  'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n  // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n  'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nformats.full = {\n  date: date,\n  time: time,\n  'date-time': date_time,\n  uri: uri,\n  'uri-reference': URIREF,\n  'uri-template': URITEMPLATE,\n  url: URL,\n  email: /^[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: HOSTNAME,\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: /^\\s*(?:(?:(?:[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}))|:)))(?:%.+)?\\s*$/i,\n  regex: regex,\n  uuid: UUID,\n  'json-pointer': JSON_POINTER,\n  'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n  'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nfunction isLeapYear(year) {\n  // https://tools.ietf.org/html/rfc3339#appendix-C\n  return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\n\nfunction date(str) {\n  // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n  var matches = str.match(DATE);\n  if (!matches) return false;\n\n  var year = +matches[1];\n  var month = +matches[2];\n  var day = +matches[3];\n\n  return month >= 1 && month <= 12 && day >= 1 &&\n          day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]);\n}\n\n\nfunction time(str, full) {\n  var matches = str.match(TIME);\n  if (!matches) return false;\n\n  var hour = matches[1];\n  var minute = matches[2];\n  var second = matches[3];\n  var timeZone = matches[5];\n  return ((hour <= 23 && minute <= 59 && second <= 59) ||\n          (hour == 23 && minute == 59 && second == 60)) &&\n         (!full || timeZone);\n}\n\n\nvar DATE_TIME_SEPARATOR = /t|\\s/i;\nfunction date_time(str) {\n  // http://tools.ietf.org/html/rfc3339#section-5.6\n  var dateTime = str.split(DATE_TIME_SEPARATOR);\n  return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true);\n}\n\n\nvar NOT_URI_FRAGMENT = /\\/|:/;\nfunction uri(str) {\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\n\nvar Z_ANCHOR = /[^\\\\]\\\\Z/;\nfunction regex(str) {\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", "'use strict';\nmodule.exports = function generate_ref(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $async, $refCode;\n  if ($schema == '#' || $schema == '#/') {\n    if (it.isRoot) {\n      $async = it.async;\n      $refCode = 'validate';\n    } else {\n      $async = it.root.schema.$async === true;\n      $refCode = 'root.refVal[0]';\n    }\n  } else {\n    var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot);\n    if ($refVal === undefined) {\n      var $message = it.MissingRefError.message(it.baseId, $schema);\n      if (it.opts.missingRefs == 'fail') {\n        it.logger.error($message);\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('$ref') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \\'' + (it.util.escapeQuotes($schema)) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'can\\\\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) {\n          /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n        if ($breakOnError) {\n          out += ' if (false) { ';\n        }\n      } else if (it.opts.missingRefs == 'ignore') {\n        it.logger.warn($message);\n        if ($breakOnError) {\n          out += ' if (true) { ';\n        }\n      } else {\n        throw new it.MissingRefError(it.baseId, $schema, $message);\n      }\n    } else if ($refVal.inline) {\n      var $it = it.util.copy(it);\n      $it.level++;\n      var $nextValid = 'valid' + $it.level;\n      $it.schema = $refVal.schema;\n      $it.schemaPath = '';\n      $it.errSchemaPath = $schema;\n      var $code = it.validate($it).replace(/validate\\.schema/g, $refVal.code);\n      out += ' ' + ($code) + ' ';\n      if ($breakOnError) {\n        out += ' if (' + ($nextValid) + ') { ';\n      }\n    } else {\n      $async = $refVal.$async === true || (it.async && $refVal.$async !== false);\n      $refCode = $refVal.code;\n    }\n  }\n  if ($refCode) {\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = '';\n    if (it.opts.passContext) {\n      out += ' ' + ($refCode) + '.call(this, ';\n    } else {\n      out += ' ' + ($refCode) + '( ';\n    }\n    out += ' ' + ($data) + ', (dataPath || \\'\\')';\n    if (it.errorPath != '\"\"') {\n      out += ' + ' + (it.errorPath);\n    }\n    var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n      $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n    out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData)  ';\n    var __callValidate = out;\n    out = $$outStack.pop();\n    if ($async) {\n      if (!it.async) throw new Error('async schema referenced by sync schema');\n      if ($breakOnError) {\n        out += ' var ' + ($valid) + '; ';\n      }\n      out += ' try { await ' + (__callValidate) + '; ';\n      if ($breakOnError) {\n        out += ' ' + ($valid) + ' = true; ';\n      }\n      out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ';\n      if ($breakOnError) {\n        out += ' ' + ($valid) + ' = false; ';\n      }\n      out += ' } ';\n      if ($breakOnError) {\n        out += ' if (' + ($valid) + ') { ';\n      }\n    } else {\n      out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } ';\n      if ($breakOnError) {\n        out += ' else { ';\n      }\n    }\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_allOf(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $currentBaseId = $it.baseId,\n    $allSchemasEmpty = true;\n  var arr1 = $schema;\n  if (arr1) {\n    var $sch, $i = -1,\n      l1 = arr1.length - 1;\n    while ($i < l1) {\n      $sch = arr1[$i += 1];\n      if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n        $allSchemasEmpty = false;\n        $it.schema = $sch;\n        $it.schemaPath = $schemaPath + '[' + $i + ']';\n        $it.errSchemaPath = $errSchemaPath + '/' + $i;\n        out += '  ' + (it.validate($it)) + ' ';\n        $it.baseId = $currentBaseId;\n        if ($breakOnError) {\n          out += ' if (' + ($nextValid) + ') { ';\n          $closingBraces += '}';\n        }\n      }\n    }\n  }\n  if ($breakOnError) {\n    if ($allSchemasEmpty) {\n      out += ' if (true) { ';\n    } else {\n      out += ' ' + ($closingBraces.slice(0, -1)) + ' ';\n    }\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_anyOf(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $noEmptySchema = $schema.every(function($sch) {\n    return (it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all));\n  });\n  if ($noEmptySchema) {\n    var $currentBaseId = $it.baseId;\n    out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false;  ';\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    var arr1 = $schema;\n    if (arr1) {\n      var $sch, $i = -1,\n        l1 = arr1.length - 1;\n      while ($i < l1) {\n        $sch = arr1[$i += 1];\n        $it.schema = $sch;\n        $it.schemaPath = $schemaPath + '[' + $i + ']';\n        $it.errSchemaPath = $errSchemaPath + '/' + $i;\n        out += '  ' + (it.validate($it)) + ' ';\n        $it.baseId = $currentBaseId;\n        out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { ';\n        $closingBraces += '}';\n      }\n    }\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('anyOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should match some schema in anyOf\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    if (!it.compositeRule && $breakOnError) {\n      /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError(vErrors); ';\n      } else {\n        out += ' validate.errors = vErrors; return false; ';\n      }\n    }\n    out += ' } else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n    if (it.opts.allErrors) {\n      out += ' } ';\n    }\n  } else {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_comment(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $schema = it.schema[$keyword];\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $comment = it.util.toQuotedString($schema);\n  if (it.opts.$comment === true) {\n    out += ' console.log(' + ($comment) + ');';\n  } else if (typeof it.opts.$comment == 'function') {\n    out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_const(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  if (!$isData) {\n    out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';\n  }\n  out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') {   ';\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('const') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should be equal to constant\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' }';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_contains(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $idx = 'i' + $lvl,\n    $dataNxt = $it.dataLevel = it.dataLevel + 1,\n    $nextData = 'data' + $dataNxt,\n    $currentBaseId = it.baseId,\n    $nonEmptySchema = (it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all));\n  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n  if ($nonEmptySchema) {\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n    $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n    var $passData = $data + '[' + $idx + ']';\n    $it.dataPathArr[$dataNxt] = $idx;\n    var $code = it.validate($it);\n    $it.baseId = $currentBaseId;\n    if (it.util.varOccurences($code, $nextData) < 2) {\n      out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n    } else {\n      out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n    }\n    out += ' if (' + ($nextValid) + ') break; }  ';\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {';\n  } else {\n    out += ' if (' + ($data) + '.length == 0) {';\n  }\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('contains') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should contain a valid item\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' } else { ';\n  if ($nonEmptySchema) {\n    out += '  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n  }\n  if (it.opts.allErrors) {\n    out += ' } ';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_dependencies(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $schemaDeps = {},\n    $propertyDeps = {},\n    $ownProperties = it.opts.ownProperties;\n  for ($property in $schema) {\n    if ($property == '__proto__') continue;\n    var $sch = $schema[$property];\n    var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;\n    $deps[$property] = $sch;\n  }\n  out += 'var ' + ($errs) + ' = errors;';\n  var $currentErrorPath = it.errorPath;\n  out += 'var missing' + ($lvl) + ';';\n  for (var $property in $propertyDeps) {\n    $deps = $propertyDeps[$property];\n    if ($deps.length) {\n      out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n      if ($ownProperties) {\n        out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n      }\n      if ($breakOnError) {\n        out += ' && ( ';\n        var arr1 = $deps;\n        if (arr1) {\n          var $propertyKey, $i = -1,\n            l1 = arr1.length - 1;\n          while ($i < l1) {\n            $propertyKey = arr1[$i += 1];\n            if ($i) {\n              out += ' || ';\n            }\n            var $prop = it.util.getProperty($propertyKey),\n              $useData = $data + $prop;\n            out += ' ( ( ' + ($useData) + ' === undefined ';\n            if ($ownProperties) {\n              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n            }\n            out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n          }\n        }\n        out += ')) {  ';\n        var $propertyPath = 'missing' + $lvl,\n          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n        if (it.opts._errorDataPathProperty) {\n          it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n        }\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'should have ';\n            if ($deps.length == 1) {\n              out += 'property ' + (it.util.escapeQuotes($deps[0]));\n            } else {\n              out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n            }\n            out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) {\n          /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n      } else {\n        out += ' ) { ';\n        var arr2 = $deps;\n        if (arr2) {\n          var $propertyKey, i2 = -1,\n            l2 = arr2.length - 1;\n          while (i2 < l2) {\n            $propertyKey = arr2[i2 += 1];\n            var $prop = it.util.getProperty($propertyKey),\n              $missingProperty = it.util.escapeQuotes($propertyKey),\n              $useData = $data + $prop;\n            if (it.opts._errorDataPathProperty) {\n              it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n            }\n            out += ' if ( ' + ($useData) + ' === undefined ';\n            if ($ownProperties) {\n              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n            }\n            out += ') {  var err =   '; /* istanbul ignore else */\n            if (it.createErrors !== false) {\n              out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n              if (it.opts.messages !== false) {\n                out += ' , message: \\'should have ';\n                if ($deps.length == 1) {\n                  out += 'property ' + (it.util.escapeQuotes($deps[0]));\n                } else {\n                  out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n                }\n                out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n              }\n              if (it.opts.verbose) {\n                out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n              }\n              out += ' } ';\n            } else {\n              out += ' {} ';\n            }\n            out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n          }\n        }\n      }\n      out += ' }   ';\n      if ($breakOnError) {\n        $closingBraces += '}';\n        out += ' else { ';\n      }\n    }\n  }\n  it.errorPath = $currentErrorPath;\n  var $currentBaseId = $it.baseId;\n  for (var $property in $schemaDeps) {\n    var $sch = $schemaDeps[$property];\n    if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n      out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n      if ($ownProperties) {\n        out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n      }\n      out += ') { ';\n      $it.schema = $sch;\n      $it.schemaPath = $schemaPath + it.util.getProperty($property);\n      $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);\n      out += '  ' + (it.validate($it)) + ' ';\n      $it.baseId = $currentBaseId;\n      out += ' }  ';\n      if ($breakOnError) {\n        out += ' if (' + ($nextValid) + ') { ';\n        $closingBraces += '}';\n      }\n    }\n  }\n  if ($breakOnError) {\n    out += '   ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_enum(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $i = 'i' + $lvl,\n    $vSchema = 'schema' + $lvl;\n  if (!$isData) {\n    out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';';\n  }\n  out += 'var ' + ($valid) + ';';\n  if ($isData) {\n    out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n  }\n  out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }';\n  if ($isData) {\n    out += '  }  ';\n  }\n  out += ' if (!' + ($valid) + ') {   ';\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('enum') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should be equal to one of the allowed values\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' }';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_format(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  if (it.opts.format === false) {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n    return out;\n  }\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $unknownFormats = it.opts.unknownFormats,\n    $allowUnknown = Array.isArray($unknownFormats);\n  if ($isData) {\n    var $format = 'format' + $lvl,\n      $isObject = 'isObject' + $lvl,\n      $formatType = 'formatType' + $lvl;\n    out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \\'object\\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \\'string\\'; if (' + ($isObject) + ') { ';\n    if (it.async) {\n      out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; ';\n    }\n    out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if (  ';\n    if ($isData) {\n      out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n    }\n    out += ' (';\n    if ($unknownFormats != 'ignore') {\n      out += ' (' + ($schemaValue) + ' && !' + ($format) + ' ';\n      if ($allowUnknown) {\n        out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 ';\n      }\n      out += ') || ';\n    }\n    out += ' (' + ($format) + ' && ' + ($formatType) + ' == \\'' + ($ruleType) + '\\' && !(typeof ' + ($format) + ' == \\'function\\' ? ';\n    if (it.async) {\n      out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) ';\n    } else {\n      out += ' ' + ($format) + '(' + ($data) + ') ';\n    }\n    out += ' : ' + ($format) + '.test(' + ($data) + '))))) {';\n  } else {\n    var $format = it.formats[$schema];\n    if (!$format) {\n      if ($unknownFormats == 'ignore') {\n        it.logger.warn('unknown format \"' + $schema + '\" ignored in schema at path \"' + it.errSchemaPath + '\"');\n        if ($breakOnError) {\n          out += ' if (true) { ';\n        }\n        return out;\n      } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) {\n        if ($breakOnError) {\n          out += ' if (true) { ';\n        }\n        return out;\n      } else {\n        throw new Error('unknown format \"' + $schema + '\" is used in schema at path \"' + it.errSchemaPath + '\"');\n      }\n    }\n    var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate;\n    var $formatType = $isObject && $format.type || 'string';\n    if ($isObject) {\n      var $async = $format.async === true;\n      $format = $format.validate;\n    }\n    if ($formatType != $ruleType) {\n      if ($breakOnError) {\n        out += ' if (true) { ';\n      }\n      return out;\n    }\n    if ($async) {\n      if (!it.async) throw new Error('async format in sync schema');\n      var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';\n      out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { ';\n    } else {\n      out += ' if (! ';\n      var $formatRef = 'formats' + it.util.getProperty($schema);\n      if ($isObject) $formatRef += '.validate';\n      if (typeof $format == 'function') {\n        out += ' ' + ($formatRef) + '(' + ($data) + ') ';\n      } else {\n        out += ' ' + ($formatRef) + '.test(' + ($data) + ') ';\n      }\n      out += ') { ';\n    }\n  }\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('format') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format:  ';\n    if ($isData) {\n      out += '' + ($schemaValue);\n    } else {\n      out += '' + (it.util.toQuotedString($schema));\n    }\n    out += '  } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should match format \"';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + (it.util.escapeQuotes($schema));\n      }\n      out += '\"\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + (it.util.toQuotedString($schema));\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' } ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_if(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $thenSch = it.schema['then'],\n    $elseSch = it.schema['else'],\n    $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? (typeof $thenSch == 'object' && Object.keys($thenSch).length > 0) || $thenSch === false : it.util.schemaHasRules($thenSch, it.RULES.all)),\n    $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? (typeof $elseSch == 'object' && Object.keys($elseSch).length > 0) || $elseSch === false : it.util.schemaHasRules($elseSch, it.RULES.all)),\n    $currentBaseId = $it.baseId;\n  if ($thenPresent || $elsePresent) {\n    var $ifClause;\n    $it.createErrors = false;\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true;  ';\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    out += '  ' + (it.validate($it)) + ' ';\n    $it.baseId = $currentBaseId;\n    $it.createErrors = true;\n    out += '  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }  ';\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    if ($thenPresent) {\n      out += ' if (' + ($nextValid) + ') {  ';\n      $it.schema = it.schema['then'];\n      $it.schemaPath = it.schemaPath + '.then';\n      $it.errSchemaPath = it.errSchemaPath + '/then';\n      out += '  ' + (it.validate($it)) + ' ';\n      $it.baseId = $currentBaseId;\n      out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n      if ($thenPresent && $elsePresent) {\n        $ifClause = 'ifClause' + $lvl;\n        out += ' var ' + ($ifClause) + ' = \\'then\\'; ';\n      } else {\n        $ifClause = '\\'then\\'';\n      }\n      out += ' } ';\n      if ($elsePresent) {\n        out += ' else { ';\n      }\n    } else {\n      out += ' if (!' + ($nextValid) + ') { ';\n    }\n    if ($elsePresent) {\n      $it.schema = it.schema['else'];\n      $it.schemaPath = it.schemaPath + '.else';\n      $it.errSchemaPath = it.errSchemaPath + '/else';\n      out += '  ' + (it.validate($it)) + ' ';\n      $it.baseId = $currentBaseId;\n      out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n      if ($thenPresent && $elsePresent) {\n        $ifClause = 'ifClause' + $lvl;\n        out += ' var ' + ($ifClause) + ' = \\'else\\'; ';\n      } else {\n        $ifClause = '\\'else\\'';\n      }\n      out += ' } ';\n    }\n    out += ' if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('if') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should match \"\\' + ' + ($ifClause) + ' + \\'\" schema\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    if (!it.compositeRule && $breakOnError) {\n      /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError(vErrors); ';\n      } else {\n        out += ' validate.errors = vErrors; return false; ';\n      }\n    }\n    out += ' }   ';\n    if ($breakOnError) {\n      out += ' else { ';\n    }\n  } else {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_items(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $idx = 'i' + $lvl,\n    $dataNxt = $it.dataLevel = it.dataLevel + 1,\n    $nextData = 'data' + $dataNxt,\n    $currentBaseId = it.baseId;\n  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n  if (Array.isArray($schema)) {\n    var $additionalItems = it.schema.additionalItems;\n    if ($additionalItems === false) {\n      out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; ';\n      var $currErrSchemaPath = $errSchemaPath;\n      $errSchemaPath = it.errSchemaPath + '/additionalItems';\n      out += '  if (!' + ($valid) + ') {   ';\n      var $$outStack = $$outStack || [];\n      $$outStack.push(out);\n      out = ''; /* istanbul ignore else */\n      if (it.createErrors !== false) {\n        out += ' { keyword: \\'' + ('additionalItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } ';\n        if (it.opts.messages !== false) {\n          out += ' , message: \\'should NOT have more than ' + ($schema.length) + ' items\\' ';\n        }\n        if (it.opts.verbose) {\n          out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n        }\n        out += ' } ';\n      } else {\n        out += ' {} ';\n      }\n      var __err = out;\n      out = $$outStack.pop();\n      if (!it.compositeRule && $breakOnError) {\n        /* istanbul ignore if */\n        if (it.async) {\n          out += ' throw new ValidationError([' + (__err) + ']); ';\n        } else {\n          out += ' validate.errors = [' + (__err) + ']; return false; ';\n        }\n      } else {\n        out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n      }\n      out += ' } ';\n      $errSchemaPath = $currErrSchemaPath;\n      if ($breakOnError) {\n        $closingBraces += '}';\n        out += ' else { ';\n      }\n    }\n    var arr1 = $schema;\n    if (arr1) {\n      var $sch, $i = -1,\n        l1 = arr1.length - 1;\n      while ($i < l1) {\n        $sch = arr1[$i += 1];\n        if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n          out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { ';\n          var $passData = $data + '[' + $i + ']';\n          $it.schema = $sch;\n          $it.schemaPath = $schemaPath + '[' + $i + ']';\n          $it.errSchemaPath = $errSchemaPath + '/' + $i;\n          $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);\n          $it.dataPathArr[$dataNxt] = $i;\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n          } else {\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n          }\n          out += ' }  ';\n          if ($breakOnError) {\n            out += ' if (' + ($nextValid) + ') { ';\n            $closingBraces += '}';\n          }\n        }\n      }\n    }\n    if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? (typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0) || $additionalItems === false : it.util.schemaHasRules($additionalItems, it.RULES.all))) {\n      $it.schema = $additionalItems;\n      $it.schemaPath = it.schemaPath + '.additionalItems';\n      $it.errSchemaPath = it.errSchemaPath + '/additionalItems';\n      out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') {  for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n      $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n      var $passData = $data + '[' + $idx + ']';\n      $it.dataPathArr[$dataNxt] = $idx;\n      var $code = it.validate($it);\n      $it.baseId = $currentBaseId;\n      if (it.util.varOccurences($code, $nextData) < 2) {\n        out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n      } else {\n        out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n      }\n      if ($breakOnError) {\n        out += ' if (!' + ($nextValid) + ') break; ';\n      }\n      out += ' } }  ';\n      if ($breakOnError) {\n        out += ' if (' + ($nextValid) + ') { ';\n        $closingBraces += '}';\n      }\n    }\n  } else if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    out += '  for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n    $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n    var $passData = $data + '[' + $idx + ']';\n    $it.dataPathArr[$dataNxt] = $idx;\n    var $code = it.validate($it);\n    $it.baseId = $currentBaseId;\n    if (it.util.varOccurences($code, $nextData) < 2) {\n      out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n    } else {\n      out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n    }\n    if ($breakOnError) {\n      out += ' if (!' + ($nextValid) + ') break; ';\n    }\n    out += ' }';\n  }\n  if ($breakOnError) {\n    out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate__limit(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $isMax = $keyword == 'maximum',\n    $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum',\n    $schemaExcl = it.schema[$exclusiveKeyword],\n    $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data,\n    $op = $isMax ? '<' : '>',\n    $notOp = $isMax ? '>' : '<',\n    $errorKeyword = undefined;\n  if (!($isData || typeof $schema == 'number' || $schema === undefined)) {\n    throw new Error($keyword + ' must be number');\n  }\n  if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) {\n    throw new Error($exclusiveKeyword + ' must be number or boolean');\n  }\n  if ($isDataExcl) {\n    var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),\n      $exclusive = 'exclusive' + $lvl,\n      $exclType = 'exclType' + $lvl,\n      $exclIsNumber = 'exclIsNumber' + $lvl,\n      $opExpr = 'op' + $lvl,\n      $opStr = '\\' + ' + $opExpr + ' + \\'';\n    out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';\n    $schemaValueExcl = 'schemaExcl' + $lvl;\n    out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \\'boolean\\' && ' + ($exclType) + ' != \\'undefined\\' && ' + ($exclType) + ' != \\'number\\') { ';\n    var $errorKeyword = $exclusiveKeyword;\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = ''; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ($errorKeyword || '_exclusiveLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'' + ($exclusiveKeyword) + ' should be boolean\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    var __err = out;\n    out = $$outStack.pop();\n    if (!it.compositeRule && $breakOnError) {\n      /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError([' + (__err) + ']); ';\n      } else {\n        out += ' validate.errors = [' + (__err) + ']; return false; ';\n      }\n    } else {\n      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    }\n    out += ' } else if ( ';\n    if ($isData) {\n      out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n    }\n    out += ' ' + ($exclType) + ' == \\'number\\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \\'' + ($op) + '\\' : \\'' + ($op) + '=\\'; ';\n    if ($schema === undefined) {\n      $errorKeyword = $exclusiveKeyword;\n      $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n      $schemaValue = $schemaValueExcl;\n      $isData = $isDataExcl;\n    }\n  } else {\n    var $exclIsNumber = typeof $schemaExcl == 'number',\n      $opStr = $op;\n    if ($exclIsNumber && $isData) {\n      var $opExpr = '\\'' + $opStr + '\\'';\n      out += ' if ( ';\n      if ($isData) {\n        out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n      }\n      out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { ';\n    } else {\n      if ($exclIsNumber && $schema === undefined) {\n        $exclusive = true;\n        $errorKeyword = $exclusiveKeyword;\n        $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n        $schemaValue = $schemaExcl;\n        $notOp += '=';\n      } else {\n        if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);\n        if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {\n          $exclusive = true;\n          $errorKeyword = $exclusiveKeyword;\n          $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n          $notOp += '=';\n        } else {\n          $exclusive = false;\n          $opStr += '=';\n        }\n      }\n      var $opExpr = '\\'' + $opStr + '\\'';\n      out += ' if ( ';\n      if ($isData) {\n        out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n      }\n      out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { ';\n    }\n  }\n  $errorKeyword = $errorKeyword || $keyword;\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ($errorKeyword || '_limit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should be ' + ($opStr) + ' ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue);\n      } else {\n        out += '' + ($schemaValue) + '\\'';\n      }\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' } ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate__limitItems(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  if (!($isData || typeof $schema == 'number')) {\n    throw new Error($keyword + ' must be number');\n  }\n  var $op = $keyword == 'maxItems' ? '>' : '<';\n  out += 'if ( ';\n  if ($isData) {\n    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n  }\n  out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n  var $errorKeyword = $keyword;\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ($errorKeyword || '_limitItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should NOT have ';\n      if ($keyword == 'maxItems') {\n        out += 'more';\n      } else {\n        out += 'fewer';\n      }\n      out += ' than ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + ($schema);\n      }\n      out += ' items\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate__limitLength(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  if (!($isData || typeof $schema == 'number')) {\n    throw new Error($keyword + ' must be number');\n  }\n  var $op = $keyword == 'maxLength' ? '>' : '<';\n  out += 'if ( ';\n  if ($isData) {\n    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n  }\n  if (it.opts.unicode === false) {\n    out += ' ' + ($data) + '.length ';\n  } else {\n    out += ' ucs2length(' + ($data) + ') ';\n  }\n  out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';\n  var $errorKeyword = $keyword;\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ($errorKeyword || '_limitLength') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should NOT be ';\n      if ($keyword == 'maxLength') {\n        out += 'longer';\n      } else {\n        out += 'shorter';\n      }\n      out += ' than ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + ($schema);\n      }\n      out += ' characters\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate__limitProperties(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  if (!($isData || typeof $schema == 'number')) {\n    throw new Error($keyword + ' must be number');\n  }\n  var $op = $keyword == 'maxProperties' ? '>' : '<';\n  out += 'if ( ';\n  if ($isData) {\n    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n  }\n  out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n  var $errorKeyword = $keyword;\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ($errorKeyword || '_limitProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should NOT have ';\n      if ($keyword == 'maxProperties') {\n        out += 'more';\n      } else {\n        out += 'fewer';\n      }\n      out += ' than ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + ($schema);\n      }\n      out += ' properties\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_multipleOf(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  if (!($isData || typeof $schema == 'number')) {\n    throw new Error($keyword + ' must be number');\n  }\n  out += 'var division' + ($lvl) + ';if (';\n  if ($isData) {\n    out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \\'number\\' || ';\n  }\n  out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';\n  if (it.opts.multipleOfPrecision) {\n    out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';\n  } else {\n    out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';\n  }\n  out += ' ) ';\n  if ($isData) {\n    out += '  )  ';\n  }\n  out += ' ) {   ';\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('multipleOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should be multiple of ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue);\n      } else {\n        out += '' + ($schemaValue) + '\\'';\n      }\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_not(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    out += ' var ' + ($errs) + ' = errors;  ';\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    $it.createErrors = false;\n    var $allErrorsOption;\n    if ($it.opts.allErrors) {\n      $allErrorsOption = $it.opts.allErrors;\n      $it.opts.allErrors = false;\n    }\n    out += ' ' + (it.validate($it)) + ' ';\n    $it.createErrors = true;\n    if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' if (' + ($nextValid) + ') {   ';\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = ''; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should NOT be valid\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    var __err = out;\n    out = $$outStack.pop();\n    if (!it.compositeRule && $breakOnError) {\n      /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError([' + (__err) + ']); ';\n      } else {\n        out += ' validate.errors = [' + (__err) + ']; return false; ';\n      }\n    } else {\n      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    }\n    out += ' } else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n    if (it.opts.allErrors) {\n      out += ' } ';\n    }\n  } else {\n    out += '  var err =   '; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should NOT be valid\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    if ($breakOnError) {\n      out += ' if (false) { ';\n    }\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_oneOf(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $currentBaseId = $it.baseId,\n    $prevValid = 'prevValid' + $lvl,\n    $passingSchemas = 'passingSchemas' + $lvl;\n  out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; ';\n  var $wasComposite = it.compositeRule;\n  it.compositeRule = $it.compositeRule = true;\n  var arr1 = $schema;\n  if (arr1) {\n    var $sch, $i = -1,\n      l1 = arr1.length - 1;\n    while ($i < l1) {\n      $sch = arr1[$i += 1];\n      if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n        $it.schema = $sch;\n        $it.schemaPath = $schemaPath + '[' + $i + ']';\n        $it.errSchemaPath = $errSchemaPath + '/' + $i;\n        out += '  ' + (it.validate($it)) + ' ';\n        $it.baseId = $currentBaseId;\n      } else {\n        out += ' var ' + ($nextValid) + ' = true; ';\n      }\n      if ($i) {\n        out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { ';\n        $closingBraces += '}';\n      }\n      out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }';\n    }\n  }\n  it.compositeRule = $it.compositeRule = $wasComposite;\n  out += '' + ($closingBraces) + 'if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('oneOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should match exactly one schema in oneOf\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError(vErrors); ';\n    } else {\n      out += ' validate.errors = vErrors; return false; ';\n    }\n  }\n  out += '} else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';\n  if (it.opts.allErrors) {\n    out += ' } ';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_pattern(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $regExpCode = it.opts.regExp ? 'regExp' : 'new RegExp';\n  if ($isData) {\n    out += ' var ' + ($valid) + ' = true; try { ' + ($valid) + ' = ' + ($regExpCode) + '(' + ($schemaValue) + ').test(' + ($data) + '); } catch(e) { ' + ($valid) + ' = false; } if ( ';\n    if ($isData) {\n      out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n    }\n    out += ' !' + ($valid) + ') {';\n  } else {\n    var $regexp = it.usePattern($schema);\n    out += ' if ( ';\n    if ($isData) {\n      out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n    }\n    out += ' !' + ($regexp) + '.test(' + ($data) + ') ) {';\n  }\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('pattern') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern:  ';\n    if ($isData) {\n      out += '' + ($schemaValue);\n    } else {\n      out += '' + (it.util.toQuotedString($schema));\n    }\n    out += '  } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should match pattern \"';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + (it.util.escapeQuotes($schema));\n      }\n      out += '\"\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + (it.util.toQuotedString($schema));\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_properties(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $key = 'key' + $lvl,\n    $idx = 'idx' + $lvl,\n    $dataNxt = $it.dataLevel = it.dataLevel + 1,\n    $nextData = 'data' + $dataNxt,\n    $dataProperties = 'dataProperties' + $lvl;\n  var $schemaKeys = Object.keys($schema || {}).filter(notProto),\n    $pProperties = it.schema.patternProperties || {},\n    $pPropertyKeys = Object.keys($pProperties).filter(notProto),\n    $aProperties = it.schema.additionalProperties,\n    $someProperties = $schemaKeys.length || $pPropertyKeys.length,\n    $noAdditional = $aProperties === false,\n    $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,\n    $removeAdditional = it.opts.removeAdditional,\n    $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional,\n    $ownProperties = it.opts.ownProperties,\n    $currentBaseId = it.baseId;\n  var $required = it.schema.required;\n  if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) {\n    var $requiredHash = it.util.toHash($required);\n  }\n\n  function notProto(p) {\n    return p !== '__proto__';\n  }\n  out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';\n  if ($ownProperties) {\n    out += ' var ' + ($dataProperties) + ' = undefined;';\n  }\n  if ($checkAdditional) {\n    if ($ownProperties) {\n      out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n    } else {\n      out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n    }\n    if ($someProperties) {\n      out += ' var isAdditional' + ($lvl) + ' = !(false ';\n      if ($schemaKeys.length) {\n        if ($schemaKeys.length > 8) {\n          out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') ';\n        } else {\n          var arr1 = $schemaKeys;\n          if (arr1) {\n            var $propertyKey, i1 = -1,\n              l1 = arr1.length - 1;\n            while (i1 < l1) {\n              $propertyKey = arr1[i1 += 1];\n              out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';\n            }\n          }\n        }\n      }\n      if ($pPropertyKeys.length) {\n        var arr2 = $pPropertyKeys;\n        if (arr2) {\n          var $pProperty, $i = -1,\n            l2 = arr2.length - 1;\n          while ($i < l2) {\n            $pProperty = arr2[$i += 1];\n            out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') ';\n          }\n        }\n      }\n      out += ' ); if (isAdditional' + ($lvl) + ') { ';\n    }\n    if ($removeAdditional == 'all') {\n      out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n    } else {\n      var $currentErrorPath = it.errorPath;\n      var $additionalProperty = '\\' + ' + $key + ' + \\'';\n      if (it.opts._errorDataPathProperty) {\n        it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n      }\n      if ($noAdditional) {\n        if ($removeAdditional) {\n          out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n        } else {\n          out += ' ' + ($nextValid) + ' = false; ';\n          var $currErrSchemaPath = $errSchemaPath;\n          $errSchemaPath = it.errSchemaPath + '/additionalProperties';\n          var $$outStack = $$outStack || [];\n          $$outStack.push(out);\n          out = ''; /* istanbul ignore else */\n          if (it.createErrors !== false) {\n            out += ' { keyword: \\'' + ('additionalProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \\'' + ($additionalProperty) + '\\' } ';\n            if (it.opts.messages !== false) {\n              out += ' , message: \\'';\n              if (it.opts._errorDataPathProperty) {\n                out += 'is an invalid additional property';\n              } else {\n                out += 'should NOT have additional properties';\n              }\n              out += '\\' ';\n            }\n            if (it.opts.verbose) {\n              out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n            }\n            out += ' } ';\n          } else {\n            out += ' {} ';\n          }\n          var __err = out;\n          out = $$outStack.pop();\n          if (!it.compositeRule && $breakOnError) {\n            /* istanbul ignore if */\n            if (it.async) {\n              out += ' throw new ValidationError([' + (__err) + ']); ';\n            } else {\n              out += ' validate.errors = [' + (__err) + ']; return false; ';\n            }\n          } else {\n            out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n          }\n          $errSchemaPath = $currErrSchemaPath;\n          if ($breakOnError) {\n            out += ' break; ';\n          }\n        }\n      } else if ($additionalIsSchema) {\n        if ($removeAdditional == 'failing') {\n          out += ' var ' + ($errs) + ' = errors;  ';\n          var $wasComposite = it.compositeRule;\n          it.compositeRule = $it.compositeRule = true;\n          $it.schema = $aProperties;\n          $it.schemaPath = it.schemaPath + '.additionalProperties';\n          $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n          $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n          var $passData = $data + '[' + $key + ']';\n          $it.dataPathArr[$dataNxt] = $key;\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n          } else {\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n          }\n          out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; }  ';\n          it.compositeRule = $it.compositeRule = $wasComposite;\n        } else {\n          $it.schema = $aProperties;\n          $it.schemaPath = it.schemaPath + '.additionalProperties';\n          $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n          $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n          var $passData = $data + '[' + $key + ']';\n          $it.dataPathArr[$dataNxt] = $key;\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n          } else {\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n          }\n          if ($breakOnError) {\n            out += ' if (!' + ($nextValid) + ') break; ';\n          }\n        }\n      }\n      it.errorPath = $currentErrorPath;\n    }\n    if ($someProperties) {\n      out += ' } ';\n    }\n    out += ' }  ';\n    if ($breakOnError) {\n      out += ' if (' + ($nextValid) + ') { ';\n      $closingBraces += '}';\n    }\n  }\n  var $useDefaults = it.opts.useDefaults && !it.compositeRule;\n  if ($schemaKeys.length) {\n    var arr3 = $schemaKeys;\n    if (arr3) {\n      var $propertyKey, i3 = -1,\n        l3 = arr3.length - 1;\n      while (i3 < l3) {\n        $propertyKey = arr3[i3 += 1];\n        var $sch = $schema[$propertyKey];\n        if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n          var $prop = it.util.getProperty($propertyKey),\n            $passData = $data + $prop,\n            $hasDefault = $useDefaults && $sch.default !== undefined;\n          $it.schema = $sch;\n          $it.schemaPath = $schemaPath + $prop;\n          $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);\n          $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);\n          $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            $code = it.util.varReplace($code, $nextData, $passData);\n            var $useData = $passData;\n          } else {\n            var $useData = $nextData;\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';\n          }\n          if ($hasDefault) {\n            out += ' ' + ($code) + ' ';\n          } else {\n            if ($requiredHash && $requiredHash[$propertyKey]) {\n              out += ' if ( ' + ($useData) + ' === undefined ';\n              if ($ownProperties) {\n                out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n              }\n              out += ') { ' + ($nextValid) + ' = false; ';\n              var $currentErrorPath = it.errorPath,\n                $currErrSchemaPath = $errSchemaPath,\n                $missingProperty = it.util.escapeQuotes($propertyKey);\n              if (it.opts._errorDataPathProperty) {\n                it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n              }\n              $errSchemaPath = it.errSchemaPath + '/required';\n              var $$outStack = $$outStack || [];\n              $$outStack.push(out);\n              out = ''; /* istanbul ignore else */\n              if (it.createErrors !== false) {\n                out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n                if (it.opts.messages !== false) {\n                  out += ' , message: \\'';\n                  if (it.opts._errorDataPathProperty) {\n                    out += 'is a required property';\n                  } else {\n                    out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n                  }\n                  out += '\\' ';\n                }\n                if (it.opts.verbose) {\n                  out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n                }\n                out += ' } ';\n              } else {\n                out += ' {} ';\n              }\n              var __err = out;\n              out = $$outStack.pop();\n              if (!it.compositeRule && $breakOnError) {\n                /* istanbul ignore if */\n                if (it.async) {\n                  out += ' throw new ValidationError([' + (__err) + ']); ';\n                } else {\n                  out += ' validate.errors = [' + (__err) + ']; return false; ';\n                }\n              } else {\n                out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n              }\n              $errSchemaPath = $currErrSchemaPath;\n              it.errorPath = $currentErrorPath;\n              out += ' } else { ';\n            } else {\n              if ($breakOnError) {\n                out += ' if ( ' + ($useData) + ' === undefined ';\n                if ($ownProperties) {\n                  out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n                }\n                out += ') { ' + ($nextValid) + ' = true; } else { ';\n              } else {\n                out += ' if (' + ($useData) + ' !== undefined ';\n                if ($ownProperties) {\n                  out += ' &&   Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n                }\n                out += ' ) { ';\n              }\n            }\n            out += ' ' + ($code) + ' } ';\n          }\n        }\n        if ($breakOnError) {\n          out += ' if (' + ($nextValid) + ') { ';\n          $closingBraces += '}';\n        }\n      }\n    }\n  }\n  if ($pPropertyKeys.length) {\n    var arr4 = $pPropertyKeys;\n    if (arr4) {\n      var $pProperty, i4 = -1,\n        l4 = arr4.length - 1;\n      while (i4 < l4) {\n        $pProperty = arr4[i4 += 1];\n        var $sch = $pProperties[$pProperty];\n        if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n          $it.schema = $sch;\n          $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);\n          $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);\n          if ($ownProperties) {\n            out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n          } else {\n            out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n          }\n          out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { ';\n          $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n          var $passData = $data + '[' + $key + ']';\n          $it.dataPathArr[$dataNxt] = $key;\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n          } else {\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n          }\n          if ($breakOnError) {\n            out += ' if (!' + ($nextValid) + ') break; ';\n          }\n          out += ' } ';\n          if ($breakOnError) {\n            out += ' else ' + ($nextValid) + ' = true; ';\n          }\n          out += ' }  ';\n          if ($breakOnError) {\n            out += ' if (' + ($nextValid) + ') { ';\n            $closingBraces += '}';\n          }\n        }\n      }\n    }\n  }\n  if ($breakOnError) {\n    out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_propertyNames(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  out += 'var ' + ($errs) + ' = errors;';\n  if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    var $key = 'key' + $lvl,\n      $idx = 'idx' + $lvl,\n      $i = 'i' + $lvl,\n      $invalidName = '\\' + ' + $key + ' + \\'',\n      $dataNxt = $it.dataLevel = it.dataLevel + 1,\n      $nextData = 'data' + $dataNxt,\n      $dataProperties = 'dataProperties' + $lvl,\n      $ownProperties = it.opts.ownProperties,\n      $currentBaseId = it.baseId;\n    if ($ownProperties) {\n      out += ' var ' + ($dataProperties) + ' = undefined; ';\n    }\n    if ($ownProperties) {\n      out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n    } else {\n      out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n    }\n    out += ' var startErrs' + ($lvl) + ' = errors; ';\n    var $passData = $key;\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    var $code = it.validate($it);\n    $it.baseId = $currentBaseId;\n    if (it.util.varOccurences($code, $nextData) < 2) {\n      out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n    } else {\n      out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n    }\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + '<errors; ' + ($i) + '++) { vErrors[' + ($i) + '].propertyName = ' + ($key) + '; }   var err =   '; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('propertyNames') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { propertyName: \\'' + ($invalidName) + '\\' } ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'property name \\\\\\'' + ($invalidName) + '\\\\\\' is invalid\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    if (!it.compositeRule && $breakOnError) {\n      /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError(vErrors); ';\n      } else {\n        out += ' validate.errors = vErrors; return false; ';\n      }\n    }\n    if ($breakOnError) {\n      out += ' break; ';\n    }\n    out += ' } }';\n  }\n  if ($breakOnError) {\n    out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_required(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $vSchema = 'schema' + $lvl;\n  if (!$isData) {\n    if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) {\n      var $required = [];\n      var arr1 = $schema;\n      if (arr1) {\n        var $property, i1 = -1,\n          l1 = arr1.length - 1;\n        while (i1 < l1) {\n          $property = arr1[i1 += 1];\n          var $propertySch = it.schema.properties[$property];\n          if (!($propertySch && (it.opts.strictKeywords ? (typeof $propertySch == 'object' && Object.keys($propertySch).length > 0) || $propertySch === false : it.util.schemaHasRules($propertySch, it.RULES.all)))) {\n            $required[$required.length] = $property;\n          }\n        }\n      }\n    } else {\n      var $required = $schema;\n    }\n  }\n  if ($isData || $required.length) {\n    var $currentErrorPath = it.errorPath,\n      $loopRequired = $isData || $required.length >= it.opts.loopRequired,\n      $ownProperties = it.opts.ownProperties;\n    if ($breakOnError) {\n      out += ' var missing' + ($lvl) + '; ';\n      if ($loopRequired) {\n        if (!$isData) {\n          out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n        }\n        var $i = 'i' + $lvl,\n          $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n        if (it.opts._errorDataPathProperty) {\n          it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n        }\n        out += ' var ' + ($valid) + ' = true; ';\n        if ($isData) {\n          out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n        }\n        out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined ';\n        if ($ownProperties) {\n          out += ' &&   Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n        }\n        out += '; if (!' + ($valid) + ') break; } ';\n        if ($isData) {\n          out += '  }  ';\n        }\n        out += '  if (!' + ($valid) + ') {   ';\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'';\n            if (it.opts._errorDataPathProperty) {\n              out += 'is a required property';\n            } else {\n              out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) {\n          /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n        out += ' } else { ';\n      } else {\n        out += ' if ( ';\n        var arr2 = $required;\n        if (arr2) {\n          var $propertyKey, $i = -1,\n            l2 = arr2.length - 1;\n          while ($i < l2) {\n            $propertyKey = arr2[$i += 1];\n            if ($i) {\n              out += ' || ';\n            }\n            var $prop = it.util.getProperty($propertyKey),\n              $useData = $data + $prop;\n            out += ' ( ( ' + ($useData) + ' === undefined ';\n            if ($ownProperties) {\n              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n            }\n            out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n          }\n        }\n        out += ') {  ';\n        var $propertyPath = 'missing' + $lvl,\n          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n        if (it.opts._errorDataPathProperty) {\n          it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n        }\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'';\n            if (it.opts._errorDataPathProperty) {\n              out += 'is a required property';\n            } else {\n              out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) {\n          /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n        out += ' } else { ';\n      }\n    } else {\n      if ($loopRequired) {\n        if (!$isData) {\n          out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n        }\n        var $i = 'i' + $lvl,\n          $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n        if (it.opts._errorDataPathProperty) {\n          it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n        }\n        if ($isData) {\n          out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) {  var err =   '; /* istanbul ignore else */\n          if (it.createErrors !== false) {\n            out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n            if (it.opts.messages !== false) {\n              out += ' , message: \\'';\n              if (it.opts._errorDataPathProperty) {\n                out += 'is a required property';\n              } else {\n                out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n              }\n              out += '\\' ';\n            }\n            if (it.opts.verbose) {\n              out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n            }\n            out += ' } ';\n          } else {\n            out += ' {} ';\n          }\n          out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { ';\n        }\n        out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined ';\n        if ($ownProperties) {\n          out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n        }\n        out += ') {  var err =   '; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'';\n            if (it.opts._errorDataPathProperty) {\n              out += 'is a required property';\n            } else {\n              out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';\n        if ($isData) {\n          out += '  }  ';\n        }\n      } else {\n        var arr3 = $required;\n        if (arr3) {\n          var $propertyKey, i3 = -1,\n            l3 = arr3.length - 1;\n          while (i3 < l3) {\n            $propertyKey = arr3[i3 += 1];\n            var $prop = it.util.getProperty($propertyKey),\n              $missingProperty = it.util.escapeQuotes($propertyKey),\n              $useData = $data + $prop;\n            if (it.opts._errorDataPathProperty) {\n              it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n            }\n            out += ' if ( ' + ($useData) + ' === undefined ';\n            if ($ownProperties) {\n              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n            }\n            out += ') {  var err =   '; /* istanbul ignore else */\n            if (it.createErrors !== false) {\n              out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n              if (it.opts.messages !== false) {\n                out += ' , message: \\'';\n                if (it.opts._errorDataPathProperty) {\n                  out += 'is a required property';\n                } else {\n                  out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n                }\n                out += '\\' ';\n              }\n              if (it.opts.verbose) {\n                out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n              }\n              out += ' } ';\n            } else {\n              out += ' {} ';\n            }\n            out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n          }\n        }\n      }\n    }\n    it.errorPath = $currentErrorPath;\n  } else if ($breakOnError) {\n    out += ' if (true) {';\n  }\n  return out;\n}\n", "'use strict';\nmodule.exports = function generate_uniqueItems(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  if (($schema || $isData) && it.opts.uniqueItems !== false) {\n    if ($isData) {\n      out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'boolean\\') ' + ($valid) + ' = false; else { ';\n    }\n    out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { ';\n    var $itemType = it.schema.items && it.schema.items.type,\n      $typeIsArray = Array.isArray($itemType);\n    if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) {\n      out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } ';\n    } else {\n      out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; ';\n      var $method = 'checkDataType' + ($typeIsArray ? 's' : '');\n      out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; ';\n      if ($typeIsArray) {\n        out += ' if (typeof item == \\'string\\') item = \\'\"\\' + item; ';\n      }\n      out += ' if (typeof itemIndices[item] == \\'number\\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ';\n    }\n    out += ' } ';\n    if ($isData) {\n      out += '  }  ';\n    }\n    out += ' if (!' + ($valid) + ') {   ';\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = ''; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('uniqueItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should NOT have duplicate items (items ## \\' + j + \\' and \\' + i + \\' are identical)\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema:  ';\n        if ($isData) {\n          out += 'validate.schema' + ($schemaPath);\n        } else {\n          out += '' + ($schema);\n        }\n        out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    var __err = out;\n    out = $$outStack.pop();\n    if (!it.compositeRule && $breakOnError) {\n      /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError([' + (__err) + ']); ';\n      } else {\n        out += ' validate.errors = [' + (__err) + ']; return false; ';\n      }\n    } else {\n      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    }\n    out += ' } ';\n    if ($breakOnError) {\n      out += ' else { ';\n    }\n  } else {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n  }\n  return out;\n}\n", "'use strict';\n\n//all requires must be explicit because browserify won't work with dynamic requires\nmodule.exports = {\n  '$ref': require('./ref'),\n  allOf: require('./allOf'),\n  anyOf: require('./anyOf'),\n  '$comment': require('./comment'),\n  const: require('./const'),\n  contains: require('./contains'),\n  dependencies: require('./dependencies'),\n  'enum': require('./enum'),\n  format: require('./format'),\n  'if': require('./if'),\n  items: require('./items'),\n  maximum: require('./_limit'),\n  minimum: require('./_limit'),\n  maxItems: require('./_limitItems'),\n  minItems: require('./_limitItems'),\n  maxLength: require('./_limitLength'),\n  minLength: require('./_limitLength'),\n  maxProperties: require('./_limitProperties'),\n  minProperties: require('./_limitProperties'),\n  multipleOf: require('./multipleOf'),\n  not: require('./not'),\n  oneOf: require('./oneOf'),\n  pattern: require('./pattern'),\n  properties: require('./properties'),\n  propertyNames: require('./propertyNames'),\n  required: require('./required'),\n  uniqueItems: require('./uniqueItems'),\n  validate: require('./validate')\n};\n", "'use strict';\n\nvar ruleModules = require('../dotjs')\n  , toHash = require('./util').toHash;\n\nmodule.exports = function rules() {\n  var RULES = [\n    { type: 'number',\n      rules: [ { 'maximum': ['exclusiveMaximum'] },\n               { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] },\n    { type: 'string',\n      rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },\n    { type: 'array',\n      rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] },\n    { type: 'object',\n      rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames',\n               { 'properties': ['additionalProperties', 'patternProperties'] } ] },\n    { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] }\n  ];\n\n  var ALL = [ 'type', '$comment' ];\n  var KEYWORDS = [\n    '$schema', '$id', 'id', '$data', '$async', 'title',\n    'description', 'default', 'definitions',\n    'examples', 'readOnly', 'writeOnly',\n    'contentMediaType', 'contentEncoding',\n    'additionalItems', 'then', 'else'\n  ];\n  var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];\n  RULES.all = toHash(ALL);\n  RULES.types = toHash(TYPES);\n\n  RULES.forEach(function (group) {\n    group.rules = group.rules.map(function (keyword) {\n      var implKeywords;\n      if (typeof keyword == 'object') {\n        var key = Object.keys(keyword)[0];\n        implKeywords = keyword[key];\n        keyword = key;\n        implKeywords.forEach(function (k) {\n          ALL.push(k);\n          RULES.all[k] = true;\n        });\n      }\n      ALL.push(keyword);\n      var rule = RULES.all[keyword] = {\n        keyword: keyword,\n        code: ruleModules[keyword],\n        implements: implKeywords\n      };\n      return rule;\n    });\n\n    RULES.all.$comment = {\n      keyword: '$comment',\n      code: ruleModules.$comment\n    };\n\n    if (group.type) RULES.types[group.type] = group;\n  });\n\n  RULES.keywords = toHash(ALL.concat(KEYWORDS));\n  RULES.custom = {};\n\n  return RULES;\n};\n", "'use strict';\n\nvar KEYWORDS = [\n  'multipleOf',\n  'maximum',\n  'exclusiveMaximum',\n  'minimum',\n  'exclusiveMinimum',\n  'maxLength',\n  'minLength',\n  'pattern',\n  'additionalItems',\n  'maxItems',\n  'minItems',\n  'uniqueItems',\n  'maxProperties',\n  'minProperties',\n  'required',\n  'additionalProperties',\n  'enum',\n  'format',\n  'const'\n];\n\nmodule.exports = function (metaSchema, keywordsJsonPointers) {\n  for (var i=0; i<keywordsJsonPointers.length; i++) {\n    metaSchema = JSON.parse(JSON.stringify(metaSchema));\n    var segments = keywordsJsonPointers[i].split('/');\n    var keywords = metaSchema;\n    var j;\n    for (j=1; j<segments.length; j++)\n      keywords = keywords[segments[j]];\n\n    for (j=0; j<KEYWORDS.length; j++) {\n      var key = KEYWORDS[j];\n      var schema = keywords[key];\n      if (schema) {\n        keywords[key] = {\n          anyOf: [\n            schema,\n            { $ref: 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' }\n          ]\n        };\n      }\n    }\n  }\n\n  return metaSchema;\n};\n", "'use strict';\n\nvar MissingRefError = require('./error_classes').MissingRef;\n\nmodule.exports = compileAsync;\n\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 * @this  Ajv\n * @param {Object}   schema schema object\n * @param {Boolean}  meta optional true to compile meta-schema; this parameter can be skipped\n * @param {Function} callback an optional node-style callback, it is called with 2 parameters: error (or null) and validating function.\n * @return {Promise} promise that resolves with a validating function.\n */\nfunction compileAsync(schema, meta, callback) {\n  /* eslint no-shadow: 0 */\n  /* global Promise */\n  /* jshint validthis: true */\n  var self = this;\n  if (typeof this._opts.loadSchema != 'function')\n    throw new Error('options.loadSchema should be a function');\n\n  if (typeof meta == 'function') {\n    callback = meta;\n    meta = undefined;\n  }\n\n  var p = loadMetaSchemaOf(schema).then(function () {\n    var schemaObj = self._addSchema(schema, undefined, meta);\n    return schemaObj.validate || _compileAsync(schemaObj);\n  });\n\n  if (callback) {\n    p.then(\n      function(v) { callback(null, v); },\n      callback\n    );\n  }\n\n  return p;\n\n\n  function loadMetaSchemaOf(sch) {\n    var $schema = sch.$schema;\n    return $schema && !self.getSchema($schema)\n            ? compileAsync.call(self, { $ref: $schema }, true)\n            : Promise.resolve();\n  }\n\n\n  function _compileAsync(schemaObj) {\n    try { return self._compile(schemaObj); }\n    catch(e) {\n      if (e instanceof MissingRefError) return loadMissingSchema(e);\n      throw e;\n    }\n\n\n    function loadMissingSchema(e) {\n      var ref = e.missingSchema;\n      if (added(ref)) throw new Error('Schema ' + ref + ' is loaded but ' + e.missingRef + ' cannot be resolved');\n\n      var schemaPromise = self._loadingSchemas[ref];\n      if (!schemaPromise) {\n        schemaPromise = self._loadingSchemas[ref] = self._opts.loadSchema(ref);\n        schemaPromise.then(removePromise, removePromise);\n      }\n\n      return schemaPromise.then(function (sch) {\n        if (!added(ref)) {\n          return loadMetaSchemaOf(sch).then(function () {\n            if (!added(ref)) self.addSchema(sch, ref, undefined, meta);\n          });\n        }\n      }).then(function() {\n        return _compileAsync(schemaObj);\n      });\n\n      function removePromise() {\n        delete self._loadingSchemas[ref];\n      }\n\n      function added(ref) {\n        return self._refs[ref] || self._schemas[ref];\n      }\n    }\n  }\n}\n", "'use strict';\nmodule.exports = function generate_custom(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $rule = this,\n    $definition = 'definition' + $lvl,\n    $rDef = $rule.definition,\n    $closingBraces = '';\n  var $compile, $inline, $macro, $ruleValidate, $validateCode;\n  if ($isData && $rDef.$data) {\n    $validateCode = 'keywordValidate' + $lvl;\n    var $validateSchema = $rDef.validateSchema;\n    out += ' var ' + ($definition) + ' = RULES.custom[\\'' + ($keyword) + '\\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;';\n  } else {\n    $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);\n    if (!$ruleValidate) return;\n    $schemaValue = 'validate.schema' + $schemaPath;\n    $validateCode = $ruleValidate.code;\n    $compile = $rDef.compile;\n    $inline = $rDef.inline;\n    $macro = $rDef.macro;\n  }\n  var $ruleErrs = $validateCode + '.errors',\n    $i = 'i' + $lvl,\n    $ruleErr = 'ruleErr' + $lvl,\n    $asyncKeyword = $rDef.async;\n  if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema');\n  if (!($inline || $macro)) {\n    out += '' + ($ruleErrs) + ' = null;';\n  }\n  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n  if ($isData && $rDef.$data) {\n    $closingBraces += '}';\n    out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { ';\n    if ($validateSchema) {\n      $closingBraces += '}';\n      out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { ';\n    }\n  }\n  if ($inline) {\n    if ($rDef.statements) {\n      out += ' ' + ($ruleValidate.validate) + ' ';\n    } else {\n      out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; ';\n    }\n  } else if ($macro) {\n    var $it = it.util.copy(it);\n    var $closingBraces = '';\n    $it.level++;\n    var $nextValid = 'valid' + $it.level;\n    $it.schema = $ruleValidate.validate;\n    $it.schemaPath = '';\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    var $code = it.validate($it).replace(/validate\\.schema/g, $validateCode);\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' ' + ($code);\n  } else {\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = '';\n    out += '  ' + ($validateCode) + '.call( ';\n    if (it.opts.passContext) {\n      out += 'this';\n    } else {\n      out += 'self';\n    }\n    if ($compile || $rDef.schema === false) {\n      out += ' , ' + ($data) + ' ';\n    } else {\n      out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' ';\n    }\n    out += ' , (dataPath || \\'\\')';\n    if (it.errorPath != '\"\"') {\n      out += ' + ' + (it.errorPath);\n    }\n    var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n      $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n    out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData )  ';\n    var def_callRuleValidate = out;\n    out = $$outStack.pop();\n    if ($rDef.errors === false) {\n      out += ' ' + ($valid) + ' = ';\n      if ($asyncKeyword) {\n        out += 'await ';\n      }\n      out += '' + (def_callRuleValidate) + '; ';\n    } else {\n      if ($asyncKeyword) {\n        $ruleErrs = 'customErrors' + $lvl;\n        out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } ';\n      } else {\n        out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; ';\n      }\n    }\n  }\n  if ($rDef.modifying) {\n    out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];';\n  }\n  out += '' + ($closingBraces);\n  if ($rDef.valid) {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n  } else {\n    out += ' if ( ';\n    if ($rDef.valid === undefined) {\n      out += ' !';\n      if ($macro) {\n        out += '' + ($nextValid);\n      } else {\n        out += '' + ($valid);\n      }\n    } else {\n      out += ' ' + (!$rDef.valid) + ' ';\n    }\n    out += ') { ';\n    $errorKeyword = $rule.keyword;\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = '';\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = ''; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ($errorKeyword || 'custom') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \\'' + ($rule.keyword) + '\\' } ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should pass \"' + ($rule.keyword) + '\" keyword validation\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    var __err = out;\n    out = $$outStack.pop();\n    if (!it.compositeRule && $breakOnError) {\n      /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError([' + (__err) + ']); ';\n      } else {\n        out += ' validate.errors = [' + (__err) + ']; return false; ';\n      }\n    } else {\n      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    }\n    var def_customError = out;\n    out = $$outStack.pop();\n    if ($inline) {\n      if ($rDef.errors) {\n        if ($rDef.errors != 'full') {\n          out += '  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\"; } ';\n          if (it.opts.verbose) {\n            out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n          }\n          out += ' } ';\n        }\n      } else {\n        if ($rDef.errors === false) {\n          out += ' ' + (def_customError) + ' ';\n        } else {\n          out += ' if (' + ($errs) + ' == errors) { ' + (def_customError) + ' } else {  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\"; } ';\n          if (it.opts.verbose) {\n            out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n          }\n          out += ' } } ';\n        }\n      }\n    } else if ($macro) {\n      out += '   var err =   '; /* istanbul ignore else */\n      if (it.createErrors !== false) {\n        out += ' { keyword: \\'' + ($errorKeyword || 'custom') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \\'' + ($rule.keyword) + '\\' } ';\n        if (it.opts.messages !== false) {\n          out += ' , message: \\'should pass \"' + ($rule.keyword) + '\" keyword validation\\' ';\n        }\n        if (it.opts.verbose) {\n          out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n        }\n        out += ' } ';\n      } else {\n        out += ' {} ';\n      }\n      out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n      if (!it.compositeRule && $breakOnError) {\n        /* istanbul ignore if */\n        if (it.async) {\n          out += ' throw new ValidationError(vErrors); ';\n        } else {\n          out += ' validate.errors = vErrors; return false; ';\n        }\n      }\n    } else {\n      if ($rDef.errors === false) {\n        out += ' ' + (def_customError) + ' ';\n      } else {\n        out += ' if (Array.isArray(' + ($ruleErrs) + ')) { if (vErrors === null) vErrors = ' + ($ruleErrs) + '; else vErrors = vErrors.concat(' + ($ruleErrs) + '); errors = vErrors.length;  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + ';  ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\";  ';\n        if (it.opts.verbose) {\n          out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n        }\n        out += ' } } else { ' + (def_customError) + ' } ';\n      }\n    }\n    out += ' } ';\n    if ($breakOnError) {\n      out += ' else { ';\n    }\n  }\n  return out;\n}\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\": [\n                { \"$ref\": \"#/definitions/nonNegativeInteger\" },\n                { \"default\": 0 }\n            ]\n        },\n        \"simpleTypes\": {\n            \"enum\": [\n                \"array\",\n                \"boolean\",\n                \"integer\",\n                \"null\",\n                \"number\",\n                \"object\",\n                \"string\"\n            ]\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\": [\n                { \"$ref\": \"#\" },\n                { \"$ref\": \"#/definitions/schemaArray\" }\n            ],\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\": [\n                    { \"$ref\": \"#\" },\n                    { \"$ref\": \"#/definitions/stringArray\" }\n                ]\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", "'use strict';\n\nvar metaSchema = require('./refs/json-schema-draft-07.json');\n\nmodule.exports = {\n  $id: 'https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js',\n  definitions: {\n    simpleTypes: metaSchema.definitions.simpleTypes\n  },\n  type: 'object',\n  dependencies: {\n    schema: ['validate'],\n    $data: ['validate'],\n    statements: ['inline'],\n    valid: {not: {required: ['macro']}}\n  },\n  properties: {\n    type: metaSchema.properties.type,\n    schema: {type: 'boolean'},\n    statements: {type: 'boolean'},\n    dependencies: {\n      type: 'array',\n      items: {type: 'string'}\n    },\n    metaSchema: {type: 'object'},\n    modifying: {type: 'boolean'},\n    valid: {type: 'boolean'},\n    $data: {type: 'boolean'},\n    async: {type: 'boolean'},\n    errors: {\n      anyOf: [\n        {type: 'boolean'},\n        {const: 'full'}\n      ]\n    }\n  }\n};\n", "'use strict';\n\nvar IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i;\nvar customRuleCode = require('./dotjs/custom');\nvar definitionSchema = require('./definition_schema');\n\nmodule.exports = {\n  add: addKeyword,\n  get: getKeyword,\n  remove: removeKeyword,\n  validate: validateKeyword\n};\n\n\n/**\n * Define custom keyword\n * @this  Ajv\n * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords).\n * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`.\n * @return {Ajv} this for method chaining\n */\nfunction addKeyword(keyword, definition) {\n  /* jshint validthis: true */\n  /* eslint no-shadow: 0 */\n  var RULES = this.RULES;\n  if (RULES.keywords[keyword])\n    throw new Error('Keyword ' + keyword + ' is already defined');\n\n  if (!IDENTIFIER.test(keyword))\n    throw new Error('Keyword ' + keyword + ' is not a valid identifier');\n\n  if (definition) {\n    this.validateKeyword(definition, true);\n\n    var dataType = definition.type;\n    if (Array.isArray(dataType)) {\n      for (var i=0; i<dataType.length; i++)\n        _addRule(keyword, dataType[i], definition);\n    } else {\n      _addRule(keyword, dataType, definition);\n    }\n\n    var metaSchema = definition.metaSchema;\n    if (metaSchema) {\n      if (definition.$data && this._opts.$data) {\n        metaSchema = {\n          anyOf: [\n            metaSchema,\n            { '$ref': 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' }\n          ]\n        };\n      }\n      definition.validateSchema = this.compile(metaSchema, true);\n    }\n  }\n\n  RULES.keywords[keyword] = RULES.all[keyword] = true;\n\n\n  function _addRule(keyword, dataType, definition) {\n    var ruleGroup;\n    for (var i=0; i<RULES.length; i++) {\n      var rg = RULES[i];\n      if (rg.type == dataType) {\n        ruleGroup = rg;\n        break;\n      }\n    }\n\n    if (!ruleGroup) {\n      ruleGroup = { type: dataType, rules: [] };\n      RULES.push(ruleGroup);\n    }\n\n    var rule = {\n      keyword: keyword,\n      definition: definition,\n      custom: true,\n      code: customRuleCode,\n      implements: definition.implements\n    };\n    ruleGroup.rules.push(rule);\n    RULES.custom[keyword] = rule;\n  }\n\n  return this;\n}\n\n\n/**\n * Get keyword\n * @this  Ajv\n * @param {String} keyword pre-defined or custom keyword.\n * @return {Object|Boolean} custom keyword definition, `true` if it is a predefined keyword, `false` otherwise.\n */\nfunction getKeyword(keyword) {\n  /* jshint validthis: true */\n  var rule = this.RULES.custom[keyword];\n  return rule ? rule.definition : this.RULES.keywords[keyword] || false;\n}\n\n\n/**\n * Remove keyword\n * @this  Ajv\n * @param {String} keyword pre-defined or custom keyword.\n * @return {Ajv} this for method chaining\n */\nfunction removeKeyword(keyword) {\n  /* jshint validthis: true */\n  var RULES = this.RULES;\n  delete RULES.keywords[keyword];\n  delete RULES.all[keyword];\n  delete RULES.custom[keyword];\n  for (var i=0; i<RULES.length; i++) {\n    var rules = RULES[i].rules;\n    for (var j=0; j<rules.length; j++) {\n      if (rules[j].keyword == keyword) {\n        rules.splice(j, 1);\n        break;\n      }\n    }\n  }\n  return this;\n}\n\n\n/**\n * Validate keyword definition\n * @this  Ajv\n * @param {Object} definition keyword definition object.\n * @param {Boolean} throwError true to throw exception if definition is invalid\n * @return {boolean} validation result\n */\nfunction validateKeyword(definition, throwError) {\n  validateKeyword.errors = null;\n  var v = this._validateKeyword = this._validateKeyword\n                                  || this.compile(definitionSchema, true);\n\n  if (v(definition)) return true;\n  validateKeyword.errors = v.errors;\n  if (throwError)\n    throw new Error('custom keyword definition is invalid: '  + this.errorsText(v.errors));\n  else\n    return false;\n}\n", "{\n    \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n    \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n    \"description\": \"Meta-schema for $data reference (JSON Schema extension proposal)\",\n    \"type\": \"object\",\n    \"required\": [ \"$data\" ],\n    \"properties\": {\n        \"$data\": {\n            \"type\": \"string\",\n            \"anyOf\": [\n                { \"format\": \"relative-json-pointer\" }, \n                { \"format\": \"json-pointer\" }\n            ]\n        }\n    },\n    \"additionalProperties\": false\n}\n", "'use strict';\n\nvar compileSchema = require('./compile')\n  , resolve = require('./compile/resolve')\n  , Cache = require('./cache')\n  , SchemaObject = require('./compile/schema_obj')\n  , stableStringify = require('fast-json-stable-stringify')\n  , formats = require('./compile/formats')\n  , rules = require('./compile/rules')\n  , $dataMetaSchema = require('./data')\n  , util = require('./compile/util');\n\nmodule.exports = Ajv;\n\nAjv.prototype.validate = validate;\nAjv.prototype.compile = compile;\nAjv.prototype.addSchema = addSchema;\nAjv.prototype.addMetaSchema = addMetaSchema;\nAjv.prototype.validateSchema = validateSchema;\nAjv.prototype.getSchema = getSchema;\nAjv.prototype.removeSchema = removeSchema;\nAjv.prototype.addFormat = addFormat;\nAjv.prototype.errorsText = errorsText;\n\nAjv.prototype._addSchema = _addSchema;\nAjv.prototype._compile = _compile;\n\nAjv.prototype.compileAsync = require('./compile/async');\nvar customKeyword = require('./keyword');\nAjv.prototype.addKeyword = customKeyword.add;\nAjv.prototype.getKeyword = customKeyword.get;\nAjv.prototype.removeKeyword = customKeyword.remove;\nAjv.prototype.validateKeyword = customKeyword.validate;\n\nvar errorClasses = require('./compile/error_classes');\nAjv.ValidationError = errorClasses.Validation;\nAjv.MissingRefError = errorClasses.MissingRef;\nAjv.$dataMetaSchema = $dataMetaSchema;\n\nvar META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema';\n\nvar META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults' ];\nvar META_SUPPORT_DATA = ['/properties'];\n\n/**\n * Creates validator instance.\n * Usage: `Ajv(opts)`\n * @param {Object} opts optional options\n * @return {Object} ajv instance\n */\nfunction Ajv(opts) {\n  if (!(this instanceof Ajv)) return new Ajv(opts);\n  opts = this._opts = util.copy(opts) || {};\n  setLogger(this);\n  this._schemas = {};\n  this._refs = {};\n  this._fragments = {};\n  this._formats = formats(opts.format);\n\n  this._cache = opts.cache || new Cache;\n  this._loadingSchemas = {};\n  this._compilations = [];\n  this.RULES = rules();\n  this._getId = chooseGetId(opts);\n\n  opts.loopRequired = opts.loopRequired || Infinity;\n  if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;\n  if (opts.serialize === undefined) opts.serialize = stableStringify;\n  this._metaOpts = getMetaSchemaOptions(this);\n\n  if (opts.formats) addInitialFormats(this);\n  if (opts.keywords) addInitialKeywords(this);\n  addDefaultMetaSchema(this);\n  if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);\n  if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}});\n  addInitialSchemas(this);\n}\n\n\n\n/**\n * Validate data using schema\n * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize.\n * @this   Ajv\n * @param  {String|Object} schemaKeyRef key, ref or schema object\n * @param  {Any} data to be validated\n * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).\n */\nfunction validate(schemaKeyRef, data) {\n  var v;\n  if (typeof schemaKeyRef == 'string') {\n    v = this.getSchema(schemaKeyRef);\n    if (!v) throw new Error('no schema with key or ref \"' + schemaKeyRef + '\"');\n  } else {\n    var schemaObj = this._addSchema(schemaKeyRef);\n    v = schemaObj.validate || this._compile(schemaObj);\n  }\n\n  var valid = v(data);\n  if (v.$async !== true) this.errors = v.errors;\n  return valid;\n}\n\n\n/**\n * Create validating function for passed schema.\n * @this   Ajv\n * @param  {Object} schema schema object\n * @param  {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords.\n * @return {Function} validating function\n */\nfunction compile(schema, _meta) {\n  var schemaObj = this._addSchema(schema, undefined, _meta);\n  return schemaObj.validate || this._compile(schemaObj);\n}\n\n\n/**\n * Adds schema to the instance.\n * @this   Ajv\n * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.\n * @param {String} key 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 * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n * @return {Ajv} this for method chaining\n */\nfunction addSchema(schema, key, _skipValidation, _meta) {\n  if (Array.isArray(schema)){\n    for (var i=0; i<schema.length; i++) this.addSchema(schema[i], undefined, _skipValidation, _meta);\n    return this;\n  }\n  var id = this._getId(schema);\n  if (id !== undefined && typeof id != 'string')\n    throw new Error('schema id must be string');\n  key = resolve.normalizeId(key || id);\n  checkUnique(this, key);\n  this._schemas[key] = this._addSchema(schema, _skipValidation, _meta, true);\n  return this;\n}\n\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 * @this   Ajv\n * @param {Object} schema schema object\n * @param {String} key optional schema key\n * @param {Boolean} skipValidation true to skip schema validation, can be used to override validateSchema option for meta-schema\n * @return {Ajv} this for method chaining\n */\nfunction addMetaSchema(schema, key, skipValidation) {\n  this.addSchema(schema, key, skipValidation, true);\n  return this;\n}\n\n\n/**\n * Validate schema\n * @this   Ajv\n * @param {Object} schema schema to validate\n * @param {Boolean} throwOrLogError pass true to throw (or log) an error if invalid\n * @return {Boolean} true if schema is valid\n */\nfunction validateSchema(schema, throwOrLogError) {\n  var $schema = schema.$schema;\n  if ($schema !== undefined && typeof $schema != 'string')\n    throw new Error('$schema must be a string');\n  $schema = $schema || this._opts.defaultMeta || defaultMeta(this);\n  if (!$schema) {\n    this.logger.warn('meta-schema not available');\n    this.errors = null;\n    return true;\n  }\n  var valid = this.validate($schema, schema);\n  if (!valid && throwOrLogError) {\n    var 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\nfunction defaultMeta(self) {\n  var meta = self._opts.meta;\n  self._opts.defaultMeta = typeof meta == 'object'\n                            ? self._getId(meta) || meta\n                            : self.getSchema(META_SCHEMA_ID)\n                              ? META_SCHEMA_ID\n                              : undefined;\n  return self._opts.defaultMeta;\n}\n\n\n/**\n * Get compiled schema from the instance by `key` or `ref`.\n * @this   Ajv\n * @param  {String} keyRef `key` that was passed to `addSchema` or full schema reference (`schema.id` or resolved id).\n * @return {Function} schema validating function (with property `schema`).\n */\nfunction getSchema(keyRef) {\n  var schemaObj = _getSchemaObj(this, keyRef);\n  switch (typeof schemaObj) {\n    case 'object': return schemaObj.validate || this._compile(schemaObj);\n    case 'string': return this.getSchema(schemaObj);\n    case 'undefined': return _getSchemaFragment(this, keyRef);\n  }\n}\n\n\nfunction _getSchemaFragment(self, ref) {\n  var res = resolve.schema.call(self, { schema: {} }, ref);\n  if (res) {\n    var schema = res.schema\n      , root = res.root\n      , baseId = res.baseId;\n    var v = compileSchema.call(self, schema, root, undefined, baseId);\n    self._fragments[ref] = new SchemaObject({\n      ref: ref,\n      fragment: true,\n      schema: schema,\n      root: root,\n      baseId: baseId,\n      validate: v\n    });\n    return v;\n  }\n}\n\n\nfunction _getSchemaObj(self, keyRef) {\n  keyRef = resolve.normalizeId(keyRef);\n  return self._schemas[keyRef] || self._refs[keyRef] || self._fragments[keyRef];\n}\n\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 * @this   Ajv\n * @param  {String|Object|RegExp} schemaKeyRef key, ref, pattern to match key/ref or schema object\n * @return {Ajv} this for method chaining\n */\nfunction removeSchema(schemaKeyRef) {\n  if (schemaKeyRef instanceof RegExp) {\n    _removeAllSchemas(this, this._schemas, schemaKeyRef);\n    _removeAllSchemas(this, this._refs, schemaKeyRef);\n    return this;\n  }\n  switch (typeof schemaKeyRef) {\n    case 'undefined':\n      _removeAllSchemas(this, this._schemas);\n      _removeAllSchemas(this, this._refs);\n      this._cache.clear();\n      return this;\n    case 'string':\n      var schemaObj = _getSchemaObj(this, schemaKeyRef);\n      if (schemaObj) this._cache.del(schemaObj.cacheKey);\n      delete this._schemas[schemaKeyRef];\n      delete this._refs[schemaKeyRef];\n      return this;\n    case 'object':\n      var serialize = this._opts.serialize;\n      var cacheKey = serialize ? serialize(schemaKeyRef) : schemaKeyRef;\n      this._cache.del(cacheKey);\n      var id = this._getId(schemaKeyRef);\n      if (id) {\n        id = resolve.normalizeId(id);\n        delete this._schemas[id];\n        delete this._refs[id];\n      }\n  }\n  return this;\n}\n\n\nfunction _removeAllSchemas(self, schemas, regex) {\n  for (var keyRef in schemas) {\n    var schemaObj = schemas[keyRef];\n    if (!schemaObj.meta && (!regex || regex.test(keyRef))) {\n      self._cache.del(schemaObj.cacheKey);\n      delete schemas[keyRef];\n    }\n  }\n}\n\n\n/* @this   Ajv */\nfunction _addSchema(schema, skipValidation, meta, shouldAddSchema) {\n  if (typeof schema != 'object' && typeof schema != 'boolean')\n    throw new Error('schema should be object or boolean');\n  var serialize = this._opts.serialize;\n  var cacheKey = serialize ? serialize(schema) : schema;\n  var cached = this._cache.get(cacheKey);\n  if (cached) return cached;\n\n  shouldAddSchema = shouldAddSchema || this._opts.addUsedSchema !== false;\n\n  var id = resolve.normalizeId(this._getId(schema));\n  if (id && shouldAddSchema) checkUnique(this, id);\n\n  var willValidate = this._opts.validateSchema !== false && !skipValidation;\n  var recursiveMeta;\n  if (willValidate && !(recursiveMeta = id && id == resolve.normalizeId(schema.$schema)))\n    this.validateSchema(schema, true);\n\n  var localRefs = resolve.ids.call(this, schema);\n\n  var schemaObj = new SchemaObject({\n    id: id,\n    schema: schema,\n    localRefs: localRefs,\n    cacheKey: cacheKey,\n    meta: meta\n  });\n\n  if (id[0] != '#' && shouldAddSchema) this._refs[id] = schemaObj;\n  this._cache.put(cacheKey, schemaObj);\n\n  if (willValidate && recursiveMeta) this.validateSchema(schema, true);\n\n  return schemaObj;\n}\n\n\n/* @this   Ajv */\nfunction _compile(schemaObj, root) {\n  if (schemaObj.compiling) {\n    schemaObj.validate = callValidate;\n    callValidate.schema = schemaObj.schema;\n    callValidate.errors = null;\n    callValidate.root = root ? root : callValidate;\n    if (schemaObj.schema.$async === true)\n      callValidate.$async = true;\n    return callValidate;\n  }\n  schemaObj.compiling = true;\n\n  var currentOpts;\n  if (schemaObj.meta) {\n    currentOpts = this._opts;\n    this._opts = this._metaOpts;\n  }\n\n  var v;\n  try { v = compileSchema.call(this, schemaObj.schema, root, schemaObj.localRefs); }\n  catch(e) {\n    delete schemaObj.validate;\n    throw e;\n  }\n  finally {\n    schemaObj.compiling = false;\n    if (schemaObj.meta) this._opts = currentOpts;\n  }\n\n  schemaObj.validate = v;\n  schemaObj.refs = v.refs;\n  schemaObj.refVal = v.refVal;\n  schemaObj.root = v.root;\n  return v;\n\n\n  /* @this   {*} - custom context, see passContext option */\n  function callValidate() {\n    /* jshint validthis: true */\n    var _validate = schemaObj.validate;\n    var result = _validate.apply(this, arguments);\n    callValidate.errors = _validate.errors;\n    return result;\n  }\n}\n\n\nfunction chooseGetId(opts) {\n  switch (opts.schemaId) {\n    case 'auto': return _get$IdOrId;\n    case 'id': return _getId;\n    default: return _get$Id;\n  }\n}\n\n/* @this   Ajv */\nfunction _getId(schema) {\n  if (schema.$id) this.logger.warn('schema $id ignored', schema.$id);\n  return schema.id;\n}\n\n/* @this   Ajv */\nfunction _get$Id(schema) {\n  if (schema.id) this.logger.warn('schema id ignored', schema.id);\n  return schema.$id;\n}\n\n\nfunction _get$IdOrId(schema) {\n  if (schema.$id && schema.id && schema.$id != schema.id)\n    throw new Error('schema $id is different from id');\n  return schema.$id || schema.id;\n}\n\n\n/**\n * Convert array of error message objects to string\n * @this   Ajv\n * @param  {Array<Object>} errors optional array of validation errors, if not passed errors from the instance are used.\n * @param  {Object} options optional options with properties `separator` and `dataVar`.\n * @return {String} human readable string with all errors descriptions\n */\nfunction errorsText(errors, options) {\n  errors = errors || this.errors;\n  if (!errors) return 'No errors';\n  options = options || {};\n  var separator = options.separator === undefined ? ', ' : options.separator;\n  var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;\n\n  var text = '';\n  for (var i=0; i<errors.length; i++) {\n    var e = errors[i];\n    if (e) text += dataVar + e.dataPath + ' ' + e.message + separator;\n  }\n  return text.slice(0, -separator.length);\n}\n\n\n/**\n * Add custom format\n * @this   Ajv\n * @param {String} name format name\n * @param {String|RegExp|Function} format string is converted to RegExp; function should return boolean (true when valid)\n * @return {Ajv} this for method chaining\n */\nfunction addFormat(name, format) {\n  if (typeof format == 'string') format = new RegExp(format);\n  this._formats[name] = format;\n  return this;\n}\n\n\nfunction addDefaultMetaSchema(self) {\n  var $dataSchema;\n  if (self._opts.$data) {\n    $dataSchema = require('./refs/data.json');\n    self.addMetaSchema($dataSchema, $dataSchema.$id, true);\n  }\n  if (self._opts.meta === false) return;\n  var metaSchema = require('./refs/json-schema-draft-07.json');\n  if (self._opts.$data) metaSchema = $dataMetaSchema(metaSchema, META_SUPPORT_DATA);\n  self.addMetaSchema(metaSchema, META_SCHEMA_ID, true);\n  self._refs['http://json-schema.org/schema'] = META_SCHEMA_ID;\n}\n\n\nfunction addInitialSchemas(self) {\n  var optsSchemas = self._opts.schemas;\n  if (!optsSchemas) return;\n  if (Array.isArray(optsSchemas)) self.addSchema(optsSchemas);\n  else for (var key in optsSchemas) self.addSchema(optsSchemas[key], key);\n}\n\n\nfunction addInitialFormats(self) {\n  for (var name in self._opts.formats) {\n    var format = self._opts.formats[name];\n    self.addFormat(name, format);\n  }\n}\n\n\nfunction addInitialKeywords(self) {\n  for (var name in self._opts.keywords) {\n    var keyword = self._opts.keywords[name];\n    self.addKeyword(name, keyword);\n  }\n}\n\n\nfunction checkUnique(self, id) {\n  if (self._schemas[id] || self._refs[id])\n    throw new Error('schema with key or id \"' + id + '\" already exists');\n}\n\n\nfunction getMetaSchemaOptions(self) {\n  var metaOpts = util.copy(self._opts);\n  for (var i=0; i<META_IGNORE_OPTIONS.length; i++)\n    delete metaOpts[META_IGNORE_OPTIONS[i]];\n  return metaOpts;\n}\n\n\nfunction setLogger(self) {\n  var logger = self._opts.logger;\n  if (logger === false) {\n    self.logger = {log: noop, warn: noop, error: noop};\n  } else {\n    if (logger === undefined) logger = console;\n    if (!(typeof logger == 'object' && logger.log && logger.warn && logger.error))\n      throw new Error('logger must implement log, warn and error methods');\n    self.logger = logger;\n  }\n}\n\n\nfunction noop() {}\n", "{\n    \"id\": \"http://json-schema.org/draft-04/schema#\",\n    \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n    \"description\": \"Core schema meta-schema\",\n    \"definitions\": {\n        \"schemaArray\": {\n            \"type\": \"array\",\n            \"minItems\": 1,\n            \"items\": { \"$ref\": \"#\" }\n        },\n        \"positiveInteger\": {\n            \"type\": \"integer\",\n            \"minimum\": 0\n        },\n        \"positiveIntegerDefault0\": {\n            \"allOf\": [ { \"$ref\": \"#/definitions/positiveInteger\" }, { \"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            \"minItems\": 1,\n            \"uniqueItems\": true\n        }\n    },\n    \"type\": \"object\",\n    \"properties\": {\n        \"id\": {\n            \"type\": \"string\"\n        },\n        \"$schema\": {\n            \"type\": \"string\"\n        },\n        \"title\": {\n            \"type\": \"string\"\n        },\n        \"description\": {\n            \"type\": \"string\"\n        },\n        \"default\": {},\n        \"multipleOf\": {\n            \"type\": \"number\",\n            \"minimum\": 0,\n            \"exclusiveMinimum\": true\n        },\n        \"maximum\": {\n            \"type\": \"number\"\n        },\n        \"exclusiveMaximum\": {\n            \"type\": \"boolean\",\n            \"default\": false\n        },\n        \"minimum\": {\n            \"type\": \"number\"\n        },\n        \"exclusiveMinimum\": {\n            \"type\": \"boolean\",\n            \"default\": false\n        },\n        \"maxLength\": { \"$ref\": \"#/definitions/positiveInteger\" },\n        \"minLength\": { \"$ref\": \"#/definitions/positiveIntegerDefault0\" },\n        \"pattern\": {\n            \"type\": \"string\",\n            \"format\": \"regex\"\n        },\n        \"additionalItems\": {\n            \"anyOf\": [\n                { \"type\": \"boolean\" },\n                { \"$ref\": \"#\" }\n            ],\n            \"default\": {}\n        },\n        \"items\": {\n            \"anyOf\": [\n                { \"$ref\": \"#\" },\n                { \"$ref\": \"#/definitions/schemaArray\" }\n            ],\n            \"default\": {}\n        },\n        \"maxItems\": { \"$ref\": \"#/definitions/positiveInteger\" },\n        \"minItems\": { \"$ref\": \"#/definitions/positiveIntegerDefault0\" },\n        \"uniqueItems\": {\n            \"type\": \"boolean\",\n            \"default\": false\n        },\n        \"maxProperties\": { \"$ref\": \"#/definitions/positiveInteger\" },\n        \"minProperties\": { \"$ref\": \"#/definitions/positiveIntegerDefault0\" },\n        \"required\": { \"$ref\": \"#/definitions/stringArray\" },\n        \"additionalProperties\": {\n            \"anyOf\": [\n                { \"type\": \"boolean\" },\n                { \"$ref\": \"#\" }\n            ],\n            \"default\": {}\n        },\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            \"default\": {}\n        },\n        \"dependencies\": {\n            \"type\": \"object\",\n            \"additionalProperties\": {\n                \"anyOf\": [\n                    { \"$ref\": \"#\" },\n                    { \"$ref\": \"#/definitions/stringArray\" }\n                ]\n            }\n        },\n        \"enum\": {\n            \"type\": \"array\",\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        \"allOf\": { \"$ref\": \"#/definitions/schemaArray\" },\n        \"anyOf\": { \"$ref\": \"#/definitions/schemaArray\" },\n        \"oneOf\": { \"$ref\": \"#/definitions/schemaArray\" },\n        \"not\": { \"$ref\": \"#\" }\n    },\n    \"dependencies\": {\n        \"exclusiveMaximum\": [ \"maximum\" ],\n        \"exclusiveMinimum\": [ \"minimum\" ]\n    },\n    \"default\": {}\n}\n", "/**\n * @fileoverview The instance of Ajv validator.\n * @author Evgeny Poberezkin\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst Ajv = require(\"ajv\"),\n\tmetaSchema = require(\"ajv/lib/refs/json-schema-draft-04.json\");\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nmodule.exports = (additionalOptions = {}) => {\n\tconst ajv = new Ajv({\n\t\tmeta: false,\n\t\tuseDefaults: true,\n\t\tvalidateSchema: false,\n\t\tmissingRefs: \"ignore\",\n\t\tverbose: true,\n\t\tschemaId: \"auto\",\n\t\t...additionalOptions,\n\t});\n\n\tajv.addMetaSchema(metaSchema);\n\t// eslint-disable-next-line no-underscore-dangle -- Ajv's API\n\tajv._opts.defaultMeta = metaSchema.id;\n\n\treturn ajv;\n};\n", "{\n  \"rules\": {\n    \"generator-star\": [\"generator-star-spacing\"],\n    \"global-strict\": [\"strict\"],\n    \"no-arrow-condition\": [\"no-confusing-arrow\", \"no-constant-condition\"],\n    \"no-comma-dangle\": [\"comma-dangle\"],\n    \"no-empty-class\": [\"no-empty-character-class\"],\n    \"no-empty-label\": [\"no-labels\"],\n    \"no-extra-strict\": [\"strict\"],\n    \"no-reserved-keys\": [\"quote-props\"],\n    \"no-space-before-semi\": [\"semi-spacing\"],\n    \"no-wrap-func\": [\"no-extra-parens\"],\n    \"space-after-function-name\": [\"space-before-function-paren\"],\n    \"space-after-keywords\": [\"keyword-spacing\"],\n    \"space-before-function-parentheses\": [\"space-before-function-paren\"],\n    \"space-before-keywords\": [\"keyword-spacing\"],\n    \"space-in-brackets\": [\n      \"object-curly-spacing\",\n      \"array-bracket-spacing\",\n      \"computed-property-spacing\"\n    ],\n    \"space-return-throw-case\": [\"keyword-spacing\"],\n    \"space-unary-word-ops\": [\"space-unary-ops\"],\n    \"spaced-line-comment\": [\"spaced-comment\"]\n  }\n}\n", "/**\n * @fileoverview The `Config` class\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Requirements\n//-----------------------------------------------------------------------------\n\nconst { deepMergeArrays } = require(\"../shared/deep-merge-arrays\");\nconst { flatConfigSchema, hasMethod } = require(\"./flat-config-schema\");\nconst { ObjectSchema } = require(\"@eslint/config-array\");\nconst ajvImport = require(\"../shared/ajv\");\nconst ajv = ajvImport();\nconst ruleReplacements = require(\"../../conf/replacements.json\");\n\n//-----------------------------------------------------------------------------\n// Typedefs\n//-----------------------------------------------------------------------------\n\n/**\n * @import { RuleDefinition } from \"@eslint/core\";\n * @import { Linter } from \"eslint\";\n */\n\n//-----------------------------------------------------------------------------\n// Private Members\n//------------------------------------------------------------------------------\n\n// JSON schema that disallows passing any options\nconst noOptionsSchema = Object.freeze({\n\ttype: \"array\",\n\tminItems: 0,\n\tmaxItems: 0,\n});\n\nconst severities = new Map([\n\t[0, 0],\n\t[1, 1],\n\t[2, 2],\n\t[\"off\", 0],\n\t[\"warn\", 1],\n\t[\"error\", 2],\n]);\n\n/**\n * A collection of compiled validators for rules that have already\n * been validated.\n * @type {WeakMap}\n */\nconst validators = new WeakMap();\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\n/**\n * Throws a helpful error when a rule cannot be found.\n * @param {Object} ruleId The rule identifier.\n * @param {string} ruleId.pluginName The ID of the rule to find.\n * @param {string} ruleId.ruleName The ID of the rule to find.\n * @param {Object} config The config to search in.\n * @throws {TypeError} For missing plugin or rule.\n * @returns {void}\n */\nfunction throwRuleNotFoundError({ pluginName, ruleName }, config) {\n\tconst ruleId = pluginName === \"@\" ? ruleName : `${pluginName}/${ruleName}`;\n\n\tconst errorMessageHeader = `Key \"rules\": Key \"${ruleId}\"`;\n\n\tlet errorMessage = `${errorMessageHeader}: Could not find plugin \"${pluginName}\" in configuration.`;\n\n\tconst missingPluginErrorMessage = errorMessage;\n\n\t// if the plugin exists then we need to check if the rule exists\n\tif (config.plugins && config.plugins[pluginName]) {\n\t\tconst replacementRuleName = ruleReplacements.rules[ruleName];\n\n\t\tif (pluginName === \"@\" && replacementRuleName) {\n\t\t\terrorMessage = `${errorMessageHeader}: Rule \"${ruleName}\" was removed and replaced by \"${replacementRuleName}\".`;\n\t\t} else {\n\t\t\terrorMessage = `${errorMessageHeader}: Could not find \"${ruleName}\" in plugin \"${pluginName}\".`;\n\n\t\t\t// otherwise, let's see if we can find the rule name elsewhere\n\t\t\tfor (const [otherPluginName, otherPlugin] of Object.entries(\n\t\t\t\tconfig.plugins,\n\t\t\t)) {\n\t\t\t\tif (otherPlugin.rules && otherPlugin.rules[ruleName]) {\n\t\t\t\t\terrorMessage += ` Did you mean \"${otherPluginName}/${ruleName}\"?`;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// falls through to throw error\n\t}\n\n\tconst error = new TypeError(errorMessage);\n\n\tif (errorMessage === missingPluginErrorMessage) {\n\t\terror.messageTemplate = \"config-plugin-missing\";\n\t\terror.messageData = { pluginName, ruleId };\n\t}\n\n\tthrow error;\n}\n\n/**\n * The error type when a rule has an invalid `meta.schema`.\n */\nclass InvalidRuleOptionsSchemaError extends Error {\n\t/**\n\t * Creates a new instance.\n\t * @param {string} ruleId Id of the rule that has an invalid `meta.schema`.\n\t * @param {Error} processingError Error caught while processing the `meta.schema`.\n\t */\n\tconstructor(ruleId, processingError) {\n\t\tsuper(\n\t\t\t`Error while processing options validation schema of rule '${ruleId}': ${processingError.message}`,\n\t\t\t{ cause: processingError },\n\t\t);\n\t\tthis.code = \"ESLINT_INVALID_RULE_OPTIONS_SCHEMA\";\n\t}\n}\n\n/**\n * Parses a ruleId into its plugin and rule parts.\n * @param {string} ruleId The rule ID to parse.\n * @returns {{pluginName:string,ruleName:string}} The plugin and rule\n *      parts of the ruleId;\n */\nfunction parseRuleId(ruleId) {\n\tlet pluginName, ruleName;\n\n\t// distinguish between core rules and plugin rules\n\tif (ruleId.includes(\"/\")) {\n\t\t// mimic scoped npm packages\n\t\tif (ruleId.startsWith(\"@\")) {\n\t\t\tpluginName = ruleId.slice(0, ruleId.lastIndexOf(\"/\"));\n\t\t} else {\n\t\t\tpluginName = ruleId.slice(0, ruleId.indexOf(\"/\"));\n\t\t}\n\n\t\truleName = ruleId.slice(pluginName.length + 1);\n\t} else {\n\t\tpluginName = \"@\";\n\t\truleName = ruleId;\n\t}\n\n\treturn {\n\t\tpluginName,\n\t\truleName,\n\t};\n}\n\n/**\n * Retrieves a rule instance from a given config based on the ruleId.\n * @param {string} ruleId The rule ID to look for.\n * @param {Linter.Config} config The config to search.\n * @returns {RuleDefinition|undefined} The rule if found\n *      or undefined if not.\n */\nfunction getRuleFromConfig(ruleId, config) {\n\tconst { pluginName, ruleName } = parseRuleId(ruleId);\n\n\treturn config.plugins?.[pluginName]?.rules?.[ruleName];\n}\n\n/**\n * Gets a complete options schema for a rule.\n * @param {RuleDefinition} rule A rule object\n * @throws {TypeError} If `meta.schema` is specified but is not an array, object or `false`.\n * @returns {Object|null} JSON Schema for the rule's options. `null` if `meta.schema` is `false`.\n */\nfunction getRuleOptionsSchema(rule) {\n\tif (!rule.meta) {\n\t\treturn { ...noOptionsSchema }; // default if `meta.schema` is not specified\n\t}\n\n\tconst schema = rule.meta.schema;\n\n\tif (typeof schema === \"undefined\") {\n\t\treturn { ...noOptionsSchema }; // default if `meta.schema` is not specified\n\t}\n\n\t// `schema:false` is an allowed explicit opt-out of options validation for the rule\n\tif (schema === false) {\n\t\treturn null;\n\t}\n\n\tif (typeof schema !== \"object\" || schema === null) {\n\t\tthrow new TypeError(\"Rule's `meta.schema` must be an array or object\");\n\t}\n\n\t// ESLint-specific array form needs to be converted into a valid JSON Schema definition\n\tif (Array.isArray(schema)) {\n\t\tif (schema.length) {\n\t\t\treturn {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: schema,\n\t\t\t\tminItems: 0,\n\t\t\t\tmaxItems: schema.length,\n\t\t\t};\n\t\t}\n\n\t\t// `schema:[]` is an explicit way to specify that the rule does not accept any options\n\t\treturn { ...noOptionsSchema };\n\t}\n\n\t// `schema:<object>` is assumed to be a valid JSON Schema definition\n\treturn schema;\n}\n\n/**\n * Splits a plugin identifier in the form a/b/c into two parts: a/b and c.\n * @param {string} identifier The identifier to parse.\n * @returns {{objectName: string, pluginName: string}} The parts of the plugin\n *      name.\n */\nfunction splitPluginIdentifier(identifier) {\n\tconst parts = identifier.split(\"/\");\n\n\treturn {\n\t\tobjectName: parts.pop(),\n\t\tpluginName: parts.join(\"/\"),\n\t};\n}\n\n/**\n * Normalizes a language name by replacing the built-in `@/` plugin prefix with `js/`.\n * @param {string} languageName The language name to normalize.\n * @returns {string} The normalized language name.\n */\nfunction normalizeLanguageName(languageName) {\n\treturn languageName.startsWith(\"@/\")\n\t\t? `js/${languageName.slice(2)}`\n\t\t: languageName;\n}\n\n/**\n * Checks if a rule's `meta.languages` supports the given language.\n * @param {Array<string>|undefined} ruleLangs The rule's `meta.languages` array.\n * @param {string} configLanguageName The normalized language name from the config (e.g., \"js/js\").\n * @param {Array<string>} validPluginNames The valid plugin name aliases for the config's plugin\n *   (normalized plugin name plus its `meta.namespace` if defined).\n * @returns {boolean} True if the rule supports the language, false otherwise.\n */\nfunction doesRuleSupportLanguage(\n\truleLangs,\n\tconfigLanguageName,\n\tvalidPluginNames,\n) {\n\t// If no languages specified, works with all languages (backward compatible)\n\tif (!ruleLangs) {\n\t\treturn true;\n\t}\n\n\tconst { objectName: configLangPart } =\n\t\tsplitPluginIdentifier(configLanguageName);\n\n\tfor (const langEntry of ruleLangs) {\n\t\t// Skip non-string entries\n\t\tif (typeof langEntry !== \"string\") {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// \"*\" matches any language\n\t\tif (langEntry === \"*\") {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Direct match\n\t\tif (langEntry === configLanguageName) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst { pluginName: rulePluginPart, objectName: ruleLangPart } =\n\t\t\tsplitPluginIdentifier(langEntry);\n\n\t\t// \"plugin/*\" wildcard - matches any language from that plugin (by name or namespace)\n\t\tif (ruleLangPart === \"*\") {\n\t\t\tif (validPluginNames.includes(rulePluginPart)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else {\n\t\t\t// Match by plugin name or namespace, with exact language part\n\t\t\tif (\n\t\t\t\tvalidPluginNames.includes(rulePluginPart) &&\n\t\t\t\truleLangPart === configLangPart\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Returns the name of an object in the config by reading its `meta` key.\n * @param {Object} object The object to check.\n * @returns {string?} The name of the object if found or `null` if there\n *      is no name.\n */\nfunction getObjectId(object) {\n\t// first check old-style name\n\tlet name = object.name;\n\n\tif (!name) {\n\t\tif (!object.meta) {\n\t\t\treturn null;\n\t\t}\n\n\t\tname = object.meta.name;\n\n\t\tif (!name) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t// now check for old-style version\n\tlet version = object.version;\n\n\tif (!version) {\n\t\tversion = object.meta && object.meta.version;\n\t}\n\n\t// if there's a version then append that\n\tif (version) {\n\t\treturn `${name}@${version}`;\n\t}\n\n\treturn name;\n}\n\n/**\n * Asserts that a value is not a function.\n * @param {any} value The value to check.\n * @param {string} key The key of the value in the object.\n * @param {string} objectKey The key of the object being checked.\n * @returns {void}\n * @throws {TypeError} If the value is a function.\n */\nfunction assertNotFunction(value, key, objectKey) {\n\tif (typeof value === \"function\") {\n\t\tconst error = new TypeError(\n\t\t\t`Cannot serialize key \"${key}\" in \"${objectKey}\": Function values are not supported.`,\n\t\t);\n\n\t\terror.messageTemplate = \"config-serialize-function\";\n\t\terror.messageData = { key, objectKey };\n\n\t\tthrow error;\n\t}\n}\n\n/**\n * Converts a languageOptions object to a JSON representation.\n * @param {Record<string, any>} languageOptions The options to create a JSON\n *     representation of.\n * @param {string} objectKey The key of the object being converted.\n * @returns {Record<string, any>} The JSON representation of the languageOptions.\n * @throws {TypeError} If a function is found in the languageOptions.\n */\nfunction languageOptionsToJSON(languageOptions, objectKey = \"languageOptions\") {\n\tif (typeof languageOptions.toJSON === \"function\") {\n\t\tconst result = languageOptions.toJSON();\n\n\t\tassertNotFunction(result, \"toJSON\", objectKey);\n\n\t\treturn result;\n\t}\n\n\tconst result = {};\n\n\tfor (const [key, value] of Object.entries(languageOptions)) {\n\t\tif (value) {\n\t\t\tif (typeof value === \"object\") {\n\t\t\t\tconst name = getObjectId(value);\n\n\t\t\t\tif (typeof value.toJSON === \"function\") {\n\t\t\t\t\tresult[key] = value.toJSON();\n\t\t\t\t\tassertNotFunction(result[key], key, objectKey);\n\t\t\t\t} else if (name && hasMethod(value)) {\n\t\t\t\t\tresult[key] = name;\n\t\t\t\t} else {\n\t\t\t\t\tresult[key] = languageOptionsToJSON(value, key);\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tassertNotFunction(value, key, objectKey);\n\t\t}\n\n\t\tresult[key] = value;\n\t}\n\n\treturn result;\n}\n\n/**\n * Gets or creates a validator for a rule.\n * @param {Object} rule The rule to get a validator for.\n * @param {string} ruleId The ID of the rule (for error reporting).\n * @returns {Function|null} A validation function or null if no validation is needed.\n * @throws {InvalidRuleOptionsSchemaError} If a rule's `meta.schema` is invalid.\n */\nfunction getOrCreateValidator(rule, ruleId) {\n\tif (!validators.has(rule)) {\n\t\ttry {\n\t\t\tconst schema = getRuleOptionsSchema(rule);\n\n\t\t\tif (schema) {\n\t\t\t\tvalidators.set(rule, ajv.compile(schema));\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tthrow new InvalidRuleOptionsSchemaError(ruleId, err);\n\t\t}\n\t}\n\n\treturn validators.get(rule);\n}\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * Represents a normalized configuration object.\n */\nclass Config {\n\t/**\n\t * The name to use for the language when serializing to JSON.\n\t * @type {string|undefined}\n\t */\n\t#languageName;\n\n\t/**\n\t * The name to use for the processor when serializing to JSON.\n\t * @type {string|undefined}\n\t */\n\t#processorName;\n\n\t/**\n\t * Creates a new instance.\n\t * @param {Object} config The configuration object.\n\t */\n\tconstructor(config) {\n\t\tconst { plugins, language, languageOptions, processor, ...otherKeys } =\n\t\t\tconfig;\n\n\t\t// Validate config object\n\t\tconst schema = new ObjectSchema(flatConfigSchema);\n\n\t\tschema.validate(config);\n\n\t\t// first, copy all the other keys over\n\t\tObject.assign(this, otherKeys);\n\n\t\t// ensure that a language is specified\n\t\tif (!language) {\n\t\t\tthrow new TypeError(\"Key 'language' is required.\");\n\t\t}\n\n\t\t// copy the rest over\n\t\tthis.plugins = plugins;\n\t\tthis.language = language;\n\n\t\t// Check language value\n\t\tconst {\n\t\t\tpluginName: languagePluginName,\n\t\t\tobjectName: localLanguageName,\n\t\t} = splitPluginIdentifier(language);\n\n\t\tthis.#languageName = language;\n\n\t\tif (\n\t\t\t!plugins ||\n\t\t\t!plugins[languagePluginName] ||\n\t\t\t!plugins[languagePluginName].languages ||\n\t\t\t!plugins[languagePluginName].languages[localLanguageName]\n\t\t) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Key \"language\": Could not find \"${localLanguageName}\" in plugin \"${languagePluginName}\".`,\n\t\t\t);\n\t\t}\n\n\t\tthis.language =\n\t\t\tplugins[languagePluginName].languages[localLanguageName];\n\n\t\tif (this.language.defaultLanguageOptions ?? languageOptions) {\n\t\t\tthis.languageOptions = flatConfigSchema.languageOptions.merge(\n\t\t\t\tthis.language.defaultLanguageOptions,\n\t\t\t\tlanguageOptions,\n\t\t\t);\n\t\t} else {\n\t\t\tthis.languageOptions = {};\n\t\t}\n\n\t\t// Validate language options\n\t\ttry {\n\t\t\tthis.language.validateLanguageOptions(this.languageOptions);\n\t\t} catch (error) {\n\t\t\tthrow new TypeError(`Key \"languageOptions\": ${error.message}`, {\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t}\n\n\t\t// Normalize language options if necessary\n\t\tif (this.language.normalizeLanguageOptions) {\n\t\t\tthis.languageOptions = this.language.normalizeLanguageOptions(\n\t\t\t\tthis.languageOptions,\n\t\t\t);\n\t\t}\n\n\t\t// Check processor value\n\t\tif (processor) {\n\t\t\tthis.processor = processor;\n\n\t\t\tif (typeof processor === \"string\") {\n\t\t\t\tconst { pluginName, objectName: localProcessorName } =\n\t\t\t\t\tsplitPluginIdentifier(processor);\n\n\t\t\t\tthis.#processorName = processor;\n\n\t\t\t\tif (\n\t\t\t\t\t!plugins ||\n\t\t\t\t\t!plugins[pluginName] ||\n\t\t\t\t\t!plugins[pluginName].processors ||\n\t\t\t\t\t!plugins[pluginName].processors[localProcessorName]\n\t\t\t\t) {\n\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t`Key \"processor\": Could not find \"${localProcessorName}\" in plugin \"${pluginName}\".`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthis.processor =\n\t\t\t\t\tplugins[pluginName].processors[localProcessorName];\n\t\t\t} else if (typeof processor === \"object\") {\n\t\t\t\tthis.#processorName = getObjectId(processor);\n\t\t\t\tthis.processor = processor;\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\"Key 'processor' must be a string or an object.\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Process the rules\n\t\tif (this.rules) {\n\t\t\tthis.#normalizeRulesConfig();\n\t\t\tthis.validateRulesConfig(this.rules);\n\t\t}\n\t}\n\n\t/**\n\t * Converts the configuration to a JSON representation.\n\t * @returns {Record<string, any>} The JSON representation of the configuration.\n\t * @throws {Error} If the configuration cannot be serialized.\n\t */\n\ttoJSON() {\n\t\tif (this.processor && !this.#processorName) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Could not serialize processor object (missing 'meta' object).\",\n\t\t\t);\n\t\t}\n\n\t\tif (!this.#languageName) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Could not serialize language object (missing 'meta' object).\",\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\t...this,\n\t\t\tplugins: Object.entries(this.plugins).map(([namespace, plugin]) => {\n\t\t\t\tconst pluginId = getObjectId(plugin);\n\n\t\t\t\tif (!pluginId) {\n\t\t\t\t\treturn namespace;\n\t\t\t\t}\n\n\t\t\t\treturn `${namespace}:${pluginId}`;\n\t\t\t}),\n\t\t\tlanguage: this.#languageName,\n\t\t\tlanguageOptions: languageOptionsToJSON(this.languageOptions),\n\t\t\tprocessor: this.#processorName,\n\t\t};\n\t}\n\n\t/**\n\t * Gets a rule configuration by its ID.\n\t * @param {string} ruleId The ID of the rule to get.\n\t * @returns {RuleDefinition|undefined} The rule definition from the plugin, or `undefined` if the rule is not found.\n\t */\n\tgetRuleDefinition(ruleId) {\n\t\treturn getRuleFromConfig(ruleId, this);\n\t}\n\n\t/**\n\t * Normalizes the rules configuration. Ensures that each rule config is\n\t * an array and that the severity is a number. Applies meta.defaultOptions.\n\t * This function modifies `this.rules`.\n\t * @returns {void}\n\t */\n\t#normalizeRulesConfig() {\n\t\tfor (const [ruleId, originalConfig] of Object.entries(this.rules)) {\n\t\t\t// ensure rule config is an array\n\t\t\tlet ruleConfig = Array.isArray(originalConfig)\n\t\t\t\t? originalConfig\n\t\t\t\t: [originalConfig];\n\n\t\t\t// normalize severity\n\t\t\truleConfig[0] = severities.get(ruleConfig[0]);\n\n\t\t\tconst rule = getRuleFromConfig(ruleId, this);\n\n\t\t\t// apply meta.defaultOptions\n\t\t\tconst slicedOptions = ruleConfig.slice(1);\n\t\t\tconst mergedOptions = deepMergeArrays(\n\t\t\t\trule?.meta?.defaultOptions,\n\t\t\t\tslicedOptions,\n\t\t\t);\n\n\t\t\tif (mergedOptions.length) {\n\t\t\t\truleConfig = [ruleConfig[0], ...mergedOptions];\n\t\t\t}\n\n\t\t\tthis.rules[ruleId] = ruleConfig;\n\t\t}\n\t}\n\n\t/**\n\t * Validates all of the rule configurations in the given rules config\n\t * against the plugins in this instance. This is used primarily to\n\t * validate inline configuration rules while inting.\n\t * @param {Object} rulesConfig The rules config to validate.\n\t * @returns {void}\n\t * @throws {Error} If a rule's configuration does not match its schema.\n\t * @throws {TypeError} If the rulesConfig is not provided or is invalid.\n\t * @throws {InvalidRuleOptionsSchemaError} If a rule's `meta.schema` is invalid.\n\t * @throws {TypeError} If a rule is not found in the plugins.\n\t * @throws {TypeError} If a rule does not support the current language.\n\t */\n\tvalidateRulesConfig(rulesConfig) {\n\t\tif (!rulesConfig) {\n\t\t\tthrow new TypeError(\"Config is required for validation.\");\n\t\t}\n\n\t\t// Normalize \"@/\" prefix to \"js/\" for matching and user-facing messages\n\t\tconst normalizedLanguageName = normalizeLanguageName(\n\t\t\tthis.#languageName,\n\t\t);\n\n\t\t// Compute valid plugin name aliases for the config's language plugin once\n\t\tconst { pluginName: configPluginName } = splitPluginIdentifier(\n\t\t\tnormalizedLanguageName,\n\t\t);\n\t\tconst configPlugin =\n\t\t\tthis.plugins[configPluginName] ??\n\t\t\t(configPluginName === \"js\" ? this.plugins[\"@\"] : void 0);\n\t\tconst validPluginNames = configPlugin?.meta?.namespace\n\t\t\t? [configPluginName, configPlugin.meta.namespace]\n\t\t\t: [configPluginName];\n\t\tconst unsupportedLanguageRules = [];\n\n\t\tfor (const [ruleId, ruleOptions] of Object.entries(rulesConfig)) {\n\t\t\t// check for edge case\n\t\t\tif (ruleId === \"__proto__\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * If a rule is disabled, we don't do any validation. This allows\n\t\t\t * users to safely set any value to 0 or \"off\" without worrying\n\t\t\t * that it will cause a validation error.\n\t\t\t *\n\t\t\t * Note: ruleOptions is always an array at this point because\n\t\t\t * this validation occurs after FlatConfigArray has merged and\n\t\t\t * normalized values.\n\t\t\t */\n\t\t\tif (ruleOptions[0] === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst rule = getRuleFromConfig(ruleId, this);\n\n\t\t\tif (!rule) {\n\t\t\t\tthrowRuleNotFoundError(parseRuleId(ruleId), this);\n\t\t\t}\n\n\t\t\t// Validate meta.languages structure if present (only for enabled rules)\n\t\t\tif (rule.meta?.languages !== void 0) {\n\t\t\t\tif (!Array.isArray(rule.meta.languages)) {\n\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t`Key \"rules\": Key \"${ruleId}\": Key \"meta\": Key \"languages\": Expected an array.`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tfor (const lang of rule.meta.languages) {\n\t\t\t\t\tif (typeof lang !== \"string\") {\n\t\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t\t`Key \"rules\": Key \"${ruleId}\": Key \"meta\": Key \"languages\": Expected each element to be a string.`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Check if the rule supports the current language\n\t\t\tif (\n\t\t\t\t!doesRuleSupportLanguage(\n\t\t\t\t\trule.meta?.languages,\n\t\t\t\t\tnormalizedLanguageName,\n\t\t\t\t\tvalidPluginNames,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tunsupportedLanguageRules.push(ruleId);\n\t\t\t}\n\n\t\t\tconst validateRule = getOrCreateValidator(rule, ruleId);\n\n\t\t\tif (validateRule) {\n\t\t\t\tvalidateRule(ruleOptions.slice(1));\n\n\t\t\t\tif (validateRule.errors) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Key \"rules\": Key \"${ruleId}\":\\n${validateRule.errors\n\t\t\t\t\t\t\t.map(error => {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\terror.keyword === \"additionalProperties\" &&\n\t\t\t\t\t\t\t\t\terror.schema === false &&\n\t\t\t\t\t\t\t\t\ttypeof error.parentSchema?.properties ===\n\t\t\t\t\t\t\t\t\t\t\"object\" &&\n\t\t\t\t\t\t\t\t\ttypeof error.params?.additionalProperty ===\n\t\t\t\t\t\t\t\t\t\t\"string\"\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tconst expectedProperties = Object.keys(\n\t\t\t\t\t\t\t\t\t\terror.parentSchema.properties,\n\t\t\t\t\t\t\t\t\t).map(property => `\"${property}\"`);\n\n\t\t\t\t\t\t\t\t\treturn `\\tValue ${JSON.stringify(error.data)} ${error.message}.\\n\\t\\tUnexpected property \"${error.params.additionalProperty}\". Expected properties: ${expectedProperties.join(\", \")}.\\n`;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn `\\tValue ${JSON.stringify(error.data)} ${error.message}.\\n`;\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.join(\"\")}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (unsupportedLanguageRules.length > 0) {\n\t\t\tconst error = new TypeError(\n\t\t\t\t`Key \"rules\": The following rules do not support the language \"${normalizedLanguageName}\":\\n${unsupportedLanguageRules.map(ruleId => `\\t- \"${ruleId}\"`).join(\"\\n\")}`,\n\t\t\t);\n\n\t\t\terror.messageTemplate = \"rule-unsupported-language\";\n\t\t\terror.messageData = {\n\t\t\t\truleIds: unsupportedLanguageRules,\n\t\t\t\tlanguage: normalizedLanguageName,\n\t\t\t};\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/**\n\t * Gets a complete options schema for a rule.\n\t * @param {RuleDefinition} ruleDefinition A rule definition object.\n\t * @throws {TypeError} If `meta.schema` is specified but is not an array, object or `false`.\n\t * @returns {Object|null} JSON Schema for the rule's options. `null` if `meta.schema` is `false`.\n\t */\n\tstatic getRuleOptionsSchema(ruleDefinition) {\n\t\treturn getRuleOptionsSchema(ruleDefinition);\n\t}\n\n\t/**\n\t * Normalizes the severity value of a rule's configuration to a number\n\t * @param {(number|string|[number, ...*]|[string, ...*])} ruleConfig A rule's configuration value, generally\n\t * received from the user. A valid config value is either 0, 1, 2, the string \"off\" (treated the same as 0),\n\t * the string \"warn\" (treated the same as 1), the string \"error\" (treated the same as 2), or an array\n\t * whose first element is one of the above values. Strings are matched case-insensitively.\n\t * @returns {(0|1|2)} The numeric severity value if the config value was valid, otherwise 0.\n\t */\n\tstatic getRuleNumericSeverity(ruleConfig) {\n\t\tconst severityValue = Array.isArray(ruleConfig)\n\t\t\t? ruleConfig[0]\n\t\t\t: ruleConfig;\n\n\t\tif (severities.has(severityValue)) {\n\t\t\treturn severities.get(severityValue);\n\t\t}\n\n\t\tif (typeof severityValue === \"string\") {\n\t\t\treturn severities.get(severityValue.toLowerCase()) ?? 0;\n\t\t}\n\n\t\treturn 0;\n\t}\n}\n\nmodule.exports = { Config };\n", "/**\n * @fileoverview A module that filters reported problems based on `eslint-disable` and `eslint-enable` comments\n * @author Teddy Katz\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"../types\").Linter.LintMessage} LintMessage */\n/** @typedef {import(\"@eslint/core\").Language} Language */\n/** @typedef {import(\"@eslint/core\").Position} Position */\n/** @typedef {import(\"@eslint/core\").RulesConfig} RulesConfig */\n\n//------------------------------------------------------------------------------\n// Module Definition\n//------------------------------------------------------------------------------\n\nconst escapeRegExp = require(\"escape-string-regexp\");\nconst { Config } = require(\"../config/config.js\");\n\n/**\n * Compares the locations of two objects in a source file\n * @param {Position} itemA The first object\n * @param {Position} itemB The second object\n * @returns {number} A value less than 1 if itemA appears before itemB in the source file, greater than 1 if\n * itemA appears after itemB in the source file, or 0 if itemA and itemB have the same location.\n */\nfunction compareLocations(itemA, itemB) {\n\treturn itemA.line - itemB.line || itemA.column - itemB.column;\n}\n\n/**\n * Groups a set of directives into sub-arrays by their parent comment.\n * @param {Iterable<Directive>} directives Unused directives to be removed.\n * @returns {Directive[][]} Directives grouped by their parent comment.\n */\nfunction groupByParentDirective(directives) {\n\tconst groups = new Map();\n\n\tfor (const directive of directives) {\n\t\tconst {\n\t\t\tunprocessedDirective: { parentDirective },\n\t\t} = directive;\n\n\t\tif (groups.has(parentDirective)) {\n\t\t\tgroups.get(parentDirective).push(directive);\n\t\t} else {\n\t\t\tgroups.set(parentDirective, [directive]);\n\t\t}\n\t}\n\n\treturn [...groups.values()];\n}\n\n/**\n * Creates removal details for a set of directives within the same comment.\n * @param {Directive[]} directives Unused directives to be removed.\n * @param {{node: Token, value: string}} parentDirective Data about the backing directive.\n * @param {SourceCode} sourceCode The source code object for the file being linted.\n * @returns {{ description, fix, unprocessedDirective }[]} Details for later creation of output Problems.\n */\nfunction createIndividualDirectivesRemoval(\n\tdirectives,\n\tparentDirective,\n\tsourceCode,\n) {\n\t/*\n\t * Get the list of the rules text without any surrounding whitespace. In order to preserve the original\n\t * formatting, we don't want to change that whitespace.\n\t *\n\t *     // eslint-disable-line rule-one , rule-two , rule-three -- comment\n\t *                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\t */\n\tconst listText = parentDirective.value.trim();\n\n\t// Calculate where it starts in the source code text\n\tconst listStart = sourceCode.text.indexOf(\n\t\tlistText,\n\t\tsourceCode.getRange(parentDirective.node)[0],\n\t);\n\n\t/*\n\t * We can assume that `listText` contains multiple elements.\n\t * Otherwise, this function wouldn't be called - if there is\n\t * only one rule in the list, then the whole comment must be removed.\n\t */\n\n\treturn directives.map(directive => {\n\t\tconst { ruleId } = directive;\n\n\t\tconst regex = new RegExp(\n\t\t\tString.raw`(?:^|\\s*,\\s*)(?<quote>['\"]?)${escapeRegExp(ruleId)}\\k<quote>(?:\\s*,\\s*|$)`,\n\t\t\t\"u\",\n\t\t);\n\t\tconst match = regex.exec(listText);\n\t\tconst matchedText = match[0];\n\t\tconst matchStart = listStart + match.index;\n\t\tconst matchEnd = matchStart + matchedText.length;\n\n\t\tconst firstIndexOfComma = matchedText.indexOf(\",\");\n\t\tconst lastIndexOfComma = matchedText.lastIndexOf(\",\");\n\n\t\tlet removalStart, removalEnd;\n\n\t\tif (firstIndexOfComma !== lastIndexOfComma) {\n\t\t\t/*\n\t\t\t * Since there are two commas, this must one of the elements in the middle of the list.\n\t\t\t * Matched range starts where the previous rule name ends, and ends where the next rule name starts.\n\t\t\t *\n\t\t\t *     // eslint-disable-line rule-one , rule-two , rule-three -- comment\n\t\t\t *                                    ^^^^^^^^^^^^^^\n\t\t\t *\n\t\t\t * We want to remove only the content between the two commas, and also one of the commas.\n\t\t\t *\n\t\t\t *     // eslint-disable-line rule-one , rule-two , rule-three -- comment\n\t\t\t *                                     ^^^^^^^^^^^\n\t\t\t */\n\t\t\tremovalStart = matchStart + firstIndexOfComma;\n\t\t\tremovalEnd = matchStart + lastIndexOfComma;\n\t\t} else {\n\t\t\t/*\n\t\t\t * This is either the first element or the last element.\n\t\t\t *\n\t\t\t * If this is the first element, matched range starts where the first rule name starts\n\t\t\t * and ends where the second rule name starts. This is exactly the range we want\n\t\t\t * to remove so that the second rule name will start where the first one was starting\n\t\t\t * and thus preserve the original formatting.\n\t\t\t *\n\t\t\t *     // eslint-disable-line rule-one , rule-two , rule-three -- comment\n\t\t\t *                            ^^^^^^^^^^^\n\t\t\t *\n\t\t\t * Similarly, if this is the last element, we've already matched the range we want to\n\t\t\t * remove. The previous rule name will end where the last one was ending, relative\n\t\t\t * to the content on the right side.\n\t\t\t *\n\t\t\t *     // eslint-disable-line rule-one , rule-two , rule-three -- comment\n\t\t\t *                                               ^^^^^^^^^^^^^\n\t\t\t */\n\t\t\tremovalStart = matchStart;\n\t\t\tremovalEnd = matchEnd;\n\t\t}\n\n\t\treturn {\n\t\t\tdescription: `'${ruleId}'`,\n\t\t\tfix: {\n\t\t\t\trange: [removalStart, removalEnd],\n\t\t\t\ttext: \"\",\n\t\t\t},\n\t\t\tunprocessedDirective: directive.unprocessedDirective,\n\t\t};\n\t});\n}\n\n/**\n * Creates a description of deleting an entire unused disable directive.\n * @param {Directive[]} directives Unused directives to be removed.\n * @param {Token} node The backing Comment token.\n * @param {SourceCode} sourceCode The source code object for the file being linted.\n * @returns {{ description, fix, unprocessedDirective }} Details for later creation of an output problem.\n */\nfunction createDirectiveRemoval(directives, node, sourceCode) {\n\tconst range = sourceCode.getRange(node);\n\tconst ruleIds = directives\n\t\t.filter(directive => directive.ruleId)\n\t\t.map(directive => `'${directive.ruleId}'`);\n\n\treturn {\n\t\tdescription:\n\t\t\truleIds.length <= 2\n\t\t\t\t? ruleIds.join(\" or \")\n\t\t\t\t: `${ruleIds.slice(0, ruleIds.length - 1).join(\", \")}, or ${ruleIds.at(-1)}`,\n\t\tfix: {\n\t\t\trange,\n\t\t\ttext: \" \",\n\t\t},\n\t\tunprocessedDirective: directives[0].unprocessedDirective,\n\t};\n}\n\n/**\n * Parses details from directives to create output Problems.\n * @param {Iterable<Directive>} allDirectives Unused directives to be removed.\n * @param {SourceCode} sourceCode The source code object for the file being linted.\n * @returns {{ description, fix, unprocessedDirective }[]} Details for later creation of output Problems.\n */\nfunction processUnusedDirectives(allDirectives, sourceCode) {\n\tconst directiveGroups = groupByParentDirective(allDirectives);\n\n\treturn directiveGroups.flatMap(directives => {\n\t\tconst { parentDirective } = directives[0].unprocessedDirective;\n\t\tconst remainingRuleIds = new Set(parentDirective.ruleIds);\n\n\t\tfor (const directive of directives) {\n\t\t\tremainingRuleIds.delete(directive.ruleId);\n\t\t}\n\n\t\treturn remainingRuleIds.size\n\t\t\t? createIndividualDirectivesRemoval(\n\t\t\t\t\tdirectives,\n\t\t\t\t\tparentDirective,\n\t\t\t\t\tsourceCode,\n\t\t\t\t)\n\t\t\t: [\n\t\t\t\t\tcreateDirectiveRemoval(\n\t\t\t\t\t\tdirectives,\n\t\t\t\t\t\tparentDirective.node,\n\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t),\n\t\t\t\t];\n\t});\n}\n\n/**\n * Collect eslint-enable comments that are removing suppressions by eslint-disable comments.\n * @param {Directive[]} directives The directives to check.\n * @returns {Set<Directive>} The used eslint-enable comments\n */\nfunction collectUsedEnableDirectives(directives) {\n\t/**\n\t * A Map of `eslint-enable` keyed by ruleIds that may be marked as used.\n\t * If `eslint-enable` does not have a ruleId, the key will be `null`.\n\t * @type {Map<string|null, Directive>}\n\t */\n\tconst enabledRules = new Map();\n\n\t/**\n\t * A Set of `eslint-enable` marked as used.\n\t * It is also the return value of `collectUsedEnableDirectives` function.\n\t * @type {Set<Directive>}\n\t */\n\tconst usedEnableDirectives = new Set();\n\n\t/*\n\t * Checks the directives backwards to see if the encountered `eslint-enable` is used by the previous `eslint-disable`,\n\t * and if so, stores the `eslint-enable` in `usedEnableDirectives`.\n\t */\n\tfor (let index = directives.length - 1; index >= 0; index--) {\n\t\tconst directive = directives[index];\n\n\t\tif (directive.type === \"disable\") {\n\t\t\tif (enabledRules.size === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (directive.ruleId === null) {\n\t\t\t\t// If encounter `eslint-disable` without ruleId,\n\t\t\t\t// mark all `eslint-enable` currently held in enabledRules as used.\n\t\t\t\t// e.g.\n\t\t\t\t//    /* eslint-disable */ <- current directive\n\t\t\t\t//    /* eslint-enable rule-id1 */ <- used\n\t\t\t\t//    /* eslint-enable rule-id2 */ <- used\n\t\t\t\t//    /* eslint-enable */ <- used\n\t\t\t\tfor (const enableDirective of enabledRules.values()) {\n\t\t\t\t\tusedEnableDirectives.add(enableDirective);\n\t\t\t\t}\n\t\t\t\tenabledRules.clear();\n\t\t\t} else {\n\t\t\t\tconst enableDirective = enabledRules.get(directive.ruleId);\n\n\t\t\t\tif (enableDirective) {\n\t\t\t\t\t// If encounter `eslint-disable` with ruleId, and there is an `eslint-enable` with the same ruleId in enabledRules,\n\t\t\t\t\t// mark `eslint-enable` with ruleId as used.\n\t\t\t\t\t// e.g.\n\t\t\t\t\t//    /* eslint-disable rule-id */ <- current directive\n\t\t\t\t\t//    /* eslint-enable rule-id */ <- used\n\t\t\t\t\tusedEnableDirectives.add(enableDirective);\n\t\t\t\t} else {\n\t\t\t\t\tconst enabledDirectiveWithoutRuleId =\n\t\t\t\t\t\tenabledRules.get(null);\n\n\t\t\t\t\tif (enabledDirectiveWithoutRuleId) {\n\t\t\t\t\t\t// If encounter `eslint-disable` with ruleId, and there is no `eslint-enable` with the same ruleId in enabledRules,\n\t\t\t\t\t\t// mark `eslint-enable` without ruleId as used.\n\t\t\t\t\t\t// e.g.\n\t\t\t\t\t\t//    /* eslint-disable rule-id */ <- current directive\n\t\t\t\t\t\t//    /* eslint-enable */ <- used\n\t\t\t\t\t\tusedEnableDirectives.add(enabledDirectiveWithoutRuleId);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (directive.type === \"enable\") {\n\t\t\tif (directive.ruleId === null) {\n\t\t\t\t// If encounter `eslint-enable` without ruleId, the `eslint-enable` that follows it are unused.\n\t\t\t\t// So clear enabledRules.\n\t\t\t\t// e.g.\n\t\t\t\t//    /* eslint-enable */ <- current directive\n\t\t\t\t//    /* eslint-enable rule-id *// <- unused\n\t\t\t\t//    /* eslint-enable */ <- unused\n\t\t\t\tenabledRules.clear();\n\t\t\t\tenabledRules.set(null, directive);\n\t\t\t} else {\n\t\t\t\tenabledRules.set(directive.ruleId, directive);\n\t\t\t}\n\t\t}\n\t}\n\treturn usedEnableDirectives;\n}\n\n/**\n * This is the same as the exported function, except that it\n * doesn't handle disable-line and disable-next-line directives, and it always reports unused\n * disable directives.\n * @param {Object} options options for applying directives. This is the same as the options\n * for the exported function, except that `reportUnusedDisableDirectives` is not supported\n * (this function always reports unused disable directives).\n * @returns {{problems: LintMessage[], unusedDirectives: LintMessage[]}} An object with a list\n * of problems (including suppressed ones) and unused eslint-disable directives\n */\nfunction applyDirectives(options) {\n\tconst problems = [];\n\tconst usedDisableDirectives = new Set();\n\tconst { sourceCode } = options;\n\n\tfor (const problem of options.problems) {\n\t\tlet disableDirectivesForProblem = [];\n\t\tlet nextDirectiveIndex = 0;\n\n\t\twhile (\n\t\t\tnextDirectiveIndex < options.directives.length &&\n\t\t\tcompareLocations(options.directives[nextDirectiveIndex], problem) <=\n\t\t\t\t0\n\t\t) {\n\t\t\tconst directive = options.directives[nextDirectiveIndex++];\n\n\t\t\tif (\n\t\t\t\tdirective.ruleId === null ||\n\t\t\t\tdirective.ruleId === problem.ruleId\n\t\t\t) {\n\t\t\t\tswitch (directive.type) {\n\t\t\t\t\tcase \"disable\":\n\t\t\t\t\t\tdisableDirectivesForProblem.push(directive);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"enable\":\n\t\t\t\t\t\tdisableDirectivesForProblem = [];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t// no default\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (disableDirectivesForProblem.length > 0) {\n\t\t\tconst suppressions = disableDirectivesForProblem.map(directive => ({\n\t\t\t\tkind: \"directive\",\n\t\t\t\tjustification: directive.unprocessedDirective.justification,\n\t\t\t}));\n\n\t\t\tif (problem.suppressions) {\n\t\t\t\tproblem.suppressions =\n\t\t\t\t\tproblem.suppressions.concat(suppressions);\n\t\t\t} else {\n\t\t\t\tproblem.suppressions = suppressions;\n\t\t\t\tusedDisableDirectives.add(disableDirectivesForProblem.at(-1));\n\t\t\t}\n\t\t}\n\n\t\tproblems.push(problem);\n\t}\n\n\tconst unusedDisableDirectivesToReport = options.directives.filter(\n\t\tdirective =>\n\t\t\tdirective.type === \"disable\" &&\n\t\t\t!usedDisableDirectives.has(directive) &&\n\t\t\t!options.rulesToIgnore.has(directive.ruleId),\n\t);\n\n\tconst unusedEnableDirectivesToReport = new Set(\n\t\toptions.directives.filter(\n\t\t\tdirective =>\n\t\t\t\tdirective.unprocessedDirective.type === \"enable\" &&\n\t\t\t\t!options.rulesToIgnore.has(directive.ruleId),\n\t\t),\n\t);\n\n\t/*\n\t * If directives has the eslint-enable directive,\n\t * check whether the eslint-enable comment is used.\n\t */\n\tif (unusedEnableDirectivesToReport.size > 0) {\n\t\tfor (const directive of collectUsedEnableDirectives(\n\t\t\toptions.directives,\n\t\t)) {\n\t\t\tunusedEnableDirectivesToReport.delete(directive);\n\t\t}\n\t}\n\n\tconst processed = processUnusedDirectives(\n\t\tunusedDisableDirectivesToReport,\n\t\tsourceCode,\n\t).concat(\n\t\tprocessUnusedDirectives(unusedEnableDirectivesToReport, sourceCode),\n\t);\n\tconst columnOffset = options.language.columnStart === 1 ? 0 : 1;\n\tconst lineOffset = options.language.lineStart === 1 ? 0 : 1;\n\n\tconst unusedDirectives = processed.map(\n\t\t({ description, fix, unprocessedDirective }) => {\n\t\t\tconst { parentDirective, type, line, column } =\n\t\t\t\tunprocessedDirective;\n\n\t\t\tlet message;\n\n\t\t\tif (type === \"enable\") {\n\t\t\t\tmessage = description\n\t\t\t\t\t? `Unused eslint-enable directive (no matching eslint-disable directives were found for ${description}).`\n\t\t\t\t\t: \"Unused eslint-enable directive (no matching eslint-disable directives were found).\";\n\t\t\t} else {\n\t\t\t\tmessage = description\n\t\t\t\t\t? `Unused eslint-disable directive (no problems were reported from ${description}).`\n\t\t\t\t\t: \"Unused eslint-disable directive (no problems were reported).\";\n\t\t\t}\n\n\t\t\tconst loc = sourceCode.getLoc(parentDirective.node);\n\n\t\t\treturn {\n\t\t\t\truleId: null,\n\t\t\t\tmessage,\n\t\t\t\tline:\n\t\t\t\t\ttype === \"disable-next-line\"\n\t\t\t\t\t\t? loc.start.line + lineOffset\n\t\t\t\t\t\t: line,\n\t\t\t\tcolumn:\n\t\t\t\t\ttype === \"disable-next-line\"\n\t\t\t\t\t\t? loc.start.column + columnOffset\n\t\t\t\t\t\t: column,\n\t\t\t\tseverity:\n\t\t\t\t\toptions.reportUnusedDisableDirectives === \"warn\" ? 1 : 2,\n\t\t\t\t...(options.disableFixes ? {} : { fix }),\n\t\t\t};\n\t\t},\n\t);\n\n\treturn { problems, unusedDirectives };\n}\n\n/**\n * Given a list of directive comments (i.e. metadata about eslint-disable and eslint-enable comments) and a list\n * of reported problems, adds the suppression information to the problems.\n * @param {Object} options Information about directives and problems\n * @param {Language} options.language The language being linted.\n * @param {SourceCode} options.sourceCode The source code object for the file being linted.\n * @param {{\n *      type: (\"disable\"|\"enable\"|\"disable-line\"|\"disable-next-line\"),\n *      ruleId: (string|null),\n *      line: number,\n *      column: number,\n *      justification: string\n * }} options.directives Directive comments found in the file, with one-based columns.\n * Two directive comments can only have the same location if they also have the same type (e.g. a single eslint-disable\n * comment for two different rules is represented as two directives).\n * @param {{ruleId: (string|null), line: number, column: number}[]} options.problems\n * A list of problems reported by rules, sorted by increasing location in the file, with one-based columns.\n * @param {\"off\" | \"warn\" | \"error\"} options.reportUnusedDisableDirectives If `\"warn\"` or `\"error\"`, adds additional problems for unused directives\n * @param {RulesConfig} options.configuredRules The rules configuration.\n * @param {Function} options.ruleFilter A predicate function to filter which rules should be executed.\n * @param {boolean} options.disableFixes If true, it doesn't make `fix` properties.\n * @returns {{ruleId: (string|null), line: number, column: number, suppressions?: {kind: string, justification: string}}[]}\n * An object with a list of reported problems, the suppressed of which contain the suppression information.\n */\nmodule.exports = ({\n\tlanguage,\n\tsourceCode,\n\tdirectives,\n\tdisableFixes,\n\tproblems,\n\tconfiguredRules,\n\truleFilter,\n\treportUnusedDisableDirectives = \"off\",\n}) => {\n\tconst blockDirectives = directives\n\t\t.filter(\n\t\t\tdirective =>\n\t\t\t\tdirective.type === \"disable\" || directive.type === \"enable\",\n\t\t)\n\t\t.map(directive =>\n\t\t\tObject.assign({}, directive, { unprocessedDirective: directive }),\n\t\t)\n\t\t.sort(compareLocations);\n\n\tconst lineDirectives = directives\n\t\t.flatMap(directive => {\n\t\t\tswitch (directive.type) {\n\t\t\t\tcase \"disable\":\n\t\t\t\tcase \"enable\":\n\t\t\t\t\treturn [];\n\n\t\t\t\tcase \"disable-line\":\n\t\t\t\t\treturn [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"disable\",\n\t\t\t\t\t\t\tline: directive.line,\n\t\t\t\t\t\t\tcolumn: 1,\n\t\t\t\t\t\t\truleId: directive.ruleId,\n\t\t\t\t\t\t\tunprocessedDirective: directive,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"enable\",\n\t\t\t\t\t\t\tline: directive.line + 1,\n\t\t\t\t\t\t\tcolumn: 0,\n\t\t\t\t\t\t\truleId: directive.ruleId,\n\t\t\t\t\t\t\tunprocessedDirective: directive,\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\n\t\t\t\tcase \"disable-next-line\":\n\t\t\t\t\treturn [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"disable\",\n\t\t\t\t\t\t\tline: directive.line + 1,\n\t\t\t\t\t\t\tcolumn: 1,\n\t\t\t\t\t\t\truleId: directive.ruleId,\n\t\t\t\t\t\t\tunprocessedDirective: directive,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"enable\",\n\t\t\t\t\t\t\tline: directive.line + 2,\n\t\t\t\t\t\t\tcolumn: 0,\n\t\t\t\t\t\t\truleId: directive.ruleId,\n\t\t\t\t\t\t\tunprocessedDirective: directive,\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t`Unrecognized directive type '${directive.type}'`,\n\t\t\t\t\t);\n\t\t\t}\n\t\t})\n\t\t.sort(compareLocations);\n\n\t// This determines a list of rules that are not being run by the given ruleFilter, if present.\n\tconst rulesToIgnore =\n\t\tconfiguredRules && ruleFilter\n\t\t\t? new Set(\n\t\t\t\t\tObject.keys(configuredRules).filter(ruleId => {\n\t\t\t\t\t\tconst severity = Config.getRuleNumericSeverity(\n\t\t\t\t\t\t\tconfiguredRules[ruleId],\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// Ignore for disabled rules.\n\t\t\t\t\t\tif (severity === 0) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn !ruleFilter({ severity, ruleId });\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t: new Set();\n\n\t// If no ruleId is supplied that means this directive is applied to all rules, so we can't determine if it's unused if any rules are filtered out.\n\tif (rulesToIgnore.size > 0) {\n\t\trulesToIgnore.add(null);\n\t}\n\n\tconst blockDirectivesResult = applyDirectives({\n\t\tlanguage,\n\t\tsourceCode,\n\t\tproblems,\n\t\tdirectives: blockDirectives,\n\t\tdisableFixes,\n\t\treportUnusedDisableDirectives,\n\t\trulesToIgnore,\n\t});\n\tconst lineDirectivesResult = applyDirectives({\n\t\tlanguage,\n\t\tsourceCode,\n\t\tproblems: blockDirectivesResult.problems,\n\t\tdirectives: lineDirectives,\n\t\tdisableFixes,\n\t\treportUnusedDisableDirectives,\n\t\trulesToIgnore,\n\t});\n\n\treturn reportUnusedDisableDirectives !== \"off\"\n\t\t? lineDirectivesResult.problems\n\t\t\t\t.concat(blockDirectivesResult.unusedDirectives)\n\t\t\t\t.concat(lineDirectivesResult.unusedDirectives)\n\t\t\t\t.sort(compareLocations)\n\t\t: lineDirectivesResult.problems;\n};\n", "/**\n * @fileoverview An object that caches and applies source code fixes.\n * @author Nicholas C. Zakas\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst debug = require(\"debug\")(\"eslint:source-code-fixer\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst BOM = \"\\uFEFF\";\n\n/**\n * Compares items in a messages array by range.\n * @param {Message} a The first message.\n * @param {Message} b The second message.\n * @returns {number} -1 if a comes before b, 1 if a comes after b, 0 if equal.\n * @private\n */\nfunction compareMessagesByFixRange(a, b) {\n\treturn a.fix.range[0] - b.fix.range[0] || a.fix.range[1] - b.fix.range[1];\n}\n\n/**\n * Compares items in a messages array by line and column.\n * @param {Message} a The first message.\n * @param {Message} b The second message.\n * @returns {number} -1 if a comes before b, 1 if a comes after b, 0 if equal.\n * @private\n */\nfunction compareMessagesByLocation(a, b) {\n\treturn a.line - b.line || a.column - b.column;\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * Utility for apply fixes to source code.\n * @constructor\n */\nfunction SourceCodeFixer() {\n\tObject.freeze(this);\n}\n\n/**\n * Applies the fixes specified by the messages to the given text. Tries to be\n * smart about the fixes and won't apply fixes over the same area in the text.\n * @param {string} sourceText The text to apply the changes to.\n * @param {Message[]} messages The array of messages reported by ESLint.\n * @param {boolean|Function} [shouldFix=true] Determines whether each message should be fixed\n * @returns {Object} An object containing the fixed text and any unfixed messages.\n */\nSourceCodeFixer.applyFixes = function (sourceText, messages, shouldFix) {\n\tdebug(\"Applying fixes\");\n\n\tif (shouldFix === false) {\n\t\tdebug(\"shouldFix parameter was false, not attempting fixes\");\n\t\treturn {\n\t\t\tfixed: false,\n\t\t\tmessages,\n\t\t\toutput: sourceText,\n\t\t};\n\t}\n\n\t// clone the array\n\tconst remainingMessages = [],\n\t\tfixes = [],\n\t\tbom = sourceText.startsWith(BOM) ? BOM : \"\",\n\t\ttext = bom ? sourceText.slice(1) : sourceText;\n\tlet lastPos = Number.NEGATIVE_INFINITY,\n\t\toutput = bom;\n\n\t/**\n\t * Try to use the 'fix' from a problem.\n\t * @param {Message} problem The message object to apply fixes from\n\t * @returns {boolean} Whether fix was successfully applied\n\t */\n\tfunction attemptFix(problem) {\n\t\tconst fix = problem.fix;\n\t\tconst start = fix.range[0];\n\t\tconst end = fix.range[1];\n\n\t\t// Remain it as a problem if it's overlapped or it's a negative range\n\t\tif (lastPos >= start || start > end) {\n\t\t\tremainingMessages.push(problem);\n\t\t\treturn false;\n\t\t}\n\n\t\t// Remove BOM.\n\t\tif (\n\t\t\t(start < 0 && end >= 0) ||\n\t\t\t(start === 0 && fix.text.startsWith(BOM))\n\t\t) {\n\t\t\toutput = \"\";\n\t\t}\n\n\t\t// Make output to this fix.\n\t\toutput += text.slice(Math.max(0, lastPos), Math.max(0, start));\n\t\toutput += fix.text;\n\t\tlastPos = end;\n\t\treturn true;\n\t}\n\n\tmessages.forEach(problem => {\n\t\tif (Object.hasOwn(problem, \"fix\") && problem.fix) {\n\t\t\tfixes.push(problem);\n\t\t} else {\n\t\t\tremainingMessages.push(problem);\n\t\t}\n\t});\n\n\tif (fixes.length) {\n\t\tdebug(\"Found fixes to apply\");\n\t\tlet fixesWereApplied = false;\n\n\t\tfor (const problem of fixes.sort(compareMessagesByFixRange)) {\n\t\t\tif (typeof shouldFix !== \"function\" || shouldFix(problem)) {\n\t\t\t\tattemptFix(problem);\n\n\t\t\t\t/*\n\t\t\t\t * The only time attemptFix will fail is if a previous fix was\n\t\t\t\t * applied which conflicts with it.  So we can mark this as true.\n\t\t\t\t */\n\t\t\t\tfixesWereApplied = true;\n\t\t\t} else {\n\t\t\t\tremainingMessages.push(problem);\n\t\t\t}\n\t\t}\n\t\toutput += text.slice(Math.max(0, lastPos));\n\n\t\treturn {\n\t\t\tfixed: fixesWereApplied,\n\t\t\tmessages: remainingMessages.sort(compareMessagesByLocation),\n\t\t\toutput,\n\t\t};\n\t}\n\n\tdebug(\"No fixes to apply\");\n\treturn {\n\t\tfixed: false,\n\t\tmessages,\n\t\toutput: bom + text,\n\t};\n};\n\nmodule.exports = SourceCodeFixer;\n", "/**\n * @fileoverview SourceCodeVisitor class\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\nconst emptyArray = Object.freeze([]);\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * A structure to hold a list of functions to call for a given name.\n * This is used to allow multiple rules to register functions for a given name\n * without having to know about each other.\n */\nclass SourceCodeVisitor {\n\t/**\n\t * The functions to call for a given name.\n\t * @type {Map<string, Function[]>}\n\t */\n\t#functions = new Map();\n\n\t/**\n\t * Adds a function to the list of functions to call for a given name.\n\t * @param {string} name The name of the function to call.\n\t * @param {Function} func The function to call.\n\t * @returns {void}\n\t */\n\tadd(name, func) {\n\t\tif (this.#functions.has(name)) {\n\t\t\tthis.#functions.get(name).push(func);\n\t\t} else {\n\t\t\tthis.#functions.set(name, [func]);\n\t\t}\n\t}\n\n\t/**\n\t * Gets the list of functions to call for a given name.\n\t * @param {string} name The name of the function to call.\n\t * @returns {Function[]} The list of functions to call.\n\t */\n\tget(name) {\n\t\tif (this.#functions.has(name)) {\n\t\t\treturn this.#functions.get(name);\n\t\t}\n\n\t\treturn emptyArray;\n\t}\n\n\t/**\n\t * Iterates over all names and calls the callback with the name.\n\t * @param {(name:string) => void} callback The callback to call for each name.\n\t * @returns {void}\n\t */\n\tforEachName(callback) {\n\t\tthis.#functions.forEach((funcs, name) => {\n\t\t\tcallback(name);\n\t\t});\n\t}\n\n\t/**\n\t * Calls the functions for a given name with the given arguments.\n\t * @param {string} name The name of the function to call.\n\t * @param {any[]} args The arguments to pass to the function.\n\t * @returns {void}\n\t */\n\tcallSync(name, ...args) {\n\t\tif (this.#functions.has(name)) {\n\t\t\tthis.#functions.get(name).forEach(func => func(...args));\n\t\t}\n\t}\n}\n\nmodule.exports = { SourceCodeVisitor };\n", "/**\n * @fileoverview Flat Config Array\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Requirements\n//-----------------------------------------------------------------------------\n\nconst { ConfigArray, ConfigArraySymbol } = require(\"@eslint/config-array\");\nconst { flatConfigSchema } = require(\"./flat-config-schema\");\nconst { defaultConfig } = require(\"./default-config\");\nconst { Config } = require(\"./config\");\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\n/**\n * Fields that are considered metadata and not part of the config object.\n */\nconst META_FIELDS = new Set([\"name\", \"basePath\"]);\n\n/**\n * Wraps a config error with details about where the error occurred.\n * @param {Error} error The original error.\n * @param {number} originalLength The original length of the config array.\n * @param {number} baseLength The length of the base config.\n * @returns {TypeError} The new error with details.\n */\nfunction wrapConfigErrorWithDetails(error, originalLength, baseLength) {\n\tlet location = \"user-defined\";\n\tlet configIndex = error.index;\n\n\t/*\n\t * A config array is set up in this order:\n\t * 1. Base config\n\t * 2. Original configs\n\t * 3. User-defined configs\n\t * 4. CLI-defined configs\n\t *\n\t * So we need to adjust the index to account for the base config.\n\t *\n\t * - If the index is less than the base length, it's in the base config\n\t *   (as specified by `baseConfig` argument to `FlatConfigArray` constructor).\n\t * - If the index is greater than the base length but less than the original\n\t *   length + base length, it's in the original config. The original config\n\t *   is passed to the `FlatConfigArray` constructor as the first argument.\n\t * - Otherwise, it's in the user-defined config, which is loaded from the\n\t *   config file and merged with any command-line options.\n\t */\n\tif (error.index < baseLength) {\n\t\tlocation = \"base\";\n\t} else if (error.index < originalLength + baseLength) {\n\t\tlocation = \"original\";\n\t\tconfigIndex = error.index - baseLength;\n\t} else {\n\t\tconfigIndex = error.index - originalLength - baseLength;\n\t}\n\n\treturn new TypeError(\n\t\t`${error.message.slice(0, -1)} at ${location} index ${configIndex}.`,\n\t\t{ cause: error },\n\t);\n}\n\nconst originalBaseConfig = Symbol(\"originalBaseConfig\");\nconst originalLength = Symbol(\"originalLength\");\nconst baseLength = Symbol(\"baseLength\");\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * Represents an array containing configuration information for ESLint.\n */\nclass FlatConfigArray extends ConfigArray {\n\t/**\n\t * Creates a new instance.\n\t * @param {*[]} configs An array of configuration information.\n\t * @param {{basePath: string, shouldIgnore: boolean, baseConfig: FlatConfig}} options The options\n\t *      to use for the config array instance.\n\t */\n\tconstructor(\n\t\tconfigs,\n\t\t{ basePath, shouldIgnore = true, baseConfig = defaultConfig } = {},\n\t) {\n\t\tsuper(configs, {\n\t\t\tbasePath,\n\t\t\tschema: flatConfigSchema,\n\t\t});\n\n\t\t/**\n\t\t * The original length of the array before any modifications.\n\t\t * @type {number}\n\t\t */\n\t\tthis[originalLength] = this.length;\n\n\t\tif (baseConfig[Symbol.iterator]) {\n\t\t\tthis.unshift(...baseConfig);\n\t\t} else {\n\t\t\tthis.unshift(baseConfig);\n\t\t}\n\n\t\t/**\n\t\t * The length of the array after applying the base config.\n\t\t * @type {number}\n\t\t */\n\t\tthis[baseLength] = this.length - this[originalLength];\n\n\t\t/**\n\t\t * The base config used to build the config array.\n\t\t * @type {Array<FlatConfig>}\n\t\t */\n\t\tthis[originalBaseConfig] = baseConfig;\n\t\tObject.defineProperty(this, originalBaseConfig, { writable: false });\n\n\t\t/**\n\t\t * Determines if `ignores` fields should be honored.\n\t\t * If true, then all `ignores` fields are honored.\n\t\t * if false, then only `ignores` fields in the baseConfig are honored.\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.shouldIgnore = shouldIgnore;\n\t\tObject.defineProperty(this, \"shouldIgnore\", { writable: false });\n\t}\n\n\t/**\n\t * Normalizes the array by calling the superclass method and catching/rethrowing\n\t * any ConfigError exceptions with additional details.\n\t * @param {any} [context] The context to use to normalize the array.\n\t * @returns {Promise<FlatConfigArray>} A promise that resolves when the array is normalized.\n\t */\n\tnormalize(context) {\n\t\treturn super.normalize(context).catch(error => {\n\t\t\tif (error.name === \"ConfigError\") {\n\t\t\t\tthrow wrapConfigErrorWithDetails(\n\t\t\t\t\terror,\n\t\t\t\t\tthis[originalLength],\n\t\t\t\t\tthis[baseLength],\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t});\n\t}\n\n\t/**\n\t * Normalizes the array by calling the superclass method and catching/rethrowing\n\t * any ConfigError exceptions with additional details.\n\t * @param {any} [context] The context to use to normalize the array.\n\t * @returns {FlatConfigArray} The current instance.\n\t * @throws {TypeError} If the config is invalid.\n\t */\n\tnormalizeSync(context) {\n\t\ttry {\n\t\t\treturn super.normalizeSync(context);\n\t\t} catch (error) {\n\t\t\tif (error.name === \"ConfigError\") {\n\t\t\t\tthrow wrapConfigErrorWithDetails(\n\t\t\t\t\terror,\n\t\t\t\t\tthis[originalLength],\n\t\t\t\t\tthis[baseLength],\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/* eslint-disable class-methods-use-this -- Desired as instance method */\n\t/**\n\t * Replaces a config with another config to allow us to put strings\n\t * in the config array that will be replaced by objects before\n\t * normalization.\n\t * @param {Object} config The config to preprocess.\n\t * @returns {Object} The preprocessed config.\n\t */\n\t[ConfigArraySymbol.preprocessConfig](config) {\n\t\t/*\n\t\t * If a config object has `ignores` and no other non-meta fields, then it's an object\n\t\t * for global ignores. If `shouldIgnore` is false, that object shouldn't apply,\n\t\t * so we'll remove its `ignores`.\n\t\t */\n\t\tif (\n\t\t\t!this.shouldIgnore &&\n\t\t\t!this[originalBaseConfig].includes(config) &&\n\t\t\tconfig.ignores &&\n\t\t\tObject.keys(config).filter(key => !META_FIELDS.has(key)).length ===\n\t\t\t\t1\n\t\t) {\n\t\t\t/* eslint-disable-next-line no-unused-vars -- need to strip off other keys */\n\t\t\tconst { ignores, ...otherKeys } = config;\n\n\t\t\treturn otherKeys;\n\t\t}\n\n\t\treturn config;\n\t}\n\n\t/**\n\t * Finalizes the config by replacing plugin references with their objects\n\t * and validating rule option schemas.\n\t * @param {Object} config The config to finalize.\n\t * @returns {Object} The finalized config.\n\t * @throws {TypeError} If the config is invalid.\n\t */\n\t[ConfigArraySymbol.finalizeConfig](config) {\n\t\treturn new Config(config);\n\t}\n\t/* eslint-enable class-methods-use-this -- Desired as instance method */\n}\n\nexports.FlatConfigArray = FlatConfigArray;\n", "/**\n * @fileoverview Shared flags for ESLint.\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n/**\n * @typedef {Object} InactiveFlagData\n * @property {string} description Flag description\n * @property {string | null} [replacedBy] Can be either:\n *   - An active flag (string) that enables the same feature.\n *   - `null` if the feature is now enabled by default.\n *   - Omitted if the feature has been abandoned.\n */\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * The set of flags that change ESLint behavior with a description.\n * @type {Map<string, string>}\n */\nconst activeFlags = new Map([\n\t[\"test_only\", \"Used only for testing.\"],\n\t[\"test_only_2\", \"Used only for testing.\"],\n\t[\n\t\t\"unstable_native_nodejs_ts_config\",\n\t\t\"Use native Node.js to load TypeScript configuration.\",\n\t],\n]);\n\n/**\n * The set of flags that used to be active.\n * @type {Map<string, InactiveFlagData>}\n */\nconst inactiveFlags = new Map([\n\t[\n\t\t\"test_only_replaced\",\n\t\t{\n\t\t\tdescription:\n\t\t\t\t\"Used only for testing flags that have been replaced by other flags.\",\n\t\t\treplacedBy: \"test_only\",\n\t\t},\n\t],\n\t[\n\t\t\"test_only_enabled_by_default\",\n\t\t{\n\t\t\tdescription:\n\t\t\t\t\"Used only for testing flags whose features have been enabled by default.\",\n\t\t\treplacedBy: null,\n\t\t},\n\t],\n\t[\n\t\t\"test_only_abandoned\",\n\t\t{\n\t\t\tdescription:\n\t\t\t\t\"Used only for testing flags whose features have been abandoned.\",\n\t\t},\n\t],\n]);\n\n/**\n * Creates a message that describes the reason the flag is inactive.\n * @param {InactiveFlagData} inactiveFlagData Data for the inactive flag.\n * @returns {string} Message describing the reason the flag is inactive.\n */\nfunction getInactivityReasonMessage({ replacedBy }) {\n\tif (typeof replacedBy === \"undefined\") {\n\t\treturn \"This feature has been abandoned.\";\n\t}\n\n\tif (typeof replacedBy === \"string\") {\n\t\treturn `This flag has been renamed '${replacedBy}' to reflect its stabilization. Please use '${replacedBy}' instead.`;\n\t}\n\n\t// null\n\treturn \"This feature is now enabled by default.\";\n}\n\nmodule.exports = {\n\tactiveFlags,\n\tinactiveFlags,\n\tgetInactivityReasonMessage,\n};\n", "/**\n * @fileoverview Virtual file\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Type Definitions\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"@eslint/core\").File} File */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Determines if a given value has a byte order mark (BOM).\n * @param {string|Uint8Array} value The value to check.\n * @returns {boolean} `true` if the value has a BOM, `false` otherwise.\n */\nfunction hasUnicodeBOM(value) {\n\treturn typeof value === \"string\"\n\t\t? value.charCodeAt(0) === 0xfeff\n\t\t: value[0] === 0xef && value[1] === 0xbb && value[2] === 0xbf;\n}\n\n/**\n * Strips Unicode BOM from the given value.\n * @param {string|Uint8Array} value The value to remove the BOM from.\n * @returns {string|Uint8Array} The stripped value.\n */\nfunction stripUnicodeBOM(value) {\n\tif (!hasUnicodeBOM(value)) {\n\t\treturn value;\n\t}\n\n\tif (typeof value === \"string\") {\n\t\t/*\n\t\t * Check Unicode BOM.\n\t\t * In JavaScript, string data is stored as UTF-16, so BOM is 0xFEFF.\n\t\t * http://www.ecma-international.org/ecma-262/6.0/#sec-unicode-format-control-characters\n\t\t */\n\t\treturn value.slice(1);\n\t}\n\n\t/*\n\t * In a Uint8Array, the BOM is represented by three bytes: 0xEF, 0xBB, and 0xBF,\n\t * so we can just remove the first three bytes.\n\t */\n\treturn value.slice(3);\n}\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * Represents a virtual file inside of ESLint.\n * @implements {File}\n */\nclass VFile {\n\t/**\n\t * The file path including any processor-created virtual path.\n\t * @type {string}\n\t * @readonly\n\t */\n\tpath;\n\n\t/**\n\t * The file path on disk.\n\t * @type {string}\n\t * @readonly\n\t */\n\tphysicalPath;\n\n\t/**\n\t * The file contents.\n\t * @type {string|Uint8Array}\n\t * @readonly\n\t */\n\tbody;\n\n\t/**\n\t * The raw body of the file, including a BOM if present.\n\t * @type {string|Uint8Array}\n\t * @readonly\n\t */\n\trawBody;\n\n\t/**\n\t * Indicates whether the file has a byte order mark (BOM).\n\t * @type {boolean}\n\t * @readonly\n\t */\n\tbom;\n\n\t/**\n\t * Creates a new instance.\n\t * @param {string} path The file path.\n\t * @param {string|Uint8Array} body The file contents.\n\t * @param {Object} [options] Additional options.\n\t * @param {string} [options.physicalPath] The file path on disk.\n\t */\n\tconstructor(path, body, { physicalPath } = {}) {\n\t\tthis.path = path;\n\t\tthis.physicalPath = physicalPath ?? path;\n\t\tthis.bom = hasUnicodeBOM(body);\n\t\tthis.body = stripUnicodeBOM(body);\n\t\tthis.rawBody = body;\n\t}\n}\n\nmodule.exports = { VFile };\n", "/**\n * @fileoverview ESLint Parser\n * @author Nicholas C. Zakas\n */\n/* eslint class-methods-use-this: off -- Anticipate future constructor arguments. */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Types\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"../linter/vfile.js\").VFile} VFile */\n/** @typedef {import(\"@eslint/core\").Language} Language */\n/** @typedef {import(\"@eslint/core\").LanguageOptions} LanguageOptions */\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * The parser for ESLint.\n */\nclass ParserService {\n\t/**\n\t * Parses the given file synchronously.\n\t * @param {VFile} file The file to parse.\n\t * @param {{language:Language,languageOptions:LanguageOptions}} config The configuration to use.\n\t * @returns {Object} An object with the parsed source code or errors.\n\t * @throws {Error} If the parser returns a promise.\n\t */\n\tparseSync(file, config) {\n\t\tconst { language, languageOptions } = config;\n\t\tconst result = language.parse(file, { languageOptions });\n\n\t\tif (typeof result.then === \"function\") {\n\t\t\tthrow new Error(\"Unsupported: Language parser returned a promise.\");\n\t\t}\n\n\t\tif (result.ok) {\n\t\t\treturn {\n\t\t\t\tok: true,\n\t\t\t\tsourceCode: language.createSourceCode(file, result, {\n\t\t\t\t\tlanguageOptions,\n\t\t\t\t}),\n\t\t\t};\n\t\t}\n\n\t\t// if we made it to here there was an error\n\t\treturn {\n\t\t\tok: false,\n\t\t\terrors: result.errors.map(error => ({\n\t\t\t\truleId: null,\n\t\t\t\tfatal: true,\n\t\t\t\tseverity: 2,\n\t\t\t\tmessage: `Parsing error: ${error.message}`,\n\t\t\t\tline: error.line,\n\t\t\t\tcolumn: error.column,\n\t\t\t})),\n\t\t};\n\t}\n}\n\nmodule.exports = { ParserService };\n", "/**\n * @fileoverview The FileContext class.\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n/**\n * Represents a file context that the linter can use to lint a file.\n */\nclass FileContext {\n\t/**\n\t * The current working directory.\n\t * @type {string}\n\t */\n\tcwd;\n\n\t/**\n\t * The filename of the file being linted.\n\t * @type {string}\n\t */\n\tfilename;\n\n\t/**\n\t * The physical filename of the file being linted.\n\t * @type {string}\n\t */\n\tphysicalFilename;\n\n\t/**\n\t * The source code of the file being linted.\n\t * @type {SourceCode}\n\t */\n\tsourceCode;\n\n\t/**\n\t * The language options used when parsing this file.\n\t * @type {Record<string, unknown>}\n\t */\n\tlanguageOptions;\n\n\t/**\n\t * The settings for the file being linted.\n\t * @type {Record<string, unknown>}\n\t */\n\tsettings;\n\n\t/**\n\t * Creates a new instance.\n\t * @param {Object} config The configuration object for the file context.\n\t * @param {string} config.cwd The current working directory.\n\t * @param {string} config.filename The filename of the file being linted.\n\t * @param {string} config.physicalFilename The physical filename of the file being linted.\n\t * @param {SourceCode} config.sourceCode The source code of the file being linted.\n\t * @param {Record<string, unknown>} config.languageOptions The language options used when parsing this file.\n\t * @param {Record<string, unknown>} config.settings The settings for the file being linted.\n\t */\n\tconstructor({\n\t\tcwd,\n\t\tfilename,\n\t\tphysicalFilename,\n\t\tsourceCode,\n\t\tlanguageOptions,\n\t\tsettings,\n\t}) {\n\t\tthis.cwd = cwd;\n\t\tthis.filename = filename;\n\t\tthis.physicalFilename = physicalFilename;\n\t\tthis.sourceCode = sourceCode;\n\t\tthis.languageOptions = languageOptions;\n\t\tthis.settings = settings;\n\n\t\tObject.freeze(this);\n\t}\n\n\t/**\n\t * Creates a new object with the current object as the prototype and\n\t * the specified properties as its own properties.\n\t * @param {Object} extension The properties to add to the new object.\n\t * @returns {FileContext} A new object with the current object as the prototype\n\t * and the specified properties as its own properties.\n\t */\n\textend(extension) {\n\t\treturn Object.freeze(Object.assign(Object.create(this), extension));\n\t}\n}\n\nexports.FileContext = FileContext;\n", "/**\n * @fileoverview ESLint Processor Service\n * @author Nicholas C. Zakas\n */\n/* eslint class-methods-use-this: off -- Anticipate future constructor arguments. */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Requirements\n//-----------------------------------------------------------------------------\n\nconst path = require(\"node:path\");\nconst { VFile } = require(\"../linter/vfile.js\");\n\n//-----------------------------------------------------------------------------\n// Types\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"../types\").Linter.LintMessage} LintMessage */\n/** @typedef {import(\"../linter/vfile.js\").VFile} VFile */\n/** @typedef {import(\"@eslint/core\").Language} Language */\n/** @typedef {import(\"eslint\").Linter.Processor} Processor */\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * The service that applies processors to files.\n */\nclass ProcessorService {\n\t/**\n\t * Preprocesses the given file synchronously.\n\t * @param {VFile} file The file to preprocess.\n\t * @param {{processor:Processor}} config The configuration to use.\n\t * @returns {{ok:boolean, files?: Array<VFile>, errors?: Array<LintMessage>}} An array of preprocessed files or errors.\n\t * @throws {Error} If the preprocessor returns a promise.\n\t */\n\tpreprocessSync(file, config) {\n\t\tconst { processor } = config;\n\t\tlet blocks;\n\n\t\ttry {\n\t\t\tblocks = processor.preprocess(file.rawBody, file.path);\n\t\t} catch (ex) {\n\t\t\t// If the message includes a leading line number, strip it:\n\t\t\tconst message = `Preprocessing error: ${ex.message.replace(/^line \\d+:/iu, \"\").trim()}`;\n\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\terrors: [\n\t\t\t\t\t{\n\t\t\t\t\t\truleId: null,\n\t\t\t\t\t\tfatal: true,\n\t\t\t\t\t\tseverity: 2,\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tline: ex.lineNumber,\n\t\t\t\t\t\tcolumn: ex.column,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\n\t\tif (typeof blocks.then === \"function\") {\n\t\t\tthrow new Error(\"Unsupported: Preprocessor returned a promise.\");\n\t\t}\n\n\t\treturn {\n\t\t\tok: true,\n\t\t\tfiles: blocks.map((block, i) => {\n\t\t\t\t// Legacy behavior: return the block as a string\n\t\t\t\tif (typeof block === \"string\") {\n\t\t\t\t\treturn block;\n\t\t\t\t}\n\n\t\t\t\tconst filePath = path.join(file.path, `${i}_${block.filename}`);\n\n\t\t\t\treturn new VFile(filePath, block.text, {\n\t\t\t\t\tphysicalPath: file.physicalPath,\n\t\t\t\t});\n\t\t\t}),\n\t\t};\n\t}\n\n\t/**\n\t * Postprocesses the given messages synchronously.\n\t * @param {VFile} file The file to postprocess.\n\t * @param {LintMessage[][]} messages The messages to postprocess.\n\t * @param {{processor:Processor}} config The configuration to use.\n\t * @returns {LintMessage[]} The postprocessed messages.\n\t */\n\tpostprocessSync(file, messages, config) {\n\t\tconst { processor } = config;\n\n\t\treturn processor.postprocess(messages, file.path);\n\t}\n}\n\nmodule.exports = { ProcessorService };\n", "/**\n * @fileoverview Utilities to operate on option objects.\n * @author Josh Goldberg\n */\n\n\"use strict\";\n\n/**\n * Determines whether any of input's properties are different\n * from values that already exist in original.\n * @template T\n * @param {Partial<T>} input New value.\n * @param {T} original Original value.\n * @returns {boolean} Whether input includes an explicit difference.\n */\nfunction containsDifferentProperty(input, original) {\n\tif (input === original) {\n\t\treturn false;\n\t}\n\n\tif (\n\t\ttypeof input !== typeof original ||\n\t\tArray.isArray(input) !== Array.isArray(original)\n\t) {\n\t\treturn true;\n\t}\n\n\tif (Array.isArray(input)) {\n\t\treturn (\n\t\t\tinput.length !== original.length ||\n\t\t\tinput.some((value, i) =>\n\t\t\t\tcontainsDifferentProperty(value, original[i]),\n\t\t\t)\n\t\t);\n\t}\n\n\tif (typeof input === \"object\") {\n\t\tif (input === null || original === null) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst inputKeys = Object.keys(input);\n\t\tconst originalKeys = Object.keys(original);\n\n\t\treturn (\n\t\t\tinputKeys.length !== originalKeys.length ||\n\t\t\tinputKeys.some(\n\t\t\t\tinputKey =>\n\t\t\t\t\t!Object.hasOwn(original, inputKey) ||\n\t\t\t\t\tcontainsDifferentProperty(\n\t\t\t\t\t\tinput[inputKey],\n\t\t\t\t\t\toriginal[inputKey],\n\t\t\t\t\t),\n\t\t\t)\n\t\t);\n\t}\n\n\treturn true;\n}\n\nmodule.exports = {\n\tcontainsDifferentProperty,\n};\n", "/**\n * @fileoverview Emits warnings for ESLint.\n * @author Francesco Trotta\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * A service that emits warnings for ESLint.\n */\nclass WarningService {\n\t/**\n\t * Creates a new instance of the service.\n\t * @param {{ emitWarning?: ((warning: string, type: string) => void) | undefined }} [options] A function called internally to emit warnings using API provided by the runtime.\n\t */\n\tconstructor({\n\t\temitWarning = globalThis.process?.emitWarning ?? (() => {}),\n\t} = {}) {\n\t\tthis.emitWarning = emitWarning;\n\t}\n\n\t/**\n\t * Emits a warning when circular fixes are detected while fixing a file.\n\t * This method is used by the Linter and is safe to call outside Node.js.\n\t * @param {string} filename The name of the file being fixed.\n\t * @returns {void}\n\t */\n\temitCircularFixesWarning(filename) {\n\t\tthis.emitWarning(\n\t\t\t`Circular fixes detected while fixing ${filename}. It is likely that you have conflicting rules in your configuration.`,\n\t\t\t\"ESLintCircularFixesWarning\",\n\t\t);\n\t}\n\n\t/**\n\t * Emits a warning when an empty config file has been loaded.\n\t * @param {string} configFilePath The path to the config file.\n\t * @returns {void}\n\t */\n\temitEmptyConfigWarning(configFilePath) {\n\t\tthis.emitWarning(\n\t\t\t`Running ESLint with an empty config (from ${configFilePath}). Please double-check that this is what you want. If you want to run ESLint with an empty config, export [{}] to remove this warning.`,\n\t\t\t\"ESLintEmptyConfigWarning\",\n\t\t);\n\t}\n\n\t/**\n\t * Emits a warning when an \".eslintignore\" file is found.\n\t * @returns {void}\n\t */\n\temitESLintIgnoreWarning() {\n\t\tthis.emitWarning(\n\t\t\t'The \".eslintignore\" file is no longer supported. Switch to using the \"ignores\" property in \"eslint.config.js\": https://eslint.org/docs/latest/use/configure/migration-guide#ignore-files',\n\t\t\t\"ESLintIgnoreWarning\",\n\t\t);\n\t}\n\n\t/**\n\t * Emits a warning when an inactive flag is used.\n\t * This method is used by the Linter and is safe to call outside Node.js.\n\t * @param {string} flag The name of the flag.\n\t * @param {string} message The warning message.\n\t * @returns {void}\n\t */\n\temitInactiveFlagWarning(flag, message) {\n\t\tthis.emitWarning(message, `ESLintInactiveFlag_${flag}`);\n\t}\n\n\t/**\n\t * Emits a warning when a suboptimal concurrency setting is detected.\n\t * Currently, this is only used to warn when the net linting ratio is low.\n\t * @param {string} notice A notice about how to improve performance.\n\t * @returns {void}\n\t */\n\temitPoorConcurrencyWarning(notice) {\n\t\tthis.emitWarning(\n\t\t\t`You may ${notice} to improve performance.`,\n\t\t\t\"ESLintPoorConcurrencyWarning\",\n\t\t);\n\t}\n}\n\nmodule.exports = { WarningService };\n", "/*\n  Copyright (C) 2012-2013 Yusuke Suzuki <utatane.tea@gmail.com>\n  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n/*jslint vars:false, bitwise:true*/\n/*jshint indent:4*/\n/*global exports:true*/\n(function clone(exports) {\n    'use strict';\n\n    var Syntax,\n        VisitorOption,\n        VisitorKeys,\n        BREAK,\n        SKIP,\n        REMOVE;\n\n    function deepCopy(obj) {\n        var ret = {}, key, val;\n        for (key in obj) {\n            if (obj.hasOwnProperty(key)) {\n                val = obj[key];\n                if (typeof val === 'object' && val !== null) {\n                    ret[key] = deepCopy(val);\n                } else {\n                    ret[key] = val;\n                }\n            }\n        }\n        return ret;\n    }\n\n    // based on LLVM libc++ upper_bound / lower_bound\n    // MIT License\n\n    function upperBound(array, func) {\n        var diff, len, i, current;\n\n        len = array.length;\n        i = 0;\n\n        while (len) {\n            diff = len >>> 1;\n            current = i + diff;\n            if (func(array[current])) {\n                len = diff;\n            } else {\n                i = current + 1;\n                len -= diff + 1;\n            }\n        }\n        return i;\n    }\n\n    Syntax = {\n        AssignmentExpression: 'AssignmentExpression',\n        AssignmentPattern: 'AssignmentPattern',\n        ArrayExpression: 'ArrayExpression',\n        ArrayPattern: 'ArrayPattern',\n        ArrowFunctionExpression: 'ArrowFunctionExpression',\n        AwaitExpression: 'AwaitExpression', // CAUTION: It's deferred to ES7.\n        BlockStatement: 'BlockStatement',\n        BinaryExpression: 'BinaryExpression',\n        BreakStatement: 'BreakStatement',\n        CallExpression: 'CallExpression',\n        CatchClause: 'CatchClause',\n        ChainExpression: 'ChainExpression',\n        ClassBody: 'ClassBody',\n        ClassDeclaration: 'ClassDeclaration',\n        ClassExpression: 'ClassExpression',\n        ComprehensionBlock: 'ComprehensionBlock',  // CAUTION: It's deferred to ES7.\n        ComprehensionExpression: 'ComprehensionExpression',  // CAUTION: It's deferred to ES7.\n        ConditionalExpression: 'ConditionalExpression',\n        ContinueStatement: 'ContinueStatement',\n        DebuggerStatement: 'DebuggerStatement',\n        DirectiveStatement: 'DirectiveStatement',\n        DoWhileStatement: 'DoWhileStatement',\n        EmptyStatement: 'EmptyStatement',\n        ExportAllDeclaration: 'ExportAllDeclaration',\n        ExportDefaultDeclaration: 'ExportDefaultDeclaration',\n        ExportNamedDeclaration: 'ExportNamedDeclaration',\n        ExportSpecifier: 'ExportSpecifier',\n        ExpressionStatement: 'ExpressionStatement',\n        ForStatement: 'ForStatement',\n        ForInStatement: 'ForInStatement',\n        ForOfStatement: 'ForOfStatement',\n        FunctionDeclaration: 'FunctionDeclaration',\n        FunctionExpression: 'FunctionExpression',\n        GeneratorExpression: 'GeneratorExpression',  // CAUTION: It's deferred to ES7.\n        Identifier: 'Identifier',\n        IfStatement: 'IfStatement',\n        ImportExpression: 'ImportExpression',\n        ImportDeclaration: 'ImportDeclaration',\n        ImportDefaultSpecifier: 'ImportDefaultSpecifier',\n        ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',\n        ImportSpecifier: 'ImportSpecifier',\n        Literal: 'Literal',\n        LabeledStatement: 'LabeledStatement',\n        LogicalExpression: 'LogicalExpression',\n        MemberExpression: 'MemberExpression',\n        MetaProperty: 'MetaProperty',\n        MethodDefinition: 'MethodDefinition',\n        ModuleSpecifier: 'ModuleSpecifier',\n        NewExpression: 'NewExpression',\n        ObjectExpression: 'ObjectExpression',\n        ObjectPattern: 'ObjectPattern',\n        PrivateIdentifier: 'PrivateIdentifier',\n        Program: 'Program',\n        Property: 'Property',\n        PropertyDefinition: 'PropertyDefinition',\n        RestElement: 'RestElement',\n        ReturnStatement: 'ReturnStatement',\n        SequenceExpression: 'SequenceExpression',\n        SpreadElement: 'SpreadElement',\n        Super: 'Super',\n        SwitchStatement: 'SwitchStatement',\n        SwitchCase: 'SwitchCase',\n        TaggedTemplateExpression: 'TaggedTemplateExpression',\n        TemplateElement: 'TemplateElement',\n        TemplateLiteral: 'TemplateLiteral',\n        ThisExpression: 'ThisExpression',\n        ThrowStatement: 'ThrowStatement',\n        TryStatement: 'TryStatement',\n        UnaryExpression: 'UnaryExpression',\n        UpdateExpression: 'UpdateExpression',\n        VariableDeclaration: 'VariableDeclaration',\n        VariableDeclarator: 'VariableDeclarator',\n        WhileStatement: 'WhileStatement',\n        WithStatement: 'WithStatement',\n        YieldExpression: 'YieldExpression'\n    };\n\n    VisitorKeys = {\n        AssignmentExpression: ['left', 'right'],\n        AssignmentPattern: ['left', 'right'],\n        ArrayExpression: ['elements'],\n        ArrayPattern: ['elements'],\n        ArrowFunctionExpression: ['params', 'body'],\n        AwaitExpression: ['argument'], // CAUTION: It's deferred to ES7.\n        BlockStatement: ['body'],\n        BinaryExpression: ['left', 'right'],\n        BreakStatement: ['label'],\n        CallExpression: ['callee', 'arguments'],\n        CatchClause: ['param', 'body'],\n        ChainExpression: ['expression'],\n        ClassBody: ['body'],\n        ClassDeclaration: ['id', 'superClass', 'body'],\n        ClassExpression: ['id', 'superClass', 'body'],\n        ComprehensionBlock: ['left', 'right'],  // CAUTION: It's deferred to ES7.\n        ComprehensionExpression: ['blocks', 'filter', 'body'],  // CAUTION: It's deferred to ES7.\n        ConditionalExpression: ['test', 'consequent', 'alternate'],\n        ContinueStatement: ['label'],\n        DebuggerStatement: [],\n        DirectiveStatement: [],\n        DoWhileStatement: ['body', 'test'],\n        EmptyStatement: [],\n        ExportAllDeclaration: ['source'],\n        ExportDefaultDeclaration: ['declaration'],\n        ExportNamedDeclaration: ['declaration', 'specifiers', 'source'],\n        ExportSpecifier: ['exported', 'local'],\n        ExpressionStatement: ['expression'],\n        ForStatement: ['init', 'test', 'update', 'body'],\n        ForInStatement: ['left', 'right', 'body'],\n        ForOfStatement: ['left', 'right', 'body'],\n        FunctionDeclaration: ['id', 'params', 'body'],\n        FunctionExpression: ['id', 'params', 'body'],\n        GeneratorExpression: ['blocks', 'filter', 'body'],  // CAUTION: It's deferred to ES7.\n        Identifier: [],\n        IfStatement: ['test', 'consequent', 'alternate'],\n        ImportExpression: ['source'],\n        ImportDeclaration: ['specifiers', 'source'],\n        ImportDefaultSpecifier: ['local'],\n        ImportNamespaceSpecifier: ['local'],\n        ImportSpecifier: ['imported', 'local'],\n        Literal: [],\n        LabeledStatement: ['label', 'body'],\n        LogicalExpression: ['left', 'right'],\n        MemberExpression: ['object', 'property'],\n        MetaProperty: ['meta', 'property'],\n        MethodDefinition: ['key', 'value'],\n        ModuleSpecifier: [],\n        NewExpression: ['callee', 'arguments'],\n        ObjectExpression: ['properties'],\n        ObjectPattern: ['properties'],\n        PrivateIdentifier: [],\n        Program: ['body'],\n        Property: ['key', 'value'],\n        PropertyDefinition: ['key', 'value'],\n        RestElement: [ 'argument' ],\n        ReturnStatement: ['argument'],\n        SequenceExpression: ['expressions'],\n        SpreadElement: ['argument'],\n        Super: [],\n        SwitchStatement: ['discriminant', 'cases'],\n        SwitchCase: ['test', 'consequent'],\n        TaggedTemplateExpression: ['tag', 'quasi'],\n        TemplateElement: [],\n        TemplateLiteral: ['quasis', 'expressions'],\n        ThisExpression: [],\n        ThrowStatement: ['argument'],\n        TryStatement: ['block', 'handler', 'finalizer'],\n        UnaryExpression: ['argument'],\n        UpdateExpression: ['argument'],\n        VariableDeclaration: ['declarations'],\n        VariableDeclarator: ['id', 'init'],\n        WhileStatement: ['test', 'body'],\n        WithStatement: ['object', 'body'],\n        YieldExpression: ['argument']\n    };\n\n    // unique id\n    BREAK = {};\n    SKIP = {};\n    REMOVE = {};\n\n    VisitorOption = {\n        Break: BREAK,\n        Skip: SKIP,\n        Remove: REMOVE\n    };\n\n    function Reference(parent, key) {\n        this.parent = parent;\n        this.key = key;\n    }\n\n    Reference.prototype.replace = function replace(node) {\n        this.parent[this.key] = node;\n    };\n\n    Reference.prototype.remove = function remove() {\n        if (Array.isArray(this.parent)) {\n            this.parent.splice(this.key, 1);\n            return true;\n        } else {\n            this.replace(null);\n            return false;\n        }\n    };\n\n    function Element(node, path, wrap, ref) {\n        this.node = node;\n        this.path = path;\n        this.wrap = wrap;\n        this.ref = ref;\n    }\n\n    function Controller() { }\n\n    // API:\n    // return property path array from root to current node\n    Controller.prototype.path = function path() {\n        var i, iz, j, jz, result, element;\n\n        function addToPath(result, path) {\n            if (Array.isArray(path)) {\n                for (j = 0, jz = path.length; j < jz; ++j) {\n                    result.push(path[j]);\n                }\n            } else {\n                result.push(path);\n            }\n        }\n\n        // root node\n        if (!this.__current.path) {\n            return null;\n        }\n\n        // first node is sentinel, second node is root element\n        result = [];\n        for (i = 2, iz = this.__leavelist.length; i < iz; ++i) {\n            element = this.__leavelist[i];\n            addToPath(result, element.path);\n        }\n        addToPath(result, this.__current.path);\n        return result;\n    };\n\n    // API:\n    // return type of current node\n    Controller.prototype.type = function () {\n        var node = this.current();\n        return node.type || this.__current.wrap;\n    };\n\n    // API:\n    // return array of parent elements\n    Controller.prototype.parents = function parents() {\n        var i, iz, result;\n\n        // first node is sentinel\n        result = [];\n        for (i = 1, iz = this.__leavelist.length; i < iz; ++i) {\n            result.push(this.__leavelist[i].node);\n        }\n\n        return result;\n    };\n\n    // API:\n    // return current node\n    Controller.prototype.current = function current() {\n        return this.__current.node;\n    };\n\n    Controller.prototype.__execute = function __execute(callback, element) {\n        var previous, result;\n\n        result = undefined;\n\n        previous  = this.__current;\n        this.__current = element;\n        this.__state = null;\n        if (callback) {\n            result = callback.call(this, element.node, this.__leavelist[this.__leavelist.length - 1].node);\n        }\n        this.__current = previous;\n\n        return result;\n    };\n\n    // API:\n    // notify control skip / break\n    Controller.prototype.notify = function notify(flag) {\n        this.__state = flag;\n    };\n\n    // API:\n    // skip child nodes of current node\n    Controller.prototype.skip = function () {\n        this.notify(SKIP);\n    };\n\n    // API:\n    // break traversals\n    Controller.prototype['break'] = function () {\n        this.notify(BREAK);\n    };\n\n    // API:\n    // remove node\n    Controller.prototype.remove = function () {\n        this.notify(REMOVE);\n    };\n\n    Controller.prototype.__initialize = function(root, visitor) {\n        this.visitor = visitor;\n        this.root = root;\n        this.__worklist = [];\n        this.__leavelist = [];\n        this.__current = null;\n        this.__state = null;\n        this.__fallback = null;\n        if (visitor.fallback === 'iteration') {\n            this.__fallback = Object.keys;\n        } else if (typeof visitor.fallback === 'function') {\n            this.__fallback = visitor.fallback;\n        }\n\n        this.__keys = VisitorKeys;\n        if (visitor.keys) {\n            this.__keys = Object.assign(Object.create(this.__keys), visitor.keys);\n        }\n    };\n\n    function isNode(node) {\n        if (node == null) {\n            return false;\n        }\n        return typeof node === 'object' && typeof node.type === 'string';\n    }\n\n    function isProperty(nodeType, key) {\n        return (nodeType === Syntax.ObjectExpression || nodeType === Syntax.ObjectPattern) && 'properties' === key;\n    }\n  \n    function candidateExistsInLeaveList(leavelist, candidate) {\n        for (var i = leavelist.length - 1; i >= 0; --i) {\n            if (leavelist[i].node === candidate) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    Controller.prototype.traverse = function traverse(root, visitor) {\n        var worklist,\n            leavelist,\n            element,\n            node,\n            nodeType,\n            ret,\n            key,\n            current,\n            current2,\n            candidates,\n            candidate,\n            sentinel;\n\n        this.__initialize(root, visitor);\n\n        sentinel = {};\n\n        // reference\n        worklist = this.__worklist;\n        leavelist = this.__leavelist;\n\n        // initialize\n        worklist.push(new Element(root, null, null, null));\n        leavelist.push(new Element(null, null, null, null));\n\n        while (worklist.length) {\n            element = worklist.pop();\n\n            if (element === sentinel) {\n                element = leavelist.pop();\n\n                ret = this.__execute(visitor.leave, element);\n\n                if (this.__state === BREAK || ret === BREAK) {\n                    return;\n                }\n                continue;\n            }\n\n            if (element.node) {\n\n                ret = this.__execute(visitor.enter, element);\n\n                if (this.__state === BREAK || ret === BREAK) {\n                    return;\n                }\n\n                worklist.push(sentinel);\n                leavelist.push(element);\n\n                if (this.__state === SKIP || ret === SKIP) {\n                    continue;\n                }\n\n                node = element.node;\n                nodeType = node.type || element.wrap;\n                candidates = this.__keys[nodeType];\n                if (!candidates) {\n                    if (this.__fallback) {\n                        candidates = this.__fallback(node);\n                    } else {\n                        throw new Error('Unknown node type ' + nodeType + '.');\n                    }\n                }\n\n                current = candidates.length;\n                while ((current -= 1) >= 0) {\n                    key = candidates[current];\n                    candidate = node[key];\n                    if (!candidate) {\n                        continue;\n                    }\n\n                    if (Array.isArray(candidate)) {\n                        current2 = candidate.length;\n                        while ((current2 -= 1) >= 0) {\n                            if (!candidate[current2]) {\n                                continue;\n                            }\n\n                            if (candidateExistsInLeaveList(leavelist, candidate[current2])) {\n                              continue;\n                            }\n\n                            if (isProperty(nodeType, candidates[current])) {\n                                element = new Element(candidate[current2], [key, current2], 'Property', null);\n                            } else if (isNode(candidate[current2])) {\n                                element = new Element(candidate[current2], [key, current2], null, null);\n                            } else {\n                                continue;\n                            }\n                            worklist.push(element);\n                        }\n                    } else if (isNode(candidate)) {\n                        if (candidateExistsInLeaveList(leavelist, candidate)) {\n                          continue;\n                        }\n\n                        worklist.push(new Element(candidate, key, null, null));\n                    }\n                }\n            }\n        }\n    };\n\n    Controller.prototype.replace = function replace(root, visitor) {\n        var worklist,\n            leavelist,\n            node,\n            nodeType,\n            target,\n            element,\n            current,\n            current2,\n            candidates,\n            candidate,\n            sentinel,\n            outer,\n            key;\n\n        function removeElem(element) {\n            var i,\n                key,\n                nextElem,\n                parent;\n\n            if (element.ref.remove()) {\n                // When the reference is an element of an array.\n                key = element.ref.key;\n                parent = element.ref.parent;\n\n                // If removed from array, then decrease following items' keys.\n                i = worklist.length;\n                while (i--) {\n                    nextElem = worklist[i];\n                    if (nextElem.ref && nextElem.ref.parent === parent) {\n                        if  (nextElem.ref.key < key) {\n                            break;\n                        }\n                        --nextElem.ref.key;\n                    }\n                }\n            }\n        }\n\n        this.__initialize(root, visitor);\n\n        sentinel = {};\n\n        // reference\n        worklist = this.__worklist;\n        leavelist = this.__leavelist;\n\n        // initialize\n        outer = {\n            root: root\n        };\n        element = new Element(root, null, null, new Reference(outer, 'root'));\n        worklist.push(element);\n        leavelist.push(element);\n\n        while (worklist.length) {\n            element = worklist.pop();\n\n            if (element === sentinel) {\n                element = leavelist.pop();\n\n                target = this.__execute(visitor.leave, element);\n\n                // node may be replaced with null,\n                // so distinguish between undefined and null in this place\n                if (target !== undefined && target !== BREAK && target !== SKIP && target !== REMOVE) {\n                    // replace\n                    element.ref.replace(target);\n                }\n\n                if (this.__state === REMOVE || target === REMOVE) {\n                    removeElem(element);\n                }\n\n                if (this.__state === BREAK || target === BREAK) {\n                    return outer.root;\n                }\n                continue;\n            }\n\n            target = this.__execute(visitor.enter, element);\n\n            // node may be replaced with null,\n            // so distinguish between undefined and null in this place\n            if (target !== undefined && target !== BREAK && target !== SKIP && target !== REMOVE) {\n                // replace\n                element.ref.replace(target);\n                element.node = target;\n            }\n\n            if (this.__state === REMOVE || target === REMOVE) {\n                removeElem(element);\n                element.node = null;\n            }\n\n            if (this.__state === BREAK || target === BREAK) {\n                return outer.root;\n            }\n\n            // node may be null\n            node = element.node;\n            if (!node) {\n                continue;\n            }\n\n            worklist.push(sentinel);\n            leavelist.push(element);\n\n            if (this.__state === SKIP || target === SKIP) {\n                continue;\n            }\n\n            nodeType = node.type || element.wrap;\n            candidates = this.__keys[nodeType];\n            if (!candidates) {\n                if (this.__fallback) {\n                    candidates = this.__fallback(node);\n                } else {\n                    throw new Error('Unknown node type ' + nodeType + '.');\n                }\n            }\n\n            current = candidates.length;\n            while ((current -= 1) >= 0) {\n                key = candidates[current];\n                candidate = node[key];\n                if (!candidate) {\n                    continue;\n                }\n\n                if (Array.isArray(candidate)) {\n                    current2 = candidate.length;\n                    while ((current2 -= 1) >= 0) {\n                        if (!candidate[current2]) {\n                            continue;\n                        }\n                        if (isProperty(nodeType, candidates[current])) {\n                            element = new Element(candidate[current2], [key, current2], 'Property', new Reference(candidate, current2));\n                        } else if (isNode(candidate[current2])) {\n                            element = new Element(candidate[current2], [key, current2], null, new Reference(candidate, current2));\n                        } else {\n                            continue;\n                        }\n                        worklist.push(element);\n                    }\n                } else if (isNode(candidate)) {\n                    worklist.push(new Element(candidate, key, null, new Reference(node, key)));\n                }\n            }\n        }\n\n        return outer.root;\n    };\n\n    function traverse(root, visitor) {\n        var controller = new Controller();\n        return controller.traverse(root, visitor);\n    }\n\n    function replace(root, visitor) {\n        var controller = new Controller();\n        return controller.replace(root, visitor);\n    }\n\n    function extendCommentRange(comment, tokens) {\n        var target;\n\n        target = upperBound(tokens, function search(token) {\n            return token.range[0] > comment.range[0];\n        });\n\n        comment.extendedRange = [comment.range[0], comment.range[1]];\n\n        if (target !== tokens.length) {\n            comment.extendedRange[1] = tokens[target].range[0];\n        }\n\n        target -= 1;\n        if (target >= 0) {\n            comment.extendedRange[0] = tokens[target].range[1];\n        }\n\n        return comment;\n    }\n\n    function attachComments(tree, providedComments, tokens) {\n        // At first, we should calculate extended comment ranges.\n        var comments = [], comment, len, i, cursor;\n\n        if (!tree.range) {\n            throw new Error('attachComments needs range information');\n        }\n\n        // tokens array is empty, we attach comments to tree as 'leadingComments'\n        if (!tokens.length) {\n            if (providedComments.length) {\n                for (i = 0, len = providedComments.length; i < len; i += 1) {\n                    comment = deepCopy(providedComments[i]);\n                    comment.extendedRange = [0, tree.range[0]];\n                    comments.push(comment);\n                }\n                tree.leadingComments = comments;\n            }\n            return tree;\n        }\n\n        for (i = 0, len = providedComments.length; i < len; i += 1) {\n            comments.push(extendCommentRange(deepCopy(providedComments[i]), tokens));\n        }\n\n        // This is based on John Freeman's implementation.\n        cursor = 0;\n        traverse(tree, {\n            enter: function (node) {\n                var comment;\n\n                while (cursor < comments.length) {\n                    comment = comments[cursor];\n                    if (comment.extendedRange[1] > node.range[0]) {\n                        break;\n                    }\n\n                    if (comment.extendedRange[1] === node.range[0]) {\n                        if (!node.leadingComments) {\n                            node.leadingComments = [];\n                        }\n                        node.leadingComments.push(comment);\n                        comments.splice(cursor, 1);\n                    } else {\n                        cursor += 1;\n                    }\n                }\n\n                // already out of owned node\n                if (cursor === comments.length) {\n                    return VisitorOption.Break;\n                }\n\n                if (comments[cursor].extendedRange[0] > node.range[1]) {\n                    return VisitorOption.Skip;\n                }\n            }\n        });\n\n        cursor = 0;\n        traverse(tree, {\n            leave: function (node) {\n                var comment;\n\n                while (cursor < comments.length) {\n                    comment = comments[cursor];\n                    if (node.range[1] < comment.extendedRange[0]) {\n                        break;\n                    }\n\n                    if (node.range[1] === comment.extendedRange[0]) {\n                        if (!node.trailingComments) {\n                            node.trailingComments = [];\n                        }\n                        node.trailingComments.push(comment);\n                        comments.splice(cursor, 1);\n                    } else {\n                        cursor += 1;\n                    }\n                }\n\n                // already out of owned node\n                if (cursor === comments.length) {\n                    return VisitorOption.Break;\n                }\n\n                if (comments[cursor].extendedRange[0] > node.range[1]) {\n                    return VisitorOption.Skip;\n                }\n            }\n        });\n\n        return tree;\n    }\n\n    exports.Syntax = Syntax;\n    exports.traverse = traverse;\n    exports.replace = replace;\n    exports.attachComments = attachComments;\n    exports.VisitorKeys = VisitorKeys;\n    exports.VisitorOption = VisitorOption;\n    exports.Controller = Controller;\n    exports.cloneEnvironment = function () { return clone({}); };\n\n    return exports;\n}(exports));\n/* vim: set sw=4 ts=4 et tw=80 : */\n", "/*\n * Generated by PEG.js 0.10.0.\n *\n * http://pegjs.org/\n */\n(function(root, factory) {\n  if (typeof define === \"function\" && define.amd) {\n    define([], factory);\n  } else if (typeof module === \"object\" && module.exports) {\n    module.exports = factory();\n  }\n})(this, function() {\n  \"use strict\";\n\n  function peg$subclass(child, parent) {\n    function ctor() { this.constructor = child; }\n    ctor.prototype = parent.prototype;\n    child.prototype = new ctor();\n  }\n\n  function peg$SyntaxError(message, expected, found, location) {\n    this.message  = message;\n    this.expected = expected;\n    this.found    = found;\n    this.location = location;\n    this.name     = \"SyntaxError\";\n\n    if (typeof Error.captureStackTrace === \"function\") {\n      Error.captureStackTrace(this, peg$SyntaxError);\n    }\n  }\n\n  peg$subclass(peg$SyntaxError, Error);\n\n  peg$SyntaxError.buildMessage = function(expected, found) {\n    var DESCRIBE_EXPECTATION_FNS = {\n          literal: function(expectation) {\n            return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n          },\n\n          \"class\": function(expectation) {\n            var escapedParts = \"\",\n                i;\n\n            for (i = 0; i < expectation.parts.length; i++) {\n              escapedParts += expectation.parts[i] instanceof Array\n                ? classEscape(expectation.parts[i][0]) + \"-\" + classEscape(expectation.parts[i][1])\n                : classEscape(expectation.parts[i]);\n            }\n\n            return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n          },\n\n          any: function(expectation) {\n            return \"any character\";\n          },\n\n          end: function(expectation) {\n            return \"end of input\";\n          },\n\n          other: function(expectation) {\n            return expectation.description;\n          }\n        };\n\n    function hex(ch) {\n      return ch.charCodeAt(0).toString(16).toUpperCase();\n    }\n\n    function literalEscape(s) {\n      return s\n        .replace(/\\\\/g, '\\\\\\\\')\n        .replace(/\"/g,  '\\\\\"')\n        .replace(/\\0/g, '\\\\0')\n        .replace(/\\t/g, '\\\\t')\n        .replace(/\\n/g, '\\\\n')\n        .replace(/\\r/g, '\\\\r')\n        .replace(/[\\x00-\\x0F]/g,          function(ch) { return '\\\\x0' + hex(ch); })\n        .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x'  + hex(ch); });\n    }\n\n    function classEscape(s) {\n      return s\n        .replace(/\\\\/g, '\\\\\\\\')\n        .replace(/\\]/g, '\\\\]')\n        .replace(/\\^/g, '\\\\^')\n        .replace(/-/g,  '\\\\-')\n        .replace(/\\0/g, '\\\\0')\n        .replace(/\\t/g, '\\\\t')\n        .replace(/\\n/g, '\\\\n')\n        .replace(/\\r/g, '\\\\r')\n        .replace(/[\\x00-\\x0F]/g,          function(ch) { return '\\\\x0' + hex(ch); })\n        .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x'  + hex(ch); });\n    }\n\n    function describeExpectation(expectation) {\n      return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n    }\n\n    function describeExpected(expected) {\n      var descriptions = new Array(expected.length),\n          i, j;\n\n      for (i = 0; i < expected.length; i++) {\n        descriptions[i] = describeExpectation(expected[i]);\n      }\n\n      descriptions.sort();\n\n      if (descriptions.length > 0) {\n        for (i = 1, j = 1; i < descriptions.length; i++) {\n          if (descriptions[i - 1] !== descriptions[i]) {\n            descriptions[j] = descriptions[i];\n            j++;\n          }\n        }\n        descriptions.length = j;\n      }\n\n      switch (descriptions.length) {\n        case 1:\n          return descriptions[0];\n\n        case 2:\n          return descriptions[0] + \" or \" + descriptions[1];\n\n        default:\n          return descriptions.slice(0, -1).join(\", \")\n            + \", or \"\n            + descriptions[descriptions.length - 1];\n      }\n    }\n\n    function describeFound(found) {\n      return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n    }\n\n    return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n  };\n\n  function peg$parse(input, options) {\n    options = options !== void 0 ? options : {};\n\n    var peg$FAILED = {},\n\n        peg$startRuleFunctions = { start: peg$parsestart },\n        peg$startRuleFunction  = peg$parsestart,\n\n        peg$c0 = function(ss) {\n            return ss.length === 1 ? ss[0] : { type: 'matches', selectors: ss };\n          },\n        peg$c1 = function() { return void 0; },\n        peg$c2 = \" \",\n        peg$c3 = peg$literalExpectation(\" \", false),\n        peg$c4 = /^[^ [\\],():#!=><~+.]/,\n        peg$c5 = peg$classExpectation([\" \", \"[\", \"]\", \",\", \"(\", \")\", \":\", \"#\", \"!\", \"=\", \">\", \"<\", \"~\", \"+\", \".\"], true, false),\n        peg$c6 = function(i) { return i.join(''); },\n        peg$c7 = \">\",\n        peg$c8 = peg$literalExpectation(\">\", false),\n        peg$c9 = function() { return 'child'; },\n        peg$c10 = \"~\",\n        peg$c11 = peg$literalExpectation(\"~\", false),\n        peg$c12 = function() { return 'sibling'; },\n        peg$c13 = \"+\",\n        peg$c14 = peg$literalExpectation(\"+\", false),\n        peg$c15 = function() { return 'adjacent'; },\n        peg$c16 = function() { return 'descendant'; },\n        peg$c17 = \",\",\n        peg$c18 = peg$literalExpectation(\",\", false),\n        peg$c19 = function(s, ss) {\n          return [s].concat(ss.map(function (s) { return s[3]; }));\n        },\n        peg$c20 = function(op, s) {\n            if (!op) return s;\n            return { type: op, left: { type: 'exactNode' }, right: s };\n          },\n        peg$c21 = function(a, ops) {\n            return ops.reduce(function (memo, rhs) {\n              return { type: rhs[0], left: memo, right: rhs[1] };\n            }, a);\n          },\n        peg$c22 = \"!\",\n        peg$c23 = peg$literalExpectation(\"!\", false),\n        peg$c24 = function(subject, as) {\n            const b = as.length === 1 ? as[0] : { type: 'compound', selectors: as };\n            if(subject) b.subject = true;\n            return b;\n          },\n        peg$c25 = \"*\",\n        peg$c26 = peg$literalExpectation(\"*\", false),\n        peg$c27 = function(a) { return { type: 'wildcard', value: a }; },\n        peg$c28 = \"#\",\n        peg$c29 = peg$literalExpectation(\"#\", false),\n        peg$c30 = function(i) { return { type: 'identifier', value: i }; },\n        peg$c31 = \"[\",\n        peg$c32 = peg$literalExpectation(\"[\", false),\n        peg$c33 = \"]\",\n        peg$c34 = peg$literalExpectation(\"]\", false),\n        peg$c35 = function(v) { return v; },\n        peg$c36 = /^[><!]/,\n        peg$c37 = peg$classExpectation([\">\", \"<\", \"!\"], false, false),\n        peg$c38 = \"=\",\n        peg$c39 = peg$literalExpectation(\"=\", false),\n        peg$c40 = function(a) { return (a || '') + '='; },\n        peg$c41 = /^[><]/,\n        peg$c42 = peg$classExpectation([\">\", \"<\"], false, false),\n        peg$c43 = \".\",\n        peg$c44 = peg$literalExpectation(\".\", false),\n        peg$c45 = function(a, as) {\n            return [].concat.apply([a], as).join('');\n          },\n        peg$c46 = function(name, op, value) {\n              return { type: 'attribute', name: name, operator: op, value: value };\n            },\n        peg$c47 = function(name) { return { type: 'attribute', name: name }; },\n        peg$c48 = \"\\\"\",\n        peg$c49 = peg$literalExpectation(\"\\\"\", false),\n        peg$c50 = /^[^\\\\\"]/,\n        peg$c51 = peg$classExpectation([\"\\\\\", \"\\\"\"], true, false),\n        peg$c52 = \"\\\\\",\n        peg$c53 = peg$literalExpectation(\"\\\\\", false),\n        peg$c54 = peg$anyExpectation(),\n        peg$c55 = function(a, b) { return a + b; },\n        peg$c56 = function(d) {\n                return { type: 'literal', value: strUnescape(d.join('')) };\n              },\n        peg$c57 = \"'\",\n        peg$c58 = peg$literalExpectation(\"'\", false),\n        peg$c59 = /^[^\\\\']/,\n        peg$c60 = peg$classExpectation([\"\\\\\", \"'\"], true, false),\n        peg$c61 = /^[0-9]/,\n        peg$c62 = peg$classExpectation([[\"0\", \"9\"]], false, false),\n        peg$c63 = function(a, b) {\n                // Can use `a.flat().join('')` once supported\n                const leadingDecimals = a ? [].concat.apply([], a).join('') : '';\n                return { type: 'literal', value: parseFloat(leadingDecimals + b.join('')) };\n              },\n        peg$c64 = function(i) { return { type: 'literal', value: i }; },\n        peg$c65 = \"type(\",\n        peg$c66 = peg$literalExpectation(\"type(\", false),\n        peg$c67 = /^[^ )]/,\n        peg$c68 = peg$classExpectation([\" \", \")\"], true, false),\n        peg$c69 = \")\",\n        peg$c70 = peg$literalExpectation(\")\", false),\n        peg$c71 = function(t) { return { type: 'type', value: t.join('') }; },\n        peg$c72 = /^[imsu]/,\n        peg$c73 = peg$classExpectation([\"i\", \"m\", \"s\", \"u\"], false, false),\n        peg$c74 = \"/\",\n        peg$c75 = peg$literalExpectation(\"/\", false),\n        peg$c76 = function(pattern, flgs) {\n              return {\n                type: 'regexp', value: new RegExp(pattern.join(''), flgs ? flgs.join('') : '')\n              };\n            },\n        peg$c77 = /^[^\\]\\\\]/,\n        peg$c78 = peg$classExpectation([\"]\", \"\\\\\"], true, false),\n        peg$c79 = function(cs) { return '[' + cs.join('') + ']'; },\n        peg$c80 = function(a) { return '\\\\' + a; },\n        peg$c81 = /^[^\\/\\\\[]/,\n        peg$c82 = peg$classExpectation([\"/\", \"\\\\\", \"[\"], true, false),\n        peg$c83 = function(cs) { return cs.join(''); },\n        peg$c84 = function(i, is) {\n          return { type: 'field', name: is.reduce(function(memo, p){ return memo + p[0] + p[1]; }, i)};\n        },\n        peg$c85 = \":not(\",\n        peg$c86 = peg$literalExpectation(\":not(\", false),\n        peg$c87 = function(ss) { return { type: 'not', selectors: ss }; },\n        peg$c88 = \":matches(\",\n        peg$c89 = peg$literalExpectation(\":matches(\", false),\n        peg$c90 = function(ss) { return { type: 'matches', selectors: ss }; },\n        peg$c91 = \":is(\",\n        peg$c92 = peg$literalExpectation(\":is(\", false),\n        peg$c93 = \":has(\",\n        peg$c94 = peg$literalExpectation(\":has(\", false),\n        peg$c95 = function(ss) { return { type: 'has', selectors: ss }; },\n        peg$c96 = \":first-child\",\n        peg$c97 = peg$literalExpectation(\":first-child\", false),\n        peg$c98 = function() { return nth(1); },\n        peg$c99 = \":last-child\",\n        peg$c100 = peg$literalExpectation(\":last-child\", false),\n        peg$c101 = function() { return nthLast(1); },\n        peg$c102 = \":nth-child(\",\n        peg$c103 = peg$literalExpectation(\":nth-child(\", false),\n        peg$c104 = function(n) { return nth(parseInt(n.join(''), 10)); },\n        peg$c105 = \":nth-last-child(\",\n        peg$c106 = peg$literalExpectation(\":nth-last-child(\", false),\n        peg$c107 = function(n) { return nthLast(parseInt(n.join(''), 10)); },\n        peg$c108 = \":\",\n        peg$c109 = peg$literalExpectation(\":\", false),\n        peg$c110 = function(c) {\n          return { type: 'class', name: c };\n        },\n\n        peg$currPos          = 0,\n        peg$savedPos         = 0,\n        peg$posDetailsCache  = [{ line: 1, column: 1 }],\n        peg$maxFailPos       = 0,\n        peg$maxFailExpected  = [],\n        peg$silentFails      = 0,\n\n        peg$resultsCache = {},\n\n        peg$result;\n\n    if (\"startRule\" in options) {\n      if (!(options.startRule in peg$startRuleFunctions)) {\n        throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n      }\n\n      peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n    }\n\n    function text() {\n      return input.substring(peg$savedPos, peg$currPos);\n    }\n\n    function location() {\n      return peg$computeLocation(peg$savedPos, peg$currPos);\n    }\n\n    function expected(description, location) {\n      location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n      throw peg$buildStructuredError(\n        [peg$otherExpectation(description)],\n        input.substring(peg$savedPos, peg$currPos),\n        location\n      );\n    }\n\n    function error(message, location) {\n      location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n      throw peg$buildSimpleError(message, location);\n    }\n\n    function peg$literalExpectation(text, ignoreCase) {\n      return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n    }\n\n    function peg$classExpectation(parts, inverted, ignoreCase) {\n      return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n    }\n\n    function peg$anyExpectation() {\n      return { type: \"any\" };\n    }\n\n    function peg$endExpectation() {\n      return { type: \"end\" };\n    }\n\n    function peg$otherExpectation(description) {\n      return { type: \"other\", description: description };\n    }\n\n    function peg$computePosDetails(pos) {\n      var details = peg$posDetailsCache[pos], p;\n\n      if (details) {\n        return details;\n      } else {\n        p = pos - 1;\n        while (!peg$posDetailsCache[p]) {\n          p--;\n        }\n\n        details = peg$posDetailsCache[p];\n        details = {\n          line:   details.line,\n          column: details.column\n        };\n\n        while (p < pos) {\n          if (input.charCodeAt(p) === 10) {\n            details.line++;\n            details.column = 1;\n          } else {\n            details.column++;\n          }\n\n          p++;\n        }\n\n        peg$posDetailsCache[pos] = details;\n        return details;\n      }\n    }\n\n    function peg$computeLocation(startPos, endPos) {\n      var startPosDetails = peg$computePosDetails(startPos),\n          endPosDetails   = peg$computePosDetails(endPos);\n\n      return {\n        start: {\n          offset: startPos,\n          line:   startPosDetails.line,\n          column: startPosDetails.column\n        },\n        end: {\n          offset: endPos,\n          line:   endPosDetails.line,\n          column: endPosDetails.column\n        }\n      };\n    }\n\n    function peg$fail(expected) {\n      if (peg$currPos < peg$maxFailPos) { return; }\n\n      if (peg$currPos > peg$maxFailPos) {\n        peg$maxFailPos = peg$currPos;\n        peg$maxFailExpected = [];\n      }\n\n      peg$maxFailExpected.push(expected);\n    }\n\n    function peg$buildSimpleError(message, location) {\n      return new peg$SyntaxError(message, null, null, location);\n    }\n\n    function peg$buildStructuredError(expected, found, location) {\n      return new peg$SyntaxError(\n        peg$SyntaxError.buildMessage(expected, found),\n        expected,\n        found,\n        location\n      );\n    }\n\n    function peg$parsestart() {\n      var s0, s1, s2, s3;\n\n      var key    = peg$currPos * 36 + 0,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      s1 = peg$parse_();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseselectors();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parse_();\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c0(s2);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parse_();\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c1();\n        }\n        s0 = s1;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parse_() {\n      var s0, s1;\n\n      var key    = peg$currPos * 36 + 1,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = [];\n      if (input.charCodeAt(peg$currPos) === 32) {\n        s1 = peg$c2;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c3); }\n      }\n      while (s1 !== peg$FAILED) {\n        s0.push(s1);\n        if (input.charCodeAt(peg$currPos) === 32) {\n          s1 = peg$c2;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c3); }\n        }\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parseidentifierName() {\n      var s0, s1, s2;\n\n      var key    = peg$currPos * 36 + 2,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      s1 = [];\n      if (peg$c4.test(input.charAt(peg$currPos))) {\n        s2 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c5); }\n      }\n      if (s2 !== peg$FAILED) {\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          if (peg$c4.test(input.charAt(peg$currPos))) {\n            s2 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c5); }\n          }\n        }\n      } else {\n        s1 = peg$FAILED;\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c6(s1);\n      }\n      s0 = s1;\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsebinaryOp() {\n      var s0, s1, s2, s3;\n\n      var key    = peg$currPos * 36 + 3,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      s1 = peg$parse_();\n      if (s1 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 62) {\n          s2 = peg$c7;\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c8); }\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parse_();\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c9();\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parse_();\n        if (s1 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 126) {\n            s2 = peg$c10;\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c11); }\n          }\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parse_();\n            if (s3 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c12();\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parse_();\n          if (s1 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 43) {\n              s2 = peg$c13;\n              peg$currPos++;\n            } else {\n              s2 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c14); }\n            }\n            if (s2 !== peg$FAILED) {\n              s3 = peg$parse_();\n              if (s3 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c15();\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n          if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 32) {\n              s1 = peg$c2;\n              peg$currPos++;\n            } else {\n              s1 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c3); }\n            }\n            if (s1 !== peg$FAILED) {\n              s2 = peg$parse_();\n              if (s2 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c16();\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          }\n        }\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsehasSelectors() {\n      var s0, s1, s2, s3, s4, s5, s6, s7;\n\n      var key    = peg$currPos * 36 + 4,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      s1 = peg$parsehasSelector();\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$currPos;\n        s4 = peg$parse_();\n        if (s4 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s5 = peg$c17;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c18); }\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parse_();\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parsehasSelector();\n              if (s7 !== peg$FAILED) {\n                s4 = [s4, s5, s6, s7];\n                s3 = s4;\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$currPos;\n          s4 = peg$parse_();\n          if (s4 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 44) {\n              s5 = peg$c17;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c18); }\n            }\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parse_();\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parsehasSelector();\n                if (s7 !== peg$FAILED) {\n                  s4 = [s4, s5, s6, s7];\n                  s3 = s4;\n                } else {\n                  peg$currPos = s3;\n                  s3 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c19(s1, s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parseselectors() {\n      var s0, s1, s2, s3, s4, s5, s6, s7;\n\n      var key    = peg$currPos * 36 + 5,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      s1 = peg$parseselector();\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$currPos;\n        s4 = peg$parse_();\n        if (s4 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s5 = peg$c17;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c18); }\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parse_();\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parseselector();\n              if (s7 !== peg$FAILED) {\n                s4 = [s4, s5, s6, s7];\n                s3 = s4;\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$currPos;\n          s4 = peg$parse_();\n          if (s4 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 44) {\n              s5 = peg$c17;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c18); }\n            }\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parse_();\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parseselector();\n                if (s7 !== peg$FAILED) {\n                  s4 = [s4, s5, s6, s7];\n                  s3 = s4;\n                } else {\n                  peg$currPos = s3;\n                  s3 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c19(s1, s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsehasSelector() {\n      var s0, s1, s2;\n\n      var key    = peg$currPos * 36 + 6,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      s1 = peg$parsebinaryOp();\n      if (s1 === peg$FAILED) {\n        s1 = null;\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseselector();\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c20(s1, s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parseselector() {\n      var s0, s1, s2, s3, s4, s5;\n\n      var key    = peg$currPos * 36 + 7,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      s1 = peg$parsesequence();\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$currPos;\n        s4 = peg$parsebinaryOp();\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parsesequence();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$currPos;\n          s4 = peg$parsebinaryOp();\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parsesequence();\n            if (s5 !== peg$FAILED) {\n              s4 = [s4, s5];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c21(s1, s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsesequence() {\n      var s0, s1, s2, s3;\n\n      var key    = peg$currPos * 36 + 8,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 33) {\n        s1 = peg$c22;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c23); }\n      }\n      if (s1 === peg$FAILED) {\n        s1 = null;\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$parseatom();\n        if (s3 !== peg$FAILED) {\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$parseatom();\n          }\n        } else {\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c24(s1, s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parseatom() {\n      var s0;\n\n      var key    = peg$currPos * 36 + 9,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$parsewildcard();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseidentifier();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parseattr();\n          if (s0 === peg$FAILED) {\n            s0 = peg$parsefield();\n            if (s0 === peg$FAILED) {\n              s0 = peg$parsenegation();\n              if (s0 === peg$FAILED) {\n                s0 = peg$parsematches();\n                if (s0 === peg$FAILED) {\n                  s0 = peg$parseis();\n                  if (s0 === peg$FAILED) {\n                    s0 = peg$parsehas();\n                    if (s0 === peg$FAILED) {\n                      s0 = peg$parsefirstChild();\n                      if (s0 === peg$FAILED) {\n                        s0 = peg$parselastChild();\n                        if (s0 === peg$FAILED) {\n                          s0 = peg$parsenthChild();\n                          if (s0 === peg$FAILED) {\n                            s0 = peg$parsenthLastChild();\n                            if (s0 === peg$FAILED) {\n                              s0 = peg$parseclass();\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsewildcard() {\n      var s0, s1;\n\n      var key    = peg$currPos * 36 + 10,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 42) {\n        s1 = peg$c25;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c26); }\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c27(s1);\n      }\n      s0 = s1;\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parseidentifier() {\n      var s0, s1, s2;\n\n      var key    = peg$currPos * 36 + 11,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 35) {\n        s1 = peg$c28;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c29); }\n      }\n      if (s1 === peg$FAILED) {\n        s1 = null;\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseidentifierName();\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c30(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parseattr() {\n      var s0, s1, s2, s3, s4, s5;\n\n      var key    = peg$currPos * 36 + 12,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 91) {\n        s1 = peg$c31;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c32); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseattrValue();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 93) {\n                s5 = peg$c33;\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c34); }\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c35(s3);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parseattrOps() {\n      var s0, s1, s2;\n\n      var key    = peg$currPos * 36 + 13,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (peg$c36.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c37); }\n      }\n      if (s1 === peg$FAILED) {\n        s1 = null;\n      }\n      if (s1 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 61) {\n          s2 = peg$c38;\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c39); }\n        }\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c40(s1);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        if (peg$c41.test(input.charAt(peg$currPos))) {\n          s0 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c42); }\n        }\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parseattrEqOps() {\n      var s0, s1, s2;\n\n      var key    = peg$currPos * 36 + 14,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 33) {\n        s1 = peg$c22;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c23); }\n      }\n      if (s1 === peg$FAILED) {\n        s1 = null;\n      }\n      if (s1 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 61) {\n          s2 = peg$c38;\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c39); }\n        }\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c40(s1);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parseattrName() {\n      var s0, s1, s2, s3, s4, s5;\n\n      var key    = peg$currPos * 36 + 15,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      s1 = peg$parseidentifierName();\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 46) {\n          s4 = peg$c43;\n          peg$currPos++;\n        } else {\n          s4 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c44); }\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseidentifierName();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 46) {\n            s4 = peg$c43;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c44); }\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseidentifierName();\n            if (s5 !== peg$FAILED) {\n              s4 = [s4, s5];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c45(s1, s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parseattrValue() {\n      var s0, s1, s2, s3, s4, s5;\n\n      var key    = peg$currPos * 36 + 16,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      s1 = peg$parseattrName();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseattrEqOps();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parsetype();\n              if (s5 === peg$FAILED) {\n                s5 = peg$parseregex();\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c46(s1, s3, s5);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parseattrName();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parse_();\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parseattrOps();\n            if (s3 !== peg$FAILED) {\n              s4 = peg$parse_();\n              if (s4 !== peg$FAILED) {\n                s5 = peg$parsestring();\n                if (s5 === peg$FAILED) {\n                  s5 = peg$parsenumber();\n                  if (s5 === peg$FAILED) {\n                    s5 = peg$parsepath();\n                  }\n                }\n                if (s5 !== peg$FAILED) {\n                  peg$savedPos = s0;\n                  s1 = peg$c46(s1, s3, s5);\n                  s0 = s1;\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parseattrName();\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c47(s1);\n          }\n          s0 = s1;\n        }\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsestring() {\n      var s0, s1, s2, s3, s4, s5;\n\n      var key    = peg$currPos * 36 + 17,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 34) {\n        s1 = peg$c48;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c49); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        if (peg$c50.test(input.charAt(peg$currPos))) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c51); }\n        }\n        if (s3 === peg$FAILED) {\n          s3 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 92) {\n            s4 = peg$c52;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c53); }\n          }\n          if (s4 !== peg$FAILED) {\n            if (input.length > peg$currPos) {\n              s5 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c54); }\n            }\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s3;\n              s4 = peg$c55(s4, s5);\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        }\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          if (peg$c50.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c51); }\n          }\n          if (s3 === peg$FAILED) {\n            s3 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 92) {\n              s4 = peg$c52;\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c53); }\n            }\n            if (s4 !== peg$FAILED) {\n              if (input.length > peg$currPos) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c54); }\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s3;\n                s4 = peg$c55(s4, s5);\n                s3 = s4;\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 34) {\n            s3 = peg$c48;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c49); }\n          }\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c56(s2);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 39) {\n          s1 = peg$c57;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c58); }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          if (peg$c59.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c60); }\n          }\n          if (s3 === peg$FAILED) {\n            s3 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 92) {\n              s4 = peg$c52;\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c53); }\n            }\n            if (s4 !== peg$FAILED) {\n              if (input.length > peg$currPos) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c54); }\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s3;\n                s4 = peg$c55(s4, s5);\n                s3 = s4;\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          }\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            if (peg$c59.test(input.charAt(peg$currPos))) {\n              s3 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c60); }\n            }\n            if (s3 === peg$FAILED) {\n              s3 = peg$currPos;\n              if (input.charCodeAt(peg$currPos) === 92) {\n                s4 = peg$c52;\n                peg$currPos++;\n              } else {\n                s4 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c53); }\n              }\n              if (s4 !== peg$FAILED) {\n                if (input.length > peg$currPos) {\n                  s5 = input.charAt(peg$currPos);\n                  peg$currPos++;\n                } else {\n                  s5 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c54); }\n                }\n                if (s5 !== peg$FAILED) {\n                  peg$savedPos = s3;\n                  s4 = peg$c55(s4, s5);\n                  s3 = s4;\n                } else {\n                  peg$currPos = s3;\n                  s3 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 39) {\n              s3 = peg$c57;\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c58); }\n            }\n            if (s3 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c56(s2);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsenumber() {\n      var s0, s1, s2, s3;\n\n      var key    = peg$currPos * 36 + 18,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      s1 = peg$currPos;\n      s2 = [];\n      if (peg$c61.test(input.charAt(peg$currPos))) {\n        s3 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c62); }\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        if (peg$c61.test(input.charAt(peg$currPos))) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c62); }\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 46) {\n          s3 = peg$c43;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c44); }\n        }\n        if (s3 !== peg$FAILED) {\n          s2 = [s2, s3];\n          s1 = s2;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n      if (s1 === peg$FAILED) {\n        s1 = null;\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        if (peg$c61.test(input.charAt(peg$currPos))) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c62); }\n        }\n        if (s3 !== peg$FAILED) {\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            if (peg$c61.test(input.charAt(peg$currPos))) {\n              s3 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c62); }\n            }\n          }\n        } else {\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c63(s1, s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsepath() {\n      var s0, s1;\n\n      var key    = peg$currPos * 36 + 19,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      s1 = peg$parseidentifierName();\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c64(s1);\n      }\n      s0 = s1;\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsetype() {\n      var s0, s1, s2, s3, s4, s5;\n\n      var key    = peg$currPos * 36 + 20,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 5) === peg$c65) {\n        s1 = peg$c65;\n        peg$currPos += 5;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c66); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = [];\n          if (peg$c67.test(input.charAt(peg$currPos))) {\n            s4 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c68); }\n          }\n          if (s4 !== peg$FAILED) {\n            while (s4 !== peg$FAILED) {\n              s3.push(s4);\n              if (peg$c67.test(input.charAt(peg$currPos))) {\n                s4 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s4 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c68); }\n              }\n            }\n          } else {\n            s3 = peg$FAILED;\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 41) {\n                s5 = peg$c69;\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c70); }\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c71(s3);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parseflags() {\n      var s0, s1;\n\n      var key    = peg$currPos * 36 + 21,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = [];\n      if (peg$c72.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c73); }\n      }\n      if (s1 !== peg$FAILED) {\n        while (s1 !== peg$FAILED) {\n          s0.push(s1);\n          if (peg$c72.test(input.charAt(peg$currPos))) {\n            s1 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c73); }\n          }\n        }\n      } else {\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parseregex() {\n      var s0, s1, s2, s3, s4;\n\n      var key    = peg$currPos * 36 + 22,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 47) {\n        s1 = peg$c74;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c75); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$parsere_character_class();\n        if (s3 === peg$FAILED) {\n          s3 = peg$parsere_escape();\n          if (s3 === peg$FAILED) {\n            s3 = peg$parsere_chars();\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$parsere_character_class();\n            if (s3 === peg$FAILED) {\n              s3 = peg$parsere_escape();\n              if (s3 === peg$FAILED) {\n                s3 = peg$parsere_chars();\n              }\n            }\n          }\n        } else {\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 47) {\n            s3 = peg$c74;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c75); }\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parseflags();\n            if (s4 === peg$FAILED) {\n              s4 = null;\n            }\n            if (s4 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c76(s2, s4);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsere_character_class() {\n      var s0, s1, s2, s3;\n\n      var key    = peg$currPos * 36 + 23,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 91) {\n        s1 = peg$c31;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c32); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        if (peg$c77.test(input.charAt(peg$currPos))) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c78); }\n        }\n        if (s3 === peg$FAILED) {\n          s3 = peg$parsere_escape();\n        }\n        if (s3 !== peg$FAILED) {\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            if (peg$c77.test(input.charAt(peg$currPos))) {\n              s3 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c78); }\n            }\n            if (s3 === peg$FAILED) {\n              s3 = peg$parsere_escape();\n            }\n          }\n        } else {\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 93) {\n            s3 = peg$c33;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c34); }\n          }\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c79(s2);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsere_escape() {\n      var s0, s1, s2;\n\n      var key    = peg$currPos * 36 + 24,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 92) {\n        s1 = peg$c52;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c53); }\n      }\n      if (s1 !== peg$FAILED) {\n        if (input.length > peg$currPos) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c54); }\n        }\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c80(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsere_chars() {\n      var s0, s1, s2;\n\n      var key    = peg$currPos * 36 + 25,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      s1 = [];\n      if (peg$c81.test(input.charAt(peg$currPos))) {\n        s2 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c82); }\n      }\n      if (s2 !== peg$FAILED) {\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          if (peg$c81.test(input.charAt(peg$currPos))) {\n            s2 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c82); }\n          }\n        }\n      } else {\n        s1 = peg$FAILED;\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c83(s1);\n      }\n      s0 = s1;\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsefield() {\n      var s0, s1, s2, s3, s4, s5, s6;\n\n      var key    = peg$currPos * 36 + 26,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 46) {\n        s1 = peg$c43;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c44); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseidentifierName();\n        if (s2 !== peg$FAILED) {\n          s3 = [];\n          s4 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 46) {\n            s5 = peg$c43;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c44); }\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parseidentifierName();\n            if (s6 !== peg$FAILED) {\n              s5 = [s5, s6];\n              s4 = s5;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n          while (s4 !== peg$FAILED) {\n            s3.push(s4);\n            s4 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 46) {\n              s5 = peg$c43;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c44); }\n            }\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parseidentifierName();\n              if (s6 !== peg$FAILED) {\n                s5 = [s5, s6];\n                s4 = s5;\n              } else {\n                peg$currPos = s4;\n                s4 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n          }\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c84(s2, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsenegation() {\n      var s0, s1, s2, s3, s4, s5;\n\n      var key    = peg$currPos * 36 + 27,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 5) === peg$c85) {\n        s1 = peg$c85;\n        peg$currPos += 5;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c86); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseselectors();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 41) {\n                s5 = peg$c69;\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c70); }\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c87(s3);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsematches() {\n      var s0, s1, s2, s3, s4, s5;\n\n      var key    = peg$currPos * 36 + 28,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 9) === peg$c88) {\n        s1 = peg$c88;\n        peg$currPos += 9;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c89); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseselectors();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 41) {\n                s5 = peg$c69;\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c70); }\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c90(s3);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parseis() {\n      var s0, s1, s2, s3, s4, s5;\n\n      var key    = peg$currPos * 36 + 29,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 4) === peg$c91) {\n        s1 = peg$c91;\n        peg$currPos += 4;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c92); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseselectors();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 41) {\n                s5 = peg$c69;\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c70); }\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c90(s3);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsehas() {\n      var s0, s1, s2, s3, s4, s5;\n\n      var key    = peg$currPos * 36 + 30,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 5) === peg$c93) {\n        s1 = peg$c93;\n        peg$currPos += 5;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c94); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parsehasSelectors();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 41) {\n                s5 = peg$c69;\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c70); }\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c95(s3);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsefirstChild() {\n      var s0, s1;\n\n      var key    = peg$currPos * 36 + 31,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 12) === peg$c96) {\n        s1 = peg$c96;\n        peg$currPos += 12;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c97); }\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c98();\n      }\n      s0 = s1;\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parselastChild() {\n      var s0, s1;\n\n      var key    = peg$currPos * 36 + 32,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 11) === peg$c99) {\n        s1 = peg$c99;\n        peg$currPos += 11;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c100); }\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c101();\n      }\n      s0 = s1;\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsenthChild() {\n      var s0, s1, s2, s3, s4, s5;\n\n      var key    = peg$currPos * 36 + 33,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 11) === peg$c102) {\n        s1 = peg$c102;\n        peg$currPos += 11;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c103); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = [];\n          if (peg$c61.test(input.charAt(peg$currPos))) {\n            s4 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c62); }\n          }\n          if (s4 !== peg$FAILED) {\n            while (s4 !== peg$FAILED) {\n              s3.push(s4);\n              if (peg$c61.test(input.charAt(peg$currPos))) {\n                s4 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s4 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c62); }\n              }\n            }\n          } else {\n            s3 = peg$FAILED;\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 41) {\n                s5 = peg$c69;\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c70); }\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c104(s3);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parsenthLastChild() {\n      var s0, s1, s2, s3, s4, s5;\n\n      var key    = peg$currPos * 36 + 34,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 16) === peg$c105) {\n        s1 = peg$c105;\n        peg$currPos += 16;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c106); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = [];\n          if (peg$c61.test(input.charAt(peg$currPos))) {\n            s4 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c62); }\n          }\n          if (s4 !== peg$FAILED) {\n            while (s4 !== peg$FAILED) {\n              s3.push(s4);\n              if (peg$c61.test(input.charAt(peg$currPos))) {\n                s4 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s4 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c62); }\n              }\n            }\n          } else {\n            s3 = peg$FAILED;\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 41) {\n                s5 = peg$c69;\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c70); }\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c107(s3);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n    function peg$parseclass() {\n      var s0, s1, s2;\n\n      var key    = peg$currPos * 36 + 35,\n          cached = peg$resultsCache[key];\n\n      if (cached) {\n        peg$currPos = cached.nextPos;\n\n        return cached.result;\n      }\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 58) {\n        s1 = peg$c108;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c109); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseidentifierName();\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c110(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n\n      return s0;\n    }\n\n\n      function nth(n) { return { type: 'nth-child', index: { type: 'literal', value: n } }; }\n      function nthLast(n) { return { type: 'nth-last-child', index: { type: 'literal', value: n } }; }\n      function strUnescape(s) {\n        return s.replace(/\\\\(.)/g, function(match, ch) {\n          switch(ch) {\n            case 'b': return '\\b';\n            case 'f': return '\\f';\n            case 'n': return '\\n';\n            case 'r': return '\\r';\n            case 't': return '\\t';\n            case 'v': return '\\v';\n            default: return ch;\n          }\n        });\n      }\n\n\n    peg$result = peg$startRuleFunction();\n\n    if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n      return peg$result;\n    } else {\n      if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n        peg$fail(peg$endExpectation());\n      }\n\n      throw peg$buildStructuredError(\n        peg$maxFailExpected,\n        peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n        peg$maxFailPos < input.length\n          ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n          : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n      );\n    }\n  }\n\n  return {\n    SyntaxError: peg$SyntaxError,\n    parse:       peg$parse\n  };\n});\n", "/* vim: set sw=4 sts=4 : */\nimport estraverse from 'estraverse';\nimport parser from './parser.js';\n\n/**\n* @typedef {\"LEFT_SIDE\"|\"RIGHT_SIDE\"} Side\n*/\n\nconst LEFT_SIDE = 'LEFT_SIDE';\nconst RIGHT_SIDE = 'RIGHT_SIDE';\n\n/**\n * @external AST\n * @see https://esprima.readthedocs.io/en/latest/syntax-tree-format.html\n */\n\n/**\n * One of the rules of `grammar.pegjs`\n * @typedef {PlainObject} SelectorAST\n * @see grammar.pegjs\n*/\n\n/**\n * The `sequence` production of `grammar.pegjs`\n * @typedef {PlainObject} SelectorSequenceAST\n*/\n\n/**\n * Get the value of a property which may be multiple levels down\n * in the object.\n * @param {?PlainObject} obj\n * @param {string[]} keys\n * @returns {undefined|boolean|string|number|external:AST}\n */\nfunction getPath(obj, keys) {\n    for (let i = 0; i < keys.length; ++i) {\n        if (obj == null) { return obj; }\n        obj = obj[keys[i]];\n    }\n    return obj;\n}\n\n/**\n * Determine whether `node` can be reached by following `path`,\n * starting at `ancestor`.\n * @param {?external:AST} node\n * @param {?external:AST} ancestor\n * @param {string[]} path\n * @param {Integer} fromPathIndex\n * @returns {boolean}\n */\nfunction inPath(node, ancestor, path, fromPathIndex) {\n    let current = ancestor;\n    for (let i = fromPathIndex; i < path.length; ++i) {\n        if (current == null) {\n            return false;\n        }\n        const field = current[path[i]];\n        if (Array.isArray(field)) {\n            for (let k = 0; k < field.length; ++k) {\n                if (inPath(node, field[k], path, i + 1)) {\n                    return true;\n                }\n            }\n            return false;\n        }\n        current = field;\n    }\n    return node === current;\n}\n\n/**\n * A generated matcher function for a selector.\n * @callback SelectorMatcher\n * @param {?SelectorAST} selector\n * @param {external:AST[]} [ancestry=[]]\n * @param {ESQueryOptions} [options]\n * @returns {void}\n*/\n\n/**\n * A WeakMap for holding cached matcher functions for selectors.\n * @type {WeakMap<SelectorAST, SelectorMatcher>}\n*/\nconst MATCHER_CACHE = typeof WeakMap === 'function' ? new WeakMap : null;\n\n/**\n * Look up a matcher function for `selector` in the cache.\n * If it does not exist, generate it with `generateMatcher` and add it to the cache.\n * In engines without WeakMap, the caching is skipped and matchers are generated with every call.\n * @param {?SelectorAST} selector\n * @returns {SelectorMatcher}\n */\nfunction getMatcher(selector) {\n    if (selector == null) {\n        return () => true;\n    }\n\n    if (MATCHER_CACHE != null) {\n        let matcher = MATCHER_CACHE.get(selector);\n        if (matcher != null) {\n            return matcher;\n        }\n        matcher = generateMatcher(selector);\n        MATCHER_CACHE.set(selector, matcher);\n        return matcher;\n    }\n\n    return generateMatcher(selector);\n}\n\n/**\n * Create a matcher function for `selector`,\n * @param {?SelectorAST} selector\n * @returns {SelectorMatcher}\n */\nfunction generateMatcher(selector) {\n    switch(selector.type) {\n        case 'wildcard':\n            return () => true;\n\n        case 'identifier': {\n            const value = selector.value.toLowerCase();\n            return (node, ancestry, options) => {\n                const nodeTypeKey = (options && options.nodeTypeKey) || 'type';\n                return value === node[nodeTypeKey].toLowerCase();\n            };\n        }\n\n        case 'exactNode':\n            return (node, ancestry) => {\n                return ancestry.length === 0;\n            };\n\n        case 'field': {\n            const path = selector.name.split('.');\n            return (node, ancestry) => {\n                const ancestor = ancestry[path.length - 1];\n                return inPath(node, ancestor, path, 0);\n            };\n        }\n\n        case 'matches': {\n            const matchers = selector.selectors.map(getMatcher);\n            return (node, ancestry, options) => {\n                for (let i = 0; i < matchers.length; ++i) {\n                    if (matchers[i](node, ancestry, options)) { return true; }\n                }\n                return false;\n            };\n        }\n\n        case 'compound': {\n            const matchers = selector.selectors.map(getMatcher);\n            return (node, ancestry, options) => {\n                for (let i = 0; i < matchers.length; ++i) {\n                    if (!matchers[i](node, ancestry, options)) { return false; }\n                }\n                return true;\n            };\n        }\n\n        case 'not': {\n            const matchers = selector.selectors.map(getMatcher);\n            return (node, ancestry, options) => {\n                for (let i = 0; i < matchers.length; ++i) {\n                    if (matchers[i](node, ancestry, options)) { return false; }\n                }\n                return true;\n            };\n        }\n\n        case 'has': {\n            const matchers = selector.selectors.map(getMatcher);\n            return (node, ancestry, options) => {\n                let result = false;\n\n                const a = [];\n                estraverse.traverse(node, {\n                    enter (node, parent) {\n                        if (parent != null) { a.unshift(parent); }\n\n                        for (let i = 0; i < matchers.length; ++i) {\n                            if (matchers[i](node, a, options)) {\n                                result = true;\n                                this.break();\n                                return;\n                            }\n                        }\n                    },\n                    leave () { a.shift(); },\n                    keys: options && options.visitorKeys,\n                    fallback: options && options.fallback || 'iteration'\n                });\n\n                return result;\n            };\n        }\n\n        case 'child': {\n            const left = getMatcher(selector.left);\n            const right = getMatcher(selector.right);\n            return (node, ancestry, options) => {\n                if (ancestry.length > 0 && right(node, ancestry, options)) {\n                    return left(ancestry[0], ancestry.slice(1), options);\n                }\n                return false;\n            };\n        }\n\n        case 'descendant': {\n            const left = getMatcher(selector.left);\n            const right = getMatcher(selector.right);\n            return (node, ancestry, options) => {\n                if (right(node, ancestry, options)) {\n                    for (let i = 0, l = ancestry.length; i < l; ++i) {\n                        if (left(ancestry[i], ancestry.slice(i + 1), options)) {\n                            return true;\n                        }\n                    }\n                }\n                return false;\n            };\n        }\n\n        case 'attribute': {\n            const path = selector.name.split('.');\n            switch (selector.operator) {\n                case void 0:\n                    return (node) => getPath(node, path) != null;\n                case '=':\n                    switch (selector.value.type) {\n                        case 'regexp':\n                            return (node) => {\n                                const p = getPath(node, path);\n                                return typeof p === 'string' && selector.value.value.test(p);\n                            };\n                        case 'literal': {\n                            const literal = `${selector.value.value}`;\n                            return (node) => literal === `${getPath(node, path)}`;\n                        }\n                        case 'type':\n                            return (node) => selector.value.value === typeof getPath(node, path);\n                    }\n                    throw new Error(`Unknown selector value type: ${selector.value.type}`);\n                case '!=':\n                    switch (selector.value.type) {\n                        case 'regexp':\n                            return (node) => !selector.value.value.test(getPath(node, path));\n                        case 'literal': {\n                            const literal = `${selector.value.value}`;\n                            return (node) => literal !== `${getPath(node, path)}`;\n                        }\n                        case 'type':\n                            return (node) => selector.value.value !== typeof getPath(node, path);\n                    }\n                    throw new Error(`Unknown selector value type: ${selector.value.type}`);\n                case '<=':\n                    return (node) => getPath(node, path) <= selector.value.value;\n                case '<':\n                    return (node) => getPath(node, path) < selector.value.value;\n                case '>':\n                    return (node) => getPath(node, path) > selector.value.value;\n                case '>=':\n                    return (node) => getPath(node, path) >= selector.value.value;\n            }\n            throw new Error(`Unknown operator: ${selector.operator}`);\n        }\n\n        case 'sibling': {\n            const left = getMatcher(selector.left);\n            const right = getMatcher(selector.right);\n            return (node, ancestry, options) =>\n                right(node, ancestry, options) &&\n                    sibling(node, left, ancestry, LEFT_SIDE, options) ||\n                    selector.left.subject &&\n                    left(node, ancestry, options) &&\n                    sibling(node, right, ancestry, RIGHT_SIDE, options);\n        }\n\n        case 'adjacent': {\n            const left = getMatcher(selector.left);\n            const right = getMatcher(selector.right);\n            return (node, ancestry, options) =>\n                right(node, ancestry, options) &&\n                    adjacent(node, left, ancestry, LEFT_SIDE, options) ||\n                    selector.right.subject &&\n                    left(node, ancestry, options) &&\n                    adjacent(node, right, ancestry, RIGHT_SIDE, options);\n        }\n\n        case 'nth-child': {\n            const nth = selector.index.value;\n            const right = getMatcher(selector.right);\n            return (node, ancestry, options) =>\n                right(node, ancestry, options) &&\n                    nthChild(node, ancestry, nth, options);\n        }\n\n        case 'nth-last-child': {\n            const nth = -selector.index.value;\n            const right = getMatcher(selector.right);\n            return (node, ancestry, options) =>\n                right(node, ancestry, options) &&\n                    nthChild(node, ancestry, nth, options);\n        }\n\n        case 'class': {\n            \n            const name = selector.name.toLowerCase();\n\n            return (node, ancestry, options) => {\n                \n                if (options && options.matchClass) {\n                    return options.matchClass(selector.name, node, ancestry);\n                }\n                \n                if (options && options.nodeTypeKey) return false;    \n\n                switch(name){\n                    case 'statement':\n                        if(node.type.slice(-9) === 'Statement') return true;\n                        // fallthrough: interface Declaration <: Statement { }\n                    case 'declaration':\n                        return node.type.slice(-11) === 'Declaration';\n                    case 'pattern':\n                        if(node.type.slice(-7) === 'Pattern') return true;\n                        // fallthrough: interface Expression <: Node, Pattern { }\n                    case 'expression':\n                        return node.type.slice(-10) === 'Expression' ||\n                            node.type.slice(-7) === 'Literal' ||\n                            (\n                                node.type === 'Identifier' &&\n                                (ancestry.length === 0 || ancestry[0].type !== 'MetaProperty')\n                            ) ||\n                            node.type === 'MetaProperty';\n                    case 'function':\n                        return node.type === 'FunctionDeclaration' ||\n                            node.type === 'FunctionExpression' ||\n                            node.type === 'ArrowFunctionExpression';\n                }\n                throw new Error(`Unknown class name: ${selector.name}`);\n            };\n        }\n    }\n\n    throw new Error(`Unknown selector type: ${selector.type}`);\n}\n\n/**\n * @callback TraverseOptionFallback\n * @param {external:AST} node The given node.\n * @returns {string[]} An array of visitor keys for the given node.\n */\n\n/**\n * @callback ClassMatcher\n * @param {string} className The name of the class to match.\n * @param {external:AST} node The node to match against.\n * @param {Array<external:AST>} ancestry The ancestry of the node.\n * @returns {boolean} True if the node matches the class, false if not.\n */\n\n/**\n * @typedef {object} ESQueryOptions\n * @property {string} [nodeTypeKey=\"type\"] By passing `nodeTypeKey`, we can allow other ASTs to use ESQuery.\n * @property { { [nodeType: string]: string[] } } [visitorKeys] By passing `visitorKeys` mapping, we can extend the properties of the nodes that traverse the node.\n * @property {TraverseOptionFallback} [fallback] By passing `fallback` option, we can control the properties of traversing nodes when encountering unknown nodes.\n * @property {ClassMatcher} [matchClass] By passing `matchClass` option, we can customize the interpretation of classes.\n */\n\n/**\n * Given a `node` and its ancestors, determine if `node` is matched\n * by `selector`.\n * @param {?external:AST} node\n * @param {?SelectorAST} selector\n * @param {external:AST[]} [ancestry=[]]\n * @param {ESQueryOptions} [options]\n * @throws {Error} Unknowns (operator, class name, selector type, or\n * selector value type)\n * @returns {boolean}\n */\nfunction matches(node, selector, ancestry, options) {\n    if (!selector) { return true; }\n    if (!node) { return false; }\n    if (!ancestry) { ancestry = []; }\n\n    return getMatcher(selector)(node, ancestry, options);\n}\n\n/**\n * Get visitor keys of a given node.\n * @param {external:AST} node The AST node to get keys.\n * @param {ESQueryOptions|undefined} options\n * @returns {string[]} Visitor keys of the node.\n */\nfunction getVisitorKeys(node, options) {\n    const nodeTypeKey = (options && options.nodeTypeKey) || 'type';\n\n    const nodeType = node[nodeTypeKey];\n    if (options && options.visitorKeys && options.visitorKeys[nodeType]) {\n        return options.visitorKeys[nodeType];\n    }\n    if (estraverse.VisitorKeys[nodeType]) {\n        return estraverse.VisitorKeys[nodeType];\n    }\n    if (options && typeof options.fallback === 'function') {\n        return options.fallback(node);\n    }\n    // 'iteration' fallback\n    return Object.keys(node).filter(function (key) {\n        return key !== nodeTypeKey;\n    });\n}\n\n\n/**\n * Check whether the given value is an ASTNode or not.\n * @param {any} node The value to check.\n * @param {ESQueryOptions|undefined} options The options to use.\n * @returns {boolean} `true` if the value is an ASTNode.\n */\nfunction isNode(node, options) {\n    const nodeTypeKey = (options && options.nodeTypeKey) || 'type';\n    return node !== null && typeof node === 'object' && typeof node[nodeTypeKey] === 'string';\n}\n\n/**\n * Determines if the given node has a sibling that matches the\n * given selector matcher.\n * @param {external:AST} node\n * @param {SelectorMatcher} matcher\n * @param {external:AST[]} ancestry\n * @param {Side} side\n * @param {ESQueryOptions|undefined} options\n * @returns {boolean}\n */\nfunction sibling(node, matcher, ancestry, side, options) {\n    const [parent] = ancestry;\n    if (!parent) { return false; }\n    const keys = getVisitorKeys(parent, options);\n    for (let i = 0; i < keys.length; ++i) {\n        const listProp = parent[keys[i]];\n        if (Array.isArray(listProp)) {\n            const startIndex = listProp.indexOf(node);\n            if (startIndex < 0) { continue; }\n            let lowerBound, upperBound;\n            if (side === LEFT_SIDE) {\n                lowerBound = 0;\n                upperBound = startIndex;\n            } else {\n                lowerBound = startIndex + 1;\n                upperBound = listProp.length;\n            }\n            for (let k = lowerBound; k < upperBound; ++k) {\n                if (isNode(listProp[k], options) && matcher(listProp[k], ancestry, options)) {\n                    return true;\n                }\n            }\n        }\n    }\n    return false;\n}\n\n/**\n * Determines if the given node has an adjacent sibling that matches\n * the given selector matcher.\n * @param {external:AST} node\n * @param {SelectorMatcher} matcher\n * @param {external:AST[]} ancestry\n * @param {Side} side\n * @param {ESQueryOptions|undefined} options\n * @returns {boolean}\n */\nfunction adjacent(node, matcher, ancestry, side, options) {\n    const [parent] = ancestry;\n    if (!parent) { return false; }\n    const keys = getVisitorKeys(parent, options);\n    for (let i = 0; i < keys.length; ++i) {\n        const listProp = parent[keys[i]];\n        if (Array.isArray(listProp)) {\n            const idx = listProp.indexOf(node);\n            if (idx < 0) { continue; }\n            if (side === LEFT_SIDE && idx > 0 && isNode(listProp[idx - 1], options) && matcher(listProp[idx - 1], ancestry, options)) {\n                return true;\n            }\n            if (side === RIGHT_SIDE && idx < listProp.length - 1 && isNode(listProp[idx + 1], options) &&  matcher(listProp[idx + 1], ancestry, options)) {\n                return true;\n            }\n        }\n    }\n    return false;\n}\n\n/**\n * Determines if the given node is the `nth` child.\n * If `nth` is negative then the position is counted\n * from the end of the list of children.\n * @param {external:AST} node\n * @param {external:AST[]} ancestry\n * @param {Integer} nth\n * @param {ESQueryOptions|undefined} options\n * @returns {boolean}\n */\nfunction nthChild(node, ancestry, nth, options) {\n    if (nth === 0) { return false; }\n    const [parent] = ancestry;\n    if (!parent) { return false; }\n    const keys = getVisitorKeys(parent, options);\n    for (let i = 0; i < keys.length; ++i) {\n        const listProp = parent[keys[i]];\n        if (Array.isArray(listProp)){\n            const idx = nth < 0 ? listProp.length + nth : nth - 1;\n            if (idx >= 0 && idx < listProp.length && listProp[idx] === node) {\n                return true;\n            }\n        }\n    }\n    return false;\n}\n\n/**\n * For each selector node marked as a subject, find the portion of the\n * selector that the subject must match.\n * @param {SelectorAST} selector\n * @param {SelectorAST} [ancestor] Defaults to `selector`\n * @returns {SelectorAST[]}\n */\nfunction subjects(selector, ancestor) {\n    if (selector == null || typeof selector != 'object') { return []; }\n    if (ancestor == null) { ancestor = selector; }\n    const results = selector.subject ? [ancestor] : [];\n    const keys = Object.keys(selector);\n    for (let i = 0; i < keys.length; ++i) {\n        const p = keys[i];\n        const sel = selector[p];\n        results.push(...subjects(sel, p === 'left' ? sel : ancestor));\n    }\n    return results;\n}\n\n/**\n* @callback TraverseVisitor\n* @param {?external:AST} node\n* @param {?external:AST} parent\n* @param {external:AST[]} ancestry\n*/\n\n/**\n * From a JS AST and a selector AST, collect all JS AST nodes that\n * match the selector.\n * @param {external:AST} ast\n * @param {?SelectorAST} selector\n * @param {TraverseVisitor} visitor\n * @param {ESQueryOptions} [options]\n * @returns {external:AST[]}\n */\nfunction traverse(ast, selector, visitor, options) {\n    if (!selector) { return; }\n    const ancestry = [];\n    const matcher = getMatcher(selector);\n    const altSubjects = subjects(selector).map(getMatcher);\n    estraverse.traverse(ast, {\n        enter (node, parent) {\n            if (parent != null) { ancestry.unshift(parent); }\n            if (matcher(node, ancestry, options)) {\n                if (altSubjects.length) {\n                    for (let i = 0, l = altSubjects.length; i < l; ++i) {\n                        if (altSubjects[i](node, ancestry, options)) {\n                            visitor(node, parent, ancestry);\n                        }\n                        for (let k = 0, m = ancestry.length; k < m; ++k) {\n                            const succeedingAncestry = ancestry.slice(k + 1);\n                            if (altSubjects[i](ancestry[k], succeedingAncestry, options)) {\n                                visitor(ancestry[k], parent, succeedingAncestry);\n                            }\n                        }\n                    }\n                } else {\n                    visitor(node, parent, ancestry);\n                }\n            }\n        },\n        leave () { ancestry.shift(); },\n        keys: options && options.visitorKeys,\n        fallback: options && options.fallback || 'iteration'\n    });\n}\n\n\n/**\n * From a JS AST and a selector AST, collect all JS AST nodes that\n * match the selector.\n * @param {external:AST} ast\n * @param {?SelectorAST} selector\n * @param {ESQueryOptions} [options]\n * @returns {external:AST[]}\n */\nfunction match(ast, selector, options) {\n    const results = [];\n    traverse(ast, selector, function (node) {\n        results.push(node);\n    }, options);\n    return results;\n}\n\n/**\n * Parse a selector string and return its AST.\n * @param {string} selector\n * @returns {SelectorAST}\n */\nfunction parse(selector) {\n    return parser.parse(selector);\n}\n\n/**\n * Query the code AST using the selector string.\n * @param {external:AST} ast\n * @param {string} selector\n * @param {ESQueryOptions} [options]\n * @returns {external:AST[]}\n */\nfunction query(ast, selector, options) {\n    return match(ast, parse(selector), options);\n}\n\nquery.parse = parse;\nquery.match = match;\nquery.traverse = traverse;\nquery.matches = matches;\nquery.query = query;\n\nexport default query;\n", "/**\n * @fileoverview ESQuery wrapper for ESLint.\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst esquery = require(\"esquery\");\n\n//-----------------------------------------------------------------------------\n// Typedefs\n//-----------------------------------------------------------------------------\n\n/**\n * @typedef {import(\"esquery\").Selector} ESQuerySelector\n * @typedef {import(\"esquery\").ESQueryOptions} ESQueryOptions\n */\n\n//------------------------------------------------------------------------------\n// Classes\n//------------------------------------------------------------------------------\n\n/**\n * The result of parsing and analyzing an ESQuery selector.\n */\nclass ESQueryParsedSelector {\n\t/**\n\t * The raw selector string that was parsed\n\t * @type {string}\n\t */\n\tsource;\n\n\t/**\n\t * Whether this selector is an exit selector\n\t * @type {boolean}\n\t */\n\tisExit;\n\n\t/**\n\t * An object (from esquery) describing the matching behavior of the selector\n\t * @type {ESQuerySelector}\n\t */\n\troot;\n\n\t/**\n\t * The node types that could possibly trigger this selector, or `null` if all node types could trigger it\n\t * @type {string[]|null}\n\t */\n\tnodeTypes;\n\n\t/**\n\t * The number of class, pseudo-class, and attribute queries in this selector\n\t * @type {number}\n\t */\n\tattributeCount;\n\n\t/**\n\t * The number of identifier queries in this selector\n\t * @type {number}\n\t */\n\tidentifierCount;\n\n\t/**\n\t * Creates a new parsed selector.\n\t * @param {string} source The raw selector string that was parsed\n\t * @param {boolean} isExit Whether this selector is an exit selector\n\t * @param {ESQuerySelector} root An object (from esquery) describing the matching behavior of the selector\n\t * @param {string[]|null} nodeTypes The node types that could possibly trigger this selector, or `null` if all node types could trigger it\n\t * @param {number} attributeCount The number of class, pseudo-class, and attribute queries in this selector\n\t * @param {number} identifierCount The number of identifier queries in this selector\n\t */\n\tconstructor(\n\t\tsource,\n\t\tisExit,\n\t\troot,\n\t\tnodeTypes,\n\t\tattributeCount,\n\t\tidentifierCount,\n\t) {\n\t\tthis.source = source;\n\t\tthis.isExit = isExit;\n\t\tthis.root = root;\n\t\tthis.nodeTypes = nodeTypes;\n\t\tthis.attributeCount = attributeCount;\n\t\tthis.identifierCount = identifierCount;\n\t}\n\n\t/**\n\t * Compares this selector's specificity to another selector for sorting purposes.\n\t * @param {ESQueryParsedSelector} otherSelector The selector to compare against\n\t * @returns {number}\n\t * a value less than 0 if this selector is less specific than otherSelector\n\t * a value greater than 0 if this selector is more specific than otherSelector\n\t * a value less than 0 if this selector and otherSelector have the same specificity, and this selector <= otherSelector alphabetically\n\t * a value greater than 0 if this selector and otherSelector have the same specificity, and this selector > otherSelector alphabetically\n\t */\n\tcompare(otherSelector) {\n\t\treturn (\n\t\t\tthis.attributeCount - otherSelector.attributeCount ||\n\t\t\tthis.identifierCount - otherSelector.identifierCount ||\n\t\t\t(this.source <= otherSelector.source ? -1 : 1)\n\t\t);\n\t}\n}\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst selectorCache = new Map();\n\n/**\n * Computes the union of one or more arrays\n * @param {...any[]} arrays One or more arrays to union\n * @returns {any[]} The union of the input arrays\n */\nfunction union(...arrays) {\n\treturn [...new Set(arrays.flat())];\n}\n\n/**\n * Computes the intersection of one or more arrays\n * @param {...any[]} arrays One or more arrays to intersect\n * @returns {any[]} The intersection of the input arrays\n */\nfunction intersection(...arrays) {\n\tif (arrays.length === 0) {\n\t\treturn [];\n\t}\n\n\tlet result = [...new Set(arrays[0])];\n\n\tfor (const array of arrays.slice(1)) {\n\t\tresult = result.filter(x => array.includes(x));\n\t}\n\treturn result;\n}\n\n/**\n * Analyzes a parsed selector and returns combined data about it\n * @param {ESQuerySelector} parsedSelector An object (from esquery) describing the matching behavior of the selector\n * @returns {{nodeTypes:string[]|null, attributeCount:number, identifierCount:number}} Object containing selector data.\n */\nfunction analyzeParsedSelector(parsedSelector) {\n\tlet attributeCount = 0;\n\tlet identifierCount = 0;\n\n\t/**\n\t * Analyzes a selector and returns the node types that could possibly trigger it.\n\t * @param {ESQuerySelector} selector The selector to analyze.\n\t * @returns {string[]|null} The node types that could possibly trigger this selector, or `null` if all node types could trigger it\n\t */\n\tfunction analyzeSelector(selector) {\n\t\tswitch (selector.type) {\n\t\t\tcase \"identifier\":\n\t\t\t\tidentifierCount++;\n\t\t\t\treturn [selector.value];\n\n\t\t\tcase \"not\":\n\t\t\t\tselector.selectors.map(analyzeSelector);\n\t\t\t\treturn null;\n\n\t\t\tcase \"matches\": {\n\t\t\t\tconst typesForComponents =\n\t\t\t\t\tselector.selectors.map(analyzeSelector);\n\n\t\t\t\tif (typesForComponents.every(Boolean)) {\n\t\t\t\t\treturn union(...typesForComponents);\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tcase \"compound\": {\n\t\t\t\tconst typesForComponents = selector.selectors\n\t\t\t\t\t.map(analyzeSelector)\n\t\t\t\t\t.filter(typesForComponent => typesForComponent);\n\n\t\t\t\t// If all of the components could match any type, then the compound could also match any type.\n\t\t\t\tif (!typesForComponents.length) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * If at least one of the components could only match a particular type, the compound could only match\n\t\t\t\t * the intersection of those types.\n\t\t\t\t */\n\t\t\t\treturn intersection(...typesForComponents);\n\t\t\t}\n\n\t\t\tcase \"attribute\":\n\t\t\tcase \"field\":\n\t\t\tcase \"nth-child\":\n\t\t\tcase \"nth-last-child\":\n\t\t\t\tattributeCount++;\n\t\t\t\treturn null;\n\n\t\t\tcase \"child\":\n\t\t\tcase \"descendant\":\n\t\t\tcase \"sibling\":\n\t\t\tcase \"adjacent\":\n\t\t\t\tanalyzeSelector(selector.left);\n\t\t\t\treturn analyzeSelector(selector.right);\n\n\t\t\tcase \"class\":\n\t\t\t\t// TODO: abstract into JSLanguage somehow\n\t\t\t\tif (selector.name === \"function\") {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t\"FunctionDeclaration\",\n\t\t\t\t\t\t\"FunctionExpression\",\n\t\t\t\t\t\t\"ArrowFunctionExpression\",\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\treturn null;\n\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\t}\n\n\tconst nodeTypes = analyzeSelector(parsedSelector);\n\n\treturn {\n\t\tnodeTypes,\n\t\tattributeCount,\n\t\tidentifierCount,\n\t};\n}\n\n/**\n * Tries to parse a simple selector string, such as a single identifier or wildcard.\n * This saves time by avoiding the overhead of esquery parsing for simple cases.\n * @param {string} selector The selector string to parse.\n * @returns {Object|null} An object describing the selector if it is simple, or `null` if it is not.\n */\nfunction trySimpleParseSelector(selector) {\n\tif (selector === \"*\") {\n\t\treturn {\n\t\t\ttype: \"wildcard\",\n\t\t\tvalue: \"*\",\n\t\t};\n\t}\n\n\tif (/^[a-z]+$/iu.test(selector)) {\n\t\treturn {\n\t\t\ttype: \"identifier\",\n\t\t\tvalue: selector,\n\t\t};\n\t}\n\n\treturn null;\n}\n\n/**\n * Parses a raw selector string, and throws a useful error if parsing fails.\n * @param {string} selector The selector string to parse.\n * @returns {Object} An object (from esquery) describing the matching behavior of this selector\n * @throws {Error} An error if the selector is invalid\n */\nfunction tryParseSelector(selector) {\n\ttry {\n\t\treturn esquery.parse(selector);\n\t} catch (err) {\n\t\tif (\n\t\t\terr.location &&\n\t\t\terr.location.start &&\n\t\t\ttypeof err.location.start.offset === \"number\"\n\t\t) {\n\t\t\tthrow new SyntaxError(\n\t\t\t\t`Syntax error in selector \"${selector}\" at position ${err.location.start.offset}: ${err.message}`,\n\t\t\t\t{\n\t\t\t\t\tcause: err,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\tthrow err;\n\t}\n}\n\n/**\n * Parses a raw selector string, and returns the parsed selector along with specificity and type information.\n * @param {string} source A raw AST selector\n * @returns {ESQueryParsedSelector} A selector descriptor\n */\nfunction parse(source) {\n\tif (selectorCache.has(source)) {\n\t\treturn selectorCache.get(source);\n\t}\n\n\tconst cleanSource = source.replace(/:exit$/u, \"\");\n\tconst parsedSelector =\n\t\ttrySimpleParseSelector(cleanSource) ?? tryParseSelector(cleanSource);\n\tconst { nodeTypes, attributeCount, identifierCount } =\n\t\tanalyzeParsedSelector(parsedSelector);\n\n\tconst result = new ESQueryParsedSelector(\n\t\tsource,\n\t\tsource.endsWith(\":exit\"),\n\t\tparsedSelector,\n\t\tnodeTypes,\n\t\tattributeCount,\n\t\tidentifierCount,\n\t);\n\n\tselectorCache.set(source, result);\n\treturn result;\n}\n\n/**\n * Checks if a node matches a given selector.\n * @param {Object} node The node to check against the selector.\n * @param {ESQuerySelector} root The root of the selector to match against.\n * @param {Object[]} ancestry The ancestry of the node being checked, which is an array of nodes from the current node to the root.\n * @param {ESQueryOptions} options The options to use for matching.\n * @returns {boolean} `true` if the node matches the selector, `false` otherwise.\n */\nfunction matches(node, root, ancestry, options) {\n\treturn esquery.matches(node, root, ancestry, options);\n}\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\nmodule.exports = {\n\tparse,\n\tmatches,\n\tESQueryParsedSelector,\n};\n", "/**\n * @fileoverview Traverser for SourceCode objects.\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst { parse, matches } = require(\"./esquery\");\nconst vk = require(\"eslint-visitor-keys\");\n\n//-----------------------------------------------------------------------------\n// Typedefs\n//-----------------------------------------------------------------------------\n\n/**\n * @import { Language, SourceCode } from \"@eslint/core\";\n * @import { ESQueryOptions } from \"esquery\";\n * @import { ESQueryParsedSelector } from \"./esquery.js\";\n * @import { SourceCodeVisitor } from \"./source-code-visitor.js\";\n */\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\nconst STEP_KIND_VISIT = 1;\nconst STEP_KIND_CALL = 2;\n\n/**\n * Compares two ESQuery selectors by specificity.\n * @param {ESQueryParsedSelector} a The first selector to compare.\n * @param {ESQueryParsedSelector} b The second selector to compare.\n * @returns {number} A negative number if `a` is less specific than `b` or they are equally specific and `a` <= `b` alphabetically, a positive number if `a` is more specific than `b`.\n */\nfunction compareSpecificity(a, b) {\n\treturn a.compare(b);\n}\n\n/**\n * Helper to wrap ESQuery operations.\n */\nclass ESQueryHelper {\n\t/**\n\t * Creates a new instance.\n\t * @param {SourceCodeVisitor} visitor The visitor containing the functions to call.\n\t * @param {ESQueryOptions} esqueryOptions `esquery` options for traversing custom nodes.\n\t */\n\tconstructor(visitor, esqueryOptions) {\n\t\t/**\n\t\t * The visitor to use during traversal.\n\t\t * @type {SourceCodeVisitor}\n\t\t */\n\t\tthis.visitor = visitor;\n\n\t\t/**\n\t\t * The options for `esquery` to use during matching.\n\t\t * @type {ESQueryOptions}\n\t\t */\n\t\tthis.esqueryOptions = esqueryOptions;\n\n\t\t/**\n\t\t * A map of node type to selectors targeting that node type on the\n\t\t * enter phase of traversal.\n\t\t * @type {Map<string, ESQueryParsedSelector[]>}\n\t\t */\n\t\tthis.enterSelectorsByNodeType = new Map();\n\n\t\t/**\n\t\t * A map of node type to selectors targeting that node type on the\n\t\t * exit phase of traversal.\n\t\t * @type {Map<string, ESQueryParsedSelector[]>}\n\t\t */\n\t\tthis.exitSelectorsByNodeType = new Map();\n\n\t\t/**\n\t\t * An array of selectors that match any node type on the\n\t\t * enter phase of traversal.\n\t\t * @type {ESQueryParsedSelector[]}\n\t\t */\n\t\tthis.anyTypeEnterSelectors = [];\n\n\t\t/**\n\t\t * An array of selectors that match any node type on the\n\t\t * exit phase of traversal.\n\t\t * @type {ESQueryParsedSelector[]}\n\t\t */\n\t\tthis.anyTypeExitSelectors = [];\n\n\t\tvisitor.forEachName(rawSelector => {\n\t\t\tconst selector = parse(rawSelector);\n\n\t\t\t/*\n\t\t\t * If this selector has identified specific node types,\n\t\t\t * add it to the map for these node types for faster lookup.\n\t\t\t */\n\t\t\tif (selector.nodeTypes) {\n\t\t\t\tconst typeMap = selector.isExit\n\t\t\t\t\t? this.exitSelectorsByNodeType\n\t\t\t\t\t: this.enterSelectorsByNodeType;\n\n\t\t\t\tselector.nodeTypes.forEach(nodeType => {\n\t\t\t\t\tif (!typeMap.has(nodeType)) {\n\t\t\t\t\t\ttypeMap.set(nodeType, []);\n\t\t\t\t\t}\n\t\t\t\t\ttypeMap.get(nodeType).push(selector);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Remaining selectors are added to the \"any type\" selectors\n\t\t\t * list for the appropriate phase of traversal. This ensures\n\t\t\t * that all selectors will still be applied even if no\n\t\t\t * specific node type is matched.\n\t\t\t */\n\t\t\tconst selectors = selector.isExit\n\t\t\t\t? this.anyTypeExitSelectors\n\t\t\t\t: this.anyTypeEnterSelectors;\n\n\t\t\tselectors.push(selector);\n\t\t});\n\n\t\t// sort all selectors by specificity for prioritizing call order\n\t\tthis.anyTypeEnterSelectors.sort(compareSpecificity);\n\t\tthis.anyTypeExitSelectors.sort(compareSpecificity);\n\t\tthis.enterSelectorsByNodeType.forEach(selectorList =>\n\t\t\tselectorList.sort(compareSpecificity),\n\t\t);\n\t\tthis.exitSelectorsByNodeType.forEach(selectorList =>\n\t\t\tselectorList.sort(compareSpecificity),\n\t\t);\n\t}\n\n\t/**\n\t * Checks if a node matches a given selector.\n\t * @param {ASTNode} node The node to check\n\t * @param {ASTNode[]} ancestry The ancestry of the node being checked.\n\t * @param {ESQueryParsedSelector} selector An AST selector descriptor\n\t * @returns {boolean} `true` if the selector matches the node, `false` otherwise\n\t */\n\tmatches(node, ancestry, selector) {\n\t\treturn matches(node, selector.root, ancestry, this.esqueryOptions);\n\t}\n\n\t/**\n\t * Calculates all appropriate selectors to a node, in specificity order\n\t * @param {ASTNode} node The node to check\n\t * @param {ASTNode[]} ancestry The ancestry of the node being checked.\n\t * @param {boolean} isExit `false` if the node is currently being entered, `true` if it's currently being exited\n\t * @returns {string[]} An array of selectors that match the node.\n\t */\n\tcalculateSelectors(node, ancestry, isExit) {\n\t\tconst nodeTypeKey = this.esqueryOptions?.nodeTypeKey || \"type\";\n\t\tconst selectors = [];\n\n\t\t/*\n\t\t * Get the selectors that may match this node. First, check\n\t\t * to see if the node type has specific selectors,\n\t\t * then gather the \"any type\" selectors.\n\t\t */\n\t\tconst selectorsByNodeType =\n\t\t\t(isExit\n\t\t\t\t? this.exitSelectorsByNodeType\n\t\t\t\t: this.enterSelectorsByNodeType\n\t\t\t).get(node[nodeTypeKey]) || [];\n\t\tconst anyTypeSelectors = isExit\n\t\t\t? this.anyTypeExitSelectors\n\t\t\t: this.anyTypeEnterSelectors;\n\n\t\t/*\n\t\t * selectorsByNodeType and anyTypeSelectors were already sorted by specificity in the constructor.\n\t\t * Iterate through each of them, applying selectors in the right order.\n\t\t */\n\t\tlet selectorsByNodeTypeIndex = 0;\n\t\tlet anyTypeSelectorsIndex = 0;\n\n\t\twhile (\n\t\t\tselectorsByNodeTypeIndex < selectorsByNodeType.length ||\n\t\t\tanyTypeSelectorsIndex < anyTypeSelectors.length\n\t\t) {\n\t\t\t/*\n\t\t\t * If we've already exhausted the selectors for this node type,\n\t\t\t * or if the next any type selector is more specific than the\n\t\t\t * next selector for this node type, apply the any type selector.\n\t\t\t */\n\t\t\tconst hasMoreNodeTypeSelectors =\n\t\t\t\tselectorsByNodeTypeIndex < selectorsByNodeType.length;\n\t\t\tconst hasMoreAnyTypeSelectors =\n\t\t\t\tanyTypeSelectorsIndex < anyTypeSelectors.length;\n\t\t\tconst anyTypeSelector = anyTypeSelectors[anyTypeSelectorsIndex];\n\t\t\tconst nodeTypeSelector =\n\t\t\t\tselectorsByNodeType[selectorsByNodeTypeIndex];\n\n\t\t\t// Only compare specificity if both selectors exist\n\t\t\tconst isAnyTypeSelectorLessSpecific =\n\t\t\t\thasMoreAnyTypeSelectors &&\n\t\t\t\thasMoreNodeTypeSelectors &&\n\t\t\t\tanyTypeSelector.compare(nodeTypeSelector) < 0;\n\n\t\t\tif (!hasMoreNodeTypeSelectors || isAnyTypeSelectorLessSpecific) {\n\t\t\t\tanyTypeSelectorsIndex++;\n\n\t\t\t\tif (this.matches(node, ancestry, anyTypeSelector)) {\n\t\t\t\t\tselectors.push(anyTypeSelector.source);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tselectorsByNodeTypeIndex++;\n\n\t\t\t\tif (this.matches(node, ancestry, nodeTypeSelector)) {\n\t\t\t\t\tselectors.push(nodeTypeSelector.source);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn selectors;\n\t}\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * Traverses source code and ensures that visitor methods are called when\n * entering and leaving each node.\n */\nclass SourceCodeTraverser {\n\t/**\n\t * The language of the source code being traversed.\n\t * @type {Language}\n\t */\n\t#language;\n\n\t/**\n\t * Map of languages to instances of this class.\n\t * @type {WeakMap<Language, SourceCodeTraverser>}\n\t */\n\tstatic instances = new WeakMap();\n\n\t/**\n\t * Creates a new instance.\n\t * @param {Language} language The language of the source code being traversed.\n\t */\n\tconstructor(language) {\n\t\tthis.#language = language;\n\t}\n\n\tstatic getInstance(language) {\n\t\tif (!this.instances.has(language)) {\n\t\t\tthis.instances.set(language, new this(language));\n\t\t}\n\n\t\treturn this.instances.get(language);\n\t}\n\n\t/**\n\t * Traverses the given source code synchronously.\n\t * @param {SourceCode} sourceCode The source code to traverse.\n\t * @param {SourceCodeVisitor} visitor The emitter to use for events.\n\t * @param {Object} options Options for traversal.\n\t * @param {ReturnType<SourceCode[\"traverse\"]>} options.steps The steps to take during traversal.\n\t * @returns {void}\n\t * @throws {Error} If an error occurs during traversal.\n\t */\n\ttraverseSync(sourceCode, visitor, { steps } = {}) {\n\t\tconst esquery = new ESQueryHelper(visitor, {\n\t\t\tvisitorKeys: sourceCode.visitorKeys ?? this.#language.visitorKeys,\n\t\t\tfallback: vk.getKeys,\n\t\t\tmatchClass: this.#language.matchesSelectorClass ?? (() => false),\n\t\t\tnodeTypeKey: this.#language.nodeTypeKey,\n\t\t});\n\n\t\tconst currentAncestry = [];\n\n\t\tfor (const step of steps ?? sourceCode.traverse()) {\n\t\t\tswitch (step.kind) {\n\t\t\t\tcase STEP_KIND_VISIT: {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (step.phase === 1) {\n\t\t\t\t\t\t\tesquery\n\t\t\t\t\t\t\t\t.calculateSelectors(\n\t\t\t\t\t\t\t\t\tstep.target,\n\t\t\t\t\t\t\t\t\tcurrentAncestry,\n\t\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.forEach(selector => {\n\t\t\t\t\t\t\t\t\tvisitor.callSync(\n\t\t\t\t\t\t\t\t\t\tselector,\n\t\t\t\t\t\t\t\t\t\t...(step.args ?? [step.target]),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tcurrentAncestry.unshift(step.target);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentAncestry.shift();\n\t\t\t\t\t\t\tesquery\n\t\t\t\t\t\t\t\t.calculateSelectors(\n\t\t\t\t\t\t\t\t\tstep.target,\n\t\t\t\t\t\t\t\t\tcurrentAncestry,\n\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.forEach(selector => {\n\t\t\t\t\t\t\t\t\tvisitor.callSync(\n\t\t\t\t\t\t\t\t\t\tselector,\n\t\t\t\t\t\t\t\t\t\t...(step.args ?? [step.target]),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\terr.currentNode = step.target;\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase STEP_KIND_CALL: {\n\t\t\t\t\tvisitor.callSync(step.target, ...step.args);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Invalid traversal step found: \"${step.kind}\".`,\n\t\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n}\n\nmodule.exports = { SourceCodeTraverser };\n", "/**\n * @fileoverview An object that creates fix commands for rules.\n * @author Nicholas C. Zakas\n */\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n/**\n * @import { SourceRange } from \"@eslint/core\";\n */\n\n/* eslint class-methods-use-this: off -- Methods desired on instance */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\n// none!\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Creates a fix command that inserts text at the specified index in the source text.\n * @param {number} index The 0-based index at which to insert the new text.\n * @param {string} text The text to insert.\n * @returns {Object} The fix command.\n * @private\n */\nfunction insertTextAt(index, text) {\n\treturn {\n\t\trange: [index, index],\n\t\ttext,\n\t};\n}\n\n/**\n * Asserts that the provided text is a string.\n * @param {unknown} text The text to validate.\n * @returns {void}\n * @throws {TypeError} If `text` is not a string.\n */\nfunction assertIsString(text) {\n\tif (typeof text !== \"string\") {\n\t\tthrow new TypeError(\"'text' must be a string\");\n\t}\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * Creates code fixing commands for rules.\n */\nclass RuleFixer {\n\t/**\n\t * The source code object representing the text to be fixed.\n\t * @type {SourceCode}\n\t */\n\t#sourceCode;\n\n\t/**\n\t * Creates a new instance.\n\t * @param {Object} options The options for the fixer.\n\t * @param {SourceCode} options.sourceCode The source code object representing the text to be fixed.\n\t */\n\tconstructor({ sourceCode }) {\n\t\tthis.#sourceCode = sourceCode;\n\t}\n\n\t/**\n\t * Creates a fix command that inserts text after the given node or token.\n\t * The fix is not applied until applyFixes() is called.\n\t * @param {ASTNode|Token} nodeOrToken The node or token to insert after.\n\t * @param {string} text The text to insert.\n\t * @returns {Object} The fix command.\n\t * @throws {TypeError} If `text` is not a string.\n\t */\n\tinsertTextAfter(nodeOrToken, text) {\n\t\tassertIsString(text);\n\n\t\tconst range = this.#sourceCode.getRange(nodeOrToken);\n\n\t\treturn this.insertTextAfterRange(range, text);\n\t}\n\n\t/**\n\t * Creates a fix command that inserts text after the specified range in the source text.\n\t * The fix is not applied until applyFixes() is called.\n\t * @param {SourceRange} range The range to replace, first item is start of range, second\n\t *      is end of range.\n\t * @param {string} text The text to insert.\n\t * @returns {Object} The fix command.\n\t * @throws {TypeError} If `text` is not a string.\n\t */\n\tinsertTextAfterRange(range, text) {\n\t\tassertIsString(text);\n\n\t\treturn insertTextAt(range[1], text);\n\t}\n\n\t/**\n\t * Creates a fix command that inserts text before the given node or token.\n\t * The fix is not applied until applyFixes() is called.\n\t * @param {ASTNode|Token} nodeOrToken The node or token to insert before.\n\t * @param {string} text The text to insert.\n\t * @returns {Object} The fix command.\n\t * @throws {TypeError} If `text` is not a string.\n\t */\n\tinsertTextBefore(nodeOrToken, text) {\n\t\tassertIsString(text);\n\n\t\tconst range = this.#sourceCode.getRange(nodeOrToken);\n\n\t\treturn this.insertTextBeforeRange(range, text);\n\t}\n\n\t/**\n\t * Creates a fix command that inserts text before the specified range in the source text.\n\t * The fix is not applied until applyFixes() is called.\n\t * @param {SourceRange} range The range to replace, first item is start of range, second\n\t *      is end of range.\n\t * @param {string} text The text to insert.\n\t * @returns {Object} The fix command.\n\t * @throws {TypeError} If `text` is not a string.\n\t */\n\tinsertTextBeforeRange(range, text) {\n\t\tassertIsString(text);\n\n\t\treturn insertTextAt(range[0], text);\n\t}\n\n\t/**\n\t * Creates a fix command that replaces text at the node or token.\n\t * The fix is not applied until applyFixes() is called.\n\t * @param {ASTNode|Token} nodeOrToken The node or token to remove.\n\t * @param {string} text The text to insert.\n\t * @returns {Object} The fix command.\n\t * @throws {TypeError} If `text` is not a string.\n\t */\n\treplaceText(nodeOrToken, text) {\n\t\tassertIsString(text);\n\n\t\tconst range = this.#sourceCode.getRange(nodeOrToken);\n\n\t\treturn this.replaceTextRange(range, text);\n\t}\n\n\t/**\n\t * Creates a fix command that replaces text at the specified range in the source text.\n\t * The fix is not applied until applyFixes() is called.\n\t * @param {SourceRange} range The range to replace, first item is start of range, second\n\t *      is end of range.\n\t * @param {string} text The text to insert.\n\t * @returns {Object} The fix command.\n\t * @throws {TypeError} If `text` is not a string.\n\t */\n\treplaceTextRange(range, text) {\n\t\tassertIsString(text);\n\n\t\treturn {\n\t\t\trange,\n\t\t\ttext,\n\t\t};\n\t}\n\n\t/**\n\t * Creates a fix command that removes the node or token from the source.\n\t * The fix is not applied until applyFixes() is called.\n\t * @param {ASTNode|Token} nodeOrToken The node or token to remove.\n\t * @returns {Object} The fix command.\n\t */\n\tremove(nodeOrToken) {\n\t\tconst range = this.#sourceCode.getRange(nodeOrToken);\n\n\t\treturn this.removeRange(range);\n\t}\n\n\t/**\n\t * Creates a fix command that removes the specified range of text from the source.\n\t * The fix is not applied until applyFixes() is called.\n\t * @param {SourceRange} range The range to remove, first item is start of range, second\n\t *      is end of range.\n\t * @returns {Object} The fix command.\n\t */\n\tremoveRange(range) {\n\t\treturn {\n\t\t\trange,\n\t\t\ttext: \"\",\n\t\t};\n\t}\n}\n\nmodule.exports = { RuleFixer };\n", "/**\n * @fileoverview Interpolate keys from an object into a string with {{ }} markers.\n * @author Jed Fox\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * Returns a global expression matching placeholders in messages.\n * @returns {RegExp} Global regular expression matching placeholders\n */\nfunction getPlaceholderMatcher() {\n\treturn /\\{\\{([^{}]+)\\}\\}/gu;\n}\n\n/**\n * Replaces {{ placeholders }} in the message with the provided data.\n * Does not replace placeholders not available in the data.\n * @param {string} text Original message with potential placeholders\n * @param {Record<string, string>} data Map of placeholder name to its value\n * @returns {string} Message with replaced placeholders\n */\nfunction interpolate(text, data) {\n\tif (!data) {\n\t\treturn text;\n\t}\n\n\tconst matcher = getPlaceholderMatcher();\n\n\t// Substitution content for any {{ }} markers.\n\treturn text.replace(matcher, (fullMatch, termWithWhitespace) => {\n\t\tconst term = termWithWhitespace.trim();\n\n\t\tif (term in data) {\n\t\t\treturn data[term];\n\t\t}\n\n\t\t// Preserve old behavior: If parameter name not provided, don't replace it.\n\t\treturn fullMatch;\n\t});\n}\n\nmodule.exports = {\n\tgetPlaceholderMatcher,\n\tinterpolate,\n};\n", "/**\n * @fileoverview A class to track messages reported by the linter for a file.\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst assert = require(\"../shared/assert\");\nconst { RuleFixer } = require(\"./rule-fixer\");\nconst { interpolate } = require(\"./interpolate\");\nconst ruleReplacements = require(\"../../conf/replacements.json\");\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"../types\").Linter.LintMessage} LintMessage */\n/** @typedef {import(\"../types\").Linter.LintSuggestion} SuggestionResult */\n/** @typedef {import(\"@eslint/core\").Language} Language */\n/** @typedef {import(\"@eslint/core\").SourceLocation} SourceLocation */\n\n/**\n * An error message description\n * @typedef {Object} MessageDescriptor\n * @property {ASTNode} [node] The reported node\n * @property {Location} loc The location of the problem.\n * @property {string} message The problem message.\n * @property {Object} [data] Optional data to use to fill in placeholders in the\n *      message.\n * @property {Function} [fix] The function to call that creates a fix command.\n * @property {Array<{desc?: string, messageId?: string, fix: Function}>} suggest Suggestion descriptions and functions to create a the associated fixes.\n */\n\n/**\n * @typedef {Object} LintProblem\n * @property {string} ruleId The rule ID that reported the problem.\n * @property {string} message The problem message.\n * @property {SourceLocation} loc The location of the problem.\n */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst DEFAULT_ERROR_LOC = {\n\tstart: { line: 1, column: 0 },\n\tend: { line: 1, column: 1 },\n};\n\n/**\n * Updates a given location based on the language offsets. This allows us to\n * change 0-based locations to 1-based locations. We always want ESLint\n * reporting lines and columns starting from 1.\n * @todo Potentially this should be moved into a shared utility file.\n * @param {Object} location The location to update.\n * @param {number} location.line The starting line number.\n * @param {number} location.column The starting column number.\n * @param {number} [location.endLine] The ending line number.\n * @param {number} [location.endColumn] The ending column number.\n * @param {Language} language The language to use to adjust the location information.\n * @returns {Object} The updated location.\n */\nfunction updateLocationInformation(\n\t{ line, column, endLine, endColumn },\n\tlanguage,\n) {\n\tconst columnOffset = language.columnStart === 1 ? 0 : 1;\n\tconst lineOffset = language.lineStart === 1 ? 0 : 1;\n\n\t// calculate separately to account for undefined\n\tconst finalEndLine = endLine === void 0 ? endLine : endLine + lineOffset;\n\tconst finalEndColumn =\n\t\tendColumn === void 0 ? endColumn : endColumn + columnOffset;\n\n\treturn {\n\t\tline: line + lineOffset,\n\t\tcolumn: column + columnOffset,\n\t\tendLine: finalEndLine,\n\t\tendColumn: finalEndColumn,\n\t};\n}\n\n/**\n * creates a missing-rule message.\n * @param {string} ruleId the ruleId to create\n * @returns {string} created error message\n * @private\n */\nfunction createMissingRuleMessage(ruleId) {\n\treturn Object.hasOwn(ruleReplacements.rules, ruleId)\n\t\t? `Rule '${ruleId}' was removed and replaced by: ${ruleReplacements.rules[ruleId].join(\", \")}`\n\t\t: `Definition for rule '${ruleId}' was not found.`;\n}\n\n/**\n * creates a linting problem\n * @param {LintProblem} options to create linting error\n * @param {RuleSeverity} severity the error message to report\n * @param {Language} language the language to use to adjust the location information.\n * @returns {LintMessage} created problem, returns a missing-rule problem if only provided ruleId.\n * @private\n */\nfunction createLintingProblem(options, severity, language) {\n\tconst {\n\t\truleId = null,\n\t\tloc = DEFAULT_ERROR_LOC,\n\t\tmessage = createMissingRuleMessage(options.ruleId),\n\t} = options;\n\n\treturn {\n\t\truleId,\n\t\tmessage,\n\t\t...updateLocationInformation(\n\t\t\t{\n\t\t\t\tline: loc.start.line,\n\t\t\t\tcolumn: loc.start.column,\n\t\t\t\tendLine: loc.end.line,\n\t\t\t\tendColumn: loc.end.column,\n\t\t\t},\n\t\t\tlanguage,\n\t\t),\n\t\tseverity,\n\t};\n}\n\n/**\n * Translates a multi-argument context.report() call into a single object argument call\n * @param {...*} args A list of arguments passed to `context.report`\n * @returns {MessageDescriptor} A normalized object containing report information\n */\nfunction normalizeMultiArgReportCall(...args) {\n\t// If there is one argument, it is considered to be a new-style call already.\n\tif (args.length === 1) {\n\t\t// Shallow clone the object to avoid surprises if reusing the descriptor\n\t\treturn Object.assign({}, args[0]);\n\t}\n\n\t// If the second argument is a string, the arguments are interpreted as [node, message, data, fix].\n\tif (typeof args[1] === \"string\") {\n\t\treturn {\n\t\t\tnode: args[0],\n\t\t\tmessage: args[1],\n\t\t\tdata: args[2],\n\t\t\tfix: args[3],\n\t\t};\n\t}\n\n\t// Otherwise, the arguments are interpreted as [node, loc, message, data, fix].\n\treturn {\n\t\tnode: args[0],\n\t\tloc: args[1],\n\t\tmessage: args[2],\n\t\tdata: args[3],\n\t\tfix: args[4],\n\t};\n}\n\n/**\n * Asserts that either a loc or a node was provided, and the node is valid if it was provided.\n * @param {MessageDescriptor} descriptor A descriptor to validate\n * @returns {void}\n * @throws AssertionError if neither a node nor a loc was provided, or if the node is not an object\n */\nfunction assertValidNodeInfo(descriptor) {\n\tif (descriptor.node) {\n\t\tassert(typeof descriptor.node === \"object\", \"Node must be an object\");\n\t} else {\n\t\tassert(\n\t\t\tdescriptor.loc,\n\t\t\t\"Node must be provided when reporting error if location is not provided\",\n\t\t);\n\t}\n}\n\n/**\n * Normalizes a MessageDescriptor to always have a `loc` with `start` and `end` properties\n * @param {MessageDescriptor} descriptor A descriptor for the report from a rule.\n * @returns {{start: Location, end: (Location|null)}} An updated location that infers the `start` and `end` properties\n * from the `node` of the original descriptor, or infers the `start` from the `loc` of the original descriptor.\n */\nfunction normalizeReportLoc(descriptor) {\n\tif (descriptor.loc.start) {\n\t\treturn descriptor.loc;\n\t}\n\treturn { start: descriptor.loc, end: null };\n}\n\n/**\n * Clones the given fix object.\n * @param {Fix|null} fix The fix to clone.\n * @returns {Fix|null} Deep cloned fix object or `null` if `null` or `undefined` was passed in.\n */\nfunction cloneFix(fix) {\n\tif (!fix) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\trange: [fix.range[0], fix.range[1]],\n\t\ttext: fix.text,\n\t};\n}\n\n/**\n * Check that a fix has a valid range.\n * @param {Fix|null} fix The fix to validate.\n * @returns {void}\n */\nfunction assertValidFix(fix) {\n\tif (fix) {\n\t\tassert(\n\t\t\tfix.range &&\n\t\t\t\ttypeof fix.range[0] === \"number\" &&\n\t\t\t\ttypeof fix.range[1] === \"number\",\n\t\t\t`Fix has invalid range: ${JSON.stringify(fix, null, 2)}`,\n\t\t);\n\t}\n}\n\n/**\n * Compares items in a fixes array by range.\n * @param {Fix} a The first message.\n * @param {Fix} b The second message.\n * @returns {number} -1 if a comes before b, 1 if a comes after b, 0 if equal.\n * @private\n */\nfunction compareFixesByRange(a, b) {\n\treturn a.range[0] - b.range[0] || a.range[1] - b.range[1];\n}\n\n/**\n * Merges the given fixes array into one.\n * @param {Fix[]} fixes The fixes to merge.\n * @param {SourceCode} sourceCode The source code object to get the text between fixes.\n * @returns {{text: string, range: number[]}} The merged fixes\n */\nfunction mergeFixes(fixes, sourceCode) {\n\tfor (const fix of fixes) {\n\t\tassertValidFix(fix);\n\t}\n\n\tif (fixes.length === 0) {\n\t\treturn null;\n\t}\n\tif (fixes.length === 1) {\n\t\treturn cloneFix(fixes[0]);\n\t}\n\n\tfixes.sort(compareFixesByRange);\n\n\tconst originalText = sourceCode.text;\n\tconst start = fixes[0].range[0];\n\tconst end = fixes.at(-1).range[1];\n\tlet text = \"\";\n\tlet lastPos = Number.MIN_SAFE_INTEGER;\n\n\tfor (const fix of fixes) {\n\t\tassert(\n\t\t\tfix.range[0] >= lastPos,\n\t\t\t\"Fix objects must not be overlapped in a report.\",\n\t\t);\n\n\t\tif (fix.range[0] >= 0) {\n\t\t\ttext += originalText.slice(\n\t\t\t\tMath.max(0, start, lastPos),\n\t\t\t\tfix.range[0],\n\t\t\t);\n\t\t}\n\t\ttext += fix.text;\n\t\tlastPos = fix.range[1];\n\t}\n\ttext += originalText.slice(Math.max(0, start, lastPos), end);\n\n\treturn { range: [start, end], text };\n}\n\n/**\n * Gets one fix object from the given descriptor.\n * If the descriptor retrieves multiple fixes, this merges those to one.\n * @param {MessageDescriptor} descriptor The report descriptor.\n * @param {SourceCode} sourceCode The source code object to get text between fixes.\n * @returns {({text: string, range: number[]}|null)} The fix for the descriptor\n */\nfunction normalizeFixes(descriptor, sourceCode) {\n\tif (typeof descriptor.fix !== \"function\") {\n\t\treturn null;\n\t}\n\n\tconst ruleFixer = new RuleFixer({ sourceCode });\n\n\t// @type {null | Fix | Fix[] | IterableIterator<Fix>}\n\tconst fix = descriptor.fix(ruleFixer);\n\n\t// Merge to one.\n\tif (fix && Symbol.iterator in fix) {\n\t\treturn mergeFixes(Array.from(fix), sourceCode);\n\t}\n\n\tassertValidFix(fix);\n\treturn cloneFix(fix);\n}\n\n/**\n * Gets an array of suggestion objects from the given descriptor.\n * @param {MessageDescriptor} descriptor The report descriptor.\n * @param {SourceCode} sourceCode The source code object to get text between fixes.\n * @param {Object} messages Object of meta messages for the rule.\n * @returns {Array<SuggestionResult>} The suggestions for the descriptor\n */\nfunction mapSuggestions(descriptor, sourceCode, messages) {\n\tif (!descriptor.suggest || !Array.isArray(descriptor.suggest)) {\n\t\treturn [];\n\t}\n\n\treturn (\n\t\tdescriptor.suggest\n\t\t\t.map(suggestInfo => {\n\t\t\t\tconst computedDesc =\n\t\t\t\t\tsuggestInfo.desc || messages[suggestInfo.messageId];\n\n\t\t\t\treturn {\n\t\t\t\t\t...suggestInfo,\n\t\t\t\t\tdesc: interpolate(computedDesc, suggestInfo.data),\n\t\t\t\t\tfix: normalizeFixes(suggestInfo, sourceCode),\n\t\t\t\t};\n\t\t\t})\n\n\t\t\t// Remove suggestions that didn't provide a fix\n\t\t\t.filter(({ fix }) => fix)\n\t);\n}\n\n/**\n * Creates information about the report from a descriptor\n * @param {Object} options Information about the problem\n * @param {string} options.ruleId Rule ID\n * @param {(0|1|2)} options.severity Rule severity\n * @param {string} options.message Error message\n * @param {string} [options.messageId] The error message ID.\n * @param {{start: SourceLocation, end: (SourceLocation|null)}} options.loc Start and end location\n * @param {{text: string, range: (number[]|null)}} options.fix The fix object\n * @param {Array<{text: string, range: (number[]|null)}>} options.suggestions The array of suggestions objects\n * @param {Language} [options.language] The language to use to adjust line and column offsets.\n * @returns {LintMessage} Information about the report\n */\nfunction createProblem(options) {\n\tconst { language } = options;\n\n\t// calculate offsets based on the language in use\n\tconst columnOffset = language.columnStart === 1 ? 0 : 1;\n\tconst lineOffset = language.lineStart === 1 ? 0 : 1;\n\n\tconst problem = {\n\t\truleId: options.ruleId,\n\t\tseverity: options.severity,\n\t\tmessage: options.message,\n\t\tline: options.loc.start.line + lineOffset,\n\t\tcolumn: options.loc.start.column + columnOffset,\n\t};\n\n\t/*\n\t * If this isn\u2019t in the conditional, some of the tests fail\n\t * because `messageId` is present in the problem object\n\t */\n\tif (options.messageId) {\n\t\tproblem.messageId = options.messageId;\n\t}\n\n\tif (options.loc.end) {\n\t\tproblem.endLine = options.loc.end.line + lineOffset;\n\t\tproblem.endColumn = options.loc.end.column + columnOffset;\n\t}\n\n\tif (options.fix) {\n\t\tproblem.fix = options.fix;\n\t}\n\n\tif (options.suggestions && options.suggestions.length > 0) {\n\t\tproblem.suggestions = options.suggestions;\n\t}\n\n\treturn problem;\n}\n\n/**\n * Validates that suggestions are properly defined. Throws if an error is detected.\n * @param {Array<{ desc?: string, messageId?: string }>} suggest The incoming suggest data.\n * @param {Object} messages Object of meta messages for the rule.\n * @returns {void}\n */\nfunction validateSuggestions(suggest, messages) {\n\tif (suggest && Array.isArray(suggest)) {\n\t\tsuggest.forEach(suggestion => {\n\t\t\tif (suggestion.messageId) {\n\t\t\t\tconst { messageId } = suggestion;\n\n\t\t\t\tif (!messages) {\n\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t`context.report() called with a suggest option with a messageId '${messageId}', but no messages were present in the rule metadata.`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (!messages[messageId]) {\n\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t`context.report() called with a suggest option with a messageId '${messageId}' which is not present in the 'messages' config: ${JSON.stringify(messages, null, 2)}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (suggestion.desc) {\n\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t\"context.report() called with a suggest option that defines both a 'messageId' and an 'desc'. Please only pass one.\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else if (!suggestion.desc) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\"context.report() called with a suggest option that doesn't have either a `desc` or `messageId`\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof suggestion.fix !== \"function\") {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`context.report() called with a suggest option without a fix function. See: ${JSON.stringify(suggestion, null, 2)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Computes the message from a report descriptor.\n * @param {MessageDescriptor} descriptor The report descriptor.\n * @param {Object} messages Object of meta messages for the rule.\n * @returns {string} The computed message.\n * @throws {TypeError} If messageId is not found or both message and messageId are provided.\n */\nfunction computeMessageFromDescriptor(descriptor, messages) {\n\tif (descriptor.messageId) {\n\t\tif (!messages) {\n\t\t\tthrow new TypeError(\n\t\t\t\t\"context.report() called with a messageId, but no messages were present in the rule metadata.\",\n\t\t\t);\n\t\t}\n\t\tconst id = descriptor.messageId;\n\n\t\tif (descriptor.message) {\n\t\t\tthrow new TypeError(\n\t\t\t\t\"context.report() called with a message and a messageId. Please only pass one.\",\n\t\t\t);\n\t\t}\n\t\tif (!messages || !Object.hasOwn(messages, id)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`context.report() called with a messageId of '${id}' which is not present in the 'messages' config: ${JSON.stringify(messages, null, 2)}`,\n\t\t\t);\n\t\t}\n\t\treturn messages[id];\n\t}\n\n\tif (descriptor.message) {\n\t\treturn descriptor.message;\n\t}\n\n\tthrow new TypeError(\n\t\t\"Missing `message` property in report() call; add a message that describes the linting problem.\",\n\t);\n}\n\n/**\n * A report object that contains the messages reported the linter\n * for a file.\n */\nclass FileReport {\n\t/**\n\t * The messages reported by the linter for this file.\n\t * @type {LintMessage[]}\n\t */\n\tmessages = [];\n\n\t/**\n\t * A rule mapper that maps rule IDs to their metadata.\n\t * @type {(string) => RuleDefinition}\n\t */\n\t#ruleMapper;\n\n\t/**\n\t * The source code object for the file.\n\t * @type {SourceCode}\n\t */\n\t#sourceCode;\n\n\t/**\n\t * The language to use to adjust line and column offsets.\n\t * @type {Language}\n\t */\n\t#language;\n\n\t/**\n\t * Whether to disable fixes for this report.\n\t * @type {boolean}\n\t */\n\t#disableFixes;\n\n\t/**\n\t * Creates a new FileReport instance.\n\t * @param {Object} options The options for the file report\n\t * @param {(string) => RuleDefinition} options.ruleMapper A rule mapper that maps rule IDs to their metadata.\n\t * @param {SourceCode} options.sourceCode The source code object for the file.\n\t * @param {Language} options.language The language to use to adjust line and column offsets.\n\t * @param {boolean} [options.disableFixes=false] Whether to disable fixes for this report.\n\t */\n\tconstructor({ ruleMapper, sourceCode, language, disableFixes = false }) {\n\t\tthis.#ruleMapper = ruleMapper;\n\t\tthis.#sourceCode = sourceCode;\n\t\tthis.#language = language;\n\t\tthis.#disableFixes = disableFixes;\n\t}\n\n\t/**\n\t * Adds a rule-generated message to the report.\n\t * @param {string} ruleId The rule ID that reported the problem.\n\t * @param {0|1|2} severity The severity of the problem (0 = off, 1 = warning, 2 = error).\n\t * @param {...*} args The arguments passed to `context.report()`.\n\t * @returns {LintMessage} The created message object.\n\t * @throws {TypeError} If the messageId is not found or both message and messageId are provided.\n\t * @throws {AssertionError} If the node is not an object or neither a node nor a loc is provided.\n\t */\n\taddRuleMessage(ruleId, severity, ...args) {\n\t\tconst descriptor = normalizeMultiArgReportCall(...args);\n\t\tconst ruleDefinition = this.#ruleMapper(ruleId);\n\t\tconst messages = ruleDefinition?.meta?.messages;\n\n\t\tassertValidNodeInfo(descriptor);\n\n\t\tconst computedMessage = computeMessageFromDescriptor(\n\t\t\tdescriptor,\n\t\t\tmessages,\n\t\t);\n\n\t\tvalidateSuggestions(descriptor.suggest, messages);\n\n\t\tthis.messages.push(\n\t\t\tcreateProblem({\n\t\t\t\truleId,\n\t\t\t\tseverity,\n\t\t\t\tmessage: interpolate(computedMessage, descriptor.data),\n\t\t\t\tmessageId: descriptor.messageId,\n\t\t\t\tloc: descriptor.loc\n\t\t\t\t\t? normalizeReportLoc(descriptor)\n\t\t\t\t\t: this.#sourceCode.getLoc(descriptor.node),\n\t\t\t\tfix: this.#disableFixes\n\t\t\t\t\t? null\n\t\t\t\t\t: normalizeFixes(descriptor, this.#sourceCode),\n\t\t\t\tsuggestions: this.#disableFixes\n\t\t\t\t\t? []\n\t\t\t\t\t: mapSuggestions(descriptor, this.#sourceCode, messages),\n\t\t\t\tlanguage: this.#language,\n\t\t\t}),\n\t\t);\n\n\t\treturn this.messages.at(-1);\n\t}\n\n\t/**\n\t * Adds an error message to the report. Meant to be called outside of rules.\n\t * @param {LintProblem} descriptor The descriptor for the error message.\n\t * @returns {LintMessage} The created message object.\n\t */\n\taddError(descriptor) {\n\t\tconst message = createLintingProblem(descriptor, 2, this.#language);\n\t\tthis.messages.push(message);\n\t\treturn message;\n\t}\n\n\t/**\n\t * Adds a fatal error message to the report. Meant to be called outside of rules.\n\t * @param {LintProblem} descriptor The descriptor for the fatal error message.\n\t * @returns {LintMessage} The created message object.\n\t */\n\taddFatal(descriptor) {\n\t\tconst message = createLintingProblem(descriptor, 2, this.#language);\n\t\tmessage.fatal = true;\n\t\tthis.messages.push(message);\n\t\treturn message;\n\t}\n\n\t/**\n\t * Adds a warning message to the report. Meant to be called outside of rules.\n\t * @param {LintProblem} descriptor The descriptor for the warning message.\n\t * @returns {LintMessage} The created message object.\n\t */\n\taddWarning(descriptor) {\n\t\tconst message = createLintingProblem(descriptor, 1, this.#language);\n\t\tthis.messages.push(message);\n\t\treturn message;\n\t}\n}\n\nmodule.exports = {\n\tFileReport,\n\tupdateLocationInformation,\n};\n", "/**\n * @fileoverview Main Linter Class\n * @author Gyandeep Singh\n * @author aladdin-add\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst path = require(\"node:path\"),\n\teslintScope = require(\"eslint-scope\"),\n\tevk = require(\"eslint-visitor-keys\"),\n\tpkg = require(\"../../package.json\"),\n\tTraverser = require(\"../shared/traverser\"),\n\t{ SourceCode } = require(\"../languages/js/source-code\"),\n\tapplyDisableDirectives = require(\"./apply-disable-directives\"),\n\t{ ConfigCommentParser } = require(\"@eslint/plugin-kit\"),\n\tSourceCodeFixer = require(\"./source-code-fixer\"),\n\t{ SourceCodeVisitor } = require(\"./source-code-visitor\"),\n\ttiming = require(\"./timing\");\nconst { FlatConfigArray } = require(\"../config/flat-config-array\");\nconst { startTime, endTime } = require(\"../shared/stats\");\nconst { assertIsRuleSeverity } = require(\"../config/flat-config-schema\");\nconst {\n\tnormalizeSeverityToString,\n\tnormalizeSeverityToNumber,\n} = require(\"../shared/severity\");\nconst { deepMergeArrays } = require(\"../shared/deep-merge-arrays\");\nconst {\n\tactiveFlags,\n\tinactiveFlags,\n\tgetInactivityReasonMessage,\n} = require(\"../shared/flags\");\nconst debug = require(\"debug\")(\"eslint:linter\");\nconst MAX_AUTOFIX_PASSES = 10;\nconst DEFAULT_ECMA_VERSION = 5;\nconst commentParser = new ConfigCommentParser();\nconst { VFile } = require(\"./vfile\");\nconst { ParserService } = require(\"../services/parser-service\");\nconst { FileContext } = require(\"./file-context\");\nconst { ProcessorService } = require(\"../services/processor-service\");\nconst { containsDifferentProperty } = require(\"../shared/option-utils\");\nconst { Config } = require(\"../config/config\");\nconst { WarningService } = require(\"../services/warning-service\");\nconst { SourceCodeTraverser } = require(\"./source-code-traverser\");\nconst { FileReport, updateLocationInformation } = require(\"./file-report\");\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n/** @import { Language, LanguageOptions, RuleConfig, RuleDefinition } from \"@eslint/core\" */\n\n/** @typedef {import(\"../types\").Linter.Config} ConfigObject */\n/** @typedef {import(\"../types\").Linter.LanguageOptions} JSLanguageOptions */\n/** @typedef {import(\"../types\").Linter.LintMessage} LintMessage */\n/** @typedef {import(\"../types\").Linter.Parser} Parser */\n/** @typedef {import(\"../types\").Linter.ParserOptions} ParserOptions */\n/** @typedef {import(\"../types\").Linter.Processor} Processor */\n/** @typedef {import(\"../types\").Rule.RuleModule} Rule */\n/** @typedef {import(\"../types\").Linter.StringSeverity} StringSeverity */\n/** @typedef {import(\"../types\").Linter.SuppressedLintMessage} SuppressedLintMessage */\n/** @typedef {import(\"../types\").Linter.TimePass} TimePass */\n\n/* eslint-disable jsdoc/valid-types -- https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/4#issuecomment-778805577 */\n/**\n * @template T\n * @typedef {{ [P in keyof T]-?: T[P] }} Required\n */\n/* eslint-enable jsdoc/valid-types -- https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/4#issuecomment-778805577 */\n\n/**\n * @typedef {Object} DisableDirective\n * @property {(\"disable\"|\"enable\"|\"disable-line\"|\"disable-next-line\")} type Type of directive\n * @property {number} line The line number\n * @property {number} column The column number\n * @property {(string|null)} ruleId The rule ID\n * @property {string} justification The justification of directive\n */\n\n/**\n * The private data for `Linter` instance.\n * @typedef {Object} LinterInternalSlots\n * @property {FlatConfigArray|null} lastConfigArray The `ConfigArray` instance that the last `verify()` call used.\n * @property {SourceCode|null} lastSourceCode The `SourceCode` instance that the last `verify()` call used.\n * @property {SuppressedLintMessage[]} lastSuppressedMessages The `SuppressedLintMessage[]` instance that the last `verify()` call produced.\n * @property {{ passes: TimePass[]; }} times The times spent on applying a rule to a file (see `stats` option).\n * @property {WarningService} warningService The warning service.\n */\n\n/**\n * @typedef {Object} VerifyOptions\n * @property {boolean} [allowInlineConfig] Allow/disallow inline comments' ability\n *      to change config once it is set. Defaults to true if not supplied.\n *      Useful if you want to validate JS without comments overriding rules.\n * @property {boolean} [disableFixes] if `true` then the linter doesn't make `fix`\n *      properties into the lint result.\n * @property {string} [filename] the filename of the source code.\n * @property {boolean | \"off\" | \"warn\" | \"error\"} [reportUnusedDisableDirectives] Adds reported errors for\n *      unused `eslint-disable` directives.\n * @property {Function} [ruleFilter] A predicate function that determines whether a given rule should run.\n */\n\n/**\n * @typedef {Object} ProcessorOptions\n * @property {(filename:string, text:string) => boolean} [filterCodeBlock] the\n *      predicate function that selects adopt code blocks.\n * @property {Processor.postprocess} [postprocess] postprocessor for report\n *      messages. If provided, this should accept an array of the message lists\n *      for each code block returned from the preprocessor, apply a mapping to\n *      the messages as appropriate, and return a one-dimensional array of\n *      messages.\n * @property {Processor.preprocess} [preprocess] preprocessor for source text.\n *      If provided, this should accept a string of source text, and return an\n *      array of code blocks to lint.\n */\n\n/**\n * @typedef {Object} FixOptions\n * @property {boolean | ((message: LintMessage) => boolean)} [fix] Determines\n *      whether fixes should be applied.\n */\n\n/**\n * @typedef {Object} InternalOptions\n * @property {string | null} warnInlineConfig The config name what `noInlineConfig` setting came from. If `noInlineConfig` setting didn't exist, this is null. If this is a config name, then the linter warns directive comments.\n * @property {StringSeverity} reportUnusedDisableDirectives Severity to report unused disable directives, if not \"off\" (boolean values were normalized).\n * @property {StringSeverity} reportUnusedInlineConfigs Severity to report unused inline configs, if not \"off\".\n */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Wraps the value in an Array if it isn't already one.\n * @template T\n * @param {T|T[]} value Value to be wrapped.\n * @returns {Array} The value as an array.\n */\nfunction asArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\n/**\n * Pushes a problem to inlineConfigProblems if ruleOptions are redundant.\n * @param {Config} config Provided config.\n * @param {Object} loc A line/column location\n * @param {FileReport} report Report that may be added to.\n * @param {string} ruleId The rule ID.\n * @param {Array} ruleOptions The rule options, merged with the config's.\n * @param {Array} ruleOptionsInline The rule options from the comment.\n * @param {\"error\"|\"warn\"} severity The severity to report.\n * @returns {void}\n */\nfunction addProblemIfSameSeverityAndOptions(\n\tconfig,\n\tloc,\n\treport,\n\truleId,\n\truleOptions,\n\truleOptionsInline,\n\tseverity,\n) {\n\tconst existingConfigRaw = config.rules?.[ruleId];\n\tconst existingConfig = existingConfigRaw\n\t\t? asArray(existingConfigRaw)\n\t\t: [\"off\"];\n\tconst existingSeverity = normalizeSeverityToString(existingConfig[0]);\n\tconst inlineSeverity = normalizeSeverityToString(ruleOptions[0]);\n\tconst sameSeverity = existingSeverity === inlineSeverity;\n\n\tif (!sameSeverity) {\n\t\treturn;\n\t}\n\n\tconst alreadyConfigured = existingConfigRaw\n\t\t? `is already configured to '${existingSeverity}'`\n\t\t: \"is not enabled so can't be turned off\";\n\tlet message;\n\n\tif (\n\t\t(existingConfig.length === 1 && ruleOptions.length === 1) ||\n\t\texistingSeverity === \"off\"\n\t) {\n\t\tmessage = `Unused inline config ('${ruleId}' ${alreadyConfigured}).`;\n\t} else if (\n\t\t!containsDifferentProperty(\n\t\t\truleOptions.slice(1),\n\t\t\texistingConfig.slice(1),\n\t\t)\n\t) {\n\t\tmessage =\n\t\t\truleOptionsInline.length === 1\n\t\t\t\t? `Unused inline config ('${ruleId}' ${alreadyConfigured}).`\n\t\t\t\t: `Unused inline config ('${ruleId}' ${alreadyConfigured} with the same options).`;\n\t}\n\n\tif (message) {\n\t\tconst numericSeverity = normalizeSeverityToNumber(severity);\n\t\tconst descriptor = {\n\t\t\tmessage,\n\t\t\tloc,\n\t\t};\n\n\t\tif (numericSeverity === 1) {\n\t\t\treport.addWarning(descriptor);\n\t\t} else if (numericSeverity === 2) {\n\t\t\treport.addError(descriptor);\n\t\t}\n\t}\n}\n\n/**\n * Creates a collection of disable directives from a comment\n * @param {Object} options to create disable directives\n * @param {(\"disable\"|\"enable\"|\"disable-line\"|\"disable-next-line\")} options.type The type of directive comment\n * @param {string} options.value The value after the directive in the comment\n * comment specified no specific rules, so it applies to all rules (e.g. `eslint-disable`)\n * @param {string} options.justification The justification of the directive\n * @param {ASTNode|token} options.node The Comment node/token.\n * @param {function(string): {create: Function}} ruleMapper A map from rule IDs to defined rules\n * @param {Language} language The language to use to adjust the location information.\n * @param {SourceCode} sourceCode The SourceCode object to get comments from.\n * @param {FileReport} report The report to add problems to.\n * @returns {Object[]} Directives from the comment\n */\nfunction createDisableDirectives(\n\t{ type, value, justification, node },\n\truleMapper,\n\tlanguage,\n\tsourceCode,\n\treport,\n) {\n\tconst ruleIds = Object.keys(commentParser.parseListConfig(value));\n\tconst directiveRules = ruleIds.length ? ruleIds : [null];\n\tconst directives = []; // valid disable directives\n\tconst parentDirective = { node, value, ruleIds };\n\n\tfor (const ruleId of directiveRules) {\n\t\tconst loc = sourceCode.getLoc(node);\n\n\t\t// push to directives, if the rule is defined(including null, e.g. /*eslint enable*/)\n\t\tif (ruleId === null || !!ruleMapper(ruleId)) {\n\t\t\tif (type === \"disable-next-line\") {\n\t\t\t\tconst { line, column } = updateLocationInformation(\n\t\t\t\t\tloc.end,\n\t\t\t\t\tlanguage,\n\t\t\t\t);\n\n\t\t\t\tdirectives.push({\n\t\t\t\t\tparentDirective,\n\t\t\t\t\ttype,\n\t\t\t\t\tline,\n\t\t\t\t\tcolumn,\n\t\t\t\t\truleId,\n\t\t\t\t\tjustification,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst { line, column } = updateLocationInformation(\n\t\t\t\t\tloc.start,\n\t\t\t\t\tlanguage,\n\t\t\t\t);\n\n\t\t\t\tdirectives.push({\n\t\t\t\t\tparentDirective,\n\t\t\t\t\ttype,\n\t\t\t\t\tline,\n\t\t\t\t\tcolumn,\n\t\t\t\t\truleId,\n\t\t\t\t\tjustification,\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\treport.addError({ ruleId, loc });\n\t\t}\n\t}\n\n\treturn directives;\n}\n\n/**\n * Parses comments in file to extract disable directives.\n * @param {SourceCode} sourceCode The SourceCode object to get comments from.\n * @param {function(string): {create: Function}} ruleMapper A map from rule IDs to defined rules\n * @param {Language} language The language to use to adjust the location information\n * @param {FileReport} report The report to add problems to.\n * @returns {DisableDirective[]}\n * A collection of the directive comments that were found, along with any problems that occurred when parsing\n */\nfunction getDirectiveCommentsForFlatConfig(\n\tsourceCode,\n\truleMapper,\n\tlanguage,\n\treport,\n) {\n\tconst disableDirectives = [];\n\n\tif (sourceCode.getDisableDirectives) {\n\t\tconst { directives: directivesSources, problems: directivesProblems } =\n\t\t\tsourceCode.getDisableDirectives();\n\n\t\tif (Array.isArray(directivesProblems)) {\n\t\t\tdirectivesProblems.forEach(problem => report.addError(problem));\n\t\t}\n\n\t\tdirectivesSources.forEach(directive => {\n\t\t\tconst directives = createDisableDirectives(\n\t\t\t\tdirective,\n\t\t\t\truleMapper,\n\t\t\t\tlanguage,\n\t\t\t\tsourceCode,\n\t\t\t\treport,\n\t\t\t);\n\n\t\t\tdisableDirectives.push(...directives);\n\t\t});\n\t}\n\n\treturn disableDirectives;\n}\n\n/**\n * Convert \"/path/to/<text>\" to \"<text>\".\n * `CLIEngine#executeOnText()` method gives \"/path/to/<text>\" if the filename\n * was omitted because `configArray.extractConfig()` requires an absolute path.\n * But the linter should pass `<text>` to `RuleContext#filename` in that\n * case.\n * Also, code blocks can have their virtual filename. If the parent filename was\n * `<text>`, the virtual filename is `<text>/0_foo.js` or something like (i.e.,\n * it's not an absolute path).\n * @param {string} filename The filename to normalize.\n * @returns {string} The normalized filename.\n */\nfunction normalizeFilename(filename) {\n\tconst parts = filename.split(path.sep);\n\tconst index = parts.lastIndexOf(\"<text>\");\n\n\treturn index === -1 ? filename : parts.slice(index).join(path.sep);\n}\n\n/**\n * Normalizes the possible options for `linter.verify` and `linter.verifyAndFix` to a\n * consistent shape.\n * @param {VerifyOptions} providedOptions Options\n * @param {Config} config Config.\n * @returns {Required<VerifyOptions> & InternalOptions} Normalized options\n */\nfunction normalizeVerifyOptions(providedOptions, config) {\n\tconst linterOptions = config.linterOptions || config;\n\tconst disableInlineConfig = linterOptions.noInlineConfig === true;\n\tconst ignoreInlineConfig = providedOptions.allowInlineConfig === false;\n\tconst configNameOfNoInlineConfig = config.configNameOfNoInlineConfig\n\t\t? ` (${config.configNameOfNoInlineConfig})`\n\t\t: \"\";\n\n\tlet reportUnusedDisableDirectives =\n\t\tprovidedOptions.reportUnusedDisableDirectives;\n\n\tif (typeof reportUnusedDisableDirectives === \"boolean\") {\n\t\treportUnusedDisableDirectives = reportUnusedDisableDirectives\n\t\t\t? \"error\"\n\t\t\t: \"off\";\n\t}\n\tif (typeof reportUnusedDisableDirectives !== \"string\") {\n\t\tif (typeof linterOptions.reportUnusedDisableDirectives === \"boolean\") {\n\t\t\treportUnusedDisableDirectives =\n\t\t\t\tlinterOptions.reportUnusedDisableDirectives ? \"warn\" : \"off\";\n\t\t} else {\n\t\t\treportUnusedDisableDirectives =\n\t\t\t\tlinterOptions.reportUnusedDisableDirectives === void 0\n\t\t\t\t\t? \"off\"\n\t\t\t\t\t: normalizeSeverityToString(\n\t\t\t\t\t\t\tlinterOptions.reportUnusedDisableDirectives,\n\t\t\t\t\t\t);\n\t\t}\n\t}\n\n\tconst reportUnusedInlineConfigs =\n\t\tlinterOptions.reportUnusedInlineConfigs === void 0\n\t\t\t? \"off\"\n\t\t\t: normalizeSeverityToString(\n\t\t\t\t\tlinterOptions.reportUnusedInlineConfigs,\n\t\t\t\t);\n\n\tlet ruleFilter = providedOptions.ruleFilter;\n\n\tif (typeof ruleFilter !== \"function\") {\n\t\truleFilter = () => true;\n\t}\n\n\treturn {\n\t\tfilename: normalizeFilename(providedOptions.filename || \"<input>\"),\n\t\tallowInlineConfig: !ignoreInlineConfig,\n\t\twarnInlineConfig:\n\t\t\tdisableInlineConfig && !ignoreInlineConfig\n\t\t\t\t? `your config${configNameOfNoInlineConfig}`\n\t\t\t\t: null,\n\t\treportUnusedDisableDirectives,\n\t\treportUnusedInlineConfigs,\n\t\tdisableFixes: Boolean(providedOptions.disableFixes),\n\t\tstats: providedOptions.stats,\n\t\truleFilter,\n\t};\n}\n\n/**\n * Store time measurements in map\n * @param {number} time Time measurement\n * @param {Object} timeOpts Options relating which time was measured\n * @param {WeakMap<Linter, LinterInternalSlots>} slots Linter internal slots map\n * @returns {void}\n */\nfunction storeTime(time, timeOpts, slots) {\n\tconst { type, key } = timeOpts;\n\n\tif (!slots.times) {\n\t\tslots.times = { passes: [{}] };\n\t}\n\n\tconst passIndex = slots.fixPasses;\n\n\tif (passIndex > slots.times.passes.length - 1) {\n\t\tslots.times.passes.push({});\n\t}\n\n\tif (key) {\n\t\tslots.times.passes[passIndex][type] ??= {};\n\t\tslots.times.passes[passIndex][type][key] ??= { total: 0 };\n\t\tslots.times.passes[passIndex][type][key].total += time;\n\t} else {\n\t\tslots.times.passes[passIndex][type] ??= { total: 0 };\n\t\tslots.times.passes[passIndex][type].total += time;\n\t}\n}\n\n/**\n * Get the options for a rule (not including severity), if any\n * @param {RuleConfig} ruleConfig rule configuration\n * @param {Object|undefined} defaultOptions rule.meta.defaultOptions\n * @returns {Array} of rule options, empty Array if none\n */\nfunction getRuleOptions(ruleConfig, defaultOptions) {\n\tif (Array.isArray(ruleConfig)) {\n\t\treturn deepMergeArrays(defaultOptions, ruleConfig.slice(1));\n\t}\n\treturn defaultOptions ?? [];\n}\n\n/**\n * Analyze scope of the given AST.\n * @param {ASTNode} ast The `Program` node to analyze.\n * @param {JSLanguageOptions} languageOptions The language options.\n * @param {Record<string, string[]>} visitorKeys The visitor keys.\n * @returns {ScopeManager} The analysis result.\n */\nfunction analyzeScope(ast, languageOptions, visitorKeys) {\n\tconst parserOptions = languageOptions.parserOptions;\n\tconst ecmaFeatures = parserOptions.ecmaFeatures || {};\n\tconst ecmaVersion = languageOptions.ecmaVersion || DEFAULT_ECMA_VERSION;\n\n\treturn eslintScope.analyze(ast, {\n\t\tignoreEval: true,\n\t\tnodejsScope: ecmaFeatures.globalReturn,\n\t\timpliedStrict: ecmaFeatures.impliedStrict,\n\t\tecmaVersion: typeof ecmaVersion === \"number\" ? ecmaVersion : 6,\n\t\tsourceType: languageOptions.sourceType || \"script\",\n\t\tchildVisitorKeys: visitorKeys || evk.KEYS,\n\t\tfallback: Traverser.getKeys,\n\t\tjsx: ecmaFeatures.jsx,\n\t});\n}\n\n/**\n * Runs a rule, and gets its listeners\n * @param {RuleDefinition} rule A rule object\n * @param {Context} ruleContext The context that should be passed to the rule\n * @throws {TypeError} If `rule` is not an object with a `create` method\n * @throws {any} Any error during the rule's `create`\n * @returns {Object} A map of selector listeners provided by the rule\n */\nfunction createRuleListeners(rule, ruleContext) {\n\tif (\n\t\t!rule ||\n\t\ttypeof rule !== \"object\" ||\n\t\ttypeof rule.create !== \"function\"\n\t) {\n\t\tthrow new TypeError(\n\t\t\t`Error while loading rule '${ruleContext.id}': Rule must be an object with a \\`create\\` method`,\n\t\t);\n\t}\n\n\ttry {\n\t\treturn rule.create(ruleContext);\n\t} catch (ex) {\n\t\tex.message = `Error while loading rule '${ruleContext.id}': ${ex.message}`;\n\t\tthrow ex;\n\t}\n}\n\n/**\n * Runs the given rules on the given SourceCode object\n * @param {SourceCode} sourceCode A SourceCode object for the given text\n * @param {Object} configuredRules The rules configuration\n * @param {function(string): RuleDefinition} ruleMapper A mapper function from rule names to rules\n * @param {Language} language The language object used for parsing.\n * @param {LanguageOptions} languageOptions The options for parsing the code.\n * @param {Object} settings The settings that were enabled in the config\n * @param {string} filename The reported filename of the code\n * @param {boolean} applyDefaultOptions If true, apply rules' meta.defaultOptions in computing their config options.\n * @param {string | undefined} cwd cwd of the cli\n * @param {string} physicalFilename The full path of the file on disk without any code block information\n * @param {Function} ruleFilter A predicate function to filter which rules should be executed.\n * @param {boolean} stats If true, stats are collected appended to the result\n * @param {WeakMap<Linter, LinterInternalSlots>} slots InternalSlotsMap of linter\n * @param {FileReport} report The report to add problems to\n * @returns {FileReport} report The report with added problems\n * @throws {Error} If traversal into a node fails.\n */\nfunction runRules(\n\tsourceCode,\n\tconfiguredRules,\n\truleMapper,\n\tlanguage,\n\tlanguageOptions,\n\tsettings,\n\tfilename,\n\tapplyDefaultOptions,\n\tcwd,\n\tphysicalFilename,\n\truleFilter,\n\tstats,\n\tslots,\n\treport,\n) {\n\tconst visitor = new SourceCodeVisitor();\n\n\t/*\n\t * Create a frozen object with the ruleContext properties and methods that are shared by all rules.\n\t * All rule contexts will inherit from this object. This avoids the performance penalty of copying all the\n\t * properties once for each rule.\n\t */\n\tconst fileContext = new FileContext({\n\t\tcwd,\n\t\tfilename,\n\t\tphysicalFilename: physicalFilename || filename,\n\t\tsourceCode,\n\t\tlanguageOptions,\n\t\tsettings,\n\t});\n\n\tconst steps = sourceCode.traverse();\n\n\tObject.keys(configuredRules).forEach(ruleId => {\n\t\tconst severity = Config.getRuleNumericSeverity(configuredRules[ruleId]);\n\n\t\t// not load disabled rules\n\t\tif (severity === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (ruleFilter && !ruleFilter({ ruleId, severity })) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst rule = ruleMapper(ruleId);\n\n\t\tif (!rule) {\n\t\t\treport.addError({ ruleId });\n\t\t\treturn;\n\t\t}\n\n\t\tconst ruleContext = fileContext.extend({\n\t\t\tid: ruleId,\n\t\t\toptions: getRuleOptions(\n\t\t\t\tconfiguredRules[ruleId],\n\t\t\t\tapplyDefaultOptions ? rule.meta?.defaultOptions : void 0,\n\t\t\t),\n\t\t\treport(...args) {\n\t\t\t\tconst problem = report.addRuleMessage(\n\t\t\t\t\truleId,\n\t\t\t\t\tseverity,\n\t\t\t\t\t...args,\n\t\t\t\t);\n\n\t\t\t\tif (problem.fix && !(rule.meta && rule.meta.fixable)) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'Fixable rules must set the `meta.fixable` property to \"code\" or \"whitespace\".',\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tproblem.suggestions &&\n\t\t\t\t\t!(rule.meta && rule.meta.hasSuggestions === true)\n\t\t\t\t) {\n\t\t\t\t\tif (\n\t\t\t\t\t\trule.meta &&\n\t\t\t\t\t\trule.meta.docs &&\n\t\t\t\t\t\ttypeof rule.meta.docs.suggestion !== \"undefined\"\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Encourage migration from the former property name.\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\"Rules with suggestions must set the `meta.hasSuggestions` property to `true`. `meta.docs.suggestion` is ignored by ESLint.\",\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"Rules with suggestions must set the `meta.hasSuggestions` property to `true`.\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\n\t\tconst ruleListenersReturn =\n\t\t\ttiming.enabled || stats\n\t\t\t\t? timing.time(\n\t\t\t\t\t\truleId,\n\t\t\t\t\t\tcreateRuleListeners,\n\t\t\t\t\t\tstats,\n\t\t\t\t\t)(rule, ruleContext)\n\t\t\t\t: createRuleListeners(rule, ruleContext);\n\n\t\tconst ruleListeners = stats\n\t\t\t? ruleListenersReturn.result\n\t\t\t: ruleListenersReturn;\n\n\t\tif (stats) {\n\t\t\tstoreTime(\n\t\t\t\truleListenersReturn.tdiff,\n\t\t\t\t{ type: \"rules\", key: ruleId },\n\t\t\t\tslots,\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Include `ruleId` in error logs\n\t\t * @param {Function} ruleListener A rule method that listens for a node.\n\t\t * @returns {Function} ruleListener wrapped in error handler\n\t\t */\n\t\tfunction addRuleErrorHandler(ruleListener) {\n\t\t\treturn function ruleErrorHandler(...listenerArgs) {\n\t\t\t\ttry {\n\t\t\t\t\tconst ruleListenerReturn = ruleListener(...listenerArgs);\n\n\t\t\t\t\tconst ruleListenerResult = stats\n\t\t\t\t\t\t? ruleListenerReturn.result\n\t\t\t\t\t\t: ruleListenerReturn;\n\n\t\t\t\t\tif (stats) {\n\t\t\t\t\t\tstoreTime(\n\t\t\t\t\t\t\truleListenerReturn.tdiff,\n\t\t\t\t\t\t\t{ type: \"rules\", key: ruleId },\n\t\t\t\t\t\t\tslots,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn ruleListenerResult;\n\t\t\t\t} catch (e) {\n\t\t\t\t\te.ruleId = ruleId;\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tif (typeof ruleListeners === \"undefined\" || ruleListeners === null) {\n\t\t\tthrow new Error(\n\t\t\t\t`The create() function for rule '${ruleId}' did not return an object.`,\n\t\t\t);\n\t\t}\n\n\t\t// add all the selectors from the rule as listeners\n\t\tObject.keys(ruleListeners).forEach(selector => {\n\t\t\tconst ruleListener =\n\t\t\t\ttiming.enabled || stats\n\t\t\t\t\t? timing.time(ruleId, ruleListeners[selector], stats)\n\t\t\t\t\t: ruleListeners[selector];\n\n\t\t\tvisitor.add(selector, addRuleErrorHandler(ruleListener));\n\t\t});\n\t});\n\n\tconst traverser = SourceCodeTraverser.getInstance(language);\n\n\ttraverser.traverseSync(sourceCode, visitor, { steps });\n\n\treturn report;\n}\n\n/**\n * Ensure the source code to be a string.\n * @param {string|SourceCode} textOrSourceCode The text or source code object.\n * @returns {string} The source code text.\n */\nfunction ensureText(textOrSourceCode) {\n\tif (typeof textOrSourceCode === \"object\") {\n\t\tconst { hasBOM, text } = textOrSourceCode;\n\t\tconst bom = hasBOM ? \"\\uFEFF\" : \"\";\n\n\t\treturn bom + text;\n\t}\n\n\treturn String(textOrSourceCode);\n}\n\n/**\n * Normalize the value of the cwd\n * @param {string | undefined} cwd raw value of the cwd, path to a directory that should be considered as the current working directory, can be undefined.\n * @returns {string | undefined} normalized cwd\n */\nfunction normalizeCwd(cwd) {\n\tif (cwd) {\n\t\treturn cwd;\n\t}\n\tif (typeof process === \"object\") {\n\t\treturn process.cwd();\n\t}\n\n\t// It's more explicit to assign the undefined\n\t// eslint-disable-next-line no-undefined -- Consistently returning a value\n\treturn undefined;\n}\n\n/**\n * The map to store private data.\n * @type {WeakMap<Linter, LinterInternalSlots>}\n */\nconst internalSlotsMap = new WeakMap();\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * Object that is responsible for verifying JavaScript text\n * @name Linter\n */\nclass Linter {\n\t/**\n\t * Initialize the Linter.\n\t * @param {Object} [config] the config object\n\t * @param {string} [config.cwd] path to a directory that should be considered as the current working directory, can be undefined.\n\t * @param {Array<string>} [config.flags] the feature flags to enable.\n\t * @param {\"flat\"} [config.configType=\"flat\"] the type of config used. Retrained for backwards compatibility, will be removed in future.\n\t * @param {WarningService} [config.warningService] The warning service to use.\n\t */\n\tconstructor({\n\t\tcwd,\n\t\tconfigType = \"flat\",\n\t\tflags = [],\n\t\twarningService = new WarningService(),\n\t} = {}) {\n\t\tconst processedFlags = [];\n\n\t\tif (configType !== \"flat\") {\n\t\t\tthrow new TypeError(\n\t\t\t\t`The 'configType' option value must be 'flat'. The value '${configType}' is not supported.`,\n\t\t\t);\n\t\t}\n\n\t\tflags.forEach(flag => {\n\t\t\tif (inactiveFlags.has(flag)) {\n\t\t\t\tconst inactiveFlagData = inactiveFlags.get(flag);\n\t\t\t\tconst inactivityReason =\n\t\t\t\t\tgetInactivityReasonMessage(inactiveFlagData);\n\t\t\t\tconst message = `The flag '${flag}' is inactive: ${inactivityReason}`;\n\n\t\t\t\tif (typeof inactiveFlagData.replacedBy === \"undefined\") {\n\t\t\t\t\tthrow new Error(message);\n\t\t\t\t}\n\n\t\t\t\t// if there's a replacement, enable it instead of original\n\t\t\t\tif (typeof inactiveFlagData.replacedBy === \"string\") {\n\t\t\t\t\tprocessedFlags.push(inactiveFlagData.replacedBy);\n\t\t\t\t}\n\n\t\t\t\twarningService.emitInactiveFlagWarning(flag, message);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!activeFlags.has(flag)) {\n\t\t\t\tthrow new Error(`Unknown flag '${flag}'.`);\n\t\t\t}\n\n\t\t\tprocessedFlags.push(flag);\n\t\t});\n\n\t\tinternalSlotsMap.set(this, {\n\t\t\tcwd: normalizeCwd(cwd),\n\t\t\tflags: processedFlags,\n\t\t\tlastConfigArray: null,\n\t\t\tlastSourceCode: null,\n\t\t\tlastSuppressedMessages: [],\n\t\t\twarningService,\n\t\t});\n\n\t\tthis.version = pkg.version;\n\t}\n\n\t/**\n\t * Getter for package version.\n\t * @static\n\t * @returns {string} The version from package.json.\n\t */\n\tstatic get version() {\n\t\treturn pkg.version;\n\t}\n\n\t/**\n\t * Indicates if the given feature flag is enabled for this instance.\n\t * @param {string} flag The feature flag to check.\n\t * @returns {boolean} `true` if the feature flag is enabled, `false` if not.\n\t */\n\thasFlag(flag) {\n\t\treturn internalSlotsMap.get(this).flags.includes(flag);\n\t}\n\n\t/**\n\t * Verifies the text against the rules specified by the second argument.\n\t * @param {string|SourceCode} textOrSourceCode The text to parse or a SourceCode object.\n\t * @param {ConfigObject|ConfigObject[]} config The ESLint config object or array to use.\n\t * @param {(string|(VerifyOptions&ProcessorOptions))} [filenameOrOptions] The optional filename of the file being checked.\n\t *      If this is not set, the filename will default to '<input>' in the rule context. If\n\t *      an object, then it has \"filename\", \"allowInlineConfig\", and some properties.\n\t * @returns {LintMessage[]} The results as an array of messages or an empty array if no messages.\n\t */\n\tverify(textOrSourceCode, config, filenameOrOptions) {\n\t\tdebug(\"Verify\");\n\n\t\tconst { cwd } = internalSlotsMap.get(this);\n\n\t\tconst options =\n\t\t\ttypeof filenameOrOptions === \"string\"\n\t\t\t\t? { filename: filenameOrOptions }\n\t\t\t\t: filenameOrOptions || {};\n\n\t\tconst configToUse = config ?? {};\n\n\t\t/*\n\t\t * Because of how Webpack packages up the files, we can't\n\t\t * compare directly to `FlatConfigArray` using `instanceof`\n\t\t * because it's not the same `FlatConfigArray` as in the tests.\n\t\t * So, we work around it by assuming an array is, in fact, a\n\t\t * `FlatConfigArray` if it has a `getConfig()` method.\n\t\t */\n\t\tlet configArray = configToUse;\n\n\t\tif (\n\t\t\t!Array.isArray(configToUse) ||\n\t\t\ttypeof configToUse.getConfig !== \"function\"\n\t\t) {\n\t\t\tconfigArray = new FlatConfigArray(configToUse, {\n\t\t\t\tbasePath: cwd,\n\t\t\t});\n\t\t\tconfigArray.normalizeSync();\n\t\t}\n\n\t\treturn this._distinguishSuppressedMessages(\n\t\t\tthis._verifyWithFlatConfigArray(\n\t\t\t\ttextOrSourceCode,\n\t\t\t\tconfigArray,\n\t\t\t\toptions,\n\t\t\t\ttrue,\n\t\t\t),\n\t\t);\n\t}\n\n\t/**\n\t * Verify with a processor.\n\t * @param {string|SourceCode} textOrSourceCode The source code.\n\t * @param {Config} config The config array.\n\t * @param {VerifyOptions&ProcessorOptions} options The options.\n\t * @param {FlatConfigArray} [configForRecursive] The `ConfigArray` object to apply multiple processors recursively.\n\t * @returns {(LintMessage|SuppressedLintMessage)[]} The found problems.\n\t */\n\t_verifyWithFlatConfigArrayAndProcessor(\n\t\ttextOrSourceCode,\n\t\tconfig,\n\t\toptions,\n\t\tconfigForRecursive,\n\t) {\n\t\tconst slots = internalSlotsMap.get(this);\n\t\tconst filename = options.filename || \"<input>\";\n\t\tconst filenameToExpose = normalizeFilename(filename);\n\t\tconst physicalFilename = options.physicalFilename || filenameToExpose;\n\t\tconst text = ensureText(textOrSourceCode);\n\t\tconst file = new VFile(filenameToExpose, text, {\n\t\t\tphysicalPath: physicalFilename,\n\t\t});\n\n\t\tconst preprocess = options.preprocess || (rawText => [rawText]);\n\t\tconst postprocess =\n\t\t\toptions.postprocess || (messagesList => messagesList.flat());\n\n\t\tconst processorService = new ProcessorService();\n\t\tconst preprocessResult = processorService.preprocessSync(file, {\n\t\t\tprocessor: {\n\t\t\t\tpreprocess,\n\t\t\t\tpostprocess,\n\t\t\t},\n\t\t});\n\n\t\tif (!preprocessResult.ok) {\n\t\t\treturn preprocessResult.errors;\n\t\t}\n\n\t\tconst filterCodeBlock =\n\t\t\toptions.filterCodeBlock ||\n\t\t\t(blockFilename => blockFilename.endsWith(\".js\"));\n\t\tconst originalExtname = path.extname(filename);\n\t\tconst { files } = preprocessResult;\n\n\t\tconst messageLists = files.map(block => {\n\t\t\tdebug(\"A code block was found: %o\", block.path || \"(unnamed)\");\n\n\t\t\t// Keep the legacy behavior.\n\t\t\tif (typeof block === \"string\") {\n\t\t\t\treturn this._verifyWithFlatConfigArrayAndWithoutProcessors(\n\t\t\t\t\tblock,\n\t\t\t\t\tconfig,\n\t\t\t\t\toptions,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Skip this block if filtered.\n\t\t\tif (!filterCodeBlock(block.path, block.body)) {\n\t\t\t\tdebug(\"This code block was skipped.\");\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\t// Resolve configuration again if the file content or extension was changed.\n\t\t\tif (\n\t\t\t\tconfigForRecursive &&\n\t\t\t\t(text !== block.rawBody ||\n\t\t\t\t\tpath.extname(block.path) !== originalExtname)\n\t\t\t) {\n\t\t\t\tdebug(\n\t\t\t\t\t\"Resolving configuration again because the file content or extension was changed.\",\n\t\t\t\t);\n\t\t\t\treturn this._verifyWithFlatConfigArray(\n\t\t\t\t\tblock.rawBody,\n\t\t\t\t\tconfigForRecursive,\n\t\t\t\t\t{\n\t\t\t\t\t\t...options,\n\t\t\t\t\t\tfilename: block.path,\n\t\t\t\t\t\tphysicalFilename: block.physicalPath,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tslots.lastSourceCode = null;\n\n\t\t\t// Does lint.\n\t\t\treturn this.#flatVerifyWithoutProcessors(block, config, {\n\t\t\t\t...options,\n\t\t\t\tfilename: block.path,\n\t\t\t\tphysicalFilename: block.physicalPath,\n\t\t\t});\n\t\t});\n\n\t\treturn processorService.postprocessSync(file, messageLists, {\n\t\t\tprocessor: {\n\t\t\t\tpreprocess,\n\t\t\t\tpostprocess,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Verify using flat config and without any processors.\n\t * @param {VFile} file The file to lint.\n\t * @param {Config} providedConfig An ESLintConfig instance to configure everything.\n\t * @param {VerifyOptions} [providedOptions] The optional filename of the file being checked.\n\t * @throws {Error} If during rule execution.\n\t * @returns {(LintMessage|SuppressedLintMessage)[]} The results as an array of messages or an empty array if no messages.\n\t */\n\t#flatVerifyWithoutProcessors(file, providedConfig, providedOptions) {\n\t\tconst slots = internalSlotsMap.get(this);\n\t\tconst config = providedConfig || {};\n\t\tconst { settings = {}, languageOptions } = config;\n\t\tconst options = normalizeVerifyOptions(providedOptions, config);\n\n\t\tif (!slots.lastSourceCode) {\n\t\t\tlet t;\n\n\t\t\tif (options.stats) {\n\t\t\t\tt = startTime();\n\t\t\t}\n\n\t\t\tconst parserService = new ParserService();\n\t\t\tconst parseResult = parserService.parseSync(file, config);\n\n\t\t\tif (options.stats) {\n\t\t\t\tconst time = endTime(t);\n\n\t\t\t\tstoreTime(time, { type: \"parse\" }, slots);\n\t\t\t}\n\n\t\t\tif (!parseResult.ok) {\n\t\t\t\treturn parseResult.errors;\n\t\t\t}\n\n\t\t\tslots.lastSourceCode = parseResult.sourceCode;\n\t\t} else {\n\t\t\t/*\n\t\t\t * If the given source code object as the first argument does not have scopeManager, analyze the scope.\n\t\t\t * This is for backward compatibility (SourceCode is frozen so it cannot rebind).\n\t\t\t *\n\t\t\t * We check explicitly for `null` to ensure that this is a JS-flavored language.\n\t\t\t * For non-JS languages we don't want to do this.\n\t\t\t *\n\t\t\t * TODO: Remove this check when we stop exporting the `SourceCode` object.\n\t\t\t */\n\t\t\tif (slots.lastSourceCode.scopeManager === null) {\n\t\t\t\tslots.lastSourceCode = new SourceCode({\n\t\t\t\t\ttext: slots.lastSourceCode.text,\n\t\t\t\t\tast: slots.lastSourceCode.ast,\n\t\t\t\t\thasBOM: slots.lastSourceCode.hasBOM,\n\t\t\t\t\tparserServices: slots.lastSourceCode.parserServices,\n\t\t\t\t\tvisitorKeys: slots.lastSourceCode.visitorKeys,\n\t\t\t\t\tscopeManager: analyzeScope(\n\t\t\t\t\t\tslots.lastSourceCode.ast,\n\t\t\t\t\t\tlanguageOptions,\n\t\t\t\t\t),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst sourceCode = slots.lastSourceCode;\n\t\tconst report = new FileReport({\n\t\t\truleMapper: ruleId => config.getRuleDefinition(ruleId),\n\t\t\tlanguage: config.language,\n\t\t\tsourceCode,\n\t\t\tdisableFixes: options.disableFixes,\n\t\t});\n\n\t\t/*\n\t\t * Make adjustments based on the language options. For JavaScript,\n\t\t * this is primarily about adding variables into the global scope\n\t\t * to account for ecmaVersion and configured globals.\n\t\t */\n\t\tsourceCode.applyLanguageOptions?.(languageOptions);\n\n\t\tconst mergedInlineConfig = {\n\t\t\trules: {},\n\t\t};\n\n\t\t/*\n\t\t * Inline config can be either enabled or disabled. If disabled, it's possible\n\t\t * to detect the inline config and emit a warning (though this is not required).\n\t\t * So we first check to see if inline config is allowed at all, and if so, we\n\t\t * need to check if it's a warning or not.\n\t\t */\n\t\tif (options.allowInlineConfig) {\n\t\t\t// if inline config should warn then add the warnings\n\t\t\tif (options.warnInlineConfig) {\n\t\t\t\tif (sourceCode.getInlineConfigNodes) {\n\t\t\t\t\tsourceCode.getInlineConfigNodes().forEach(node => {\n\t\t\t\t\t\tconst loc = sourceCode.getLoc(node);\n\t\t\t\t\t\tconst range = sourceCode.getRange(node);\n\n\t\t\t\t\t\treport.addWarning({\n\t\t\t\t\t\t\tmessage: `'${sourceCode.text.slice(range[0], range[1])}' has no effect because you have 'noInlineConfig' setting in ${options.warnInlineConfig}.`,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst inlineConfigResult = sourceCode.applyInlineConfig?.();\n\n\t\t\t\tif (inlineConfigResult) {\n\t\t\t\t\tinlineConfigResult.problems.forEach(problem => {\n\t\t\t\t\t\treport.addFatal(problem);\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (const {\n\t\t\t\t\t\tconfig: inlineConfig,\n\t\t\t\t\t\tloc,\n\t\t\t\t\t} of inlineConfigResult.configs) {\n\t\t\t\t\t\tObject.keys(inlineConfig.rules).forEach(ruleId => {\n\t\t\t\t\t\t\tconst rule = config.getRuleDefinition(ruleId);\n\t\t\t\t\t\t\tconst ruleValue = inlineConfig.rules[ruleId];\n\n\t\t\t\t\t\t\tif (!rule) {\n\t\t\t\t\t\t\t\treport.addError({\n\t\t\t\t\t\t\t\t\truleId,\n\t\t\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tObject.hasOwn(mergedInlineConfig.rules, ruleId)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treport.addError({\n\t\t\t\t\t\t\t\t\tmessage: `Rule \"${ruleId}\" is already configured by another configuration comment in the preceding code. This configuration is ignored.`,\n\t\t\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst ruleOptionsInline = asArray(ruleValue);\n\t\t\t\t\t\t\t\tlet ruleOptions = ruleOptionsInline;\n\n\t\t\t\t\t\t\t\tassertIsRuleSeverity(ruleId, ruleOptions[0]);\n\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * If the rule was already configured, inline rule configuration that\n\t\t\t\t\t\t\t\t * only has severity should retain options from the config and just override the severity.\n\t\t\t\t\t\t\t\t *\n\t\t\t\t\t\t\t\t * Example:\n\t\t\t\t\t\t\t\t *\n\t\t\t\t\t\t\t\t *   {\n\t\t\t\t\t\t\t\t *       rules: {\n\t\t\t\t\t\t\t\t *           curly: [\"error\", \"multi\"]\n\t\t\t\t\t\t\t\t *       }\n\t\t\t\t\t\t\t\t *   }\n\t\t\t\t\t\t\t\t *\n\t\t\t\t\t\t\t\t *   /* eslint curly: [\"warn\"] * /\n\t\t\t\t\t\t\t\t *\n\t\t\t\t\t\t\t\t *   Results in:\n\t\t\t\t\t\t\t\t *\n\t\t\t\t\t\t\t\t *   curly: [\"warn\", \"multi\"]\n\t\t\t\t\t\t\t\t */\n\n\t\t\t\t\t\t\t\tlet shouldValidateOptions = true;\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t * If inline config for the rule has only severity\n\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\truleOptions.length === 1 &&\n\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t * And the rule was already configured\n\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\tconfig.rules &&\n\t\t\t\t\t\t\t\t\tObject.hasOwn(config.rules, ruleId)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t * Then use severity from the inline config and options from the provided config\n\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\truleOptions = [\n\t\t\t\t\t\t\t\t\t\truleOptions[0], // severity from the inline config\n\t\t\t\t\t\t\t\t\t\t...config.rules[ruleId].slice(1), // options from the provided config\n\t\t\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\t\t\t// if the rule was enabled, the options have already been validated\n\t\t\t\t\t\t\t\t\tif (config.rules[ruleId][0] > 0) {\n\t\t\t\t\t\t\t\t\t\tshouldValidateOptions = false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t\t * Since we know the user provided options, apply defaults on top of them\n\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\tconst slicedOptions = ruleOptions.slice(1);\n\t\t\t\t\t\t\t\t\tconst mergedOptions = deepMergeArrays(\n\t\t\t\t\t\t\t\t\t\trule.meta?.defaultOptions,\n\t\t\t\t\t\t\t\t\t\tslicedOptions,\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\tif (mergedOptions.length) {\n\t\t\t\t\t\t\t\t\t\truleOptions = [\n\t\t\t\t\t\t\t\t\t\t\truleOptions[0],\n\t\t\t\t\t\t\t\t\t\t\t...mergedOptions,\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\toptions.reportUnusedInlineConfigs !== \"off\"\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\taddProblemIfSameSeverityAndOptions(\n\t\t\t\t\t\t\t\t\t\tconfig,\n\t\t\t\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\t\t\t\treport,\n\t\t\t\t\t\t\t\t\t\truleId,\n\t\t\t\t\t\t\t\t\t\truleOptions,\n\t\t\t\t\t\t\t\t\t\truleOptionsInline,\n\t\t\t\t\t\t\t\t\t\toptions.reportUnusedInlineConfigs,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (shouldValidateOptions) {\n\t\t\t\t\t\t\t\t\tconfig.validateRulesConfig({\n\t\t\t\t\t\t\t\t\t\t[ruleId]: ruleOptions,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tmergedInlineConfig.rules[ruleId] = ruleOptions;\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * If the rule has invalid `meta.schema`, throw the error because\n\t\t\t\t\t\t\t\t * this is not an invalid inline configuration but an invalid rule.\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\terr.code ===\n\t\t\t\t\t\t\t\t\t\"ESLINT_INVALID_RULE_OPTIONS_SCHEMA\"\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t * If the rule does not support the current language, report a\n\t\t\t\t\t\t\t\t * specific, actionable error message.\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\terr.messageTemplate ===\n\t\t\t\t\t\t\t\t\t\"rule-unsupported-language\"\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treport.addError({\n\t\t\t\t\t\t\t\t\t\truleId,\n\t\t\t\t\t\t\t\t\t\tmessage: `Inline configuration for rule \"${ruleId}\" is invalid:\\n\\tRule does not support the language \"${err.messageData.language}\". Use a config block with \"files\" to apply the rule only to supported files, or disable it.\\n`,\n\t\t\t\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet baseMessage = err.message\n\t\t\t\t\t\t\t\t\t.slice(\n\t\t\t\t\t\t\t\t\t\terr.message.startsWith('Key \"rules\":')\n\t\t\t\t\t\t\t\t\t\t\t? err.message.indexOf(\":\", 12) + 1\n\t\t\t\t\t\t\t\t\t\t\t: err.message.indexOf(\":\") + 1,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.trim();\n\n\t\t\t\t\t\t\t\tif (err.messageTemplate) {\n\t\t\t\t\t\t\t\t\tbaseMessage += ` You passed \"${ruleValue}\".`;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treport.addError({\n\t\t\t\t\t\t\t\t\truleId,\n\t\t\t\t\t\t\t\t\tmessage: `Inline configuration for rule \"${ruleId}\" is invalid:\\n\\t${baseMessage}\\n`,\n\t\t\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst commentDirectives =\n\t\t\toptions.allowInlineConfig && !options.warnInlineConfig\n\t\t\t\t? getDirectiveCommentsForFlatConfig(\n\t\t\t\t\t\tsourceCode,\n\t\t\t\t\t\truleId => config.getRuleDefinition(ruleId),\n\t\t\t\t\t\tconfig.language,\n\t\t\t\t\t\treport,\n\t\t\t\t\t)\n\t\t\t\t: [];\n\n\t\tconst configuredRules = Object.assign(\n\t\t\t{},\n\t\t\tconfig.rules,\n\t\t\tmergedInlineConfig.rules,\n\t\t);\n\n\t\tsourceCode.finalize?.();\n\n\t\ttry {\n\t\t\trunRules(\n\t\t\t\tsourceCode,\n\t\t\t\tconfiguredRules,\n\t\t\t\truleId => config.getRuleDefinition(ruleId),\n\t\t\t\tconfig.language,\n\t\t\t\tlanguageOptions,\n\t\t\t\tsettings,\n\t\t\t\toptions.filename,\n\t\t\t\tfalse,\n\t\t\t\tslots.cwd,\n\t\t\t\tprovidedOptions.physicalFilename,\n\t\t\t\toptions.ruleFilter,\n\t\t\t\toptions.stats,\n\t\t\t\tslots,\n\t\t\t\treport,\n\t\t\t);\n\t\t} catch (err) {\n\t\t\terr.message += `\\nOccurred while linting ${options.filename}`;\n\t\t\tdebug(\"An error occurred while traversing\");\n\t\t\tdebug(\"Filename:\", options.filename);\n\t\t\tif (err.currentNode) {\n\t\t\t\tconst { line } = sourceCode.getLoc(err.currentNode).start;\n\n\t\t\t\tdebug(\"Line:\", line);\n\t\t\t\terr.message += `:${line}`;\n\t\t\t}\n\t\t\tdebug(\"Parser Options:\", languageOptions.parserOptions);\n\t\t\tdebug(\"Settings:\", settings);\n\n\t\t\tif (err.ruleId) {\n\t\t\t\terr.message += `\\nRule: \"${err.ruleId}\"`;\n\t\t\t}\n\n\t\t\tthrow err;\n\t\t}\n\n\t\treturn applyDisableDirectives({\n\t\t\tlanguage: config.language,\n\t\t\tsourceCode,\n\t\t\tdirectives: commentDirectives,\n\t\t\tdisableFixes: options.disableFixes,\n\t\t\tproblems: report.messages.sort(\n\t\t\t\t(problemA, problemB) =>\n\t\t\t\t\tproblemA.line - problemB.line ||\n\t\t\t\t\tproblemA.column - problemB.column,\n\t\t\t),\n\t\t\treportUnusedDisableDirectives:\n\t\t\t\toptions.reportUnusedDisableDirectives,\n\t\t\truleFilter: options.ruleFilter,\n\t\t\tconfiguredRules,\n\t\t});\n\t}\n\n\t/**\n\t * Same as linter.verify, except without support for processors.\n\t * @param {string|SourceCode} textOrSourceCode The text to parse or a SourceCode object.\n\t * @param {Config} providedConfig An ESLintConfig instance to configure everything.\n\t * @param {VerifyOptions} [providedOptions] The optional filename of the file being checked.\n\t * @throws {Error} If during rule execution.\n\t * @returns {(LintMessage|SuppressedLintMessage)[]} The results as an array of messages or an empty array if no messages.\n\t */\n\t_verifyWithFlatConfigArrayAndWithoutProcessors(\n\t\ttextOrSourceCode,\n\t\tprovidedConfig,\n\t\tprovidedOptions,\n\t) {\n\t\tconst slots = internalSlotsMap.get(this);\n\t\tconst filename = normalizeFilename(\n\t\t\tprovidedOptions.filename || \"<input>\",\n\t\t);\n\t\tlet text;\n\n\t\t// evaluate arguments\n\t\tif (typeof textOrSourceCode === \"string\") {\n\t\t\tslots.lastSourceCode = null;\n\t\t\ttext = textOrSourceCode;\n\t\t} else {\n\t\t\tslots.lastSourceCode = textOrSourceCode;\n\t\t\ttext = textOrSourceCode.text;\n\t\t}\n\n\t\tconst file = new VFile(filename, text, {\n\t\t\tphysicalPath: providedOptions.physicalFilename,\n\t\t});\n\n\t\treturn this.#flatVerifyWithoutProcessors(\n\t\t\tfile,\n\t\t\tprovidedConfig,\n\t\t\tprovidedOptions,\n\t\t);\n\t}\n\n\t/**\n\t * Verify a given code with a flat config.\n\t * @param {string|SourceCode} textOrSourceCode The source code.\n\t * @param {FlatConfigArray} configArray The config array.\n\t * @param {VerifyOptions&ProcessorOptions} options The options.\n\t * @param {boolean} firstCall Indicates if this is the first call in `verify()`\n\t *   to determine processor behavior.\n\t * @returns {(LintMessage|SuppressedLintMessage)[]} The found problems.\n\t */\n\t_verifyWithFlatConfigArray(\n\t\ttextOrSourceCode,\n\t\tconfigArray,\n\t\toptions,\n\t\tfirstCall = false,\n\t) {\n\t\tdebug(\"With flat config: %s\", options.filename);\n\n\t\t// we need a filename to match configs against\n\t\tconst filename = options.filename || \"__placeholder__.js\";\n\n\t\t// Store the config array in order to get plugin envs and rules later.\n\t\tinternalSlotsMap.get(this).lastConfigArray = configArray;\n\t\tconst config = configArray.getConfig(filename);\n\n\t\tif (!config) {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\truleId: null,\n\t\t\t\t\tseverity: 1,\n\t\t\t\t\tmessage: `No matching configuration found for ${filename}.`,\n\t\t\t\t\tline: 0,\n\t\t\t\t\tcolumn: 0,\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\t// Verify.\n\t\tif (config.processor) {\n\t\t\tdebug(\"Apply the processor: %o\", config.processor);\n\t\t\tconst { preprocess, postprocess, supportsAutofix } =\n\t\t\t\tconfig.processor;\n\t\t\tconst disableFixes = options.disableFixes || !supportsAutofix;\n\n\t\t\treturn this._verifyWithFlatConfigArrayAndProcessor(\n\t\t\t\ttextOrSourceCode,\n\t\t\t\tconfig,\n\t\t\t\t{ ...options, filename, disableFixes, postprocess, preprocess },\n\t\t\t\tconfigArray,\n\t\t\t);\n\t\t}\n\n\t\t// check for options-based processing\n\t\tif (firstCall && (options.preprocess || options.postprocess)) {\n\t\t\treturn this._verifyWithFlatConfigArrayAndProcessor(\n\t\t\t\ttextOrSourceCode,\n\t\t\t\tconfig,\n\t\t\t\toptions,\n\t\t\t);\n\t\t}\n\n\t\treturn this._verifyWithFlatConfigArrayAndWithoutProcessors(\n\t\t\ttextOrSourceCode,\n\t\t\tconfig,\n\t\t\toptions,\n\t\t);\n\t}\n\n\t/**\n\t * Given a list of reported problems, distinguish problems between normal messages and suppressed messages.\n\t * The normal messages will be returned and the suppressed messages will be stored as lastSuppressedMessages.\n\t * @param {Array<LintMessage|SuppressedLintMessage>} problems A list of reported problems.\n\t * @returns {LintMessage[]} A list of LintMessage.\n\t */\n\t_distinguishSuppressedMessages(problems) {\n\t\tconst messages = [];\n\t\tconst suppressedMessages = [];\n\t\tconst slots = internalSlotsMap.get(this);\n\n\t\tfor (const problem of problems) {\n\t\t\tif (problem.suppressions) {\n\t\t\t\tsuppressedMessages.push(problem);\n\t\t\t} else {\n\t\t\t\tmessages.push(problem);\n\t\t\t}\n\t\t}\n\n\t\tslots.lastSuppressedMessages = suppressedMessages;\n\n\t\treturn messages;\n\t}\n\n\t/**\n\t * Gets the SourceCode object representing the parsed source.\n\t * @returns {SourceCode} The SourceCode object.\n\t */\n\tgetSourceCode() {\n\t\treturn internalSlotsMap.get(this).lastSourceCode;\n\t}\n\n\t/**\n\t * Gets the times spent on (parsing, fixing, linting) a file.\n\t * @returns {{ passes: TimePass[]; }} The times.\n\t */\n\tgetTimes() {\n\t\treturn internalSlotsMap.get(this).times ?? { passes: [] };\n\t}\n\n\t/**\n\t * Gets the number of autofix passes that were made in the last run.\n\t * @returns {number} The number of autofix passes.\n\t */\n\tgetFixPassCount() {\n\t\treturn internalSlotsMap.get(this).fixPasses ?? 0;\n\t}\n\n\t/**\n\t * Gets the list of SuppressedLintMessage produced in the last running.\n\t * @returns {SuppressedLintMessage[]} The list of SuppressedLintMessage\n\t */\n\tgetSuppressedMessages() {\n\t\treturn internalSlotsMap.get(this).lastSuppressedMessages;\n\t}\n\n\t/**\n\t * Performs multiple autofix passes over the text until as many fixes as possible\n\t * have been applied.\n\t * @param {string} text The source text to apply fixes to.\n\t * @param {ConfigObject|ConfigObject[]} config The ESLint config object or array to use.\n\t * @param {string|(VerifyOptions&ProcessorOptions&FixOptions)} [filenameOrOptions] The filename or ESLint options object to use.\n\t * @returns {{fixed:boolean,messages:LintMessage[],output:string}} The result of the fix operation as returned from the\n\t *      SourceCodeFixer.\n\t */\n\tverifyAndFix(text, config, filenameOrOptions) {\n\t\tlet messages,\n\t\t\tfixedResult,\n\t\t\tfixed = false,\n\t\t\tpassNumber = 0,\n\t\t\tcurrentText = text,\n\t\t\tsecondPreviousText,\n\t\t\tpreviousText;\n\t\tconst options =\n\t\t\ttypeof filenameOrOptions === \"string\"\n\t\t\t\t? { filename: filenameOrOptions }\n\t\t\t\t: filenameOrOptions || {};\n\t\tconst debugTextDescription =\n\t\t\toptions.filename || `${text.slice(0, 10)}...`;\n\t\tconst shouldFix =\n\t\t\ttypeof options.fix !== \"undefined\" ? options.fix : true;\n\t\tconst stats = options?.stats;\n\n\t\tconst slots = internalSlotsMap.get(this);\n\n\t\t// Remove lint times from the last run.\n\t\tif (stats) {\n\t\t\tdelete slots.times;\n\t\t\tslots.fixPasses = 0;\n\t\t}\n\n\t\t/**\n\t\t * This loop continues until one of the following is true:\n\t\t *\n\t\t * 1. No more fixes have been applied.\n\t\t * 2. Ten passes have been made.\n\t\t *\n\t\t * That means anytime a fix is successfully applied, there will be another pass.\n\t\t * Essentially, guaranteeing a minimum of two passes.\n\t\t */\n\t\tdo {\n\t\t\tpassNumber++;\n\t\t\tlet tTotal;\n\n\t\t\tif (stats) {\n\t\t\t\ttTotal = startTime();\n\t\t\t}\n\n\t\t\tdebug(\n\t\t\t\t`Linting code for ${debugTextDescription} (pass ${passNumber})`,\n\t\t\t);\n\t\t\tmessages = this.verify(currentText, config, options);\n\n\t\t\tdebug(\n\t\t\t\t`Generating fixed text for ${debugTextDescription} (pass ${passNumber})`,\n\t\t\t);\n\t\t\tlet t;\n\n\t\t\tif (stats) {\n\t\t\t\tt = startTime();\n\t\t\t}\n\n\t\t\tfixedResult = SourceCodeFixer.applyFixes(\n\t\t\t\tcurrentText,\n\t\t\t\tmessages,\n\t\t\t\tshouldFix,\n\t\t\t);\n\n\t\t\tif (stats) {\n\t\t\t\tif (fixedResult.fixed) {\n\t\t\t\t\tconst time = endTime(t);\n\n\t\t\t\t\tstoreTime(time, { type: \"fix\" }, slots);\n\t\t\t\t\tslots.fixPasses++;\n\t\t\t\t} else {\n\t\t\t\t\tstoreTime(0, { type: \"fix\" }, slots);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * stop if there are any syntax errors.\n\t\t\t * 'fixedResult.output' is a empty string.\n\t\t\t */\n\t\t\tif (messages.length === 1 && messages[0].fatal) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// keep track if any fixes were ever applied - important for return value\n\t\t\tfixed = fixed || fixedResult.fixed;\n\n\t\t\t// update to use the fixed output instead of the original text\n\t\t\tsecondPreviousText = previousText;\n\t\t\tpreviousText = currentText;\n\t\t\tcurrentText = fixedResult.output;\n\n\t\t\tif (stats) {\n\t\t\t\ttTotal = endTime(tTotal);\n\t\t\t\tconst passIndex = slots.times.passes.length - 1;\n\n\t\t\t\tslots.times.passes[passIndex].total = tTotal;\n\t\t\t}\n\n\t\t\t// Stop if we've made a circular fix\n\t\t\tif (\n\t\t\t\tpassNumber > 1 &&\n\t\t\t\tcurrentText.length === secondPreviousText.length &&\n\t\t\t\tcurrentText === secondPreviousText\n\t\t\t) {\n\t\t\t\tdebug(\n\t\t\t\t\t`Circular fixes detected after pass ${passNumber}. Exiting fix loop.`,\n\t\t\t\t);\n\t\t\t\tslots.warningService.emitCircularFixesWarning(\n\t\t\t\t\toptions.filename ?? \"text\",\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (fixedResult.fixed && passNumber < MAX_AUTOFIX_PASSES);\n\n\t\t/*\n\t\t * If the last result had fixes, we need to lint again to be sure we have\n\t\t * the most up-to-date information.\n\t\t */\n\t\tif (fixedResult.fixed) {\n\t\t\tlet tTotal;\n\n\t\t\tif (stats) {\n\t\t\t\ttTotal = startTime();\n\t\t\t}\n\n\t\t\tfixedResult.messages = this.verify(currentText, config, options);\n\n\t\t\tif (stats) {\n\t\t\t\tstoreTime(0, { type: \"fix\" }, slots);\n\t\t\t\tslots.times.passes.at(-1).total = endTime(tTotal);\n\t\t\t}\n\t\t}\n\n\t\t// ensure the last result properly reflects if fixes were done\n\t\tfixedResult.fixed = fixed;\n\t\tfixedResult.output = currentText;\n\n\t\treturn fixedResult;\n\t}\n}\n\nmodule.exports = {\n\tLinter,\n};\n", "\"use strict\";\n\nconst { Linter } = require(\"./linter\");\nconst SourceCodeFixer = require(\"./source-code-fixer\");\n\nmodule.exports = {\n\tLinter,\n\n\t// For testers.\n\tSourceCodeFixer,\n};\n", "/**\n * @fileoverview Common helpers for naming of plugins, formatters and configs\n */\n\n\"use strict\";\n\nconst NAMESPACE_REGEX = /^@.*\\//u;\n\n/**\n * Brings package name to correct format based on prefix\n * @param {string} name The name of the package.\n * @param {string} prefix Can be either \"eslint-plugin\", \"eslint-config\" or \"eslint-formatter\"\n * @returns {string} Normalized name of the package\n * @private\n */\nfunction normalizePackageName(name, prefix) {\n\tlet normalizedName = name;\n\n\t/**\n\t * On Windows, name can come in with Windows slashes instead of Unix slashes.\n\t * Normalize to Unix first to avoid errors later on.\n\t * https://github.com/eslint/eslint/issues/5644\n\t */\n\tif (normalizedName.includes(\"\\\\\")) {\n\t\tnormalizedName = normalizedName.replace(/\\\\/gu, \"/\");\n\t}\n\n\tif (normalizedName.charAt(0) === \"@\") {\n\t\t/**\n\t\t * it's a scoped package\n\t\t * package name is the prefix, or just a username\n\t\t */\n\t\tconst scopedPackageShortcutRegex = new RegExp(\n\t\t\t\t`^(@[^/]+)(?:/(?:${prefix})?)?$`,\n\t\t\t\t\"u\",\n\t\t\t),\n\t\t\tscopedPackageNameRegex = new RegExp(`^${prefix}(-|$)`, \"u\");\n\n\t\tif (scopedPackageShortcutRegex.test(normalizedName)) {\n\t\t\tnormalizedName = normalizedName.replace(\n\t\t\t\tscopedPackageShortcutRegex,\n\t\t\t\t`$1/${prefix}`,\n\t\t\t);\n\t\t} else if (!scopedPackageNameRegex.test(normalizedName.split(\"/\")[1])) {\n\t\t\t/*\n\t\t\t * for scoped packages, insert the prefix after the first / unless\n\t\t\t * the path is already @scope/eslint or @scope/eslint-xxx-yyy\n\t\t\t */\n\t\t\tnormalizedName = normalizedName.replace(\n\t\t\t\t/^@([^/]+)\\/(.*)$/u,\n\t\t\t\t`@$1/${prefix}-$2`,\n\t\t\t);\n\t\t}\n\t} else if (!normalizedName.startsWith(`${prefix}-`)) {\n\t\tnormalizedName = `${prefix}-${normalizedName}`;\n\t}\n\n\treturn normalizedName;\n}\n\n/**\n * Removes the prefix from a fullname.\n * @param {string} fullname The term which may have the prefix.\n * @param {string} prefix The prefix to remove.\n * @returns {string} The term without prefix.\n */\nfunction getShorthandName(fullname, prefix) {\n\tif (fullname[0] === \"@\") {\n\t\tlet matchResult = new RegExp(`^(@[^/]+)/${prefix}$`, \"u\").exec(\n\t\t\tfullname,\n\t\t);\n\n\t\tif (matchResult) {\n\t\t\treturn matchResult[1];\n\t\t}\n\n\t\tmatchResult = new RegExp(`^(@[^/]+)/${prefix}-(.+)$`, \"u\").exec(\n\t\t\tfullname,\n\t\t);\n\t\tif (matchResult) {\n\t\t\treturn `${matchResult[1]}/${matchResult[2]}`;\n\t\t}\n\t} else if (fullname.startsWith(`${prefix}-`)) {\n\t\treturn fullname.slice(prefix.length + 1);\n\t}\n\n\treturn fullname;\n}\n\n/**\n * Gets the scope (namespace) of a term.\n * @param {string} term The term which may have the namespace.\n * @returns {string} The namespace of the term if it has one.\n */\nfunction getNamespaceFromTerm(term) {\n\tconst match = term.match(NAMESPACE_REGEX);\n\n\treturn match ? match[0] : \"\";\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nmodule.exports = {\n\tnormalizePackageName,\n\tgetShorthandName,\n\tgetNamespaceFromTerm,\n};\n", "/**\n * @fileoverview Helpers for counting errors and warnings in lint messages.\n * @author Nicholas C. Zakas\n * @author Blake Sager\n */\n\n\"use strict\";\n\n/**\n * It will calculate the error and warning count for collection of messages per file\n * @param {LintMessage[]} messages Collection of messages\n * @returns {Object} Contains the stats\n */\nfunction calculateStatsPerFile(messages) {\n\tconst stat = {\n\t\terrorCount: 0,\n\t\tfatalErrorCount: 0,\n\t\twarningCount: 0,\n\t\tfixableErrorCount: 0,\n\t\tfixableWarningCount: 0,\n\t};\n\n\tfor (let i = 0; i < messages.length; i++) {\n\t\tconst message = messages[i];\n\n\t\tif (message.fatal || message.severity === 2) {\n\t\t\tstat.errorCount++;\n\t\t\tif (message.fatal) {\n\t\t\t\tstat.fatalErrorCount++;\n\t\t\t}\n\t\t\tif (message.fix) {\n\t\t\t\tstat.fixableErrorCount++;\n\t\t\t}\n\t\t} else {\n\t\t\tstat.warningCount++;\n\t\t\tif (message.fix) {\n\t\t\t\tstat.fixableWarningCount++;\n\t\t\t}\n\t\t}\n\t}\n\treturn stat;\n}\n\nmodule.exports = {\n\tcalculateStatsPerFile,\n};\n", "//TODO: handle reviver/dehydrate function like normal\n//and handle indentation, like normal.\n//if anyone needs this... please send pull request.\n\nexports.stringify = function stringify (o) {\n  if('undefined' == typeof o) return o\n\n  if(o && Buffer.isBuffer(o))\n    return JSON.stringify(':base64:' + o.toString('base64'))\n\n  if(o && o.toJSON)\n    o =  o.toJSON()\n\n  if(o && 'object' === typeof o) {\n    var s = ''\n    var array = Array.isArray(o)\n    s = array ? '[' : '{'\n    var first = true\n\n    for(var k in o) {\n      var ignore = 'function' == typeof o[k] || (!array && 'undefined' === typeof o[k])\n      if(Object.hasOwnProperty.call(o, k) && !ignore) {\n        if(!first)\n          s += ','\n        first = false\n        if (array) {\n          if(o[k] == undefined)\n            s += 'null'\n          else\n            s += stringify(o[k])\n        } else if (o[k] !== void(0)) {\n          s += stringify(k) + ':' + stringify(o[k])\n        }\n      }\n    }\n\n    s += array ? ']' : '}'\n\n    return s\n  } else if ('string' === typeof o) {\n    return JSON.stringify(/^:/.test(o) ? ':' + o : o)\n  } else if ('undefined' === typeof o) {\n    return 'null';\n  } else\n    return JSON.stringify(o)\n}\n\nexports.parse = function (s) {\n  return JSON.parse(s, function (key, value) {\n    if('string' === typeof value) {\n      if(/^:base64:/.test(value))\n        return Buffer.from(value.substring(8), 'base64')\n      else\n        return /^:/.test(value) ? value.substring(1) : value \n    }\n    return value\n  })\n}\n", "'use strict';\n\nconst EventEmitter = require('events');\nconst JSONB = require('json-buffer');\n\nconst loadStore = options => {\n\tconst adapters = {\n\t\tredis: '@keyv/redis',\n\t\trediss: '@keyv/redis',\n\t\tmongodb: '@keyv/mongo',\n\t\tmongo: '@keyv/mongo',\n\t\tsqlite: '@keyv/sqlite',\n\t\tpostgresql: '@keyv/postgres',\n\t\tpostgres: '@keyv/postgres',\n\t\tmysql: '@keyv/mysql',\n\t\tetcd: '@keyv/etcd',\n\t\toffline: '@keyv/offline',\n\t\ttiered: '@keyv/tiered',\n\t};\n\tif (options.adapter || options.uri) {\n\t\tconst adapter = options.adapter || /^[^:+]*/.exec(options.uri)[0];\n\t\treturn new (require(adapters[adapter]))(options);\n\t}\n\n\treturn new Map();\n};\n\nconst iterableAdapters = [\n\t'sqlite',\n\t'postgres',\n\t'mysql',\n\t'mongo',\n\t'redis',\n\t'tiered',\n];\n\nclass Keyv extends EventEmitter {\n\tconstructor(uri, {emitErrors = true, ...options} = {}) {\n\t\tsuper();\n\t\tthis.opts = {\n\t\t\tnamespace: 'keyv',\n\t\t\tserialize: JSONB.stringify,\n\t\t\tdeserialize: JSONB.parse,\n\t\t\t...((typeof uri === 'string') ? {uri} : uri),\n\t\t\t...options,\n\t\t};\n\n\t\tif (!this.opts.store) {\n\t\t\tconst adapterOptions = {...this.opts};\n\t\t\tthis.opts.store = loadStore(adapterOptions);\n\t\t}\n\n\t\tif (this.opts.compression) {\n\t\t\tconst compression = this.opts.compression;\n\t\t\tthis.opts.serialize = compression.serialize.bind(compression);\n\t\t\tthis.opts.deserialize = compression.deserialize.bind(compression);\n\t\t}\n\n\t\tif (typeof this.opts.store.on === 'function' && emitErrors) {\n\t\t\tthis.opts.store.on('error', error => this.emit('error', error));\n\t\t}\n\n\t\tthis.opts.store.namespace = this.opts.namespace;\n\n\t\tconst generateIterator = iterator => async function * () {\n\t\t\tfor await (const [key, raw] of typeof iterator === 'function'\n\t\t\t\t? iterator(this.opts.store.namespace)\n\t\t\t\t: iterator) {\n\t\t\t\tconst data = await this.opts.deserialize(raw);\n\t\t\t\tif (this.opts.store.namespace && !key.includes(this.opts.store.namespace)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (typeof data.expires === 'number' && Date.now() > data.expires) {\n\t\t\t\t\tthis.delete(key);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tyield [this._getKeyUnprefix(key), data.value];\n\t\t\t}\n\t\t};\n\n\t\t// Attach iterators\n\t\tif (typeof this.opts.store[Symbol.iterator] === 'function' && this.opts.store instanceof Map) {\n\t\t\tthis.iterator = generateIterator(this.opts.store);\n\t\t} else if (typeof this.opts.store.iterator === 'function' && this.opts.store.opts\n\t\t\t&& this._checkIterableAdaptar()) {\n\t\t\tthis.iterator = generateIterator(this.opts.store.iterator.bind(this.opts.store));\n\t\t}\n\t}\n\n\t_checkIterableAdaptar() {\n\t\treturn iterableAdapters.includes(this.opts.store.opts.dialect)\n\t\t\t|| iterableAdapters.findIndex(element => this.opts.store.opts.url.includes(element)) >= 0;\n\t}\n\n\t_getKeyPrefix(key) {\n\t\treturn `${this.opts.namespace}:${key}`;\n\t}\n\n\t_getKeyPrefixArray(keys) {\n\t\treturn keys.map(key => `${this.opts.namespace}:${key}`);\n\t}\n\n\t_getKeyUnprefix(key) {\n\t\treturn key\n\t\t\t.split(':')\n\t\t\t.splice(1)\n\t\t\t.join(':');\n\t}\n\n\tget(key, options) {\n\t\tconst {store} = this.opts;\n\t\tconst isArray = Array.isArray(key);\n\t\tconst keyPrefixed = isArray ? this._getKeyPrefixArray(key) : this._getKeyPrefix(key);\n\t\tif (isArray && store.getMany === undefined) {\n\t\t\tconst promises = [];\n\t\t\tfor (const key of keyPrefixed) {\n\t\t\t\tpromises.push(Promise.resolve()\n\t\t\t\t\t.then(() => store.get(key))\n\t\t\t\t\t.then(data => (typeof data === 'string') ? this.opts.deserialize(data) : (this.opts.compression ? this.opts.deserialize(data) : data))\n\t\t\t\t\t.then(data => {\n\t\t\t\t\t\tif (data === undefined || data === null) {\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof data.expires === 'number' && Date.now() > data.expires) {\n\t\t\t\t\t\t\treturn this.delete(key).then(() => undefined);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (options && options.raw) ? data : data.value;\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn Promise.allSettled(promises)\n\t\t\t\t.then(values => {\n\t\t\t\t\tconst data = [];\n\t\t\t\t\tfor (const value of values) {\n\t\t\t\t\t\tdata.push(value.value);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t}\n\n\t\treturn Promise.resolve()\n\t\t\t.then(() => isArray ? store.getMany(keyPrefixed) : store.get(keyPrefixed))\n\t\t\t.then(data => (typeof data === 'string') ? this.opts.deserialize(data) : (this.opts.compression ? this.opts.deserialize(data) : data))\n\t\t\t.then(data => {\n\t\t\t\tif (data === undefined || data === null) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tif (isArray) {\n\t\t\t\t\treturn data.map((row, index) => {\n\t\t\t\t\t\tif ((typeof row === 'string')) {\n\t\t\t\t\t\t\trow = this.opts.deserialize(row);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (row === undefined || row === null) {\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof row.expires === 'number' && Date.now() > row.expires) {\n\t\t\t\t\t\t\tthis.delete(key[index]).then(() => undefined);\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (options && options.raw) ? row : row.value;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (typeof data.expires === 'number' && Date.now() > data.expires) {\n\t\t\t\t\treturn this.delete(key).then(() => undefined);\n\t\t\t\t}\n\n\t\t\t\treturn (options && options.raw) ? data : data.value;\n\t\t\t});\n\t}\n\n\tset(key, value, ttl) {\n\t\tconst keyPrefixed = this._getKeyPrefix(key);\n\t\tif (typeof ttl === 'undefined') {\n\t\t\tttl = this.opts.ttl;\n\t\t}\n\n\t\tif (ttl === 0) {\n\t\t\tttl = undefined;\n\t\t}\n\n\t\tconst {store} = this.opts;\n\n\t\treturn Promise.resolve()\n\t\t\t.then(() => {\n\t\t\t\tconst expires = (typeof ttl === 'number') ? (Date.now() + ttl) : null;\n\t\t\t\tif (typeof value === 'symbol') {\n\t\t\t\t\tthis.emit('error', 'symbol cannot be serialized');\n\t\t\t\t}\n\n\t\t\t\tvalue = {value, expires};\n\t\t\t\treturn this.opts.serialize(value);\n\t\t\t})\n\t\t\t.then(value => store.set(keyPrefixed, value, ttl))\n\t\t\t.then(() => true);\n\t}\n\n\tdelete(key) {\n\t\tconst {store} = this.opts;\n\t\tif (Array.isArray(key)) {\n\t\t\tconst keyPrefixed = this._getKeyPrefixArray(key);\n\t\t\tif (store.deleteMany === undefined) {\n\t\t\t\tconst promises = [];\n\t\t\t\tfor (const key of keyPrefixed) {\n\t\t\t\t\tpromises.push(store.delete(key));\n\t\t\t\t}\n\n\t\t\t\treturn Promise.allSettled(promises)\n\t\t\t\t\t.then(values => values.every(x => x.value === true));\n\t\t\t}\n\n\t\t\treturn Promise.resolve()\n\t\t\t\t.then(() => store.deleteMany(keyPrefixed));\n\t\t}\n\n\t\tconst keyPrefixed = this._getKeyPrefix(key);\n\t\treturn Promise.resolve()\n\t\t\t.then(() => store.delete(keyPrefixed));\n\t}\n\n\tclear() {\n\t\tconst {store} = this.opts;\n\t\treturn Promise.resolve()\n\t\t\t.then(() => store.clear());\n\t}\n\n\thas(key) {\n\t\tconst keyPrefixed = this._getKeyPrefix(key);\n\t\tconst {store} = this.opts;\n\t\treturn Promise.resolve()\n\t\t\t.then(async () => {\n\t\t\t\tif (typeof store.has === 'function') {\n\t\t\t\t\treturn store.has(keyPrefixed);\n\t\t\t\t}\n\n\t\t\t\tconst value = await store.get(keyPrefixed);\n\t\t\t\treturn value !== undefined;\n\t\t\t});\n\t}\n\n\tdisconnect() {\n\t\tconst {store} = this.opts;\n\t\tif (typeof store.disconnect === 'function') {\n\t\t\treturn store.disconnect();\n\t\t}\n\t}\n}\n\nmodule.exports = Keyv;\n", "'use strict';\n/// <reference types=\"../types/index.d.ts\" />\n\n// (c) 2020-present Andrea Giammarchi\n\nconst {parse: $parse, stringify: $stringify} = JSON;\nconst {keys} = Object;\n\nconst Primitive = String;   // it could be Number\nconst primitive = 'string'; // it could be 'number'\n\nconst ignore = {};\nconst object = 'object';\n\nconst noop = (_, value) => value;\n\nconst primitives = value => (\n  value instanceof Primitive ? Primitive(value) : value\n);\n\nconst Primitives = (_, value) => (\n  typeof value === primitive ? new Primitive(value) : value\n);\n\nconst resolver = (input, lazy, parsed, $) => output => {\n  for (let ke = keys(output), {length} = ke, y = 0; y < length; y++) {\n    const k = ke[y];\n    const value = output[k];\n    if (value instanceof Primitive) {\n      const tmp = input[+value];\n      if (typeof tmp === object && !parsed.has(tmp)) {\n        parsed.add(tmp);\n        output[k] = ignore;\n        lazy.push({ o: output, k, r: tmp });\n      }\n      else\n        output[k] = $.call(output, k, tmp);\n    }\n    else if (output[k] !== ignore)\n      output[k] = $.call(output, k, value);\n  }\n  return output;\n};\n\nconst set = (known, input, value) => {\n  const index = Primitive(input.push(value) - 1);\n  known.set(value, index);\n  return index;\n};\n\n/**\n * Converts a specialized flatted string into a JS value.\n * @param {string} text\n * @param {(this: any, key: string, value: any) => any} [reviver]\n * @returns {any}\n */\nconst parse = (text, reviver) => {\n  const input = $parse(text, Primitives).map(primitives);\n  const $ = reviver || noop;\n\n  let value = input[0];\n\n  if (typeof value === object && value) {\n    const lazy = [];\n    const revive = resolver(input, lazy, new Set, $);\n    value = revive(value);\n\n    let i = 0;\n    while (i < lazy.length) {\n      // it could be a lazy.shift() but that's costly\n      const {o, k, r} = lazy[i++];\n      o[k] = $.call(o, k, revive(r));\n    }\n  }\n\n  return $.call({'': value}, '', value);\n};\nexports.parse = parse;\n\n/**\n * Converts a JS value into a specialized flatted string.\n * @param {any} value\n * @param {((this: any, key: string, value: any) => any) | (string | number)[] | null | undefined} [replacer]\n * @param {string | number | undefined} [space]\n * @returns {string}\n */\nconst stringify = (value, replacer, space) => {\n  const $ = replacer && typeof replacer === object ?\n            (k, v) => (k === '' || -1 < replacer.indexOf(k) ? v : void 0) :\n            (replacer || noop);\n  const known = new Map;\n  const input = [];\n  const output = [];\n  let i = +set(known, input, $.call({'': value}, '', value));\n  let firstRun = !i;\n  while (i < input.length) {\n    firstRun = true;\n    output[i] = $stringify(input[i++], replace, space);\n  }\n  return '[' + output.join(',') + ']';\n  function replace(key, value) {\n    if (firstRun) {\n      firstRun = !firstRun;\n      return value;\n    }\n    const after = $.call(this, key, value);\n    switch (typeof after) {\n      case object:\n        if (after === null) return after;\n      case primitive:\n        return known.get(after) || set(known, input, after);\n    }\n    return after;\n  }\n};\nexports.stringify = stringify;\n\n/**\n * Converts a generic value into a JSON serializable object without losing recursion.\n * @param {any} value\n * @returns {any}\n */\nconst toJSON = value => $parse(stringify(value));\nexports.toJSON = toJSON;\n\n/**\n * Converts a previously serialized object with recursion into a recursive one.\n * @param {any} value\n * @returns {any}\n */\nconst fromJSON = value => parse($stringify(value));\nexports.fromJSON = fromJSON;\n", "const fs = require('fs');\nconst path = require('path');\nconst flatted = require('flatted');\n\nfunction tryParse(filePath, defaultValue) {\n  let result;\n  try {\n    result = readJSON(filePath);\n  } catch (ex) {\n    result = defaultValue;\n  }\n  return result;\n}\n\n/**\n * Read json file synchronously using flatted\n *\n * @param  {String} filePath Json filepath\n * @returns {*} parse result\n */\nfunction readJSON(filePath) {\n  return flatted.parse(\n    fs.readFileSync(filePath, {\n      encoding: 'utf8',\n    })\n  );\n}\n\n/**\n * Write json file synchronously using circular-json\n *\n * @param  {String} filePath Json filepath\n * @param  {*} data Object to serialize\n */\nfunction writeJSON(filePath, data) {\n  fs.mkdirSync(path.dirname(filePath), {\n    recursive: true,\n  });\n  fs.writeFileSync(filePath, flatted.stringify(data));\n}\n\nmodule.exports = { tryParse, readJSON, writeJSON };\n", "const fs = require('fs');\nconst path = require('path');\n\nfunction del(targetPath) {\n  if (!fs.existsSync(targetPath)) {\n    return false;\n  }\n\n  try {\n    if (fs.statSync(targetPath).isDirectory()) {\n      // If it's a directory, delete its contents first\n      fs.readdirSync(targetPath).forEach(file => {\n        const curPath = path.join(targetPath, file);\n\n        if (fs.statSync(curPath).isFile()) {\n          fs.unlinkSync(curPath); // Delete file\n        }\n      });\n      fs.rmdirSync(targetPath); // Delete the now-empty directory\n    } else {\n      fs.unlinkSync(targetPath); // If it's a file, delete it directly\n    }\n\n    return true;\n  } catch (error) {\n    console.error(`Error while deleting ${targetPath}: ${error.message}`);\n  }\n}\n\nmodule.exports = { del };\n", "const path = require('path');\nconst fs = require('fs');\nconst Keyv = require('keyv');\nconst { writeJSON, tryParse } = require('./utils');\nconst { del } = require('./del');\n\nconst cache = {\n  /**\n   * Load a cache identified by the given Id. If the element does not exists, then initialize an empty\n   * cache storage. If specified `cacheDir` will be used as the directory to persist the data to. If omitted\n   * then the cache module directory `./cache` will be used instead\n   *\n   * @method load\n   * @param docId {String} the id of the cache, would also be used as the name of the file cache\n   * @param [cacheDir] {String} directory for the cache entry\n   */\n  load: function (docId, cacheDir) {\n    const me = this;\n    me.keyv = new Keyv();\n\n    me.__visited = {};\n    me.__persisted = {};\n\n    me._pathToFile = cacheDir ? path.resolve(cacheDir, docId) : path.resolve(__dirname, '../.cache/', docId);\n\n    if (fs.existsSync(me._pathToFile)) {\n      me._persisted = tryParse(me._pathToFile, {});\n    }\n  },\n\n  get _persisted() {\n    return this.__persisted;\n  },\n\n  set _persisted(value) {\n    this.__persisted = value;\n  },\n\n  get _visited() {\n    return this.__visited;\n  },\n\n  set _visited(value) {\n    this.__visited = value;\n  },\n\n  /**\n   * Load the cache from the provided file\n   * @method loadFile\n   * @param  {String} pathToFile the path to the file containing the info for the cache\n   */\n  loadFile: function (pathToFile) {\n    const me = this;\n    const dir = path.dirname(pathToFile);\n    const fName = path.basename(pathToFile);\n\n    me.load(fName, dir);\n  },\n\n  /**\n   * Returns the entire persisted object\n   * @method all\n   * @returns {*}\n   */\n  all: function () {\n    return this._persisted;\n  },\n\n  keys: function () {\n    return Object.keys(this._persisted);\n  },\n  /**\n   * sets a key to a given value\n   * @method setKey\n   * @param key {string} the key to set\n   * @param value {object} the value of the key. Could be any object that can be serialized with JSON.stringify\n   */\n  setKey: function (key, value) {\n    this._visited[key] = true;\n    this._persisted[key] = value;\n  },\n  /**\n   * remove a given key from the cache\n   * @method removeKey\n   * @param key {String} the key to remove from the object\n   */\n  removeKey: function (key) {\n    delete this._visited[key]; // esfmt-ignore-line\n    delete this._persisted[key]; // esfmt-ignore-line\n  },\n  /**\n   * Return the value of the provided key\n   * @method getKey\n   * @param key {String} the name of the key to retrieve\n   * @returns {*} the value from the key\n   */\n  getKey: function (key) {\n    this._visited[key] = true;\n    return this._persisted[key];\n  },\n\n  /**\n   * Remove keys that were not accessed/set since the\n   * last time the `prune` method was called.\n   * @method _prune\n   * @private\n   */\n  _prune: function () {\n    const me = this;\n    const obj = {};\n\n    const keys = Object.keys(me._visited);\n\n    // no keys visited for either get or set value\n    if (keys.length === 0) {\n      return;\n    }\n\n    keys.forEach(function (key) {\n      obj[key] = me._persisted[key];\n    });\n\n    me._visited = {};\n    me._persisted = obj;\n  },\n\n  /**\n   * Save the state of the cache identified by the docId to disk\n   * as a JSON structure\n   * @param [noPrune=false] {Boolean} whether to remove from cache the non visited files\n   * @method save\n   */\n  save: function (noPrune) {\n    const me = this;\n    !noPrune && me._prune();\n    writeJSON(me._pathToFile, me._persisted);\n  },\n\n  /**\n   * remove the file where the cache is persisted\n   * @method removeCacheFile\n   * @return {Boolean} true or false if the file was successfully deleted\n   */\n  removeCacheFile: function () {\n    return del(this._pathToFile);\n  },\n  /**\n   * Destroy the file cache and cache content.\n   * @method destroy\n   */\n  destroy: function () {\n    const me = this;\n    me._visited = {};\n    me._persisted = {};\n\n    me.removeCacheFile();\n  },\n};\n\nmodule.exports = {\n  /**\n   * Alias for create. Should be considered depreacted. Will be removed in next releases\n   *\n   * @method load\n   * @param docId {String} the id of the cache, would also be used as the name of the file cache\n   * @param [cacheDir] {String} directory for the cache entry\n   * @returns {cache} cache instance\n   */\n  load: function (docId, cacheDir) {\n    return this.create(docId, cacheDir);\n  },\n\n  /**\n   * Load a cache identified by the given Id. If the element does not exists, then initialize an empty\n   * cache storage.\n   *\n   * @method create\n   * @param docId {String} the id of the cache, would also be used as the name of the file cache\n   * @param [cacheDir] {String} directory for the cache entry\n   * @returns {cache} cache instance\n   */\n  create: function (docId, cacheDir) {\n    const obj = Object.create(cache);\n    obj.load(docId, cacheDir);\n    return obj;\n  },\n\n  createFromFile: function (filePath) {\n    const obj = Object.create(cache);\n    obj.loadFile(filePath);\n    return obj;\n  },\n  /**\n   * Clear the cache identified by the given id. Caches stored in a different cache directory can be deleted directly\n   *\n   * @method clearCache\n   * @param docId {String} the id of the cache, would also be used as the name of the file cache\n   * @param cacheDir {String} the directory where the cache file was written\n   * @returns {Boolean} true if the cache folder was deleted. False otherwise\n   */\n  clearCacheById: function (docId, cacheDir) {\n    const filePath = cacheDir ? path.resolve(cacheDir, docId) : path.resolve(__dirname, '../.cache/', docId);\n    return del(filePath);\n  },\n  /**\n   * Remove all cache stored in the cache directory\n   * @method clearAll\n   * @returns {Boolean} true if the cache folder was deleted. False otherwise\n   */\n  clearAll: function (cacheDir) {\n    const filePath = cacheDir ? path.resolve(cacheDir) : path.resolve(__dirname, '../.cache/');\n    return del(filePath);\n  },\n};\n", "var path = require('path');\nvar crypto = require('crypto');\n\nmodule.exports = {\n  createFromFile: function (filePath, useChecksum) {\n    var fname = path.basename(filePath);\n    var dir = path.dirname(filePath);\n    return this.create(fname, dir, useChecksum);\n  },\n\n  create: function (cacheId, _path, useChecksum) {\n    var fs = require('fs');\n    var flatCache = require('flat-cache');\n    var cache = flatCache.load(cacheId, _path);\n    var normalizedEntries = {};\n\n    var removeNotFoundFiles = function removeNotFoundFiles() {\n      const cachedEntries = cache.keys();\n      // remove not found entries\n      cachedEntries.forEach(function remover(fPath) {\n        try {\n          fs.statSync(fPath);\n        } catch (err) {\n          if (err.code === 'ENOENT') {\n            cache.removeKey(fPath);\n          }\n        }\n      });\n    };\n\n    removeNotFoundFiles();\n\n    return {\n      /**\n       * the flat cache storage used to persist the metadata of the `files\n       * @type {Object}\n       */\n      cache: cache,\n\n      /**\n       * Given a buffer, calculate md5 hash of its content.\n       * @method getHash\n       * @param  {Buffer} buffer   buffer to calculate hash on\n       * @return {String}          content hash digest\n       */\n      getHash: function (buffer) {\n        return crypto.createHash('md5').update(buffer).digest('hex');\n      },\n\n      /**\n       * Return whether or not a file has changed since last time reconcile was called.\n       * @method hasFileChanged\n       * @param  {String}  file  the filepath to check\n       * @return {Boolean}       wheter or not the file has changed\n       */\n      hasFileChanged: function (file) {\n        return this.getFileDescriptor(file).changed;\n      },\n\n      /**\n       * given an array of file paths it return and object with three arrays:\n       *  - changedFiles: Files that changed since previous run\n       *  - notChangedFiles: Files that haven't change\n       *  - notFoundFiles: Files that were not found, probably deleted\n       *\n       * @param  {Array} files the files to analyze and compare to the previous seen files\n       * @return {[type]}       [description]\n       */\n      analyzeFiles: function (files) {\n        var me = this;\n        files = files || [];\n\n        var res = {\n          changedFiles: [],\n          notFoundFiles: [],\n          notChangedFiles: [],\n        };\n\n        me.normalizeEntries(files).forEach(function (entry) {\n          if (entry.changed) {\n            res.changedFiles.push(entry.key);\n            return;\n          }\n          if (entry.notFound) {\n            res.notFoundFiles.push(entry.key);\n            return;\n          }\n          res.notChangedFiles.push(entry.key);\n        });\n        return res;\n      },\n\n      getFileDescriptor: function (file) {\n        var fstat;\n\n        try {\n          fstat = fs.statSync(file);\n        } catch (ex) {\n          this.removeEntry(file);\n          return { key: file, notFound: true, err: ex };\n        }\n\n        if (useChecksum) {\n          return this._getFileDescriptorUsingChecksum(file);\n        }\n\n        return this._getFileDescriptorUsingMtimeAndSize(file, fstat);\n      },\n\n      _getFileDescriptorUsingMtimeAndSize: function (file, fstat) {\n        var meta = cache.getKey(file);\n        var cacheExists = !!meta;\n\n        var cSize = fstat.size;\n        var cTime = fstat.mtime.getTime();\n\n        var isDifferentDate;\n        var isDifferentSize;\n\n        if (!meta) {\n          meta = { size: cSize, mtime: cTime };\n        } else {\n          isDifferentDate = cTime !== meta.mtime;\n          isDifferentSize = cSize !== meta.size;\n        }\n\n        var nEntry = (normalizedEntries[file] = {\n          key: file,\n          changed: !cacheExists || isDifferentDate || isDifferentSize,\n          meta: meta,\n        });\n\n        return nEntry;\n      },\n\n      _getFileDescriptorUsingChecksum: function (file) {\n        var meta = cache.getKey(file);\n        var cacheExists = !!meta;\n\n        var contentBuffer;\n        try {\n          contentBuffer = fs.readFileSync(file);\n        } catch (ex) {\n          contentBuffer = '';\n        }\n\n        var isDifferent = true;\n        var hash = this.getHash(contentBuffer);\n\n        if (!meta) {\n          meta = { hash: hash };\n        } else {\n          isDifferent = hash !== meta.hash;\n        }\n\n        var nEntry = (normalizedEntries[file] = {\n          key: file,\n          changed: !cacheExists || isDifferent,\n          meta: meta,\n        });\n\n        return nEntry;\n      },\n\n      /**\n       * Return the list o the files that changed compared\n       * against the ones stored in the cache\n       *\n       * @method getUpdated\n       * @param files {Array} the array of files to compare against the ones in the cache\n       * @returns {Array}\n       */\n      getUpdatedFiles: function (files) {\n        var me = this;\n        files = files || [];\n\n        return me\n          .normalizeEntries(files)\n          .filter(function (entry) {\n            return entry.changed;\n          })\n          .map(function (entry) {\n            return entry.key;\n          });\n      },\n\n      /**\n       * return the list of files\n       * @method normalizeEntries\n       * @param files\n       * @returns {*}\n       */\n      normalizeEntries: function (files) {\n        files = files || [];\n\n        var me = this;\n        var nEntries = files.map(function (file) {\n          return me.getFileDescriptor(file);\n        });\n\n        //normalizeEntries = nEntries;\n        return nEntries;\n      },\n\n      /**\n       * Remove an entry from the file-entry-cache. Useful to force the file to still be considered\n       * modified the next time the process is run\n       *\n       * @method removeEntry\n       * @param entryName\n       */\n      removeEntry: function (entryName) {\n        delete normalizedEntries[entryName];\n        cache.removeKey(entryName);\n      },\n\n      /**\n       * Delete the cache file from the disk\n       * @method deleteCacheFile\n       */\n      deleteCacheFile: function () {\n        cache.removeCacheFile();\n      },\n\n      /**\n       * remove the cache from the file and clear the memory cache\n       */\n      destroy: function () {\n        normalizedEntries = {};\n        cache.destroy();\n      },\n\n      _getMetaForFileUsingCheckSum: function (cacheEntry) {\n        var contentBuffer = fs.readFileSync(cacheEntry.key);\n        var hash = this.getHash(contentBuffer);\n        var meta = Object.assign(cacheEntry.meta, { hash: hash });\n        delete meta.size;\n        delete meta.mtime;\n        return meta;\n      },\n\n      _getMetaForFileUsingMtimeAndSize: function (cacheEntry) {\n        var stat = fs.statSync(cacheEntry.key);\n        var meta = Object.assign(cacheEntry.meta, {\n          size: stat.size,\n          mtime: stat.mtime.getTime(),\n        });\n        delete meta.hash;\n        return meta;\n      },\n\n      /**\n       * Sync the files and persist them to the cache\n       * @method reconcile\n       */\n      reconcile: function (noPrune) {\n        removeNotFoundFiles();\n\n        noPrune = typeof noPrune === 'undefined' ? true : noPrune;\n\n        var entries = normalizedEntries;\n        var keys = Object.keys(entries);\n\n        if (keys.length === 0) {\n          return;\n        }\n\n        var me = this;\n\n        keys.forEach(function (entryName) {\n          var cacheEntry = entries[entryName];\n\n          try {\n            var meta = useChecksum\n              ? me._getMetaForFileUsingCheckSum(cacheEntry)\n              : me._getMetaForFileUsingMtimeAndSize(cacheEntry);\n            cache.setKey(entryName, meta);\n          } catch (err) {\n            // if the file does not exists we don't save it\n            // other errors are just thrown\n            if (err.code !== 'ENOENT') {\n              throw err;\n            }\n          }\n        });\n\n        cache.save(noPrune);\n      },\n    };\n  },\n};\n", "module.exports = function (obj, opts) {\n    if (!opts) opts = {};\n    if (typeof opts === 'function') opts = { cmp: opts };\n    var space = opts.space || '';\n    if (typeof space === 'number') space = Array(space+1).join(' ');\n    var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n    var replacer = opts.replacer || function(key, value) { return value; };\n\n    var cmp = opts.cmp && (function (f) {\n        return function (node) {\n            return function (a, b) {\n                var aobj = { key: a, value: node[a] };\n                var bobj = { key: b, value: node[b] };\n                return f(aobj, bobj);\n            };\n        };\n    })(opts.cmp);\n\n    var seen = [];\n    return (function stringify (parent, key, node, level) {\n        var indent = space ? ('\\n' + new Array(level + 1).join(space)) : '';\n        var colonSeparator = space ? ': ' : ':';\n\n        if (node && node.toJSON && typeof node.toJSON === 'function') {\n            node = node.toJSON();\n        }\n\n        node = replacer.call(parent, key, node);\n\n        if (node === undefined) {\n            return;\n        }\n        if (typeof node !== 'object' || node === null) {\n            return JSON.stringify(node);\n        }\n        if (isArray(node)) {\n            var out = [];\n            for (var i = 0; i < node.length; i++) {\n                var item = stringify(node, i, node[i], level+1) || JSON.stringify(null);\n                out.push(indent + space + item);\n            }\n            return '[' + out.join(',') + indent + ']';\n        }\n        else {\n            if (seen.indexOf(node) !== -1) {\n                if (cycles) return JSON.stringify('__cycle__');\n                throw new TypeError('Converting circular structure to JSON');\n            }\n            else seen.push(node);\n\n            var keys = objectKeys(node).sort(cmp && cmp(node));\n            var out = [];\n            for (var i = 0; i < keys.length; i++) {\n                var key = keys[i];\n                var value = stringify(node, key, node[key], level+1);\n\n                if(!value) continue;\n\n                var keyValue = JSON.stringify(key)\n                    + colonSeparator\n                    + value;\n                ;\n                out.push(indent + space + keyValue);\n            }\n            seen.splice(seen.indexOf(node), 1);\n            return '{' + out.join(',') + indent + '}';\n        }\n    })({ '': obj }, '', obj, 0);\n};\n\nvar isArray = Array.isArray || function (x) {\n    return {}.toString.call(x) === '[object Array]';\n};\n\nvar objectKeys = Object.keys || function (obj) {\n    var has = Object.prototype.hasOwnProperty || function () { return true };\n    var keys = [];\n    for (var key in obj) {\n        if (has.call(obj, key)) keys.push(key);\n    }\n    return keys;\n};\n", "/**\n * @fileoverview Utility for caching lint results.\n * @author Kevin Partington\n */\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Requirements\n//-----------------------------------------------------------------------------\n\nconst fs = require(\"node:fs\");\nconst fileEntryCache = require(\"file-entry-cache\");\nconst stringify = require(\"json-stable-stringify-without-jsonify\");\nconst pkg = require(\"../../package.json\");\nconst assert = require(\"../shared/assert\");\nconst hash = require(\"./hash\");\n\nconst debug = require(\"debug\")(\"eslint:lint-result-cache\");\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n/** @typedef {import(\"../types\").Linter.Config} Config */\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\nconst configHashCache = new WeakMap();\nconst nodeVersion = process && process.version;\n\nconst validCacheStrategies = [\"metadata\", \"content\"];\nconst invalidCacheStrategyErrorMessage = `Cache strategy must be one of: ${validCacheStrategies\n\t.map(strategy => `\"${strategy}\"`)\n\t.join(\", \")}`;\n\n/**\n * Tests whether a provided cacheStrategy is valid\n * @param {string} cacheStrategy The cache strategy to use\n * @returns {boolean} true if `cacheStrategy` is one of `validCacheStrategies`; false otherwise\n */\nfunction isValidCacheStrategy(cacheStrategy) {\n\treturn validCacheStrategies.includes(cacheStrategy);\n}\n\n/**\n * Calculates the hash of the config\n * @param {Config} config The config.\n * @returns {string} The hash of the config\n */\nfunction hashOfConfigFor(config) {\n\tif (!configHashCache.has(config)) {\n\t\tconfigHashCache.set(\n\t\t\tconfig,\n\t\t\thash(`${pkg.version}_${nodeVersion}_${stringify(config)}`),\n\t\t);\n\t}\n\n\treturn configHashCache.get(config);\n}\n\n//-----------------------------------------------------------------------------\n// Public Interface\n//-----------------------------------------------------------------------------\n\n/**\n * Lint result cache. This wraps around the file-entry-cache module,\n * transparently removing properties that are difficult or expensive to\n * serialize and adding them back in on retrieval.\n */\nclass LintResultCache {\n\t/**\n\t * Creates a new LintResultCache instance.\n\t * @param {string} cacheFileLocation The cache file location.\n\t * @param {\"metadata\" | \"content\"} cacheStrategy The cache strategy to use.\n\t */\n\tconstructor(cacheFileLocation, cacheStrategy) {\n\t\tassert(cacheFileLocation, \"Cache file location is required\");\n\t\tassert(cacheStrategy, \"Cache strategy is required\");\n\t\tassert(\n\t\t\tisValidCacheStrategy(cacheStrategy),\n\t\t\tinvalidCacheStrategyErrorMessage,\n\t\t);\n\n\t\tdebug(`Caching results to ${cacheFileLocation}`);\n\n\t\tconst useChecksum = cacheStrategy === \"content\";\n\n\t\tdebug(`Using \"${cacheStrategy}\" strategy to detect changes`);\n\n\t\tthis.fileEntryCache = fileEntryCache.create(\n\t\t\tcacheFileLocation,\n\t\t\tvoid 0,\n\t\t\tuseChecksum,\n\t\t);\n\t\tthis.cacheFileLocation = cacheFileLocation;\n\t}\n\n\t/**\n\t * Retrieve cached lint results for a given file path, if present in the\n\t * cache. If the file is present and has not been changed, rebuild any\n\t * missing result information.\n\t * @param {string} filePath The file for which to retrieve lint results.\n\t * @param {Config} config The config of the file.\n\t * @returns {Object|null} The rebuilt lint results, or null if the file is\n\t *   changed or not in the filesystem.\n\t */\n\tgetCachedLintResults(filePath, config) {\n\t\tconst cachedResults = this.getValidCachedLintResults(filePath, config);\n\n\t\tif (!cachedResults) {\n\t\t\treturn cachedResults;\n\t\t}\n\n\t\t/*\n\t\t * Shallow clone the object to ensure that any properties added or modified afterwards\n\t\t * will not be accidentally stored in the cache file when `reconcile()` is called.\n\t\t * https://github.com/eslint/eslint/issues/13507\n\t\t * All intentional changes to the cache file must be done through `setCachedLintResults()`.\n\t\t */\n\t\tconst results = { ...cachedResults };\n\n\t\t// If source is present but null, need to reread the file from the filesystem.\n\t\tif (results.source === null) {\n\t\t\tdebug(\n\t\t\t\t`Rereading cached result source from filesystem: ${filePath}`,\n\t\t\t);\n\t\t\tresults.source = fs.readFileSync(filePath, \"utf-8\");\n\t\t}\n\n\t\treturn results;\n\t}\n\n\t/**\n\t * Retrieve cached lint results for a given file path, if present in the\n\t * cache and still valid.\n\t * @param {string} filePath The file for which to retrieve lint results.\n\t * @param {Config} config The config of the file.\n\t * @returns {Object|null} The cached lint results if present in the cache\n\t * and still valid; null otherwise.\n\t */\n\tgetValidCachedLintResults(filePath, config) {\n\t\t/*\n\t\t * Cached lint results are valid if and only if:\n\t\t * 1. The file is present in the filesystem\n\t\t * 2. The file has not changed since the time it was previously linted\n\t\t * 3. The ESLint configuration has not changed since the time the file\n\t\t *    was previously linted\n\t\t * If any of these are not true, we will not reuse the lint results.\n\t\t */\n\t\tconst fileDescriptor = this.fileEntryCache.getFileDescriptor(filePath);\n\n\t\tif (fileDescriptor.notFound) {\n\t\t\tdebug(`File not found on the file system: ${filePath}`);\n\t\t\treturn null;\n\t\t}\n\n\t\tconst hashOfConfig = hashOfConfigFor(config);\n\t\tconst changed =\n\t\t\tfileDescriptor.changed ||\n\t\t\tfileDescriptor.meta.hashOfConfig !== hashOfConfig;\n\n\t\tif (changed) {\n\t\t\tdebug(`Cache entry not found or no longer valid: ${filePath}`);\n\t\t\treturn null;\n\t\t}\n\n\t\treturn fileDescriptor.meta.results;\n\t}\n\n\t/**\n\t * Set the cached lint results for a given file path, after removing any\n\t * information that will be both unnecessary and difficult to serialize.\n\t * Avoids caching results with an \"output\" property (meaning fixes were\n\t * applied), to prevent potentially incorrect results if fixes are not\n\t * written to disk.\n\t * @param {string} filePath The file for which to set lint results.\n\t * @param {Config} config The config of the file.\n\t * @param {Object} result The lint result to be set for the file.\n\t * @returns {void}\n\t */\n\tsetCachedLintResults(filePath, config, result) {\n\t\tif (result && Object.hasOwn(result, \"output\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst fileDescriptor = this.fileEntryCache.getFileDescriptor(filePath);\n\n\t\tif (fileDescriptor && !fileDescriptor.notFound) {\n\t\t\tdebug(`Updating cached result: ${filePath}`);\n\n\t\t\t// Serialize the result, except that we want to remove the file source if present.\n\t\t\tconst resultToSerialize = Object.assign({}, result);\n\n\t\t\t/*\n\t\t\t * Set result.source to null.\n\t\t\t * In `getCachedLintResults`, if source is explicitly null, we will\n\t\t\t * read the file from the filesystem to set the value again.\n\t\t\t */\n\t\t\tif (Object.hasOwn(resultToSerialize, \"source\")) {\n\t\t\t\tresultToSerialize.source = null;\n\t\t\t}\n\n\t\t\tfileDescriptor.meta.results = resultToSerialize;\n\t\t\tfileDescriptor.meta.hashOfConfig = hashOfConfigFor(config);\n\t\t}\n\t}\n\n\t/**\n\t * Persists the in-memory cache to disk.\n\t * @returns {void}\n\t */\n\treconcile() {\n\t\tdebug(`Persisting cached results: ${this.cacheFileLocation}`);\n\t\tthis.fileEntryCache.reconcile();\n\t}\n}\n\nmodule.exports = LintResultCache;\n", "class Node {\n\t/// value;\n\t/// next;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\n\t\t// TODO: Remove this when targeting Node.js 12.\n\t\tthis.next = undefined;\n\t}\n}\n\nclass Queue {\n\t// TODO: Use private class fields when targeting Node.js 12.\n\t// #_head;\n\t// #_tail;\n\t// #_size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this._head) {\n\t\t\tthis._tail.next = node;\n\t\t\tthis._tail = node;\n\t\t} else {\n\t\t\tthis._head = node;\n\t\t\tthis._tail = node;\n\t\t}\n\n\t\tthis._size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this._head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._head = this._head.next;\n\t\tthis._size--;\n\t\treturn current.value;\n\t}\n\n\tclear() {\n\t\tthis._head = undefined;\n\t\tthis._tail = undefined;\n\t\tthis._size = 0;\n\t}\n\n\tget size() {\n\t\treturn this._size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this._head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n}\n\nmodule.exports = Queue;\n", "'use strict';\nconst Queue = require('yocto-queue');\n\nconst pLimit = concurrency => {\n\tif (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.size > 0) {\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst run = async (fn, resolve, ...args) => {\n\t\tactiveCount++;\n\n\t\tconst result = (async () => fn(...args))();\n\n\t\tresolve(result);\n\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\tnext();\n\t};\n\n\tconst enqueue = (fn, resolve, ...args) => {\n\t\tqueue.enqueue(run.bind(null, fn, resolve, ...args));\n\n\t\t(async () => {\n\t\t\t// This function needs to wait until the next microtask before comparing\n\t\t\t// `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n\t\t\t// when the run function is dequeued and called. The comparison in the if-statement\n\t\t\t// needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\t\tqueue.dequeue()();\n\t\t\t}\n\t\t})();\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => {\n\t\tenqueue(fn, resolve, ...args);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.clear();\n\t\t\t}\n\t\t}\n\t});\n\n\treturn generator;\n};\n\nmodule.exports = pLimit;\n", "'use strict';\nconst pLimit = require('p-limit');\n\nclass EndError extends Error {\n\tconstructor(value) {\n\t\tsuper();\n\t\tthis.value = value;\n\t}\n}\n\n// The input can also be a promise, so we await it\nconst testElement = async (element, tester) => tester(await element);\n\n// The input can also be a promise, so we `Promise.all()` them both\nconst finder = async element => {\n\tconst values = await Promise.all(element);\n\tif (values[1] === true) {\n\t\tthrow new EndError(values[0]);\n\t}\n\n\treturn false;\n};\n\nconst pLocate = async (iterable, tester, options) => {\n\toptions = {\n\t\tconcurrency: Infinity,\n\t\tpreserveOrder: true,\n\t\t...options\n\t};\n\n\tconst limit = pLimit(options.concurrency);\n\n\t// Start all the promises concurrently with optional limit\n\tconst items = [...iterable].map(element => [element, limit(testElement, element, tester)]);\n\n\t// Check the promises either serially or concurrently\n\tconst checkLimit = pLimit(options.preserveOrder ? 1 : Infinity);\n\n\ttry {\n\t\tawait Promise.all(items.map(element => checkLimit(finder, element)));\n\t} catch (error) {\n\t\tif (error instanceof EndError) {\n\t\t\treturn error.value;\n\t\t}\n\n\t\tthrow error;\n\t}\n};\n\nmodule.exports = pLocate;\n", "'use strict';\nconst path = require('path');\nconst fs = require('fs');\nconst {promisify} = require('util');\nconst pLocate = require('p-locate');\n\nconst fsStat = promisify(fs.stat);\nconst fsLStat = promisify(fs.lstat);\n\nconst typeMappings = {\n\tdirectory: 'isDirectory',\n\tfile: 'isFile'\n};\n\nfunction checkType({type}) {\n\tif (type in typeMappings) {\n\t\treturn;\n\t}\n\n\tthrow new Error(`Invalid type specified: ${type}`);\n}\n\nconst matchType = (type, stat) => type === undefined || stat[typeMappings[type]]();\n\nmodule.exports = async (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\ttype: 'file',\n\t\tallowSymlinks: true,\n\t\t...options\n\t};\n\n\tcheckType(options);\n\n\tconst statFn = options.allowSymlinks ? fsStat : fsLStat;\n\n\treturn pLocate(paths, async path_ => {\n\t\ttry {\n\t\t\tconst stat = await statFn(path.resolve(options.cwd, path_));\n\t\t\treturn matchType(options.type, stat);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}, options);\n};\n\nmodule.exports.sync = (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tallowSymlinks: true,\n\t\ttype: 'file',\n\t\t...options\n\t};\n\n\tcheckType(options);\n\n\tconst statFn = options.allowSymlinks ? fs.statSync : fs.lstatSync;\n\n\tfor (const path_ of paths) {\n\t\ttry {\n\t\t\tconst stat = statFn(path.resolve(options.cwd, path_));\n\n\t\t\tif (matchType(options.type, stat)) {\n\t\t\t\treturn path_;\n\t\t\t}\n\t\t} catch {}\n\t}\n};\n", "'use strict';\nconst fs = require('fs');\nconst {promisify} = require('util');\n\nconst pAccess = promisify(fs.access);\n\nmodule.exports = async path => {\n\ttry {\n\t\tawait pAccess(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n\nmodule.exports.sync = path => {\n\ttry {\n\t\tfs.accessSync(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n", "'use strict';\nconst path = require('path');\nconst locatePath = require('locate-path');\nconst pathExists = require('path-exists');\n\nconst stop = Symbol('findUp.stop');\n\nmodule.exports = async (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = async locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = await name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst foundPath = await runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.sync = (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath.sync(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath.sync([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst foundPath = runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.exists = pathExists;\n\nmodule.exports.sync.exists = pathExists.sync;\n\nmodule.exports.stop = stop;\n", "(()=>{var e={\"./node_modules/.pnpm/mlly@1.8.2/node_modules/mlly/dist lazy recursive\"(e){function webpackEmptyAsyncContext(e){return Promise.resolve().then(function(){var t=new Error(\"Cannot find module '\"+e+\"'\");throw t.code=\"MODULE_NOT_FOUND\",t})}webpackEmptyAsyncContext.keys=()=>[],webpackEmptyAsyncContext.resolve=webpackEmptyAsyncContext,webpackEmptyAsyncContext.id=\"./node_modules/.pnpm/mlly@1.8.2/node_modules/mlly/dist lazy recursive\",e.exports=webpackEmptyAsyncContext},fs(e){\"use strict\";e.exports=require(\"fs\")},\"node:fs\"(e){\"use strict\";e.exports=require(\"node:fs\")},\"node:module\"(e){\"use strict\";e.exports=require(\"node:module\")},\"node:path\"(e){\"use strict\";e.exports=require(\"node:path\")},os(e){\"use strict\";e.exports=require(\"os\")},path(e){\"use strict\";e.exports=require(\"path\")},\"./node_modules/.pnpm/get-tsconfig@4.14.0/node_modules/get-tsconfig/dist/index.cjs\"(e,t,i){\"use strict\";var n=Object.defineProperty,r=(e,t)=>n(e,\"name\",{value:t,configurable:!0}),a=i(\"node:path\"),c=i(\"node:fs\"),l=i(\"node:module\"),y=i(\"./node_modules/.pnpm/resolve-pkg-maps@1.0.0/node_modules/resolve-pkg-maps/dist/index.cjs\"),E=i(\"fs\"),w=i(\"os\"),C=i(\"path\");function h(e){return e.startsWith(\"\\\\\\\\?\\\\\")?e:e.replace(/\\\\/g,\"/\")}r(h,\"slash\");const S=r(e=>{const t=c[e];return(i,...n)=>{const a=`${e}:${n.join(\":\")}`;let l=null==i?void 0:i.get(a);return void 0===l&&(l=Reflect.apply(t,c,n),null==i||i.set(a,l)),l}},\"cacheFs\"),I=S(\"existsSync\"),N=S(\"readFileSync\"),O=S(\"statSync\"),j=r((e,t,i)=>{for(;;){const n=a.posix.join(e,t);if(I(i,n))return n;const c=a.dirname(e);if(c===e)return;e=c}},\"findUp\"),F=/^\\.{1,2}(\\/.*)?$/,B=r(e=>{const t=h(e);return F.test(t)?t:`./${t}`},\"normalizeRelativePath\");function Ne(e,t=!1){const i=e.length;let n=0,a=\"\",c=0,l=16,y=0,E=0,w=0,C=0,S=0;function _(t,i){let a=0,c=0;for(;a<t;){let t=e.charCodeAt(n);if(t>=48&&t<=57)c=16*c+t-48;else if(t>=65&&t<=70)c=16*c+t-65+10;else{if(!(t>=97&&t<=102))break;c=16*c+t-97+10}n++,a++}return a<t&&(c=-1),c}function b(e){n=e,a=\"\",c=0,l=16,S=0}function p(){let t=n;if(48===e.charCodeAt(n))n++;else for(n++;n<e.length&&R(e.charCodeAt(n));)n++;if(n<e.length&&46===e.charCodeAt(n)){if(n++,!(n<e.length&&R(e.charCodeAt(n))))return S=3,e.substring(t,n);for(n++;n<e.length&&R(e.charCodeAt(n));)n++}let i=n;if(n<e.length&&(69===e.charCodeAt(n)||101===e.charCodeAt(n)))if(n++,(n<e.length&&43===e.charCodeAt(n)||45===e.charCodeAt(n))&&n++,n<e.length&&R(e.charCodeAt(n))){for(n++;n<e.length&&R(e.charCodeAt(n));)n++;i=n}else S=3;return e.substring(t,i)}function L(){let t=\"\",a=n;for(;;){if(n>=i){t+=e.substring(a,n),S=2;break}const c=e.charCodeAt(n);if(34===c){t+=e.substring(a,n),n++;break}if(92!==c){if(c>=0&&c<=31){if(M(c)){t+=e.substring(a,n),S=2;break}S=6}n++}else{if(t+=e.substring(a,n),n++,n>=i){S=2;break}switch(e.charCodeAt(n++)){case 34:t+='\"';break;case 92:t+=\"\\\\\";break;case 47:t+=\"/\";break;case 98:t+=\"\\b\";break;case 102:t+=\"\\f\";break;case 110:t+=\"\\n\";break;case 114:t+=\"\\r\";break;case 116:t+=\"\\t\";break;case 117:const e=_(4);e>=0?t+=String.fromCharCode(e):S=4;break;default:S=5}a=n}}return t}function A(){if(a=\"\",S=0,c=n,E=y,C=w,n>=i)return c=i,l=17;let t=e.charCodeAt(n);if(ee(t)){do{n++,a+=String.fromCharCode(t),t=e.charCodeAt(n)}while(ee(t));return l=15}if(M(t))return n++,a+=String.fromCharCode(t),13===t&&10===e.charCodeAt(n)&&(n++,a+=\"\\n\"),y++,w=n,l=14;switch(t){case 123:return n++,l=1;case 125:return n++,l=2;case 91:return n++,l=3;case 93:return n++,l=4;case 58:return n++,l=6;case 44:return n++,l=5;case 34:return n++,a=L(),l=10;case 47:const E=n-1;if(47===e.charCodeAt(n+1)){for(n+=2;n<i&&!M(e.charCodeAt(n));)n++;return a=e.substring(E,n),l=12}if(42===e.charCodeAt(n+1)){n+=2;const t=i-1;let c=!1;for(;n<t;){const t=e.charCodeAt(n);if(42===t&&47===e.charCodeAt(n+1)){n+=2,c=!0;break}n++,M(t)&&(13===t&&10===e.charCodeAt(n)&&n++,y++,w=n)}return c||(n++,S=1),a=e.substring(E,n),l=13}return a+=String.fromCharCode(t),n++,l=16;case 45:if(a+=String.fromCharCode(t),n++,n===i||!R(e.charCodeAt(n)))return l=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return a+=p(),l=11;default:for(;n<i&&D(t);)n++,t=e.charCodeAt(n);if(c!==n){switch(a=e.substring(c,n),a){case\"true\":return l=8;case\"false\":return l=9;case\"null\":return l=7}return l=16}return a+=String.fromCharCode(t),n++,l=16}}function D(e){if(ee(e)||M(e))return!1;switch(e){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}function x(){let e;do{e=A()}while(e>=12&&e<=15);return e}return r(_,\"scanHexDigits\"),r(b,\"setPosition\"),r(p,\"scanNumber\"),r(L,\"scanString\"),r(A,\"scanNext\"),r(D,\"isUnknownContentCharacter\"),r(x,\"scanNextNonTrivia\"),{setPosition:b,getPosition:r(()=>n,\"getPosition\"),scan:t?x:A,getToken:r(()=>l,\"getToken\"),getTokenValue:r(()=>a,\"getTokenValue\"),getTokenOffset:r(()=>c,\"getTokenOffset\"),getTokenLength:r(()=>n-c,\"getTokenLength\"),getTokenStartLine:r(()=>E,\"getTokenStartLine\"),getTokenStartCharacter:r(()=>c-C,\"getTokenStartCharacter\"),getTokenError:r(()=>S,\"getTokenError\")}}function ee(e){return 32===e||9===e}function M(e){return 10===e||13===e}function R(e){return e>=48&&e<=57}var $,q;r(Ne,\"createScanner\"),r(ee,\"isWhiteSpace\"),r(M,\"isLineBreak\"),r(R,\"isDigit\"),(q=$||($={}))[q.lineFeed=10]=\"lineFeed\",q[q.carriageReturn=13]=\"carriageReturn\",q[q.space=32]=\"space\",q[q._0=48]=\"_0\",q[q._1=49]=\"_1\",q[q._2=50]=\"_2\",q[q._3=51]=\"_3\",q[q._4=52]=\"_4\",q[q._5=53]=\"_5\",q[q._6=54]=\"_6\",q[q._7=55]=\"_7\",q[q._8=56]=\"_8\",q[q._9=57]=\"_9\",q[q.a=97]=\"a\",q[q.b=98]=\"b\",q[q.c=99]=\"c\",q[q.d=100]=\"d\",q[q.e=101]=\"e\",q[q.f=102]=\"f\",q[q.g=103]=\"g\",q[q.h=104]=\"h\",q[q.i=105]=\"i\",q[q.j=106]=\"j\",q[q.k=107]=\"k\",q[q.l=108]=\"l\",q[q.m=109]=\"m\",q[q.n=110]=\"n\",q[q.o=111]=\"o\",q[q.p=112]=\"p\",q[q.q=113]=\"q\",q[q.r=114]=\"r\",q[q.s=115]=\"s\",q[q.t=116]=\"t\",q[q.u=117]=\"u\",q[q.v=118]=\"v\",q[q.w=119]=\"w\",q[q.x=120]=\"x\",q[q.y=121]=\"y\",q[q.z=122]=\"z\",q[q.A=65]=\"A\",q[q.B=66]=\"B\",q[q.C=67]=\"C\",q[q.D=68]=\"D\",q[q.E=69]=\"E\",q[q.F=70]=\"F\",q[q.G=71]=\"G\",q[q.H=72]=\"H\",q[q.I=73]=\"I\",q[q.J=74]=\"J\",q[q.K=75]=\"K\",q[q.L=76]=\"L\",q[q.M=77]=\"M\",q[q.N=78]=\"N\",q[q.O=79]=\"O\",q[q.P=80]=\"P\",q[q.Q=81]=\"Q\",q[q.R=82]=\"R\",q[q.S=83]=\"S\",q[q.T=84]=\"T\",q[q.U=85]=\"U\",q[q.V=86]=\"V\",q[q.W=87]=\"W\",q[q.X=88]=\"X\",q[q.Y=89]=\"Y\",q[q.Z=90]=\"Z\",q[q.asterisk=42]=\"asterisk\",q[q.backslash=92]=\"backslash\",q[q.closeBrace=125]=\"closeBrace\",q[q.closeBracket=93]=\"closeBracket\",q[q.colon=58]=\"colon\",q[q.comma=44]=\"comma\",q[q.dot=46]=\"dot\",q[q.doubleQuote=34]=\"doubleQuote\",q[q.minus=45]=\"minus\",q[q.openBrace=123]=\"openBrace\",q[q.openBracket=91]=\"openBracket\",q[q.plus=43]=\"plus\",q[q.slash=47]=\"slash\",q[q.formFeed=12]=\"formFeed\",q[q.tab=9]=\"tab\",new Array(20).fill(0).map((e,t)=>\" \".repeat(t));const W=200;var K,H,Y;function Pe(e,t=[],i=K.DEFAULT){let n=null,a=[];const c=[];function o(e){Array.isArray(a)?a.push(e):null!==n&&(a[n]=e)}return r(o,\"onValue\"),We(e,{onObjectBegin:r(()=>{const e={};o(e),c.push(a),a=e,n=null},\"onObjectBegin\"),onObjectProperty:r(e=>{n=e},\"onObjectProperty\"),onObjectEnd:r(()=>{a=c.pop()},\"onObjectEnd\"),onArrayBegin:r(()=>{const e=[];o(e),c.push(a),a=e,n=null},\"onArrayBegin\"),onArrayEnd:r(()=>{a=c.pop()},\"onArrayEnd\"),onLiteralValue:o,onError:r((e,i,n)=>{t.push({error:e,offset:i,length:n})},\"onError\")},i),a[0]}function We(e,t,i=K.DEFAULT){const n=Ne(e,!1),a=[];let c=0;function o(e){return e?()=>0===c&&e(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function f(e){return e?t=>0===c&&e(t,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function u(e){return e?t=>0===c&&e(t,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>a.slice()):()=>!0}function g(e){return e?()=>{c>0?c++:!1===e(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>a.slice())&&(c=1)}:()=>!0}function m(e){return e?()=>{c>0&&c--,0===c&&e(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter())}:()=>!0}r(o,\"toNoArgVisit\"),r(f,\"toOneArgVisit\"),r(u,\"toOneArgVisitWithPath\"),r(g,\"toBeginVisit\"),r(m,\"toEndVisit\");const l=g(t.onObjectBegin),y=u(t.onObjectProperty),E=m(t.onObjectEnd),w=g(t.onArrayBegin),C=m(t.onArrayEnd),S=u(t.onLiteralValue),I=f(t.onSeparator),N=o(t.onComment),O=f(t.onError),j=i&&i.disallowComments,F=i&&i.allowTrailingComma;function T(){for(;;){const e=n.scan();switch(n.getTokenError()){case 4:k(14);break;case 5:k(15);break;case 3:k(13);break;case 1:j||k(11);break;case 2:k(12);break;case 6:k(16)}switch(e){case 12:case 13:j?k(10):N();break;case 16:k(1);break;case 15:case 14:break;default:return e}}}function k(e,t=[],i=[]){if(O(e),t.length+i.length>0){let e=n.getToken();for(;17!==e;){if(-1!==t.indexOf(e)){T();break}if(-1!==i.indexOf(e))break;e=T()}}}function P(e){const t=n.getTokenValue();return e?S(t):(y(t),a.push(t)),T(),!0}function J(){switch(n.getToken()){case 11:const e=n.getTokenValue();let t=Number(e);isNaN(t)&&(k(2),t=0),S(t);break;case 7:S(null);break;case 8:S(!0);break;case 9:S(!1);break;default:return!1}return T(),!0}function V(){return 10!==n.getToken()?(k(3,[],[2,5]),!1):(P(!1),6===n.getToken()?(I(\":\"),T(),U()||k(4,[],[2,5])):k(5,[],[2,5]),a.pop(),!0)}function z(){l(),T();let e=!1;for(;2!==n.getToken()&&17!==n.getToken();){if(5===n.getToken()){if(e||k(4,[],[]),I(\",\"),T(),2===n.getToken()&&F)break}else e&&k(6,[],[]);V()||k(4,[],[2,5]),e=!0}return E(),2!==n.getToken()?k(7,[2],[]):T(),!0}function G(){w(),T();let e=!0,t=!1;for(;4!==n.getToken()&&17!==n.getToken();){if(5===n.getToken()){if(t||k(4,[],[]),I(\",\"),T(),4===n.getToken()&&F)break}else t&&k(6,[],[]);e?(a.push(0),e=!1):a[a.length-1]++,U()||k(4,[],[4,5]),t=!0}return C(),e||a.pop(),4!==n.getToken()?k(8,[4],[]):T(),!0}function U(){switch(n.getToken()){case 3:return G();case 1:return z();case 10:return P(!0);default:return J()}}return r(T,\"scanNext\"),r(k,\"handleError\"),r(P,\"parseString\"),r(J,\"parseLiteral\"),r(V,\"parseProperty\"),r(z,\"parseObject\"),r(G,\"parseArray\"),r(U,\"parseValue\"),T(),17===n.getToken()?!!i.allowEmptyContent||(k(4,[],[]),!1):U()?(17!==n.getToken()&&k(9,[],[]),!0):(k(4,[],[]),!1)}new Array(W).fill(0).map((e,t)=>\"\\n\"+\" \".repeat(t)),new Array(W).fill(0).map((e,t)=>\"\\r\"+\" \".repeat(t)),new Array(W).fill(0).map((e,t)=>\"\\r\\n\"+\" \".repeat(t)),new Array(W).fill(0).map((e,t)=>\"\\n\"+\"\\t\".repeat(t)),new Array(W).fill(0).map((e,t)=>\"\\r\"+\"\\t\".repeat(t)),new Array(W).fill(0).map((e,t)=>\"\\r\\n\"+\"\\t\".repeat(t)),function(e){e.DEFAULT={allowTrailingComma:!1}}(K||(K={})),r(Pe,\"parse$1\"),r(We,\"visit\"),function(e){e[e.None=0]=\"None\",e[e.UnexpectedEndOfComment=1]=\"UnexpectedEndOfComment\",e[e.UnexpectedEndOfString=2]=\"UnexpectedEndOfString\",e[e.UnexpectedEndOfNumber=3]=\"UnexpectedEndOfNumber\",e[e.InvalidUnicode=4]=\"InvalidUnicode\",e[e.InvalidEscapeCharacter=5]=\"InvalidEscapeCharacter\",e[e.InvalidCharacter=6]=\"InvalidCharacter\"}(H||(H={})),function(e){e[e.OpenBraceToken=1]=\"OpenBraceToken\",e[e.CloseBraceToken=2]=\"CloseBraceToken\",e[e.OpenBracketToken=3]=\"OpenBracketToken\",e[e.CloseBracketToken=4]=\"CloseBracketToken\",e[e.CommaToken=5]=\"CommaToken\",e[e.ColonToken=6]=\"ColonToken\",e[e.NullKeyword=7]=\"NullKeyword\",e[e.TrueKeyword=8]=\"TrueKeyword\",e[e.FalseKeyword=9]=\"FalseKeyword\",e[e.StringLiteral=10]=\"StringLiteral\",e[e.NumericLiteral=11]=\"NumericLiteral\",e[e.LineCommentTrivia=12]=\"LineCommentTrivia\",e[e.BlockCommentTrivia=13]=\"BlockCommentTrivia\",e[e.LineBreakTrivia=14]=\"LineBreakTrivia\",e[e.Trivia=15]=\"Trivia\",e[e.Unknown=16]=\"Unknown\",e[e.EOF=17]=\"EOF\"}(Y||(Y={}));const Q=Pe;var Z;!function(e){e[e.InvalidSymbol=1]=\"InvalidSymbol\",e[e.InvalidNumberFormat=2]=\"InvalidNumberFormat\",e[e.PropertyNameExpected=3]=\"PropertyNameExpected\",e[e.ValueExpected=4]=\"ValueExpected\",e[e.ColonExpected=5]=\"ColonExpected\",e[e.CommaExpected=6]=\"CommaExpected\",e[e.CloseBraceExpected=7]=\"CloseBraceExpected\",e[e.CloseBracketExpected=8]=\"CloseBracketExpected\",e[e.EndOfFileExpected=9]=\"EndOfFileExpected\",e[e.InvalidCommentToken=10]=\"InvalidCommentToken\",e[e.UnexpectedEndOfComment=11]=\"UnexpectedEndOfComment\",e[e.UnexpectedEndOfString=12]=\"UnexpectedEndOfString\",e[e.UnexpectedEndOfNumber=13]=\"UnexpectedEndOfNumber\",e[e.InvalidUnicode=14]=\"InvalidUnicode\",e[e.InvalidEscapeCharacter=15]=\"InvalidEscapeCharacter\",e[e.InvalidCharacter=16]=\"InvalidCharacter\"}(Z||(Z={}));const X=r((e,t)=>Q(N(t,e,\"utf8\")),\"readJsonc\"),te=Symbol(\"implicitBaseUrl\"),ie=\"${configDir}\",se=r(()=>{const{findPnpApi:e}=l;return e&&e(process.cwd())},\"getPnpApi\"),re=r((e,t,i,n)=>{const c=`resolveFromPackageJsonPath:${e}:${t}:${i}`;if(null!=n&&n.has(c))return n.get(c);const l=X(e,n);if(!l)return;let E=t||\"tsconfig.json\";if(!i&&l.exports)try{const[e]=y.resolveExports(l.exports,t,[\"require\",\"types\"]);E=e}catch{return!1}else!t&&l.tsconfig&&(E=l.tsconfig);return E=a.join(e,\"..\",E),null==n||n.set(c,E),E},\"resolveFromPackageJsonPath\"),ne=\"package.json\",ae=\"tsconfig.json\",oe=r((e,t,i)=>{let n=e;if(\"..\"===e&&(n=a.join(n,ae)),\".\"===e[0]&&(n=a.resolve(t,n)),a.isAbsolute(n)){if(I(i,n)){if(O(i,n).isFile())return n}else if(!n.endsWith(\".json\")){const e=`${n}.json`;if(I(i,e))return e}return}const[c,...l]=e.split(\"/\"),y=\"@\"===c[0]?`${c}/${l.shift()}`:c,E=l.join(\"/\"),w=se();if(w){const{resolveRequest:n}=w;try{if(y===e){const e=n(a.join(y,ne),t);if(e){const t=re(e,E,!1,i);if(t&&I(i,t))return t}}else{let i;try{i=n(e,t,{extensions:[\".json\"]})}catch{i=n(a.join(e,ae),t)}if(i)return i}}catch{}}const C=j(a.resolve(t),a.join(\"node_modules\",y),i);if(!C||!O(i,C).isDirectory())return;const S=a.join(C,ne);if(I(i,S)){const e=re(S,E,!1,i);if(!1===e)return;if(e&&I(i,e)&&O(i,e).isFile())return e}const N=a.join(C,E),F=N.endsWith(\".json\");if(!F){const e=`${N}.json`;if(I(i,e))return e}if(I(i,N))if(O(i,N).isDirectory()){const e=a.join(N,ne);if(I(i,e)){const t=re(e,\"\",!0,i);if(t&&I(i,t))return t}const t=a.join(N,ae);if(I(i,t))return t}else if(F)return N},\"resolveExtendsPath\"),ce=r((e,t)=>B(a.relative(e,t)),\"pathRelative\"),he=[\"files\",\"include\",\"exclude\"],le=r((e,t,i)=>{const n=a.join(t,i);return h(a.relative(e,n))||\"./\"},\"resolveAndRelativize\"),pe=r((e,t,i)=>{const n=a.relative(e,t);if(!n)return i;return h(`${n}/${i.startsWith(\"./\")?i.slice(2):i}`)},\"prefixPattern\"),ue=r((e,t,i,n)=>{const c=oe(e,t,n);if(!c)throw new Error(`File '${e}' not found.`);if(i.has(c))throw new Error(`Circularity detected while resolving configuration: ${c}`);i.add(c);const l=a.dirname(c),y=fe(c,n,i);delete y.references;const{compilerOptions:E}=y;if(E){const{baseUrl:e}=E;e&&!e.startsWith(ie)&&(E.baseUrl=le(t,l,e));const{outDir:i}=E;i&&!i.startsWith(ie)&&(E.outDir=le(t,l,i));const{declarationDir:n}=E;n&&!n.startsWith(ie)&&(E.declarationDir=le(t,l,n));const{rootDir:a}=E;a&&!a.startsWith(ie)&&(E.rootDir=le(t,l,a));const{rootDirs:c}=E;c&&(E.rootDirs=c.map(e=>e.startsWith(ie)?e:le(t,l,e)));const{typeRoots:y}=E;y&&(E.typeRoots=y.map(e=>e.startsWith(ie)?e:le(t,l,e)))}for(const e of he){const i=y[e];i&&(y[e]=i.map(e=>e.startsWith(ie)?e:pe(t,l,e)))}return y},\"resolveExtends\"),de=[\"outDir\",\"declarationDir\"],fe=r((e,t,i=new Set)=>{let n;try{n=X(e,t)||{}}catch{throw new Error(`Cannot resolve tsconfig at path: ${e}`)}if(\"object\"!=typeof n)throw new SyntaxError(`Failed to parse tsconfig at: ${e}`);const c=a.dirname(e);if(n.compilerOptions){const{compilerOptions:e}=n;e.paths&&!e.baseUrl&&(e[te]=c)}if(n.extends){const e=Array.isArray(n.extends)?n.extends:[n.extends];delete n.extends;for(const a of e.reverse()){const e=ue(a,c,new Set(i),t),l={...e,...n,compilerOptions:{...e.compilerOptions,...n.compilerOptions}};e.watchOptions&&(l.watchOptions={...e.watchOptions,...n.watchOptions}),n=l}}if(n.compilerOptions){const{compilerOptions:e}=n,t=[\"baseUrl\",\"rootDir\"];for(const i of t){const t=e[i];if(t&&!t.startsWith(ie)){const n=a.resolve(c,t),l=ce(c,n);e[i]=l}}for(const t of de){let i=e[t];i&&(Array.isArray(n.exclude)||(n.exclude=de.map(t=>e[t]).filter(Boolean)),i.startsWith(ie)||(i=B(i)),e[t]=i)}}else n.compilerOptions={};if(n.include&&(n.include=n.include.map(h)),n.files&&(n.files=n.files.map(e=>e.startsWith(ie)?e:B(e))),n.watchOptions){const{watchOptions:e}=n;e.excludeDirectories&&(e.excludeDirectories=e.excludeDirectories.map(e=>h(a.resolve(c,e)))),e.excludeFiles&&(e.excludeFiles=e.excludeFiles.map(e=>h(a.resolve(c,e)))),e.watchFile&&(e.watchFile=e.watchFile.toLowerCase()),e.watchDirectory&&(e.watchDirectory=e.watchDirectory.toLowerCase()),e.fallbackPolling&&(e.fallbackPolling=e.fallbackPolling.toLowerCase())}return n},\"_parseTsconfig\"),me=r((e,t)=>{if(e.startsWith(ie))return h(a.join(t,e.slice(12)))},\"interpolateConfigDir\"),ge=[\"outDir\",\"declarationDir\",\"outFile\",\"rootDir\",\"baseUrl\",\"tsBuildInfoFile\"],xe=r(e=>{if(e.strict){const t=[\"noImplicitAny\",\"noImplicitThis\",\"strictNullChecks\",\"strictFunctionTypes\",\"strictBindCallApply\",\"strictPropertyInitialization\",\"strictBuiltinIteratorReturn\",\"alwaysStrict\",\"useUnknownInCatchVariables\"];for(const i of t)void 0===e[i]&&(e[i]=!0)}if(e.composite&&(null!=e.declaration||(e.declaration=!0),null!=e.incremental||(e.incremental=!0)),e.target){let t=e.target.toLowerCase();\"es2015\"===t&&(t=\"es6\"),e.target=t,\"esnext\"===t&&(null!=e.module||(e.module=\"es6\"),null!=e.useDefineForClassFields||(e.useDefineForClassFields=!0)),(\"es6\"===t||\"es2016\"===t||\"es2017\"===t||\"es2018\"===t||\"es2019\"===t||\"es2020\"===t||\"es2021\"===t||\"es2022\"===t||\"es2023\"===t||\"es2024\"===t)&&(null!=e.module||(e.module=\"es6\")),(\"es2022\"===t||\"es2023\"===t||\"es2024\"===t)&&(null!=e.useDefineForClassFields||(e.useDefineForClassFields=!0))}if(e.module){let t=e.module.toLowerCase();if(\"es2015\"===t&&(t=\"es6\"),e.module=t,(\"es6\"===t||\"es2020\"===t||\"es2022\"===t||\"esnext\"===t||\"none\"===t||\"system\"===t||\"umd\"===t||\"amd\"===t)&&(null!=e.moduleResolution||(e.moduleResolution=\"classic\")),\"system\"===t&&(null!=e.allowSyntheticDefaultImports||(e.allowSyntheticDefaultImports=!0)),(\"node16\"===t||\"node18\"===t||\"node20\"===t||\"nodenext\"===t||\"preserve\"===t)&&(null!=e.esModuleInterop||(e.esModuleInterop=!0),null!=e.allowSyntheticDefaultImports||(e.allowSyntheticDefaultImports=!0)),(\"node16\"===t||\"node18\"===t||\"node20\"===t||\"nodenext\"===t)&&(null!=e.moduleDetection||(e.moduleDetection=\"force\")),\"node16\"===t&&(null!=e.target||(e.target=\"es2022\"),null!=e.moduleResolution||(e.moduleResolution=\"node16\")),\"node18\"===t&&(null!=e.target||(e.target=\"es2022\"),null!=e.moduleResolution||(e.moduleResolution=\"node16\")),\"node20\"===t&&(null!=e.target||(e.target=\"es2023\"),null!=e.moduleResolution||(e.moduleResolution=\"node16\"),null!=e.resolveJsonModule||(e.resolveJsonModule=!0)),\"nodenext\"===t&&(null!=e.target||(e.target=\"esnext\"),null!=e.moduleResolution||(e.moduleResolution=\"nodenext\"),null!=e.resolveJsonModule||(e.resolveJsonModule=!0)),\"node16\"===t||\"node18\"===t||\"node20\"===t||\"nodenext\"===t){const t=e.target;(\"es3\"===t||\"es2022\"===t||\"es2023\"===t||\"es2024\"===t||\"esnext\"===t)&&(null!=e.useDefineForClassFields||(e.useDefineForClassFields=!0))}\"preserve\"===t&&(null!=e.moduleResolution||(e.moduleResolution=\"bundler\"))}if(e.moduleResolution){let t=e.moduleResolution.toLowerCase();\"node\"===t&&(t=\"node10\"),e.moduleResolution=t,(\"node16\"===t||\"nodenext\"===t||\"bundler\"===t)&&(null!=e.resolvePackageJsonExports||(e.resolvePackageJsonExports=!0),null!=e.resolvePackageJsonImports||(e.resolvePackageJsonImports=!0)),\"bundler\"===t&&(null!=e.allowSyntheticDefaultImports||(e.allowSyntheticDefaultImports=!0),null!=e.resolveJsonModule||(e.resolveJsonModule=!0))}e.jsx&&(e.jsx=e.jsx.toLowerCase()),e.moduleDetection&&(e.moduleDetection=e.moduleDetection.toLowerCase()),e.importsNotUsedAsValues&&(e.importsNotUsedAsValues=e.importsNotUsedAsValues.toLowerCase()),e.newLine&&(e.newLine=e.newLine.toLowerCase()),e.esModuleInterop&&(null!=e.allowSyntheticDefaultImports||(e.allowSyntheticDefaultImports=!0)),e.verbatimModuleSyntax&&(null!=e.isolatedModules||(e.isolatedModules=!0),null!=e.preserveConstEnums||(e.preserveConstEnums=!0)),e.isolatedModules&&(null!=e.preserveConstEnums||(e.preserveConstEnums=!0)),e.rewriteRelativeImportExtensions&&(null!=e.allowImportingTsExtensions||(e.allowImportingTsExtensions=!0)),e.lib&&(e.lib=e.lib.map(e=>e.toLowerCase())),e.checkJs&&(null!=e.allowJs||(e.allowJs=!0))},\"normalizeCompilerOptions\"),ve=r((e,t=new Map)=>{const i=a.resolve(e),n=fe(i,t),c=a.dirname(i),{compilerOptions:l}=n;if(l){for(const e of ge){const t=l[e];if(t){const i=me(t,c);l[e]=i?ce(c,i):t}}for(const e of[\"rootDirs\",\"typeRoots\"]){const t=l[e];t&&(l[e]=t.map(e=>{const t=me(e,c);return t?ce(c,t):B(e)}))}const{paths:e}=l;if(e)for(const t of Object.keys(e))e[t]=e[t].map(e=>{var t;return null!=(t=me(e,c))?t:e});xe(l)}for(const e of he){const t=n[e];t&&(n[e]=t.map(e=>{var t;return null!=(t=me(e,c))?t:e}))}return n},\"parseTsconfig\");var ye=Object.defineProperty,_e=r((e,t)=>ye(e,\"name\",{value:t,configurable:!0}),\"s\");const Ee=_e(e=>{let t=\"\";for(let i=0;i<e.length;i+=1){const n=e[i],a=n.toUpperCase();t+=n===a?n.toLowerCase():a}return t},\"invertCase\"),be=new Map,ke=_e((e,t)=>{const i=C.join(e,`.is-fs-case-sensitive-test-${process.pid}`);try{return t.writeFileSync(i,\"\"),!t.existsSync(Ee(i))}finally{try{t.unlinkSync(i)}catch{}}},\"checkDirectoryCaseWithWrite\"),we=_e((e,t,i)=>{try{return ke(e,i)}catch(e){if(void 0===t)return ke(w.tmpdir(),i);throw e}},\"checkDirectoryCaseWithFallback\"),Ce=_e((e,t=E,i=!0)=>{const n=null!=e?e:process.cwd();if(i&&be.has(n))return be.get(n);let a;const c=Ee(n);return a=c!==n&&t.existsSync(n)?!t.existsSync(c):we(n,e,t),i&&be.set(n,a),a},\"isFsCaseSensitive\"),{join:Se}=a.posix,Ie={ts:[\".ts\",\".tsx\",\".d.ts\"],cts:[\".cts\",\".d.cts\"],mts:[\".mts\",\".d.mts\"]},Te=r(e=>{const t=[...Ie.ts],i=[...Ie.cts],n=[...Ie.mts];return null!=e&&e.allowJs&&(t.push(\".js\",\".jsx\"),i.push(\".cjs\"),n.push(\".mjs\")),[...t,...i,...n]},\"getSupportedExtensions\"),Re=r(e=>{const t=[];if(!e)return t;const{outDir:i,declarationDir:n}=e;return i&&t.push(i),n&&t.push(n),t},\"getDefaultExcludeSpec\"),Ae=r(e=>e.replaceAll(/[.*+?^${}()|[\\]\\\\]/g,String.raw`\\$&`),\"escapeForRegexp\"),Le=`(?!(${[\"node_modules\",\"bower_components\",\"jspm_packages\"].join(\"|\")})(/|$))`,Oe=/(?:^|\\/)[^.*?]+$/,De=\"**/*\",Ve=\"[^/]\",Ue=\"[^./]\",Me=\"win32\"===process.platform,je=r(({config:e,path:t},i=Ce())=>{if(\"extends\"in e)throw new Error(\"tsconfig#extends must be resolved. Use getTsconfig or parseTsconfig to resolve it.\");if(!a.isAbsolute(t))throw new Error(\"The tsconfig path must be absolute\");Me&&(t=h(t));const n=a.dirname(t),{files:c,include:l,exclude:y,compilerOptions:E}=e,w=r(e=>a.isAbsolute(e)?e:Se(n,e),\"resolvePattern\"),C=null==c?void 0:c.map(w),S=Te(E),I=i?\"\":\"i\",N=(y||Re(E)).map(e=>{const t=w(e),i=Ae(t).replaceAll(String.raw`\\*\\*/`,\"(.+/)?\").replaceAll(String.raw`\\*`,`${Ve}*`).replaceAll(String.raw`\\?`,Ve);return new RegExp(`^${i}($|/)`,I)}),O=c||l?l:[De],j=O?O.map(e=>{let t=w(e);Oe.test(t)&&(t=Se(t,De));const i=Ae(t).replaceAll(String.raw`/\\*\\*`,`(/${Le}${Ue}${Ve}*)*?`).replaceAll(/(\\/)?\\\\\\*/g,(e,t)=>{const i=`(${Ue}|(\\\\.(?!min\\\\.js$))?)*`;return t?`/${Le}${Ue}${i}`:i}).replaceAll(/(\\/)?\\\\\\?/g,(e,t)=>t?`/${Le}${Ve}`:Ve);return new RegExp(`^${i}$`,I)}):void 0;return t=>{if(!a.isAbsolute(t))throw new Error(\"filePath must be absolute\");return Me&&(t=h(t)),null!=C&&C.includes(t)||S.some(e=>t.endsWith(e))&&!N.some(e=>e.test(t))&&j&&j.some(e=>e.test(t))?e:void 0}},\"createFilesMatcher\"),Fe=r((e,t,i)=>{const n=a.resolve(e);let c=h(e);for(;;){const e=j(c,t,i);if(!e)return;const l=a.resolve(e),y=ve(l,i),E={path:h(l),config:y};if(je(E)(n))return E;const w=a.dirname(e),C=a.dirname(w);if(C===w)return;c=C}},\"findConfigApplicable\"),Be=r((e=process.cwd(),t=\"tsconfig.json\",i=new Map,n=!1)=>{var a;return n?null==(a=Fe(e,t,i))?void 0:a.path:j(h(e),t,i)},\"findTsconfig\"),$e=r((e=process.cwd(),t=\"tsconfig.json\",i=new Map,n=!1)=>{var a;if(!n){const n=Be(e,t,i);if(!n)return null;return{path:n,config:ve(n,i)}}return null!=(a=Fe(e,t,i))?a:null},\"getTsconfig\"),qe=/\\*/g,Ge=r((e,t)=>{const i=e.match(qe);if(i&&i.length>1)throw new Error(t)},\"assertStarCount\"),Ke=r(e=>{if(e.includes(\"*\")){const[t,i]=e.split(\"*\");return{prefix:t,suffix:i}}return e},\"parsePattern\"),He=r(({prefix:e,suffix:t},i)=>i.startsWith(e)&&i.endsWith(t),\"isPatternMatch\"),ze=r((e,t,i)=>Object.entries(e).map(([e,n])=>(Ge(e,`Pattern '${e}' can have at most one '*' character.`),{pattern:Ke(e),substitutions:n.map(n=>{if(Ge(n,`Substitution '${n}' in pattern '${e}' can have at most one '*' character.`),!t&&!F.test(n)&&!a.isAbsolute(n))throw new Error(\"Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?\");return a.resolve(i,n)})})),\"parsePaths\"),Je=r(e=>{const{compilerOptions:t}=e.config;if(!t)return null;const{baseUrl:i,paths:n}=t;if(!i&&!n)return null;const c=te in t&&t[te],l=a.resolve(a.dirname(e.path),i||c||\".\"),y=n?ze(n,i,l):[];return e=>{if(F.test(e))return[];const t=[];for(const i of y){if(i.pattern===e)return i.substitutions.map(h);\"string\"!=typeof i.pattern&&t.push(i)}let n,c=-1;for(const i of t)He(i.pattern,e)&&i.pattern.prefix.length>c&&(c=i.pattern.prefix.length,n=i);if(!n)return i?[h(a.join(l,e))]:[];const E=e.slice(n.pattern.prefix.length,e.length-n.pattern.suffix.length);return n.substitutions.map(e=>h(e.replace(\"*\",E)))}},\"createPathsMatcher\");t.createPathsMatcher=Je,t.getTsconfig=$e},\"./node_modules/.pnpm/resolve-pkg-maps@1.0.0/node_modules/resolve-pkg-maps/dist/index.cjs\"(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});const d=e=>null!==e&&\"object\"==typeof e,s=(e,t)=>Object.assign(new Error(`[${e}]: ${t}`),{code:e}),i=\"ERR_INVALID_PACKAGE_CONFIG\",n=\"ERR_INVALID_PACKAGE_TARGET\",a=/^\\d+$/,c=/^(\\.{1,2}|node_modules)$/i,l=/\\/|\\\\/;var y,E=((y=E||{}).Export=\"exports\",y.Import=\"imports\",y);const f=(e,t,y,E,w)=>{if(null==t)return[];if(\"string\"==typeof t){const[i,...a]=t.split(l);if(\"..\"===i||a.some(e=>c.test(e)))throw s(n,`Invalid \"${e}\" target \"${t}\" defined in the package config`);return[w?t.replace(/\\*/g,w):t]}if(Array.isArray(t))return t.flatMap(t=>f(e,t,y,E,w));if(d(t)){for(const n of Object.keys(t)){if(a.test(n))throw s(i,\"Cannot contain numeric property keys\");if(\"default\"===n||E.includes(n))return f(e,t[n],y,E,w)}return[]}throw s(n,`Invalid \"${e}\" target \"${t}\"`)},w=\"*\",v=(e,t)=>{const i=e.indexOf(w),n=t.indexOf(w);return i===n?t.length>e.length:n>i};function A(e,t){if(!t.includes(w)&&e.hasOwnProperty(t))return[t];let i,n;for(const a of Object.keys(e))if(a.includes(w)){const[e,c,l]=a.split(w);if(void 0===l&&t.startsWith(e)&&t.endsWith(c)){const l=t.slice(e.length,-c.length||void 0);l&&(!i||v(i,a))&&(i=a,n=l)}}return[i,n]}const C=/^\\w+:/;t.resolveExports=(e,t,a)=>{if(!e)throw new Error('\"exports\" is required');t=\"\"===t?\".\":`./${t}`,(\"string\"==typeof e||Array.isArray(e)||d(e)&&(e=>Object.keys(e).reduce((e,t)=>{const n=\"\"===t||\".\"!==t[0];if(void 0===e||e===n)return n;throw s(i,'\"exports\" cannot contain some keys starting with \".\" and some not')},void 0))(e))&&(e={\".\":e});const[c,l]=A(e,t),y=f(E.Export,e[c],t,a,l);if(0===y.length)throw s(\"ERR_PACKAGE_PATH_NOT_EXPORTED\",\".\"===t?'No \"exports\" main defined':`Package subpath '${t}' is not defined by \"exports\"`);for(const e of y)if(!e.startsWith(\"./\")&&!C.test(e))throw s(n,`Invalid \"exports\" target \"${e}\" defined in the package config`);return y},t.resolveImports=(e,t,i)=>{if(!e)throw new Error('\"imports\" is required');const[n,a]=A(e,t),c=f(E.Import,e[n],t,i,a);if(0===c.length)throw s(\"ERR_PACKAGE_IMPORT_NOT_DEFINED\",`Package import specifier \"${t}\" is not defined in package`);return c}}},t={};function __webpack_require__(i){var n=t[i];if(void 0!==n)return n.exports;var a=t[i]={exports:{}};return e[i](a,a.exports,__webpack_require__),a.exports}__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var i in t)__webpack_require__.o(t,i)&&!__webpack_require__.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var i={};(()=>{\"use strict\";__webpack_require__.d(i,{default:()=>createJiti});const e=require(\"node:os\");var t=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,78,5,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,199,7,137,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,55,9,266,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,233,0,3,0,8,1,6,0,475,6,110,6,6,9,4759,9,787719,239],n=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,7,25,39,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,5,57,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,24,43,261,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,33,24,3,24,45,74,6,0,67,12,65,1,2,0,15,4,10,7381,42,31,98,114,8702,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,208,30,2,2,2,1,2,6,3,4,10,1,225,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4381,3,5773,3,7472,16,621,2467,541,1507,4938,6,8489],a=\"\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\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\u0560-\u0588\u05D0-\u05EA\u05EF-\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\u0860-\u086A\u0870-\u0887\u0889-\u088F\u08A0-\u08C9\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\u09FC\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\u0C5C\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDC-\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\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-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\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-\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-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7DC\uA7F1-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\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-\uAB69\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\",c={3:\"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",5:\"class enum extends super const export import\",6:\"enum\",strict:\"implements interface let package private protected public static yield\",strictBind:\"eval arguments\"},l=\"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\",y={5:l,\"5module\":l+\" export import\",6:l+\" const class extends export import super\"},E=/^in(stanceof)?$/,w=new RegExp(\"[\"+a+\"]\"),C=new RegExp(\"[\"+a+\"\u200C\u200D\u00B7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0897-\u089F\u08CA-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3C\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0CF3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECE\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u180F-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1ABF-\u1ADD\u1AE0-\u1AEB\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DFF\u200C\u200D\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\u30FB\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F\uFF65]\");function isInAstralSet(e,t){for(var i=65536,n=0;n<t.length;n+=2){if((i+=t[n])>e)return!1;if((i+=t[n+1])>=e)return!0}return!1}function isIdentifierStart(e,t){return e<65?36===e:e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&w.test(String.fromCharCode(e)):!1!==t&&isInAstralSet(e,n)))}function isIdentifierChar(e,i){return e<48?36===e:e<58||!(e<65)&&(e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&C.test(String.fromCharCode(e)):!1!==i&&(isInAstralSet(e,n)||isInAstralSet(e,t)))))}var acorn_TokenType=function(e,t){void 0===t&&(t={}),this.label=e,this.keyword=t.keyword,this.beforeExpr=!!t.beforeExpr,this.startsExpr=!!t.startsExpr,this.isLoop=!!t.isLoop,this.isAssign=!!t.isAssign,this.prefix=!!t.prefix,this.postfix=!!t.postfix,this.binop=t.binop||null,this.updateContext=null};function binop(e,t){return new acorn_TokenType(e,{beforeExpr:!0,binop:t})}var S={beforeExpr:!0},I={startsExpr:!0},N={};function kw(e,t){return void 0===t&&(t={}),t.keyword=e,N[e]=new acorn_TokenType(e,t)}var O={num:new acorn_TokenType(\"num\",I),regexp:new acorn_TokenType(\"regexp\",I),string:new acorn_TokenType(\"string\",I),name:new acorn_TokenType(\"name\",I),privateId:new acorn_TokenType(\"privateId\",I),eof:new acorn_TokenType(\"eof\"),bracketL:new acorn_TokenType(\"[\",{beforeExpr:!0,startsExpr:!0}),bracketR:new acorn_TokenType(\"]\"),braceL:new acorn_TokenType(\"{\",{beforeExpr:!0,startsExpr:!0}),braceR:new acorn_TokenType(\"}\"),parenL:new acorn_TokenType(\"(\",{beforeExpr:!0,startsExpr:!0}),parenR:new acorn_TokenType(\")\"),comma:new acorn_TokenType(\",\",S),semi:new acorn_TokenType(\";\",S),colon:new acorn_TokenType(\":\",S),dot:new acorn_TokenType(\".\"),question:new acorn_TokenType(\"?\",S),questionDot:new acorn_TokenType(\"?.\"),arrow:new acorn_TokenType(\"=>\",S),template:new acorn_TokenType(\"template\"),invalidTemplate:new acorn_TokenType(\"invalidTemplate\"),ellipsis:new acorn_TokenType(\"...\",S),backQuote:new acorn_TokenType(\"`\",I),dollarBraceL:new acorn_TokenType(\"${\",{beforeExpr:!0,startsExpr:!0}),eq:new acorn_TokenType(\"=\",{beforeExpr:!0,isAssign:!0}),assign:new acorn_TokenType(\"_=\",{beforeExpr:!0,isAssign:!0}),incDec:new acorn_TokenType(\"++/--\",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new acorn_TokenType(\"!/~\",{beforeExpr:!0,prefix:!0,startsExpr:!0}),logicalOR:binop(\"||\",1),logicalAND:binop(\"&&\",2),bitwiseOR:binop(\"|\",3),bitwiseXOR:binop(\"^\",4),bitwiseAND:binop(\"&\",5),equality:binop(\"==/!=/===/!==\",6),relational:binop(\"</>/<=/>=\",7),bitShift:binop(\"<</>>/>>>\",8),plusMin:new acorn_TokenType(\"+/-\",{beforeExpr:!0,binop:9,prefix:!0,startsExpr:!0}),modulo:binop(\"%\",10),star:binop(\"*\",10),slash:binop(\"/\",10),starstar:new acorn_TokenType(\"**\",{beforeExpr:!0}),coalesce:binop(\"??\",1),_break:kw(\"break\"),_case:kw(\"case\",S),_catch:kw(\"catch\"),_continue:kw(\"continue\"),_debugger:kw(\"debugger\"),_default:kw(\"default\",S),_do:kw(\"do\",{isLoop:!0,beforeExpr:!0}),_else:kw(\"else\",S),_finally:kw(\"finally\"),_for:kw(\"for\",{isLoop:!0}),_function:kw(\"function\",I),_if:kw(\"if\"),_return:kw(\"return\",S),_switch:kw(\"switch\"),_throw:kw(\"throw\",S),_try:kw(\"try\"),_var:kw(\"var\"),_const:kw(\"const\"),_while:kw(\"while\",{isLoop:!0}),_with:kw(\"with\"),_new:kw(\"new\",{beforeExpr:!0,startsExpr:!0}),_this:kw(\"this\",I),_super:kw(\"super\",I),_class:kw(\"class\",I),_extends:kw(\"extends\",S),_export:kw(\"export\"),_import:kw(\"import\",I),_null:kw(\"null\",I),_true:kw(\"true\",I),_false:kw(\"false\",I),_in:kw(\"in\",{beforeExpr:!0,binop:7}),_instanceof:kw(\"instanceof\",{beforeExpr:!0,binop:7}),_typeof:kw(\"typeof\",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_void:kw(\"void\",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_delete:kw(\"delete\",{beforeExpr:!0,prefix:!0,startsExpr:!0})},j=/\\r\\n?|\\n|\\u2028|\\u2029/,F=new RegExp(j.source,\"g\");function isNewLine(e){return 10===e||13===e||8232===e||8233===e}function nextLineBreak(e,t,i){void 0===i&&(i=e.length);for(var n=t;n<i;n++){var a=e.charCodeAt(n);if(isNewLine(a))return n<i-1&&13===a&&10===e.charCodeAt(n+1)?n+2:n+1}return-1}var B=/[\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/,$=/(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g,q=Object.prototype,W=q.hasOwnProperty,K=q.toString,H=Object.hasOwn||function(e,t){return W.call(e,t)},Y=Array.isArray||function(e){return\"[object Array]\"===K.call(e)},Q=Object.create(null);function wordsRegexp(e){return Q[e]||(Q[e]=new RegExp(\"^(?:\"+e.replace(/ /g,\"|\")+\")$\"))}function codePointToString(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode(55296+(e>>10),56320+(1023&e)))}var Z=/(?:[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/,acorn_Position=function(e,t){this.line=e,this.column=t};acorn_Position.prototype.offset=function(e){return new acorn_Position(this.line,this.column+e)};var acorn_SourceLocation=function(e,t,i){this.start=t,this.end=i,null!==e.sourceFile&&(this.source=e.sourceFile)};function getLineInfo(e,t){for(var i=1,n=0;;){var a=nextLineBreak(e,n,t);if(a<0)return new acorn_Position(i,t-n);++i,n=a}}var X={ecmaVersion:null,sourceType:\"script\",onInsertedSemicolon:null,onTrailingComma:null,allowReserved:null,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowAwaitOutsideFunction:null,allowSuperOutsideMethod:null,allowHashBang:!1,checkPrivateFields:!0,locations:!1,onToken:null,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null,preserveParens:!1},te=!1;function getOptions(e){var t={};for(var i in X)t[i]=e&&H(e,i)?e[i]:X[i];if(\"latest\"===t.ecmaVersion?t.ecmaVersion=1e8:null==t.ecmaVersion?(!te&&\"object\"==typeof console&&console.warn&&(te=!0,console.warn(\"Since Acorn 8.0.0, options.ecmaVersion is required.\\nDefaulting to 2020, but this will stop working in the future.\")),t.ecmaVersion=11):t.ecmaVersion>=2015&&(t.ecmaVersion-=2009),null==t.allowReserved&&(t.allowReserved=t.ecmaVersion<5),e&&null!=e.allowHashBang||(t.allowHashBang=t.ecmaVersion>=14),Y(t.onToken)){var n=t.onToken;t.onToken=function(e){return n.push(e)}}if(Y(t.onComment)&&(t.onComment=function(e,t){return function(i,n,a,c,l,y){var E={type:i?\"Block\":\"Line\",value:n,start:a,end:c};e.locations&&(E.loc=new acorn_SourceLocation(this,l,y)),e.ranges&&(E.range=[a,c]),t.push(E)}}(t,t.onComment)),\"commonjs\"===t.sourceType&&t.allowAwaitOutsideFunction)throw new Error(\"Cannot use allowAwaitOutsideFunction with sourceType: commonjs\");return t}var ie=256,se=259;function functionFlags(e,t){return 2|(e?4:0)|(t?8:0)}var acorn_Parser=function(e,t,i){this.options=e=getOptions(e),this.sourceFile=e.sourceFile,this.keywords=wordsRegexp(y[e.ecmaVersion>=6?6:\"module\"===e.sourceType?\"5module\":5]);var n=\"\";!0!==e.allowReserved&&(n=c[e.ecmaVersion>=6?6:5===e.ecmaVersion?5:3],\"module\"===e.sourceType&&(n+=\" await\")),this.reservedWords=wordsRegexp(n);var a=(n?n+\" \":\"\")+c.strict;this.reservedWordsStrict=wordsRegexp(a),this.reservedWordsStrictBind=wordsRegexp(a+\" \"+c.strictBind),this.input=String(t),this.containsEsc=!1,i?(this.pos=i,this.lineStart=this.input.lastIndexOf(\"\\n\",i-1)+1,this.curLine=this.input.slice(0,this.lineStart).split(j).length):(this.pos=this.lineStart=0,this.curLine=1),this.type=O.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=this.initialContext(),this.exprAllowed=!0,this.inModule=\"module\"===e.sourceType,this.strict=this.inModule||this.strictDirective(this.pos),this.potentialArrowAt=-1,this.potentialArrowInForAwait=!1,this.yieldPos=this.awaitPos=this.awaitIdentPos=0,this.labels=[],this.undefinedExports=Object.create(null),0===this.pos&&e.allowHashBang&&\"#!\"===this.input.slice(0,2)&&this.skipLineComment(2),this.scopeStack=[],this.enterScope(\"commonjs\"===this.options.sourceType?2:1),this.regexpState=null,this.privateNameStack=[]},re={inFunction:{configurable:!0},inGenerator:{configurable:!0},inAsync:{configurable:!0},canAwait:{configurable:!0},allowReturn:{configurable:!0},allowSuper:{configurable:!0},allowDirectSuper:{configurable:!0},treatFunctionsAsVar:{configurable:!0},allowNewDotTarget:{configurable:!0},allowUsing:{configurable:!0},inClassStaticBlock:{configurable:!0}};acorn_Parser.prototype.parse=function(){var e=this.options.program||this.startNode();return this.nextToken(),this.parseTopLevel(e)},re.inFunction.get=function(){return(2&this.currentVarScope().flags)>0},re.inGenerator.get=function(){return(8&this.currentVarScope().flags)>0},re.inAsync.get=function(){return(4&this.currentVarScope().flags)>0},re.canAwait.get=function(){for(var e=this.scopeStack.length-1;e>=0;e--){var t=this.scopeStack[e].flags;if(768&t)return!1;if(2&t)return(4&t)>0}return this.inModule&&this.options.ecmaVersion>=13||this.options.allowAwaitOutsideFunction},re.allowReturn.get=function(){return!!this.inFunction||!!(this.options.allowReturnOutsideFunction&&1&this.currentVarScope().flags)},re.allowSuper.get=function(){return(64&this.currentThisScope().flags)>0||this.options.allowSuperOutsideMethod},re.allowDirectSuper.get=function(){return(128&this.currentThisScope().flags)>0},re.treatFunctionsAsVar.get=function(){return this.treatFunctionsAsVarInScope(this.currentScope())},re.allowNewDotTarget.get=function(){for(var e=this.scopeStack.length-1;e>=0;e--){var t=this.scopeStack[e].flags;if(768&t||2&t&&!(16&t))return!0}return!1},re.allowUsing.get=function(){var e=this.currentScope().flags;return!(1024&e)&&!(!this.inModule&&1&e)},re.inClassStaticBlock.get=function(){return(this.currentVarScope().flags&ie)>0},acorn_Parser.extend=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];for(var i=this,n=0;n<e.length;n++)i=e[n](i);return i},acorn_Parser.parse=function(e,t){return new this(t,e).parse()},acorn_Parser.parseExpressionAt=function(e,t,i){var n=new this(i,e,t);return n.nextToken(),n.parseExpression()},acorn_Parser.tokenizer=function(e,t){return new this(t,e)},Object.defineProperties(acorn_Parser.prototype,re);var ne=acorn_Parser.prototype,ae=/^(?:'((?:\\\\[^]|[^'\\\\])*?)'|\"((?:\\\\[^]|[^\"\\\\])*?)\")/;ne.strictDirective=function(e){if(this.options.ecmaVersion<5)return!1;for(;;){$.lastIndex=e,e+=$.exec(this.input)[0].length;var t=ae.exec(this.input.slice(e));if(!t)return!1;if(\"use strict\"===(t[1]||t[2])){$.lastIndex=e+t[0].length;var i=$.exec(this.input),n=i.index+i[0].length,a=this.input.charAt(n);return\";\"===a||\"}\"===a||j.test(i[0])&&!(/[(`.[+\\-/*%<>=,?^&]/.test(a)||\"!\"===a&&\"=\"===this.input.charAt(n+1))}e+=t[0].length,$.lastIndex=e,e+=$.exec(this.input)[0].length,\";\"===this.input[e]&&e++}},ne.eat=function(e){return this.type===e&&(this.next(),!0)},ne.isContextual=function(e){return this.type===O.name&&this.value===e&&!this.containsEsc},ne.eatContextual=function(e){return!!this.isContextual(e)&&(this.next(),!0)},ne.expectContextual=function(e){this.eatContextual(e)||this.unexpected()},ne.canInsertSemicolon=function(){return this.type===O.eof||this.type===O.braceR||j.test(this.input.slice(this.lastTokEnd,this.start))},ne.insertSemicolon=function(){if(this.canInsertSemicolon())return this.options.onInsertedSemicolon&&this.options.onInsertedSemicolon(this.lastTokEnd,this.lastTokEndLoc),!0},ne.semicolon=function(){this.eat(O.semi)||this.insertSemicolon()||this.unexpected()},ne.afterTrailingComma=function(e,t){if(this.type===e)return this.options.onTrailingComma&&this.options.onTrailingComma(this.lastTokStart,this.lastTokStartLoc),t||this.next(),!0},ne.expect=function(e){this.eat(e)||this.unexpected()},ne.unexpected=function(e){this.raise(null!=e?e:this.start,\"Unexpected token\")};var acorn_DestructuringErrors=function(){this.shorthandAssign=this.trailingComma=this.parenthesizedAssign=this.parenthesizedBind=this.doubleProto=-1};ne.checkPatternErrors=function(e,t){if(e){e.trailingComma>-1&&this.raiseRecoverable(e.trailingComma,\"Comma is not permitted after the rest element\");var i=t?e.parenthesizedAssign:e.parenthesizedBind;i>-1&&this.raiseRecoverable(i,t?\"Assigning to rvalue\":\"Parenthesized pattern\")}},ne.checkExpressionErrors=function(e,t){if(!e)return!1;var i=e.shorthandAssign,n=e.doubleProto;if(!t)return i>=0||n>=0;i>=0&&this.raise(i,\"Shorthand property assignments are valid only in destructuring patterns\"),n>=0&&this.raiseRecoverable(n,\"Redefinition of __proto__ property\")},ne.checkYieldAwaitInDefaultParams=function(){this.yieldPos&&(!this.awaitPos||this.yieldPos<this.awaitPos)&&this.raise(this.yieldPos,\"Yield expression cannot be a default value\"),this.awaitPos&&this.raise(this.awaitPos,\"Await expression cannot be a default value\")},ne.isSimpleAssignTarget=function(e){return\"ParenthesizedExpression\"===e.type?this.isSimpleAssignTarget(e.expression):\"Identifier\"===e.type||\"MemberExpression\"===e.type};var oe=acorn_Parser.prototype;oe.parseTopLevel=function(e){var t=Object.create(null);for(e.body||(e.body=[]);this.type!==O.eof;){var i=this.parseStatement(null,!0,t);e.body.push(i)}if(this.inModule)for(var n=0,a=Object.keys(this.undefinedExports);n<a.length;n+=1){var c=a[n];this.raiseRecoverable(this.undefinedExports[c].start,\"Export '\"+c+\"' is not defined\")}return this.adaptDirectivePrologue(e.body),this.next(),e.sourceType=\"commonjs\"===this.options.sourceType?\"script\":this.options.sourceType,this.finishNode(e,\"Program\")};var ce={kind:\"loop\"},he={kind:\"switch\"};oe.isLet=function(e){if(this.options.ecmaVersion<6||!this.isContextual(\"let\"))return!1;$.lastIndex=this.pos;var t=$.exec(this.input),i=this.pos+t[0].length,n=this.fullCharCodeAt(i);if(91===n||92===n)return!0;if(e)return!1;if(123===n)return!0;if(isIdentifierStart(n)){var a=i;do{i+=n<=65535?1:2}while(isIdentifierChar(n=this.fullCharCodeAt(i)));if(92===n)return!0;var c=this.input.slice(a,i);if(!E.test(c))return!0}return!1},oe.isAsyncFunction=function(){if(this.options.ecmaVersion<8||!this.isContextual(\"async\"))return!1;$.lastIndex=this.pos;var e,t=$.exec(this.input),i=this.pos+t[0].length;return!(j.test(this.input.slice(this.pos,i))||\"function\"!==this.input.slice(i,i+8)||i+8!==this.input.length&&(isIdentifierChar(e=this.fullCharCodeAt(i+8))||92===e))},oe.isUsingKeyword=function(e,t){if(this.options.ecmaVersion<17||!this.isContextual(e?\"await\":\"using\"))return!1;$.lastIndex=this.pos;var i=$.exec(this.input),n=this.pos+i[0].length;if(j.test(this.input.slice(this.pos,n)))return!1;if(e){var a,c=n+5;if(\"using\"!==this.input.slice(n,c)||c===this.input.length||isIdentifierChar(a=this.fullCharCodeAt(c))||92===a)return!1;$.lastIndex=c;var l=$.exec(this.input);if(n=c+l[0].length,l&&j.test(this.input.slice(c,n)))return!1}var y=this.fullCharCodeAt(n);if(!isIdentifierStart(y)&&92!==y)return!1;var w=n;do{n+=y<=65535?1:2}while(isIdentifierChar(y=this.fullCharCodeAt(n)));if(92===y)return!0;var C=this.input.slice(w,n);return!(E.test(C)||t&&\"of\"===C)},oe.isAwaitUsing=function(e){return this.isUsingKeyword(!0,e)},oe.isUsing=function(e){return this.isUsingKeyword(!1,e)},oe.parseStatement=function(e,t,i){var n,a=this.type,c=this.startNode();switch(this.isLet(e)&&(a=O._var,n=\"let\"),a){case O._break:case O._continue:return this.parseBreakContinueStatement(c,a.keyword);case O._debugger:return this.parseDebuggerStatement(c);case O._do:return this.parseDoStatement(c);case O._for:return this.parseForStatement(c);case O._function:return e&&(this.strict||\"if\"!==e&&\"label\"!==e)&&this.options.ecmaVersion>=6&&this.unexpected(),this.parseFunctionStatement(c,!1,!e);case O._class:return e&&this.unexpected(),this.parseClass(c,!0);case O._if:return this.parseIfStatement(c);case O._return:return this.parseReturnStatement(c);case O._switch:return this.parseSwitchStatement(c);case O._throw:return this.parseThrowStatement(c);case O._try:return this.parseTryStatement(c);case O._const:case O._var:return n=n||this.value,e&&\"var\"!==n&&this.unexpected(),this.parseVarStatement(c,n);case O._while:return this.parseWhileStatement(c);case O._with:return this.parseWithStatement(c);case O.braceL:return this.parseBlock(!0,c);case O.semi:return this.parseEmptyStatement(c);case O._export:case O._import:if(this.options.ecmaVersion>10&&a===O._import){$.lastIndex=this.pos;var l=$.exec(this.input),y=this.pos+l[0].length,E=this.input.charCodeAt(y);if(40===E||46===E)return this.parseExpressionStatement(c,this.parseExpression())}return this.options.allowImportExportEverywhere||(t||this.raise(this.start,\"'import' and 'export' may only appear at the top level\"),this.inModule||this.raise(this.start,\"'import' and 'export' may appear only with 'sourceType: module'\")),a===O._import?this.parseImport(c):this.parseExport(c,i);default:if(this.isAsyncFunction())return e&&this.unexpected(),this.next(),this.parseFunctionStatement(c,!0,!e);var w=this.isAwaitUsing(!1)?\"await using\":this.isUsing(!1)?\"using\":null;if(w)return this.allowUsing||this.raise(this.start,\"Using declaration cannot appear in the top level when source type is `script` or in the bare case statement\"),\"await using\"===w&&(this.canAwait||this.raise(this.start,\"Await using cannot appear outside of async function\"),this.next()),this.next(),this.parseVar(c,!1,w),this.semicolon(),this.finishNode(c,\"VariableDeclaration\");var C=this.value,S=this.parseExpression();return a===O.name&&\"Identifier\"===S.type&&this.eat(O.colon)?this.parseLabeledStatement(c,C,S,e):this.parseExpressionStatement(c,S)}},oe.parseBreakContinueStatement=function(e,t){var i=\"break\"===t;this.next(),this.eat(O.semi)||this.insertSemicolon()?e.label=null:this.type!==O.name?this.unexpected():(e.label=this.parseIdent(),this.semicolon());for(var n=0;n<this.labels.length;++n){var a=this.labels[n];if(null==e.label||a.name===e.label.name){if(null!=a.kind&&(i||\"loop\"===a.kind))break;if(e.label&&i)break}}return n===this.labels.length&&this.raise(e.start,\"Unsyntactic \"+t),this.finishNode(e,i?\"BreakStatement\":\"ContinueStatement\")},oe.parseDebuggerStatement=function(e){return this.next(),this.semicolon(),this.finishNode(e,\"DebuggerStatement\")},oe.parseDoStatement=function(e){return this.next(),this.labels.push(ce),e.body=this.parseStatement(\"do\"),this.labels.pop(),this.expect(O._while),e.test=this.parseParenExpression(),this.options.ecmaVersion>=6?this.eat(O.semi):this.semicolon(),this.finishNode(e,\"DoWhileStatement\")},oe.parseForStatement=function(e){this.next();var t=this.options.ecmaVersion>=9&&this.canAwait&&this.eatContextual(\"await\")?this.lastTokStart:-1;if(this.labels.push(ce),this.enterScope(0),this.expect(O.parenL),this.type===O.semi)return t>-1&&this.unexpected(t),this.parseFor(e,null);var i=this.isLet();if(this.type===O._var||this.type===O._const||i){var n=this.startNode(),a=i?\"let\":this.value;return this.next(),this.parseVar(n,!0,a),this.finishNode(n,\"VariableDeclaration\"),this.parseForAfterInit(e,n,t)}var c=this.isContextual(\"let\"),l=!1,y=this.isUsing(!0)?\"using\":this.isAwaitUsing(!0)?\"await using\":null;if(y){var E=this.startNode();return this.next(),\"await using\"===y&&(this.canAwait||this.raise(this.start,\"Await using cannot appear outside of async function\"),this.next()),this.parseVar(E,!0,y),this.finishNode(E,\"VariableDeclaration\"),this.parseForAfterInit(e,E,t)}var w=this.containsEsc,C=new acorn_DestructuringErrors,S=this.start,I=t>-1?this.parseExprSubscripts(C,\"await\"):this.parseExpression(!0,C);return this.type===O._in||(l=this.options.ecmaVersion>=6&&this.isContextual(\"of\"))?(t>-1?(this.type===O._in&&this.unexpected(t),e.await=!0):l&&this.options.ecmaVersion>=8&&(I.start!==S||w||\"Identifier\"!==I.type||\"async\"!==I.name?this.options.ecmaVersion>=9&&(e.await=!1):this.unexpected()),c&&l&&this.raise(I.start,\"The left-hand side of a for-of loop may not start with 'let'.\"),this.toAssignable(I,!1,C),this.checkLValPattern(I),this.parseForIn(e,I)):(this.checkExpressionErrors(C,!0),t>-1&&this.unexpected(t),this.parseFor(e,I))},oe.parseForAfterInit=function(e,t,i){return(this.type===O._in||this.options.ecmaVersion>=6&&this.isContextual(\"of\"))&&1===t.declarations.length?(this.options.ecmaVersion>=9&&(this.type===O._in?i>-1&&this.unexpected(i):e.await=i>-1),this.parseForIn(e,t)):(i>-1&&this.unexpected(i),this.parseFor(e,t))},oe.parseFunctionStatement=function(e,t,i){return this.next(),this.parseFunction(e,pe|(i?0:ue),!1,t)},oe.parseIfStatement=function(e){return this.next(),e.test=this.parseParenExpression(),e.consequent=this.parseStatement(\"if\"),e.alternate=this.eat(O._else)?this.parseStatement(\"if\"):null,this.finishNode(e,\"IfStatement\")},oe.parseReturnStatement=function(e){return this.allowReturn||this.raise(this.start,\"'return' outside of function\"),this.next(),this.eat(O.semi)||this.insertSemicolon()?e.argument=null:(e.argument=this.parseExpression(),this.semicolon()),this.finishNode(e,\"ReturnStatement\")},oe.parseSwitchStatement=function(e){var t;this.next(),e.discriminant=this.parseParenExpression(),e.cases=[],this.expect(O.braceL),this.labels.push(he),this.enterScope(1024);for(var i=!1;this.type!==O.braceR;)if(this.type===O._case||this.type===O._default){var n=this.type===O._case;t&&this.finishNode(t,\"SwitchCase\"),e.cases.push(t=this.startNode()),t.consequent=[],this.next(),n?t.test=this.parseExpression():(i&&this.raiseRecoverable(this.lastTokStart,\"Multiple default clauses\"),i=!0,t.test=null),this.expect(O.colon)}else t||this.unexpected(),t.consequent.push(this.parseStatement(null));return this.exitScope(),t&&this.finishNode(t,\"SwitchCase\"),this.next(),this.labels.pop(),this.finishNode(e,\"SwitchStatement\")},oe.parseThrowStatement=function(e){return this.next(),j.test(this.input.slice(this.lastTokEnd,this.start))&&this.raise(this.lastTokEnd,\"Illegal newline after throw\"),e.argument=this.parseExpression(),this.semicolon(),this.finishNode(e,\"ThrowStatement\")};var le=[];oe.parseCatchClauseParam=function(){var e=this.parseBindingAtom(),t=\"Identifier\"===e.type;return this.enterScope(t?32:0),this.checkLValPattern(e,t?4:2),this.expect(O.parenR),e},oe.parseTryStatement=function(e){if(this.next(),e.block=this.parseBlock(),e.handler=null,this.type===O._catch){var t=this.startNode();this.next(),this.eat(O.parenL)?t.param=this.parseCatchClauseParam():(this.options.ecmaVersion<10&&this.unexpected(),t.param=null,this.enterScope(0)),t.body=this.parseBlock(!1),this.exitScope(),e.handler=this.finishNode(t,\"CatchClause\")}return e.finalizer=this.eat(O._finally)?this.parseBlock():null,e.handler||e.finalizer||this.raise(e.start,\"Missing catch or finally clause\"),this.finishNode(e,\"TryStatement\")},oe.parseVarStatement=function(e,t,i){return this.next(),this.parseVar(e,!1,t,i),this.semicolon(),this.finishNode(e,\"VariableDeclaration\")},oe.parseWhileStatement=function(e){return this.next(),e.test=this.parseParenExpression(),this.labels.push(ce),e.body=this.parseStatement(\"while\"),this.labels.pop(),this.finishNode(e,\"WhileStatement\")},oe.parseWithStatement=function(e){return this.strict&&this.raise(this.start,\"'with' in strict mode\"),this.next(),e.object=this.parseParenExpression(),e.body=this.parseStatement(\"with\"),this.finishNode(e,\"WithStatement\")},oe.parseEmptyStatement=function(e){return this.next(),this.finishNode(e,\"EmptyStatement\")},oe.parseLabeledStatement=function(e,t,i,n){for(var a=0,c=this.labels;a<c.length;a+=1){c[a].name===t&&this.raise(i.start,\"Label '\"+t+\"' is already declared\")}for(var l=this.type.isLoop?\"loop\":this.type===O._switch?\"switch\":null,y=this.labels.length-1;y>=0;y--){var E=this.labels[y];if(E.statementStart!==e.start)break;E.statementStart=this.start,E.kind=l}return this.labels.push({name:t,kind:l,statementStart:this.start}),e.body=this.parseStatement(n?-1===n.indexOf(\"label\")?n+\"label\":n:\"label\"),this.labels.pop(),e.label=i,this.finishNode(e,\"LabeledStatement\")},oe.parseExpressionStatement=function(e,t){return e.expression=t,this.semicolon(),this.finishNode(e,\"ExpressionStatement\")},oe.parseBlock=function(e,t,i){for(void 0===e&&(e=!0),void 0===t&&(t=this.startNode()),t.body=[],this.expect(O.braceL),e&&this.enterScope(0);this.type!==O.braceR;){var n=this.parseStatement(null);t.body.push(n)}return i&&(this.strict=!1),this.next(),e&&this.exitScope(),this.finishNode(t,\"BlockStatement\")},oe.parseFor=function(e,t){return e.init=t,this.expect(O.semi),e.test=this.type===O.semi?null:this.parseExpression(),this.expect(O.semi),e.update=this.type===O.parenR?null:this.parseExpression(),this.expect(O.parenR),e.body=this.parseStatement(\"for\"),this.exitScope(),this.labels.pop(),this.finishNode(e,\"ForStatement\")},oe.parseForIn=function(e,t){var i=this.type===O._in;return this.next(),\"VariableDeclaration\"===t.type&&null!=t.declarations[0].init&&(!i||this.options.ecmaVersion<8||this.strict||\"var\"!==t.kind||\"Identifier\"!==t.declarations[0].id.type)&&this.raise(t.start,(i?\"for-in\":\"for-of\")+\" loop variable declaration may not have an initializer\"),e.left=t,e.right=i?this.parseExpression():this.parseMaybeAssign(),this.expect(O.parenR),e.body=this.parseStatement(\"for\"),this.exitScope(),this.labels.pop(),this.finishNode(e,i?\"ForInStatement\":\"ForOfStatement\")},oe.parseVar=function(e,t,i,n){for(e.declarations=[],e.kind=i;;){var a=this.startNode();if(this.parseVarId(a,i),this.eat(O.eq)?a.init=this.parseMaybeAssign(t):n||\"const\"!==i||this.type===O._in||this.options.ecmaVersion>=6&&this.isContextual(\"of\")?n||\"using\"!==i&&\"await using\"!==i||!(this.options.ecmaVersion>=17)||this.type===O._in||this.isContextual(\"of\")?n||\"Identifier\"===a.id.type||t&&(this.type===O._in||this.isContextual(\"of\"))?a.init=null:this.raise(this.lastTokEnd,\"Complex binding patterns require an initialization value\"):this.raise(this.lastTokEnd,\"Missing initializer in \"+i+\" declaration\"):this.unexpected(),e.declarations.push(this.finishNode(a,\"VariableDeclarator\")),!this.eat(O.comma))break}return e},oe.parseVarId=function(e,t){e.id=\"using\"===t||\"await using\"===t?this.parseIdent():this.parseBindingAtom(),this.checkLValPattern(e.id,\"var\"===t?1:2,!1)};var pe=1,ue=2;function isPrivateNameConflicted(e,t){var i=t.key.name,n=e[i],a=\"true\";return\"MethodDefinition\"!==t.type||\"get\"!==t.kind&&\"set\"!==t.kind||(a=(t.static?\"s\":\"i\")+t.kind),\"iget\"===n&&\"iset\"===a||\"iset\"===n&&\"iget\"===a||\"sget\"===n&&\"sset\"===a||\"sset\"===n&&\"sget\"===a?(e[i]=\"true\",!1):!!n||(e[i]=a,!1)}function checkKeyName(e,t){var i=e.computed,n=e.key;return!i&&(\"Identifier\"===n.type&&n.name===t||\"Literal\"===n.type&&n.value===t)}oe.parseFunction=function(e,t,i,n,a){this.initFunction(e),(this.options.ecmaVersion>=9||this.options.ecmaVersion>=6&&!n)&&(this.type===O.star&&t&ue&&this.unexpected(),e.generator=this.eat(O.star)),this.options.ecmaVersion>=8&&(e.async=!!n),t&pe&&(e.id=4&t&&this.type!==O.name?null:this.parseIdent(),!e.id||t&ue||this.checkLValSimple(e.id,this.strict||e.generator||e.async?this.treatFunctionsAsVar?1:2:3));var c=this.yieldPos,l=this.awaitPos,y=this.awaitIdentPos;return this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0,this.enterScope(functionFlags(e.async,e.generator)),t&pe||(e.id=this.type===O.name?this.parseIdent():null),this.parseFunctionParams(e),this.parseFunctionBody(e,i,!1,a),this.yieldPos=c,this.awaitPos=l,this.awaitIdentPos=y,this.finishNode(e,t&pe?\"FunctionDeclaration\":\"FunctionExpression\")},oe.parseFunctionParams=function(e){this.expect(O.parenL),e.params=this.parseBindingList(O.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams()},oe.parseClass=function(e,t){this.next();var i=this.strict;this.strict=!0,this.parseClassId(e,t),this.parseClassSuper(e);var n=this.enterClassBody(),a=this.startNode(),c=!1;for(a.body=[],this.expect(O.braceL);this.type!==O.braceR;){var l=this.parseClassElement(null!==e.superClass);l&&(a.body.push(l),\"MethodDefinition\"===l.type&&\"constructor\"===l.kind?(c&&this.raiseRecoverable(l.start,\"Duplicate constructor in the same class\"),c=!0):l.key&&\"PrivateIdentifier\"===l.key.type&&isPrivateNameConflicted(n,l)&&this.raiseRecoverable(l.key.start,\"Identifier '#\"+l.key.name+\"' has already been declared\"))}return this.strict=i,this.next(),e.body=this.finishNode(a,\"ClassBody\"),this.exitClassBody(),this.finishNode(e,t?\"ClassDeclaration\":\"ClassExpression\")},oe.parseClassElement=function(e){if(this.eat(O.semi))return null;var t=this.options.ecmaVersion,i=this.startNode(),n=\"\",a=!1,c=!1,l=\"method\",y=!1;if(this.eatContextual(\"static\")){if(t>=13&&this.eat(O.braceL))return this.parseClassStaticBlock(i),i;this.isClassElementNameStart()||this.type===O.star?y=!0:n=\"static\"}if(i.static=y,!n&&t>=8&&this.eatContextual(\"async\")&&(!this.isClassElementNameStart()&&this.type!==O.star||this.canInsertSemicolon()?n=\"async\":c=!0),!n&&(t>=9||!c)&&this.eat(O.star)&&(a=!0),!n&&!c&&!a){var E=this.value;(this.eatContextual(\"get\")||this.eatContextual(\"set\"))&&(this.isClassElementNameStart()?l=E:n=E)}if(n?(i.computed=!1,i.key=this.startNodeAt(this.lastTokStart,this.lastTokStartLoc),i.key.name=n,this.finishNode(i.key,\"Identifier\")):this.parseClassElementName(i),t<13||this.type===O.parenL||\"method\"!==l||a||c){var w=!i.static&&checkKeyName(i,\"constructor\"),C=w&&e;w&&\"method\"!==l&&this.raise(i.key.start,\"Constructor can't have get/set modifier\"),i.kind=w?\"constructor\":l,this.parseClassMethod(i,a,c,C)}else this.parseClassField(i);return i},oe.isClassElementNameStart=function(){return this.type===O.name||this.type===O.privateId||this.type===O.num||this.type===O.string||this.type===O.bracketL||this.type.keyword},oe.parseClassElementName=function(e){this.type===O.privateId?(\"constructor\"===this.value&&this.raise(this.start,\"Classes can't have an element named '#constructor'\"),e.computed=!1,e.key=this.parsePrivateIdent()):this.parsePropertyName(e)},oe.parseClassMethod=function(e,t,i,n){var a=e.key;\"constructor\"===e.kind?(t&&this.raise(a.start,\"Constructor can't be a generator\"),i&&this.raise(a.start,\"Constructor can't be an async method\")):e.static&&checkKeyName(e,\"prototype\")&&this.raise(a.start,\"Classes may not have a static property named prototype\");var c=e.value=this.parseMethod(t,i,n);return\"get\"===e.kind&&0!==c.params.length&&this.raiseRecoverable(c.start,\"getter should have no params\"),\"set\"===e.kind&&1!==c.params.length&&this.raiseRecoverable(c.start,\"setter should have exactly one param\"),\"set\"===e.kind&&\"RestElement\"===c.params[0].type&&this.raiseRecoverable(c.params[0].start,\"Setter cannot use rest params\"),this.finishNode(e,\"MethodDefinition\")},oe.parseClassField=function(e){return checkKeyName(e,\"constructor\")?this.raise(e.key.start,\"Classes can't have a field named 'constructor'\"):e.static&&checkKeyName(e,\"prototype\")&&this.raise(e.key.start,\"Classes can't have a static field named 'prototype'\"),this.eat(O.eq)?(this.enterScope(576),e.value=this.parseMaybeAssign(),this.exitScope()):e.value=null,this.semicolon(),this.finishNode(e,\"PropertyDefinition\")},oe.parseClassStaticBlock=function(e){e.body=[];var t=this.labels;for(this.labels=[],this.enterScope(320);this.type!==O.braceR;){var i=this.parseStatement(null);e.body.push(i)}return this.next(),this.exitScope(),this.labels=t,this.finishNode(e,\"StaticBlock\")},oe.parseClassId=function(e,t){this.type===O.name?(e.id=this.parseIdent(),t&&this.checkLValSimple(e.id,2,!1)):(!0===t&&this.unexpected(),e.id=null)},oe.parseClassSuper=function(e){e.superClass=this.eat(O._extends)?this.parseExprSubscripts(null,!1):null},oe.enterClassBody=function(){var e={declared:Object.create(null),used:[]};return this.privateNameStack.push(e),e.declared},oe.exitClassBody=function(){var e=this.privateNameStack.pop(),t=e.declared,i=e.used;if(this.options.checkPrivateFields)for(var n=this.privateNameStack.length,a=0===n?null:this.privateNameStack[n-1],c=0;c<i.length;++c){var l=i[c];H(t,l.name)||(a?a.used.push(l):this.raiseRecoverable(l.start,\"Private field '#\"+l.name+\"' must be declared in an enclosing class\"))}},oe.parseExportAllDeclaration=function(e,t){return this.options.ecmaVersion>=11&&(this.eatContextual(\"as\")?(e.exported=this.parseModuleExportName(),this.checkExport(t,e.exported,this.lastTokStart)):e.exported=null),this.expectContextual(\"from\"),this.type!==O.string&&this.unexpected(),e.source=this.parseExprAtom(),this.options.ecmaVersion>=16&&(e.attributes=this.parseWithClause()),this.semicolon(),this.finishNode(e,\"ExportAllDeclaration\")},oe.parseExport=function(e,t){if(this.next(),this.eat(O.star))return this.parseExportAllDeclaration(e,t);if(this.eat(O._default))return this.checkExport(t,\"default\",this.lastTokStart),e.declaration=this.parseExportDefaultDeclaration(),this.finishNode(e,\"ExportDefaultDeclaration\");if(this.shouldParseExportStatement())e.declaration=this.parseExportDeclaration(e),\"VariableDeclaration\"===e.declaration.type?this.checkVariableExport(t,e.declaration.declarations):this.checkExport(t,e.declaration.id,e.declaration.id.start),e.specifiers=[],e.source=null,this.options.ecmaVersion>=16&&(e.attributes=[]);else{if(e.declaration=null,e.specifiers=this.parseExportSpecifiers(t),this.eatContextual(\"from\"))this.type!==O.string&&this.unexpected(),e.source=this.parseExprAtom(),this.options.ecmaVersion>=16&&(e.attributes=this.parseWithClause());else{for(var i=0,n=e.specifiers;i<n.length;i+=1){var a=n[i];this.checkUnreserved(a.local),this.checkLocalExport(a.local),\"Literal\"===a.local.type&&this.raise(a.local.start,\"A string literal cannot be used as an exported binding without `from`.\")}e.source=null,this.options.ecmaVersion>=16&&(e.attributes=[])}this.semicolon()}return this.finishNode(e,\"ExportNamedDeclaration\")},oe.parseExportDeclaration=function(e){return this.parseStatement(null)},oe.parseExportDefaultDeclaration=function(){var e;if(this.type===O._function||(e=this.isAsyncFunction())){var t=this.startNode();return this.next(),e&&this.next(),this.parseFunction(t,4|pe,!1,e)}if(this.type===O._class){var i=this.startNode();return this.parseClass(i,\"nullableID\")}var n=this.parseMaybeAssign();return this.semicolon(),n},oe.checkExport=function(e,t,i){e&&(\"string\"!=typeof t&&(t=\"Identifier\"===t.type?t.name:t.value),H(e,t)&&this.raiseRecoverable(i,\"Duplicate export '\"+t+\"'\"),e[t]=!0)},oe.checkPatternExport=function(e,t){var i=t.type;if(\"Identifier\"===i)this.checkExport(e,t,t.start);else if(\"ObjectPattern\"===i)for(var n=0,a=t.properties;n<a.length;n+=1){var c=a[n];this.checkPatternExport(e,c)}else if(\"ArrayPattern\"===i)for(var l=0,y=t.elements;l<y.length;l+=1){var E=y[l];E&&this.checkPatternExport(e,E)}else\"Property\"===i?this.checkPatternExport(e,t.value):\"AssignmentPattern\"===i?this.checkPatternExport(e,t.left):\"RestElement\"===i&&this.checkPatternExport(e,t.argument)},oe.checkVariableExport=function(e,t){if(e)for(var i=0,n=t;i<n.length;i+=1){var a=n[i];this.checkPatternExport(e,a.id)}},oe.shouldParseExportStatement=function(){return\"var\"===this.type.keyword||\"const\"===this.type.keyword||\"class\"===this.type.keyword||\"function\"===this.type.keyword||this.isLet()||this.isAsyncFunction()},oe.parseExportSpecifier=function(e){var t=this.startNode();return t.local=this.parseModuleExportName(),t.exported=this.eatContextual(\"as\")?this.parseModuleExportName():t.local,this.checkExport(e,t.exported,t.exported.start),this.finishNode(t,\"ExportSpecifier\")},oe.parseExportSpecifiers=function(e){var t=[],i=!0;for(this.expect(O.braceL);!this.eat(O.braceR);){if(i)i=!1;else if(this.expect(O.comma),this.afterTrailingComma(O.braceR))break;t.push(this.parseExportSpecifier(e))}return t},oe.parseImport=function(e){return this.next(),this.type===O.string?(e.specifiers=le,e.source=this.parseExprAtom()):(e.specifiers=this.parseImportSpecifiers(),this.expectContextual(\"from\"),e.source=this.type===O.string?this.parseExprAtom():this.unexpected()),this.options.ecmaVersion>=16&&(e.attributes=this.parseWithClause()),this.semicolon(),this.finishNode(e,\"ImportDeclaration\")},oe.parseImportSpecifier=function(){var e=this.startNode();return e.imported=this.parseModuleExportName(),this.eatContextual(\"as\")?e.local=this.parseIdent():(this.checkUnreserved(e.imported),e.local=e.imported),this.checkLValSimple(e.local,2),this.finishNode(e,\"ImportSpecifier\")},oe.parseImportDefaultSpecifier=function(){var e=this.startNode();return e.local=this.parseIdent(),this.checkLValSimple(e.local,2),this.finishNode(e,\"ImportDefaultSpecifier\")},oe.parseImportNamespaceSpecifier=function(){var e=this.startNode();return this.next(),this.expectContextual(\"as\"),e.local=this.parseIdent(),this.checkLValSimple(e.local,2),this.finishNode(e,\"ImportNamespaceSpecifier\")},oe.parseImportSpecifiers=function(){var e=[],t=!0;if(this.type===O.name&&(e.push(this.parseImportDefaultSpecifier()),!this.eat(O.comma)))return e;if(this.type===O.star)return e.push(this.parseImportNamespaceSpecifier()),e;for(this.expect(O.braceL);!this.eat(O.braceR);){if(t)t=!1;else if(this.expect(O.comma),this.afterTrailingComma(O.braceR))break;e.push(this.parseImportSpecifier())}return e},oe.parseWithClause=function(){var e=[];if(!this.eat(O._with))return e;this.expect(O.braceL);for(var t={},i=!0;!this.eat(O.braceR);){if(i)i=!1;else if(this.expect(O.comma),this.afterTrailingComma(O.braceR))break;var n=this.parseImportAttribute(),a=\"Identifier\"===n.key.type?n.key.name:n.key.value;H(t,a)&&this.raiseRecoverable(n.key.start,\"Duplicate attribute key '\"+a+\"'\"),t[a]=!0,e.push(n)}return e},oe.parseImportAttribute=function(){var e=this.startNode();return e.key=this.type===O.string?this.parseExprAtom():this.parseIdent(\"never\"!==this.options.allowReserved),this.expect(O.colon),this.type!==O.string&&this.unexpected(),e.value=this.parseExprAtom(),this.finishNode(e,\"ImportAttribute\")},oe.parseModuleExportName=function(){if(this.options.ecmaVersion>=13&&this.type===O.string){var e=this.parseLiteral(this.value);return Z.test(e.value)&&this.raise(e.start,\"An export name cannot include a lone surrogate.\"),e}return this.parseIdent(!0)},oe.adaptDirectivePrologue=function(e){for(var t=0;t<e.length&&this.isDirectiveCandidate(e[t]);++t)e[t].directive=e[t].expression.raw.slice(1,-1)},oe.isDirectiveCandidate=function(e){return this.options.ecmaVersion>=5&&\"ExpressionStatement\"===e.type&&\"Literal\"===e.expression.type&&\"string\"==typeof e.expression.value&&('\"'===this.input[e.start]||\"'\"===this.input[e.start])};var de=acorn_Parser.prototype;de.toAssignable=function(e,t,i){if(this.options.ecmaVersion>=6&&e)switch(e.type){case\"Identifier\":this.inAsync&&\"await\"===e.name&&this.raise(e.start,\"Cannot use 'await' as identifier inside an async function\");break;case\"ObjectPattern\":case\"ArrayPattern\":case\"AssignmentPattern\":case\"RestElement\":break;case\"ObjectExpression\":e.type=\"ObjectPattern\",i&&this.checkPatternErrors(i,!0);for(var n=0,a=e.properties;n<a.length;n+=1){var c=a[n];this.toAssignable(c,t),\"RestElement\"!==c.type||\"ArrayPattern\"!==c.argument.type&&\"ObjectPattern\"!==c.argument.type||this.raise(c.argument.start,\"Unexpected token\")}break;case\"Property\":\"init\"!==e.kind&&this.raise(e.key.start,\"Object pattern can't contain getter or setter\"),this.toAssignable(e.value,t);break;case\"ArrayExpression\":e.type=\"ArrayPattern\",i&&this.checkPatternErrors(i,!0),this.toAssignableList(e.elements,t);break;case\"SpreadElement\":e.type=\"RestElement\",this.toAssignable(e.argument,t),\"AssignmentPattern\"===e.argument.type&&this.raise(e.argument.start,\"Rest elements cannot have a default value\");break;case\"AssignmentExpression\":\"=\"!==e.operator&&this.raise(e.left.end,\"Only '=' operator can be used for specifying default value.\"),e.type=\"AssignmentPattern\",delete e.operator,this.toAssignable(e.left,t);break;case\"ParenthesizedExpression\":this.toAssignable(e.expression,t,i);break;case\"ChainExpression\":this.raiseRecoverable(e.start,\"Optional chaining cannot appear in left-hand side\");break;case\"MemberExpression\":if(!t)break;default:this.raise(e.start,\"Assigning to rvalue\")}else i&&this.checkPatternErrors(i,!0);return e},de.toAssignableList=function(e,t){for(var i=e.length,n=0;n<i;n++){var a=e[n];a&&this.toAssignable(a,t)}if(i){var c=e[i-1];6===this.options.ecmaVersion&&t&&c&&\"RestElement\"===c.type&&\"Identifier\"!==c.argument.type&&this.unexpected(c.argument.start)}return e},de.parseSpread=function(e){var t=this.startNode();return this.next(),t.argument=this.parseMaybeAssign(!1,e),this.finishNode(t,\"SpreadElement\")},de.parseRestBinding=function(){var e=this.startNode();return this.next(),6===this.options.ecmaVersion&&this.type!==O.name&&this.unexpected(),e.argument=this.parseBindingAtom(),this.finishNode(e,\"RestElement\")},de.parseBindingAtom=function(){if(this.options.ecmaVersion>=6)switch(this.type){case O.bracketL:var e=this.startNode();return this.next(),e.elements=this.parseBindingList(O.bracketR,!0,!0),this.finishNode(e,\"ArrayPattern\");case O.braceL:return this.parseObj(!0)}return this.parseIdent()},de.parseBindingList=function(e,t,i,n){for(var a=[],c=!0;!this.eat(e);)if(c?c=!1:this.expect(O.comma),t&&this.type===O.comma)a.push(null);else{if(i&&this.afterTrailingComma(e))break;if(this.type===O.ellipsis){var l=this.parseRestBinding();this.parseBindingListItem(l),a.push(l),this.type===O.comma&&this.raiseRecoverable(this.start,\"Comma is not permitted after the rest element\"),this.expect(e);break}a.push(this.parseAssignableListItem(n))}return a},de.parseAssignableListItem=function(e){var t=this.parseMaybeDefault(this.start,this.startLoc);return this.parseBindingListItem(t),t},de.parseBindingListItem=function(e){return e},de.parseMaybeDefault=function(e,t,i){if(i=i||this.parseBindingAtom(),this.options.ecmaVersion<6||!this.eat(O.eq))return i;var n=this.startNodeAt(e,t);return n.left=i,n.right=this.parseMaybeAssign(),this.finishNode(n,\"AssignmentPattern\")},de.checkLValSimple=function(e,t,i){void 0===t&&(t=0);var n=0!==t;switch(e.type){case\"Identifier\":this.strict&&this.reservedWordsStrictBind.test(e.name)&&this.raiseRecoverable(e.start,(n?\"Binding \":\"Assigning to \")+e.name+\" in strict mode\"),n&&(2===t&&\"let\"===e.name&&this.raiseRecoverable(e.start,\"let is disallowed as a lexically bound name\"),i&&(H(i,e.name)&&this.raiseRecoverable(e.start,\"Argument name clash\"),i[e.name]=!0),5!==t&&this.declareName(e.name,t,e.start));break;case\"ChainExpression\":this.raiseRecoverable(e.start,\"Optional chaining cannot appear in left-hand side\");break;case\"MemberExpression\":n&&this.raiseRecoverable(e.start,\"Binding member expression\");break;case\"ParenthesizedExpression\":return n&&this.raiseRecoverable(e.start,\"Binding parenthesized expression\"),this.checkLValSimple(e.expression,t,i);default:this.raise(e.start,(n?\"Binding\":\"Assigning to\")+\" rvalue\")}},de.checkLValPattern=function(e,t,i){switch(void 0===t&&(t=0),e.type){case\"ObjectPattern\":for(var n=0,a=e.properties;n<a.length;n+=1){var c=a[n];this.checkLValInnerPattern(c,t,i)}break;case\"ArrayPattern\":for(var l=0,y=e.elements;l<y.length;l+=1){var E=y[l];E&&this.checkLValInnerPattern(E,t,i)}break;default:this.checkLValSimple(e,t,i)}},de.checkLValInnerPattern=function(e,t,i){switch(void 0===t&&(t=0),e.type){case\"Property\":this.checkLValInnerPattern(e.value,t,i);break;case\"AssignmentPattern\":this.checkLValPattern(e.left,t,i);break;case\"RestElement\":this.checkLValPattern(e.argument,t,i);break;default:this.checkLValPattern(e,t,i)}};var acorn_TokContext=function(e,t,i,n,a){this.token=e,this.isExpr=!!t,this.preserveSpace=!!i,this.override=n,this.generator=!!a},fe={b_stat:new acorn_TokContext(\"{\",!1),b_expr:new acorn_TokContext(\"{\",!0),b_tmpl:new acorn_TokContext(\"${\",!1),p_stat:new acorn_TokContext(\"(\",!1),p_expr:new acorn_TokContext(\"(\",!0),q_tmpl:new acorn_TokContext(\"`\",!0,!0,function(e){return e.tryReadTemplateToken()}),f_stat:new acorn_TokContext(\"function\",!1),f_expr:new acorn_TokContext(\"function\",!0),f_expr_gen:new acorn_TokContext(\"function\",!0,!1,null,!0),f_gen:new acorn_TokContext(\"function\",!1,!1,null,!0)},me=acorn_Parser.prototype;me.initialContext=function(){return[fe.b_stat]},me.curContext=function(){return this.context[this.context.length-1]},me.braceIsBlock=function(e){var t=this.curContext();return t===fe.f_expr||t===fe.f_stat||(e!==O.colon||t!==fe.b_stat&&t!==fe.b_expr?e===O._return||e===O.name&&this.exprAllowed?j.test(this.input.slice(this.lastTokEnd,this.start)):e===O._else||e===O.semi||e===O.eof||e===O.parenR||e===O.arrow||(e===O.braceL?t===fe.b_stat:e!==O._var&&e!==O._const&&e!==O.name&&!this.exprAllowed):!t.isExpr)},me.inGeneratorContext=function(){for(var e=this.context.length-1;e>=1;e--){var t=this.context[e];if(\"function\"===t.token)return t.generator}return!1},me.updateContext=function(e){var t,i=this.type;i.keyword&&e===O.dot?this.exprAllowed=!1:(t=i.updateContext)?t.call(this,e):this.exprAllowed=i.beforeExpr},me.overrideContext=function(e){this.curContext()!==e&&(this.context[this.context.length-1]=e)},O.parenR.updateContext=O.braceR.updateContext=function(){if(1!==this.context.length){var e=this.context.pop();e===fe.b_stat&&\"function\"===this.curContext().token&&(e=this.context.pop()),this.exprAllowed=!e.isExpr}else this.exprAllowed=!0},O.braceL.updateContext=function(e){this.context.push(this.braceIsBlock(e)?fe.b_stat:fe.b_expr),this.exprAllowed=!0},O.dollarBraceL.updateContext=function(){this.context.push(fe.b_tmpl),this.exprAllowed=!0},O.parenL.updateContext=function(e){var t=e===O._if||e===O._for||e===O._with||e===O._while;this.context.push(t?fe.p_stat:fe.p_expr),this.exprAllowed=!0},O.incDec.updateContext=function(){},O._function.updateContext=O._class.updateContext=function(e){!e.beforeExpr||e===O._else||e===O.semi&&this.curContext()!==fe.p_stat||e===O._return&&j.test(this.input.slice(this.lastTokEnd,this.start))||(e===O.colon||e===O.braceL)&&this.curContext()===fe.b_stat?this.context.push(fe.f_stat):this.context.push(fe.f_expr),this.exprAllowed=!1},O.colon.updateContext=function(){\"function\"===this.curContext().token&&this.context.pop(),this.exprAllowed=!0},O.backQuote.updateContext=function(){this.curContext()===fe.q_tmpl?this.context.pop():this.context.push(fe.q_tmpl),this.exprAllowed=!1},O.star.updateContext=function(e){if(e===O._function){var t=this.context.length-1;this.context[t]===fe.f_expr?this.context[t]=fe.f_expr_gen:this.context[t]=fe.f_gen}this.exprAllowed=!0},O.name.updateContext=function(e){var t=!1;this.options.ecmaVersion>=6&&e!==O.dot&&(\"of\"===this.value&&!this.exprAllowed||\"yield\"===this.value&&this.inGeneratorContext())&&(t=!0),this.exprAllowed=t};var ge=acorn_Parser.prototype;function isLocalVariableAccess(e){return\"Identifier\"===e.type||\"ParenthesizedExpression\"===e.type&&isLocalVariableAccess(e.expression)}function isPrivateFieldAccess(e){return\"MemberExpression\"===e.type&&\"PrivateIdentifier\"===e.property.type||\"ChainExpression\"===e.type&&isPrivateFieldAccess(e.expression)||\"ParenthesizedExpression\"===e.type&&isPrivateFieldAccess(e.expression)}ge.checkPropClash=function(e,t,i){if(!(this.options.ecmaVersion>=9&&\"SpreadElement\"===e.type||this.options.ecmaVersion>=6&&(e.computed||e.method||e.shorthand))){var n,a=e.key;switch(a.type){case\"Identifier\":n=a.name;break;case\"Literal\":n=String(a.value);break;default:return}var c=e.kind;if(this.options.ecmaVersion>=6)\"__proto__\"===n&&\"init\"===c&&(t.proto&&(i?i.doubleProto<0&&(i.doubleProto=a.start):this.raiseRecoverable(a.start,\"Redefinition of __proto__ property\")),t.proto=!0);else{var l=t[n=\"$\"+n];if(l)(\"init\"===c?this.strict&&l.init||l.get||l.set:l.init||l[c])&&this.raiseRecoverable(a.start,\"Redefinition of property\");else l=t[n]={init:!1,get:!1,set:!1};l[c]=!0}}},ge.parseExpression=function(e,t){var i=this.start,n=this.startLoc,a=this.parseMaybeAssign(e,t);if(this.type===O.comma){var c=this.startNodeAt(i,n);for(c.expressions=[a];this.eat(O.comma);)c.expressions.push(this.parseMaybeAssign(e,t));return this.finishNode(c,\"SequenceExpression\")}return a},ge.parseMaybeAssign=function(e,t,i){if(this.isContextual(\"yield\")){if(this.inGenerator)return this.parseYield(e);this.exprAllowed=!1}var n=!1,a=-1,c=-1,l=-1;t?(a=t.parenthesizedAssign,c=t.trailingComma,l=t.doubleProto,t.parenthesizedAssign=t.trailingComma=-1):(t=new acorn_DestructuringErrors,n=!0);var y=this.start,E=this.startLoc;this.type!==O.parenL&&this.type!==O.name||(this.potentialArrowAt=this.start,this.potentialArrowInForAwait=\"await\"===e);var w=this.parseMaybeConditional(e,t);if(i&&(w=i.call(this,w,y,E)),this.type.isAssign){var C=this.startNodeAt(y,E);return C.operator=this.value,this.type===O.eq&&(w=this.toAssignable(w,!1,t)),n||(t.parenthesizedAssign=t.trailingComma=t.doubleProto=-1),t.shorthandAssign>=w.start&&(t.shorthandAssign=-1),this.type===O.eq?this.checkLValPattern(w):this.checkLValSimple(w),C.left=w,this.next(),C.right=this.parseMaybeAssign(e),l>-1&&(t.doubleProto=l),this.finishNode(C,\"AssignmentExpression\")}return n&&this.checkExpressionErrors(t,!0),a>-1&&(t.parenthesizedAssign=a),c>-1&&(t.trailingComma=c),w},ge.parseMaybeConditional=function(e,t){var i=this.start,n=this.startLoc,a=this.parseExprOps(e,t);if(this.checkExpressionErrors(t))return a;if(this.eat(O.question)){var c=this.startNodeAt(i,n);return c.test=a,c.consequent=this.parseMaybeAssign(),this.expect(O.colon),c.alternate=this.parseMaybeAssign(e),this.finishNode(c,\"ConditionalExpression\")}return a},ge.parseExprOps=function(e,t){var i=this.start,n=this.startLoc,a=this.parseMaybeUnary(t,!1,!1,e);return this.checkExpressionErrors(t)||a.start===i&&\"ArrowFunctionExpression\"===a.type?a:this.parseExprOp(a,i,n,-1,e)},ge.parseExprOp=function(e,t,i,n,a){var c=this.type.binop;if(null!=c&&(!a||this.type!==O._in)&&c>n){var l=this.type===O.logicalOR||this.type===O.logicalAND,y=this.type===O.coalesce;y&&(c=O.logicalAND.binop);var E=this.value;this.next();var w=this.start,C=this.startLoc,S=this.parseExprOp(this.parseMaybeUnary(null,!1,!1,a),w,C,c,a),I=this.buildBinary(t,i,e,S,E,l||y);return(l&&this.type===O.coalesce||y&&(this.type===O.logicalOR||this.type===O.logicalAND))&&this.raiseRecoverable(this.start,\"Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses\"),this.parseExprOp(I,t,i,n,a)}return e},ge.buildBinary=function(e,t,i,n,a,c){\"PrivateIdentifier\"===n.type&&this.raise(n.start,\"Private identifier can only be left side of binary expression\");var l=this.startNodeAt(e,t);return l.left=i,l.operator=a,l.right=n,this.finishNode(l,c?\"LogicalExpression\":\"BinaryExpression\")},ge.parseMaybeUnary=function(e,t,i,n){var a,c=this.start,l=this.startLoc;if(this.isContextual(\"await\")&&this.canAwait)a=this.parseAwait(n),t=!0;else if(this.type.prefix){var y=this.startNode(),E=this.type===O.incDec;y.operator=this.value,y.prefix=!0,this.next(),y.argument=this.parseMaybeUnary(null,!0,E,n),this.checkExpressionErrors(e,!0),E?this.checkLValSimple(y.argument):this.strict&&\"delete\"===y.operator&&isLocalVariableAccess(y.argument)?this.raiseRecoverable(y.start,\"Deleting local variable in strict mode\"):\"delete\"===y.operator&&isPrivateFieldAccess(y.argument)?this.raiseRecoverable(y.start,\"Private fields can not be deleted\"):t=!0,a=this.finishNode(y,E?\"UpdateExpression\":\"UnaryExpression\")}else if(t||this.type!==O.privateId){if(a=this.parseExprSubscripts(e,n),this.checkExpressionErrors(e))return a;for(;this.type.postfix&&!this.canInsertSemicolon();){var w=this.startNodeAt(c,l);w.operator=this.value,w.prefix=!1,w.argument=a,this.checkLValSimple(a),this.next(),a=this.finishNode(w,\"UpdateExpression\")}}else(n||0===this.privateNameStack.length)&&this.options.checkPrivateFields&&this.unexpected(),a=this.parsePrivateIdent(),this.type!==O._in&&this.unexpected();return i||!this.eat(O.starstar)?a:t?void this.unexpected(this.lastTokStart):this.buildBinary(c,l,a,this.parseMaybeUnary(null,!1,!1,n),\"**\",!1)},ge.parseExprSubscripts=function(e,t){var i=this.start,n=this.startLoc,a=this.parseExprAtom(e,t);if(\"ArrowFunctionExpression\"===a.type&&\")\"!==this.input.slice(this.lastTokStart,this.lastTokEnd))return a;var c=this.parseSubscripts(a,i,n,!1,t);return e&&\"MemberExpression\"===c.type&&(e.parenthesizedAssign>=c.start&&(e.parenthesizedAssign=-1),e.parenthesizedBind>=c.start&&(e.parenthesizedBind=-1),e.trailingComma>=c.start&&(e.trailingComma=-1)),c},ge.parseSubscripts=function(e,t,i,n,a){for(var c=this.options.ecmaVersion>=8&&\"Identifier\"===e.type&&\"async\"===e.name&&this.lastTokEnd===e.end&&!this.canInsertSemicolon()&&e.end-e.start===5&&this.potentialArrowAt===e.start,l=!1;;){var y=this.parseSubscript(e,t,i,n,c,l,a);if(y.optional&&(l=!0),y===e||\"ArrowFunctionExpression\"===y.type){if(l){var E=this.startNodeAt(t,i);E.expression=y,y=this.finishNode(E,\"ChainExpression\")}return y}e=y}},ge.shouldParseAsyncArrow=function(){return!this.canInsertSemicolon()&&this.eat(O.arrow)},ge.parseSubscriptAsyncArrow=function(e,t,i,n){return this.parseArrowExpression(this.startNodeAt(e,t),i,!0,n)},ge.parseSubscript=function(e,t,i,n,a,c,l){var y=this.options.ecmaVersion>=11,E=y&&this.eat(O.questionDot);n&&E&&this.raise(this.lastTokStart,\"Optional chaining cannot appear in the callee of new expressions\");var w=this.eat(O.bracketL);if(w||E&&this.type!==O.parenL&&this.type!==O.backQuote||this.eat(O.dot)){var C=this.startNodeAt(t,i);C.object=e,w?(C.property=this.parseExpression(),this.expect(O.bracketR)):this.type===O.privateId&&\"Super\"!==e.type?C.property=this.parsePrivateIdent():C.property=this.parseIdent(\"never\"!==this.options.allowReserved),C.computed=!!w,y&&(C.optional=E),e=this.finishNode(C,\"MemberExpression\")}else if(!n&&this.eat(O.parenL)){var S=new acorn_DestructuringErrors,I=this.yieldPos,N=this.awaitPos,j=this.awaitIdentPos;this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0;var F=this.parseExprList(O.parenR,this.options.ecmaVersion>=8,!1,S);if(a&&!E&&this.shouldParseAsyncArrow())return this.checkPatternErrors(S,!1),this.checkYieldAwaitInDefaultParams(),this.awaitIdentPos>0&&this.raise(this.awaitIdentPos,\"Cannot use 'await' as identifier inside an async function\"),this.yieldPos=I,this.awaitPos=N,this.awaitIdentPos=j,this.parseSubscriptAsyncArrow(t,i,F,l);this.checkExpressionErrors(S,!0),this.yieldPos=I||this.yieldPos,this.awaitPos=N||this.awaitPos,this.awaitIdentPos=j||this.awaitIdentPos;var B=this.startNodeAt(t,i);B.callee=e,B.arguments=F,y&&(B.optional=E),e=this.finishNode(B,\"CallExpression\")}else if(this.type===O.backQuote){(E||c)&&this.raise(this.start,\"Optional chaining cannot appear in the tag of tagged template expressions\");var $=this.startNodeAt(t,i);$.tag=e,$.quasi=this.parseTemplate({isTagged:!0}),e=this.finishNode($,\"TaggedTemplateExpression\")}return e},ge.parseExprAtom=function(e,t,i){this.type===O.slash&&this.readRegexp();var n,a=this.potentialArrowAt===this.start;switch(this.type){case O._super:return this.allowSuper||this.raise(this.start,\"'super' keyword outside a method\"),n=this.startNode(),this.next(),this.type!==O.parenL||this.allowDirectSuper||this.raise(n.start,\"super() call outside constructor of a subclass\"),this.type!==O.dot&&this.type!==O.bracketL&&this.type!==O.parenL&&this.unexpected(),this.finishNode(n,\"Super\");case O._this:return n=this.startNode(),this.next(),this.finishNode(n,\"ThisExpression\");case O.name:var c=this.start,l=this.startLoc,y=this.containsEsc,E=this.parseIdent(!1);if(this.options.ecmaVersion>=8&&!y&&\"async\"===E.name&&!this.canInsertSemicolon()&&this.eat(O._function))return this.overrideContext(fe.f_expr),this.parseFunction(this.startNodeAt(c,l),0,!1,!0,t);if(a&&!this.canInsertSemicolon()){if(this.eat(O.arrow))return this.parseArrowExpression(this.startNodeAt(c,l),[E],!1,t);if(this.options.ecmaVersion>=8&&\"async\"===E.name&&this.type===O.name&&!y&&(!this.potentialArrowInForAwait||\"of\"!==this.value||this.containsEsc))return E=this.parseIdent(!1),!this.canInsertSemicolon()&&this.eat(O.arrow)||this.unexpected(),this.parseArrowExpression(this.startNodeAt(c,l),[E],!0,t)}return E;case O.regexp:var w=this.value;return(n=this.parseLiteral(w.value)).regex={pattern:w.pattern,flags:w.flags},n;case O.num:case O.string:return this.parseLiteral(this.value);case O._null:case O._true:case O._false:return(n=this.startNode()).value=this.type===O._null?null:this.type===O._true,n.raw=this.type.keyword,this.next(),this.finishNode(n,\"Literal\");case O.parenL:var C=this.start,S=this.parseParenAndDistinguishExpression(a,t);return e&&(e.parenthesizedAssign<0&&!this.isSimpleAssignTarget(S)&&(e.parenthesizedAssign=C),e.parenthesizedBind<0&&(e.parenthesizedBind=C)),S;case O.bracketL:return n=this.startNode(),this.next(),n.elements=this.parseExprList(O.bracketR,!0,!0,e),this.finishNode(n,\"ArrayExpression\");case O.braceL:return this.overrideContext(fe.b_expr),this.parseObj(!1,e);case O._function:return n=this.startNode(),this.next(),this.parseFunction(n,0);case O._class:return this.parseClass(this.startNode(),!1);case O._new:return this.parseNew();case O.backQuote:return this.parseTemplate();case O._import:return this.options.ecmaVersion>=11?this.parseExprImport(i):this.unexpected();default:return this.parseExprAtomDefault()}},ge.parseExprAtomDefault=function(){this.unexpected()},ge.parseExprImport=function(e){var t=this.startNode();if(this.containsEsc&&this.raiseRecoverable(this.start,\"Escape sequence in keyword import\"),this.next(),this.type===O.parenL&&!e)return this.parseDynamicImport(t);if(this.type===O.dot){var i=this.startNodeAt(t.start,t.loc&&t.loc.start);return i.name=\"import\",t.meta=this.finishNode(i,\"Identifier\"),this.parseImportMeta(t)}this.unexpected()},ge.parseDynamicImport=function(e){if(this.next(),e.source=this.parseMaybeAssign(),this.options.ecmaVersion>=16)this.eat(O.parenR)?e.options=null:(this.expect(O.comma),this.afterTrailingComma(O.parenR)?e.options=null:(e.options=this.parseMaybeAssign(),this.eat(O.parenR)||(this.expect(O.comma),this.afterTrailingComma(O.parenR)||this.unexpected())));else if(!this.eat(O.parenR)){var t=this.start;this.eat(O.comma)&&this.eat(O.parenR)?this.raiseRecoverable(t,\"Trailing comma is not allowed in import()\"):this.unexpected(t)}return this.finishNode(e,\"ImportExpression\")},ge.parseImportMeta=function(e){this.next();var t=this.containsEsc;return e.property=this.parseIdent(!0),\"meta\"!==e.property.name&&this.raiseRecoverable(e.property.start,\"The only valid meta property for import is 'import.meta'\"),t&&this.raiseRecoverable(e.start,\"'import.meta' must not contain escaped characters\"),\"module\"===this.options.sourceType||this.options.allowImportExportEverywhere||this.raiseRecoverable(e.start,\"Cannot use 'import.meta' outside a module\"),this.finishNode(e,\"MetaProperty\")},ge.parseLiteral=function(e){var t=this.startNode();return t.value=e,t.raw=this.input.slice(this.start,this.end),110===t.raw.charCodeAt(t.raw.length-1)&&(t.bigint=null!=t.value?t.value.toString():t.raw.slice(0,-1).replace(/_/g,\"\")),this.next(),this.finishNode(t,\"Literal\")},ge.parseParenExpression=function(){this.expect(O.parenL);var e=this.parseExpression();return this.expect(O.parenR),e},ge.shouldParseArrow=function(e){return!this.canInsertSemicolon()},ge.parseParenAndDistinguishExpression=function(e,t){var i,n=this.start,a=this.startLoc,c=this.options.ecmaVersion>=8;if(this.options.ecmaVersion>=6){this.next();var l,y=this.start,E=this.startLoc,w=[],C=!0,S=!1,I=new acorn_DestructuringErrors,N=this.yieldPos,j=this.awaitPos;for(this.yieldPos=0,this.awaitPos=0;this.type!==O.parenR;){if(C?C=!1:this.expect(O.comma),c&&this.afterTrailingComma(O.parenR,!0)){S=!0;break}if(this.type===O.ellipsis){l=this.start,w.push(this.parseParenItem(this.parseRestBinding())),this.type===O.comma&&this.raiseRecoverable(this.start,\"Comma is not permitted after the rest element\");break}w.push(this.parseMaybeAssign(!1,I,this.parseParenItem))}var F=this.lastTokEnd,B=this.lastTokEndLoc;if(this.expect(O.parenR),e&&this.shouldParseArrow(w)&&this.eat(O.arrow))return this.checkPatternErrors(I,!1),this.checkYieldAwaitInDefaultParams(),this.yieldPos=N,this.awaitPos=j,this.parseParenArrowList(n,a,w,t);w.length&&!S||this.unexpected(this.lastTokStart),l&&this.unexpected(l),this.checkExpressionErrors(I,!0),this.yieldPos=N||this.yieldPos,this.awaitPos=j||this.awaitPos,w.length>1?((i=this.startNodeAt(y,E)).expressions=w,this.finishNodeAt(i,\"SequenceExpression\",F,B)):i=w[0]}else i=this.parseParenExpression();if(this.options.preserveParens){var $=this.startNodeAt(n,a);return $.expression=i,this.finishNode($,\"ParenthesizedExpression\")}return i},ge.parseParenItem=function(e){return e},ge.parseParenArrowList=function(e,t,i,n){return this.parseArrowExpression(this.startNodeAt(e,t),i,!1,n)};var xe=[];ge.parseNew=function(){this.containsEsc&&this.raiseRecoverable(this.start,\"Escape sequence in keyword new\");var e=this.startNode();if(this.next(),this.options.ecmaVersion>=6&&this.type===O.dot){var t=this.startNodeAt(e.start,e.loc&&e.loc.start);t.name=\"new\",e.meta=this.finishNode(t,\"Identifier\"),this.next();var i=this.containsEsc;return e.property=this.parseIdent(!0),\"target\"!==e.property.name&&this.raiseRecoverable(e.property.start,\"The only valid meta property for new is 'new.target'\"),i&&this.raiseRecoverable(e.start,\"'new.target' must not contain escaped characters\"),this.allowNewDotTarget||this.raiseRecoverable(e.start,\"'new.target' can only be used in functions and class static block\"),this.finishNode(e,\"MetaProperty\")}var n=this.start,a=this.startLoc;return e.callee=this.parseSubscripts(this.parseExprAtom(null,!1,!0),n,a,!0,!1),this.eat(O.parenL)?e.arguments=this.parseExprList(O.parenR,this.options.ecmaVersion>=8,!1):e.arguments=xe,this.finishNode(e,\"NewExpression\")},ge.parseTemplateElement=function(e){var t=e.isTagged,i=this.startNode();return this.type===O.invalidTemplate?(t||this.raiseRecoverable(this.start,\"Bad escape sequence in untagged template literal\"),i.value={raw:this.value.replace(/\\r\\n?/g,\"\\n\"),cooked:null}):i.value={raw:this.input.slice(this.start,this.end).replace(/\\r\\n?/g,\"\\n\"),cooked:this.value},this.next(),i.tail=this.type===O.backQuote,this.finishNode(i,\"TemplateElement\")},ge.parseTemplate=function(e){void 0===e&&(e={});var t=e.isTagged;void 0===t&&(t=!1);var i=this.startNode();this.next(),i.expressions=[];var n=this.parseTemplateElement({isTagged:t});for(i.quasis=[n];!n.tail;)this.type===O.eof&&this.raise(this.pos,\"Unterminated template literal\"),this.expect(O.dollarBraceL),i.expressions.push(this.parseExpression()),this.expect(O.braceR),i.quasis.push(n=this.parseTemplateElement({isTagged:t}));return this.next(),this.finishNode(i,\"TemplateLiteral\")},ge.isAsyncProp=function(e){return!e.computed&&\"Identifier\"===e.key.type&&\"async\"===e.key.name&&(this.type===O.name||this.type===O.num||this.type===O.string||this.type===O.bracketL||this.type.keyword||this.options.ecmaVersion>=9&&this.type===O.star)&&!j.test(this.input.slice(this.lastTokEnd,this.start))},ge.parseObj=function(e,t){var i=this.startNode(),n=!0,a={};for(i.properties=[],this.next();!this.eat(O.braceR);){if(n)n=!1;else if(this.expect(O.comma),this.options.ecmaVersion>=5&&this.afterTrailingComma(O.braceR))break;var c=this.parseProperty(e,t);e||this.checkPropClash(c,a,t),i.properties.push(c)}return this.finishNode(i,e?\"ObjectPattern\":\"ObjectExpression\")},ge.parseProperty=function(e,t){var i,n,a,c,l=this.startNode();if(this.options.ecmaVersion>=9&&this.eat(O.ellipsis))return e?(l.argument=this.parseIdent(!1),this.type===O.comma&&this.raiseRecoverable(this.start,\"Comma is not permitted after the rest element\"),this.finishNode(l,\"RestElement\")):(l.argument=this.parseMaybeAssign(!1,t),this.type===O.comma&&t&&t.trailingComma<0&&(t.trailingComma=this.start),this.finishNode(l,\"SpreadElement\"));this.options.ecmaVersion>=6&&(l.method=!1,l.shorthand=!1,(e||t)&&(a=this.start,c=this.startLoc),e||(i=this.eat(O.star)));var y=this.containsEsc;return this.parsePropertyName(l),!e&&!y&&this.options.ecmaVersion>=8&&!i&&this.isAsyncProp(l)?(n=!0,i=this.options.ecmaVersion>=9&&this.eat(O.star),this.parsePropertyName(l)):n=!1,this.parsePropertyValue(l,e,i,n,a,c,t,y),this.finishNode(l,\"Property\")},ge.parseGetterSetter=function(e){var t=e.key.name;this.parsePropertyName(e),e.value=this.parseMethod(!1),e.kind=t;var i=\"get\"===e.kind?0:1;if(e.value.params.length!==i){var n=e.value.start;\"get\"===e.kind?this.raiseRecoverable(n,\"getter should have no params\"):this.raiseRecoverable(n,\"setter should have exactly one param\")}else\"set\"===e.kind&&\"RestElement\"===e.value.params[0].type&&this.raiseRecoverable(e.value.params[0].start,\"Setter cannot use rest params\")},ge.parsePropertyValue=function(e,t,i,n,a,c,l,y){(i||n)&&this.type===O.colon&&this.unexpected(),this.eat(O.colon)?(e.value=t?this.parseMaybeDefault(this.start,this.startLoc):this.parseMaybeAssign(!1,l),e.kind=\"init\"):this.options.ecmaVersion>=6&&this.type===O.parenL?(t&&this.unexpected(),e.method=!0,e.value=this.parseMethod(i,n),e.kind=\"init\"):t||y||!(this.options.ecmaVersion>=5)||e.computed||\"Identifier\"!==e.key.type||\"get\"!==e.key.name&&\"set\"!==e.key.name||this.type===O.comma||this.type===O.braceR||this.type===O.eq?this.options.ecmaVersion>=6&&!e.computed&&\"Identifier\"===e.key.type?((i||n)&&this.unexpected(),this.checkUnreserved(e.key),\"await\"!==e.key.name||this.awaitIdentPos||(this.awaitIdentPos=a),t?e.value=this.parseMaybeDefault(a,c,this.copyNode(e.key)):this.type===O.eq&&l?(l.shorthandAssign<0&&(l.shorthandAssign=this.start),e.value=this.parseMaybeDefault(a,c,this.copyNode(e.key))):e.value=this.copyNode(e.key),e.kind=\"init\",e.shorthand=!0):this.unexpected():((i||n)&&this.unexpected(),this.parseGetterSetter(e))},ge.parsePropertyName=function(e){if(this.options.ecmaVersion>=6){if(this.eat(O.bracketL))return e.computed=!0,e.key=this.parseMaybeAssign(),this.expect(O.bracketR),e.key;e.computed=!1}return e.key=this.type===O.num||this.type===O.string?this.parseExprAtom():this.parseIdent(\"never\"!==this.options.allowReserved)},ge.initFunction=function(e){e.id=null,this.options.ecmaVersion>=6&&(e.generator=e.expression=!1),this.options.ecmaVersion>=8&&(e.async=!1)},ge.parseMethod=function(e,t,i){var n=this.startNode(),a=this.yieldPos,c=this.awaitPos,l=this.awaitIdentPos;return this.initFunction(n),this.options.ecmaVersion>=6&&(n.generator=e),this.options.ecmaVersion>=8&&(n.async=!!t),this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0,this.enterScope(64|functionFlags(t,n.generator)|(i?128:0)),this.expect(O.parenL),n.params=this.parseBindingList(O.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams(),this.parseFunctionBody(n,!1,!0,!1),this.yieldPos=a,this.awaitPos=c,this.awaitIdentPos=l,this.finishNode(n,\"FunctionExpression\")},ge.parseArrowExpression=function(e,t,i,n){var a=this.yieldPos,c=this.awaitPos,l=this.awaitIdentPos;return this.enterScope(16|functionFlags(i,!1)),this.initFunction(e),this.options.ecmaVersion>=8&&(e.async=!!i),this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0,e.params=this.toAssignableList(t,!0),this.parseFunctionBody(e,!0,!1,n),this.yieldPos=a,this.awaitPos=c,this.awaitIdentPos=l,this.finishNode(e,\"ArrowFunctionExpression\")},ge.parseFunctionBody=function(e,t,i,n){var a=t&&this.type!==O.braceL,c=this.strict,l=!1;if(a)e.body=this.parseMaybeAssign(n),e.expression=!0,this.checkParams(e,!1);else{var y=this.options.ecmaVersion>=7&&!this.isSimpleParamList(e.params);c&&!y||(l=this.strictDirective(this.end))&&y&&this.raiseRecoverable(e.start,\"Illegal 'use strict' directive in function with non-simple parameter list\");var E=this.labels;this.labels=[],l&&(this.strict=!0),this.checkParams(e,!c&&!l&&!t&&!i&&this.isSimpleParamList(e.params)),this.strict&&e.id&&this.checkLValSimple(e.id,5),e.body=this.parseBlock(!1,void 0,l&&!c),e.expression=!1,this.adaptDirectivePrologue(e.body.body),this.labels=E}this.exitScope()},ge.isSimpleParamList=function(e){for(var t=0,i=e;t<i.length;t+=1){if(\"Identifier\"!==i[t].type)return!1}return!0},ge.checkParams=function(e,t){for(var i=Object.create(null),n=0,a=e.params;n<a.length;n+=1){var c=a[n];this.checkLValInnerPattern(c,1,t?null:i)}},ge.parseExprList=function(e,t,i,n){for(var a=[],c=!0;!this.eat(e);){if(c)c=!1;else if(this.expect(O.comma),t&&this.afterTrailingComma(e))break;var l=void 0;i&&this.type===O.comma?l=null:this.type===O.ellipsis?(l=this.parseSpread(n),n&&this.type===O.comma&&n.trailingComma<0&&(n.trailingComma=this.start)):l=this.parseMaybeAssign(!1,n),a.push(l)}return a},ge.checkUnreserved=function(e){var t=e.start,i=e.end,n=e.name;(this.inGenerator&&\"yield\"===n&&this.raiseRecoverable(t,\"Cannot use 'yield' as identifier inside a generator\"),this.inAsync&&\"await\"===n&&this.raiseRecoverable(t,\"Cannot use 'await' as identifier inside an async function\"),this.currentThisScope().flags&se||\"arguments\"!==n||this.raiseRecoverable(t,\"Cannot use 'arguments' in class field initializer\"),!this.inClassStaticBlock||\"arguments\"!==n&&\"await\"!==n||this.raise(t,\"Cannot use \"+n+\" in class static initialization block\"),this.keywords.test(n)&&this.raise(t,\"Unexpected keyword '\"+n+\"'\"),this.options.ecmaVersion<6&&-1!==this.input.slice(t,i).indexOf(\"\\\\\"))||(this.strict?this.reservedWordsStrict:this.reservedWords).test(n)&&(this.inAsync||\"await\"!==n||this.raiseRecoverable(t,\"Cannot use keyword 'await' outside an async function\"),this.raiseRecoverable(t,\"The keyword '\"+n+\"' is reserved\"))},ge.parseIdent=function(e){var t=this.parseIdentNode();return this.next(!!e),this.finishNode(t,\"Identifier\"),e||(this.checkUnreserved(t),\"await\"!==t.name||this.awaitIdentPos||(this.awaitIdentPos=t.start)),t},ge.parseIdentNode=function(){var e=this.startNode();return this.type===O.name?e.name=this.value:this.type.keyword?(e.name=this.type.keyword,\"class\"!==e.name&&\"function\"!==e.name||this.lastTokEnd===this.lastTokStart+1&&46===this.input.charCodeAt(this.lastTokStart)||this.context.pop(),this.type=O.name):this.unexpected(),e},ge.parsePrivateIdent=function(){var e=this.startNode();return this.type===O.privateId?e.name=this.value:this.unexpected(),this.next(),this.finishNode(e,\"PrivateIdentifier\"),this.options.checkPrivateFields&&(0===this.privateNameStack.length?this.raise(e.start,\"Private field '#\"+e.name+\"' must be declared in an enclosing class\"):this.privateNameStack[this.privateNameStack.length-1].used.push(e)),e},ge.parseYield=function(e){this.yieldPos||(this.yieldPos=this.start);var t=this.startNode();return this.next(),this.type===O.semi||this.canInsertSemicolon()||this.type!==O.star&&!this.type.startsExpr?(t.delegate=!1,t.argument=null):(t.delegate=this.eat(O.star),t.argument=this.parseMaybeAssign(e)),this.finishNode(t,\"YieldExpression\")},ge.parseAwait=function(e){this.awaitPos||(this.awaitPos=this.start);var t=this.startNode();return this.next(),t.argument=this.parseMaybeUnary(null,!0,!1,e),this.finishNode(t,\"AwaitExpression\")};var ve=acorn_Parser.prototype;ve.raise=function(e,t){var i=getLineInfo(this.input,e);t+=\" (\"+i.line+\":\"+i.column+\")\",this.sourceFile&&(t+=\" in \"+this.sourceFile);var n=new SyntaxError(t);throw n.pos=e,n.loc=i,n.raisedAt=this.pos,n},ve.raiseRecoverable=ve.raise,ve.curPosition=function(){if(this.options.locations)return new acorn_Position(this.curLine,this.pos-this.lineStart)};var ye=acorn_Parser.prototype,acorn_Scope=function(e){this.flags=e,this.var=[],this.lexical=[],this.functions=[]};ye.enterScope=function(e){this.scopeStack.push(new acorn_Scope(e))},ye.exitScope=function(){this.scopeStack.pop()},ye.treatFunctionsAsVarInScope=function(e){return 2&e.flags||!this.inModule&&1&e.flags},ye.declareName=function(e,t,i){var n=!1;if(2===t){var a=this.currentScope();n=a.lexical.indexOf(e)>-1||a.functions.indexOf(e)>-1||a.var.indexOf(e)>-1,a.lexical.push(e),this.inModule&&1&a.flags&&delete this.undefinedExports[e]}else if(4===t){this.currentScope().lexical.push(e)}else if(3===t){var c=this.currentScope();n=this.treatFunctionsAsVar?c.lexical.indexOf(e)>-1:c.lexical.indexOf(e)>-1||c.var.indexOf(e)>-1,c.functions.push(e)}else for(var l=this.scopeStack.length-1;l>=0;--l){var y=this.scopeStack[l];if(y.lexical.indexOf(e)>-1&&!(32&y.flags&&y.lexical[0]===e)||!this.treatFunctionsAsVarInScope(y)&&y.functions.indexOf(e)>-1){n=!0;break}if(y.var.push(e),this.inModule&&1&y.flags&&delete this.undefinedExports[e],y.flags&se)break}n&&this.raiseRecoverable(i,\"Identifier '\"+e+\"' has already been declared\")},ye.checkLocalExport=function(e){-1===this.scopeStack[0].lexical.indexOf(e.name)&&-1===this.scopeStack[0].var.indexOf(e.name)&&(this.undefinedExports[e.name]=e)},ye.currentScope=function(){return this.scopeStack[this.scopeStack.length-1]},ye.currentVarScope=function(){for(var e=this.scopeStack.length-1;;e--){var t=this.scopeStack[e];if(771&t.flags)return t}},ye.currentThisScope=function(){for(var e=this.scopeStack.length-1;;e--){var t=this.scopeStack[e];if(771&t.flags&&!(16&t.flags))return t}};var acorn_Node=function(e,t,i){this.type=\"\",this.start=t,this.end=0,e.options.locations&&(this.loc=new acorn_SourceLocation(e,i)),e.options.directSourceFile&&(this.sourceFile=e.options.directSourceFile),e.options.ranges&&(this.range=[t,0])},_e=acorn_Parser.prototype;function finishNodeAt(e,t,i,n){return e.type=t,e.end=i,this.options.locations&&(e.loc.end=n),this.options.ranges&&(e.range[1]=i),e}_e.startNode=function(){return new acorn_Node(this,this.start,this.startLoc)},_e.startNodeAt=function(e,t){return new acorn_Node(this,e,t)},_e.finishNode=function(e,t){return finishNodeAt.call(this,e,t,this.lastTokEnd,this.lastTokEndLoc)},_e.finishNodeAt=function(e,t,i,n){return finishNodeAt.call(this,e,t,i,n)},_e.copyNode=function(e){var t=new acorn_Node(this,e.start,this.startLoc);for(var i in e)t[i]=e[i];return t};var Ee=\"ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS\",be=Ee+\" Extended_Pictographic\",ke=be+\" EBase EComp EMod EPres ExtPict\",we={9:Ee,10:be,11:be,12:ke,13:ke,14:ke},Ce={9:\"\",10:\"\",11:\"\",12:\"\",13:\"\",14:\"Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji\"},Se=\"Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu\",Ie=\"Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb\",Te=Ie+\" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd\",Re=Te+\" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho\",Ae=Re+\" Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi\",Le=Ae+\" Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith\",Oe={9:Ie,10:Te,11:Re,12:Ae,13:Le,14:Le+\" Berf Beria_Erfe Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sidetic Sidt Sunu Sunuwar Tai_Yo Tayo Todhri Todr Tolong_Siki Tols Tulu_Tigalari Tutg Unknown Zzzz\"},De={};function buildUnicodeData(e){var t=De[e]={binary:wordsRegexp(we[e]+\" \"+Se),binaryOfStrings:wordsRegexp(Ce[e]),nonBinary:{General_Category:wordsRegexp(Se),Script:wordsRegexp(Oe[e])}};t.nonBinary.Script_Extensions=t.nonBinary.Script,t.nonBinary.gc=t.nonBinary.General_Category,t.nonBinary.sc=t.nonBinary.Script,t.nonBinary.scx=t.nonBinary.Script_Extensions}for(var Ve=0,Ue=[9,10,11,12,13,14];Ve<Ue.length;Ve+=1){buildUnicodeData(Ue[Ve])}var Me=acorn_Parser.prototype,acorn_BranchID=function(e,t){this.parent=e,this.base=t||this};acorn_BranchID.prototype.separatedFrom=function(e){for(var t=this;t;t=t.parent)for(var i=e;i;i=i.parent)if(t.base===i.base&&t!==i)return!0;return!1},acorn_BranchID.prototype.sibling=function(){return new acorn_BranchID(this.parent,this.base)};var acorn_RegExpValidationState=function(e){this.parser=e,this.validFlags=\"gim\"+(e.options.ecmaVersion>=6?\"uy\":\"\")+(e.options.ecmaVersion>=9?\"s\":\"\")+(e.options.ecmaVersion>=13?\"d\":\"\")+(e.options.ecmaVersion>=15?\"v\":\"\"),this.unicodeProperties=De[e.options.ecmaVersion>=14?14:e.options.ecmaVersion],this.source=\"\",this.flags=\"\",this.start=0,this.switchU=!1,this.switchV=!1,this.switchN=!1,this.pos=0,this.lastIntValue=0,this.lastStringValue=\"\",this.lastAssertionIsQuantifiable=!1,this.numCapturingParens=0,this.maxBackReference=0,this.groupNames=Object.create(null),this.backReferenceNames=[],this.branchID=null};function isRegularExpressionModifier(e){return 105===e||109===e||115===e}function isSyntaxCharacter(e){return 36===e||e>=40&&e<=43||46===e||63===e||e>=91&&e<=94||e>=123&&e<=125}function isControlLetter(e){return e>=65&&e<=90||e>=97&&e<=122}acorn_RegExpValidationState.prototype.reset=function(e,t,i){var n=-1!==i.indexOf(\"v\"),a=-1!==i.indexOf(\"u\");this.start=0|e,this.source=t+\"\",this.flags=i,n&&this.parser.options.ecmaVersion>=15?(this.switchU=!0,this.switchV=!0,this.switchN=!0):(this.switchU=a&&this.parser.options.ecmaVersion>=6,this.switchV=!1,this.switchN=a&&this.parser.options.ecmaVersion>=9)},acorn_RegExpValidationState.prototype.raise=function(e){this.parser.raiseRecoverable(this.start,\"Invalid regular expression: /\"+this.source+\"/: \"+e)},acorn_RegExpValidationState.prototype.at=function(e,t){void 0===t&&(t=!1);var i=this.source,n=i.length;if(e>=n)return-1;var a=i.charCodeAt(e);if(!t&&!this.switchU||a<=55295||a>=57344||e+1>=n)return a;var c=i.charCodeAt(e+1);return c>=56320&&c<=57343?(a<<10)+c-56613888:a},acorn_RegExpValidationState.prototype.nextIndex=function(e,t){void 0===t&&(t=!1);var i=this.source,n=i.length;if(e>=n)return n;var a,c=i.charCodeAt(e);return!t&&!this.switchU||c<=55295||c>=57344||e+1>=n||(a=i.charCodeAt(e+1))<56320||a>57343?e+1:e+2},acorn_RegExpValidationState.prototype.current=function(e){return void 0===e&&(e=!1),this.at(this.pos,e)},acorn_RegExpValidationState.prototype.lookahead=function(e){return void 0===e&&(e=!1),this.at(this.nextIndex(this.pos,e),e)},acorn_RegExpValidationState.prototype.advance=function(e){void 0===e&&(e=!1),this.pos=this.nextIndex(this.pos,e)},acorn_RegExpValidationState.prototype.eat=function(e,t){return void 0===t&&(t=!1),this.current(t)===e&&(this.advance(t),!0)},acorn_RegExpValidationState.prototype.eatChars=function(e,t){void 0===t&&(t=!1);for(var i=this.pos,n=0,a=e;n<a.length;n+=1){var c=a[n],l=this.at(i,t);if(-1===l||l!==c)return!1;i=this.nextIndex(i,t)}return this.pos=i,!0},Me.validateRegExpFlags=function(e){for(var t=e.validFlags,i=e.flags,n=!1,a=!1,c=0;c<i.length;c++){var l=i.charAt(c);-1===t.indexOf(l)&&this.raise(e.start,\"Invalid regular expression flag\"),i.indexOf(l,c+1)>-1&&this.raise(e.start,\"Duplicate regular expression flag\"),\"u\"===l&&(n=!0),\"v\"===l&&(a=!0)}this.options.ecmaVersion>=15&&n&&a&&this.raise(e.start,\"Invalid regular expression flag\")},Me.validateRegExpPattern=function(e){this.regexp_pattern(e),!e.switchN&&this.options.ecmaVersion>=9&&function(e){for(var t in e)return!0;return!1}(e.groupNames)&&(e.switchN=!0,this.regexp_pattern(e))},Me.regexp_pattern=function(e){e.pos=0,e.lastIntValue=0,e.lastStringValue=\"\",e.lastAssertionIsQuantifiable=!1,e.numCapturingParens=0,e.maxBackReference=0,e.groupNames=Object.create(null),e.backReferenceNames.length=0,e.branchID=null,this.regexp_disjunction(e),e.pos!==e.source.length&&(e.eat(41)&&e.raise(\"Unmatched ')'\"),(e.eat(93)||e.eat(125))&&e.raise(\"Lone quantifier brackets\")),e.maxBackReference>e.numCapturingParens&&e.raise(\"Invalid escape\");for(var t=0,i=e.backReferenceNames;t<i.length;t+=1){var n=i[t];e.groupNames[n]||e.raise(\"Invalid named capture referenced\")}},Me.regexp_disjunction=function(e){var t=this.options.ecmaVersion>=16;for(t&&(e.branchID=new acorn_BranchID(e.branchID,null)),this.regexp_alternative(e);e.eat(124);)t&&(e.branchID=e.branchID.sibling()),this.regexp_alternative(e);t&&(e.branchID=e.branchID.parent),this.regexp_eatQuantifier(e,!0)&&e.raise(\"Nothing to repeat\"),e.eat(123)&&e.raise(\"Lone quantifier brackets\")},Me.regexp_alternative=function(e){for(;e.pos<e.source.length&&this.regexp_eatTerm(e););},Me.regexp_eatTerm=function(e){return this.regexp_eatAssertion(e)?(e.lastAssertionIsQuantifiable&&this.regexp_eatQuantifier(e)&&e.switchU&&e.raise(\"Invalid quantifier\"),!0):!!(e.switchU?this.regexp_eatAtom(e):this.regexp_eatExtendedAtom(e))&&(this.regexp_eatQuantifier(e),!0)},Me.regexp_eatAssertion=function(e){var t=e.pos;if(e.lastAssertionIsQuantifiable=!1,e.eat(94)||e.eat(36))return!0;if(e.eat(92)){if(e.eat(66)||e.eat(98))return!0;e.pos=t}if(e.eat(40)&&e.eat(63)){var i=!1;if(this.options.ecmaVersion>=9&&(i=e.eat(60)),e.eat(61)||e.eat(33))return this.regexp_disjunction(e),e.eat(41)||e.raise(\"Unterminated group\"),e.lastAssertionIsQuantifiable=!i,!0}return e.pos=t,!1},Me.regexp_eatQuantifier=function(e,t){return void 0===t&&(t=!1),!!this.regexp_eatQuantifierPrefix(e,t)&&(e.eat(63),!0)},Me.regexp_eatQuantifierPrefix=function(e,t){return e.eat(42)||e.eat(43)||e.eat(63)||this.regexp_eatBracedQuantifier(e,t)},Me.regexp_eatBracedQuantifier=function(e,t){var i=e.pos;if(e.eat(123)){var n=0,a=-1;if(this.regexp_eatDecimalDigits(e)&&(n=e.lastIntValue,e.eat(44)&&this.regexp_eatDecimalDigits(e)&&(a=e.lastIntValue),e.eat(125)))return-1!==a&&a<n&&!t&&e.raise(\"numbers out of order in {} quantifier\"),!0;e.switchU&&!t&&e.raise(\"Incomplete quantifier\"),e.pos=i}return!1},Me.regexp_eatAtom=function(e){return this.regexp_eatPatternCharacters(e)||e.eat(46)||this.regexp_eatReverseSolidusAtomEscape(e)||this.regexp_eatCharacterClass(e)||this.regexp_eatUncapturingGroup(e)||this.regexp_eatCapturingGroup(e)},Me.regexp_eatReverseSolidusAtomEscape=function(e){var t=e.pos;if(e.eat(92)){if(this.regexp_eatAtomEscape(e))return!0;e.pos=t}return!1},Me.regexp_eatUncapturingGroup=function(e){var t=e.pos;if(e.eat(40)){if(e.eat(63)){if(this.options.ecmaVersion>=16){var i=this.regexp_eatModifiers(e),n=e.eat(45);if(i||n){for(var a=0;a<i.length;a++){var c=i.charAt(a);i.indexOf(c,a+1)>-1&&e.raise(\"Duplicate regular expression modifiers\")}if(n){var l=this.regexp_eatModifiers(e);i||l||58!==e.current()||e.raise(\"Invalid regular expression modifiers\");for(var y=0;y<l.length;y++){var E=l.charAt(y);(l.indexOf(E,y+1)>-1||i.indexOf(E)>-1)&&e.raise(\"Duplicate regular expression modifiers\")}}}}if(e.eat(58)){if(this.regexp_disjunction(e),e.eat(41))return!0;e.raise(\"Unterminated group\")}}e.pos=t}return!1},Me.regexp_eatCapturingGroup=function(e){if(e.eat(40)){if(this.options.ecmaVersion>=9?this.regexp_groupSpecifier(e):63===e.current()&&e.raise(\"Invalid group\"),this.regexp_disjunction(e),e.eat(41))return e.numCapturingParens+=1,!0;e.raise(\"Unterminated group\")}return!1},Me.regexp_eatModifiers=function(e){for(var t=\"\",i=0;-1!==(i=e.current())&&isRegularExpressionModifier(i);)t+=codePointToString(i),e.advance();return t},Me.regexp_eatExtendedAtom=function(e){return e.eat(46)||this.regexp_eatReverseSolidusAtomEscape(e)||this.regexp_eatCharacterClass(e)||this.regexp_eatUncapturingGroup(e)||this.regexp_eatCapturingGroup(e)||this.regexp_eatInvalidBracedQuantifier(e)||this.regexp_eatExtendedPatternCharacter(e)},Me.regexp_eatInvalidBracedQuantifier=function(e){return this.regexp_eatBracedQuantifier(e,!0)&&e.raise(\"Nothing to repeat\"),!1},Me.regexp_eatSyntaxCharacter=function(e){var t=e.current();return!!isSyntaxCharacter(t)&&(e.lastIntValue=t,e.advance(),!0)},Me.regexp_eatPatternCharacters=function(e){for(var t=e.pos,i=0;-1!==(i=e.current())&&!isSyntaxCharacter(i);)e.advance();return e.pos!==t},Me.regexp_eatExtendedPatternCharacter=function(e){var t=e.current();return!(-1===t||36===t||t>=40&&t<=43||46===t||63===t||91===t||94===t||124===t)&&(e.advance(),!0)},Me.regexp_groupSpecifier=function(e){if(e.eat(63)){this.regexp_eatGroupName(e)||e.raise(\"Invalid group\");var t=this.options.ecmaVersion>=16,i=e.groupNames[e.lastStringValue];if(i)if(t)for(var n=0,a=i;n<a.length;n+=1){a[n].separatedFrom(e.branchID)||e.raise(\"Duplicate capture group name\")}else e.raise(\"Duplicate capture group name\");t?(i||(e.groupNames[e.lastStringValue]=[])).push(e.branchID):e.groupNames[e.lastStringValue]=!0}},Me.regexp_eatGroupName=function(e){if(e.lastStringValue=\"\",e.eat(60)){if(this.regexp_eatRegExpIdentifierName(e)&&e.eat(62))return!0;e.raise(\"Invalid capture group name\")}return!1},Me.regexp_eatRegExpIdentifierName=function(e){if(e.lastStringValue=\"\",this.regexp_eatRegExpIdentifierStart(e)){for(e.lastStringValue+=codePointToString(e.lastIntValue);this.regexp_eatRegExpIdentifierPart(e);)e.lastStringValue+=codePointToString(e.lastIntValue);return!0}return!1},Me.regexp_eatRegExpIdentifierStart=function(e){var t=e.pos,i=this.options.ecmaVersion>=11,n=e.current(i);return e.advance(i),92===n&&this.regexp_eatRegExpUnicodeEscapeSequence(e,i)&&(n=e.lastIntValue),function(e){return isIdentifierStart(e,!0)||36===e||95===e}(n)?(e.lastIntValue=n,!0):(e.pos=t,!1)},Me.regexp_eatRegExpIdentifierPart=function(e){var t=e.pos,i=this.options.ecmaVersion>=11,n=e.current(i);return e.advance(i),92===n&&this.regexp_eatRegExpUnicodeEscapeSequence(e,i)&&(n=e.lastIntValue),function(e){return isIdentifierChar(e,!0)||36===e||95===e||8204===e||8205===e}(n)?(e.lastIntValue=n,!0):(e.pos=t,!1)},Me.regexp_eatAtomEscape=function(e){return!!(this.regexp_eatBackReference(e)||this.regexp_eatCharacterClassEscape(e)||this.regexp_eatCharacterEscape(e)||e.switchN&&this.regexp_eatKGroupName(e))||(e.switchU&&(99===e.current()&&e.raise(\"Invalid unicode escape\"),e.raise(\"Invalid escape\")),!1)},Me.regexp_eatBackReference=function(e){var t=e.pos;if(this.regexp_eatDecimalEscape(e)){var i=e.lastIntValue;if(e.switchU)return i>e.maxBackReference&&(e.maxBackReference=i),!0;if(i<=e.numCapturingParens)return!0;e.pos=t}return!1},Me.regexp_eatKGroupName=function(e){if(e.eat(107)){if(this.regexp_eatGroupName(e))return e.backReferenceNames.push(e.lastStringValue),!0;e.raise(\"Invalid named reference\")}return!1},Me.regexp_eatCharacterEscape=function(e){return this.regexp_eatControlEscape(e)||this.regexp_eatCControlLetter(e)||this.regexp_eatZero(e)||this.regexp_eatHexEscapeSequence(e)||this.regexp_eatRegExpUnicodeEscapeSequence(e,!1)||!e.switchU&&this.regexp_eatLegacyOctalEscapeSequence(e)||this.regexp_eatIdentityEscape(e)},Me.regexp_eatCControlLetter=function(e){var t=e.pos;if(e.eat(99)){if(this.regexp_eatControlLetter(e))return!0;e.pos=t}return!1},Me.regexp_eatZero=function(e){return 48===e.current()&&!isDecimalDigit(e.lookahead())&&(e.lastIntValue=0,e.advance(),!0)},Me.regexp_eatControlEscape=function(e){var t=e.current();return 116===t?(e.lastIntValue=9,e.advance(),!0):110===t?(e.lastIntValue=10,e.advance(),!0):118===t?(e.lastIntValue=11,e.advance(),!0):102===t?(e.lastIntValue=12,e.advance(),!0):114===t&&(e.lastIntValue=13,e.advance(),!0)},Me.regexp_eatControlLetter=function(e){var t=e.current();return!!isControlLetter(t)&&(e.lastIntValue=t%32,e.advance(),!0)},Me.regexp_eatRegExpUnicodeEscapeSequence=function(e,t){void 0===t&&(t=!1);var i,n=e.pos,a=t||e.switchU;if(e.eat(117)){if(this.regexp_eatFixedHexDigits(e,4)){var c=e.lastIntValue;if(a&&c>=55296&&c<=56319){var l=e.pos;if(e.eat(92)&&e.eat(117)&&this.regexp_eatFixedHexDigits(e,4)){var y=e.lastIntValue;if(y>=56320&&y<=57343)return e.lastIntValue=1024*(c-55296)+(y-56320)+65536,!0}e.pos=l,e.lastIntValue=c}return!0}if(a&&e.eat(123)&&this.regexp_eatHexDigits(e)&&e.eat(125)&&((i=e.lastIntValue)>=0&&i<=1114111))return!0;a&&e.raise(\"Invalid unicode escape\"),e.pos=n}return!1},Me.regexp_eatIdentityEscape=function(e){if(e.switchU)return!!this.regexp_eatSyntaxCharacter(e)||!!e.eat(47)&&(e.lastIntValue=47,!0);var t=e.current();return!(99===t||e.switchN&&107===t)&&(e.lastIntValue=t,e.advance(),!0)},Me.regexp_eatDecimalEscape=function(e){e.lastIntValue=0;var t=e.current();if(t>=49&&t<=57){do{e.lastIntValue=10*e.lastIntValue+(t-48),e.advance()}while((t=e.current())>=48&&t<=57);return!0}return!1};function isUnicodePropertyNameCharacter(e){return isControlLetter(e)||95===e}function isUnicodePropertyValueCharacter(e){return isUnicodePropertyNameCharacter(e)||isDecimalDigit(e)}function isDecimalDigit(e){return e>=48&&e<=57}function isHexDigit(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function hexToInt(e){return e>=65&&e<=70?e-65+10:e>=97&&e<=102?e-97+10:e-48}function isOctalDigit(e){return e>=48&&e<=55}Me.regexp_eatCharacterClassEscape=function(e){var t=e.current();if(function(e){return 100===e||68===e||115===e||83===e||119===e||87===e}(t))return e.lastIntValue=-1,e.advance(),1;var i=!1;if(e.switchU&&this.options.ecmaVersion>=9&&((i=80===t)||112===t)){var n;if(e.lastIntValue=-1,e.advance(),e.eat(123)&&(n=this.regexp_eatUnicodePropertyValueExpression(e))&&e.eat(125))return i&&2===n&&e.raise(\"Invalid property name\"),n;e.raise(\"Invalid property name\")}return 0},Me.regexp_eatUnicodePropertyValueExpression=function(e){var t=e.pos;if(this.regexp_eatUnicodePropertyName(e)&&e.eat(61)){var i=e.lastStringValue;if(this.regexp_eatUnicodePropertyValue(e)){var n=e.lastStringValue;return this.regexp_validateUnicodePropertyNameAndValue(e,i,n),1}}if(e.pos=t,this.regexp_eatLoneUnicodePropertyNameOrValue(e)){var a=e.lastStringValue;return this.regexp_validateUnicodePropertyNameOrValue(e,a)}return 0},Me.regexp_validateUnicodePropertyNameAndValue=function(e,t,i){H(e.unicodeProperties.nonBinary,t)||e.raise(\"Invalid property name\"),e.unicodeProperties.nonBinary[t].test(i)||e.raise(\"Invalid property value\")},Me.regexp_validateUnicodePropertyNameOrValue=function(e,t){return e.unicodeProperties.binary.test(t)?1:e.switchV&&e.unicodeProperties.binaryOfStrings.test(t)?2:void e.raise(\"Invalid property name\")},Me.regexp_eatUnicodePropertyName=function(e){var t=0;for(e.lastStringValue=\"\";isUnicodePropertyNameCharacter(t=e.current());)e.lastStringValue+=codePointToString(t),e.advance();return\"\"!==e.lastStringValue},Me.regexp_eatUnicodePropertyValue=function(e){var t=0;for(e.lastStringValue=\"\";isUnicodePropertyValueCharacter(t=e.current());)e.lastStringValue+=codePointToString(t),e.advance();return\"\"!==e.lastStringValue},Me.regexp_eatLoneUnicodePropertyNameOrValue=function(e){return this.regexp_eatUnicodePropertyValue(e)},Me.regexp_eatCharacterClass=function(e){if(e.eat(91)){var t=e.eat(94),i=this.regexp_classContents(e);return e.eat(93)||e.raise(\"Unterminated character class\"),t&&2===i&&e.raise(\"Negated character class may contain strings\"),!0}return!1},Me.regexp_classContents=function(e){return 93===e.current()?1:e.switchV?this.regexp_classSetExpression(e):(this.regexp_nonEmptyClassRanges(e),1)},Me.regexp_nonEmptyClassRanges=function(e){for(;this.regexp_eatClassAtom(e);){var t=e.lastIntValue;if(e.eat(45)&&this.regexp_eatClassAtom(e)){var i=e.lastIntValue;!e.switchU||-1!==t&&-1!==i||e.raise(\"Invalid character class\"),-1!==t&&-1!==i&&t>i&&e.raise(\"Range out of order in character class\")}}},Me.regexp_eatClassAtom=function(e){var t=e.pos;if(e.eat(92)){if(this.regexp_eatClassEscape(e))return!0;if(e.switchU){var i=e.current();(99===i||isOctalDigit(i))&&e.raise(\"Invalid class escape\"),e.raise(\"Invalid escape\")}e.pos=t}var n=e.current();return 93!==n&&(e.lastIntValue=n,e.advance(),!0)},Me.regexp_eatClassEscape=function(e){var t=e.pos;if(e.eat(98))return e.lastIntValue=8,!0;if(e.switchU&&e.eat(45))return e.lastIntValue=45,!0;if(!e.switchU&&e.eat(99)){if(this.regexp_eatClassControlLetter(e))return!0;e.pos=t}return this.regexp_eatCharacterClassEscape(e)||this.regexp_eatCharacterEscape(e)},Me.regexp_classSetExpression=function(e){var t,i=1;if(this.regexp_eatClassSetRange(e));else if(t=this.regexp_eatClassSetOperand(e)){2===t&&(i=2);for(var n=e.pos;e.eatChars([38,38]);)38!==e.current()&&(t=this.regexp_eatClassSetOperand(e))?2!==t&&(i=1):e.raise(\"Invalid character in character class\");if(n!==e.pos)return i;for(;e.eatChars([45,45]);)this.regexp_eatClassSetOperand(e)||e.raise(\"Invalid character in character class\");if(n!==e.pos)return i}else e.raise(\"Invalid character in character class\");for(;;)if(!this.regexp_eatClassSetRange(e)){if(!(t=this.regexp_eatClassSetOperand(e)))return i;2===t&&(i=2)}},Me.regexp_eatClassSetRange=function(e){var t=e.pos;if(this.regexp_eatClassSetCharacter(e)){var i=e.lastIntValue;if(e.eat(45)&&this.regexp_eatClassSetCharacter(e)){var n=e.lastIntValue;return-1!==i&&-1!==n&&i>n&&e.raise(\"Range out of order in character class\"),!0}e.pos=t}return!1},Me.regexp_eatClassSetOperand=function(e){return this.regexp_eatClassSetCharacter(e)?1:this.regexp_eatClassStringDisjunction(e)||this.regexp_eatNestedClass(e)},Me.regexp_eatNestedClass=function(e){var t=e.pos;if(e.eat(91)){var i=e.eat(94),n=this.regexp_classContents(e);if(e.eat(93))return i&&2===n&&e.raise(\"Negated character class may contain strings\"),n;e.pos=t}if(e.eat(92)){var a=this.regexp_eatCharacterClassEscape(e);if(a)return a;e.pos=t}return null},Me.regexp_eatClassStringDisjunction=function(e){var t=e.pos;if(e.eatChars([92,113])){if(e.eat(123)){var i=this.regexp_classStringDisjunctionContents(e);if(e.eat(125))return i}else e.raise(\"Invalid escape\");e.pos=t}return null},Me.regexp_classStringDisjunctionContents=function(e){for(var t=this.regexp_classString(e);e.eat(124);)2===this.regexp_classString(e)&&(t=2);return t},Me.regexp_classString=function(e){for(var t=0;this.regexp_eatClassSetCharacter(e);)t++;return 1===t?1:2},Me.regexp_eatClassSetCharacter=function(e){var t=e.pos;if(e.eat(92))return!(!this.regexp_eatCharacterEscape(e)&&!this.regexp_eatClassSetReservedPunctuator(e))||(e.eat(98)?(e.lastIntValue=8,!0):(e.pos=t,!1));var i=e.current();return!(i<0||i===e.lookahead()&&function(e){return 33===e||e>=35&&e<=38||e>=42&&e<=44||46===e||e>=58&&e<=64||94===e||96===e||126===e}(i))&&(!function(e){return 40===e||41===e||45===e||47===e||e>=91&&e<=93||e>=123&&e<=125}(i)&&(e.advance(),e.lastIntValue=i,!0))},Me.regexp_eatClassSetReservedPunctuator=function(e){var t=e.current();return!!function(e){return 33===e||35===e||37===e||38===e||44===e||45===e||e>=58&&e<=62||64===e||96===e||126===e}(t)&&(e.lastIntValue=t,e.advance(),!0)},Me.regexp_eatClassControlLetter=function(e){var t=e.current();return!(!isDecimalDigit(t)&&95!==t)&&(e.lastIntValue=t%32,e.advance(),!0)},Me.regexp_eatHexEscapeSequence=function(e){var t=e.pos;if(e.eat(120)){if(this.regexp_eatFixedHexDigits(e,2))return!0;e.switchU&&e.raise(\"Invalid escape\"),e.pos=t}return!1},Me.regexp_eatDecimalDigits=function(e){var t=e.pos,i=0;for(e.lastIntValue=0;isDecimalDigit(i=e.current());)e.lastIntValue=10*e.lastIntValue+(i-48),e.advance();return e.pos!==t},Me.regexp_eatHexDigits=function(e){var t=e.pos,i=0;for(e.lastIntValue=0;isHexDigit(i=e.current());)e.lastIntValue=16*e.lastIntValue+hexToInt(i),e.advance();return e.pos!==t},Me.regexp_eatLegacyOctalEscapeSequence=function(e){if(this.regexp_eatOctalDigit(e)){var t=e.lastIntValue;if(this.regexp_eatOctalDigit(e)){var i=e.lastIntValue;t<=3&&this.regexp_eatOctalDigit(e)?e.lastIntValue=64*t+8*i+e.lastIntValue:e.lastIntValue=8*t+i}else e.lastIntValue=t;return!0}return!1},Me.regexp_eatOctalDigit=function(e){var t=e.current();return isOctalDigit(t)?(e.lastIntValue=t-48,e.advance(),!0):(e.lastIntValue=0,!1)},Me.regexp_eatFixedHexDigits=function(e,t){var i=e.pos;e.lastIntValue=0;for(var n=0;n<t;++n){var a=e.current();if(!isHexDigit(a))return e.pos=i,!1;e.lastIntValue=16*e.lastIntValue+hexToInt(a),e.advance()}return!0};var acorn_Token=function(e){this.type=e.type,this.value=e.value,this.start=e.start,this.end=e.end,e.options.locations&&(this.loc=new acorn_SourceLocation(e,e.startLoc,e.endLoc)),e.options.ranges&&(this.range=[e.start,e.end])},je=acorn_Parser.prototype;function stringToBigInt(e){return\"function\"!=typeof BigInt?null:BigInt(e.replace(/_/g,\"\"))}je.next=function(e){!e&&this.type.keyword&&this.containsEsc&&this.raiseRecoverable(this.start,\"Escape sequence in keyword \"+this.type.keyword),this.options.onToken&&this.options.onToken(new acorn_Token(this)),this.lastTokEnd=this.end,this.lastTokStart=this.start,this.lastTokEndLoc=this.endLoc,this.lastTokStartLoc=this.startLoc,this.nextToken()},je.getToken=function(){return this.next(),new acorn_Token(this)},\"undefined\"!=typeof Symbol&&(je[Symbol.iterator]=function(){var e=this;return{next:function(){var t=e.getToken();return{done:t.type===O.eof,value:t}}}}),je.nextToken=function(){var e=this.curContext();return e&&e.preserveSpace||this.skipSpace(),this.start=this.pos,this.options.locations&&(this.startLoc=this.curPosition()),this.pos>=this.input.length?this.finishToken(O.eof):e.override?e.override(this):void this.readToken(this.fullCharCodeAtPos())},je.readToken=function(e){return isIdentifierStart(e,this.options.ecmaVersion>=6)||92===e?this.readWord():this.getTokenFromCode(e)},je.fullCharCodeAt=function(e){var t=this.input.charCodeAt(e);if(t<=55295||t>=56320)return t;var i=this.input.charCodeAt(e+1);return i<=56319||i>=57344?t:(t<<10)+i-56613888},je.fullCharCodeAtPos=function(){return this.fullCharCodeAt(this.pos)},je.skipBlockComment=function(){var e=this.options.onComment&&this.curPosition(),t=this.pos,i=this.input.indexOf(\"*/\",this.pos+=2);if(-1===i&&this.raise(this.pos-2,\"Unterminated comment\"),this.pos=i+2,this.options.locations)for(var n=void 0,a=t;(n=nextLineBreak(this.input,a,this.pos))>-1;)++this.curLine,a=this.lineStart=n;this.options.onComment&&this.options.onComment(!0,this.input.slice(t+2,i),t,this.pos,e,this.curPosition())},je.skipLineComment=function(e){for(var t=this.pos,i=this.options.onComment&&this.curPosition(),n=this.input.charCodeAt(this.pos+=e);this.pos<this.input.length&&!isNewLine(n);)n=this.input.charCodeAt(++this.pos);this.options.onComment&&this.options.onComment(!1,this.input.slice(t+e,this.pos),t,this.pos,i,this.curPosition())},je.skipSpace=function(){e:for(;this.pos<this.input.length;){var e=this.input.charCodeAt(this.pos);switch(e){case 32:case 160:++this.pos;break;case 13:10===this.input.charCodeAt(this.pos+1)&&++this.pos;case 10:case 8232:case 8233:++this.pos,this.options.locations&&(++this.curLine,this.lineStart=this.pos);break;case 47:switch(this.input.charCodeAt(this.pos+1)){case 42:this.skipBlockComment();break;case 47:this.skipLineComment(2);break;default:break e}break;default:if(!(e>8&&e<14||e>=5760&&B.test(String.fromCharCode(e))))break e;++this.pos}}},je.finishToken=function(e,t){this.end=this.pos,this.options.locations&&(this.endLoc=this.curPosition());var i=this.type;this.type=e,this.value=t,this.updateContext(i)},je.readToken_dot=function(){var e=this.input.charCodeAt(this.pos+1);if(e>=48&&e<=57)return this.readNumber(!0);var t=this.input.charCodeAt(this.pos+2);return this.options.ecmaVersion>=6&&46===e&&46===t?(this.pos+=3,this.finishToken(O.ellipsis)):(++this.pos,this.finishToken(O.dot))},je.readToken_slash=function(){var e=this.input.charCodeAt(this.pos+1);return this.exprAllowed?(++this.pos,this.readRegexp()):61===e?this.finishOp(O.assign,2):this.finishOp(O.slash,1)},je.readToken_mult_modulo_exp=function(e){var t=this.input.charCodeAt(this.pos+1),i=1,n=42===e?O.star:O.modulo;return this.options.ecmaVersion>=7&&42===e&&42===t&&(++i,n=O.starstar,t=this.input.charCodeAt(this.pos+2)),61===t?this.finishOp(O.assign,i+1):this.finishOp(n,i)},je.readToken_pipe_amp=function(e){var t=this.input.charCodeAt(this.pos+1);if(t===e){if(this.options.ecmaVersion>=12)if(61===this.input.charCodeAt(this.pos+2))return this.finishOp(O.assign,3);return this.finishOp(124===e?O.logicalOR:O.logicalAND,2)}return 61===t?this.finishOp(O.assign,2):this.finishOp(124===e?O.bitwiseOR:O.bitwiseAND,1)},je.readToken_caret=function(){return 61===this.input.charCodeAt(this.pos+1)?this.finishOp(O.assign,2):this.finishOp(O.bitwiseXOR,1)},je.readToken_plus_min=function(e){var t=this.input.charCodeAt(this.pos+1);return t===e?45!==t||this.inModule||62!==this.input.charCodeAt(this.pos+2)||0!==this.lastTokEnd&&!j.test(this.input.slice(this.lastTokEnd,this.pos))?this.finishOp(O.incDec,2):(this.skipLineComment(3),this.skipSpace(),this.nextToken()):61===t?this.finishOp(O.assign,2):this.finishOp(O.plusMin,1)},je.readToken_lt_gt=function(e){var t=this.input.charCodeAt(this.pos+1),i=1;return t===e?(i=62===e&&62===this.input.charCodeAt(this.pos+2)?3:2,61===this.input.charCodeAt(this.pos+i)?this.finishOp(O.assign,i+1):this.finishOp(O.bitShift,i)):33!==t||60!==e||this.inModule||45!==this.input.charCodeAt(this.pos+2)||45!==this.input.charCodeAt(this.pos+3)?(61===t&&(i=2),this.finishOp(O.relational,i)):(this.skipLineComment(4),this.skipSpace(),this.nextToken())},je.readToken_eq_excl=function(e){var t=this.input.charCodeAt(this.pos+1);return 61===t?this.finishOp(O.equality,61===this.input.charCodeAt(this.pos+2)?3:2):61===e&&62===t&&this.options.ecmaVersion>=6?(this.pos+=2,this.finishToken(O.arrow)):this.finishOp(61===e?O.eq:O.prefix,1)},je.readToken_question=function(){var e=this.options.ecmaVersion;if(e>=11){var t=this.input.charCodeAt(this.pos+1);if(46===t){var i=this.input.charCodeAt(this.pos+2);if(i<48||i>57)return this.finishOp(O.questionDot,2)}if(63===t){if(e>=12)if(61===this.input.charCodeAt(this.pos+2))return this.finishOp(O.assign,3);return this.finishOp(O.coalesce,2)}}return this.finishOp(O.question,1)},je.readToken_numberSign=function(){var e=35;if(this.options.ecmaVersion>=13&&(++this.pos,isIdentifierStart(e=this.fullCharCodeAtPos(),!0)||92===e))return this.finishToken(O.privateId,this.readWord1());this.raise(this.pos,\"Unexpected character '\"+codePointToString(e)+\"'\")},je.getTokenFromCode=function(e){switch(e){case 46:return this.readToken_dot();case 40:return++this.pos,this.finishToken(O.parenL);case 41:return++this.pos,this.finishToken(O.parenR);case 59:return++this.pos,this.finishToken(O.semi);case 44:return++this.pos,this.finishToken(O.comma);case 91:return++this.pos,this.finishToken(O.bracketL);case 93:return++this.pos,this.finishToken(O.bracketR);case 123:return++this.pos,this.finishToken(O.braceL);case 125:return++this.pos,this.finishToken(O.braceR);case 58:return++this.pos,this.finishToken(O.colon);case 96:if(this.options.ecmaVersion<6)break;return++this.pos,this.finishToken(O.backQuote);case 48:var t=this.input.charCodeAt(this.pos+1);if(120===t||88===t)return this.readRadixNumber(16);if(this.options.ecmaVersion>=6){if(111===t||79===t)return this.readRadixNumber(8);if(98===t||66===t)return this.readRadixNumber(2)}case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(e);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo_exp(e);case 124:case 38:return this.readToken_pipe_amp(e);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(e);case 60:case 62:return this.readToken_lt_gt(e);case 61:case 33:return this.readToken_eq_excl(e);case 63:return this.readToken_question();case 126:return this.finishOp(O.prefix,1);case 35:return this.readToken_numberSign()}this.raise(this.pos,\"Unexpected character '\"+codePointToString(e)+\"'\")},je.finishOp=function(e,t){var i=this.input.slice(this.pos,this.pos+t);return this.pos+=t,this.finishToken(e,i)},je.readRegexp=function(){for(var e,t,i=this.pos;;){this.pos>=this.input.length&&this.raise(i,\"Unterminated regular expression\");var n=this.input.charAt(this.pos);if(j.test(n)&&this.raise(i,\"Unterminated regular expression\"),e)e=!1;else{if(\"[\"===n)t=!0;else if(\"]\"===n&&t)t=!1;else if(\"/\"===n&&!t)break;e=\"\\\\\"===n}++this.pos}var a=this.input.slice(i,this.pos);++this.pos;var c=this.pos,l=this.readWord1();this.containsEsc&&this.unexpected(c);var y=this.regexpState||(this.regexpState=new acorn_RegExpValidationState(this));y.reset(i,a,l),this.validateRegExpFlags(y),this.validateRegExpPattern(y);var E=null;try{E=new RegExp(a,l)}catch(e){}return this.finishToken(O.regexp,{pattern:a,flags:l,value:E})},je.readInt=function(e,t,i){for(var n=this.options.ecmaVersion>=12&&void 0===t,a=i&&48===this.input.charCodeAt(this.pos),c=this.pos,l=0,y=0,E=0,w=null==t?1/0:t;E<w;++E,++this.pos){var C=this.input.charCodeAt(this.pos),S=void 0;if(n&&95===C)a&&this.raiseRecoverable(this.pos,\"Numeric separator is not allowed in legacy octal numeric literals\"),95===y&&this.raiseRecoverable(this.pos,\"Numeric separator must be exactly one underscore\"),0===E&&this.raiseRecoverable(this.pos,\"Numeric separator is not allowed at the first of digits\"),y=C;else{if((S=C>=97?C-97+10:C>=65?C-65+10:C>=48&&C<=57?C-48:1/0)>=e)break;y=C,l=l*e+S}}return n&&95===y&&this.raiseRecoverable(this.pos-1,\"Numeric separator is not allowed at the last of digits\"),this.pos===c||null!=t&&this.pos-c!==t?null:l},je.readRadixNumber=function(e){var t=this.pos;this.pos+=2;var i=this.readInt(e);return null==i&&this.raise(this.start+2,\"Expected number in radix \"+e),this.options.ecmaVersion>=11&&110===this.input.charCodeAt(this.pos)?(i=stringToBigInt(this.input.slice(t,this.pos)),++this.pos):isIdentifierStart(this.fullCharCodeAtPos())&&this.raise(this.pos,\"Identifier directly after number\"),this.finishToken(O.num,i)},je.readNumber=function(e){var t=this.pos;e||null!==this.readInt(10,void 0,!0)||this.raise(t,\"Invalid number\");var i=this.pos-t>=2&&48===this.input.charCodeAt(t);i&&this.strict&&this.raise(t,\"Invalid number\");var n=this.input.charCodeAt(this.pos);if(!i&&!e&&this.options.ecmaVersion>=11&&110===n){var a=stringToBigInt(this.input.slice(t,this.pos));return++this.pos,isIdentifierStart(this.fullCharCodeAtPos())&&this.raise(this.pos,\"Identifier directly after number\"),this.finishToken(O.num,a)}i&&/[89]/.test(this.input.slice(t,this.pos))&&(i=!1),46!==n||i||(++this.pos,this.readInt(10),n=this.input.charCodeAt(this.pos)),69!==n&&101!==n||i||(43!==(n=this.input.charCodeAt(++this.pos))&&45!==n||++this.pos,null===this.readInt(10)&&this.raise(t,\"Invalid number\")),isIdentifierStart(this.fullCharCodeAtPos())&&this.raise(this.pos,\"Identifier directly after number\");var c,l=(c=this.input.slice(t,this.pos),i?parseInt(c,8):parseFloat(c.replace(/_/g,\"\")));return this.finishToken(O.num,l)},je.readCodePoint=function(){var e;if(123===this.input.charCodeAt(this.pos)){this.options.ecmaVersion<6&&this.unexpected();var t=++this.pos;e=this.readHexChar(this.input.indexOf(\"}\",this.pos)-this.pos),++this.pos,e>1114111&&this.invalidStringToken(t,\"Code point out of bounds\")}else e=this.readHexChar(4);return e},je.readString=function(e){for(var t=\"\",i=++this.pos;;){this.pos>=this.input.length&&this.raise(this.start,\"Unterminated string constant\");var n=this.input.charCodeAt(this.pos);if(n===e)break;92===n?(t+=this.input.slice(i,this.pos),t+=this.readEscapedChar(!1),i=this.pos):8232===n||8233===n?(this.options.ecmaVersion<10&&this.raise(this.start,\"Unterminated string constant\"),++this.pos,this.options.locations&&(this.curLine++,this.lineStart=this.pos)):(isNewLine(n)&&this.raise(this.start,\"Unterminated string constant\"),++this.pos)}return t+=this.input.slice(i,this.pos++),this.finishToken(O.string,t)};var Fe={};je.tryReadTemplateToken=function(){this.inTemplateElement=!0;try{this.readTmplToken()}catch(e){if(e!==Fe)throw e;this.readInvalidTemplateToken()}this.inTemplateElement=!1},je.invalidStringToken=function(e,t){if(this.inTemplateElement&&this.options.ecmaVersion>=9)throw Fe;this.raise(e,t)},je.readTmplToken=function(){for(var e=\"\",t=this.pos;;){this.pos>=this.input.length&&this.raise(this.start,\"Unterminated template\");var i=this.input.charCodeAt(this.pos);if(96===i||36===i&&123===this.input.charCodeAt(this.pos+1))return this.pos!==this.start||this.type!==O.template&&this.type!==O.invalidTemplate?(e+=this.input.slice(t,this.pos),this.finishToken(O.template,e)):36===i?(this.pos+=2,this.finishToken(O.dollarBraceL)):(++this.pos,this.finishToken(O.backQuote));if(92===i)e+=this.input.slice(t,this.pos),e+=this.readEscapedChar(!0),t=this.pos;else if(isNewLine(i)){switch(e+=this.input.slice(t,this.pos),++this.pos,i){case 13:10===this.input.charCodeAt(this.pos)&&++this.pos;case 10:e+=\"\\n\";break;default:e+=String.fromCharCode(i)}this.options.locations&&(++this.curLine,this.lineStart=this.pos),t=this.pos}else++this.pos}},je.readInvalidTemplateToken=function(){for(;this.pos<this.input.length;this.pos++)switch(this.input[this.pos]){case\"\\\\\":++this.pos;break;case\"$\":if(\"{\"!==this.input[this.pos+1])break;case\"`\":return this.finishToken(O.invalidTemplate,this.input.slice(this.start,this.pos));case\"\\r\":\"\\n\"===this.input[this.pos+1]&&++this.pos;case\"\\n\":case\"\\u2028\":case\"\\u2029\":++this.curLine,this.lineStart=this.pos+1}this.raise(this.start,\"Unterminated template\")},je.readEscapedChar=function(e){var t=this.input.charCodeAt(++this.pos);switch(++this.pos,t){case 110:return\"\\n\";case 114:return\"\\r\";case 120:return String.fromCharCode(this.readHexChar(2));case 117:return codePointToString(this.readCodePoint());case 116:return\"\\t\";case 98:return\"\\b\";case 118:return\"\\v\";case 102:return\"\\f\";case 13:10===this.input.charCodeAt(this.pos)&&++this.pos;case 10:return this.options.locations&&(this.lineStart=this.pos,++this.curLine),\"\";case 56:case 57:if(this.strict&&this.invalidStringToken(this.pos-1,\"Invalid escape sequence\"),e){var i=this.pos-1;this.invalidStringToken(i,\"Invalid escape sequence in template string\")}default:if(t>=48&&t<=55){var n=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],a=parseInt(n,8);return a>255&&(n=n.slice(0,-1),a=parseInt(n,8)),this.pos+=n.length-1,t=this.input.charCodeAt(this.pos),\"0\"===n&&56!==t&&57!==t||!this.strict&&!e||this.invalidStringToken(this.pos-1-n.length,e?\"Octal literal in template string\":\"Octal literal in strict mode\"),String.fromCharCode(a)}return isNewLine(t)?(this.options.locations&&(this.lineStart=this.pos,++this.curLine),\"\"):String.fromCharCode(t)}},je.readHexChar=function(e){var t=this.pos,i=this.readInt(16,e);return null===i&&this.invalidStringToken(t,\"Bad character escape sequence\"),i},je.readWord1=function(){this.containsEsc=!1;for(var e=\"\",t=!0,i=this.pos,n=this.options.ecmaVersion>=6;this.pos<this.input.length;){var a=this.fullCharCodeAtPos();if(isIdentifierChar(a,n))this.pos+=a<=65535?1:2;else{if(92!==a)break;this.containsEsc=!0,e+=this.input.slice(i,this.pos);var c=this.pos;117!==this.input.charCodeAt(++this.pos)&&this.invalidStringToken(this.pos,\"Expecting Unicode escape sequence \\\\uXXXX\"),++this.pos;var l=this.readCodePoint();(t?isIdentifierStart:isIdentifierChar)(l,n)||this.invalidStringToken(c,\"Invalid Unicode escape\"),e+=codePointToString(l),i=this.pos}t=!1}return e+this.input.slice(i,this.pos)},je.readWord=function(){var e=this.readWord1(),t=O.name;return this.keywords.test(e)&&(t=N[e]),this.finishToken(t,e)};acorn_Parser.acorn={Parser:acorn_Parser,version:\"8.16.0\",defaultOptions:X,Position:acorn_Position,SourceLocation:acorn_SourceLocation,getLineInfo,Node:acorn_Node,TokenType:acorn_TokenType,tokTypes:O,keywordTypes:N,TokContext:acorn_TokContext,tokContexts:fe,isIdentifierChar,isIdentifierStart,Token:acorn_Token,isNewLine,lineBreak:j,lineBreakG:F,nonASCIIwhitespace:B};var Be=__webpack_require__(\"node:module\"),$e=__webpack_require__(\"node:fs\");String.fromCharCode;const qe=/\\/$|\\/\\?|\\/#/,Ge=/^\\.?\\//;function hasTrailingSlash(e=\"\",t){return t?qe.test(e):e.endsWith(\"/\")}function withTrailingSlash(e=\"\",t){if(!t)return e.endsWith(\"/\")?e:e+\"/\";if(hasTrailingSlash(e,!0))return e||\"/\";let i=e,n=\"\";const a=e.indexOf(\"#\");if(-1!==a&&(i=e.slice(0,a),n=e.slice(a),!i))return n;const[c,...l]=i.split(\"?\");return c+\"/\"+(l.length>0?`?${l.join(\"?\")}`:\"\")+n}function isNonEmptyURL(e){return e&&\"/\"!==e}function dist_joinURL(e,...t){let i=e||\"\";for(const e of t.filter(e=>isNonEmptyURL(e)))if(i){const t=e.replace(Ge,\"\");i=withTrailingSlash(i)+t}else i=e;return i}Symbol.for(\"ufo:protocolRelative\");const Ke=/^[A-Za-z]:\\//;function pathe_M_eThtNZ_normalizeWindowsPath(e=\"\"){return e?e.replace(/\\\\/g,\"/\").replace(Ke,e=>e.toUpperCase()):e}const He=/^[/\\\\]{2}/,ze=/^[/\\\\](?![/\\\\])|^[/\\\\]{2}(?!\\.)|^[A-Za-z]:[/\\\\]/,Je=/^[A-Za-z]:$/,Ye=/.(\\.[^./]+|\\.)$/,pathe_M_eThtNZ_normalize=function(e){if(0===e.length)return\".\";const t=(e=pathe_M_eThtNZ_normalizeWindowsPath(e)).match(He),i=isAbsolute(e),n=\"/\"===e[e.length-1];return 0===(e=normalizeString(e,!i)).length?i?\"/\":n?\"./\":\".\":(n&&(e+=\"/\"),Je.test(e)&&(e+=\"/\"),t?i?`//${e}`:`//./${e}`:i&&!isAbsolute(e)?`/${e}`:e)},pathe_M_eThtNZ_join=function(...e){let t=\"\";for(const i of e)if(i)if(t.length>0){const e=\"/\"===t[t.length-1],n=\"/\"===i[0];t+=e&&n?i.slice(1):e||n?i:`/${i}`}else t+=i;return pathe_M_eThtNZ_normalize(t)};function pathe_M_eThtNZ_cwd(){return\"undefined\"!=typeof process&&\"function\"==typeof process.cwd?process.cwd().replace(/\\\\/g,\"/\"):\"/\"}const pathe_M_eThtNZ_resolve=function(...e){let t=\"\",i=!1;for(let n=(e=e.map(e=>pathe_M_eThtNZ_normalizeWindowsPath(e))).length-1;n>=-1&&!i;n--){const a=n>=0?e[n]:pathe_M_eThtNZ_cwd();a&&0!==a.length&&(t=`${a}/${t}`,i=isAbsolute(a))}return t=normalizeString(t,!i),i&&!isAbsolute(t)?`/${t}`:t.length>0?t:\".\"};function normalizeString(e,t){let i=\"\",n=0,a=-1,c=0,l=null;for(let y=0;y<=e.length;++y){if(y<e.length)l=e[y];else{if(\"/\"===l)break;l=\"/\"}if(\"/\"===l){if(a===y-1||1===c);else if(2===c){if(i.length<2||2!==n||\".\"!==i[i.length-1]||\".\"!==i[i.length-2]){if(i.length>2){const e=i.lastIndexOf(\"/\");-1===e?(i=\"\",n=0):(i=i.slice(0,e),n=i.length-1-i.lastIndexOf(\"/\")),a=y,c=0;continue}if(i.length>0){i=\"\",n=0,a=y,c=0;continue}}t&&(i+=i.length>0?\"/..\":\"..\",n=2)}else i.length>0?i+=`/${e.slice(a+1,y)}`:i=e.slice(a+1,y),n=y-a-1;a=y,c=0}else\".\"===l&&-1!==c?++c:c=-1}return i}const isAbsolute=function(e){return ze.test(e)},extname=function(e){if(\"..\"===e)return\"\";const t=Ye.exec(pathe_M_eThtNZ_normalizeWindowsPath(e));return t&&t[1]||\"\"},pathe_M_eThtNZ_dirname=function(e){const t=pathe_M_eThtNZ_normalizeWindowsPath(e).replace(/\\/$/,\"\").split(\"/\").slice(0,-1);return 1===t.length&&Je.test(t[0])&&(t[0]+=\"/\"),t.join(\"/\")||(isAbsolute(e)?\"/\":\".\")},basename=function(e,t){const i=pathe_M_eThtNZ_normalizeWindowsPath(e).split(\"/\");let n=\"\";for(let e=i.length-1;e>=0;e--){const t=i[e];if(t){n=t;break}}return t&&n.endsWith(t)?n.slice(0,-t.length):n},Qe=require(\"node:url\"),Ze=require(\"node:assert\"),Xe=require(\"node:process\");var et=__webpack_require__(\"node:path\");const tt=require(\"node:v8\"),it=require(\"node:util\"),st=new Set(Be.builtinModules);function normalizeSlash(e){return e.replace(/\\\\/g,\"/\")}const rt={}.hasOwnProperty,nt=/^([A-Z][a-z\\d]*)+$/,at=new Set([\"string\",\"function\",\"number\",\"object\",\"Function\",\"Object\",\"boolean\",\"bigint\",\"symbol\"]),ot={};function formatList(e,t=\"and\"){return e.length<3?e.join(` ${t} `):`${e.slice(0,-1).join(\", \")}, ${t} ${e[e.length-1]}`}const ct=new Map;let ht;function createError(e,t,i){return ct.set(e,t),function(e,t){return NodeError;function NodeError(...i){const n=Error.stackTraceLimit;isErrorStackTraceLimitWritable()&&(Error.stackTraceLimit=0);const a=new e;isErrorStackTraceLimitWritable()&&(Error.stackTraceLimit=n);const c=function(e,t,i){const n=ct.get(e);if(Ze.ok(void 0!==n,\"expected `message` to be found\"),\"function\"==typeof n)return Ze.ok(n.length<=t.length,`Code: ${e}; The provided arguments length (${t.length}) does not match the required ones (${n.length}).`),Reflect.apply(n,i,t);const a=/%[dfijoOs]/g;let c=0;for(;null!==a.exec(n);)c++;return Ze.ok(c===t.length,`Code: ${e}; The provided arguments length (${t.length}) does not match the required ones (${c}).`),0===t.length?n:(t.unshift(n),Reflect.apply(it.format,null,t))}(t,i,a);return Object.defineProperties(a,{message:{value:c,enumerable:!1,writable:!0,configurable:!0},toString:{value(){return`${this.name} [${t}]: ${this.message}`},enumerable:!1,writable:!0,configurable:!0}}),lt(a),a.code=t,a}}(i,e)}function isErrorStackTraceLimitWritable(){try{if(tt.startupSnapshot.isBuildingSnapshot())return!1}catch{}const e=Object.getOwnPropertyDescriptor(Error,\"stackTraceLimit\");return void 0===e?Object.isExtensible(Error):rt.call(e,\"writable\")&&void 0!==e.writable?e.writable:void 0!==e.set}ot.ERR_INVALID_ARG_TYPE=createError(\"ERR_INVALID_ARG_TYPE\",(e,t,i)=>{Ze.ok(\"string\"==typeof e,\"'name' must be a string\"),Array.isArray(t)||(t=[t]);let n=\"The \";if(e.endsWith(\" argument\"))n+=`${e} `;else{const t=e.includes(\".\")?\"property\":\"argument\";n+=`\"${e}\" ${t} `}n+=\"must be \";const a=[],c=[],l=[];for(const e of t)Ze.ok(\"string\"==typeof e,\"All expected entries have to be of type string\"),at.has(e)?a.push(e.toLowerCase()):null===nt.exec(e)?(Ze.ok(\"object\"!==e,'The value \"object\" should be written as \"Object\"'),l.push(e)):c.push(e);if(c.length>0){const e=a.indexOf(\"object\");-1!==e&&(a.slice(e,1),c.push(\"Object\"))}return a.length>0&&(n+=`${a.length>1?\"one of type\":\"of type\"} ${formatList(a,\"or\")}`,(c.length>0||l.length>0)&&(n+=\" or \")),c.length>0&&(n+=`an instance of ${formatList(c,\"or\")}`,l.length>0&&(n+=\" or \")),l.length>0&&(l.length>1?n+=`one of ${formatList(l,\"or\")}`:(l[0].toLowerCase()!==l[0]&&(n+=\"an \"),n+=`${l[0]}`)),n+=`. Received ${function(e){if(null==e)return String(e);if(\"function\"==typeof e&&e.name)return`function ${e.name}`;if(\"object\"==typeof e)return e.constructor&&e.constructor.name?`an instance of ${e.constructor.name}`:`${(0,it.inspect)(e,{depth:-1})}`;let t=(0,it.inspect)(e,{colors:!1});t.length>28&&(t=`${t.slice(0,25)}...`);return`type ${typeof e} (${t})`}(i)}`,n},TypeError),ot.ERR_INVALID_MODULE_SPECIFIER=createError(\"ERR_INVALID_MODULE_SPECIFIER\",(e,t,i=void 0)=>`Invalid module \"${e}\" ${t}${i?` imported from ${i}`:\"\"}`,TypeError),ot.ERR_INVALID_PACKAGE_CONFIG=createError(\"ERR_INVALID_PACKAGE_CONFIG\",(e,t,i)=>`Invalid package config ${e}${t?` while importing ${t}`:\"\"}${i?`. ${i}`:\"\"}`,Error),ot.ERR_INVALID_PACKAGE_TARGET=createError(\"ERR_INVALID_PACKAGE_TARGET\",(e,t,i,n=!1,a=void 0)=>{const c=\"string\"==typeof i&&!n&&i.length>0&&!i.startsWith(\"./\");return\".\"===t?(Ze.ok(!1===n),`Invalid \"exports\" main target ${JSON.stringify(i)} defined in the package config ${e}package.json${a?` imported from ${a}`:\"\"}${c?'; targets must start with \"./\"':\"\"}`):`Invalid \"${n?\"imports\":\"exports\"}\" target ${JSON.stringify(i)} defined for '${t}' in the package config ${e}package.json${a?` imported from ${a}`:\"\"}${c?'; targets must start with \"./\"':\"\"}`},Error),ot.ERR_MODULE_NOT_FOUND=createError(\"ERR_MODULE_NOT_FOUND\",(e,t,i=!1)=>`Cannot find ${i?\"module\":\"package\"} '${e}' imported from ${t}`,Error),ot.ERR_NETWORK_IMPORT_DISALLOWED=createError(\"ERR_NETWORK_IMPORT_DISALLOWED\",\"import of '%s' by %s is not supported: %s\",Error),ot.ERR_PACKAGE_IMPORT_NOT_DEFINED=createError(\"ERR_PACKAGE_IMPORT_NOT_DEFINED\",(e,t,i)=>`Package import specifier \"${e}\" is not defined${t?` in package ${t}package.json`:\"\"} imported from ${i}`,TypeError),ot.ERR_PACKAGE_PATH_NOT_EXPORTED=createError(\"ERR_PACKAGE_PATH_NOT_EXPORTED\",(e,t,i=void 0)=>\".\"===t?`No \"exports\" main defined in ${e}package.json${i?` imported from ${i}`:\"\"}`:`Package subpath '${t}' is not defined by \"exports\" in ${e}package.json${i?` imported from ${i}`:\"\"}`,Error),ot.ERR_UNSUPPORTED_DIR_IMPORT=createError(\"ERR_UNSUPPORTED_DIR_IMPORT\",\"Directory import '%s' is not supported resolving ES modules imported from %s\",Error),ot.ERR_UNSUPPORTED_RESOLVE_REQUEST=createError(\"ERR_UNSUPPORTED_RESOLVE_REQUEST\",'Failed to resolve module specifier \"%s\" from \"%s\": Invalid relative URL or base scheme is not hierarchical.',TypeError),ot.ERR_UNKNOWN_FILE_EXTENSION=createError(\"ERR_UNKNOWN_FILE_EXTENSION\",(e,t)=>`Unknown file extension \"${e}\" for ${t}`,TypeError),ot.ERR_INVALID_ARG_VALUE=createError(\"ERR_INVALID_ARG_VALUE\",(e,t,i=\"is invalid\")=>{let n=(0,it.inspect)(t);n.length>128&&(n=`${n.slice(0,128)}...`);return`The ${e.includes(\".\")?\"property\":\"argument\"} '${e}' ${i}. Received ${n}`},TypeError);const lt=function(e){const t=\"__node_internal_\"+e.name;return Object.defineProperty(e,\"name\",{value:t}),e}(function(e){const t=isErrorStackTraceLimitWritable();return t&&(ht=Error.stackTraceLimit,Error.stackTraceLimit=Number.POSITIVE_INFINITY),Error.captureStackTrace(e),t&&(Error.stackTraceLimit=ht),e});const pt={}.hasOwnProperty,{ERR_INVALID_PACKAGE_CONFIG:ut}=ot,dt=new Map;function read(e,{base:t,specifier:i}){const n=dt.get(e);if(n)return n;let a;try{a=$e.readFileSync(et.toNamespacedPath(e),\"utf8\")}catch(e){const t=e;if(\"ENOENT\"!==t.code)throw t}const c={exists:!1,pjsonPath:e,main:void 0,name:void 0,type:\"none\",exports:void 0,imports:void 0};if(void 0!==a){let n;try{n=JSON.parse(a)}catch(n){const a=n,c=new ut(e,(t?`\"${i}\" from `:\"\")+(0,Qe.fileURLToPath)(t||i),a.message);throw c.cause=a,c}c.exists=!0,pt.call(n,\"name\")&&\"string\"==typeof n.name&&(c.name=n.name),pt.call(n,\"main\")&&\"string\"==typeof n.main&&(c.main=n.main),pt.call(n,\"exports\")&&(c.exports=n.exports),pt.call(n,\"imports\")&&(c.imports=n.imports),!pt.call(n,\"type\")||\"commonjs\"!==n.type&&\"module\"!==n.type||(c.type=n.type)}return dt.set(e,c),c}function getPackageScopeConfig(e){let t=new URL(\"package.json\",e);for(;;){if(t.pathname.endsWith(\"node_modules/package.json\"))break;const i=read((0,Qe.fileURLToPath)(t),{specifier:e});if(i.exists)return i;const n=t;if(t=new URL(\"../package.json\",t),t.pathname===n.pathname)break}return{pjsonPath:(0,Qe.fileURLToPath)(t),exists:!1,type:\"none\"}}function getPackageType(e){return getPackageScopeConfig(e).type}const{ERR_UNKNOWN_FILE_EXTENSION:ft}=ot,mt={}.hasOwnProperty,gt={__proto__:null,\".cjs\":\"commonjs\",\".js\":\"module\",\".json\":\"json\",\".mjs\":\"module\"};const xt={__proto__:null,\"data:\":function(e){const{1:t}=/^([^/]+\\/[^;,]+)[^,]*?(;base64)?,/.exec(e.pathname)||[null,null,null];return function(e){return e&&/\\s*(text|application)\\/javascript\\s*(;\\s*charset=utf-?8\\s*)?/i.test(e)?\"module\":\"application/json\"===e?\"json\":null}(t)},\"file:\":function(e,t,i){const n=function(e){const t=e.pathname;let i=t.length;for(;i--;){const e=t.codePointAt(i);if(47===e)return\"\";if(46===e)return 47===t.codePointAt(i-1)?\"\":t.slice(i)}return\"\"}(e);if(\".js\"===n){const t=getPackageType(e);return\"none\"!==t?t:\"commonjs\"}if(\"\"===n){const t=getPackageType(e);return\"none\"===t||\"commonjs\"===t?\"commonjs\":\"module\"}const a=gt[n];if(a)return a;if(i)return;const c=(0,Qe.fileURLToPath)(e);throw new ft(n,c)},\"http:\":getHttpProtocolModuleFormat,\"https:\":getHttpProtocolModuleFormat,\"node:\":()=>\"builtin\"};function getHttpProtocolModuleFormat(){}const vt=Object.freeze([\"node\",\"import\"]),yt=new Set(vt);function getConditionsSet(e){return yt}const _t=RegExp.prototype[Symbol.replace],{ERR_INVALID_MODULE_SPECIFIER:Et,ERR_INVALID_PACKAGE_CONFIG:bt,ERR_INVALID_PACKAGE_TARGET:kt,ERR_MODULE_NOT_FOUND:wt,ERR_PACKAGE_IMPORT_NOT_DEFINED:Ct,ERR_PACKAGE_PATH_NOT_EXPORTED:St,ERR_UNSUPPORTED_DIR_IMPORT:It,ERR_UNSUPPORTED_RESOLVE_REQUEST:Tt}=ot,Rt={}.hasOwnProperty,At=/(^|\\\\|\\/)((\\.|%2e)(\\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))?(\\\\|\\/|$)/i,Pt=/(^|\\\\|\\/)((\\.|%2e)(\\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\\\|\\/|$)/i,Lt=/^\\.|%|\\\\/,Nt=/\\*/g,Ot=/%2f|%5c/i,Dt=new Set,Vt=/[/\\\\]{2}/;function emitInvalidSegmentDeprecation(e,t,i,n,a,c,l){if(Xe.noDeprecation)return;const y=(0,Qe.fileURLToPath)(n),E=null!==Vt.exec(l?e:t);Xe.emitWarning(`Use of deprecated ${E?\"double slash\":\"leading or trailing slash matching\"} resolving \"${e}\" for module request \"${t}\" ${t===i?\"\":`matched to \"${i}\" `}in the \"${a?\"imports\":\"exports\"}\" field module resolution of the package at ${y}${c?` imported from ${(0,Qe.fileURLToPath)(c)}`:\"\"}.`,\"DeprecationWarning\",\"DEP0166\")}function emitLegacyIndexDeprecation(e,t,i,n){if(Xe.noDeprecation)return;const a=function(e,t){const i=e.protocol;return mt.call(xt,i)&&xt[i](e,t,!0)||null}(e,{parentURL:i.href});if(\"module\"!==a)return;const c=(0,Qe.fileURLToPath)(e.href),l=(0,Qe.fileURLToPath)(new URL(\".\",t)),y=(0,Qe.fileURLToPath)(i);n?et.resolve(l,n)!==c&&Xe.emitWarning(`Package ${l} has a \"main\" field set to \"${n}\", excluding the full filename and extension to the resolved file at \"${c.slice(l.length)}\", imported from ${y}.\\n Automatic extension resolution of the \"main\" field is deprecated for ES modules.`,\"DeprecationWarning\",\"DEP0151\"):Xe.emitWarning(`No \"main\" or \"exports\" field defined in the package.json for ${l} resolving the main entry point \"${c.slice(l.length)}\", imported from ${y}.\\nDefault \"index\" lookups for the main are deprecated for ES modules.`,\"DeprecationWarning\",\"DEP0151\")}function tryStatSync(e){try{return(0,$e.statSync)(e)}catch{}}function fileExists(e){const t=(0,$e.statSync)(e,{throwIfNoEntry:!1}),i=t?t.isFile():void 0;return null!=i&&i}function legacyMainResolve(e,t,i){let n;if(void 0!==t.main){if(n=new URL(t.main,e),fileExists(n))return n;const a=[`./${t.main}.js`,`./${t.main}.json`,`./${t.main}.node`,`./${t.main}/index.js`,`./${t.main}/index.json`,`./${t.main}/index.node`];let c=-1;for(;++c<a.length&&(n=new URL(a[c],e),!fileExists(n));)n=void 0;if(n)return emitLegacyIndexDeprecation(n,e,i,t.main),n}const a=[\"./index.js\",\"./index.json\",\"./index.node\"];let c=-1;for(;++c<a.length&&(n=new URL(a[c],e),!fileExists(n));)n=void 0;if(n)return emitLegacyIndexDeprecation(n,e,i,t.main),n;throw new wt((0,Qe.fileURLToPath)(new URL(\".\",e)),(0,Qe.fileURLToPath)(i))}function exportsNotFound(e,t,i){return new St((0,Qe.fileURLToPath)(new URL(\".\",t)),e,i&&(0,Qe.fileURLToPath)(i))}function invalidPackageTarget(e,t,i,n,a){return t=\"object\"==typeof t&&null!==t?JSON.stringify(t,null,\"\"):`${t}`,new kt((0,Qe.fileURLToPath)(new URL(\".\",i)),e,t,n,a&&(0,Qe.fileURLToPath)(a))}function resolvePackageTargetString(e,t,i,n,a,c,l,y,E){if(\"\"!==t&&!c&&\"/\"!==e[e.length-1])throw invalidPackageTarget(i,e,n,l,a);if(!e.startsWith(\"./\")){if(l&&!e.startsWith(\"../\")&&!e.startsWith(\"/\")){let i=!1;try{new URL(e),i=!0}catch{}if(!i){return packageResolve(c?_t.call(Nt,e,()=>t):e+t,n,E)}}throw invalidPackageTarget(i,e,n,l,a)}if(null!==At.exec(e.slice(2))){if(null!==Pt.exec(e.slice(2)))throw invalidPackageTarget(i,e,n,l,a);if(!y){const y=c?i.replace(\"*\",()=>t):i+t;emitInvalidSegmentDeprecation(c?_t.call(Nt,e,()=>t):e,y,i,n,l,a,!0)}}const w=new URL(e,n),C=w.pathname,S=new URL(\".\",n).pathname;if(!C.startsWith(S))throw invalidPackageTarget(i,e,n,l,a);if(\"\"===t)return w;if(null!==At.exec(t)){const E=c?i.replace(\"*\",()=>t):i+t;if(null===Pt.exec(t)){if(!y){emitInvalidSegmentDeprecation(c?_t.call(Nt,e,()=>t):e,E,i,n,l,a,!1)}}else!function(e,t,i,n,a){const c=`request is not a valid match in pattern \"${t}\" for the \"${n?\"imports\":\"exports\"}\" resolution of ${(0,Qe.fileURLToPath)(i)}`;throw new Et(e,c,a&&(0,Qe.fileURLToPath)(a))}(E,i,n,l,a)}return c?new URL(_t.call(Nt,w.href,()=>t)):new URL(t,w)}function isArrayIndex(e){const t=Number(e);return`${t}`===e&&(t>=0&&t<4294967295)}function resolvePackageTarget(e,t,i,n,a,c,l,y,E){if(\"string\"==typeof t)return resolvePackageTargetString(t,i,n,e,a,c,l,y,E);if(Array.isArray(t)){const w=t;if(0===w.length)return null;let C,S=-1;for(;++S<w.length;){const t=w[S];let I;try{I=resolvePackageTarget(e,t,i,n,a,c,l,y,E)}catch(e){if(C=e,\"ERR_INVALID_PACKAGE_TARGET\"===e.code)continue;throw e}if(void 0!==I){if(null!==I)return I;C=null}}if(null==C)return null;throw C}if(\"object\"==typeof t&&null!==t){const w=Object.getOwnPropertyNames(t);let C=-1;for(;++C<w.length;){if(isArrayIndex(w[C]))throw new bt((0,Qe.fileURLToPath)(e),a,'\"exports\" cannot contain numeric property keys.')}for(C=-1;++C<w.length;){const S=w[C];if(\"default\"===S||E&&E.has(S)){const w=resolvePackageTarget(e,t[S],i,n,a,c,l,y,E);if(void 0===w)continue;return w}}return null}if(null===t)return null;throw invalidPackageTarget(n,t,e,l,a)}function emitTrailingSlashPatternDeprecation(e,t,i){if(Xe.noDeprecation)return;const n=(0,Qe.fileURLToPath)(t);Dt.has(n+\"|\"+e)||(Dt.add(n+\"|\"+e),Xe.emitWarning(`Use of deprecated trailing slash pattern mapping \"${e}\" in the \"exports\" field module resolution of the package at ${n}${i?` imported from ${(0,Qe.fileURLToPath)(i)}`:\"\"}. Mapping specifiers ending in \"/\" is no longer supported.`,\"DeprecationWarning\",\"DEP0155\"))}function packageExportsResolve(e,t,i,n,a){let c=i.exports;if(function(e,t,i){if(\"string\"==typeof e||Array.isArray(e))return!0;if(\"object\"!=typeof e||null===e)return!1;const n=Object.getOwnPropertyNames(e);let a=!1,c=0,l=-1;for(;++l<n.length;){const e=n[l],y=\"\"===e||\".\"!==e[0];if(0===c++)a=y;else if(a!==y)throw new bt((0,Qe.fileURLToPath)(t),i,\"\\\"exports\\\" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.\")}return a}(c,e,n)&&(c={\".\":c}),Rt.call(c,t)&&!t.includes(\"*\")&&!t.endsWith(\"/\")){const i=resolvePackageTarget(e,c[t],\"\",t,n,!1,!1,!1,a);if(null==i)throw exportsNotFound(t,e,n);return i}let l=\"\",y=\"\";const E=Object.getOwnPropertyNames(c);let w=-1;for(;++w<E.length;){const i=E[w],a=i.indexOf(\"*\");if(-1!==a&&t.startsWith(i.slice(0,a))){t.endsWith(\"/\")&&emitTrailingSlashPatternDeprecation(t,e,n);const c=i.slice(a+1);t.length>=i.length&&t.endsWith(c)&&1===patternKeyCompare(l,i)&&i.lastIndexOf(\"*\")===a&&(l=i,y=t.slice(a,t.length-c.length))}}if(l){const i=resolvePackageTarget(e,c[l],y,l,n,!0,!1,t.endsWith(\"/\"),a);if(null==i)throw exportsNotFound(t,e,n);return i}throw exportsNotFound(t,e,n)}function patternKeyCompare(e,t){const i=e.indexOf(\"*\"),n=t.indexOf(\"*\"),a=-1===i?e.length:i+1,c=-1===n?t.length:n+1;return a>c?-1:c>a||-1===i?1:-1===n||e.length>t.length?-1:t.length>e.length?1:0}function packageImportsResolve(e,t,i){if(\"#\"===e||e.startsWith(\"#/\")||e.endsWith(\"/\")){throw new Et(e,\"is not a valid internal imports specifier name\",(0,Qe.fileURLToPath)(t))}let n;const a=getPackageScopeConfig(t);if(a.exists){n=(0,Qe.pathToFileURL)(a.pjsonPath);const c=a.imports;if(c)if(Rt.call(c,e)&&!e.includes(\"*\")){const a=resolvePackageTarget(n,c[e],\"\",e,t,!1,!0,!1,i);if(null!=a)return a}else{let a=\"\",l=\"\";const y=Object.getOwnPropertyNames(c);let E=-1;for(;++E<y.length;){const t=y[E],i=t.indexOf(\"*\");if(-1!==i&&e.startsWith(t.slice(0,-1))){const n=t.slice(i+1);e.length>=t.length&&e.endsWith(n)&&1===patternKeyCompare(a,t)&&t.lastIndexOf(\"*\")===i&&(a=t,l=e.slice(i,e.length-n.length))}}if(a){const e=resolvePackageTarget(n,c[a],l,a,t,!0,!0,!1,i);if(null!=e)return e}}}throw function(e,t,i){return new Ct(e,t&&(0,Qe.fileURLToPath)(new URL(\".\",t)),(0,Qe.fileURLToPath)(i))}(e,n,t)}function packageResolve(e,t,i){if(Be.builtinModules.includes(e))return new URL(\"node:\"+e);const{packageName:n,packageSubpath:a,isScoped:c}=function(e,t){let i=e.indexOf(\"/\"),n=!0,a=!1;\"@\"===e[0]&&(a=!0,-1===i||0===e.length?n=!1:i=e.indexOf(\"/\",i+1));const c=-1===i?e:e.slice(0,i);if(null!==Lt.exec(c)&&(n=!1),!n)throw new Et(e,\"is not a valid package name\",(0,Qe.fileURLToPath)(t));return{packageName:c,packageSubpath:\".\"+(-1===i?\"\":e.slice(i)),isScoped:a}}(e,t),l=getPackageScopeConfig(t);if(l.exists){const e=(0,Qe.pathToFileURL)(l.pjsonPath);if(l.name===n&&void 0!==l.exports&&null!==l.exports)return packageExportsResolve(e,a,l,t,i)}let y,E=new URL(\"./node_modules/\"+n+\"/package.json\",t),w=(0,Qe.fileURLToPath)(E);do{const l=tryStatSync(w.slice(0,-13));if(!l||!l.isDirectory()){y=w,E=new URL((c?\"../../../../node_modules/\":\"../../../node_modules/\")+n+\"/package.json\",E),w=(0,Qe.fileURLToPath)(E);continue}const C=read(w,{base:t,specifier:e});return void 0!==C.exports&&null!==C.exports?packageExportsResolve(E,a,C,t,i):\".\"===a?legacyMainResolve(E,C,t):new URL(a,E)}while(w.length!==y.length)}function moduleResolve(e,t,i,n){void 0===i&&(i=getConditionsSet());const a=t.protocol,c=\"data:\"===a||\"http:\"===a||\"https:\"===a;let l;if(function(e){return\"\"!==e&&(\"/\"===e[0]||function(e){if(\".\"===e[0]){if(1===e.length||\"/\"===e[1])return!0;if(\".\"===e[1]&&(2===e.length||\"/\"===e[2]))return!0}return!1}(e))}(e))try{l=new URL(e,t)}catch(i){const n=new Tt(e,t);throw n.cause=i,n}else if(\"file:\"===a&&\"#\"===e[0])l=packageImportsResolve(e,t,i);else try{l=new URL(e)}catch(n){if(c&&!Be.builtinModules.includes(e)){const i=new Tt(e,t);throw i.cause=n,i}l=packageResolve(e,t,i)}return Ze.ok(void 0!==l,\"expected to be defined\"),\"file:\"!==l.protocol?l:function(e,t){if(null!==Ot.exec(e.pathname))throw new Et(e.pathname,'must not include encoded \"/\" or \"\\\\\" characters',(0,Qe.fileURLToPath)(t));let i;try{i=(0,Qe.fileURLToPath)(e)}catch(i){const n=i;throw Object.defineProperty(n,\"input\",{value:String(e)}),Object.defineProperty(n,\"module\",{value:String(t)}),n}const n=tryStatSync(i.endsWith(\"/\")?i.slice(-1):i);if(n&&n.isDirectory()){const n=new It(i,(0,Qe.fileURLToPath)(t));throw n.url=String(e),n}if(!n||!n.isFile()){const n=new wt(i||e.pathname,t&&(0,Qe.fileURLToPath)(t),!0);throw n.url=String(e),n}{const t=(0,$e.realpathSync)(i),{search:n,hash:a}=e;(e=(0,Qe.pathToFileURL)(t+(i.endsWith(et.sep)?\"/\":\"\"))).search=n,e.hash=a}return e}(l,t)}function fileURLToPath(e){return\"string\"!=typeof e||e.startsWith(\"file://\")?normalizeSlash((0,Qe.fileURLToPath)(e)):normalizeSlash(e)}function pathToFileURL(e){return(0,Qe.pathToFileURL)(fileURLToPath(e)).toString()}const Ut=new Set([\"node\",\"import\"]),Mt=[\".mjs\",\".cjs\",\".js\",\".json\"],jt=new Set([\"ERR_MODULE_NOT_FOUND\",\"ERR_UNSUPPORTED_DIR_IMPORT\",\"MODULE_NOT_FOUND\",\"ERR_PACKAGE_PATH_NOT_EXPORTED\"]);function _tryModuleResolve(e,t,i){try{return moduleResolve(e,t,i)}catch(e){if(!jt.has(e?.code))throw e}}function _resolve(e,t={}){if(\"string\"!=typeof e){if(!(e instanceof URL))throw new TypeError(\"input must be a `string` or `URL`\");e=fileURLToPath(e)}if(/(?:node|data|http|https):/.test(e))return e;if(st.has(e))return\"node:\"+e;if(e.startsWith(\"file://\")&&(e=fileURLToPath(e)),isAbsolute(e))try{if((0,$e.statSync)(e).isFile())return pathToFileURL(e)}catch(e){if(\"ENOENT\"!==e?.code)throw e}const i=t.conditions?new Set(t.conditions):Ut,n=(Array.isArray(t.url)?t.url:[t.url]).filter(Boolean).map(e=>new URL(function(e){return\"string\"!=typeof e&&(e=e.toString()),/(?:node|data|http|https|file):/.test(e)?e:st.has(e)?\"node:\"+e:\"file://\"+encodeURI(normalizeSlash(e))}(e.toString())));0===n.length&&n.push(new URL(pathToFileURL(process.cwd())));const a=[...n];for(const e of n)\"file:\"===e.protocol&&a.push(new URL(\"./\",e),new URL(dist_joinURL(e.pathname,\"_index.js\"),e),new URL(\"node_modules\",e));let c;for(const n of a){if(c=_tryModuleResolve(e,n,i),c)break;for(const a of[\"\",\"/index\"]){for(const l of t.extensions||Mt)if(c=_tryModuleResolve(dist_joinURL(e,a)+l,n,i),c)break;if(c)break}if(c)break}if(!c){const t=new Error(`Cannot find module ${e} imported from ${a.join(\", \")}`);throw t.code=\"ERR_MODULE_NOT_FOUND\",t}return pathToFileURL(c)}function resolveSync(e,t){return _resolve(e,t)}function resolvePathSync(e,t){return fileURLToPath(resolveSync(e,t))}const Ft=/(?:[\\s;]|^)(?:import[\\s\\w*,{}]*from|import\\s*[\"'*{]|export\\b\\s*(?:[*{]|default|class|type|function|const|var|let|async function)|import\\.meta\\b)/m,Bt=/\\/\\*.+?\\*\\/|\\/\\/.*(?=[nr])/g;function hasESMSyntax(e,t={}){return t.stripComments&&(e=e.replace(Bt,\"\")),Ft.test(e)}function escapeStringRegexp(e){if(\"string\"!=typeof e)throw new TypeError(\"Expected a string\");return e.replace(/[|\\\\{}()[\\]^$+*?.]/g,\"\\\\$&\").replace(/-/g,\"\\\\x2d\")}const $t=new Set([\"/\",\"\\\\\",void 0]),qt=Symbol.for(\"pathe:normalizedAlias\"),Wt=/[/\\\\]/;function normalizeAliases(e){if(e[qt])return e;const t=Object.fromEntries(Object.entries(e).sort(([e],[t])=>function(e,t){return t.split(\"/\").length-e.split(\"/\").length}(e,t)));for(const e in t)for(const i in t)i===e||e.startsWith(i)||t[e]?.startsWith(i)&&$t.has(t[e][i.length])&&(t[e]=t[i]+t[e].slice(i.length));return Object.defineProperty(t,qt,{value:!0,enumerable:!1}),t}function utils_hasTrailingSlash(e=\"/\"){const t=e[e.length-1];return\"/\"===t||\"\\\\\"===t}var Gt={rE:\"2.6.1\"};const Kt=require(\"node:crypto\");var Ht=__webpack_require__.n(Kt);const zt=globalThis.process?.env||Object.create(null),Jt=globalThis.process||{env:zt},Yt=void 0!==Jt&&Jt.env&&Jt.env.NODE_ENV||void 0,Qt=[[\"claude\",[\"CLAUDECODE\",\"CLAUDE_CODE\"]],[\"replit\",[\"REPL_ID\"]],[\"gemini\",[\"GEMINI_CLI\"]],[\"codex\",[\"CODEX_SANDBOX\",\"CODEX_THREAD_ID\"]],[\"opencode\",[\"OPENCODE\"]],[\"pi\",[dist_i(\"PATH\",/\\.pi[\\\\/]agent/)]],[\"auggie\",[\"AUGMENT_AGENT\"]],[\"goose\",[\"GOOSE_PROVIDER\"]],[\"devin\",[dist_i(\"EDITOR\",/devin/)]],[\"cursor\",[\"CURSOR_AGENT\"]],[\"kiro\",[dist_i(\"TERM_PROGRAM\",/kiro/)]]];function dist_i(e,t){return()=>{let i=zt[e];return!!i&&t.test(i)}}const Zt=function(){let e=zt.AI_AGENT;if(e)return{name:e.toLowerCase()};for(let[e,t]of Qt)for(let i of t)if(\"string\"==typeof i?zt[i]:i())return{name:e};return{}}(),Xt=(Zt.name,Zt.name,[[\"APPVEYOR\"],[\"AWS_AMPLIFY\",\"AWS_APP_ID\",{ci:!0}],[\"AZURE_PIPELINES\",\"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI\"],[\"AZURE_STATIC\",\"INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN\"],[\"APPCIRCLE\",\"AC_APPCIRCLE\"],[\"BAMBOO\",\"bamboo_planKey\"],[\"BITBUCKET\",\"BITBUCKET_COMMIT\"],[\"BITRISE\",\"BITRISE_IO\"],[\"BUDDY\",\"BUDDY_WORKSPACE_ID\"],[\"BUILDKITE\"],[\"CIRCLE\",\"CIRCLECI\"],[\"CIRRUS\",\"CIRRUS_CI\"],[\"CLOUDFLARE_PAGES\",\"CF_PAGES\",{ci:!0}],[\"CLOUDFLARE_WORKERS\",\"WORKERS_CI\",{ci:!0}],[\"GOOGLE_CLOUDRUN\",\"K_SERVICE\"],[\"GOOGLE_CLOUDRUN_JOB\",\"CLOUD_RUN_JOB\"],[\"CODEBUILD\",\"CODEBUILD_BUILD_ARN\"],[\"CODEFRESH\",\"CF_BUILD_ID\"],[\"DRONE\"],[\"DRONE\",\"DRONE_BUILD_EVENT\"],[\"DSARI\"],[\"GITHUB_ACTIONS\"],[\"GITLAB\",\"GITLAB_CI\"],[\"GITLAB\",\"CI_MERGE_REQUEST_ID\"],[\"GOCD\",\"GO_PIPELINE_LABEL\"],[\"LAYERCI\"],[\"JENKINS\",\"JENKINS_URL\"],[\"HUDSON\",\"HUDSON_URL\"],[\"MAGNUM\"],[\"NETLIFY\"],[\"NETLIFY\",\"NETLIFY_LOCAL\",{ci:!1}],[\"NEVERCODE\"],[\"RENDER\"],[\"SAIL\",\"SAILCI\"],[\"SEMAPHORE\"],[\"SCREWDRIVER\"],[\"SHIPPABLE\"],[\"SOLANO\",\"TDDIUM\"],[\"STRIDER\"],[\"TEAMCITY\",\"TEAMCITY_VERSION\"],[\"TRAVIS\"],[\"VERCEL\",\"NOW_BUILDER\"],[\"VERCEL\",\"VERCEL\",{ci:!1}],[\"VERCEL\",\"VERCEL_ENV\",{ci:!1}],[\"APPCENTER\",\"APPCENTER_BUILD_ID\"],[\"CODESANDBOX\",\"CODESANDBOX_SSE\",{ci:!1}],[\"CODESANDBOX\",\"CODESANDBOX_HOST\",{ci:!1}],[\"STACKBLITZ\"],[\"STORMKIT\"],[\"CLEAVR\"],[\"ZEABUR\"],[\"CODESPHERE\",\"CODESPHERE_APP_ID\",{ci:!0}],[\"RAILWAY\",\"RAILWAY_PROJECT_ID\"],[\"RAILWAY\",\"RAILWAY_SERVICE_ID\"],[\"DENO-DEPLOY\",\"DENO_DEPLOY\"],[\"DENO-DEPLOY\",\"DENO_DEPLOYMENT_ID\"],[\"FIREBASE_APP_HOSTING\",\"FIREBASE_APP_HOSTING\",{ci:!0}],[\"EDGEONE_PAGES\",\"EO_PAGES_CI\",{ci:!0}]]);const ei=function(){for(let e of Xt)if(zt[e[1]||e[0]])return{name:e[0].toLowerCase(),...e[2]};return\"/bin/jsh\"===zt.SHELL&&Jt.versions?.webcontainer?{name:\"stackblitz\",ci:!1}:{name:\"\",ci:!1}}(),ti=(ei.name,Jt.platform||\"\"),ii=!!zt.CI||!1!==ei.ci,si=!!Jt.stdout?.isTTY,ri=(zt.DEBUG,\"test\"===Yt||!!zt.TEST),ni=(\"production\"===Yt||zt.MODE,\"dev\"===Yt||\"development\"===Yt||zt.MODE,zt.MINIMAL,/^win/i.test(ti)),ai=(/^linux/i.test(ti),/^darwin/i.test(ti),!zt.NO_COLOR&&(!!zt.FORCE_COLOR||(si||ni)&&zt.TERM),(Jt.versions?.node||\"\").replace(/^v/,\"\")||null),oi=(Number(ai?.split(\".\")[0]),!!Jt?.versions?.node),ci=\"Bun\"in globalThis,hi=\"Deno\"in globalThis,li=\"fastly\"in globalThis,pi=[[\"Netlify\"in globalThis,\"netlify\"],[\"EdgeRuntime\"in globalThis,\"edge-light\"],[\"Cloudflare-Workers\"===globalThis.navigator?.userAgent,\"workerd\"],[li,\"fastly\"],[hi,\"deno\"],[ci,\"bun\"],[oi,\"node\"]];!function(){let e=pi.find(e=>e[0]);if(e)e[1]}();const ui=require(\"node:tty\"),di=ui?.WriteStream?.prototype?.hasColors?.()??!1,base_format=(e,t)=>{if(!di)return e=>e;const i=`\u001B[${e}m`,n=`\u001B[${t}m`;return e=>{const a=e+\"\";let c=a.indexOf(n);if(-1===c)return i+a+n;let l=i,y=0;const E=(22===t?n:\"\")+i;for(;-1!==c;)l+=a.slice(y,c)+E,y=c+n.length,c=a.indexOf(n,y);return l+=a.slice(y)+n,l}},fi=(base_format(0,0),base_format(1,22),base_format(2,22),base_format(3,23),base_format(4,24),base_format(53,55),base_format(7,27),base_format(8,28),base_format(9,29),base_format(30,39),base_format(31,39)),mi=base_format(32,39),gi=base_format(33,39),xi=base_format(34,39),vi=(base_format(35,39),base_format(36,39)),yi=(base_format(37,39),base_format(90,39));base_format(40,49),base_format(41,49),base_format(42,49),base_format(43,49),base_format(44,49),base_format(45,49),base_format(46,49),base_format(47,49),base_format(100,49),base_format(91,39),base_format(92,39),base_format(93,39),base_format(94,39),base_format(95,39),base_format(96,39),base_format(97,39),base_format(101,49),base_format(102,49),base_format(103,49),base_format(104,49),base_format(105,49),base_format(106,49),base_format(107,49);function isDir(e){if(\"string\"!=typeof e||e.startsWith(\"file://\"))return!1;try{return(0,$e.lstatSync)(e).isDirectory()}catch{return!1}}function utils_hash(e,t=8){return(function(){if(void 0!==Ei)return Ei;try{return Ei=!!Ht().getFips?.(),Ei}catch{return Ei=!1,Ei}}()?Ht().createHash(\"sha256\"):Ht().createHash(\"md5\")).update(e).digest(\"hex\").slice(0,t)}const _i={true:mi(\"true\"),false:gi(\"false\"),\"[rebuild]\":gi(\"[rebuild]\"),\"[esm]\":xi(\"[esm]\"),\"[cjs]\":mi(\"[cjs]\"),\"[import]\":xi(\"[import]\"),\"[require]\":mi(\"[require]\"),\"[native]\":vi(\"[native]\"),\"[transpile]\":gi(\"[transpile]\"),\"[fallback]\":fi(\"[fallback]\"),\"[unknown]\":fi(\"[unknown]\"),\"[hit]\":mi(\"[hit]\"),\"[miss]\":gi(\"[miss]\"),\"[json]\":mi(\"[json]\"),\"[data]\":mi(\"[data]\")};function debug(e,...t){if(!e.opts.debug)return;const i=process.cwd();console.log(yi([\"[jiti]\",...t.map(e=>e in _i?_i[e]:\"string\"!=typeof e?JSON.stringify(e):e.replace(i,\".\"))].join(\" \")))}function jitiInteropDefault(e,t){return e.opts.interopDefault?function(e){const t=typeof e;if(null===e||\"object\"!==t&&\"function\"!==t)return e;const i=e.default,n=typeof i,a=null==i,c=\"object\"===n||\"function\"===n;if(a&&e instanceof Promise)return e;const l=\"function\"===n&&\"function\"!==t,y=c&&!(i instanceof Promise),E=new Map;return new Proxy(e,{get(t,n){if(E.has(n))return E.get(n);let c;return\"__esModule\"===n?c=!0:\"default\"===n?c=a?e:\"function\"==typeof i?.default&&e.__esModule?i.default:i:n in t?c=t[n]:y&&(c=i[n],\"function\"==typeof c&&(c=c.bind(i))),E.set(n,c),c},apply:l?(e,t,n)=>Reflect.apply(i,t,n):void 0})}(t):t}let Ei;function _booleanEnv(e,t){const i=_jsonEnv(e,t);return Boolean(i)}function _jsonEnv(e,t,i){const n=process.env[e];if(!(e in process.env))return t;try{return JSON.parse(n)}catch{return i?n:t}}const bi=/\\.(c|m)?j(sx?)$/,ki=/\\.(c|m)?t(sx?)$/;function jitiResolve(e,t,i){let n,a;if(e.isNativeRe.test(t))return t;if(e.resolveTsConfigPaths&&!i.skipTsConfigPaths){const n=e.resolveTsConfigPaths(t);for(const t of n){const n=jitiResolve(e,t,{...i,try:!0,skipTsConfigPaths:!0});if(n)return n}}e.alias&&(t=function(e,t){const i=pathe_M_eThtNZ_normalizeWindowsPath(e);t=normalizeAliases(t);for(const[e,n]of Object.entries(t)){if(!i.startsWith(e))continue;const t=utils_hasTrailingSlash(e)?e.slice(0,-1):e;if(utils_hasTrailingSlash(i[t.length]))return pathe_M_eThtNZ_join(n,i.slice(e.length))}return i}(t,e.alias));let c=i?.parentURL||e.url;isDir(c)&&(c=pathe_M_eThtNZ_join(c,\"_index.js\"));const l=(i?.async?[i?.conditions,[\"node\",\"import\"],[\"node\",\"require\"]]:[i?.conditions,[\"node\",\"require\"],[\"node\",\"import\"]]).filter(Boolean);for(const i of l){try{n=resolvePathSync(t,{url:c,conditions:i,extensions:e.opts.extensions})}catch(e){a=e}if(n)return n}try{return e.nativeRequire.resolve(t,{paths:i.paths})}catch(e){a=e}for(const a of e.additionalExts){if(n=tryNativeRequireResolve(e,t+a,c,i)||tryNativeRequireResolve(e,t+\"/index\"+a,c,i),n)return n;if((ki.test(e.filename)||ki.test(e.parentModule?.filename||\"\")||bi.test(t))&&(n=tryNativeRequireResolve(e,t.replace(bi,\".$1t$2\"),c,i),n))return n}if(!i?.try)throw a}function tryNativeRequireResolve(e,t,i,n){try{return e.nativeRequire.resolve(t,{...n,paths:[pathe_M_eThtNZ_dirname(fileURLToPath(i)),...n?.paths||[]]})}catch{}}const wi=require(\"node:fs/promises\"),Ci=require(\"node:perf_hooks\"),Si=require(\"node:vm\");var Ii=__webpack_require__.n(Si);function jitiRequire(e,t,i){const n=e.parentCache||{};if(t.startsWith(\"node:\"))return nativeImportOrRequire(e,t,i.async);if(t.startsWith(\"file:\"))t=(0,Qe.fileURLToPath)(t);else if(t.startsWith(\"data:\")){if(!i.async)throw new Error(\"`data:` URLs are only supported in ESM context. Use `import` or `jiti.import` instead.\");return debug(e,\"[native]\",\"[data]\",\"[import]\",t),nativeImportOrRequire(e,t,!0)}if(Be.builtinModules.includes(t)||\".pnp.js\"===t)return nativeImportOrRequire(e,t,i.async);if(e.opts.virtualModules&&t in e.opts.virtualModules){debug(e,\"[virtual]\",t);const n=e.opts.virtualModules[t];return i.async?Promise.resolve(jitiInteropDefault(e,n)):jitiInteropDefault(e,n)}if(e.opts.tryNative&&!e.opts.transformOptions)try{if(!(t=jitiResolve(e,t,i))&&i.try)return;if(debug(e,\"[try-native]\",i.async&&e.nativeImport?\"[import]\":\"[require]\",t),i.async&&e.nativeImport)return e.nativeImport(t).then(i=>(!1===e.opts.moduleCache&&delete e.nativeRequire.cache[t],jitiInteropDefault(e,i))).catch(n=>(debug(e,`[try-native] Using fallback for ${t} because of an error:`,n),jitiRequire({...e,opts:{...e.opts,tryNative:!1}},t,i)));{const i=e.nativeRequire(t);return!1===e.opts.moduleCache&&delete e.nativeRequire.cache[t],jitiInteropDefault(e,i)}}catch(i){debug(e,`[try-native] Using fallback for ${t} because of an error:`,i)}const a=jitiResolve(e,t,i);if(!a&&i.try)return;const c=extname(a);if(\".json\"===c){debug(e,\"[json]\",a);const t=e.nativeRequire(a);return t&&!(\"default\"in t)&&Object.defineProperty(t,\"default\",{value:t,enumerable:!1}),t}if(c&&!e.opts.extensions.includes(c))return debug(e,\"[native]\",\"[unknown]\",i.async?\"[import]\":\"[require]\",a),nativeImportOrRequire(e,a,i.async);if(e.isNativeRe.test(a))return debug(e,\"[native]\",i.async?\"[import]\":\"[require]\",a),nativeImportOrRequire(e,a,i.async);if(n[a])return jitiInteropDefault(e,n[a]?.exports);if(e.opts.moduleCache){const t=e.nativeRequire.cache[a];if(t?.loaded)return jitiInteropDefault(e,t.exports)}const l=(0,$e.readFileSync)(a,\"utf8\");return eval_evalModule(e,l,{id:t,filename:a,ext:c,cache:n,async:i.async})}function nativeImportOrRequire(e,t,i){return i&&e.nativeImport?e.nativeImport(function(e){return ni&&isAbsolute(e)?pathToFileURL(e):e}(t)).then(t=>jitiInteropDefault(e,t)):jitiInteropDefault(e,e.nativeRequire(t))}const Ti=\"9\";function getCache(e,t,i){if(!e.opts.fsCache||!t.filename)return i();const n=` /* v${Ti}-${utils_hash(t.source,16)} */\\n`;let a=`${basename(pathe_M_eThtNZ_dirname(t.filename))}-${function(e){const t=e.split(Wt).pop();if(!t)return;const i=t.lastIndexOf(\".\");return i<=0?t:t.slice(0,i)}(t.filename)}`+(e.opts.sourceMaps?\"+map\":\"\")+(t.interopDefault?\".i\":\"\")+`.${utils_hash(t.filename)}`+(t.async?\".mjs\":\".cjs\");t.jsx&&t.filename.endsWith(\"x\")&&(a+=\"x\");const c=e.opts.fsCache,l=pathe_M_eThtNZ_join(c,a);if(!e.opts.rebuildFsCache&&(0,$e.existsSync)(l)){const i=(0,$e.readFileSync)(l,\"utf8\");if(i.endsWith(n))return debug(e,\"[cache]\",\"[hit]\",t.filename,\"~>\",l),i}debug(e,\"[cache]\",\"[miss]\",t.filename);const y=i();return y.includes(\"__JITI_ERROR__\")||((0,$e.writeFileSync)(l,y+n,\"utf8\"),debug(e,\"[cache]\",\"[store]\",t.filename,\"~>\",l)),y}function prepareCacheDir(t){if(!0===t.opts.fsCache&&(t.opts.fsCache=function(t){const i=t.filename&&pathe_M_eThtNZ_resolve(t.filename,\"../node_modules\");if(i&&(0,$e.existsSync)(i))return pathe_M_eThtNZ_join(i,\".cache/jiti\");let n=(0,e.tmpdir)();if(process.env.TMPDIR&&n===process.cwd()&&!process.env.JITI_RESPECT_TMPDIR_ENV){const t=process.env.TMPDIR;delete process.env.TMPDIR,n=(0,e.tmpdir)(),process.env.TMPDIR=t}return pathe_M_eThtNZ_join(n,\"jiti\")}(t)),t.opts.fsCache)try{if((0,$e.mkdirSync)(t.opts.fsCache,{recursive:!0}),!function(e){try{return(0,$e.accessSync)(e,$e.constants.W_OK),!0}catch{return!1}}(t.opts.fsCache))throw new Error(\"directory is not writable!\")}catch(e){debug(t,\"Error creating cache directory at \",t.opts.fsCache,e),t.opts.fsCache=!1}}function transform(e,t){let i=getCache(e,t,()=>{const i=e.opts.transform({...e.opts.transformOptions,babel:{...e.opts.sourceMaps?{sourceFileName:t.filename,sourceMaps:\"inline\"}:{},...e.opts.transformOptions?.babel},interopDefault:e.opts.interopDefault,...t});return i.error&&e.opts.debug&&debug(e,i.error),i.code});return i.startsWith(\"#!\")&&(i=\"// \"+i),i}function eval_evalModule(t,i,n={}){const a=n.id||(n.filename?basename(n.filename):`_jitiEval.${n.ext||(n.async?\"mjs\":\"js\")}`),c=n.filename||jitiResolve(t,a,{async:n.async}),l=n.ext||extname(c),y=n.cache||t.parentCache||{},E=/\\.[cm]?tsx?$/.test(l),w=\".mjs\"===l||\".js\"===l&&\"module\"===function(e){for(;e&&\".\"!==e&&\"/\"!==e;){e=pathe_M_eThtNZ_join(e,\"..\");try{const t=(0,$e.readFileSync)(pathe_M_eThtNZ_join(e,\"package.json\"),\"utf8\");try{return JSON.parse(t)}catch{}break}catch{}}}(c)?.type,C=\".cjs\"===l,S=n.forceTranspile??(!C&&!(w&&n.async)&&(E||w||t.isTransformRe.test(c)||hasESMSyntax(i))),I=Ci.performance.now();if(S){i=transform(t,{filename:c,source:i,ts:E,async:n.async??!1,jsx:t.opts.jsx});const e=Math.round(1e3*(Ci.performance.now()-I))/1e3;debug(t,\"[transpile]\",n.async?\"[esm]\":\"[cjs]\",c,`(${e}ms)`)}else{if(debug(t,\"[native]\",n.async?\"[import]\":\"[require]\",c),n.async)return Promise.resolve(nativeImportOrRequire(t,c,n.async)).catch(e=>(debug(t,\"Native import error:\",e),debug(t,\"[fallback]\",c),eval_evalModule(t,i,{...n,forceTranspile:!0})));try{return nativeImportOrRequire(t,c,n.async)}catch(e){debug(t,\"Native require error:\",e),debug(t,\"[fallback]\",c),i=transform(t,{filename:c,source:i,ts:E,async:n.async??!1,jsx:t.opts.jsx})}}const N=new Be.Module(c);N.filename=c,t.parentModule&&(N.parent=t.parentModule,Array.isArray(t.parentModule.children)&&!t.parentModule.children.includes(N)&&t.parentModule.children.push(N));const O=createJiti(c,t.opts,{parentModule:N,parentCache:y,nativeImport:t.nativeImport,onError:t.onError,createRequire:t.createRequire},!0);let j;N.require=O,N.path=pathe_M_eThtNZ_dirname(c),N.paths=Be.Module._nodeModulePaths(N.path),y[c]=N,t.opts.moduleCache&&(t.nativeRequire.cache[c]=N);const F=function(e,t){return`(${t?.async?\"async \":\"\"}function (exports, require, module, __filename, __dirname, jitiImport, jitiESMResolve) { ${e}\\n});`}(i,{async:n.async});try{j=Ii().runInThisContext(F,{filename:c,lineOffset:0,displayErrors:!1})}catch(i){\"SyntaxError\"===i.name&&n.async&&t.nativeImport?(debug(t,\"[esm]\",\"[import]\",\"[fallback]\",c),j=function(t,i,n,a,c){const l=`export default ${i}`,y=c?void 0:`data:text/javascript;base64,${Buffer.from(l).toString(\"base64\")}`;return(...i)=>{let c;const importViaTempFile=()=>(c=function(t,i){const n=pathe_M_eThtNZ_join((0,e.tmpdir)(),\"jiti-esm\");try{(0,$e.mkdirSync)(n,{recursive:!0})}catch{}const a=pathe_M_eThtNZ_join(n,`${basename(i,extname(i))}-${Date.now()}-${Math.random().toString(36).slice(2)}.mjs`);return(0,$e.writeFileSync)(a,t),a}(l,n),debug(t,\"[esm]\",\"[tempfile]\",c),a(pathToFileURL(c))),E=y?a(y).catch(e=>{if(\"ENAMETOOLONG\"!==e?.code)throw e;return importViaTempFile()}):importViaTempFile();return E.then(e=>e.default(...i)).finally(()=>{c&&(0,wi.unlink)(c).catch(()=>{})})}}(t,F,c,t.nativeImport,t.opts.esmEvalTempFile)):(t.opts.moduleCache&&delete t.nativeRequire.cache[c],t.onError(i))}let B;try{B=j(N.exports,N.require,N,N.filename,pathe_M_eThtNZ_dirname(N.filename),O.import,O.esmResolve)}catch(e){t.opts.moduleCache&&delete t.nativeRequire.cache[c],t.onError(e)}function next(){if(N.exports&&N.exports.__JITI_ERROR__){const{filename:e,line:i,column:n,code:a,message:c}=N.exports.__JITI_ERROR__,l=new Error(`${a}: ${c} \\n ${`${e}:${i}:${n}`}`);Error.captureStackTrace(l,jitiRequire),t.onError(l)}N.loaded=!0;return jitiInteropDefault(t,N.exports)}return n.async?Promise.resolve(B).then(next):next()}const Ri=\"win32\"===(0,e.platform)();function createJiti(e,t={},i,n=!1){const a=n?t:function(e){const t={fsCache:_booleanEnv(\"JITI_FS_CACHE\",_booleanEnv(\"JITI_CACHE\",!0)),rebuildFsCache:_booleanEnv(\"JITI_REBUILD_FS_CACHE\",!1),moduleCache:_booleanEnv(\"JITI_MODULE_CACHE\",_booleanEnv(\"JITI_REQUIRE_CACHE\",!0)),debug:_booleanEnv(\"JITI_DEBUG\",!1),sourceMaps:_booleanEnv(\"JITI_SOURCE_MAPS\",!1),interopDefault:_booleanEnv(\"JITI_INTEROP_DEFAULT\",!0),extensions:_jsonEnv(\"JITI_EXTENSIONS\",[\".js\",\".mjs\",\".cjs\",\".ts\",\".tsx\",\".mts\",\".cts\",\".mtsx\",\".ctsx\"]),alias:_jsonEnv(\"JITI_ALIAS\",{}),nativeModules:_jsonEnv(\"JITI_NATIVE_MODULES\",[]),transformModules:_jsonEnv(\"JITI_TRANSFORM_MODULES\",[]),tryNative:_jsonEnv(\"JITI_TRY_NATIVE\",\"Bun\"in globalThis),esmEvalTempFile:_booleanEnv(\"JITI_ESM_EVAL_TEMP_FILE\",!1),jsx:_booleanEnv(\"JITI_JSX\",!1),tsconfigPaths:_jsonEnv(\"JITI_TSCONFIG_PATHS\",!1,!0)};t.jsx&&t.extensions.push(\".jsx\",\".tsx\");const i={};return void 0!==e.cache&&(i.fsCache=e.cache),void 0!==e.requireCache&&(i.moduleCache=e.requireCache),{...t,...i,...e}}(t);\"string\"==typeof e&&e.startsWith(\"file://\")&&(e=fileURLToPath(e));const c=a.alias&&Object.keys(a.alias).length>0?normalizeAliases(a.alias||{}):void 0;let l;if(a.tsconfigPaths){const{getTsconfig:t,createPathsMatcher:i}=__webpack_require__(\"./node_modules/.pnpm/get-tsconfig@4.14.0/node_modules/get-tsconfig/dist/index.cjs\"),n=t(\"string\"==typeof a.tsconfigPaths?a.tsconfigPaths:pathe_M_eThtNZ_dirname(e));n&&(l=i(n))}const y=[\"typescript\",\"jiti\",...a.nativeModules||[]],E=new RegExp(`node_modules/(${y.map(e=>escapeStringRegexp(e)).join(\"|\")})/`),w=[...a.transformModules||[]],C=new RegExp(`node_modules/(${w.map(e=>escapeStringRegexp(e)).join(\"|\")})/`);e||(e=process.cwd()),!n&&isDir(e)&&(e=pathe_M_eThtNZ_join(e,\"_index.js\"));const S=pathToFileURL(e),I=[...a.extensions].filter(e=>\".js\"!==e),N=i.createRequire(Ri?e.replace(/\\//g,\"\\\\\"):e),O={filename:e,url:S,opts:a,alias:c,resolveTsConfigPaths:l,nativeModules:y,transformModules:w,isNativeRe:E,isTransformRe:C,additionalExts:I,nativeRequire:N,onError:i.onError,parentModule:i.parentModule,parentCache:i.parentCache,nativeImport:i.nativeImport,createRequire:i.createRequire};n||debug(O,\"[init]\",...[[\"version:\",Gt.rE],[\"module-cache:\",a.moduleCache],[\"fs-cache:\",a.fsCache],[\"rebuild-fs-cache:\",a.rebuildFsCache],[\"interop-defaults:\",a.interopDefault]].flat()),n||prepareCacheDir(O);const j=Object.assign(function(e){return jitiRequire(O,e,{async:!1})},{cache:a.moduleCache?N.cache:Object.create(null),extensions:N.extensions,main:N.main,options:a,resolve:Object.assign(function(e,t){return jitiResolve(O,e,{...t,async:!1})},{paths:N.resolve.paths}),transform:e=>transform(O,e),evalModule:(e,t)=>eval_evalModule(O,e,t),async import(e,t){const i=await jitiRequire(O,e,{...t,async:!0});return t?.default?i?.default??i:i},esmResolve(e,t){\"string\"==typeof t&&(t={parentURL:t});const i=jitiResolve(O,e,{parentURL:S,...t,async:!0});return!i||\"string\"!=typeof i||i.startsWith(\"file://\")?i:pathToFileURL(i)}});return j}})(),module.exports=i.default})();", "import { createRequire } from \"node:module\";\nimport _createJiti from \"../dist/jiti.cjs\";\n\nfunction onError(err) {\n  throw err; /* \u2193 Check stack trace \u2193 */\n}\n\nconst nativeImport = (id) => import(id);\n\nlet _transform;\nfunction lazyTransform(...args) {\n  if (!_transform) {\n    _transform = createRequire(import.meta.url)(\"../dist/babel.cjs\");\n  }\n  return _transform(...args);\n}\n\nexport function createJiti(id, opts = {}) {\n  if (!opts.transform) {\n    opts = { ...opts, transform: lazyTransform };\n  }\n  return _createJiti(id, opts, {\n    onError,\n    nativeImport,\n    createRequire,\n  });\n}\n\nexport default createJiti;\n", "{\n  \"name\": \"jiti\",\n  \"version\": \"2.7.0\",\n  \"description\": \"Runtime typescript and ESM support for Node.js\",\n  \"repository\": \"unjs/jiti\",\n  \"license\": \"MIT\",\n  \"type\": \"module\",\n  \"exports\": {\n    \".\": {\n      \"import\": {\n        \"types\": \"./lib/jiti.d.mts\",\n        \"default\": \"./lib/jiti.mjs\"\n      },\n      \"require\": {\n        \"types\": \"./lib/jiti.d.cts\",\n        \"default\": \"./lib/jiti.cjs\"\n      }\n    },\n    \"./register\": {\n      \"types\": \"./lib/jiti-register.d.mts\",\n      \"import\": \"./lib/jiti-register.mjs\"\n    },\n    \"./native\": {\n      \"types\": \"./lib/jiti.d.mts\",\n      \"import\": \"./lib/jiti-native.mjs\"\n    },\n    \"./static\": {\n      \"types\": \"./lib/jiti.d.mts\",\n      \"import\": \"./lib/jiti-static.mjs\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"main\": \"./lib/jiti.cjs\",\n  \"module\": \"./lib/jiti.mjs\",\n  \"types\": \"./lib/jiti.d.cts\",\n  \"typesVersions\": {\n    \"*\": {\n      \"register\": [\n        \"./lib/jiti-register.d.mts\"\n      ],\n      \"native\": [\n        \"./lib/jiti.d.mts\"\n      ],\n      \"static\": [\n        \"./lib/jiti.d.mts\"\n      ]\n    }\n  },\n  \"bin\": {\n    \"jiti\": \"./lib/jiti-cli.mjs\"\n  },\n  \"files\": [\n    \"lib\",\n    \"dist\",\n    \"register.cjs\"\n  ],\n  \"scripts\": {\n    \"bench\": \"node test/bench.mjs && deno -A test/bench.mjs && bun --bun test/bench.mjs\",\n    \"build\": \"pnpm clean && pnpm rspack\",\n    \"build:rolldown\": \"pnpm clean && pnpm rolldown -c rolldown.config.mjs\",\n    \"clean\": \"rm -rf dist\",\n    \"dev\": \"pnpm clean && pnpm rspack --watch\",\n    \"jiti\": \"JITI_DEBUG=1 JITI_JSX=1 lib/jiti-cli.mjs\",\n    \"lint\": \"eslint . && prettier -c src lib test stubs\",\n    \"lint:fix\": \"eslint --fix . && prettier -w src lib test stubs\",\n    \"prepack\": \"pnpm build\",\n    \"release\": \"pnpm build && pnpm test && changelogen --release --push && npm publish\",\n    \"test\": \"pnpm lint && pnpm test:types && vitest run --coverage && pnpm test:node-register && pnpm test:bun && pnpm test:native\",\n    \"test:bun\": \"bun --bun test test/bun\",\n    \"test:native\": \"pnpm test:native:bun && pnpm test:native:node && pnpm test:native:deno\",\n    \"test:native:bun\": \"bun --bun test test/native/bun.test.ts\",\n    \"test:native:deno\": \"deno test -A --no-check test/native/deno.test.ts\",\n    \"test:native:node\": \"node --test --experimental-strip-types test/native/node.test.ts\",\n    \"test:node-register\": \"JITI_JSX=1 node --test test/node-register.test.mjs\",\n    \"test:types\": \"tsgo --noEmit\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.29.0\",\n    \"@babel/helper-module-imports\": \"^7.28.6\",\n    \"@babel/helper-module-transforms\": \"^7.28.6\",\n    \"@babel/helper-plugin-utils\": \"^7.28.6\",\n    \"@babel/helper-simple-access\": \"^7.27.1\",\n    \"@babel/plugin-proposal-decorators\": \"^7.29.0\",\n    \"@babel/plugin-syntax-class-properties\": \"^7.12.13\",\n    \"@babel/plugin-syntax-import-assertions\": \"^7.28.6\",\n    \"@babel/plugin-syntax-jsx\": \"^7.28.6\",\n    \"@babel/plugin-transform-explicit-resource-management\": \"^7.28.6\",\n    \"@babel/plugin-transform-export-namespace-from\": \"^7.27.1\",\n    \"@babel/plugin-transform-react-jsx\": \"^7.28.6\",\n    \"@babel/plugin-transform-typescript\": \"^7.28.6\",\n    \"@babel/preset-typescript\": \"^7.28.5\",\n    \"@babel/template\": \"^7.28.6\",\n    \"@babel/traverse\": \"^7.29.0\",\n    \"@babel/types\": \"^7.29.0\",\n    \"@rspack/cli\": \"^2.0.1\",\n    \"@rspack/core\": \"^2.0.1\",\n    \"@types/babel__core\": \"^7.20.5\",\n    \"@types/babel__helper-module-imports\": \"^7.18.3\",\n    \"@types/babel__helper-plugin-utils\": \"^7.10.3\",\n    \"@types/babel__template\": \"^7.4.4\",\n    \"@types/babel__traverse\": \"^7.28.0\",\n    \"@types/node\": \"^25.6.0\",\n    \"@typescript/native-preview\": \"7.0.0-dev.20260505.1\",\n    \"@vitest/coverage-v8\": \"^4.1.5\",\n    \"acorn\": \"^8.16.0\",\n    \"babel-plugin-parameter-decorator\": \"^1.0.16\",\n    \"changelogen\": \"^0.6.2\",\n    \"config\": \"^4.4.1\",\n    \"consola\": \"^3.4.2\",\n    \"defu\": \"^6.1.7\",\n    \"destr\": \"^2.0.5\",\n    \"escape-string-regexp\": \"^5.0.0\",\n    \"eslint\": \"^10.3.0\",\n    \"eslint-config-unjs\": \"^0.6.2\",\n    \"estree-walker\": \"^3.0.3\",\n    \"etag\": \"^1.8.1\",\n    \"fast-glob\": \"^3.3.3\",\n    \"get-tsconfig\": \"^4.14.0\",\n    \"is-installed-globally\": \"^1.0.0\",\n    \"mime\": \"^4.1.0\",\n    \"mitata\": \"^1.0.34\",\n    \"mlly\": \"^1.8.2\",\n    \"moment-timezone\": \"^0.6.2\",\n    \"nano-jsx\": \"^0.2.1\",\n    \"pathe\": \"^2.0.3\",\n    \"pkg-types\": \"^2.3.1\",\n    \"preact\": \"^10.29.1\",\n    \"preact-render-to-string\": \"^6.6.7\",\n    \"prettier\": \"^3.8.3\",\n    \"react\": \"^19.2.5\",\n    \"react-dom\": \"^19.2.5\",\n    \"reflect-metadata\": \"^0.2.2\",\n    \"rolldown\": \"1.0.0-rc.18\",\n    \"solid-js\": \"^1.9.12\",\n    \"std-env\": \"^4.1.0\",\n    \"terser-webpack-plugin\": \"^5.5.0\",\n    \"tinyexec\": \"^1.1.2\",\n    \"ts-loader\": \"^9.5.7\",\n    \"typescript\": \"^5.9.3\",\n    \"vitest\": \"^4.1.5\",\n    \"vue\": \"^3.5.33\",\n    \"yoctocolors\": \"^2.1.2\",\n    \"zod\": \"^4.4.3\"\n  },\n  \"packageManager\": \"pnpm@10.30.3\"\n}\n", "/**\n * @fileoverview Utility to load config files\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst path = require(\"node:path\");\nconst fs = require(\"node:fs/promises\");\nconst findUp = require(\"find-up\");\nconst { pathToFileURL } = require(\"node:url\");\nconst debug = require(\"debug\")(\"eslint:config-loader\");\nconst { FlatConfigArray } = require(\"./flat-config-array\");\nconst { WarningService } = require(\"../services/warning-service\");\n\n//-----------------------------------------------------------------------------\n// Types\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"../types\").Linter.Config} Config */\n\n/**\n * @typedef {Object} ConfigLoaderOptions\n * @property {string|false|undefined} configFile The path to the config file to use.\n * @property {string} cwd The current working directory.\n * @property {boolean} ignoreEnabled Indicates if ignore patterns should be honored.\n * @property {Config|Array<Config>} [baseConfig] The base config to use.\n * @property {Array<Config>} [defaultConfigs] The default configs to use.\n * @property {Array<string>} [ignorePatterns] The ignore patterns to use.\n * @property {Config|Array<Config>} [overrideConfig] The override config to use.\n * @property {boolean} [hasUnstableNativeNodeJsTSConfigFlag] The flag to indicate whether the `unstable_native_nodejs_ts_config` flag is enabled.\n * @property {WarningService} [warningService] The warning service to use.\n */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst FLAT_CONFIG_FILENAMES = [\n\t\"eslint.config.js\",\n\t\"eslint.config.mjs\",\n\t\"eslint.config.cjs\",\n\t\"eslint.config.ts\",\n\t\"eslint.config.mts\",\n\t\"eslint.config.cts\",\n];\n\nconst importedConfigFileModificationTime = new Map();\n\n/**\n * Asserts that the given file path is valid.\n * @param {string} filePath The file path to check.\n * @returns {void}\n * @throws {Error} If `filePath` is not a non-empty string.\n */\nfunction assertValidFilePath(filePath) {\n\tif (!filePath || typeof filePath !== \"string\") {\n\t\tthrow new Error(\"'filePath' must be a non-empty string\");\n\t}\n}\n\n/**\n * Asserts that a configuration exists. A configuration exists if any\n * of the following are true:\n * - `configFilePath` is defined.\n * - `useConfigFile` is `false`.\n * @param {string|undefined} configFilePath The path to the config file.\n * @param {ConfigLoaderOptions} loaderOptions The options to use when loading configuration files.\n * @returns {void}\n * @throws {Error} If no configuration exists.\n */\nfunction assertConfigurationExists(configFilePath, loaderOptions) {\n\tconst { configFile: useConfigFile } = loaderOptions;\n\n\tif (!configFilePath && useConfigFile !== false) {\n\t\tconst error = new Error(\"Could not find config file.\");\n\n\t\terror.messageTemplate = \"config-file-missing\";\n\t\tthrow error;\n\t}\n}\n\n/**\n * Check if the file is a TypeScript file.\n * @param {string} filePath The file path to check.\n * @returns {boolean} `true` if the file is a TypeScript file, `false` if it's not.\n */\nfunction isFileTS(filePath) {\n\tconst fileExtension = path.extname(filePath);\n\n\treturn /^\\.[mc]?ts$/u.test(fileExtension);\n}\n\n/**\n * Check if ESLint is running in Bun.\n * @returns {boolean} `true` if the ESLint is running Bun, `false` if it's not.\n */\nfunction isRunningInBun() {\n\treturn !!globalThis.Bun;\n}\n\n/**\n * Check if ESLint is running in Deno.\n * @returns {boolean} `true` if the ESLint is running in Deno, `false` if it's not.\n */\nfunction isRunningInDeno() {\n\treturn !!globalThis.Deno;\n}\n\n/**\n * Checks if native TypeScript support is\n * enabled in the current Node.js process.\n *\n * This function determines if the\n * {@linkcode NodeJS.ProcessFeatures.typescript | typescript}\n * feature is present in the\n * {@linkcode process.features} object\n * and if its value is either \"strip\" or \"transform\".\n * @returns {boolean} `true` if native TypeScript support is enabled, otherwise `false`.\n * @since 9.24.0\n */\nfunction isNativeTypeScriptSupportEnabled() {\n\treturn (\n\t\t// eslint-disable-next-line n/no-unsupported-features/node-builtins -- it's still an experimental feature.\n\t\t[\"strip\", \"transform\"].includes(process.features.typescript)\n\t);\n}\n\n/**\n * Load the TypeScript configuration file.\n * @param {string} filePath The absolute file path to load.\n * @param {URL} fileURL The file URL to load.\n * @param {number} mtime The last modified timestamp of the file.\n * @returns {Promise<any>} The configuration loaded from the file.\n * @since 9.24.0\n */\nasync function loadTypeScriptConfigFileWithJiti(filePath, fileURL, mtime) {\n\tconst { createJiti, version: jitiVersion } =\n\t\t// eslint-disable-next-line no-use-before-define -- `ConfigLoader.loadJiti` can be overwritten for testing\n\t\tawait ConfigLoader.loadJiti().catch(() => {\n\t\t\tthrow new Error(\n\t\t\t\t\"The 'jiti' library is required for loading TypeScript configuration files. Make sure to install it.\",\n\t\t\t);\n\t\t});\n\n\t// Ensure the version is at least 2.2.0.\n\tconst [jitiMajor, jitiMinor] = jitiVersion\n\t\t.split(\".\")\n\t\t.map(versionPart => Number(versionPart));\n\tif (jitiMajor < 2 || (jitiMajor === 2 && jitiMinor < 2)) {\n\t\tthrow new Error(\n\t\t\t\"You are using an outdated version of the 'jiti' library. Please update to the latest version of 'jiti' to ensure compatibility and access to the latest features.\",\n\t\t);\n\t}\n\n\t/*\n\t * Disabling `moduleCache` allows us to reload a\n\t * config file when the last modified timestamp changes.\n\t */\n\tconst jitiOptions = {\n\t\tmoduleCache: false,\n\t};\n\n\tconst jiti = createJiti(__filename, jitiOptions);\n\tconst config = await jiti.import(fileURL.href);\n\n\timportedConfigFileModificationTime.set(filePath, mtime);\n\n\treturn config?.default ?? config;\n}\n\n/**\n * Dynamically imports a module from the given file path.\n * @param {string} filePath The absolute file path of the module to import.\n * @param {URL} fileURL The file URL to load.\n * @param {number} mtime The last modified timestamp of the file.\n * @returns {Promise<any>} - A {@linkcode Promise | promise} that resolves to the imported ESLint config.\n * @since 9.24.0\n */\nasync function dynamicImportConfig(filePath, fileURL, mtime) {\n\tconst module = await import(fileURL.href);\n\n\timportedConfigFileModificationTime.set(filePath, mtime);\n\n\treturn module.default;\n}\n\n/**\n * Load the config array from the given filename.\n * @param {string} filePath The filename to load from.\n * @param {boolean} hasUnstableNativeNodeJsTSConfigFlag The flag to indicate whether the `unstable_native_nodejs_ts_config` flag is enabled.\n * @returns {Promise<any>} The config loaded from the config file.\n */\nasync function loadConfigFile(filePath, hasUnstableNativeNodeJsTSConfigFlag) {\n\tdebug(`Loading config from ${filePath}`);\n\n\tconst fileURL = pathToFileURL(filePath);\n\n\tdebug(`Config file URL is ${fileURL}`);\n\n\tconst mtime = (await fs.stat(filePath)).mtime.getTime();\n\n\t/*\n\t * Append a query with the config file's modification time (`mtime`) in order\n\t * to import the current version of the config file. Without the query, `import()` would\n\t * cache the config file module by the pathname only, and then always return\n\t * the same version (the one that was actual when the module was imported for the first time).\n\t *\n\t * This ensures that the config file module is loaded and executed again\n\t * if it has been changed since the last time it was imported.\n\t * If it hasn't been changed, `import()` will just return the cached version.\n\t *\n\t * Note that we should not overuse queries (e.g., by appending the current time\n\t * to always reload the config file module) as that could cause memory leaks\n\t * because entries are never removed from the import cache.\n\t */\n\tfileURL.searchParams.append(\"mtime\", mtime);\n\n\t/*\n\t * With queries, we can bypass the import cache. However, when import-ing a CJS module,\n\t * Node.js uses the require infrastructure under the hood. That includes the require cache,\n\t * which caches the config file module by its file path (queries have no effect).\n\t * Therefore, we also need to clear the require cache before importing the config file module.\n\t * In order to get the same behavior with ESM and CJS config files, in particular - to reload\n\t * the config file only if it has been changed, we track file modification times and clear\n\t * the require cache only if the file has been changed.\n\t */\n\tif (importedConfigFileModificationTime.get(filePath) !== mtime) {\n\t\tdelete require.cache?.[filePath];\n\t}\n\n\tconst isTS = isFileTS(filePath);\n\tconst isBun = isRunningInBun();\n\tconst isDeno = isRunningInDeno();\n\n\t/*\n\t * If we are dealing with a TypeScript file, then we need to use `jiti` to load it\n\t * in Node.js. Deno and Bun both allow native importing of TypeScript files.\n\t *\n\t * When Node.js supports native TypeScript imports, we can remove this check.\n\t */\n\n\tif (isTS) {\n\t\tif (hasUnstableNativeNodeJsTSConfigFlag) {\n\t\t\tif (isNativeTypeScriptSupportEnabled()) {\n\t\t\t\treturn await dynamicImportConfig(filePath, fileURL, mtime);\n\t\t\t}\n\n\t\t\tif (!(\"typescript\" in process.features)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"The unstable_native_nodejs_ts_config flag is not supported in older versions of Node.js.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthrow new Error(\n\t\t\t\t\"The unstable_native_nodejs_ts_config flag is enabled, but native TypeScript support is not enabled in the current Node.js process. You need to either enable native TypeScript support by passing --experimental-strip-types or remove the unstable_native_nodejs_ts_config flag.\",\n\t\t\t);\n\t\t}\n\n\t\tif (!isDeno && !isBun) {\n\t\t\treturn await loadTypeScriptConfigFileWithJiti(\n\t\t\t\tfilePath,\n\t\t\t\tfileURL,\n\t\t\t\tmtime,\n\t\t\t);\n\t\t}\n\t}\n\n\t// fallback to normal runtime behavior\n\n\treturn await dynamicImportConfig(filePath, fileURL, mtime);\n}\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * Encapsulates the loading and caching of configuration files when looking up\n * from the file being linted.\n */\nclass ConfigLoader {\n\t/**\n\t * Map of config file paths to the config arrays for those directories.\n\t * @type {Map<string, FlatConfigArray|Promise<FlatConfigArray>>}\n\t */\n\t#configArrays = new Map();\n\n\t/**\n\t * Map of absolute directory names to the config file paths for those directories.\n\t * @type {Map<string, {configFilePath:string,basePath:string}|Promise<{configFilePath:string,basePath:string}>>}\n\t */\n\t#configFilePaths = new Map();\n\n\t/**\n\t * The options to use when loading configuration files.\n\t * @type {ConfigLoaderOptions}\n\t */\n\t#options;\n\n\t/**\n\t * Creates a new instance.\n\t * @param {ConfigLoaderOptions} options The options to use when loading configuration files.\n\t */\n\tconstructor(options) {\n\t\tthis.#options = options.warningService\n\t\t\t? options\n\t\t\t: { ...options, warningService: new WarningService() };\n\t}\n\n\t/**\n\t * Determines which config file to use. This is determined by seeing if an\n\t * override config file was specified, and if so, using it; otherwise, as long\n\t * as override config file is not explicitly set to `false`, it will search\n\t * upwards from `fromDirectory` for a file named `eslint.config.js`.\n\t * @param {string} fromDirectory The directory from which to start searching.\n\t * @returns {Promise<{configFilePath:string|undefined,basePath:string}>} Location information for\n\t *      the config file.\n\t */\n\tasync #locateConfigFileToUse(fromDirectory) {\n\t\t// check cache first\n\t\tif (this.#configFilePaths.has(fromDirectory)) {\n\t\t\treturn this.#configFilePaths.get(fromDirectory);\n\t\t}\n\n\t\tconst resultPromise = ConfigLoader.locateConfigFileToUse({\n\t\t\tuseConfigFile: this.#options.configFile,\n\t\t\tcwd: this.#options.cwd,\n\t\t\tfromDirectory,\n\t\t});\n\n\t\t// ensure `ConfigLoader.locateConfigFileToUse` is called only once for `fromDirectory`\n\t\tthis.#configFilePaths.set(fromDirectory, resultPromise);\n\n\t\t// Unwrap the promise. This is primarily for the sync `getCachedConfigArrayForPath` method.\n\t\tconst result = await resultPromise;\n\n\t\tthis.#configFilePaths.set(fromDirectory, result);\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Calculates the config array for this run based on inputs.\n\t * @param {string} configFilePath The absolute path to the config file to use if not overridden.\n\t * @param {string} basePath The base path to use for relative paths in the config file.\n\t * @returns {Promise<FlatConfigArray>} The config array for `eslint`.\n\t */\n\tasync #calculateConfigArray(configFilePath, basePath) {\n\t\t// check for cached version first\n\t\tif (this.#configArrays.has(configFilePath)) {\n\t\t\treturn this.#configArrays.get(configFilePath);\n\t\t}\n\n\t\tconst configsPromise = ConfigLoader.calculateConfigArray(\n\t\t\tconfigFilePath,\n\t\t\tbasePath,\n\t\t\tthis.#options,\n\t\t);\n\n\t\t// ensure `ConfigLoader.calculateConfigArray` is called only once for `configFilePath`\n\t\tthis.#configArrays.set(configFilePath, configsPromise);\n\n\t\t// Unwrap the promise. This is primarily for the sync `getCachedConfigArrayForPath` method.\n\t\tconst configs = await configsPromise;\n\n\t\tthis.#configArrays.set(configFilePath, configs);\n\n\t\treturn configs;\n\t}\n\n\t/**\n\t * Returns the config file path for the given directory or file. This will either use\n\t * the override config file that was specified in the constructor options or\n\t * search for a config file from the directory.\n\t * @param {string} fileOrDirPath The file or directory path to get the config file path for.\n\t * @returns {Promise<string|undefined>} The config file path or `undefined` if not found.\n\t * @throws {Error} If `fileOrDirPath` is not a non-empty string.\n\t * @throws {Error} If `fileOrDirPath` is not an absolute path.\n\t */\n\tasync findConfigFileForPath(fileOrDirPath) {\n\t\tassertValidFilePath(fileOrDirPath);\n\n\t\tconst absoluteDirPath = path.resolve(\n\t\t\tthis.#options.cwd,\n\t\t\tpath.dirname(fileOrDirPath),\n\t\t);\n\t\tconst { configFilePath } =\n\t\t\tawait this.#locateConfigFileToUse(absoluteDirPath);\n\n\t\treturn configFilePath;\n\t}\n\n\t/**\n\t * Returns a configuration object for the given file based on the CLI options.\n\t * This is the same logic used by the ESLint CLI executable to determine\n\t * configuration for each file it processes.\n\t * @param {string} filePath The path of the file or directory to retrieve config for.\n\t * @returns {Promise<FlatConfigArray>} A configuration object for the file.\n\t * @throws {Error} If no configuration for `filePath` exists.\n\t */\n\tasync loadConfigArrayForFile(filePath) {\n\t\tassertValidFilePath(filePath);\n\n\t\tdebug(`Calculating config for file ${filePath}`);\n\n\t\tconst configFilePath = await this.findConfigFileForPath(filePath);\n\n\t\tassertConfigurationExists(configFilePath, this.#options);\n\n\t\treturn this.loadConfigArrayForDirectory(filePath);\n\t}\n\n\t/**\n\t * Returns a configuration object for the given directory based on the CLI options.\n\t * This is the same logic used by the ESLint CLI executable to determine\n\t * configuration for each file it processes.\n\t * @param {string} dirPath The path of the directory to retrieve config for.\n\t * @returns {Promise<FlatConfigArray>} A configuration object for the directory.\n\t */\n\tasync loadConfigArrayForDirectory(dirPath) {\n\t\tassertValidFilePath(dirPath);\n\n\t\tdebug(`Calculating config for directory ${dirPath}`);\n\n\t\tconst absoluteDirPath = path.resolve(\n\t\t\tthis.#options.cwd,\n\t\t\tpath.dirname(dirPath),\n\t\t);\n\t\tconst { configFilePath, basePath } =\n\t\t\tawait this.#locateConfigFileToUse(absoluteDirPath);\n\n\t\tdebug(`Using config file ${configFilePath} and base path ${basePath}`);\n\t\treturn this.#calculateConfigArray(configFilePath, basePath);\n\t}\n\n\t/**\n\t * Returns a configuration array for the given file based on the CLI options.\n\t * This is a synchronous operation and does not read any files from disk. It's\n\t * intended to be used in locations where we know the config file has already\n\t * been loaded and we just need to get the configuration for a file.\n\t * @param {string} filePath The path of the file to retrieve a config object for.\n\t * @returns {FlatConfigArray} A configuration object for the file.\n\t * @throws {Error} If `filePath` is not a non-empty string.\n\t * @throws {Error} If `filePath` is not an absolute path.\n\t * @throws {Error} If the config file was not already loaded.\n\t */\n\tgetCachedConfigArrayForFile(filePath) {\n\t\tassertValidFilePath(filePath);\n\n\t\tdebug(`Looking up cached config for ${filePath}`);\n\n\t\treturn this.getCachedConfigArrayForPath(path.dirname(filePath));\n\t}\n\n\t/**\n\t * Returns a configuration array for the given directory based on the CLI options.\n\t * This is a synchronous operation and does not read any files from disk. It's\n\t * intended to be used in locations where we know the config file has already\n\t * been loaded and we just need to get the configuration for a file.\n\t * @param {string} fileOrDirPath The path of the directory to retrieve a config object for.\n\t * @returns {FlatConfigArray} A configuration object for the directory.\n\t * @throws {Error} If `dirPath` is not a non-empty string.\n\t * @throws {Error} If `dirPath` is not an absolute path.\n\t * @throws {Error} If the config file was not already loaded.\n\t */\n\tgetCachedConfigArrayForPath(fileOrDirPath) {\n\t\tassertValidFilePath(fileOrDirPath);\n\n\t\tdebug(`Looking up cached config for ${fileOrDirPath}`);\n\n\t\tconst absoluteDirPath = path.resolve(this.#options.cwd, fileOrDirPath);\n\n\t\tif (!this.#configFilePaths.has(absoluteDirPath)) {\n\t\t\tthrow new Error(`Could not find config file for ${fileOrDirPath}`);\n\t\t}\n\n\t\tconst configFilePathInfo = this.#configFilePaths.get(absoluteDirPath);\n\n\t\tif (typeof configFilePathInfo.then === \"function\") {\n\t\t\tthrow new Error(\n\t\t\t\t`Config file path for ${fileOrDirPath} has not yet been calculated or an error occurred during the calculation`,\n\t\t\t);\n\t\t}\n\n\t\tconst { configFilePath } = configFilePathInfo;\n\n\t\tconst configArray = this.#configArrays.get(configFilePath);\n\n\t\tif (!configArray || typeof configArray.then === \"function\") {\n\t\t\tthrow new Error(\n\t\t\t\t`Config array for ${fileOrDirPath} has not yet been calculated or an error occurred during the calculation`,\n\t\t\t);\n\t\t}\n\n\t\treturn configArray;\n\t}\n\n\t/**\n\t * Used to import the jiti dependency. This method is exposed internally for testing purposes.\n\t * @returns {Promise<{createJiti: Function|undefined, version: string;}>} A promise that fulfills with an object containing the jiti module's createJiti function and version.\n\t */\n\tstatic async loadJiti() {\n\t\tconst { createJiti } = await import(\"jiti\");\n\t\tconst version = require(\"jiti/package.json\").version;\n\t\treturn { createJiti, version };\n\t}\n\n\t/**\n\t * Determines which config file to use. This is determined by seeing if an\n\t * override config file was specified, and if so, using it; otherwise, as long\n\t * as override config file is not explicitly set to `false`, it will search\n\t * upwards from `fromDirectory` for a file named `eslint.config.js`.\n\t * This method is exposed internally for testing purposes.\n\t * @param {Object} [options] the options object\n\t * @param {string|false|undefined} options.useConfigFile The path to the config file to use.\n\t * @param {string} options.cwd Path to a directory that should be considered as the current working directory.\n\t * @param {string} [options.fromDirectory] The directory from which to start searching. Defaults to `cwd`.\n\t * @returns {Promise<{configFilePath:string|undefined,basePath:string}>} Location information for\n\t *      the config file.\n\t */\n\tstatic async locateConfigFileToUse({\n\t\tuseConfigFile,\n\t\tcwd,\n\t\tfromDirectory = cwd,\n\t}) {\n\t\t// determine where to load config file from\n\t\tlet configFilePath;\n\t\tlet basePath = cwd;\n\n\t\tif (typeof useConfigFile === \"string\") {\n\t\t\tdebug(`Override config file path is ${useConfigFile}`);\n\t\t\tconfigFilePath = path.resolve(cwd, useConfigFile);\n\t\t\tbasePath = cwd;\n\t\t} else if (useConfigFile !== false) {\n\t\t\tdebug(\"Searching for eslint.config.js\");\n\t\t\tconfigFilePath = await findUp(FLAT_CONFIG_FILENAMES, {\n\t\t\t\tcwd: fromDirectory,\n\t\t\t});\n\n\t\t\tif (configFilePath) {\n\t\t\t\tbasePath = path.dirname(configFilePath);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tconfigFilePath,\n\t\t\tbasePath,\n\t\t};\n\t}\n\n\t/**\n\t * Calculates the config array for this run based on inputs.\n\t * This method is exposed internally for testing purposes.\n\t * @param {string} configFilePath The absolute path to the config file to use if not overridden.\n\t * @param {string} basePath The base path to use for relative paths in the config file.\n\t * @param {ConfigLoaderOptions} options The options to use when loading configuration files.\n\t * @returns {Promise<FlatConfigArray>} The config array for `eslint`.\n\t */\n\tstatic async calculateConfigArray(configFilePath, basePath, options) {\n\t\tconst {\n\t\t\tcwd,\n\t\t\tbaseConfig,\n\t\t\tignoreEnabled,\n\t\t\tignorePatterns,\n\t\t\toverrideConfig,\n\t\t\thasUnstableNativeNodeJsTSConfigFlag = false,\n\t\t\tdefaultConfigs = [],\n\t\t\twarningService,\n\t\t} = options;\n\n\t\tdebug(\n\t\t\t`Calculating config array from config file ${configFilePath} and base path ${basePath}`,\n\t\t);\n\n\t\tconst configs = new FlatConfigArray(baseConfig || [], {\n\t\t\tbasePath,\n\t\t\tshouldIgnore: ignoreEnabled,\n\t\t});\n\n\t\t// load config file\n\t\tif (configFilePath) {\n\t\t\tdebug(`Loading config file ${configFilePath}`);\n\t\t\tconst fileConfig = await loadConfigFile(\n\t\t\t\tconfigFilePath,\n\t\t\t\thasUnstableNativeNodeJsTSConfigFlag,\n\t\t\t);\n\n\t\t\t/*\n\t\t\t * It's possible that a config file could be empty or else\n\t\t\t * have an empty object or array. In this case, we want to\n\t\t\t * warn the user that they have an empty config.\n\t\t\t *\n\t\t\t * An empty CommonJS file exports an empty object while\n\t\t\t * an empty ESM file exports undefined.\n\t\t\t */\n\n\t\t\tlet emptyConfig = typeof fileConfig === \"undefined\";\n\n\t\t\tdebug(\n\t\t\t\t`Config file ${configFilePath} is ${emptyConfig ? \"empty\" : \"not empty\"}`,\n\t\t\t);\n\n\t\t\tif (!emptyConfig) {\n\t\t\t\tif (Array.isArray(fileConfig)) {\n\t\t\t\t\tif (fileConfig.length === 0) {\n\t\t\t\t\t\tdebug(\n\t\t\t\t\t\t\t`Config file ${configFilePath} is an empty array`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\temptyConfig = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconfigs.push(...fileConfig);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof fileConfig === \"object\" &&\n\t\t\t\t\t\tfileConfig !== null &&\n\t\t\t\t\t\tObject.keys(fileConfig).length === 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tdebug(\n\t\t\t\t\t\t\t`Config file ${configFilePath} is an empty object`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\temptyConfig = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconfigs.push(fileConfig);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (emptyConfig) {\n\t\t\t\twarningService.emitEmptyConfigWarning(configFilePath);\n\t\t\t}\n\t\t}\n\n\t\t// add in any configured defaults\n\t\tconfigs.push(...defaultConfigs);\n\n\t\t// append command line ignore patterns\n\t\tif (ignorePatterns && ignorePatterns.length > 0) {\n\t\t\t/*\n\t\t\t * Ignore patterns are added to the end of the config array\n\t\t\t * so they can override default ignores.\n\t\t\t */\n\t\t\tconfigs.push({\n\t\t\t\tbasePath: cwd,\n\t\t\t\tignores: ignorePatterns,\n\t\t\t});\n\t\t}\n\n\t\tif (overrideConfig) {\n\t\t\tif (Array.isArray(overrideConfig)) {\n\t\t\t\tconfigs.push(...overrideConfig);\n\t\t\t} else {\n\t\t\t\tconfigs.push(overrideConfig);\n\t\t\t}\n\t\t}\n\n\t\tawait configs.normalize();\n\n\t\treturn configs;\n\t}\n}\n\nmodule.exports = { ConfigLoader };\n", "/**\n * @fileoverview Manages the suppressed violations.\n * @author Iacovos Constantinou\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Requirements\n//-----------------------------------------------------------------------------\n\nconst fs = require(\"node:fs\");\nconst path = require(\"node:path\");\nconst { calculateStatsPerFile } = require(\"../shared/message-counts\");\nconst stringify = require(\"json-stable-stringify-without-jsonify\");\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n// For VSCode IntelliSense\n/** @typedef {import(\"../types\").Linter.LintMessage} LintMessage */\n/** @typedef {import(\"../types\").ESLint.LintResult} LintResult */\n/** @typedef {Record<string, Record<string, { count: number; }>>} SuppressedViolations */\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * Manages the suppressed violations.\n */\nclass SuppressionsService {\n\tstatic DEFAULT_SUPPRESSIONS_FILENAME = \"eslint-suppressions.json\";\n\n\tfilePath = \"\";\n\tcwd = \"\";\n\n\t/**\n\t * Creates a new instance of SuppressionsService.\n\t * @param {Object} options The options.\n\t * @param {string} [options.filePath] The location of the suppressions file.\n\t * @param {string} [options.cwd] The current working directory.\n\t */\n\tconstructor({ filePath, cwd }) {\n\t\tthis.filePath = filePath;\n\t\tthis.cwd = cwd;\n\t}\n\n\t/**\n\t * Updates the suppressions file based on the current violations and the provided rules.\n\t * If no rules are provided, all violations are suppressed.\n\t * @param {LintResult[]|undefined} results The lint results.\n\t * @param {string[]|undefined} rules The rules to suppress.\n\t * @returns {Promise<void>}\n\t */\n\tasync suppress(results, rules) {\n\t\tconst suppressions = await this.load();\n\n\t\tfor (const result of results) {\n\t\t\tconst relativeFilePath = this.getRelativeFilePath(result.filePath);\n\t\t\tconst violationsByRule = SuppressionsService.countViolationsByRule(\n\t\t\t\tresult.messages,\n\t\t\t);\n\n\t\t\tfor (const ruleId in violationsByRule) {\n\t\t\t\tif (rules && !rules.includes(ruleId)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tsuppressions[relativeFilePath] ??= {};\n\t\t\t\tsuppressions[relativeFilePath][ruleId] =\n\t\t\t\t\tviolationsByRule[ruleId];\n\t\t\t}\n\t\t}\n\n\t\treturn this.save(suppressions);\n\t}\n\n\t/**\n\t * Removes old, unused suppressions for violations that do not occur anymore.\n\t * @param {LintResult[]} results The lint results.\n\t * @returns {Promise<void>} No return value.\n\t */\n\tasync prune(results) {\n\t\tconst suppressions = await this.load();\n\t\tconst { unused } = this.applySuppressions(results, suppressions);\n\n\t\tfor (const file in unused) {\n\t\t\tif (!suppressions[file]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfor (const rule in unused[file]) {\n\t\t\t\tif (!suppressions[file][rule]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst suppressionsCount = suppressions[file][rule].count;\n\t\t\t\tconst violationsCount = unused[file][rule].count;\n\n\t\t\t\tif (suppressionsCount === violationsCount) {\n\t\t\t\t\t// Remove unused rules\n\t\t\t\t\tdelete suppressions[file][rule];\n\t\t\t\t} else {\n\t\t\t\t\t// Update the count to match the new number of violations\n\t\t\t\t\tsuppressions[file][rule].count -= violationsCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Cleanup files with no rules\n\t\t\tif (Object.keys(suppressions[file]).length === 0) {\n\t\t\t\tdelete suppressions[file];\n\t\t\t}\n\t\t}\n\n\t\tfor (const file of Object.keys(suppressions)) {\n\t\t\tconst absolutePath = path.resolve(this.cwd, file);\n\n\t\t\tif (!fs.existsSync(absolutePath)) {\n\t\t\t\tdelete suppressions[file];\n\t\t\t}\n\t\t}\n\n\t\treturn this.save(suppressions);\n\t}\n\n\t/**\n\t * Checks the provided suppressions against the lint results.\n\t *\n\t * For each file, counts the number of violations per rule.\n\t * For each rule in each file, compares the number of violations against the counter from the suppressions file.\n\t * If the number of violations is less or equal to the counter, messages are moved to `LintResult#suppressedMessages` and ignored.\n\t * Otherwise, all violations are reported as usual.\n\t * @param {LintResult[]} results The lint results.\n\t * @param {SuppressedViolations} suppressions The suppressions.\n\t * @returns {{\n\t *   results: LintResult[],\n\t *   unused: SuppressedViolations\n\t * }} The updated results and the unused suppressions.\n\t */\n\tapplySuppressions(results, suppressions) {\n\t\t/**\n\t\t * We copy the results to avoid modifying the original objects\n\t\t * We remove only result messages that are matched and hence suppressed\n\t\t * We leave the rest untouched to minimize the risk of losing parts of the original data\n\t\t */\n\t\tconst filtered = structuredClone(results);\n\t\tconst unused = {};\n\n\t\tfor (const result of filtered) {\n\t\t\tconst relativeFilePath = this.getRelativeFilePath(result.filePath);\n\n\t\t\tif (!suppressions[relativeFilePath]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst violationsByRule = SuppressionsService.countViolationsByRule(\n\t\t\t\tresult.messages,\n\t\t\t);\n\t\t\tlet wasSuppressed = false;\n\n\t\t\tfor (const ruleId in violationsByRule) {\n\t\t\t\tif (!suppressions[relativeFilePath][ruleId]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst suppressionsCount =\n\t\t\t\t\tsuppressions[relativeFilePath][ruleId].count;\n\t\t\t\tconst violationsCount = violationsByRule[ruleId].count;\n\n\t\t\t\t// Suppress messages if the number of violations is less or equal to the suppressions count\n\t\t\t\tif (violationsCount <= suppressionsCount) {\n\t\t\t\t\tSuppressionsService.suppressMessagesByRule(result, ruleId);\n\t\t\t\t\twasSuppressed = true;\n\t\t\t\t}\n\n\t\t\t\t// Update the count to match the new number of violations, otherwise remove the rule entirely\n\t\t\t\tif (violationsCount < suppressionsCount) {\n\t\t\t\t\tunused[relativeFilePath] ??= {};\n\t\t\t\t\tunused[relativeFilePath][ruleId] ??= {};\n\t\t\t\t\tunused[relativeFilePath][ruleId].count =\n\t\t\t\t\t\tsuppressionsCount - violationsCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Mark as unused all the suppressions that were not matched against a rule\n\t\t\tfor (const ruleId in suppressions[relativeFilePath]) {\n\t\t\t\tif (violationsByRule[ruleId]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tunused[relativeFilePath] ??= {};\n\t\t\t\tunused[relativeFilePath][ruleId] =\n\t\t\t\t\tsuppressions[relativeFilePath][ruleId];\n\t\t\t}\n\n\t\t\t// Recalculate stats if messages were suppressed\n\t\t\tif (wasSuppressed) {\n\t\t\t\tObject.assign(result, calculateStatsPerFile(result.messages));\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tresults: filtered,\n\t\t\tunused,\n\t\t};\n\t}\n\n\t/**\n\t * Loads the suppressions file.\n\t * @throws {Error} If the suppressions file cannot be parsed.\n\t * @returns {Promise<SuppressedViolations>} The suppressions.\n\t */\n\tasync load() {\n\t\ttry {\n\t\t\tconst data = await fs.promises.readFile(this.filePath, \"utf8\");\n\n\t\t\treturn JSON.parse(data);\n\t\t} catch (err) {\n\t\t\tif (err.code === \"ENOENT\") {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to parse suppressions file at ${this.filePath}`,\n\t\t\t\t{\n\t\t\t\t\tcause: err,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Updates the suppressions file.\n\t * @param {SuppressedViolations} suppressions The suppressions to save.\n\t * @returns {Promise<void>}\n\t * @private\n\t */\n\tsave(suppressions) {\n\t\treturn fs.promises.writeFile(\n\t\t\tthis.filePath,\n\t\t\tstringify(suppressions, { space: 2 }),\n\t\t);\n\t}\n\n\t/**\n\t * Counts the violations by rule, ignoring warnings.\n\t * @param {LintMessage[]} messages The messages to count.\n\t * @returns {Record<string, number>} The number of violations by rule.\n\t */\n\tstatic countViolationsByRule(messages) {\n\t\treturn messages.reduce((totals, message) => {\n\t\t\tif (message.severity === 2 && message.ruleId) {\n\t\t\t\ttotals[message.ruleId] ??= { count: 0 };\n\t\t\t\ttotals[message.ruleId].count++;\n\t\t\t}\n\t\t\treturn totals;\n\t\t}, {});\n\t}\n\n\t/**\n\t * Returns the relative path of a file to the current working directory.\n\t * Always in POSIX format for consistency and interoperability.\n\t * @param {string} filePath The file path.\n\t * @returns {string} The relative file path.\n\t */\n\tgetRelativeFilePath(filePath) {\n\t\treturn path\n\t\t\t.relative(this.cwd, filePath)\n\t\t\t.split(path.sep)\n\t\t\t.join(path.posix.sep);\n\t}\n\n\t/**\n\t * Moves the messages matching the rule to `LintResult#suppressedMessages` and updates the stats.\n\t * @param {LintResult} result The result to update.\n\t * @param {string} ruleId The rule to suppress.\n\t * @returns {void}\n\t */\n\tstatic suppressMessagesByRule(result, ruleId) {\n\t\tconst suppressedMessages = result.messages.filter(\n\t\t\tmessage => message.ruleId === ruleId,\n\t\t);\n\n\t\tresult.suppressedMessages = result.suppressedMessages.concat(\n\t\t\tsuppressedMessages.map(message => {\n\t\t\t\tmessage.suppressions = [\n\t\t\t\t\t{\n\t\t\t\t\t\tkind: \"file\",\n\t\t\t\t\t\tjustification: \"\",\n\t\t\t\t\t},\n\t\t\t\t];\n\n\t\t\t\treturn message;\n\t\t\t}),\n\t\t);\n\n\t\tresult.messages = result.messages.filter(\n\t\t\tmessage => message.ruleId !== ruleId,\n\t\t);\n\t}\n}\n\nmodule.exports = { SuppressionsService };\n", "/**\n * @fileoverview The main file for the humanfs package.\n * @author Nicholas C. Zakas\n */\n\n/* global URL, TextDecoder, TextEncoder */\n\n//-----------------------------------------------------------------------------\n// Types\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"@humanfs/types\").HfsImpl} HfsImpl */\n/** @typedef {import(\"@humanfs/types\").HfsDirectoryEntry} HfsDirectoryEntry */\n/** @typedef {import(\"@humanfs/types\").HfsWalkEntry} HfsWalkEntry */\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\nconst decoder = new TextDecoder();\nconst encoder = new TextEncoder();\n\n/**\n * Error to represent when a method is missing on an impl.\n */\nexport class NoSuchMethodError extends Error {\n\t/**\n\t * Creates a new instance.\n\t * @param {string} methodName The name of the method that was missing.\n\t */\n\tconstructor(methodName) {\n\t\tsuper(`Method \"${methodName}\" does not exist on impl.`);\n\t}\n}\n\n/**\n * Error to represent when a method is not supported on an impl. This happens\n * when a method on `Hfs` is called with one name and the corresponding method\n * on the impl has a different name. (Example: `text()` and `bytes()`.)\n */\nexport class MethodNotSupportedError extends Error {\n\t/**\n\t * Creates a new instance.\n\t * @param {string} methodName The name of the method that was missing.\n\t */\n\tconstructor(methodName) {\n\t\tsuper(`Method \"${methodName}\" is not supported on this impl.`);\n\t}\n}\n\n/**\n * Error to represent when an impl is already set.\n */\nexport class ImplAlreadySetError extends Error {\n\t/**\n\t * Creates a new instance.\n\t */\n\tconstructor() {\n\t\tsuper(`Implementation already set.`);\n\t}\n}\n\n/**\n * Asserts that the given path is a valid file path.\n * @param {any} fileOrDirPath The path to check.\n * @returns {void}\n * @throws {TypeError} When the path is not a non-empty string.\n */\nfunction assertValidFileOrDirPath(fileOrDirPath) {\n\tif (\n\t\t!fileOrDirPath ||\n\t\t(!(fileOrDirPath instanceof URL) && typeof fileOrDirPath !== \"string\")\n\t) {\n\t\tthrow new TypeError(\"Path must be a non-empty string or URL.\");\n\t}\n}\n\n/**\n * Asserts that the given file contents are valid.\n * @param {any} contents The contents to check.\n * @returns {void}\n * @throws {TypeError} When the contents are not a string or ArrayBuffer.\n */\nfunction assertValidFileContents(contents) {\n\tif (\n\t\ttypeof contents !== \"string\" &&\n\t\t!(contents instanceof ArrayBuffer) &&\n\t\t!ArrayBuffer.isView(contents)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t\"File contents must be a string, ArrayBuffer, or ArrayBuffer view.\",\n\t\t);\n\t}\n}\n\n/**\n * Converts the given contents to Uint8Array.\n * @param {any} contents The data to convert.\n * @returns {Uint8Array} The converted Uint8Array.\n * @throws {TypeError} When the contents are not a string or ArrayBuffer.\n */\nfunction toUint8Array(contents) {\n\tif (contents instanceof Uint8Array) {\n\t\treturn contents;\n\t}\n\n\tif (typeof contents === \"string\") {\n\t\treturn encoder.encode(contents);\n\t}\n\n\tif (contents instanceof ArrayBuffer) {\n\t\treturn new Uint8Array(contents);\n\t}\n\n\tif (ArrayBuffer.isView(contents)) {\n\t\tconst bytes = contents.buffer.slice(\n\t\t\tcontents.byteOffset,\n\t\t\tcontents.byteOffset + contents.byteLength,\n\t\t);\n\t\treturn new Uint8Array(bytes);\n\t}\n\tthrow new TypeError(\n\t\t\"Invalid contents type. Expected string or ArrayBuffer.\",\n\t);\n}\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * A class representing a log entry.\n */\nexport class LogEntry {\n\t/**\n\t * The type of log entry.\n\t * @type {string}\n\t */\n\ttype;\n\n\t/**\n\t * The data associated with the log entry.\n\t * @type {any}\n\t */\n\tdata;\n\n\t/**\n\t * The time at which the log entry was created.\n\t * @type {number}\n\t */\n\ttimestamp = Date.now();\n\n\t/**\n\t * Creates a new instance.\n\t * @param {string} type The type of log entry.\n\t * @param {any} [data] The data associated with the log entry.\n\t */\n\tconstructor(type, data) {\n\t\tthis.type = type;\n\t\tthis.data = data;\n\t}\n}\n\n/**\n * A class representing a file system utility library.\n * @implements {HfsImpl}\n */\nexport class Hfs {\n\t/**\n\t * The base implementation for this instance.\n\t * @type {HfsImpl}\n\t */\n\t#baseImpl;\n\n\t/**\n\t * The current implementation for this instance.\n\t * @type {HfsImpl}\n\t */\n\t#impl;\n\n\t/**\n\t * A map of log names to their corresponding entries.\n\t * @type {Map<string,Array<LogEntry>>}\n\t */\n\t#logs = new Map();\n\n\t/**\n\t * Creates a new instance.\n\t * @param {object} options The options for the instance.\n\t * @param {HfsImpl} options.impl The implementation to use.\n\t */\n\tconstructor({ impl }) {\n\t\tthis.#baseImpl = impl;\n\t\tthis.#impl = impl;\n\t}\n\n\t/**\n\t * Logs an entry onto all currently open logs.\n\t * @param {string} methodName The name of the method being called.\n\t * @param {...*} args The arguments to the method.\n\t * @returns {void}\n\t */\n\t#log(methodName, ...args) {\n\t\tfor (const logs of this.#logs.values()) {\n\t\t\tlogs.push(new LogEntry(\"call\", { methodName, args }));\n\t\t}\n\t}\n\n\t/**\n\t * Starts a new log with the given name.\n\t * @param {string} name The name of the log to start;\n\t * @returns {void}\n\t * @throws {Error} When the log already exists.\n\t * @throws {TypeError} When the name is not a non-empty string.\n\t */\n\tlogStart(name) {\n\t\tif (!name || typeof name !== \"string\") {\n\t\t\tthrow new TypeError(\"Log name must be a non-empty string.\");\n\t\t}\n\n\t\tif (this.#logs.has(name)) {\n\t\t\tthrow new Error(`Log \"${name}\" already exists.`);\n\t\t}\n\n\t\tthis.#logs.set(name, []);\n\t}\n\n\t/**\n\t * Ends a log with the given name and returns the entries.\n\t * @param {string} name The name of the log to end.\n\t * @returns {Array<LogEntry>} The entries in the log.\n\t * @throws {Error} When the log does not exist.\n\t */\n\tlogEnd(name) {\n\t\tif (this.#logs.has(name)) {\n\t\t\tconst logs = this.#logs.get(name);\n\t\t\tthis.#logs.delete(name);\n\t\t\treturn logs;\n\t\t}\n\n\t\tthrow new Error(`Log \"${name}\" does not exist.`);\n\t}\n\n\t/**\n\t * Determines if the current implementation is the base implementation.\n\t * @returns {boolean} True if the current implementation is the base implementation.\n\t */\n\tisBaseImpl() {\n\t\treturn this.#impl === this.#baseImpl;\n\t}\n\n\t/**\n\t * Sets the implementation for this instance.\n\t * @param {object} impl The implementation to use.\n\t * @returns {void}\n\t */\n\tsetImpl(impl) {\n\t\tthis.#log(\"implSet\", impl);\n\n\t\tif (this.#impl !== this.#baseImpl) {\n\t\t\tthrow new ImplAlreadySetError();\n\t\t}\n\n\t\tthis.#impl = impl;\n\t}\n\n\t/**\n\t * Resets the implementation for this instance back to its original.\n\t * @returns {void}\n\t */\n\tresetImpl() {\n\t\tthis.#log(\"implReset\");\n\t\tthis.#impl = this.#baseImpl;\n\t}\n\n\t/**\n\t * Asserts that the given method exists on the current implementation.\n\t * @param {string} methodName The name of the method to check.\n\t * @returns {void}\n\t * @throws {NoSuchMethodError} When the method does not exist on the current implementation.\n\t */\n\t#assertImplMethod(methodName) {\n\t\tif (typeof this.#impl[methodName] !== \"function\") {\n\t\t\tthrow new NoSuchMethodError(methodName);\n\t\t}\n\t}\n\n\t/**\n\t * Asserts that the given method exists on the current implementation, and if not,\n\t * throws an error with a different method name.\n\t * @param {string} methodName The name of the method to check.\n\t * @param {string} targetMethodName The name of the method that should be reported\n\t *  as an error when methodName does not exist.\n\t * @returns {void}\n\t * @throws {NoSuchMethodError} When the method does not exist on the current implementation.\n\t */\n\t#assertImplMethodAlt(methodName, targetMethodName) {\n\t\tif (typeof this.#impl[methodName] !== \"function\") {\n\t\t\tthrow new MethodNotSupportedError(targetMethodName);\n\t\t}\n\t}\n\n\t/**\n\t * Calls the given method on the current implementation.\n\t * @param {string} methodName The name of the method to call.\n\t * @param {...any} args The arguments to the method.\n\t * @returns {any} The return value from the method.\n\t * @throws {NoSuchMethodError} When the method does not exist on the current implementation.\n\t */\n\t#callImplMethod(methodName, ...args) {\n\t\tthis.#log(methodName, ...args);\n\t\tthis.#assertImplMethod(methodName);\n\t\treturn this.#impl[methodName](...args);\n\t}\n\n\t/**\n\t * Calls the given method on the current implementation and doesn't log the call.\n\t * @param {string} methodName The name of the method to call.\n\t * @param {...any} args The arguments to the method.\n\t * @returns {any} The return value from the method.\n\t * @throws {NoSuchMethodError} When the method does not exist on the current implementation.\n\t */\n\t#callImplMethodWithoutLog(methodName, ...args) {\n\t\tthis.#assertImplMethod(methodName);\n\t\treturn this.#impl[methodName](...args);\n\t}\n\n\t/**\n\t * Calls the given method on the current implementation but logs a different method name.\n\t * @param {string} methodName The name of the method to call.\n\t * @param {string} targetMethodName The name of the method to log.\n\t * @param {...any} args The arguments to the method.\n\t * @returns {any} The return value from the method.\n\t * @throws {NoSuchMethodError} When the method does not exist on the current implementation.\n\t */\n\t#callImplMethodAlt(methodName, targetMethodName, ...args) {\n\t\tthis.#log(targetMethodName, ...args);\n\t\tthis.#assertImplMethodAlt(methodName, targetMethodName);\n\t\treturn this.#impl[methodName](...args);\n\t}\n\n\t/**\n\t * Reads the given file and returns the contents as text. Assumes UTF-8 encoding.\n\t * @param {string|URL} filePath The file to read.\n\t * @returns {Promise<string|undefined>} The contents of the file.\n\t * @throws {NoSuchMethodError} When the method does not exist on the current implementation.\n\t * @throws {TypeError} When the file path is not a non-empty string.\n\t */\n\tasync text(filePath) {\n\t\tassertValidFileOrDirPath(filePath);\n\n\t\tconst result = await this.#callImplMethodAlt(\"bytes\", \"text\", filePath);\n\t\treturn result ? decoder.decode(result) : undefined;\n\t}\n\n\t/**\n\t * Reads the given file and returns the contents as JSON. Assumes UTF-8 encoding.\n\t * @param {string|URL} filePath The file to read.\n\t * @returns {Promise<any|undefined>} The contents of the file as JSON.\n\t * @throws {NoSuchMethodError} When the method does not exist on the current implementation.\n\t * @throws {SyntaxError} When the file contents are not valid JSON.\n\t * @throws {TypeError} When the file path is not a non-empty string.\n\t */\n\tasync json(filePath) {\n\t\tassertValidFileOrDirPath(filePath);\n\n\t\tconst result = await this.#callImplMethodAlt(\"bytes\", \"json\", filePath);\n\t\treturn result ? JSON.parse(decoder.decode(result)) : undefined;\n\t}\n\n\t/**\n\t * Reads the given file and returns the contents as an ArrayBuffer.\n\t * @param {string|URL} filePath The file to read.\n\t * @returns {Promise<ArrayBuffer|undefined>} The contents of the file as an ArrayBuffer.\n\t * @throws {NoSuchMethodError} When the method does not exist on the current implementation.\n\t * @throws {TypeError} When the file path is not a non-empty string.\n\t * @deprecated Use bytes() instead.\n\t */\n\tasync arrayBuffer(filePath) {\n\t\tassertValidFileOrDirPath(filePath);\n\n\t\tconst result = await this.#callImplMethodAlt(\n\t\t\t\"bytes\",\n\t\t\t\"arrayBuffer\",\n\t\t\tfilePath,\n\t\t);\n\t\treturn result?.buffer;\n\t}\n\n\t/**\n\t * Reads the given file and returns the contents as an Uint8Array.\n\t * @param {string|URL} filePath The file to read.\n\t * @returns {Promise<Uint8Array|undefined>} The contents of the file as an Uint8Array.\n\t * @throws {NoSuchMethodError} When the method does not exist on the current implementation.\n\t * @throws {TypeError} When the file path is not a non-empty string.\n\t */\n\tasync bytes(filePath) {\n\t\tassertValidFileOrDirPath(filePath);\n\t\treturn this.#callImplMethod(\"bytes\", filePath);\n\t}\n\n\t/**\n\t * Writes the given data to the given file. Creates any necessary directories along the way.\n\t * If the data is a string, UTF-8 encoding is used.\n\t * @param {string|URL} filePath The file to write.\n\t * @param {string|ArrayBuffer|ArrayBufferView} contents The data to write.\n\t * @returns {Promise<void>} A promise that resolves when the file is written.\n\t * @throws {NoSuchMethodError} When the method does not exist on the current implementation.\n\t * @throws {TypeError} When the file path is not a non-empty string.\n\t */\n\tasync write(filePath, contents) {\n\t\tassertValidFileOrDirPath(filePath);\n\t\tassertValidFileContents(contents);\n\t\tthis.#log(\"write\", filePath, contents);\n\n\t\tlet value = toUint8Array(contents);\n\t\treturn this.#callImplMethodWithoutLog(\"write\", filePath, value);\n\t}\n\n\t/**\n\t * Appends the given data to the given file. Creates any necessary directories along the way.\n\t * If the data is a string, UTF-8 encoding is used.\n\t * @param {string|URL} filePath The file to append to.\n\t * @param {string|ArrayBuffer|ArrayBufferView} contents The data to append.\n\t * @returns {Promise<void>} A promise that resolves when the file is appended to.\n\t * @throws {NoSuchMethodError} When the method does not exist on the current implementation.\n\t * @throws {TypeError} When the file path is not a non-empty string.\n\t * @throws {TypeError} When the file contents are not a string or ArrayBuffer.\n\t * @throws {Error} When the file cannot be appended to.\n\t */\n\tasync append(filePath, contents) {\n\t\tassertValidFileOrDirPath(filePath);\n\t\tassertValidFileContents(contents);\n\t\tthis.#log(\"append\", filePath, contents);\n\n\t\tlet value = toUint8Array(contents);\n\t\treturn this.#callImplMethodWithoutLog(\"append\", filePath, value);\n\t}\n\n\t/**\n\t * Determines if the given file exists.\n\t * @param {string|URL} filePath The file to check.\n\t * @returns {Promise<boolean>} True if the file exists.\n\t * @throws {NoSuchMethodError} When the method does not exist on the current implementation.\n\t * @throws {TypeError} When the file path is not a non-empty string.\n\t */\n\tasync isFile(filePath) {\n\t\tassertValidFileOrDirPath(filePath);\n\t\treturn this.#callImplMethod(\"isFile\", filePath);\n\t}\n\n\t/**\n\t * Determines if the given directory exists.\n\t * @param {string|URL} dirPath The directory to check.\n\t * @returns {Promise<boolean>} True if the directory exists.\n\t * @throws {NoSuchMethodError} When the method does not exist on the current implementation.\n\t * @throws {TypeError} When the directory path is not a non-empty string.\n\t */\n\tasync isDirectory(dirPath) {\n\t\tassertValidFileOrDirPath(dirPath);\n\t\treturn this.#callImplMethod(\"isDirectory\", dirPath);\n\t}\n\n\t/**\n\t * Creates the given directory.\n\t * @param {string|URL} dirPath The directory to create.\n\t * @returns {Promise<void>} A promise that resolves when the directory is created.\n\t * @throws {NoSuchMethodError} When the method does not exist on the current implementation.\n\t * @throws {TypeError} When the directory path is not a non-empty string.\n\t */\n\tasync createDirectory(dirPath) {\n\t\tassertValidFileOrDirPath(dirPath);\n\t\treturn this.#callImplMethod(\"createDirectory\", dirPath);\n\t}\n\n\t/**\n\t * Deletes the given file or empty directory.\n\t * @param {string|URL} filePath The file to delete.\n\t * @returns {Promise<boolean>} A promise that resolves when the file or\n\t *   directory is deleted, true if the file or directory is deleted, false\n\t *   if the file or directory does not exist.\n\t * @throws {NoSuchMethodError} When the method does not exist on the current implementation.\n\t * @throws {TypeError} When the file path is not a non-empty string.\n\t */\n\tasync delete(filePath) {\n\t\tassertValidFileOrDirPath(filePath);\n\t\treturn this.#callImplMethod(\"delete\", filePath);\n\t}\n\n\t/**\n\t * Deletes the given file or directory recursively.\n\t * @param {string|URL} dirPath The directory to delete.\n\t * @returns {Promise<boolean>} A promise that resolves when the file or\n\t *   directory is deleted, true if the file or directory is deleted, false\n\t *   if the file or directory does not exist.\n\t * @throws {NoSuchMethodError} When the method does not exist on the current implementation.\n\t * @throws {TypeError} When the directory path is not a non-empty string.\n\t */\n\tasync deleteAll(dirPath) {\n\t\tassertValidFileOrDirPath(dirPath);\n\t\treturn this.#callImplMethod(\"deleteAll\", dirPath);\n\t}\n\n\t/**\n\t * Returns a list of directory entries for the given path.\n\t * @param {string|URL} dirPath The path to the directory to read.\n\t * @returns {AsyncIterable<HfsDirectoryEntry>} A promise that resolves with the\n\t *   directory entries.\n\t * @throws {TypeError} If the directory path is not a string or URL.\n\t * @throws {Error} If the directory cannot be read.\n\t */\n\tasync *list(dirPath) {\n\t\tassertValidFileOrDirPath(dirPath);\n\t\tyield* await this.#callImplMethod(\"list\", dirPath);\n\t}\n\n\t/**\n\t * Walks a directory using a depth-first traversal and returns the entries\n\t * from the traversal.\n\t * @param {string|URL} dirPath The path to the directory to walk.\n\t * @param {Object} [options] The options for the walk.\n\t * @param {(entry:HfsWalkEntry) => Promise<boolean>|boolean} [options.directoryFilter] A filter function to determine\n\t * \tif a directory's entries should be included in the walk.\n\t * @param {(entry:HfsWalkEntry) => Promise<boolean>|boolean} [options.entryFilter] A filter function to determine if\n\t * \tan entry should be included in the walk.\n\t * @returns {AsyncIterable<HfsWalkEntry>} A promise that resolves with the\n\t * \tdirectory entries.\n\t * @throws {TypeError} If the directory path is not a string or URL.\n\t * @throws {Error} If the directory cannot be read.\n\t */\n\tasync *walk(\n\t\tdirPath,\n\t\t{ directoryFilter = () => true, entryFilter = () => true } = {},\n\t) {\n\t\tassertValidFileOrDirPath(dirPath);\n\t\tthis.#log(\"walk\", dirPath, { directoryFilter, entryFilter });\n\n\t\t// inner function for recursion without additional logging\n\t\tconst walk = async function* (\n\t\t\tdirPath,\n\t\t\t{ directoryFilter, entryFilter, parentPath = \"\", depth = 1 },\n\t\t) {\n\t\t\tlet dirEntries;\n\n\t\t\ttry {\n\t\t\t\tdirEntries = await this.#callImplMethodWithoutLog(\n\t\t\t\t\t\"list\",\n\t\t\t\t\tdirPath,\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\t// if the directory does not exist then return an empty array\n\t\t\t\tif (error.code === \"ENOENT\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// otherwise, rethrow the error\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tfor await (const listEntry of dirEntries) {\n\t\t\t\tconst walkEntry = {\n\t\t\t\t\tpath: listEntry.name,\n\t\t\t\t\tdepth,\n\t\t\t\t\t...listEntry,\n\t\t\t\t};\n\n\t\t\t\tif (parentPath) {\n\t\t\t\t\twalkEntry.path = `${parentPath}/${walkEntry.path}`;\n\t\t\t\t}\n\n\t\t\t\t// first emit the entry but only if the entry filter returns true\n\t\t\t\tlet shouldEmitEntry = entryFilter(walkEntry);\n\t\t\t\tif (shouldEmitEntry.then) {\n\t\t\t\t\tshouldEmitEntry = await shouldEmitEntry;\n\t\t\t\t}\n\n\t\t\t\tif (shouldEmitEntry) {\n\t\t\t\t\tyield walkEntry;\n\t\t\t\t}\n\n\t\t\t\t// if it's a directory then yield the entry and walk the directory\n\t\t\t\tif (listEntry.isDirectory) {\n\t\t\t\t\t// if the directory filter returns false, skip the directory\n\t\t\t\t\tlet shouldWalkDirectory = directoryFilter(walkEntry);\n\t\t\t\t\tif (shouldWalkDirectory.then) {\n\t\t\t\t\t\tshouldWalkDirectory = await shouldWalkDirectory;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!shouldWalkDirectory) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// make sure there's a trailing slash on the directory path before appending\n\t\t\t\t\tconst directoryPath =\n\t\t\t\t\t\tdirPath instanceof URL\n\t\t\t\t\t\t\t? new URL(\n\t\t\t\t\t\t\t\t\tlistEntry.name,\n\t\t\t\t\t\t\t\t\tdirPath.href.endsWith(\"/\")\n\t\t\t\t\t\t\t\t\t\t? dirPath.href\n\t\t\t\t\t\t\t\t\t\t: `${dirPath.href}/`,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: `${dirPath.endsWith(\"/\") ? dirPath : `${dirPath}/`}${listEntry.name}`;\n\n\t\t\t\t\tyield* walk(directoryPath, {\n\t\t\t\t\t\tdirectoryFilter,\n\t\t\t\t\t\tentryFilter,\n\t\t\t\t\t\tparentPath: walkEntry.path,\n\t\t\t\t\t\tdepth: depth + 1,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(this);\n\n\t\tyield* walk(dirPath, { directoryFilter, entryFilter });\n\t}\n\n\t/**\n\t * Returns the size of the given file.\n\t * @param {string|URL} filePath The path to the file to read.\n\t * @returns {Promise<number>} A promise that resolves with the size of the file.\n\t * @throws {TypeError} If the file path is not a string or URL.\n\t * @throws {Error} If the file cannot be read.\n\t */\n\tasync size(filePath) {\n\t\tassertValidFileOrDirPath(filePath);\n\t\treturn this.#callImplMethod(\"size\", filePath);\n\t}\n\n\t/**\n\t * Returns the last modified timestamp of the given file or directory.\n\t * @param {string|URL} fileOrDirPath The path to the file or directory.\n\t * @returns {Promise<Date|undefined>} A promise that resolves with the last modified date\n\t *  or undefined if the file or directory does not exist.\n\t * @throws {TypeError} If the path is not a string or URL.\n\t */\n\tasync lastModified(fileOrDirPath) {\n\t\tassertValidFileOrDirPath(fileOrDirPath);\n\t\treturn this.#callImplMethod(\"lastModified\", fileOrDirPath);\n\t}\n\n\t/**\n\t * Copys a file from one location to another.\n\t * @param {string|URL} source The path to the file to copy.\n\t * @param {string|URL} destination The path to the new file.\n\t * @returns {Promise<void>} A promise that resolves when the file is copied.\n\t * @throws {TypeError} If the file path is not a string or URL.\n\t * @throws {Error} If the file cannot be copied.\n\t */\n\tasync copy(source, destination) {\n\t\tassertValidFileOrDirPath(source);\n\t\tassertValidFileOrDirPath(destination);\n\t\treturn this.#callImplMethod(\"copy\", source, destination);\n\t}\n\n\t/**\n\t * Copies a file or directory from one location to another.\n\t * @param {string|URL} source The path to the file or directory to copy.\n\t * @param {string|URL} destination The path to copy the file or directory to.\n\t * @returns {Promise<void>} A promise that resolves when the file or directory is\n\t * copied.\n\t * @throws {TypeError} If the directory path is not a string or URL.\n\t * @throws {Error} If the directory cannot be copied.\n\t */\n\tasync copyAll(source, destination) {\n\t\tassertValidFileOrDirPath(source);\n\t\tassertValidFileOrDirPath(destination);\n\t\treturn this.#callImplMethod(\"copyAll\", source, destination);\n\t}\n\n\t/**\n\t * Moves a file from the source path to the destination path.\n\t * @param {string|URL} source The location of the file to move.\n\t * @param {string|URL} destination The destination of the file to move.\n\t * @returns {Promise<void>} A promise that resolves when the move is complete.\n\t * @throws {TypeError} If the file or directory paths are not strings.\n\t * @throws {Error} If the file or directory cannot be moved.\n\t */\n\tasync move(source, destination) {\n\t\tassertValidFileOrDirPath(source);\n\t\tassertValidFileOrDirPath(destination);\n\t\treturn this.#callImplMethod(\"move\", source, destination);\n\t}\n\n\t/**\n\t * Moves a file or directory from one location to another.\n\t * @param {string|URL} source The path to the file or directory to move.\n\t * @param {string|URL} destination The path to move the file or directory to.\n\t * @returns {Promise<void>} A promise that resolves when the file or directory is\n\t * moved.\n\t * @throws {TypeError} If the source is not a string or URL.\n\t * @throws {TypeError} If the destination is not a string or URL.\n\t * @throws {Error} If the file or directory cannot be moved.\n\t */\n\tasync moveAll(source, destination) {\n\t\tassertValidFileOrDirPath(source);\n\t\tassertValidFileOrDirPath(destination);\n\t\treturn this.#callImplMethod(\"moveAll\", source, destination);\n\t}\n}\n", "/**\n * @fileoverview The Path class.\n * @author Nicholas C. Zakas\n */\n\n/* globals URL */\n\n//-----------------------------------------------------------------------------\n// Types\n//-----------------------------------------------------------------------------\n\n/** @typedef{import(\"@humanfs/types\").HfsImpl} HfsImpl */\n/** @typedef{import(\"@humanfs/types\").HfsDirectoryEntry} HfsDirectoryEntry */\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\n/**\n * Normalizes a path to use forward slashes.\n * @param {string} filePath The path to normalize.\n * @returns {string} The normalized path.\n */\nfunction normalizePath(filePath) {\n\tlet startIndex = 0;\n\tlet endIndex = filePath.length;\n\n\tif (/[a-z]:\\//i.test(filePath)) {\n\t\tstartIndex = 3;\n\t}\n\n\tif (filePath.startsWith(\"./\")) {\n\t\tstartIndex = 2;\n\t}\n\n\tif (filePath.startsWith(\"/\")) {\n\t\tstartIndex = 1;\n\t}\n\n\tif (filePath.endsWith(\"/\")) {\n\t\tendIndex = filePath.length - 1;\n\t}\n\n\treturn filePath.slice(startIndex, endIndex).replace(/\\\\/g, \"/\");\n}\n\n/**\n * Asserts that the given name is a non-empty string, no equal to \".\" or \"..\",\n * and does not contain a forward slash or backslash.\n * @param {string} name The name to check.\n * @returns {void}\n * @throws {TypeError} When name is not valid.\n */\nfunction assertValidName(name) {\n\tif (typeof name !== \"string\") {\n\t\tthrow new TypeError(\"name must be a string\");\n\t}\n\n\tif (!name) {\n\t\tthrow new TypeError(\"name cannot be empty\");\n\t}\n\n\tif (name === \".\") {\n\t\tthrow new TypeError(`name cannot be \".\"`);\n\t}\n\n\tif (name === \"..\") {\n\t\tthrow new TypeError(`name cannot be \"..\"`);\n\t}\n\n\tif (name.includes(\"/\") || name.includes(\"\\\\\")) {\n\t\tthrow new TypeError(\n\t\t\t`name cannot contain a slash or backslash: \"${name}\"`,\n\t\t);\n\t}\n}\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\nexport class Path {\n\t/**\n\t * The steps in the path.\n\t * @type {Array<string>}\n\t */\n\t#steps;\n\n\t/**\n\t * Creates a new instance.\n\t * @param {Iterable<string>} [steps] The steps to use for the path.\n\t * @throws {TypeError} When steps is not iterable.\n\t */\n\tconstructor(steps = []) {\n\t\tif (typeof steps[Symbol.iterator] !== \"function\") {\n\t\t\tthrow new TypeError(\"steps must be iterable\");\n\t\t}\n\n\t\tthis.#steps = [...steps];\n\t\tthis.#steps.forEach(assertValidName);\n\t}\n\n\t/**\n\t * Adds steps to the end of the path.\n\t * @param  {...string} steps The steps to add to the path.\n\t * @returns {void}\n\t */\n\tpush(...steps) {\n\t\tsteps.forEach(assertValidName);\n\t\tthis.#steps.push(...steps);\n\t}\n\n\t/**\n\t * Removes the last step from the path.\n\t * @returns {string} The last step in the path.\n\t */\n\tpop() {\n\t\treturn this.#steps.pop();\n\t}\n\n\t/**\n\t * Returns an iterator for steps in the path.\n\t * @returns {IterableIterator<string>} An iterator for the steps in the path.\n\t */\n\tsteps() {\n\t\treturn this.#steps.values();\n\t}\n\n\t/**\n\t * Returns an iterator for the steps in the path.\n\t * @returns {IterableIterator<string>} An iterator for the steps in the path.\n\t */\n\t[Symbol.iterator]() {\n\t\treturn this.steps();\n\t}\n\n\t/**\n\t * Retrieves the name (the last step) of the path.\n\t * @type {string}\n\t */\n\tget name() {\n\t\treturn this.#steps[this.#steps.length - 1];\n\t}\n\n\t/**\n\t * Sets the name (the last step) of the path.\n\t * @type {string}\n\t */\n\tset name(value) {\n\t\tassertValidName(value);\n\t\tthis.#steps[this.#steps.length - 1] = value;\n\t}\n\n\t/**\n\t * Retrieves the size of the path.\n\t * @type {number}\n\t */\n\tget size() {\n\t\treturn this.#steps.length;\n\t}\n\n\t/**\n\t * Returns the path as a string.\n\t * @returns {string} The path as a string.\n\t */\n\ttoString() {\n\t\treturn this.#steps.join(\"/\");\n\t}\n\n\t/**\n\t * Creates a new path based on the argument type. If the argument is a string,\n\t * it is assumed to be a file or directory path and is converted to a Path\n\t * instance. If the argument is a URL, it is assumed to be a file URL and is\n\t * converted to a Path instance. If the argument is a Path instance, it is\n\t * copied into a new Path instance. If the argument is an array, it is assumed\n\t * to be the steps of a path and is used to create a new Path instance.\n\t * @param {string|URL|Path|Array<string>} pathish The value to convert to a Path instance.\n\t * @returns {Path} A new Path instance.\n\t * @throws {TypeError} When pathish is not a string, URL, Path, or Array.\n\t * @throws {TypeError} When pathish is a string and is empty.\n\t */\n\tstatic from(pathish) {\n\t\tif (typeof pathish === \"string\") {\n\t\t\tif (!pathish) {\n\t\t\t\tthrow new TypeError(\"argument cannot be empty\");\n\t\t\t}\n\n\t\t\treturn Path.fromString(pathish);\n\t\t}\n\n\t\tif (pathish instanceof URL) {\n\t\t\treturn Path.fromURL(pathish);\n\t\t}\n\n\t\tif (pathish instanceof Path || Array.isArray(pathish)) {\n\t\t\treturn new Path(pathish);\n\t\t}\n\n\t\tthrow new TypeError(\"argument must be a string, URL, Path, or Array\");\n\t}\n\n\t/**\n\t * Creates a new Path instance from a string.\n\t * @param {string} fileOrDirPath The file or directory path to convert.\n\t * @returns {Path} A new Path instance.\n\t * @deprecated Use Path.from() instead.\n\t */\n\tstatic fromString(fileOrDirPath) {\n\t\treturn new Path(normalizePath(fileOrDirPath).split(\"/\"));\n\t}\n\n\t/**\n\t * Creates a new Path instance from a URL.\n\t * @param {URL} url The URL to convert.\n\t * @returns {Path} A new Path instance.\n\t * @throws {TypeError} When url is not a URL instance.\n\t * @throws {TypeError} When url.pathname is empty.\n\t * @throws {TypeError} When url.protocol is not \"file:\".\n\t * @deprecated Use Path.from() instead.\n\t */\n\tstatic fromURL(url) {\n\t\tif (!(url instanceof URL)) {\n\t\t\tthrow new TypeError(\"url must be a URL instance\");\n\t\t}\n\n\t\tif (!url.pathname || url.pathname === \"/\") {\n\t\t\tthrow new TypeError(\"url.pathname cannot be empty\");\n\t\t}\n\n\t\tif (url.protocol !== \"file:\") {\n\t\t\tthrow new TypeError(`url.protocol must be \"file:\"`);\n\t\t}\n\n\t\t// Remove leading slash in pathname\n\t\treturn new Path(normalizePath(url.pathname.slice(1)).split(\"/\"));\n\t}\n}\n", "/**\n * @fileoverview Common error classes\n * @author Nicholas C. Zakas\n */\n\n/**\n * Error thrown when a file or directory is not found.\n */\nexport class NotFoundError extends Error {\n\t/**\n\t * Name of the error class.\n\t * @type {string}\n\t */\n\tname = \"NotFoundError\";\n\n\t/**\n\t * Error code.\n\t * @type {string}\n\t */\n\tcode = \"ENOENT\";\n\n\t/**\n\t * Creates a new instance.\n\t * @param {string} message The error message.\n\t */\n\tconstructor(message) {\n\t\tsuper(`ENOENT: No such file or directory, ${message}`);\n\t}\n}\n\n/**\n * Error thrown when an operation is not permitted.\n */\nexport class PermissionError extends Error {\n\t/**\n\t * Name of the error class.\n\t * @type {string}\n\t */\n\tname = \"PermissionError\";\n\n\t/**\n\t * Error code.\n\t * @type {string}\n\t */\n\tcode = \"EPERM\";\n\n\t/**\n\t * Creates a new instance.\n\t * @param {string} message The error message.\n\t */\n\tconstructor(message) {\n\t\tsuper(`EPERM: Operation not permitted, ${message}`);\n\t}\n}\n\n/**\n * Error thrown when an operation is not allowed on a directory.\n */\n\nexport class DirectoryError extends Error {\n\t/**\n\t * Name of the error class.\n\t * @type {string}\n\t */\n\tname = \"DirectoryError\";\n\n\t/**\n\t * Error code.\n\t * @type {string}\n\t */\n\tcode = \"EISDIR\";\n\n\t/**\n\t * Creates a new instance.\n\t * @param {string} message The error message.\n\t */\n\tconstructor(message) {\n\t\tsuper(`EISDIR: Illegal operation on a directory, ${message}`);\n\t}\n}\n\n/**\n * Error thrown when a directory is not empty.\n */\nexport class NotEmptyError extends Error {\n\t/**\n\t * Name of the error class.\n\t * @type {string}\n\t */\n\tname = \"NotEmptyError\";\n\n\t/**\n\t * Error code.\n\t * @type {string}\n\t */\n\tcode = \"ENOTEMPTY\";\n\n\t/**\n\t * Creates a new instance.\n\t * @param {string} message The error message.\n\t */\n\tconstructor(message) {\n\t\tsuper(`ENOTEMPTY: Directory not empty, ${message}`);\n\t}\n}\n", "/**\n * @fileoverview API entrypoint for hfs/core\n * @author Nicholas C. Zakas\n */\n\nexport { Hfs } from \"./hfs.js\";\nexport { Path } from \"./path.js\";\nexport * from \"./errors.js\";\n", "// @ts-self-types=\"./retrier.d.ts\"\n/**\n * @fileoverview A utility for retrying failed async method calls.\n */\n\n/* global setTimeout, clearTimeout */\n\n//-----------------------------------------------------------------------------\n// Constants\n//-----------------------------------------------------------------------------\n\nconst MAX_TASK_TIMEOUT = 60000;\nconst MAX_TASK_DELAY = 100;\nconst MAX_CONCURRENCY = 1000;\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\n/**\n * Logs a message to the console if the DEBUG environment variable is set.\n * @param {string} message The message to log.\n * @returns {void}\n */\nfunction debug(message) {\n    if (globalThis?.process?.env.DEBUG === \"@hwc/retry\") {\n        console.debug(message);\n    }\n}\n\n/*\n * The following logic has been extracted from graceful-fs.\n *\n * The ISC License\n *\n * Copyright (c) 2011-2023 Isaac Z. Schlueter, Ben Noordhuis, and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Checks if it is time to retry a task based on the timestamp and last attempt time.\n * @param {RetryTask} task The task to check.\n * @param {number} maxDelay The maximum delay for the queue.\n * @returns {boolean} true if it is time to retry, false otherwise.\n */\nfunction isTimeToRetry(task, maxDelay) {\n    const timeSinceLastAttempt = Date.now() - task.lastAttempt;\n    const timeSinceStart = Math.max(task.lastAttempt - task.timestamp, 1);\n    const desiredDelay = Math.min(timeSinceStart * 1.2, maxDelay);\n\n    return timeSinceLastAttempt >= desiredDelay;\n}\n\n/**\n * Checks if it is time to bail out based on the given timestamp.\n * @param {RetryTask} task The task to check.\n * @param {number} timeout The timeout for the queue.\n * @returns {boolean} true if it is time to bail, false otherwise.\n */\nfunction isTimeToBail(task, timeout) {\n    return task.age > timeout;\n}\n\n/**\n * Creates a new promise with resolve and reject functions.\n * @returns {{promise:Promise<any>, resolve:(value:any) => any, reject: (value:any) => any}} A new promise.\n */\nfunction createPromise() {\n    if (Promise.withResolvers) {\n        return Promise.withResolvers();\n    }\n\n    let resolve, reject;\n\n    const promise = new Promise((res, rej) => {\n        resolve = res;\n        reject = rej;\n    });\n\n    if (resolve === undefined || reject === undefined) {\n        throw new Error(\"Promise executor did not initialize resolve or reject.\");\n    }\n\n    return { promise, resolve, reject };\n}\n\n\n/**\n * A class to represent a task in the retry queue.\n */\nclass RetryTask {\n\n    /**\n     * The unique ID for the task.\n     * @type {string}\n     */\n    id = Math.random().toString(36).slice(2);\n\n    /**\n     * The function to call.\n     * @type {Function}\n     */\n    fn;\n\n    /**\n     * The error that was thrown.\n     * @type {Error}\n     */\n    error;\n    \n    /**\n     * The timestamp of the task.\n     * @type {number}\n     */\n    timestamp = Date.now();\n\n    /**\n     * The timestamp of the last attempt.\n     * @type {number}\n     */\n    lastAttempt = this.timestamp;\n\n    /**\n     * The resolve function for the promise.\n     * @type {Function}\n     */\n    resolve;\n\n    /**\n     * The reject function for the promise.\n     * @type {Function}\n     */\n    reject;\n\n    /**\n     * The AbortSignal to monitor for cancellation.\n     * @type {AbortSignal|undefined}\n     */\n    signal;\n\n    /**\n     * Creates a new instance.\n     * @param {Function} fn The function to call.\n     * @param {Error} error The error that was thrown.\n     * @param {Function} resolve The resolve function for the promise.\n     * @param {Function} reject The reject function for the promise.\n     * @param {AbortSignal|undefined} signal The AbortSignal to monitor for cancellation.\n     */\n    constructor(fn, error, resolve, reject, signal) {\n        this.fn = fn;\n        this.error = error;\n        this.timestamp = Date.now();\n        this.lastAttempt = Date.now();\n        this.resolve = resolve;\n        this.reject = reject;\n        this.signal = signal;\n    }\n    \n    /**\n     * Gets the age of the task.\n     * @returns {number} The age of the task in milliseconds.\n     * @readonly\n     */\n    get age() {\n        return Date.now() - this.timestamp;\n    }\n}\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * A class that manages a queue of retry jobs.\n */\nclass Retrier {\n\n    /**\n     * Represents the queue for processing tasks.\n     * @type {Array<RetryTask>}\n     */\n    #retrying = [];\n\n    /**\n     * Represents the queue for pending tasks.\n     * @type {Array<Function>}\n     */\n    #pending = [];\n\n    /**\n     * The number of tasks currently being processed.\n     * @type {number}\n     */\n    #working = 0;\n\n    /**\n     * The timeout for the queue.\n     * @type {number}\n     */\n    #timeout;\n\n    /**\n     * The maximum delay for the queue.\n     * @type {number}\n     */\n    #maxDelay;\n\n    /**\n     * The setTimeout() timer ID.\n     * @type {NodeJS.Timeout|undefined}\n     */\n    #timerId;\n\n    /**\n     * The function to call.\n     * @type {Function}\n     */\n    #check;\n\n    /**\n     * The maximum number of concurrent tasks.\n     * @type {number}\n     */\n    #concurrency;\n\n    /**\n     * Creates a new instance.\n     * @param {Function} check The function to call.\n     * @param {object} [options] The options for the instance.\n     * @param {number} [options.timeout] The timeout for the queue.\n     * @param {number} [options.maxDelay] The maximum delay for the queue.\n     * @param {number} [options.concurrency] The maximum number of concurrent tasks.\n     */\n    constructor(check, { timeout = MAX_TASK_TIMEOUT, maxDelay = MAX_TASK_DELAY, concurrency = MAX_CONCURRENCY } = {}) {\n\n        if (typeof check !== \"function\") {\n            throw new Error(\"Missing function to check errors\");\n        }\n\n        this.#check = check;\n        this.#timeout = timeout;\n        this.#maxDelay = maxDelay;\n        this.#concurrency = concurrency;\n    }\n\n    /**\n     * Gets the number of tasks waiting to be retried.\n     * @returns {number} The number of tasks in the retry queue.\n     */\n    get retrying() {\n        return this.#retrying.length;\n    }\n\n    /**\n     * Gets the number of tasks waiting to be processed in the pending queue.\n     * @returns {number} The number of tasks in the pending queue.\n     */\n    get pending() {\n        return this.#pending.length;\n    }\n\n    /**\n     * Gets the number of tasks currently being processed.\n     * @returns {number} The number of tasks currently being processed.\n     */\n    get working() {\n        return this.#working;\n    }\n\n    /**\n     * Calls the function and retries if it fails.\n     * @param {Function} fn The function to call.\n     * @param {Object} options The options for the job.\n     * @param {AbortSignal} [options.signal] The AbortSignal to monitor for cancellation.\n     * @param {Promise<any>} options.promise The promise to return when the function settles.\n     * @param {Function} options.resolve The resolve function for the promise.\n     * @param {Function} options.reject The reject function for the promise.\n     * @returns {Promise<any>} A promise that resolves when the function is\n     * called successfully.\n     */\n    #call(fn, { signal, promise, resolve, reject }) {\n\n        let result;\n\n        try {\n            result = fn();\n        } catch (/** @type {any} */ error) {\n            reject(new Error(`Synchronous error: ${error.message}`, { cause: error }));\n            return promise;\n        }\n\n        // if the result is not a promise then reject an error\n        if (!result || typeof result.then !== \"function\") {\n            reject(new Error(\"Result is not a promise.\"));\n            return promise;\n        }\n\n        this.#working++;\n        promise.finally(() => {\n            this.#working--;\n            this.#processPending();\n        })\n        // `promise.finally` creates a new promise that may be rejected, so it must be handled.\n            .catch(() => { });\n\n        // call the original function and catch any ENFILE or EMFILE errors\n        Promise.resolve(result)\n            .then(value => {\n                debug(\"Function called successfully without retry.\");\n                resolve(value);\n            })\n            .catch(error => {\n                if (!this.#check(error)) {\n                    reject(error);\n                    return;\n                }\n\n                const task = new RetryTask(fn, error, resolve, reject, signal);\n                \n                debug(`Function failed, queuing for retry with task ${task.id}.`);\n                this.#retrying.push(task);\n\n                signal?.addEventListener(\"abort\", () => {\n                    debug(`Task ${task.id} was aborted due to AbortSignal.`);\n                    reject(signal.reason);\n                });\n\n                this.#processQueue();\n            });\n        \n        return promise;\n    }\n\n    /**\n     * Adds a new retry job to the queue.\n     * @template {(...args: unknown[]) => Promise<unknown>} Func\n     * @template {Awaited<ReturnType<Func>>} RetVal\n     * @param {Func} fn The function to call.\n     * @param {object} [options] The options for the job.\n     * @param {AbortSignal} [options.signal] The AbortSignal to monitor for cancellation.\n     * @returns {Promise<RetVal>} A promise that resolves when the queue is processed.\n     */\n    retry(fn, { signal } = {}) {\n\n        signal?.throwIfAborted();\n\n        const { promise, resolve, reject } = createPromise();\n\n        this.#pending.push(() => this.#call(fn, { signal, promise, resolve, reject }));\n        this.#processPending();\n        \n        return promise;\n    }\n\n\n    /**\n     * Processes the pending queue and the retry queue.\n     * @returns {void}\n     */\n    #processAll() {\n        if (this.pending) {\n            this.#processPending();\n        }\n\n        if (this.retrying) {\n            this.#processQueue();\n        }\n    }\n\n    /**\n     * Processes the pending queue to see which tasks can be started.\n     * @returns {void}\n     */\n    #processPending() {\n\n        debug(`Processing pending tasks: ${this.pending} pending, ${this.working} working.`);\n\n        const available = this.#concurrency - this.working;\n\n        if (available <= 0) {\n            return;\n        }\n\n        const count = Math.min(this.pending, available);\n\n        for (let i = 0; i < count; i++) {\n            const task = this.#pending.shift();\n            task?.();\n        }\n\n        debug(`Processed pending tasks: ${this.pending} pending, ${this.working} working.`);\n    }\n\n    /**\n     * Processes the queue.\n     * @returns {void}\n     */\n    #processQueue() {\n        // clear any timer because we're going to check right now\n        clearTimeout(this.#timerId);\n        this.#timerId = undefined;\n\n        debug(`Processing retry queue: ${this.retrying} retrying, ${this.working} working.`);\n\n        const processAgain = () => {\n            this.#timerId = setTimeout(() => this.#processAll(), 0);\n        };\n\n        // if there's nothing in the queue, we're done\n        const task = this.#retrying.shift();\n        if (!task) {\n            debug(\"Queue is empty, exiting.\");\n\n            if (this.pending) {\n                processAgain();\n            }\n            return;\n        }\n\n        // if it's time to bail, then bail\n        if (isTimeToBail(task, this.#timeout)) {\n            debug(`Task ${task.id} was abandoned due to timeout.`);\n            task.reject(task.error);\n            processAgain();\n            return;\n        }\n\n        // if it's not time to retry, then wait and try again\n        if (!isTimeToRetry(task, this.#maxDelay)) {\n            debug(`Task ${task.id} is not ready to retry, skipping.`);\n            this.#retrying.push(task);\n            processAgain();\n            return;\n        }\n\n        // otherwise, try again\n        task.lastAttempt = Date.now();\n        \n        // Promise.resolve needed in case it's a thenable but not a Promise\n        Promise.resolve(task.fn())\n            // @ts-ignore because we know it's any\n            .then(result => {\n                debug(`Task ${task.id} succeeded after ${task.age}ms.`);\n                task.resolve(result);\n            })\n\n            // @ts-ignore because we know it's any\n            .catch(error => {\n                if (!this.#check(error)) {\n                    debug(`Task ${task.id} failed with non-retryable error: ${error.message}.`);\n                    task.reject(error);\n                    return;\n                }\n\n                // update the task timestamp and push to back of queue to try again\n                task.lastAttempt = Date.now();\n                this.#retrying.push(task);\n                debug(`Task ${task.id} failed, requeueing to try again.`);\n            })\n            .finally(() => {\n                this.#processAll();\n            });\n    }\n}\n\nexport { Retrier };\n", "/**\n * @fileoverview The main file for the hfs package.\n * @author Nicholas C. Zakas\n */\n/* global Buffer:readonly, URL */\n\n//-----------------------------------------------------------------------------\n// Types\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"@humanfs/types\").HfsImpl} HfsImpl */\n/** @typedef {import(\"@humanfs/types\").HfsDirectoryEntry} HfsDirectoryEntry */\n/** @typedef {import(\"node:fs/promises\")} Fsp */\n/** @typedef {import(\"fs\").Dirent} Dirent */\n\n//-----------------------------------------------------------------------------\n// Imports\n//-----------------------------------------------------------------------------\n\nimport { Hfs } from \"@humanfs/core\";\nimport path from \"node:path\";\nimport { Retrier } from \"@humanwhocodes/retry\";\nimport nativeFsp from \"node:fs/promises\";\nimport { fileURLToPath } from \"node:url\";\n\n//-----------------------------------------------------------------------------\n// Constants\n//-----------------------------------------------------------------------------\n\nconst RETRY_ERROR_CODES = new Set([\"ENFILE\", \"EMFILE\"]);\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\n/**\n * A class representing a directory entry.\n * @implements {HfsDirectoryEntry}\n */\nclass NodeHfsDirectoryEntry {\n\t/**\n\t * The name of the directory entry.\n\t * @type {string}\n\t */\n\tname;\n\n\t/**\n\t * True if the entry is a file.\n\t * @type {boolean}\n\t */\n\tisFile;\n\n\t/**\n\t * True if the entry is a directory.\n\t * @type {boolean}\n\t */\n\tisDirectory;\n\n\t/**\n\t * True if the entry is a symbolic link.\n\t * @type {boolean}\n\t */\n\tisSymlink;\n\n\t/**\n\t * Creates a new instance.\n\t * @param {Dirent} dirent The directory entry to wrap.\n\t */\n\tconstructor(dirent) {\n\t\tthis.name = dirent.name;\n\t\tthis.isFile = dirent.isFile();\n\t\tthis.isDirectory = dirent.isDirectory();\n\t\tthis.isSymlink = dirent.isSymbolicLink();\n\t}\n}\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * A class representing the Node.js implementation of Hfs.\n * @implements {HfsImpl}\n */\nexport class NodeHfsImpl {\n\t/**\n\t * The file system module to use.\n\t * @type {Fsp}\n\t */\n\t#fsp;\n\n\t/**\n\t * The retryer object used for retrying operations.\n\t * @type {Retrier}\n\t */\n\t#retrier;\n\n\t/**\n\t * Creates a new instance.\n\t * @param {object} [options] The options for the instance.\n\t * @param {Fsp} [options.fsp] The file system module to use.\n\t */\n\tconstructor({ fsp = nativeFsp } = {}) {\n\t\tthis.#fsp = fsp;\n\t\tthis.#retrier = new Retrier(error => RETRY_ERROR_CODES.has(error.code));\n\t}\n\n\t/**\n\t * Reads a file and returns the contents as an Uint8Array.\n\t * @param {string|URL} filePath The path to the file to read.\n\t * @returns {Promise<Uint8Array|undefined>} A promise that resolves with the contents\n\t *    of the file or undefined if the file doesn't exist.\n\t * @throws {Error} If the file cannot be read.\n\t * @throws {TypeError} If the file path is not a string.\n\t */\n\tbytes(filePath) {\n\t\treturn this.#retrier\n\t\t\t.retry(() => this.#fsp.readFile(filePath))\n\t\t\t.then(buffer => new Uint8Array(buffer.buffer))\n\t\t\t.catch(error => {\n\t\t\t\tif (error.code === \"ENOENT\") {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\n\t/**\n\t * Writes a value to a file. If the value is a string, UTF-8 encoding is used.\n\t * @param {string|URL} filePath The path to the file to write.\n\t * @param {Uint8Array} contents The contents to write to the\n\t *   file.\n\t * @returns {Promise<void>} A promise that resolves when the file is\n\t *  written.\n\t * @throws {TypeError} If the file path is not a string.\n\t * @throws {Error} If the file cannot be written.\n\t */\n\tasync write(filePath, contents) {\n\t\tconst value = Buffer.from(contents);\n\n\t\treturn this.#retrier\n\t\t\t.retry(() => this.#fsp.writeFile(filePath, value))\n\t\t\t.catch(error => {\n\t\t\t\t// the directory may not exist, so create it\n\t\t\t\tif (error.code === \"ENOENT\") {\n\t\t\t\t\tconst dirPath = path.dirname(\n\t\t\t\t\t\tfilePath instanceof URL\n\t\t\t\t\t\t\t? fileURLToPath(filePath)\n\t\t\t\t\t\t\t: filePath,\n\t\t\t\t\t);\n\n\t\t\t\t\treturn this.#fsp\n\t\t\t\t\t\t.mkdir(dirPath, { recursive: true })\n\t\t\t\t\t\t.then(() => this.#fsp.writeFile(filePath, value));\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\n\t/**\n\t * Appends a value to a file. If the value is a string, UTF-8 encoding is used.\n\t * @param {string|URL} filePath The path to the file to append to.\n\t * @param {Uint8Array} contents The contents to append to the\n\t *  file.\n\t * @returns {Promise<void>} A promise that resolves when the file is\n\t * written.\n\t * @throws {TypeError} If the file path is not a string.\n\t * @throws {Error} If the file cannot be appended to.\n\t */\n\tasync append(filePath, contents) {\n\t\tconst value = Buffer.from(contents);\n\n\t\treturn this.#retrier\n\t\t\t.retry(() => this.#fsp.appendFile(filePath, value))\n\t\t\t.catch(error => {\n\t\t\t\t// the directory may not exist, so create it\n\t\t\t\tif (error.code === \"ENOENT\") {\n\t\t\t\t\tconst dirPath = path.dirname(\n\t\t\t\t\t\tfilePath instanceof URL\n\t\t\t\t\t\t\t? fileURLToPath(filePath)\n\t\t\t\t\t\t\t: filePath,\n\t\t\t\t\t);\n\n\t\t\t\t\treturn this.#fsp\n\t\t\t\t\t\t.mkdir(dirPath, { recursive: true })\n\t\t\t\t\t\t.then(() => this.#fsp.appendFile(filePath, value));\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\n\t/**\n\t * Checks if a file exists.\n\t * @param {string|URL} filePath The path to the file to check.\n\t * @returns {Promise<boolean>} A promise that resolves with true if the\n\t *    file exists or false if it does not.\n\t * @throws {Error} If the operation fails with a code other than ENOENT.\n\t */\n\tisFile(filePath) {\n\t\treturn this.#fsp\n\t\t\t.stat(filePath)\n\t\t\t.then(stat => stat.isFile())\n\t\t\t.catch(error => {\n\t\t\t\tif (error.code === \"ENOENT\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\n\t/**\n\t * Checks if a directory exists.\n\t * @param {string|URL} dirPath The path to the directory to check.\n\t * @returns {Promise<boolean>} A promise that resolves with true if the\n\t *    directory exists or false if it does not.\n\t * @throws {Error} If the operation fails with a code other than ENOENT.\n\t */\n\tisDirectory(dirPath) {\n\t\treturn this.#fsp\n\t\t\t.stat(dirPath)\n\t\t\t.then(stat => stat.isDirectory())\n\t\t\t.catch(error => {\n\t\t\t\tif (error.code === \"ENOENT\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\n\t/**\n\t * Creates a directory recursively.\n\t * @param {string|URL} dirPath The path to the directory to create.\n\t * @returns {Promise<void>} A promise that resolves when the directory is\n\t *   created.\n\t */\n\tasync createDirectory(dirPath) {\n\t\tawait this.#fsp.mkdir(dirPath, { recursive: true });\n\t}\n\n\t/**\n\t * Deletes a file or empty directory.\n\t * @param {string|URL} fileOrDirPath The path to the file or directory to\n\t *   delete.\n\t * @returns {Promise<boolean>} A promise that resolves when the file or\n\t *   directory is deleted, true if the file or directory is deleted, false\n\t *   if the file or directory does not exist.\n\t * @throws {TypeError} If the file or directory path is not a string.\n\t * @throws {Error} If the file or directory cannot be deleted.\n\t */\n\tdelete(fileOrDirPath) {\n\t\treturn this.#fsp\n\t\t\t.rm(fileOrDirPath)\n\t\t\t.then(() => true)\n\t\t\t.catch(error => {\n\t\t\t\tif (error.code === \"ERR_FS_EISDIR\") {\n\t\t\t\t\treturn this.#fsp.rmdir(fileOrDirPath).then(() => true);\n\t\t\t\t}\n\n\t\t\t\tif (error.code === \"ENOENT\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\n\t/**\n\t * Deletes a file or directory recursively.\n\t * @param {string|URL} fileOrDirPath The path to the file or directory to\n\t *   delete.\n\t * @returns {Promise<boolean>} A promise that resolves when the file or\n\t *   directory is deleted, true if the file or directory is deleted, false\n\t *   if the file or directory does not exist.\n\t * @throws {TypeError} If the file or directory path is not a string.\n\t * @throws {Error} If the file or directory cannot be deleted.\n\t */\n\tdeleteAll(fileOrDirPath) {\n\t\treturn this.#fsp\n\t\t\t.rm(fileOrDirPath, { recursive: true })\n\t\t\t.then(() => true)\n\t\t\t.catch(error => {\n\t\t\t\tif (error.code === \"ENOENT\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\n\t/**\n\t * Returns a list of directory entries for the given path.\n\t * @param {string|URL} dirPath The path to the directory to read.\n\t * @returns {AsyncIterable<HfsDirectoryEntry>} A promise that resolves with the\n\t *   directory entries.\n\t * @throws {TypeError} If the directory path is not a string.\n\t * @throws {Error} If the directory cannot be read.\n\t */\n\tasync *list(dirPath) {\n\t\tconst entries = await this.#fsp.readdir(dirPath, {\n\t\t\twithFileTypes: true,\n\t\t});\n\n\t\tfor (const entry of entries) {\n\t\t\tyield new NodeHfsDirectoryEntry(entry);\n\t\t}\n\t}\n\n\t/**\n\t * Returns the size of a file. This method handles ENOENT errors\n\t * and returns undefined in that case.\n\t * @param {string|URL} filePath The path to the file to read.\n\t * @returns {Promise<number|undefined>} A promise that resolves with the size of the\n\t *  file in bytes or undefined if the file doesn't exist.\n\t */\n\tsize(filePath) {\n\t\treturn this.#fsp\n\t\t\t.stat(filePath)\n\t\t\t.then(stat => stat.size)\n\t\t\t.catch(error => {\n\t\t\t\tif (error.code === \"ENOENT\") {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\n\t/**\n\t * Returns the last modified date of a file or directory. This method handles ENOENT errors\n\t * and returns undefined in that case.\n\t * @param {string|URL} fileOrDirPath The path to the file to read.\n\t * @returns {Promise<Date|undefined>} A promise that resolves with the last modified\n\t * date of the file or directory, or undefined if the file doesn't exist.\n\t */\n\tlastModified(fileOrDirPath) {\n\t\treturn this.#fsp\n\t\t\t.stat(fileOrDirPath)\n\t\t\t.then(stat => stat.mtime)\n\t\t\t.catch(error => {\n\t\t\t\tif (error.code === \"ENOENT\") {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\n\t/**\n\t * Copies a file from one location to another.\n\t * @param {string|URL} source The path to the file to copy.\n\t * @param {string|URL} destination The path to copy the file to.\n\t * @returns {Promise<void>} A promise that resolves when the file is copied.\n\t * @throws {Error} If the source file does not exist.\n\t * @throws {Error} If the source file is a directory.\n\t * @throws {Error} If the destination file is a directory.\n\t */\n\tasync copy(source, destination) {\n\t\tconst stat = await this.#fsp.lstat(source);\n\t\tif (stat.isSymbolicLink()) {\n\t\t\tconst target = await this.#fsp.readlink(source);\n\t\t\treturn this.#fsp.symlink(target, destination);\n\t\t}\n\t\treturn this.#fsp.copyFile(source, destination);\n\t}\n\n\t/**\n\t * Copies a file or directory from one location to another.\n\t * @param {string|URL} source The path to the file or directory to copy.\n\t * @param {string|URL} destination The path to copy the file or directory to.\n\t * @returns {Promise<void>} A promise that resolves when the file or directory is\n\t * copied.\n\t * @throws {Error} If the source file or directory does not exist.\n\t * @throws {Error} If the destination file or directory is a directory.\n\t */\n\tasync copyAll(source, destination) {\n\t\t// for files use copy() and exit\n\t\tif (await this.isFile(source)) {\n\t\t\treturn this.copy(source, destination);\n\t\t}\n\n\t\tconst sourceStr =\n\t\t\tsource instanceof URL ? fileURLToPath(source) : source;\n\n\t\tconst destinationStr =\n\t\t\tdestination instanceof URL\n\t\t\t\t? fileURLToPath(destination)\n\t\t\t\t: destination;\n\n\t\t// for directories, create the destination directory and copy each entry\n\t\tawait this.createDirectory(destination);\n\n\t\tfor await (const entry of this.list(source)) {\n\t\t\tconst fromEntryPath = path.join(sourceStr, entry.name);\n\t\t\tconst toEntryPath = path.join(destinationStr, entry.name);\n\n\t\t\tif (entry.isSymlink) {\n\t\t\t\tconst target = await this.#fsp.readlink(fromEntryPath);\n\t\t\t\tawait this.#fsp.symlink(target, toEntryPath);\n\t\t\t} else if (entry.isDirectory) {\n\t\t\t\tawait this.copyAll(fromEntryPath, toEntryPath);\n\t\t\t} else {\n\t\t\t\tawait this.copy(fromEntryPath, toEntryPath);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Moves a file from the source path to the destination path.\n\t * @param {string|URL} source The location of the file to move.\n\t * @param {string|URL} destination The destination of the file to move.\n\t * @returns {Promise<void>} A promise that resolves when the move is complete.\n\t * @throws {TypeError} If the file paths are not strings.\n\t * @throws {Error} If the file cannot be moved.\n\t */\n\tmove(source, destination) {\n\t\treturn this.#fsp.stat(source).then(stat => {\n\t\t\tif (stat.isDirectory()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`EISDIR: illegal operation on a directory, move '${source}' -> '${destination}'`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn this.#fsp.rename(source, destination);\n\t\t});\n\t}\n\n\t/**\n\t * Moves a file or directory from the source path to the destination path.\n\t * @param {string|URL} source The location of the file or directory to move.\n\t * @param {string|URL} destination The destination of the file or directory to move.\n\t * @returns {Promise<void>} A promise that resolves when the move is complete.\n\t * @throws {TypeError} If the file paths are not strings.\n\t * @throws {Error} If the file or directory cannot be moved.\n\t */\n\tasync moveAll(source, destination) {\n\t\treturn this.#fsp.rename(source, destination);\n\t}\n}\n\n/**\n * A class representing a file system utility library.\n * @implements {HfsImpl}\n */\nexport class NodeHfs extends Hfs {\n\t/**\n\t * Creates a new instance.\n\t * @param {object} [options] The options for the instance.\n\t * @param {Fsp} [options.fsp] The file system module to use.\n\t */\n\tconstructor({ fsp } = {}) {\n\t\tsuper({ impl: new NodeHfsImpl({ fsp }) });\n\t}\n}\n\nexport const hfs = new NodeHfs();\n", "/**\n * @fileoverview This file exports everything for this package.\n * @author Nicholas C. Zakas\n */\n\nexport * from \"./node-hfs.js\";\nexport { Hfs } from \"@humanfs/core\";\n", "/**\n * @fileoverview Helper functions for ESLint class\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Requirements\n//-----------------------------------------------------------------------------\n\nconst path = require(\"node:path\");\nconst fs = require(\"node:fs\");\nconst { isMainThread, threadId } = require(\"node:worker_threads\");\nconst fsp = fs.promises;\nconst isGlob = require(\"is-glob\");\nconst hash = require(\"../cli-engine/hash\");\nconst minimatch = require(\"minimatch\");\nconst globParent = require(\"glob-parent\");\nconst { Linter } = require(\"../linter\");\nconst { getShorthandName } = require(\"../shared/naming\");\nconst { calculateStatsPerFile } = require(\"../shared/message-counts\");\nconst LintResultCache = require(\"../cli-engine/lint-result-cache\");\nconst { ConfigLoader } = require(\"../config/config-loader\");\nconst createDebug = require(\"debug\");\nconst { SuppressionsService } = require(\"../services/suppressions-service.js\");\n\n//-----------------------------------------------------------------------------\n// Fixup references\n//-----------------------------------------------------------------------------\n\nconst Minimatch = minimatch.Minimatch;\nconst MINIMATCH_OPTIONS = { dot: true };\nconst hrtimeBigint = process.hrtime.bigint;\n\n//-----------------------------------------------------------------------------\n// Types\n//-----------------------------------------------------------------------------\n\n/**\n * @import { ESLintOptions } from \"./eslint.js\";\n * @import { Config as CalculatedConfig } from \"../config/config.js\";\n * @import { FlatConfigArray } from \"../config/flat-config-array.js\";\n * @import { WarningService } from \"../services/warning-service.js\";\n * @import { Retrier } from \"@humanwhocodes/retry\";\n */\n\n/** @typedef {import(\"../types\").Linter.Config} Config */\n/** @typedef {import(\"../types\").Linter.LintMessage} LintMessage */\n/** @typedef {import(\"../types\").ESLint.LintResult} LintResult */\n/** @typedef {import(\"../types\").ESLint.Plugin} Plugin */\n\n/**\n * @typedef {Object} GlobSearch\n * @property {Array<string>} patterns The normalized patterns to use for a search.\n * @property {Array<string>} rawPatterns The patterns as entered by the user\n *      before doing any normalization.\n */\n\n//------------------------------------------------------------------------------\n// Debug Helpers\n//------------------------------------------------------------------------------\n\n// Add %t formatter to print bigint nanosecond times in milliseconds.\ncreateDebug.formatters.t = timeDiff =>\n\t`${(timeDiff + 500_000n) / 1_000_000n} ms`;\n\nconst debug = createDebug(\n\t`eslint:eslint-helpers${isMainThread ? \"\" : `:thread-${threadId}`}`,\n);\n\n//-----------------------------------------------------------------------------\n// Errors\n//-----------------------------------------------------------------------------\n\n/**\n * The error type when no files match a glob.\n */\nclass NoFilesFoundError extends Error {\n\t/**\n\t * @param {string} pattern The glob pattern which was not found.\n\t * @param {boolean} globEnabled If `false` then the pattern was a glob pattern, but glob was disabled.\n\t */\n\tconstructor(pattern, globEnabled) {\n\t\tsuper(\n\t\t\t`No files matching '${pattern}' were found${!globEnabled ? \" (glob was disabled)\" : \"\"}.`,\n\t\t);\n\t\tthis.messageTemplate = \"file-not-found\";\n\t\tthis.messageData = { pattern, globDisabled: !globEnabled };\n\t}\n}\n\n/**\n * The error type when a search fails to match multiple patterns.\n */\nclass UnmatchedSearchPatternsError extends Error {\n\t/**\n\t * @param {Object} options The options for the error.\n\t * @param {string} options.basePath The directory that was searched.\n\t * @param {Array<string>} options.unmatchedPatterns The glob patterns\n\t *      which were not found.\n\t * @param {Array<string>} options.patterns The glob patterns that were\n\t *      searched.\n\t * @param {Array<string>} options.rawPatterns The raw glob patterns that\n\t *      were searched.\n\t */\n\tconstructor({ basePath, unmatchedPatterns, patterns, rawPatterns }) {\n\t\tsuper(\n\t\t\t`No files matching '${rawPatterns}' in '${basePath}' were found.`,\n\t\t);\n\t\tthis.basePath = basePath;\n\t\tthis.unmatchedPatterns = unmatchedPatterns;\n\t\tthis.patterns = patterns;\n\t\tthis.rawPatterns = rawPatterns;\n\t}\n}\n\n/**\n * The error type when there are files matched by a glob, but all of them have been ignored.\n */\nclass AllFilesIgnoredError extends Error {\n\t/**\n\t * @param {string} pattern The glob pattern which was not found.\n\t */\n\tconstructor(pattern) {\n\t\tsuper(`All files matched by '${pattern}' are ignored.`);\n\t\tthis.messageTemplate = \"all-matched-files-ignored\";\n\t\tthis.messageData = { pattern };\n\t}\n}\n\n//-----------------------------------------------------------------------------\n// General Helpers\n//-----------------------------------------------------------------------------\n\n/**\n * Check if a given value is a non-empty string or not.\n * @param {any} value The value to check.\n * @returns {boolean} `true` if `value` is a non-empty string.\n */\nfunction isNonEmptyString(value) {\n\treturn typeof value === \"string\" && value.trim() !== \"\";\n}\n\n/**\n * Check if a given value is an array of non-empty strings or not.\n * @param {any} value The value to check.\n * @returns {boolean} `true` if `value` is an array of non-empty strings.\n */\nfunction isArrayOfNonEmptyString(value) {\n\treturn (\n\t\tArray.isArray(value) && !!value.length && value.every(isNonEmptyString)\n\t);\n}\n\n/**\n * Check if a given value is an empty array or an array of non-empty strings.\n * @param {any} value The value to check.\n * @returns {boolean} `true` if `value` is an empty array or an array of non-empty\n *      strings.\n */\nfunction isEmptyArrayOrArrayOfNonEmptyString(value) {\n\treturn Array.isArray(value) && value.every(isNonEmptyString);\n}\n\n/**\n * Check if a given value is a positive integer.\n * @param {unknown} value The value to check.\n * @returns {boolean} `true` if `value` is a positive integer.\n */\nfunction isPositiveInteger(value) {\n\treturn Number.isInteger(value) && value > 0;\n}\n\n//-----------------------------------------------------------------------------\n// File-related Helpers\n//-----------------------------------------------------------------------------\n\n/**\n * Normalizes slashes in a file pattern to posix-style.\n * @param {string} pattern The pattern to replace slashes in.\n * @returns {string} The pattern with slashes normalized.\n */\nfunction normalizeToPosix(pattern) {\n\treturn pattern.replace(/\\\\/gu, \"/\");\n}\n\n/**\n * Check if a string is a glob pattern or not.\n * @param {string} pattern A glob pattern.\n * @returns {boolean} `true` if the string is a glob pattern.\n */\nfunction isGlobPattern(pattern) {\n\treturn isGlob(path.sep === \"\\\\\" ? normalizeToPosix(pattern) : pattern);\n}\n\n/**\n * Determines if a given glob pattern will return any results.\n * Used primarily to help with useful error messages.\n * @param {Object} options The options for the function.\n * @param {string} options.basePath The directory to search.\n * @param {string} options.pattern An absolute path glob pattern to match.\n * @returns {Promise<boolean>} True if there is a glob match, false if not.\n */\nasync function globMatch({ basePath, pattern }) {\n\tlet found = false;\n\tconst { hfs } = await import(\"@humanfs/node\");\n\tconst patternToUse = normalizeToPosix(path.relative(basePath, pattern));\n\n\tconst matcher = new Minimatch(patternToUse, MINIMATCH_OPTIONS);\n\n\tconst walkSettings = {\n\t\tdirectoryFilter(entry) {\n\t\t\treturn !found && matcher.match(entry.path, true);\n\t\t},\n\n\t\tentryFilter(entry) {\n\t\t\tif (found || entry.isDirectory) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (matcher.match(entry.path)) {\n\t\t\t\tfound = true;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t};\n\n\tif (await hfs.isDirectory(basePath)) {\n\t\treturn hfs\n\t\t\t.walk(basePath, walkSettings)\n\t\t\t.next()\n\t\t\t.then(() => found);\n\t}\n\n\treturn found;\n}\n\n/**\n * Searches a directory looking for matching glob patterns. This uses\n * the config array's logic to determine if a directory or file should\n * be ignored, so it is consistent with how ignoring works throughout\n * ESLint.\n * @param {Object} options The options for this function.\n * @param {string} options.basePath The directory to search.\n * @param {Array<string>} options.patterns An array of absolute path glob patterns\n *      to match.\n * @param {Array<string>} options.rawPatterns An array of glob patterns\n *      as the user inputted them. Used for errors.\n * @param {ConfigLoader} options.configLoader The config array to use for\n *      determining what to ignore.\n * @param {boolean} options.errorOnUnmatchedPattern Determines if an error\n *      should be thrown when a pattern is unmatched.\n * @returns {Promise<Array<string>>} An array of matching file paths\n *      or an empty array if there are no matches.\n * @throws {UnmatchedSearchPatternsError} If there is a pattern that doesn't\n *      match any files.\n */\nasync function globSearch({\n\tbasePath,\n\tpatterns,\n\trawPatterns,\n\tconfigLoader,\n\terrorOnUnmatchedPattern,\n}) {\n\tif (patterns.length === 0) {\n\t\treturn [];\n\t}\n\n\t/*\n\t * In this section we are converting the patterns into Minimatch\n\t * instances for performance reasons. Because we are doing the same\n\t * matches repeatedly, it's best to compile those patterns once and\n\t * reuse them multiple times.\n\t *\n\t * To do that, we convert any patterns with an absolute path into a\n\t * relative path and normalize it to Posix-style slashes. We also keep\n\t * track of the relative patterns to map them back to the original\n\t * patterns, which we need in order to throw an error if there are any\n\t * unmatched patterns.\n\t */\n\tconst relativeToPatterns = new Map();\n\tconst matchers = patterns.map((pattern, i) => {\n\t\tconst patternToUse = normalizeToPosix(path.relative(basePath, pattern));\n\n\t\trelativeToPatterns.set(patternToUse, patterns[i]);\n\n\t\treturn new Minimatch(patternToUse, MINIMATCH_OPTIONS);\n\t});\n\n\t/*\n\t * We track unmatched patterns because we may want to throw an error when\n\t * they occur. To start, this set is initialized with all of the patterns.\n\t * Every time a match occurs, the pattern is removed from the set, making\n\t * it easy to tell if we have any unmatched patterns left at the end of\n\t * search.\n\t */\n\tconst unmatchedPatterns = new Set([...relativeToPatterns.keys()]);\n\tconst { hfs } = await import(\"@humanfs/node\");\n\n\tconst walk = hfs.walk(basePath, {\n\t\tasync directoryFilter(entry) {\n\t\t\tif (!matchers.some(matcher => matcher.match(entry.path, true))) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst absolutePath = path.resolve(basePath, entry.path);\n\t\t\tconst configs =\n\t\t\t\tawait configLoader.loadConfigArrayForDirectory(absolutePath);\n\n\t\t\treturn !configs.isDirectoryIgnored(absolutePath);\n\t\t},\n\t\tasync entryFilter(entry) {\n\t\t\tconst absolutePath = path.resolve(basePath, entry.path);\n\n\t\t\t// entries may be directories or files so filter out directories\n\t\t\tif (entry.isDirectory) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst configs =\n\t\t\t\tawait configLoader.loadConfigArrayForFile(absolutePath);\n\t\t\tconst config = configs.getConfig(absolutePath);\n\n\t\t\t/*\n\t\t\t * Optimization: We need to track when patterns are left unmatched\n\t\t\t * and so we use `unmatchedPatterns` to do that. There is a bit of\n\t\t\t * complexity here because the same file can be matched by more than\n\t\t\t * one pattern. So, when we start, we actually need to test every\n\t\t\t * pattern against every file. Once we know there are no remaining\n\t\t\t * unmatched patterns, then we can switch to just looking for the\n\t\t\t * first matching pattern for improved speed.\n\t\t\t */\n\t\t\tconst matchesPattern =\n\t\t\t\tunmatchedPatterns.size > 0\n\t\t\t\t\t? matchers.reduce((previousValue, matcher) => {\n\t\t\t\t\t\t\tconst pathMatches = matcher.match(entry.path);\n\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * We updated the unmatched patterns set only if the path\n\t\t\t\t\t\t\t * matches and the file has a config. If the file has no\n\t\t\t\t\t\t\t * config, that means there wasn't a match for the\n\t\t\t\t\t\t\t * pattern so it should not be removed.\n\t\t\t\t\t\t\t *\n\t\t\t\t\t\t\t * Performance note: `getConfig()` aggressively caches\n\t\t\t\t\t\t\t * results so there is no performance penalty for calling\n\t\t\t\t\t\t\t * it multiple times with the same argument.\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tif (pathMatches && config) {\n\t\t\t\t\t\t\t\tunmatchedPatterns.delete(matcher.pattern);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn pathMatches || previousValue;\n\t\t\t\t\t\t}, false)\n\t\t\t\t\t: matchers.some(matcher => matcher.match(entry.path));\n\n\t\t\treturn matchesPattern && config !== void 0;\n\t\t},\n\t});\n\n\tconst filePaths = [];\n\n\tif (await hfs.isDirectory(basePath)) {\n\t\tfor await (const entry of walk) {\n\t\t\tfilePaths.push(path.resolve(basePath, entry.path));\n\t\t}\n\t}\n\n\t// now check to see if we have any unmatched patterns\n\tif (errorOnUnmatchedPattern && unmatchedPatterns.size > 0) {\n\t\tthrow new UnmatchedSearchPatternsError({\n\t\t\tbasePath,\n\t\t\tunmatchedPatterns: [...unmatchedPatterns].map(pattern =>\n\t\t\t\trelativeToPatterns.get(pattern),\n\t\t\t),\n\t\t\tpatterns,\n\t\t\trawPatterns,\n\t\t});\n\t}\n\n\treturn filePaths;\n}\n\n/**\n * Throws an error for unmatched patterns. The error will only contain information about the first one.\n * Checks to see if there are any ignored results for a given search.\n * @param {Object} options The options for this function.\n * @param {string} options.basePath The directory to search.\n * @param {Array<string>} options.patterns An array of glob patterns\n *      that were used in the original search.\n * @param {Array<string>} options.rawPatterns An array of glob patterns\n *      as the user inputted them. Used for errors.\n * @param {Array<string>} options.unmatchedPatterns A non-empty array of absolute path glob patterns\n *      that were unmatched in the original search.\n * @returns {Promise<never>} Always throws an error.\n * @throws {NoFilesFoundError} If the first unmatched pattern\n *      doesn't match any files even when there are no ignores.\n * @throws {AllFilesIgnoredError} If the first unmatched pattern\n *      matches some files when there are no ignores.\n */\nasync function throwErrorForUnmatchedPatterns({\n\tbasePath,\n\tpatterns,\n\trawPatterns,\n\tunmatchedPatterns,\n}) {\n\tconst pattern = unmatchedPatterns[0];\n\tconst rawPattern = rawPatterns[patterns.indexOf(pattern)];\n\n\tconst patternHasMatch = await globMatch({\n\t\tbasePath,\n\t\tpattern,\n\t});\n\n\tif (patternHasMatch) {\n\t\tthrow new AllFilesIgnoredError(rawPattern);\n\t}\n\n\t// if we get here there are truly no matches\n\tthrow new NoFilesFoundError(rawPattern, true);\n}\n\n/**\n * Performs multiple glob searches in parallel.\n * @param {Object} options The options for this function.\n * @param {Map<string,GlobSearch>} options.searches\n *      A map of absolute path glob patterns to match.\n * @param {ConfigLoader} options.configLoader The config loader to use for\n *      determining what to ignore.\n * @param {boolean} options.errorOnUnmatchedPattern Determines if an\n *      unmatched glob pattern should throw an error.\n * @returns {Promise<Array<string>>} An array of matching file paths\n *      or an empty array if there are no matches.\n */\nasync function globMultiSearch({\n\tsearches,\n\tconfigLoader,\n\terrorOnUnmatchedPattern,\n}) {\n\t/*\n\t * For convenience, we normalized the search map into an array of objects.\n\t * Next, we filter out all searches that have no patterns. This happens\n\t * primarily for the cwd, which is prepopulated in the searches map as an\n\t * optimization. However, if it has no patterns, it means all patterns\n\t * occur outside of the cwd and we can safely filter out that search.\n\t */\n\tconst normalizedSearches = [...searches]\n\t\t.map(([basePath, { patterns, rawPatterns }]) => ({\n\t\t\tbasePath,\n\t\t\tpatterns,\n\t\t\trawPatterns,\n\t\t}))\n\t\t.filter(({ patterns }) => patterns.length > 0);\n\n\tconst results = await Promise.allSettled(\n\t\tnormalizedSearches.map(({ basePath, patterns, rawPatterns }) =>\n\t\t\tglobSearch({\n\t\t\t\tbasePath,\n\t\t\t\tpatterns,\n\t\t\t\trawPatterns,\n\t\t\t\tconfigLoader,\n\t\t\t\terrorOnUnmatchedPattern,\n\t\t\t}),\n\t\t),\n\t);\n\n\t/*\n\t * The first loop handles errors from the glob searches. Since we can't\n\t * use `await` inside `flatMap`, we process errors separately in this loop.\n\t * This results in two iterations over `results`, but since the length is\n\t * less than or equal to the number of globs and directories passed on the\n\t * command line, the performance impact should be minimal.\n\t */\n\tfor (let i = 0; i < results.length; i++) {\n\t\tconst result = results[i];\n\t\tconst currentSearch = normalizedSearches[i];\n\n\t\tif (result.status === \"fulfilled\") {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// if we make it here then there was an error\n\t\tconst error = result.reason;\n\n\t\t// unexpected errors should be re-thrown\n\t\tif (!error.basePath) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (errorOnUnmatchedPattern) {\n\t\t\tawait throwErrorForUnmatchedPatterns({\n\t\t\t\t...currentSearch,\n\t\t\t\tunmatchedPatterns: error.unmatchedPatterns,\n\t\t\t});\n\t\t}\n\t}\n\n\t// second loop for `fulfilled` results\n\treturn results.flatMap(result => result.value);\n}\n\n/**\n * Finds all files matching the options specified.\n * @param {Object} args The arguments objects.\n * @param {Array<string>} args.patterns An array of glob patterns.\n * @param {boolean} args.globInputPaths true to interpret glob patterns,\n *      false to not interpret glob patterns.\n * @param {string} args.cwd The current working directory to find from.\n * @param {ConfigLoader} args.configLoader The config loader for the current run.\n * @param {boolean} args.errorOnUnmatchedPattern Determines if an unmatched pattern\n *      should throw an error.\n * @returns {Promise<Array<string>>} The fully resolved file paths.\n * @throws {AllFilesIgnoredError} If there are no results due to an ignore pattern.\n * @throws {NoFilesFoundError} If no files matched the given patterns.\n */\nasync function findFiles({\n\tpatterns,\n\tglobInputPaths,\n\tcwd,\n\tconfigLoader,\n\terrorOnUnmatchedPattern,\n}) {\n\tconst results = [];\n\tconst missingPatterns = [];\n\tlet globbyPatterns = [];\n\tlet rawPatterns = [];\n\tconst searches = new Map([\n\t\t[cwd, { patterns: globbyPatterns, rawPatterns: [] }],\n\t]);\n\n\t/*\n\t * This part is a bit involved because we need to account for\n\t * the different ways that the patterns can match directories.\n\t * For each different way, we need to decide if we should look\n\t * for a config file or just use the default config. (Directories\n\t * without a config file always use the default config.)\n\t *\n\t * Here are the cases:\n\t *\n\t * 1. A directory is passed directly (e.g., \"subdir\"). In this case, we\n\t * can assume that the user intends to lint this directory and we should\n\t * not look for a config file in the parent directory, because the only\n\t * reason to do that would be to ignore this directory (which we already\n\t * know we don't want to do). Instead, we use the default config until we\n\t * get to the directory that was passed, at which point we start looking\n\t * for config files again.\n\t *\n\t * 2. A dot (\".\") or star (\"*\"). In this case, we want to read\n\t * the config file in the current directory because the user is\n\t * explicitly asking to lint the current directory. Note that \".\"\n\t * will traverse into subdirectories while \"*\" will not.\n\t *\n\t * 3. A directory is passed in the form of \"subdir/subsubdir\".\n\t * In this case, we don't want to look for a config file in the\n\t * parent directory (\"subdir\"). We can skip looking for a config\n\t * file until `entry.depth` is greater than 1 because there's no\n\t * way that the pattern can match `entry.path` yet.\n\t *\n\t * 4. A directory glob pattern is passed (e.g., \"subd*\"). We want\n\t * this case to act like case 2 because it's unclear whether or not\n\t * any particular directory is meant to be traversed.\n\t *\n\t * 5. A recursive glob pattern is passed (e.g., \"**\"). We want this\n\t * case to act like case 2.\n\t */\n\n\t// check to see if we have explicit files and directories\n\tconst filePaths = patterns.map(filePath => path.resolve(cwd, filePath));\n\tconst stats = await Promise.all(\n\t\tfilePaths.map(filePath => fsp.stat(filePath).catch(() => {})),\n\t);\n\n\tconst promises = [];\n\tstats.forEach((stat, index) => {\n\t\tconst filePath = filePaths[index];\n\t\tconst pattern = normalizeToPosix(patterns[index]);\n\n\t\tif (stat) {\n\t\t\t// files are added directly to the list\n\t\t\tif (stat.isFile()) {\n\t\t\t\tresults.push(filePath);\n\t\t\t\tpromises.push(configLoader.loadConfigArrayForFile(filePath));\n\t\t\t}\n\n\t\t\t// directories need extensions attached\n\t\t\tif (stat.isDirectory()) {\n\t\t\t\tif (!searches.has(filePath)) {\n\t\t\t\t\tsearches.set(filePath, { patterns: [], rawPatterns: [] });\n\t\t\t\t}\n\t\t\t\t({ patterns: globbyPatterns, rawPatterns } =\n\t\t\t\t\tsearches.get(filePath));\n\n\t\t\t\tglobbyPatterns.push(`${normalizeToPosix(filePath)}/**`);\n\t\t\t\trawPatterns.push(pattern);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// save patterns for later use based on whether globs are enabled\n\t\tif (globInputPaths && isGlobPattern(pattern)) {\n\t\t\t/*\n\t\t\t * We are grouping patterns by their glob parent. This is done to\n\t\t\t * make it easier to determine when a config file should be loaded.\n\t\t\t */\n\n\t\t\tconst basePath = path.resolve(cwd, globParent(pattern));\n\n\t\t\tif (!searches.has(basePath)) {\n\t\t\t\tsearches.set(basePath, { patterns: [], rawPatterns: [] });\n\t\t\t}\n\t\t\t({ patterns: globbyPatterns, rawPatterns } =\n\t\t\t\tsearches.get(basePath));\n\n\t\t\tglobbyPatterns.push(filePath);\n\t\t\trawPatterns.push(pattern);\n\t\t} else {\n\t\t\tmissingPatterns.push(pattern);\n\t\t}\n\t});\n\n\t// there were patterns that didn't match anything, tell the user\n\tif (errorOnUnmatchedPattern && missingPatterns.length) {\n\t\tthrow new NoFilesFoundError(missingPatterns[0], globInputPaths);\n\t}\n\n\t// now we are safe to do the search\n\tpromises.push(\n\t\tglobMultiSearch({\n\t\t\tsearches,\n\t\t\tconfigLoader,\n\t\t\terrorOnUnmatchedPattern,\n\t\t}),\n\t);\n\tconst globbyResults = (await Promise.all(promises)).at(-1);\n\n\treturn [...new Set([...results, ...globbyResults])];\n}\n\n/**\n * Return the absolute path of a file named `\"__placeholder__.js\"` in a given directory.\n * This is used as a replacement for a missing file path.\n * @param {string} cwd An absolute directory path.\n * @returns {string} The absolute path of a file named `\"__placeholder__.js\"` in the given directory.\n */\nfunction getPlaceholderPath(cwd) {\n\treturn path.join(cwd, \"__placeholder__.js\");\n}\n\n//-----------------------------------------------------------------------------\n// Results-related Helpers\n//-----------------------------------------------------------------------------\n\n/**\n * Checks if the given message is an error message.\n * @param {LintMessage} message The message to check.\n * @returns {boolean} Whether or not the message is an error message.\n * @private\n */\nfunction isErrorMessage(message) {\n\treturn message.severity === 2;\n}\n\n/**\n * Returns result with warning by ignore settings\n * @param {string} filePath Absolute file path of checked code\n * @param {string} baseDir Absolute path of base directory\n * @param {\"ignored\"|\"external\"|\"unconfigured\"} configStatus A status that determines why the file is ignored\n * @returns {LintResult} Result with single warning\n * @private\n */\nfunction createIgnoreResult(filePath, baseDir, configStatus) {\n\tlet message;\n\n\tswitch (configStatus) {\n\t\tcase \"external\":\n\t\t\tmessage = \"File ignored because outside of base path.\";\n\t\t\tbreak;\n\t\tcase \"unconfigured\":\n\t\t\tmessage =\n\t\t\t\t\"File ignored because no matching configuration was supplied.\";\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t{\n\t\t\t\tconst isInNodeModules =\n\t\t\t\t\tbaseDir &&\n\t\t\t\t\tpath\n\t\t\t\t\t\t.dirname(path.relative(baseDir, filePath))\n\t\t\t\t\t\t.split(path.sep)\n\t\t\t\t\t\t.includes(\"node_modules\");\n\n\t\t\t\tif (isInNodeModules) {\n\t\t\t\t\tmessage =\n\t\t\t\t\t\t'File ignored by default because it is located under the node_modules directory. Use ignore pattern \"!**/node_modules/\" to disable file ignore settings or use \"--no-warn-ignored\" to suppress this warning.';\n\t\t\t\t} else {\n\t\t\t\t\tmessage =\n\t\t\t\t\t\t'File ignored because of a matching ignore pattern. Use \"--no-ignore\" to disable file ignore settings or use \"--no-warn-ignored\" to suppress this warning.';\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\treturn {\n\t\tfilePath,\n\t\tmessages: [\n\t\t\t{\n\t\t\t\truleId: null,\n\t\t\t\tfatal: false,\n\t\t\t\tseverity: 1,\n\t\t\t\tmessage,\n\t\t\t},\n\t\t],\n\t\tsuppressedMessages: [],\n\t\terrorCount: 0,\n\t\twarningCount: 1,\n\t\tfatalErrorCount: 0,\n\t\tfixableErrorCount: 0,\n\t\tfixableWarningCount: 0,\n\t};\n}\n\n//-----------------------------------------------------------------------------\n// Options-related Helpers\n//-----------------------------------------------------------------------------\n\n/**\n * Check if a given value is a valid fix type or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if `x` is valid fix type.\n */\nfunction isFixType(x) {\n\treturn (\n\t\tx === \"directive\" ||\n\t\tx === \"problem\" ||\n\t\tx === \"suggestion\" ||\n\t\tx === \"layout\"\n\t);\n}\n\n/**\n * Check if a given value is an array of fix types or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if `x` is an array of fix types.\n */\nfunction isFixTypeArray(x) {\n\treturn Array.isArray(x) && x.every(isFixType);\n}\n\n/**\n * The error for invalid options.\n */\nclass ESLintInvalidOptionsError extends Error {\n\tconstructor(messages) {\n\t\tsuper(`Invalid Options:\\n- ${messages.join(\"\\n- \")}`);\n\t\tthis.code = \"ESLINT_INVALID_OPTIONS\";\n\t\tError.captureStackTrace(this, ESLintInvalidOptionsError);\n\t}\n}\n\n/**\n * Validates and normalizes options for the wrapped CLIEngine instance.\n * @param {ESLintOptions} options The options to process.\n * @throws {ESLintInvalidOptionsError} If of any of a variety of type errors.\n * @returns {ESLintOptions} The normalized options.\n */\nfunction processOptions({\n\tallowInlineConfig = true, // \u2190 we cannot use `overrideConfig.noInlineConfig` instead because `allowInlineConfig` has side-effect that suppress warnings that show inline configs are ignored.\n\tbaseConfig = null,\n\tcache = false,\n\tcacheLocation = \".eslintcache\",\n\tcacheStrategy = \"metadata\",\n\tconcurrency = \"off\",\n\tcwd = process.cwd(),\n\terrorOnUnmatchedPattern = true,\n\tfix = false,\n\tfixTypes = null, // \u2190 should be null by default because if it's an array then it suppresses rules that don't have the `meta.type` property.\n\tflags = [],\n\tglobInputPaths = true,\n\tignore = true,\n\tignorePatterns = null,\n\toverrideConfig = null,\n\toverrideConfigFile = null,\n\tplugins = {},\n\tstats = false,\n\twarnIgnored = true,\n\tpassOnNoPatterns = false,\n\truleFilter = () => true,\n\tapplySuppressions = false,\n\tsuppressionsLocation = SuppressionsService.DEFAULT_SUPPRESSIONS_FILENAME,\n\t...unknownOptions\n}) {\n\tconst errors = [];\n\tconst unknownOptionKeys = Object.keys(unknownOptions);\n\n\tif (unknownOptionKeys.length >= 1) {\n\t\terrors.push(`Unknown options: ${unknownOptionKeys.join(\", \")}`);\n\t\tif (unknownOptionKeys.includes(\"cacheFile\")) {\n\t\t\terrors.push(\n\t\t\t\t\"'cacheFile' has been removed. Please use the 'cacheLocation' option instead.\",\n\t\t\t);\n\t\t}\n\t\tif (unknownOptionKeys.includes(\"configFile\")) {\n\t\t\terrors.push(\n\t\t\t\t\"'configFile' has been removed. Please use the 'overrideConfigFile' option instead.\",\n\t\t\t);\n\t\t}\n\t\tif (unknownOptionKeys.includes(\"envs\")) {\n\t\t\terrors.push(\"'envs' has been removed.\");\n\t\t}\n\t\tif (unknownOptionKeys.includes(\"extensions\")) {\n\t\t\terrors.push(\"'extensions' has been removed.\");\n\t\t}\n\t\tif (unknownOptionKeys.includes(\"resolvePluginsRelativeTo\")) {\n\t\t\terrors.push(\"'resolvePluginsRelativeTo' has been removed.\");\n\t\t}\n\t\tif (unknownOptionKeys.includes(\"globals\")) {\n\t\t\terrors.push(\n\t\t\t\t\"'globals' has been removed. Please use the 'overrideConfig.languageOptions.globals' option instead.\",\n\t\t\t);\n\t\t}\n\t\tif (unknownOptionKeys.includes(\"ignorePath\")) {\n\t\t\terrors.push(\"'ignorePath' has been removed.\");\n\t\t}\n\t\tif (unknownOptionKeys.includes(\"ignorePattern\")) {\n\t\t\terrors.push(\n\t\t\t\t\"'ignorePattern' has been removed. Please use the 'overrideConfig.ignorePatterns' option instead.\",\n\t\t\t);\n\t\t}\n\t\tif (unknownOptionKeys.includes(\"parser\")) {\n\t\t\terrors.push(\n\t\t\t\t\"'parser' has been removed. Please use the 'overrideConfig.languageOptions.parser' option instead.\",\n\t\t\t);\n\t\t}\n\t\tif (unknownOptionKeys.includes(\"parserOptions\")) {\n\t\t\terrors.push(\n\t\t\t\t\"'parserOptions' has been removed. Please use the 'overrideConfig.languageOptions.parserOptions' option instead.\",\n\t\t\t);\n\t\t}\n\t\tif (unknownOptionKeys.includes(\"rules\")) {\n\t\t\terrors.push(\n\t\t\t\t\"'rules' has been removed. Please use the 'overrideConfig.rules' option instead.\",\n\t\t\t);\n\t\t}\n\t\tif (unknownOptionKeys.includes(\"rulePaths\")) {\n\t\t\terrors.push(\n\t\t\t\t\"'rulePaths' has been removed. Please define your rules using plugins.\",\n\t\t\t);\n\t\t}\n\t\tif (unknownOptionKeys.includes(\"reportUnusedDisableDirectives\")) {\n\t\t\terrors.push(\n\t\t\t\t\"'reportUnusedDisableDirectives' has been removed. Please use the 'overrideConfig.linterOptions.reportUnusedDisableDirectives' option instead.\",\n\t\t\t);\n\t\t}\n\t}\n\tif (typeof allowInlineConfig !== \"boolean\") {\n\t\terrors.push(\"'allowInlineConfig' must be a boolean.\");\n\t}\n\tif (typeof baseConfig !== \"object\") {\n\t\terrors.push(\"'baseConfig' must be an object or null.\");\n\t}\n\tif (typeof cache !== \"boolean\") {\n\t\terrors.push(\"'cache' must be a boolean.\");\n\t}\n\tif (!isNonEmptyString(cacheLocation)) {\n\t\terrors.push(\"'cacheLocation' must be a non-empty string.\");\n\t}\n\tif (cacheStrategy !== \"metadata\" && cacheStrategy !== \"content\") {\n\t\terrors.push('\\'cacheStrategy\\' must be any of \"metadata\", \"content\".');\n\t}\n\tif (\n\t\tconcurrency !== \"off\" &&\n\t\tconcurrency !== \"auto\" &&\n\t\t!isPositiveInteger(concurrency)\n\t) {\n\t\terrors.push(\n\t\t\t'\\'concurrency\\' must be a positive integer, \"auto\", or \"off\".',\n\t\t);\n\t}\n\tif (!isNonEmptyString(cwd) || !path.isAbsolute(cwd)) {\n\t\terrors.push(\"'cwd' must be an absolute path.\");\n\t}\n\tif (typeof errorOnUnmatchedPattern !== \"boolean\") {\n\t\terrors.push(\"'errorOnUnmatchedPattern' must be a boolean.\");\n\t}\n\tif (typeof fix !== \"boolean\" && typeof fix !== \"function\") {\n\t\terrors.push(\"'fix' must be a boolean or a function.\");\n\t}\n\tif (fixTypes !== null && !isFixTypeArray(fixTypes)) {\n\t\terrors.push(\n\t\t\t'\\'fixTypes\\' must be an array of any of \"directive\", \"problem\", \"suggestion\", and \"layout\".',\n\t\t);\n\t}\n\tif (!isEmptyArrayOrArrayOfNonEmptyString(flags)) {\n\t\terrors.push(\"'flags' must be an array of non-empty strings.\");\n\t}\n\tif (typeof globInputPaths !== \"boolean\") {\n\t\terrors.push(\"'globInputPaths' must be a boolean.\");\n\t}\n\tif (typeof ignore !== \"boolean\") {\n\t\terrors.push(\"'ignore' must be a boolean.\");\n\t}\n\tif (\n\t\t!isEmptyArrayOrArrayOfNonEmptyString(ignorePatterns) &&\n\t\tignorePatterns !== null\n\t) {\n\t\terrors.push(\n\t\t\t\"'ignorePatterns' must be an array of non-empty strings or null.\",\n\t\t);\n\t}\n\tif (typeof overrideConfig !== \"object\") {\n\t\terrors.push(\"'overrideConfig' must be an object or null.\");\n\t}\n\tif (\n\t\t!isNonEmptyString(overrideConfigFile) &&\n\t\toverrideConfigFile !== null &&\n\t\toverrideConfigFile !== true\n\t) {\n\t\terrors.push(\n\t\t\t\"'overrideConfigFile' must be a non-empty string, null, or true.\",\n\t\t);\n\t}\n\tif (typeof passOnNoPatterns !== \"boolean\") {\n\t\terrors.push(\"'passOnNoPatterns' must be a boolean.\");\n\t}\n\tif (typeof plugins !== \"object\") {\n\t\terrors.push(\"'plugins' must be an object or null.\");\n\t} else if (plugins !== null && Object.keys(plugins).includes(\"\")) {\n\t\terrors.push(\"'plugins' must not include an empty string.\");\n\t}\n\tif (Array.isArray(plugins)) {\n\t\terrors.push(\n\t\t\t\"'plugins' doesn't add plugins to configuration to load. Please use the 'overrideConfig.plugins' option instead.\",\n\t\t);\n\t}\n\tif (typeof stats !== \"boolean\") {\n\t\terrors.push(\"'stats' must be a boolean.\");\n\t}\n\tif (typeof warnIgnored !== \"boolean\") {\n\t\terrors.push(\"'warnIgnored' must be a boolean.\");\n\t}\n\tif (typeof ruleFilter !== \"function\") {\n\t\terrors.push(\"'ruleFilter' must be a function.\");\n\t}\n\tif (typeof applySuppressions !== \"boolean\") {\n\t\terrors.push(\"'applySuppressions' must be a boolean.\");\n\t}\n\tif (!isNonEmptyString(suppressionsLocation)) {\n\t\terrors.push(\"'suppressionsLocation' must be a non-empty string.\");\n\t}\n\tif (errors.length > 0) {\n\t\tthrow new ESLintInvalidOptionsError(errors);\n\t}\n\n\treturn {\n\t\tallowInlineConfig,\n\t\tbaseConfig,\n\t\tcache,\n\t\tcacheLocation,\n\t\tcacheStrategy,\n\t\tconcurrency,\n\n\t\t// when overrideConfigFile is true that means don't do config file lookup\n\t\tconfigFile: overrideConfigFile === true ? false : overrideConfigFile,\n\t\toverrideConfig,\n\t\tcwd: path.normalize(cwd),\n\t\terrorOnUnmatchedPattern,\n\t\tfix,\n\t\tfixTypes,\n\t\tflags: [...flags],\n\t\tglobInputPaths,\n\t\tignore,\n\t\tignorePatterns,\n\t\tstats,\n\t\tpassOnNoPatterns,\n\t\twarnIgnored,\n\t\truleFilter,\n\t\tapplySuppressions,\n\t\tsuppressionsLocation,\n\t};\n}\n\n/**\n * Loads ESLint constructor options from an options module.\n * @param {string} optionsURL The URL string of the options module to load.\n * @returns {Promise<ESLintOptions>} ESLint constructor options.\n */\nasync function loadOptionsFromModule(optionsURL) {\n\treturn (await import(optionsURL)).default;\n}\n\n//-----------------------------------------------------------------------------\n// Cache-related helpers\n//-----------------------------------------------------------------------------\n\n/**\n * return the cacheFile to be used by eslint, based on whether the provided parameter is\n * a directory or looks like a directory (ends in `path.sep`), in which case the file\n * name will be the `cacheFile/.cache_hashOfCWD`\n *\n * if cacheFile points to a file or looks like a file then in will just use that file\n * @param {string} cacheFile The name of file to be used to store the cache\n * @param {string} cwd Current working directory\n * @param {Object} options The options\n * @param {string} [options.prefix] The prefix to use for the cache file\n * @returns {string} the resolved path to the cache file\n */\nfunction getCacheFile(cacheFile, cwd, { prefix = \".cache_\" } = {}) {\n\t/*\n\t * make sure the path separators are normalized for the environment/os\n\t * keeping the trailing path separator if present\n\t */\n\tconst normalizedCacheFile = path.normalize(cacheFile);\n\n\tconst resolvedCacheFile = path.resolve(cwd, normalizedCacheFile);\n\tconst looksLikeADirectory = normalizedCacheFile.slice(-1) === path.sep;\n\n\t/**\n\t * return the name for the cache file in case the provided parameter is a directory\n\t * @returns {string} the resolved path to the cacheFile\n\t */\n\tfunction getCacheFileForDirectory() {\n\t\treturn path.join(resolvedCacheFile, `${prefix}${hash(cwd)}`);\n\t}\n\n\tlet fileStats;\n\n\ttry {\n\t\tfileStats = fs.lstatSync(resolvedCacheFile);\n\t} catch {\n\t\tfileStats = null;\n\t}\n\n\t/*\n\t * in case the file exists we need to verify if the provided path\n\t * is a directory or a file. If it is a directory we want to create a file\n\t * inside that directory\n\t */\n\tif (fileStats) {\n\t\t/*\n\t\t * is a directory or is a file, but the original file the user provided\n\t\t * looks like a directory but `path.resolve` removed the `last path.sep`\n\t\t * so we need to still treat this like a directory\n\t\t */\n\t\tif (fileStats.isDirectory() || looksLikeADirectory) {\n\t\t\treturn getCacheFileForDirectory();\n\t\t}\n\n\t\t// is file so just use that file\n\t\treturn resolvedCacheFile;\n\t}\n\n\t/*\n\t * here we known the file or directory doesn't exist,\n\t * so we will try to infer if its a directory if it looks like a directory\n\t * for the current operating system.\n\t */\n\n\t// if the last character passed is a path separator we assume is a directory\n\tif (looksLikeADirectory) {\n\t\treturn getCacheFileForDirectory();\n\t}\n\n\treturn resolvedCacheFile;\n}\n\n/**\n * Creates a new lint result cache.\n * @param {ESLintOptions} eslintOptions The processed ESLint options.\n * @param {string} cacheFilePath The path to the cache file.\n * @returns {?LintResultCache} A new lint result cache or `null`.\n */\nfunction createLintResultCache({ cache, cacheStrategy }, cacheFilePath) {\n\treturn cache ? new LintResultCache(cacheFilePath, cacheStrategy) : null;\n}\n\n//-----------------------------------------------------------------------------\n// Lint helpers\n//-----------------------------------------------------------------------------\n\n/**\n * Checks whether a message's rule type should be fixed.\n * @param {LintMessage} message The message to check.\n * @param {CalculatedConfig} config The config for the file that generated the message.\n * @param {string[]} fixTypes An array of fix types to check.\n * @returns {boolean} Whether the message should be fixed.\n */\nfunction shouldMessageBeFixed(message, config, fixTypes) {\n\tif (!message.ruleId) {\n\t\treturn fixTypes.has(\"directive\");\n\t}\n\n\tconst rule = message.ruleId && config.getRuleDefinition(message.ruleId);\n\n\treturn Boolean(rule && rule.meta && fixTypes.has(rule.meta.type));\n}\n\n/**\n * Creates a fixer function based on the provided fix, fixTypesSet, and config.\n * @param {Function|boolean} fix The original fix option.\n * @param {Set<string>} fixTypesSet A set of fix types to filter messages for fixing.\n * @param {CalculatedConfig} config The config for the file that generated the message.\n * @returns {Function|boolean} The fixer function or the original fix value.\n */\nfunction getFixerForFixTypes(fix, fixTypesSet, config) {\n\tif (!fix || !fixTypesSet) {\n\t\treturn fix;\n\t}\n\n\tconst originalFix = typeof fix === \"function\" ? fix : () => true;\n\n\treturn message =>\n\t\tshouldMessageBeFixed(message, config, fixTypesSet) &&\n\t\toriginalFix(message);\n}\n\n/**\n * Processes a source code using ESLint.\n * @param {Object} config The config object.\n * @param {string} config.text The source code to verify.\n * @param {string} config.cwd The path to the current working directory.\n * @param {string|undefined} config.filePath The path to the file of `text`. If this is undefined, it uses `<text>`.\n * @param {FlatConfigArray} config.configs The config.\n * @param {boolean} config.fix If `true` then it does fix.\n * @param {boolean} config.allowInlineConfig If `true` then it uses directive comments.\n * @param {Function} config.ruleFilter A predicate function to filter which rules should be run.\n * @param {boolean} config.stats If `true`, then if reports extra statistics with the lint results.\n * @param {Linter} config.linter The linter instance to verify.\n * @returns {LintResult} The result of linting.\n * @private\n */\nfunction verifyText({\n\ttext,\n\tcwd,\n\tfilePath: providedFilePath,\n\tconfigs,\n\tfix,\n\tallowInlineConfig,\n\truleFilter,\n\tstats,\n\tlinter,\n}) {\n\tconst startTime = hrtimeBigint();\n\n\tconst filePath = providedFilePath || \"<text>\";\n\n\t/*\n\t * Verify.\n\t * `config.extractConfig(filePath)` requires an absolute path, but `linter`\n\t * doesn't know CWD, so it gives `linter` an absolute path always.\n\t */\n\tconst filePathToVerify =\n\t\tfilePath === \"<text>\" ? getPlaceholderPath(cwd) : filePath;\n\tconst { fixed, messages, output } = linter.verifyAndFix(text, configs, {\n\t\tallowInlineConfig,\n\t\tfilename: filePathToVerify,\n\t\tfix,\n\t\truleFilter,\n\t\tstats,\n\n\t\t/**\n\t\t * Check if the linter should adopt a given code block or not.\n\t\t * @param {string} blockFilename The virtual filename of a code block.\n\t\t * @returns {boolean} `true` if the linter should adopt the code block.\n\t\t */\n\t\tfilterCodeBlock(blockFilename) {\n\t\t\treturn configs.getConfig(blockFilename) !== void 0;\n\t\t},\n\t});\n\n\t// Tweak and return.\n\tconst result = {\n\t\tfilePath: filePath === \"<text>\" ? filePath : path.resolve(filePath),\n\t\tmessages,\n\t\tsuppressedMessages: linter.getSuppressedMessages(),\n\t\t...calculateStatsPerFile(messages),\n\t};\n\n\tif (fixed) {\n\t\tresult.output = output;\n\t}\n\n\tif (\n\t\tresult.errorCount + result.warningCount > 0 &&\n\t\ttypeof result.output === \"undefined\"\n\t) {\n\t\tresult.source = text;\n\t}\n\n\tif (stats) {\n\t\tresult.stats = {\n\t\t\ttimes: linter.getTimes(),\n\t\t\tfixPasses: linter.getFixPassCount(),\n\t\t};\n\t}\n\n\tconst endTime = hrtimeBigint();\n\tdebug('File \"%s\" linted in %t', filePath, endTime - startTime);\n\n\treturn result;\n}\n\n/**\n * Lints a single file.\n * @param {string} filePath File path to lint.\n * @param {FlatConfigArray} configs The config array for the file.\n * @param {ESLintOptions} eslintOptions The processed ESLint options.\n * @param {Linter} linter The linter instance to use.\n * @param {?LintResultCache} lintResultCache The result cache or `null`.\n * @param {?{ duration: bigint; }} readFileCounter Used to keep track of the time spent reading files.\n * @param {Retrier} [retrier] Used to retry linting on certain errors.\n * @param {AbortController} [controller] Used to stop linting when an error occurs.\n * @returns {Promise<LintResult>} The lint result.\n */\nasync function lintFile(\n\tfilePath,\n\tconfigs,\n\teslintOptions,\n\tlinter,\n\tlintResultCache,\n\treadFileCounter,\n\tretrier,\n\tcontroller,\n) {\n\tconst config = configs.getConfig(filePath);\n\tconst {\n\t\tallowInlineConfig,\n\t\tcwd,\n\t\tfix,\n\t\tfixTypes,\n\t\truleFilter,\n\t\tstats,\n\t\twarnIgnored,\n\t} = eslintOptions;\n\tconst fixTypesSet = fixTypes ? new Set(fixTypes) : null;\n\n\t/*\n\t * If a filename was entered that cannot be matched\n\t * to a config, then notify the user.\n\t */\n\tif (!config) {\n\t\tif (warnIgnored) {\n\t\t\tconst configStatus = configs.getConfigStatus(filePath);\n\n\t\t\treturn createIgnoreResult(filePath, cwd, configStatus);\n\t\t}\n\n\t\treturn void 0;\n\t}\n\n\t// Skip if there is cached result.\n\tif (lintResultCache) {\n\t\tconst cachedResult = lintResultCache.getCachedLintResults(\n\t\t\tfilePath,\n\t\t\tconfig,\n\t\t);\n\n\t\tif (cachedResult) {\n\t\t\tconst hadMessages =\n\t\t\t\tcachedResult.messages && cachedResult.messages.length > 0;\n\n\t\t\tif (hadMessages && fix) {\n\t\t\t\tdebug(`Reprocessing cached file to allow autofix: ${filePath}`);\n\t\t\t} else {\n\t\t\t\tdebug(`Skipping file since it hasn't changed: ${filePath}`);\n\t\t\t\treturn cachedResult;\n\t\t\t}\n\t\t}\n\t}\n\n\t// set up fixer for fixTypes if necessary\n\tconst fixer = getFixerForFixTypes(fix, fixTypesSet, config);\n\n\t/**\n\t * Reads the file and lints its content.\n\t * @returns {Promise<LintResult>} A lint result.\n\t */\n\tasync function readAndVerifyFile() {\n\t\tconst readFileEnterTime = hrtimeBigint();\n\t\tconst text = await fsp.readFile(filePath, {\n\t\t\tencoding: \"utf8\",\n\t\t\tsignal: controller?.signal,\n\t\t});\n\t\tconst readFileExitTime = hrtimeBigint();\n\t\tconst readFileDuration = readFileExitTime - readFileEnterTime;\n\t\tdebug('File \"%s\" read in %t', filePath, readFileDuration);\n\t\tif (readFileCounter) {\n\t\t\treadFileCounter.duration += readFileDuration;\n\t\t}\n\n\t\t// fail immediately if an error occurred in another file\n\t\tcontroller?.signal.throwIfAborted();\n\n\t\t// do the linting\n\t\treturn verifyText({\n\t\t\ttext,\n\t\t\tfilePath,\n\t\t\tconfigs,\n\t\t\tcwd,\n\t\t\tfix: fixer,\n\t\t\tallowInlineConfig,\n\t\t\truleFilter,\n\t\t\tstats,\n\t\t\tlinter,\n\t\t});\n\t}\n\n\t// Use the retrier if provided, otherwise just call the function.\n\tconst readAndVerifyFilePromise = retrier\n\t\t? retrier.retry(readAndVerifyFile, { signal: controller?.signal })\n\t\t: readAndVerifyFile();\n\n\treturn readAndVerifyFilePromise.catch(error => {\n\t\tcontroller?.abort(error);\n\t\tthrow error;\n\t});\n}\n\n/**\n * Retrieves flags from the environment variable ESLINT_FLAGS.\n * @param {string[]} flags The flags defined via the API.\n * @returns {string[]} The merged flags to use.\n */\nfunction mergeEnvironmentFlags(flags) {\n\tif (!process.env.ESLINT_FLAGS) {\n\t\treturn flags;\n\t}\n\n\tconst envFlags = process.env.ESLINT_FLAGS.trim().split(/\\s*,\\s*/gu);\n\treturn Array.from(new Set([...envFlags, ...flags]));\n}\n\n/**\n * Creates a new linter instance.\n * @param {ESLintOptions} eslintOptions The processed ESLint options.\n * @param {WarningService} warningService The warning service to use.\n * @returns {Linter} The linter instance.\n */\nfunction createLinter({ cwd, flags }, warningService) {\n\treturn new Linter({\n\t\tconfigType: \"flat\",\n\t\tcwd,\n\t\tflags: mergeEnvironmentFlags(flags),\n\t\twarningService,\n\t});\n}\n\n/**\n * Creates default configs with the specified plugins.\n * @param {Record<string, Plugin> | undefined} optionPlugins The plugins specified in the ESLint options.\n * @returns {Config[]} The default configs.\n */\nfunction createDefaultConfigs(optionPlugins) {\n\tconst defaultConfigs = [];\n\n\t// Add plugins\n\tif (optionPlugins) {\n\t\tconst plugins = {};\n\n\t\tfor (const [pluginName, plugin] of Object.entries(optionPlugins)) {\n\t\t\tplugins[getShorthandName(pluginName, \"eslint-plugin\")] = plugin;\n\t\t}\n\n\t\tdefaultConfigs.push({ plugins });\n\t}\n\n\treturn defaultConfigs;\n}\n\n/**\n * Creates a config loader.\n * @param {ESLintOptions} eslintOptions The processed ESLint options.\n * @param {Config[]} defaultConfigs The default configs.\n * @param {Linter} linter The linter instance.\n * @param {WarningService} warningService The warning service to use.\n * @returns {ConfigLoader} The config loader.\n */\nfunction createConfigLoader(\n\t{\n\t\tcwd,\n\t\tbaseConfig,\n\t\toverrideConfig,\n\t\tconfigFile,\n\t\tignore: ignoreEnabled,\n\t\tignorePatterns,\n\t},\n\tdefaultConfigs,\n\tlinter,\n\twarningService,\n) {\n\tconst configLoaderOptions = {\n\t\tcwd,\n\t\tbaseConfig,\n\t\toverrideConfig,\n\t\tconfigFile,\n\t\tignoreEnabled,\n\t\tignorePatterns,\n\t\tdefaultConfigs,\n\t\thasUnstableNativeNodeJsTSConfigFlag: linter.hasFlag(\n\t\t\t\"unstable_native_nodejs_ts_config\",\n\t\t),\n\t\twarningService,\n\t};\n\n\treturn new ConfigLoader(configLoaderOptions);\n}\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\nmodule.exports = {\n\tcreateDebug,\n\n\tfindFiles,\n\n\tisNonEmptyString,\n\tisArrayOfNonEmptyString,\n\n\tcreateIgnoreResult,\n\tisErrorMessage,\n\tgetPlaceholderPath,\n\n\tprocessOptions,\n\tloadOptionsFromModule,\n\n\tgetCacheFile,\n\tcreateLintResultCache,\n\n\tgetFixerForFixTypes,\n\tverifyText,\n\tlintFile,\n\tcreateLinter,\n\tcreateDefaultConfigs,\n\tcreateConfigLoader,\n};\n", "'use strict';\n\n/**\n * @fileoverview A utility for retrying failed async method calls.\n */\n\n/* global setTimeout, clearTimeout */\n\n//-----------------------------------------------------------------------------\n// Constants\n//-----------------------------------------------------------------------------\n\nconst MAX_TASK_TIMEOUT = 60000;\nconst MAX_TASK_DELAY = 100;\nconst MAX_CONCURRENCY = 1000;\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\n/**\n * Logs a message to the console if the DEBUG environment variable is set.\n * @param {string} message The message to log.\n * @returns {void}\n */\nfunction debug(message) {\n    if (globalThis?.process?.env.DEBUG === \"@hwc/retry\") {\n        console.debug(message);\n    }\n}\n\n/*\n * The following logic has been extracted from graceful-fs.\n *\n * The ISC License\n *\n * Copyright (c) 2011-2023 Isaac Z. Schlueter, Ben Noordhuis, and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Checks if it is time to retry a task based on the timestamp and last attempt time.\n * @param {RetryTask} task The task to check.\n * @param {number} maxDelay The maximum delay for the queue.\n * @returns {boolean} true if it is time to retry, false otherwise.\n */\nfunction isTimeToRetry(task, maxDelay) {\n    const timeSinceLastAttempt = Date.now() - task.lastAttempt;\n    const timeSinceStart = Math.max(task.lastAttempt - task.timestamp, 1);\n    const desiredDelay = Math.min(timeSinceStart * 1.2, maxDelay);\n\n    return timeSinceLastAttempt >= desiredDelay;\n}\n\n/**\n * Checks if it is time to bail out based on the given timestamp.\n * @param {RetryTask} task The task to check.\n * @param {number} timeout The timeout for the queue.\n * @returns {boolean} true if it is time to bail, false otherwise.\n */\nfunction isTimeToBail(task, timeout) {\n    return task.age > timeout;\n}\n\n/**\n * Creates a new promise with resolve and reject functions.\n * @returns {{promise:Promise<any>, resolve:(value:any) => any, reject: (value:any) => any}} A new promise.\n */\nfunction createPromise() {\n    if (Promise.withResolvers) {\n        return Promise.withResolvers();\n    }\n\n    let resolve, reject;\n\n    const promise = new Promise((res, rej) => {\n        resolve = res;\n        reject = rej;\n    });\n\n    if (resolve === undefined || reject === undefined) {\n        throw new Error(\"Promise executor did not initialize resolve or reject.\");\n    }\n\n    return { promise, resolve, reject };\n}\n\n\n/**\n * A class to represent a task in the retry queue.\n */\nclass RetryTask {\n\n    /**\n     * The unique ID for the task.\n     * @type {string}\n     */\n    id = Math.random().toString(36).slice(2);\n\n    /**\n     * The function to call.\n     * @type {Function}\n     */\n    fn;\n\n    /**\n     * The error that was thrown.\n     * @type {Error}\n     */\n    error;\n    \n    /**\n     * The timestamp of the task.\n     * @type {number}\n     */\n    timestamp = Date.now();\n\n    /**\n     * The timestamp of the last attempt.\n     * @type {number}\n     */\n    lastAttempt = this.timestamp;\n\n    /**\n     * The resolve function for the promise.\n     * @type {Function}\n     */\n    resolve;\n\n    /**\n     * The reject function for the promise.\n     * @type {Function}\n     */\n    reject;\n\n    /**\n     * The AbortSignal to monitor for cancellation.\n     * @type {AbortSignal|undefined}\n     */\n    signal;\n\n    /**\n     * Creates a new instance.\n     * @param {Function} fn The function to call.\n     * @param {Error} error The error that was thrown.\n     * @param {Function} resolve The resolve function for the promise.\n     * @param {Function} reject The reject function for the promise.\n     * @param {AbortSignal|undefined} signal The AbortSignal to monitor for cancellation.\n     */\n    constructor(fn, error, resolve, reject, signal) {\n        this.fn = fn;\n        this.error = error;\n        this.timestamp = Date.now();\n        this.lastAttempt = Date.now();\n        this.resolve = resolve;\n        this.reject = reject;\n        this.signal = signal;\n    }\n    \n    /**\n     * Gets the age of the task.\n     * @returns {number} The age of the task in milliseconds.\n     * @readonly\n     */\n    get age() {\n        return Date.now() - this.timestamp;\n    }\n}\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * A class that manages a queue of retry jobs.\n */\nclass Retrier {\n\n    /**\n     * Represents the queue for processing tasks.\n     * @type {Array<RetryTask>}\n     */\n    #retrying = [];\n\n    /**\n     * Represents the queue for pending tasks.\n     * @type {Array<Function>}\n     */\n    #pending = [];\n\n    /**\n     * The number of tasks currently being processed.\n     * @type {number}\n     */\n    #working = 0;\n\n    /**\n     * The timeout for the queue.\n     * @type {number}\n     */\n    #timeout;\n\n    /**\n     * The maximum delay for the queue.\n     * @type {number}\n     */\n    #maxDelay;\n\n    /**\n     * The setTimeout() timer ID.\n     * @type {NodeJS.Timeout|undefined}\n     */\n    #timerId;\n\n    /**\n     * The function to call.\n     * @type {Function}\n     */\n    #check;\n\n    /**\n     * The maximum number of concurrent tasks.\n     * @type {number}\n     */\n    #concurrency;\n\n    /**\n     * Creates a new instance.\n     * @param {Function} check The function to call.\n     * @param {object} [options] The options for the instance.\n     * @param {number} [options.timeout] The timeout for the queue.\n     * @param {number} [options.maxDelay] The maximum delay for the queue.\n     * @param {number} [options.concurrency] The maximum number of concurrent tasks.\n     */\n    constructor(check, { timeout = MAX_TASK_TIMEOUT, maxDelay = MAX_TASK_DELAY, concurrency = MAX_CONCURRENCY } = {}) {\n\n        if (typeof check !== \"function\") {\n            throw new Error(\"Missing function to check errors\");\n        }\n\n        this.#check = check;\n        this.#timeout = timeout;\n        this.#maxDelay = maxDelay;\n        this.#concurrency = concurrency;\n    }\n\n    /**\n     * Gets the number of tasks waiting to be retried.\n     * @returns {number} The number of tasks in the retry queue.\n     */\n    get retrying() {\n        return this.#retrying.length;\n    }\n\n    /**\n     * Gets the number of tasks waiting to be processed in the pending queue.\n     * @returns {number} The number of tasks in the pending queue.\n     */\n    get pending() {\n        return this.#pending.length;\n    }\n\n    /**\n     * Gets the number of tasks currently being processed.\n     * @returns {number} The number of tasks currently being processed.\n     */\n    get working() {\n        return this.#working;\n    }\n\n    /**\n     * Calls the function and retries if it fails.\n     * @param {Function} fn The function to call.\n     * @param {Object} options The options for the job.\n     * @param {AbortSignal} [options.signal] The AbortSignal to monitor for cancellation.\n     * @param {Promise<any>} options.promise The promise to return when the function settles.\n     * @param {Function} options.resolve The resolve function for the promise.\n     * @param {Function} options.reject The reject function for the promise.\n     * @returns {Promise<any>} A promise that resolves when the function is\n     * called successfully.\n     */\n    #call(fn, { signal, promise, resolve, reject }) {\n\n        let result;\n\n        try {\n            result = fn();\n        } catch (/** @type {any} */ error) {\n            reject(new Error(`Synchronous error: ${error.message}`, { cause: error }));\n            return promise;\n        }\n\n        // if the result is not a promise then reject an error\n        if (!result || typeof result.then !== \"function\") {\n            reject(new Error(\"Result is not a promise.\"));\n            return promise;\n        }\n\n        this.#working++;\n        promise.finally(() => {\n            this.#working--;\n            this.#processPending();\n        })\n        // `promise.finally` creates a new promise that may be rejected, so it must be handled.\n            .catch(() => { });\n\n        // call the original function and catch any ENFILE or EMFILE errors\n        Promise.resolve(result)\n            .then(value => {\n                debug(\"Function called successfully without retry.\");\n                resolve(value);\n            })\n            .catch(error => {\n                if (!this.#check(error)) {\n                    reject(error);\n                    return;\n                }\n\n                const task = new RetryTask(fn, error, resolve, reject, signal);\n                \n                debug(`Function failed, queuing for retry with task ${task.id}.`);\n                this.#retrying.push(task);\n\n                signal?.addEventListener(\"abort\", () => {\n                    debug(`Task ${task.id} was aborted due to AbortSignal.`);\n                    reject(signal.reason);\n                });\n\n                this.#processQueue();\n            });\n        \n        return promise;\n    }\n\n    /**\n     * Adds a new retry job to the queue.\n     * @template {(...args: unknown[]) => Promise<unknown>} Func\n     * @template {Awaited<ReturnType<Func>>} RetVal\n     * @param {Func} fn The function to call.\n     * @param {object} [options] The options for the job.\n     * @param {AbortSignal} [options.signal] The AbortSignal to monitor for cancellation.\n     * @returns {Promise<RetVal>} A promise that resolves when the queue is processed.\n     */\n    retry(fn, { signal } = {}) {\n\n        signal?.throwIfAborted();\n\n        const { promise, resolve, reject } = createPromise();\n\n        this.#pending.push(() => this.#call(fn, { signal, promise, resolve, reject }));\n        this.#processPending();\n        \n        return promise;\n    }\n\n\n    /**\n     * Processes the pending queue and the retry queue.\n     * @returns {void}\n     */\n    #processAll() {\n        if (this.pending) {\n            this.#processPending();\n        }\n\n        if (this.retrying) {\n            this.#processQueue();\n        }\n    }\n\n    /**\n     * Processes the pending queue to see which tasks can be started.\n     * @returns {void}\n     */\n    #processPending() {\n\n        debug(`Processing pending tasks: ${this.pending} pending, ${this.working} working.`);\n\n        const available = this.#concurrency - this.working;\n\n        if (available <= 0) {\n            return;\n        }\n\n        const count = Math.min(this.pending, available);\n\n        for (let i = 0; i < count; i++) {\n            const task = this.#pending.shift();\n            task?.();\n        }\n\n        debug(`Processed pending tasks: ${this.pending} pending, ${this.working} working.`);\n    }\n\n    /**\n     * Processes the queue.\n     * @returns {void}\n     */\n    #processQueue() {\n        // clear any timer because we're going to check right now\n        clearTimeout(this.#timerId);\n        this.#timerId = undefined;\n\n        debug(`Processing retry queue: ${this.retrying} retrying, ${this.working} working.`);\n\n        const processAgain = () => {\n            this.#timerId = setTimeout(() => this.#processAll(), 0);\n        };\n\n        // if there's nothing in the queue, we're done\n        const task = this.#retrying.shift();\n        if (!task) {\n            debug(\"Queue is empty, exiting.\");\n\n            if (this.pending) {\n                processAgain();\n            }\n            return;\n        }\n\n        // if it's time to bail, then bail\n        if (isTimeToBail(task, this.#timeout)) {\n            debug(`Task ${task.id} was abandoned due to timeout.`);\n            task.reject(task.error);\n            processAgain();\n            return;\n        }\n\n        // if it's not time to retry, then wait and try again\n        if (!isTimeToRetry(task, this.#maxDelay)) {\n            debug(`Task ${task.id} is not ready to retry, skipping.`);\n            this.#retrying.push(task);\n            processAgain();\n            return;\n        }\n\n        // otherwise, try again\n        task.lastAttempt = Date.now();\n        \n        // Promise.resolve needed in case it's a thenable but not a Promise\n        Promise.resolve(task.fn())\n            // @ts-ignore because we know it's any\n            .then(result => {\n                debug(`Task ${task.id} succeeded after ${task.age}ms.`);\n                task.resolve(result);\n            })\n\n            // @ts-ignore because we know it's any\n            .catch(error => {\n                if (!this.#check(error)) {\n                    debug(`Task ${task.id} failed with non-retryable error: ${error.message}.`);\n                    task.reject(error);\n                    return;\n                }\n\n                // update the task timestamp and push to back of queue to try again\n                task.lastAttempt = Date.now();\n                this.#retrying.push(task);\n                debug(`Task ${task.id} failed, requeueing to try again.`);\n            })\n            .finally(() => {\n                this.#processAll();\n            });\n    }\n}\n\nexports.Retrier = Retrier;\n", "/**\n * Utility for resolving a module relative to another module\n * @author Teddy Katz\n */\n\n\"use strict\";\n\nconst Module = require(\"node:module\");\n\n/*\n * `Module.createRequire` is added in v12.2.0. It supports URL as well.\n * We only support the case where the argument is a filepath, not a URL.\n */\nconst createRequire = Module.createRequire;\n\n/**\n * Resolves a Node module relative to another module\n * @param {string} moduleName The name of a Node module, or a path to a Node module.\n * @param {string} relativeToPath An absolute path indicating the module that `moduleName` should be resolved relative to. This must be\n * a file rather than a directory, but the file need not actually exist.\n * @returns {string} The absolute path that would result from calling `require.resolve(moduleName)` in a file located at `relativeToPath`\n * @throws {Error} When the module cannot be resolved.\n */\nfunction resolve(moduleName, relativeToPath) {\n\treturn createRequire(relativeToPath).resolve(moduleName);\n}\n\nexports.resolve = resolve;\n", "/**\n * @fileoverview Main class using flat config\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst { existsSync } = require(\"node:fs\");\nconst fs = require(\"node:fs/promises\");\nconst os = require(\"node:os\");\nconst path = require(\"node:path\");\nconst { pathToFileURL } = require(\"node:url\");\nconst { SHARE_ENV, Worker } = require(\"node:worker_threads\");\nconst { version } = require(\"../../package.json\");\nconst { defaultConfig } = require(\"../config/default-config\");\nconst timing = require(\"../linter/timing\");\n\nconst {\n\tcreateDebug,\n\n\tfindFiles,\n\tgetCacheFile,\n\n\tisNonEmptyString,\n\tisArrayOfNonEmptyString,\n\n\tcreateIgnoreResult,\n\tisErrorMessage,\n\tgetPlaceholderPath,\n\n\tprocessOptions,\n\tloadOptionsFromModule,\n\n\tgetFixerForFixTypes,\n\tverifyText,\n\tlintFile,\n\tcreateLinter,\n\tcreateLintResultCache,\n\tcreateDefaultConfigs,\n\tcreateConfigLoader,\n} = require(\"./eslint-helpers\");\nconst { Retrier } = require(\"@humanwhocodes/retry\");\nconst { ConfigLoader } = require(\"../config/config-loader\");\nconst { WarningService } = require(\"../services/warning-service\");\nconst { SuppressionsService } = require(\"../services/suppressions-service\");\nconst { Config } = require(\"../config/config.js\");\nconst {\n\tgetShorthandName,\n\tgetNamespaceFromTerm,\n\tnormalizePackageName,\n} = require(\"../shared/naming.js\");\nconst { resolve } = require(\"../shared/relative-module-resolver.js\");\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n// For VSCode IntelliSense\n/**\n * @import { Config as CalculatedConfig } from \"../config/config.js\";\n * @import { FlatConfigArray } from \"../config/flat-config-array.js\";\n * @import { RuleDefinition, RulesMeta } from \"@eslint/core\";\n * @import { WorkerLintResults } from \"./worker.js\";\n */\n\n/** @typedef {import(\"../types\").Linter.Config} Config */\n/** @typedef {import(\"../types\").ESLint.DeprecatedRuleUse} DeprecatedRuleInfo */\n/** @typedef {import(\"../types\").ESLint.Options} ESLintOptions */\n/** @typedef {import(\"../types\").ESLint.LintResult} LintResult */\n/** @typedef {import(\"../types\").ESLint.Plugin} Plugin */\n/** @typedef {import(\"../types\").ESLint.ResultsMeta} ResultsMeta */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst hrtimeBigint = process.hrtime.bigint;\n\nconst debug = createDebug(\"eslint:eslint\");\nconst privateMembers = new WeakMap();\nconst removedFormatters = new Set([\n\t\"checkstyle\",\n\t\"codeframe\",\n\t\"compact\",\n\t\"jslint-xml\",\n\t\"junit\",\n\t\"table\",\n\t\"tap\",\n\t\"unix\",\n\t\"visualstudio\",\n]);\nconst fileRetryCodes = new Set([\"ENFILE\", \"EMFILE\"]);\n\n/**\n * Create rulesMeta object.\n * @param {Map<string, RuleDefinition>} rules a map of rules from which to generate the object.\n * @returns {Record<string, RulesMeta>} metadata for all enabled rules.\n */\nfunction createRulesMeta(rules) {\n\treturn Array.from(rules).reduce((retVal, [id, rule]) => {\n\t\tretVal[id] = rule.meta;\n\t\treturn retVal;\n\t}, {});\n}\n\n/**\n * Gets the replacement rule names from a deprecated rule's metadata.\n * @param {RulesMeta} meta The rule metadata.\n * @returns {string[]} Replacement rule names.\n */\nfunction getDeprecatedRuleReplacements(meta) {\n\tif (typeof meta.deprecated !== \"object\") {\n\t\treturn meta.replacedBy || [];\n\t}\n\n\tconst { replacedBy } = meta.deprecated;\n\n\tif (!Array.isArray(replacedBy)) {\n\t\treturn [];\n\t}\n\n\treturn replacedBy.map(replacement => {\n\t\tif (typeof replacement !== \"object\" || replacement === null) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tconst pluginName = replacement.plugin?.name;\n\t\tconst ruleName = replacement.rule?.name;\n\n\t\treturn `${typeof pluginName === \"string\" ? `${getShorthandName(pluginName, \"eslint-plugin\")}/` : \"\"}${typeof ruleName === \"string\" ? ruleName : \"\"}`;\n\t});\n}\n\n/** @type {WeakMap<CalculatedConfig, DeprecatedRuleInfo[]>} */\nconst usedDeprecatedRulesCache = new WeakMap();\n\n/**\n * Create used deprecated rule list.\n * @param {ESLint} eslint The ESLint instance.\n * @param {string} maybeFilePath The absolute path to a lint target file or `\"<text>\"`.\n * @returns {DeprecatedRuleInfo[]} The used deprecated rule list.\n */\nfunction getOrFindUsedDeprecatedRules(eslint, maybeFilePath) {\n\tconst {\n\t\toptions: { cwd },\n\t\tconfigLoader,\n\t} = privateMembers.get(eslint);\n\tconst filePath = path.isAbsolute(maybeFilePath)\n\t\t? maybeFilePath\n\t\t: getPlaceholderPath(cwd);\n\tconst configs = configLoader.getCachedConfigArrayForFile(filePath);\n\tconst config = configs.getConfig(filePath);\n\n\t// Most files use the same config, so cache it.\n\tif (config && !usedDeprecatedRulesCache.has(config)) {\n\t\tconst retv = [];\n\n\t\tif (config.rules) {\n\t\t\tfor (const [ruleId, ruleConf] of Object.entries(config.rules)) {\n\t\t\t\tif (Config.getRuleNumericSeverity(ruleConf) === 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst rule = config.getRuleDefinition(ruleId);\n\t\t\t\tconst meta = rule && rule.meta;\n\n\t\t\t\tif (meta && meta.deprecated) {\n\t\t\t\t\tconst usesNewFormat = typeof meta.deprecated === \"object\";\n\n\t\t\t\t\tretv.push({\n\t\t\t\t\t\truleId,\n\t\t\t\t\t\treplacedBy: getDeprecatedRuleReplacements(meta),\n\t\t\t\t\t\tinfo: usesNewFormat ? meta.deprecated : void 0,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tusedDeprecatedRulesCache.set(config, Object.freeze(retv));\n\t}\n\n\treturn config ? usedDeprecatedRulesCache.get(config) : Object.freeze([]);\n}\n\n/**\n * Processes the linting results generated by a CLIEngine linting report to\n * match the ESLint class's API.\n * @param {ESLint} eslint The ESLint instance.\n * @param {LintResult[]} results The linting results to process.\n * @returns {LintResult[]} The processed linting results.\n */\nfunction processLintReport(eslint, results) {\n\tconst descriptor = {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn getOrFindUsedDeprecatedRules(eslint, this.filePath);\n\t\t},\n\t};\n\n\tfor (const result of results) {\n\t\tObject.defineProperty(result, \"usedDeprecatedRules\", descriptor);\n\t}\n\n\treturn results;\n}\n\n/**\n * An Array.prototype.sort() compatible compare function to order results by their file path.\n * @param {LintResult} a The first lint result.\n * @param {LintResult} b The second lint result.\n * @returns {number} An integer representing the order in which the two results should occur.\n */\nfunction compareResultsByFilePath(a, b) {\n\tif (a.filePath < b.filePath) {\n\t\treturn -1;\n\t}\n\n\tif (a.filePath > b.filePath) {\n\t\treturn 1;\n\t}\n\n\treturn 0;\n}\n\n/**\n * Determines which config file to use. This is determined by seeing if an\n * override config file was passed, and if so, using it; otherwise, as long\n * as override config file is not explicitly set to `false`, it will search\n * upwards from the cwd for a file named `eslint.config.js`.\n *\n * This function is used primarily by the `--inspect-config` option. For now,\n * we will maintain the existing behavior, which is to search up from the cwd.\n * @param {{ configFile: string | undefined; cwd: string; }} options Config file location options.\n * @returns {Promise<{configFilePath:string|undefined;basePath:string}>} Location information for\n *      the config file.\n */\nasync function locateConfigFileToUse({ configFile, cwd }) {\n\tconst configLoader = new ConfigLoader({\n\t\tcwd,\n\t\tconfigFile,\n\t});\n\n\tconst configFilePath = await configLoader.findConfigFileForPath(\n\t\tpath.join(cwd, \"__placeholder__.js\"),\n\t);\n\n\tif (!configFilePath) {\n\t\tthrow new Error(\"No ESLint configuration file was found.\");\n\t}\n\n\treturn {\n\t\tconfigFilePath,\n\t\tbasePath: configFile ? cwd : path.dirname(configFilePath),\n\t};\n}\n\n/**\n * Creates an error to be thrown when an array of results passed to `getRulesMetaForResults` was not created by the current engine.\n * @param {Error|undefined} cause The original error that led to this symptom error being thrown. Might not always be available.\n * @returns {TypeError} An error object.\n */\nfunction createExtraneousResultsError(cause) {\n\treturn new TypeError(\n\t\t\"Results object was not created from this ESLint instance.\",\n\t\t{\n\t\t\tcause,\n\t\t},\n\t);\n}\n\n/**\n * Maximum number of files assumed to be best handled by one worker thread.\n * This value is a heuristic estimation that can be adjusted if required.\n */\nconst AUTO_FILES_PER_WORKER = 50;\n\n/**\n * Calculates the number of worker threads to run for \"auto\" concurrency depending on the number of\n * files that need to be processed.\n *\n * The number of worker threads is calculated as the number of files that need to be processed\n * (`processableFileCount`) divided by the number of files assumed to be best handled by one worker\n * thread (`AUTO_FILES_PER_WORKER`), rounded up to the next integer.\n * Two adjustments are made to this calculation: first, the number of workers is capped at half the\n * number of available CPU cores (`maxWorkers`); second, a value of 1 is converted to 0.\n * The following table shows the relationship between the number of files to be processed and the\n * number of workers:\n *\n * Files to be processed                                              | Workers\n * -------------------------------------------------------------------|-----------------\n * 0                                                                  | 0\n * 1, 2, \u2026, AUTO_FILES_PER_WORKER                                     | 0 (there's no 1)\n * AUTO_FILES_PER_WORKER + 1, \u2026, AUTO_FILES_PER_WORKER * 2            | 2\n * AUTO_FILES_PER_WORKER * 2 + 1, \u2026, AUTO_FILES_PER_WORKER * 3        | 3\n * \u22EF                                                                  | \u22EF\n * AUTO_FILES_PER_WORKER * (\uD835\uDC5B - 1) + 1, \u2026, AUTO_FILES_PER_WORKER * \uD835\uDC5B  | \uD835\uDC5B\n * \u22EF                                                                  | \u22EF\n * AUTO_FILES_PER_WORKER * (maxWorkers - 1) + 1, \u2026                    | maxWorkers\n *\n * The number of files to be processed should be determined by the calling function.\n * @param {number} processableFileCount The number of files that need to be processed.\n * @param {number} maxWorkers The maximum number of workers to run.\n * @returns {number} The number of worker threads to run.\n */\nfunction getWorkerCountFor(processableFileCount, maxWorkers) {\n\tlet workerCount = Math.ceil(processableFileCount / AUTO_FILES_PER_WORKER);\n\tif (workerCount > maxWorkers) {\n\t\tworkerCount = maxWorkers;\n\t}\n\tif (workerCount <= 1) {\n\t\tworkerCount = 0;\n\t}\n\treturn workerCount;\n}\n\n/**\n * Returns true if a file has no valid cached results or if it needs to be reprocessed because there are violations that may need fixing.\n * This function will access the filesystem.\n * @param {LintResultCache} lintResultCache The lint result cache.\n * @param {boolean} fix The fix option.\n * @param {string} filePath The file for which to retrieve lint results.\n * @param {Config} config The config of the file.\n * @returns {boolean} True if the file needs to be reprocessed.\n */\nfunction needsReprocessing(lintResultCache, fix, filePath, config) {\n\tconst results = lintResultCache.getValidCachedLintResults(filePath, config);\n\n\t// This reflects the reprocessing logic of the `lintFile` helper function.\n\treturn !results || (fix && results.messages && results.messages.length > 0);\n}\n\n/**\n * Calculates the number of worker threads to run for \"auto\" concurrency.\n *\n * The number of worker threads depends on the number files that need to be processed.\n * Typically, this includes all non-ignored files.\n * In a cached run with \"metadata\" strategy, files with a valid cached result aren't counted.\n * @param {ESLint} eslint ESLint instance.\n * @param {string[]} filePaths File paths to lint.\n * @param {number} maxWorkers The maximum number of workers to run.\n * @returns {number} The number of worker threads to run for \"auto\" concurrency.\n */\nfunction calculateAutoWorkerCount(eslint, filePaths, maxWorkers) {\n\tconst startTime = hrtimeBigint();\n\tconst {\n\t\tconfigLoader,\n\t\tlintResultCache,\n\t\toptions: { cacheStrategy, fix },\n\t} = privateMembers.get(eslint);\n\t/** True if cache is not used or if strategy is \"content\". */\n\tconst countAllMatched = !lintResultCache || cacheStrategy === \"content\";\n\n\tlet processableFileCount = 0;\n\tlet remainingFiles = filePaths.length;\n\n\t/** The number of workers if none of the remaining files were to be counted. */\n\tlet lowWorkerCount = 0;\n\n\t/*\n\t * Rather than counting all files to be processed in advance, we stop iterating as soon as we reach\n\t * a point where adding more files doesn't change the number of workers anymore.\n\t */\n\tfor (const filePath of filePaths) {\n\t\t/** The number of workers if all of the remaining files were to be counted. */\n\t\tconst highWorkerCount = getWorkerCountFor(\n\t\t\tprocessableFileCount + remainingFiles,\n\t\t\tmaxWorkers,\n\t\t);\n\t\tif (lowWorkerCount >= highWorkerCount) {\n\t\t\t// The highest possible number of workers has been reached, so stop counting.\n\t\t\tbreak;\n\t\t}\n\t\tremainingFiles--;\n\t\tconst configs = configLoader.getCachedConfigArrayForFile(filePath);\n\t\tconst config = configs.getConfig(filePath);\n\t\tif (!config) {\n\t\t\t// file is ignored\n\t\t\tcontinue;\n\t\t}\n\t\tif (\n\t\t\tcountAllMatched ||\n\t\t\tneedsReprocessing(lintResultCache, fix, filePath, config)\n\t\t) {\n\t\t\tprocessableFileCount++;\n\t\t\tlowWorkerCount = getWorkerCountFor(\n\t\t\t\tprocessableFileCount,\n\t\t\t\tmaxWorkers,\n\t\t\t);\n\t\t}\n\t}\n\tdebug(\n\t\t\"%d file(s) to process counted in %t\",\n\t\tprocessableFileCount,\n\t\thrtimeBigint() - startTime,\n\t);\n\treturn lowWorkerCount;\n}\n\n/**\n * Calculates the number of workers to run based on the concurrency setting and the number of files to lint.\n * @param {ESLint} eslint The ESLint instance.\n * @param {string[]} filePaths File paths to lint.\n * @param {{ availableParallelism: () => number }} [os] Node.js `os` module, or a mock for testing.\n * @returns {number} The effective number of worker threads to be started. A value of zero disables multithread linting.\n */\nfunction calculateWorkerCount(\n\teslint,\n\tfilePaths,\n\t{ availableParallelism } = os,\n) {\n\tconst { concurrency } = privateMembers.get(eslint).options;\n\tswitch (concurrency) {\n\t\tcase \"off\":\n\t\t\treturn 0;\n\t\tcase \"auto\": {\n\t\t\tconst maxWorkers = availableParallelism() >> 1;\n\t\t\treturn calculateAutoWorkerCount(eslint, filePaths, maxWorkers);\n\t\t}\n\t\tdefault: {\n\t\t\tconst workerCount = Math.min(concurrency, filePaths.length);\n\t\t\treturn workerCount > 1 ? workerCount : 0;\n\t\t}\n\t}\n}\n\n// Used internally. Do not expose.\nconst disableCloneabilityCheck = Symbol(\n\t\"Do not check for uncloneable options.\",\n);\n\n/**\n * The smallest net linting ratio that doesn't trigger a poor concurrency warning.\n * The net linting ratio is defined as the net linting duration divided by the thread's total runtime,\n * where the net linting duration is the total linting time minus the time spent on I/O-intensive operations:\n * **Net Linting Ratio** = (**Linting Time** \u2013 **I/O Time**) / **Thread Runtime**.\n * - **Linting Time**: Total time spent linting files\n * - **I/O Time**: Portion of linting time spent loading configs and reading files\n * - **Thread Runtime**: End-to-end execution time of the thread\n *\n * This value is a heuristic estimation that can be adjusted if required.\n */\nconst LOW_NET_LINTING_RATIO = 0.7;\n\n/**\n * Runs worker threads to lint files.\n * @param {string[]} filePaths File paths to lint.\n * @param {number} workerCount The number of worker threads to run.\n * @param {ESLintOptions | string} eslintOptionsOrURL The unprocessed ESLint options or the URL of the options module.\n * @param {() => void} warnOnLowNetLintingRatio A function to call if the net linting ratio is low.\n * @returns {Promise<LintResult[]>} Lint results.\n */\nasync function runWorkers(\n\tfilePaths,\n\tworkerCount,\n\teslintOptionsOrURL,\n\twarnOnLowNetLintingRatio,\n) {\n\tconst fileCount = filePaths.length;\n\tconst results = Array(fileCount);\n\tconst workerURL = pathToFileURL(path.join(__dirname, \"./worker.js\"));\n\tconst filePathIndexArray = new Uint32Array(\n\t\tnew SharedArrayBuffer(Uint32Array.BYTES_PER_ELEMENT),\n\t);\n\tconst abortController = new AbortController();\n\tconst abortSignal = abortController.signal;\n\tconst workerOptions = {\n\t\tenv: SHARE_ENV,\n\t\tworkerData: {\n\t\t\teslintOptionsOrURL,\n\t\t\tfilePathIndexArray,\n\t\t\tfilePaths,\n\t\t},\n\t};\n\n\tlet worstNetLintingRatio = 1;\n\n\t/**\n\t * A promise executor function that starts a worker thread on each invocation.\n\t * @param {() => void} resolve_ Called when the worker thread terminates successfully.\n\t * @param {(error: Error) => void} reject Called when the worker thread terminates with an error.\n\t * @returns {void}\n\t */\n\tfunction workerExecutor(resolve_, reject) {\n\t\tconst workerStartTime = hrtimeBigint();\n\t\tconst worker = new Worker(workerURL, workerOptions);\n\t\tworker.once(\n\t\t\t\"message\",\n\t\t\t(/** @type {WorkerLintResults} */ indexedResults) => {\n\t\t\t\tconst workerDuration = hrtimeBigint() - workerStartTime;\n\n\t\t\t\t// The net linting ratio provides an approximate measure of worker thread efficiency, defined as the net linting duration divided by the thread's total runtime.\n\t\t\t\tconst netLintingRatio =\n\t\t\t\t\tNumber(indexedResults.netLintingDuration) /\n\t\t\t\t\tNumber(workerDuration);\n\n\t\t\t\tworstNetLintingRatio = Math.min(\n\t\t\t\t\tworstNetLintingRatio,\n\t\t\t\t\tnetLintingRatio,\n\t\t\t\t);\n\n\t\t\t\tif (timing.enabled && indexedResults.timings) {\n\t\t\t\t\ttiming.mergeData(indexedResults.timings);\n\t\t\t\t}\n\n\t\t\t\tfor (const result of indexedResults) {\n\t\t\t\t\tconst { index } = result;\n\t\t\t\t\tdelete result.index;\n\t\t\t\t\tresults[index] = result;\n\t\t\t\t}\n\t\t\t\tresolve_();\n\t\t\t},\n\t\t);\n\t\tworker.once(\"error\", error => {\n\t\t\tabortController.abort(error);\n\t\t\treject(error);\n\t\t});\n\t\tabortSignal.addEventListener(\"abort\", () => worker.terminate());\n\t}\n\n\tconst promises = Array(workerCount);\n\tfor (let index = 0; index < workerCount; ++index) {\n\t\tpromises[index] = new Promise(workerExecutor);\n\t}\n\n\ttry {\n\t\tawait Promise.all(promises);\n\t} catch (error) {\n\t\t/*\n\t\t * If any worker fails, suppress timing display in the main thread\n\t\t * to avoid printing partial or misleading timing output.\n\t\t */\n\t\ttiming.disableDisplay();\n\t\tthrow error;\n\t}\n\n\tif (worstNetLintingRatio < LOW_NET_LINTING_RATIO) {\n\t\twarnOnLowNetLintingRatio();\n\t}\n\n\treturn results;\n}\n\n/**\n * Lint files in multithread mode.\n * @param {ESLint} eslint ESLint instance.\n * @param {string[]} filePaths File paths to lint.\n * @param {number} workerCount The number of worker threads to run.\n * @param {ESLintOptions | string} eslintOptionsOrURL The unprocessed ESLint options or the URL of the options module.\n * @param {() => void} warnOnLowNetLintingRatio A function to call if the net linting ratio is low.\n * @returns {Promise<LintResult[]>} Lint results.\n */\nasync function lintFilesWithMultithreading(\n\teslint,\n\tfilePaths,\n\tworkerCount,\n\teslintOptionsOrURL,\n\twarnOnLowNetLintingRatio,\n) {\n\tconst { configLoader, lintResultCache } = privateMembers.get(eslint);\n\n\tconst results = await runWorkers(\n\t\tfilePaths,\n\t\tworkerCount,\n\t\teslintOptionsOrURL,\n\t\twarnOnLowNetLintingRatio,\n\t);\n\t// Persist the cache to disk.\n\tif (lintResultCache) {\n\t\tresults.forEach((result, index) => {\n\t\t\tif (result) {\n\t\t\t\tconst filePath = filePaths[index];\n\t\t\t\tconst configs =\n\t\t\t\t\tconfigLoader.getCachedConfigArrayForFile(filePath);\n\t\t\t\tconst config = configs.getConfig(filePath);\n\n\t\t\t\tif (config) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Store the lint result in the LintResultCache.\n\t\t\t\t\t * NOTE: The LintResultCache will remove the file source and any\n\t\t\t\t\t * other properties that are difficult to serialize, and will\n\t\t\t\t\t * hydrate those properties back in on future lint runs.\n\t\t\t\t\t */\n\t\t\t\t\tlintResultCache.setCachedLintResults(\n\t\t\t\t\t\tfilePath,\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tresult,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n\n/**\n * Lint files in single-thread mode.\n * @param {ESLint} eslint ESLint instance.\n * @param {string[]} filePaths File paths to lint.\n * @returns {Promise<LintResult[]>} Lint results.\n */\nasync function lintFilesWithoutMultithreading(eslint, filePaths) {\n\tconst {\n\t\tconfigLoader,\n\t\tlinter,\n\t\tlintResultCache,\n\t\toptions: eslintOptions,\n\t} = privateMembers.get(eslint);\n\n\tconst controller = new AbortController();\n\tconst retrier = new Retrier(error => fileRetryCodes.has(error.code), {\n\t\tconcurrency: 100,\n\t});\n\n\t/*\n\t * Because we need to process multiple files, including reading from disk,\n\t * it is most efficient to start by reading each file via promises so that\n\t * they can be done in parallel. Then, we can lint the returned text. This\n\t * ensures we are waiting the minimum amount of time in between lints.\n\t */\n\tconst results = await Promise.all(\n\t\tfilePaths.map(async filePath => {\n\t\t\tconst configs = configLoader.getCachedConfigArrayForFile(filePath);\n\t\t\tconst config = configs.getConfig(filePath);\n\n\t\t\tconst result = await lintFile(\n\t\t\t\tfilePath,\n\t\t\t\tconfigs,\n\t\t\t\teslintOptions,\n\t\t\t\tlinter,\n\t\t\t\tlintResultCache,\n\t\t\t\tnull,\n\t\t\t\tretrier,\n\t\t\t\tcontroller,\n\t\t\t);\n\n\t\t\tif (config) {\n\t\t\t\t/*\n\t\t\t\t * Store the lint result in the LintResultCache.\n\t\t\t\t * NOTE: The LintResultCache will remove the file source and any\n\t\t\t\t * other properties that are difficult to serialize, and will\n\t\t\t\t * hydrate those properties back in on future lint runs.\n\t\t\t\t */\n\t\t\t\tlintResultCache?.setCachedLintResults(filePath, config, result);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}),\n\t);\n\treturn results;\n}\n\n/**\n * Throws an error if the given options are not cloneable.\n * @param {ESLintOptions} options The options to check.\n * @returns {void}\n * @throws {TypeError} If the options are not cloneable.\n */\nfunction validateOptionCloneability(options) {\n\ttry {\n\t\tstructuredClone(options);\n\t\treturn;\n\t} catch {\n\t\t// continue\n\t}\n\tconst uncloneableOptionKeys = Object.keys(options)\n\t\t.filter(key => {\n\t\t\ttry {\n\t\t\t\tstructuredClone(options[key]);\n\t\t\t} catch {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t})\n\t\t.sort();\n\tconst error = new TypeError(\n\t\t`The ${uncloneableOptionKeys.length === 1 ? \"option\" : \"options\"} ${new Intl.ListFormat(\"en-US\").format(uncloneableOptionKeys.map(key => `\"${key}\"`))} cannot be cloned. When concurrency is enabled, all options must be cloneable values (JSON values). Remove uncloneable options or use an options module.`,\n\t);\n\terror.code = \"ESLINT_UNCLONEABLE_OPTIONS\";\n\tthrow error;\n}\n\n//-----------------------------------------------------------------------------\n// Main API\n//-----------------------------------------------------------------------------\n\n/**\n * Primary Node.js API for ESLint.\n */\nclass ESLint {\n\t/**\n\t * The type of configuration used by this class.\n\t * @type {string}\n\t */\n\tstatic configType = \"flat\";\n\n\t/**\n\t * The loader to use for finding config files.\n\t * @type {ConfigLoader}\n\t */\n\t#configLoader;\n\n\t/**\n\t * The unprocessed options or the URL of the options module. Only set when concurrency is enabled.\n\t * @type {ESLintOptions | string | undefined}\n\t */\n\t#optionsOrURL;\n\n\t/**\n\t * Creates a new instance of the main ESLint API.\n\t * @param {ESLintOptions} options The options for this instance.\n\t */\n\tconstructor(options = {}) {\n\t\tconst processedOptions = processOptions(options);\n\t\tif (\n\t\t\t!options[disableCloneabilityCheck] &&\n\t\t\tprocessedOptions.concurrency !== \"off\"\n\t\t) {\n\t\t\tvalidateOptionCloneability(options);\n\n\t\t\t// Save the unprocessed options in an instance field to pass to worker threads in `lintFiles()`.\n\t\t\tthis.#optionsOrURL = options;\n\t\t}\n\t\tconst warningService = new WarningService();\n\t\tconst linter = createLinter(processedOptions, warningService);\n\n\t\tconst cacheFilePath = getCacheFile(\n\t\t\tprocessedOptions.cacheLocation,\n\t\t\tprocessedOptions.cwd,\n\t\t);\n\n\t\tconst lintResultCache = createLintResultCache(\n\t\t\tprocessedOptions,\n\t\t\tcacheFilePath,\n\t\t);\n\n\t\tlet suppressionsService = null;\n\t\tif (processedOptions.applySuppressions) {\n\t\t\tconst suppressionsFilePath = getCacheFile(\n\t\t\t\tprocessedOptions.suppressionsLocation,\n\t\t\t\tprocessedOptions.cwd,\n\t\t\t\t{ prefix: \"suppressions_\" },\n\t\t\t);\n\t\t\tsuppressionsService = new SuppressionsService({\n\t\t\t\tfilePath: suppressionsFilePath,\n\t\t\t\tcwd: processedOptions.cwd,\n\t\t\t});\n\t\t}\n\n\t\tconst defaultConfigs = createDefaultConfigs(options.plugins);\n\n\t\tthis.#configLoader = createConfigLoader(\n\t\t\tprocessedOptions,\n\t\t\tdefaultConfigs,\n\t\t\tlinter,\n\t\t\twarningService,\n\t\t);\n\n\t\tdebug(`Using config loader ${this.#configLoader.constructor.name}`);\n\n\t\tprivateMembers.set(this, {\n\t\t\toptions: processedOptions,\n\t\t\tlinter,\n\t\t\tcacheFilePath,\n\t\t\tlintResultCache,\n\t\t\tdefaultConfigs,\n\t\t\tconfigs: null,\n\t\t\tconfigLoader: this.#configLoader,\n\t\t\twarningService,\n\t\t\tsuppressionsService,\n\t\t});\n\n\t\t// Check for the .eslintignore file, and warn if it's present.\n\t\tif (existsSync(path.resolve(processedOptions.cwd, \".eslintignore\"))) {\n\t\t\twarningService.emitESLintIgnoreWarning();\n\t\t}\n\t}\n\n\t/**\n\t * The version text.\n\t * @type {string}\n\t */\n\tstatic get version() {\n\t\treturn version;\n\t}\n\n\t/**\n\t * The default configuration that ESLint uses internally. This is provided for tooling that wants to calculate configurations using the same defaults as ESLint.\n\t * Keep in mind that the default configuration may change from version to version, so you shouldn't rely on any particular keys or values to be present.\n\t * @type {FlatConfigArray}\n\t */\n\tstatic get defaultConfig() {\n\t\treturn defaultConfig;\n\t}\n\n\t/**\n\t * Outputs fixes from the given results to files.\n\t * @param {LintResult[]} results The lint results.\n\t * @returns {Promise<void>} Returns a promise that is used to track side effects.\n\t */\n\tstatic async outputFixes(results) {\n\t\tif (!Array.isArray(results)) {\n\t\t\tthrow new Error(\"'results' must be an array\");\n\t\t}\n\n\t\tconst retrier = new Retrier(error => fileRetryCodes.has(error.code), {\n\t\t\tconcurrency: 100,\n\t\t});\n\n\t\tawait Promise.all(\n\t\t\tresults\n\t\t\t\t.filter(result => {\n\t\t\t\t\tif (typeof result !== \"object\" || result === null) {\n\t\t\t\t\t\tthrow new Error(\"'results' must include only objects\");\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\ttypeof result.output === \"string\" &&\n\t\t\t\t\t\tpath.isAbsolute(result.filePath)\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.map(r =>\n\t\t\t\t\tretrier.retry(() => fs.writeFile(r.filePath, r.output)),\n\t\t\t\t),\n\t\t);\n\t}\n\n\t/**\n\t * Returns results that only contains errors.\n\t * @param {LintResult[]} results The results to filter.\n\t * @returns {LintResult[]} The filtered results.\n\t */\n\tstatic getErrorResults(results) {\n\t\tconst filtered = [];\n\n\t\tresults.forEach(result => {\n\t\t\tconst filteredMessages = result.messages.filter(isErrorMessage);\n\t\t\tconst filteredSuppressedMessages =\n\t\t\t\tresult.suppressedMessages.filter(isErrorMessage);\n\n\t\t\tif (filteredMessages.length > 0) {\n\t\t\t\tfiltered.push({\n\t\t\t\t\t...result,\n\t\t\t\t\tmessages: filteredMessages,\n\t\t\t\t\tsuppressedMessages: filteredSuppressedMessages,\n\t\t\t\t\terrorCount: filteredMessages.length,\n\t\t\t\t\twarningCount: 0,\n\t\t\t\t\tfixableErrorCount: result.fixableErrorCount,\n\t\t\t\t\tfixableWarningCount: 0,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn filtered;\n\t}\n\n\t/**\n\t * Creates a new ESLint instance using options loaded from a module.\n\t * @param {URL} optionsURL The URL of the options module.\n\t * @returns {ESLint} The new ESLint instance.\n\t */\n\tstatic async fromOptionsModule(optionsURL) {\n\t\tif (!(optionsURL instanceof URL)) {\n\t\t\tthrow new TypeError(\"Argument must be a URL object\");\n\t\t}\n\t\tconst optionsURLString = optionsURL.href;\n\t\tconst loadedOptions = await loadOptionsFromModule(optionsURLString);\n\t\tconst options = { ...loadedOptions, [disableCloneabilityCheck]: true };\n\t\tconst eslint = new ESLint(options);\n\n\t\tif (options.concurrency !== \"off\") {\n\t\t\t// Save the options module URL in an instance field to pass to worker threads in `lintFiles()`.\n\t\t\teslint.#optionsOrURL = optionsURLString;\n\t\t}\n\t\treturn eslint;\n\t}\n\n\t/**\n\t * Returns meta objects for each rule represented in the lint results.\n\t * @param {LintResult[]} results The results to fetch rules meta for.\n\t * @returns {Record<string, RulesMeta>} A mapping of ruleIds to rule meta objects.\n\t * @throws {TypeError} When the results object wasn't created from this ESLint instance.\n\t * @throws {TypeError} When a plugin or rule is missing.\n\t */\n\tgetRulesMetaForResults(results) {\n\t\t// short-circuit simple case\n\t\tif (results.length === 0) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst resultRules = new Map();\n\t\tconst {\n\t\t\tconfigLoader,\n\t\t\toptions: { cwd },\n\t\t} = privateMembers.get(this);\n\n\t\tfor (const result of results) {\n\t\t\t/*\n\t\t\t * Normalize filename for <text>.\n\t\t\t */\n\t\t\tconst filePath =\n\t\t\t\tresult.filePath === \"<text>\"\n\t\t\t\t\t? getPlaceholderPath(cwd)\n\t\t\t\t\t: result.filePath;\n\t\t\tconst allMessages = result.messages.concat(\n\t\t\t\tresult.suppressedMessages,\n\t\t\t);\n\n\t\t\tfor (const { ruleId } of allMessages) {\n\t\t\t\tif (!ruleId) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * All of the plugin and rule information is contained within the\n\t\t\t\t * calculated config for the given file.\n\t\t\t\t */\n\t\t\t\tlet configs;\n\n\t\t\t\ttry {\n\t\t\t\t\tconfigs =\n\t\t\t\t\t\tconfigLoader.getCachedConfigArrayForFile(filePath);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tthrow createExtraneousResultsError(err);\n\t\t\t\t}\n\n\t\t\t\tconst config = configs.getConfig(filePath);\n\n\t\t\t\tif (!config) {\n\t\t\t\t\tthrow createExtraneousResultsError();\n\t\t\t\t}\n\t\t\t\tconst rule = config.getRuleDefinition(ruleId);\n\n\t\t\t\t// ignore unknown rules\n\t\t\t\tif (rule) {\n\t\t\t\t\tresultRules.set(ruleId, rule);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn createRulesMeta(resultRules);\n\t}\n\n\t/**\n\t * Indicates if the given feature flag is enabled for this instance.\n\t * @param {string} flag The feature flag to check.\n\t * @returns {boolean} `true` if the feature flag is enabled, `false` if not.\n\t */\n\thasFlag(flag) {\n\t\t// note: Linter does validation of the flags\n\t\treturn privateMembers.get(this).linter.hasFlag(flag);\n\t}\n\n\t/**\n\t * Executes the current configuration on an array of file and directory names.\n\t * @param {string|string[]} patterns An array of file and directory names.\n\t * @returns {Promise<LintResult[]>} The results of linting the file patterns given.\n\t */\n\tasync lintFiles(patterns) {\n\t\tlet normalizedPatterns = patterns;\n\t\tconst {\n\t\t\tcacheFilePath,\n\t\t\tlintResultCache,\n\t\t\toptions: eslintOptions,\n\t\t\twarningService,\n\t\t\tsuppressionsService,\n\t\t} = privateMembers.get(this);\n\n\t\t/*\n\t\t * Special cases:\n\t\t * 1. `patterns` is an empty string\n\t\t * 2. `patterns` is an empty array\n\t\t *\n\t\t * In both cases, we use the cwd as the directory to lint.\n\t\t */\n\t\tif (\n\t\t\tpatterns === \"\" ||\n\t\t\t(Array.isArray(patterns) && patterns.length === 0)\n\t\t) {\n\t\t\t/*\n\t\t\t * Special case: If `passOnNoPatterns` is true, then we just exit\n\t\t\t * without doing any work.\n\t\t\t */\n\t\t\tif (eslintOptions.passOnNoPatterns) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tnormalizedPatterns = [\".\"];\n\t\t} else {\n\t\t\tif (\n\t\t\t\t!isNonEmptyString(patterns) &&\n\t\t\t\t!isArrayOfNonEmptyString(patterns)\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"'patterns' must be a non-empty string or an array of non-empty strings\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof patterns === \"string\") {\n\t\t\t\tnormalizedPatterns = [patterns];\n\t\t\t}\n\t\t}\n\n\t\tdebug(`Using file patterns: ${normalizedPatterns}`);\n\n\t\tconst { concurrency, cwd, globInputPaths, errorOnUnmatchedPattern } =\n\t\t\teslintOptions;\n\n\t\t// Delete cache file; should this be done here?\n\t\tif (!lintResultCache && cacheFilePath) {\n\t\t\tdebug(`Deleting cache file at ${cacheFilePath}`);\n\n\t\t\ttry {\n\t\t\t\tif (existsSync(cacheFilePath)) {\n\t\t\t\t\tawait fs.unlink(cacheFilePath);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (existsSync(cacheFilePath)) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst startTime = hrtimeBigint();\n\t\tconst filePaths = await findFiles({\n\t\t\tpatterns: normalizedPatterns,\n\t\t\tcwd,\n\t\t\tglobInputPaths,\n\t\t\tconfigLoader: this.#configLoader,\n\t\t\terrorOnUnmatchedPattern,\n\t\t});\n\t\tdebug(\n\t\t\t\"%d file(s) found in %t\",\n\t\t\tfilePaths.length,\n\t\t\thrtimeBigint() - startTime,\n\t\t);\n\n\t\t/** @type {LintResult[]} */\n\t\tlet results;\n\n\t\t// The value of `module.exports.calculateWorkerCount` can be overridden in tests.\n\t\tconst workerCount = module.exports.calculateWorkerCount(\n\t\t\tthis,\n\t\t\tfilePaths,\n\t\t);\n\t\tif (workerCount) {\n\t\t\tdebug(`Linting using ${workerCount} worker thread(s).`);\n\t\t\tlet poorConcurrencyNotice;\n\t\t\tif (workerCount <= 2) {\n\t\t\t\tpoorConcurrencyNotice = \"disable concurrency\";\n\t\t\t} else {\n\t\t\t\tif (concurrency === \"auto\") {\n\t\t\t\t\tpoorConcurrencyNotice =\n\t\t\t\t\t\t\"disable concurrency or use a numeric concurrency setting\";\n\t\t\t\t} else {\n\t\t\t\t\tpoorConcurrencyNotice = \"reduce or disable concurrency\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tresults = await lintFilesWithMultithreading(\n\t\t\t\tthis,\n\t\t\t\tfilePaths,\n\t\t\t\tworkerCount,\n\t\t\t\tthis.#optionsOrURL,\n\t\t\t\t() =>\n\t\t\t\t\twarningService.emitPoorConcurrencyWarning(\n\t\t\t\t\t\tpoorConcurrencyNotice,\n\t\t\t\t\t),\n\t\t\t);\n\t\t} else {\n\t\t\tdebug(`Linting in single-thread mode.`);\n\t\t\tresults = await lintFilesWithoutMultithreading(this, filePaths);\n\t\t}\n\n\t\t// Persist the cache to disk.\n\t\tif (lintResultCache) {\n\t\t\tlintResultCache.reconcile();\n\t\t}\n\n\t\tconst unsuppressedResults = results.filter(result => !!result);\n\n\t\tif (!eslintOptions.applySuppressions) {\n\t\t\treturn processLintReport(this, unsuppressedResults);\n\t\t}\n\n\t\tconst { results: suppressedResults } =\n\t\t\tsuppressionsService.applySuppressions(\n\t\t\t\tunsuppressedResults,\n\t\t\t\tawait suppressionsService.load(),\n\t\t\t);\n\n\t\treturn processLintReport(this, suppressedResults);\n\t}\n\n\t/**\n\t * Executes the current configuration on text.\n\t * @param {string} code A string of JavaScript code to lint.\n\t * @param {Object} [options] The options.\n\t * @param {string} [options.filePath] The path to the file of the source code.\n\t * @param {boolean} [options.warnIgnored] When set to true, warn if given filePath is an ignored path.\n\t * @returns {Promise<LintResult[]>} The results of linting the string of code given.\n\t */\n\tasync lintText(code, options = {}) {\n\t\t// Parameter validation\n\n\t\tif (typeof code !== \"string\") {\n\t\t\tthrow new Error(\"'code' must be a string\");\n\t\t}\n\n\t\tif (typeof options !== \"object\") {\n\t\t\tthrow new Error(\"'options' must be an object, null, or undefined\");\n\t\t}\n\n\t\t// Options validation\n\n\t\tconst { filePath, warnIgnored, ...unknownOptions } = options || {};\n\n\t\tconst unknownOptionKeys = Object.keys(unknownOptions);\n\n\t\tif (unknownOptionKeys.length > 0) {\n\t\t\tthrow new Error(\n\t\t\t\t`'options' must not include the unknown option(s): ${unknownOptionKeys.join(\", \")}`,\n\t\t\t);\n\t\t}\n\n\t\tif (filePath !== void 0 && !isNonEmptyString(filePath)) {\n\t\t\tthrow new Error(\n\t\t\t\t\"'options.filePath' must be a non-empty string or undefined\",\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\ttypeof warnIgnored !== \"boolean\" &&\n\t\t\ttypeof warnIgnored !== \"undefined\"\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t\"'options.warnIgnored' must be a boolean or undefined\",\n\t\t\t);\n\t\t}\n\n\t\t// Now we can get down to linting\n\n\t\tconst {\n\t\t\tlinter,\n\t\t\toptions: eslintOptions,\n\t\t\tsuppressionsService,\n\t\t} = privateMembers.get(this);\n\t\tconst {\n\t\t\tallowInlineConfig,\n\t\t\tcwd,\n\t\t\tfix,\n\t\t\tfixTypes,\n\t\t\twarnIgnored: constructorWarnIgnored,\n\t\t\truleFilter,\n\t\t\tstats,\n\t\t} = eslintOptions;\n\t\tconst results = [];\n\t\tconst startTime = hrtimeBigint();\n\t\tconst fixTypesSet = fixTypes ? new Set(fixTypes) : null;\n\t\tconst resolvedFilename = path.resolve(\n\t\t\tcwd,\n\t\t\tfilePath || \"__placeholder__.js\",\n\t\t);\n\t\tconst configs =\n\t\t\tawait this.#configLoader.loadConfigArrayForFile(resolvedFilename);\n\t\tconst configStatus =\n\t\t\tconfigs?.getConfigStatus(resolvedFilename) ?? \"unconfigured\";\n\n\t\t// Clear the last used config arrays.\n\t\tif (resolvedFilename && configStatus !== \"matched\") {\n\t\t\tconst shouldWarnIgnored =\n\t\t\t\ttypeof warnIgnored === \"boolean\"\n\t\t\t\t\t? warnIgnored\n\t\t\t\t\t: constructorWarnIgnored;\n\n\t\t\tif (shouldWarnIgnored) {\n\t\t\t\tresults.push(\n\t\t\t\t\tcreateIgnoreResult(resolvedFilename, cwd, configStatus),\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tconst config = configs.getConfig(resolvedFilename);\n\t\t\tconst fixer = getFixerForFixTypes(fix, fixTypesSet, config);\n\n\t\t\t// Do lint.\n\t\t\tresults.push(\n\t\t\t\tverifyText({\n\t\t\t\t\ttext: code,\n\t\t\t\t\tfilePath: resolvedFilename.endsWith(\"__placeholder__.js\")\n\t\t\t\t\t\t? \"<text>\"\n\t\t\t\t\t\t: resolvedFilename,\n\t\t\t\t\tconfigs,\n\t\t\t\t\tcwd,\n\t\t\t\t\tfix: fixer,\n\t\t\t\t\tallowInlineConfig,\n\t\t\t\t\truleFilter,\n\t\t\t\t\tstats,\n\t\t\t\t\tlinter,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tdebug(\"Linting complete in %t\", hrtimeBigint() - startTime);\n\n\t\tif (!filePath || !eslintOptions.applySuppressions) {\n\t\t\treturn processLintReport(this, results);\n\t\t}\n\n\t\tconst { results: suppressedResults } =\n\t\t\tsuppressionsService.applySuppressions(\n\t\t\t\tresults,\n\t\t\t\tawait suppressionsService.load(),\n\t\t\t);\n\t\treturn processLintReport(this, suppressedResults);\n\t}\n\n\t/**\n\t * Returns the formatter representing the given formatter name.\n\t * @param {string} [name] The name of the formatter to load.\n\t * The following values are allowed:\n\t * - `undefined` ... Load `stylish` builtin formatter.\n\t * - A builtin formatter name ... Load the builtin formatter.\n\t * - A third-party formatter name:\n\t *   - `foo` \u2192 `eslint-formatter-foo`\n\t *   - `@foo` \u2192 `@foo/eslint-formatter`\n\t *   - `@foo/bar` \u2192 `@foo/eslint-formatter-bar`\n\t * - A file path ... Load the file.\n\t * @returns {Promise<Formatter>} A promise resolving to the formatter object.\n\t * This promise will be rejected if the given formatter was not found or not\n\t * a function.\n\t */\n\tasync loadFormatter(name = \"stylish\") {\n\t\tif (typeof name !== \"string\") {\n\t\t\tthrow new Error(\"'name' must be a string\");\n\t\t}\n\n\t\t// replace \\ with / for Windows compatibility\n\t\tconst normalizedFormatName = name.replace(/\\\\/gu, \"/\");\n\t\tconst namespace = getNamespaceFromTerm(normalizedFormatName);\n\n\t\t// grab our options\n\t\tconst { cwd } = privateMembers.get(this).options;\n\n\t\tlet formatterPath;\n\t\tlet isBuiltInFormatter = false;\n\n\t\t// if there's a slash, then it's a file (TODO: this check seems dubious for scoped npm packages)\n\t\tif (!namespace && normalizedFormatName.includes(\"/\")) {\n\t\t\tformatterPath = path.resolve(cwd, normalizedFormatName);\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tconst npmFormat = normalizePackageName(\n\t\t\t\t\tnormalizedFormatName,\n\t\t\t\t\t\"eslint-formatter\",\n\t\t\t\t);\n\n\t\t\t\t// TODO: This is pretty dirty...would be nice to clean up at some point.\n\t\t\t\tformatterPath = resolve(npmFormat, getPlaceholderPath(cwd));\n\t\t\t} catch {\n\t\t\t\tformatterPath = path.resolve(\n\t\t\t\t\t__dirname,\n\t\t\t\t\t\"../\",\n\t\t\t\t\t\"cli-engine\",\n\t\t\t\t\t\"formatters\",\n\t\t\t\t\t`${normalizedFormatName}.js`,\n\t\t\t\t);\n\t\t\t\tisBuiltInFormatter = true;\n\t\t\t}\n\t\t}\n\n\t\tlet formatter;\n\n\t\ttry {\n\t\t\tformatter = (await import(pathToFileURL(formatterPath))).default;\n\t\t} catch (ex) {\n\t\t\t// check for formatters that have been removed\n\t\t\tif (isBuiltInFormatter && removedFormatters.has(name)) {\n\t\t\t\tex.message = `The ${name} formatter is no longer part of core ESLint. Install it manually with \\`npm install -D eslint-formatter-${name}\\``;\n\t\t\t} else {\n\t\t\t\tex.message = `There was a problem loading formatter: ${formatterPath}\\nError: ${ex.message}`;\n\t\t\t}\n\n\t\t\tthrow ex;\n\t\t}\n\n\t\tif (typeof formatter !== \"function\") {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Formatter must be a function, but got a ${typeof formatter}.`,\n\t\t\t);\n\t\t}\n\n\t\tconst eslint = this;\n\n\t\treturn {\n\t\t\t/**\n\t\t\t * The main formatter method.\n\t\t\t * @param {LintResult[]} results The lint results to format.\n\t\t\t * @param {ResultsMeta} resultsMeta Warning count and max threshold.\n\t\t\t * @returns {string} The formatted lint results.\n\t\t\t */\n\t\t\tformat(results, resultsMeta) {\n\t\t\t\tlet rulesMeta = null;\n\n\t\t\t\tresults.sort(compareResultsByFilePath);\n\n\t\t\t\treturn formatter(results, {\n\t\t\t\t\t...resultsMeta,\n\t\t\t\t\tcwd,\n\t\t\t\t\tget rulesMeta() {\n\t\t\t\t\t\tif (!rulesMeta) {\n\t\t\t\t\t\t\trulesMeta = eslint.getRulesMetaForResults(results);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn rulesMeta;\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Returns a configuration object for the given file based on the CLI options.\n\t * This is the same logic used by the ESLint CLI executable to determine\n\t * configuration for each file it processes.\n\t * @param {string} filePath The path of the file to retrieve a config object for.\n\t * @returns {Promise<CalculatedConfig|undefined>} A configuration object for the file\n\t *      or `undefined` if there is no configuration data for the object.\n\t */\n\tasync calculateConfigForFile(filePath) {\n\t\tif (!isNonEmptyString(filePath)) {\n\t\t\tthrow new Error(\"'filePath' must be a non-empty string\");\n\t\t}\n\t\tconst options = privateMembers.get(this).options;\n\t\tconst absolutePath = path.resolve(options.cwd, filePath);\n\t\tconst configs =\n\t\t\tawait this.#configLoader.loadConfigArrayForFile(absolutePath);\n\n\t\tif (!configs) {\n\t\t\tconst error = new Error(\"Could not find config file.\");\n\n\t\t\terror.messageTemplate = \"config-file-missing\";\n\t\t\tthrow error;\n\t\t}\n\n\t\treturn configs.getConfig(absolutePath);\n\t}\n\n\t/**\n\t * Finds the config file being used by this instance based on the options\n\t * passed to the constructor.\n\t * @param {string} [filePath] The path of the file to find the config file for.\n\t * @returns {Promise<string|undefined>} The path to the config file being used or\n\t *      `undefined` if no config file is being used.\n\t */\n\tasync findConfigFile(filePath) {\n\t\tconst options = privateMembers.get(this).options;\n\n\t\t/*\n\t\t * Because the new config lookup scheme skips the current directory\n\t\t * and looks into the parent directories, we need to use a placeholder\n\t\t * directory to ensure the file in cwd is checked.\n\t\t */\n\t\tconst fakeCwd = path.join(options.cwd, \"__placeholder__\");\n\n\t\treturn this.#configLoader\n\t\t\t.findConfigFileForPath(filePath ?? fakeCwd)\n\t\t\t.catch(() => void 0);\n\t}\n\n\t/**\n\t * Checks if a given path is ignored by ESLint.\n\t * @param {string} filePath The path of the file to check.\n\t * @returns {Promise<boolean>} Whether or not the given path is ignored.\n\t */\n\tasync isPathIgnored(filePath) {\n\t\tconst config = await this.calculateConfigForFile(filePath);\n\n\t\treturn config === void 0;\n\t}\n}\n\n/**\n * Returns whether flat config should be used.\n * @returns {Promise<true>} Whether flat config should be used.\n */\nasync function shouldUseFlatConfig() {\n\treturn true;\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nmodule.exports = {\n\tESLint,\n\tshouldUseFlatConfig,\n\tlocateConfigFileToUse,\n\tcalculateWorkerCount,\n};\n", "/**\n * @fileoverview Serialization utils.\n * @author Bryan Mishkin\n */\n\n\"use strict\";\n\n/**\n * Check if a value is a primitive or plain object created by the Object constructor.\n * @param {any} val the value to check\n * @returns {boolean} true if so\n * @private\n */\nfunction isSerializablePrimitiveOrPlainObject(val) {\n\treturn (\n\t\tval === null ||\n\t\ttypeof val === \"string\" ||\n\t\ttypeof val === \"boolean\" ||\n\t\ttypeof val === \"number\" ||\n\t\t(typeof val === \"object\" && val.constructor === Object) ||\n\t\tArray.isArray(val)\n\t);\n}\n\n/**\n * Check if a value is serializable.\n * Functions or objects like RegExp cannot be serialized by JSON.stringify().\n * Inspired by: https://stackoverflow.com/questions/30579940/reliable-way-to-check-if-objects-is-serializable-in-javascript\n * @param {any} val The value\n * @param {Set<Object>} seenObjects Objects already seen in this path from the root object.\n * @returns {boolean} `true` if the value is serializable\n */\nfunction isSerializable(val, seenObjects = new Set()) {\n\tif (!isSerializablePrimitiveOrPlainObject(val)) {\n\t\treturn false;\n\t}\n\tif (typeof val === \"object\" && val !== null) {\n\t\tif (seenObjects.has(val)) {\n\t\t\t/*\n\t\t\t * Since this is a depth-first traversal, encountering\n\t\t\t * the same object again means there is a circular reference.\n\t\t\t * Objects with circular references are not serializable.\n\t\t\t */\n\t\t\treturn false;\n\t\t}\n\t\tfor (const property in val) {\n\t\t\tif (Object.hasOwn(val, property)) {\n\t\t\t\tif (!isSerializablePrimitiveOrPlainObject(val[property])) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\ttypeof val[property] === \"object\" &&\n\t\t\t\t\tval[property] !== null\n\t\t\t\t) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * We're creating a new Set of seen objects because we want to\n\t\t\t\t\t\t * ensure that `val` doesn't appear again in this path, but it can appear\n\t\t\t\t\t\t * in other paths. This allows for reusing objects in the graph, as long as\n\t\t\t\t\t\t * there are no cycles.\n\t\t\t\t\t\t */\n\t\t\t\t\t\t!isSerializable(\n\t\t\t\t\t\t\tval[property],\n\t\t\t\t\t\t\tnew Set([...seenObjects, val]),\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n\nmodule.exports = {\n\tisSerializable,\n};\n", "/**\n * @fileoverview Mocha/Jest test wrapper\n * @author Ilya Volodin\n */\n\"use strict\";\n\n/* globals describe, it -- Mocha globals */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nconst assert = require(\"node:assert\"),\n\t{ existsSync, readFileSync } = require(\"node:fs\"),\n\tutil = require(\"node:util\"),\n\tpath = require(\"node:path\"),\n\tequal = require(\"fast-deep-equal\"),\n\tTraverser = require(\"../shared/traverser\"),\n\t{ Config } = require(\"../config/config\"),\n\t{ Linter, SourceCodeFixer } = require(\"../linter\"),\n\t{ interpolate, getPlaceholderMatcher } = require(\"../linter/interpolate\"),\n\tstringify = require(\"json-stable-stringify-without-jsonify\"),\n\t{ isSerializable } = require(\"../shared/serialization\");\n\nconst { FlatConfigArray } = require(\"../config/flat-config-array\");\nconst {\n\tdefaultConfig,\n\tdefaultRuleTesterConfig,\n} = require(\"../config/default-config\");\n\nconst ajv = require(\"../shared/ajv\")({ strictDefaults: true });\n\nconst parserSymbol = Symbol.for(\"eslint.RuleTester.parser\");\nconst { ConfigArraySymbol } = require(\"@eslint/config-array\");\n\nconst jslang = require(\"../languages/js\");\nconst { SourceCode } = require(\"../languages/js/source-code\");\n\n//------------------------------------------------------------------------------\n// Typedefs\n//------------------------------------------------------------------------------\n\n/** @import { LanguageOptions, RuleDefinition } from \"@eslint/core\" */\n\n/** @typedef {import(\"../types\").Linter.Parser} Parser */\n\n/**\n * A test case that is expected to pass lint.\n * @typedef {Object} ValidTestCase\n * @property {string} [name] Name for the test case.\n * @property {string} code Code for the test case.\n * @property {any[]} [options] Options for the test case.\n * @property {Function} [before] Function to execute before testing the case.\n * @property {Function} [after] Function to execute after testing the case regardless of its result.\n * @property {LanguageOptions} [languageOptions] The language options to use in the test case.\n * @property {{ [name: string]: any }} [settings] Settings for the test case.\n * @property {string} [filename] The fake filename for the test case. Useful for rules that make assertion about filenames.\n * @property {boolean} [only] Run only this test case or the subset of test cases with this property.\n */\n\n/**\n * A test case that is expected to fail lint.\n * @typedef {Object} InvalidTestCase\n * @property {string} [name] Name for the test case.\n * @property {string} code Code for the test case.\n * @property {number | Array<TestCaseError | string | RegExp>} errors Expected errors.\n * @property {string | null} [output] The expected code after autofixes are applied. If set to `null`, the test runner will assert that no autofix is suggested.\n * @property {any[]} [options] Options for the test case.\n * @property {Function} [before] Function to execute before testing the case.\n * @property {Function} [after] Function to execute after testing the case regardless of its result.\n * @property {{ [name: string]: any }} [settings] Settings for the test case.\n * @property {string} [filename] The fake filename for the test case. Useful for rules that make assertion about filenames.\n * @property {LanguageOptions} [languageOptions] The language options to use in the test case.\n * @property {boolean} [only] Run only this test case or the subset of test cases with this property.\n */\n\n/**\n * A description of a reported error used in a rule tester test.\n * @typedef {Object} TestCaseError\n * @property {string | RegExp} [message] Message.\n * @property {string} [messageId] Message ID.\n * @property {{ [name: string]: string }} [data] The data used to fill the message template.\n * @property {number} [line] The 1-based line number of the reported start location.\n * @property {number} [column] The 1-based column number of the reported start location.\n * @property {number} [endLine] The 1-based line number of the reported end location.\n * @property {number} [endColumn] The 1-based column number of the reported end location.\n */\n\n//------------------------------------------------------------------------------\n// Private Members\n//------------------------------------------------------------------------------\n\n/*\n * testerDefaultConfig must not be modified as it allows to reset the tester to\n * the initial default configuration\n */\nconst testerDefaultConfig = { rules: {} };\n\n/*\n * RuleTester uses this config as its default. This can be overwritten via\n * setDefaultConfig().\n */\nlet sharedDefaultConfig = { rules: {} };\n\n/*\n * List every parameters possible on a test case that are not related to eslint\n * configuration\n */\nconst RuleTesterParameters = [\n\t\"name\",\n\t\"code\",\n\t\"filename\",\n\t\"options\",\n\t\"before\",\n\t\"after\",\n\t\"errors\",\n\t\"output\",\n\t\"only\",\n];\n\n/*\n * All allowed property names in error objects.\n */\nconst errorObjectParameters = new Set([\n\t\"message\",\n\t\"messageId\",\n\t\"data\",\n\t\"line\",\n\t\"column\",\n\t\"endLine\",\n\t\"endColumn\",\n\t\"suggestions\",\n]);\nconst friendlyErrorObjectParameterList = `[${[...errorObjectParameters].map(key => `'${key}'`).join(\", \")}]`;\n\n/*\n * All allowed property names in suggestion objects.\n */\nconst suggestionObjectParameters = new Set([\n\t\"desc\",\n\t\"messageId\",\n\t\"data\",\n\t\"output\",\n]);\nconst friendlySuggestionObjectParameterList = `[${[...suggestionObjectParameters].map(key => `'${key}'`).join(\", \")}]`;\n\nconst forbiddenMethods = [\n\t\"applyInlineConfig\",\n\t\"applyLanguageOptions\",\n\t\"finalize\",\n];\n\n/** @type {Map<string,WeakSet>} */\nconst forbiddenMethodCalls = new Map(\n\tforbiddenMethods.map(methodName => [methodName, new WeakSet()]),\n);\n\nconst hasOwnProperty = Function.call.bind(Object.hasOwnProperty);\n\n/**\n * Clones a given value deeply.\n * Note: This ignores `parent` property.\n * @param {any} x A value to clone.\n * @returns {any} A cloned value.\n */\nfunction cloneDeeplyExcludesParent(x) {\n\tif (typeof x === \"object\" && x !== null) {\n\t\tif (Array.isArray(x)) {\n\t\t\treturn x.map(cloneDeeplyExcludesParent);\n\t\t}\n\n\t\tconst retv = {};\n\n\t\tfor (const key in x) {\n\t\t\tif (key !== \"parent\" && hasOwnProperty(x, key)) {\n\t\t\t\tretv[key] = cloneDeeplyExcludesParent(x[key]);\n\t\t\t}\n\t\t}\n\n\t\treturn retv;\n\t}\n\n\treturn x;\n}\n\n/**\n * Freezes a given value deeply.\n * @param {any} x A value to freeze.\n * @param {Set<Object>} seenObjects Objects already seen during the traversal.\n * @returns {void}\n */\nfunction freezeDeeply(x, seenObjects = new Set()) {\n\tif (typeof x === \"object\" && x !== null) {\n\t\tif (seenObjects.has(x)) {\n\t\t\treturn; // skip to avoid infinite recursion\n\t\t}\n\t\tseenObjects.add(x);\n\n\t\tif (Array.isArray(x)) {\n\t\t\tx.forEach(element => {\n\t\t\t\tfreezeDeeply(element, seenObjects);\n\t\t\t});\n\t\t} else {\n\t\t\tfor (const key in x) {\n\t\t\t\tif (key !== \"parent\" && hasOwnProperty(x, key)) {\n\t\t\t\t\tfreezeDeeply(x[key], seenObjects);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tObject.freeze(x);\n\t}\n}\n\n/**\n * Replace control characters by `\\u00xx` form.\n * @param {string} text The text to sanitize.\n * @returns {string} The sanitized text.\n */\nfunction sanitize(text) {\n\tif (typeof text !== \"string\") {\n\t\treturn \"\";\n\t}\n\treturn text.replace(\n\t\t/[\\u0000-\\u0009\\u000b-\\u001a]/gu, // eslint-disable-line no-control-regex -- Escaping controls\n\t\tc => `\\\\u${c.codePointAt(0).toString(16).padStart(4, \"0\")}`,\n\t);\n}\n\n/**\n * Define `start`/`end` properties as throwing error.\n * @param {string} objName Object name used for error messages.\n * @param {ASTNode} node The node to define.\n * @returns {void}\n */\nfunction defineStartEndAsError(objName, node) {\n\tObject.defineProperties(node, {\n\t\tstart: {\n\t\t\tget() {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Use ${objName}.range[0] instead of ${objName}.start`,\n\t\t\t\t);\n\t\t\t},\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t},\n\t\tend: {\n\t\t\tget() {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Use ${objName}.range[1] instead of ${objName}.end`,\n\t\t\t\t);\n\t\t\t},\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t},\n\t});\n}\n\n/**\n * Define `start`/`end` properties of all nodes of the given AST as throwing error.\n * @param {ASTNode} ast The root node to errorize `start`/`end` properties.\n * @param {Object} [visitorKeys] Visitor keys to be used for traversing the given ast.\n * @returns {void}\n */\nfunction defineStartEndAsErrorInTree(ast, visitorKeys) {\n\tTraverser.traverse(ast, {\n\t\tvisitorKeys,\n\t\tenter: defineStartEndAsError.bind(null, \"node\"),\n\t});\n\tast.tokens.forEach(defineStartEndAsError.bind(null, \"token\"));\n\tast.comments.forEach(defineStartEndAsError.bind(null, \"token\"));\n}\n\n/**\n * Wraps the given parser in order to intercept and modify return values from the `parse` and `parseForESLint` methods, for test purposes.\n * In particular, to modify ast nodes, tokens and comments to throw on access to their `start` and `end` properties.\n * @param {Parser} parser Parser object.\n * @returns {Parser} Wrapped parser object.\n */\nfunction wrapParser(parser) {\n\tif (typeof parser.parseForESLint === \"function\") {\n\t\treturn {\n\t\t\t[parserSymbol]: parser,\n\t\t\tparseForESLint(...args) {\n\t\t\t\tconst ret = parser.parseForESLint(...args);\n\n\t\t\t\tdefineStartEndAsErrorInTree(ret.ast, ret.visitorKeys);\n\t\t\t\treturn ret;\n\t\t\t},\n\t\t};\n\t}\n\n\treturn {\n\t\t[parserSymbol]: parser,\n\t\tparse(...args) {\n\t\t\tconst ast = parser.parse(...args);\n\n\t\t\tdefineStartEndAsErrorInTree(ast);\n\t\t\treturn ast;\n\t\t},\n\t};\n}\n\n/**\n * Function to replace forbidden `SourceCode` methods. Allows just one call per method.\n * @param {string} methodName The name of the method to forbid.\n * @param {Function} prototype The prototype with the original method to call.\n * @returns {Function} The function that throws the error.\n */\nfunction throwForbiddenMethodError(methodName, prototype) {\n\tconst original = prototype[methodName];\n\n\treturn function (...args) {\n\t\tconst called = forbiddenMethodCalls.get(methodName);\n\n\t\t/* eslint-disable no-invalid-this -- needed to operate as a method. */\n\t\tif (!called.has(this)) {\n\t\t\tcalled.add(this);\n\n\t\t\treturn original.apply(this, args);\n\t\t}\n\t\t/* eslint-enable no-invalid-this -- not needed past this point */\n\n\t\tthrow new Error(\n\t\t\t`\\`SourceCode#${methodName}()\\` cannot be called inside a rule.`,\n\t\t);\n\t};\n}\n\n/**\n * Extracts names of {{ placeholders }} from the reported message.\n * @param   {string} message Reported message\n * @returns {string[]} Array of placeholder names\n */\nfunction getMessagePlaceholders(message) {\n\tconst matcher = getPlaceholderMatcher();\n\n\treturn Array.from(message.matchAll(matcher), ([, name]) => name.trim());\n}\n\n/**\n * Returns the placeholders in the reported messages but\n * only includes the placeholders available in the raw message and not in the provided data.\n * @param {string} message The reported message\n * @param {string} raw The raw message specified in the rule meta.messages\n * @param {undefined|Record<unknown, unknown>} data The passed\n * @returns {string[]} Missing placeholder names\n */\nfunction getUnsubstitutedMessagePlaceholders(message, raw, data = {}) {\n\tconst unsubstituted = getMessagePlaceholders(message);\n\n\tif (unsubstituted.length === 0) {\n\t\treturn [];\n\t}\n\n\t// Remove false positives by only counting placeholders in the raw message, which were not provided in the data matcher or added with a data property\n\tconst known = getMessagePlaceholders(raw);\n\tconst provided = Object.keys(data);\n\n\treturn unsubstituted.filter(\n\t\tname => known.includes(name) && !provided.includes(name),\n\t);\n}\n\nconst metaSchemaDescription = `\n\\t- If the rule has options, set \\`meta.schema\\` to an array or non-empty object to enable options validation.\n\\t- If the rule doesn't have options, omit \\`meta.schema\\` to enforce that no options can be passed to the rule.\n\\t- You can also set \\`meta.schema\\` to \\`false\\` to opt-out of options validation (not recommended).\n\n\\thttps://eslint.org/docs/latest/extend/custom-rules#options-schemas\n`;\n\n/*\n * Ignored test case properties when checking for test case duplicates.\n */\nconst duplicationIgnoredParameters = new Set([\"name\", \"errors\", \"output\"]);\n\n/**\n * Normalizes a test case item, ensuring it is an object with a 'code' property.\n * If the item is not an object, it returns an object with the 'code' property set to the item.\n * @param {any} item The test case item to normalize.\n * @returns {Object} The normalized test case object.\n */\nfunction normalizeTestCase(item) {\n\treturn item && typeof item === \"object\" ? item : { code: item };\n}\n\n/**\n * Asserts that the `errors` property of an invalid test case is valid.\n * @param {number | string[]} errors The `errors` property of the invalid test case.\n * @param {string} ruleName The name of the rule being tested.\n * @param {Object} [assertionOptions] The assertion options for the test case.\n * @returns {void}\n */\nfunction assertErrorsProperty(errors, ruleName, assertionOptions = {}) {\n\tconst isNumber = typeof errors === \"number\";\n\tconst isArray = Array.isArray(errors);\n\n\tif (!isNumber && !isArray) {\n\t\tif (errors === void 0) {\n\t\t\tassert.fail(\n\t\t\t\t`Did not specify errors for an invalid test of ${ruleName}`,\n\t\t\t);\n\t\t} else {\n\t\t\tassert.fail(\n\t\t\t\t`Invalid 'errors' property for invalid test of ${ruleName}: expected a number or an array but got ${\n\t\t\t\t\terrors === null ? \"null\" : typeof errors\n\t\t\t\t}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tconst { requireMessage = false, requireLocation = false } =\n\t\tassertionOptions;\n\n\tif (isArray) {\n\t\tassert.ok(\n\t\t\terrors.length !== 0,\n\t\t\t\"Invalid cases must have at least one error\",\n\t\t);\n\n\t\tfor (const [number, error] of errors.entries()) {\n\t\t\tif (typeof error === \"string\" || error instanceof RegExp) {\n\t\t\t\t// Just an error message.\n\t\t\t\tassert.ok(\n\t\t\t\t\trequireMessage !== \"messageId\" && !requireLocation,\n\t\t\t\t\t`errors[${number}] should be an object when 'assertionOptions.requireMessage' is 'messageId' or 'assertionOptions.requireLocation' is true.`,\n\t\t\t\t);\n\t\t\t} else if (typeof error === \"object\" && error !== null) {\n\t\t\t\t/*\n\t\t\t\t * Error object.\n\t\t\t\t * This may have a message, messageId, data, line, and/or column.\n\t\t\t\t */\n\n\t\t\t\tfor (const propertyName of Object.keys(error)) {\n\t\t\t\t\tassert.ok(\n\t\t\t\t\t\terrorObjectParameters.has(propertyName),\n\t\t\t\t\t\t`Invalid error property name '${propertyName}'. Expected one of ${friendlyErrorObjectParameterList}.`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (requireMessage === \"message\") {\n\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t!hasOwnProperty(error, \"messageId\") &&\n\t\t\t\t\t\t\thasOwnProperty(error, \"message\"),\n\t\t\t\t\t\t`errors[${number}] should specify 'message' (and not 'messageId') when 'assertionOptions.requireMessage' is 'message'.`,\n\t\t\t\t\t);\n\t\t\t\t} else if (requireMessage === \"messageId\") {\n\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t!hasOwnProperty(error, \"message\") &&\n\t\t\t\t\t\t\thasOwnProperty(error, \"messageId\"),\n\t\t\t\t\t\t`errors[${number}] should specify 'messageId' (and not 'message') when 'assertionOptions.requireMessage' is 'messageId'.`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (hasOwnProperty(error, \"message\")) {\n\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t!hasOwnProperty(error, \"messageId\"),\n\t\t\t\t\t\t`errors[${number}] should not specify both 'message' and 'messageId'.`,\n\t\t\t\t\t);\n\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t!hasOwnProperty(error, \"data\"),\n\t\t\t\t\t\t`errors[${number}] should not specify both 'data' and 'message'.`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tassert.ok(\n\t\t\t\t\t\thasOwnProperty(error, \"messageId\"),\n\t\t\t\t\t\t`errors[${number}] must specify either 'messageId' or 'message'.`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tassert.fail(\n\t\t\t\t\t`errors[${number}] must be a string, RegExp, or an object.`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tassert.ok(\n\t\t\t!requireMessage && !requireLocation,\n\t\t\t\"Invalid cases must have 'errors' value as an array\",\n\t\t);\n\t\tassert.ok(\n\t\t\terrors > 0,\n\t\t\t\"Invalid cases must have 'error' value greater than 0\",\n\t\t);\n\t}\n}\n\n/**\n * Check if this test case is a duplicate of one we have seen before.\n * @param {Object} item test case object\n * @param {Set<string>} seenTestCases set of serialized test cases we have seen so far (managed by this function)\n * @returns {void}\n */\nfunction checkDuplicateTestCase(item, seenTestCases) {\n\tif (!isSerializable(item)) {\n\t\t/*\n\t\t * If we can't serialize a test case (because it contains a function, RegExp, etc), skip the check.\n\t\t * This might happen with properties like: options, plugins, settings, languageOptions.parser, languageOptions.parserOptions.\n\t\t */\n\t\treturn;\n\t}\n\n\tconst serializedTestCase = stringify(item, {\n\t\treplacer(key, value) {\n\t\t\t// \"this\" is the currently stringified object --> only ignore top-level properties\n\t\t\treturn item !== this || !duplicationIgnoredParameters.has(key)\n\t\t\t\t? value\n\t\t\t\t: void 0;\n\t\t},\n\t});\n\n\tassert(\n\t\t!seenTestCases.has(serializedTestCase),\n\t\t\"detected duplicate test case\",\n\t);\n\tseenTestCases.add(serializedTestCase);\n}\n\n/**\n * Asserts that a rule is valid.\n * A valid rule must be an object with a `create` method.\n * @param {Object} rule The rule to check.\n * @param {string} ruleName The name of the rule.\n * @returns {void}\n * @throws {AssertionError} If the rule is not valid.\n */\nfunction assertRule(rule, ruleName) {\n\tassert.ok(\n\t\trule && typeof rule === \"object\" && typeof rule.create === \"function\",\n\t\t`Rule ${ruleName} must be an object with a \\`create\\` method`,\n\t);\n}\n\n/**\n * Asserts that a test scenario object is valid.\n * A valid test scenario object must have `valid` and `invalid` properties, both of\n * which must be arrays.\n * @param {Object} test The test scenario object to check.\n * @param {string} ruleName The name of the rule being tested.\n * @returns {void}\n * @throws {AssertionError} If the test scenario object is not valid.\n */\nfunction assertTest(test, ruleName) {\n\tassert.ok(\n\t\ttest && typeof test === \"object\",\n\t\t`Test Scenarios for rule ${ruleName} : Could not find test scenario object`,\n\t);\n\n\tconst hasValid = Array.isArray(test.valid);\n\tconst hasInvalid = Array.isArray(test.invalid);\n\n\tassert.ok(\n\t\thasValid,\n\t\t`Test Scenarios for rule ${ruleName} is invalid: Could not find any valid test scenarios`,\n\t);\n\n\tassert.ok(\n\t\thasInvalid,\n\t\t`Test Scenarios for rule ${ruleName} is invalid: Could not find any invalid test scenarios`,\n\t);\n}\n\n/**\n * Asserts that the common properties of a valid/invalid test case have the correct types.\n * @param {Object} item The test case object to check.\n * @returns {void}\n */\nfunction assertTestCommonProperties(item) {\n\tassert.ok(\n\t\ttypeof item.code === \"string\",\n\t\t\"Test case must specify a string value for 'code'\",\n\t);\n\n\t// optional properties\n\tif (item.name) {\n\t\tassert.ok(\n\t\t\ttypeof item.name === \"string\",\n\t\t\t\"Optional test case property 'name' must be a string\",\n\t\t);\n\t}\n\tif (hasOwnProperty(item, \"only\")) {\n\t\tassert.ok(\n\t\t\ttypeof item.only === \"boolean\",\n\t\t\t\"Optional test case property 'only' must be a boolean\",\n\t\t);\n\t}\n\tif (hasOwnProperty(item, \"filename\")) {\n\t\tassert.ok(\n\t\t\ttypeof item.filename === \"string\",\n\t\t\t\"Optional test case property 'filename' must be a string\",\n\t\t);\n\t}\n\tif (hasOwnProperty(item, \"options\")) {\n\t\tassert.ok(\n\t\t\tArray.isArray(item.options),\n\t\t\t\"Optional test case property 'options' must be an array\",\n\t\t);\n\t}\n}\n\n/**\n * Asserts that a valid test case object is valid.\n * A valid test case must specify a string value for 'code'.\n * Optional properties are checked for correct types.\n * @param {Object} item The valid test case object to check.\n * @param {Set<string>} seenTestCases Set of serialized test cases to check for duplicates.\n * @returns {void}\n * @throws {AssertionError} If the test case is not valid.\n */\nfunction assertValidTestCase(item, seenTestCases) {\n\t// must not have properties of invalid test cases\n\tassert.ok(\n\t\titem.errors === void 0,\n\t\t\"Valid test case must not have 'errors' property\",\n\t);\n\tassert.ok(\n\t\titem.output === void 0,\n\t\t\"Valid test case must not have 'output' property\",\n\t);\n\n\tassertTestCommonProperties(item);\n\tcheckDuplicateTestCase(item, seenTestCases);\n}\n\n/**\n * Asserts that the invalid test case object is valid.\n * An invalid test case must specify a string value for 'code' and must have 'errors' property.\n * Optional properties are checked for correct types.\n * @param {Object} item The invalid test case object to check.\n * @param {Set<string>} seenTestCases Set of serialized test cases to check for duplicates.\n * @param {string} ruleName The name of the rule being tested.\n * @param {Object} [assertionOptions] The assertion options for the test case.\n * @returns {void}\n * @throws {AssertionError} If the test case is not valid.\n */\nfunction assertInvalidTestCase(\n\titem,\n\tseenTestCases,\n\truleName,\n\tassertionOptions = {},\n) {\n\tassertTestCommonProperties(item);\n\n\tassertErrorsProperty(item.errors, ruleName, assertionOptions);\n\n\t// 'output' is optional, but if it exists it must be a string or null\n\tif (hasOwnProperty(item, \"output\")) {\n\t\tassert.ok(\n\t\t\titem.output === null || typeof item.output === \"string\",\n\t\t\t\"Test property 'output', if specified, must be a string or null. If no autofix is expected, then omit the 'output' property or set it to null.\",\n\t\t);\n\t}\n\n\tcheckDuplicateTestCase(item, seenTestCases);\n}\n\n/**\n * Gets the invocation location from the stack trace for later use.\n * @param {Function} relative The function before the invocation point.\n * @returns {{ sourceFile: string; sourceLine: number; sourceColumn: number; }} The invocation location.\n */\nfunction getInvocationLocation(relative = getInvocationLocation) {\n\tconst dummyObject = {};\n\tlet location;\n\tconst { prepareStackTrace } = Error;\n\tError.prepareStackTrace = (_, [callSite]) => {\n\t\tlocation = {\n\t\t\tsourceFile:\n\t\t\t\tcallSite.getFileName() ??\n\t\t\t\t`${callSite.getEvalOrigin()}, <anonymous>`,\n\t\t\tsourceLine: callSite.getLineNumber() ?? 1,\n\t\t\tsourceColumn: callSite.getColumnNumber() ?? 1,\n\t\t};\n\t};\n\tError.captureStackTrace(dummyObject, relative); // invoke Error.prepareStackTrace in Bun\n\tvoid dummyObject.stack; // invoke Error.prepareStackTrace in Node.js\n\tError.prepareStackTrace = prepareStackTrace;\n\treturn location;\n}\n\n/**\n * Estimates the location of the test case in the source file.\n * @param {Function} invoker The method that runs the tests.\n * @returns {(key: string) => string} The lazy resolver for the estimated location of the test case.\n */\nfunction buildLazyTestLocationEstimator(invoker) {\n\tconst invocationLocation = getInvocationLocation(invoker);\n\tlet testLocations = null;\n\treturn key => {\n\t\tif (testLocations === null) {\n\t\t\tconst { sourceFile, sourceLine, sourceColumn } = invocationLocation;\n\t\t\ttestLocations = {\n\t\t\t\troot: `${sourceFile}:${sourceLine}:${sourceColumn}`,\n\t\t\t};\n\n\t\t\tif (existsSync(sourceFile)) {\n\t\t\t\tlet content = readFileSync(sourceFile, \"utf8\")\n\t\t\t\t\t.split(\"\\n\")\n\t\t\t\t\t.slice(sourceLine - 1);\n\t\t\t\tcontent[0] = content[0].slice(Math.max(0, sourceColumn - 1));\n\t\t\t\tcontent = content.map(\n\t\t\t\t\tl =>\n\t\t\t\t\t\tl\n\t\t\t\t\t\t\t.trim() // Remove whitespace\n\t\t\t\t\t\t\t.replace(/\\s*\\/\\/.*$(?<!,)/u, \"\"), // and trailing in-line comments that aren't part of the test `code`\n\t\t\t\t);\n\n\t\t\t\t// Roots\n\t\t\t\tconst validStartIndex = content.findIndex(line =>\n\t\t\t\t\t/\\bvalid\\s*:/u.test(line),\n\t\t\t\t);\n\t\t\t\tconst invalidStartIndex = content.findIndex(line =>\n\t\t\t\t\t/\\binvalid\\s*:/u.test(line),\n\t\t\t\t);\n\n\t\t\t\ttestLocations.valid = `${sourceFile}:${\n\t\t\t\t\tsourceLine + validStartIndex\n\t\t\t\t}`;\n\t\t\t\ttestLocations.invalid = `${sourceFile}:${\n\t\t\t\t\tsourceLine + invalidStartIndex\n\t\t\t\t}`;\n\n\t\t\t\t// Scenario basics\n\t\t\t\tconst validEndIndex =\n\t\t\t\t\tvalidStartIndex < invalidStartIndex\n\t\t\t\t\t\t? invalidStartIndex\n\t\t\t\t\t\t: content.length;\n\t\t\t\tconst invalidEndIndex =\n\t\t\t\t\tvalidStartIndex < invalidStartIndex\n\t\t\t\t\t\t? content.length\n\t\t\t\t\t\t: validStartIndex;\n\n\t\t\t\tconst validLines = content.slice(\n\t\t\t\t\tvalidStartIndex,\n\t\t\t\t\tvalidEndIndex,\n\t\t\t\t);\n\t\t\t\tconst invalidLines = content.slice(\n\t\t\t\t\tinvalidStartIndex,\n\t\t\t\t\tinvalidEndIndex,\n\t\t\t\t);\n\n\t\t\t\tlet objectDepth = 0;\n\t\t\t\tconst validLineIndexes = validLines\n\t\t\t\t\t.map((l, i) => {\n\t\t\t\t\t\t// matches `key: {` and `{`\n\t\t\t\t\t\tif (/^(?:\\w+\\s*:\\s*)?\\{/u.test(l)) {\n\t\t\t\t\t\t\tobjectDepth++;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (objectDepth > 0) {\n\t\t\t\t\t\t\tif (l.endsWith(\"}\") || l.endsWith(\"},\")) {\n\t\t\t\t\t\t\t\tobjectDepth--;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn objectDepth <= 1 && l.includes(\"code:\")\n\t\t\t\t\t\t\t\t? i\n\t\t\t\t\t\t\t\t: null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn l.endsWith(\",\") ? i : null;\n\t\t\t\t\t})\n\t\t\t\t\t.filter(Boolean);\n\t\t\t\tconst invalidLineIndexes = invalidLines\n\t\t\t\t\t.map((l, i) =>\n\t\t\t\t\t\tl.trimStart().startsWith(\"errors:\") ? i : null,\n\t\t\t\t\t)\n\t\t\t\t\t.filter(Boolean);\n\n\t\t\t\tObject.assign(\n\t\t\t\t\ttestLocations,\n\t\t\t\t\t{\n\t\t\t\t\t\t[`valid[0]`]: `${sourceFile}:${\n\t\t\t\t\t\t\tsourceLine + validStartIndex\n\t\t\t\t\t\t}`,\n\t\t\t\t\t},\n\t\t\t\t\tObject.fromEntries(\n\t\t\t\t\t\tvalidLineIndexes.map((location, validIndex) => [\n\t\t\t\t\t\t\t`valid[${validIndex}]`,\n\t\t\t\t\t\t\t`${sourceFile}:${\n\t\t\t\t\t\t\t\tsourceLine + validStartIndex + location\n\t\t\t\t\t\t\t}`,\n\t\t\t\t\t\t]),\n\t\t\t\t\t),\n\t\t\t\t\tObject.fromEntries(\n\t\t\t\t\t\tinvalidLineIndexes.map((location, invalidIndex) => [\n\t\t\t\t\t\t\t`invalid[${invalidIndex}]`,\n\t\t\t\t\t\t\t`${sourceFile}:${\n\t\t\t\t\t\t\t\tsourceLine + invalidStartIndex + location\n\t\t\t\t\t\t\t}`,\n\t\t\t\t\t\t]),\n\t\t\t\t\t),\n\t\t\t\t);\n\n\t\t\t\t// Indexes for errors inside each invalid test case\n\t\t\t\tinvalidLineIndexes.push(invalidLines.length);\n\n\t\t\t\tfor (let i = 0; i < invalidLineIndexes.length - 1; i++) {\n\t\t\t\t\tconst start = invalidLineIndexes[i];\n\t\t\t\t\tconst end = invalidLineIndexes[i + 1];\n\t\t\t\t\tconst errorLines = invalidLines.slice(start, end);\n\t\t\t\t\tlet errorObjectDepth = 0;\n\t\t\t\t\tconst errorLineIndexes = errorLines\n\t\t\t\t\t\t.map((l, j) => {\n\t\t\t\t\t\t\tif (l.startsWith(\"{\") || l.endsWith(\"{\")) {\n\t\t\t\t\t\t\t\terrorObjectDepth++;\n\n\t\t\t\t\t\t\t\tif (l.endsWith(\"}\") || l.endsWith(\"},\")) {\n\t\t\t\t\t\t\t\t\terrorObjectDepth--;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn errorObjectDepth <= 1 ? j : null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (errorObjectDepth > 0) {\n\t\t\t\t\t\t\t\tif (l.endsWith(\"}\") || l.endsWith(\"},\")) {\n\t\t\t\t\t\t\t\t\terrorObjectDepth--;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn l.endsWith(\",\") ? j : null;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter(Boolean);\n\n\t\t\t\t\tObject.assign(\n\t\t\t\t\t\ttestLocations,\n\t\t\t\t\t\tObject.fromEntries(\n\t\t\t\t\t\t\terrorLineIndexes.map((line, errorIndex) => [\n\t\t\t\t\t\t\t\t`invalid[${i}].errors[${errorIndex}]`,\n\t\t\t\t\t\t\t\t`${sourceFile}:${\n\t\t\t\t\t\t\t\t\tsourceLine +\n\t\t\t\t\t\t\t\t\tinvalidStartIndex +\n\t\t\t\t\t\t\t\t\tstart +\n\t\t\t\t\t\t\t\t\tline\n\t\t\t\t\t\t\t\t}`,\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn testLocations[key] || \"unknown source\";\n\t};\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n// default separators for testing\nconst DESCRIBE = Symbol(\"describe\");\nconst IT = Symbol(\"it\");\nconst IT_ONLY = Symbol(\"itOnly\");\n\n/**\n * This is `it` default handler if `it` don't exist.\n * @this {Mocha}\n * @param {string} text The description of the test case.\n * @param {Function} method The logic of the test case.\n * @throws {Error} Any error upon execution of `method`.\n * @returns {any} Returned value of `method`.\n */\nfunction itDefaultHandler(text, method) {\n\ttry {\n\t\treturn method.call(this);\n\t} catch (err) {\n\t\tif (err instanceof assert.AssertionError) {\n\t\t\terr.message += ` (${util.inspect(err.actual)} ${err.operator} ${util.inspect(err.expected)})`;\n\t\t}\n\t\tthrow err;\n\t}\n}\n\n/**\n * This is `describe` default handler if `describe` don't exist.\n * @this {Mocha}\n * @param {string} text The description of the test case.\n * @param {Function} method The logic of the test case.\n * @returns {any} Returned value of `method`.\n */\nfunction describeDefaultHandler(text, method) {\n\treturn method.call(this);\n}\n\n/**\n * Mocha test wrapper.\n */\nclass RuleTester {\n\t/**\n\t * Creates a new instance of RuleTester.\n\t * @param {Object} [testerConfig] Optional, extra configuration for the tester\n\t */\n\tconstructor(testerConfig = {}) {\n\t\t/**\n\t\t * The configuration to use for this tester. Combination of the tester\n\t\t * configuration and the default configuration.\n\t\t * @type {Object}\n\t\t */\n\t\tthis.testerConfig = [\n\t\t\tsharedDefaultConfig,\n\t\t\ttesterConfig,\n\t\t\t{ rules: { \"rule-tester/validate-ast\": \"error\" } },\n\t\t];\n\n\t\tthis.linter = new Linter({ configType: \"flat\" });\n\t}\n\n\t/**\n\t * Set the configuration to use for all future tests\n\t * @param {Object} config the configuration to use.\n\t * @throws {TypeError} If non-object config.\n\t * @returns {void}\n\t */\n\tstatic setDefaultConfig(config) {\n\t\tif (typeof config !== \"object\" || config === null) {\n\t\t\tthrow new TypeError(\n\t\t\t\t\"RuleTester.setDefaultConfig: config must be an object\",\n\t\t\t);\n\t\t}\n\t\tsharedDefaultConfig = config;\n\n\t\t// Make sure the rules object exists since it is assumed to exist later\n\t\tsharedDefaultConfig.rules = sharedDefaultConfig.rules || {};\n\t}\n\n\t/**\n\t * Get the current configuration used for all tests\n\t * @returns {Object} the current configuration\n\t */\n\tstatic getDefaultConfig() {\n\t\treturn sharedDefaultConfig;\n\t}\n\n\t/**\n\t * Reset the configuration to the initial configuration of the tester removing\n\t * any changes made until now.\n\t * @returns {void}\n\t */\n\tstatic resetDefaultConfig() {\n\t\tsharedDefaultConfig = {\n\t\t\trules: {\n\t\t\t\t...testerDefaultConfig.rules,\n\t\t\t},\n\t\t};\n\t}\n\n\t/*\n\t * If people use `mocha test.js --watch` command, `describe` and `it` function\n\t * instances are different for each execution. So `describe` and `it` should get fresh instance\n\t * always.\n\t */\n\tstatic get describe() {\n\t\treturn (\n\t\t\tthis[DESCRIBE] ||\n\t\t\t(typeof describe === \"function\" ? describe : describeDefaultHandler)\n\t\t);\n\t}\n\n\tstatic set describe(value) {\n\t\tthis[DESCRIBE] = value;\n\t}\n\n\tstatic get it() {\n\t\treturn this[IT] || (typeof it === \"function\" ? it : itDefaultHandler);\n\t}\n\n\tstatic set it(value) {\n\t\tthis[IT] = value;\n\t}\n\n\t/**\n\t * Adds the `only` property to a test to run it in isolation.\n\t * @param {string | ValidTestCase | InvalidTestCase} item A single test to run by itself.\n\t * @returns {ValidTestCase | InvalidTestCase} The test with `only` set.\n\t */\n\tstatic only(item) {\n\t\tif (typeof item === \"string\") {\n\t\t\treturn { code: item, only: true };\n\t\t}\n\n\t\treturn { ...item, only: true };\n\t}\n\n\tstatic get itOnly() {\n\t\tif (typeof this[IT_ONLY] === \"function\") {\n\t\t\treturn this[IT_ONLY];\n\t\t}\n\t\tif (\n\t\t\ttypeof this[IT] === \"function\" &&\n\t\t\ttypeof this[IT].only === \"function\"\n\t\t) {\n\t\t\treturn Function.bind.call(this[IT].only, this[IT]);\n\t\t}\n\t\tif (typeof it === \"function\" && typeof it.only === \"function\") {\n\t\t\treturn Function.bind.call(it.only, it);\n\t\t}\n\n\t\tif (\n\t\t\ttypeof this[DESCRIBE] === \"function\" ||\n\t\t\ttypeof this[IT] === \"function\"\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Set `RuleTester.itOnly` to use `only` with a custom test framework.\\n\" +\n\t\t\t\t\t\"See https://eslint.org/docs/latest/integrate/nodejs-api#customizing-ruletester for more.\",\n\t\t\t);\n\t\t}\n\t\tif (typeof it === \"function\") {\n\t\t\tthrow new Error(\n\t\t\t\t\"The current test framework does not support exclusive tests with `only`.\",\n\t\t\t);\n\t\t}\n\t\tthrow new Error(\n\t\t\t\"To use `only`, use RuleTester with a test framework that provides `it.only()` like Mocha.\",\n\t\t);\n\t}\n\n\tstatic set itOnly(value) {\n\t\tthis[IT_ONLY] = value;\n\t}\n\n\t/**\n\t * Adds a new rule test to execute.\n\t * @param {string} ruleName The name of the rule to run.\n\t * @param {RuleDefinition} rule The rule to test.\n\t * @param {{\n\t *   assertionOptions?: {\n\t *     requireMessage?: boolean | \"message\" | \"messageId\",\n\t *     requireLocation?: boolean\n\t *     requireData?: boolean | \"error\" | \"suggestion\"\n\t *   },\n\t *   valid: (ValidTestCase | string)[],\n\t *   invalid: InvalidTestCase[]\n\t * }} test The collection of tests to run.\n\t * @throws {TypeError|Error} If `rule` is not an object with a `create` method,\n\t * or if non-object `test`, or if a required scenario of the given type is missing.\n\t * @returns {void}\n\t */\n\trun(ruleName, rule, test) {\n\t\tconst testerConfig = this.testerConfig,\n\t\t\tlinter = this.linter,\n\t\t\truleId = `rule-to-test/${ruleName}`;\n\n\t\tassertRule(rule, ruleName);\n\t\tassertTest(test, ruleName);\n\n\t\tconst estimateTestLocation = buildLazyTestLocationEstimator(this.run);\n\n\t\tconst baseConfig = [\n\t\t\t{\n\t\t\t\tplugins: {\n\t\t\t\t\t// copy root plugin over\n\t\t\t\t\t\"@\": {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Parsers are wrapped to detect more errors, so this needs\n\t\t\t\t\t\t * to be a new object for each call to run(), otherwise the\n\t\t\t\t\t\t * parsers will be wrapped multiple times.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tparsers: {\n\t\t\t\t\t\t\t...defaultConfig[0].plugins[\"@\"].parsers,\n\t\t\t\t\t\t},\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * The rules key on the default plugin is a proxy to lazy-load\n\t\t\t\t\t\t * just the rules that are needed. So, don't create a new object\n\t\t\t\t\t\t * here, just use the default one to keep that performance\n\t\t\t\t\t\t * enhancement.\n\t\t\t\t\t\t */\n\t\t\t\t\t\trules: defaultConfig[0].plugins[\"@\"].rules,\n\t\t\t\t\t\tlanguages: defaultConfig[0].plugins[\"@\"].languages,\n\t\t\t\t\t},\n\t\t\t\t\t\"rule-to-test\": {\n\t\t\t\t\t\trules: {\n\t\t\t\t\t\t\t[ruleName]: Object.assign({}, rule, {\n\t\t\t\t\t\t\t\t// Create a wrapper rule that freezes the `context` properties.\n\t\t\t\t\t\t\t\tcreate(context) {\n\t\t\t\t\t\t\t\t\tfreezeDeeply(context.options);\n\t\t\t\t\t\t\t\t\tfreezeDeeply(context.settings);\n\t\t\t\t\t\t\t\t\tfreezeDeeply(context.parserOptions);\n\n\t\t\t\t\t\t\t\t\t// freezeDeeply(context.languageOptions);\n\n\t\t\t\t\t\t\t\t\treturn rule.create(context);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlanguage: defaultConfig[0].language,\n\t\t\t},\n\t\t\t...defaultRuleTesterConfig,\n\t\t];\n\n\t\t/**\n\t\t * Runs a hook on the given item when it's assigned to the given property\n\t\t * @param {Object} item Item to run the hook on\n\t\t * @param {string} prop The property having the hook assigned to\n\t\t * @throws {Error} If the property is not a function or that function throws an error\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction runHook(item, prop) {\n\t\t\tif (hasOwnProperty(item, prop)) {\n\t\t\t\tassert.strictEqual(\n\t\t\t\t\ttypeof item[prop],\n\t\t\t\t\t\"function\",\n\t\t\t\t\t`Optional test case property '${prop}' must be a function`,\n\t\t\t\t);\n\t\t\t\titem[prop]();\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t * Run the rule for the given item\n\t\t * @param {Object} item Item to run the rule against\n\t\t * @throws {Error} If an invalid schema.\n\t\t * @returns {Object} Eslint run result\n\t\t * @private\n\t\t */\n\t\tfunction runRuleForItem(item) {\n\t\t\tconst code = item.code;\n\t\t\tconst filename = hasOwnProperty(item, \"filename\")\n\t\t\t\t? item.filename\n\t\t\t\t: void 0;\n\t\t\tconst options = hasOwnProperty(item, \"options\") ? item.options : [];\n\t\t\tconst flatConfigArrayOptions = {\n\t\t\t\tbaseConfig,\n\t\t\t};\n\n\t\t\tif (filename) {\n\t\t\t\tflatConfigArrayOptions.basePath =\n\t\t\t\t\tpath.parse(filename).root || void 0;\n\t\t\t}\n\n\t\t\tconst configs = new FlatConfigArray(\n\t\t\t\ttesterConfig,\n\t\t\t\tflatConfigArrayOptions,\n\t\t\t);\n\n\t\t\t/*\n\t\t\t * Modify the returned config so that the parser is wrapped to catch\n\t\t\t * access of the start/end properties. This method is called just\n\t\t\t * once per code snippet being tested, so each test case gets a clean\n\t\t\t * parser.\n\t\t\t */\n\t\t\tconfigs[ConfigArraySymbol.finalizeConfig] = function (...args) {\n\t\t\t\t// can't do super here :(\n\t\t\t\tconst proto = Object.getPrototypeOf(this);\n\t\t\t\tconst calculatedConfig = proto[\n\t\t\t\t\tConfigArraySymbol.finalizeConfig\n\t\t\t\t].apply(this, args);\n\n\t\t\t\t// wrap the parser to catch start/end property access\n\t\t\t\tif (calculatedConfig.language === jslang) {\n\t\t\t\t\tcalculatedConfig.languageOptions.parser = wrapParser(\n\t\t\t\t\t\tcalculatedConfig.languageOptions.parser,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn calculatedConfig;\n\t\t\t};\n\n\t\t\tlet output, beforeAST, afterAST;\n\n\t\t\t/*\n\t\t\t * Assumes everything on the item is a config except for the\n\t\t\t * parameters used by this tester\n\t\t\t */\n\t\t\tconst itemConfig = { ...item };\n\n\t\t\tfor (const parameter of RuleTesterParameters) {\n\t\t\t\tdelete itemConfig[parameter];\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Create the config object from the tester config and this item\n\t\t\t * specific configurations.\n\t\t\t */\n\t\t\tconfigs.push(itemConfig);\n\n\t\t\tconfigs.push({\n\t\t\t\trules: {\n\t\t\t\t\t[ruleId]: [1, ...options],\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tlet schema;\n\n\t\t\ttry {\n\t\t\t\tschema = Config.getRuleOptionsSchema(rule);\n\t\t\t} catch (err) {\n\t\t\t\terr.message += metaSchemaDescription;\n\t\t\t\tthrow err;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Check and throw an error if the schema is an empty object (`schema:{}`), because such schema\n\t\t\t * doesn't validate or enforce anything and is therefore considered a possible error. If the intent\n\t\t\t * was to skip options validation, `schema:false` should be set instead (explicit opt-out).\n\t\t\t *\n\t\t\t * For this purpose, a schema object is considered empty if it doesn't have any own enumerable string-keyed\n\t\t\t * properties. While `ajv.compile()` does use enumerable properties from the prototype chain as well,\n\t\t\t * it caches compiled schemas by serializing only own enumerable properties, so it's generally not a good idea\n\t\t\t * to use inherited properties in schemas because schemas that differ only in inherited properties would end up\n\t\t\t * having the same cache entry that would be correct for only one of them.\n\t\t\t *\n\t\t\t * At this point, `schema` can only be an object or `null`.\n\t\t\t */\n\t\t\tif (schema && Object.keys(schema).length === 0) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`\\`schema: {}\\` is a no-op${metaSchemaDescription}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Setup AST getters.\n\t\t\t * The goal is to check whether or not AST was modified when\n\t\t\t * running the rule under test.\n\t\t\t */\n\t\t\tconfigs.push({\n\t\t\t\tplugins: {\n\t\t\t\t\t\"rule-tester\": {\n\t\t\t\t\t\trules: {\n\t\t\t\t\t\t\t\"validate-ast\": {\n\t\t\t\t\t\t\t\tcreate() {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tProgram(node) {\n\t\t\t\t\t\t\t\t\t\t\tbeforeAST =\n\t\t\t\t\t\t\t\t\t\t\t\tcloneDeeplyExcludesParent(node);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"Program:exit\"(node) {\n\t\t\t\t\t\t\t\t\t\t\tafterAST = node;\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tif (schema) {\n\t\t\t\tajv.validateSchema(schema);\n\n\t\t\t\tif (ajv.errors) {\n\t\t\t\t\tconst errors = ajv.errors\n\t\t\t\t\t\t.map(error => {\n\t\t\t\t\t\t\tconst field =\n\t\t\t\t\t\t\t\terror.dataPath[0] === \".\"\n\t\t\t\t\t\t\t\t\t? error.dataPath.slice(1)\n\t\t\t\t\t\t\t\t\t: error.dataPath;\n\n\t\t\t\t\t\t\treturn `\\t${field}: ${error.message}`;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(\"\\n\");\n\n\t\t\t\t\tthrow new Error([\n\t\t\t\t\t\t`Schema for rule ${ruleName} is invalid:`,\n\t\t\t\t\t\terrors,\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * `ajv.validateSchema` checks for errors in the structure of the schema (by comparing the schema against a \"meta-schema\"),\n\t\t\t\t * and it reports those errors individually. However, there are other types of schema errors that only occur when compiling\n\t\t\t\t * the schema (e.g. using invalid defaults in a schema), and only one of these errors can be reported at a time. As a result,\n\t\t\t\t * the schema is compiled here separately from checking for `validateSchema` errors.\n\t\t\t\t */\n\t\t\t\ttry {\n\t\t\t\t\tajv.compile(schema);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Schema for rule ${ruleName} is invalid: ${err.message}`,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcause: err,\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// check for validation errors\n\t\t\ttry {\n\t\t\t\tconfigs.normalizeSync();\n\t\t\t\tconfigs.getConfig(\"test.js\");\n\t\t\t} catch (error) {\n\t\t\t\terror.message = `ESLint configuration in rule-tester is invalid: ${error.message}`;\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\t// Verify the code.\n\t\t\tconst { applyLanguageOptions, applyInlineConfig, finalize } =\n\t\t\t\tSourceCode.prototype;\n\t\t\tlet messages;\n\n\t\t\ttry {\n\t\t\t\tforbiddenMethods.forEach(methodName => {\n\t\t\t\t\tSourceCode.prototype[methodName] =\n\t\t\t\t\t\tthrowForbiddenMethodError(\n\t\t\t\t\t\t\tmethodName,\n\t\t\t\t\t\t\tSourceCode.prototype,\n\t\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tmessages = linter.verify(code, configs, filename);\n\t\t\t} finally {\n\t\t\t\tSourceCode.prototype.applyInlineConfig = applyInlineConfig;\n\t\t\t\tSourceCode.prototype.applyLanguageOptions =\n\t\t\t\t\tapplyLanguageOptions;\n\t\t\t\tSourceCode.prototype.finalize = finalize;\n\t\t\t}\n\n\t\t\tconst fatalErrorMessage = messages.find(m => m.fatal);\n\n\t\t\tassert(\n\t\t\t\t!fatalErrorMessage,\n\t\t\t\t`A fatal parsing error occurred: ${fatalErrorMessage && fatalErrorMessage.message}`,\n\t\t\t);\n\n\t\t\t// Verify if autofix makes a syntax error or not.\n\t\t\tif (messages.some(m => m.fix)) {\n\t\t\t\toutput = SourceCodeFixer.applyFixes(code, messages).output;\n\t\t\t\tconst errorMessageInFix = linter\n\t\t\t\t\t.verify(output, configs, filename)\n\t\t\t\t\t.find(m => m.fatal);\n\n\t\t\t\tassert(\n\t\t\t\t\t!errorMessageInFix,\n\t\t\t\t\t[\n\t\t\t\t\t\t\"A fatal parsing error occurred in autofix.\",\n\t\t\t\t\t\t`Error: ${errorMessageInFix && errorMessageInFix.message}`,\n\t\t\t\t\t\t\"Autofix output:\",\n\t\t\t\t\t\toutput,\n\t\t\t\t\t].join(\"\\n\"),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\toutput = code;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tmessages,\n\t\t\t\toutput,\n\t\t\t\tbeforeAST,\n\t\t\t\tafterAST: cloneDeeplyExcludesParent(afterAST),\n\t\t\t\tconfigs,\n\t\t\t\tfilename,\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Check if the AST was changed\n\t\t * @param {ASTNode} beforeAST AST node before running\n\t\t * @param {ASTNode} afterAST AST node after running\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction assertASTDidntChange(beforeAST, afterAST) {\n\t\t\tif (!equal(beforeAST, afterAST)) {\n\t\t\t\tassert.fail(\"Rule should not modify AST.\");\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check if the template is valid or not\n\t\t * all valid cases go through this\n\t\t * @param {Object} item Item to run the rule against\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction testValidTemplate(item) {\n\t\t\tconst result = runRuleForItem(item);\n\t\t\tconst messages = result.messages;\n\n\t\t\tassert.strictEqual(\n\t\t\t\tmessages.length,\n\t\t\t\t0,\n\t\t\t\tutil.format(\n\t\t\t\t\t\"Should have no errors but had %d: %s\",\n\t\t\t\t\tmessages.length,\n\t\t\t\t\tutil.inspect(messages),\n\t\t\t\t),\n\t\t\t);\n\n\t\t\tassertASTDidntChange(result.beforeAST, result.afterAST);\n\t\t}\n\n\t\t/**\n\t\t * Asserts that the message matches its expected value. If the expected\n\t\t * value is a regular expression, it is checked against the actual\n\t\t * value.\n\t\t * @param {string} actual Actual value\n\t\t * @param {string|RegExp} expected Expected value\n\t\t * @returns {void}\n\t\t * @private\n\t\t */\n\t\tfunction assertMessageMatches(actual, expected) {\n\t\t\tif (expected instanceof RegExp) {\n\t\t\t\t// assert.js doesn't have a built-in RegExp match function\n\t\t\t\tassert.ok(\n\t\t\t\t\texpected.test(actual),\n\t\t\t\t\t`Expected '${actual}' to match ${expected}`,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tassert.strictEqual(actual, expected);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check if the template is invalid or not\n\t\t * all invalid cases go through this.\n\t\t * @param {Object} item Item to run the rule against\n\t\t * @returns {void}\n\t\t * @private\n\t\t * @throws {Error} If the test case is invalid or has an invalid error.\n\t\t */\n\t\tfunction testInvalidTemplate(item) {\n\t\t\tconst {\n\t\t\t\trequireMessage = false,\n\t\t\t\trequireLocation = false,\n\t\t\t\trequireData = false,\n\t\t\t} = test.assertionOptions ?? {};\n\n\t\t\tconst ruleHasMetaMessages =\n\t\t\t\thasOwnProperty(rule, \"meta\") &&\n\t\t\t\thasOwnProperty(rule.meta, \"messages\");\n\t\t\tconst friendlyIDList = ruleHasMetaMessages\n\t\t\t\t? `[${Object.keys(rule.meta.messages)\n\t\t\t\t\t\t.map(key => `'${key}'`)\n\t\t\t\t\t\t.join(\", \")}]`\n\t\t\t\t: null;\n\n\t\t\tassert.ok(\n\t\t\t\truleHasMetaMessages || requireMessage !== \"messageId\",\n\t\t\t\t`Assertion options can not use 'requireMessage: \"messageId\"' if rule under test doesn't define 'meta.messages'.`,\n\t\t\t);\n\n\t\t\tconst result = runRuleForItem(item);\n\t\t\tconst messages = result.messages;\n\n\t\t\tfor (const message of messages) {\n\t\t\t\tif (hasOwnProperty(message, \"suggestions\")) {\n\t\t\t\t\t/** @type {Map<string, number>} */\n\t\t\t\t\tconst seenMessageIndices = new Map();\n\n\t\t\t\t\tfor (let i = 0; i < message.suggestions.length; i += 1) {\n\t\t\t\t\t\tconst suggestionMessage = message.suggestions[i].desc;\n\t\t\t\t\t\tconst previous =\n\t\t\t\t\t\t\tseenMessageIndices.get(suggestionMessage);\n\n\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t!seenMessageIndices.has(suggestionMessage),\n\t\t\t\t\t\t\t`Suggestion message '${suggestionMessage}' reported from suggestion ${i} was previously reported by suggestion ${previous}. Suggestion messages should be unique within an error.`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tseenMessageIndices.set(suggestionMessage, i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof item.errors === \"number\") {\n\t\t\t\tassert.strictEqual(\n\t\t\t\t\tmessages.length,\n\t\t\t\t\titem.errors,\n\t\t\t\t\tutil.format(\n\t\t\t\t\t\t\"Should have %d error%s but had %d: %s\",\n\t\t\t\t\t\titem.errors,\n\t\t\t\t\t\titem.errors === 1 ? \"\" : \"s\",\n\t\t\t\t\t\tmessages.length,\n\t\t\t\t\t\tutil.inspect(messages),\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tassert.strictEqual(\n\t\t\t\t\tmessages.length,\n\t\t\t\t\titem.errors.length,\n\t\t\t\t\tutil.format(\n\t\t\t\t\t\t\"Should have %d error%s but had %d: %s\",\n\t\t\t\t\t\titem.errors.length,\n\t\t\t\t\t\titem.errors.length === 1 ? \"\" : \"s\",\n\t\t\t\t\t\tmessages.length,\n\t\t\t\t\t\tutil.inspect(messages),\n\t\t\t\t\t),\n\t\t\t\t);\n\n\t\t\t\tconst hasMessageOfThisRule = messages.some(\n\t\t\t\t\tm => m.ruleId === ruleId,\n\t\t\t\t);\n\n\t\t\t\tfor (let i = 0, l = item.errors.length; i < l; i++) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst error = item.errors[i];\n\t\t\t\t\t\tconst message = messages[i];\n\n\t\t\t\t\t\tassert(\n\t\t\t\t\t\t\thasMessageOfThisRule,\n\t\t\t\t\t\t\t\"Error rule name should be the same as the name of the rule being tested\",\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof error === \"string\" ||\n\t\t\t\t\t\t\terror instanceof RegExp\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// Just an error message.\n\t\t\t\t\t\t\tassertMessageMatches(message.message, error);\n\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\tmessage.suggestions === void 0,\n\t\t\t\t\t\t\t\t`Error at index ${i} has suggestions. Please convert the test error into an object and specify 'suggestions' property on it to test suggestions.`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\ttypeof error === \"object\" &&\n\t\t\t\t\t\t\terror !== null\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * Error object.\n\t\t\t\t\t\t\t * This may have a message, messageId, data, line, and/or column.\n\t\t\t\t\t\t\t */\n\n\t\t\t\t\t\t\tif (hasOwnProperty(error, \"message\")) {\n\t\t\t\t\t\t\t\tassertMessageMatches(\n\t\t\t\t\t\t\t\t\tmessage.message,\n\t\t\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else if (hasOwnProperty(error, \"messageId\")) {\n\t\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\t\truleHasMetaMessages,\n\t\t\t\t\t\t\t\t\t\"Error can not use 'messageId' if rule under test doesn't define 'meta.messages'.\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t!hasOwnProperty(\n\t\t\t\t\t\t\t\t\t\trule.meta.messages,\n\t\t\t\t\t\t\t\t\t\terror.messageId,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tassert(\n\t\t\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\t\t\t`Invalid messageId '${error.messageId}'. Expected one of ${friendlyIDList}.`,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tassert.strictEqual(\n\t\t\t\t\t\t\t\t\tmessage.messageId,\n\t\t\t\t\t\t\t\t\terror.messageId,\n\t\t\t\t\t\t\t\t\t`messageId '${message.messageId}' does not match expected messageId '${error.messageId}'.`,\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tconst unsubstitutedPlaceholders =\n\t\t\t\t\t\t\t\t\tgetUnsubstitutedMessagePlaceholders(\n\t\t\t\t\t\t\t\t\t\tmessage.message,\n\t\t\t\t\t\t\t\t\t\trule.meta.messages[message.messageId],\n\t\t\t\t\t\t\t\t\t\terror.data,\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\t\tunsubstitutedPlaceholders.length === 0,\n\t\t\t\t\t\t\t\t\t`The reported message has ${unsubstitutedPlaceholders.length > 1 ? `unsubstituted placeholders: ${unsubstitutedPlaceholders.map(name => `'${name}'`).join(\", \")}` : `an unsubstituted placeholder '${unsubstitutedPlaceholders[0]}'`}. Please provide the missing ${unsubstitutedPlaceholders.length > 1 ? \"values\" : \"value\"} via the 'data' property in the context.report() call.`,\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tif (hasOwnProperty(error, \"data\")) {\n\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t *  if data was provided, then directly compare the returned message to a synthetic\n\t\t\t\t\t\t\t\t\t *  interpolated message using the same message ID and data provided in the test.\n\t\t\t\t\t\t\t\t\t *  See https://github.com/eslint/eslint/issues/9890 for context.\n\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\tconst unformattedOriginalMessage =\n\t\t\t\t\t\t\t\t\t\trule.meta.messages[error.messageId];\n\t\t\t\t\t\t\t\t\tconst rehydratedMessage = interpolate(\n\t\t\t\t\t\t\t\t\t\tunformattedOriginalMessage,\n\t\t\t\t\t\t\t\t\t\terror.data,\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\tassert.strictEqual(\n\t\t\t\t\t\t\t\t\t\tmessage.message,\n\t\t\t\t\t\t\t\t\t\trehydratedMessage,\n\t\t\t\t\t\t\t\t\t\t`Hydrated message \"${rehydratedMessage}\" does not match \"${message.message}\"`,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconst requiresDataProperty =\n\t\t\t\t\t\t\t\t\t\trequireData === true ||\n\t\t\t\t\t\t\t\t\t\trequireData === \"error\";\n\t\t\t\t\t\t\t\t\tconst hasPlaceholders =\n\t\t\t\t\t\t\t\t\t\tgetMessagePlaceholders(\n\t\t\t\t\t\t\t\t\t\t\trule.meta.messages[error.messageId],\n\t\t\t\t\t\t\t\t\t\t).length > 0;\n\t\t\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\t\t\t!requiresDataProperty ||\n\t\t\t\t\t\t\t\t\t\t\t!hasPlaceholders,\n\t\t\t\t\t\t\t\t\t\t`Error should specify the 'data' property as the referenced message has placeholders.`,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst locationProperties = [\n\t\t\t\t\t\t\t\t\"line\",\n\t\t\t\t\t\t\t\t\"column\",\n\t\t\t\t\t\t\t\t\"endLine\",\n\t\t\t\t\t\t\t\t\"endColumn\",\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\tconst actualLocation = {};\n\t\t\t\t\t\t\tconst expectedLocation = {};\n\n\t\t\t\t\t\t\tfor (const key of locationProperties) {\n\t\t\t\t\t\t\t\tif (hasOwnProperty(error, key)) {\n\t\t\t\t\t\t\t\t\tactualLocation[key] = message[key];\n\t\t\t\t\t\t\t\t\texpectedLocation[key] = error[key];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (requireLocation) {\n\t\t\t\t\t\t\t\tconst missingKeys = locationProperties.filter(\n\t\t\t\t\t\t\t\t\tkey =>\n\t\t\t\t\t\t\t\t\t\t!hasOwnProperty(error, key) &&\n\t\t\t\t\t\t\t\t\t\thasOwnProperty(message, key),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\t\tmissingKeys.length === 0,\n\t\t\t\t\t\t\t\t\t`Error is missing expected location properties: ${missingKeys.join(\", \")}`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (Object.keys(expectedLocation).length > 0) {\n\t\t\t\t\t\t\t\tassert.deepStrictEqual(\n\t\t\t\t\t\t\t\t\tactualLocation,\n\t\t\t\t\t\t\t\t\texpectedLocation,\n\t\t\t\t\t\t\t\t\t\"Actual error location does not match expected error location.\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\t!message.suggestions ||\n\t\t\t\t\t\t\t\t\thasOwnProperty(error, \"suggestions\"),\n\t\t\t\t\t\t\t\t`Error at index ${i} has suggestions. Please specify 'suggestions' property on the test error object.`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (hasOwnProperty(error, \"suggestions\")) {\n\t\t\t\t\t\t\t\t// Support asserting there are no suggestions\n\t\t\t\t\t\t\t\tconst expectsSuggestions = Array.isArray(\n\t\t\t\t\t\t\t\t\terror.suggestions,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t? error.suggestions.length > 0\n\t\t\t\t\t\t\t\t\t: Boolean(error.suggestions);\n\t\t\t\t\t\t\t\tconst hasSuggestions =\n\t\t\t\t\t\t\t\t\tmessage.suggestions !== void 0;\n\n\t\t\t\t\t\t\t\tif (!hasSuggestions && expectsSuggestions) {\n\t\t\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\t\t\t!error.suggestions,\n\t\t\t\t\t\t\t\t\t\t`Error should have suggestions on error with message: \"${message.message}\"`,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} else if (hasSuggestions) {\n\t\t\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\t\t\texpectsSuggestions,\n\t\t\t\t\t\t\t\t\t\t`Error should have no suggestions on error with message: \"${message.message}\"`,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tif (typeof error.suggestions === \"number\") {\n\t\t\t\t\t\t\t\t\t\tassert.strictEqual(\n\t\t\t\t\t\t\t\t\t\t\tmessage.suggestions.length,\n\t\t\t\t\t\t\t\t\t\t\terror.suggestions,\n\t\t\t\t\t\t\t\t\t\t\t`Error should have ${error.suggestions} suggestions. Instead found ${message.suggestions.length} suggestions`,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t\t\tArray.isArray(error.suggestions)\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tassert.strictEqual(\n\t\t\t\t\t\t\t\t\t\t\tmessage.suggestions.length,\n\t\t\t\t\t\t\t\t\t\t\terror.suggestions.length,\n\t\t\t\t\t\t\t\t\t\t\t`Error should have ${error.suggestions.length} suggestions. Instead found ${message.suggestions.length} suggestions`,\n\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\terror.suggestions.forEach(\n\t\t\t\t\t\t\t\t\t\t\t(expectedSuggestion, index) => {\n\t\t\t\t\t\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\t\t\t\t\t\ttypeof expectedSuggestion ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"object\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion !==\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"Test suggestion in 'suggestions' array must be an object.\",\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tObject.keys(\n\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion,\n\t\t\t\t\t\t\t\t\t\t\t\t).forEach(propertyName => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsuggestionObjectParameters.has(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpropertyName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Invalid suggestion property name '${propertyName}'. Expected one of ${friendlySuggestionObjectParameterList}.`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t\t\tconst actualSuggestion =\n\t\t\t\t\t\t\t\t\t\t\t\t\tmessage.suggestions[index];\n\t\t\t\t\t\t\t\t\t\t\t\tconst suggestionPrefix = `Error Suggestion at index ${index}:`;\n\n\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\thasOwnProperty(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"desc\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t!hasOwnProperty(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"data\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`${suggestionPrefix} Test should not specify both 'desc' and 'data'.`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t!hasOwnProperty(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"messageId\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`${suggestionPrefix} Test should not specify both 'desc' and 'messageId'.`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\tassert.strictEqual(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactualSuggestion.desc,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion.desc,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`${suggestionPrefix} desc should be \"${expectedSuggestion.desc}\" but got \"${actualSuggestion.desc}\" instead.`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t\t\t\t\t\thasOwnProperty(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"messageId\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\truleHasMetaMessages,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`${suggestionPrefix} Test can not use 'messageId' if rule under test doesn't define 'meta.messages'.`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thasOwnProperty(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trule.meta.messages,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion.messageId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`${suggestionPrefix} Test has invalid messageId '${expectedSuggestion.messageId}', the rule under test allows only one of ${friendlyIDList}.`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\tassert.strictEqual(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactualSuggestion.messageId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion.messageId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`${suggestionPrefix} messageId should be '${expectedSuggestion.messageId}' but got '${actualSuggestion.messageId}' instead.`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst rawSuggestionMessage =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trule.meta.messages[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.messageId\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst unsubstitutedPlaceholders =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgetUnsubstitutedMessagePlaceholders(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactualSuggestion.desc,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trawSuggestionMessage,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion.data,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tunsubstitutedPlaceholders.length ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`The message of the suggestion has ${unsubstitutedPlaceholders.length > 1 ? `unsubstituted placeholders: ${unsubstitutedPlaceholders.map(name => `'${name}'`).join(\", \")}` : `an unsubstituted placeholder '${unsubstitutedPlaceholders[0]}'`}. Please provide the missing ${unsubstitutedPlaceholders.length > 1 ? \"values\" : \"value\"} via the 'data' property for the suggestion in the context.report() call.`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thasOwnProperty(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"data\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst unformattedMetaMessage =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trule.meta.messages[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.messageId\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst rehydratedDesc =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tinterpolate(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tunformattedMetaMessage,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion.data,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tassert.strictEqual(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactualSuggestion.desc,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trehydratedDesc,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`${suggestionPrefix} Hydrated test desc \"${rehydratedDesc}\" does not match received desc \"${actualSuggestion.desc}\".`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst requiresDataProperty =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trequireData ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttrue ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trequireData ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"suggestion\";\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst hasPlaceholders =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tgetMessagePlaceholders(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trawSuggestionMessage,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t).length > 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!requiresDataProperty ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!hasPlaceholders,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`${suggestionPrefix} Suggestion should specify the 'data' property as the referenced message has placeholders.`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t\t\t\t\t\thasOwnProperty(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"data\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tassert.fail(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`${suggestionPrefix} Test must specify 'messageId' if 'data' is used.`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\tassert.fail(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`${suggestionPrefix} Test must specify either 'messageId' or 'desc'.`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tassert.ok(\n\t\t\t\t\t\t\t\t\t\t\t\t\thasOwnProperty(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"output\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${suggestionPrefix} The \"output\" property is required.`,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tconst codeWithAppliedSuggestion =\n\t\t\t\t\t\t\t\t\t\t\t\t\tSourceCodeFixer.applyFixes(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titem.code,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[actualSuggestion],\n\t\t\t\t\t\t\t\t\t\t\t\t\t).output;\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Verify if suggestion fix makes a syntax error or not.\n\t\t\t\t\t\t\t\t\t\t\t\tconst errorMessageInSuggestion =\n\t\t\t\t\t\t\t\t\t\t\t\t\tlinter\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.verify(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcodeWithAppliedSuggestion,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult.configs,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult.filename,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.find(m => m.fatal);\n\n\t\t\t\t\t\t\t\t\t\t\t\tassert(\n\t\t\t\t\t\t\t\t\t\t\t\t\t!errorMessageInSuggestion,\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"A fatal parsing error occurred in suggestion fix.\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Error: ${errorMessageInSuggestion && errorMessageInSuggestion.message}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Suggestion output:\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcodeWithAppliedSuggestion,\n\t\t\t\t\t\t\t\t\t\t\t\t\t].join(\"\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t\t\tassert.strictEqual(\n\t\t\t\t\t\t\t\t\t\t\t\t\tcodeWithAppliedSuggestion,\n\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion.output,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`Expected the applied suggestion fix to match the test suggestion output for suggestion at index: ${index} on error with message: \"${message.message}\"`,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tassert.notStrictEqual(\n\t\t\t\t\t\t\t\t\t\t\t\t\texpectedSuggestion.output,\n\t\t\t\t\t\t\t\t\t\t\t\t\titem.code,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`The output of a suggestion should differ from the original source code for suggestion at index: ${index} on error with message: \"${message.message}\"`,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tassert.fail(\n\t\t\t\t\t\t\t\t\t\t\t\"Test error object property 'suggestions' should be an array or a number\",\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\t\t\terror.errorIndex = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (hasOwnProperty(item, \"output\")) {\n\t\t\t\tif (item.output === null) {\n\t\t\t\t\tassert.strictEqual(\n\t\t\t\t\t\tresult.output,\n\t\t\t\t\t\titem.code,\n\t\t\t\t\t\t\"Expected no autofixes to be suggested\",\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tassert.strictEqual(\n\t\t\t\t\t\tresult.output,\n\t\t\t\t\t\titem.output,\n\t\t\t\t\t\t\"Output is incorrect.\",\n\t\t\t\t\t);\n\t\t\t\t\tassert.notStrictEqual(\n\t\t\t\t\t\titem.code,\n\t\t\t\t\t\titem.output,\n\t\t\t\t\t\t\"Test property 'output' matches 'code'. If no autofix is expected, then omit the 'output' property or set it to null.\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tassert.strictEqual(\n\t\t\t\t\tresult.output,\n\t\t\t\t\titem.code,\n\t\t\t\t\t\"The rule fixed the code. Please add 'output' property.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tassertASTDidntChange(result.beforeAST, result.afterAST);\n\t\t}\n\n\t\t/*\n\t\t * This creates a mocha test suite and pipes all supplied info through\n\t\t * one of the templates above.\n\t\t * The test suites for valid/invalid are created conditionally as\n\t\t * test runners (eg. vitest) fail for empty test suites.\n\t\t */\n\t\tthis.constructor.describe(ruleName, () => {\n\t\t\tif (test.valid.length > 0) {\n\t\t\t\tthis.constructor.describe(\"valid\", () => {\n\t\t\t\t\tconst seenTestCases = new Set();\n\t\t\t\t\ttest.valid.forEach((valid, index) => {\n\t\t\t\t\t\tconst item = normalizeTestCase(valid);\n\t\t\t\t\t\tthis.constructor[valid.only ? \"itOnly\" : \"it\"](\n\t\t\t\t\t\t\tsanitize(item.name || item.code),\n\t\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\trunHook(item, \"before\");\n\t\t\t\t\t\t\t\t\tassertValidTestCase(item, seenTestCases);\n\t\t\t\t\t\t\t\t\ttestValidTemplate(item);\n\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\t\t\t\t\t\terror.scenarioType = \"valid\";\n\t\t\t\t\t\t\t\t\t\terror.scenarioIndex = index;\n\t\t\t\t\t\t\t\t\t\terror.stack = error.stack.replace(\n\t\t\t\t\t\t\t\t\t\t\t/^ +at /mu,\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t`    roughly at RuleTester.run.valid[${index}] (${estimateTestLocation(`valid[${index}]`)})`,\n\t\t\t\t\t\t\t\t\t\t\t\t`    roughly at RuleTester.run.valid (${estimateTestLocation(\"valid\")})`,\n\t\t\t\t\t\t\t\t\t\t\t\t`    at RuleTester.run (${estimateTestLocation(\"root\")})`,\n\t\t\t\t\t\t\t\t\t\t\t\t\"    at \",\n\t\t\t\t\t\t\t\t\t\t\t].join(\"\\n\"),\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\t\trunHook(item, \"after\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (test.invalid.length > 0) {\n\t\t\t\tthis.constructor.describe(\"invalid\", () => {\n\t\t\t\t\tconst seenTestCases = new Set();\n\t\t\t\t\ttest.invalid.forEach((invalid, index) => {\n\t\t\t\t\t\tconst item = normalizeTestCase(invalid);\n\t\t\t\t\t\tthis.constructor[item.only ? \"itOnly\" : \"it\"](\n\t\t\t\t\t\t\tsanitize(item.name || item.code),\n\t\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\trunHook(item, \"before\");\n\t\t\t\t\t\t\t\t\tassertInvalidTestCase(\n\t\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\t\tseenTestCases,\n\t\t\t\t\t\t\t\t\t\truleName,\n\t\t\t\t\t\t\t\t\t\ttest.assertionOptions,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\ttestInvalidTemplate(item);\n\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\t\t\t\t\t\terror.scenarioType = \"invalid\";\n\t\t\t\t\t\t\t\t\t\terror.scenarioIndex = index;\n\t\t\t\t\t\t\t\t\t\tconst errorIndex = error.errorIndex;\n\t\t\t\t\t\t\t\t\t\terror.stack = error.stack.replace(\n\t\t\t\t\t\t\t\t\t\t\t/^ +at /mu,\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t...(typeof errorIndex ===\n\t\t\t\t\t\t\t\t\t\t\t\t\"number\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`    roughly at RuleTester.run.invalid[${index}].error[${errorIndex}] (${estimateTestLocation(`invalid[${index}].errors[${errorIndex}]`)})`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t: []),\n\t\t\t\t\t\t\t\t\t\t\t\t`    roughly at RuleTester.run.invalid[${index}] (${estimateTestLocation(`invalid[${index}]`)})`,\n\t\t\t\t\t\t\t\t\t\t\t\t`    roughly at RuleTester.run.invalid (${estimateTestLocation(\"invalid\")})`,\n\t\t\t\t\t\t\t\t\t\t\t\t`    at RuleTester.run (${estimateTestLocation(\"root\")})`,\n\t\t\t\t\t\t\t\t\t\t\t\t\"    at \",\n\t\t\t\t\t\t\t\t\t\t\t].join(\"\\n\"),\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\t\trunHook(item, \"after\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n}\n\nRuleTester[DESCRIBE] = RuleTester[IT] = RuleTester[IT_ONLY] = null;\n\nmodule.exports = RuleTester;\n", "\"use strict\";\n\nconst RuleTester = require(\"./rule-tester\");\n\nmodule.exports = {\n\tRuleTester,\n};\n", "/**\n * @fileoverview Expose out ESLint and CLI to require.\n * @author Ian Christian Myers\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Requirements\n//-----------------------------------------------------------------------------\n\nconst { ESLint } = require(\"./eslint/eslint\");\nconst { Linter } = require(\"./linter\");\nconst { RuleTester } = require(\"./rule-tester\");\nconst { SourceCode } = require(\"./languages/js/source-code\");\n\n//-----------------------------------------------------------------------------\n// Functions\n//-----------------------------------------------------------------------------\n\n/**\n * Loads the correct `ESLint` constructor.\n * @returns {Promise<ESLint>} The ESLint constructor.\n */\nasync function loadESLint() {\n\treturn ESLint;\n}\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\nmodule.exports = {\n\tLinter,\n\tloadESLint,\n\tESLint,\n\tRuleTester,\n\tSourceCode,\n};\n", "/**\n * @fileoverview APIs that are not officially supported by ESLint.\n *      These APIs may change or be removed at any time. Use at your\n *      own risk.\n * @author Nicholas C. Zakas\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Requirements\n//-----------------------------------------------------------------------------\n\nconst { shouldUseFlatConfig } = require(\"./eslint/eslint\");\nconst builtinRules = require(\"./rules\");\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\nmodule.exports = { builtinRules, shouldUseFlatConfig };\n", "\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FlatESLint = void 0;\n/* eslint-disable @typescript-eslint/no-namespace */\nconst eslint_1 = require(\"eslint\");\nconst use_at_your_own_risk_1 = __importDefault(require(\"eslint/use-at-your-own-risk\"));\n/**\n * The ESLint class is the primary class to use in Node.js applications.\n * This class depends on the Node.js fs module and the file system, so you cannot use it in browsers.\n *\n * If you want to lint code on browsers, use the Linter class instead.\n */\nclass FlatESLint extends (use_at_your_own_risk_1.default.FlatESLint ??\n    eslint_1.ESLint) {\n}\nexports.FlatESLint = FlatESLint;\n", "\"use strict\";\n/* eslint-disable @typescript-eslint/no-namespace */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LegacyESLint = void 0;\nconst eslint_1 = require(\"eslint\");\nconst use_at_your_own_risk_1 = __importDefault(require(\"eslint/use-at-your-own-risk\"));\nfunction throwMissingLegacyESLintError() {\n    throw new Error('LegacyESLint is not available with the current version of ESLint.');\n}\n/* eslint-disable-next-line @typescript-eslint/no-extraneous-class */\nclass MissingLegacyESLint {\n    static configType = 'eslintrc';\n    static version = eslint_1.ESLint.version;\n    constructor() {\n        throwMissingLegacyESLintError();\n    }\n    static getErrorResults() {\n        throwMissingLegacyESLintError();\n    }\n    static outputFixes() {\n        throwMissingLegacyESLintError();\n    }\n}\n/**\n * The ESLint class is the primary class to use in Node.js applications.\n * This class depends on the Node.js fs module and the file system, so you cannot use it in browsers.\n *\n * If you want to lint code on browsers, use the Linter class instead.\n */\nclass LegacyESLint extends (use_at_your_own_risk_1.default.LegacyESLint ??\n    MissingLegacyESLint) {\n}\nexports.LegacyESLint = LegacyESLint;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LegacyESLint = exports.ESLint = exports.FlatESLint = void 0;\nvar FlatESLint_1 = require(\"./eslint/FlatESLint\");\nObject.defineProperty(exports, \"FlatESLint\", { enumerable: true, get: function () { return FlatESLint_1.FlatESLint; } });\nvar FlatESLint_2 = require(\"./eslint/FlatESLint\");\nObject.defineProperty(exports, \"ESLint\", { enumerable: true, get: function () { return FlatESLint_2.FlatESLint; } });\nvar LegacyESLint_1 = require(\"./eslint/LegacyESLint\");\n// TODO(typescript-eslint@v9) - remove this in the next major release\n/**\n * @deprecated - use ESLint instead\n */\nObject.defineProperty(exports, \"LegacyESLint\", { enumerable: true, get: function () { return LegacyESLint_1.LegacyESLint; } });\n", "\"use strict\";\n/* eslint-disable @typescript-eslint/no-namespace, no-restricted-syntax */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Linter = void 0;\nconst eslint_1 = require(\"eslint\");\n/**\n * The Linter object does the actual evaluation of the JavaScript code. It doesn't do any filesystem operations, it\n * simply parses and reports on the code. In particular, the Linter object does not process configuration objects\n * or files.\n */\nclass Linter extends eslint_1.Linter {\n}\nexports.Linter = Linter;\n", "\"use strict\";\n/* eslint-disable @typescript-eslint/no-namespace */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\n/* eslint-disable @typescript-eslint/no-namespace */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RuleTester = void 0;\n/* eslint-disable @typescript-eslint/no-deprecated */\nconst eslint_1 = require(\"eslint\");\n/**\n * @deprecated Use `@typescript-eslint/rule-tester` instead.\n */\nclass RuleTester extends eslint_1.RuleTester {\n}\nexports.RuleTester = RuleTester;\n", "'use strict';\n\n/* eslint-disable jsdoc/valid-types -- doesn't allow `readonly`.\n   TODO: remove eslint-disable when https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/164 is fixed\n*/\n/**\n * @typedef {{ readonly [type: string]: ReadonlyArray<string> }} VisitorKeys\n */\n/* eslint-enable jsdoc/valid-types -- doesn't allow `readonly string[]`. TODO: check why */\n\n/**\n * @type {VisitorKeys}\n */\nconst KEYS = {\n\tArrayExpression: [\"elements\"],\n\tArrayPattern: [\"elements\"],\n\tArrowFunctionExpression: [\"params\", \"body\"],\n\tAssignmentExpression: [\"left\", \"right\"],\n\tAssignmentPattern: [\"left\", \"right\"],\n\tAwaitExpression: [\"argument\"],\n\tBinaryExpression: [\"left\", \"right\"],\n\tBlockStatement: [\"body\"],\n\tBreakStatement: [\"label\"],\n\tCallExpression: [\"callee\", \"arguments\"],\n\tCatchClause: [\"param\", \"body\"],\n\tChainExpression: [\"expression\"],\n\tClassBody: [\"body\"],\n\tClassDeclaration: [\"id\", \"superClass\", \"body\"],\n\tClassExpression: [\"id\", \"superClass\", \"body\"],\n\tConditionalExpression: [\"test\", \"consequent\", \"alternate\"],\n\tContinueStatement: [\"label\"],\n\tDebuggerStatement: [],\n\tDoWhileStatement: [\"body\", \"test\"],\n\tEmptyStatement: [],\n\tExperimentalRestProperty: [\"argument\"],\n\tExperimentalSpreadProperty: [\"argument\"],\n\tExportAllDeclaration: [\"exported\", \"source\", \"attributes\"],\n\tExportDefaultDeclaration: [\"declaration\"],\n\tExportNamedDeclaration: [\n\t\t\"declaration\",\n\t\t\"specifiers\",\n\t\t\"source\",\n\t\t\"attributes\",\n\t],\n\tExportSpecifier: [\"local\", \"exported\"],\n\tExpressionStatement: [\"expression\"],\n\tForInStatement: [\"left\", \"right\", \"body\"],\n\tForOfStatement: [\"left\", \"right\", \"body\"],\n\tForStatement: [\"init\", \"test\", \"update\", \"body\"],\n\tFunctionDeclaration: [\"id\", \"params\", \"body\"],\n\tFunctionExpression: [\"id\", \"params\", \"body\"],\n\tIdentifier: [],\n\tIfStatement: [\"test\", \"consequent\", \"alternate\"],\n\tImportAttribute: [\"key\", \"value\"],\n\tImportDeclaration: [\"specifiers\", \"source\", \"attributes\"],\n\tImportDefaultSpecifier: [\"local\"],\n\tImportExpression: [\"source\", \"options\"],\n\tImportNamespaceSpecifier: [\"local\"],\n\tImportSpecifier: [\"imported\", \"local\"],\n\tJSXAttribute: [\"name\", \"value\"],\n\tJSXClosingElement: [\"name\"],\n\tJSXClosingFragment: [],\n\tJSXElement: [\"openingElement\", \"children\", \"closingElement\"],\n\tJSXEmptyExpression: [],\n\tJSXExpressionContainer: [\"expression\"],\n\tJSXFragment: [\"openingFragment\", \"children\", \"closingFragment\"],\n\tJSXIdentifier: [],\n\tJSXMemberExpression: [\"object\", \"property\"],\n\tJSXNamespacedName: [\"namespace\", \"name\"],\n\tJSXOpeningElement: [\"name\", \"attributes\"],\n\tJSXOpeningFragment: [],\n\tJSXSpreadAttribute: [\"argument\"],\n\tJSXSpreadChild: [\"expression\"],\n\tJSXText: [],\n\tLabeledStatement: [\"label\", \"body\"],\n\tLiteral: [],\n\tLogicalExpression: [\"left\", \"right\"],\n\tMemberExpression: [\"object\", \"property\"],\n\tMetaProperty: [\"meta\", \"property\"],\n\tMethodDefinition: [\"key\", \"value\"],\n\tNewExpression: [\"callee\", \"arguments\"],\n\tObjectExpression: [\"properties\"],\n\tObjectPattern: [\"properties\"],\n\tPrivateIdentifier: [],\n\tProgram: [\"body\"],\n\tProperty: [\"key\", \"value\"],\n\tPropertyDefinition: [\"key\", \"value\"],\n\tRestElement: [\"argument\"],\n\tReturnStatement: [\"argument\"],\n\tSequenceExpression: [\"expressions\"],\n\tSpreadElement: [\"argument\"],\n\tStaticBlock: [\"body\"],\n\tSuper: [],\n\tSwitchCase: [\"test\", \"consequent\"],\n\tSwitchStatement: [\"discriminant\", \"cases\"],\n\tTaggedTemplateExpression: [\"tag\", \"quasi\"],\n\tTemplateElement: [],\n\tTemplateLiteral: [\"quasis\", \"expressions\"],\n\tThisExpression: [],\n\tThrowStatement: [\"argument\"],\n\tTryStatement: [\"block\", \"handler\", \"finalizer\"],\n\tUnaryExpression: [\"argument\"],\n\tUpdateExpression: [\"argument\"],\n\tVariableDeclaration: [\"declarations\"],\n\tVariableDeclarator: [\"id\", \"init\"],\n\tWhileStatement: [\"test\", \"body\"],\n\tWithStatement: [\"object\", \"body\"],\n\tYieldExpression: [\"argument\"],\n};\n\n// Types.\nconst NODE_TYPES = Object.keys(KEYS);\n\n// Freeze the keys.\nfor (const type of NODE_TYPES) {\n\tObject.freeze(KEYS[type]);\n}\nObject.freeze(KEYS);\n\n/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * See LICENSE file in root directory for full license.\n */\n\n/**\n * @typedef {import('./visitor-keys.js').VisitorKeys} VisitorKeys\n */\n\n// List to ignore keys.\nconst KEY_BLACKLIST = new Set([\n\t\"parent\",\n\t\"leadingComments\",\n\t\"trailingComments\",\n]);\n\n/**\n * Check whether a given key should be used or not.\n * @param {string} key The key to check.\n * @returns {boolean} `true` if the key should be used.\n */\nfunction filterKey(key) {\n\treturn !KEY_BLACKLIST.has(key) && key[0] !== \"_\";\n}\n\n/* eslint-disable jsdoc/valid-types -- doesn't allow `readonly`.\n   TODO: remove eslint-disable when https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/164 is fixed\n*/\n/**\n * Get visitor keys of a given node.\n * @param {Object} node The AST node to get keys.\n * @returns {readonly string[]} Visitor keys of the node.\n */\nfunction getKeys(node) {\n\treturn Object.keys(node).filter(filterKey);\n}\n/* eslint-enable jsdoc/valid-types -- doesn't allow `readonly` */\n\n/**\n * Make the union set with `KEYS` and given keys.\n * @param {VisitorKeys} additionalKeys The additional keys.\n * @returns {VisitorKeys} The union set.\n */\nfunction unionWith(additionalKeys) {\n\tconst retv =\n\t\t/** @type {{ [type: string]: ReadonlyArray<string> }} */\n\t\t(Object.assign({}, KEYS));\n\n\tfor (const type of Object.keys(additionalKeys)) {\n\t\tif (Object.hasOwn(retv, type)) {\n\t\t\tconst keys = new Set(additionalKeys[type]);\n\n\t\t\tfor (const key of retv[type]) {\n\t\t\t\tkeys.add(key);\n\t\t\t}\n\n\t\t\tretv[type] = Object.freeze(Array.from(keys));\n\t\t} else {\n\t\t\tretv[type] = Object.freeze(Array.from(additionalKeys[type]));\n\t\t}\n\t}\n\n\treturn Object.freeze(retv);\n}\n\nexports.KEYS = KEYS;\nexports.getKeys = getKeys;\nexports.unionWith = unionWith;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getKeys = void 0;\nconst eslint_visitor_keys_1 = require(\"eslint-visitor-keys\");\nexports.getKeys = eslint_visitor_keys_1.getKeys;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n    var ownKeys = function(o) {\n        ownKeys = Object.getOwnPropertyNames || function (o) {\n            var ar = [];\n            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n            return ar;\n        };\n        return ownKeys(o);\n    };\n    return function (mod) {\n        if (mod && mod.__esModule) return mod;\n        var result = {};\n        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n        __setModuleDefault(result, mod);\n        return result;\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.visitorKeys = void 0;\nconst eslintVisitorKeys = __importStar(require(\"eslint-visitor-keys\"));\n/*\n ********************************** IMPORTANT NOTE ********************************\n *                                                                                *\n * The key arrays should be sorted in the order in which you would want to visit  *\n * the child keys.                                                                *\n *                                                                                *\n *                        DO NOT SORT THEM ALPHABETICALLY!                        *\n *                                                                                *\n * They should be sorted in the order that they appear in the source code.        *\n * For example:                                                                   *\n *                                                                                *\n * class Foo extends Bar { prop: 1 }                                              *\n * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ClassDeclaration                             *\n *       ^^^ id      ^^^ superClass                                               *\n *                       ^^^^^^^^^^^ body                                         *\n *                                                                                *\n * It would be incorrect to provide the visitor keys ['body', 'id', 'superClass'] *\n * because the body comes AFTER everything else in the source code.               *\n * Instead the correct ordering would be ['id', 'superClass', 'body'].            *\n *                                                                                *\n **********************************************************************************\n */\nconst SharedVisitorKeys = (() => {\n    const FunctionType = ['typeParameters', 'params', 'returnType'];\n    const AnonymousFunction = [...FunctionType, 'body'];\n    const AbstractPropertyDefinition = [\n        'decorators',\n        'key',\n        'typeAnnotation',\n    ];\n    return {\n        AbstractPropertyDefinition: ['decorators', 'key', 'typeAnnotation'],\n        AnonymousFunction,\n        AsExpression: ['expression', 'typeAnnotation'],\n        ClassDeclaration: [\n            'decorators',\n            'id',\n            'typeParameters',\n            'superClass',\n            'superTypeArguments',\n            'implements',\n            'body',\n        ],\n        Function: ['id', ...AnonymousFunction],\n        FunctionType,\n        PropertyDefinition: [...AbstractPropertyDefinition, 'value'],\n    };\n})();\nconst additionalKeys = {\n    AccessorProperty: SharedVisitorKeys.PropertyDefinition,\n    ArrayPattern: ['decorators', 'elements', 'typeAnnotation'],\n    ArrowFunctionExpression: SharedVisitorKeys.AnonymousFunction,\n    AssignmentPattern: ['decorators', 'left', 'right', 'typeAnnotation'],\n    CallExpression: ['callee', 'typeArguments', 'arguments'],\n    ClassDeclaration: SharedVisitorKeys.ClassDeclaration,\n    ClassExpression: SharedVisitorKeys.ClassDeclaration,\n    Decorator: ['expression'],\n    ExportAllDeclaration: ['exported', 'source', 'attributes'],\n    ExportNamedDeclaration: ['declaration', 'specifiers', 'source', 'attributes'],\n    FunctionDeclaration: SharedVisitorKeys.Function,\n    FunctionExpression: SharedVisitorKeys.Function,\n    Identifier: ['decorators', 'typeAnnotation'],\n    ImportAttribute: ['key', 'value'],\n    ImportDeclaration: ['specifiers', 'source', 'attributes'],\n    ImportExpression: ['source', 'options'],\n    JSXClosingFragment: [],\n    JSXOpeningElement: ['name', 'typeArguments', 'attributes'],\n    JSXOpeningFragment: [],\n    JSXSpreadChild: ['expression'],\n    MethodDefinition: ['decorators', 'key', 'value'],\n    NewExpression: ['callee', 'typeArguments', 'arguments'],\n    ObjectPattern: ['decorators', 'properties', 'typeAnnotation'],\n    PropertyDefinition: SharedVisitorKeys.PropertyDefinition,\n    RestElement: ['decorators', 'argument', 'typeAnnotation'],\n    StaticBlock: ['body'],\n    TaggedTemplateExpression: ['tag', 'typeArguments', 'quasi'],\n    TSAbstractAccessorProperty: SharedVisitorKeys.AbstractPropertyDefinition,\n    TSAbstractKeyword: [],\n    TSAbstractMethodDefinition: ['key', 'value'],\n    TSAbstractPropertyDefinition: SharedVisitorKeys.AbstractPropertyDefinition,\n    TSAnyKeyword: [],\n    TSArrayType: ['elementType'],\n    TSAsExpression: SharedVisitorKeys.AsExpression,\n    TSAsyncKeyword: [],\n    TSBigIntKeyword: [],\n    TSBooleanKeyword: [],\n    TSCallSignatureDeclaration: SharedVisitorKeys.FunctionType,\n    TSClassImplements: ['expression', 'typeArguments'],\n    TSConditionalType: ['checkType', 'extendsType', 'trueType', 'falseType'],\n    TSConstructorType: SharedVisitorKeys.FunctionType,\n    TSConstructSignatureDeclaration: SharedVisitorKeys.FunctionType,\n    TSDeclareFunction: SharedVisitorKeys.Function,\n    TSDeclareKeyword: [],\n    TSEmptyBodyFunctionExpression: ['id', ...SharedVisitorKeys.FunctionType],\n    TSEnumBody: ['members'],\n    TSEnumDeclaration: ['id', 'body'],\n    TSEnumMember: ['id', 'initializer'],\n    TSExportAssignment: ['expression'],\n    TSExportKeyword: [],\n    TSExternalModuleReference: ['expression'],\n    TSFunctionType: SharedVisitorKeys.FunctionType,\n    TSImportEqualsDeclaration: ['id', 'moduleReference'],\n    TSImportType: ['source', 'options', 'qualifier', 'typeArguments'],\n    TSIndexedAccessType: ['objectType', 'indexType'],\n    TSIndexSignature: ['parameters', 'typeAnnotation'],\n    TSInferType: ['typeParameter'],\n    TSInstantiationExpression: ['expression', 'typeArguments'],\n    TSInterfaceBody: ['body'],\n    TSInterfaceDeclaration: ['id', 'typeParameters', 'extends', 'body'],\n    TSInterfaceHeritage: ['expression', 'typeArguments'],\n    TSIntersectionType: ['types'],\n    TSIntrinsicKeyword: [],\n    TSLiteralType: ['literal'],\n    TSMappedType: ['key', 'constraint', 'nameType', 'typeAnnotation'],\n    TSMethodSignature: ['key', 'typeParameters', 'params', 'returnType'],\n    TSModuleBlock: ['body'],\n    TSModuleDeclaration: ['id', 'body'],\n    TSNamedTupleMember: ['label', 'elementType'],\n    TSNamespaceExportDeclaration: ['id'],\n    TSNeverKeyword: [],\n    TSNonNullExpression: ['expression'],\n    TSNullKeyword: [],\n    TSNumberKeyword: [],\n    TSObjectKeyword: [],\n    TSOptionalType: ['typeAnnotation'],\n    TSParameterProperty: ['decorators', 'parameter'],\n    TSPrivateKeyword: [],\n    TSPropertySignature: ['key', 'typeAnnotation'],\n    TSProtectedKeyword: [],\n    TSPublicKeyword: [],\n    TSQualifiedName: ['left', 'right'],\n    TSReadonlyKeyword: [],\n    TSRestType: ['typeAnnotation'],\n    TSSatisfiesExpression: SharedVisitorKeys.AsExpression,\n    TSStaticKeyword: [],\n    TSStringKeyword: [],\n    TSSymbolKeyword: [],\n    TSTemplateLiteralType: ['quasis', 'types'],\n    TSThisType: [],\n    TSTupleType: ['elementTypes'],\n    TSTypeAliasDeclaration: ['id', 'typeParameters', 'typeAnnotation'],\n    TSTypeAnnotation: ['typeAnnotation'],\n    TSTypeAssertion: ['typeAnnotation', 'expression'],\n    TSTypeLiteral: ['members'],\n    TSTypeOperator: ['typeAnnotation'],\n    TSTypeParameter: ['name', 'constraint', 'default'],\n    TSTypeParameterDeclaration: ['params'],\n    TSTypeParameterInstantiation: ['params'],\n    TSTypePredicate: ['parameterName', 'typeAnnotation'],\n    TSTypeQuery: ['exprName', 'typeArguments'],\n    TSTypeReference: ['typeName', 'typeArguments'],\n    TSUndefinedKeyword: [],\n    TSUnionType: ['types'],\n    TSUnknownKeyword: [],\n    TSVoidKeyword: [],\n};\nexports.visitorKeys = eslintVisitorKeys.unionWith(additionalKeys);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.visitorKeys = exports.getKeys = void 0;\nvar get_keys_1 = require(\"./get-keys\");\nObject.defineProperty(exports, \"getKeys\", { enumerable: true, get: function () { return get_keys_1.getKeys; } });\nvar visitor_keys_1 = require(\"./visitor-keys\");\nObject.defineProperty(exports, \"visitorKeys\", { enumerable: true, get: function () { return visitor_keys_1.visitorKeys; } });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assert = assert;\n// the base assert module doesn't use ts assertion syntax\nfunction assert(value, message) {\n    if (value == null) {\n        throw new Error(message);\n    }\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createIdGenerator = createIdGenerator;\nexports.resetIds = resetIds;\nconst ID_CACHE = new Map();\nlet NEXT_KEY = 0;\nfunction createIdGenerator() {\n    const key = (NEXT_KEY += 1);\n    ID_CACHE.set(key, 0);\n    return () => {\n        const current = ID_CACHE.get(key) ?? 0;\n        const next = current + 1;\n        ID_CACHE.set(key, next);\n        return next;\n    };\n}\nfunction resetIds() {\n    ID_CACHE.clear();\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefinitionBase = void 0;\nconst ID_1 = require(\"../ID\");\nconst generator = (0, ID_1.createIdGenerator)();\nclass DefinitionBase {\n    /**\n     * A unique ID for this instance - primarily used to help debugging and testing\n     */\n    $id = generator();\n    type;\n    /**\n     * The `Identifier` node of this definition\n     * @public\n     */\n    name;\n    /**\n     * The enclosing node of the name.\n     * @public\n     */\n    node;\n    /**\n     * the enclosing statement node of the identifier.\n     * @public\n     */\n    parent;\n    constructor(type, name, node, parent) {\n        this.type = type;\n        this.name = name;\n        this.node = node;\n        this.parent = parent;\n    }\n}\nexports.DefinitionBase = DefinitionBase;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefinitionType = void 0;\nvar DefinitionType;\n(function (DefinitionType) {\n    DefinitionType[\"CatchClause\"] = \"CatchClause\";\n    DefinitionType[\"ClassName\"] = \"ClassName\";\n    DefinitionType[\"FunctionName\"] = \"FunctionName\";\n    DefinitionType[\"ImplicitGlobalVariable\"] = \"ImplicitGlobalVariable\";\n    DefinitionType[\"ImportBinding\"] = \"ImportBinding\";\n    DefinitionType[\"Parameter\"] = \"Parameter\";\n    DefinitionType[\"TSEnumName\"] = \"TSEnumName\";\n    DefinitionType[\"TSEnumMember\"] = \"TSEnumMemberName\";\n    DefinitionType[\"TSModuleName\"] = \"TSModuleName\";\n    DefinitionType[\"Type\"] = \"Type\";\n    DefinitionType[\"Variable\"] = \"Variable\";\n})(DefinitionType || (exports.DefinitionType = DefinitionType = {}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CatchClauseDefinition = void 0;\nconst DefinitionBase_1 = require(\"./DefinitionBase\");\nconst DefinitionType_1 = require(\"./DefinitionType\");\nclass CatchClauseDefinition extends DefinitionBase_1.DefinitionBase {\n    isTypeDefinition = false;\n    isVariableDefinition = true;\n    constructor(name, node) {\n        super(DefinitionType_1.DefinitionType.CatchClause, name, node, null);\n    }\n}\nexports.CatchClauseDefinition = CatchClauseDefinition;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClassNameDefinition = void 0;\nconst DefinitionBase_1 = require(\"./DefinitionBase\");\nconst DefinitionType_1 = require(\"./DefinitionType\");\nclass ClassNameDefinition extends DefinitionBase_1.DefinitionBase {\n    isTypeDefinition = true;\n    isVariableDefinition = true;\n    constructor(name, node) {\n        super(DefinitionType_1.DefinitionType.ClassName, name, node, null);\n    }\n}\nexports.ClassNameDefinition = ClassNameDefinition;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FunctionNameDefinition = void 0;\nconst DefinitionBase_1 = require(\"./DefinitionBase\");\nconst DefinitionType_1 = require(\"./DefinitionType\");\nclass FunctionNameDefinition extends DefinitionBase_1.DefinitionBase {\n    isTypeDefinition = false;\n    isVariableDefinition = true;\n    constructor(name, node) {\n        super(DefinitionType_1.DefinitionType.FunctionName, name, node, null);\n    }\n}\nexports.FunctionNameDefinition = FunctionNameDefinition;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImplicitGlobalVariableDefinition = void 0;\nconst DefinitionBase_1 = require(\"./DefinitionBase\");\nconst DefinitionType_1 = require(\"./DefinitionType\");\nclass ImplicitGlobalVariableDefinition extends DefinitionBase_1.DefinitionBase {\n    isTypeDefinition = false;\n    isVariableDefinition = true;\n    constructor(name, node) {\n        super(DefinitionType_1.DefinitionType.ImplicitGlobalVariable, name, node, null);\n    }\n}\nexports.ImplicitGlobalVariableDefinition = ImplicitGlobalVariableDefinition;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImportBindingDefinition = void 0;\nconst DefinitionBase_1 = require(\"./DefinitionBase\");\nconst DefinitionType_1 = require(\"./DefinitionType\");\nclass ImportBindingDefinition extends DefinitionBase_1.DefinitionBase {\n    isTypeDefinition = true;\n    isVariableDefinition = true;\n    constructor(name, node, decl) {\n        super(DefinitionType_1.DefinitionType.ImportBinding, name, node, decl);\n    }\n}\nexports.ImportBindingDefinition = ImportBindingDefinition;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParameterDefinition = void 0;\nconst DefinitionBase_1 = require(\"./DefinitionBase\");\nconst DefinitionType_1 = require(\"./DefinitionType\");\nclass ParameterDefinition extends DefinitionBase_1.DefinitionBase {\n    /**\n     * Whether the parameter definition is a part of a rest parameter.\n     */\n    isTypeDefinition = false;\n    isVariableDefinition = true;\n    rest;\n    constructor(name, node, rest) {\n        super(DefinitionType_1.DefinitionType.Parameter, name, node, null);\n        this.rest = rest;\n    }\n}\nexports.ParameterDefinition = ParameterDefinition;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TSEnumMemberDefinition = void 0;\nconst DefinitionBase_1 = require(\"./DefinitionBase\");\nconst DefinitionType_1 = require(\"./DefinitionType\");\nclass TSEnumMemberDefinition extends DefinitionBase_1.DefinitionBase {\n    isTypeDefinition = true;\n    isVariableDefinition = true;\n    constructor(name, node) {\n        super(DefinitionType_1.DefinitionType.TSEnumMember, name, node, null);\n    }\n}\nexports.TSEnumMemberDefinition = TSEnumMemberDefinition;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TSEnumNameDefinition = void 0;\nconst DefinitionBase_1 = require(\"./DefinitionBase\");\nconst DefinitionType_1 = require(\"./DefinitionType\");\nclass TSEnumNameDefinition extends DefinitionBase_1.DefinitionBase {\n    isTypeDefinition = true;\n    isVariableDefinition = true;\n    constructor(name, node) {\n        super(DefinitionType_1.DefinitionType.TSEnumName, name, node, null);\n    }\n}\nexports.TSEnumNameDefinition = TSEnumNameDefinition;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TSModuleNameDefinition = void 0;\nconst DefinitionBase_1 = require(\"./DefinitionBase\");\nconst DefinitionType_1 = require(\"./DefinitionType\");\nclass TSModuleNameDefinition extends DefinitionBase_1.DefinitionBase {\n    isTypeDefinition = true;\n    isVariableDefinition = true;\n    constructor(name, node) {\n        super(DefinitionType_1.DefinitionType.TSModuleName, name, node, null);\n    }\n}\nexports.TSModuleNameDefinition = TSModuleNameDefinition;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeDefinition = void 0;\nconst DefinitionBase_1 = require(\"./DefinitionBase\");\nconst DefinitionType_1 = require(\"./DefinitionType\");\nclass TypeDefinition extends DefinitionBase_1.DefinitionBase {\n    isTypeDefinition = true;\n    isVariableDefinition = false;\n    constructor(name, node) {\n        super(DefinitionType_1.DefinitionType.Type, name, node, null);\n    }\n}\nexports.TypeDefinition = TypeDefinition;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VariableDefinition = void 0;\nconst DefinitionBase_1 = require(\"./DefinitionBase\");\nconst DefinitionType_1 = require(\"./DefinitionType\");\nclass VariableDefinition extends DefinitionBase_1.DefinitionBase {\n    isTypeDefinition = false;\n    isVariableDefinition = true;\n    constructor(name, node, decl) {\n        super(DefinitionType_1.DefinitionType.Variable, name, node, decl);\n    }\n}\nexports.VariableDefinition = VariableDefinition;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./CatchClauseDefinition\"), exports);\n__exportStar(require(\"./ClassNameDefinition\"), exports);\n__exportStar(require(\"./Definition\"), exports);\n__exportStar(require(\"./DefinitionType\"), exports);\n__exportStar(require(\"./FunctionNameDefinition\"), exports);\n__exportStar(require(\"./ImplicitGlobalVariableDefinition\"), exports);\n__exportStar(require(\"./ImportBindingDefinition\"), exports);\n__exportStar(require(\"./ParameterDefinition\"), exports);\n__exportStar(require(\"./TSEnumMemberDefinition\"), exports);\n__exportStar(require(\"./TSEnumNameDefinition\"), exports);\n__exportStar(require(\"./TSModuleNameDefinition\"), exports);\n__exportStar(require(\"./TypeDefinition\"), exports);\n__exportStar(require(\"./VariableDefinition\"), exports);\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TYPE_VALUE = exports.VALUE = exports.TYPE = void 0;\nexports.TYPE = Object.freeze({\n    eslintImplicitGlobalSetting: 'readonly',\n    isTypeVariable: true,\n    isValueVariable: false,\n});\nexports.VALUE = Object.freeze({\n    eslintImplicitGlobalSetting: 'readonly',\n    isTypeVariable: false,\n    isValueVariable: true,\n});\nexports.TYPE_VALUE = Object.freeze({\n    eslintImplicitGlobalSetting: 'readonly',\n    isTypeVariable: true,\n    isValueVariable: true,\n});\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decorators = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.decorators = {\n    libs: [],\n    variables: [\n        ['ClassMemberDecoratorContext', base_config_1.TYPE],\n        ['DecoratorContext', base_config_1.TYPE],\n        ['DecoratorMetadataObject', base_config_1.TYPE],\n        ['DecoratorMetadata', base_config_1.TYPE],\n        ['ClassDecoratorContext', base_config_1.TYPE],\n        ['ClassMethodDecoratorContext', base_config_1.TYPE],\n        ['ClassGetterDecoratorContext', base_config_1.TYPE],\n        ['ClassSetterDecoratorContext', base_config_1.TYPE],\n        ['ClassAccessorDecoratorContext', base_config_1.TYPE],\n        ['ClassAccessorDecoratorTarget', base_config_1.TYPE],\n        ['ClassAccessorDecoratorResult', base_config_1.TYPE],\n        ['ClassFieldDecoratorContext', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decorators_legacy = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.decorators_legacy = {\n    libs: [],\n    variables: [\n        ['ClassDecorator', base_config_1.TYPE],\n        ['PropertyDecorator', base_config_1.TYPE],\n        ['MethodDecorator', base_config_1.TYPE],\n        ['ParameterDecorator', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es5 = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst decorators_1 = require(\"./decorators\");\nconst decorators_legacy_1 = require(\"./decorators.legacy\");\nexports.es5 = {\n    libs: [decorators_1.decorators, decorators_legacy_1.decorators_legacy],\n    variables: [\n        ['Symbol', base_config_1.TYPE],\n        ['PropertyKey', base_config_1.TYPE],\n        ['PropertyDescriptor', base_config_1.TYPE],\n        ['PropertyDescriptorMap', base_config_1.TYPE],\n        ['Object', base_config_1.TYPE_VALUE],\n        ['ObjectConstructor', base_config_1.TYPE],\n        ['Function', base_config_1.TYPE_VALUE],\n        ['FunctionConstructor', base_config_1.TYPE],\n        ['ThisParameterType', base_config_1.TYPE],\n        ['OmitThisParameter', base_config_1.TYPE],\n        ['CallableFunction', base_config_1.TYPE],\n        ['NewableFunction', base_config_1.TYPE],\n        ['IArguments', base_config_1.TYPE],\n        ['String', base_config_1.TYPE_VALUE],\n        ['StringConstructor', base_config_1.TYPE],\n        ['Boolean', base_config_1.TYPE_VALUE],\n        ['BooleanConstructor', base_config_1.TYPE],\n        ['Number', base_config_1.TYPE_VALUE],\n        ['NumberConstructor', base_config_1.TYPE],\n        ['TemplateStringsArray', base_config_1.TYPE],\n        ['ImportMeta', base_config_1.TYPE],\n        ['ImportCallOptions', base_config_1.TYPE],\n        ['ImportAssertions', base_config_1.TYPE],\n        ['ImportAttributes', base_config_1.TYPE],\n        ['Math', base_config_1.TYPE_VALUE],\n        ['Date', base_config_1.TYPE_VALUE],\n        ['DateConstructor', base_config_1.TYPE],\n        ['RegExpMatchArray', base_config_1.TYPE],\n        ['RegExpExecArray', base_config_1.TYPE],\n        ['RegExp', base_config_1.TYPE_VALUE],\n        ['RegExpConstructor', base_config_1.TYPE],\n        ['Error', base_config_1.TYPE_VALUE],\n        ['ErrorConstructor', base_config_1.TYPE],\n        ['EvalError', base_config_1.TYPE_VALUE],\n        ['EvalErrorConstructor', base_config_1.TYPE],\n        ['RangeError', base_config_1.TYPE_VALUE],\n        ['RangeErrorConstructor', base_config_1.TYPE],\n        ['ReferenceError', base_config_1.TYPE_VALUE],\n        ['ReferenceErrorConstructor', base_config_1.TYPE],\n        ['SyntaxError', base_config_1.TYPE_VALUE],\n        ['SyntaxErrorConstructor', base_config_1.TYPE],\n        ['TypeError', base_config_1.TYPE_VALUE],\n        ['TypeErrorConstructor', base_config_1.TYPE],\n        ['URIError', base_config_1.TYPE_VALUE],\n        ['URIErrorConstructor', base_config_1.TYPE],\n        ['JSON', base_config_1.TYPE_VALUE],\n        ['ReadonlyArray', base_config_1.TYPE],\n        ['ConcatArray', base_config_1.TYPE],\n        ['Array', base_config_1.TYPE_VALUE],\n        ['ArrayConstructor', base_config_1.TYPE],\n        ['TypedPropertyDescriptor', base_config_1.TYPE],\n        ['PromiseConstructorLike', base_config_1.TYPE],\n        ['PromiseLike', base_config_1.TYPE],\n        ['Promise', base_config_1.TYPE],\n        ['Awaited', base_config_1.TYPE],\n        ['ArrayLike', base_config_1.TYPE],\n        ['Partial', base_config_1.TYPE],\n        ['Required', base_config_1.TYPE],\n        ['Readonly', base_config_1.TYPE],\n        ['Pick', base_config_1.TYPE],\n        ['Record', base_config_1.TYPE],\n        ['Exclude', base_config_1.TYPE],\n        ['Extract', base_config_1.TYPE],\n        ['Omit', base_config_1.TYPE],\n        ['NonNullable', base_config_1.TYPE],\n        ['Parameters', base_config_1.TYPE],\n        ['ConstructorParameters', base_config_1.TYPE],\n        ['ReturnType', base_config_1.TYPE],\n        ['InstanceType', base_config_1.TYPE],\n        ['Uppercase', base_config_1.TYPE],\n        ['Lowercase', base_config_1.TYPE],\n        ['Capitalize', base_config_1.TYPE],\n        ['Uncapitalize', base_config_1.TYPE],\n        ['NoInfer', base_config_1.TYPE],\n        ['ThisType', base_config_1.TYPE],\n        ['WeakKeyTypes', base_config_1.TYPE],\n        ['WeakKey', base_config_1.TYPE],\n        ['ArrayBuffer', base_config_1.TYPE_VALUE],\n        ['ArrayBufferTypes', base_config_1.TYPE],\n        ['ArrayBufferLike', base_config_1.TYPE],\n        ['ArrayBufferConstructor', base_config_1.TYPE],\n        ['ArrayBufferView', base_config_1.TYPE],\n        ['DataView', base_config_1.TYPE_VALUE],\n        ['DataViewConstructor', base_config_1.TYPE],\n        ['Int8Array', base_config_1.TYPE_VALUE],\n        ['Int8ArrayConstructor', base_config_1.TYPE],\n        ['Uint8Array', base_config_1.TYPE_VALUE],\n        ['Uint8ArrayConstructor', base_config_1.TYPE],\n        ['Uint8ClampedArray', base_config_1.TYPE_VALUE],\n        ['Uint8ClampedArrayConstructor', base_config_1.TYPE],\n        ['Int16Array', base_config_1.TYPE_VALUE],\n        ['Int16ArrayConstructor', base_config_1.TYPE],\n        ['Uint16Array', base_config_1.TYPE_VALUE],\n        ['Uint16ArrayConstructor', base_config_1.TYPE],\n        ['Int32Array', base_config_1.TYPE_VALUE],\n        ['Int32ArrayConstructor', base_config_1.TYPE],\n        ['Uint32Array', base_config_1.TYPE_VALUE],\n        ['Uint32ArrayConstructor', base_config_1.TYPE],\n        ['Float32Array', base_config_1.TYPE_VALUE],\n        ['Float32ArrayConstructor', base_config_1.TYPE],\n        ['Float64Array', base_config_1.TYPE_VALUE],\n        ['Float64ArrayConstructor', base_config_1.TYPE],\n        ['Intl', base_config_1.TYPE_VALUE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2015_collection = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2015_collection = {\n    libs: [],\n    variables: [\n        ['Map', base_config_1.TYPE_VALUE],\n        ['MapConstructor', base_config_1.TYPE],\n        ['ReadonlyMap', base_config_1.TYPE],\n        ['WeakMap', base_config_1.TYPE_VALUE],\n        ['WeakMapConstructor', base_config_1.TYPE],\n        ['Set', base_config_1.TYPE_VALUE],\n        ['SetConstructor', base_config_1.TYPE],\n        ['ReadonlySet', base_config_1.TYPE],\n        ['WeakSet', base_config_1.TYPE_VALUE],\n        ['WeakSetConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2015_core = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2015_core = {\n    libs: [],\n    variables: [\n        ['Array', base_config_1.TYPE],\n        ['ArrayConstructor', base_config_1.TYPE],\n        ['DateConstructor', base_config_1.TYPE],\n        ['Function', base_config_1.TYPE],\n        ['Math', base_config_1.TYPE],\n        ['NumberConstructor', base_config_1.TYPE],\n        ['ObjectConstructor', base_config_1.TYPE],\n        ['ReadonlyArray', base_config_1.TYPE],\n        ['RegExp', base_config_1.TYPE],\n        ['RegExpConstructor', base_config_1.TYPE],\n        ['String', base_config_1.TYPE],\n        ['StringConstructor', base_config_1.TYPE],\n        ['Int8Array', base_config_1.TYPE],\n        ['Uint8Array', base_config_1.TYPE],\n        ['Uint8ClampedArray', base_config_1.TYPE],\n        ['Int16Array', base_config_1.TYPE],\n        ['Uint16Array', base_config_1.TYPE],\n        ['Int32Array', base_config_1.TYPE],\n        ['Uint32Array', base_config_1.TYPE],\n        ['Float32Array', base_config_1.TYPE],\n        ['Float64Array', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2015_symbol = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2015_symbol = {\n    libs: [],\n    variables: [['SymbolConstructor', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2015_iterable = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_symbol_1 = require(\"./es2015.symbol\");\nexports.es2015_iterable = {\n    libs: [es2015_symbol_1.es2015_symbol],\n    variables: [\n        ['SymbolConstructor', base_config_1.TYPE],\n        ['IteratorYieldResult', base_config_1.TYPE],\n        ['IteratorReturnResult', base_config_1.TYPE],\n        ['IteratorResult', base_config_1.TYPE],\n        ['Iterator', base_config_1.TYPE],\n        ['Iterable', base_config_1.TYPE],\n        ['IterableIterator', base_config_1.TYPE],\n        ['IteratorObject', base_config_1.TYPE],\n        ['BuiltinIteratorReturn', base_config_1.TYPE],\n        ['ArrayIterator', base_config_1.TYPE],\n        ['Array', base_config_1.TYPE],\n        ['ArrayConstructor', base_config_1.TYPE],\n        ['ReadonlyArray', base_config_1.TYPE],\n        ['IArguments', base_config_1.TYPE],\n        ['MapIterator', base_config_1.TYPE],\n        ['Map', base_config_1.TYPE],\n        ['ReadonlyMap', base_config_1.TYPE],\n        ['MapConstructor', base_config_1.TYPE],\n        ['WeakMap', base_config_1.TYPE],\n        ['WeakMapConstructor', base_config_1.TYPE],\n        ['SetIterator', base_config_1.TYPE],\n        ['Set', base_config_1.TYPE],\n        ['ReadonlySet', base_config_1.TYPE],\n        ['SetConstructor', base_config_1.TYPE],\n        ['WeakSet', base_config_1.TYPE],\n        ['WeakSetConstructor', base_config_1.TYPE],\n        ['Promise', base_config_1.TYPE],\n        ['PromiseConstructor', base_config_1.TYPE],\n        ['StringIterator', base_config_1.TYPE],\n        ['String', base_config_1.TYPE],\n        ['Int8Array', base_config_1.TYPE],\n        ['Int8ArrayConstructor', base_config_1.TYPE],\n        ['Uint8Array', base_config_1.TYPE],\n        ['Uint8ArrayConstructor', base_config_1.TYPE],\n        ['Uint8ClampedArray', base_config_1.TYPE],\n        ['Uint8ClampedArrayConstructor', base_config_1.TYPE],\n        ['Int16Array', base_config_1.TYPE],\n        ['Int16ArrayConstructor', base_config_1.TYPE],\n        ['Uint16Array', base_config_1.TYPE],\n        ['Uint16ArrayConstructor', base_config_1.TYPE],\n        ['Int32Array', base_config_1.TYPE],\n        ['Int32ArrayConstructor', base_config_1.TYPE],\n        ['Uint32Array', base_config_1.TYPE],\n        ['Uint32ArrayConstructor', base_config_1.TYPE],\n        ['Float32Array', base_config_1.TYPE],\n        ['Float32ArrayConstructor', base_config_1.TYPE],\n        ['Float64Array', base_config_1.TYPE],\n        ['Float64ArrayConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2015_generator = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_iterable_1 = require(\"./es2015.iterable\");\nexports.es2015_generator = {\n    libs: [es2015_iterable_1.es2015_iterable],\n    variables: [\n        ['Generator', base_config_1.TYPE],\n        ['GeneratorFunction', base_config_1.TYPE],\n        ['GeneratorFunctionConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2015_promise = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2015_promise = {\n    libs: [],\n    variables: [['PromiseConstructor', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2015_proxy = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2015_proxy = {\n    libs: [],\n    variables: [\n        ['ProxyHandler', base_config_1.TYPE],\n        ['ProxyConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2015_reflect = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2015_reflect = {\n    libs: [],\n    variables: [['Reflect', base_config_1.TYPE_VALUE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2015_symbol_wellknown = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_symbol_1 = require(\"./es2015.symbol\");\nexports.es2015_symbol_wellknown = {\n    libs: [es2015_symbol_1.es2015_symbol],\n    variables: [\n        ['SymbolConstructor', base_config_1.TYPE],\n        ['Symbol', base_config_1.TYPE],\n        ['Array', base_config_1.TYPE],\n        ['ReadonlyArray', base_config_1.TYPE],\n        ['Date', base_config_1.TYPE],\n        ['Map', base_config_1.TYPE],\n        ['WeakMap', base_config_1.TYPE],\n        ['Set', base_config_1.TYPE],\n        ['WeakSet', base_config_1.TYPE],\n        ['JSON', base_config_1.TYPE],\n        ['Function', base_config_1.TYPE],\n        ['GeneratorFunction', base_config_1.TYPE],\n        ['Math', base_config_1.TYPE],\n        ['Promise', base_config_1.TYPE],\n        ['PromiseConstructor', base_config_1.TYPE],\n        ['RegExp', base_config_1.TYPE],\n        ['RegExpConstructor', base_config_1.TYPE],\n        ['String', base_config_1.TYPE],\n        ['ArrayBuffer', base_config_1.TYPE],\n        ['DataView', base_config_1.TYPE],\n        ['Int8Array', base_config_1.TYPE],\n        ['Uint8Array', base_config_1.TYPE],\n        ['Uint8ClampedArray', base_config_1.TYPE],\n        ['Int16Array', base_config_1.TYPE],\n        ['Uint16Array', base_config_1.TYPE],\n        ['Int32Array', base_config_1.TYPE],\n        ['Uint32Array', base_config_1.TYPE],\n        ['Float32Array', base_config_1.TYPE],\n        ['Float64Array', base_config_1.TYPE],\n        ['ArrayConstructor', base_config_1.TYPE],\n        ['MapConstructor', base_config_1.TYPE],\n        ['SetConstructor', base_config_1.TYPE],\n        ['ArrayBufferConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2015 = void 0;\nconst es5_1 = require(\"./es5\");\nconst es2015_collection_1 = require(\"./es2015.collection\");\nconst es2015_core_1 = require(\"./es2015.core\");\nconst es2015_generator_1 = require(\"./es2015.generator\");\nconst es2015_iterable_1 = require(\"./es2015.iterable\");\nconst es2015_promise_1 = require(\"./es2015.promise\");\nconst es2015_proxy_1 = require(\"./es2015.proxy\");\nconst es2015_reflect_1 = require(\"./es2015.reflect\");\nconst es2015_symbol_1 = require(\"./es2015.symbol\");\nconst es2015_symbol_wellknown_1 = require(\"./es2015.symbol.wellknown\");\nexports.es2015 = {\n    libs: [\n        es5_1.es5,\n        es2015_core_1.es2015_core,\n        es2015_collection_1.es2015_collection,\n        es2015_iterable_1.es2015_iterable,\n        es2015_generator_1.es2015_generator,\n        es2015_promise_1.es2015_promise,\n        es2015_proxy_1.es2015_proxy,\n        es2015_reflect_1.es2015_reflect,\n        es2015_symbol_1.es2015_symbol,\n        es2015_symbol_wellknown_1.es2015_symbol_wellknown,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2018_asynciterable = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_iterable_1 = require(\"./es2015.iterable\");\nconst es2015_symbol_1 = require(\"./es2015.symbol\");\nexports.es2018_asynciterable = {\n    libs: [es2015_symbol_1.es2015_symbol, es2015_iterable_1.es2015_iterable],\n    variables: [\n        ['SymbolConstructor', base_config_1.TYPE],\n        ['AsyncIterator', base_config_1.TYPE],\n        ['AsyncIterable', base_config_1.TYPE],\n        ['AsyncIterableIterator', base_config_1.TYPE],\n        ['AsyncIteratorObject', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dom = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_1 = require(\"./es2015\");\nconst es2018_asynciterable_1 = require(\"./es2018.asynciterable\");\nexports.dom = {\n    libs: [es2015_1.es2015, es2018_asynciterable_1.es2018_asynciterable],\n    variables: [\n        ['AacEncoderConfig', base_config_1.TYPE],\n        ['AddEventListenerOptions', base_config_1.TYPE],\n        ['AddressErrors', base_config_1.TYPE],\n        ['AesCbcParams', base_config_1.TYPE],\n        ['AesCtrParams', base_config_1.TYPE],\n        ['AesDerivedKeyParams', base_config_1.TYPE],\n        ['AesGcmParams', base_config_1.TYPE],\n        ['AesKeyAlgorithm', base_config_1.TYPE],\n        ['AesKeyGenParams', base_config_1.TYPE],\n        ['Algorithm', base_config_1.TYPE],\n        ['AllAcceptedCredentialsOptions', base_config_1.TYPE],\n        ['AnalyserOptions', base_config_1.TYPE],\n        ['AnimationEventInit', base_config_1.TYPE],\n        ['AnimationPlaybackEventInit', base_config_1.TYPE],\n        ['AssignedNodesOptions', base_config_1.TYPE],\n        ['AudioBufferOptions', base_config_1.TYPE],\n        ['AudioBufferSourceOptions', base_config_1.TYPE],\n        ['AudioConfiguration', base_config_1.TYPE],\n        ['AudioContextOptions', base_config_1.TYPE],\n        ['AudioDataCopyToOptions', base_config_1.TYPE],\n        ['AudioDataInit', base_config_1.TYPE],\n        ['AudioDecoderConfig', base_config_1.TYPE],\n        ['AudioDecoderInit', base_config_1.TYPE],\n        ['AudioDecoderSupport', base_config_1.TYPE],\n        ['AudioEncoderConfig', base_config_1.TYPE],\n        ['AudioEncoderInit', base_config_1.TYPE],\n        ['AudioEncoderSupport', base_config_1.TYPE],\n        ['AudioNodeOptions', base_config_1.TYPE],\n        ['AudioProcessingEventInit', base_config_1.TYPE],\n        ['AudioTimestamp', base_config_1.TYPE],\n        ['AudioWorkletNodeOptions', base_config_1.TYPE],\n        ['AuthenticationExtensionsClientInputs', base_config_1.TYPE],\n        ['AuthenticationExtensionsClientInputsJSON', base_config_1.TYPE],\n        ['AuthenticationExtensionsClientOutputs', base_config_1.TYPE],\n        ['AuthenticationExtensionsClientOutputsJSON', base_config_1.TYPE],\n        ['AuthenticationExtensionsLargeBlobInputs', base_config_1.TYPE],\n        ['AuthenticationExtensionsLargeBlobInputsJSON', base_config_1.TYPE],\n        ['AuthenticationExtensionsLargeBlobOutputs', base_config_1.TYPE],\n        ['AuthenticationExtensionsLargeBlobOutputsJSON', base_config_1.TYPE],\n        ['AuthenticationExtensionsPRFInputs', base_config_1.TYPE],\n        ['AuthenticationExtensionsPRFInputsJSON', base_config_1.TYPE],\n        ['AuthenticationExtensionsPRFOutputs', base_config_1.TYPE],\n        ['AuthenticationExtensionsPRFOutputsJSON', base_config_1.TYPE],\n        ['AuthenticationExtensionsPRFValues', base_config_1.TYPE],\n        ['AuthenticationExtensionsPRFValuesJSON', base_config_1.TYPE],\n        ['AuthenticationResponseJSON', base_config_1.TYPE],\n        ['AuthenticatorAssertionResponseJSON', base_config_1.TYPE],\n        ['AuthenticatorAttestationResponseJSON', base_config_1.TYPE],\n        ['AuthenticatorSelectionCriteria', base_config_1.TYPE],\n        ['AvcEncoderConfig', base_config_1.TYPE],\n        ['BiquadFilterOptions', base_config_1.TYPE],\n        ['BlobEventInit', base_config_1.TYPE],\n        ['BlobPropertyBag', base_config_1.TYPE],\n        ['CSSMatrixComponentOptions', base_config_1.TYPE],\n        ['CSSNumericType', base_config_1.TYPE],\n        ['CSSStyleSheetInit', base_config_1.TYPE],\n        ['CacheQueryOptions', base_config_1.TYPE],\n        ['CanvasRenderingContext2DSettings', base_config_1.TYPE],\n        ['CaretPositionFromPointOptions', base_config_1.TYPE],\n        ['ChannelMergerOptions', base_config_1.TYPE],\n        ['ChannelSplitterOptions', base_config_1.TYPE],\n        ['CheckVisibilityOptions', base_config_1.TYPE],\n        ['ClientQueryOptions', base_config_1.TYPE],\n        ['ClipboardEventInit', base_config_1.TYPE],\n        ['ClipboardItemOptions', base_config_1.TYPE],\n        ['CloseEventInit', base_config_1.TYPE],\n        ['CommandEventInit', base_config_1.TYPE],\n        ['CompositionEventInit', base_config_1.TYPE],\n        ['ComputedEffectTiming', base_config_1.TYPE],\n        ['ComputedKeyframe', base_config_1.TYPE],\n        ['ConstantSourceOptions', base_config_1.TYPE],\n        ['ConstrainBooleanOrDOMStringParameters', base_config_1.TYPE],\n        ['ConstrainBooleanParameters', base_config_1.TYPE],\n        ['ConstrainDOMStringParameters', base_config_1.TYPE],\n        ['ConstrainDoubleRange', base_config_1.TYPE],\n        ['ConstrainULongRange', base_config_1.TYPE],\n        ['ContentVisibilityAutoStateChangeEventInit', base_config_1.TYPE],\n        ['ConvolverOptions', base_config_1.TYPE],\n        ['CookieChangeEventInit', base_config_1.TYPE],\n        ['CookieInit', base_config_1.TYPE],\n        ['CookieListItem', base_config_1.TYPE],\n        ['CookieStoreDeleteOptions', base_config_1.TYPE],\n        ['CookieStoreGetOptions', base_config_1.TYPE],\n        ['CredentialCreationOptions', base_config_1.TYPE],\n        ['CredentialPropertiesOutput', base_config_1.TYPE],\n        ['CredentialRequestOptions', base_config_1.TYPE],\n        ['CryptoKeyPair', base_config_1.TYPE],\n        ['CurrentUserDetailsOptions', base_config_1.TYPE],\n        ['CustomEventInit', base_config_1.TYPE],\n        ['DOMMatrix2DInit', base_config_1.TYPE],\n        ['DOMMatrixInit', base_config_1.TYPE],\n        ['DOMPointInit', base_config_1.TYPE],\n        ['DOMQuadInit', base_config_1.TYPE],\n        ['DOMRectInit', base_config_1.TYPE],\n        ['DelayOptions', base_config_1.TYPE],\n        ['DeviceMotionEventAccelerationInit', base_config_1.TYPE],\n        ['DeviceMotionEventInit', base_config_1.TYPE],\n        ['DeviceMotionEventRotationRateInit', base_config_1.TYPE],\n        ['DeviceOrientationEventInit', base_config_1.TYPE],\n        ['DisplayMediaStreamOptions', base_config_1.TYPE],\n        ['DocumentTimelineOptions', base_config_1.TYPE],\n        ['DoubleRange', base_config_1.TYPE],\n        ['DragEventInit', base_config_1.TYPE],\n        ['DynamicsCompressorOptions', base_config_1.TYPE],\n        ['EcKeyAlgorithm', base_config_1.TYPE],\n        ['EcKeyGenParams', base_config_1.TYPE],\n        ['EcKeyImportParams', base_config_1.TYPE],\n        ['EcdhKeyDeriveParams', base_config_1.TYPE],\n        ['EcdsaParams', base_config_1.TYPE],\n        ['EffectTiming', base_config_1.TYPE],\n        ['ElementCreationOptions', base_config_1.TYPE],\n        ['ElementDefinitionOptions', base_config_1.TYPE],\n        ['EncodedAudioChunkInit', base_config_1.TYPE],\n        ['EncodedAudioChunkMetadata', base_config_1.TYPE],\n        ['EncodedVideoChunkInit', base_config_1.TYPE],\n        ['EncodedVideoChunkMetadata', base_config_1.TYPE],\n        ['ErrorEventInit', base_config_1.TYPE],\n        ['EventInit', base_config_1.TYPE],\n        ['EventListenerOptions', base_config_1.TYPE],\n        ['EventModifierInit', base_config_1.TYPE],\n        ['EventSourceInit', base_config_1.TYPE],\n        ['FilePropertyBag', base_config_1.TYPE],\n        ['FileSystemCreateWritableOptions', base_config_1.TYPE],\n        ['FileSystemFlags', base_config_1.TYPE],\n        ['FileSystemGetDirectoryOptions', base_config_1.TYPE],\n        ['FileSystemGetFileOptions', base_config_1.TYPE],\n        ['FileSystemRemoveOptions', base_config_1.TYPE],\n        ['FocusEventInit', base_config_1.TYPE],\n        ['FocusOptions', base_config_1.TYPE],\n        ['FontFaceDescriptors', base_config_1.TYPE],\n        ['FontFaceSetLoadEventInit', base_config_1.TYPE],\n        ['FormDataEventInit', base_config_1.TYPE],\n        ['FullscreenOptions', base_config_1.TYPE],\n        ['GPUBindGroupDescriptor', base_config_1.TYPE],\n        ['GPUBindGroupEntry', base_config_1.TYPE],\n        ['GPUBindGroupLayoutDescriptor', base_config_1.TYPE],\n        ['GPUBindGroupLayoutEntry', base_config_1.TYPE],\n        ['GPUBlendComponent', base_config_1.TYPE],\n        ['GPUBlendState', base_config_1.TYPE],\n        ['GPUBufferBinding', base_config_1.TYPE],\n        ['GPUBufferBindingLayout', base_config_1.TYPE],\n        ['GPUBufferDescriptor', base_config_1.TYPE],\n        ['GPUCanvasConfiguration', base_config_1.TYPE],\n        ['GPUCanvasToneMapping', base_config_1.TYPE],\n        ['GPUColorDict', base_config_1.TYPE],\n        ['GPUColorTargetState', base_config_1.TYPE],\n        ['GPUCommandBufferDescriptor', base_config_1.TYPE],\n        ['GPUCommandEncoderDescriptor', base_config_1.TYPE],\n        ['GPUComputePassDescriptor', base_config_1.TYPE],\n        ['GPUComputePassTimestampWrites', base_config_1.TYPE],\n        ['GPUComputePipelineDescriptor', base_config_1.TYPE],\n        ['GPUCopyExternalImageDestInfo', base_config_1.TYPE],\n        ['GPUCopyExternalImageSourceInfo', base_config_1.TYPE],\n        ['GPUDepthStencilState', base_config_1.TYPE],\n        ['GPUDeviceDescriptor', base_config_1.TYPE],\n        ['GPUExtent3DDict', base_config_1.TYPE],\n        ['GPUExternalTextureBindingLayout', base_config_1.TYPE],\n        ['GPUExternalTextureDescriptor', base_config_1.TYPE],\n        ['GPUFragmentState', base_config_1.TYPE],\n        ['GPUMultisampleState', base_config_1.TYPE],\n        ['GPUObjectDescriptorBase', base_config_1.TYPE],\n        ['GPUOrigin2DDict', base_config_1.TYPE],\n        ['GPUOrigin3DDict', base_config_1.TYPE],\n        ['GPUPipelineDescriptorBase', base_config_1.TYPE],\n        ['GPUPipelineErrorInit', base_config_1.TYPE],\n        ['GPUPipelineLayoutDescriptor', base_config_1.TYPE],\n        ['GPUPrimitiveState', base_config_1.TYPE],\n        ['GPUProgrammableStage', base_config_1.TYPE],\n        ['GPUQuerySetDescriptor', base_config_1.TYPE],\n        ['GPUQueueDescriptor', base_config_1.TYPE],\n        ['GPURenderBundleDescriptor', base_config_1.TYPE],\n        ['GPURenderBundleEncoderDescriptor', base_config_1.TYPE],\n        ['GPURenderPassColorAttachment', base_config_1.TYPE],\n        ['GPURenderPassDepthStencilAttachment', base_config_1.TYPE],\n        ['GPURenderPassDescriptor', base_config_1.TYPE],\n        ['GPURenderPassLayout', base_config_1.TYPE],\n        ['GPURenderPassTimestampWrites', base_config_1.TYPE],\n        ['GPURenderPipelineDescriptor', base_config_1.TYPE],\n        ['GPURequestAdapterOptions', base_config_1.TYPE],\n        ['GPUSamplerBindingLayout', base_config_1.TYPE],\n        ['GPUSamplerDescriptor', base_config_1.TYPE],\n        ['GPUShaderModuleDescriptor', base_config_1.TYPE],\n        ['GPUStencilFaceState', base_config_1.TYPE],\n        ['GPUStorageTextureBindingLayout', base_config_1.TYPE],\n        ['GPUTexelCopyBufferInfo', base_config_1.TYPE],\n        ['GPUTexelCopyBufferLayout', base_config_1.TYPE],\n        ['GPUTexelCopyTextureInfo', base_config_1.TYPE],\n        ['GPUTextureBindingLayout', base_config_1.TYPE],\n        ['GPUTextureDescriptor', base_config_1.TYPE],\n        ['GPUTextureViewDescriptor', base_config_1.TYPE],\n        ['GPUUncapturedErrorEventInit', base_config_1.TYPE],\n        ['GPUVertexAttribute', base_config_1.TYPE],\n        ['GPUVertexBufferLayout', base_config_1.TYPE],\n        ['GPUVertexState', base_config_1.TYPE],\n        ['GainOptions', base_config_1.TYPE],\n        ['GamepadEffectParameters', base_config_1.TYPE],\n        ['GamepadEventInit', base_config_1.TYPE],\n        ['GetAnimationsOptions', base_config_1.TYPE],\n        ['GetComposedRangesOptions', base_config_1.TYPE],\n        ['GetHTMLOptions', base_config_1.TYPE],\n        ['GetNotificationOptions', base_config_1.TYPE],\n        ['GetRootNodeOptions', base_config_1.TYPE],\n        ['HashChangeEventInit', base_config_1.TYPE],\n        ['HkdfParams', base_config_1.TYPE],\n        ['HmacImportParams', base_config_1.TYPE],\n        ['HmacKeyAlgorithm', base_config_1.TYPE],\n        ['HmacKeyGenParams', base_config_1.TYPE],\n        ['IDBDatabaseInfo', base_config_1.TYPE],\n        ['IDBIndexParameters', base_config_1.TYPE],\n        ['IDBObjectStoreParameters', base_config_1.TYPE],\n        ['IDBTransactionOptions', base_config_1.TYPE],\n        ['IDBVersionChangeEventInit', base_config_1.TYPE],\n        ['IIRFilterOptions', base_config_1.TYPE],\n        ['IdleRequestOptions', base_config_1.TYPE],\n        ['ImageBitmapOptions', base_config_1.TYPE],\n        ['ImageBitmapRenderingContextSettings', base_config_1.TYPE],\n        ['ImageDataSettings', base_config_1.TYPE],\n        ['ImageDecodeOptions', base_config_1.TYPE],\n        ['ImageDecodeResult', base_config_1.TYPE],\n        ['ImageDecoderInit', base_config_1.TYPE],\n        ['ImageEncodeOptions', base_config_1.TYPE],\n        ['ImportNodeOptions', base_config_1.TYPE],\n        ['InputEventInit', base_config_1.TYPE],\n        ['IntersectionObserverInit', base_config_1.TYPE],\n        ['JsonWebKey', base_config_1.TYPE],\n        ['KeyAlgorithm', base_config_1.TYPE],\n        ['KeySystemTrackConfiguration', base_config_1.TYPE],\n        ['KeyboardEventInit', base_config_1.TYPE],\n        ['Keyframe', base_config_1.TYPE],\n        ['KeyframeAnimationOptions', base_config_1.TYPE],\n        ['KeyframeEffectOptions', base_config_1.TYPE],\n        ['LockInfo', base_config_1.TYPE],\n        ['LockManagerSnapshot', base_config_1.TYPE],\n        ['LockOptions', base_config_1.TYPE],\n        ['MIDIConnectionEventInit', base_config_1.TYPE],\n        ['MIDIMessageEventInit', base_config_1.TYPE],\n        ['MIDIOptions', base_config_1.TYPE],\n        ['MediaCapabilitiesDecodingInfo', base_config_1.TYPE],\n        ['MediaCapabilitiesEncodingInfo', base_config_1.TYPE],\n        ['MediaCapabilitiesInfo', base_config_1.TYPE],\n        ['MediaCapabilitiesKeySystemConfiguration', base_config_1.TYPE],\n        ['MediaConfiguration', base_config_1.TYPE],\n        ['MediaDecodingConfiguration', base_config_1.TYPE],\n        ['MediaElementAudioSourceOptions', base_config_1.TYPE],\n        ['MediaEncodingConfiguration', base_config_1.TYPE],\n        ['MediaEncryptedEventInit', base_config_1.TYPE],\n        ['MediaImage', base_config_1.TYPE],\n        ['MediaKeyMessageEventInit', base_config_1.TYPE],\n        ['MediaKeySystemConfiguration', base_config_1.TYPE],\n        ['MediaKeySystemMediaCapability', base_config_1.TYPE],\n        ['MediaKeysPolicy', base_config_1.TYPE],\n        ['MediaMetadataInit', base_config_1.TYPE],\n        ['MediaPositionState', base_config_1.TYPE],\n        ['MediaQueryListEventInit', base_config_1.TYPE],\n        ['MediaRecorderOptions', base_config_1.TYPE],\n        ['MediaSessionActionDetails', base_config_1.TYPE],\n        ['MediaSettingsRange', base_config_1.TYPE],\n        ['MediaStreamAudioSourceOptions', base_config_1.TYPE],\n        ['MediaStreamConstraints', base_config_1.TYPE],\n        ['MediaStreamTrackEventInit', base_config_1.TYPE],\n        ['MediaTrackCapabilities', base_config_1.TYPE],\n        ['MediaTrackConstraintSet', base_config_1.TYPE],\n        ['MediaTrackConstraints', base_config_1.TYPE],\n        ['MediaTrackSettings', base_config_1.TYPE],\n        ['MediaTrackSupportedConstraints', base_config_1.TYPE],\n        ['MessageEventInit', base_config_1.TYPE],\n        ['MouseEventInit', base_config_1.TYPE],\n        ['MultiCacheQueryOptions', base_config_1.TYPE],\n        ['MutationObserverInit', base_config_1.TYPE],\n        ['NavigateEventInit', base_config_1.TYPE],\n        ['NavigationCurrentEntryChangeEventInit', base_config_1.TYPE],\n        ['NavigationInterceptOptions', base_config_1.TYPE],\n        ['NavigationNavigateOptions', base_config_1.TYPE],\n        ['NavigationOptions', base_config_1.TYPE],\n        ['NavigationPreloadState', base_config_1.TYPE],\n        ['NavigationReloadOptions', base_config_1.TYPE],\n        ['NavigationResult', base_config_1.TYPE],\n        ['NavigationUpdateCurrentEntryOptions', base_config_1.TYPE],\n        ['NotificationOptions', base_config_1.TYPE],\n        ['OfflineAudioCompletionEventInit', base_config_1.TYPE],\n        ['OfflineAudioContextOptions', base_config_1.TYPE],\n        ['OptionalEffectTiming', base_config_1.TYPE],\n        ['OpusEncoderConfig', base_config_1.TYPE],\n        ['OscillatorOptions', base_config_1.TYPE],\n        ['PageRevealEventInit', base_config_1.TYPE],\n        ['PageSwapEventInit', base_config_1.TYPE],\n        ['PageTransitionEventInit', base_config_1.TYPE],\n        ['PannerOptions', base_config_1.TYPE],\n        ['PayerErrors', base_config_1.TYPE],\n        ['PaymentCurrencyAmount', base_config_1.TYPE],\n        ['PaymentDetailsBase', base_config_1.TYPE],\n        ['PaymentDetailsInit', base_config_1.TYPE],\n        ['PaymentDetailsModifier', base_config_1.TYPE],\n        ['PaymentDetailsUpdate', base_config_1.TYPE],\n        ['PaymentItem', base_config_1.TYPE],\n        ['PaymentMethodChangeEventInit', base_config_1.TYPE],\n        ['PaymentMethodData', base_config_1.TYPE],\n        ['PaymentOptions', base_config_1.TYPE],\n        ['PaymentRequestUpdateEventInit', base_config_1.TYPE],\n        ['PaymentShippingOption', base_config_1.TYPE],\n        ['PaymentValidationErrors', base_config_1.TYPE],\n        ['Pbkdf2Params', base_config_1.TYPE],\n        ['PerformanceMarkOptions', base_config_1.TYPE],\n        ['PerformanceMeasureOptions', base_config_1.TYPE],\n        ['PerformanceObserverInit', base_config_1.TYPE],\n        ['PeriodicWaveConstraints', base_config_1.TYPE],\n        ['PeriodicWaveOptions', base_config_1.TYPE],\n        ['PermissionDescriptor', base_config_1.TYPE],\n        ['PhotoCapabilities', base_config_1.TYPE],\n        ['PhotoSettings', base_config_1.TYPE],\n        ['PictureInPictureEventInit', base_config_1.TYPE],\n        ['PlaneLayout', base_config_1.TYPE],\n        ['PointerEventInit', base_config_1.TYPE],\n        ['PointerLockOptions', base_config_1.TYPE],\n        ['PopStateEventInit', base_config_1.TYPE],\n        ['PositionOptions', base_config_1.TYPE],\n        ['ProgressEventInit', base_config_1.TYPE],\n        ['PromiseRejectionEventInit', base_config_1.TYPE],\n        ['PropertyDefinition', base_config_1.TYPE],\n        ['PropertyIndexedKeyframes', base_config_1.TYPE],\n        ['PublicKeyCredentialCreationOptions', base_config_1.TYPE],\n        ['PublicKeyCredentialCreationOptionsJSON', base_config_1.TYPE],\n        ['PublicKeyCredentialDescriptor', base_config_1.TYPE],\n        ['PublicKeyCredentialDescriptorJSON', base_config_1.TYPE],\n        ['PublicKeyCredentialEntity', base_config_1.TYPE],\n        ['PublicKeyCredentialParameters', base_config_1.TYPE],\n        ['PublicKeyCredentialRequestOptions', base_config_1.TYPE],\n        ['PublicKeyCredentialRequestOptionsJSON', base_config_1.TYPE],\n        ['PublicKeyCredentialRpEntity', base_config_1.TYPE],\n        ['PublicKeyCredentialUserEntity', base_config_1.TYPE],\n        ['PublicKeyCredentialUserEntityJSON', base_config_1.TYPE],\n        ['PushSubscriptionJSON', base_config_1.TYPE],\n        ['PushSubscriptionOptionsInit', base_config_1.TYPE],\n        ['QueuingStrategy', base_config_1.TYPE],\n        ['QueuingStrategyInit', base_config_1.TYPE],\n        ['RTCAnswerOptions', base_config_1.TYPE],\n        ['RTCCertificateExpiration', base_config_1.TYPE],\n        ['RTCConfiguration', base_config_1.TYPE],\n        ['RTCDTMFToneChangeEventInit', base_config_1.TYPE],\n        ['RTCDataChannelEventInit', base_config_1.TYPE],\n        ['RTCDataChannelInit', base_config_1.TYPE],\n        ['RTCDtlsFingerprint', base_config_1.TYPE],\n        ['RTCEncodedAudioFrameMetadata', base_config_1.TYPE],\n        ['RTCEncodedFrameMetadata', base_config_1.TYPE],\n        ['RTCEncodedVideoFrameMetadata', base_config_1.TYPE],\n        ['RTCErrorEventInit', base_config_1.TYPE],\n        ['RTCErrorInit', base_config_1.TYPE],\n        ['RTCIceCandidateInit', base_config_1.TYPE],\n        ['RTCIceCandidatePairStats', base_config_1.TYPE],\n        ['RTCIceServer', base_config_1.TYPE],\n        ['RTCInboundRtpStreamStats', base_config_1.TYPE],\n        ['RTCLocalIceCandidateInit', base_config_1.TYPE],\n        ['RTCLocalSessionDescriptionInit', base_config_1.TYPE],\n        ['RTCOfferAnswerOptions', base_config_1.TYPE],\n        ['RTCOfferOptions', base_config_1.TYPE],\n        ['RTCOutboundRtpStreamStats', base_config_1.TYPE],\n        ['RTCPeerConnectionIceErrorEventInit', base_config_1.TYPE],\n        ['RTCPeerConnectionIceEventInit', base_config_1.TYPE],\n        ['RTCReceivedRtpStreamStats', base_config_1.TYPE],\n        ['RTCRtcpParameters', base_config_1.TYPE],\n        ['RTCRtpCapabilities', base_config_1.TYPE],\n        ['RTCRtpCodec', base_config_1.TYPE],\n        ['RTCRtpCodecParameters', base_config_1.TYPE],\n        ['RTCRtpCodingParameters', base_config_1.TYPE],\n        ['RTCRtpContributingSource', base_config_1.TYPE],\n        ['RTCRtpEncodingParameters', base_config_1.TYPE],\n        ['RTCRtpHeaderExtensionCapability', base_config_1.TYPE],\n        ['RTCRtpHeaderExtensionParameters', base_config_1.TYPE],\n        ['RTCRtpParameters', base_config_1.TYPE],\n        ['RTCRtpReceiveParameters', base_config_1.TYPE],\n        ['RTCRtpSendParameters', base_config_1.TYPE],\n        ['RTCRtpStreamStats', base_config_1.TYPE],\n        ['RTCRtpSynchronizationSource', base_config_1.TYPE],\n        ['RTCRtpTransceiverInit', base_config_1.TYPE],\n        ['RTCSentRtpStreamStats', base_config_1.TYPE],\n        ['RTCSessionDescriptionInit', base_config_1.TYPE],\n        ['RTCSetParameterOptions', base_config_1.TYPE],\n        ['RTCStats', base_config_1.TYPE],\n        ['RTCTrackEventInit', base_config_1.TYPE],\n        ['RTCTransportStats', base_config_1.TYPE],\n        ['ReadableStreamBYOBReaderReadOptions', base_config_1.TYPE],\n        ['ReadableStreamGetReaderOptions', base_config_1.TYPE],\n        ['ReadableStreamIteratorOptions', base_config_1.TYPE],\n        ['ReadableStreamReadDoneResult', base_config_1.TYPE],\n        ['ReadableStreamReadValueResult', base_config_1.TYPE],\n        ['ReadableWritablePair', base_config_1.TYPE],\n        ['RegistrationOptions', base_config_1.TYPE],\n        ['RegistrationResponseJSON', base_config_1.TYPE],\n        ['Report', base_config_1.TYPE],\n        ['ReportBody', base_config_1.TYPE],\n        ['ReportingObserverOptions', base_config_1.TYPE],\n        ['RequestInit', base_config_1.TYPE],\n        ['ResizeObserverOptions', base_config_1.TYPE],\n        ['ResponseInit', base_config_1.TYPE],\n        ['RsaHashedImportParams', base_config_1.TYPE],\n        ['RsaHashedKeyAlgorithm', base_config_1.TYPE],\n        ['RsaHashedKeyGenParams', base_config_1.TYPE],\n        ['RsaKeyAlgorithm', base_config_1.TYPE],\n        ['RsaKeyGenParams', base_config_1.TYPE],\n        ['RsaOaepParams', base_config_1.TYPE],\n        ['RsaOtherPrimesInfo', base_config_1.TYPE],\n        ['RsaPssParams', base_config_1.TYPE],\n        ['SVGBoundingBoxOptions', base_config_1.TYPE],\n        ['SanitizerAttributeNamespace', base_config_1.TYPE],\n        ['SanitizerConfig', base_config_1.TYPE],\n        ['SanitizerElementNamespace', base_config_1.TYPE],\n        ['SanitizerElementNamespaceWithAttributes', base_config_1.TYPE],\n        ['SchedulerPostTaskOptions', base_config_1.TYPE],\n        ['ScrollIntoViewOptions', base_config_1.TYPE],\n        ['ScrollOptions', base_config_1.TYPE],\n        ['ScrollTimelineOptions', base_config_1.TYPE],\n        ['ScrollToOptions', base_config_1.TYPE],\n        ['SecurityPolicyViolationEventInit', base_config_1.TYPE],\n        ['ShadowRootInit', base_config_1.TYPE],\n        ['ShareData', base_config_1.TYPE],\n        ['ShowPopoverOptions', base_config_1.TYPE],\n        ['SpeechRecognitionErrorEventInit', base_config_1.TYPE],\n        ['SpeechRecognitionEventInit', base_config_1.TYPE],\n        ['SpeechSynthesisErrorEventInit', base_config_1.TYPE],\n        ['SpeechSynthesisEventInit', base_config_1.TYPE],\n        ['StartViewTransitionOptions', base_config_1.TYPE],\n        ['StaticRangeInit', base_config_1.TYPE],\n        ['StereoPannerOptions', base_config_1.TYPE],\n        ['StorageEstimate', base_config_1.TYPE],\n        ['StorageEventInit', base_config_1.TYPE],\n        ['StreamPipeOptions', base_config_1.TYPE],\n        ['StructuredSerializeOptions', base_config_1.TYPE],\n        ['SubmitEventInit', base_config_1.TYPE],\n        ['SvcOutputMetadata', base_config_1.TYPE],\n        ['TaskControllerInit', base_config_1.TYPE],\n        ['TaskPriorityChangeEventInit', base_config_1.TYPE],\n        ['TaskSignalAnyInit', base_config_1.TYPE],\n        ['TextDecodeOptions', base_config_1.TYPE],\n        ['TextDecoderOptions', base_config_1.TYPE],\n        ['TextEncoderEncodeIntoResult', base_config_1.TYPE],\n        ['TimelineRangeOffset', base_config_1.TYPE],\n        ['ToggleEventInit', base_config_1.TYPE],\n        ['TogglePopoverOptions', base_config_1.TYPE],\n        ['TouchEventInit', base_config_1.TYPE],\n        ['TouchInit', base_config_1.TYPE],\n        ['TrackEventInit', base_config_1.TYPE],\n        ['Transformer', base_config_1.TYPE],\n        ['TransitionEventInit', base_config_1.TYPE],\n        ['UIEventInit', base_config_1.TYPE],\n        ['ULongRange', base_config_1.TYPE],\n        ['URLPatternComponentResult', base_config_1.TYPE],\n        ['URLPatternInit', base_config_1.TYPE],\n        ['URLPatternOptions', base_config_1.TYPE],\n        ['URLPatternResult', base_config_1.TYPE],\n        ['UnderlyingByteSource', base_config_1.TYPE],\n        ['UnderlyingDefaultSource', base_config_1.TYPE],\n        ['UnderlyingSink', base_config_1.TYPE],\n        ['UnderlyingSource', base_config_1.TYPE],\n        ['UnknownCredentialOptions', base_config_1.TYPE],\n        ['ValidityStateFlags', base_config_1.TYPE],\n        ['VideoColorSpaceInit', base_config_1.TYPE],\n        ['VideoConfiguration', base_config_1.TYPE],\n        ['VideoDecoderConfig', base_config_1.TYPE],\n        ['VideoDecoderInit', base_config_1.TYPE],\n        ['VideoDecoderSupport', base_config_1.TYPE],\n        ['VideoEncoderConfig', base_config_1.TYPE],\n        ['VideoEncoderEncodeOptions', base_config_1.TYPE],\n        ['VideoEncoderEncodeOptionsForAvc', base_config_1.TYPE],\n        ['VideoEncoderInit', base_config_1.TYPE],\n        ['VideoEncoderSupport', base_config_1.TYPE],\n        ['VideoFrameBufferInit', base_config_1.TYPE],\n        ['VideoFrameCallbackMetadata', base_config_1.TYPE],\n        ['VideoFrameCopyToOptions', base_config_1.TYPE],\n        ['VideoFrameInit', base_config_1.TYPE],\n        ['ViewTimelineOptions', base_config_1.TYPE],\n        ['WaveShaperOptions', base_config_1.TYPE],\n        ['WebGLContextAttributes', base_config_1.TYPE],\n        ['WebGLContextEventInit', base_config_1.TYPE],\n        ['WebTransportCloseInfo', base_config_1.TYPE],\n        ['WebTransportErrorOptions', base_config_1.TYPE],\n        ['WebTransportHash', base_config_1.TYPE],\n        ['WebTransportOptions', base_config_1.TYPE],\n        ['WebTransportSendOptions', base_config_1.TYPE],\n        ['WebTransportSendStreamOptions', base_config_1.TYPE],\n        ['WheelEventInit', base_config_1.TYPE],\n        ['WindowPostMessageOptions', base_config_1.TYPE],\n        ['WorkerOptions', base_config_1.TYPE],\n        ['WorkletOptions', base_config_1.TYPE],\n        ['WriteParams', base_config_1.TYPE],\n        ['NodeFilter', base_config_1.TYPE_VALUE],\n        ['XPathNSResolver', base_config_1.TYPE],\n        ['ANGLE_instanced_arrays', base_config_1.TYPE],\n        ['ARIAMixin', base_config_1.TYPE],\n        ['AbortController', base_config_1.TYPE_VALUE],\n        ['AbortSignalEventMap', base_config_1.TYPE],\n        ['AbortSignal', base_config_1.TYPE_VALUE],\n        ['AbstractRange', base_config_1.TYPE_VALUE],\n        ['AbstractWorkerEventMap', base_config_1.TYPE],\n        ['AbstractWorker', base_config_1.TYPE],\n        ['AnalyserNode', base_config_1.TYPE_VALUE],\n        ['Animatable', base_config_1.TYPE],\n        ['AnimationEventMap', base_config_1.TYPE],\n        ['Animation', base_config_1.TYPE_VALUE],\n        ['AnimationEffect', base_config_1.TYPE_VALUE],\n        ['AnimationEvent', base_config_1.TYPE_VALUE],\n        ['AnimationFrameProvider', base_config_1.TYPE],\n        ['AnimationPlaybackEvent', base_config_1.TYPE_VALUE],\n        ['AnimationTimeline', base_config_1.TYPE_VALUE],\n        ['Attr', base_config_1.TYPE_VALUE],\n        ['AudioBuffer', base_config_1.TYPE_VALUE],\n        ['AudioBufferSourceNode', base_config_1.TYPE_VALUE],\n        ['AudioContext', base_config_1.TYPE_VALUE],\n        ['AudioData', base_config_1.TYPE_VALUE],\n        ['AudioDecoderEventMap', base_config_1.TYPE],\n        ['AudioDecoder', base_config_1.TYPE_VALUE],\n        ['AudioDestinationNode', base_config_1.TYPE_VALUE],\n        ['AudioEncoderEventMap', base_config_1.TYPE],\n        ['AudioEncoder', base_config_1.TYPE_VALUE],\n        ['AudioListener', base_config_1.TYPE_VALUE],\n        ['AudioNode', base_config_1.TYPE_VALUE],\n        ['AudioParam', base_config_1.TYPE_VALUE],\n        ['AudioParamMap', base_config_1.TYPE_VALUE],\n        ['AudioProcessingEvent', base_config_1.TYPE_VALUE],\n        ['AudioScheduledSourceNodeEventMap', base_config_1.TYPE],\n        ['AudioScheduledSourceNode', base_config_1.TYPE_VALUE],\n        ['AudioWorklet', base_config_1.TYPE_VALUE],\n        ['AudioWorkletNodeEventMap', base_config_1.TYPE],\n        ['AudioWorkletNode', base_config_1.TYPE_VALUE],\n        ['AuthenticatorAssertionResponse', base_config_1.TYPE_VALUE],\n        ['AuthenticatorAttestationResponse', base_config_1.TYPE_VALUE],\n        ['AuthenticatorResponse', base_config_1.TYPE_VALUE],\n        ['BarProp', base_config_1.TYPE_VALUE],\n        ['BaseAudioContextEventMap', base_config_1.TYPE],\n        ['BaseAudioContext', base_config_1.TYPE_VALUE],\n        ['BeforeUnloadEvent', base_config_1.TYPE_VALUE],\n        ['BiquadFilterNode', base_config_1.TYPE_VALUE],\n        ['Blob', base_config_1.TYPE_VALUE],\n        ['BlobEvent', base_config_1.TYPE_VALUE],\n        ['Body', base_config_1.TYPE],\n        ['BroadcastChannelEventMap', base_config_1.TYPE],\n        ['BroadcastChannel', base_config_1.TYPE_VALUE],\n        ['ByteLengthQueuingStrategy', base_config_1.TYPE_VALUE],\n        ['CDATASection', base_config_1.TYPE_VALUE],\n        ['CSSAnimation', base_config_1.TYPE_VALUE],\n        ['CSSConditionRule', base_config_1.TYPE_VALUE],\n        ['CSSContainerRule', base_config_1.TYPE_VALUE],\n        ['CSSCounterStyleRule', base_config_1.TYPE_VALUE],\n        ['CSSFontFaceRule', base_config_1.TYPE_VALUE],\n        ['CSSFontFeatureValuesRule', base_config_1.TYPE_VALUE],\n        ['CSSFontPaletteValuesRule', base_config_1.TYPE_VALUE],\n        ['CSSGroupingRule', base_config_1.TYPE_VALUE],\n        ['CSSImageValue', base_config_1.TYPE_VALUE],\n        ['CSSImportRule', base_config_1.TYPE_VALUE],\n        ['CSSKeyframeRule', base_config_1.TYPE_VALUE],\n        ['CSSKeyframesRule', base_config_1.TYPE_VALUE],\n        ['CSSKeywordValue', base_config_1.TYPE_VALUE],\n        ['CSSLayerBlockRule', base_config_1.TYPE_VALUE],\n        ['CSSLayerStatementRule', base_config_1.TYPE_VALUE],\n        ['CSSMathClamp', base_config_1.TYPE_VALUE],\n        ['CSSMathInvert', base_config_1.TYPE_VALUE],\n        ['CSSMathMax', base_config_1.TYPE_VALUE],\n        ['CSSMathMin', base_config_1.TYPE_VALUE],\n        ['CSSMathNegate', base_config_1.TYPE_VALUE],\n        ['CSSMathProduct', base_config_1.TYPE_VALUE],\n        ['CSSMathSum', base_config_1.TYPE_VALUE],\n        ['CSSMathValue', base_config_1.TYPE_VALUE],\n        ['CSSMatrixComponent', base_config_1.TYPE_VALUE],\n        ['CSSMediaRule', base_config_1.TYPE_VALUE],\n        ['CSSNamespaceRule', base_config_1.TYPE_VALUE],\n        ['CSSNestedDeclarations', base_config_1.TYPE_VALUE],\n        ['CSSNumericArray', base_config_1.TYPE_VALUE],\n        ['CSSNumericValue', base_config_1.TYPE_VALUE],\n        ['CSSPageDescriptors', base_config_1.TYPE_VALUE],\n        ['CSSPageRule', base_config_1.TYPE_VALUE],\n        ['CSSPerspective', base_config_1.TYPE_VALUE],\n        ['CSSPositionTryDescriptors', base_config_1.TYPE_VALUE],\n        ['CSSPositionTryRule', base_config_1.TYPE_VALUE],\n        ['CSSPropertyRule', base_config_1.TYPE_VALUE],\n        ['CSSRotate', base_config_1.TYPE_VALUE],\n        ['CSSRule', base_config_1.TYPE_VALUE],\n        ['CSSRuleList', base_config_1.TYPE_VALUE],\n        ['CSSScale', base_config_1.TYPE_VALUE],\n        ['CSSScopeRule', base_config_1.TYPE_VALUE],\n        ['CSSSkew', base_config_1.TYPE_VALUE],\n        ['CSSSkewX', base_config_1.TYPE_VALUE],\n        ['CSSSkewY', base_config_1.TYPE_VALUE],\n        ['CSSStartingStyleRule', base_config_1.TYPE_VALUE],\n        ['CSSStyleDeclarationBase', base_config_1.TYPE],\n        ['CSSStyleDeclaration', base_config_1.TYPE_VALUE],\n        ['CSSStyleProperties', base_config_1.TYPE_VALUE],\n        ['CSSStyleRule', base_config_1.TYPE_VALUE],\n        ['CSSStyleSheet', base_config_1.TYPE_VALUE],\n        ['CSSStyleValue', base_config_1.TYPE_VALUE],\n        ['CSSSupportsRule', base_config_1.TYPE_VALUE],\n        ['CSSTransformComponent', base_config_1.TYPE_VALUE],\n        ['CSSTransformValue', base_config_1.TYPE_VALUE],\n        ['CSSTransition', base_config_1.TYPE_VALUE],\n        ['CSSTranslate', base_config_1.TYPE_VALUE],\n        ['CSSUnitValue', base_config_1.TYPE_VALUE],\n        ['CSSUnparsedValue', base_config_1.TYPE_VALUE],\n        ['CSSVariableReferenceValue', base_config_1.TYPE_VALUE],\n        ['CSSViewTransitionRule', base_config_1.TYPE_VALUE],\n        ['Cache', base_config_1.TYPE_VALUE],\n        ['CacheStorage', base_config_1.TYPE_VALUE],\n        ['CanvasCaptureMediaStreamTrack', base_config_1.TYPE_VALUE],\n        ['CanvasCompositing', base_config_1.TYPE],\n        ['CanvasDrawImage', base_config_1.TYPE],\n        ['CanvasDrawPath', base_config_1.TYPE],\n        ['CanvasFillStrokeStyles', base_config_1.TYPE],\n        ['CanvasFilters', base_config_1.TYPE],\n        ['CanvasGradient', base_config_1.TYPE_VALUE],\n        ['CanvasImageData', base_config_1.TYPE],\n        ['CanvasImageSmoothing', base_config_1.TYPE],\n        ['CanvasPath', base_config_1.TYPE],\n        ['CanvasPathDrawingStyles', base_config_1.TYPE],\n        ['CanvasPattern', base_config_1.TYPE_VALUE],\n        ['CanvasRect', base_config_1.TYPE],\n        ['CanvasRenderingContext2D', base_config_1.TYPE_VALUE],\n        ['CanvasSettings', base_config_1.TYPE],\n        ['CanvasShadowStyles', base_config_1.TYPE],\n        ['CanvasState', base_config_1.TYPE],\n        ['CanvasText', base_config_1.TYPE],\n        ['CanvasTextDrawingStyles', base_config_1.TYPE],\n        ['CanvasTransform', base_config_1.TYPE],\n        ['CanvasUserInterface', base_config_1.TYPE],\n        ['CaretPosition', base_config_1.TYPE_VALUE],\n        ['ChannelMergerNode', base_config_1.TYPE_VALUE],\n        ['ChannelSplitterNode', base_config_1.TYPE_VALUE],\n        ['CharacterData', base_config_1.TYPE_VALUE],\n        ['ChildNode', base_config_1.TYPE],\n        ['ClientRect', base_config_1.TYPE],\n        ['Clipboard', base_config_1.TYPE_VALUE],\n        ['ClipboardEvent', base_config_1.TYPE_VALUE],\n        ['ClipboardItem', base_config_1.TYPE_VALUE],\n        ['CloseEvent', base_config_1.TYPE_VALUE],\n        ['CommandEvent', base_config_1.TYPE_VALUE],\n        ['Comment', base_config_1.TYPE_VALUE],\n        ['CompositionEvent', base_config_1.TYPE_VALUE],\n        ['CompressionStream', base_config_1.TYPE_VALUE],\n        ['ConstantSourceNode', base_config_1.TYPE_VALUE],\n        ['ContentVisibilityAutoStateChangeEvent', base_config_1.TYPE_VALUE],\n        ['ConvolverNode', base_config_1.TYPE_VALUE],\n        ['CookieChangeEvent', base_config_1.TYPE_VALUE],\n        ['CookieStoreEventMap', base_config_1.TYPE],\n        ['CookieStore', base_config_1.TYPE_VALUE],\n        ['CookieStoreManager', base_config_1.TYPE_VALUE],\n        ['CountQueuingStrategy', base_config_1.TYPE_VALUE],\n        ['Credential', base_config_1.TYPE_VALUE],\n        ['CredentialsContainer', base_config_1.TYPE_VALUE],\n        ['Crypto', base_config_1.TYPE_VALUE],\n        ['CryptoKey', base_config_1.TYPE_VALUE],\n        ['CustomElementRegistry', base_config_1.TYPE_VALUE],\n        ['CustomEvent', base_config_1.TYPE_VALUE],\n        ['CustomStateSet', base_config_1.TYPE_VALUE],\n        ['DOMException', base_config_1.TYPE_VALUE],\n        ['DOMImplementation', base_config_1.TYPE_VALUE],\n        ['DOMMatrix', base_config_1.TYPE_VALUE],\n        ['SVGMatrix', base_config_1.TYPE_VALUE],\n        ['WebKitCSSMatrix', base_config_1.TYPE_VALUE],\n        ['DOMMatrixReadOnly', base_config_1.TYPE_VALUE],\n        ['DOMParser', base_config_1.TYPE_VALUE],\n        ['DOMPoint', base_config_1.TYPE_VALUE],\n        ['SVGPoint', base_config_1.TYPE_VALUE],\n        ['DOMPointReadOnly', base_config_1.TYPE_VALUE],\n        ['DOMQuad', base_config_1.TYPE_VALUE],\n        ['DOMRect', base_config_1.TYPE_VALUE],\n        ['SVGRect', base_config_1.TYPE_VALUE],\n        ['DOMRectList', base_config_1.TYPE_VALUE],\n        ['DOMRectReadOnly', base_config_1.TYPE_VALUE],\n        ['DOMStringList', base_config_1.TYPE_VALUE],\n        ['DOMStringMap', base_config_1.TYPE_VALUE],\n        ['DOMTokenList', base_config_1.TYPE_VALUE],\n        ['DataTransfer', base_config_1.TYPE_VALUE],\n        ['DataTransferItem', base_config_1.TYPE_VALUE],\n        ['DataTransferItemList', base_config_1.TYPE_VALUE],\n        ['DecompressionStream', base_config_1.TYPE_VALUE],\n        ['DelayNode', base_config_1.TYPE_VALUE],\n        ['DeviceMotionEvent', base_config_1.TYPE_VALUE],\n        ['DeviceMotionEventAcceleration', base_config_1.TYPE],\n        ['DeviceMotionEventRotationRate', base_config_1.TYPE],\n        ['DeviceOrientationEvent', base_config_1.TYPE_VALUE],\n        ['DigitalCredential', base_config_1.TYPE_VALUE],\n        ['DocumentEventMap', base_config_1.TYPE],\n        ['Document', base_config_1.TYPE_VALUE],\n        ['DocumentFragment', base_config_1.TYPE_VALUE],\n        ['DocumentOrShadowRoot', base_config_1.TYPE],\n        ['DocumentTimeline', base_config_1.TYPE_VALUE],\n        ['DocumentType', base_config_1.TYPE_VALUE],\n        ['DragEvent', base_config_1.TYPE_VALUE],\n        ['DynamicsCompressorNode', base_config_1.TYPE_VALUE],\n        ['EXT_blend_minmax', base_config_1.TYPE],\n        ['EXT_color_buffer_float', base_config_1.TYPE],\n        ['EXT_color_buffer_half_float', base_config_1.TYPE],\n        ['EXT_float_blend', base_config_1.TYPE],\n        ['EXT_frag_depth', base_config_1.TYPE],\n        ['EXT_sRGB', base_config_1.TYPE],\n        ['EXT_shader_texture_lod', base_config_1.TYPE],\n        ['EXT_texture_compression_bptc', base_config_1.TYPE],\n        ['EXT_texture_compression_rgtc', base_config_1.TYPE],\n        ['EXT_texture_filter_anisotropic', base_config_1.TYPE],\n        ['EXT_texture_norm16', base_config_1.TYPE],\n        ['ElementEventMap', base_config_1.TYPE],\n        ['Element', base_config_1.TYPE_VALUE],\n        ['ElementCSSInlineStyle', base_config_1.TYPE],\n        ['ElementContentEditable', base_config_1.TYPE],\n        ['ElementInternals', base_config_1.TYPE_VALUE],\n        ['EncodedAudioChunk', base_config_1.TYPE_VALUE],\n        ['EncodedVideoChunk', base_config_1.TYPE_VALUE],\n        ['ErrorEvent', base_config_1.TYPE_VALUE],\n        ['Event', base_config_1.TYPE_VALUE],\n        ['EventCounts', base_config_1.TYPE_VALUE],\n        ['EventListener', base_config_1.TYPE],\n        ['EventListenerObject', base_config_1.TYPE],\n        ['EventSourceEventMap', base_config_1.TYPE],\n        ['EventSource', base_config_1.TYPE_VALUE],\n        ['EventTarget', base_config_1.TYPE_VALUE],\n        ['External', base_config_1.TYPE_VALUE],\n        ['File', base_config_1.TYPE_VALUE],\n        ['FileList', base_config_1.TYPE_VALUE],\n        ['FileReaderEventMap', base_config_1.TYPE],\n        ['FileReader', base_config_1.TYPE_VALUE],\n        ['FileSystem', base_config_1.TYPE_VALUE],\n        ['FileSystemDirectoryEntry', base_config_1.TYPE_VALUE],\n        ['FileSystemDirectoryHandle', base_config_1.TYPE_VALUE],\n        ['FileSystemDirectoryReader', base_config_1.TYPE_VALUE],\n        ['FileSystemEntry', base_config_1.TYPE_VALUE],\n        ['FileSystemFileEntry', base_config_1.TYPE_VALUE],\n        ['FileSystemFileHandle', base_config_1.TYPE_VALUE],\n        ['FileSystemHandle', base_config_1.TYPE_VALUE],\n        ['FileSystemWritableFileStream', base_config_1.TYPE_VALUE],\n        ['FocusEvent', base_config_1.TYPE_VALUE],\n        ['FontFace', base_config_1.TYPE_VALUE],\n        ['FontFaceSetEventMap', base_config_1.TYPE],\n        ['FontFaceSet', base_config_1.TYPE_VALUE],\n        ['FontFaceSetLoadEvent', base_config_1.TYPE_VALUE],\n        ['FontFaceSource', base_config_1.TYPE],\n        ['FormData', base_config_1.TYPE_VALUE],\n        ['FormDataEvent', base_config_1.TYPE_VALUE],\n        ['FragmentDirective', base_config_1.TYPE_VALUE],\n        ['GPU', base_config_1.TYPE_VALUE],\n        ['GPUAdapter', base_config_1.TYPE_VALUE],\n        ['GPUAdapterInfo', base_config_1.TYPE_VALUE],\n        ['GPUBindGroup', base_config_1.TYPE_VALUE],\n        ['GPUBindGroupLayout', base_config_1.TYPE_VALUE],\n        ['GPUBindingCommandsMixin', base_config_1.TYPE],\n        ['GPUBuffer', base_config_1.TYPE_VALUE],\n        ['GPUCanvasContext', base_config_1.TYPE_VALUE],\n        ['GPUCommandBuffer', base_config_1.TYPE_VALUE],\n        ['GPUCommandEncoder', base_config_1.TYPE_VALUE],\n        ['GPUCompilationInfo', base_config_1.TYPE_VALUE],\n        ['GPUCompilationMessage', base_config_1.TYPE_VALUE],\n        ['GPUComputePassEncoder', base_config_1.TYPE_VALUE],\n        ['GPUComputePipeline', base_config_1.TYPE_VALUE],\n        ['GPUDebugCommandsMixin', base_config_1.TYPE],\n        ['GPUDeviceEventMap', base_config_1.TYPE],\n        ['GPUDevice', base_config_1.TYPE_VALUE],\n        ['GPUDeviceLostInfo', base_config_1.TYPE_VALUE],\n        ['GPUError', base_config_1.TYPE_VALUE],\n        ['GPUExternalTexture', base_config_1.TYPE_VALUE],\n        ['GPUInternalError', base_config_1.TYPE_VALUE],\n        ['GPUObjectBase', base_config_1.TYPE],\n        ['GPUOutOfMemoryError', base_config_1.TYPE_VALUE],\n        ['GPUPipelineBase', base_config_1.TYPE],\n        ['GPUPipelineError', base_config_1.TYPE_VALUE],\n        ['GPUPipelineLayout', base_config_1.TYPE_VALUE],\n        ['GPUQuerySet', base_config_1.TYPE_VALUE],\n        ['GPUQueue', base_config_1.TYPE_VALUE],\n        ['GPURenderBundle', base_config_1.TYPE_VALUE],\n        ['GPURenderBundleEncoder', base_config_1.TYPE_VALUE],\n        ['GPURenderCommandsMixin', base_config_1.TYPE],\n        ['GPURenderPassEncoder', base_config_1.TYPE_VALUE],\n        ['GPURenderPipeline', base_config_1.TYPE_VALUE],\n        ['GPUSampler', base_config_1.TYPE_VALUE],\n        ['GPUShaderModule', base_config_1.TYPE_VALUE],\n        ['GPUSupportedFeatures', base_config_1.TYPE_VALUE],\n        ['GPUSupportedLimits', base_config_1.TYPE_VALUE],\n        ['GPUTexture', base_config_1.TYPE_VALUE],\n        ['GPUTextureView', base_config_1.TYPE_VALUE],\n        ['GPUUncapturedErrorEvent', base_config_1.TYPE_VALUE],\n        ['GPUValidationError', base_config_1.TYPE_VALUE],\n        ['GainNode', base_config_1.TYPE_VALUE],\n        ['Gamepad', base_config_1.TYPE_VALUE],\n        ['GamepadButton', base_config_1.TYPE_VALUE],\n        ['GamepadEvent', base_config_1.TYPE_VALUE],\n        ['GamepadHapticActuator', base_config_1.TYPE_VALUE],\n        ['GenericTransformStream', base_config_1.TYPE],\n        ['Geolocation', base_config_1.TYPE_VALUE],\n        ['GeolocationCoordinates', base_config_1.TYPE_VALUE],\n        ['GeolocationPosition', base_config_1.TYPE_VALUE],\n        ['GeolocationPositionError', base_config_1.TYPE_VALUE],\n        ['GlobalEventHandlersEventMap', base_config_1.TYPE],\n        ['GlobalEventHandlers', base_config_1.TYPE],\n        ['HTMLAllCollection', base_config_1.TYPE_VALUE],\n        ['HTMLAnchorElement', base_config_1.TYPE_VALUE],\n        ['HTMLAreaElement', base_config_1.TYPE_VALUE],\n        ['HTMLAudioElement', base_config_1.TYPE_VALUE],\n        ['HTMLBRElement', base_config_1.TYPE_VALUE],\n        ['HTMLBaseElement', base_config_1.TYPE_VALUE],\n        ['HTMLBodyElementEventMap', base_config_1.TYPE],\n        ['HTMLBodyElement', base_config_1.TYPE_VALUE],\n        ['HTMLButtonElement', base_config_1.TYPE_VALUE],\n        ['HTMLCanvasElement', base_config_1.TYPE_VALUE],\n        ['HTMLCollectionBase', base_config_1.TYPE],\n        ['HTMLCollection', base_config_1.TYPE_VALUE],\n        ['HTMLCollectionOf', base_config_1.TYPE],\n        ['HTMLDListElement', base_config_1.TYPE_VALUE],\n        ['HTMLDataElement', base_config_1.TYPE_VALUE],\n        ['HTMLDataListElement', base_config_1.TYPE_VALUE],\n        ['HTMLDetailsElement', base_config_1.TYPE_VALUE],\n        ['HTMLDialogElement', base_config_1.TYPE_VALUE],\n        ['HTMLDirectoryElement', base_config_1.TYPE_VALUE],\n        ['HTMLDivElement', base_config_1.TYPE_VALUE],\n        ['HTMLDocument', base_config_1.TYPE_VALUE],\n        ['HTMLElementEventMap', base_config_1.TYPE],\n        ['HTMLElement', base_config_1.TYPE_VALUE],\n        ['HTMLEmbedElement', base_config_1.TYPE_VALUE],\n        ['HTMLFieldSetElement', base_config_1.TYPE_VALUE],\n        ['HTMLFontElement', base_config_1.TYPE_VALUE],\n        ['HTMLFormControlsCollection', base_config_1.TYPE_VALUE],\n        ['HTMLFormElement', base_config_1.TYPE_VALUE],\n        ['HTMLFrameElement', base_config_1.TYPE_VALUE],\n        ['HTMLFrameSetElementEventMap', base_config_1.TYPE],\n        ['HTMLFrameSetElement', base_config_1.TYPE_VALUE],\n        ['HTMLHRElement', base_config_1.TYPE_VALUE],\n        ['HTMLHeadElement', base_config_1.TYPE_VALUE],\n        ['HTMLHeadingElement', base_config_1.TYPE_VALUE],\n        ['HTMLHtmlElement', base_config_1.TYPE_VALUE],\n        ['HTMLHyperlinkElementUtils', base_config_1.TYPE],\n        ['HTMLIFrameElement', base_config_1.TYPE_VALUE],\n        ['HTMLImageElement', base_config_1.TYPE_VALUE],\n        ['HTMLInputElement', base_config_1.TYPE_VALUE],\n        ['HTMLLIElement', base_config_1.TYPE_VALUE],\n        ['HTMLLabelElement', base_config_1.TYPE_VALUE],\n        ['HTMLLegendElement', base_config_1.TYPE_VALUE],\n        ['HTMLLinkElement', base_config_1.TYPE_VALUE],\n        ['HTMLMapElement', base_config_1.TYPE_VALUE],\n        ['HTMLMarqueeElement', base_config_1.TYPE_VALUE],\n        ['HTMLMediaElementEventMap', base_config_1.TYPE],\n        ['HTMLMediaElement', base_config_1.TYPE_VALUE],\n        ['HTMLMenuElement', base_config_1.TYPE_VALUE],\n        ['HTMLMetaElement', base_config_1.TYPE_VALUE],\n        ['HTMLMeterElement', base_config_1.TYPE_VALUE],\n        ['HTMLModElement', base_config_1.TYPE_VALUE],\n        ['HTMLOListElement', base_config_1.TYPE_VALUE],\n        ['HTMLObjectElement', base_config_1.TYPE_VALUE],\n        ['HTMLOptGroupElement', base_config_1.TYPE_VALUE],\n        ['HTMLOptionElement', base_config_1.TYPE_VALUE],\n        ['HTMLOptionsCollection', base_config_1.TYPE_VALUE],\n        ['HTMLOrSVGElement', base_config_1.TYPE],\n        ['HTMLOutputElement', base_config_1.TYPE_VALUE],\n        ['HTMLParagraphElement', base_config_1.TYPE_VALUE],\n        ['HTMLParamElement', base_config_1.TYPE_VALUE],\n        ['HTMLPictureElement', base_config_1.TYPE_VALUE],\n        ['HTMLPreElement', base_config_1.TYPE_VALUE],\n        ['HTMLProgressElement', base_config_1.TYPE_VALUE],\n        ['HTMLQuoteElement', base_config_1.TYPE_VALUE],\n        ['HTMLScriptElement', base_config_1.TYPE_VALUE],\n        ['HTMLSelectElement', base_config_1.TYPE_VALUE],\n        ['HTMLSlotElement', base_config_1.TYPE_VALUE],\n        ['HTMLSourceElement', base_config_1.TYPE_VALUE],\n        ['HTMLSpanElement', base_config_1.TYPE_VALUE],\n        ['HTMLStyleElement', base_config_1.TYPE_VALUE],\n        ['HTMLTableCaptionElement', base_config_1.TYPE_VALUE],\n        ['HTMLTableCellElement', base_config_1.TYPE_VALUE],\n        ['HTMLTableColElement', base_config_1.TYPE_VALUE],\n        ['HTMLTableDataCellElement', base_config_1.TYPE],\n        ['HTMLTableElement', base_config_1.TYPE_VALUE],\n        ['HTMLTableHeaderCellElement', base_config_1.TYPE],\n        ['HTMLTableRowElement', base_config_1.TYPE_VALUE],\n        ['HTMLTableSectionElement', base_config_1.TYPE_VALUE],\n        ['HTMLTemplateElement', base_config_1.TYPE_VALUE],\n        ['HTMLTextAreaElement', base_config_1.TYPE_VALUE],\n        ['HTMLTimeElement', base_config_1.TYPE_VALUE],\n        ['HTMLTitleElement', base_config_1.TYPE_VALUE],\n        ['HTMLTrackElement', base_config_1.TYPE_VALUE],\n        ['HTMLUListElement', base_config_1.TYPE_VALUE],\n        ['HTMLUnknownElement', base_config_1.TYPE_VALUE],\n        ['HTMLVideoElementEventMap', base_config_1.TYPE],\n        ['HTMLVideoElement', base_config_1.TYPE_VALUE],\n        ['HashChangeEvent', base_config_1.TYPE_VALUE],\n        ['Headers', base_config_1.TYPE_VALUE],\n        ['Highlight', base_config_1.TYPE_VALUE],\n        ['HighlightRegistry', base_config_1.TYPE_VALUE],\n        ['History', base_config_1.TYPE_VALUE],\n        ['IDBCursor', base_config_1.TYPE_VALUE],\n        ['IDBCursorWithValue', base_config_1.TYPE_VALUE],\n        ['IDBDatabaseEventMap', base_config_1.TYPE],\n        ['IDBDatabase', base_config_1.TYPE_VALUE],\n        ['IDBFactory', base_config_1.TYPE_VALUE],\n        ['IDBIndex', base_config_1.TYPE_VALUE],\n        ['IDBKeyRange', base_config_1.TYPE_VALUE],\n        ['IDBObjectStore', base_config_1.TYPE_VALUE],\n        ['IDBOpenDBRequestEventMap', base_config_1.TYPE],\n        ['IDBOpenDBRequest', base_config_1.TYPE_VALUE],\n        ['IDBRequestEventMap', base_config_1.TYPE],\n        ['IDBRequest', base_config_1.TYPE_VALUE],\n        ['IDBTransactionEventMap', base_config_1.TYPE],\n        ['IDBTransaction', base_config_1.TYPE_VALUE],\n        ['IDBVersionChangeEvent', base_config_1.TYPE_VALUE],\n        ['IIRFilterNode', base_config_1.TYPE_VALUE],\n        ['IdleDeadline', base_config_1.TYPE_VALUE],\n        ['ImageBitmap', base_config_1.TYPE_VALUE],\n        ['ImageBitmapRenderingContext', base_config_1.TYPE_VALUE],\n        ['ImageCapture', base_config_1.TYPE_VALUE],\n        ['ImageData', base_config_1.TYPE_VALUE],\n        ['ImageDecoder', base_config_1.TYPE_VALUE],\n        ['ImageTrack', base_config_1.TYPE_VALUE],\n        ['ImageTrackList', base_config_1.TYPE_VALUE],\n        ['ImportMeta', base_config_1.TYPE],\n        ['InputDeviceInfo', base_config_1.TYPE_VALUE],\n        ['InputEvent', base_config_1.TYPE_VALUE],\n        ['IntersectionObserver', base_config_1.TYPE_VALUE],\n        ['IntersectionObserverEntry', base_config_1.TYPE_VALUE],\n        ['KHR_parallel_shader_compile', base_config_1.TYPE],\n        ['KeyboardEvent', base_config_1.TYPE_VALUE],\n        ['KeyframeEffect', base_config_1.TYPE_VALUE],\n        ['LargestContentfulPaint', base_config_1.TYPE_VALUE],\n        ['LinkStyle', base_config_1.TYPE],\n        ['Location', base_config_1.TYPE_VALUE],\n        ['Lock', base_config_1.TYPE_VALUE],\n        ['LockManager', base_config_1.TYPE_VALUE],\n        ['MIDIAccessEventMap', base_config_1.TYPE],\n        ['MIDIAccess', base_config_1.TYPE_VALUE],\n        ['MIDIConnectionEvent', base_config_1.TYPE_VALUE],\n        ['MIDIInputEventMap', base_config_1.TYPE],\n        ['MIDIInput', base_config_1.TYPE_VALUE],\n        ['MIDIInputMap', base_config_1.TYPE_VALUE],\n        ['MIDIMessageEvent', base_config_1.TYPE_VALUE],\n        ['MIDIOutput', base_config_1.TYPE_VALUE],\n        ['MIDIOutputMap', base_config_1.TYPE_VALUE],\n        ['MIDIPortEventMap', base_config_1.TYPE],\n        ['MIDIPort', base_config_1.TYPE_VALUE],\n        ['MathMLElementEventMap', base_config_1.TYPE],\n        ['MathMLElement', base_config_1.TYPE_VALUE],\n        ['MediaCapabilities', base_config_1.TYPE_VALUE],\n        ['MediaDeviceInfo', base_config_1.TYPE_VALUE],\n        ['MediaDevicesEventMap', base_config_1.TYPE],\n        ['MediaDevices', base_config_1.TYPE_VALUE],\n        ['MediaElementAudioSourceNode', base_config_1.TYPE_VALUE],\n        ['MediaEncryptedEvent', base_config_1.TYPE_VALUE],\n        ['MediaError', base_config_1.TYPE_VALUE],\n        ['MediaKeyMessageEvent', base_config_1.TYPE_VALUE],\n        ['MediaKeySessionEventMap', base_config_1.TYPE],\n        ['MediaKeySession', base_config_1.TYPE_VALUE],\n        ['MediaKeyStatusMap', base_config_1.TYPE_VALUE],\n        ['MediaKeySystemAccess', base_config_1.TYPE_VALUE],\n        ['MediaKeys', base_config_1.TYPE_VALUE],\n        ['MediaList', base_config_1.TYPE_VALUE],\n        ['MediaMetadata', base_config_1.TYPE_VALUE],\n        ['MediaQueryListEventMap', base_config_1.TYPE],\n        ['MediaQueryList', base_config_1.TYPE_VALUE],\n        ['MediaQueryListEvent', base_config_1.TYPE_VALUE],\n        ['MediaRecorderEventMap', base_config_1.TYPE],\n        ['MediaRecorder', base_config_1.TYPE_VALUE],\n        ['MediaSession', base_config_1.TYPE_VALUE],\n        ['MediaSourceEventMap', base_config_1.TYPE],\n        ['MediaSource', base_config_1.TYPE_VALUE],\n        ['MediaSourceHandle', base_config_1.TYPE_VALUE],\n        ['MediaStreamEventMap', base_config_1.TYPE],\n        ['MediaStream', base_config_1.TYPE_VALUE],\n        ['MediaStreamAudioDestinationNode', base_config_1.TYPE_VALUE],\n        ['MediaStreamAudioSourceNode', base_config_1.TYPE_VALUE],\n        ['MediaStreamTrackEventMap', base_config_1.TYPE],\n        ['MediaStreamTrack', base_config_1.TYPE_VALUE],\n        ['MediaStreamTrackEvent', base_config_1.TYPE_VALUE],\n        ['MessageChannel', base_config_1.TYPE_VALUE],\n        ['MessageEvent', base_config_1.TYPE_VALUE],\n        ['MessageEventTargetEventMap', base_config_1.TYPE],\n        ['MessageEventTarget', base_config_1.TYPE],\n        ['MessagePortEventMap', base_config_1.TYPE],\n        ['MessagePort', base_config_1.TYPE_VALUE],\n        ['MimeType', base_config_1.TYPE_VALUE],\n        ['MimeTypeArray', base_config_1.TYPE_VALUE],\n        ['MouseEvent', base_config_1.TYPE_VALUE],\n        ['MutationObserver', base_config_1.TYPE_VALUE],\n        ['MutationRecord', base_config_1.TYPE_VALUE],\n        ['NamedNodeMap', base_config_1.TYPE_VALUE],\n        ['NavigateEvent', base_config_1.TYPE_VALUE],\n        ['NavigationEventMap', base_config_1.TYPE],\n        ['Navigation', base_config_1.TYPE_VALUE],\n        ['NavigationActivation', base_config_1.TYPE_VALUE],\n        ['NavigationCurrentEntryChangeEvent', base_config_1.TYPE_VALUE],\n        ['NavigationDestination', base_config_1.TYPE_VALUE],\n        ['NavigationHistoryEntryEventMap', base_config_1.TYPE],\n        ['NavigationHistoryEntry', base_config_1.TYPE_VALUE],\n        ['NavigationPrecommitController', base_config_1.TYPE_VALUE],\n        ['NavigationPreloadManager', base_config_1.TYPE_VALUE],\n        ['NavigationTransition', base_config_1.TYPE_VALUE],\n        ['Navigator', base_config_1.TYPE_VALUE],\n        ['NavigatorAutomationInformation', base_config_1.TYPE],\n        ['NavigatorBadge', base_config_1.TYPE],\n        ['NavigatorConcurrentHardware', base_config_1.TYPE],\n        ['NavigatorContentUtils', base_config_1.TYPE],\n        ['NavigatorCookies', base_config_1.TYPE],\n        ['NavigatorGPU', base_config_1.TYPE],\n        ['NavigatorID', base_config_1.TYPE],\n        ['NavigatorLanguage', base_config_1.TYPE],\n        ['NavigatorLocks', base_config_1.TYPE],\n        ['NavigatorLogin', base_config_1.TYPE_VALUE],\n        ['NavigatorOnLine', base_config_1.TYPE],\n        ['NavigatorPlugins', base_config_1.TYPE],\n        ['NavigatorStorage', base_config_1.TYPE],\n        ['Node', base_config_1.TYPE_VALUE],\n        ['NodeIterator', base_config_1.TYPE_VALUE],\n        ['NodeList', base_config_1.TYPE_VALUE],\n        ['NodeListOf', base_config_1.TYPE],\n        ['NonDocumentTypeChildNode', base_config_1.TYPE],\n        ['NonElementParentNode', base_config_1.TYPE],\n        ['NotificationEventMap', base_config_1.TYPE],\n        ['Notification', base_config_1.TYPE_VALUE],\n        ['OES_draw_buffers_indexed', base_config_1.TYPE],\n        ['OES_element_index_uint', base_config_1.TYPE],\n        ['OES_fbo_render_mipmap', base_config_1.TYPE],\n        ['OES_standard_derivatives', base_config_1.TYPE],\n        ['OES_texture_float', base_config_1.TYPE],\n        ['OES_texture_float_linear', base_config_1.TYPE],\n        ['OES_texture_half_float', base_config_1.TYPE],\n        ['OES_texture_half_float_linear', base_config_1.TYPE],\n        ['OES_vertex_array_object', base_config_1.TYPE],\n        ['OVR_multiview2', base_config_1.TYPE],\n        ['OfflineAudioCompletionEvent', base_config_1.TYPE_VALUE],\n        ['OfflineAudioContextEventMap', base_config_1.TYPE],\n        ['OfflineAudioContext', base_config_1.TYPE_VALUE],\n        ['OffscreenCanvasEventMap', base_config_1.TYPE],\n        ['OffscreenCanvas', base_config_1.TYPE_VALUE],\n        ['OffscreenCanvasRenderingContext2D', base_config_1.TYPE_VALUE],\n        ['OscillatorNode', base_config_1.TYPE_VALUE],\n        ['OverconstrainedError', base_config_1.TYPE_VALUE],\n        ['PageRevealEvent', base_config_1.TYPE_VALUE],\n        ['PageSwapEvent', base_config_1.TYPE_VALUE],\n        ['PageTransitionEvent', base_config_1.TYPE_VALUE],\n        ['PaintTimingMixin', base_config_1.TYPE],\n        ['PannerNode', base_config_1.TYPE_VALUE],\n        ['ParentNode', base_config_1.TYPE],\n        ['Path2D', base_config_1.TYPE_VALUE],\n        ['PaymentAddress', base_config_1.TYPE_VALUE],\n        ['PaymentMethodChangeEvent', base_config_1.TYPE_VALUE],\n        ['PaymentRequestEventMap', base_config_1.TYPE],\n        ['PaymentRequest', base_config_1.TYPE_VALUE],\n        ['PaymentRequestUpdateEvent', base_config_1.TYPE_VALUE],\n        ['PaymentResponseEventMap', base_config_1.TYPE],\n        ['PaymentResponse', base_config_1.TYPE_VALUE],\n        ['PerformanceEventMap', base_config_1.TYPE],\n        ['Performance', base_config_1.TYPE_VALUE],\n        ['PerformanceEntry', base_config_1.TYPE_VALUE],\n        ['PerformanceEventTiming', base_config_1.TYPE_VALUE],\n        ['PerformanceMark', base_config_1.TYPE_VALUE],\n        ['PerformanceMeasure', base_config_1.TYPE_VALUE],\n        ['PerformanceNavigation', base_config_1.TYPE_VALUE],\n        ['PerformanceNavigationTiming', base_config_1.TYPE_VALUE],\n        ['PerformanceObserver', base_config_1.TYPE_VALUE],\n        ['PerformanceObserverEntryList', base_config_1.TYPE_VALUE],\n        ['PerformancePaintTiming', base_config_1.TYPE_VALUE],\n        ['PerformanceResourceTiming', base_config_1.TYPE_VALUE],\n        ['PerformanceServerTiming', base_config_1.TYPE_VALUE],\n        ['PerformanceTiming', base_config_1.TYPE_VALUE],\n        ['PeriodicWave', base_config_1.TYPE_VALUE],\n        ['PermissionStatusEventMap', base_config_1.TYPE],\n        ['PermissionStatus', base_config_1.TYPE_VALUE],\n        ['Permissions', base_config_1.TYPE_VALUE],\n        ['PictureInPictureEvent', base_config_1.TYPE_VALUE],\n        ['PictureInPictureWindowEventMap', base_config_1.TYPE],\n        ['PictureInPictureWindow', base_config_1.TYPE_VALUE],\n        ['Plugin', base_config_1.TYPE_VALUE],\n        ['PluginArray', base_config_1.TYPE_VALUE],\n        ['PointerEvent', base_config_1.TYPE_VALUE],\n        ['PopStateEvent', base_config_1.TYPE_VALUE],\n        ['PopoverTargetAttributes', base_config_1.TYPE],\n        ['ProcessingInstruction', base_config_1.TYPE_VALUE],\n        ['ProgressEvent', base_config_1.TYPE_VALUE],\n        ['PromiseRejectionEvent', base_config_1.TYPE_VALUE],\n        ['PublicKeyCredential', base_config_1.TYPE_VALUE],\n        ['PushManager', base_config_1.TYPE_VALUE],\n        ['PushManagerAttribute', base_config_1.TYPE],\n        ['PushSubscription', base_config_1.TYPE_VALUE],\n        ['PushSubscriptionOptions', base_config_1.TYPE_VALUE],\n        ['RTCCertificate', base_config_1.TYPE_VALUE],\n        ['RTCDTMFSenderEventMap', base_config_1.TYPE],\n        ['RTCDTMFSender', base_config_1.TYPE_VALUE],\n        ['RTCDTMFToneChangeEvent', base_config_1.TYPE_VALUE],\n        ['RTCDataChannelEventMap', base_config_1.TYPE],\n        ['RTCDataChannel', base_config_1.TYPE_VALUE],\n        ['RTCDataChannelEvent', base_config_1.TYPE_VALUE],\n        ['RTCDtlsTransportEventMap', base_config_1.TYPE],\n        ['RTCDtlsTransport', base_config_1.TYPE_VALUE],\n        ['RTCEncodedAudioFrame', base_config_1.TYPE_VALUE],\n        ['RTCEncodedVideoFrame', base_config_1.TYPE_VALUE],\n        ['RTCError', base_config_1.TYPE_VALUE],\n        ['RTCErrorEvent', base_config_1.TYPE_VALUE],\n        ['RTCIceCandidate', base_config_1.TYPE_VALUE],\n        ['RTCIceCandidatePair', base_config_1.TYPE],\n        ['RTCIceTransportEventMap', base_config_1.TYPE],\n        ['RTCIceTransport', base_config_1.TYPE_VALUE],\n        ['RTCPeerConnectionEventMap', base_config_1.TYPE],\n        ['RTCPeerConnection', base_config_1.TYPE_VALUE],\n        ['RTCPeerConnectionIceErrorEvent', base_config_1.TYPE_VALUE],\n        ['RTCPeerConnectionIceEvent', base_config_1.TYPE_VALUE],\n        ['RTCRtpReceiver', base_config_1.TYPE_VALUE],\n        ['RTCRtpScriptTransform', base_config_1.TYPE_VALUE],\n        ['RTCRtpSender', base_config_1.TYPE_VALUE],\n        ['RTCRtpTransceiver', base_config_1.TYPE_VALUE],\n        ['RTCSctpTransportEventMap', base_config_1.TYPE],\n        ['RTCSctpTransport', base_config_1.TYPE_VALUE],\n        ['RTCSessionDescription', base_config_1.TYPE_VALUE],\n        ['RTCStatsReport', base_config_1.TYPE_VALUE],\n        ['RTCTrackEvent', base_config_1.TYPE_VALUE],\n        ['RadioNodeList', base_config_1.TYPE_VALUE],\n        ['Range', base_config_1.TYPE_VALUE],\n        ['ReadableByteStreamController', base_config_1.TYPE_VALUE],\n        ['ReadableStream', base_config_1.TYPE_VALUE],\n        ['ReadableStreamBYOBReader', base_config_1.TYPE_VALUE],\n        ['ReadableStreamBYOBRequest', base_config_1.TYPE_VALUE],\n        ['ReadableStreamDefaultController', base_config_1.TYPE_VALUE],\n        ['ReadableStreamDefaultReader', base_config_1.TYPE_VALUE],\n        ['ReadableStreamGenericReader', base_config_1.TYPE],\n        ['RemotePlaybackEventMap', base_config_1.TYPE],\n        ['RemotePlayback', base_config_1.TYPE_VALUE],\n        ['ReportingObserver', base_config_1.TYPE_VALUE],\n        ['Request', base_config_1.TYPE_VALUE],\n        ['ResizeObserver', base_config_1.TYPE_VALUE],\n        ['ResizeObserverEntry', base_config_1.TYPE_VALUE],\n        ['ResizeObserverSize', base_config_1.TYPE_VALUE],\n        ['Response', base_config_1.TYPE_VALUE],\n        ['SVGAElement', base_config_1.TYPE_VALUE],\n        ['SVGAngle', base_config_1.TYPE_VALUE],\n        ['SVGAnimateElement', base_config_1.TYPE_VALUE],\n        ['SVGAnimateMotionElement', base_config_1.TYPE_VALUE],\n        ['SVGAnimateTransformElement', base_config_1.TYPE_VALUE],\n        ['SVGAnimatedAngle', base_config_1.TYPE_VALUE],\n        ['SVGAnimatedBoolean', base_config_1.TYPE_VALUE],\n        ['SVGAnimatedEnumeration', base_config_1.TYPE_VALUE],\n        ['SVGAnimatedInteger', base_config_1.TYPE_VALUE],\n        ['SVGAnimatedLength', base_config_1.TYPE_VALUE],\n        ['SVGAnimatedLengthList', base_config_1.TYPE_VALUE],\n        ['SVGAnimatedNumber', base_config_1.TYPE_VALUE],\n        ['SVGAnimatedNumberList', base_config_1.TYPE_VALUE],\n        ['SVGAnimatedPoints', base_config_1.TYPE],\n        ['SVGAnimatedPreserveAspectRatio', base_config_1.TYPE_VALUE],\n        ['SVGAnimatedRect', base_config_1.TYPE_VALUE],\n        ['SVGAnimatedString', base_config_1.TYPE_VALUE],\n        ['SVGAnimatedTransformList', base_config_1.TYPE_VALUE],\n        ['SVGAnimationElement', base_config_1.TYPE_VALUE],\n        ['SVGCircleElement', base_config_1.TYPE_VALUE],\n        ['SVGClipPathElement', base_config_1.TYPE_VALUE],\n        ['SVGComponentTransferFunctionElement', base_config_1.TYPE_VALUE],\n        ['SVGDefsElement', base_config_1.TYPE_VALUE],\n        ['SVGDescElement', base_config_1.TYPE_VALUE],\n        ['SVGElementEventMap', base_config_1.TYPE],\n        ['SVGElement', base_config_1.TYPE_VALUE],\n        ['SVGEllipseElement', base_config_1.TYPE_VALUE],\n        ['SVGFEBlendElement', base_config_1.TYPE_VALUE],\n        ['SVGFEColorMatrixElement', base_config_1.TYPE_VALUE],\n        ['SVGFEComponentTransferElement', base_config_1.TYPE_VALUE],\n        ['SVGFECompositeElement', base_config_1.TYPE_VALUE],\n        ['SVGFEConvolveMatrixElement', base_config_1.TYPE_VALUE],\n        ['SVGFEDiffuseLightingElement', base_config_1.TYPE_VALUE],\n        ['SVGFEDisplacementMapElement', base_config_1.TYPE_VALUE],\n        ['SVGFEDistantLightElement', base_config_1.TYPE_VALUE],\n        ['SVGFEDropShadowElement', base_config_1.TYPE_VALUE],\n        ['SVGFEFloodElement', base_config_1.TYPE_VALUE],\n        ['SVGFEFuncAElement', base_config_1.TYPE_VALUE],\n        ['SVGFEFuncBElement', base_config_1.TYPE_VALUE],\n        ['SVGFEFuncGElement', base_config_1.TYPE_VALUE],\n        ['SVGFEFuncRElement', base_config_1.TYPE_VALUE],\n        ['SVGFEGaussianBlurElement', base_config_1.TYPE_VALUE],\n        ['SVGFEImageElement', base_config_1.TYPE_VALUE],\n        ['SVGFEMergeElement', base_config_1.TYPE_VALUE],\n        ['SVGFEMergeNodeElement', base_config_1.TYPE_VALUE],\n        ['SVGFEMorphologyElement', base_config_1.TYPE_VALUE],\n        ['SVGFEOffsetElement', base_config_1.TYPE_VALUE],\n        ['SVGFEPointLightElement', base_config_1.TYPE_VALUE],\n        ['SVGFESpecularLightingElement', base_config_1.TYPE_VALUE],\n        ['SVGFESpotLightElement', base_config_1.TYPE_VALUE],\n        ['SVGFETileElement', base_config_1.TYPE_VALUE],\n        ['SVGFETurbulenceElement', base_config_1.TYPE_VALUE],\n        ['SVGFilterElement', base_config_1.TYPE_VALUE],\n        ['SVGFilterPrimitiveStandardAttributes', base_config_1.TYPE],\n        ['SVGFitToViewBox', base_config_1.TYPE],\n        ['SVGForeignObjectElement', base_config_1.TYPE_VALUE],\n        ['SVGGElement', base_config_1.TYPE_VALUE],\n        ['SVGGeometryElement', base_config_1.TYPE_VALUE],\n        ['SVGGradientElement', base_config_1.TYPE_VALUE],\n        ['SVGGraphicsElement', base_config_1.TYPE_VALUE],\n        ['SVGImageElement', base_config_1.TYPE_VALUE],\n        ['SVGLength', base_config_1.TYPE_VALUE],\n        ['SVGLengthList', base_config_1.TYPE_VALUE],\n        ['SVGLineElement', base_config_1.TYPE_VALUE],\n        ['SVGLinearGradientElement', base_config_1.TYPE_VALUE],\n        ['SVGMPathElement', base_config_1.TYPE_VALUE],\n        ['SVGMarkerElement', base_config_1.TYPE_VALUE],\n        ['SVGMaskElement', base_config_1.TYPE_VALUE],\n        ['SVGMetadataElement', base_config_1.TYPE_VALUE],\n        ['SVGNumber', base_config_1.TYPE_VALUE],\n        ['SVGNumberList', base_config_1.TYPE_VALUE],\n        ['SVGPathElement', base_config_1.TYPE_VALUE],\n        ['SVGPatternElement', base_config_1.TYPE_VALUE],\n        ['SVGPointList', base_config_1.TYPE_VALUE],\n        ['SVGPolygonElement', base_config_1.TYPE_VALUE],\n        ['SVGPolylineElement', base_config_1.TYPE_VALUE],\n        ['SVGPreserveAspectRatio', base_config_1.TYPE_VALUE],\n        ['SVGRadialGradientElement', base_config_1.TYPE_VALUE],\n        ['SVGRectElement', base_config_1.TYPE_VALUE],\n        ['SVGSVGElementEventMap', base_config_1.TYPE],\n        ['SVGSVGElement', base_config_1.TYPE_VALUE],\n        ['SVGScriptElement', base_config_1.TYPE_VALUE],\n        ['SVGSetElement', base_config_1.TYPE_VALUE],\n        ['SVGStopElement', base_config_1.TYPE_VALUE],\n        ['SVGStringList', base_config_1.TYPE_VALUE],\n        ['SVGStyleElement', base_config_1.TYPE_VALUE],\n        ['SVGSwitchElement', base_config_1.TYPE_VALUE],\n        ['SVGSymbolElement', base_config_1.TYPE_VALUE],\n        ['SVGTSpanElement', base_config_1.TYPE_VALUE],\n        ['SVGTests', base_config_1.TYPE],\n        ['SVGTextContentElement', base_config_1.TYPE_VALUE],\n        ['SVGTextElement', base_config_1.TYPE_VALUE],\n        ['SVGTextPathElement', base_config_1.TYPE_VALUE],\n        ['SVGTextPositioningElement', base_config_1.TYPE_VALUE],\n        ['SVGTitleElement', base_config_1.TYPE_VALUE],\n        ['SVGTransform', base_config_1.TYPE_VALUE],\n        ['SVGTransformList', base_config_1.TYPE_VALUE],\n        ['SVGURIReference', base_config_1.TYPE],\n        ['SVGUnitTypes', base_config_1.TYPE_VALUE],\n        ['SVGUseElement', base_config_1.TYPE_VALUE],\n        ['SVGViewElement', base_config_1.TYPE_VALUE],\n        ['Sanitizer', base_config_1.TYPE_VALUE],\n        ['Scheduler', base_config_1.TYPE_VALUE],\n        ['Screen', base_config_1.TYPE_VALUE],\n        ['ScreenOrientationEventMap', base_config_1.TYPE],\n        ['ScreenOrientation', base_config_1.TYPE_VALUE],\n        ['ScriptProcessorNodeEventMap', base_config_1.TYPE],\n        ['ScriptProcessorNode', base_config_1.TYPE_VALUE],\n        ['ScrollTimeline', base_config_1.TYPE_VALUE],\n        ['SecurityPolicyViolationEvent', base_config_1.TYPE_VALUE],\n        ['Selection', base_config_1.TYPE_VALUE],\n        ['ServiceWorkerEventMap', base_config_1.TYPE],\n        ['ServiceWorker', base_config_1.TYPE_VALUE],\n        ['ServiceWorkerContainerEventMap', base_config_1.TYPE],\n        ['ServiceWorkerContainer', base_config_1.TYPE_VALUE],\n        ['ServiceWorkerRegistrationEventMap', base_config_1.TYPE],\n        ['ServiceWorkerRegistration', base_config_1.TYPE_VALUE],\n        ['ShadowRootEventMap', base_config_1.TYPE],\n        ['ShadowRoot', base_config_1.TYPE_VALUE],\n        ['SharedWorker', base_config_1.TYPE_VALUE],\n        ['Slottable', base_config_1.TYPE],\n        ['SourceBufferEventMap', base_config_1.TYPE],\n        ['SourceBuffer', base_config_1.TYPE_VALUE],\n        ['SourceBufferListEventMap', base_config_1.TYPE],\n        ['SourceBufferList', base_config_1.TYPE_VALUE],\n        ['SpeechRecognitionAlternative', base_config_1.TYPE_VALUE],\n        ['SpeechRecognitionErrorEvent', base_config_1.TYPE_VALUE],\n        ['SpeechRecognitionEvent', base_config_1.TYPE_VALUE],\n        ['SpeechRecognitionResult', base_config_1.TYPE_VALUE],\n        ['SpeechRecognitionResultList', base_config_1.TYPE_VALUE],\n        ['SpeechSynthesisEventMap', base_config_1.TYPE],\n        ['SpeechSynthesis', base_config_1.TYPE_VALUE],\n        ['SpeechSynthesisErrorEvent', base_config_1.TYPE_VALUE],\n        ['SpeechSynthesisEvent', base_config_1.TYPE_VALUE],\n        ['SpeechSynthesisUtteranceEventMap', base_config_1.TYPE],\n        ['SpeechSynthesisUtterance', base_config_1.TYPE_VALUE],\n        ['SpeechSynthesisVoice', base_config_1.TYPE_VALUE],\n        ['StaticRange', base_config_1.TYPE_VALUE],\n        ['StereoPannerNode', base_config_1.TYPE_VALUE],\n        ['Storage', base_config_1.TYPE_VALUE],\n        ['StorageEvent', base_config_1.TYPE_VALUE],\n        ['StorageManager', base_config_1.TYPE_VALUE],\n        ['StylePropertyMap', base_config_1.TYPE_VALUE],\n        ['StylePropertyMapReadOnly', base_config_1.TYPE_VALUE],\n        ['StyleSheet', base_config_1.TYPE_VALUE],\n        ['StyleSheetList', base_config_1.TYPE_VALUE],\n        ['SubmitEvent', base_config_1.TYPE_VALUE],\n        ['SubtleCrypto', base_config_1.TYPE_VALUE],\n        ['TaskController', base_config_1.TYPE_VALUE],\n        ['TaskPriorityChangeEvent', base_config_1.TYPE_VALUE],\n        ['TaskSignalEventMap', base_config_1.TYPE],\n        ['TaskSignal', base_config_1.TYPE_VALUE],\n        ['Text', base_config_1.TYPE_VALUE],\n        ['TextDecoder', base_config_1.TYPE_VALUE],\n        ['TextDecoderCommon', base_config_1.TYPE],\n        ['TextDecoderStream', base_config_1.TYPE_VALUE],\n        ['TextEncoder', base_config_1.TYPE_VALUE],\n        ['TextEncoderCommon', base_config_1.TYPE],\n        ['TextEncoderStream', base_config_1.TYPE_VALUE],\n        ['TextEvent', base_config_1.TYPE_VALUE],\n        ['TextMetrics', base_config_1.TYPE_VALUE],\n        ['TextTrackEventMap', base_config_1.TYPE],\n        ['TextTrack', base_config_1.TYPE_VALUE],\n        ['TextTrackCueEventMap', base_config_1.TYPE],\n        ['TextTrackCue', base_config_1.TYPE_VALUE],\n        ['TextTrackCueList', base_config_1.TYPE_VALUE],\n        ['TextTrackListEventMap', base_config_1.TYPE],\n        ['TextTrackList', base_config_1.TYPE_VALUE],\n        ['TimeRanges', base_config_1.TYPE_VALUE],\n        ['ToggleEvent', base_config_1.TYPE_VALUE],\n        ['Touch', base_config_1.TYPE_VALUE],\n        ['TouchEvent', base_config_1.TYPE_VALUE],\n        ['TouchList', base_config_1.TYPE_VALUE],\n        ['TrackEvent', base_config_1.TYPE_VALUE],\n        ['TransformStream', base_config_1.TYPE_VALUE],\n        ['TransformStreamDefaultController', base_config_1.TYPE_VALUE],\n        ['TransitionEvent', base_config_1.TYPE_VALUE],\n        ['TreeWalker', base_config_1.TYPE_VALUE],\n        ['UIEvent', base_config_1.TYPE_VALUE],\n        ['URL', base_config_1.TYPE_VALUE],\n        ['webkitURL', base_config_1.TYPE_VALUE],\n        ['URLPattern', base_config_1.TYPE_VALUE],\n        ['URLSearchParams', base_config_1.TYPE_VALUE],\n        ['UserActivation', base_config_1.TYPE_VALUE],\n        ['VTTCue', base_config_1.TYPE_VALUE],\n        ['VTTRegion', base_config_1.TYPE_VALUE],\n        ['ValidityState', base_config_1.TYPE_VALUE],\n        ['VideoColorSpace', base_config_1.TYPE_VALUE],\n        ['VideoDecoderEventMap', base_config_1.TYPE],\n        ['VideoDecoder', base_config_1.TYPE_VALUE],\n        ['VideoEncoderEventMap', base_config_1.TYPE],\n        ['VideoEncoder', base_config_1.TYPE_VALUE],\n        ['VideoFrame', base_config_1.TYPE_VALUE],\n        ['VideoPlaybackQuality', base_config_1.TYPE_VALUE],\n        ['ViewTimeline', base_config_1.TYPE_VALUE],\n        ['ViewTransition', base_config_1.TYPE_VALUE],\n        ['ViewTransitionTypeSet', base_config_1.TYPE_VALUE],\n        ['VisualViewportEventMap', base_config_1.TYPE],\n        ['VisualViewport', base_config_1.TYPE_VALUE],\n        ['WEBGL_color_buffer_float', base_config_1.TYPE],\n        ['WEBGL_compressed_texture_astc', base_config_1.TYPE],\n        ['WEBGL_compressed_texture_etc', base_config_1.TYPE],\n        ['WEBGL_compressed_texture_etc1', base_config_1.TYPE],\n        ['WEBGL_compressed_texture_pvrtc', base_config_1.TYPE],\n        ['WEBGL_compressed_texture_s3tc', base_config_1.TYPE],\n        ['WEBGL_compressed_texture_s3tc_srgb', base_config_1.TYPE],\n        ['WEBGL_debug_renderer_info', base_config_1.TYPE],\n        ['WEBGL_debug_shaders', base_config_1.TYPE],\n        ['WEBGL_depth_texture', base_config_1.TYPE],\n        ['WEBGL_draw_buffers', base_config_1.TYPE],\n        ['WEBGL_lose_context', base_config_1.TYPE],\n        ['WEBGL_multi_draw', base_config_1.TYPE],\n        ['WGSLLanguageFeatures', base_config_1.TYPE_VALUE],\n        ['WakeLock', base_config_1.TYPE_VALUE],\n        ['WakeLockSentinelEventMap', base_config_1.TYPE],\n        ['WakeLockSentinel', base_config_1.TYPE_VALUE],\n        ['WaveShaperNode', base_config_1.TYPE_VALUE],\n        ['WebGL2RenderingContext', base_config_1.TYPE_VALUE],\n        ['WebGL2RenderingContextBase', base_config_1.TYPE],\n        ['WebGL2RenderingContextOverloads', base_config_1.TYPE],\n        ['WebGLActiveInfo', base_config_1.TYPE_VALUE],\n        ['WebGLBuffer', base_config_1.TYPE_VALUE],\n        ['WebGLContextEvent', base_config_1.TYPE_VALUE],\n        ['WebGLFramebuffer', base_config_1.TYPE_VALUE],\n        ['WebGLProgram', base_config_1.TYPE_VALUE],\n        ['WebGLQuery', base_config_1.TYPE_VALUE],\n        ['WebGLRenderbuffer', base_config_1.TYPE_VALUE],\n        ['WebGLRenderingContext', base_config_1.TYPE_VALUE],\n        ['WebGLRenderingContextBase', base_config_1.TYPE],\n        ['WebGLRenderingContextOverloads', base_config_1.TYPE],\n        ['WebGLSampler', base_config_1.TYPE_VALUE],\n        ['WebGLShader', base_config_1.TYPE_VALUE],\n        ['WebGLShaderPrecisionFormat', base_config_1.TYPE_VALUE],\n        ['WebGLSync', base_config_1.TYPE_VALUE],\n        ['WebGLTexture', base_config_1.TYPE_VALUE],\n        ['WebGLTransformFeedback', base_config_1.TYPE_VALUE],\n        ['WebGLUniformLocation', base_config_1.TYPE_VALUE],\n        ['WebGLVertexArrayObject', base_config_1.TYPE_VALUE],\n        ['WebGLVertexArrayObjectOES', base_config_1.TYPE],\n        ['WebSocketEventMap', base_config_1.TYPE],\n        ['WebSocket', base_config_1.TYPE_VALUE],\n        ['WebTransport', base_config_1.TYPE_VALUE],\n        ['WebTransportBidirectionalStream', base_config_1.TYPE_VALUE],\n        ['WebTransportDatagramDuplexStream', base_config_1.TYPE_VALUE],\n        ['WebTransportError', base_config_1.TYPE_VALUE],\n        ['WheelEvent', base_config_1.TYPE_VALUE],\n        ['WindowEventMap', base_config_1.TYPE],\n        ['Window', base_config_1.TYPE_VALUE],\n        ['WindowEventHandlersEventMap', base_config_1.TYPE],\n        ['WindowEventHandlers', base_config_1.TYPE],\n        ['WindowLocalStorage', base_config_1.TYPE],\n        ['WindowOrWorkerGlobalScope', base_config_1.TYPE],\n        ['WindowSessionStorage', base_config_1.TYPE],\n        ['WorkerEventMap', base_config_1.TYPE],\n        ['Worker', base_config_1.TYPE_VALUE],\n        ['Worklet', base_config_1.TYPE_VALUE],\n        ['WritableStream', base_config_1.TYPE_VALUE],\n        ['WritableStreamDefaultController', base_config_1.TYPE_VALUE],\n        ['WritableStreamDefaultWriter', base_config_1.TYPE_VALUE],\n        ['XMLDocument', base_config_1.TYPE_VALUE],\n        ['XMLHttpRequestEventMap', base_config_1.TYPE],\n        ['XMLHttpRequest', base_config_1.TYPE_VALUE],\n        ['XMLHttpRequestEventTargetEventMap', base_config_1.TYPE],\n        ['XMLHttpRequestEventTarget', base_config_1.TYPE_VALUE],\n        ['XMLHttpRequestUpload', base_config_1.TYPE_VALUE],\n        ['XMLSerializer', base_config_1.TYPE_VALUE],\n        ['XPathEvaluator', base_config_1.TYPE_VALUE],\n        ['XPathEvaluatorBase', base_config_1.TYPE],\n        ['XPathExpression', base_config_1.TYPE_VALUE],\n        ['XPathResult', base_config_1.TYPE_VALUE],\n        ['XSLTProcessor', base_config_1.TYPE_VALUE],\n        ['CSS', base_config_1.TYPE_VALUE],\n        ['WebAssembly', base_config_1.TYPE_VALUE],\n        ['Console', base_config_1.TYPE],\n        ['AudioDataOutputCallback', base_config_1.TYPE],\n        ['BlobCallback', base_config_1.TYPE],\n        ['CustomElementConstructor', base_config_1.TYPE],\n        ['DecodeErrorCallback', base_config_1.TYPE],\n        ['DecodeSuccessCallback', base_config_1.TYPE],\n        ['EncodedAudioChunkOutputCallback', base_config_1.TYPE],\n        ['EncodedVideoChunkOutputCallback', base_config_1.TYPE],\n        ['ErrorCallback', base_config_1.TYPE],\n        ['FileCallback', base_config_1.TYPE],\n        ['FileSystemEntriesCallback', base_config_1.TYPE],\n        ['FileSystemEntryCallback', base_config_1.TYPE],\n        ['FrameRequestCallback', base_config_1.TYPE],\n        ['FunctionStringCallback', base_config_1.TYPE],\n        ['IdleRequestCallback', base_config_1.TYPE],\n        ['IntersectionObserverCallback', base_config_1.TYPE],\n        ['LockGrantedCallback', base_config_1.TYPE],\n        ['MediaSessionActionHandler', base_config_1.TYPE],\n        ['MutationCallback', base_config_1.TYPE],\n        ['NavigationInterceptHandler', base_config_1.TYPE],\n        ['NavigationPrecommitHandler', base_config_1.TYPE],\n        ['NotificationPermissionCallback', base_config_1.TYPE],\n        ['OnBeforeUnloadEventHandlerNonNull', base_config_1.TYPE],\n        ['OnErrorEventHandlerNonNull', base_config_1.TYPE],\n        ['PerformanceObserverCallback', base_config_1.TYPE],\n        ['PositionCallback', base_config_1.TYPE],\n        ['PositionErrorCallback', base_config_1.TYPE],\n        ['QueuingStrategySize', base_config_1.TYPE],\n        ['RTCPeerConnectionErrorCallback', base_config_1.TYPE],\n        ['RTCSessionDescriptionCallback', base_config_1.TYPE],\n        ['RemotePlaybackAvailabilityCallback', base_config_1.TYPE],\n        ['ReportingObserverCallback', base_config_1.TYPE],\n        ['ResizeObserverCallback', base_config_1.TYPE],\n        ['SchedulerPostTaskCallback', base_config_1.TYPE],\n        ['TransformerFlushCallback', base_config_1.TYPE],\n        ['TransformerStartCallback', base_config_1.TYPE],\n        ['TransformerTransformCallback', base_config_1.TYPE],\n        ['UnderlyingSinkAbortCallback', base_config_1.TYPE],\n        ['UnderlyingSinkCloseCallback', base_config_1.TYPE],\n        ['UnderlyingSinkStartCallback', base_config_1.TYPE],\n        ['UnderlyingSinkWriteCallback', base_config_1.TYPE],\n        ['UnderlyingSourceCancelCallback', base_config_1.TYPE],\n        ['UnderlyingSourcePullCallback', base_config_1.TYPE],\n        ['UnderlyingSourceStartCallback', base_config_1.TYPE],\n        ['VideoFrameOutputCallback', base_config_1.TYPE],\n        ['VideoFrameRequestCallback', base_config_1.TYPE],\n        ['ViewTransitionUpdateCallback', base_config_1.TYPE],\n        ['VoidFunction', base_config_1.TYPE],\n        ['WebCodecsErrorCallback', base_config_1.TYPE],\n        ['HTMLElementTagNameMap', base_config_1.TYPE],\n        ['HTMLElementDeprecatedTagNameMap', base_config_1.TYPE],\n        ['SVGElementTagNameMap', base_config_1.TYPE],\n        ['MathMLElementTagNameMap', base_config_1.TYPE],\n        ['ElementTagNameMap', base_config_1.TYPE],\n        ['AlgorithmIdentifier', base_config_1.TYPE],\n        ['AllowSharedBufferSource', base_config_1.TYPE],\n        ['AutoFill', base_config_1.TYPE],\n        ['AutoFillField', base_config_1.TYPE],\n        ['AutoFillSection', base_config_1.TYPE],\n        ['Base64URLString', base_config_1.TYPE],\n        ['BigInteger', base_config_1.TYPE],\n        ['BlobPart', base_config_1.TYPE],\n        ['BodyInit', base_config_1.TYPE],\n        ['BufferSource', base_config_1.TYPE],\n        ['COSEAlgorithmIdentifier', base_config_1.TYPE],\n        ['CSSKeywordish', base_config_1.TYPE],\n        ['CSSNumberish', base_config_1.TYPE],\n        ['CSSPerspectiveValue', base_config_1.TYPE],\n        ['CSSUnparsedSegment', base_config_1.TYPE],\n        ['CanvasImageSource', base_config_1.TYPE],\n        ['ClipboardItemData', base_config_1.TYPE],\n        ['ClipboardItems', base_config_1.TYPE],\n        ['ConstrainBoolean', base_config_1.TYPE],\n        ['ConstrainBooleanOrDOMString', base_config_1.TYPE],\n        ['ConstrainDOMString', base_config_1.TYPE],\n        ['ConstrainDouble', base_config_1.TYPE],\n        ['ConstrainULong', base_config_1.TYPE],\n        ['CookieList', base_config_1.TYPE],\n        ['DOMHighResTimeStamp', base_config_1.TYPE],\n        ['EpochTimeStamp', base_config_1.TYPE],\n        ['EventListenerOrEventListenerObject', base_config_1.TYPE],\n        ['FileSystemWriteChunkType', base_config_1.TYPE],\n        ['Float32List', base_config_1.TYPE],\n        ['FormDataEntryValue', base_config_1.TYPE],\n        ['GLbitfield', base_config_1.TYPE],\n        ['GLboolean', base_config_1.TYPE],\n        ['GLclampf', base_config_1.TYPE],\n        ['GLenum', base_config_1.TYPE],\n        ['GLfloat', base_config_1.TYPE],\n        ['GLint', base_config_1.TYPE],\n        ['GLint64', base_config_1.TYPE],\n        ['GLintptr', base_config_1.TYPE],\n        ['GLsizei', base_config_1.TYPE],\n        ['GLsizeiptr', base_config_1.TYPE],\n        ['GLuint', base_config_1.TYPE],\n        ['GLuint64', base_config_1.TYPE],\n        ['GPUBindingResource', base_config_1.TYPE],\n        ['GPUBufferDynamicOffset', base_config_1.TYPE],\n        ['GPUBufferUsageFlags', base_config_1.TYPE],\n        ['GPUColor', base_config_1.TYPE],\n        ['GPUColorWriteFlags', base_config_1.TYPE],\n        ['GPUCopyExternalImageSource', base_config_1.TYPE],\n        ['GPUDepthBias', base_config_1.TYPE],\n        ['GPUExtent3D', base_config_1.TYPE],\n        ['GPUFlagsConstant', base_config_1.TYPE],\n        ['GPUIndex32', base_config_1.TYPE],\n        ['GPUIntegerCoordinate', base_config_1.TYPE],\n        ['GPUIntegerCoordinateOut', base_config_1.TYPE],\n        ['GPUMapModeFlags', base_config_1.TYPE],\n        ['GPUOrigin2D', base_config_1.TYPE],\n        ['GPUOrigin3D', base_config_1.TYPE],\n        ['GPUPipelineConstantValue', base_config_1.TYPE],\n        ['GPUSampleMask', base_config_1.TYPE],\n        ['GPUShaderStageFlags', base_config_1.TYPE],\n        ['GPUSignedOffset32', base_config_1.TYPE],\n        ['GPUSize32', base_config_1.TYPE],\n        ['GPUSize32Out', base_config_1.TYPE],\n        ['GPUSize64', base_config_1.TYPE],\n        ['GPUSize64Out', base_config_1.TYPE],\n        ['GPUStencilValue', base_config_1.TYPE],\n        ['GPUTextureUsageFlags', base_config_1.TYPE],\n        ['HTMLOrSVGImageElement', base_config_1.TYPE],\n        ['HTMLOrSVGScriptElement', base_config_1.TYPE],\n        ['HashAlgorithmIdentifier', base_config_1.TYPE],\n        ['HeadersInit', base_config_1.TYPE],\n        ['IDBValidKey', base_config_1.TYPE],\n        ['ImageBitmapSource', base_config_1.TYPE],\n        ['ImageBufferSource', base_config_1.TYPE],\n        ['ImageDataArray', base_config_1.TYPE],\n        ['Int32List', base_config_1.TYPE],\n        ['LineAndPositionSetting', base_config_1.TYPE],\n        ['MediaProvider', base_config_1.TYPE],\n        ['MessageEventSource', base_config_1.TYPE],\n        ['MutationRecordType', base_config_1.TYPE],\n        ['NamedCurve', base_config_1.TYPE],\n        ['OffscreenRenderingContext', base_config_1.TYPE],\n        ['OnBeforeUnloadEventHandler', base_config_1.TYPE],\n        ['OnErrorEventHandler', base_config_1.TYPE],\n        ['OptionalPostfixToken', base_config_1.TYPE],\n        ['OptionalPrefixToken', base_config_1.TYPE],\n        ['PerformanceEntryList', base_config_1.TYPE],\n        ['PublicKeyCredentialClientCapabilities', base_config_1.TYPE],\n        ['RTCRtpReceiverTransform', base_config_1.TYPE],\n        ['RTCRtpSenderTransform', base_config_1.TYPE],\n        ['ReadableStreamController', base_config_1.TYPE],\n        ['ReadableStreamReadResult', base_config_1.TYPE],\n        ['ReadableStreamReader', base_config_1.TYPE],\n        ['RenderingContext', base_config_1.TYPE],\n        ['ReportList', base_config_1.TYPE],\n        ['RequestInfo', base_config_1.TYPE],\n        ['SanitizerAttribute', base_config_1.TYPE],\n        ['SanitizerElement', base_config_1.TYPE],\n        ['SanitizerElementWithAttributes', base_config_1.TYPE],\n        ['SelectionDirection', base_config_1.TYPE],\n        ['TexImageSource', base_config_1.TYPE],\n        ['TimerHandler', base_config_1.TYPE],\n        ['Transferable', base_config_1.TYPE],\n        ['URLPatternInput', base_config_1.TYPE],\n        ['Uint32List', base_config_1.TYPE],\n        ['VibratePattern', base_config_1.TYPE],\n        ['WindowProxy', base_config_1.TYPE],\n        ['XMLHttpRequestBodyInit', base_config_1.TYPE],\n        ['AacBitstreamFormat', base_config_1.TYPE],\n        ['AlignSetting', base_config_1.TYPE],\n        ['AlphaOption', base_config_1.TYPE],\n        ['AnimationPlayState', base_config_1.TYPE],\n        ['AnimationReplaceState', base_config_1.TYPE],\n        ['AppendMode', base_config_1.TYPE],\n        ['AttestationConveyancePreference', base_config_1.TYPE],\n        ['AudioContextLatencyCategory', base_config_1.TYPE],\n        ['AudioContextState', base_config_1.TYPE],\n        ['AudioSampleFormat', base_config_1.TYPE],\n        ['AuthenticatorAttachment', base_config_1.TYPE],\n        ['AuthenticatorTransport', base_config_1.TYPE],\n        ['AutoFillAddressKind', base_config_1.TYPE],\n        ['AutoFillBase', base_config_1.TYPE],\n        ['AutoFillContactField', base_config_1.TYPE],\n        ['AutoFillContactKind', base_config_1.TYPE],\n        ['AutoFillCredentialField', base_config_1.TYPE],\n        ['AutoFillNormalField', base_config_1.TYPE],\n        ['AutoKeyword', base_config_1.TYPE],\n        ['AutomationRate', base_config_1.TYPE],\n        ['AvcBitstreamFormat', base_config_1.TYPE],\n        ['BinaryType', base_config_1.TYPE],\n        ['BiquadFilterType', base_config_1.TYPE],\n        ['BitrateMode', base_config_1.TYPE],\n        ['CSSMathOperator', base_config_1.TYPE],\n        ['CSSNumericBaseType', base_config_1.TYPE],\n        ['CanPlayTypeResult', base_config_1.TYPE],\n        ['CanvasDirection', base_config_1.TYPE],\n        ['CanvasFillRule', base_config_1.TYPE],\n        ['CanvasFontKerning', base_config_1.TYPE],\n        ['CanvasFontStretch', base_config_1.TYPE],\n        ['CanvasFontVariantCaps', base_config_1.TYPE],\n        ['CanvasLineCap', base_config_1.TYPE],\n        ['CanvasLineJoin', base_config_1.TYPE],\n        ['CanvasTextAlign', base_config_1.TYPE],\n        ['CanvasTextBaseline', base_config_1.TYPE],\n        ['CanvasTextRendering', base_config_1.TYPE],\n        ['ChannelCountMode', base_config_1.TYPE],\n        ['ChannelInterpretation', base_config_1.TYPE],\n        ['ClientTypes', base_config_1.TYPE],\n        ['CodecState', base_config_1.TYPE],\n        ['ColorGamut', base_config_1.TYPE],\n        ['ColorSpaceConversion', base_config_1.TYPE],\n        ['CompositeOperation', base_config_1.TYPE],\n        ['CompositeOperationOrAuto', base_config_1.TYPE],\n        ['CompressionFormat', base_config_1.TYPE],\n        ['CookieSameSite', base_config_1.TYPE],\n        ['CredentialMediationRequirement', base_config_1.TYPE],\n        ['DOMParserSupportedType', base_config_1.TYPE],\n        ['DirectionSetting', base_config_1.TYPE],\n        ['DisplayCaptureSurfaceType', base_config_1.TYPE],\n        ['DistanceModelType', base_config_1.TYPE],\n        ['DocumentReadyState', base_config_1.TYPE],\n        ['DocumentVisibilityState', base_config_1.TYPE],\n        ['EncodedAudioChunkType', base_config_1.TYPE],\n        ['EncodedVideoChunkType', base_config_1.TYPE],\n        ['EndOfStreamError', base_config_1.TYPE],\n        ['EndingType', base_config_1.TYPE],\n        ['FileSystemHandleKind', base_config_1.TYPE],\n        ['FillLightMode', base_config_1.TYPE],\n        ['FillMode', base_config_1.TYPE],\n        ['FontDisplay', base_config_1.TYPE],\n        ['FontFaceLoadStatus', base_config_1.TYPE],\n        ['FontFaceSetLoadStatus', base_config_1.TYPE],\n        ['FullscreenNavigationUI', base_config_1.TYPE],\n        ['GPUAddressMode', base_config_1.TYPE],\n        ['GPUAutoLayoutMode', base_config_1.TYPE],\n        ['GPUBlendFactor', base_config_1.TYPE],\n        ['GPUBlendOperation', base_config_1.TYPE],\n        ['GPUBufferBindingType', base_config_1.TYPE],\n        ['GPUBufferMapState', base_config_1.TYPE],\n        ['GPUCanvasAlphaMode', base_config_1.TYPE],\n        ['GPUCanvasToneMappingMode', base_config_1.TYPE],\n        ['GPUCompareFunction', base_config_1.TYPE],\n        ['GPUCompilationMessageType', base_config_1.TYPE],\n        ['GPUCullMode', base_config_1.TYPE],\n        ['GPUDeviceLostReason', base_config_1.TYPE],\n        ['GPUErrorFilter', base_config_1.TYPE],\n        ['GPUFeatureName', base_config_1.TYPE],\n        ['GPUFilterMode', base_config_1.TYPE],\n        ['GPUFrontFace', base_config_1.TYPE],\n        ['GPUIndexFormat', base_config_1.TYPE],\n        ['GPULoadOp', base_config_1.TYPE],\n        ['GPUMipmapFilterMode', base_config_1.TYPE],\n        ['GPUPipelineErrorReason', base_config_1.TYPE],\n        ['GPUPowerPreference', base_config_1.TYPE],\n        ['GPUPrimitiveTopology', base_config_1.TYPE],\n        ['GPUQueryType', base_config_1.TYPE],\n        ['GPUSamplerBindingType', base_config_1.TYPE],\n        ['GPUStencilOperation', base_config_1.TYPE],\n        ['GPUStorageTextureAccess', base_config_1.TYPE],\n        ['GPUStoreOp', base_config_1.TYPE],\n        ['GPUTextureAspect', base_config_1.TYPE],\n        ['GPUTextureDimension', base_config_1.TYPE],\n        ['GPUTextureFormat', base_config_1.TYPE],\n        ['GPUTextureSampleType', base_config_1.TYPE],\n        ['GPUTextureViewDimension', base_config_1.TYPE],\n        ['GPUVertexFormat', base_config_1.TYPE],\n        ['GPUVertexStepMode', base_config_1.TYPE],\n        ['GamepadHapticEffectType', base_config_1.TYPE],\n        ['GamepadHapticsResult', base_config_1.TYPE],\n        ['GamepadMappingType', base_config_1.TYPE],\n        ['GlobalCompositeOperation', base_config_1.TYPE],\n        ['HardwareAcceleration', base_config_1.TYPE],\n        ['HdrMetadataType', base_config_1.TYPE],\n        ['HighlightType', base_config_1.TYPE],\n        ['IDBCursorDirection', base_config_1.TYPE],\n        ['IDBRequestReadyState', base_config_1.TYPE],\n        ['IDBTransactionDurability', base_config_1.TYPE],\n        ['IDBTransactionMode', base_config_1.TYPE],\n        ['ImageDataPixelFormat', base_config_1.TYPE],\n        ['ImageOrientation', base_config_1.TYPE],\n        ['ImageSmoothingQuality', base_config_1.TYPE],\n        ['InsertPosition', base_config_1.TYPE],\n        ['IterationCompositeOperation', base_config_1.TYPE],\n        ['KeyFormat', base_config_1.TYPE],\n        ['KeyType', base_config_1.TYPE],\n        ['KeyUsage', base_config_1.TYPE],\n        ['LatencyMode', base_config_1.TYPE],\n        ['LineAlignSetting', base_config_1.TYPE],\n        ['LockMode', base_config_1.TYPE],\n        ['LoginStatus', base_config_1.TYPE],\n        ['MIDIPortConnectionState', base_config_1.TYPE],\n        ['MIDIPortDeviceState', base_config_1.TYPE],\n        ['MIDIPortType', base_config_1.TYPE],\n        ['MediaDecodingType', base_config_1.TYPE],\n        ['MediaDeviceKind', base_config_1.TYPE],\n        ['MediaEncodingType', base_config_1.TYPE],\n        ['MediaKeyMessageType', base_config_1.TYPE],\n        ['MediaKeySessionClosedReason', base_config_1.TYPE],\n        ['MediaKeySessionType', base_config_1.TYPE],\n        ['MediaKeyStatus', base_config_1.TYPE],\n        ['MediaKeysRequirement', base_config_1.TYPE],\n        ['MediaSessionAction', base_config_1.TYPE],\n        ['MediaSessionPlaybackState', base_config_1.TYPE],\n        ['MediaStreamTrackState', base_config_1.TYPE],\n        ['NavigationFocusReset', base_config_1.TYPE],\n        ['NavigationHistoryBehavior', base_config_1.TYPE],\n        ['NavigationScrollBehavior', base_config_1.TYPE],\n        ['NavigationTimingType', base_config_1.TYPE],\n        ['NavigationType', base_config_1.TYPE],\n        ['NotificationDirection', base_config_1.TYPE],\n        ['NotificationPermission', base_config_1.TYPE],\n        ['OffscreenRenderingContextId', base_config_1.TYPE],\n        ['OpusBitstreamFormat', base_config_1.TYPE],\n        ['OrientationLockType', base_config_1.TYPE],\n        ['OrientationType', base_config_1.TYPE],\n        ['OscillatorType', base_config_1.TYPE],\n        ['OverSampleType', base_config_1.TYPE],\n        ['PanningModelType', base_config_1.TYPE],\n        ['PaymentComplete', base_config_1.TYPE],\n        ['PaymentShippingType', base_config_1.TYPE],\n        ['PermissionName', base_config_1.TYPE],\n        ['PermissionState', base_config_1.TYPE],\n        ['PlaybackDirection', base_config_1.TYPE],\n        ['PositionAlignSetting', base_config_1.TYPE],\n        ['PredefinedColorSpace', base_config_1.TYPE],\n        ['PremultiplyAlpha', base_config_1.TYPE],\n        ['PresentationStyle', base_config_1.TYPE],\n        ['PublicKeyCredentialType', base_config_1.TYPE],\n        ['PushEncryptionKeyName', base_config_1.TYPE],\n        ['RTCBundlePolicy', base_config_1.TYPE],\n        ['RTCDataChannelState', base_config_1.TYPE],\n        ['RTCDegradationPreference', base_config_1.TYPE],\n        ['RTCDtlsRole', base_config_1.TYPE],\n        ['RTCDtlsTransportState', base_config_1.TYPE],\n        ['RTCErrorDetailType', base_config_1.TYPE],\n        ['RTCIceCandidateType', base_config_1.TYPE],\n        ['RTCIceComponent', base_config_1.TYPE],\n        ['RTCIceConnectionState', base_config_1.TYPE],\n        ['RTCIceGathererState', base_config_1.TYPE],\n        ['RTCIceGatheringState', base_config_1.TYPE],\n        ['RTCIceProtocol', base_config_1.TYPE],\n        ['RTCIceRole', base_config_1.TYPE],\n        ['RTCIceTcpCandidateType', base_config_1.TYPE],\n        ['RTCIceTransportPolicy', base_config_1.TYPE],\n        ['RTCIceTransportState', base_config_1.TYPE],\n        ['RTCPeerConnectionState', base_config_1.TYPE],\n        ['RTCPriorityType', base_config_1.TYPE],\n        ['RTCQualityLimitationReason', base_config_1.TYPE],\n        ['RTCRtcpMuxPolicy', base_config_1.TYPE],\n        ['RTCRtpTransceiverDirection', base_config_1.TYPE],\n        ['RTCSctpTransportState', base_config_1.TYPE],\n        ['RTCSdpType', base_config_1.TYPE],\n        ['RTCSignalingState', base_config_1.TYPE],\n        ['RTCStatsIceCandidatePairState', base_config_1.TYPE],\n        ['RTCStatsType', base_config_1.TYPE],\n        ['ReadableStreamReaderMode', base_config_1.TYPE],\n        ['ReadableStreamType', base_config_1.TYPE],\n        ['ReadyState', base_config_1.TYPE],\n        ['RecordingState', base_config_1.TYPE],\n        ['RedEyeReduction', base_config_1.TYPE],\n        ['ReferrerPolicy', base_config_1.TYPE],\n        ['RemotePlaybackState', base_config_1.TYPE],\n        ['RequestCache', base_config_1.TYPE],\n        ['RequestCredentials', base_config_1.TYPE],\n        ['RequestDestination', base_config_1.TYPE],\n        ['RequestMode', base_config_1.TYPE],\n        ['RequestPriority', base_config_1.TYPE],\n        ['RequestRedirect', base_config_1.TYPE],\n        ['ResidentKeyRequirement', base_config_1.TYPE],\n        ['ResizeObserverBoxOptions', base_config_1.TYPE],\n        ['ResizeQuality', base_config_1.TYPE],\n        ['ResponseType', base_config_1.TYPE],\n        ['SanitizerPresets', base_config_1.TYPE],\n        ['ScrollAxis', base_config_1.TYPE],\n        ['ScrollBehavior', base_config_1.TYPE],\n        ['ScrollLogicalPosition', base_config_1.TYPE],\n        ['ScrollRestoration', base_config_1.TYPE],\n        ['ScrollSetting', base_config_1.TYPE],\n        ['SecurityPolicyViolationEventDisposition', base_config_1.TYPE],\n        ['SelectionMode', base_config_1.TYPE],\n        ['ServiceWorkerState', base_config_1.TYPE],\n        ['ServiceWorkerUpdateViaCache', base_config_1.TYPE],\n        ['ShadowRootMode', base_config_1.TYPE],\n        ['SlotAssignmentMode', base_config_1.TYPE],\n        ['SpeechRecognitionErrorCode', base_config_1.TYPE],\n        ['SpeechSynthesisErrorCode', base_config_1.TYPE],\n        ['TaskPriority', base_config_1.TYPE],\n        ['TextTrackKind', base_config_1.TYPE],\n        ['TextTrackMode', base_config_1.TYPE],\n        ['TouchType', base_config_1.TYPE],\n        ['TransferFunction', base_config_1.TYPE],\n        ['UserVerificationRequirement', base_config_1.TYPE],\n        ['VideoColorPrimaries', base_config_1.TYPE],\n        ['VideoEncoderBitrateMode', base_config_1.TYPE],\n        ['VideoFacingModeEnum', base_config_1.TYPE],\n        ['VideoMatrixCoefficients', base_config_1.TYPE],\n        ['VideoPixelFormat', base_config_1.TYPE],\n        ['VideoTransferCharacteristics', base_config_1.TYPE],\n        ['WakeLockType', base_config_1.TYPE],\n        ['WebGLPowerPreference', base_config_1.TYPE],\n        ['WebTransportCongestionControl', base_config_1.TYPE],\n        ['WebTransportErrorSource', base_config_1.TYPE],\n        ['WorkerType', base_config_1.TYPE],\n        ['WriteCommandType', base_config_1.TYPE],\n        ['XMLHttpRequestResponseType', base_config_1.TYPE],\n        ['FormDataIterator', base_config_1.TYPE],\n        ['HeadersIterator', base_config_1.TYPE],\n        ['MediaKeyStatusMapIterator', base_config_1.TYPE],\n        ['StylePropertyMapReadOnlyIterator', base_config_1.TYPE],\n        ['URLSearchParamsIterator', base_config_1.TYPE],\n        ['FileSystemDirectoryHandleAsyncIterator', base_config_1.TYPE],\n        ['ReadableStreamAsyncIterator', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dom_asynciterable = void 0;\nexports.dom_asynciterable = {\n    libs: [],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dom_iterable = void 0;\nexports.dom_iterable = {\n    libs: [],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es6 = void 0;\nconst es5_1 = require(\"./es5\");\nconst es2015_collection_1 = require(\"./es2015.collection\");\nconst es2015_core_1 = require(\"./es2015.core\");\nconst es2015_generator_1 = require(\"./es2015.generator\");\nconst es2015_iterable_1 = require(\"./es2015.iterable\");\nconst es2015_promise_1 = require(\"./es2015.promise\");\nconst es2015_proxy_1 = require(\"./es2015.proxy\");\nconst es2015_reflect_1 = require(\"./es2015.reflect\");\nconst es2015_symbol_1 = require(\"./es2015.symbol\");\nconst es2015_symbol_wellknown_1 = require(\"./es2015.symbol.wellknown\");\nexports.es6 = {\n    libs: [\n        es5_1.es5,\n        es2015_core_1.es2015_core,\n        es2015_collection_1.es2015_collection,\n        es2015_iterable_1.es2015_iterable,\n        es2015_generator_1.es2015_generator,\n        es2015_promise_1.es2015_promise,\n        es2015_proxy_1.es2015_proxy,\n        es2015_reflect_1.es2015_reflect,\n        es2015_symbol_1.es2015_symbol,\n        es2015_symbol_wellknown_1.es2015_symbol_wellknown,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2016_array_include = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2016_array_include = {\n    libs: [],\n    variables: [\n        ['Array', base_config_1.TYPE],\n        ['ReadonlyArray', base_config_1.TYPE],\n        ['Int8Array', base_config_1.TYPE],\n        ['Uint8Array', base_config_1.TYPE],\n        ['Uint8ClampedArray', base_config_1.TYPE],\n        ['Int16Array', base_config_1.TYPE],\n        ['Uint16Array', base_config_1.TYPE],\n        ['Int32Array', base_config_1.TYPE],\n        ['Uint32Array', base_config_1.TYPE],\n        ['Float32Array', base_config_1.TYPE],\n        ['Float64Array', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2016_intl = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2016_intl = {\n    libs: [],\n    variables: [['Intl', base_config_1.TYPE_VALUE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es7 = void 0;\nconst es2015_1 = require(\"./es2015\");\nconst es2016_array_include_1 = require(\"./es2016.array.include\");\nconst es2016_intl_1 = require(\"./es2016.intl\");\nexports.es7 = {\n    libs: [es2015_1.es2015, es2016_array_include_1.es2016_array_include, es2016_intl_1.es2016_intl],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2016 = void 0;\nconst es2015_1 = require(\"./es2015\");\nconst es2016_array_include_1 = require(\"./es2016.array.include\");\nconst es2016_intl_1 = require(\"./es2016.intl\");\nexports.es2016 = {\n    libs: [es2015_1.es2015, es2016_array_include_1.es2016_array_include, es2016_intl_1.es2016_intl],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scripthost = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.scripthost = {\n    libs: [],\n    variables: [\n        ['ActiveXObject', base_config_1.TYPE_VALUE],\n        ['ITextWriter', base_config_1.TYPE],\n        ['TextStreamBase', base_config_1.TYPE],\n        ['TextStreamWriter', base_config_1.TYPE],\n        ['TextStreamReader', base_config_1.TYPE],\n        ['SafeArray', base_config_1.TYPE_VALUE],\n        ['Enumerator', base_config_1.TYPE_VALUE],\n        ['EnumeratorConstructor', base_config_1.TYPE],\n        ['VBArray', base_config_1.TYPE_VALUE],\n        ['VBArrayConstructor', base_config_1.TYPE],\n        ['VarDate', base_config_1.TYPE_VALUE],\n        ['DateConstructor', base_config_1.TYPE],\n        ['Date', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.webworker_importscripts = void 0;\nexports.webworker_importscripts = {\n    libs: [],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2016_full = void 0;\nconst dom_1 = require(\"./dom\");\nconst dom_iterable_1 = require(\"./dom.iterable\");\nconst es2016_1 = require(\"./es2016\");\nconst scripthost_1 = require(\"./scripthost\");\nconst webworker_importscripts_1 = require(\"./webworker.importscripts\");\nexports.es2016_full = {\n    libs: [es2016_1.es2016, dom_1.dom, webworker_importscripts_1.webworker_importscripts, scripthost_1.scripthost, dom_iterable_1.dom_iterable],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2017_arraybuffer = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2017_arraybuffer = {\n    libs: [],\n    variables: [['ArrayBufferConstructor', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2017_date = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2017_date = {\n    libs: [],\n    variables: [['DateConstructor', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2017_intl = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2017_intl = {\n    libs: [],\n    variables: [['Intl', base_config_1.TYPE_VALUE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2017_object = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2017_object = {\n    libs: [],\n    variables: [['ObjectConstructor', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2017_sharedmemory = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_symbol_1 = require(\"./es2015.symbol\");\nconst es2015_symbol_wellknown_1 = require(\"./es2015.symbol.wellknown\");\nexports.es2017_sharedmemory = {\n    libs: [es2015_symbol_1.es2015_symbol, es2015_symbol_wellknown_1.es2015_symbol_wellknown],\n    variables: [\n        ['SharedArrayBuffer', base_config_1.TYPE_VALUE],\n        ['SharedArrayBufferConstructor', base_config_1.TYPE],\n        ['ArrayBufferTypes', base_config_1.TYPE],\n        ['Atomics', base_config_1.TYPE_VALUE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2017_string = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2017_string = {\n    libs: [],\n    variables: [['String', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2017_typedarrays = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2017_typedarrays = {\n    libs: [],\n    variables: [\n        ['Int8ArrayConstructor', base_config_1.TYPE],\n        ['Uint8ArrayConstructor', base_config_1.TYPE],\n        ['Uint8ClampedArrayConstructor', base_config_1.TYPE],\n        ['Int16ArrayConstructor', base_config_1.TYPE],\n        ['Uint16ArrayConstructor', base_config_1.TYPE],\n        ['Int32ArrayConstructor', base_config_1.TYPE],\n        ['Uint32ArrayConstructor', base_config_1.TYPE],\n        ['Float32ArrayConstructor', base_config_1.TYPE],\n        ['Float64ArrayConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2017 = void 0;\nconst es2016_1 = require(\"./es2016\");\nconst es2017_arraybuffer_1 = require(\"./es2017.arraybuffer\");\nconst es2017_date_1 = require(\"./es2017.date\");\nconst es2017_intl_1 = require(\"./es2017.intl\");\nconst es2017_object_1 = require(\"./es2017.object\");\nconst es2017_sharedmemory_1 = require(\"./es2017.sharedmemory\");\nconst es2017_string_1 = require(\"./es2017.string\");\nconst es2017_typedarrays_1 = require(\"./es2017.typedarrays\");\nexports.es2017 = {\n    libs: [\n        es2016_1.es2016,\n        es2017_arraybuffer_1.es2017_arraybuffer,\n        es2017_date_1.es2017_date,\n        es2017_intl_1.es2017_intl,\n        es2017_object_1.es2017_object,\n        es2017_sharedmemory_1.es2017_sharedmemory,\n        es2017_string_1.es2017_string,\n        es2017_typedarrays_1.es2017_typedarrays,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2017_full = void 0;\nconst dom_1 = require(\"./dom\");\nconst dom_iterable_1 = require(\"./dom.iterable\");\nconst es2017_1 = require(\"./es2017\");\nconst scripthost_1 = require(\"./scripthost\");\nconst webworker_importscripts_1 = require(\"./webworker.importscripts\");\nexports.es2017_full = {\n    libs: [es2017_1.es2017, dom_1.dom, webworker_importscripts_1.webworker_importscripts, scripthost_1.scripthost, dom_iterable_1.dom_iterable],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2018_asyncgenerator = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2018_asynciterable_1 = require(\"./es2018.asynciterable\");\nexports.es2018_asyncgenerator = {\n    libs: [es2018_asynciterable_1.es2018_asynciterable],\n    variables: [\n        ['AsyncGenerator', base_config_1.TYPE],\n        ['AsyncGeneratorFunction', base_config_1.TYPE],\n        ['AsyncGeneratorFunctionConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2018_intl = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2018_intl = {\n    libs: [],\n    variables: [['Intl', base_config_1.TYPE_VALUE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2018_promise = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2018_promise = {\n    libs: [],\n    variables: [['Promise', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2018_regexp = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2018_regexp = {\n    libs: [],\n    variables: [\n        ['RegExpMatchArray', base_config_1.TYPE],\n        ['RegExpExecArray', base_config_1.TYPE],\n        ['RegExp', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2018 = void 0;\nconst es2017_1 = require(\"./es2017\");\nconst es2018_asyncgenerator_1 = require(\"./es2018.asyncgenerator\");\nconst es2018_asynciterable_1 = require(\"./es2018.asynciterable\");\nconst es2018_intl_1 = require(\"./es2018.intl\");\nconst es2018_promise_1 = require(\"./es2018.promise\");\nconst es2018_regexp_1 = require(\"./es2018.regexp\");\nexports.es2018 = {\n    libs: [\n        es2017_1.es2017,\n        es2018_asynciterable_1.es2018_asynciterable,\n        es2018_asyncgenerator_1.es2018_asyncgenerator,\n        es2018_promise_1.es2018_promise,\n        es2018_regexp_1.es2018_regexp,\n        es2018_intl_1.es2018_intl,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2018_full = void 0;\nconst dom_1 = require(\"./dom\");\nconst dom_asynciterable_1 = require(\"./dom.asynciterable\");\nconst dom_iterable_1 = require(\"./dom.iterable\");\nconst es2018_1 = require(\"./es2018\");\nconst scripthost_1 = require(\"./scripthost\");\nconst webworker_importscripts_1 = require(\"./webworker.importscripts\");\nexports.es2018_full = {\n    libs: [\n        es2018_1.es2018,\n        dom_1.dom,\n        webworker_importscripts_1.webworker_importscripts,\n        scripthost_1.scripthost,\n        dom_iterable_1.dom_iterable,\n        dom_asynciterable_1.dom_asynciterable,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2019_array = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2019_array = {\n    libs: [],\n    variables: [\n        ['FlatArray', base_config_1.TYPE],\n        ['ReadonlyArray', base_config_1.TYPE],\n        ['Array', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2019_intl = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2019_intl = {\n    libs: [],\n    variables: [['Intl', base_config_1.TYPE_VALUE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2019_object = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_iterable_1 = require(\"./es2015.iterable\");\nexports.es2019_object = {\n    libs: [es2015_iterable_1.es2015_iterable],\n    variables: [['ObjectConstructor', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2019_string = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2019_string = {\n    libs: [],\n    variables: [['String', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2019_symbol = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2019_symbol = {\n    libs: [],\n    variables: [['Symbol', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2019 = void 0;\nconst es2018_1 = require(\"./es2018\");\nconst es2019_array_1 = require(\"./es2019.array\");\nconst es2019_intl_1 = require(\"./es2019.intl\");\nconst es2019_object_1 = require(\"./es2019.object\");\nconst es2019_string_1 = require(\"./es2019.string\");\nconst es2019_symbol_1 = require(\"./es2019.symbol\");\nexports.es2019 = {\n    libs: [\n        es2018_1.es2018,\n        es2019_array_1.es2019_array,\n        es2019_object_1.es2019_object,\n        es2019_string_1.es2019_string,\n        es2019_symbol_1.es2019_symbol,\n        es2019_intl_1.es2019_intl,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2019_full = void 0;\nconst dom_1 = require(\"./dom\");\nconst dom_asynciterable_1 = require(\"./dom.asynciterable\");\nconst dom_iterable_1 = require(\"./dom.iterable\");\nconst es2019_1 = require(\"./es2019\");\nconst scripthost_1 = require(\"./scripthost\");\nconst webworker_importscripts_1 = require(\"./webworker.importscripts\");\nexports.es2019_full = {\n    libs: [\n        es2019_1.es2019,\n        dom_1.dom,\n        webworker_importscripts_1.webworker_importscripts,\n        scripthost_1.scripthost,\n        dom_iterable_1.dom_iterable,\n        dom_asynciterable_1.dom_asynciterable,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2020_intl = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2018_intl_1 = require(\"./es2018.intl\");\nexports.es2020_intl = {\n    libs: [es2018_intl_1.es2018_intl],\n    variables: [['Intl', base_config_1.TYPE_VALUE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2020_bigint = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2020_intl_1 = require(\"./es2020.intl\");\nexports.es2020_bigint = {\n    libs: [es2020_intl_1.es2020_intl],\n    variables: [\n        ['BigIntToLocaleStringOptions', base_config_1.TYPE],\n        ['BigInt', base_config_1.TYPE_VALUE],\n        ['BigIntConstructor', base_config_1.TYPE],\n        ['BigInt64Array', base_config_1.TYPE_VALUE],\n        ['BigInt64ArrayConstructor', base_config_1.TYPE],\n        ['BigUint64Array', base_config_1.TYPE_VALUE],\n        ['BigUint64ArrayConstructor', base_config_1.TYPE],\n        ['DataView', base_config_1.TYPE],\n        ['Intl', base_config_1.TYPE_VALUE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2020_date = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2020_intl_1 = require(\"./es2020.intl\");\nexports.es2020_date = {\n    libs: [es2020_intl_1.es2020_intl],\n    variables: [['Date', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2020_number = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2020_intl_1 = require(\"./es2020.intl\");\nexports.es2020_number = {\n    libs: [es2020_intl_1.es2020_intl],\n    variables: [['Number', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2020_promise = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2020_promise = {\n    libs: [],\n    variables: [\n        ['PromiseFulfilledResult', base_config_1.TYPE],\n        ['PromiseRejectedResult', base_config_1.TYPE],\n        ['PromiseSettledResult', base_config_1.TYPE],\n        ['PromiseConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2020_sharedmemory = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2020_bigint_1 = require(\"./es2020.bigint\");\nexports.es2020_sharedmemory = {\n    libs: [es2020_bigint_1.es2020_bigint],\n    variables: [['Atomics', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2020_symbol_wellknown = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_iterable_1 = require(\"./es2015.iterable\");\nconst es2015_symbol_1 = require(\"./es2015.symbol\");\nexports.es2020_symbol_wellknown = {\n    libs: [es2015_iterable_1.es2015_iterable, es2015_symbol_1.es2015_symbol],\n    variables: [\n        ['SymbolConstructor', base_config_1.TYPE],\n        ['RegExpStringIterator', base_config_1.TYPE],\n        ['RegExp', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2020_string = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_iterable_1 = require(\"./es2015.iterable\");\nconst es2020_intl_1 = require(\"./es2020.intl\");\nconst es2020_symbol_wellknown_1 = require(\"./es2020.symbol.wellknown\");\nexports.es2020_string = {\n    libs: [es2015_iterable_1.es2015_iterable, es2020_intl_1.es2020_intl, es2020_symbol_wellknown_1.es2020_symbol_wellknown],\n    variables: [['String', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2020 = void 0;\nconst es2019_1 = require(\"./es2019\");\nconst es2020_bigint_1 = require(\"./es2020.bigint\");\nconst es2020_date_1 = require(\"./es2020.date\");\nconst es2020_intl_1 = require(\"./es2020.intl\");\nconst es2020_number_1 = require(\"./es2020.number\");\nconst es2020_promise_1 = require(\"./es2020.promise\");\nconst es2020_sharedmemory_1 = require(\"./es2020.sharedmemory\");\nconst es2020_string_1 = require(\"./es2020.string\");\nconst es2020_symbol_wellknown_1 = require(\"./es2020.symbol.wellknown\");\nexports.es2020 = {\n    libs: [\n        es2019_1.es2019,\n        es2020_bigint_1.es2020_bigint,\n        es2020_date_1.es2020_date,\n        es2020_number_1.es2020_number,\n        es2020_promise_1.es2020_promise,\n        es2020_sharedmemory_1.es2020_sharedmemory,\n        es2020_string_1.es2020_string,\n        es2020_symbol_wellknown_1.es2020_symbol_wellknown,\n        es2020_intl_1.es2020_intl,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2020_full = void 0;\nconst dom_1 = require(\"./dom\");\nconst dom_asynciterable_1 = require(\"./dom.asynciterable\");\nconst dom_iterable_1 = require(\"./dom.iterable\");\nconst es2020_1 = require(\"./es2020\");\nconst scripthost_1 = require(\"./scripthost\");\nconst webworker_importscripts_1 = require(\"./webworker.importscripts\");\nexports.es2020_full = {\n    libs: [\n        es2020_1.es2020,\n        dom_1.dom,\n        webworker_importscripts_1.webworker_importscripts,\n        scripthost_1.scripthost,\n        dom_iterable_1.dom_iterable,\n        dom_asynciterable_1.dom_asynciterable,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2021_intl = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2021_intl = {\n    libs: [],\n    variables: [['Intl', base_config_1.TYPE_VALUE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2021_promise = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2021_promise = {\n    libs: [],\n    variables: [\n        ['AggregateError', base_config_1.TYPE_VALUE],\n        ['AggregateErrorConstructor', base_config_1.TYPE],\n        ['PromiseConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2021_string = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2021_string = {\n    libs: [],\n    variables: [['String', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2021_weakref = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_symbol_wellknown_1 = require(\"./es2015.symbol.wellknown\");\nexports.es2021_weakref = {\n    libs: [es2015_symbol_wellknown_1.es2015_symbol_wellknown],\n    variables: [\n        ['WeakRef', base_config_1.TYPE_VALUE],\n        ['WeakRefConstructor', base_config_1.TYPE],\n        ['FinalizationRegistry', base_config_1.TYPE_VALUE],\n        ['FinalizationRegistryConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2021 = void 0;\nconst es2020_1 = require(\"./es2020\");\nconst es2021_intl_1 = require(\"./es2021.intl\");\nconst es2021_promise_1 = require(\"./es2021.promise\");\nconst es2021_string_1 = require(\"./es2021.string\");\nconst es2021_weakref_1 = require(\"./es2021.weakref\");\nexports.es2021 = {\n    libs: [es2020_1.es2020, es2021_promise_1.es2021_promise, es2021_string_1.es2021_string, es2021_weakref_1.es2021_weakref, es2021_intl_1.es2021_intl],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2021_full = void 0;\nconst dom_1 = require(\"./dom\");\nconst dom_asynciterable_1 = require(\"./dom.asynciterable\");\nconst dom_iterable_1 = require(\"./dom.iterable\");\nconst es2021_1 = require(\"./es2021\");\nconst scripthost_1 = require(\"./scripthost\");\nconst webworker_importscripts_1 = require(\"./webworker.importscripts\");\nexports.es2021_full = {\n    libs: [\n        es2021_1.es2021,\n        dom_1.dom,\n        webworker_importscripts_1.webworker_importscripts,\n        scripthost_1.scripthost,\n        dom_iterable_1.dom_iterable,\n        dom_asynciterable_1.dom_asynciterable,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2022_array = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2022_array = {\n    libs: [],\n    variables: [\n        ['Array', base_config_1.TYPE],\n        ['ReadonlyArray', base_config_1.TYPE],\n        ['Int8Array', base_config_1.TYPE],\n        ['Uint8Array', base_config_1.TYPE],\n        ['Uint8ClampedArray', base_config_1.TYPE],\n        ['Int16Array', base_config_1.TYPE],\n        ['Uint16Array', base_config_1.TYPE],\n        ['Int32Array', base_config_1.TYPE],\n        ['Uint32Array', base_config_1.TYPE],\n        ['Float32Array', base_config_1.TYPE],\n        ['Float64Array', base_config_1.TYPE],\n        ['BigInt64Array', base_config_1.TYPE],\n        ['BigUint64Array', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2022_error = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2021_promise_1 = require(\"./es2021.promise\");\nexports.es2022_error = {\n    libs: [es2021_promise_1.es2021_promise],\n    variables: [\n        ['ErrorOptions', base_config_1.TYPE],\n        ['Error', base_config_1.TYPE],\n        ['ErrorConstructor', base_config_1.TYPE],\n        ['EvalErrorConstructor', base_config_1.TYPE],\n        ['RangeErrorConstructor', base_config_1.TYPE],\n        ['ReferenceErrorConstructor', base_config_1.TYPE],\n        ['SyntaxErrorConstructor', base_config_1.TYPE],\n        ['TypeErrorConstructor', base_config_1.TYPE],\n        ['URIErrorConstructor', base_config_1.TYPE],\n        ['AggregateErrorConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2022_intl = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2022_intl = {\n    libs: [],\n    variables: [['Intl', base_config_1.TYPE_VALUE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2022_object = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2022_object = {\n    libs: [],\n    variables: [['ObjectConstructor', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2022_regexp = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2022_regexp = {\n    libs: [],\n    variables: [\n        ['RegExpMatchArray', base_config_1.TYPE],\n        ['RegExpExecArray', base_config_1.TYPE],\n        ['RegExpIndicesArray', base_config_1.TYPE],\n        ['RegExp', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2022_string = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2022_string = {\n    libs: [],\n    variables: [['String', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2022 = void 0;\nconst es2021_1 = require(\"./es2021\");\nconst es2022_array_1 = require(\"./es2022.array\");\nconst es2022_error_1 = require(\"./es2022.error\");\nconst es2022_intl_1 = require(\"./es2022.intl\");\nconst es2022_object_1 = require(\"./es2022.object\");\nconst es2022_regexp_1 = require(\"./es2022.regexp\");\nconst es2022_string_1 = require(\"./es2022.string\");\nexports.es2022 = {\n    libs: [\n        es2021_1.es2021,\n        es2022_array_1.es2022_array,\n        es2022_error_1.es2022_error,\n        es2022_intl_1.es2022_intl,\n        es2022_object_1.es2022_object,\n        es2022_regexp_1.es2022_regexp,\n        es2022_string_1.es2022_string,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2022_full = void 0;\nconst dom_1 = require(\"./dom\");\nconst dom_asynciterable_1 = require(\"./dom.asynciterable\");\nconst dom_iterable_1 = require(\"./dom.iterable\");\nconst es2022_1 = require(\"./es2022\");\nconst scripthost_1 = require(\"./scripthost\");\nconst webworker_importscripts_1 = require(\"./webworker.importscripts\");\nexports.es2022_full = {\n    libs: [\n        es2022_1.es2022,\n        dom_1.dom,\n        webworker_importscripts_1.webworker_importscripts,\n        scripthost_1.scripthost,\n        dom_iterable_1.dom_iterable,\n        dom_asynciterable_1.dom_asynciterable,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2023_array = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2023_array = {\n    libs: [],\n    variables: [\n        ['Array', base_config_1.TYPE],\n        ['ReadonlyArray', base_config_1.TYPE],\n        ['Int8Array', base_config_1.TYPE],\n        ['Uint8Array', base_config_1.TYPE],\n        ['Uint8ClampedArray', base_config_1.TYPE],\n        ['Int16Array', base_config_1.TYPE],\n        ['Uint16Array', base_config_1.TYPE],\n        ['Int32Array', base_config_1.TYPE],\n        ['Uint32Array', base_config_1.TYPE],\n        ['Float32Array', base_config_1.TYPE],\n        ['Float64Array', base_config_1.TYPE],\n        ['BigInt64Array', base_config_1.TYPE],\n        ['BigUint64Array', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2023_collection = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2023_collection = {\n    libs: [],\n    variables: [['WeakKeyTypes', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2023_intl = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2023_intl = {\n    libs: [],\n    variables: [['Intl', base_config_1.TYPE_VALUE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2023 = void 0;\nconst es2022_1 = require(\"./es2022\");\nconst es2023_array_1 = require(\"./es2023.array\");\nconst es2023_collection_1 = require(\"./es2023.collection\");\nconst es2023_intl_1 = require(\"./es2023.intl\");\nexports.es2023 = {\n    libs: [es2022_1.es2022, es2023_array_1.es2023_array, es2023_collection_1.es2023_collection, es2023_intl_1.es2023_intl],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2023_full = void 0;\nconst dom_1 = require(\"./dom\");\nconst dom_asynciterable_1 = require(\"./dom.asynciterable\");\nconst dom_iterable_1 = require(\"./dom.iterable\");\nconst es2023_1 = require(\"./es2023\");\nconst scripthost_1 = require(\"./scripthost\");\nconst webworker_importscripts_1 = require(\"./webworker.importscripts\");\nexports.es2023_full = {\n    libs: [\n        es2023_1.es2023,\n        dom_1.dom,\n        webworker_importscripts_1.webworker_importscripts,\n        scripthost_1.scripthost,\n        dom_iterable_1.dom_iterable,\n        dom_asynciterable_1.dom_asynciterable,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2024_arraybuffer = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2024_arraybuffer = {\n    libs: [],\n    variables: [\n        ['ArrayBuffer', base_config_1.TYPE],\n        ['ArrayBufferConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2024_collection = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2024_collection = {\n    libs: [],\n    variables: [['MapConstructor', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2024_object = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2024_object = {\n    libs: [],\n    variables: [['ObjectConstructor', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2024_promise = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2024_promise = {\n    libs: [],\n    variables: [\n        ['PromiseWithResolvers', base_config_1.TYPE],\n        ['PromiseConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2024_regexp = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2024_regexp = {\n    libs: [],\n    variables: [['RegExp', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2024_sharedmemory = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2020_bigint_1 = require(\"./es2020.bigint\");\nexports.es2024_sharedmemory = {\n    libs: [es2020_bigint_1.es2020_bigint],\n    variables: [\n        ['Atomics', base_config_1.TYPE],\n        ['SharedArrayBuffer', base_config_1.TYPE],\n        ['SharedArrayBufferConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2024_string = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2024_string = {\n    libs: [],\n    variables: [['String', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2024 = void 0;\nconst es2023_1 = require(\"./es2023\");\nconst es2024_arraybuffer_1 = require(\"./es2024.arraybuffer\");\nconst es2024_collection_1 = require(\"./es2024.collection\");\nconst es2024_object_1 = require(\"./es2024.object\");\nconst es2024_promise_1 = require(\"./es2024.promise\");\nconst es2024_regexp_1 = require(\"./es2024.regexp\");\nconst es2024_sharedmemory_1 = require(\"./es2024.sharedmemory\");\nconst es2024_string_1 = require(\"./es2024.string\");\nexports.es2024 = {\n    libs: [\n        es2023_1.es2023,\n        es2024_arraybuffer_1.es2024_arraybuffer,\n        es2024_collection_1.es2024_collection,\n        es2024_object_1.es2024_object,\n        es2024_promise_1.es2024_promise,\n        es2024_regexp_1.es2024_regexp,\n        es2024_sharedmemory_1.es2024_sharedmemory,\n        es2024_string_1.es2024_string,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2024_full = void 0;\nconst dom_1 = require(\"./dom\");\nconst dom_asynciterable_1 = require(\"./dom.asynciterable\");\nconst dom_iterable_1 = require(\"./dom.iterable\");\nconst es2024_1 = require(\"./es2024\");\nconst scripthost_1 = require(\"./scripthost\");\nconst webworker_importscripts_1 = require(\"./webworker.importscripts\");\nexports.es2024_full = {\n    libs: [\n        es2024_1.es2024,\n        dom_1.dom,\n        webworker_importscripts_1.webworker_importscripts,\n        scripthost_1.scripthost,\n        dom_iterable_1.dom_iterable,\n        dom_asynciterable_1.dom_asynciterable,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2025_collection = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2024_collection_1 = require(\"./es2024.collection\");\nexports.es2025_collection = {\n    libs: [es2024_collection_1.es2024_collection],\n    variables: [\n        ['ReadonlySetLike', base_config_1.TYPE],\n        ['Set', base_config_1.TYPE],\n        ['ReadonlySet', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2025_float16 = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_iterable_1 = require(\"./es2015.iterable\");\nconst es2015_symbol_1 = require(\"./es2015.symbol\");\nexports.es2025_float16 = {\n    libs: [es2015_symbol_1.es2015_symbol, es2015_iterable_1.es2015_iterable],\n    variables: [\n        ['Float16Array', base_config_1.TYPE_VALUE],\n        ['Float16ArrayConstructor', base_config_1.TYPE],\n        ['Math', base_config_1.TYPE],\n        ['DataView', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2025_intl = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2018_intl_1 = require(\"./es2018.intl\");\nexports.es2025_intl = {\n    libs: [es2018_intl_1.es2018_intl],\n    variables: [['Intl', base_config_1.TYPE_VALUE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2025_iterator = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_iterable_1 = require(\"./es2015.iterable\");\nexports.es2025_iterator = {\n    libs: [es2015_iterable_1.es2015_iterable],\n    variables: [\n        ['Iterator', base_config_1.TYPE_VALUE],\n        ['IteratorObjectConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2025_promise = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2025_promise = {\n    libs: [],\n    variables: [['PromiseConstructor', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2025_regexp = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.es2025_regexp = {\n    libs: [],\n    variables: [['RegExpConstructor', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2025 = void 0;\nconst es2024_1 = require(\"./es2024\");\nconst es2025_collection_1 = require(\"./es2025.collection\");\nconst es2025_float16_1 = require(\"./es2025.float16\");\nconst es2025_intl_1 = require(\"./es2025.intl\");\nconst es2025_iterator_1 = require(\"./es2025.iterator\");\nconst es2025_promise_1 = require(\"./es2025.promise\");\nconst es2025_regexp_1 = require(\"./es2025.regexp\");\nexports.es2025 = {\n    libs: [\n        es2024_1.es2024,\n        es2025_collection_1.es2025_collection,\n        es2025_float16_1.es2025_float16,\n        es2025_intl_1.es2025_intl,\n        es2025_iterator_1.es2025_iterator,\n        es2025_promise_1.es2025_promise,\n        es2025_regexp_1.es2025_regexp,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.es2025_full = void 0;\nconst dom_1 = require(\"./dom\");\nconst dom_asynciterable_1 = require(\"./dom.asynciterable\");\nconst dom_iterable_1 = require(\"./dom.iterable\");\nconst es2025_1 = require(\"./es2025\");\nconst scripthost_1 = require(\"./scripthost\");\nconst webworker_importscripts_1 = require(\"./webworker.importscripts\");\nexports.es2025_full = {\n    libs: [\n        es2025_1.es2025,\n        dom_1.dom,\n        webworker_importscripts_1.webworker_importscripts,\n        scripthost_1.scripthost,\n        dom_iterable_1.dom_iterable,\n        dom_asynciterable_1.dom_asynciterable,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_array = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.esnext_array = {\n    libs: [],\n    variables: [['ArrayConstructor', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_collection = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2025_collection_1 = require(\"./es2025.collection\");\nexports.esnext_collection = {\n    libs: [es2025_collection_1.es2025_collection],\n    variables: [\n        ['Map', base_config_1.TYPE],\n        ['WeakMap', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_temporal = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_symbol_wellknown_1 = require(\"./es2015.symbol.wellknown\");\nconst es2020_intl_1 = require(\"./es2020.intl\");\nconst es2025_intl_1 = require(\"./es2025.intl\");\nexports.esnext_temporal = {\n    libs: [es2015_symbol_wellknown_1.es2015_symbol_wellknown, es2020_intl_1.es2020_intl, es2025_intl_1.es2025_intl],\n    variables: [['Temporal', base_config_1.TYPE_VALUE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_date = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst esnext_temporal_1 = require(\"./esnext.temporal\");\nexports.esnext_date = {\n    libs: [esnext_temporal_1.esnext_temporal],\n    variables: [['Date', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_decorators = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst decorators_1 = require(\"./decorators\");\nconst es2015_symbol_1 = require(\"./es2015.symbol\");\nexports.esnext_decorators = {\n    libs: [es2015_symbol_1.es2015_symbol, decorators_1.decorators],\n    variables: [\n        ['SymbolConstructor', base_config_1.TYPE],\n        ['Function', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_disposable = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_iterable_1 = require(\"./es2015.iterable\");\nconst es2015_symbol_1 = require(\"./es2015.symbol\");\nconst es2018_asynciterable_1 = require(\"./es2018.asynciterable\");\nexports.esnext_disposable = {\n    libs: [es2015_symbol_1.es2015_symbol, es2015_iterable_1.es2015_iterable, es2018_asynciterable_1.es2018_asynciterable],\n    variables: [\n        ['SymbolConstructor', base_config_1.TYPE],\n        ['Disposable', base_config_1.TYPE],\n        ['AsyncDisposable', base_config_1.TYPE],\n        ['SuppressedError', base_config_1.TYPE_VALUE],\n        ['SuppressedErrorConstructor', base_config_1.TYPE],\n        ['DisposableStack', base_config_1.TYPE_VALUE],\n        ['DisposableStackConstructor', base_config_1.TYPE],\n        ['AsyncDisposableStack', base_config_1.TYPE_VALUE],\n        ['AsyncDisposableStackConstructor', base_config_1.TYPE],\n        ['IteratorObject', base_config_1.TYPE],\n        ['AsyncIteratorObject', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_error = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.esnext_error = {\n    libs: [],\n    variables: [['ErrorConstructor', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_intl = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst esnext_temporal_1 = require(\"./esnext.temporal\");\nexports.esnext_intl = {\n    libs: [esnext_temporal_1.esnext_temporal],\n    variables: [['Intl', base_config_1.TYPE_VALUE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_sharedmemory = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.esnext_sharedmemory = {\n    libs: [],\n    variables: [['Atomics', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_typedarrays = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.esnext_typedarrays = {\n    libs: [],\n    variables: [\n        ['Uint8Array', base_config_1.TYPE],\n        ['Uint8ArrayConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext = void 0;\nconst es2025_1 = require(\"./es2025\");\nconst esnext_array_1 = require(\"./esnext.array\");\nconst esnext_collection_1 = require(\"./esnext.collection\");\nconst esnext_date_1 = require(\"./esnext.date\");\nconst esnext_decorators_1 = require(\"./esnext.decorators\");\nconst esnext_disposable_1 = require(\"./esnext.disposable\");\nconst esnext_error_1 = require(\"./esnext.error\");\nconst esnext_intl_1 = require(\"./esnext.intl\");\nconst esnext_sharedmemory_1 = require(\"./esnext.sharedmemory\");\nconst esnext_temporal_1 = require(\"./esnext.temporal\");\nconst esnext_typedarrays_1 = require(\"./esnext.typedarrays\");\nexports.esnext = {\n    libs: [\n        es2025_1.es2025,\n        esnext_intl_1.esnext_intl,\n        esnext_collection_1.esnext_collection,\n        esnext_decorators_1.esnext_decorators,\n        esnext_disposable_1.esnext_disposable,\n        esnext_array_1.esnext_array,\n        esnext_error_1.esnext_error,\n        esnext_sharedmemory_1.esnext_sharedmemory,\n        esnext_typedarrays_1.esnext_typedarrays,\n        esnext_temporal_1.esnext_temporal,\n        esnext_date_1.esnext_date,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_asynciterable = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_iterable_1 = require(\"./es2015.iterable\");\nconst es2015_symbol_1 = require(\"./es2015.symbol\");\nexports.esnext_asynciterable = {\n    libs: [es2015_symbol_1.es2015_symbol, es2015_iterable_1.es2015_iterable],\n    variables: [\n        ['SymbolConstructor', base_config_1.TYPE],\n        ['AsyncIterator', base_config_1.TYPE],\n        ['AsyncIterable', base_config_1.TYPE],\n        ['AsyncIterableIterator', base_config_1.TYPE],\n        ['AsyncIteratorObject', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_bigint = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2020_intl_1 = require(\"./es2020.intl\");\nexports.esnext_bigint = {\n    libs: [es2020_intl_1.es2020_intl],\n    variables: [\n        ['BigIntToLocaleStringOptions', base_config_1.TYPE],\n        ['BigInt', base_config_1.TYPE_VALUE],\n        ['BigIntConstructor', base_config_1.TYPE],\n        ['BigInt64Array', base_config_1.TYPE_VALUE],\n        ['BigInt64ArrayConstructor', base_config_1.TYPE],\n        ['BigUint64Array', base_config_1.TYPE_VALUE],\n        ['BigUint64ArrayConstructor', base_config_1.TYPE],\n        ['DataView', base_config_1.TYPE],\n        ['Intl', base_config_1.TYPE_VALUE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_float16 = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_iterable_1 = require(\"./es2015.iterable\");\nconst es2015_symbol_1 = require(\"./es2015.symbol\");\nexports.esnext_float16 = {\n    libs: [es2015_symbol_1.es2015_symbol, es2015_iterable_1.es2015_iterable],\n    variables: [\n        ['Float16Array', base_config_1.TYPE_VALUE],\n        ['Float16ArrayConstructor', base_config_1.TYPE],\n        ['Math', base_config_1.TYPE],\n        ['DataView', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_full = void 0;\nconst dom_1 = require(\"./dom\");\nconst dom_asynciterable_1 = require(\"./dom.asynciterable\");\nconst dom_iterable_1 = require(\"./dom.iterable\");\nconst esnext_1 = require(\"./esnext\");\nconst scripthost_1 = require(\"./scripthost\");\nconst webworker_importscripts_1 = require(\"./webworker.importscripts\");\nexports.esnext_full = {\n    libs: [\n        esnext_1.esnext,\n        dom_1.dom,\n        webworker_importscripts_1.webworker_importscripts,\n        scripthost_1.scripthost,\n        dom_iterable_1.dom_iterable,\n        dom_asynciterable_1.dom_asynciterable,\n    ],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_iterator = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_iterable_1 = require(\"./es2015.iterable\");\nexports.esnext_iterator = {\n    libs: [es2015_iterable_1.es2015_iterable],\n    variables: [\n        ['Iterator', base_config_1.TYPE_VALUE],\n        ['IteratorObjectConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_object = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.esnext_object = {\n    libs: [],\n    variables: [['ObjectConstructor', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_promise = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.esnext_promise = {\n    libs: [],\n    variables: [['PromiseConstructor', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_regexp = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.esnext_regexp = {\n    libs: [],\n    variables: [['RegExp', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_string = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.esnext_string = {\n    libs: [],\n    variables: [['String', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_symbol = void 0;\nconst base_config_1 = require(\"./base-config\");\nexports.esnext_symbol = {\n    libs: [],\n    variables: [['Symbol', base_config_1.TYPE]],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.esnext_weakref = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_symbol_wellknown_1 = require(\"./es2015.symbol.wellknown\");\nexports.esnext_weakref = {\n    libs: [es2015_symbol_wellknown_1.es2015_symbol_wellknown],\n    variables: [\n        ['WeakRef', base_config_1.TYPE_VALUE],\n        ['WeakRefConstructor', base_config_1.TYPE],\n        ['FinalizationRegistry', base_config_1.TYPE_VALUE],\n        ['FinalizationRegistryConstructor', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lib = void 0;\nconst dom_1 = require(\"./dom\");\nconst es5_1 = require(\"./es5\");\nconst scripthost_1 = require(\"./scripthost\");\nconst webworker_importscripts_1 = require(\"./webworker.importscripts\");\nexports.lib = {\n    libs: [es5_1.es5, dom_1.dom, webworker_importscripts_1.webworker_importscripts, scripthost_1.scripthost],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.webworker = void 0;\nconst base_config_1 = require(\"./base-config\");\nconst es2015_1 = require(\"./es2015\");\nconst es2018_asynciterable_1 = require(\"./es2018.asynciterable\");\nexports.webworker = {\n    libs: [es2015_1.es2015, es2018_asynciterable_1.es2018_asynciterable],\n    variables: [\n        ['AacEncoderConfig', base_config_1.TYPE],\n        ['AddEventListenerOptions', base_config_1.TYPE],\n        ['AesCbcParams', base_config_1.TYPE],\n        ['AesCtrParams', base_config_1.TYPE],\n        ['AesDerivedKeyParams', base_config_1.TYPE],\n        ['AesGcmParams', base_config_1.TYPE],\n        ['AesKeyAlgorithm', base_config_1.TYPE],\n        ['AesKeyGenParams', base_config_1.TYPE],\n        ['Algorithm', base_config_1.TYPE],\n        ['AudioConfiguration', base_config_1.TYPE],\n        ['AudioDataCopyToOptions', base_config_1.TYPE],\n        ['AudioDataInit', base_config_1.TYPE],\n        ['AudioDecoderConfig', base_config_1.TYPE],\n        ['AudioDecoderInit', base_config_1.TYPE],\n        ['AudioDecoderSupport', base_config_1.TYPE],\n        ['AudioEncoderConfig', base_config_1.TYPE],\n        ['AudioEncoderInit', base_config_1.TYPE],\n        ['AudioEncoderSupport', base_config_1.TYPE],\n        ['AvcEncoderConfig', base_config_1.TYPE],\n        ['BlobPropertyBag', base_config_1.TYPE],\n        ['CSSMatrixComponentOptions', base_config_1.TYPE],\n        ['CSSNumericType', base_config_1.TYPE],\n        ['CacheQueryOptions', base_config_1.TYPE],\n        ['ClientQueryOptions', base_config_1.TYPE],\n        ['CloseEventInit', base_config_1.TYPE],\n        ['CookieInit', base_config_1.TYPE],\n        ['CookieListItem', base_config_1.TYPE],\n        ['CookieStoreDeleteOptions', base_config_1.TYPE],\n        ['CookieStoreGetOptions', base_config_1.TYPE],\n        ['CryptoKeyPair', base_config_1.TYPE],\n        ['CustomEventInit', base_config_1.TYPE],\n        ['DOMMatrix2DInit', base_config_1.TYPE],\n        ['DOMMatrixInit', base_config_1.TYPE],\n        ['DOMPointInit', base_config_1.TYPE],\n        ['DOMQuadInit', base_config_1.TYPE],\n        ['DOMRectInit', base_config_1.TYPE],\n        ['EcKeyGenParams', base_config_1.TYPE],\n        ['EcKeyImportParams', base_config_1.TYPE],\n        ['EcdhKeyDeriveParams', base_config_1.TYPE],\n        ['EcdsaParams', base_config_1.TYPE],\n        ['EncodedAudioChunkInit', base_config_1.TYPE],\n        ['EncodedAudioChunkMetadata', base_config_1.TYPE],\n        ['EncodedVideoChunkInit', base_config_1.TYPE],\n        ['EncodedVideoChunkMetadata', base_config_1.TYPE],\n        ['ErrorEventInit', base_config_1.TYPE],\n        ['EventInit', base_config_1.TYPE],\n        ['EventListenerOptions', base_config_1.TYPE],\n        ['EventSourceInit', base_config_1.TYPE],\n        ['ExtendableCookieChangeEventInit', base_config_1.TYPE],\n        ['ExtendableEventInit', base_config_1.TYPE],\n        ['ExtendableMessageEventInit', base_config_1.TYPE],\n        ['FetchEventInit', base_config_1.TYPE],\n        ['FilePropertyBag', base_config_1.TYPE],\n        ['FileSystemCreateWritableOptions', base_config_1.TYPE],\n        ['FileSystemGetDirectoryOptions', base_config_1.TYPE],\n        ['FileSystemGetFileOptions', base_config_1.TYPE],\n        ['FileSystemReadWriteOptions', base_config_1.TYPE],\n        ['FileSystemRemoveOptions', base_config_1.TYPE],\n        ['FontFaceDescriptors', base_config_1.TYPE],\n        ['FontFaceSetLoadEventInit', base_config_1.TYPE],\n        ['GPUBindGroupDescriptor', base_config_1.TYPE],\n        ['GPUBindGroupEntry', base_config_1.TYPE],\n        ['GPUBindGroupLayoutDescriptor', base_config_1.TYPE],\n        ['GPUBindGroupLayoutEntry', base_config_1.TYPE],\n        ['GPUBlendComponent', base_config_1.TYPE],\n        ['GPUBlendState', base_config_1.TYPE],\n        ['GPUBufferBinding', base_config_1.TYPE],\n        ['GPUBufferBindingLayout', base_config_1.TYPE],\n        ['GPUBufferDescriptor', base_config_1.TYPE],\n        ['GPUCanvasConfiguration', base_config_1.TYPE],\n        ['GPUCanvasToneMapping', base_config_1.TYPE],\n        ['GPUColorDict', base_config_1.TYPE],\n        ['GPUColorTargetState', base_config_1.TYPE],\n        ['GPUCommandBufferDescriptor', base_config_1.TYPE],\n        ['GPUCommandEncoderDescriptor', base_config_1.TYPE],\n        ['GPUComputePassDescriptor', base_config_1.TYPE],\n        ['GPUComputePassTimestampWrites', base_config_1.TYPE],\n        ['GPUComputePipelineDescriptor', base_config_1.TYPE],\n        ['GPUCopyExternalImageDestInfo', base_config_1.TYPE],\n        ['GPUCopyExternalImageSourceInfo', base_config_1.TYPE],\n        ['GPUDepthStencilState', base_config_1.TYPE],\n        ['GPUDeviceDescriptor', base_config_1.TYPE],\n        ['GPUExtent3DDict', base_config_1.TYPE],\n        ['GPUExternalTextureBindingLayout', base_config_1.TYPE],\n        ['GPUExternalTextureDescriptor', base_config_1.TYPE],\n        ['GPUFragmentState', base_config_1.TYPE],\n        ['GPUMultisampleState', base_config_1.TYPE],\n        ['GPUObjectDescriptorBase', base_config_1.TYPE],\n        ['GPUOrigin2DDict', base_config_1.TYPE],\n        ['GPUOrigin3DDict', base_config_1.TYPE],\n        ['GPUPipelineDescriptorBase', base_config_1.TYPE],\n        ['GPUPipelineErrorInit', base_config_1.TYPE],\n        ['GPUPipelineLayoutDescriptor', base_config_1.TYPE],\n        ['GPUPrimitiveState', base_config_1.TYPE],\n        ['GPUProgrammableStage', base_config_1.TYPE],\n        ['GPUQuerySetDescriptor', base_config_1.TYPE],\n        ['GPUQueueDescriptor', base_config_1.TYPE],\n        ['GPURenderBundleDescriptor', base_config_1.TYPE],\n        ['GPURenderBundleEncoderDescriptor', base_config_1.TYPE],\n        ['GPURenderPassColorAttachment', base_config_1.TYPE],\n        ['GPURenderPassDepthStencilAttachment', base_config_1.TYPE],\n        ['GPURenderPassDescriptor', base_config_1.TYPE],\n        ['GPURenderPassLayout', base_config_1.TYPE],\n        ['GPURenderPassTimestampWrites', base_config_1.TYPE],\n        ['GPURenderPipelineDescriptor', base_config_1.TYPE],\n        ['GPURequestAdapterOptions', base_config_1.TYPE],\n        ['GPUSamplerBindingLayout', base_config_1.TYPE],\n        ['GPUSamplerDescriptor', base_config_1.TYPE],\n        ['GPUShaderModuleDescriptor', base_config_1.TYPE],\n        ['GPUStencilFaceState', base_config_1.TYPE],\n        ['GPUStorageTextureBindingLayout', base_config_1.TYPE],\n        ['GPUTexelCopyBufferInfo', base_config_1.TYPE],\n        ['GPUTexelCopyBufferLayout', base_config_1.TYPE],\n        ['GPUTexelCopyTextureInfo', base_config_1.TYPE],\n        ['GPUTextureBindingLayout', base_config_1.TYPE],\n        ['GPUTextureDescriptor', base_config_1.TYPE],\n        ['GPUTextureViewDescriptor', base_config_1.TYPE],\n        ['GPUUncapturedErrorEventInit', base_config_1.TYPE],\n        ['GPUVertexAttribute', base_config_1.TYPE],\n        ['GPUVertexBufferLayout', base_config_1.TYPE],\n        ['GPUVertexState', base_config_1.TYPE],\n        ['GetNotificationOptions', base_config_1.TYPE],\n        ['HkdfParams', base_config_1.TYPE],\n        ['HmacImportParams', base_config_1.TYPE],\n        ['HmacKeyGenParams', base_config_1.TYPE],\n        ['IDBDatabaseInfo', base_config_1.TYPE],\n        ['IDBIndexParameters', base_config_1.TYPE],\n        ['IDBObjectStoreParameters', base_config_1.TYPE],\n        ['IDBTransactionOptions', base_config_1.TYPE],\n        ['IDBVersionChangeEventInit', base_config_1.TYPE],\n        ['ImageBitmapOptions', base_config_1.TYPE],\n        ['ImageBitmapRenderingContextSettings', base_config_1.TYPE],\n        ['ImageDataSettings', base_config_1.TYPE],\n        ['ImageDecodeOptions', base_config_1.TYPE],\n        ['ImageDecodeResult', base_config_1.TYPE],\n        ['ImageDecoderInit', base_config_1.TYPE],\n        ['ImageEncodeOptions', base_config_1.TYPE],\n        ['JsonWebKey', base_config_1.TYPE],\n        ['KeyAlgorithm', base_config_1.TYPE],\n        ['KeySystemTrackConfiguration', base_config_1.TYPE],\n        ['LockInfo', base_config_1.TYPE],\n        ['LockManagerSnapshot', base_config_1.TYPE],\n        ['LockOptions', base_config_1.TYPE],\n        ['MediaCapabilitiesDecodingInfo', base_config_1.TYPE],\n        ['MediaCapabilitiesEncodingInfo', base_config_1.TYPE],\n        ['MediaCapabilitiesInfo', base_config_1.TYPE],\n        ['MediaCapabilitiesKeySystemConfiguration', base_config_1.TYPE],\n        ['MediaConfiguration', base_config_1.TYPE],\n        ['MediaDecodingConfiguration', base_config_1.TYPE],\n        ['MediaEncodingConfiguration', base_config_1.TYPE],\n        ['MediaStreamTrackProcessorInit', base_config_1.TYPE],\n        ['MessageEventInit', base_config_1.TYPE],\n        ['MultiCacheQueryOptions', base_config_1.TYPE],\n        ['NavigationPreloadState', base_config_1.TYPE],\n        ['NotificationEventInit', base_config_1.TYPE],\n        ['NotificationOptions', base_config_1.TYPE],\n        ['OpusEncoderConfig', base_config_1.TYPE],\n        ['Pbkdf2Params', base_config_1.TYPE],\n        ['PerformanceMarkOptions', base_config_1.TYPE],\n        ['PerformanceMeasureOptions', base_config_1.TYPE],\n        ['PerformanceObserverInit', base_config_1.TYPE],\n        ['PermissionDescriptor', base_config_1.TYPE],\n        ['PlaneLayout', base_config_1.TYPE],\n        ['ProgressEventInit', base_config_1.TYPE],\n        ['PromiseRejectionEventInit', base_config_1.TYPE],\n        ['PushEventInit', base_config_1.TYPE],\n        ['PushSubscriptionChangeEventInit', base_config_1.TYPE],\n        ['PushSubscriptionJSON', base_config_1.TYPE],\n        ['PushSubscriptionOptionsInit', base_config_1.TYPE],\n        ['QueuingStrategy', base_config_1.TYPE],\n        ['QueuingStrategyInit', base_config_1.TYPE],\n        ['RTCEncodedAudioFrameMetadata', base_config_1.TYPE],\n        ['RTCEncodedFrameMetadata', base_config_1.TYPE],\n        ['RTCEncodedVideoFrameMetadata', base_config_1.TYPE],\n        ['ReadableStreamBYOBReaderReadOptions', base_config_1.TYPE],\n        ['ReadableStreamGetReaderOptions', base_config_1.TYPE],\n        ['ReadableStreamIteratorOptions', base_config_1.TYPE],\n        ['ReadableStreamReadDoneResult', base_config_1.TYPE],\n        ['ReadableStreamReadValueResult', base_config_1.TYPE],\n        ['ReadableWritablePair', base_config_1.TYPE],\n        ['RegistrationOptions', base_config_1.TYPE],\n        ['Report', base_config_1.TYPE],\n        ['ReportBody', base_config_1.TYPE],\n        ['ReportingObserverOptions', base_config_1.TYPE],\n        ['RequestInit', base_config_1.TYPE],\n        ['ResponseInit', base_config_1.TYPE],\n        ['RsaHashedImportParams', base_config_1.TYPE],\n        ['RsaHashedKeyGenParams', base_config_1.TYPE],\n        ['RsaKeyGenParams', base_config_1.TYPE],\n        ['RsaOaepParams', base_config_1.TYPE],\n        ['RsaOtherPrimesInfo', base_config_1.TYPE],\n        ['RsaPssParams', base_config_1.TYPE],\n        ['SchedulerPostTaskOptions', base_config_1.TYPE],\n        ['SecurityPolicyViolationEventInit', base_config_1.TYPE],\n        ['StorageEstimate', base_config_1.TYPE],\n        ['StreamPipeOptions', base_config_1.TYPE],\n        ['StructuredSerializeOptions', base_config_1.TYPE],\n        ['SvcOutputMetadata', base_config_1.TYPE],\n        ['TaskControllerInit', base_config_1.TYPE],\n        ['TaskPriorityChangeEventInit', base_config_1.TYPE],\n        ['TaskSignalAnyInit', base_config_1.TYPE],\n        ['TextDecodeOptions', base_config_1.TYPE],\n        ['TextDecoderOptions', base_config_1.TYPE],\n        ['TextEncoderEncodeIntoResult', base_config_1.TYPE],\n        ['Transformer', base_config_1.TYPE],\n        ['URLPatternComponentResult', base_config_1.TYPE],\n        ['URLPatternInit', base_config_1.TYPE],\n        ['URLPatternOptions', base_config_1.TYPE],\n        ['URLPatternResult', base_config_1.TYPE],\n        ['UnderlyingByteSource', base_config_1.TYPE],\n        ['UnderlyingDefaultSource', base_config_1.TYPE],\n        ['UnderlyingSink', base_config_1.TYPE],\n        ['UnderlyingSource', base_config_1.TYPE],\n        ['VideoColorSpaceInit', base_config_1.TYPE],\n        ['VideoConfiguration', base_config_1.TYPE],\n        ['VideoDecoderConfig', base_config_1.TYPE],\n        ['VideoDecoderInit', base_config_1.TYPE],\n        ['VideoDecoderSupport', base_config_1.TYPE],\n        ['VideoEncoderConfig', base_config_1.TYPE],\n        ['VideoEncoderEncodeOptions', base_config_1.TYPE],\n        ['VideoEncoderEncodeOptionsForAvc', base_config_1.TYPE],\n        ['VideoEncoderInit', base_config_1.TYPE],\n        ['VideoEncoderSupport', base_config_1.TYPE],\n        ['VideoFrameBufferInit', base_config_1.TYPE],\n        ['VideoFrameCopyToOptions', base_config_1.TYPE],\n        ['VideoFrameInit', base_config_1.TYPE],\n        ['WebGLContextAttributes', base_config_1.TYPE],\n        ['WebGLContextEventInit', base_config_1.TYPE],\n        ['WebTransportCloseInfo', base_config_1.TYPE],\n        ['WebTransportErrorOptions', base_config_1.TYPE],\n        ['WebTransportHash', base_config_1.TYPE],\n        ['WebTransportOptions', base_config_1.TYPE],\n        ['WebTransportSendOptions', base_config_1.TYPE],\n        ['WebTransportSendStreamOptions', base_config_1.TYPE],\n        ['WorkerOptions', base_config_1.TYPE],\n        ['WriteParams', base_config_1.TYPE],\n        ['ANGLE_instanced_arrays', base_config_1.TYPE],\n        ['AbortController', base_config_1.TYPE_VALUE],\n        ['AbortSignalEventMap', base_config_1.TYPE],\n        ['AbortSignal', base_config_1.TYPE_VALUE],\n        ['AbstractWorkerEventMap', base_config_1.TYPE],\n        ['AbstractWorker', base_config_1.TYPE],\n        ['AnimationFrameProvider', base_config_1.TYPE],\n        ['AudioData', base_config_1.TYPE_VALUE],\n        ['AudioDecoderEventMap', base_config_1.TYPE],\n        ['AudioDecoder', base_config_1.TYPE_VALUE],\n        ['AudioEncoderEventMap', base_config_1.TYPE],\n        ['AudioEncoder', base_config_1.TYPE_VALUE],\n        ['Blob', base_config_1.TYPE_VALUE],\n        ['Body', base_config_1.TYPE],\n        ['BroadcastChannelEventMap', base_config_1.TYPE],\n        ['BroadcastChannel', base_config_1.TYPE_VALUE],\n        ['ByteLengthQueuingStrategy', base_config_1.TYPE_VALUE],\n        ['CSSImageValue', base_config_1.TYPE_VALUE],\n        ['CSSKeywordValue', base_config_1.TYPE_VALUE],\n        ['CSSMathClamp', base_config_1.TYPE_VALUE],\n        ['CSSMathInvert', base_config_1.TYPE_VALUE],\n        ['CSSMathMax', base_config_1.TYPE_VALUE],\n        ['CSSMathMin', base_config_1.TYPE_VALUE],\n        ['CSSMathNegate', base_config_1.TYPE_VALUE],\n        ['CSSMathProduct', base_config_1.TYPE_VALUE],\n        ['CSSMathSum', base_config_1.TYPE_VALUE],\n        ['CSSMathValue', base_config_1.TYPE_VALUE],\n        ['CSSMatrixComponent', base_config_1.TYPE_VALUE],\n        ['CSSNumericArray', base_config_1.TYPE_VALUE],\n        ['CSSNumericValue', base_config_1.TYPE_VALUE],\n        ['CSSPerspective', base_config_1.TYPE_VALUE],\n        ['CSSRotate', base_config_1.TYPE_VALUE],\n        ['CSSScale', base_config_1.TYPE_VALUE],\n        ['CSSSkew', base_config_1.TYPE_VALUE],\n        ['CSSSkewX', base_config_1.TYPE_VALUE],\n        ['CSSSkewY', base_config_1.TYPE_VALUE],\n        ['CSSStyleValue', base_config_1.TYPE_VALUE],\n        ['CSSTransformComponent', base_config_1.TYPE_VALUE],\n        ['CSSTransformValue', base_config_1.TYPE_VALUE],\n        ['CSSTranslate', base_config_1.TYPE_VALUE],\n        ['CSSUnitValue', base_config_1.TYPE_VALUE],\n        ['CSSUnparsedValue', base_config_1.TYPE_VALUE],\n        ['CSSVariableReferenceValue', base_config_1.TYPE_VALUE],\n        ['Cache', base_config_1.TYPE_VALUE],\n        ['CacheStorage', base_config_1.TYPE_VALUE],\n        ['CanvasCompositing', base_config_1.TYPE],\n        ['CanvasDrawImage', base_config_1.TYPE],\n        ['CanvasDrawPath', base_config_1.TYPE],\n        ['CanvasFillStrokeStyles', base_config_1.TYPE],\n        ['CanvasFilters', base_config_1.TYPE],\n        ['CanvasGradient', base_config_1.TYPE_VALUE],\n        ['CanvasImageData', base_config_1.TYPE],\n        ['CanvasImageSmoothing', base_config_1.TYPE],\n        ['CanvasPath', base_config_1.TYPE],\n        ['CanvasPathDrawingStyles', base_config_1.TYPE],\n        ['CanvasPattern', base_config_1.TYPE_VALUE],\n        ['CanvasRect', base_config_1.TYPE],\n        ['CanvasShadowStyles', base_config_1.TYPE],\n        ['CanvasState', base_config_1.TYPE],\n        ['CanvasText', base_config_1.TYPE],\n        ['CanvasTextDrawingStyles', base_config_1.TYPE],\n        ['CanvasTransform', base_config_1.TYPE],\n        ['Client', base_config_1.TYPE_VALUE],\n        ['Clients', base_config_1.TYPE_VALUE],\n        ['CloseEvent', base_config_1.TYPE_VALUE],\n        ['CompressionStream', base_config_1.TYPE_VALUE],\n        ['CookieStore', base_config_1.TYPE_VALUE],\n        ['CookieStoreManager', base_config_1.TYPE_VALUE],\n        ['CountQueuingStrategy', base_config_1.TYPE_VALUE],\n        ['Crypto', base_config_1.TYPE_VALUE],\n        ['CryptoKey', base_config_1.TYPE_VALUE],\n        ['CustomEvent', base_config_1.TYPE_VALUE],\n        ['DOMException', base_config_1.TYPE_VALUE],\n        ['DOMMatrix', base_config_1.TYPE_VALUE],\n        ['DOMMatrixReadOnly', base_config_1.TYPE_VALUE],\n        ['DOMPoint', base_config_1.TYPE_VALUE],\n        ['DOMPointReadOnly', base_config_1.TYPE_VALUE],\n        ['DOMQuad', base_config_1.TYPE_VALUE],\n        ['DOMRect', base_config_1.TYPE_VALUE],\n        ['DOMRectReadOnly', base_config_1.TYPE_VALUE],\n        ['DOMStringList', base_config_1.TYPE_VALUE],\n        ['DecompressionStream', base_config_1.TYPE_VALUE],\n        ['DedicatedWorkerGlobalScopeEventMap', base_config_1.TYPE],\n        ['DedicatedWorkerGlobalScope', base_config_1.TYPE_VALUE],\n        ['EXT_blend_minmax', base_config_1.TYPE],\n        ['EXT_color_buffer_float', base_config_1.TYPE],\n        ['EXT_color_buffer_half_float', base_config_1.TYPE],\n        ['EXT_float_blend', base_config_1.TYPE],\n        ['EXT_frag_depth', base_config_1.TYPE],\n        ['EXT_sRGB', base_config_1.TYPE],\n        ['EXT_shader_texture_lod', base_config_1.TYPE],\n        ['EXT_texture_compression_bptc', base_config_1.TYPE],\n        ['EXT_texture_compression_rgtc', base_config_1.TYPE],\n        ['EXT_texture_filter_anisotropic', base_config_1.TYPE],\n        ['EXT_texture_norm16', base_config_1.TYPE],\n        ['EncodedAudioChunk', base_config_1.TYPE_VALUE],\n        ['EncodedVideoChunk', base_config_1.TYPE_VALUE],\n        ['ErrorEvent', base_config_1.TYPE_VALUE],\n        ['Event', base_config_1.TYPE_VALUE],\n        ['EventListener', base_config_1.TYPE],\n        ['EventListenerObject', base_config_1.TYPE],\n        ['EventSourceEventMap', base_config_1.TYPE],\n        ['EventSource', base_config_1.TYPE_VALUE],\n        ['EventTarget', base_config_1.TYPE_VALUE],\n        ['ExtendableCookieChangeEvent', base_config_1.TYPE_VALUE],\n        ['ExtendableEvent', base_config_1.TYPE_VALUE],\n        ['ExtendableMessageEvent', base_config_1.TYPE_VALUE],\n        ['FetchEvent', base_config_1.TYPE_VALUE],\n        ['File', base_config_1.TYPE_VALUE],\n        ['FileList', base_config_1.TYPE_VALUE],\n        ['FileReaderEventMap', base_config_1.TYPE],\n        ['FileReader', base_config_1.TYPE_VALUE],\n        ['FileReaderSync', base_config_1.TYPE_VALUE],\n        ['FileSystemDirectoryHandle', base_config_1.TYPE_VALUE],\n        ['FileSystemFileHandle', base_config_1.TYPE_VALUE],\n        ['FileSystemHandle', base_config_1.TYPE_VALUE],\n        ['FileSystemSyncAccessHandle', base_config_1.TYPE_VALUE],\n        ['FileSystemWritableFileStream', base_config_1.TYPE_VALUE],\n        ['FontFace', base_config_1.TYPE_VALUE],\n        ['FontFaceSetEventMap', base_config_1.TYPE],\n        ['FontFaceSet', base_config_1.TYPE_VALUE],\n        ['FontFaceSetLoadEvent', base_config_1.TYPE_VALUE],\n        ['FontFaceSource', base_config_1.TYPE],\n        ['FormData', base_config_1.TYPE_VALUE],\n        ['GPU', base_config_1.TYPE_VALUE],\n        ['GPUAdapter', base_config_1.TYPE_VALUE],\n        ['GPUAdapterInfo', base_config_1.TYPE_VALUE],\n        ['GPUBindGroup', base_config_1.TYPE_VALUE],\n        ['GPUBindGroupLayout', base_config_1.TYPE_VALUE],\n        ['GPUBindingCommandsMixin', base_config_1.TYPE],\n        ['GPUBuffer', base_config_1.TYPE_VALUE],\n        ['GPUCanvasContext', base_config_1.TYPE_VALUE],\n        ['GPUCommandBuffer', base_config_1.TYPE_VALUE],\n        ['GPUCommandEncoder', base_config_1.TYPE_VALUE],\n        ['GPUCompilationInfo', base_config_1.TYPE_VALUE],\n        ['GPUCompilationMessage', base_config_1.TYPE_VALUE],\n        ['GPUComputePassEncoder', base_config_1.TYPE_VALUE],\n        ['GPUComputePipeline', base_config_1.TYPE_VALUE],\n        ['GPUDebugCommandsMixin', base_config_1.TYPE],\n        ['GPUDeviceEventMap', base_config_1.TYPE],\n        ['GPUDevice', base_config_1.TYPE_VALUE],\n        ['GPUDeviceLostInfo', base_config_1.TYPE_VALUE],\n        ['GPUError', base_config_1.TYPE_VALUE],\n        ['GPUExternalTexture', base_config_1.TYPE_VALUE],\n        ['GPUInternalError', base_config_1.TYPE_VALUE],\n        ['GPUObjectBase', base_config_1.TYPE],\n        ['GPUOutOfMemoryError', base_config_1.TYPE_VALUE],\n        ['GPUPipelineBase', base_config_1.TYPE],\n        ['GPUPipelineError', base_config_1.TYPE_VALUE],\n        ['GPUPipelineLayout', base_config_1.TYPE_VALUE],\n        ['GPUQuerySet', base_config_1.TYPE_VALUE],\n        ['GPUQueue', base_config_1.TYPE_VALUE],\n        ['GPURenderBundle', base_config_1.TYPE_VALUE],\n        ['GPURenderBundleEncoder', base_config_1.TYPE_VALUE],\n        ['GPURenderCommandsMixin', base_config_1.TYPE],\n        ['GPURenderPassEncoder', base_config_1.TYPE_VALUE],\n        ['GPURenderPipeline', base_config_1.TYPE_VALUE],\n        ['GPUSampler', base_config_1.TYPE_VALUE],\n        ['GPUShaderModule', base_config_1.TYPE_VALUE],\n        ['GPUSupportedFeatures', base_config_1.TYPE_VALUE],\n        ['GPUSupportedLimits', base_config_1.TYPE_VALUE],\n        ['GPUTexture', base_config_1.TYPE_VALUE],\n        ['GPUTextureView', base_config_1.TYPE_VALUE],\n        ['GPUUncapturedErrorEvent', base_config_1.TYPE_VALUE],\n        ['GPUValidationError', base_config_1.TYPE_VALUE],\n        ['GenericTransformStream', base_config_1.TYPE],\n        ['Headers', base_config_1.TYPE_VALUE],\n        ['IDBCursor', base_config_1.TYPE_VALUE],\n        ['IDBCursorWithValue', base_config_1.TYPE_VALUE],\n        ['IDBDatabaseEventMap', base_config_1.TYPE],\n        ['IDBDatabase', base_config_1.TYPE_VALUE],\n        ['IDBFactory', base_config_1.TYPE_VALUE],\n        ['IDBIndex', base_config_1.TYPE_VALUE],\n        ['IDBKeyRange', base_config_1.TYPE_VALUE],\n        ['IDBObjectStore', base_config_1.TYPE_VALUE],\n        ['IDBOpenDBRequestEventMap', base_config_1.TYPE],\n        ['IDBOpenDBRequest', base_config_1.TYPE_VALUE],\n        ['IDBRequestEventMap', base_config_1.TYPE],\n        ['IDBRequest', base_config_1.TYPE_VALUE],\n        ['IDBTransactionEventMap', base_config_1.TYPE],\n        ['IDBTransaction', base_config_1.TYPE_VALUE],\n        ['IDBVersionChangeEvent', base_config_1.TYPE_VALUE],\n        ['ImageBitmap', base_config_1.TYPE_VALUE],\n        ['ImageBitmapRenderingContext', base_config_1.TYPE_VALUE],\n        ['ImageData', base_config_1.TYPE_VALUE],\n        ['ImageDecoder', base_config_1.TYPE_VALUE],\n        ['ImageTrack', base_config_1.TYPE_VALUE],\n        ['ImageTrackList', base_config_1.TYPE_VALUE],\n        ['ImportMeta', base_config_1.TYPE],\n        ['KHR_parallel_shader_compile', base_config_1.TYPE],\n        ['Lock', base_config_1.TYPE_VALUE],\n        ['LockManager', base_config_1.TYPE_VALUE],\n        ['MediaCapabilities', base_config_1.TYPE_VALUE],\n        ['MediaSourceHandle', base_config_1.TYPE_VALUE],\n        ['MediaStreamTrackProcessor', base_config_1.TYPE_VALUE],\n        ['MessageChannel', base_config_1.TYPE_VALUE],\n        ['MessageEvent', base_config_1.TYPE_VALUE],\n        ['MessageEventTargetEventMap', base_config_1.TYPE],\n        ['MessageEventTarget', base_config_1.TYPE],\n        ['MessagePortEventMap', base_config_1.TYPE],\n        ['MessagePort', base_config_1.TYPE_VALUE],\n        ['NavigationPreloadManager', base_config_1.TYPE_VALUE],\n        ['NavigatorBadge', base_config_1.TYPE],\n        ['NavigatorConcurrentHardware', base_config_1.TYPE],\n        ['NavigatorGPU', base_config_1.TYPE],\n        ['NavigatorID', base_config_1.TYPE],\n        ['NavigatorLanguage', base_config_1.TYPE],\n        ['NavigatorLocks', base_config_1.TYPE],\n        ['NavigatorOnLine', base_config_1.TYPE],\n        ['NavigatorStorage', base_config_1.TYPE],\n        ['NotificationEventMap', base_config_1.TYPE],\n        ['Notification', base_config_1.TYPE_VALUE],\n        ['NotificationEvent', base_config_1.TYPE_VALUE],\n        ['OES_draw_buffers_indexed', base_config_1.TYPE],\n        ['OES_element_index_uint', base_config_1.TYPE],\n        ['OES_fbo_render_mipmap', base_config_1.TYPE],\n        ['OES_standard_derivatives', base_config_1.TYPE],\n        ['OES_texture_float', base_config_1.TYPE],\n        ['OES_texture_float_linear', base_config_1.TYPE],\n        ['OES_texture_half_float', base_config_1.TYPE],\n        ['OES_texture_half_float_linear', base_config_1.TYPE],\n        ['OES_vertex_array_object', base_config_1.TYPE],\n        ['OVR_multiview2', base_config_1.TYPE],\n        ['OffscreenCanvasEventMap', base_config_1.TYPE],\n        ['OffscreenCanvas', base_config_1.TYPE_VALUE],\n        ['OffscreenCanvasRenderingContext2D', base_config_1.TYPE_VALUE],\n        ['Path2D', base_config_1.TYPE_VALUE],\n        ['PerformanceEventMap', base_config_1.TYPE],\n        ['Performance', base_config_1.TYPE_VALUE],\n        ['PerformanceEntry', base_config_1.TYPE_VALUE],\n        ['PerformanceMark', base_config_1.TYPE_VALUE],\n        ['PerformanceMeasure', base_config_1.TYPE_VALUE],\n        ['PerformanceObserver', base_config_1.TYPE_VALUE],\n        ['PerformanceObserverEntryList', base_config_1.TYPE_VALUE],\n        ['PerformanceResourceTiming', base_config_1.TYPE_VALUE],\n        ['PerformanceServerTiming', base_config_1.TYPE_VALUE],\n        ['PermissionStatusEventMap', base_config_1.TYPE],\n        ['PermissionStatus', base_config_1.TYPE_VALUE],\n        ['Permissions', base_config_1.TYPE_VALUE],\n        ['ProgressEvent', base_config_1.TYPE_VALUE],\n        ['PromiseRejectionEvent', base_config_1.TYPE_VALUE],\n        ['PushEvent', base_config_1.TYPE_VALUE],\n        ['PushManager', base_config_1.TYPE_VALUE],\n        ['PushManagerAttribute', base_config_1.TYPE],\n        ['PushMessageData', base_config_1.TYPE_VALUE],\n        ['PushSubscription', base_config_1.TYPE_VALUE],\n        ['PushSubscriptionChangeEvent', base_config_1.TYPE_VALUE],\n        ['PushSubscriptionOptions', base_config_1.TYPE_VALUE],\n        ['RTCDataChannelEventMap', base_config_1.TYPE],\n        ['RTCDataChannel', base_config_1.TYPE_VALUE],\n        ['RTCEncodedAudioFrame', base_config_1.TYPE_VALUE],\n        ['RTCEncodedVideoFrame', base_config_1.TYPE_VALUE],\n        ['RTCRtpScriptTransformer', base_config_1.TYPE_VALUE],\n        ['RTCTransformEvent', base_config_1.TYPE_VALUE],\n        ['ReadableByteStreamController', base_config_1.TYPE_VALUE],\n        ['ReadableStream', base_config_1.TYPE_VALUE],\n        ['ReadableStreamBYOBReader', base_config_1.TYPE_VALUE],\n        ['ReadableStreamBYOBRequest', base_config_1.TYPE_VALUE],\n        ['ReadableStreamDefaultController', base_config_1.TYPE_VALUE],\n        ['ReadableStreamDefaultReader', base_config_1.TYPE_VALUE],\n        ['ReadableStreamGenericReader', base_config_1.TYPE],\n        ['ReportingObserver', base_config_1.TYPE_VALUE],\n        ['Request', base_config_1.TYPE_VALUE],\n        ['Response', base_config_1.TYPE_VALUE],\n        ['Scheduler', base_config_1.TYPE_VALUE],\n        ['SecurityPolicyViolationEvent', base_config_1.TYPE_VALUE],\n        ['ServiceWorkerEventMap', base_config_1.TYPE],\n        ['ServiceWorker', base_config_1.TYPE_VALUE],\n        ['ServiceWorkerContainerEventMap', base_config_1.TYPE],\n        ['ServiceWorkerContainer', base_config_1.TYPE_VALUE],\n        ['ServiceWorkerGlobalScopeEventMap', base_config_1.TYPE],\n        ['ServiceWorkerGlobalScope', base_config_1.TYPE_VALUE],\n        ['ServiceWorkerRegistrationEventMap', base_config_1.TYPE],\n        ['ServiceWorkerRegistration', base_config_1.TYPE_VALUE],\n        ['SharedWorkerGlobalScopeEventMap', base_config_1.TYPE],\n        ['SharedWorkerGlobalScope', base_config_1.TYPE_VALUE],\n        ['StorageManager', base_config_1.TYPE_VALUE],\n        ['StylePropertyMapReadOnly', base_config_1.TYPE_VALUE],\n        ['SubtleCrypto', base_config_1.TYPE_VALUE],\n        ['TaskController', base_config_1.TYPE_VALUE],\n        ['TaskPriorityChangeEvent', base_config_1.TYPE_VALUE],\n        ['TaskSignalEventMap', base_config_1.TYPE],\n        ['TaskSignal', base_config_1.TYPE_VALUE],\n        ['TextDecoder', base_config_1.TYPE_VALUE],\n        ['TextDecoderCommon', base_config_1.TYPE],\n        ['TextDecoderStream', base_config_1.TYPE_VALUE],\n        ['TextEncoder', base_config_1.TYPE_VALUE],\n        ['TextEncoderCommon', base_config_1.TYPE],\n        ['TextEncoderStream', base_config_1.TYPE_VALUE],\n        ['TextMetrics', base_config_1.TYPE_VALUE],\n        ['TransformStream', base_config_1.TYPE_VALUE],\n        ['TransformStreamDefaultController', base_config_1.TYPE_VALUE],\n        ['URL', base_config_1.TYPE_VALUE],\n        ['URLPattern', base_config_1.TYPE_VALUE],\n        ['URLSearchParams', base_config_1.TYPE_VALUE],\n        ['VideoColorSpace', base_config_1.TYPE_VALUE],\n        ['VideoDecoderEventMap', base_config_1.TYPE],\n        ['VideoDecoder', base_config_1.TYPE_VALUE],\n        ['VideoEncoderEventMap', base_config_1.TYPE],\n        ['VideoEncoder', base_config_1.TYPE_VALUE],\n        ['VideoFrame', base_config_1.TYPE_VALUE],\n        ['WEBGL_color_buffer_float', base_config_1.TYPE],\n        ['WEBGL_compressed_texture_astc', base_config_1.TYPE],\n        ['WEBGL_compressed_texture_etc', base_config_1.TYPE],\n        ['WEBGL_compressed_texture_etc1', base_config_1.TYPE],\n        ['WEBGL_compressed_texture_pvrtc', base_config_1.TYPE],\n        ['WEBGL_compressed_texture_s3tc', base_config_1.TYPE],\n        ['WEBGL_compressed_texture_s3tc_srgb', base_config_1.TYPE],\n        ['WEBGL_debug_renderer_info', base_config_1.TYPE],\n        ['WEBGL_debug_shaders', base_config_1.TYPE],\n        ['WEBGL_depth_texture', base_config_1.TYPE],\n        ['WEBGL_draw_buffers', base_config_1.TYPE],\n        ['WEBGL_lose_context', base_config_1.TYPE],\n        ['WEBGL_multi_draw', base_config_1.TYPE],\n        ['WGSLLanguageFeatures', base_config_1.TYPE_VALUE],\n        ['WebGL2RenderingContext', base_config_1.TYPE_VALUE],\n        ['WebGL2RenderingContextBase', base_config_1.TYPE],\n        ['WebGL2RenderingContextOverloads', base_config_1.TYPE],\n        ['WebGLActiveInfo', base_config_1.TYPE_VALUE],\n        ['WebGLBuffer', base_config_1.TYPE_VALUE],\n        ['WebGLContextEvent', base_config_1.TYPE_VALUE],\n        ['WebGLFramebuffer', base_config_1.TYPE_VALUE],\n        ['WebGLProgram', base_config_1.TYPE_VALUE],\n        ['WebGLQuery', base_config_1.TYPE_VALUE],\n        ['WebGLRenderbuffer', base_config_1.TYPE_VALUE],\n        ['WebGLRenderingContext', base_config_1.TYPE_VALUE],\n        ['WebGLRenderingContextBase', base_config_1.TYPE],\n        ['WebGLRenderingContextOverloads', base_config_1.TYPE],\n        ['WebGLSampler', base_config_1.TYPE_VALUE],\n        ['WebGLShader', base_config_1.TYPE_VALUE],\n        ['WebGLShaderPrecisionFormat', base_config_1.TYPE_VALUE],\n        ['WebGLSync', base_config_1.TYPE_VALUE],\n        ['WebGLTexture', base_config_1.TYPE_VALUE],\n        ['WebGLTransformFeedback', base_config_1.TYPE_VALUE],\n        ['WebGLUniformLocation', base_config_1.TYPE_VALUE],\n        ['WebGLVertexArrayObject', base_config_1.TYPE_VALUE],\n        ['WebGLVertexArrayObjectOES', base_config_1.TYPE],\n        ['WebSocketEventMap', base_config_1.TYPE],\n        ['WebSocket', base_config_1.TYPE_VALUE],\n        ['WebTransport', base_config_1.TYPE_VALUE],\n        ['WebTransportBidirectionalStream', base_config_1.TYPE_VALUE],\n        ['WebTransportDatagramDuplexStream', base_config_1.TYPE_VALUE],\n        ['WebTransportError', base_config_1.TYPE_VALUE],\n        ['WindowClient', base_config_1.TYPE_VALUE],\n        ['WindowOrWorkerGlobalScope', base_config_1.TYPE],\n        ['WorkerEventMap', base_config_1.TYPE],\n        ['Worker', base_config_1.TYPE_VALUE],\n        ['WorkerGlobalScopeEventMap', base_config_1.TYPE],\n        ['WorkerGlobalScope', base_config_1.TYPE_VALUE],\n        ['WorkerLocation', base_config_1.TYPE_VALUE],\n        ['WorkerNavigator', base_config_1.TYPE_VALUE],\n        ['WritableStream', base_config_1.TYPE_VALUE],\n        ['WritableStreamDefaultController', base_config_1.TYPE_VALUE],\n        ['WritableStreamDefaultWriter', base_config_1.TYPE_VALUE],\n        ['XMLHttpRequestEventMap', base_config_1.TYPE],\n        ['XMLHttpRequest', base_config_1.TYPE_VALUE],\n        ['XMLHttpRequestEventTargetEventMap', base_config_1.TYPE],\n        ['XMLHttpRequestEventTarget', base_config_1.TYPE_VALUE],\n        ['XMLHttpRequestUpload', base_config_1.TYPE_VALUE],\n        ['WebAssembly', base_config_1.TYPE_VALUE],\n        ['Console', base_config_1.TYPE],\n        ['AudioDataOutputCallback', base_config_1.TYPE],\n        ['EncodedAudioChunkOutputCallback', base_config_1.TYPE],\n        ['EncodedVideoChunkOutputCallback', base_config_1.TYPE],\n        ['FrameRequestCallback', base_config_1.TYPE],\n        ['LockGrantedCallback', base_config_1.TYPE],\n        ['OnErrorEventHandlerNonNull', base_config_1.TYPE],\n        ['PerformanceObserverCallback', base_config_1.TYPE],\n        ['QueuingStrategySize', base_config_1.TYPE],\n        ['ReportingObserverCallback', base_config_1.TYPE],\n        ['SchedulerPostTaskCallback', base_config_1.TYPE],\n        ['TransformerFlushCallback', base_config_1.TYPE],\n        ['TransformerStartCallback', base_config_1.TYPE],\n        ['TransformerTransformCallback', base_config_1.TYPE],\n        ['UnderlyingSinkAbortCallback', base_config_1.TYPE],\n        ['UnderlyingSinkCloseCallback', base_config_1.TYPE],\n        ['UnderlyingSinkStartCallback', base_config_1.TYPE],\n        ['UnderlyingSinkWriteCallback', base_config_1.TYPE],\n        ['UnderlyingSourceCancelCallback', base_config_1.TYPE],\n        ['UnderlyingSourcePullCallback', base_config_1.TYPE],\n        ['UnderlyingSourceStartCallback', base_config_1.TYPE],\n        ['VideoFrameOutputCallback', base_config_1.TYPE],\n        ['VoidFunction', base_config_1.TYPE],\n        ['WebCodecsErrorCallback', base_config_1.TYPE],\n        ['AlgorithmIdentifier', base_config_1.TYPE],\n        ['AllowSharedBufferSource', base_config_1.TYPE],\n        ['BigInteger', base_config_1.TYPE],\n        ['BlobPart', base_config_1.TYPE],\n        ['BodyInit', base_config_1.TYPE],\n        ['BufferSource', base_config_1.TYPE],\n        ['CSSKeywordish', base_config_1.TYPE],\n        ['CSSNumberish', base_config_1.TYPE],\n        ['CSSPerspectiveValue', base_config_1.TYPE],\n        ['CSSUnparsedSegment', base_config_1.TYPE],\n        ['CanvasImageSource', base_config_1.TYPE],\n        ['CookieList', base_config_1.TYPE],\n        ['DOMHighResTimeStamp', base_config_1.TYPE],\n        ['EpochTimeStamp', base_config_1.TYPE],\n        ['EventListenerOrEventListenerObject', base_config_1.TYPE],\n        ['FileSystemWriteChunkType', base_config_1.TYPE],\n        ['Float32List', base_config_1.TYPE],\n        ['FormDataEntryValue', base_config_1.TYPE],\n        ['GLbitfield', base_config_1.TYPE],\n        ['GLboolean', base_config_1.TYPE],\n        ['GLclampf', base_config_1.TYPE],\n        ['GLenum', base_config_1.TYPE],\n        ['GLfloat', base_config_1.TYPE],\n        ['GLint', base_config_1.TYPE],\n        ['GLint64', base_config_1.TYPE],\n        ['GLintptr', base_config_1.TYPE],\n        ['GLsizei', base_config_1.TYPE],\n        ['GLsizeiptr', base_config_1.TYPE],\n        ['GLuint', base_config_1.TYPE],\n        ['GLuint64', base_config_1.TYPE],\n        ['GPUBindingResource', base_config_1.TYPE],\n        ['GPUBufferDynamicOffset', base_config_1.TYPE],\n        ['GPUBufferUsageFlags', base_config_1.TYPE],\n        ['GPUColor', base_config_1.TYPE],\n        ['GPUColorWriteFlags', base_config_1.TYPE],\n        ['GPUCopyExternalImageSource', base_config_1.TYPE],\n        ['GPUDepthBias', base_config_1.TYPE],\n        ['GPUExtent3D', base_config_1.TYPE],\n        ['GPUFlagsConstant', base_config_1.TYPE],\n        ['GPUIndex32', base_config_1.TYPE],\n        ['GPUIntegerCoordinate', base_config_1.TYPE],\n        ['GPUIntegerCoordinateOut', base_config_1.TYPE],\n        ['GPUMapModeFlags', base_config_1.TYPE],\n        ['GPUOrigin2D', base_config_1.TYPE],\n        ['GPUOrigin3D', base_config_1.TYPE],\n        ['GPUPipelineConstantValue', base_config_1.TYPE],\n        ['GPUSampleMask', base_config_1.TYPE],\n        ['GPUShaderStageFlags', base_config_1.TYPE],\n        ['GPUSignedOffset32', base_config_1.TYPE],\n        ['GPUSize32', base_config_1.TYPE],\n        ['GPUSize32Out', base_config_1.TYPE],\n        ['GPUSize64', base_config_1.TYPE],\n        ['GPUSize64Out', base_config_1.TYPE],\n        ['GPUStencilValue', base_config_1.TYPE],\n        ['GPUTextureUsageFlags', base_config_1.TYPE],\n        ['HashAlgorithmIdentifier', base_config_1.TYPE],\n        ['HeadersInit', base_config_1.TYPE],\n        ['IDBValidKey', base_config_1.TYPE],\n        ['ImageBitmapSource', base_config_1.TYPE],\n        ['ImageBufferSource', base_config_1.TYPE],\n        ['ImageDataArray', base_config_1.TYPE],\n        ['Int32List', base_config_1.TYPE],\n        ['MessageEventSource', base_config_1.TYPE],\n        ['NamedCurve', base_config_1.TYPE],\n        ['OffscreenRenderingContext', base_config_1.TYPE],\n        ['OnErrorEventHandler', base_config_1.TYPE],\n        ['PerformanceEntryList', base_config_1.TYPE],\n        ['PushMessageDataInit', base_config_1.TYPE],\n        ['ReadableStreamController', base_config_1.TYPE],\n        ['ReadableStreamReadResult', base_config_1.TYPE],\n        ['ReadableStreamReader', base_config_1.TYPE],\n        ['ReportList', base_config_1.TYPE],\n        ['RequestInfo', base_config_1.TYPE],\n        ['TexImageSource', base_config_1.TYPE],\n        ['TimerHandler', base_config_1.TYPE],\n        ['Transferable', base_config_1.TYPE],\n        ['URLPatternInput', base_config_1.TYPE],\n        ['Uint32List', base_config_1.TYPE],\n        ['XMLHttpRequestBodyInit', base_config_1.TYPE],\n        ['AacBitstreamFormat', base_config_1.TYPE],\n        ['AlphaOption', base_config_1.TYPE],\n        ['AudioSampleFormat', base_config_1.TYPE],\n        ['AvcBitstreamFormat', base_config_1.TYPE],\n        ['BinaryType', base_config_1.TYPE],\n        ['BitrateMode', base_config_1.TYPE],\n        ['CSSMathOperator', base_config_1.TYPE],\n        ['CSSNumericBaseType', base_config_1.TYPE],\n        ['CanvasDirection', base_config_1.TYPE],\n        ['CanvasFillRule', base_config_1.TYPE],\n        ['CanvasFontKerning', base_config_1.TYPE],\n        ['CanvasFontStretch', base_config_1.TYPE],\n        ['CanvasFontVariantCaps', base_config_1.TYPE],\n        ['CanvasLineCap', base_config_1.TYPE],\n        ['CanvasLineJoin', base_config_1.TYPE],\n        ['CanvasTextAlign', base_config_1.TYPE],\n        ['CanvasTextBaseline', base_config_1.TYPE],\n        ['CanvasTextRendering', base_config_1.TYPE],\n        ['ClientTypes', base_config_1.TYPE],\n        ['CodecState', base_config_1.TYPE],\n        ['ColorGamut', base_config_1.TYPE],\n        ['ColorSpaceConversion', base_config_1.TYPE],\n        ['CompressionFormat', base_config_1.TYPE],\n        ['CookieSameSite', base_config_1.TYPE],\n        ['DocumentVisibilityState', base_config_1.TYPE],\n        ['EncodedAudioChunkType', base_config_1.TYPE],\n        ['EncodedVideoChunkType', base_config_1.TYPE],\n        ['EndingType', base_config_1.TYPE],\n        ['FileSystemHandleKind', base_config_1.TYPE],\n        ['FontDisplay', base_config_1.TYPE],\n        ['FontFaceLoadStatus', base_config_1.TYPE],\n        ['FontFaceSetLoadStatus', base_config_1.TYPE],\n        ['FrameType', base_config_1.TYPE],\n        ['GPUAddressMode', base_config_1.TYPE],\n        ['GPUAutoLayoutMode', base_config_1.TYPE],\n        ['GPUBlendFactor', base_config_1.TYPE],\n        ['GPUBlendOperation', base_config_1.TYPE],\n        ['GPUBufferBindingType', base_config_1.TYPE],\n        ['GPUBufferMapState', base_config_1.TYPE],\n        ['GPUCanvasAlphaMode', base_config_1.TYPE],\n        ['GPUCanvasToneMappingMode', base_config_1.TYPE],\n        ['GPUCompareFunction', base_config_1.TYPE],\n        ['GPUCompilationMessageType', base_config_1.TYPE],\n        ['GPUCullMode', base_config_1.TYPE],\n        ['GPUDeviceLostReason', base_config_1.TYPE],\n        ['GPUErrorFilter', base_config_1.TYPE],\n        ['GPUFeatureName', base_config_1.TYPE],\n        ['GPUFilterMode', base_config_1.TYPE],\n        ['GPUFrontFace', base_config_1.TYPE],\n        ['GPUIndexFormat', base_config_1.TYPE],\n        ['GPULoadOp', base_config_1.TYPE],\n        ['GPUMipmapFilterMode', base_config_1.TYPE],\n        ['GPUPipelineErrorReason', base_config_1.TYPE],\n        ['GPUPowerPreference', base_config_1.TYPE],\n        ['GPUPrimitiveTopology', base_config_1.TYPE],\n        ['GPUQueryType', base_config_1.TYPE],\n        ['GPUSamplerBindingType', base_config_1.TYPE],\n        ['GPUStencilOperation', base_config_1.TYPE],\n        ['GPUStorageTextureAccess', base_config_1.TYPE],\n        ['GPUStoreOp', base_config_1.TYPE],\n        ['GPUTextureAspect', base_config_1.TYPE],\n        ['GPUTextureDimension', base_config_1.TYPE],\n        ['GPUTextureFormat', base_config_1.TYPE],\n        ['GPUTextureSampleType', base_config_1.TYPE],\n        ['GPUTextureViewDimension', base_config_1.TYPE],\n        ['GPUVertexFormat', base_config_1.TYPE],\n        ['GPUVertexStepMode', base_config_1.TYPE],\n        ['GlobalCompositeOperation', base_config_1.TYPE],\n        ['HardwareAcceleration', base_config_1.TYPE],\n        ['HdrMetadataType', base_config_1.TYPE],\n        ['IDBCursorDirection', base_config_1.TYPE],\n        ['IDBRequestReadyState', base_config_1.TYPE],\n        ['IDBTransactionDurability', base_config_1.TYPE],\n        ['IDBTransactionMode', base_config_1.TYPE],\n        ['ImageDataPixelFormat', base_config_1.TYPE],\n        ['ImageOrientation', base_config_1.TYPE],\n        ['ImageSmoothingQuality', base_config_1.TYPE],\n        ['KeyFormat', base_config_1.TYPE],\n        ['KeyType', base_config_1.TYPE],\n        ['KeyUsage', base_config_1.TYPE],\n        ['LatencyMode', base_config_1.TYPE],\n        ['LockMode', base_config_1.TYPE],\n        ['MediaDecodingType', base_config_1.TYPE],\n        ['MediaEncodingType', base_config_1.TYPE],\n        ['MediaKeysRequirement', base_config_1.TYPE],\n        ['NotificationDirection', base_config_1.TYPE],\n        ['NotificationPermission', base_config_1.TYPE],\n        ['OffscreenRenderingContextId', base_config_1.TYPE],\n        ['OpusBitstreamFormat', base_config_1.TYPE],\n        ['PermissionName', base_config_1.TYPE],\n        ['PermissionState', base_config_1.TYPE],\n        ['PredefinedColorSpace', base_config_1.TYPE],\n        ['PremultiplyAlpha', base_config_1.TYPE],\n        ['PushEncryptionKeyName', base_config_1.TYPE],\n        ['RTCDataChannelState', base_config_1.TYPE],\n        ['ReadableStreamReaderMode', base_config_1.TYPE],\n        ['ReadableStreamType', base_config_1.TYPE],\n        ['ReferrerPolicy', base_config_1.TYPE],\n        ['RequestCache', base_config_1.TYPE],\n        ['RequestCredentials', base_config_1.TYPE],\n        ['RequestDestination', base_config_1.TYPE],\n        ['RequestMode', base_config_1.TYPE],\n        ['RequestPriority', base_config_1.TYPE],\n        ['RequestRedirect', base_config_1.TYPE],\n        ['ResizeQuality', base_config_1.TYPE],\n        ['ResponseType', base_config_1.TYPE],\n        ['SecurityPolicyViolationEventDisposition', base_config_1.TYPE],\n        ['ServiceWorkerState', base_config_1.TYPE],\n        ['ServiceWorkerUpdateViaCache', base_config_1.TYPE],\n        ['TaskPriority', base_config_1.TYPE],\n        ['TransferFunction', base_config_1.TYPE],\n        ['VideoColorPrimaries', base_config_1.TYPE],\n        ['VideoEncoderBitrateMode', base_config_1.TYPE],\n        ['VideoMatrixCoefficients', base_config_1.TYPE],\n        ['VideoPixelFormat', base_config_1.TYPE],\n        ['VideoTransferCharacteristics', base_config_1.TYPE],\n        ['WebGLPowerPreference', base_config_1.TYPE],\n        ['WebTransportCongestionControl', base_config_1.TYPE],\n        ['WebTransportErrorSource', base_config_1.TYPE],\n        ['WorkerType', base_config_1.TYPE],\n        ['WriteCommandType', base_config_1.TYPE],\n        ['XMLHttpRequestResponseType', base_config_1.TYPE],\n        ['FormDataIterator', base_config_1.TYPE],\n        ['HeadersIterator', base_config_1.TYPE],\n        ['StylePropertyMapReadOnlyIterator', base_config_1.TYPE],\n        ['URLSearchParamsIterator', base_config_1.TYPE],\n        ['FileSystemDirectoryHandleAsyncIterator', base_config_1.TYPE],\n        ['ReadableStreamAsyncIterator', base_config_1.TYPE],\n    ],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.webworker_asynciterable = void 0;\nexports.webworker_asynciterable = {\n    libs: [],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.webworker_iterable = void 0;\nexports.webworker_iterable = {\n    libs: [],\n    variables: [],\n};\n", "\"use strict\";\n// THIS CODE WAS AUTOMATICALLY GENERATED\n// DO NOT EDIT THIS CODE BY HAND\n// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:\n// npx nx generate-lib repo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lib = void 0;\nconst decorators_1 = require(\"./decorators\");\nconst decorators_legacy_1 = require(\"./decorators.legacy\");\nconst dom_1 = require(\"./dom\");\nconst dom_asynciterable_1 = require(\"./dom.asynciterable\");\nconst dom_iterable_1 = require(\"./dom.iterable\");\nconst es5_1 = require(\"./es5\");\nconst es6_1 = require(\"./es6\");\nconst es7_1 = require(\"./es7\");\nconst es2015_1 = require(\"./es2015\");\nconst es2015_collection_1 = require(\"./es2015.collection\");\nconst es2015_core_1 = require(\"./es2015.core\");\nconst es2015_generator_1 = require(\"./es2015.generator\");\nconst es2015_iterable_1 = require(\"./es2015.iterable\");\nconst es2015_promise_1 = require(\"./es2015.promise\");\nconst es2015_proxy_1 = require(\"./es2015.proxy\");\nconst es2015_reflect_1 = require(\"./es2015.reflect\");\nconst es2015_symbol_1 = require(\"./es2015.symbol\");\nconst es2015_symbol_wellknown_1 = require(\"./es2015.symbol.wellknown\");\nconst es2016_1 = require(\"./es2016\");\nconst es2016_array_include_1 = require(\"./es2016.array.include\");\nconst es2016_full_1 = require(\"./es2016.full\");\nconst es2016_intl_1 = require(\"./es2016.intl\");\nconst es2017_1 = require(\"./es2017\");\nconst es2017_arraybuffer_1 = require(\"./es2017.arraybuffer\");\nconst es2017_date_1 = require(\"./es2017.date\");\nconst es2017_full_1 = require(\"./es2017.full\");\nconst es2017_intl_1 = require(\"./es2017.intl\");\nconst es2017_object_1 = require(\"./es2017.object\");\nconst es2017_sharedmemory_1 = require(\"./es2017.sharedmemory\");\nconst es2017_string_1 = require(\"./es2017.string\");\nconst es2017_typedarrays_1 = require(\"./es2017.typedarrays\");\nconst es2018_1 = require(\"./es2018\");\nconst es2018_asyncgenerator_1 = require(\"./es2018.asyncgenerator\");\nconst es2018_asynciterable_1 = require(\"./es2018.asynciterable\");\nconst es2018_full_1 = require(\"./es2018.full\");\nconst es2018_intl_1 = require(\"./es2018.intl\");\nconst es2018_promise_1 = require(\"./es2018.promise\");\nconst es2018_regexp_1 = require(\"./es2018.regexp\");\nconst es2019_1 = require(\"./es2019\");\nconst es2019_array_1 = require(\"./es2019.array\");\nconst es2019_full_1 = require(\"./es2019.full\");\nconst es2019_intl_1 = require(\"./es2019.intl\");\nconst es2019_object_1 = require(\"./es2019.object\");\nconst es2019_string_1 = require(\"./es2019.string\");\nconst es2019_symbol_1 = require(\"./es2019.symbol\");\nconst es2020_1 = require(\"./es2020\");\nconst es2020_bigint_1 = require(\"./es2020.bigint\");\nconst es2020_date_1 = require(\"./es2020.date\");\nconst es2020_full_1 = require(\"./es2020.full\");\nconst es2020_intl_1 = require(\"./es2020.intl\");\nconst es2020_number_1 = require(\"./es2020.number\");\nconst es2020_promise_1 = require(\"./es2020.promise\");\nconst es2020_sharedmemory_1 = require(\"./es2020.sharedmemory\");\nconst es2020_string_1 = require(\"./es2020.string\");\nconst es2020_symbol_wellknown_1 = require(\"./es2020.symbol.wellknown\");\nconst es2021_1 = require(\"./es2021\");\nconst es2021_full_1 = require(\"./es2021.full\");\nconst es2021_intl_1 = require(\"./es2021.intl\");\nconst es2021_promise_1 = require(\"./es2021.promise\");\nconst es2021_string_1 = require(\"./es2021.string\");\nconst es2021_weakref_1 = require(\"./es2021.weakref\");\nconst es2022_1 = require(\"./es2022\");\nconst es2022_array_1 = require(\"./es2022.array\");\nconst es2022_error_1 = require(\"./es2022.error\");\nconst es2022_full_1 = require(\"./es2022.full\");\nconst es2022_intl_1 = require(\"./es2022.intl\");\nconst es2022_object_1 = require(\"./es2022.object\");\nconst es2022_regexp_1 = require(\"./es2022.regexp\");\nconst es2022_string_1 = require(\"./es2022.string\");\nconst es2023_1 = require(\"./es2023\");\nconst es2023_array_1 = require(\"./es2023.array\");\nconst es2023_collection_1 = require(\"./es2023.collection\");\nconst es2023_full_1 = require(\"./es2023.full\");\nconst es2023_intl_1 = require(\"./es2023.intl\");\nconst es2024_1 = require(\"./es2024\");\nconst es2024_arraybuffer_1 = require(\"./es2024.arraybuffer\");\nconst es2024_collection_1 = require(\"./es2024.collection\");\nconst es2024_full_1 = require(\"./es2024.full\");\nconst es2024_object_1 = require(\"./es2024.object\");\nconst es2024_promise_1 = require(\"./es2024.promise\");\nconst es2024_regexp_1 = require(\"./es2024.regexp\");\nconst es2024_sharedmemory_1 = require(\"./es2024.sharedmemory\");\nconst es2024_string_1 = require(\"./es2024.string\");\nconst es2025_1 = require(\"./es2025\");\nconst es2025_collection_1 = require(\"./es2025.collection\");\nconst es2025_float16_1 = require(\"./es2025.float16\");\nconst es2025_full_1 = require(\"./es2025.full\");\nconst es2025_intl_1 = require(\"./es2025.intl\");\nconst es2025_iterator_1 = require(\"./es2025.iterator\");\nconst es2025_promise_1 = require(\"./es2025.promise\");\nconst es2025_regexp_1 = require(\"./es2025.regexp\");\nconst esnext_1 = require(\"./esnext\");\nconst esnext_array_1 = require(\"./esnext.array\");\nconst esnext_asynciterable_1 = require(\"./esnext.asynciterable\");\nconst esnext_bigint_1 = require(\"./esnext.bigint\");\nconst esnext_collection_1 = require(\"./esnext.collection\");\nconst esnext_date_1 = require(\"./esnext.date\");\nconst esnext_decorators_1 = require(\"./esnext.decorators\");\nconst esnext_disposable_1 = require(\"./esnext.disposable\");\nconst esnext_error_1 = require(\"./esnext.error\");\nconst esnext_float16_1 = require(\"./esnext.float16\");\nconst esnext_full_1 = require(\"./esnext.full\");\nconst esnext_intl_1 = require(\"./esnext.intl\");\nconst esnext_iterator_1 = require(\"./esnext.iterator\");\nconst esnext_object_1 = require(\"./esnext.object\");\nconst esnext_promise_1 = require(\"./esnext.promise\");\nconst esnext_regexp_1 = require(\"./esnext.regexp\");\nconst esnext_sharedmemory_1 = require(\"./esnext.sharedmemory\");\nconst esnext_string_1 = require(\"./esnext.string\");\nconst esnext_symbol_1 = require(\"./esnext.symbol\");\nconst esnext_temporal_1 = require(\"./esnext.temporal\");\nconst esnext_typedarrays_1 = require(\"./esnext.typedarrays\");\nconst esnext_weakref_1 = require(\"./esnext.weakref\");\nconst lib_1 = require(\"./lib\");\nconst scripthost_1 = require(\"./scripthost\");\nconst webworker_1 = require(\"./webworker\");\nconst webworker_asynciterable_1 = require(\"./webworker.asynciterable\");\nconst webworker_importscripts_1 = require(\"./webworker.importscripts\");\nconst webworker_iterable_1 = require(\"./webworker.iterable\");\nexports.lib = new Map([\n    ['es5', es5_1.es5],\n    ['es6', es6_1.es6],\n    ['es2015', es2015_1.es2015],\n    ['es7', es7_1.es7],\n    ['es2016', es2016_1.es2016],\n    ['es2017', es2017_1.es2017],\n    ['es2018', es2018_1.es2018],\n    ['es2019', es2019_1.es2019],\n    ['es2020', es2020_1.es2020],\n    ['es2021', es2021_1.es2021],\n    ['es2022', es2022_1.es2022],\n    ['es2023', es2023_1.es2023],\n    ['es2024', es2024_1.es2024],\n    ['es2025', es2025_1.es2025],\n    ['esnext', esnext_1.esnext],\n    ['dom', dom_1.dom],\n    ['dom.iterable', dom_iterable_1.dom_iterable],\n    ['dom.asynciterable', dom_asynciterable_1.dom_asynciterable],\n    ['webworker', webworker_1.webworker],\n    ['webworker.importscripts', webworker_importscripts_1.webworker_importscripts],\n    ['webworker.iterable', webworker_iterable_1.webworker_iterable],\n    ['webworker.asynciterable', webworker_asynciterable_1.webworker_asynciterable],\n    ['scripthost', scripthost_1.scripthost],\n    ['es2015.core', es2015_core_1.es2015_core],\n    ['es2015.collection', es2015_collection_1.es2015_collection],\n    ['es2015.generator', es2015_generator_1.es2015_generator],\n    ['es2015.iterable', es2015_iterable_1.es2015_iterable],\n    ['es2015.promise', es2015_promise_1.es2015_promise],\n    ['es2015.proxy', es2015_proxy_1.es2015_proxy],\n    ['es2015.reflect', es2015_reflect_1.es2015_reflect],\n    ['es2015.symbol', es2015_symbol_1.es2015_symbol],\n    ['es2015.symbol.wellknown', es2015_symbol_wellknown_1.es2015_symbol_wellknown],\n    ['es2016.array.include', es2016_array_include_1.es2016_array_include],\n    ['es2016.intl', es2016_intl_1.es2016_intl],\n    ['es2017.arraybuffer', es2017_arraybuffer_1.es2017_arraybuffer],\n    ['es2017.date', es2017_date_1.es2017_date],\n    ['es2017.object', es2017_object_1.es2017_object],\n    ['es2017.sharedmemory', es2017_sharedmemory_1.es2017_sharedmemory],\n    ['es2017.string', es2017_string_1.es2017_string],\n    ['es2017.intl', es2017_intl_1.es2017_intl],\n    ['es2017.typedarrays', es2017_typedarrays_1.es2017_typedarrays],\n    ['es2018.asyncgenerator', es2018_asyncgenerator_1.es2018_asyncgenerator],\n    ['es2018.asynciterable', es2018_asynciterable_1.es2018_asynciterable],\n    ['es2018.intl', es2018_intl_1.es2018_intl],\n    ['es2018.promise', es2018_promise_1.es2018_promise],\n    ['es2018.regexp', es2018_regexp_1.es2018_regexp],\n    ['es2019.array', es2019_array_1.es2019_array],\n    ['es2019.object', es2019_object_1.es2019_object],\n    ['es2019.string', es2019_string_1.es2019_string],\n    ['es2019.symbol', es2019_symbol_1.es2019_symbol],\n    ['es2019.intl', es2019_intl_1.es2019_intl],\n    ['es2020.bigint', es2020_bigint_1.es2020_bigint],\n    ['es2020.date', es2020_date_1.es2020_date],\n    ['es2020.promise', es2020_promise_1.es2020_promise],\n    ['es2020.sharedmemory', es2020_sharedmemory_1.es2020_sharedmemory],\n    ['es2020.string', es2020_string_1.es2020_string],\n    ['es2020.symbol.wellknown', es2020_symbol_wellknown_1.es2020_symbol_wellknown],\n    ['es2020.intl', es2020_intl_1.es2020_intl],\n    ['es2020.number', es2020_number_1.es2020_number],\n    ['es2021.promise', es2021_promise_1.es2021_promise],\n    ['es2021.string', es2021_string_1.es2021_string],\n    ['es2021.weakref', es2021_weakref_1.es2021_weakref],\n    ['es2021.intl', es2021_intl_1.es2021_intl],\n    ['es2022.array', es2022_array_1.es2022_array],\n    ['es2022.error', es2022_error_1.es2022_error],\n    ['es2022.intl', es2022_intl_1.es2022_intl],\n    ['es2022.object', es2022_object_1.es2022_object],\n    ['es2022.string', es2022_string_1.es2022_string],\n    ['es2022.regexp', es2022_regexp_1.es2022_regexp],\n    ['es2023.array', es2023_array_1.es2023_array],\n    ['es2023.collection', es2023_collection_1.es2023_collection],\n    ['es2023.intl', es2023_intl_1.es2023_intl],\n    ['es2024.arraybuffer', es2024_arraybuffer_1.es2024_arraybuffer],\n    ['es2024.collection', es2024_collection_1.es2024_collection],\n    ['es2024.object', es2024_object_1.es2024_object],\n    ['es2024.promise', es2024_promise_1.es2024_promise],\n    ['es2024.regexp', es2024_regexp_1.es2024_regexp],\n    ['es2024.sharedmemory', es2024_sharedmemory_1.es2024_sharedmemory],\n    ['es2024.string', es2024_string_1.es2024_string],\n    ['es2025.collection', es2025_collection_1.es2025_collection],\n    ['es2025.float16', es2025_float16_1.es2025_float16],\n    ['es2025.intl', es2025_intl_1.es2025_intl],\n    ['es2025.iterator', es2025_iterator_1.es2025_iterator],\n    ['es2025.promise', es2025_promise_1.es2025_promise],\n    ['es2025.regexp', es2025_regexp_1.es2025_regexp],\n    ['esnext.asynciterable', esnext_asynciterable_1.esnext_asynciterable],\n    ['esnext.symbol', esnext_symbol_1.esnext_symbol],\n    ['esnext.bigint', esnext_bigint_1.esnext_bigint],\n    ['esnext.weakref', esnext_weakref_1.esnext_weakref],\n    ['esnext.object', esnext_object_1.esnext_object],\n    ['esnext.regexp', esnext_regexp_1.esnext_regexp],\n    ['esnext.string', esnext_string_1.esnext_string],\n    ['esnext.float16', esnext_float16_1.esnext_float16],\n    ['esnext.iterator', esnext_iterator_1.esnext_iterator],\n    ['esnext.promise', esnext_promise_1.esnext_promise],\n    ['esnext.array', esnext_array_1.esnext_array],\n    ['esnext.collection', esnext_collection_1.esnext_collection],\n    ['esnext.date', esnext_date_1.esnext_date],\n    ['esnext.decorators', esnext_decorators_1.esnext_decorators],\n    ['esnext.disposable', esnext_disposable_1.esnext_disposable],\n    ['esnext.error', esnext_error_1.esnext_error],\n    ['esnext.intl', esnext_intl_1.esnext_intl],\n    ['esnext.sharedmemory', esnext_sharedmemory_1.esnext_sharedmemory],\n    ['esnext.temporal', esnext_temporal_1.esnext_temporal],\n    ['esnext.typedarrays', esnext_typedarrays_1.esnext_typedarrays],\n    ['decorators', decorators_1.decorators],\n    ['decorators.legacy', decorators_legacy_1.decorators_legacy],\n    ['es2016.full', es2016_full_1.es2016_full],\n    ['es2017.full', es2017_full_1.es2017_full],\n    ['es2018.full', es2018_full_1.es2018_full],\n    ['es2019.full', es2019_full_1.es2019_full],\n    ['es2020.full', es2020_full_1.es2020_full],\n    ['es2021.full', es2021_full_1.es2021_full],\n    ['es2022.full', es2022_full_1.es2022_full],\n    ['es2023.full', es2023_full_1.es2023_full],\n    ['es2024.full', es2024_full_1.es2024_full],\n    ['es2025.full', es2025_full_1.es2025_full],\n    ['esnext.full', esnext_full_1.esnext_full],\n    ['lib', lib_1.lib],\n]);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Reference = exports.ReferenceTypeFlag = exports.ReferenceFlag = void 0;\nconst ID_1 = require(\"../ID\");\nvar ReferenceFlag;\n(function (ReferenceFlag) {\n    ReferenceFlag[ReferenceFlag[\"Read\"] = 1] = \"Read\";\n    ReferenceFlag[ReferenceFlag[\"Write\"] = 2] = \"Write\";\n    ReferenceFlag[ReferenceFlag[\"ReadWrite\"] = 3] = \"ReadWrite\";\n})(ReferenceFlag || (exports.ReferenceFlag = ReferenceFlag = {}));\nconst generator = (0, ID_1.createIdGenerator)();\nvar ReferenceTypeFlag;\n(function (ReferenceTypeFlag) {\n    ReferenceTypeFlag[ReferenceTypeFlag[\"Value\"] = 1] = \"Value\";\n    ReferenceTypeFlag[ReferenceTypeFlag[\"Type\"] = 2] = \"Type\";\n})(ReferenceTypeFlag || (exports.ReferenceTypeFlag = ReferenceTypeFlag = {}));\n/**\n * A Reference represents a single occurrence of an identifier in code.\n */\nclass Reference {\n    /**\n     * A unique ID for this instance - primarily used to help debugging and testing\n     */\n    $id = generator();\n    /**\n     * The read-write mode of the reference.\n     */\n    #flag;\n    /**\n     * Reference to the enclosing Scope.\n     * @public\n     */\n    from;\n    /**\n     * Identifier syntax node.\n     * @public\n     */\n    identifier;\n    /**\n     * `true` if this writing reference is a variable initializer or a default value.\n     * @public\n     */\n    init;\n    maybeImplicitGlobal;\n    /**\n     * The {@link Variable} object that this reference refers to. If such variable was not defined, this is `null`.\n     * @public\n     */\n    resolved;\n    /**\n     * If reference is writeable, this is the node being written to it.\n     * @public\n     */\n    writeExpr;\n    /**\n     * In some cases, a reference may be a type, value or both a type and value reference.\n     */\n    #referenceType;\n    constructor(identifier, scope, flag, writeExpr, maybeImplicitGlobal, init, referenceType = ReferenceTypeFlag.Value) {\n        this.identifier = identifier;\n        this.from = scope;\n        this.resolved = null;\n        this.#flag = flag;\n        if (this.isWrite()) {\n            this.writeExpr = writeExpr;\n            this.init = init;\n        }\n        this.maybeImplicitGlobal = maybeImplicitGlobal;\n        this.#referenceType = referenceType;\n    }\n    /**\n     * True if this reference can reference types\n     */\n    get isTypeReference() {\n        return (this.#referenceType & ReferenceTypeFlag.Type) !== 0;\n    }\n    /**\n     * True if this reference can reference values\n     */\n    get isValueReference() {\n        return (this.#referenceType & ReferenceTypeFlag.Value) !== 0;\n    }\n    /**\n     * Whether the reference is writeable.\n     * @public\n     */\n    isWrite() {\n        return !!(this.#flag & ReferenceFlag.Write);\n    }\n    /**\n     * Whether the reference is readable.\n     * @public\n     */\n    isRead() {\n        return !!(this.#flag & ReferenceFlag.Read);\n    }\n    /**\n     * Whether the reference is read-only.\n     * @public\n     */\n    isReadOnly() {\n        return this.#flag === ReferenceFlag.Read;\n    }\n    /**\n     * Whether the reference is write-only.\n     * @public\n     */\n    isWriteOnly() {\n        return this.#flag === ReferenceFlag.Write;\n    }\n    /**\n     * Whether the reference is read-write.\n     * @public\n     */\n    isReadWrite() {\n        return this.#flag === ReferenceFlag.ReadWrite;\n    }\n}\nexports.Reference = Reference;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VariableBase = void 0;\nconst ID_1 = require(\"../ID\");\nconst generator = (0, ID_1.createIdGenerator)();\nclass VariableBase {\n    /**\n     * A unique ID for this instance - primarily used to help debugging and testing\n     */\n    $id = generator();\n    /**\n     * The array of the definitions of this variable.\n     * @public\n     */\n    defs = [];\n    /**\n     * True if the variable is considered used for the purposes of `no-unused-vars`, false otherwise.\n     * @public\n     */\n    eslintUsed = false;\n    /**\n     * The array of `Identifier` nodes which define this variable.\n     * If this variable is redeclared, this array includes two or more nodes.\n     * @public\n     */\n    identifiers = [];\n    /**\n     * The variable name, as given in the source code.\n     * @public\n     */\n    name;\n    /**\n     * List of {@link Reference} of this variable (excluding parameter entries)  in its defining scope and all nested scopes.\n     * For defining occurrences only see {@link Variable#defs}.\n     * @public\n     */\n    references = [];\n    /**\n     * Reference to the enclosing Scope.\n     */\n    scope;\n    constructor(name, scope) {\n        this.name = name;\n        this.scope = scope;\n    }\n}\nexports.VariableBase = VariableBase;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ESLintScopeVariable = void 0;\nconst VariableBase_1 = require(\"./VariableBase\");\n/**\n * ESLint defines global variables using the eslint-scope Variable class\n * This is declared here for consumers to use\n */\nclass ESLintScopeVariable extends VariableBase_1.VariableBase {\n    /**\n     * Written to by ESLint.\n     * If this key exists, this variable is a global variable added by ESLint.\n     * If this is `true`, this variable can be assigned arbitrary values.\n     * If this is `false`, this variable is readonly.\n     */\n    writeable; // note that this isn't a typo - ESlint uses this spelling here\n    /**\n     * Written to by ESLint.\n     * This property is undefined if there are no globals comment directives.\n     * The array of globals comment directives which defined this global variable in the source code file.\n     */\n    eslintExplicitGlobal;\n    /**\n     * Written to by ESLint.\n     * The configured value in config files. This can be different from `variable.writeable` if there are globals comment directives.\n     */\n    eslintImplicitGlobalSetting;\n    /**\n     * Written to by ESLint.\n     * If this key exists, it is a global variable added by ESLint.\n     * If `true`, this global variable was defined by a globals comment directive in the source code file.\n     */\n    eslintExplicitGlobalComments;\n}\nexports.ESLintScopeVariable = ESLintScopeVariable;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImplicitLibVariable = void 0;\nconst ESLintScopeVariable_1 = require(\"./ESLintScopeVariable\");\n/**\n * An variable implicitly defined by the TS Lib\n */\nclass ImplicitLibVariable extends ESLintScopeVariable_1.ESLintScopeVariable {\n    /**\n     * `true` if the variable is valid in a type context, false otherwise\n     */\n    isTypeVariable;\n    /**\n     * `true` if the variable is valid in a value context, false otherwise\n     */\n    isValueVariable;\n    constructor(scope, name, { eslintImplicitGlobalSetting, isTypeVariable, isValueVariable, writeable, }) {\n        super(name, scope);\n        this.isTypeVariable = isTypeVariable ?? false;\n        this.isValueVariable = isValueVariable ?? false;\n        this.writeable = writeable ?? false;\n        this.eslintImplicitGlobalSetting =\n            eslintImplicitGlobalSetting ?? 'readonly';\n    }\n}\nexports.ImplicitLibVariable = ImplicitLibVariable;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Variable = void 0;\nconst VariableBase_1 = require(\"./VariableBase\");\n/**\n * A Variable represents a locally scoped identifier. These include arguments to functions.\n */\nclass Variable extends VariableBase_1.VariableBase {\n    /**\n     * `true` if the variable is valid in a type context, false otherwise\n     * @public\n     */\n    get isTypeVariable() {\n        if (this.defs.length === 0) {\n            // we don't statically know whether this is a type or a value\n            return true;\n        }\n        return this.defs.some(def => def.isTypeDefinition);\n    }\n    /**\n     * `true` if the variable is valid in a value context, false otherwise\n     * @public\n     */\n    get isValueVariable() {\n        if (this.defs.length === 0) {\n            // we don't statically know whether this is a type or a value\n            return true;\n        }\n        return this.defs.some(def => def.isVariableDefinition);\n    }\n}\nexports.Variable = Variable;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Variable = exports.ImplicitLibVariable = exports.ESLintScopeVariable = void 0;\nvar ESLintScopeVariable_1 = require(\"./ESLintScopeVariable\");\nObject.defineProperty(exports, \"ESLintScopeVariable\", { enumerable: true, get: function () { return ESLintScopeVariable_1.ESLintScopeVariable; } });\nvar ImplicitLibVariable_1 = require(\"./ImplicitLibVariable\");\nObject.defineProperty(exports, \"ImplicitLibVariable\", { enumerable: true, get: function () { return ImplicitLibVariable_1.ImplicitLibVariable; } });\nvar Variable_1 = require(\"./Variable\");\nObject.defineProperty(exports, \"Variable\", { enumerable: true, get: function () { return Variable_1.Variable; } });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScopeType = void 0;\nvar ScopeType;\n(function (ScopeType) {\n    ScopeType[\"block\"] = \"block\";\n    ScopeType[\"catch\"] = \"catch\";\n    ScopeType[\"class\"] = \"class\";\n    ScopeType[\"classFieldInitializer\"] = \"class-field-initializer\";\n    ScopeType[\"classStaticBlock\"] = \"class-static-block\";\n    ScopeType[\"conditionalType\"] = \"conditionalType\";\n    ScopeType[\"for\"] = \"for\";\n    ScopeType[\"function\"] = \"function\";\n    ScopeType[\"functionExpressionName\"] = \"function-expression-name\";\n    ScopeType[\"functionType\"] = \"functionType\";\n    ScopeType[\"global\"] = \"global\";\n    ScopeType[\"mappedType\"] = \"mappedType\";\n    ScopeType[\"module\"] = \"module\";\n    ScopeType[\"switch\"] = \"switch\";\n    ScopeType[\"tsEnum\"] = \"tsEnum\";\n    ScopeType[\"tsModule\"] = \"tsModule\";\n    ScopeType[\"type\"] = \"type\";\n    ScopeType[\"with\"] = \"with\";\n})(ScopeType || (exports.ScopeType = ScopeType = {}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScopeBase = void 0;\nconst types_1 = require(\"@typescript-eslint/types\");\nconst assert_1 = require(\"../assert\");\nconst ID_1 = require(\"../ID\");\nconst Reference_1 = require(\"../referencer/Reference\");\nconst variable_1 = require(\"../variable\");\nconst ScopeType_1 = require(\"./ScopeType\");\n/**\n * Test if scope is strict\n */\nfunction isStrictScope(scope, block, isMethodDefinition) {\n    let body;\n    // When upper scope is exists and strict, inner scope is also strict.\n    if (scope.upper?.isStrict) {\n        return true;\n    }\n    if (isMethodDefinition) {\n        return true;\n    }\n    if (scope.type === ScopeType_1.ScopeType.class ||\n        scope.type === ScopeType_1.ScopeType.conditionalType ||\n        scope.type === ScopeType_1.ScopeType.functionType ||\n        scope.type === ScopeType_1.ScopeType.mappedType ||\n        scope.type === ScopeType_1.ScopeType.module ||\n        scope.type === ScopeType_1.ScopeType.tsEnum ||\n        scope.type === ScopeType_1.ScopeType.tsModule ||\n        scope.type === ScopeType_1.ScopeType.type) {\n        return true;\n    }\n    if (scope.type === ScopeType_1.ScopeType.block || scope.type === ScopeType_1.ScopeType.switch) {\n        return false;\n    }\n    if (scope.type === ScopeType_1.ScopeType.function) {\n        const functionBody = block;\n        switch (functionBody.type) {\n            case types_1.AST_NODE_TYPES.ArrowFunctionExpression:\n                if (functionBody.body.type !== types_1.AST_NODE_TYPES.BlockStatement) {\n                    return false;\n                }\n                body = functionBody.body;\n                break;\n            case types_1.AST_NODE_TYPES.Program:\n                body = functionBody;\n                break;\n            default:\n                body = functionBody.body;\n        }\n        if (!body) {\n            return false;\n        }\n    }\n    else if (scope.type === ScopeType_1.ScopeType.global) {\n        body = block;\n    }\n    else {\n        return false;\n    }\n    // Search 'use strict' directive.\n    for (const stmt of body.body) {\n        if (stmt.type !== types_1.AST_NODE_TYPES.ExpressionStatement ||\n            stmt.directive == null) {\n            break;\n        }\n        if (stmt.directive === 'use strict') {\n            return true;\n        }\n    }\n    return false;\n}\nfunction registerScope(scopeManager, scope) {\n    scopeManager.scopes.push(scope);\n    const scopes = scopeManager.nodeToScope.get(scope.block);\n    if (scopes) {\n        scopes.push(scope);\n    }\n    else {\n        scopeManager.nodeToScope.set(scope.block, [scope]);\n    }\n}\nconst generator = (0, ID_1.createIdGenerator)();\nconst VARIABLE_SCOPE_TYPES = new Set([\n    ScopeType_1.ScopeType.classFieldInitializer,\n    ScopeType_1.ScopeType.classStaticBlock,\n    ScopeType_1.ScopeType.function,\n    ScopeType_1.ScopeType.global,\n    ScopeType_1.ScopeType.module,\n    ScopeType_1.ScopeType.tsModule,\n]);\nclass ScopeBase {\n    /**\n     * A unique ID for this instance - primarily used to help debugging and testing\n     */\n    $id = generator();\n    /**\n     * The AST node which created this scope.\n     * @public\n     */\n    block;\n    /**\n     * The array of child scopes. This does not include grandchild scopes.\n     * @public\n     */\n    childScopes = [];\n    /**\n     * A map of the variables for each node in this scope.\n     * This is map is a pointer to the one in the parent ScopeManager instance\n     */\n    #declaredVariables;\n    /**\n     * Generally, through the lexical scoping of JS you can always know which variable an identifier in the source code\n     * refers to. There are a few exceptions to this rule. With `global` and `with` scopes you can only decide at runtime\n     * which variable a reference refers to.\n     * All those scopes are considered \"dynamic\".\n     */\n    #dynamic;\n    /**\n     * Whether this scope is created by a FunctionExpression.\n     * @public\n     */\n    functionExpressionScope = false;\n    /**\n     * Whether 'use strict' is in effect in this scope.\n     * @public\n     */\n    isStrict;\n    /**\n     * List of {@link Reference}s that are left to be resolved (i.e. which\n     * need to be linked to the variable they refer to).\n     */\n    leftToResolve = [];\n    /**\n     * Any variable {@link Reference} found in this scope.\n     * This includes occurrences of local variables as well as variables from parent scopes (including the global scope).\n     * For local variables this also includes defining occurrences (like in a 'var' statement).\n     * In a 'function' scope this does not include the occurrences of the formal parameter in the parameter list.\n     * @public\n     */\n    references = [];\n    /**\n     * The map from variable names to variable objects.\n     * @public\n     */\n    set = new Map();\n    /**\n     * The {@link Reference}s that are not resolved with this scope.\n     * @public\n     */\n    through = [];\n    type;\n    /**\n     * Reference to the parent {@link Scope}.\n     * @public\n     */\n    upper;\n    /**\n     * The scoped {@link Variable}s of this scope.\n     * In the case of a 'function' scope this includes the automatic argument `arguments` as its first element, as well\n     * as all further formal arguments.\n     * This does not include variables which are defined in child scopes.\n     * @public\n     */\n    variables = [];\n    /**\n     * For scopes that can contain variable declarations, this is a self-reference.\n     * For other scope types this is the *variableScope* value of the parent scope.\n     * @public\n     */\n    #dynamicCloseRef = (ref) => {\n        // notify all names are through to global\n        let current = this;\n        do {\n            /* eslint-disable @typescript-eslint/no-non-null-assertion */\n            current.through.push(ref);\n            current = current.upper;\n            /* eslint-enable @typescript-eslint/no-non-null-assertion */\n        } while (current);\n    };\n    #staticCloseRef = (ref) => {\n        const resolve = () => {\n            const name = ref.identifier.name;\n            const variable = this.set.get(name);\n            if (!variable) {\n                return false;\n            }\n            if (!this.isValidResolution(ref, variable)) {\n                return false;\n            }\n            // make sure we don't match a type reference to a value variable\n            const isValidTypeReference = ref.isTypeReference && variable.isTypeVariable;\n            const isValidValueReference = ref.isValueReference && variable.isValueVariable;\n            if (!isValidTypeReference && !isValidValueReference) {\n                return false;\n            }\n            variable.references.push(ref);\n            ref.resolved = variable;\n            return true;\n        };\n        if (!resolve()) {\n            this.delegateToUpperScope(ref);\n        }\n    };\n    variableScope;\n    constructor(scopeManager, type, upperScope, block, isMethodDefinition) {\n        const upperScopeAsScopeBase = upperScope;\n        this.type = type;\n        this.#dynamic =\n            this.type === ScopeType_1.ScopeType.global || this.type === ScopeType_1.ScopeType.with;\n        this.block = block;\n        this.variableScope = this.isVariableScope()\n            ? this\n            : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                upperScopeAsScopeBase.variableScope;\n        this.upper = upperScope;\n        /**\n         * Whether 'use strict' is in effect in this scope.\n         * @member {boolean} Scope#isStrict\n         */\n        this.isStrict = isStrictScope(this, block, isMethodDefinition);\n        // this is guaranteed to be correct at runtime\n        upperScopeAsScopeBase?.childScopes.push(this);\n        this.#declaredVariables = scopeManager.declaredVariables;\n        registerScope(scopeManager, this);\n    }\n    isVariableScope() {\n        return VARIABLE_SCOPE_TYPES.has(this.type);\n    }\n    close(_scopeManager) {\n        const closeRef = this.shouldStaticallyClose()\n            ? this.#staticCloseRef\n            : this.#dynamicCloseRef;\n        // Try Resolving all references in this scope.\n        (0, assert_1.assert)(this.leftToResolve);\n        this.leftToResolve.forEach(ref => closeRef(ref));\n        this.leftToResolve = null;\n        return this.upper;\n    }\n    shouldStaticallyClose() {\n        return !this.#dynamic || this.type === 'global';\n    }\n    /**\n     * To override by function scopes.\n     * References in default parameters isn't resolved to variables which are in their function body.\n     */\n    defineVariable(nameOrVariable, set, variables, node, def) {\n        const name = typeof nameOrVariable === 'string' ? nameOrVariable : nameOrVariable.name;\n        let variable = set.get(name);\n        if (!variable) {\n            variable =\n                typeof nameOrVariable === 'string'\n                    ? new variable_1.Variable(name, this)\n                    : nameOrVariable;\n            set.set(name, variable);\n            variables.push(variable);\n        }\n        if (def) {\n            variable.defs.push(def);\n            this.addDeclaredVariablesOfNode(variable, def.node);\n            this.addDeclaredVariablesOfNode(variable, def.parent);\n        }\n        if (node) {\n            variable.identifiers.push(node);\n        }\n    }\n    delegateToUpperScope(ref) {\n        this.upper?.leftToResolve?.push(ref);\n        this.through.push(ref);\n    }\n    isValidResolution(_ref, _variable) {\n        return true;\n    }\n    addDeclaredVariablesOfNode(variable, node) {\n        if (node == null) {\n            return;\n        }\n        let variables = this.#declaredVariables.get(node);\n        if (variables == null) {\n            variables = [];\n            this.#declaredVariables.set(node, variables);\n        }\n        if (!variables.includes(variable)) {\n            variables.push(variable);\n        }\n    }\n    defineIdentifier(node, def) {\n        this.defineVariable(node.name, this.set, this.variables, node, def);\n    }\n    defineLiteralIdentifier(node, def) {\n        this.defineVariable(node.value, this.set, this.variables, null, def);\n    }\n    referenceDualValueType(node) {\n        const ref = new Reference_1.Reference(node, this, Reference_1.ReferenceFlag.Read, null, null, false, Reference_1.ReferenceTypeFlag.Type | Reference_1.ReferenceTypeFlag.Value);\n        this.references.push(ref);\n        this.leftToResolve?.push(ref);\n    }\n    referenceType(node) {\n        const ref = new Reference_1.Reference(node, this, Reference_1.ReferenceFlag.Read, null, null, false, Reference_1.ReferenceTypeFlag.Type);\n        this.references.push(ref);\n        this.leftToResolve?.push(ref);\n    }\n    referenceValue(node, assign = Reference_1.ReferenceFlag.Read, writeExpr, maybeImplicitGlobal, init = false) {\n        const ref = new Reference_1.Reference(node, this, assign, writeExpr, maybeImplicitGlobal, init, Reference_1.ReferenceTypeFlag.Value);\n        this.references.push(ref);\n        this.leftToResolve?.push(ref);\n    }\n}\nexports.ScopeBase = ScopeBase;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlockScope = void 0;\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass BlockScope extends ScopeBase_1.ScopeBase {\n    constructor(scopeManager, upperScope, block) {\n        super(scopeManager, ScopeType_1.ScopeType.block, upperScope, block, false);\n    }\n}\nexports.BlockScope = BlockScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CatchScope = void 0;\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass CatchScope extends ScopeBase_1.ScopeBase {\n    constructor(scopeManager, upperScope, block) {\n        super(scopeManager, ScopeType_1.ScopeType.catch, upperScope, block, false);\n    }\n}\nexports.CatchScope = CatchScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClassFieldInitializerScope = void 0;\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass ClassFieldInitializerScope extends ScopeBase_1.ScopeBase {\n    constructor(scopeManager, upperScope, block) {\n        super(scopeManager, ScopeType_1.ScopeType.classFieldInitializer, upperScope, block, false);\n    }\n}\nexports.ClassFieldInitializerScope = ClassFieldInitializerScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClassScope = void 0;\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass ClassScope extends ScopeBase_1.ScopeBase {\n    constructor(scopeManager, upperScope, block) {\n        super(scopeManager, ScopeType_1.ScopeType.class, upperScope, block, false);\n    }\n}\nexports.ClassScope = ClassScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConditionalTypeScope = void 0;\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass ConditionalTypeScope extends ScopeBase_1.ScopeBase {\n    constructor(scopeManager, upperScope, block) {\n        super(scopeManager, ScopeType_1.ScopeType.conditionalType, upperScope, block, false);\n    }\n}\nexports.ConditionalTypeScope = ConditionalTypeScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ForScope = void 0;\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass ForScope extends ScopeBase_1.ScopeBase {\n    constructor(scopeManager, upperScope, block) {\n        super(scopeManager, ScopeType_1.ScopeType.for, upperScope, block, false);\n    }\n}\nexports.ForScope = ForScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FunctionExpressionNameScope = void 0;\nconst definition_1 = require(\"../definition\");\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass FunctionExpressionNameScope extends ScopeBase_1.ScopeBase {\n    functionExpressionScope;\n    constructor(scopeManager, upperScope, block) {\n        super(scopeManager, ScopeType_1.ScopeType.functionExpressionName, upperScope, block, false);\n        if (block.id) {\n            this.defineIdentifier(block.id, new definition_1.FunctionNameDefinition(block.id, block));\n        }\n        this.functionExpressionScope = true;\n    }\n}\nexports.FunctionExpressionNameScope = FunctionExpressionNameScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FunctionScope = void 0;\nconst types_1 = require(\"@typescript-eslint/types\");\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass FunctionScope extends ScopeBase_1.ScopeBase {\n    constructor(scopeManager, upperScope, block, isMethodDefinition) {\n        super(scopeManager, ScopeType_1.ScopeType.function, upperScope, block, isMethodDefinition);\n        // section 9.2.13, FunctionDeclarationInstantiation.\n        // NOTE Arrow functions never have an arguments objects.\n        if (this.block.type !== types_1.AST_NODE_TYPES.ArrowFunctionExpression) {\n            this.defineVariable('arguments', this.set, this.variables, null, null);\n        }\n    }\n    // References in default parameters isn't resolved to variables which are in their function body.\n    //     const x = 1\n    //     function f(a = x) { // This `x` is resolved to the `x` in the outer scope.\n    //         const x = 2\n    //         console.log(a)\n    //     }\n    isValidResolution(ref, variable) {\n        // If `options.globalReturn` is true, `this.block` becomes a Program node.\n        if (this.block.type === types_1.AST_NODE_TYPES.Program) {\n            return true;\n        }\n        const bodyStart = this.block.body?.range[0] ?? -1;\n        // It's invalid resolution in the following case:\n        return !((variable.scope === this &&\n            ref.identifier.range[0] < bodyStart && // the reference is in the parameter part.\n            variable.defs.every(d => d.name.range[0] >= bodyStart)) // the variable is in the body.\n        );\n    }\n}\nexports.FunctionScope = FunctionScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FunctionTypeScope = void 0;\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass FunctionTypeScope extends ScopeBase_1.ScopeBase {\n    constructor(scopeManager, upperScope, block) {\n        super(scopeManager, ScopeType_1.ScopeType.functionType, upperScope, block, false);\n    }\n}\nexports.FunctionTypeScope = FunctionTypeScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GlobalScope = void 0;\nconst types_1 = require(\"@typescript-eslint/types\");\nconst assert_1 = require(\"../assert\");\nconst ImplicitGlobalVariableDefinition_1 = require(\"../definition/ImplicitGlobalVariableDefinition\");\nconst variable_1 = require(\"../variable\");\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass GlobalScope extends ScopeBase_1.ScopeBase {\n    // note this is accessed in used in the legacy eslint-scope tests, so it can't be true private\n    implicit;\n    constructor(scopeManager, block) {\n        super(scopeManager, ScopeType_1.ScopeType.global, null, block, false);\n        this.implicit = {\n            leftToBeResolved: [],\n            set: new Map(),\n            variables: [],\n        };\n    }\n    addVariables(names) {\n        for (const name of names) {\n            this.defineVariable(name, this.set, this.variables, null, null);\n            this.implicit.set.delete(name);\n        }\n        const nameSet = new Set(names);\n        for (const reference of this.through) {\n            if (nameSet.has(reference.identifier.name)) {\n                const variable = this.set.get(reference.identifier.name);\n                (0, assert_1.assert)(variable, `Expected variable with name \"${reference.identifier.name}\" to be specified.`);\n                reference.resolved = variable;\n                variable.references.push(reference);\n            }\n        }\n        this.through = this.through.filter(reference => !nameSet.has(reference.identifier.name));\n        this.implicit.variables = this.implicit.variables.filter(variable => !nameSet.has(variable.name));\n        this.implicit.leftToBeResolved = this.implicit.leftToBeResolved.filter(reference => !nameSet.has(reference.identifier.name));\n    }\n    close(scopeManager) {\n        (0, assert_1.assert)(this.leftToResolve);\n        for (const ref of this.leftToResolve) {\n            if (ref.maybeImplicitGlobal && !this.set.has(ref.identifier.name)) {\n                // create an implicit global variable from assignment expression\n                const info = ref.maybeImplicitGlobal;\n                const node = info.pattern;\n                if (node.type === types_1.AST_NODE_TYPES.Identifier) {\n                    this.defineVariable(node.name, this.implicit.set, this.implicit.variables, node, new ImplicitGlobalVariableDefinition_1.ImplicitGlobalVariableDefinition(info.pattern, info.node));\n                }\n            }\n        }\n        this.implicit.leftToBeResolved = this.leftToResolve;\n        super.close(scopeManager);\n        this.implicit.leftToBeResolved = [...this.through];\n        return null;\n    }\n    defineImplicitVariable(name, options) {\n        this.defineVariable(new variable_1.ImplicitLibVariable(this, name, options), this.set, this.variables, null, null);\n    }\n}\nexports.GlobalScope = GlobalScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MappedTypeScope = void 0;\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass MappedTypeScope extends ScopeBase_1.ScopeBase {\n    constructor(scopeManager, upperScope, block) {\n        super(scopeManager, ScopeType_1.ScopeType.mappedType, upperScope, block, false);\n    }\n}\nexports.MappedTypeScope = MappedTypeScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ModuleScope = void 0;\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass ModuleScope extends ScopeBase_1.ScopeBase {\n    constructor(scopeManager, upperScope, block) {\n        super(scopeManager, ScopeType_1.ScopeType.module, upperScope, block, false);\n    }\n}\nexports.ModuleScope = ModuleScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SwitchScope = void 0;\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass SwitchScope extends ScopeBase_1.ScopeBase {\n    constructor(scopeManager, upperScope, block) {\n        super(scopeManager, ScopeType_1.ScopeType.switch, upperScope, block, false);\n    }\n}\nexports.SwitchScope = SwitchScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TSEnumScope = void 0;\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass TSEnumScope extends ScopeBase_1.ScopeBase {\n    constructor(scopeManager, upperScope, block) {\n        super(scopeManager, ScopeType_1.ScopeType.tsEnum, upperScope, block, false);\n    }\n}\nexports.TSEnumScope = TSEnumScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TSModuleScope = void 0;\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass TSModuleScope extends ScopeBase_1.ScopeBase {\n    constructor(scopeManager, upperScope, block) {\n        super(scopeManager, ScopeType_1.ScopeType.tsModule, upperScope, block, false);\n    }\n}\nexports.TSModuleScope = TSModuleScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeScope = void 0;\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass TypeScope extends ScopeBase_1.ScopeBase {\n    constructor(scopeManager, upperScope, block) {\n        super(scopeManager, ScopeType_1.ScopeType.type, upperScope, block, false);\n    }\n}\nexports.TypeScope = TypeScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WithScope = void 0;\nconst assert_1 = require(\"../assert\");\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass WithScope extends ScopeBase_1.ScopeBase {\n    constructor(scopeManager, upperScope, block) {\n        super(scopeManager, ScopeType_1.ScopeType.with, upperScope, block, false);\n    }\n    close(scopeManager) {\n        if (this.shouldStaticallyClose()) {\n            return super.close(scopeManager);\n        }\n        (0, assert_1.assert)(this.leftToResolve);\n        this.leftToResolve.forEach(ref => this.delegateToUpperScope(ref));\n        this.leftToResolve = null;\n        return this.upper;\n    }\n}\nexports.WithScope = WithScope;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./BlockScope\"), exports);\n__exportStar(require(\"./CatchScope\"), exports);\n__exportStar(require(\"./ClassFieldInitializerScope\"), exports);\n__exportStar(require(\"./ClassScope\"), exports);\n__exportStar(require(\"./ConditionalTypeScope\"), exports);\n__exportStar(require(\"./ForScope\"), exports);\n__exportStar(require(\"./FunctionExpressionNameScope\"), exports);\n__exportStar(require(\"./FunctionScope\"), exports);\n__exportStar(require(\"./FunctionTypeScope\"), exports);\n__exportStar(require(\"./GlobalScope\"), exports);\n__exportStar(require(\"./MappedTypeScope\"), exports);\n__exportStar(require(\"./ModuleScope\"), exports);\n__exportStar(require(\"./Scope\"), exports);\n__exportStar(require(\"./ScopeType\"), exports);\n__exportStar(require(\"./SwitchScope\"), exports);\n__exportStar(require(\"./TSEnumScope\"), exports);\n__exportStar(require(\"./TSModuleScope\"), exports);\n__exportStar(require(\"./TypeScope\"), exports);\n__exportStar(require(\"./WithScope\"), exports);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VisitorBase = void 0;\nconst visitor_keys_1 = require(\"@typescript-eslint/visitor-keys\");\nfunction isObject(obj) {\n    return typeof obj === 'object' && obj != null;\n}\nfunction isNode(node) {\n    return isObject(node) && typeof node.type === 'string';\n}\nclass VisitorBase {\n    #childVisitorKeys;\n    #visitChildrenEvenIfSelectorExists;\n    constructor(options) {\n        this.#childVisitorKeys = options.childVisitorKeys ?? visitor_keys_1.visitorKeys;\n        this.#visitChildrenEvenIfSelectorExists =\n            options.visitChildrenEvenIfSelectorExists ?? false;\n    }\n    /**\n     * Default method for visiting children.\n     * @param node the node whose children should be visited\n     * @param excludeArr a list of keys to not visit\n     */\n    visitChildren(node, excludeArr = []) {\n        if (node?.type == null) {\n            return;\n        }\n        const exclude = new Set([...excludeArr, 'parent']);\n        const children = this.#childVisitorKeys[node.type] ?? Object.keys(node);\n        for (const key of children) {\n            if (exclude.has(key)) {\n                continue;\n            }\n            const child = node[key];\n            if (!child) {\n                continue;\n            }\n            if (Array.isArray(child)) {\n                for (const subChild of child) {\n                    if (isNode(subChild)) {\n                        this.visit(subChild);\n                    }\n                }\n            }\n            else if (isNode(child)) {\n                this.visit(child);\n            }\n        }\n    }\n    /**\n     * Dispatching node.\n     */\n    visit(node) {\n        if (node?.type == null) {\n            return;\n        }\n        const visitor = this[node.type];\n        if (visitor) {\n            visitor.call(this, node);\n            if (!this.#visitChildrenEvenIfSelectorExists) {\n                return;\n            }\n        }\n        this.visitChildren(node);\n    }\n}\nexports.VisitorBase = VisitorBase;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PatternVisitor = void 0;\nconst types_1 = require(\"@typescript-eslint/types\");\nconst VisitorBase_1 = require(\"./VisitorBase\");\nclass PatternVisitor extends VisitorBase_1.VisitorBase {\n    #assignments = [];\n    #callback;\n    #restElements = [];\n    #rootPattern;\n    rightHandNodes = [];\n    constructor(options, rootPattern, callback) {\n        super(options);\n        this.#rootPattern = rootPattern;\n        this.#callback = callback;\n    }\n    static isPattern(node) {\n        const nodeType = node.type;\n        return (nodeType === types_1.AST_NODE_TYPES.Identifier ||\n            nodeType === types_1.AST_NODE_TYPES.ObjectPattern ||\n            nodeType === types_1.AST_NODE_TYPES.ArrayPattern ||\n            nodeType === types_1.AST_NODE_TYPES.SpreadElement ||\n            nodeType === types_1.AST_NODE_TYPES.RestElement ||\n            nodeType === types_1.AST_NODE_TYPES.AssignmentPattern);\n    }\n    ArrayExpression(node) {\n        node.elements.forEach(this.visit, this);\n    }\n    ArrayPattern(pattern) {\n        for (const element of pattern.elements) {\n            this.visit(element);\n        }\n    }\n    AssignmentExpression(node) {\n        this.#assignments.push(node);\n        this.visit(node.left);\n        this.rightHandNodes.push(node.right);\n        this.#assignments.pop();\n    }\n    AssignmentPattern(pattern) {\n        this.#assignments.push(pattern);\n        this.visit(pattern.left);\n        this.rightHandNodes.push(pattern.right);\n        this.#assignments.pop();\n    }\n    CallExpression(node) {\n        // arguments are right hand nodes.\n        node.arguments.forEach(a => {\n            this.rightHandNodes.push(a);\n        });\n        this.visit(node.callee);\n    }\n    Decorator() {\n        // don't visit any decorators when exploring a pattern\n    }\n    Identifier(pattern) {\n        const lastRestElement = this.#restElements.at(-1);\n        this.#callback(pattern, {\n            assignments: this.#assignments,\n            rest: lastRestElement?.argument === pattern,\n            topLevel: pattern === this.#rootPattern,\n        });\n    }\n    MemberExpression(node) {\n        // Computed property's key is a right hand node.\n        if (node.computed) {\n            this.rightHandNodes.push(node.property);\n        }\n        // the object is only read, write to its property.\n        this.rightHandNodes.push(node.object);\n    }\n    Property(property) {\n        // Computed property's key is a right hand node.\n        if (property.computed) {\n            this.rightHandNodes.push(property.key);\n        }\n        // If it's shorthand, its key is same as its value.\n        // If it's shorthand and has its default value, its key is same as its value.left (the value is AssignmentPattern).\n        // If it's not shorthand, the name of new variable is its value's.\n        this.visit(property.value);\n    }\n    RestElement(pattern) {\n        this.#restElements.push(pattern);\n        this.visit(pattern.argument);\n        this.#restElements.pop();\n    }\n    SpreadElement(node) {\n        this.visit(node.argument);\n    }\n    TSTypeAnnotation() {\n        // we don't want to visit types\n    }\n}\nexports.PatternVisitor = PatternVisitor;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VisitorBase = exports.Visitor = void 0;\nconst PatternVisitor_1 = require(\"./PatternVisitor\");\nconst VisitorBase_1 = require(\"./VisitorBase\");\nclass Visitor extends VisitorBase_1.VisitorBase {\n    #options;\n    constructor(optionsOrVisitor) {\n        super(optionsOrVisitor instanceof Visitor\n            ? optionsOrVisitor.#options\n            : optionsOrVisitor);\n        this.#options =\n            optionsOrVisitor instanceof Visitor\n                ? optionsOrVisitor.#options\n                : optionsOrVisitor;\n    }\n    visitPattern(node, callback, options = { processRightHandNodes: false }) {\n        // Call the callback at left hand identifier nodes, and Collect right hand nodes.\n        const visitor = new PatternVisitor_1.PatternVisitor(this.#options, node, callback);\n        visitor.visit(node);\n        // Process the right hand nodes recursively.\n        if (options.processRightHandNodes) {\n            visitor.rightHandNodes.forEach(this.visit, this);\n        }\n    }\n}\nexports.Visitor = Visitor;\nvar VisitorBase_2 = require(\"./VisitorBase\");\nObject.defineProperty(exports, \"VisitorBase\", { enumerable: true, get: function () { return VisitorBase_2.VisitorBase; } });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeVisitor = void 0;\nconst types_1 = require(\"@typescript-eslint/types\");\nconst definition_1 = require(\"../definition\");\nconst scope_1 = require(\"../scope\");\nconst Visitor_1 = require(\"./Visitor\");\nclass TypeVisitor extends Visitor_1.Visitor {\n    #referencer;\n    constructor(referencer) {\n        super(referencer);\n        this.#referencer = referencer;\n    }\n    static visit(referencer, node) {\n        const typeReferencer = new TypeVisitor(referencer);\n        typeReferencer.visit(node);\n    }\n    ///////////////////\n    // Visit helpers //\n    ///////////////////\n    visitFunctionType(node) {\n        // arguments and type parameters can only be referenced from within the function\n        this.#referencer.scopeManager.nestFunctionTypeScope(node);\n        this.visit(node.typeParameters);\n        for (const param of node.params) {\n            let didVisitAnnotation = false;\n            this.visitPattern(param, (pattern, info) => {\n                // a parameter name creates a value type variable which can be referenced later via typeof arg\n                this.#referencer\n                    .currentScope()\n                    .defineIdentifier(pattern, new definition_1.ParameterDefinition(pattern, node, info.rest));\n                if (pattern.typeAnnotation) {\n                    this.visit(pattern.typeAnnotation);\n                    didVisitAnnotation = true;\n                }\n            });\n            // there are a few special cases where the type annotation is owned by the parameter, not the pattern\n            // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n            if (!didVisitAnnotation && 'typeAnnotation' in param) {\n                this.visit(param.typeAnnotation);\n            }\n        }\n        this.visit(node.returnType);\n        this.#referencer.close(node);\n    }\n    visitPropertyKey(node) {\n        if (!node.computed) {\n            return;\n        }\n        // computed members are treated as value references, and TS expects they have a literal type\n        this.#referencer.visit(node.key);\n    }\n    /////////////////////\n    // Visit selectors //\n    /////////////////////\n    Identifier(node) {\n        this.#referencer.currentScope().referenceType(node);\n    }\n    MemberExpression(node) {\n        this.visit(node.object);\n        // don't visit the property\n    }\n    TSCallSignatureDeclaration(node) {\n        this.visitFunctionType(node);\n    }\n    TSConditionalType(node) {\n        // conditional types can define inferred type parameters\n        // which are only accessible from inside the conditional parameter\n        this.#referencer.scopeManager.nestConditionalTypeScope(node);\n        // type parameters inferred in the condition clause are not accessible within the false branch\n        this.visitChildren(node, ['falseType']);\n        this.#referencer.close(node);\n        this.visit(node.falseType);\n    }\n    TSConstructorType(node) {\n        this.visitFunctionType(node);\n    }\n    TSConstructSignatureDeclaration(node) {\n        this.visitFunctionType(node);\n    }\n    TSFunctionType(node) {\n        this.visitFunctionType(node);\n    }\n    TSImportType(node) {\n        // the TS parser allows any type to be the parameter, but it's a syntax error - so we can ignore it\n        this.visit(node.typeArguments);\n        // the qualifier is just part of a standard EntityName, so it should not be visited\n    }\n    TSIndexSignature(node) {\n        for (const param of node.parameters) {\n            if (param.type === types_1.AST_NODE_TYPES.Identifier) {\n                this.visit(param.typeAnnotation);\n            }\n        }\n        this.visit(node.typeAnnotation);\n    }\n    TSInferType(node) {\n        const typeParameter = node.typeParameter;\n        let scope = this.#referencer.currentScope();\n        /*\n        In cases where there is a sub-type scope created within a conditional type, then the generic should be defined in the\n        conditional type's scope, not the child type scope.\n        If we define it within the child type's scope then it won't be able to be referenced outside the child type\n        */\n        if (scope.type === scope_1.ScopeType.functionType ||\n            scope.type === scope_1.ScopeType.mappedType) {\n            // search up the scope tree to figure out if we're in a nested type scope\n            let currentScope = scope.upper;\n            while (currentScope) {\n                if (currentScope.type === scope_1.ScopeType.functionType ||\n                    currentScope.type === scope_1.ScopeType.mappedType) {\n                    // ensure valid type parents only\n                    currentScope = currentScope.upper;\n                    continue;\n                }\n                if (currentScope.type === scope_1.ScopeType.conditionalType) {\n                    scope = currentScope;\n                    break;\n                }\n                break;\n            }\n        }\n        scope.defineIdentifier(typeParameter.name, new definition_1.TypeDefinition(typeParameter.name, typeParameter));\n        this.visit(typeParameter.constraint);\n    }\n    TSInterfaceDeclaration(node) {\n        this.#referencer\n            .currentScope()\n            .defineIdentifier(node.id, new definition_1.TypeDefinition(node.id, node));\n        if (node.typeParameters) {\n            // type parameters cannot be referenced from outside their current scope\n            this.#referencer.scopeManager.nestTypeScope(node);\n            this.visit(node.typeParameters);\n        }\n        node.extends.forEach(this.visit, this);\n        this.visit(node.body);\n        if (node.typeParameters) {\n            this.#referencer.close(node);\n        }\n    }\n    TSMappedType(node) {\n        // mapped types key can only be referenced within their return value\n        this.#referencer.scopeManager.nestMappedTypeScope(node);\n        this.#referencer\n            .currentScope()\n            .defineIdentifier(node.key, new definition_1.TypeDefinition(node.key, node));\n        this.visit(node.constraint);\n        this.visit(node.nameType);\n        this.visit(node.typeAnnotation);\n        this.#referencer.close(node);\n    }\n    TSMethodSignature(node) {\n        this.visitPropertyKey(node);\n        this.visitFunctionType(node);\n    }\n    TSNamedTupleMember(node) {\n        this.visit(node.elementType);\n        // we don't visit the label as the label only exists for the purposes of documentation\n    }\n    TSPropertySignature(node) {\n        this.visitPropertyKey(node);\n        this.visit(node.typeAnnotation);\n    }\n    TSQualifiedName(node) {\n        this.visit(node.left);\n        // we don't visit the right as it a name on the thing, not a name to reference\n    }\n    TSTypeAliasDeclaration(node) {\n        this.#referencer\n            .currentScope()\n            .defineIdentifier(node.id, new definition_1.TypeDefinition(node.id, node));\n        if (node.typeParameters) {\n            // type parameters cannot be referenced from outside their current scope\n            this.#referencer.scopeManager.nestTypeScope(node);\n            this.visit(node.typeParameters);\n        }\n        this.visit(node.typeAnnotation);\n        if (node.typeParameters) {\n            this.#referencer.close(node);\n        }\n    }\n    TSTypeParameter(node) {\n        this.#referencer\n            .currentScope()\n            .defineIdentifier(node.name, new definition_1.TypeDefinition(node.name, node));\n        this.visit(node.constraint);\n        this.visit(node.default);\n    }\n    TSTypePredicate(node) {\n        if (node.parameterName.type !== types_1.AST_NODE_TYPES.TSThisType) {\n            this.#referencer.currentScope().referenceValue(node.parameterName);\n        }\n        this.visit(node.typeAnnotation);\n    }\n    // a type query `typeof foo` is a special case that references a _non-type_ variable,\n    TSTypeAnnotation(node) {\n        // check\n        this.visitChildren(node);\n    }\n    TSTypeQuery(node) {\n        let entityName;\n        if (node.exprName.type === types_1.AST_NODE_TYPES.TSQualifiedName) {\n            let iter = node.exprName;\n            while (iter.left.type === types_1.AST_NODE_TYPES.TSQualifiedName) {\n                iter = iter.left;\n            }\n            entityName = iter.left;\n        }\n        else {\n            entityName = node.exprName;\n            if (node.exprName.type === types_1.AST_NODE_TYPES.TSImportType) {\n                this.visit(node.exprName);\n            }\n        }\n        if (entityName.type === types_1.AST_NODE_TYPES.Identifier) {\n            this.#referencer.currentScope().referenceValue(entityName);\n        }\n        this.visit(node.typeArguments);\n    }\n}\nexports.TypeVisitor = TypeVisitor;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClassVisitor = void 0;\nconst types_1 = require(\"@typescript-eslint/types\");\nconst definition_1 = require(\"../definition\");\nconst TypeVisitor_1 = require(\"./TypeVisitor\");\nconst Visitor_1 = require(\"./Visitor\");\nclass ClassVisitor extends Visitor_1.Visitor {\n    #referencer;\n    constructor(referencer) {\n        super(referencer);\n        this.#referencer = referencer;\n    }\n    static visit(referencer, node) {\n        const classVisitor = new ClassVisitor(referencer);\n        classVisitor.visitClass(node);\n    }\n    visit(node) {\n        // make sure we only handle the nodes we are designed to handle\n        if (node && node.type in this) {\n            super.visit(node);\n        }\n        else {\n            this.#referencer.visit(node);\n        }\n    }\n    ///////////////////\n    // Visit helpers //\n    ///////////////////\n    visitClass(node) {\n        if (node.type === types_1.AST_NODE_TYPES.ClassDeclaration && node.id) {\n            this.#referencer\n                .currentScope()\n                .defineIdentifier(node.id, new definition_1.ClassNameDefinition(node.id, node));\n        }\n        node.decorators.forEach(d => this.#referencer.visit(d));\n        this.#referencer.scopeManager.nestClassScope(node);\n        if (node.id) {\n            // define the class name again inside the new scope\n            // references to the class should not resolve directly to the parent class\n            this.#referencer\n                .currentScope()\n                .defineIdentifier(node.id, new definition_1.ClassNameDefinition(node.id, node));\n        }\n        this.#referencer.visit(node.superClass);\n        // visit the type param declarations\n        this.visitType(node.typeParameters);\n        // then the usages\n        this.visitType(node.superTypeArguments);\n        node.implements.forEach(imp => this.visitType(imp));\n        this.visit(node.body);\n        this.#referencer.close(node);\n    }\n    visitFunctionParameterTypeAnnotation(node) {\n        switch (node.type) {\n            case types_1.AST_NODE_TYPES.AssignmentPattern:\n                this.visitType(node.left.typeAnnotation);\n                break;\n            case types_1.AST_NODE_TYPES.TSParameterProperty:\n                this.visitFunctionParameterTypeAnnotation(node.parameter);\n                break;\n            default:\n                this.visitType(node.typeAnnotation);\n        }\n    }\n    visitMethod(node) {\n        if (node.computed) {\n            this.#referencer.visit(node.key);\n        }\n        if (node.value.type === types_1.AST_NODE_TYPES.FunctionExpression) {\n            this.visitMethodFunction(node.value);\n        }\n        else {\n            this.#referencer.visit(node.value);\n        }\n        node.decorators.forEach(d => this.#referencer.visit(d));\n    }\n    visitMethodFunction(node) {\n        if (node.id) {\n            // FunctionExpression with name creates its special scope;\n            // FunctionExpressionNameScope.\n            this.#referencer.scopeManager.nestFunctionExpressionNameScope(node);\n        }\n        node.params.forEach(param => {\n            param.decorators.forEach(d => this.visit(d));\n        });\n        // Consider this function is in the MethodDefinition.\n        this.#referencer.scopeManager.nestFunctionScope(node, true);\n        // Process parameter declarations.\n        for (const param of node.params) {\n            this.visitPattern(param, (pattern, info) => {\n                this.#referencer\n                    .currentScope()\n                    .defineIdentifier(pattern, new definition_1.ParameterDefinition(pattern, node, info.rest));\n                this.#referencer.referencingDefaultValue(pattern, info.assignments, null, true);\n            }, { processRightHandNodes: true });\n            this.visitFunctionParameterTypeAnnotation(param);\n        }\n        this.visitType(node.returnType);\n        this.visitType(node.typeParameters);\n        this.#referencer.visitChildren(node.body);\n        this.#referencer.close(node);\n    }\n    visitPropertyBase(node) {\n        if (node.computed) {\n            this.#referencer.visit(node.key);\n        }\n        if (node.value) {\n            if (node.type === types_1.AST_NODE_TYPES.PropertyDefinition ||\n                node.type === types_1.AST_NODE_TYPES.AccessorProperty) {\n                this.#referencer.scopeManager.nestClassFieldInitializerScope(node.value);\n            }\n            this.#referencer.visit(node.value);\n            if (node.type === types_1.AST_NODE_TYPES.PropertyDefinition ||\n                node.type === types_1.AST_NODE_TYPES.AccessorProperty) {\n                this.#referencer.close(node.value);\n            }\n        }\n        node.decorators.forEach(d => this.#referencer.visit(d));\n    }\n    visitPropertyDefinition(node) {\n        this.visitPropertyBase(node);\n        /**\n         * class A {\n         *   @meta     // <--- check this\n         *   foo: Type;\n         * }\n         */\n        this.visitType(node.typeAnnotation);\n    }\n    visitType(node) {\n        if (!node) {\n            return;\n        }\n        TypeVisitor_1.TypeVisitor.visit(this.#referencer, node);\n    }\n    /////////////////////\n    // Visit selectors //\n    /////////////////////\n    AccessorProperty(node) {\n        this.visitPropertyDefinition(node);\n    }\n    ClassBody(node) {\n        // this is here on purpose so that this visitor explicitly declares visitors\n        // for all nodes it cares about (see the instance visit method above)\n        this.visitChildren(node);\n    }\n    Identifier(node) {\n        this.#referencer.visit(node);\n    }\n    MethodDefinition(node) {\n        this.visitMethod(node);\n    }\n    PrivateIdentifier() {\n        // intentionally skip\n    }\n    PropertyDefinition(node) {\n        this.visitPropertyDefinition(node);\n    }\n    StaticBlock(node) {\n        this.#referencer.scopeManager.nestClassStaticBlockScope(node);\n        node.body.forEach(b => this.visit(b));\n        this.#referencer.close(node);\n    }\n    TSAbstractAccessorProperty(node) {\n        this.visitPropertyDefinition(node);\n    }\n    TSAbstractMethodDefinition(node) {\n        this.visitPropertyBase(node);\n    }\n    TSAbstractPropertyDefinition(node) {\n        this.visitPropertyDefinition(node);\n    }\n    TSIndexSignature(node) {\n        this.visitType(node);\n    }\n}\nexports.ClassVisitor = ClassVisitor;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExportVisitor = void 0;\nconst types_1 = require(\"@typescript-eslint/types\");\nconst Visitor_1 = require(\"./Visitor\");\nclass ExportVisitor extends Visitor_1.Visitor {\n    #exportNode;\n    #referencer;\n    constructor(node, referencer) {\n        super(referencer);\n        this.#exportNode = node;\n        this.#referencer = referencer;\n    }\n    static visit(referencer, node) {\n        const exportReferencer = new ExportVisitor(node, referencer);\n        exportReferencer.visit(node);\n    }\n    ExportDefaultDeclaration(node) {\n        if (node.declaration.type === types_1.AST_NODE_TYPES.Identifier) {\n            // export default A;\n            // this could be a type or a variable\n            this.visit(node.declaration);\n        }\n        else {\n            // export const a = 1;\n            // export something();\n            // etc\n            // these not included in the scope of this visitor as they are all guaranteed to be values or declare variables\n        }\n    }\n    ExportNamedDeclaration(node) {\n        if (node.source) {\n            // export ... from 'foo';\n            // these are external identifiers so there shouldn't be references or defs\n            return;\n        }\n        if (!node.declaration) {\n            // export { x };\n            this.visitChildren(node);\n        }\n        else {\n            // export const x = 1;\n            // this is not included in the scope of this visitor as it creates a variable\n        }\n    }\n    ExportSpecifier(node) {\n        if (node.exportKind === 'type' &&\n            node.local.type === types_1.AST_NODE_TYPES.Identifier) {\n            // export { type T };\n            // type exports can only reference types\n            //\n            // we can't let this fall through to the Identifier selector because the exportKind is on this node\n            // and we don't have access to the `.parent` during scope analysis\n            this.#referencer.currentScope().referenceType(node.local);\n        }\n        else {\n            this.visit(node.local);\n        }\n    }\n    Identifier(node) {\n        if (this.#exportNode.exportKind === 'type') {\n            // export type { T };\n            // type exports can only reference types\n            this.#referencer.currentScope().referenceType(node);\n        }\n        else {\n            this.#referencer.currentScope().referenceDualValueType(node);\n        }\n    }\n}\nexports.ExportVisitor = ExportVisitor;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImportVisitor = void 0;\nconst definition_1 = require(\"../definition\");\nconst Visitor_1 = require(\"./Visitor\");\nclass ImportVisitor extends Visitor_1.Visitor {\n    #declaration;\n    #referencer;\n    constructor(declaration, referencer) {\n        super(referencer);\n        this.#declaration = declaration;\n        this.#referencer = referencer;\n    }\n    static visit(referencer, declaration) {\n        const importReferencer = new ImportVisitor(declaration, referencer);\n        importReferencer.visit(declaration);\n    }\n    ImportDefaultSpecifier(node) {\n        const local = node.local;\n        this.visitImport(local, node);\n    }\n    ImportNamespaceSpecifier(node) {\n        const local = node.local;\n        this.visitImport(local, node);\n    }\n    ImportSpecifier(node) {\n        const local = node.local;\n        this.visitImport(local, node);\n    }\n    visitImport(id, specifier) {\n        this.#referencer\n            .currentScope()\n            .defineIdentifier(id, new definition_1.ImportBindingDefinition(id, specifier, this.#declaration));\n    }\n}\nexports.ImportVisitor = ImportVisitor;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Referencer = void 0;\nconst types_1 = require(\"@typescript-eslint/types\");\nconst assert_1 = require(\"../assert\");\nconst definition_1 = require(\"../definition\");\nconst lib_1 = require(\"../lib\");\nconst ClassVisitor_1 = require(\"./ClassVisitor\");\nconst ExportVisitor_1 = require(\"./ExportVisitor\");\nconst ImportVisitor_1 = require(\"./ImportVisitor\");\nconst PatternVisitor_1 = require(\"./PatternVisitor\");\nconst Reference_1 = require(\"./Reference\");\nconst TypeVisitor_1 = require(\"./TypeVisitor\");\nconst Visitor_1 = require(\"./Visitor\");\n// Referencing variables and creating bindings.\nclass Referencer extends Visitor_1.Visitor {\n    #hasReferencedJsxFactory = false;\n    #hasReferencedJsxFragmentFactory = false;\n    #jsxFragmentName;\n    #jsxPragma;\n    #lib;\n    scopeManager;\n    constructor(options, scopeManager) {\n        super(options);\n        this.scopeManager = scopeManager;\n        this.#jsxPragma = options.jsxPragma;\n        this.#jsxFragmentName = options.jsxFragmentName;\n        this.#lib = options.lib;\n    }\n    populateGlobalsFromLib(globalScope) {\n        const libs = this.resolveLibDefinitions();\n        for (const lib of libs) {\n            for (const [name, variable] of lib.variables) {\n                globalScope.defineImplicitVariable(name, variable);\n            }\n        }\n        // Special implicit global for const assertions (`{} as const`, `<const>{}`)\n        globalScope.defineImplicitVariable('const', {\n            eslintImplicitGlobalSetting: 'readonly',\n            isTypeVariable: true,\n            isValueVariable: false,\n        });\n    }\n    /**\n     * Resolves lib names into a deduplicated set of LibDefinitions,\n     * including all transitive dependencies.\n     */\n    resolveLibDefinitions() {\n        const resolvedLibs = new Set();\n        // Resolve the top-level lib names into LibDefinition objects\n        for (const lib of this.#lib) {\n            const definition = lib_1.lib.get(lib);\n            if (!definition) {\n                throw new Error(`Invalid value for lib provided: ${lib}`);\n            }\n            resolvedLibs.add(definition);\n        }\n        // Expand transitive lib dependencies.\n        // New entries added to the Set during iteration will be visited exactly once.\n        for (const lib of resolvedLibs) {\n            for (const dependency of lib.libs) {\n                resolvedLibs.add(dependency);\n            }\n        }\n        return resolvedLibs;\n    }\n    close(node) {\n        while (this.currentScope(true) && node === this.currentScope().block) {\n            this.scopeManager.currentScope = this.currentScope().close(this.scopeManager);\n        }\n    }\n    currentScope(dontThrowOnNull) {\n        if (!dontThrowOnNull) {\n            (0, assert_1.assert)(this.scopeManager.currentScope, 'Expected currentScope to exist. This usually happens when analyze() is called with an incomplete AST node instead of a complete Program node.');\n        }\n        return this.scopeManager.currentScope;\n    }\n    referencingDefaultValue(pattern, assignments, maybeImplicitGlobal, init) {\n        assignments.forEach(assignment => {\n            this.currentScope().referenceValue(pattern, Reference_1.ReferenceFlag.Write, assignment.right, maybeImplicitGlobal, init);\n        });\n    }\n    /**\n     * Searches for a variable named \"name\" in the upper scopes and adds a pseudo-reference from itself to itself\n     */\n    referenceInSomeUpperScope(name) {\n        let scope = this.scopeManager.currentScope;\n        while (scope) {\n            const variable = scope.set.get(name);\n            if (!variable) {\n                scope = scope.upper;\n                continue;\n            }\n            scope.referenceValue(variable.identifiers[0]);\n            return true;\n        }\n        return false;\n    }\n    referenceJsxFragment() {\n        if (this.#jsxFragmentName == null ||\n            this.#hasReferencedJsxFragmentFactory) {\n            return;\n        }\n        this.#hasReferencedJsxFragmentFactory = this.referenceInSomeUpperScope(this.#jsxFragmentName);\n    }\n    referenceJsxPragma() {\n        if (this.#jsxPragma == null || this.#hasReferencedJsxFactory) {\n            return;\n        }\n        this.#hasReferencedJsxFactory = this.referenceInSomeUpperScope(this.#jsxPragma);\n    }\n    ///////////////////\n    // Visit helpers //\n    ///////////////////\n    visitClass(node) {\n        ClassVisitor_1.ClassVisitor.visit(this, node);\n    }\n    visitForIn(node) {\n        if (node.left.type === types_1.AST_NODE_TYPES.VariableDeclaration &&\n            node.left.kind !== 'var') {\n            this.scopeManager.nestForScope(node);\n        }\n        if (node.left.type === types_1.AST_NODE_TYPES.VariableDeclaration) {\n            this.visit(node.left);\n            this.visitPattern(node.left.declarations[0].id, pattern => {\n                this.currentScope().referenceValue(pattern, Reference_1.ReferenceFlag.Write, node.right, null, true);\n            });\n        }\n        else {\n            this.visitPattern(node.left, (pattern, info) => {\n                const maybeImplicitGlobal = !this.currentScope().isStrict\n                    ? {\n                        node,\n                        pattern,\n                    }\n                    : null;\n                this.referencingDefaultValue(pattern, info.assignments, maybeImplicitGlobal, false);\n                this.currentScope().referenceValue(pattern, Reference_1.ReferenceFlag.Write, node.right, maybeImplicitGlobal, false);\n            }, { processRightHandNodes: true });\n        }\n        this.visit(node.right);\n        this.visit(node.body);\n        this.close(node);\n    }\n    visitFunction(node) {\n        // FunctionDeclaration name is defined in upper scope\n        // NOTE: Not referring variableScope. It is intended.\n        // Since\n        //  in ES5, FunctionDeclaration should be in FunctionBody.\n        //  in ES6, FunctionDeclaration should be block scoped.\n        if (node.type === types_1.AST_NODE_TYPES.FunctionExpression) {\n            if (node.id) {\n                // FunctionExpression with name creates its special scope;\n                // FunctionExpressionNameScope.\n                this.scopeManager.nestFunctionExpressionNameScope(node);\n            }\n        }\n        else if (node.id) {\n            // id is defined in upper scope\n            this.currentScope().defineIdentifier(node.id, new definition_1.FunctionNameDefinition(node.id, node));\n        }\n        // Consider this function is in the MethodDefinition.\n        this.scopeManager.nestFunctionScope(node, false);\n        // Process parameter declarations.\n        for (const param of node.params) {\n            this.visitPattern(param, (pattern, info) => {\n                this.currentScope().defineIdentifier(pattern, new definition_1.ParameterDefinition(pattern, node, info.rest));\n                this.referencingDefaultValue(pattern, info.assignments, null, true);\n            }, { processRightHandNodes: true });\n            this.visitFunctionParameterTypeAnnotation(param);\n            param.decorators.forEach(d => this.visit(d));\n        }\n        this.visitType(node.returnType);\n        this.visitType(node.typeParameters);\n        // In TypeScript there are a number of function-like constructs which have no body,\n        // so check it exists before traversing\n        if (node.body) {\n            // Skip BlockStatement to prevent creating BlockStatement scope.\n            if (node.body.type === types_1.AST_NODE_TYPES.BlockStatement) {\n                this.visitChildren(node.body);\n            }\n            else {\n                this.visit(node.body);\n            }\n        }\n        this.close(node);\n    }\n    visitFunctionParameterTypeAnnotation(node) {\n        switch (node.type) {\n            case types_1.AST_NODE_TYPES.AssignmentPattern:\n                this.visitType(node.left.typeAnnotation);\n                break;\n            case types_1.AST_NODE_TYPES.TSParameterProperty:\n                this.visitFunctionParameterTypeAnnotation(node.parameter);\n                break;\n            default:\n                this.visitType(node.typeAnnotation);\n                break;\n        }\n    }\n    visitJSXElement(node) {\n        if (node.name.type === types_1.AST_NODE_TYPES.JSXIdentifier) {\n            if (node.name.name[0].toUpperCase() === node.name.name[0] ||\n                node.name.name === 'this') {\n                // lower cased component names are always treated as \"intrinsic\" names, and are converted to a string,\n                // not a variable by JSX transforms:\n                // <div /> => React.createElement(\"div\", null)\n                // the only case we want to visit a lower-cased component has its name as \"this\",\n                this.visit(node.name);\n            }\n        }\n        else {\n            this.visit(node.name);\n        }\n    }\n    visitProperty(node) {\n        if (node.computed) {\n            this.visit(node.key);\n        }\n        this.visit(node.value);\n    }\n    visitType(node) {\n        if (!node) {\n            return;\n        }\n        TypeVisitor_1.TypeVisitor.visit(this, node);\n    }\n    visitTypeAssertion(node) {\n        this.visit(node.expression);\n        this.visitType(node.typeAnnotation);\n    }\n    /////////////////////\n    // Visit selectors //\n    /////////////////////\n    ArrowFunctionExpression(node) {\n        this.visitFunction(node);\n    }\n    AssignmentExpression(node) {\n        const left = this.visitExpressionTarget(node.left);\n        if (PatternVisitor_1.PatternVisitor.isPattern(left)) {\n            if (node.operator === '=') {\n                this.visitPattern(left, (pattern, info) => {\n                    const maybeImplicitGlobal = !this.currentScope().isStrict\n                        ? {\n                            node,\n                            pattern,\n                        }\n                        : null;\n                    this.referencingDefaultValue(pattern, info.assignments, maybeImplicitGlobal, false);\n                    this.currentScope().referenceValue(pattern, Reference_1.ReferenceFlag.Write, node.right, maybeImplicitGlobal, false);\n                }, { processRightHandNodes: true });\n            }\n            else if (left.type === types_1.AST_NODE_TYPES.Identifier) {\n                this.currentScope().referenceValue(left, Reference_1.ReferenceFlag.ReadWrite, node.right);\n            }\n        }\n        else {\n            this.visit(left);\n        }\n        this.visit(node.right);\n    }\n    BlockStatement(node) {\n        this.scopeManager.nestBlockScope(node);\n        this.visitChildren(node);\n        this.close(node);\n    }\n    BreakStatement() {\n        // don't reference the break statement's label\n    }\n    CallExpression(node) {\n        this.visitChildren(node, ['typeArguments']);\n        this.visitType(node.typeArguments);\n    }\n    CatchClause(node) {\n        this.scopeManager.nestCatchScope(node);\n        if (node.param) {\n            this.visitPattern(node.param, (pattern, info) => {\n                this.currentScope().defineIdentifier(pattern, new definition_1.CatchClauseDefinition(pattern, node));\n                this.referencingDefaultValue(pattern, info.assignments, null, true);\n            }, { processRightHandNodes: true });\n        }\n        this.visit(node.body);\n        this.close(node);\n    }\n    ClassDeclaration(node) {\n        this.visitClass(node);\n    }\n    ClassExpression(node) {\n        this.visitClass(node);\n    }\n    ContinueStatement() {\n        // don't reference the continue statement's label\n    }\n    ExportAllDeclaration() {\n        // this defines no local variables\n    }\n    ExportDefaultDeclaration(node) {\n        if (node.declaration.type === types_1.AST_NODE_TYPES.Identifier) {\n            ExportVisitor_1.ExportVisitor.visit(this, node);\n        }\n        else {\n            this.visit(node.declaration);\n        }\n    }\n    ExportNamedDeclaration(node) {\n        if (node.declaration) {\n            this.visit(node.declaration);\n        }\n        else {\n            ExportVisitor_1.ExportVisitor.visit(this, node);\n        }\n    }\n    ForInStatement(node) {\n        this.visitForIn(node);\n    }\n    ForOfStatement(node) {\n        this.visitForIn(node);\n    }\n    ForStatement(node) {\n        // Create ForStatement declaration.\n        // NOTE: In ES6, ForStatement dynamically generates per iteration environment. However, this is\n        // a static analyzer, we only generate one scope for ForStatement.\n        if (node.init?.type === types_1.AST_NODE_TYPES.VariableDeclaration &&\n            node.init.kind !== 'var') {\n            this.scopeManager.nestForScope(node);\n        }\n        this.visitChildren(node);\n        this.close(node);\n    }\n    FunctionDeclaration(node) {\n        this.visitFunction(node);\n    }\n    FunctionExpression(node) {\n        this.visitFunction(node);\n    }\n    Identifier(node) {\n        this.currentScope().referenceValue(node);\n        this.visitType(node.typeAnnotation);\n    }\n    ImportAttribute() {\n        // import assertions are module metadata and thus have no variables to reference\n    }\n    ImportDeclaration(node) {\n        (0, assert_1.assert)(this.scopeManager.isModule(), 'ImportDeclaration should appear when the mode is ES6 and in the module context.');\n        ImportVisitor_1.ImportVisitor.visit(this, node);\n    }\n    JSXAttribute(node) {\n        this.visit(node.value);\n    }\n    JSXClosingElement(node) {\n        this.visitJSXElement(node);\n    }\n    JSXFragment(node) {\n        this.referenceJsxPragma();\n        this.referenceJsxFragment();\n        this.visitChildren(node);\n    }\n    JSXIdentifier(node) {\n        this.currentScope().referenceValue(node);\n    }\n    JSXMemberExpression(node) {\n        if (node.object.type !== types_1.AST_NODE_TYPES.JSXIdentifier ||\n            node.object.name !== 'this') {\n            this.visit(node.object);\n        }\n        // we don't ever reference the property as it's always going to be a property on the thing\n    }\n    JSXOpeningElement(node) {\n        this.referenceJsxPragma();\n        this.visitJSXElement(node);\n        this.visitType(node.typeArguments);\n        for (const attr of node.attributes) {\n            this.visit(attr);\n        }\n    }\n    LabeledStatement(node) {\n        this.visit(node.body);\n    }\n    MemberExpression(node) {\n        this.visit(node.object);\n        if (node.computed) {\n            this.visit(node.property);\n        }\n    }\n    MetaProperty() {\n        // meta properties all builtin globals\n    }\n    NewExpression(node) {\n        this.visitChildren(node, ['typeArguments']);\n        this.visitType(node.typeArguments);\n    }\n    PrivateIdentifier() {\n        // private identifiers are members on classes and thus have no variables to reference\n    }\n    Program(node) {\n        const globalScope = this.scopeManager.nestGlobalScope(node);\n        this.populateGlobalsFromLib(globalScope);\n        if (this.scopeManager.isGlobalReturn()) {\n            // Force strictness of GlobalScope to false when using node.js scope.\n            this.currentScope().isStrict = false;\n            this.scopeManager.nestFunctionScope(node, false);\n        }\n        if (this.scopeManager.isModule()) {\n            this.scopeManager.nestModuleScope(node);\n        }\n        if (this.scopeManager.isImpliedStrict()) {\n            this.currentScope().isStrict = true;\n        }\n        this.visitChildren(node);\n        this.close(node);\n    }\n    Property(node) {\n        this.visitProperty(node);\n    }\n    SwitchStatement(node) {\n        this.visit(node.discriminant);\n        this.scopeManager.nestSwitchScope(node);\n        for (const switchCase of node.cases) {\n            this.visit(switchCase);\n        }\n        this.close(node);\n    }\n    TaggedTemplateExpression(node) {\n        this.visit(node.tag);\n        this.visit(node.quasi);\n        this.visitType(node.typeArguments);\n    }\n    TSAsExpression(node) {\n        this.visitTypeAssertion(node);\n    }\n    TSDeclareFunction(node) {\n        this.visitFunction(node);\n    }\n    TSEmptyBodyFunctionExpression(node) {\n        this.visitFunction(node);\n    }\n    TSEnumDeclaration(node) {\n        this.currentScope().defineIdentifier(node.id, new definition_1.TSEnumNameDefinition(node.id, node));\n        // enum members can be referenced within the enum body\n        this.scopeManager.nestTSEnumScope(node);\n        for (const member of node.body.members) {\n            // TS resolves literal named members to be actual names\n            // enum Foo {\n            //   'a' = 1,\n            //   b = a, // this references the 'a' member\n            // }\n            if (member.id.type === types_1.AST_NODE_TYPES.Literal &&\n                typeof member.id.value === 'string') {\n                const name = member.id;\n                this.currentScope().defineLiteralIdentifier(name, new definition_1.TSEnumMemberDefinition(name, member));\n            }\n            else if (member.id.type === types_1.AST_NODE_TYPES.Identifier) {\n                this.currentScope().defineIdentifier(member.id, new definition_1.TSEnumMemberDefinition(member.id, member));\n            }\n            this.visit(member.initializer);\n        }\n        this.close(node);\n    }\n    TSExportAssignment(node) {\n        if (node.expression.type === types_1.AST_NODE_TYPES.Identifier) {\n            // this is a special case - you can `export = T` where `T` is a type OR a\n            // value however `T[U]` is illegal when `T` is a type and `T.U` is illegal\n            // when `T.U` is a type\n            // i.e. if the expression is JUST an Identifier - it could be either ref\n            // kind; otherwise the standard rules apply\n            this.currentScope().referenceDualValueType(node.expression);\n        }\n        else {\n            this.visit(node.expression);\n        }\n    }\n    TSImportEqualsDeclaration(node) {\n        this.currentScope().defineIdentifier(node.id, new definition_1.ImportBindingDefinition(node.id, node, node));\n        if (node.moduleReference.type === types_1.AST_NODE_TYPES.TSQualifiedName) {\n            let moduleIdentifier = node.moduleReference.left;\n            while (moduleIdentifier.type === types_1.AST_NODE_TYPES.TSQualifiedName) {\n                moduleIdentifier = moduleIdentifier.left;\n            }\n            this.visit(moduleIdentifier);\n        }\n        else {\n            this.visit(node.moduleReference);\n        }\n    }\n    TSInstantiationExpression(node) {\n        this.visitChildren(node, ['typeArguments']);\n        this.visitType(node.typeArguments);\n    }\n    TSInterfaceDeclaration(node) {\n        this.visitType(node);\n    }\n    TSModuleDeclaration(node) {\n        if (node.id.type === types_1.AST_NODE_TYPES.Identifier && node.kind !== 'global') {\n            this.currentScope().defineIdentifier(node.id, new definition_1.TSModuleNameDefinition(node.id, node));\n        }\n        this.scopeManager.nestTSModuleScope(node);\n        this.visit(node.body);\n        this.close(node);\n    }\n    TSSatisfiesExpression(node) {\n        this.visitTypeAssertion(node);\n    }\n    TSTypeAliasDeclaration(node) {\n        this.visitType(node);\n    }\n    TSTypeAssertion(node) {\n        this.visitTypeAssertion(node);\n    }\n    UpdateExpression(node) {\n        const argument = this.visitExpressionTarget(node.argument);\n        if (PatternVisitor_1.PatternVisitor.isPattern(argument)) {\n            this.visitPattern(argument, pattern => {\n                this.currentScope().referenceValue(pattern, Reference_1.ReferenceFlag.ReadWrite, null);\n            });\n        }\n        else {\n            this.visitChildren(node);\n        }\n    }\n    VariableDeclaration(node) {\n        const variableTargetScope = node.kind === 'var'\n            ? this.currentScope().variableScope\n            : this.currentScope();\n        for (const decl of node.declarations) {\n            const init = decl.init;\n            this.visitPattern(decl.id, (pattern, info) => {\n                variableTargetScope.defineIdentifier(pattern, new definition_1.VariableDefinition(pattern, decl, node));\n                this.referencingDefaultValue(pattern, info.assignments, null, true);\n                if (init) {\n                    this.currentScope().referenceValue(pattern, Reference_1.ReferenceFlag.Write, init, null, true);\n                }\n            }, { processRightHandNodes: true });\n            this.visit(decl.init);\n            this.visitType(decl.id.typeAnnotation);\n        }\n    }\n    WithStatement(node) {\n        this.visit(node.object);\n        // Then nest scope for WithStatement.\n        this.scopeManager.nestWithScope(node);\n        this.visit(node.body);\n        this.close(node);\n    }\n    visitExpressionTarget(left) {\n        switch (left.type) {\n            case types_1.AST_NODE_TYPES.TSAsExpression:\n            case types_1.AST_NODE_TYPES.TSTypeAssertion:\n                // explicitly visit the type annotation\n                this.visitType(left.typeAnnotation);\n            // intentional fallthrough\n            case types_1.AST_NODE_TYPES.TSNonNullExpression:\n                // unwrap the expression\n                left = left.expression;\n        }\n        return left;\n    }\n}\nexports.Referencer = Referencer;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Referencer = void 0;\nvar Referencer_1 = require(\"./Referencer\");\nObject.defineProperty(exports, \"Referencer\", { enumerable: true, get: function () { return Referencer_1.Referencer; } });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClassStaticBlockScope = void 0;\nconst ScopeBase_1 = require(\"./ScopeBase\");\nconst ScopeType_1 = require(\"./ScopeType\");\nclass ClassStaticBlockScope extends ScopeBase_1.ScopeBase {\n    constructor(scopeManager, upperScope, block) {\n        super(scopeManager, ScopeType_1.ScopeType.classStaticBlock, upperScope, block, false);\n    }\n}\nexports.ClassStaticBlockScope = ClassStaticBlockScope;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScopeManager = void 0;\nconst assert_1 = require(\"./assert\");\nconst scope_1 = require(\"./scope\");\nconst ClassFieldInitializerScope_1 = require(\"./scope/ClassFieldInitializerScope\");\nconst ClassStaticBlockScope_1 = require(\"./scope/ClassStaticBlockScope\");\n/**\n * @see https://eslint.org/docs/latest/developer-guide/scope-manager-interface#scopemanager-interface\n */\nclass ScopeManager {\n    #options;\n    currentScope;\n    declaredVariables;\n    /**\n     * The root scope\n     */\n    globalScope;\n    nodeToScope;\n    /**\n     * All scopes\n     * @public\n     */\n    scopes;\n    constructor(options) {\n        this.scopes = [];\n        this.globalScope = null;\n        this.nodeToScope = new WeakMap();\n        this.currentScope = null;\n        this.#options = options;\n        this.declaredVariables = new WeakMap();\n    }\n    isES6() {\n        return true;\n    }\n    isGlobalReturn() {\n        return this.#options.globalReturn === true;\n    }\n    isImpliedStrict() {\n        return this.#options.impliedStrict === true;\n    }\n    isModule() {\n        return this.#options.sourceType === 'module';\n    }\n    isStrictModeSupported() {\n        return true;\n    }\n    get variables() {\n        const variables = new Set();\n        function recurse(scope) {\n            scope.variables.forEach(v => variables.add(v));\n            scope.childScopes.forEach(recurse);\n        }\n        this.scopes.forEach(recurse);\n        return [...variables].sort((a, b) => a.$id - b.$id);\n    }\n    /**\n     * Get the variables that a given AST node defines. The gotten variables' `def[].node`/`def[].parent` property is the node.\n     * If the node does not define any variable, this returns an empty array.\n     * @param node An AST node to get their variables.\n     */\n    getDeclaredVariables(node) {\n        return this.declaredVariables.get(node) ?? [];\n    }\n    /**\n     * Get the scope of a given AST node. The gotten scope's `block` property is the node.\n     * This method never returns `function-expression-name` scope. If the node does not have their scope, this returns `null`.\n     *\n     * @param node An AST node to get their scope.\n     * @param inner If the node has multiple scopes, this returns the outermost scope normally.\n     *                If `inner` is `true` then this returns the innermost scope.\n     */\n    acquire(node, inner = false) {\n        function predicate(testScope) {\n            if (testScope.type === scope_1.ScopeType.function &&\n                testScope.functionExpressionScope) {\n                return false;\n            }\n            return true;\n        }\n        const scopes = this.nodeToScope.get(node);\n        if (!scopes || scopes.length === 0) {\n            return null;\n        }\n        // Heuristic selection from all scopes.\n        // If you would like to get all scopes, please use ScopeManager#acquireAll.\n        if (scopes.length === 1) {\n            return scopes[0];\n        }\n        if (inner) {\n            for (let i = scopes.length - 1; i >= 0; --i) {\n                const scope = scopes[i];\n                if (predicate(scope)) {\n                    return scope;\n                }\n            }\n            return null;\n        }\n        return scopes.find(predicate) ?? null;\n    }\n    /**\n     * Adds dynamically created globals to the global scope and resolve their references.\n     * This method is called by ESLint.\n     * @param names Names of the globals to create\n     */\n    addGlobals(names) {\n        this.globalScope?.addVariables(names);\n    }\n    nestBlockScope(node) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new scope_1.BlockScope(this, this.currentScope, node));\n    }\n    nestCatchScope(node) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new scope_1.CatchScope(this, this.currentScope, node));\n    }\n    nestClassFieldInitializerScope(node) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new ClassFieldInitializerScope_1.ClassFieldInitializerScope(this, this.currentScope, node));\n    }\n    nestClassScope(node) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new scope_1.ClassScope(this, this.currentScope, node));\n    }\n    nestClassStaticBlockScope(node) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new ClassStaticBlockScope_1.ClassStaticBlockScope(this, this.currentScope, node));\n    }\n    nestConditionalTypeScope(node) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new scope_1.ConditionalTypeScope(this, this.currentScope, node));\n    }\n    nestForScope(node) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new scope_1.ForScope(this, this.currentScope, node));\n    }\n    nestFunctionExpressionNameScope(node) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new scope_1.FunctionExpressionNameScope(this, this.currentScope, node));\n    }\n    nestFunctionScope(node, isMethodDefinition) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new scope_1.FunctionScope(this, this.currentScope, node, isMethodDefinition));\n    }\n    nestFunctionTypeScope(node) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new scope_1.FunctionTypeScope(this, this.currentScope, node));\n    }\n    nestGlobalScope(node) {\n        return this.nestScope(new scope_1.GlobalScope(this, node));\n    }\n    nestMappedTypeScope(node) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new scope_1.MappedTypeScope(this, this.currentScope, node));\n    }\n    nestModuleScope(node) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new scope_1.ModuleScope(this, this.currentScope, node));\n    }\n    nestSwitchScope(node) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new scope_1.SwitchScope(this, this.currentScope, node));\n    }\n    nestTSEnumScope(node) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new scope_1.TSEnumScope(this, this.currentScope, node));\n    }\n    nestTSModuleScope(node) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new scope_1.TSModuleScope(this, this.currentScope, node));\n    }\n    nestTypeScope(node) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new scope_1.TypeScope(this, this.currentScope, node));\n    }\n    nestWithScope(node) {\n        (0, assert_1.assert)(this.currentScope);\n        return this.nestScope(new scope_1.WithScope(this, this.currentScope, node));\n    }\n    nestScope(scope) {\n        if (scope instanceof scope_1.GlobalScope) {\n            (0, assert_1.assert)(this.currentScope == null);\n            this.globalScope = scope;\n        }\n        this.currentScope = scope;\n        return scope;\n    }\n}\nexports.ScopeManager = ScopeManager;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.analyze = analyze;\nconst visitor_keys_1 = require(\"@typescript-eslint/visitor-keys\");\nconst referencer_1 = require(\"./referencer\");\nconst ScopeManager_1 = require(\"./ScopeManager\");\nconst DEFAULT_OPTIONS = {\n    childVisitorKeys: visitor_keys_1.visitorKeys,\n    emitDecoratorMetadata: false,\n    globalReturn: false,\n    impliedStrict: false,\n    jsxFragmentName: null,\n    jsxPragma: 'React',\n    lib: ['es2018'],\n    sourceType: 'script',\n};\n/**\n * Takes an AST and returns the analyzed scopes.\n */\nfunction analyze(tree, providedOptions) {\n    const options = {\n        childVisitorKeys: providedOptions?.childVisitorKeys ?? DEFAULT_OPTIONS.childVisitorKeys,\n        emitDecoratorMetadata: false,\n        globalReturn: providedOptions?.globalReturn ?? DEFAULT_OPTIONS.globalReturn,\n        impliedStrict: providedOptions?.impliedStrict ?? DEFAULT_OPTIONS.impliedStrict,\n        jsxFragmentName: providedOptions?.jsxFragmentName ?? DEFAULT_OPTIONS.jsxFragmentName,\n        jsxPragma: \n        // eslint-disable-next-line @typescript-eslint/internal/eqeq-nullish\n        providedOptions?.jsxPragma === undefined\n            ? DEFAULT_OPTIONS.jsxPragma\n            : providedOptions.jsxPragma,\n        lib: providedOptions?.lib ?? ['esnext'],\n        sourceType: providedOptions?.sourceType ?? DEFAULT_OPTIONS.sourceType,\n    };\n    // ensure the option is lower cased\n    options.lib = options.lib.map(l => l.toLowerCase());\n    const scopeManager = new ScopeManager_1.ScopeManager(options);\n    const referencer = new referencer_1.Referencer(options, scopeManager);\n    referencer.visit(tree);\n    return scopeManager;\n}\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScopeManager = exports.Visitor = exports.Reference = exports.PatternVisitor = exports.analyze = void 0;\nvar analyze_1 = require(\"./analyze\");\nObject.defineProperty(exports, \"analyze\", { enumerable: true, get: function () { return analyze_1.analyze; } });\n__exportStar(require(\"./definition\"), exports);\nvar PatternVisitor_1 = require(\"./referencer/PatternVisitor\");\nObject.defineProperty(exports, \"PatternVisitor\", { enumerable: true, get: function () { return PatternVisitor_1.PatternVisitor; } });\nvar Reference_1 = require(\"./referencer/Reference\");\nObject.defineProperty(exports, \"Reference\", { enumerable: true, get: function () { return Reference_1.Reference; } });\nvar Visitor_1 = require(\"./referencer/Visitor\");\nObject.defineProperty(exports, \"Visitor\", { enumerable: true, get: function () { return Visitor_1.Visitor; } });\n__exportStar(require(\"./scope\"), exports);\nvar ScopeManager_1 = require(\"./ScopeManager\");\nObject.defineProperty(exports, \"ScopeManager\", { enumerable: true, get: function () { return ScopeManager_1.ScopeManager; } });\n__exportStar(require(\"./variable\"), exports);\n", "\"use strict\";\n/* eslint-disable @typescript-eslint/no-namespace */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n    var ownKeys = function(o) {\n        ownKeys = Object.getOwnPropertyNames || function (o) {\n            var ar = [];\n            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n            return ar;\n        };\n        return ownKeys(o);\n    };\n    return function (mod) {\n        if (mod && mod.__esModule) return mod;\n        var result = {};\n        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n        __setModuleDefault(result, mod);\n        return result;\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Scope = void 0;\nconst scopeManager = __importStar(require(\"@typescript-eslint/scope-manager\"));\nvar Scope;\n(function (Scope) {\n    Scope.ScopeType = scopeManager.ScopeType;\n    Scope.DefinitionType = scopeManager.DefinitionType;\n})(Scope || (exports.Scope = Scope = {}));\n", "\"use strict\";\n/* eslint-disable @typescript-eslint/no-namespace, no-restricted-syntax */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SourceCode = void 0;\nconst eslint_1 = require(\"eslint\");\nclass SourceCode extends eslint_1.SourceCode {\n}\nexports.SourceCode = SourceCode;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./AST\"), exports);\n__exportStar(require(\"./Config\"), exports);\n__exportStar(require(\"./ESLint\"), exports);\n__exportStar(require(\"./Linter\"), exports);\n__exportStar(require(\"./Parser\"), exports);\n__exportStar(require(\"./ParserOptions\"), exports);\n__exportStar(require(\"./Processor\"), exports);\n__exportStar(require(\"./Rule\"), exports);\n__exportStar(require(\"./RuleTester\"), exports);\n__exportStar(require(\"./Scope\"), exports);\n__exportStar(require(\"./SourceCode\"), exports);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isArray = isArray;\n// https://github.com/microsoft/TypeScript/issues/17002\nfunction isArray(arg) {\n    return Array.isArray(arg);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./isArray\"), exports);\n__exportStar(require(\"./NoInfer\"), exports);\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n    var ownKeys = function(o) {\n        ownKeys = Object.getOwnPropertyNames || function (o) {\n            var ar = [];\n            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n            return ar;\n        };\n        return ownKeys(o);\n    };\n    return function (mod) {\n        if (mod && mod.__esModule) return mod;\n        var result = {};\n        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n        __setModuleDefault(result, mod);\n        return result;\n    };\n})();\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TSUtils = exports.TSESLint = exports.JSONSchema = exports.ESLintUtils = exports.ASTUtils = void 0;\nexports.ASTUtils = __importStar(require(\"./ast-utils\"));\nexports.ESLintUtils = __importStar(require(\"./eslint-utils\"));\nexports.JSONSchema = __importStar(require(\"./json-schema\"));\nexports.TSESLint = __importStar(require(\"./ts-eslint\"));\n__exportStar(require(\"./ts-estree\"), exports);\nexports.TSUtils = __importStar(require(\"./ts-utils\"));\n", "//\n// format - printf-like string formatting for JavaScript\n// github.com/samsonjs/format\n// @_sjs\n//\n// Copyright 2010 - 2013 Sami Samhuri <sami@samhuri.net>\n//\n// MIT License\n// http://sjs.mit-license.org\n//\n\n;(function() {\n\n  //// Export the API\n  var namespace;\n\n  // CommonJS / Node module\n  if (typeof module !== 'undefined') {\n    namespace = module.exports = format;\n  }\n\n  // Browsers and other environments\n  else {\n    // Get the global object. Works in ES3, ES5, and ES5 strict mode.\n    namespace = (function(){ return this || (1,eval)('this') }());\n  }\n\n  namespace.format = format;\n  namespace.vsprintf = vsprintf;\n\n  if (typeof console !== 'undefined' && typeof console.log === 'function') {\n    namespace.printf = printf;\n  }\n\n  function printf(/* ... */) {\n    console.log(format.apply(null, arguments));\n  }\n\n  function vsprintf(fmt, replacements) {\n    return format.apply(null, [fmt].concat(replacements));\n  }\n\n  function format(fmt) {\n    var argIndex = 1 // skip initial format argument\n      , args = [].slice.call(arguments)\n      , i = 0\n      , n = fmt.length\n      , result = ''\n      , c\n      , escaped = false\n      , arg\n      , tmp\n      , leadingZero = false\n      , precision\n      , nextArg = function() { return args[argIndex++]; }\n      , slurpNumber = function() {\n          var digits = '';\n          while (/\\d/.test(fmt[i])) {\n            digits += fmt[i++];\n            c = fmt[i];\n          }\n          return digits.length > 0 ? parseInt(digits) : null;\n        }\n      ;\n    for (; i < n; ++i) {\n      c = fmt[i];\n      if (escaped) {\n        escaped = false;\n        if (c == '.') {\n          leadingZero = false;\n          c = fmt[++i];\n        }\n        else if (c == '0' && fmt[i + 1] == '.') {\n          leadingZero = true;\n          i += 2;\n          c = fmt[i];\n        }\n        else {\n          leadingZero = true;\n        }\n        precision = slurpNumber();\n        switch (c) {\n        case 'b': // number in binary\n          result += parseInt(nextArg(), 10).toString(2);\n          break;\n        case 'c': // character\n          arg = nextArg();\n          if (typeof arg === 'string' || arg instanceof String)\n            result += arg;\n          else\n            result += String.fromCharCode(parseInt(arg, 10));\n          break;\n        case 'd': // number in decimal\n          result += parseInt(nextArg(), 10);\n          break;\n        case 'f': // floating point number\n          tmp = String(parseFloat(nextArg()).toFixed(precision || 6));\n          result += leadingZero ? tmp : tmp.replace(/^0/, '');\n          break;\n        case 'j': // JSON\n          result += JSON.stringify(nextArg());\n          break;\n        case 'o': // number in octal\n          result += '0' + parseInt(nextArg(), 10).toString(8);\n          break;\n        case 's': // string\n          result += nextArg();\n          break;\n        case 'x': // lowercase hexadecimal\n          result += '0x' + parseInt(nextArg(), 10).toString(16);\n          break;\n        case 'X': // uppercase hexadecimal\n          result += '0x' + parseInt(nextArg(), 10).toString(16).toUpperCase();\n          break;\n        default:\n          result += c;\n          break;\n        }\n      } else if (c === '%') {\n        escaped = true;\n      } else {\n        result += c;\n      }\n    }\n    return result;\n  }\n\n}());\n", "'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n", "/* global define */\n\n(function (root, pluralize) {\n  /* istanbul ignore else */\n  if (typeof require === 'function' && typeof exports === 'object' && typeof module === 'object') {\n    // Node.\n    module.exports = pluralize();\n  } else if (typeof define === 'function' && define.amd) {\n    // AMD, registers as an anonymous module.\n    define(function () {\n      return pluralize();\n    });\n  } else {\n    // Browser global.\n    root.pluralize = pluralize();\n  }\n})(this, function () {\n  // Rule storage - pluralize and singularize need to be run sequentially,\n  // while other rules can be optimized using an object for instant lookups.\n  var pluralRules = [];\n  var singularRules = [];\n  var uncountables = {};\n  var irregularPlurals = {};\n  var irregularSingles = {};\n\n  /**\n   * Sanitize a pluralization rule to a usable regular expression.\n   *\n   * @param  {(RegExp|string)} rule\n   * @return {RegExp}\n   */\n  function sanitizeRule (rule) {\n    if (typeof rule === 'string') {\n      return new RegExp('^' + rule + '$', 'i');\n    }\n\n    return rule;\n  }\n\n  /**\n   * Pass in a word token to produce a function that can replicate the case on\n   * another word.\n   *\n   * @param  {string}   word\n   * @param  {string}   token\n   * @return {Function}\n   */\n  function restoreCase (word, token) {\n    // Tokens are an exact match.\n    if (word === token) return token;\n\n    // Lower cased words. E.g. \"hello\".\n    if (word === word.toLowerCase()) return token.toLowerCase();\n\n    // Upper cased words. E.g. \"WHISKY\".\n    if (word === word.toUpperCase()) return token.toUpperCase();\n\n    // Title cased words. E.g. \"Title\".\n    if (word[0] === word[0].toUpperCase()) {\n      return token.charAt(0).toUpperCase() + token.substr(1).toLowerCase();\n    }\n\n    // Lower cased words. E.g. \"test\".\n    return token.toLowerCase();\n  }\n\n  /**\n   * Interpolate a regexp string.\n   *\n   * @param  {string} str\n   * @param  {Array}  args\n   * @return {string}\n   */\n  function interpolate (str, args) {\n    return str.replace(/\\$(\\d{1,2})/g, function (match, index) {\n      return args[index] || '';\n    });\n  }\n\n  /**\n   * Replace a word using a rule.\n   *\n   * @param  {string} word\n   * @param  {Array}  rule\n   * @return {string}\n   */\n  function replace (word, rule) {\n    return word.replace(rule[0], function (match, index) {\n      var result = interpolate(rule[1], arguments);\n\n      if (match === '') {\n        return restoreCase(word[index - 1], result);\n      }\n\n      return restoreCase(match, result);\n    });\n  }\n\n  /**\n   * Sanitize a word by passing in the word and sanitization rules.\n   *\n   * @param  {string}   token\n   * @param  {string}   word\n   * @param  {Array}    rules\n   * @return {string}\n   */\n  function sanitizeWord (token, word, rules) {\n    // Empty string or doesn't need fixing.\n    if (!token.length || uncountables.hasOwnProperty(token)) {\n      return word;\n    }\n\n    var len = rules.length;\n\n    // Iterate over the sanitization rules and use the first one to match.\n    while (len--) {\n      var rule = rules[len];\n\n      if (rule[0].test(word)) return replace(word, rule);\n    }\n\n    return word;\n  }\n\n  /**\n   * Replace a word with the updated word.\n   *\n   * @param  {Object}   replaceMap\n   * @param  {Object}   keepMap\n   * @param  {Array}    rules\n   * @return {Function}\n   */\n  function replaceWord (replaceMap, keepMap, rules) {\n    return function (word) {\n      // Get the correct token and case restoration functions.\n      var token = word.toLowerCase();\n\n      // Check against the keep object map.\n      if (keepMap.hasOwnProperty(token)) {\n        return restoreCase(word, token);\n      }\n\n      // Check against the replacement map for a direct word replacement.\n      if (replaceMap.hasOwnProperty(token)) {\n        return restoreCase(word, replaceMap[token]);\n      }\n\n      // Run all the rules against the word.\n      return sanitizeWord(token, word, rules);\n    };\n  }\n\n  /**\n   * Check if a word is part of the map.\n   */\n  function checkWord (replaceMap, keepMap, rules, bool) {\n    return function (word) {\n      var token = word.toLowerCase();\n\n      if (keepMap.hasOwnProperty(token)) return true;\n      if (replaceMap.hasOwnProperty(token)) return false;\n\n      return sanitizeWord(token, token, rules) === token;\n    };\n  }\n\n  /**\n   * Pluralize or singularize a word based on the passed in count.\n   *\n   * @param  {string}  word      The word to pluralize\n   * @param  {number}  count     How many of the word exist\n   * @param  {boolean} inclusive Whether to prefix with the number (e.g. 3 ducks)\n   * @return {string}\n   */\n  function pluralize (word, count, inclusive) {\n    var pluralized = count === 1\n      ? pluralize.singular(word) : pluralize.plural(word);\n\n    return (inclusive ? count + ' ' : '') + pluralized;\n  }\n\n  /**\n   * Pluralize a word.\n   *\n   * @type {Function}\n   */\n  pluralize.plural = replaceWord(\n    irregularSingles, irregularPlurals, pluralRules\n  );\n\n  /**\n   * Check if a word is plural.\n   *\n   * @type {Function}\n   */\n  pluralize.isPlural = checkWord(\n    irregularSingles, irregularPlurals, pluralRules\n  );\n\n  /**\n   * Singularize a word.\n   *\n   * @type {Function}\n   */\n  pluralize.singular = replaceWord(\n    irregularPlurals, irregularSingles, singularRules\n  );\n\n  /**\n   * Check if a word is singular.\n   *\n   * @type {Function}\n   */\n  pluralize.isSingular = checkWord(\n    irregularPlurals, irregularSingles, singularRules\n  );\n\n  /**\n   * Add a pluralization rule to the collection.\n   *\n   * @param {(string|RegExp)} rule\n   * @param {string}          replacement\n   */\n  pluralize.addPluralRule = function (rule, replacement) {\n    pluralRules.push([sanitizeRule(rule), replacement]);\n  };\n\n  /**\n   * Add a singularization rule to the collection.\n   *\n   * @param {(string|RegExp)} rule\n   * @param {string}          replacement\n   */\n  pluralize.addSingularRule = function (rule, replacement) {\n    singularRules.push([sanitizeRule(rule), replacement]);\n  };\n\n  /**\n   * Add an uncountable word rule.\n   *\n   * @param {(string|RegExp)} word\n   */\n  pluralize.addUncountableRule = function (word) {\n    if (typeof word === 'string') {\n      uncountables[word.toLowerCase()] = true;\n      return;\n    }\n\n    // Set singular and plural references for the word.\n    pluralize.addPluralRule(word, '$0');\n    pluralize.addSingularRule(word, '$0');\n  };\n\n  /**\n   * Add an irregular word definition.\n   *\n   * @param {string} single\n   * @param {string} plural\n   */\n  pluralize.addIrregularRule = function (single, plural) {\n    plural = plural.toLowerCase();\n    single = single.toLowerCase();\n\n    irregularSingles[single] = plural;\n    irregularPlurals[plural] = single;\n  };\n\n  /**\n   * Irregular rules.\n   */\n  [\n    // Pronouns.\n    ['I', 'we'],\n    ['me', 'us'],\n    ['he', 'they'],\n    ['she', 'they'],\n    ['them', 'them'],\n    ['myself', 'ourselves'],\n    ['yourself', 'yourselves'],\n    ['itself', 'themselves'],\n    ['herself', 'themselves'],\n    ['himself', 'themselves'],\n    ['themself', 'themselves'],\n    ['is', 'are'],\n    ['was', 'were'],\n    ['has', 'have'],\n    ['this', 'these'],\n    ['that', 'those'],\n    // Words ending in with a consonant and `o`.\n    ['echo', 'echoes'],\n    ['dingo', 'dingoes'],\n    ['volcano', 'volcanoes'],\n    ['tornado', 'tornadoes'],\n    ['torpedo', 'torpedoes'],\n    // Ends with `us`.\n    ['genus', 'genera'],\n    ['viscus', 'viscera'],\n    // Ends with `ma`.\n    ['stigma', 'stigmata'],\n    ['stoma', 'stomata'],\n    ['dogma', 'dogmata'],\n    ['lemma', 'lemmata'],\n    ['schema', 'schemata'],\n    ['anathema', 'anathemata'],\n    // Other irregular rules.\n    ['ox', 'oxen'],\n    ['axe', 'axes'],\n    ['die', 'dice'],\n    ['yes', 'yeses'],\n    ['foot', 'feet'],\n    ['eave', 'eaves'],\n    ['goose', 'geese'],\n    ['tooth', 'teeth'],\n    ['quiz', 'quizzes'],\n    ['human', 'humans'],\n    ['proof', 'proofs'],\n    ['carve', 'carves'],\n    ['valve', 'valves'],\n    ['looey', 'looies'],\n    ['thief', 'thieves'],\n    ['groove', 'grooves'],\n    ['pickaxe', 'pickaxes'],\n    ['passerby', 'passersby']\n  ].forEach(function (rule) {\n    return pluralize.addIrregularRule(rule[0], rule[1]);\n  });\n\n  /**\n   * Pluralization rules.\n   */\n  [\n    [/s?$/i, 's'],\n    [/[^\\u0000-\\u007F]$/i, '$0'],\n    [/([^aeiou]ese)$/i, '$1'],\n    [/(ax|test)is$/i, '$1es'],\n    [/(alias|[^aou]us|t[lm]as|gas|ris)$/i, '$1es'],\n    [/(e[mn]u)s?$/i, '$1s'],\n    [/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i, '$1'],\n    [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1i'],\n    [/(alumn|alg|vertebr)(?:a|ae)$/i, '$1ae'],\n    [/(seraph|cherub)(?:im)?$/i, '$1im'],\n    [/(her|at|gr)o$/i, '$1oes'],\n    [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i, '$1a'],\n    [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i, '$1a'],\n    [/sis$/i, 'ses'],\n    [/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i, '$1$2ves'],\n    [/([^aeiouy]|qu)y$/i, '$1ies'],\n    [/([^ch][ieo][ln])ey$/i, '$1ies'],\n    [/(x|ch|ss|sh|zz)$/i, '$1es'],\n    [/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i, '$1ices'],\n    [/\\b((?:tit)?m|l)(?:ice|ouse)$/i, '$1ice'],\n    [/(pe)(?:rson|ople)$/i, '$1ople'],\n    [/(child)(?:ren)?$/i, '$1ren'],\n    [/eaux$/i, '$0'],\n    [/m[ae]n$/i, 'men'],\n    ['thou', 'you']\n  ].forEach(function (rule) {\n    return pluralize.addPluralRule(rule[0], rule[1]);\n  });\n\n  /**\n   * Singularization rules.\n   */\n  [\n    [/s$/i, ''],\n    [/(ss)$/i, '$1'],\n    [/(wi|kni|(?:after|half|high|low|mid|non|night|[^\\w]|^)li)ves$/i, '$1fe'],\n    [/(ar|(?:wo|[ae])l|[eo][ao])ves$/i, '$1f'],\n    [/ies$/i, 'y'],\n    [/\\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i, '$1ie'],\n    [/\\b(mon|smil)ies$/i, '$1ey'],\n    [/\\b((?:tit)?m|l)ice$/i, '$1ouse'],\n    [/(seraph|cherub)im$/i, '$1'],\n    [/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i, '$1'],\n    [/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i, '$1sis'],\n    [/(movie|twelve|abuse|e[mn]u)s$/i, '$1'],\n    [/(test)(?:is|es)$/i, '$1is'],\n    [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1us'],\n    [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i, '$1um'],\n    [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i, '$1on'],\n    [/(alumn|alg|vertebr)ae$/i, '$1a'],\n    [/(cod|mur|sil|vert|ind)ices$/i, '$1ex'],\n    [/(matr|append)ices$/i, '$1ix'],\n    [/(pe)(rson|ople)$/i, '$1rson'],\n    [/(child)ren$/i, '$1'],\n    [/(eau)x?$/i, '$1'],\n    [/men$/i, 'man']\n  ].forEach(function (rule) {\n    return pluralize.addSingularRule(rule[0], rule[1]);\n  });\n\n  /**\n   * Uncountable rules.\n   */\n  [\n    // Singular words with no plurals.\n    'adulthood',\n    'advice',\n    'agenda',\n    'aid',\n    'aircraft',\n    'alcohol',\n    'ammo',\n    'analytics',\n    'anime',\n    'athletics',\n    'audio',\n    'bison',\n    'blood',\n    'bream',\n    'buffalo',\n    'butter',\n    'carp',\n    'cash',\n    'chassis',\n    'chess',\n    'clothing',\n    'cod',\n    'commerce',\n    'cooperation',\n    'corps',\n    'debris',\n    'diabetes',\n    'digestion',\n    'elk',\n    'energy',\n    'equipment',\n    'excretion',\n    'expertise',\n    'firmware',\n    'flounder',\n    'fun',\n    'gallows',\n    'garbage',\n    'graffiti',\n    'hardware',\n    'headquarters',\n    'health',\n    'herpes',\n    'highjinks',\n    'homework',\n    'housework',\n    'information',\n    'jeans',\n    'justice',\n    'kudos',\n    'labour',\n    'literature',\n    'machinery',\n    'mackerel',\n    'mail',\n    'media',\n    'mews',\n    'moose',\n    'music',\n    'mud',\n    'manga',\n    'news',\n    'only',\n    'personnel',\n    'pike',\n    'plankton',\n    'pliers',\n    'police',\n    'pollution',\n    'premises',\n    'rain',\n    'research',\n    'rice',\n    'salmon',\n    'scissors',\n    'series',\n    'sewage',\n    'shambles',\n    'shrimp',\n    'software',\n    'species',\n    'staff',\n    'swine',\n    'tennis',\n    'traffic',\n    'transportation',\n    'trout',\n    'tuna',\n    'wealth',\n    'welfare',\n    'whiting',\n    'wildebeest',\n    'wildlife',\n    'you',\n    /pok[e\u00E9]mon$/i,\n    // Regexes.\n    /[^aeiou]ese$/i, // \"chinese\", \"japanese\"\n    /deer$/i, // \"deer\", \"reindeer\"\n    /fish$/i, // \"fish\", \"blowfish\", \"angelfish\"\n    /measles$/i,\n    /o[iu]s$/i, // \"carnivorous\"\n    /pox$/i, // \"chickpox\", \"smallpox\"\n    /sheep$/i\n  ].forEach(pluralize.addUncountableRule);\n\n  return pluralize;\n});\n", "{\"105\":\"i\",\"192\":\"A\",\"193\":\"A\",\"194\":\"A\",\"195\":\"A\",\"196\":\"A\",\"197\":\"A\",\"199\":\"C\",\"200\":\"E\",\"201\":\"E\",\"202\":\"E\",\"203\":\"E\",\"204\":\"I\",\"205\":\"I\",\"206\":\"I\",\"207\":\"I\",\"209\":\"N\",\"210\":\"O\",\"211\":\"O\",\"212\":\"O\",\"213\":\"O\",\"214\":\"O\",\"216\":\"O\",\"217\":\"U\",\"218\":\"U\",\"219\":\"U\",\"220\":\"U\",\"221\":\"Y\",\"224\":\"a\",\"225\":\"a\",\"226\":\"a\",\"227\":\"a\",\"228\":\"a\",\"229\":\"a\",\"231\":\"c\",\"232\":\"e\",\"233\":\"e\",\"234\":\"e\",\"235\":\"e\",\"236\":\"i\",\"237\":\"i\",\"238\":\"i\",\"239\":\"i\",\"241\":\"n\",\"242\":\"o\",\"243\":\"o\",\"244\":\"o\",\"245\":\"o\",\"246\":\"o\",\"248\":\"o\",\"249\":\"u\",\"250\":\"u\",\"251\":\"u\",\"252\":\"u\",\"253\":\"y\",\"255\":\"y\",\"256\":\"A\",\"257\":\"a\",\"258\":\"A\",\"259\":\"a\",\"260\":\"A\",\"261\":\"a\",\"262\":\"C\",\"263\":\"c\",\"264\":\"C\",\"265\":\"c\",\"266\":\"C\",\"267\":\"c\",\"268\":\"C\",\"269\":\"c\",\"270\":\"D\",\"271\":\"d\",\"272\":\"D\",\"273\":\"d\",\"274\":\"E\",\"275\":\"e\",\"276\":\"E\",\"277\":\"e\",\"278\":\"E\",\"279\":\"e\",\"280\":\"E\",\"281\":\"e\",\"282\":\"E\",\"283\":\"e\",\"284\":\"G\",\"285\":\"g\",\"286\":\"G\",\"287\":\"g\",\"288\":\"G\",\"289\":\"g\",\"290\":\"G\",\"291\":\"g\",\"292\":\"H\",\"293\":\"h\",\"294\":\"H\",\"295\":\"h\",\"296\":\"I\",\"297\":\"i\",\"298\":\"I\",\"299\":\"i\",\"300\":\"I\",\"301\":\"i\",\"302\":\"I\",\"303\":\"i\",\"304\":\"I\",\"308\":\"J\",\"309\":\"j\",\"310\":\"K\",\"311\":\"k\",\"313\":\"L\",\"314\":\"l\",\"315\":\"L\",\"316\":\"l\",\"317\":\"L\",\"318\":\"l\",\"319\":\"L\",\"320\":\"l\",\"321\":\"L\",\"322\":\"l\",\"323\":\"N\",\"324\":\"n\",\"325\":\"N\",\"326\":\"n\",\"327\":\"N\",\"328\":\"n\",\"332\":\"O\",\"333\":\"o\",\"334\":\"O\",\"335\":\"o\",\"336\":\"O\",\"337\":\"o\",\"338\":\"O\",\"339\":\"o\",\"340\":\"R\",\"341\":\"r\",\"342\":\"R\",\"343\":\"r\",\"344\":\"R\",\"345\":\"r\",\"346\":\"S\",\"347\":\"s\",\"348\":\"S\",\"349\":\"s\",\"350\":\"S\",\"351\":\"s\",\"352\":\"S\",\"353\":\"s\",\"354\":\"T\",\"355\":\"t\",\"356\":\"T\",\"357\":\"t\",\"358\":\"T\",\"359\":\"t\",\"360\":\"U\",\"361\":\"u\",\"362\":\"U\",\"363\":\"u\",\"364\":\"U\",\"365\":\"u\",\"366\":\"U\",\"367\":\"u\",\"368\":\"U\",\"369\":\"u\",\"370\":\"U\",\"371\":\"u\",\"372\":\"W\",\"373\":\"w\",\"374\":\"Y\",\"375\":\"y\",\"376\":\"Y\",\"377\":\"Z\",\"378\":\"z\",\"379\":\"Z\",\"380\":\"z\",\"381\":\"Z\",\"382\":\"z\",\"384\":\"b\",\"385\":\"B\",\"386\":\"B\",\"387\":\"b\",\"390\":\"O\",\"391\":\"C\",\"392\":\"c\",\"393\":\"D\",\"394\":\"D\",\"395\":\"D\",\"396\":\"d\",\"398\":\"E\",\"400\":\"E\",\"401\":\"F\",\"402\":\"f\",\"403\":\"G\",\"407\":\"I\",\"408\":\"K\",\"409\":\"k\",\"410\":\"l\",\"412\":\"M\",\"413\":\"N\",\"414\":\"n\",\"415\":\"O\",\"416\":\"O\",\"417\":\"o\",\"420\":\"P\",\"421\":\"p\",\"422\":\"R\",\"427\":\"t\",\"428\":\"T\",\"429\":\"t\",\"430\":\"T\",\"431\":\"U\",\"432\":\"u\",\"434\":\"V\",\"435\":\"Y\",\"436\":\"y\",\"437\":\"Z\",\"438\":\"z\",\"461\":\"A\",\"462\":\"a\",\"463\":\"I\",\"464\":\"i\",\"465\":\"O\",\"466\":\"o\",\"467\":\"U\",\"468\":\"u\",\"477\":\"e\",\"484\":\"G\",\"485\":\"g\",\"486\":\"G\",\"487\":\"g\",\"488\":\"K\",\"489\":\"k\",\"490\":\"O\",\"491\":\"o\",\"500\":\"G\",\"501\":\"g\",\"504\":\"N\",\"505\":\"n\",\"512\":\"A\",\"513\":\"a\",\"514\":\"A\",\"515\":\"a\",\"516\":\"E\",\"517\":\"e\",\"518\":\"E\",\"519\":\"e\",\"520\":\"I\",\"521\":\"i\",\"522\":\"I\",\"523\":\"i\",\"524\":\"O\",\"525\":\"o\",\"526\":\"O\",\"527\":\"o\",\"528\":\"R\",\"529\":\"r\",\"530\":\"R\",\"531\":\"r\",\"532\":\"U\",\"533\":\"u\",\"534\":\"U\",\"535\":\"u\",\"536\":\"S\",\"537\":\"s\",\"538\":\"T\",\"539\":\"t\",\"542\":\"H\",\"543\":\"h\",\"544\":\"N\",\"545\":\"d\",\"548\":\"Z\",\"549\":\"z\",\"550\":\"A\",\"551\":\"a\",\"552\":\"E\",\"553\":\"e\",\"558\":\"O\",\"559\":\"o\",\"562\":\"Y\",\"563\":\"y\",\"564\":\"l\",\"565\":\"n\",\"566\":\"t\",\"567\":\"j\",\"570\":\"A\",\"571\":\"C\",\"572\":\"c\",\"573\":\"L\",\"574\":\"T\",\"575\":\"s\",\"576\":\"z\",\"579\":\"B\",\"580\":\"U\",\"581\":\"V\",\"582\":\"E\",\"583\":\"e\",\"584\":\"J\",\"585\":\"j\",\"586\":\"Q\",\"587\":\"q\",\"588\":\"R\",\"589\":\"r\",\"590\":\"Y\",\"591\":\"y\",\"592\":\"a\",\"593\":\"a\",\"595\":\"b\",\"596\":\"o\",\"597\":\"c\",\"598\":\"d\",\"599\":\"d\",\"600\":\"e\",\"603\":\"e\",\"604\":\"e\",\"605\":\"e\",\"606\":\"e\",\"607\":\"j\",\"608\":\"g\",\"609\":\"g\",\"610\":\"g\",\"613\":\"h\",\"614\":\"h\",\"616\":\"i\",\"618\":\"i\",\"619\":\"l\",\"620\":\"l\",\"621\":\"l\",\"623\":\"m\",\"624\":\"m\",\"625\":\"m\",\"626\":\"n\",\"627\":\"n\",\"628\":\"n\",\"629\":\"o\",\"633\":\"r\",\"634\":\"r\",\"635\":\"r\",\"636\":\"r\",\"637\":\"r\",\"638\":\"r\",\"639\":\"r\",\"640\":\"r\",\"641\":\"r\",\"642\":\"s\",\"647\":\"t\",\"648\":\"t\",\"649\":\"u\",\"651\":\"v\",\"652\":\"v\",\"653\":\"w\",\"654\":\"y\",\"655\":\"y\",\"656\":\"z\",\"657\":\"z\",\"663\":\"c\",\"665\":\"b\",\"666\":\"e\",\"667\":\"g\",\"668\":\"h\",\"669\":\"j\",\"670\":\"k\",\"671\":\"l\",\"672\":\"q\",\"686\":\"h\",\"688\":\"h\",\"690\":\"j\",\"691\":\"r\",\"692\":\"r\",\"694\":\"r\",\"695\":\"w\",\"696\":\"y\",\"737\":\"l\",\"738\":\"s\",\"739\":\"x\",\"780\":\"v\",\"829\":\"x\",\"851\":\"x\",\"867\":\"a\",\"868\":\"e\",\"869\":\"i\",\"870\":\"o\",\"871\":\"u\",\"872\":\"c\",\"873\":\"d\",\"874\":\"h\",\"875\":\"m\",\"876\":\"r\",\"877\":\"t\",\"878\":\"v\",\"879\":\"x\",\"7424\":\"a\",\"7427\":\"b\",\"7428\":\"c\",\"7429\":\"d\",\"7431\":\"e\",\"7432\":\"e\",\"7433\":\"i\",\"7434\":\"j\",\"7435\":\"k\",\"7436\":\"l\",\"7437\":\"m\",\"7438\":\"n\",\"7439\":\"o\",\"7440\":\"o\",\"7441\":\"o\",\"7442\":\"o\",\"7443\":\"o\",\"7446\":\"o\",\"7447\":\"o\",\"7448\":\"p\",\"7449\":\"r\",\"7450\":\"r\",\"7451\":\"t\",\"7452\":\"u\",\"7453\":\"u\",\"7454\":\"u\",\"7455\":\"m\",\"7456\":\"v\",\"7457\":\"w\",\"7458\":\"z\",\"7522\":\"i\",\"7523\":\"r\",\"7524\":\"u\",\"7525\":\"v\",\"7680\":\"A\",\"7681\":\"a\",\"7682\":\"B\",\"7683\":\"b\",\"7684\":\"B\",\"7685\":\"b\",\"7686\":\"B\",\"7687\":\"b\",\"7690\":\"D\",\"7691\":\"d\",\"7692\":\"D\",\"7693\":\"d\",\"7694\":\"D\",\"7695\":\"d\",\"7696\":\"D\",\"7697\":\"d\",\"7698\":\"D\",\"7699\":\"d\",\"7704\":\"E\",\"7705\":\"e\",\"7706\":\"E\",\"7707\":\"e\",\"7710\":\"F\",\"7711\":\"f\",\"7712\":\"G\",\"7713\":\"g\",\"7714\":\"H\",\"7715\":\"h\",\"7716\":\"H\",\"7717\":\"h\",\"7718\":\"H\",\"7719\":\"h\",\"7720\":\"H\",\"7721\":\"h\",\"7722\":\"H\",\"7723\":\"h\",\"7724\":\"I\",\"7725\":\"i\",\"7728\":\"K\",\"7729\":\"k\",\"7730\":\"K\",\"7731\":\"k\",\"7732\":\"K\",\"7733\":\"k\",\"7734\":\"L\",\"7735\":\"l\",\"7738\":\"L\",\"7739\":\"l\",\"7740\":\"L\",\"7741\":\"l\",\"7742\":\"M\",\"7743\":\"m\",\"7744\":\"M\",\"7745\":\"m\",\"7746\":\"M\",\"7747\":\"m\",\"7748\":\"N\",\"7749\":\"n\",\"7750\":\"N\",\"7751\":\"n\",\"7752\":\"N\",\"7753\":\"n\",\"7754\":\"N\",\"7755\":\"n\",\"7764\":\"P\",\"7765\":\"p\",\"7766\":\"P\",\"7767\":\"p\",\"7768\":\"R\",\"7769\":\"r\",\"7770\":\"R\",\"7771\":\"r\",\"7774\":\"R\",\"7775\":\"r\",\"7776\":\"S\",\"7777\":\"s\",\"7778\":\"S\",\"7779\":\"s\",\"7786\":\"T\",\"7787\":\"t\",\"7788\":\"T\",\"7789\":\"t\",\"7790\":\"T\",\"7791\":\"t\",\"7792\":\"T\",\"7793\":\"t\",\"7794\":\"U\",\"7795\":\"u\",\"7796\":\"U\",\"7797\":\"u\",\"7798\":\"U\",\"7799\":\"u\",\"7804\":\"V\",\"7805\":\"v\",\"7806\":\"V\",\"7807\":\"v\",\"7808\":\"W\",\"7809\":\"w\",\"7810\":\"W\",\"7811\":\"w\",\"7812\":\"W\",\"7813\":\"w\",\"7814\":\"W\",\"7815\":\"w\",\"7816\":\"W\",\"7817\":\"w\",\"7818\":\"X\",\"7819\":\"x\",\"7820\":\"X\",\"7821\":\"x\",\"7822\":\"Y\",\"7823\":\"y\",\"7824\":\"Z\",\"7825\":\"z\",\"7826\":\"Z\",\"7827\":\"z\",\"7828\":\"Z\",\"7829\":\"z\",\"7835\":\"s\",\"7840\":\"A\",\"7841\":\"a\",\"7842\":\"A\",\"7843\":\"a\",\"7864\":\"E\",\"7865\":\"e\",\"7866\":\"E\",\"7867\":\"e\",\"7868\":\"E\",\"7869\":\"e\",\"7880\":\"I\",\"7881\":\"i\",\"7882\":\"I\",\"7883\":\"i\",\"7884\":\"O\",\"7885\":\"o\",\"7886\":\"O\",\"7887\":\"o\",\"7908\":\"U\",\"7909\":\"u\",\"7910\":\"U\",\"7911\":\"u\",\"7922\":\"Y\",\"7923\":\"y\",\"7924\":\"Y\",\"7925\":\"y\",\"7926\":\"Y\",\"7927\":\"y\",\"7928\":\"Y\",\"7929\":\"y\",\"8305\":\"i\",\"8341\":\"h\",\"8342\":\"k\",\"8343\":\"l\",\"8344\":\"m\",\"8345\":\"n\",\"8346\":\"p\",\"8347\":\"s\",\"8348\":\"t\",\"8450\":\"c\",\"8458\":\"g\",\"8459\":\"h\",\"8460\":\"h\",\"8461\":\"h\",\"8464\":\"i\",\"8465\":\"i\",\"8466\":\"l\",\"8467\":\"l\",\"8468\":\"l\",\"8469\":\"n\",\"8472\":\"p\",\"8473\":\"p\",\"8474\":\"q\",\"8475\":\"r\",\"8476\":\"r\",\"8477\":\"r\",\"8484\":\"z\",\"8488\":\"z\",\"8492\":\"b\",\"8493\":\"c\",\"8495\":\"e\",\"8496\":\"e\",\"8497\":\"f\",\"8498\":\"F\",\"8499\":\"m\",\"8500\":\"o\",\"8506\":\"q\",\"8513\":\"g\",\"8514\":\"l\",\"8515\":\"l\",\"8516\":\"y\",\"8517\":\"d\",\"8518\":\"d\",\"8519\":\"e\",\"8520\":\"i\",\"8521\":\"j\",\"8526\":\"f\",\"8579\":\"C\",\"8580\":\"c\",\"8765\":\"s\",\"8766\":\"s\",\"8959\":\"z\",\"8999\":\"x\",\"9746\":\"x\",\"9776\":\"i\",\"9866\":\"i\",\"10005\":\"x\",\"10006\":\"x\",\"10007\":\"x\",\"10008\":\"x\",\"10625\":\"z\",\"10626\":\"z\",\"11362\":\"L\",\"11364\":\"R\",\"11365\":\"a\",\"11366\":\"t\",\"11373\":\"A\",\"11374\":\"M\",\"11375\":\"A\",\"11390\":\"S\",\"11391\":\"Z\",\"19904\":\"i\",\"42893\":\"H\",\"42922\":\"H\",\"42923\":\"E\",\"42924\":\"G\",\"42925\":\"L\",\"42928\":\"K\",\"42929\":\"T\",\"62937\":\"x\"}", "(function(global, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define(function() {\n      return factory(global, global.document);\n    });\n  } else if (typeof module !== 'undefined' && module.exports) {\n    module.exports = factory(global, global.document);\n  } else {\n      global.normalize = factory(global, global.document);\n  }\n} (typeof window !== 'undefined' ? window : this, function (window, document) {\n  var charmap = require('./charmap.json');\n  var regex = null;\n  var current_charmap;\n  var old_charmap;\n\n  function normalize(str, custom_charmap) {\n    old_charmap = current_charmap;\n    current_charmap = custom_charmap || charmap;\n\n    regex = (regex && old_charmap === current_charmap) ? regex : buildRegExp(current_charmap);\n\n    return str.replace(regex, function(charToReplace) {\n      return current_charmap[charToReplace.charCodeAt(0)] || charToReplace;\n    });\n  }\n\n  function buildRegExp(charmap){\n     return new RegExp('[' + Object.keys(charmap).map(function(code) {return String.fromCharCode(code); }).join(' ') + ']', 'g');\n   }\n\n  return normalize;\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 = '\u2026' + lineStr.substring(trimStart);\n        ci -= trimStart - 1;\n    }\n    if (lineStr.length > 80)\n        lineStr = lineStr.substring(0, 79) + '\u2026';\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) + '\u2026\\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            // \u2192 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[]` \u2013 Source tokens before the key or value,\n *       possibly including its anchor or tag.\n *     - `key?: Token | null` \u2013 Set for pair values. May then be `null`, if\n *       the key before the `:` separator is empty.\n *     - `sep?: SourceToken[]` \u2013 Source tokens between the key and the value,\n *       which should include the `:` map value indicator if `value` is set.\n *     - `value?: Token` \u2013 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", "// This is a generated file. Do not edit.\nmodule.exports.Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/\nmodule.exports.ID_Start = /[\\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\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\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\\u09FC\\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\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\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-\\u1884\\u1887-\\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\\u1C80-\\u1C88\\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\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\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\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\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\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\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[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\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\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\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\\uDD00-\\uDD43]|\\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\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/\nmodule.exports.ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\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\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\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\\u09FC\\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-\\u0AFF\\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\\u0C80-\\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\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\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\\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-\\u19D9\\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\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\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\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\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\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\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\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\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\\uDE3E\\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[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\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\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\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\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\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]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\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\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/\n", "const unicode = require('../lib/unicode')\n\nmodule.exports = {\n    isSpaceSeparator (c) {\n        return typeof c === 'string' && unicode.Space_Separator.test(c)\n    },\n\n    isIdStartChar (c) {\n        return typeof c === 'string' && (\n            (c >= 'a' && c <= 'z') ||\n        (c >= 'A' && c <= 'Z') ||\n        (c === '$') || (c === '_') ||\n        unicode.ID_Start.test(c)\n        )\n    },\n\n    isIdContinueChar (c) {\n        return typeof c === 'string' && (\n            (c >= 'a' && c <= 'z') ||\n        (c >= 'A' && c <= 'Z') ||\n        (c >= '0' && c <= '9') ||\n        (c === '$') || (c === '_') ||\n        (c === '\\u200C') || (c === '\\u200D') ||\n        unicode.ID_Continue.test(c)\n        )\n    },\n\n    isDigit (c) {\n        return typeof c === 'string' && /[0-9]/.test(c)\n    },\n\n    isHexDigit (c) {\n        return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)\n    },\n}\n", "const util = require('./util')\n\nlet source\nlet parseState\nlet stack\nlet pos\nlet line\nlet column\nlet token\nlet key\nlet root\n\nmodule.exports = function parse (text, reviver) {\n    source = String(text)\n    parseState = 'start'\n    stack = []\n    pos = 0\n    line = 1\n    column = 0\n    token = undefined\n    key = undefined\n    root = undefined\n\n    do {\n        token = lex()\n\n        // This code is unreachable.\n        // if (!parseStates[parseState]) {\n        //     throw invalidParseState()\n        // }\n\n        parseStates[parseState]()\n    } while (token.type !== 'eof')\n\n    if (typeof reviver === 'function') {\n        return internalize({'': root}, '', reviver)\n    }\n\n    return root\n}\n\nfunction internalize (holder, name, reviver) {\n    const value = holder[name]\n    if (value != null && typeof value === 'object') {\n        if (Array.isArray(value)) {\n            for (let i = 0; i < value.length; i++) {\n                const key = String(i)\n                const replacement = internalize(value, key, reviver)\n                if (replacement === undefined) {\n                    delete value[key]\n                } else {\n                    Object.defineProperty(value, key, {\n                        value: replacement,\n                        writable: true,\n                        enumerable: true,\n                        configurable: true,\n                    })\n                }\n            }\n        } else {\n            for (const key in value) {\n                const replacement = internalize(value, key, reviver)\n                if (replacement === undefined) {\n                    delete value[key]\n                } else {\n                    Object.defineProperty(value, key, {\n                        value: replacement,\n                        writable: true,\n                        enumerable: true,\n                        configurable: true,\n                    })\n                }\n            }\n        }\n    }\n\n    return reviver.call(holder, name, value)\n}\n\nlet lexState\nlet buffer\nlet doubleQuote\nlet sign\nlet c\n\nfunction lex () {\n    lexState = 'default'\n    buffer = ''\n    doubleQuote = false\n    sign = 1\n\n    for (;;) {\n        c = peek()\n\n        // This code is unreachable.\n        // if (!lexStates[lexState]) {\n        //     throw invalidLexState(lexState)\n        // }\n\n        const token = lexStates[lexState]()\n        if (token) {\n            return token\n        }\n    }\n}\n\nfunction peek () {\n    if (source[pos]) {\n        return String.fromCodePoint(source.codePointAt(pos))\n    }\n}\n\nfunction read () {\n    const c = peek()\n\n    if (c === '\\n') {\n        line++\n        column = 0\n    } else if (c) {\n        column += c.length\n    } else {\n        column++\n    }\n\n    if (c) {\n        pos += c.length\n    }\n\n    return c\n}\n\nconst lexStates = {\n    default () {\n        switch (c) {\n        case '\\t':\n        case '\\v':\n        case '\\f':\n        case ' ':\n        case '\\u00A0':\n        case '\\uFEFF':\n        case '\\n':\n        case '\\r':\n        case '\\u2028':\n        case '\\u2029':\n            read()\n            return\n\n        case '/':\n            read()\n            lexState = 'comment'\n            return\n\n        case undefined:\n            read()\n            return newToken('eof')\n        }\n\n        if (util.isSpaceSeparator(c)) {\n            read()\n            return\n        }\n\n        // This code is unreachable.\n        // if (!lexStates[parseState]) {\n        //     throw invalidLexState(parseState)\n        // }\n\n        return lexStates[parseState]()\n    },\n\n    comment () {\n        switch (c) {\n        case '*':\n            read()\n            lexState = 'multiLineComment'\n            return\n\n        case '/':\n            read()\n            lexState = 'singleLineComment'\n            return\n        }\n\n        throw invalidChar(read())\n    },\n\n    multiLineComment () {\n        switch (c) {\n        case '*':\n            read()\n            lexState = 'multiLineCommentAsterisk'\n            return\n\n        case undefined:\n            throw invalidChar(read())\n        }\n\n        read()\n    },\n\n    multiLineCommentAsterisk () {\n        switch (c) {\n        case '*':\n            read()\n            return\n\n        case '/':\n            read()\n            lexState = 'default'\n            return\n\n        case undefined:\n            throw invalidChar(read())\n        }\n\n        read()\n        lexState = 'multiLineComment'\n    },\n\n    singleLineComment () {\n        switch (c) {\n        case '\\n':\n        case '\\r':\n        case '\\u2028':\n        case '\\u2029':\n            read()\n            lexState = 'default'\n            return\n\n        case undefined:\n            read()\n            return newToken('eof')\n        }\n\n        read()\n    },\n\n    value () {\n        switch (c) {\n        case '{':\n        case '[':\n            return newToken('punctuator', read())\n\n        case 'n':\n            read()\n            literal('ull')\n            return newToken('null', null)\n\n        case 't':\n            read()\n            literal('rue')\n            return newToken('boolean', true)\n\n        case 'f':\n            read()\n            literal('alse')\n            return newToken('boolean', false)\n\n        case '-':\n        case '+':\n            if (read() === '-') {\n                sign = -1\n            }\n\n            lexState = 'sign'\n            return\n\n        case '.':\n            buffer = read()\n            lexState = 'decimalPointLeading'\n            return\n\n        case '0':\n            buffer = read()\n            lexState = 'zero'\n            return\n\n        case '1':\n        case '2':\n        case '3':\n        case '4':\n        case '5':\n        case '6':\n        case '7':\n        case '8':\n        case '9':\n            buffer = read()\n            lexState = 'decimalInteger'\n            return\n\n        case 'I':\n            read()\n            literal('nfinity')\n            return newToken('numeric', Infinity)\n\n        case 'N':\n            read()\n            literal('aN')\n            return newToken('numeric', NaN)\n\n        case '\"':\n        case \"'\":\n            doubleQuote = (read() === '\"')\n            buffer = ''\n            lexState = 'string'\n            return\n        }\n\n        throw invalidChar(read())\n    },\n\n    identifierNameStartEscape () {\n        if (c !== 'u') {\n            throw invalidChar(read())\n        }\n\n        read()\n        const u = unicodeEscape()\n        switch (u) {\n        case '$':\n        case '_':\n            break\n\n        default:\n            if (!util.isIdStartChar(u)) {\n                throw invalidIdentifier()\n            }\n\n            break\n        }\n\n        buffer += u\n        lexState = 'identifierName'\n    },\n\n    identifierName () {\n        switch (c) {\n        case '$':\n        case '_':\n        case '\\u200C':\n        case '\\u200D':\n            buffer += read()\n            return\n\n        case '\\\\':\n            read()\n            lexState = 'identifierNameEscape'\n            return\n        }\n\n        if (util.isIdContinueChar(c)) {\n            buffer += read()\n            return\n        }\n\n        return newToken('identifier', buffer)\n    },\n\n    identifierNameEscape () {\n        if (c !== 'u') {\n            throw invalidChar(read())\n        }\n\n        read()\n        const u = unicodeEscape()\n        switch (u) {\n        case '$':\n        case '_':\n        case '\\u200C':\n        case '\\u200D':\n            break\n\n        default:\n            if (!util.isIdContinueChar(u)) {\n                throw invalidIdentifier()\n            }\n\n            break\n        }\n\n        buffer += u\n        lexState = 'identifierName'\n    },\n\n    sign () {\n        switch (c) {\n        case '.':\n            buffer = read()\n            lexState = 'decimalPointLeading'\n            return\n\n        case '0':\n            buffer = read()\n            lexState = 'zero'\n            return\n\n        case '1':\n        case '2':\n        case '3':\n        case '4':\n        case '5':\n        case '6':\n        case '7':\n        case '8':\n        case '9':\n            buffer = read()\n            lexState = 'decimalInteger'\n            return\n\n        case 'I':\n            read()\n            literal('nfinity')\n            return newToken('numeric', sign * Infinity)\n\n        case 'N':\n            read()\n            literal('aN')\n            return newToken('numeric', NaN)\n        }\n\n        throw invalidChar(read())\n    },\n\n    zero () {\n        switch (c) {\n        case '.':\n            buffer += read()\n            lexState = 'decimalPoint'\n            return\n\n        case 'e':\n        case 'E':\n            buffer += read()\n            lexState = 'decimalExponent'\n            return\n\n        case 'x':\n        case 'X':\n            buffer += read()\n            lexState = 'hexadecimal'\n            return\n        }\n\n        return newToken('numeric', sign * 0)\n    },\n\n    decimalInteger () {\n        switch (c) {\n        case '.':\n            buffer += read()\n            lexState = 'decimalPoint'\n            return\n\n        case 'e':\n        case 'E':\n            buffer += read()\n            lexState = 'decimalExponent'\n            return\n        }\n\n        if (util.isDigit(c)) {\n            buffer += read()\n            return\n        }\n\n        return newToken('numeric', sign * Number(buffer))\n    },\n\n    decimalPointLeading () {\n        if (util.isDigit(c)) {\n            buffer += read()\n            lexState = 'decimalFraction'\n            return\n        }\n\n        throw invalidChar(read())\n    },\n\n    decimalPoint () {\n        switch (c) {\n        case 'e':\n        case 'E':\n            buffer += read()\n            lexState = 'decimalExponent'\n            return\n        }\n\n        if (util.isDigit(c)) {\n            buffer += read()\n            lexState = 'decimalFraction'\n            return\n        }\n\n        return newToken('numeric', sign * Number(buffer))\n    },\n\n    decimalFraction () {\n        switch (c) {\n        case 'e':\n        case 'E':\n            buffer += read()\n            lexState = 'decimalExponent'\n            return\n        }\n\n        if (util.isDigit(c)) {\n            buffer += read()\n            return\n        }\n\n        return newToken('numeric', sign * Number(buffer))\n    },\n\n    decimalExponent () {\n        switch (c) {\n        case '+':\n        case '-':\n            buffer += read()\n            lexState = 'decimalExponentSign'\n            return\n        }\n\n        if (util.isDigit(c)) {\n            buffer += read()\n            lexState = 'decimalExponentInteger'\n            return\n        }\n\n        throw invalidChar(read())\n    },\n\n    decimalExponentSign () {\n        if (util.isDigit(c)) {\n            buffer += read()\n            lexState = 'decimalExponentInteger'\n            return\n        }\n\n        throw invalidChar(read())\n    },\n\n    decimalExponentInteger () {\n        if (util.isDigit(c)) {\n            buffer += read()\n            return\n        }\n\n        return newToken('numeric', sign * Number(buffer))\n    },\n\n    hexadecimal () {\n        if (util.isHexDigit(c)) {\n            buffer += read()\n            lexState = 'hexadecimalInteger'\n            return\n        }\n\n        throw invalidChar(read())\n    },\n\n    hexadecimalInteger () {\n        if (util.isHexDigit(c)) {\n            buffer += read()\n            return\n        }\n\n        return newToken('numeric', sign * Number(buffer))\n    },\n\n    string () {\n        switch (c) {\n        case '\\\\':\n            read()\n            buffer += escape()\n            return\n\n        case '\"':\n            if (doubleQuote) {\n                read()\n                return newToken('string', buffer)\n            }\n\n            buffer += read()\n            return\n\n        case \"'\":\n            if (!doubleQuote) {\n                read()\n                return newToken('string', buffer)\n            }\n\n            buffer += read()\n            return\n\n        case '\\n':\n        case '\\r':\n            throw invalidChar(read())\n\n        case '\\u2028':\n        case '\\u2029':\n            separatorChar(c)\n            break\n\n        case undefined:\n            throw invalidChar(read())\n        }\n\n        buffer += read()\n    },\n\n    start () {\n        switch (c) {\n        case '{':\n        case '[':\n            return newToken('punctuator', read())\n\n        // This code is unreachable since the default lexState handles eof.\n        // case undefined:\n        //     return newToken('eof')\n        }\n\n        lexState = 'value'\n    },\n\n    beforePropertyName () {\n        switch (c) {\n        case '$':\n        case '_':\n            buffer = read()\n            lexState = 'identifierName'\n            return\n\n        case '\\\\':\n            read()\n            lexState = 'identifierNameStartEscape'\n            return\n\n        case '}':\n            return newToken('punctuator', read())\n\n        case '\"':\n        case \"'\":\n            doubleQuote = (read() === '\"')\n            lexState = 'string'\n            return\n        }\n\n        if (util.isIdStartChar(c)) {\n            buffer += read()\n            lexState = 'identifierName'\n            return\n        }\n\n        throw invalidChar(read())\n    },\n\n    afterPropertyName () {\n        if (c === ':') {\n            return newToken('punctuator', read())\n        }\n\n        throw invalidChar(read())\n    },\n\n    beforePropertyValue () {\n        lexState = 'value'\n    },\n\n    afterPropertyValue () {\n        switch (c) {\n        case ',':\n        case '}':\n            return newToken('punctuator', read())\n        }\n\n        throw invalidChar(read())\n    },\n\n    beforeArrayValue () {\n        if (c === ']') {\n            return newToken('punctuator', read())\n        }\n\n        lexState = 'value'\n    },\n\n    afterArrayValue () {\n        switch (c) {\n        case ',':\n        case ']':\n            return newToken('punctuator', read())\n        }\n\n        throw invalidChar(read())\n    },\n\n    end () {\n        // This code is unreachable since it's handled by the default lexState.\n        // if (c === undefined) {\n        //     read()\n        //     return newToken('eof')\n        // }\n\n        throw invalidChar(read())\n    },\n}\n\nfunction newToken (type, value) {\n    return {\n        type,\n        value,\n        line,\n        column,\n    }\n}\n\nfunction literal (s) {\n    for (const c of s) {\n        const p = peek()\n\n        if (p !== c) {\n            throw invalidChar(read())\n        }\n\n        read()\n    }\n}\n\nfunction escape () {\n    const c = peek()\n    switch (c) {\n    case 'b':\n        read()\n        return '\\b'\n\n    case 'f':\n        read()\n        return '\\f'\n\n    case 'n':\n        read()\n        return '\\n'\n\n    case 'r':\n        read()\n        return '\\r'\n\n    case 't':\n        read()\n        return '\\t'\n\n    case 'v':\n        read()\n        return '\\v'\n\n    case '0':\n        read()\n        if (util.isDigit(peek())) {\n            throw invalidChar(read())\n        }\n\n        return '\\0'\n\n    case 'x':\n        read()\n        return hexEscape()\n\n    case 'u':\n        read()\n        return unicodeEscape()\n\n    case '\\n':\n    case '\\u2028':\n    case '\\u2029':\n        read()\n        return ''\n\n    case '\\r':\n        read()\n        if (peek() === '\\n') {\n            read()\n        }\n\n        return ''\n\n    case '1':\n    case '2':\n    case '3':\n    case '4':\n    case '5':\n    case '6':\n    case '7':\n    case '8':\n    case '9':\n        throw invalidChar(read())\n\n    case undefined:\n        throw invalidChar(read())\n    }\n\n    return read()\n}\n\nfunction hexEscape () {\n    let buffer = ''\n    let c = peek()\n\n    if (!util.isHexDigit(c)) {\n        throw invalidChar(read())\n    }\n\n    buffer += read()\n\n    c = peek()\n    if (!util.isHexDigit(c)) {\n        throw invalidChar(read())\n    }\n\n    buffer += read()\n\n    return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nfunction unicodeEscape () {\n    let buffer = ''\n    let count = 4\n\n    while (count-- > 0) {\n        const c = peek()\n        if (!util.isHexDigit(c)) {\n            throw invalidChar(read())\n        }\n\n        buffer += read()\n    }\n\n    return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nconst parseStates = {\n    start () {\n        if (token.type === 'eof') {\n            throw invalidEOF()\n        }\n\n        push()\n    },\n\n    beforePropertyName () {\n        switch (token.type) {\n        case 'identifier':\n        case 'string':\n            key = token.value\n            parseState = 'afterPropertyName'\n            return\n\n        case 'punctuator':\n            // This code is unreachable since it's handled by the lexState.\n            // if (token.value !== '}') {\n            //     throw invalidToken()\n            // }\n\n            pop()\n            return\n\n        case 'eof':\n            throw invalidEOF()\n        }\n\n        // This code is unreachable since it's handled by the lexState.\n        // throw invalidToken()\n    },\n\n    afterPropertyName () {\n        // This code is unreachable since it's handled by the lexState.\n        // if (token.type !== 'punctuator' || token.value !== ':') {\n        //     throw invalidToken()\n        // }\n\n        if (token.type === 'eof') {\n            throw invalidEOF()\n        }\n\n        parseState = 'beforePropertyValue'\n    },\n\n    beforePropertyValue () {\n        if (token.type === 'eof') {\n            throw invalidEOF()\n        }\n\n        push()\n    },\n\n    beforeArrayValue () {\n        if (token.type === 'eof') {\n            throw invalidEOF()\n        }\n\n        if (token.type === 'punctuator' && token.value === ']') {\n            pop()\n            return\n        }\n\n        push()\n    },\n\n    afterPropertyValue () {\n        // This code is unreachable since it's handled by the lexState.\n        // if (token.type !== 'punctuator') {\n        //     throw invalidToken()\n        // }\n\n        if (token.type === 'eof') {\n            throw invalidEOF()\n        }\n\n        switch (token.value) {\n        case ',':\n            parseState = 'beforePropertyName'\n            return\n\n        case '}':\n            pop()\n        }\n\n        // This code is unreachable since it's handled by the lexState.\n        // throw invalidToken()\n    },\n\n    afterArrayValue () {\n        // This code is unreachable since it's handled by the lexState.\n        // if (token.type !== 'punctuator') {\n        //     throw invalidToken()\n        // }\n\n        if (token.type === 'eof') {\n            throw invalidEOF()\n        }\n\n        switch (token.value) {\n        case ',':\n            parseState = 'beforeArrayValue'\n            return\n\n        case ']':\n            pop()\n        }\n\n        // This code is unreachable since it's handled by the lexState.\n        // throw invalidToken()\n    },\n\n    end () {\n        // This code is unreachable since it's handled by the lexState.\n        // if (token.type !== 'eof') {\n        //     throw invalidToken()\n        // }\n    },\n}\n\nfunction push () {\n    let value\n\n    switch (token.type) {\n    case 'punctuator':\n        switch (token.value) {\n        case '{':\n            value = {}\n            break\n\n        case '[':\n            value = []\n            break\n        }\n\n        break\n\n    case 'null':\n    case 'boolean':\n    case 'numeric':\n    case 'string':\n        value = token.value\n        break\n\n    // This code is unreachable.\n    // default:\n    //     throw invalidToken()\n    }\n\n    if (root === undefined) {\n        root = value\n    } else {\n        const parent = stack[stack.length - 1]\n        if (Array.isArray(parent)) {\n            parent.push(value)\n        } else {\n            Object.defineProperty(parent, key, {\n                value,\n                writable: true,\n                enumerable: true,\n                configurable: true,\n            })\n        }\n    }\n\n    if (value !== null && typeof value === 'object') {\n        stack.push(value)\n\n        if (Array.isArray(value)) {\n            parseState = 'beforeArrayValue'\n        } else {\n            parseState = 'beforePropertyName'\n        }\n    } else {\n        const current = stack[stack.length - 1]\n        if (current == null) {\n            parseState = 'end'\n        } else if (Array.isArray(current)) {\n            parseState = 'afterArrayValue'\n        } else {\n            parseState = 'afterPropertyValue'\n        }\n    }\n}\n\nfunction pop () {\n    stack.pop()\n\n    const current = stack[stack.length - 1]\n    if (current == null) {\n        parseState = 'end'\n    } else if (Array.isArray(current)) {\n        parseState = 'afterArrayValue'\n    } else {\n        parseState = 'afterPropertyValue'\n    }\n}\n\n// This code is unreachable.\n// function invalidParseState () {\n//     return new Error(`JSON5: invalid parse state '${parseState}'`)\n// }\n\n// This code is unreachable.\n// function invalidLexState (state) {\n//     return new Error(`JSON5: invalid lex state '${state}'`)\n// }\n\nfunction invalidChar (c) {\n    if (c === undefined) {\n        return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n    }\n\n    return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n}\n\nfunction invalidEOF () {\n    return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n}\n\n// This code is unreachable.\n// function invalidToken () {\n//     if (token.type === 'eof') {\n//         return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n//     }\n\n//     const c = String.fromCodePoint(token.value.codePointAt(0))\n//     return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n// }\n\nfunction invalidIdentifier () {\n    column -= 5\n    return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`)\n}\n\nfunction separatorChar (c) {\n    console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`)\n}\n\nfunction formatChar (c) {\n    const replacements = {\n        \"'\": \"\\\\'\",\n        '\"': '\\\\\"',\n        '\\\\': '\\\\\\\\',\n        '\\b': '\\\\b',\n        '\\f': '\\\\f',\n        '\\n': '\\\\n',\n        '\\r': '\\\\r',\n        '\\t': '\\\\t',\n        '\\v': '\\\\v',\n        '\\0': '\\\\0',\n        '\\u2028': '\\\\u2028',\n        '\\u2029': '\\\\u2029',\n    }\n\n    if (replacements[c]) {\n        return replacements[c]\n    }\n\n    if (c < ' ') {\n        const hexString = c.charCodeAt(0).toString(16)\n        return '\\\\x' + ('00' + hexString).substring(hexString.length)\n    }\n\n    return c\n}\n\nfunction syntaxError (message) {\n    const err = new SyntaxError(message)\n    err.lineNumber = line\n    err.columnNumber = column\n    return err\n}\n", "const util = require('./util')\n\nmodule.exports = function stringify (value, replacer, space) {\n    const stack = []\n    let indent = ''\n    let propertyList\n    let replacerFunc\n    let gap = ''\n    let quote\n\n    if (\n        replacer != null &&\n        typeof replacer === 'object' &&\n        !Array.isArray(replacer)\n    ) {\n        space = replacer.space\n        quote = replacer.quote\n        replacer = replacer.replacer\n    }\n\n    if (typeof replacer === 'function') {\n        replacerFunc = replacer\n    } else if (Array.isArray(replacer)) {\n        propertyList = []\n        for (const v of replacer) {\n            let item\n\n            if (typeof v === 'string') {\n                item = v\n            } else if (\n                typeof v === 'number' ||\n                v instanceof String ||\n                v instanceof Number\n            ) {\n                item = String(v)\n            }\n\n            if (item !== undefined && propertyList.indexOf(item) < 0) {\n                propertyList.push(item)\n            }\n        }\n    }\n\n    if (space instanceof Number) {\n        space = Number(space)\n    } else if (space instanceof String) {\n        space = String(space)\n    }\n\n    if (typeof space === 'number') {\n        if (space > 0) {\n            space = Math.min(10, Math.floor(space))\n            gap = '          '.substr(0, space)\n        }\n    } else if (typeof space === 'string') {\n        gap = space.substr(0, 10)\n    }\n\n    return serializeProperty('', {'': value})\n\n    function serializeProperty (key, holder) {\n        let value = holder[key]\n        if (value != null) {\n            if (typeof value.toJSON5 === 'function') {\n                value = value.toJSON5(key)\n            } else if (typeof value.toJSON === 'function') {\n                value = value.toJSON(key)\n            }\n        }\n\n        if (replacerFunc) {\n            value = replacerFunc.call(holder, key, value)\n        }\n\n        if (value instanceof Number) {\n            value = Number(value)\n        } else if (value instanceof String) {\n            value = String(value)\n        } else if (value instanceof Boolean) {\n            value = value.valueOf()\n        }\n\n        switch (value) {\n        case null: return 'null'\n        case true: return 'true'\n        case false: return 'false'\n        }\n\n        if (typeof value === 'string') {\n            return quoteString(value, false)\n        }\n\n        if (typeof value === 'number') {\n            return String(value)\n        }\n\n        if (typeof value === 'object') {\n            return Array.isArray(value) ? serializeArray(value) : serializeObject(value)\n        }\n\n        return undefined\n    }\n\n    function quoteString (value) {\n        const quotes = {\n            \"'\": 0.1,\n            '\"': 0.2,\n        }\n\n        const replacements = {\n            \"'\": \"\\\\'\",\n            '\"': '\\\\\"',\n            '\\\\': '\\\\\\\\',\n            '\\b': '\\\\b',\n            '\\f': '\\\\f',\n            '\\n': '\\\\n',\n            '\\r': '\\\\r',\n            '\\t': '\\\\t',\n            '\\v': '\\\\v',\n            '\\0': '\\\\0',\n            '\\u2028': '\\\\u2028',\n            '\\u2029': '\\\\u2029',\n        }\n\n        let product = ''\n\n        for (let i = 0; i < value.length; i++) {\n            const c = value[i]\n            switch (c) {\n            case \"'\":\n            case '\"':\n                quotes[c]++\n                product += c\n                continue\n\n            case '\\0':\n                if (util.isDigit(value[i + 1])) {\n                    product += '\\\\x00'\n                    continue\n                }\n            }\n\n            if (replacements[c]) {\n                product += replacements[c]\n                continue\n            }\n\n            if (c < ' ') {\n                let hexString = c.charCodeAt(0).toString(16)\n                product += '\\\\x' + ('00' + hexString).substring(hexString.length)\n                continue\n            }\n\n            product += c\n        }\n\n        const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b)\n\n        product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar])\n\n        return quoteChar + product + quoteChar\n    }\n\n    function serializeObject (value) {\n        if (stack.indexOf(value) >= 0) {\n            throw TypeError('Converting circular structure to JSON5')\n        }\n\n        stack.push(value)\n\n        let stepback = indent\n        indent = indent + gap\n\n        let keys = propertyList || Object.keys(value)\n        let partial = []\n        for (const key of keys) {\n            const propertyString = serializeProperty(key, value)\n            if (propertyString !== undefined) {\n                let member = serializeKey(key) + ':'\n                if (gap !== '') {\n                    member += ' '\n                }\n                member += propertyString\n                partial.push(member)\n            }\n        }\n\n        let final\n        if (partial.length === 0) {\n            final = '{}'\n        } else {\n            let properties\n            if (gap === '') {\n                properties = partial.join(',')\n                final = '{' + properties + '}'\n            } else {\n                let separator = ',\\n' + indent\n                properties = partial.join(separator)\n                final = '{\\n' + indent + properties + ',\\n' + stepback + '}'\n            }\n        }\n\n        stack.pop()\n        indent = stepback\n        return final\n    }\n\n    function serializeKey (key) {\n        if (key.length === 0) {\n            return quoteString(key, true)\n        }\n\n        const firstChar = String.fromCodePoint(key.codePointAt(0))\n        if (!util.isIdStartChar(firstChar)) {\n            return quoteString(key, true)\n        }\n\n        for (let i = firstChar.length; i < key.length; i++) {\n            if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {\n                return quoteString(key, true)\n            }\n        }\n\n        return key\n    }\n\n    function serializeArray (value) {\n        if (stack.indexOf(value) >= 0) {\n            throw TypeError('Converting circular structure to JSON5')\n        }\n\n        stack.push(value)\n\n        let stepback = indent\n        indent = indent + gap\n\n        let partial = []\n        for (let i = 0; i < value.length; i++) {\n            const propertyString = serializeProperty(String(i), value)\n            partial.push((propertyString !== undefined) ? propertyString : 'null')\n        }\n\n        let final\n        if (partial.length === 0) {\n            final = '[]'\n        } else {\n            if (gap === '') {\n                let properties = partial.join(',')\n                final = '[' + properties + ']'\n            } else {\n                let separator = ',\\n' + indent\n                let properties = partial.join(separator)\n                final = '[\\n' + indent + properties + ',\\n' + stepback + ']'\n            }\n        }\n\n        stack.pop()\n        indent = stepback\n        return final\n    }\n}\n", "const parse = require('./parse')\nconst stringify = require('./stringify')\n\nconst JSON5 = {\n    parse,\n    stringify,\n}\n\nmodule.exports = JSON5\n", "var weasels = [\n  'are a number',\n  'clearly',\n  'completely',\n  'exceedingly',\n  'excellent',\n  'extremely',\n  'fairly',\n  'few',\n  'huge',\n  'interestingly',\n  'is a number',\n  'largely',\n  'many',\n  'mostly',\n  'obviously',\n  'quite',\n  'relatively',\n  'remarkably',\n  'several',\n  'significantly',\n  'substantially',\n  'surprisingly',\n  'tiny',\n  'various',\n  'vast',\n  'very'\n];\n\n// Allow \"too many\" and \"too few\"\nvar exceptions = [\n  'many',\n  'few'\n]\n\nvar re = new RegExp('\\\\b(' + weasels.join('|') + ')\\\\b', 'gi');\n\nmodule.exports = function (text, opts) {\n  var suggestions = [];\n  while (match = re.exec(text)) {\n    var weasel = match[0].toLowerCase();\n    if (exceptions.indexOf(weasel) === -1 ||\n        text.substr(match.index-4, 4) !== 'too ') {\n      suggestions.push({\n        index: match.index,\n        offset: weasel.length,\n      });\n    }\n  }\n  return suggestions;\n};\n", "var irregulars = [\n  'awoken',\n  'been',\n  'born',\n  'beat',\n  'become',\n  'begun',\n  'bent',\n  'beset',\n  'bet',\n  'bid',\n  'bidden',\n  'bound',\n  'bitten',\n  'bled',\n  'blown',\n  'broken',\n  'bred',\n  'brought',\n  'broadcast',\n  'built',\n  'burnt',\n  'burst',\n  'bought',\n  'cast',\n  'caught',\n  'chosen',\n  'clung',\n  'come',\n  'cost',\n  'crept',\n  'cut',\n  'dealt',\n  'dug',\n  'dived',\n  'done',\n  'drawn',\n  'dreamt',\n  'driven',\n  'drunk',\n  'eaten',\n  'fallen',\n  'fed',\n  'felt',\n  'fought',\n  'found',\n  'fit',\n  'fled',\n  'flung',\n  'flown',\n  'forbidden',\n  'forgotten',\n  'foregone',\n  'forgiven',\n  'forsaken',\n  'frozen',\n  'gotten',\n  'given',\n  'gone',\n  'ground',\n  'grown',\n  'hung',\n  'heard',\n  'hidden',\n  'hit',\n  'held',\n  'hurt',\n  'kept',\n  'knelt',\n  'knit',\n  'known',\n  'laid',\n  'led',\n  'leapt',\n  'learnt',\n  'left',\n  'lent',\n  'let',\n  'lain',\n  'lighted',\n  'lost',\n  'made',\n  'meant',\n  'met',\n  'misspelt',\n  'mistaken',\n  'mown',\n  'overcome',\n  'overdone',\n  'overtaken',\n  'overthrown',\n  'paid',\n  'pled',\n  'proven',\n  'put',\n  'quit',\n  'read',\n  'rid',\n  'ridden',\n  'rung',\n  'risen',\n  'run',\n  'sawn',\n  'said',\n  'seen',\n  'sought',\n  'sold',\n  'sent',\n  'set',\n  'sewn',\n  'shaken',\n  'shaven',\n  'shorn',\n  'shed',\n  'shone',\n  'shod',\n  'shot',\n  'shown',\n  'shrunk',\n  'shut',\n  'sung',\n  'sunk',\n  'sat',\n  'slept',\n  'slain',\n  'slid',\n  'slung',\n  'slit',\n  'smitten',\n  'sown',\n  'spoken',\n  'sped',\n  'spent',\n  'spilt',\n  'spun',\n  'spit',\n  'split',\n  'spread',\n  'sprung',\n  'stood',\n  'stolen',\n  'stuck',\n  'stung',\n  'stunk',\n  'stridden',\n  'struck',\n  'strung',\n  'striven',\n  'sworn',\n  'swept',\n  'swollen',\n  'swum',\n  'swung',\n  'taken',\n  'taught',\n  'torn',\n  'told',\n  'thought',\n  'thrived',\n  'thrown',\n  'thrust',\n  'trodden',\n  'understood',\n  'upheld',\n  'upset',\n  'woken',\n  'worn',\n  'woven',\n  'wed',\n  'wept',\n  'wound',\n  'won',\n  'withheld',\n  'withstood',\n  'wrung',\n  'written'\n];\n\nvar exceptions = [\n  'indeed',\n];\n\nvar re = new RegExp('\\\\b(am|are|were|being|is|been|was|be)\\\\b\\\\s*([\\\\w]+ed|' + irregulars.join('|') + ')\\\\b', 'gi');\nvar byRe; // lazly construct\n\nmodule.exports = function (text, options) {\n  var r = (options && options.by) ?\n          (byRe || constructByRe()) : re; // not sorry\n\n  var suggestions = [];\n  while (match = r.exec(text)) {\n    if (exceptions.indexOf(match[2].toLowerCase()) === -1) {\n      suggestions.push({\n        index: match.index,\n        offset: match[0].length\n      });\n    }\n  }\n  return suggestions;\n}\n\n// lol\nfunction constructByRe () {\n  return byRe = new RegExp(re.toString().slice(1, -3) + '\\\\s*by\\\\b', 'gi');\n}\n", "function matcher(regex, text) {\n  const results = [];\n  let result = regex.exec(text);\n\n  while (result) {\n    results.push({ index: result.index, offset: result[0].length });\n    result = regex.exec(text);\n  }\n\n  return results;\n}\n\nmodule.exports = matcher;\n", "const adverbs = [\n  'absolutel',\n  'accidentall',\n  'additionall',\n  'allegedl',\n  'alternativel',\n  'angril',\n  'anxiousl',\n  'approximatel',\n  'awkwardl',\n  'badl',\n  'barel',\n  'beautifull',\n  'blindl',\n  'boldl',\n  'bravel',\n  'brightl',\n  'briskl',\n  'bristl',\n  'bubbl',\n  'busil',\n  'calml',\n  'carefull',\n  'carelessl',\n  'cautiousl',\n  'cheerfull',\n  'clearl',\n  'closel',\n  'coldl',\n  'completel',\n  'consequentl',\n  'correctl',\n  'courageousl',\n  'crinkl',\n  'cruell',\n  'crumbl',\n  'cuddl',\n  'currentl',\n  'daringl',\n  'deadl',\n  'definitel',\n  'deliberatel',\n  'doubtfull',\n  'dumbl',\n  'eagerl',\n  'earl',\n  'easil',\n  'elegantl',\n  'enormousl',\n  'enthusiasticall',\n  'equall',\n  'especiall',\n  'eventuall',\n  'exactl',\n  'exceedingl',\n  'exclusivel',\n  'extremel',\n  'fairl',\n  'faithfull',\n  'fatall',\n  'fiercel',\n  'finall',\n  'fondl',\n  'foolishl',\n  'fortunatel',\n  'frankl',\n  'franticall',\n  'generousl',\n  'gentl',\n  'giggl',\n  'gladl',\n  'gracefull',\n  'greedil',\n  'happil',\n  'hardl',\n  'hastil',\n  'healthil',\n  'heartil',\n  'helpfull',\n  'honestl',\n  'hourl',\n  'hungril',\n  'hurriedl',\n  'immediatel',\n  'impatientl',\n  'inadequatel',\n  'ingeniousl',\n  'innocentl',\n  'inquisitivel',\n  'interestingl',\n  'irritabl',\n  'jiggl',\n  'joyousl',\n  'justl',\n  'kindl',\n  'largel',\n  'latel',\n  'lazil',\n  'likel',\n  'literall',\n  'lonel',\n  'loosel',\n  'loudl',\n  'loudl',\n  'luckil',\n  'madl',\n  'man',\n  'mentall',\n  'mildl',\n  'mortall',\n  'mostl',\n  'mysteriousl',\n  'neatl',\n  'nervousl',\n  'noisil',\n  'normall',\n  'obedientl',\n  'occasionall',\n  'onl',\n  'openl',\n  'painfull',\n  'particularl',\n  'patientl',\n  'perfectl',\n  'politel',\n  'poorl',\n  'powerfull',\n  'presumabl',\n  'previousl',\n  'promptl',\n  'punctuall',\n  'quarterl',\n  'quickl',\n  'quietl',\n  'rapidl',\n  'rarel',\n  'reall',\n  'recentl',\n  'recklessl',\n  'regularl',\n  'relativel',\n  'reluctantl',\n  'remarkabl',\n  'repeatedl',\n  'rightfull',\n  'roughl',\n  'rudel',\n  'sadl',\n  'safel',\n  'selfishl',\n  'sensibl',\n  'seriousl',\n  'sharpl',\n  'shortl',\n  'shyl',\n  'significantl',\n  'silentl',\n  'simpl',\n  'sleepil',\n  'slowl',\n  'smartl',\n  'smell',\n  'smoothl',\n  'softl',\n  'solemnl',\n  'sparkl',\n  'speedil',\n  'stealthil',\n  'sternl',\n  'stupidl',\n  'substantiall',\n  'successfull',\n  'suddenl',\n  'surprisingl',\n  'suspiciousl',\n  'swiftl',\n  'tenderl',\n  'tensel',\n  'thoughtfull',\n  'tightl',\n  'timel',\n  'truthfull',\n  'unexpectedl',\n  'unfortunatel',\n  'usuall',\n  'ver',\n  'victoriousl',\n  'violentl',\n  'vivaciousl',\n  'warml',\n  'waverl',\n  'weakl',\n  'wearil',\n  'wildl',\n  'wisel',\n  'worldl',\n  'wrinkl'\n];\n\nconst weakens = [\n  'just',\n  'maybe',\n  'stuff',\n  'things'\n];\n\nconst adverbRegex = new RegExp(`${'\\\\b('\n  + '('}${adverbs.join('|')})(y)`\n  + `|(${weakens.join('|')}))\\\\b`, 'gi');\nconst matcher = require('./matcher');\n\nmodule.exports = function matchAdverbs(text) {\n  return matcher(adverbRegex, text);\n};\n", "function matcher(regex, text) {\n  const results = [];\n  let result = regex.exec(text);\n\n  while (result) {\n    results.push({ index: result.index, offset: result[0].length });\n    result = regex.exec(text);\n  }\n\n  return results;\n}\n\nmodule.exports = matcher;\n", "const matcher = require('./matcher');\n\nlet wordyWords = [\n  'a number of',\n  'abundance',\n  'accede to',\n  'accelerate',\n  'accentuate',\n  'accompany',\n  'accomplish',\n  'accorded',\n  'accrue',\n  'acquiesce',\n  'acquire',\n  'additional',\n  'adjacent to',\n  'adjustment',\n  'admissible',\n  'advantageous',\n  'adversely impact',\n  'advise',\n  'aforementioned',\n  'aggregate',\n  'aircraft',\n  'all of',\n  'all things considered',\n  'alleviate',\n  'allocate',\n  'along the lines of',\n  'already existing',\n  'alternatively',\n  'amazing',\n  'ameliorate',\n  'anticipate',\n  'apparent',\n  'appreciable',\n  'as a matter of fact',\n  'as a means of',\n  'as far as I\\'m concerned',\n  'as of yet',\n  'as per',\n  'as to',\n  'as yet',\n  'ascertain',\n  'assistance',\n  'at the present time',\n  'at this time',\n  'attain',\n  'attributable to',\n  'authorize',\n  'because of the fact that',\n  'belated',\n  'benefit from',\n  'bestow',\n  'by means of',\n  'by virtue of the fact that',\n  'by virtue of',\n  'cease',\n  'close proximity',\n  'commence',\n  'comply with',\n  'concerning',\n  'consequently',\n  'consolidate',\n  'constitutes',\n  'demonstrate',\n  'depart',\n  'designate',\n  'discontinue',\n  'do damage to',\n  'do harm to',\n  'due to the fact that',\n  'during the course of',\n  'each and every',\n  'economical',\n  'eliminate',\n  'elucidate',\n  'employ',\n  'endeavor',\n  'enumerate',\n  'equitable',\n  'equivalent',\n  'evaluate',\n  'evidenced',\n  'exclusively',\n  'expedite',\n  'expend',\n  'expiration',\n  'facilitate',\n  'factual evidence',\n  'feasible',\n  'finalize',\n  'first and foremost',\n  'for all intents and purposes',\n  'for the duration of',\n  'for the most part',\n  'for the purpose of',\n  'forfeit',\n  'formulate',\n  'have a tendency to',\n  'honest truth',\n  'however',\n  'if and when',\n  'impacted',\n  'implement',\n  'in a manner of speaking',\n  'in a timely manner',\n  'in a very real sense',\n  'in accordance with',\n  'in addition',\n  'in all likelihood',\n  'in an effort to',\n  'in between',\n  'in excess of',\n  'in lieu of',\n  'in light of the fact that',\n  'in many cases',\n  'in my opinion',\n  'in need of',\n  'in order to',\n  'in regard to',\n  'in some instances',\n  'in terms of',\n  'in the affirmative',\n  'in the case of',\n  'in the course of',\n  'in the event that',\n  'in the final analysis',\n  'in the midst of',\n  'in the nature of',\n  'in the near future',\n  'in the negative',\n  'in the process of',\n  'inception',\n  'incumbent upon',\n  'indicate',\n  'indication',\n  'initiate',\n  'irregardless',\n  'is applicable to',\n  'is authorized to',\n  'is responsible for',\n  'it is essential',\n  'it is',\n  'it seems that',\n  'it was',\n  'magnitude',\n  'majority of',\n  'make an effort',\n  'maximum',\n  'methodology',\n  'minimize',\n  'minimum',\n  'modify',\n  'monitor',\n  'multiple',\n  'myriad of',\n  'necessitate',\n  'nevertheless',\n  'not certain',\n  'not many',\n  'not often',\n  'not unless',\n  'not unlike',\n  'notwithstanding',\n  'null and void',\n  'numerous',\n  'objective',\n  'obligate',\n  'obtain',\n  'of late',\n  'of the fact that',\n  'off of',\n  'on the contrary',\n  'on the other hand',\n  'one particular',\n  'optimum',\n  'outside of',\n  'overall',\n  'owing to the fact that',\n  'participate',\n  'particulars',\n  'pass away',\n  'pertaining to',\n  'point in time',\n  'portion',\n  'possess',\n  'preclude',\n  'previous to',\n  'previously',\n  'prior to',\n  'prioritize',\n  'procure',\n  'proficiency',\n  'provided that',\n  'purchase',\n  'put simply',\n  'readily apparent',\n  'refer back',\n  'regarding',\n  'relocate',\n  'remainder',\n  'remuneration',\n  'requirement',\n  'reside',\n  'residence',\n  'retain',\n  'satisfy',\n  'shall',\n  'should you wish',\n  'similar to',\n  'solicit',\n  'sooner rather than later',\n  'span across',\n  'strategize',\n  'subsequent',\n  'substantial',\n  'successfully complete',\n  'sufficient',\n  'terminate',\n  'that which',\n  'the month of',\n  'the point I am trying to make',\n  'therefore',\n  'time period',\n  'took advantage of',\n  'transmit',\n  'transpire',\n  'type of',\n  'until such time as',\n  'utilization',\n  'utilize',\n  'validate',\n  'various different',\n  'what I mean to say is',\n  'whether or not',\n  'with respect to',\n  'with the exception of',\n  'witnessed'\n];\n\n// Replace a basic white-space with more-robust white-space matching for new lines, half-space etc.\nwordyWords = wordyWords.map((w) => w.replace(/ /g, '[\\\\b\\\\s\\\\u200C]*'));\nconst wordyRegex = new RegExp(`\\\\b(?<!-)(${wordyWords.join('|')})\\\\b`, 'gi');\n\nmodule.exports = function isTextWordy(text) {\n  return matcher(wordyRegex, text);\n};\n", "function matcher(regex, text) {\n  const results = [];\n  let result = regex.exec(text);\n\n  while (result) {\n    results.push({ index: result.index, offset: result[0].length });\n    result = regex.exec(text);\n  }\n\n  return results;\n}\n\nmodule.exports = matcher;\n", "let cliches = [\n  'a chip off the old block',\n  'a clean slate',\n  'a dark and stormy night',\n  'a far cry',\n  'a fine kettle of fish',\n  'a loose cannon',\n  'a penny saved is a penny earned',\n  'a tough row to hoe',\n  'a word to the wise',\n  'ace in the hole',\n  'acid test',\n  'add insult to injury',\n  'against all odds',\n  'air your dirty laundry',\n  'all fun and games',\n  'all in a day\\'s work',\n  'all talk, no action',\n  'all thumbs',\n  'all your eggs in one basket',\n  'all\\'s fair in love and war',\n  'all\\'s well that ends well',\n  'almighty dollar',\n  'American as apple pie',\n  'an axe to grind',\n  'another day, another dollar',\n  'armed to the teeth',\n  'as luck would have it',\n  'as old as time',\n  'as the crow flies',\n  'at loose ends',\n  'at my wits end',\n  'avoid like the plague',\n  'babe in the woods',\n  'back against the wall',\n  'back in the saddle',\n  'back to square one',\n  'back to the drawing board',\n  'bad to the bone',\n  'badge of honor',\n  'bald faced liar',\n  'ballpark figure',\n  'banging your head against a brick wall',\n  'baptism by fire',\n  'barking up the wrong tree',\n  'bat out of hell',\n  'be all and end all',\n  'beat a dead horse',\n  'beat around the bush',\n  'been there, done that',\n  'beggars can\\'t be choosers',\n  'behind the eight ball',\n  'bend over backwards',\n  'benefit of the doubt',\n  'bent out of shape',\n  'best thing since sliced bread',\n  'bet your bottom dollar',\n  'better half',\n  'better late than never',\n  'better mousetrap',\n  'better safe than sorry',\n  'between a rock and a hard place',\n  'beyond the pale',\n  'bide your time',\n  'big as life',\n  'big cheese',\n  'big fish in a small pond',\n  'big man on campus',\n  'bigger they are the harder they fall',\n  'bird in the hand',\n  'bird\\'s eye view',\n  'birds and the bees',\n  'birds of a feather flock together',\n  'bit the hand that feeds you',\n  'bite the bullet',\n  'bite the dust',\n  'bitten off more than he can chew',\n  'black as coal',\n  'black as pitch',\n  'black as the ace of spades',\n  'blast from the past',\n  'bleeding heart',\n  'blessing in disguise',\n  'blind ambition',\n  'blind as a bat',\n  'blind leading the blind',\n  'blood is thicker than water',\n  'blood sweat and tears',\n  'blow off steam',\n  'blow your own horn',\n  'blushing bride',\n  'boils down to',\n  'bolt from the blue',\n  'bone to pick',\n  'bored stiff',\n  'bored to tears',\n  'bottomless pit',\n  'boys will be boys',\n  'bright and early',\n  'brings home the bacon',\n  'broad across the beam',\n  'broken record',\n  'brought back to reality',\n  'bull by the horns',\n  'bull in a china shop',\n  'burn the midnight oil',\n  'burning question',\n  'burning the candle at both ends',\n  'burst your bubble',\n  'bury the hatchet',\n  'busy as a bee',\n  'by hook or by crook',\n  'call a spade a spade',\n  'called onto the carpet',\n  'calm before the storm',\n  'can of worms',\n  'can\\'t cut the mustard',\n  'can\\'t hold a candle to',\n  'case of mistaken identity',\n  'cat got your tongue',\n  'cat\\'s meow',\n  'caught in the crossfire',\n  'caught red-handed',\n  'checkered past',\n  'chomping at the bit',\n  'cleanliness is next to godliness',\n  'clear as a bell',\n  'clear as mud',\n  'close to the vest',\n  'cock and bull story',\n  'cold shoulder',\n  'come hell or high water',\n  'cool as a cucumber',\n  'cool, calm, and collected',\n  'cost a king\\'s ransom',\n  'count your blessings',\n  'crack of dawn',\n  'crash course',\n  'creature comforts',\n  'cross that bridge when you come to it',\n  'crushing blow',\n  'cry like a baby',\n  'cry me a river',\n  'cry over spilt milk',\n  'crystal clear',\n  'curiosity killed the cat',\n  'cut and dried',\n  'cut through the red tape',\n  'cut to the chase',\n  'cute as a bugs ear',\n  'cute as a button',\n  'cute as a puppy',\n  'cuts to the quick',\n  'dark before the dawn',\n  'day in, day out',\n  'dead as a doornail',\n  'devil is in the details',\n  'dime a dozen',\n  'divide and conquer',\n  'dog and pony show',\n  'dog days',\n  'dog eat dog',\n  'dog tired',\n  'don\\'t burn your bridges',\n  'don\\'t count your chickens',\n  'don\\'t look a gift horse in the mouth',\n  'don\\'t rock the boat',\n  'don\\'t step on anyone\\'s toes',\n  'don\\'t take any wooden nickels',\n  'down and out',\n  'down at the heels',\n  'down in the dumps',\n  'down the hatch',\n  'down to earth',\n  'draw the line',\n  'dressed to kill',\n  'dressed to the nines',\n  'drives me up the wall',\n  'dull as dishwater',\n  'dyed in the wool',\n  'eagle eye',\n  'ear to the ground',\n  'early bird catches the worm',\n  'easier said than done',\n  'easy as pie',\n  'eat your heart out',\n  'eat your words',\n  'eleventh hour',\n  'even the playing field',\n  'every dog has its day',\n  'every fiber of my being',\n  'everything but the kitchen sink',\n  'eye for an eye',\n  'face the music',\n  'facts of life',\n  'fair weather friend',\n  'fall by the wayside',\n  'fan the flames',\n  'feast or famine',\n  'feather your nest',\n  'feathered friends',\n  'few and far between',\n  'fifteen minutes of fame',\n  'filthy vermin',\n  'fine kettle of fish',\n  'fish out of water',\n  'fishing for a compliment',\n  'fit as a fiddle',\n  'fit the bill',\n  'fit to be tied',\n  'flash in the pan',\n  'flat as a pancake',\n  'flip your lid',\n  'flog a dead horse',\n  'fly by night',\n  'fly the coop',\n  'follow your heart',\n  'for all intents and purposes',\n  'for the birds',\n  'for what it\\'s worth',\n  'force of nature',\n  'force to be reckoned with',\n  'forgive and forget',\n  'fox in the henhouse',\n  'free and easy',\n  'free as a bird',\n  'fresh as a daisy',\n  'full steam ahead',\n  'fun in the sun',\n  'garbage in, garbage out',\n  'gentle as a lamb',\n  'get a kick out of',\n  'get a leg up',\n  'get down and dirty',\n  'get the lead out',\n  'get to the bottom of',\n  'get your feet wet',\n  'gets my goat',\n  'gilding the lily',\n  'give and take',\n  'go against the grain',\n  'go at it tooth and nail',\n  'go for broke',\n  'go him one better',\n  'go the extra mile',\n  'go with the flow',\n  'goes without saying',\n  'good as gold',\n  'good deed for the day',\n  'good things come to those who wait',\n  'good time was had by all',\n  'good times were had by all',\n  'greased lightning',\n  'greek to me',\n  'green thumb',\n  'green-eyed monster',\n  'grist for the mill',\n  'growing like a weed',\n  'hair of the dog',\n  'hand to mouth',\n  'happy as a clam',\n  'happy as a lark',\n  'hasn\\'t a clue',\n  'have a nice day',\n  'have high hopes',\n  'have the last laugh',\n  'haven\\'t got a row to hoe',\n  'head honcho',\n  'head over heels',\n  'hear a pin drop',\n  'heard it through the grapevine',\n  'heart\\'s content',\n  'heavy as lead',\n  'hem and haw',\n  'high and dry',\n  'high and mighty',\n  'high as a kite',\n  'hit paydirt',\n  'hold your head up high',\n  'hold your horses',\n  'hold your own',\n  'hold your tongue',\n  'honest as the day is long',\n  'horns of a dilemma',\n  'horse of a different color',\n  'hot under the collar',\n  'hour of need',\n  'I beg to differ',\n  'icing on the cake',\n  'if the shoe fits',\n  'if the shoe were on the other foot',\n  'in a jam',\n  'in a jiffy',\n  'in a nutshell',\n  'in a pig\\'s eye',\n  'in a pinch',\n  'in a word',\n  'in hot water',\n  'in the gutter',\n  'in the nick of time',\n  'in the thick of it',\n  'in your dreams',\n  'it ain\\'t over till the fat lady sings',\n  'it goes without saying',\n  'it takes all kinds',\n  'it takes one to know one',\n  'it\\'s a small world',\n  'it\\'s only a matter of time',\n  'ivory tower',\n  'Jack of all trades',\n  'jockey for position',\n  'jog your memory',\n  'joined at the hip',\n  'judge a book by its cover',\n  'jump down your throat',\n  'jump in with both feet',\n  'jump on the bandwagon',\n  'jump the gun',\n  'jump to conclusions',\n  'just a hop, skip, and a jump',\n  'just the ticket',\n  'justice is blind',\n  'keep a stiff upper lip',\n  'keep an eye on',\n  'keep it simple, stupid',\n  'keep the home fires burning',\n  'keep up with the Joneses',\n  'keep your chin up',\n  'keep your fingers crossed',\n  'kick the bucket',\n  'kick up your heels',\n  'kick your feet up',\n  'kid in a candy store',\n  'kill two birds with one stone',\n  'kiss of death',\n  'knock it out of the park',\n  'knock on wood',\n  'knock your socks off',\n  'know him from Adam',\n  'know the ropes',\n  'know the score',\n  'knuckle down',\n  'knuckle sandwich',\n  'knuckle under',\n  'labor of love',\n  'ladder of success',\n  'land on your feet',\n  'lap of luxury',\n  'last but not least',\n  'last hurrah',\n  'last-ditch effort',\n  'law of the jungle',\n  'law of the land',\n  'lay down the law',\n  'leaps and bounds',\n  'let sleeping dogs lie',\n  'let the cat out of the bag',\n  'let the good times roll',\n  'let your hair down',\n  'let\\'s talk turkey',\n  'letter perfect',\n  'lick your wounds',\n  'lies like a rug',\n  'life\\'s a bitch',\n  'life\\'s a grind',\n  'light at the end of the tunnel',\n  'lighter than a feather',\n  'lighter than air',\n  'like clockwork',\n  'like father like son',\n  'like taking candy from a baby',\n  'like the plague',\n  'like there\\'s no tomorrow',\n  'lion\\'s share',\n  'live and learn',\n  'live and let live',\n  'long and short of it',\n  'long lost love',\n  'look before you leap',\n  'look down your nose',\n  'look what the cat dragged in',\n  'looking a gift horse in the mouth',\n  'looks like death warmed over',\n  'loose cannon',\n  'lose your head',\n  'lose your temper',\n  'loud as a horn',\n  'lounge lizard',\n  'loved and lost',\n  'low man on the totem pole',\n  'luck of the draw',\n  'luck of the Irish',\n  'make hay while the sun shines',\n  'make money hand over fist',\n  'make my day',\n  'make the best of a bad situation',\n  'make the best of it',\n  'make your blood boil',\n  'man of few words',\n  'man\\'s best friend',\n  'mark my words',\n  'meaningful dialogue',\n  'missed the boat on that one',\n  'moment in the sun',\n  'moment of glory',\n  'moment of truth',\n  'money to burn',\n  'more power to you',\n  'more than one way to skin a cat',\n  'movers and shakers',\n  'moving experience',\n  'naked as a jaybird',\n  'naked truth',\n  'neat as a pin',\n  'needle in a haystack',\n  'needless to say',\n  'neither here nor there',\n  'never look back',\n  'never say never',\n  'nip and tuck',\n  'nip it in the bud',\n  'no guts, no glory',\n  'no love lost',\n  'no pain, no gain',\n  'no skin off my back',\n  'no stone unturned',\n  'no time like the present',\n  'no use crying over spilled milk',\n  'nose to the grindstone',\n  'not a hope in hell',\n  'not a minute\\'s peace',\n  'not in my backyard',\n  'not playing with a full deck',\n  'not the end of the world',\n  'not written in stone',\n  'nothing to sneeze at',\n  'nothing ventured nothing gained',\n  'now we\\'re cooking',\n  'off the top of my head',\n  'off the wagon',\n  'off the wall',\n  'old hat',\n  'older and wiser',\n  'older than dirt',\n  'older than Methuselah',\n  'on a roll',\n  'on cloud nine',\n  'on pins and needles',\n  'on the bandwagon',\n  'on the money',\n  'on the nose',\n  'on the rocks',\n  'on the spot',\n  'on the tip of my tongue',\n  'on the wagon',\n  'on thin ice',\n  'once bitten, twice shy',\n  'one bad apple doesn\\'t spoil the bushel',\n  'one born every minute',\n  'one brick short',\n  'one foot in the grave',\n  'one in a million',\n  'one red cent',\n  'only game in town',\n  'open a can of worms',\n  'open and shut case',\n  'open the flood gates',\n  'opportunity doesn\\'t knock twice',\n  'out of pocket',\n  'out of sight, out of mind',\n  'out of the frying pan into the fire',\n  'out of the woods',\n  'out on a limb',\n  'over a barrel',\n  'over the hump',\n  'pain and suffering',\n  'pain in the',\n  'panic button',\n  'par for the course',\n  'part and parcel',\n  'party pooper',\n  'pass the buck',\n  'patience is a virtue',\n  'pay through the nose',\n  'penny pincher',\n  'perfect storm',\n  'pig in a poke',\n  'pile it on',\n  'pillar of the community',\n  'pin your hopes on',\n  'pitter patter of little feet',\n  'plain as day',\n  'plain as the nose on your face',\n  'play by the rules',\n  'play your cards right',\n  'playing the field',\n  'playing with fire',\n  'pleased as punch',\n  'plenty of fish in the sea',\n  'point with pride',\n  'poor as a church mouse',\n  'pot calling the kettle black',\n  'pretty as a picture',\n  'pull a fast one',\n  'pull your punches',\n  'pulling your leg',\n  'pure as the driven snow',\n  'put it in a nutshell',\n  'put one over on you',\n  'put the cart before the horse',\n  'put the pedal to the metal',\n  'put your best foot forward',\n  'put your foot down',\n  'quick as a bunny',\n  'quick as a lick',\n  'quick as a wink',\n  'quick as lightning',\n  'quiet as a dormouse',\n  'rags to riches',\n  'raining buckets',\n  'raining cats and dogs',\n  'rank and file',\n  'rat race',\n  'reap what you sow',\n  'red as a beet',\n  'red herring',\n  'reinvent the wheel',\n  'rich and famous',\n  'rings a bell',\n  'ripe old age',\n  'ripped me off',\n  'rise and shine',\n  'road to hell is paved with good intentions',\n  'rob Peter to pay Paul',\n  'roll over in the grave',\n  'rub the wrong way',\n  'ruled the roost',\n  'running in circles',\n  'sad but true',\n  'sadder but wiser',\n  'salt of the earth',\n  'scared stiff',\n  'scared to death',\n  'sealed with a kiss',\n  'second to none',\n  'see eye to eye',\n  'seen the light',\n  'seize the day',\n  'set the record straight',\n  'set the world on fire',\n  'set your teeth on edge',\n  'sharp as a tack',\n  'shoot for the moon',\n  'shoot the breeze',\n  'shot in the dark',\n  'shoulder to the wheel',\n  'sick as a dog',\n  'sigh of relief',\n  'signed, sealed, and delivered',\n  'sink or swim',\n  'six of one, half a dozen of another',\n  'skating on thin ice',\n  'slept like a log',\n  'slinging mud',\n  'slippery as an eel',\n  'slow as molasses',\n  'smart as a whip',\n  'smooth as a baby\\'s bottom',\n  'sneaking suspicion',\n  'snug as a bug in a rug',\n  'sow wild oats',\n  'spare the rod, spoil the child',\n  'speak of the devil',\n  'spilled the beans',\n  'spinning your wheels',\n  'spitting image of',\n  'spoke with relish',\n  'spread like wildfire',\n  'spring to life',\n  'squeaky wheel gets the grease',\n  'stands out like a sore thumb',\n  'start from scratch',\n  'stick in the mud',\n  'still waters run deep',\n  'stitch in time',\n  'stop and smell the roses',\n  'straight as an arrow',\n  'straw that broke the camel\\'s back',\n  'strong as an ox',\n  'stubborn as a mule',\n  'stuff that dreams are made of',\n  'stuffed shirt',\n  'sweating blood',\n  'sweating bullets',\n  'take a load off',\n  'take one for the team',\n  'take the bait',\n  'take the bull by the horns',\n  'take the plunge',\n  'takes one to know one',\n  'takes two to tango',\n  'the more the merrier',\n  'the real deal',\n  'the real McCoy',\n  'the red carpet treatment',\n  'the same old story',\n  'there is no accounting for taste',\n  'thick as a brick',\n  'thick as thieves',\n  'thin as a rail',\n  'think outside of the box',\n  'third time\\'s the charm',\n  'this day and age',\n  'this hurts me worse than it hurts you',\n  'this point in time',\n  'three sheets to the wind',\n  'through thick and thin',\n  'throw in the towel',\n  'tie one on',\n  'tighter than a drum',\n  'time and time again',\n  'time is of the essence',\n  'tip of the iceberg',\n  'tired but happy',\n  'to coin a phrase',\n  'to each his own',\n  'to make a long story short',\n  'to the best of my knowledge',\n  'toe the line',\n  'tongue in cheek',\n  'too good to be true',\n  'too hot to handle',\n  'too numerous to mention',\n  'touch with a ten foot pole',\n  'tough as nails',\n  'trial and error',\n  'trials and tribulations',\n  'tried and true',\n  'trip down memory lane',\n  'twist of fate',\n  'two cents worth',\n  'two peas in a pod',\n  'ugly as sin',\n  'under the counter',\n  'under the gun',\n  'under the same roof',\n  'under the weather',\n  'until the cows come home',\n  'unvarnished truth',\n  'up the creek',\n  'uphill battle',\n  'upper crust',\n  'upset the applecart',\n  'vain attempt',\n  'vain effort',\n  'vanquish the enemy',\n  'vested interest',\n  'waiting for the other shoe to drop',\n  'wakeup call',\n  'warm welcome',\n  'watch your p\\'s and q\\'s',\n  'watch your tongue',\n  'watching the clock',\n  'water under the bridge',\n  'weather the storm',\n  'weed them out',\n  'week of Sundays',\n  'went belly up',\n  'wet behind the ears',\n  'what goes around comes around',\n  'what you see is what you get',\n  'when it rains, it pours',\n  'when push comes to shove',\n  'when the cat\\'s away',\n  'when the going gets tough, the tough get going',\n  'white as a sheet',\n  'whole ball of wax',\n  'whole hog',\n  'whole nine yards',\n  'wild goose chase',\n  'will wonders never cease?',\n  'wisdom of the ages',\n  'wise as an owl',\n  'wolf at the door',\n  'words fail me',\n  'work like a dog',\n  'world weary',\n  'worst nightmare',\n  'worth its weight in gold',\n  'wrong side of the bed',\n  'yanking your chain',\n  'yappy as a dog',\n  'years young',\n  'you are what you eat',\n  'you can run but you can\\'t hide',\n  'you only live once',\n  'you\\'re the boss ',\n  'young and foolish',\n  'young and vibrant',\n];\n\n// Replace a basic white-space with more-robust white-space matching for new lines, half-space etc.\ncliches = cliches.map((w) => w.replace(/ /g, '[\\\\b\\\\s\\\\u200C]*'));\nconst clicheRegex = new RegExp(`\\\\b(${cliches.join('|')})\\\\b`, 'gi');\nconst matcher = require('./matcher');\n\nmodule.exports = function clichesMatcher(text) {\n  return matcher(clicheRegex, text);\n};\n", "var toBe = [\n    'am',\n    'are',\n    'aren\\'t',\n    'be',\n    'been',\n    'being',\n    'he\\'s',\n    'here\\'s',\n    'here\\'s',\n    'how\\'s',\n    'i\\'m',\n    'is',\n    'isn\\'t',\n    'it\\'s',\n    'she\\'s',\n    'that\\'s',\n    'there\\'s',\n    'they\\'re',\n    'was',\n    'wasn\\'t',\n    'we\\'re',\n    'were',\n    'weren\\'t',\n    'what\\'s',\n    'where\\'s',\n    'who\\'s',\n    'you\\'re'\n];\n\nvar re = new RegExp('\\\\b(' + toBe.join('|') + ')\\\\b', 'gi');\n\nmodule.exports = function (text) {\n    var suggestions = [];\n    if (!text || text.length === 0) return suggestions;\n    text = text.replace(/[\\u2018\\u2019]/g, \"'\"); // convert smart quotes\n    while (match = re.exec(text)) {\n        var be = match[0].toLowerCase();\n        suggestions.push({\n            index: match.index,\n            offset: be.length\n        });\n    }\n\n    return suggestions;\n};", "// via http://matt.might.net/articles/shell-scripts-for-passive-voice-weasel-words-duplicates/\n\n// Example:\n// Many readers are not aware that the\n// the brain will automatically ignore\n// a second instance of the word \"the\"\n// when it starts a new line.\nconst re = new RegExp('(\\\\s*)([^\\\\s]+)', 'gi');\nconst word = /\\w+/;\n\nmodule.exports = function lexicalIllusions(text) {\n  const suggestions = [];\n  let lastMatch = '';\n  let match;\n\n  // eslint-disable-next-line no-cond-assign\n  while (match = re.exec(text)) {\n    if (word.test(match[2]) && match[2].toLowerCase() === lastMatch) {\n      suggestions.push({\n        index: match.index + match[1].length,\n        offset: match[2].length\n      });\n    }\n    lastMatch = match[2].toLowerCase();\n  }\n\n  return suggestions;\n};\n", "/* eslint-disable no-cond-assign */\n\n// Opinion: I think it's gross to start written English independent clauses with \"so\"\n//          most of the time. Maybe it's okay in spoken English.\n//\n// More on \"so:\"\n// * http://www.nytimes.com/2010/05/22/us/22iht-currents.html?_r=0\n// * http://comminfo.rutgers.edu/images/comprofiler/plug_profilegallery/84/pg_2103855866.pdf\n\n// this implementation is really naive\n// eslint-disable-next-line no-control-regex\nconst re = new RegExp('([^\\n\\\\.;!?]+)([\\\\.;!?]+)', 'gi');\nconst startsWithSoRegex = new RegExp('^(\\\\s)*so\\\\b[\\\\s\\\\S]', 'i');\n\nmodule.exports = function startsWithSo(text) {\n  const suggestions = [];\n  let match;\n  let innerMatch;\n\n  while (match = re.exec(text)) {\n    if (innerMatch = startsWithSoRegex.exec(match[1])) {\n      suggestions.push({\n        index: match.index + (innerMatch[1] || '').length,\n        offset: 2\n      });\n    }\n  }\n  return suggestions;\n};\n", "/* eslint-disable no-cond-assign */\n\n// Opinion: I think it's gross to start written English sentences with \"there (is|are)\"\n//          (most of the time)\n\n// this implementation is really naive\n// eslint-disable-next-line no-control-regex\nconst re = new RegExp('([^\\n\\\\.;!?]+)([\\\\.;!?]+)', 'gi');\nconst startsWithThereIsRegex = new RegExp('^(\\\\s)*there\\\\b\\\\s(is|are)\\\\b', 'i');\n\nmodule.exports = function startsWithThereIs(text) {\n  const suggestions = [];\n  let match;\n  let innerMatch;\n\n  while (match = re.exec(text)) {\n    if (innerMatch = startsWithThereIsRegex.exec(match[1])) {\n      suggestions.push({\n        index: match.index + (innerMatch[1] || '').length,\n        offset: innerMatch[0].length - (innerMatch[1] || '').length\n      });\n    }\n  }\n  return suggestions;\n};\n", "function repeatChar(ch, times) {\n  let str = '';\n  for (let i = times; i > 0; i--) {\n    str += ch;\n  }\n  return str;\n}\n\nfunction generateStartOfLineIndex(line, lines) {\n  const x = lines.slice(0);\n  x.splice(line - 1);\n  return x.join('\\n').length + (x.length > 0);\n}\n\nfunction findLineColumn(contents, lines, index) {\n  const line = contents.substr(0, index).split('\\n').length;\n  const startOfLineIndex = generateStartOfLineIndex(line, lines);\n  const col = index - startOfLineIndex;\n\n  return { line, col };\n}\n\n// annotate file contents with suggestions\nmodule.exports = function annotate(contents, suggestions, parse) {\n  const lines = contents.split('\\n');\n\n  return suggestions.map((suggestion) => {\n    const lineColumn = findLineColumn(contents, lines, suggestion.index);\n\n    let fix = 0;\n\n    if (lineColumn.col > 25) {\n      fix = lineColumn.col - 25;\n    }\n\n    if (parse) {\n      return {\n        reason: suggestion.reason,\n        line: lineColumn.line,\n        col: lineColumn.col,\n      };\n    }\n    const lineSegment = lines[lineColumn.line - 1].substr(fix, 80);\n\n    return [\n      lineSegment,\n      repeatChar(' ', lineColumn.col - fix) + repeatChar('^', suggestion.offset),\n      `${suggestion.reason} on line ${lineColumn.line} at column ${lineColumn.col}`\n    ].join('\\n');\n  });\n};\n", "const weaselWords = require('weasel-words');\nconst passiveVoice = require('passive-voice');\nconst adverbWhere = require('adverb-where');\nconst tooWordy = require('too-wordy');\nconst noCliches = require('no-cliches');\nconst ePrime = require('e-prime');\n\nconst lexicalIllusions = require('./lib/lexical-illusions');\nconst startsWithSo = require('./lib/starts-with-so');\nconst thereIs = require('./lib/there-is');\n\nconst defaultChecks = {\n  weasel: { fn: weaselWords, explanation: 'is a weasel word' },\n  illusion: { fn: lexicalIllusions, explanation: 'is repeated' },\n  so: { fn: startsWithSo, explanation: 'adds no meaning' },\n  thereIs: { fn: thereIs, explanation: 'is unnecessary verbiage' },\n  passive: { fn: passiveVoice, explanation: 'may be passive voice' },\n  adverb: { fn: adverbWhere, explanation: 'can weaken meaning' },\n  tooWordy: { fn: tooWordy, explanation: 'is wordy or unneeded' },\n  cliches: { fn: noCliches, explanation: 'is a cliche' },\n  eprime: { fn: ePrime, explanation: 'is a form of \\'to be\\'' }\n};\n\n// User must explicitly opt-in\nconst disabledChecks = {\n  eprime: false\n};\n\nfunction filter(text, suggestions, whitelistTerms = []) {\n  const whitelistSlices = whitelistTerms.reduce((memo, term) => {\n    let index = text.indexOf(term);\n    while (index > 0) {\n      memo.push({ from: index, to: index + term.length });\n      index = text.indexOf(term, index + 1);\n    }\n    return memo;\n  }, []);\n\n  return suggestions.reduce((memo, suggestion) => {\n    if (!whitelistSlices.find((slice) => {\n      const suggestionFrom = suggestion.index;\n      const suggestionTo = suggestion.index + suggestion.offset;\n      return (\n        // suggestion covers entire whitelist term\n        suggestionFrom <= slice.from && suggestionTo >= slice.to\n      ) || (\n        // suggestion starts within whitelist term\n        suggestionFrom >= slice.from && suggestionFrom <= slice.to\n      ) || (\n        // suggestion ends within whitelist term\n        suggestionTo >= slice.from && suggestionTo <= slice.to\n      );\n    })) {\n      memo.push(suggestion);\n    }\n    return memo;\n  }, []);\n}\n\nfunction dedup(suggestions) {\n  const dupsHash = {};\n\n  return suggestions.reduce((memo, suggestion) => {\n    const key = `${suggestion.index}:${suggestion.offset}`;\n    if (!dupsHash[key]) {\n      dupsHash[key] = suggestion;\n      memo.push(suggestion);\n    } else {\n      dupsHash[key].reason += ` and ${suggestion.reason.substring(suggestion.offset + 3)}`;\n    }\n    return memo;\n  }, []);\n}\n\nfunction reasonable(text, reason) {\n  return function reasonableSuggestion(suggestion) {\n    // eslint-disable-next-line no-param-reassign\n    suggestion.reason = `\"${\n      text.substr(suggestion.index, suggestion.offset)\n    }\" ${reason}`;\n    return suggestion;\n  };\n}\n\nmodule.exports = function writeGood(text, opts = {}) {\n  const finalOpts = {};\n  const defaultOpts = Object.assign({}, disabledChecks, opts);\n  Object.keys(defaultOpts).forEach((optKey) => {\n    if (optKey !== 'checks') {\n      finalOpts[optKey] = defaultOpts[optKey];\n    }\n  });\n\n  const finalChecks = opts.checks || defaultChecks;\n\n  let suggestions = [];\n  Object.keys(finalChecks).forEach((checkName) => {\n    if (finalOpts[checkName] !== false) {\n      suggestions = suggestions.concat(\n        finalChecks[checkName]\n          .fn(text)\n          .map(reasonable(text, finalChecks[checkName].explanation))\n      );\n    }\n  });\n\n  const filtered = filter(text, suggestions, opts.whitelist);\n\n  return dedup(filtered).sort((a, b) => (a.index < b.index ? -1 : 1));\n};\n\nmodule.exports.annotate = require('./lib/annotate');\n", "/**\n * @packageDocumentation\n * Public plugin entrypoint for eslint-plugin-write-good-comments-2.\n */\n\nimport type { ESLint, Linter } from \"eslint\";\nimport type { ArrayValues, Except, UnknownRecord } from \"type-fest\";\n\nimport { safeCastTo } from \"ts-extras\";\n\n// eslint-disable-next-line import-x/extensions -- JSON imports in ESM require explicit `.json` and import attributes.\nimport packageJson from \"../package.json\" with { type: \"json\" };\nimport inclusiveLanguageCommentsRule from \"./rules/inclusive-language-comments.js\";\nimport noProfaneCommentsRule from \"./rules/no-profane-comments.js\";\nimport readabilityCommentsRule from \"./rules/readability-comments.js\";\nimport spellcheckCommentsRule from \"./rules/spellcheck-comments.js\";\nimport taskCommentFormatRule from \"./rules/task-comment-format.js\";\nimport writeGoodCommentsRule from \"./rules/write-good-comments.js\";\n\n/** Default file globs targeted by plugin presets when `files` is omitted. */\nconst DEFAULT_FILES = [\"**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}\"] as const;\n\n/** Canonical flat-config preset keys exposed through `plugin.configs`. */\nexport const writeGoodCommentsConfigNames = [\"all\", \"recommended\"] as const;\n\n/** Canonical rule names exposed through `plugin.rules`. */\nexport const writeGoodCommentsRuleNames = [\n    \"inclusive-language-comments\",\n    \"no-profane-comments\",\n    \"readability-comments\",\n    \"spellcheck-comments\",\n    \"task-comment-format\",\n    \"write-good-comments\",\n] as const;\n\n/** Canonical flat-config preset key type exposed through `plugin.configs`. */\nexport type WriteGoodCommentsConfigName = ArrayValues<\n    typeof writeGoodCommentsConfigNames\n>;\n\n/** Flat-config preset shape produced by this plugin. */\nexport type WriteGoodCommentsPresetConfig = Linter.Config & {\n    rules: NonNullable<Linter.Config[\"rules\"]>;\n};\n\n/** Strongly typed qualified rule-id union exported by this plugin. */\nexport type WriteGoodCommentsRuleId =\n    `write-good-comments/${WriteGoodCommentsRuleName}`;\n\n/** Strongly typed unqualified rule-name union exported by this plugin. */\nexport type WriteGoodCommentsRuleName = ArrayValues<\n    typeof writeGoodCommentsRuleNames\n>;\n\n/** Runtime rule-entry shape expected by the public ESLint plugin contract. */\ntype PluginRuleEntry = NonNullable<ESLint.Plugin[\"rules\"]>[string];\n\n/** Runtime rule-map shape expected by the public ESLint plugin contract. */\ntype PluginRulesMap = NonNullable<ESLint.Plugin[\"rules\"]>;\n\n/** Check whether a dynamic value is a non-null object record. */\nconst isRecord = (value: unknown): value is Readonly<UnknownRecord> =>\n    typeof value === \"object\" && value !== null;\n\n/** Runtime rule registry shipped by this plugin. */\nexport const writeGoodCommentsRules: Readonly<\n    Record<WriteGoodCommentsRuleName, PluginRuleEntry>\n> = {\n    \"inclusive-language-comments\":\n        inclusiveLanguageCommentsRule as unknown as PluginRuleEntry,\n    \"no-profane-comments\": noProfaneCommentsRule as unknown as PluginRuleEntry,\n    \"readability-comments\":\n        readabilityCommentsRule as unknown as PluginRuleEntry,\n    \"spellcheck-comments\": spellcheckCommentsRule as unknown as PluginRuleEntry,\n    \"task-comment-format\": taskCommentFormatRule as unknown as PluginRuleEntry,\n    \"write-good-comments\": writeGoodCommentsRule as unknown as PluginRuleEntry,\n};\n\n/** Rule memberships for each public preset. */\nconst presetRuleNamesByConfigName: Readonly<\n    Record<WriteGoodCommentsConfigName, readonly WriteGoodCommentsRuleName[]>\n> = {\n    all: [...writeGoodCommentsRuleNames],\n    recommended: [\n        \"write-good-comments\",\n        \"task-comment-format\",\n        \"inclusive-language-comments\",\n    ],\n};\n\n/** Runtime config registry shipped by this plugin. */\nexport type WriteGoodCommentsConfigs = Record<\n    WriteGoodCommentsConfigName,\n    WriteGoodCommentsPresetConfig\n>;\n\n/** Fully assembled plugin contract used by the runtime default export. */\nexport type WriteGoodCommentsPlugin = Except<\n    ESLint.Plugin,\n    \"configs\" | \"rules\"\n> & {\n    configs: WriteGoodCommentsConfigs;\n    meta: {\n        name: string;\n        namespace: string;\n        version: string;\n    };\n    rules: PluginRulesMap & typeof writeGoodCommentsRules;\n};\n\n/**\n * Resolve package version from package.json data.\n *\n * @param pkg - Parsed package metadata value.\n *\n * @returns The package version, or `0.0.0` when unavailable.\n */\nconst getPackageVersion = (pkg: unknown): string => {\n    if (!isRecord(pkg)) {\n        return \"0.0.0\";\n    }\n\n    const version = Reflect.get(pkg, \"version\");\n\n    return typeof version === \"string\" ? version : \"0.0.0\";\n};\n\n/**\n * Resolve package name from package.json data.\n *\n * @param pkg - Parsed package metadata value.\n *\n * @returns The package name, or `eslint-plugin-write-good-comments-2` when\n *   unavailable.\n */\nconst getPackageName = (pkg: unknown): string => {\n    if (!isRecord(pkg)) {\n        return \"eslint-plugin-write-good-comments-2\";\n    }\n\n    const name = Reflect.get(pkg, \"name\");\n\n    return typeof name === \"string\"\n        ? name\n        : \"eslint-plugin-write-good-comments-2\";\n};\n\n/**\n * Build an ESLint rules map that enables each provided rule at error level.\n *\n * @param ruleNames - Rule names to enable.\n *\n * @returns Rules config object compatible with flat config.\n */\nconst errorRulesFor = (\n    ruleNames: readonly WriteGoodCommentsRuleName[]\n): WriteGoodCommentsPresetConfig[\"rules\"] => {\n    const rules: WriteGoodCommentsPresetConfig[\"rules\"] = {};\n\n    for (const ruleName of ruleNames) {\n        rules[`write-good-comments/${ruleName}`] = \"error\";\n    }\n\n    return rules;\n};\n\n/**\n * Build one exported plugin preset.\n *\n * @param plugin - Plugin self-reference for flat-config `plugins` maps.\n * @param configName - Public preset key.\n *\n * @returns Fully assembled flat config preset.\n */\nconst createPreset = (\n    plugin: Readonly<WriteGoodCommentsPlugin>,\n    configName: WriteGoodCommentsConfigName\n): WriteGoodCommentsPresetConfig => ({\n    files: [...DEFAULT_FILES],\n    name: `write-good-comments:${configName}`,\n    plugins: {\n        \"write-good-comments\": plugin,\n    },\n    rules: errorRulesFor(presetRuleNamesByConfigName[configName]),\n});\n\n/** Runtime default plugin export. */\nconst plugin: WriteGoodCommentsPlugin = {\n    configs: {} as WriteGoodCommentsConfigs,\n    meta: {\n        name: getPackageName(packageJson),\n        namespace: \"write-good-comments\",\n        version: getPackageVersion(packageJson),\n    },\n    processors: {},\n    rules: safeCastTo(writeGoodCommentsRules),\n};\n\nplugin.configs = {\n    all: createPreset(plugin, \"all\"),\n    recommended: createPreset(plugin, \"recommended\"),\n};\n\nexport default plugin;\n", "/**\nConstrain a value to the given type safely.\n\nUnlike `as`, this refuses incompatible casts at compile time. Use it to _narrow_ or _shape_ values while preserving type safety.\n\n@example\n```\ntype Foo = {\n    a: string;\n    b?: number;\n};\n\ndeclare const possibleUndefined: Foo | undefined;\n\nconst foo = possibleUndefined ?? safeCastTo<Partial<Foo>>({});\nconsole.log(foo.a ?? '', foo.b ?? 0);\n\nconst bar = possibleUndefined ?? {};\n// @ts-expect-error\nconsole.log(bar.a ?? '', bar.b ?? 0);\n//             ^^^ Property 'a' does not exist on type '{}'.(2339)\n//                          ^^^ Property 'b' does not exist on type '{}'.(2339)\n```\n\n@category General\n*/\nexport function safeCastTo(value) {\n    return value;\n}\n", "/**\nA strongly-typed version of `Array#includes()` that properly acts as a type guard.\n\nWhen `arrayIncludes` returns `true`, the type is narrowed to the array's element type.\nWhen it returns `false`, the type remains unchanged (i.e., `unknown` stays `unknown`).\n\nIt was [rejected](https://github.com/microsoft/TypeScript/issues/26255#issuecomment-748211891) from being done in TypeScript itself.\n\n@example\n```\nimport {arrayIncludes} from 'ts-extras';\n\nconst values = ['a', 'b', 'c'] as const;\nconst valueToCheck: unknown = 'a';\n\nif (arrayIncludes(values, valueToCheck)) {\n    // We now know that the value is of type `typeof values[number]`.\n} else {\n    // The value remains `unknown`.\n}\n```\n\n@category Improved builtin\n@category Type guard\n*/\nexport function arrayIncludes(array, item, fromIndex) {\n    return array.includes(item, fromIndex);\n}\n", "/**\nA strongly-typed version of `Array#join()` that preserves literal string types.\n\nThe built-in `Array#join()` always returns `string`, losing type information. This function returns a properly-typed template literal when given a tuple of literals.\n\n@example\n```\nimport {arrayJoin} from 'ts-extras';\n\n// Literal types are preserved automatically\nconst joined = arrayJoin(['foo', 'bar', 'baz'], '-');\n//=> 'foo-bar-baz'\n//   ^? 'foo-bar-baz'\n\nconst dotPath = arrayJoin(['a', 'b', 'c'], '.');\n//=> 'a.b.c'\n//   ^? 'a.b.c'\n\n// Dynamic arrays return string\nconst dynamic: string[] = ['a', 'b'];\nconst dynamicJoined = arrayJoin(dynamic, '-');\n//=> string\n```\n\n@category Improved builtin\n*/\nexport function arrayJoin(array, delimiter) {\n    return array.join(delimiter);\n}\n", "export function arrayFirst(array) {\n    return array[0];\n}\n", "/**\nCheck whether a value is defined, meaning it is not `undefined`.\n\nThis can be useful as a type guard, as for example, `[1, undefined].filter(Boolean)` does not always type-guard correctly.\n\n@example\n```\nimport {isDefined} from 'ts-extras';\n\n[1, undefined, 2].filter(isDefined);\n//=> [1, 2]\n```\n\n@category Type guard\n*/\nexport function isDefined(value) {\n    return value !== undefined;\n}\n", "/**\nCheck whether an array is empty.\n\nThis is useful because doing `array.length === 0` on its own won't work as a type-guard.\n\n@example\n```\nimport {isEmpty} from 'ts-extras';\n\nisEmpty([1, 2, 3]);\n//=> false\n\nisEmpty([]);\n//=> true\n\n// Works with tuples\nconst tuple: [string, number] | [] = Math.random() > 0.5 ? ['hello', 42] : [];\nif (isEmpty(tuple)) {\n    // tuple is now typed as []\n} else {\n    // tuple is now typed as [string, number]\n}\n```\n\n@category Type guard\n*/\nexport function isEmpty(array) {\n    return array.length === 0;\n}\n", "/**\nA strongly-typed version of `Number.isInteger()`.\n\n@category Improved builtin\n@category Type guard\n*/\nexport const isInteger = Number.isInteger;\n", "/**\nCheck if a key exists in an object and narrow the key type.\n\nThis function performs __key narrowing__ - it narrows the key variable to only keys that actually exist in the object. Uses the `in` operator to check the entire prototype chain.\n\nWhen `keyIn` returns `true`, the key is narrowed to keys that exist in the object.\nWhen it returns `false`, the key type remains unchanged.\n\nUnlike `objectHasIn` and `objectHasOwn` (both do object narrowing), this narrows the _key_ type, making it useful for validating union types of possible keys.\n\n@example\n```\nimport {keyIn} from 'ts-extras';\n\nconst object = {foo: 1, bar: 2};\nconst key = 'foo' as 'foo' | 'bar' | 'baz';\n\nif (keyIn(object, key)) {\n    // `key` is now: 'foo' | 'bar' (narrowed from union)\n    console.log(object[key]); // Safe access\n} else {\n    // `key` remains: 'foo' | 'bar' | 'baz' (unchanged)\n}\n\n// Works with symbols\nconst symbol = Symbol.for('myKey');\nconst objectWithSymbol = {[symbol]: 'value'};\nif (keyIn(objectWithSymbol, symbol)) {\n    // symbol is narrowed to existing symbol keys\n}\n```\n\n@note This uses the `in` operator and checks the prototype chain, but blocks `__proto__` and `constructor` for security.\n\n@category Type guard\n*/\nexport function keyIn(object, key) {\n    // Guard against prototype pollution\n    if (key === '__proto__' || key === 'constructor') {\n        return false;\n    }\n    return key in object;\n}\n", "/**\nCheck if an object has a property (including inherited) and narrow the object type.\n\nThis function performs __object narrowing__ - it adds the checked property to the object's type, allowing safe property access. Uses the `in` operator to check the entire prototype chain.\n\nUnlike `objectHasOwn` (own properties only) and `keyIn` (key narrowing), this narrows the _object_ type to include inherited properties.\n\n@example\n```\nimport {objectHasIn} from 'ts-extras';\n\nconst data: unknown = {foo: 1};\n\nif (objectHasIn(data, 'foo')) {\n    // `data` is now: unknown & {foo: unknown}\n    console.log(data.foo); // Safe access\n}\n\n// Also checks prototype chain\nif (objectHasIn(data, 'toString')) {\n    // `data` is now: unknown & {toString: unknown}\n    console.log(data.toString); // Safe access to inherited method\n}\n```\n\n@note This uses the `in` operator and checks the entire prototype chain, but blocks `__proto__` and `constructor` for security.\n\n@category Type guard\n*/\nexport function objectHasIn(object, key) {\n    // Guard against prototype pollution\n    if (key === '__proto__' || key === 'constructor') {\n        return false;\n    }\n    return key in object;\n}\n", "/**\nA strongly-typed version of `Object.hasOwn()` that narrows the object type.\n\nThis function performs __object narrowing__ for own properties only - it adds the checked property to the object's type, allowing safe property access. Does not check the prototype chain.\n\nUnlike `objectHasIn` (includes inherited) and `keyIn` (key narrowing), this narrows the _object_ type to include only own properties.\n\n@example\n```\nimport {objectHasOwn} from 'ts-extras';\n\nconst data: unknown = {foo: 1};\n\nif (objectHasOwn(data, 'foo')) {\n    // `data` is now: unknown & {foo: unknown}\n    console.log(data.foo); // Safe access to own property\n}\n\nobjectHasOwn({}, 'toString');\n//=> false (inherited property, not own)\n```\n\n@category Improved builtin\n@category Type guard\n*/\nexport function objectHasOwn(object, key) {\n    return Object.hasOwn(object, key);\n}\n", "/**\nA strongly-typed version of `Set#has()` that properly acts as a type guard.\n\nWhen `setHas` returns `true`, the type is narrowed to the set's element type.\nWhen it returns `false`, the type remains unchanged (i.e., `unknown` stays `unknown`).\n\nIt was [rejected](https://github.com/microsoft/TypeScript/issues/42641#issuecomment-774168319) from being done in TypeScript itself.\n\n@example\n```\nimport {setHas} from 'ts-extras';\n\nconst values = ['a', 'b', 'c'] as const;\nconst valueSet = new Set(values);\nconst valueToCheck: unknown = 'a';\n\nif (setHas(valueSet, valueToCheck)) {\n    // We now know that the value is of type `typeof values[number]`.\n} else {\n    // The value remains `unknown`.\n}\n```\n\n@category Improved builtin\n@category Type guard\n*/\nexport function setHas(set, item) {\n    return set.has(item);\n}\n", "/**\nA strongly-typed version of `String#split()` that returns a tuple for literal strings.\n\n@example\n```\nimport {stringSplit} from 'ts-extras';\n\nconst parts = stringSplit('foo-bar-baz', '-');\n//=> ['foo', 'bar', 'baz']\n//   ^? ['foo', 'bar', 'baz']\n\nconst [first, second] = stringSplit('top-left', '-');\n//=> first: 'top', second: 'left'\n\nconst placement = 'top-start' as const;\nconst side = stringSplit(placement, '-')[0];\n//=> 'top'\n//   ^? 'top'\n\n// Dynamic strings return string[]\nconst dynamic: string = 'a-b-c';\nconst dynamicParts = stringSplit(dynamic, '-');\n//=> string[]\n```\n\n@category Improved builtin\n*/\nexport function stringSplit(string, delimiter) {\n    return string.split(delimiter);\n}\n", "{\n    \"$schema\": \"https://www.schemastore.org/package.json\",\n    \"name\": \"eslint-plugin-write-good-comments-2\",\n    \"version\": \"1.2.5\",\n    \"private\": false,\n    \"description\": \"ESLint plugin that lints source comments for prose quality, inclusive language, profanity, spelling, readability, and task hygiene.\",\n    \"keywords\": [\n        \"eslint\",\n        \"eslint-plugin\",\n        \"eslintplugin\",\n        \"comments\",\n        \"documentation\",\n        \"inclusive-language\",\n        \"prose\",\n        \"readability\",\n        \"spellcheck\",\n        \"write-good\"\n    ],\n    \"homepage\": \"https://github.com/Nick2bad4u/eslint-plugin-write-good-comments-2\",\n    \"bugs\": {\n        \"url\": \"https://github.com/Nick2bad4u/eslint-plugin-write-good-comments-2/issues\",\n        \"email\": \"20943337+Nick2bad4u@users.noreply.github.com\"\n    },\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"git+https://github.com/Nick2bad4u/eslint-plugin-write-good-comments-2.git\"\n    },\n    \"license\": \"MIT\",\n    \"author\": \"Nick2bad4u <20943337+Nick2bad4u@users.noreply.github.com> (https://github.com/Nick2bad4u)\",\n    \"contributors\": [\n        {\n            \"name\": \"Nick2bad4u\",\n            \"email\": \"20943337+Nick2bad4u@users.noreply.github.com\",\n            \"url\": \"https://nick2bad4u.github.io/eslint-plugin-write-good-comments-2\"\n        }\n    ],\n    \"sideEffects\": false,\n    \"type\": \"module\",\n    \"exports\": {\n        \".\": {\n            \"import\": {\n                \"types\": \"./dist/plugin.d.ts\",\n                \"default\": \"./dist/plugin.js\"\n            },\n            \"require\": {\n                \"types\": \"./dist/plugin.d.cts\",\n                \"default\": \"./dist/plugin.cjs\"\n            },\n            \"default\": \"./dist/plugin.js\"\n        },\n        \"./package.json\": \"./package.json\"\n    },\n    \"main\": \"./dist/plugin.cjs\",\n    \"types\": \"./dist/plugin.d.ts\",\n    \"files\": [\n        \"dist\",\n        \"docs/rules/**\",\n        \"CHANGELOG.md\"\n    ],\n    \"workspaces\": [\n        \"docs/docusaurus\"\n    ],\n    \"scripts\": {\n        \"prebench\": \"npm run build\",\n        \"bench\": \"node benchmarks/run-eslint-stats.mjs\",\n        \"prebench:compare\": \"npm run build\",\n        \"bench:compare\": \"node benchmarks/run-eslint-stats.mjs --iterations=6 --warmup=2 --compare=coverage/benchmarks/eslint-stats.json\",\n        \"prebench:eslint:stats\": \"npm run build\",\n        \"bench:eslint:stats\": \"node benchmarks/run-eslint-stats.mjs\",\n        \"prebench:eslint:timing\": \"npm run build\",\n        \"bench:eslint:timing\": \"cross-env TIMING=all eslint --config benchmarks/eslint-timing.config.mjs --stats \\\"test/fixtures/typed/*.invalid.ts\\\"\",\n        \"prebench:rule-benchmark\": \"npm run build\",\n        \"bench:rule-benchmark\": \"eslint-rule-benchmark run\",\n        \"prebench:ui\": \"npm run build\",\n        \"bench:ui\": \"vitest bench --ui\",\n        \"prebench:watch\": \"npm run build\",\n        \"bench:watch\": \"vitest bench\",\n        \"build\": \"npm run build:clean && tsc -p tsconfig.build.json && npm run build:types:cjs && npm run build:cjs\",\n        \"build:cjs\": \"esbuild dist/plugin.js --bundle --format=cjs --platform=node --sourcemap --outfile=dist/plugin.cjs --footer:js=\\\"module.exports = module.exports.default;\\\"\",\n        \"build:clean\": \"node -e \\\"const fs=require('node:fs'); fs.rmSync('dist',{recursive:true,force:true}); fs.rmSync('.cache/tsbuildinfo/tsconfig.build.tsbuildinfo',{force:true});\\\"\",\n        \"build:eslint-inspector\": \"npx -y @eslint/config-inspector@latest build --outDir \\\"docs/docusaurus/static/eslint-inspector\\\" --base \\\"/eslint-plugin-write-good-comments-2/eslint-inspector/\\\"\",\n        \"build:eslint-inspector:local\": \"npx @eslint/config-inspector\",\n        \"build:stylelint-inspector\": \"npx -y stylelint-config-inspector@latest build --outDir \\\"docs/docusaurus/static/stylelint-inspector\\\" --base \\\"/eslint-plugin-write-good-comments-2/stylelint-inspector/\\\"\",\n        \"build:stylelint-inspector:local\": \"npx stylelint-config-inspector@latest\",\n        \"build:types:cjs\": \"node -e \\\"require('node:fs').copyFileSync('dist/plugin.d.ts','dist/plugin.d.cts')\\\"\",\n        \"changelog:generate\": \"git-cliff --config cliff.toml --output CHANGELOG.md\",\n        \"changelog:preview\": \"git-cliff --config cliff.toml --unreleased\",\n        \"changelog:release-notes\": \"git-cliff --config cliff.toml --current --strip all\",\n        \"clean:cache\": \"node scripts/clean-paths.mjs dist coverage cache .cache .vite .turbo\",\n        \"clean:cache:coverage\": \"node scripts/clean-paths.mjs coverage .coverage\",\n        \"clean:cache:dist\": \"node scripts/clean-paths.mjs dist release\",\n        \"clean:cache:eslint\": \"node scripts/clean-paths.mjs .cache/.eslintcache\",\n        \"clean:cache:ncu\": \"node scripts/clean-paths.mjs .cache/.ncu-cache.json\",\n        \"clean:cache:prettier\": \"node scripts/clean-paths.mjs .cache/.prettier-cache .prettier-cache .prettiercache\",\n        \"clean:cache:stryker\": \"node scripts/clean-paths.mjs .stryker-tmp\",\n        \"clean:cache:stylelint\": \"node scripts/clean-paths.mjs .cache/stylelintcache stylelintcache .stylelintcache\",\n        \"clean:cache:temp\": \"node scripts/clean-paths.mjs .temp\",\n        \"clean:cache:typescript\": \"node scripts/clean-typescript-cache.mjs\",\n        \"clean:cache:vite\": \"node scripts/clean-paths.mjs .cache/vite .cache/vitest .cache/vitest-zero-coverage .cache/vite-zero-coverage\",\n        \"clean:database\": \"node scripts/clean-paths.mjs %appdata%/uptime-watcher/uptime-watcher.sqlite\",\n        \"clean:docs\": \"node scripts/clean-paths.mjs docs/docusaurus/.docusaurus docs/docusaurus/build docs/docusaurus/site-docs/developer/api\",\n        \"clean:docusaurus\": \"npm run clean:docs && npm run --workspace docs/docusaurus clear\",\n        \"cognitive-complexity\": \"cognitive-complexity-ts --threshold 10\",\n        \"commit\": \"git-cz\",\n        \"contrib\": \"all-contributors\",\n        \"contrib:add\": \"all-contributors add\",\n        \"contrib:check\": \"all-contributors check\",\n        \"contrib:compare\": \"npm run contrib:check\",\n        \"contrib:generate\": \"all-contributors generate\",\n        \"coverage\": \"vitest run --coverage\",\n        \"docs:api\": \"npm run --workspace docs/docusaurus docs:api\",\n        \"docs:build\": \"npm run --workspace docs/docusaurus build\",\n        \"docs:build:local\": \"npm run --workspace docs/docusaurus build:local\",\n        \"docs:check-links\": \"npm run docs:api && node ./scripts/check-doc-links.mjs\",\n        \"docs:serve\": \"npm run --workspace docs/docusaurus serve\",\n        \"docs:start\": \"npm run --workspace docs/docusaurus start\",\n        \"docs:toc\": \"remark docs --use remark-toc --output\",\n        \"docs:typecheck\": \"npm run --workspace docs/docusaurus typecheck\",\n        \"docs:typedoc\": \"npm run --workspace docs/docusaurus docs:api\",\n        \"docs:validate-links\": \"remark docs --use remark-validate-links --frail\",\n        \"knip\": \"cross-env NODE_OPTIONS=--max_old_space_size=4096 NODE_NO_WARNINGS=1 npx knip -c knip.config.ts --include-libs --cache --cache-location .cache/knip --tsConfig tsconfig.json\",\n        \"prelint\": \"npm run build\",\n        \"lint\": \"cross-env NODE_OPTIONS=--max_old_space_size=16384 eslint --cache --cache-strategy content --cache-location .cache/.eslintcache\",\n        \"lint:action\": \"npm run lint:actions\",\n        \"lint:actions\": \"node scripts/lint-actionlint.mjs\",\n        \"lint:all\": \"npm run docs:api && npm run lint && npm run lint:css && npm run lint:prettier && npm run lint:remark && npm run lint:package && npm run lint:secretlint && npm run lint:gitleaks && npm run lint:yaml && npm run lint:yamllint && npm run lint:actions && npm run lint:circular\",\n        \"lint:all:fix\": \"npm run docs:api && npm run lint:fix && npm run lint:css:fix && npm run lint:prettier:fix && npm run lint:remark && npm run lint:package && npm run lint:secretlint && npm run lint:gitleaks && npm run lint:yaml:fix && npm run lint:yamllint && npm run lint:actions && npm run lint:circular\",\n        \"lint:all:fix:quiet\": \"npm run docs:api && npm run lint:fix:quiet && npm run lint:css:fix && npm run lint:prettier:fix && npm run lint:remark && npm run lint:package && npm run lint:secretlint && npm run lint:gitleaks && npm run lint:yaml:fix && npm run lint:yamllint && npm run lint:actions && npm run lint:circular\",\n        \"lint:circular\": \"npm run madge:circular\",\n        \"lint:compat:eslint9\": \"node scripts/eslint9-compat-smoke.mjs\",\n        \"lint:config:build\": \"npm run build:eslint-inspector\",\n        \"lint:config:inspect\": \"npx eslint --inspect-config\",\n        \"lint:css\": \"stylelint --cache --config stylelint.config.mjs --cache-strategy content --cache-location .cache/stylelintcache src/ docs/ --custom-formatter stylelint-formatter-pretty && echo \\\"Stylelint done!\\\"\",\n        \"lint:css:fix\": \"stylelint --cache --config stylelint.config.mjs --cache-strategy content --cache-location .cache/stylelintcache src/ docs/ --custom-formatter stylelint-formatter-pretty --fix && echo \\\"Stylelint done!\\\"\",\n        \"lint:depcheck\": \"npm run knip -- --dependencies\",\n        \"lint:deps\": \"npm run lint:depcheck && npm run knip\",\n        \"lint:dupes\": \"jscpd src/ --config jscpd.json\",\n        \"lint:dupes:all\": \"jscpd src/ --config jscpd.json --min-lines 3\",\n        \"lint:dupes:skiplocal\": \"jscpd src/ --skipLocal --config jscpd.json\",\n        \"lint:dupes:skiplocal:all\": \"jscpd src/ --skipLocal --config jscpd.json --min-lines 3\",\n        \"lint:duplicates\": \"npm run lint:dupes\",\n        \"lint:exports\": \"ts-unused-exports tsconfig.json src/plugin.ts --excludePathsFromReport=plugin.ts\",\n        \"prelint:fix\": \"npm run build\",\n        \"lint:fix\": \"cross-env NODE_OPTIONS=--max_old_space_size=16384 eslint --cache --cache-strategy content --cache-location .cache/.eslintcache --fix\",\n        \"lint:fix:quiet\": \"cross-env ESLINT_PROGRESS=off NODE_OPTIONS=--max_old_space_size=16384 eslint --cache --cache-strategy content --cache-location .cache/.eslintcache --fix && echo \\\"Eslint fix done!\\\"\",\n        \"lint:gitleaks\": \"gitleaks detect --source . --config .gitleaks.toml --redact\",\n        \"lint:grype\": \"grype . -c .grype.yaml --name eslint-plugin-write-good-comments-2\",\n        \"lint:knip\": \"npm run knip\",\n        \"lint:knip:exports\": \"npm run knip -- --include exports,nsExports,classMembers,types,nsTypes,enumMembers,duplicates\",\n        \"lint:knip:unused:exports\": \"npm run knip -- --dependencies --exports\",\n        \"lint:leaves\": \"npm run madge:leaves\",\n        \"lint:metrics\": \"npm run sloc\",\n        \"lint:node-version-files\": \"node scripts/sync-node-version-files.mjs --check\",\n        \"lint:orphans\": \"npm run madge:orphans\",\n        \"lint:package\": \"npm run lint:node-version-files && npm run lint:packagelintrc && echo \\\"Package.json lint done!\\\"\",\n        \"lint:package:strict\": \"npm run lint:node-version-files && npm run lint:packagelintrc && echo \\\"Package.json lint done!\\\"\",\n        \"lint:package-check\": \"publint && attw --pack .\",\n        \"lint:package-check:strict\": \"publint && attw --pack . --profile strict\",\n        \"lint:package-sort\": \"sort-package-json \\\"./package.json\\\" \\\"./docs/docusaurus/package.json\\\"\",\n        \"lint:package-sort-check\": \"sort-package-json --check \\\"./package.json\\\" \\\"./docs/docusaurus/package.json\\\"\",\n        \"lint:packagelintrc\": \"npmPkgJsonLint . --config .npmpackagejsonlintrc.json\",\n        \"lint:prettier\": \"prettier . --log-level warn --cache --cache-location=.cache/.prettier-cache --cache-strategy=content --check\",\n        \"lint:prettier:fix\": \"prettier . --log-level warn --cache --cache-location=.cache/.prettier-cache --cache-strategy=content --write\",\n        \"lint:publint\": \"publint\",\n        \"lint:quiet\": \"cross-env ESLINT_PROGRESS=nofile NODE_OPTIONS=--max_old_space_size=16384 eslint --cache --cache-strategy content --cache-location .cache/.eslintcache && echo \\\"Eslint done!\\\"\",\n        \"lint:remark\": \"remark --rc-path .remarkrc.mjs --silently-ignore --ignore-path .remarkignore --frail \\\"*.{md,mdx}\\\" \\\"docs/**/*.{md,mdx}\\\" --quiet\",\n        \"lint:remark:fix\": \"prettier --log-level warn --ignore-path prettierignore.remark --cache --cache-location=.cache/.prettier-cache --cache-strategy=content --no-error-on-unmatched-pattern --write \\\"*.{md,mdx}\\\" \\\"docs/**/*.{md,mdx}\\\" && npm run remark:fix\",\n        \"lint:secretlint\": \"secretlint --secretlintrc .secretlintrc.cjs --secretlintignore .secretlintignore \\\"./*\\\" \\\".vscode/**\\\" \\\"assets/**\\\" \\\"src/**\\\" \\\"electron/**\\\" \\\"shared/**\\\" \\\"config/**\\\" \\\"scripts/**\\\" \\\"playwright/**\\\" \\\"storybook/**\\\" \\\".storybook\\\" \\\"tests/**\\\" \\\"benchmarks/**\\\" \\\".devin/**\\\" \\\"public/**\\\" \\\".github/**\\\" \\\"docs/Architecture/**\\\" \\\"docs/*\\\" \\\"docs/assets/**\\\" \\\"docs/Guides/**\\\" \\\"docs/Testing/**\\\" \\\"docs/TSDoc/**\\\" \\\"docs/docusaurus/src/**\\\" \\\"docs/docusaurus/static/**\\\" \\\"docs/docusaurus/blog/**\\\" \\\"docs/docusaurus/docs/**\\\" \\\"docs/docusaurus/docs/*\\\"\",\n        \"lint:secrets\": \"detect-secrets scan\",\n        \"lint:unused\": \"npm run knip -- --include unlisted,unresolved,duplicates\",\n        \"lint:unused-deps\": \"npm run knip -- --dependencies --ignore-dependencies='@types/*,@testing-library/*,@vitest/*'\",\n        \"lint:yaml\": \"cross-env NODE_OPTIONS=--max_old_space_size=16384 eslint --cache --cache-strategy content --cache-location .cache/.eslintcache \\\"**/*.{yml,yaml}\\\" && echo \\\"YAML lint done!\\\"\",\n        \"lint:yaml:fix\": \"cross-env NODE_OPTIONS=--max_old_space_size=16384 eslint --cache --cache-strategy content --cache-location .cache/.eslintcache --fix \\\"**/*.{yml,yaml}\\\" && echo \\\"YAML lint (fix) done!\\\"\",\n        \"lint:yamllint\": \"yamllint-js .\",\n        \"madge:circular\": \"madge --circular --no-spinner --ts-config tsconfig.json --extensions ts,tsx,js,jsx,mjs,cjs,cts,mts ./src --exclude \\\"(^|[\\\\/])(test|dist|node_modules|cache|.cache|coverage|build|eslint-inspector|temp|.docusaurus)($|[\\\\/])|\\\\.css$\\\"\",\n        \"madge:leaves\": \"madge --leaves --no-spinner --ts-config tsconfig.json --extensions ts,tsx,js,jsx,mjs,cjs,cts,mts ./src --exclude \\\"(^|[\\\\/])(test|dist|node_modules|cache|.cache|coverage|build|eslint-inspector|temp|.docusaurus)($|[\\\\/])|\\\\.css$\\\"\",\n        \"madge:orphans\": \"madge --orphans --no-spinner --ts-config tsconfig.json --extensions ts,tsx,js,jsx,mjs,cjs,cts,mts ./src --exclude \\\"(^|[\\\\/])(test|dist|node_modules|cache|.cache|coverage|build|eslint-inspector|temp|.docusaurus)($|[\\\\/])|\\\\.css$\\\"\",\n        \"open:coverage\": \"open-cli coverage/index.html\",\n        \"prepublishOnly\": \"npm run release:check\",\n        \"release:check\": \"npm run release:verify\",\n        \"release:verify\": \"npm run build && npm run docs:api && npm run lint && npm run lint:package:strict && npm run typecheck && npm run test:coverage:quiet && npm run sync:readme-rules-table && npm run sync:presets-rules-matrix && npm run docs:check-links && npm pack --dry-run\",\n        \"remark:fix\": \"remark --rc-path .remarkrc.mjs --silently-ignore --ignore-path .remarkignore --frail --quiet --output -- \\\"*.{md,mdx}\\\" \\\"docs/**/*.{md,mdx}\\\"\",\n        \"remark:test-config\": \"remark --rc-path .remarkrc.mjs --silently-ignore --ignore-path .remarkignore --frail \\\"README.md\\\"\",\n        \"sync:node-version-files\": \"node scripts/sync-node-version-files.mjs\",\n        \"sync:peer-eslint-range\": \"node scripts/sync-peer-eslint-range.mjs\",\n        \"sync:presets-rules-matrix\": \"node scripts/sync-presets-rules-matrix.mjs\",\n        \"sync:readme-rules-table\": \"node scripts/sync-readme-rules-table.mjs\",\n        \"sync:readme-rules-table:update\": \"npm run build && cross-env WRITE_GOOD_COMMENTS_UPDATE_GENERATED_DOCS=1 vitest run test/readme-rules-table-sync.test.ts -u\",\n        \"sync:readme-rules-table:write\": \"node scripts/sync-readme-rules-table.mjs --write\",\n        \"sync:rules:check\": \"npm run sync:readme-rules-table && npm run sync:presets-rules-matrix\",\n        \"sync:rules:write\": \"npm run sync:readme-rules-table:write && npm run sync:presets-rules-matrix\",\n        \"pretest\": \"npm run build\",\n        \"test\": \"vitest run\",\n        \"test:autofix:fixtures\": \"vitest run test/write-good-comments.test.ts\",\n        \"test:autofix:fixtures:typed\": \"vitest run test/write-good-comments.test.ts\",\n        \"test:ci\": \"cross-env CI=true vitest run --reporter=default\",\n        \"test:coverage\": \"vitest run --coverage --reporter=default\",\n        \"test:coverage:detailed\": \"vitest run --coverage --reporter=verbose\",\n        \"test:coverage:minimal\": \"vitest run --coverage --reporter=dot\",\n        \"test:coverage:open\": \"npm run test:coverage && npm run open:coverage\",\n        \"test:coverage:quiet\": \"vitest run --coverage --reporter=default --silent\",\n        \"test:coverage:verbose\": \"vitest run --coverage --reporter=verbose\",\n        \"test:detailed\": \"vitest run --reporter=verbose\",\n        \"test:minimal\": \"vitest run --reporter=dot\",\n        \"test:open\": \"npm run test:coverage && npm run open:coverage\",\n        \"test:quiet\": \"vitest run --reporter=default --silent\",\n        \"test:serial\": \"cross-env MAX_THREADS=1 vitest run\",\n        \"test:stryker\": \"stryker run --ignoreStatic --concurrency 12 --incrementalFile .cache/stryker/incremental-fast.json\",\n        \"test:stryker:ci\": \"cross-env CI=true stryker run --ignoreStatic --concurrency 2 --incrementalFile .cache/stryker/incremental-fast-ci.json\",\n        \"test:stryker:full\": \"stryker run --concurrency 12 --incrementalFile .cache/stryker/incremental-full.json\",\n        \"test:stryker:full:ci\": \"cross-env CI=true stryker run --concurrency 2 --incrementalFile .cache/stryker/incremental-full-ci.json\",\n        \"test:verbose\": \"vitest run --reporter=verbose\",\n        \"test:watch\": \"vitest\",\n        \"typecheck\": \"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.build.json --noEmit && tsc -p tsconfig.eslint.json --noEmit && tsc -p tsconfig.js.json --noEmit && npm run --workspace docs/docusaurus typecheck\",\n        \"typecheck:all\": \"npm run typecheck\",\n        \"types:update\": \"typesync\",\n        \"update-actions\": \"npx actions-up --yes --style sha\",\n        \"update-deps\": \"npx ncu -i --install never && npm update --workspaces --force && npm install --force && npm run sync:peer-eslint-range && npm run sync:node-version-files && npm run sync:rules:write\",\n        \"verify:readme-rules-table\": \"npm run build && npm run sync:readme-rules-table\"\n    },\n    \"overrides\": {\n        \"jsonc-eslint-parser\": \"$jsonc-eslint-parser\"\n    },\n    \"dependencies\": {\n        \"@cspell/dict-bash\": \"^4.2.3\",\n        \"@cspell/dict-companies\": \"^3.2.11\",\n        \"@cspell/dict-css\": \"^4.1.2\",\n        \"@cspell/dict-en-au\": \"^1.1.22\",\n        \"@cspell/dict-en-ca\": \"^1.0.60\",\n        \"@cspell/dict-en-common-misspellings\": \"^2.1.12\",\n        \"@cspell/dict-en-gb\": \"^5.0.29\",\n        \"@cspell/dict-en-gb-ise\": \"^1.0.29\",\n        \"@cspell/dict-en-gb-legacy\": \"^1.0.29\",\n        \"@cspell/dict-en_us\": \"^4.4.35\",\n        \"@cspell/dict-filetypes\": \"^3.0.18\",\n        \"@cspell/dict-git\": \"^3.1.0\",\n        \"@cspell/dict-html\": \"^4.0.15\",\n        \"@cspell/dict-makefile\": \"^1.0.5\",\n        \"@cspell/dict-markdown\": \"^2.0.17\",\n        \"@cspell/dict-mime-types\": \"^1.0.1\",\n        \"@cspell/dict-mnemonics\": \"^3.0.6\",\n        \"@cspell/dict-node\": \"^5.0.9\",\n        \"@cspell/dict-npm\": \"^5.2.41\",\n        \"@cspell/dict-people-names\": \"^1.1.16\",\n        \"@cspell/dict-powershell\": \"^5.0.15\",\n        \"@cspell/dict-public-licenses\": \"^2.0.16\",\n        \"@cspell/dict-scientific-terms-us\": \"^3.1.0\",\n        \"@cspell/dict-shell\": \"^1.2.0\",\n        \"@cspell/dict-software-terms\": \"^5.2.2\",\n        \"@cspell/dict-sql\": \"^2.2.1\",\n        \"@cspell/dict-typescript\": \"^3.2.3\",\n        \"@cspell/dict-win32\": \"^2.0.10\",\n        \"@typescript-eslint/parser\": \"^8.61.1\",\n        \"@typescript-eslint/type-utils\": \"^8.61.1\",\n        \"@typescript-eslint/utils\": \"^8.61.1\",\n        \"cspell-dictionary\": \"^10.0.1\",\n        \"cspell-lib\": \"^10.0.1\",\n        \"json5\": \"^2.2.3\",\n        \"remark-frontmatter\": \"^5.0.0\",\n        \"remark-gfm\": \"^4.0.1\",\n        \"remark-parse\": \"^11.0.0\",\n        \"retext-english\": \"^5.0.0\",\n        \"retext-equality\": \"^7.1.0\",\n        \"retext-profanities\": \"^8.0.0\",\n        \"retext-readability\": \"^8.0.0\",\n        \"ts-extras\": \"^1.0.0\",\n        \"type-fest\": \"^5.7.0\",\n        \"unified\": \"^11.0.5\",\n        \"vfile\": \"^6.0.3\",\n        \"write-good\": \"^1.0.8\",\n        \"yaml\": \"^2.9.0\"\n    },\n    \"devDependencies\": {\n        \"@arethetypeswrong/cli\": \"^0.18.3\",\n        \"@cspell/dict-clojure\": \"^2.0.9\",\n        \"@cspell/dict-cpp\": \"^7.0.2\",\n        \"@cspell/dict-csharp\": \"^4.0.8\",\n        \"@cspell/dict-dart\": \"^2.3.2\",\n        \"@cspell/dict-docker\": \"^1.1.17\",\n        \"@cspell/dict-elixir\": \"^4.0.8\",\n        \"@cspell/dict-fsharp\": \"^1.1.1\",\n        \"@cspell/dict-gdscript\": \"^1.1.0\",\n        \"@cspell/dict-golang\": \"^6.0.26\",\n        \"@cspell/dict-haskell\": \"^4.0.6\",\n        \"@cspell/dict-java\": \"^5.0.12\",\n        \"@cspell/dict-k8s\": \"^1.0.12\",\n        \"@cspell/dict-kotlin\": \"^1.1.1\",\n        \"@cspell/dict-lua\": \"^4.0.8\",\n        \"@cspell/dict-php\": \"^4.1.1\",\n        \"@cspell/dict-python\": \"^4.2.27\",\n        \"@cspell/dict-redis\": \"^1.0.7\",\n        \"@cspell/dict-ruby\": \"^5.1.1\",\n        \"@cspell/dict-rust\": \"^4.1.2\",\n        \"@cspell/dict-scala\": \"^5.0.9\",\n        \"@cspell/dict-svelte\": \"^1.0.7\",\n        \"@cspell/dict-swift\": \"^2.0.6\",\n        \"@cspell/dict-terraform\": \"^1.1.3\",\n        \"@cspell/dict-vue\": \"^3.0.5\",\n        \"@csstools/stylelint-formatter-github\": \"^2.0.0\",\n        \"@double-great/remark-lint-alt-text\": \"^1.1.1\",\n        \"@eslint/compat\": \"^2.1.0\",\n        \"@eslint/config-inspector\": \"^3.0.4\",\n        \"@microsoft/tsdoc-config\": \"^0.18.1\",\n        \"@stryker-ignorer/console-all\": \"^0.3.2\",\n        \"@stryker-mutator/core\": \"^9.6.1\",\n        \"@stryker-mutator/typescript-checker\": \"^9.6.1\",\n        \"@stryker-mutator/vitest-runner\": \"^9.6.1\",\n        \"@types/htmlhint\": \"^1.1.5\",\n        \"@types/madge\": \"^5.0.3\",\n        \"@types/node\": \"^25.9.3\",\n        \"@types/sloc\": \"^0.2.3\",\n        \"@typescript-eslint/rule-tester\": \"^8.61.1\",\n        \"@vitest/coverage-v8\": \"^4.1.9\",\n        \"@vitest/ui\": \"^4.1.9\",\n        \"actionlint\": \"^2.0.6\",\n        \"all-contributors-cli\": \"^6.26.1\",\n        \"cognitive-complexity-ts\": \"^0.8.2\",\n        \"commitlint\": \"^21.0.2\",\n        \"commitlint-config-gitmoji\": \"^2.3.1\",\n        \"cross-env\": \"^10.1.0\",\n        \"detect-secrets\": \"^1.0.6\",\n        \"eslint\": \"^10.5.0\",\n        \"eslint-config-nick2bad4u\": \"^2.0.2\",\n        \"eslint-formatter-unix\": \"^9.0.1\",\n        \"eslint-rule-benchmark\": \"^0.8.0\",\n        \"fast-check\": \"^4.8.0\",\n        \"git-cliff\": \"^2.13.1\",\n        \"gitleaks-config-nick2bad4u\": \"^1.0.2\",\n        \"gitleaks-secret-scanner\": \"^2.1.1\",\n        \"htmlhint\": \"^1.9.2\",\n        \"jscpd\": \"^5.0.10\",\n        \"knip\": \"^6.17.1\",\n        \"leasot\": \"^14.4.0\",\n        \"madge\": \"^8.0.0\",\n        \"markdown-link-check\": \"^3.14.2\",\n        \"npm-check-updates\": \"^22.2.3\",\n        \"npm-package-json-lint\": \"^10.4.1\",\n        \"npm-package-json-lint-config-nick2bad4u\": \"^1.0.3\",\n        \"picocolors\": \"^1.1.1\",\n        \"prettier\": \"^3.8.4\",\n        \"prettier-config-nick2bad4u\": \"^1.0.17\",\n        \"publint\": \"^0.3.21\",\n        \"rehype-katex\": \"^7.0.1\",\n        \"remark\": \"^15.0.1\",\n        \"remark-cli\": \"^12.0.1\",\n        \"remark-config-nick2bad4u\": \"^1.0.8\",\n        \"secretlint\": \"^13.0.2\",\n        \"secretlint-config-nick2bad4u\": \"^1.1.0\",\n        \"sloc\": \"^0.3.2\",\n        \"sort-package-json\": \"^4.0.0\",\n        \"stylelint\": \"^17.13.0\",\n        \"stylelint-config-nick2bad4u\": \"^1.0.19\",\n        \"ts-unused-exports\": \"^11.0.1\",\n        \"tsdoc-config-nick2bad4u\": \"^1.0.5\",\n        \"typedoc\": \"^0.28.19\",\n        \"typedoc-config-nick2bad4u\": \"^2.0.0\",\n        \"typescript\": \"^6.0.3\",\n        \"typescript-eslint\": \"^8.61.1\",\n        \"typesync\": \"^0.14.3\",\n        \"vite\": \"^8.0.16\",\n        \"vite-tsconfig-paths\": \"^6.1.1\",\n        \"vitest\": \"^4.1.9\",\n        \"yamllint-config-nick2bad4u\": \"^1.0.2\",\n        \"yamllint-js\": \"^0.2.4\"\n    },\n    \"peerDependencies\": {\n        \"eslint\": \"^9.0.0 || ^10.5.0\",\n        \"typescript\": \">=5.0.0\"\n    },\n    \"packageManager\": \"npm@11.17.0\",\n    \"engines\": {\n        \"node\": \">=22.0.0\"\n    },\n    \"devEngines\": {\n        \"runtime\": {\n            \"name\": \"node\",\n            \"version\": \">=22.0.0\",\n            \"onFail\": \"error\"\n        },\n        \"packageManager\": {\n            \"name\": \"npm\",\n            \"version\": \">=11.0.0\",\n            \"onFail\": \"error\"\n        }\n    },\n    \"publishConfig\": {\n        \"provenance\": true,\n        \"registry\": \"https://registry.npmjs.org/\"\n    },\n    \"readme\": \"README.md\"\n}\n", "export function deprecate(fn) {\n  return fn\n}\n\nexport function equal() {}\n\nexport function ok() {}\n\nexport function unreachable() {}\n", "/**\n * @typedef {import('nlcst').Nodes} Nodes\n */\n\n/** @type {Readonly<Array<Nodes>>} */\nconst emptyNodes = []\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node\u2019s plain-text fields, otherwise serializes its children, and\n * if the given value is an array, serialize the nodes in it.\n *\n * @param {Array<Nodes> | Nodes} value\n *   Node or list of nodes to serialize.\n * @returns {string}\n *   Result.\n */\nexport function toString(value) {\n  let index = -1\n\n  if (!value || (!Array.isArray(value) && !value.type)) {\n    throw new Error('Expected node, not `' + value + '`')\n  }\n\n  if ('value' in value) return value.value\n\n  const children = (Array.isArray(value) ? value : value.children) || emptyNodes\n\n  /** @type {Array<string>} */\n  const values = []\n\n  while (++index < children.length) {\n    values[index] = toString(children[index])\n  }\n\n  return values.join('')\n}\n", "/**\n * @typedef {import('nlcst').Nodes} Nodes\n *\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [allowDashes=false]\n *   Do not strip hyphens (`-`) (default: `false`).\n *\n *   The default is to remove the hyphen-minus character.\n * @property {boolean | null | undefined} [allowApostrophes=false]\n *   Do not strip apostrophes (`'`) (default: `false`).\n *\n *   The default is to remove apostrophes.\n */\n\nimport {toString} from 'nlcst-to-string'\n\n/**\n * Normalize a word for easier comparison.\n *\n * Always normalizes smart apostrophes (`\u2019`) to straight apostrophes (`'`) and\n * lowercases alphabetical characters (`[A-Z]`).\n *\n * @param {Array<Nodes> | Nodes | string} value\n *   Word.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Normalized word.\n */\nexport function normalize(value, options) {\n  let result = (typeof value === 'string' ? value : toString(value))\n    .toLowerCase()\n    .replace(/\u2019/g, \"'\")\n\n  if (!options || !options.allowDashes) {\n    result = result.replace(/-/g, '')\n  }\n\n  if (!options || !options.allowApostrophes) {\n    result = result.replace(/'/g, '')\n  }\n\n  return result\n}\n", "/**\n * @import {Node, Parent} from 'unist'\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n *   Check that an arbitrary value is a node.\n * @param {unknown} this\n *   The given context.\n * @param {unknown} [node]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   The node\u2019s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node\u2019s parent.\n * @returns {boolean}\n *   Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n *   Object to check for equivalence.\n *\n *   Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | ReadonlyArray<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n *   Check for an arbitrary node.\n *\n * @callback TestFunction\n *   Check if a node passes a test.\n * @param {unknown} this\n *   The given context.\n * @param {Node} node\n *   A node.\n * @param {number | undefined} [index]\n *   The node\u2019s position in its parent.\n * @param {Parent | undefined} [parent]\n *   The node\u2019s parent.\n * @returns {boolean | undefined | void}\n *   Whether this node passes the test.\n *\n *   Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n *   Thing to check, typically `Node`.\n * @param {Test} test\n *   A check for a specific node.\n * @param {number | null | undefined} index\n *   The node\u2019s position in its parent.\n * @param {Parent | null | undefined} parent\n *   The node\u2019s parent.\n * @param {unknown} context\n *   Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n *   Whether `node` is a node and passes a test.\n */\nexport const is =\n  // Note: overloads in JSDoc can\u2019t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends ReadonlyArray<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n   *   (<Condition extends Array<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n   *   (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n   *   ((node?: null | undefined) => false) &\n   *   ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * @param {unknown} [node]\n     * @param {Test} [test]\n     * @param {number | null | undefined} [index]\n     * @param {Parent | null | undefined} [parent]\n     * @param {unknown} [context]\n     * @returns {boolean}\n     */\n    // eslint-disable-next-line max-params\n    function (node, test, index, parent, context) {\n      const check = convert(test)\n\n      if (\n        index !== undefined &&\n        index !== null &&\n        (typeof index !== 'number' ||\n          index < 0 ||\n          index === Number.POSITIVE_INFINITY)\n      ) {\n        throw new Error('Expected positive finite index')\n      }\n\n      if (\n        parent !== undefined &&\n        parent !== null &&\n        (!is(parent) || !parent.children)\n      ) {\n        throw new Error('Expected parent node')\n      }\n\n      if (\n        (parent === undefined || parent === null) !==\n        (index === undefined || index === null)\n      ) {\n        throw new Error('Expected both parent and index')\n      }\n\n      return looksLikeANode(node)\n        ? check.call(context, node, index, parent)\n        : false\n    }\n  )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you\u2019re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n *   *   when nullish, checks if `node` is a `Node`.\n *   *   when `string`, works like passing `(node) => node.type === test`.\n *   *   when `function` checks if function passed the node is true.\n *   *   when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n *   *   when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n *   An assertion.\n */\nexport const convert =\n  // Note: overloads in JSDoc can\u2019t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n   *   ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((test?: Test) => Check)\n   * )}\n   */\n  (\n    /**\n     * @param {Test} [test]\n     * @returns {Check}\n     */\n    function (test) {\n      if (test === null || test === undefined) {\n        return ok\n      }\n\n      if (typeof test === 'function') {\n        return castFactory(test)\n      }\n\n      if (typeof test === 'object') {\n        return Array.isArray(test)\n          ? anyFactory(test)\n          : // Cast because `ReadonlyArray` goes into the above but `isArray`\n            // narrows to `Array`.\n            propertiesFactory(/** @type {Props} */ (test))\n      }\n\n      if (typeof test === 'string') {\n        return typeFactory(test)\n      }\n\n      throw new Error('Expected function, string, or object as test')\n    }\n  )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n  /** @type {Array<Check>} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @type {TestFunction}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].apply(this, parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propertiesFactory(check) {\n  const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n  return castFactory(all)\n\n  /**\n   * @param {Node} node\n   * @returns {boolean}\n   */\n  function all(node) {\n    const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n      /** @type {unknown} */ (node)\n    )\n\n    /** @type {string} */\n    let key\n\n    for (key in check) {\n      if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n    }\n\n    return true\n  }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n  return castFactory(type)\n\n  /**\n   * @param {Node} node\n   */\n  function type(node) {\n    return node && node.type === check\n  }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n  return check\n\n  /**\n   * @this {unknown}\n   * @type {Check}\n   */\n  function check(value, index, parent) {\n    return Boolean(\n      looksLikeANode(value) &&\n        testFunction.call(\n          this,\n          value,\n          typeof index === 'number' ? index : undefined,\n          parent || undefined\n        )\n    )\n  }\n}\n\nfunction ok() {\n  return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n  return value !== null && typeof value === 'object' && 'type' in value\n}\n", "/**\n * @param {string} d\n * @returns {string}\n */\nexport function color(d) {\n  return '\\u001B[33m' + d + '\\u001B[39m'\n}\n", "/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn\u2019t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate<Check, Value> extends Value\n *     ? Predicate<Check, Value>\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends ReadonlyArray<infer T>\n *   ? MatchesOne<Value, T>\n *   : Check extends Array<infer T>\n *   ? MatchesOne<Value, T>\n *   : MatchesOne<Value, Check>\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array<infer Children>}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent<Node, Child>\n *     | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > \uD83D\uDC49 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn\u2019t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn\u2019t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n *   Union of the action types.\n *\n * @typedef {number} Index\n *   Move to the sibling at `index` next (after node itself is completely\n *   traversed).\n *\n *   Useful if mutating the tree, such as removing the node the visitor is\n *   currently on, or any of its previous siblings.\n *   Results less than 0 or greater than or equal to `children.length` stop\n *   traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n *   List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n *   Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform the parent of node (the last of `ancestors`).\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of an ancestor still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Array<VisitedParents>} ancestors\n *   Ancestors of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Tree type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node\u2019s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} test\n *   `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n *   Handle each node.\n * @param {boolean | null | undefined} [reverse]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n  /** @type {Test} */\n  let check\n\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor\n    // @ts-expect-error no visitor given, so `visitor` is test.\n    visitor = test\n  } else {\n    // @ts-expect-error visitor given, so `test` isn\u2019t a visitor.\n    check = test\n  }\n\n  const is = convert(check)\n  const step = reverse ? -1 : 1\n\n  factory(tree, undefined, [])()\n\n  /**\n   * @param {UnistNode} node\n   * @param {number | undefined} index\n   * @param {Array<UnistParent>} parents\n   */\n  function factory(node, index, parents) {\n    const value = /** @type {Record<string, unknown>} */ (\n      node && typeof node === 'object' ? node : {}\n    )\n\n    if (typeof value.type === 'string') {\n      const name =\n        // `hast`\n        typeof value.tagName === 'string'\n          ? value.tagName\n          : // `xast`\n            typeof value.name === 'string'\n            ? value.name\n            : undefined\n\n      Object.defineProperty(visit, 'name', {\n        value:\n          'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n      })\n    }\n\n    return visit\n\n    function visit() {\n      /** @type {Readonly<ActionTuple>} */\n      let result = empty\n      /** @type {Readonly<ActionTuple>} */\n      let subresult\n      /** @type {number} */\n      let offset\n      /** @type {Array<UnistParent>} */\n      let grandparents\n\n      if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n        // @ts-expect-error: `visitor` is now a visitor.\n        result = toResult(visitor(node, parents))\n\n        if (result[0] === EXIT) {\n          return result\n        }\n      }\n\n      if ('children' in node && node.children) {\n        const nodeAsParent = /** @type {UnistParent} */ (node)\n\n        if (nodeAsParent.children && result[0] !== SKIP) {\n          offset = (reverse ? nodeAsParent.children.length : -1) + step\n          grandparents = parents.concat(nodeAsParent)\n\n          while (offset > -1 && offset < nodeAsParent.children.length) {\n            const child = nodeAsParent.children[offset]\n\n            subresult = factory(child, offset, grandparents)()\n\n            if (subresult[0] === EXIT) {\n              return subresult\n            }\n\n            offset =\n              typeof subresult[1] === 'number' ? subresult[1] : offset + step\n          }\n        }\n      }\n\n      return result\n    }\n  }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n *   Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n *   Clean result.\n */\nfunction toResult(value) {\n  if (Array.isArray(value)) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value]\n  }\n\n  return value === null || value === undefined ? empty : [value]\n}\n", "/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n * @import {VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn\u2019t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it\u2019s released.\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate<Check, Value> extends Value\n *     ? Predicate<Check, Value>\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends ReadonlyArray<any>\n *   ? MatchesOne<Value, Check[number]>\n *   : MatchesOne<Value, Check>\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array<infer Children>}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent<Node, Child>\n *     | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > \uD83D\uDC49 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn\u2019t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn\u2019t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform `parent`.\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of `parent` still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n *   Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n *   Parent of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n *   Build a typed `Visitor` function from a node and all possible parents.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n *   Node type.\n * @template {UnistParent} Ancestor\n *   Parent type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromMatch<\n *     Matches<Descendant, Check>,\n *     Extract<Descendant, UnistParent>\n *   >\n * )} BuildVisitorFromDescendants\n *   Build a typed `Visitor` function from a list of descendants and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n *   Node type.\n * @template {Test} Check\n *   Test type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromDescendants<\n *     InclusiveDescendant<Tree>,\n *     Check\n *   >\n * )} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Node type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n *   `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n *   Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n  /** @type {boolean | null | undefined} */\n  let reverse\n  /** @type {Test} */\n  let test\n  /** @type {Visitor} */\n  let visitor\n\n  if (\n    typeof testOrVisitor === 'function' &&\n    typeof visitorOrReverse !== 'function'\n  ) {\n    test = undefined\n    visitor = testOrVisitor\n    reverse = visitorOrReverse\n  } else {\n    // @ts-expect-error: assume the overload with test was given.\n    test = testOrVisitor\n    // @ts-expect-error: assume the overload with test was given.\n    visitor = visitorOrReverse\n    reverse = maybeReverse\n  }\n\n  visitParents(tree, test, overload, reverse)\n\n  /**\n   * @param {UnistNode} node\n   * @param {Array<UnistParent>} parents\n   */\n  function overload(node, parents) {\n    const parent = parents[parents.length - 1]\n    const index = parent ? parent.children.indexOf(node) : undefined\n    return visitor(node, index, parent)\n  }\n}\n", "/**\n * @typedef {import('nlcst').Nodes} Nodes\n */\n\n/** @type {Readonly<Array<Nodes>>} */\nconst emptyNodes = []\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node\u2019s plain-text fields, otherwise serializes its children, and\n * if the given value is an array, serialize the nodes in it.\n *\n * @param {Array<Nodes> | Nodes} value\n *   Node or list of nodes to serialize.\n * @returns {string}\n *   Result.\n */\nexport function toString(value) {\n  let index = -1\n\n  if (!value || (!Array.isArray(value) && !value.type)) {\n    throw new Error('Expected node, not `' + value + '`')\n  }\n\n  if ('value' in value) return value.value\n\n  const children = (Array.isArray(value) ? value : value.children) || emptyNodes\n\n  /** @type {Array<string>} */\n  const values = []\n\n  while (++index < children.length) {\n    values[index] = toString(children[index])\n  }\n\n  return values.join('')\n}\n", "/**\n * @typedef {import('nlcst').Nodes} Nodes\n * @typedef {import('nlcst').Parents} Parents\n * @typedef {import('nlcst').RootContent} RootContent\n */\n\nimport {toString} from 'nlcst-to-string'\n\nconst single = [\n  '-', // Hyphen-minus\n  '\u2013', // En dash\n  '\u2014', // Em dash\n  ':', // Colon\n  ';' // Semi-colon\n]\n\n/**\n * Pair delimiters.\n * From common sense, and WikiPedia:\n * <https://en.wikipedia.org/wiki/Quotation_mark>.\n *\n * @type {Record<string, Array<string>>}\n */\nconst pairs = {\n  ',': [','],\n  '-': ['-'],\n  '\u2013': ['\u2013'],\n  '\u2014': ['\u2014'],\n  '\"': ['\"'],\n  \"'\": [\"'\"],\n  '\u2018': ['\u2019'],\n  '\u201A': ['\u2019'],\n  '\u2019': ['\u2019', '\u201A'],\n  '\u201C': ['\u201D'],\n  '\u201D': ['\u201D'],\n  '\u201E': ['\u201D', '\u201C'],\n  '\u00AB': ['\u00BB'],\n  '\u00BB': ['\u00AB'],\n  '\u2039': ['\u203A'],\n  '\u203A': ['\u2039'],\n  '(': [')'],\n  '[': [']'],\n  '{': ['}'],\n  '\u27E8': ['\u27E9'],\n  '\u300C': ['\u300D']\n}\n\nconst open = Object.keys(pairs)\n\n/**\n * Check if the child in `parent` at `index` is enclosed by matching\n * delimiters.\n *\n * For example, `foo` is literal in the following samples:\n *\n * *   `Foo - is meant as a literal.`\n * *   `Meant as a literal is - foo.`\n * *   `The word \u201Cfoo\u201D is meant as a literal.`\n *\n * @template {Parents} ParentType\n *   Parent node.\n * @param {ParentType} parent\n *   Parent node.\n * @param {ParentType['children'][number] | number} index\n *   Child node of parent or index of child in parent.\n * @returns {boolean}\n *   Whether the child is a literal.\n */\nexport function isLiteral(parent, index) {\n  if (!(parent && parent.children)) {\n    throw new Error('Parent must be a node')\n  }\n\n  /** @type {Array<RootContent>} */\n  const siblings = parent.children\n\n  if (index !== null && typeof index === 'object' && 'type' in index) {\n    index = siblings.indexOf(index)\n\n    if (index === -1) {\n      throw new Error('Node must be a child of `parent`')\n    }\n  }\n\n  if (typeof index !== 'number' || Number.isNaN(index)) {\n    throw new TypeError('Index must be a number')\n  }\n\n  return Boolean(\n    (!containsWord(parent, -1, index) &&\n      siblingDelimiter(parent, index, 1, single)) ||\n      (!containsWord(parent, index, siblings.length) &&\n        siblingDelimiter(parent, index, -1, single)) ||\n      isWrapped(parent, index)\n  )\n}\n\n/**\n * Check if the node in `parent` at `position` is enclosed by matching\n * delimiters.\n *\n * @param {Parents} parent\n *   Parent node.\n * @param {number} position\n *   Position to look around.\n * @returns {boolean}\n *   Whether a child is wrapped.\n */\nfunction isWrapped(parent, position) {\n  const previous = siblingDelimiter(parent, position, -1, open)\n\n  if (previous) {\n    return (\n      siblingDelimiter(parent, position, 1, pairs[toString(previous)]) !==\n      undefined\n    )\n  }\n\n  return false\n}\n\n/**\n * Find the previous or next delimiter before or after `position` in `parent`.\n * Returns the delimiter node when found.\n *\n * @param {Parents} parent\n *   Parent node.\n * @param {number} position\n *   Start position in `parent`.\n * @param {number} step\n *   Step (`-1` to move back, `1` to move forward).\n * @param {Array<string>} delimiters\n *   Delimiters to look for.\n * @returns {Nodes | undefined}\n *   Delimiter, if found.\n */\nfunction siblingDelimiter(parent, position, step, delimiters) {\n  let index = position + step\n\n  while (index > -1 && index < parent.children.length) {\n    const sibling = parent.children[index]\n\n    if (sibling.type === 'WordNode' || sibling.type === 'SourceNode') {\n      break\n    }\n\n    if (sibling.type !== 'WhiteSpaceNode') {\n      return delimiters.includes(toString(sibling)) ? sibling : undefined\n    }\n\n    index += step\n  }\n}\n\n/**\n * Check if parent contains word nodes between `start` and `end` (both\n * excluding).\n *\n * @param {Parents} parent\n *   Parent node.\n * @param {number} start\n *   Start index in `parent` (excluding).\n * @param {number} end\n *   End index in `parent` (excluding).\n * @returns {boolean}\n *   Whether a child contains a word.\n */\nfunction containsWord(parent, start, end) {\n  while (++start < end) {\n    if (parent.children[start].type === 'WordNode') {\n      return true\n    }\n  }\n\n  return false\n}\n", "/**\n * @typedef {import('nlcst').Nodes} Nodes\n * @typedef {import('nlcst').Root} Root\n * @typedef {import('nlcst').Sentence} Sentence\n * @typedef {import('nlcst').SentenceContent} SentenceContent\n * @typedef {import('nlcst-normalize').Options} NormalizeOptions\n */\n\n/**\n * @callback Handler\n *   Handle a match.\n * @param {Array<SentenceContent>} nodes\n *   Match.\n * @param {number} index\n *   Index of first node of `nodes` in `parent`.\n * @param {Root | Sentence} parent\n *   Parent of `nodes`.\n * @param {string} phrase\n *   The phrase that matched.\n * @returns {undefined | void}\n *   Nothing.\n *\n * @typedef {NormalizeOptions & OptionsExtraFields} Options\n *   Configuration (optional).\n *\n * @typedef OptionsExtraFields\n *   Extra fields.\n * @property {boolean | null | undefined} [allowLiterals=false]\n *   Include literal phrases (default: `false`).\n */\n\nimport {visit} from 'unist-util-visit'\nimport {normalize} from 'nlcst-normalize'\nimport {isLiteral} from 'nlcst-is-literal'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Search for phrases in a tree.\n *\n * Each phrase is a space-separated list of words, where each word will be\n * normalized to remove casing, apostrophes, and dashes.\n * Spaces in a pattern mean one or more whitespace nodes in the tree.\n * Instead of a word with letters, it\u2019s also possible to use a wildcard\n * symbol (`*`, an asterisk) which will match any word in a pattern\n * (`alpha * charlie`).\n *\n * @param {Nodes} tree\n *   Tree to search.\n * @param {Array<string>} phrases\n *   Phrases to search for.\n * @param {Handler} handler\n *   Handle a match\n * @param {Options} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nexport function search(tree, phrases, handler, options) {\n  const config = options || {}\n\n  if (!tree || !tree.type) {\n    throw new Error('Expected node')\n  }\n\n  if (typeof phrases !== 'object') {\n    throw new TypeError('Expected object for phrases')\n  }\n\n  /** @type {Record<string, Array<string>>} */\n  const byWord = {'*': []}\n\n  let index = -1\n\n  while (++index < phrases.length) {\n    const phrase = phrases[index]\n    const firstWord = normalize(phrase.split(' ', 1)[0], config)\n\n    if (own.call(byWord, firstWord)) {\n      byWord[firstWord].push(phrase)\n    } else {\n      byWord[firstWord] = [phrase]\n    }\n  }\n\n  // Search the tree.\n  visit(tree, 'WordNode', (node, position, parent) => {\n    if (\n      !parent ||\n      position === undefined ||\n      (!config.allowLiterals && isLiteral(parent, position))\n    ) {\n      return\n    }\n\n    const word = normalize(node, config)\n    const phrases = own.call(byWord, word)\n      ? [...byWord['*'], ...byWord[word]]\n      : byWord['*']\n    let index = -1\n\n    while (++index < phrases.length) {\n      const result = test(phrases[index], position, parent)\n\n      if (result) {\n        handler(result, position, parent, phrases[index])\n      }\n    }\n  })\n\n  /**\n   * Test a phrase (the first word already matched).\n   *\n   * @param {string} phrase\n   *   Normalized phrase.\n   * @param {number} position\n   *   Index in `parent`.\n   * @param {Root | Sentence} parent\n   *   Parent node.\n   * @returns {Array<SentenceContent> | undefined}\n   *   Match, if found.\n   */\n  function test(phrase, position, parent) {\n    /** @type {Array<SentenceContent>} */\n    // @ts-expect-error: content in a root must be of the same content type.\n    const siblings = parent.children\n    const start = position\n    const expressions = phrase.split(' ').slice(1)\n    let index = -1\n\n    // Move one position forward.\n    position++\n\n    // Iterate over `expressions`.\n    while (++index < expressions.length) {\n      // Allow joining white-space.\n      while (position < siblings.length) {\n        if (siblings[position].type !== 'WhiteSpaceNode') break\n        position++\n      }\n\n      // Exit if there are no nodes left, if the current node is not a word, or\n      // if the current word does not match the search for value.\n      if (\n        !siblings[position] ||\n        siblings[position].type !== 'WordNode' ||\n        (expressions[index] !== '*' &&\n          normalize(expressions[index], config) !==\n            normalize(siblings[position], config))\n      ) {\n        return\n      }\n\n      position++\n    }\n\n    return siblings.slice(start, position)\n  }\n}\n", "/**\n * @typedef {import('nlcst').Nodes} Nodes\n */\n\n/** @type {Readonly<Array<Nodes>>} */\nconst emptyNodes = []\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node\u2019s plain-text fields, otherwise serializes its children, and\n * if the given value is an array, serialize the nodes in it.\n *\n * @param {Array<Nodes> | Nodes} value\n *   Node or list of nodes to serialize.\n * @returns {string}\n *   Result.\n */\nexport function toString(value) {\n  let index = -1\n\n  if (!value || (!Array.isArray(value) && !value.type)) {\n    throw new Error('Expected node, not `' + value + '`')\n  }\n\n  if ('value' in value) return value.value\n\n  const children = (Array.isArray(value) ? value : value.children) || emptyNodes\n\n  /** @type {Array<string>} */\n  const values = []\n\n  while (++index < children.length) {\n    values[index] = toString(children[index])\n  }\n\n  return values.join('')\n}\n", "/**\n * Quote a value.\n *\n * @param value\n *   Value(s) to wrap in quotes\n * @param [open='\"']\n *   Opening quote\n * @param [close=open]\n *   Closing quote\n */\nexport const quotation =\n  /**\n   * @type {{\n   *   (value: string, open?: string | null | undefined, close?: string | null | undefined): string\n   *   (value: ReadonlyArray<string>, open?: string | null | undefined, close?: string | null | undefined): string[]\n   * }}\n   */\n  (\n    /**\n     * @param {ReadonlyArray<string> | string} value\n     * @param {string | null | undefined} open\n     * @param {string | null | undefined} close\n     * @returns {Array<string> | string}\n     */\n    function (value, open, close) {\n      const start = open || '\"'\n      const end = close || start\n      let index = -1\n\n      if (Array.isArray(value)) {\n        const list = /** @type {ReadonlyArray<string>} */ (value)\n        /** @type {Array<string>} */\n        const result = []\n\n        while (++index < list.length) {\n          result[index] = start + list[index] + end\n        }\n\n        return result\n      }\n\n      if (typeof value === 'string') {\n        return start + value + end\n      }\n\n      throw new TypeError('Expected string or array of strings')\n    }\n  )\n", "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'end' | 'start'} type\n *   Side.\n * @returns\n *   Getter.\n */\nfunction point(type) {\n  return point\n\n  /**\n   * Get the point info of `node` at a bound side.\n   *\n   * @param {Node | NodeLike | null | undefined} [node]\n   * @returns {Point | undefined}\n   */\n  function point(node) {\n    const point = (node && node.position && node.position[type]) || {}\n\n    if (\n      typeof point.line === 'number' &&\n      point.line > 0 &&\n      typeof point.column === 'number' &&\n      point.column > 0\n    ) {\n      return {\n        line: point.line,\n        column: point.column,\n        offset:\n          typeof point.offset === 'number' && point.offset > -1\n            ? point.offset\n            : undefined\n      }\n    }\n  }\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n *   Node.\n * @returns {Position | undefined}\n *   Position.\n */\nexport function position(node) {\n  const start = pointStart(node)\n  const end = pointEnd(node)\n\n  if (start && end) {\n    return {start, end}\n  }\n}\n", "/**\n * @typedef {import('nlcst').Parents} Parents\n * @typedef {import('nlcst').Root} Root\n * @typedef {import('nlcst').RootContent} RootContent\n *\n * @typedef {import('nlcst-search').Handler} SearchHandle\n *\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {import('./patterns-en.js').Pattern} Pattern\n */\n\n/**\n * @typedef Match\n *   Match.\n * @property {string} type\n *   Type of match.\n * @property {Parents} parent\n *   Parent of `nodes`.\n * @property {Array<RootContent>} nodes\n *   Nodes that match.\n * @property {number} start\n *   Position of first of `nodes` in `parent`.\n * @property {number} end\n *   Position of last of `nodes` in `parent`.\n *\n * @typedef Options\n *   Configuration.\n * @property {ReadonlyArray<string> | null | undefined} [ignore]\n *   Phrases *not* to warn about (optional).\n * @property {boolean | null | undefined} [binary=false]\n *   Whether to allow \u201Che or she\u201D, \u201Cgarbagemen and garbagewomen\u201D, and similar\n *   (default: `false`).\n */\n\nimport {ok as assert} from 'devlop'\nimport {normalize} from 'nlcst-normalize'\nimport {search} from 'nlcst-search'\nimport {toString} from 'nlcst-to-string'\nimport {quotation} from 'quotation'\nimport {pointEnd, pointStart} from 'unist-util-position'\nimport {SKIP, visit} from 'unist-util-visit'\n\n/** @type {Readonly<Options>} */\nconst emptyOptions = {}\n/** @type {ReadonlyArray<never>} */\nconst emptyList = []\n\n/**\n * @param {ReadonlyArray<Pattern>} patterns\n *   Patterns.\n * @param {string} lang\n *   Language.\n * @returns\n *   Plugin.\n */\nexport function createPlugin(patterns, lang) {\n  /* c8 ignore next -- needed for other languages in the future. */\n  const source = 'retext-equality' + (lang === 'en' ? '' : '-' + lang)\n  // Several pattern types can be handled.\n  // Handlers are stored in this map by type.\n  const handlers = {basic, or}\n\n  // Internal mapping.\n  /** @type {Map<string, Pattern>} */\n  const byId = new Map()\n  /** @type {Map<string, string>} */\n  const byPhrase = new Map()\n  /** @type {Set<string>} */\n  const apostrophes = new Set()\n\n  unpack()\n\n  /**\n   * Check potentially insensitive language.\n   *\n   * @param {Readonly<Options> | null | undefined} [options]\n   *   Configuration (optional).\n   * @returns\n   *   Transform.\n   */\n  return function (options) {\n    const settings = options || emptyOptions\n    const ignore = settings.ignore || emptyList\n    const binary = settings.binary || false\n    /** @type {Array<string>} */\n    const noNormalize = []\n    /** @type {Array<string>} */\n    const normalize = []\n\n    for (const item of byPhrase.keys()) {\n      if (ignore.includes(item)) {\n        continue\n      }\n\n      if (apostrophes.has(item)) {\n        noNormalize.push(item)\n      } else {\n        normalize.push(item)\n      }\n    }\n\n    /**\n     * Transform.\n     *\n     * @param {Root} tree\n     *   Tree.\n     * @param {VFile} file\n     *   File.\n     * @returns {undefined}\n     *   Nothing.\n     */\n    return function (tree, file) {\n      visit(tree, 'ParagraphNode', function (node) {\n        /** @type {Map<string, Array<Match>>} */\n        const matchesById = new Map()\n\n        search(node, normalize, handle)\n        search(node, noNormalize, handle, {allowApostrophes: true})\n\n        // Ignore or emit offending words based on their pattern.\n        for (const [id, matches] of matchesById.entries()) {\n          const pattern = byId.get(id)\n          assert(pattern)\n          const kind = !binary && pattern.type === 'or' ? 'basic' : pattern.type\n          handlers[kind](matches, pattern, file)\n        }\n\n        return SKIP\n\n        // Handle a match.\n        /** @type {SearchHandle} */\n        function handle(match, position, parent, phrase) {\n          const id = byPhrase.get(phrase)\n          assert(id)\n\n          if (phrase !== phrase.toLowerCase() && toString(match) !== phrase) {\n            return\n          }\n\n          const pattern = byId.get(id)\n          assert(pattern)\n\n          let matches = matchesById.get(id)\n\n          if (!matches) {\n            matches = []\n            matchesById.set(id, matches)\n          }\n\n          matches.push({\n            end: position + match.length - 1,\n            nodes: match,\n            parent,\n            start: position,\n            type: pattern.inconsiderate[phrase]\n          })\n        }\n      })\n    }\n  }\n\n  function unpack() {\n    let index = -1\n\n    while (++index < patterns.length) {\n      const pattern = patterns[index]\n\n      byId.set(pattern.id, pattern)\n\n      /** @type {string} */\n      let phrase\n\n      for (phrase in pattern.inconsiderate) {\n        if (Object.hasOwn(pattern.inconsiderate, phrase)) {\n          byPhrase.set(phrase, pattern.id)\n          if (pattern.apostrophe) apostrophes.add(phrase)\n        }\n      }\n    }\n  }\n\n  /**\n   * Handle matches for a `basic` pattern.\n   * **Basic** patterns need no extra logic, every match is emitted as a\n   * warning.\n   *\n   * @param {ReadonlyArray<Readonly<Match>>} matches\n   *   Matches.\n   * @param {Readonly<Pattern>} pattern\n   *   Pattern.\n   * @param {VFile} file\n   *   File.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function basic(matches, pattern, file) {\n    let index = -1\n\n    while (++index < matches.length) {\n      warn(file, matches[index], pattern)\n    }\n  }\n\n  /**\n   * Handle matches for an **or** pattern.\n   * **Or** patterns emit a warning unless every category is present.\n   *\n   * For example, when `him` and `her` occur adjacent to each other, they are not\n   * warned about.\n   * But when they occur alone, they are.\n   *\n   * @param {ReadonlyArray<Readonly<Match>>} matches\n   *   Matches.\n   * @param {Readonly<Pattern>} pattern\n   *   Pattern.\n   * @param {VFile} file\n   *   File.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function or(matches, pattern, file) {\n    let index = -1\n\n    while (++index < matches.length) {\n      const match = matches[index]\n      const siblings = match.parent.children\n      const next = matches[index + 1]\n\n      if (next && next.parent === match.parent && next.type !== match.type) {\n        let start = match.end\n\n        while (++start < next.start) {\n          const sibling = siblings[start]\n\n          if (\n            sibling.type === 'WhiteSpaceNode' ||\n            (sibling.type === 'WordNode' &&\n              /(and|or)/.test(normalize(sibling))) ||\n            (sibling.type === 'PunctuationNode' && normalize(sibling) === '/')\n          ) {\n            continue\n          }\n\n          break\n        }\n\n        // If we didn\u2019t break\u2026\n        if (start === next.start) {\n          index++\n          continue\n        }\n      }\n\n      warn(file, match, pattern)\n    }\n  }\n\n  /**\n   * @param {VFile} file\n   *   File.\n   * @param {Readonly<Match>} match\n   *   Match.\n   * @param {Readonly<Pattern>} pattern\n   *   Pattern.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function warn(file, match, pattern) {\n    const actual = toString(match.nodes)\n    /** @type {Array<string> | undefined} */\n    let expected\n\n    if (pattern.considerate) {\n      expected = Object.keys(pattern.considerate)\n\n      // Capitalize suggestions.\n      if (actual.charAt(0).toUpperCase() === actual.charAt(0)) {\n        let index = -1\n\n        while (++index < expected.length) {\n          expected[index] =\n            expected[index].charAt(0).toUpperCase() + expected[index].slice(1)\n        }\n      }\n    }\n\n    const end = pointEnd(match.nodes[match.nodes.length - 1])\n    const start = pointStart(match.nodes[0])\n\n    const message = file.message(\n      'Unexpected potentially insensitive use of ' +\n        quotation(actual, '`') +\n        (pattern.condition ? ', ' + pattern.condition : '') +\n        ', ' +\n        (expected\n          ? 'in somes cases ' +\n            quotation(expected, '`').join(', ') +\n            ' may be better'\n          : 'try not to use it'),\n      {\n        ancestors: [match.parent],\n        /* c8 ignore next -- verbose to test. */\n        place: end && start ? {start, end} : undefined,\n        ruleId: pattern.id,\n        source\n      }\n    )\n\n    message.actual = actual\n    message.expected = expected\n    message.note = pattern.note\n    message.url = 'https://github.com/retextjs/retext-equality#readme'\n  }\n}\n", "/**\n * @typedef Pattern\n * @property {boolean} [apostrophe]\n * @property {Array<string>} categories\n * @property {string} [condition]\n * @property {Record<string, string>} [considerate]\n * @property {string} id\n * @property {Record<string, string>} inconsiderate\n * @property {string} [note]\n * @property {'or' | 'basic'} type\n */\n\n/** @type {ReadonlyArray<Pattern>} */\nexport const patterns = [\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"non-disabled\": \"a\"\n    },\n    \"id\": \"ablebodied\",\n    \"inconsiderate\": {\n      \"ablebodied\": \"a\"\n    },\n    \"note\": \"Can imply that people with disabilities lack the ability to use their bodies well. Sometimes `typical` can be used. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"performer\": \"a\",\n      \"star\": \"a\",\n      \"artist\": \"a\",\n      \"entertainer\": \"a\"\n    },\n    \"id\": \"actor-actress\",\n    \"inconsiderate\": {\n      \"actress\": \"female\",\n      \"actor\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"performers\": \"a\",\n      \"stars\": \"a\",\n      \"artists\": \"a\",\n      \"entertainers\": \"a\"\n    },\n    \"id\": \"actors-actresses\",\n    \"inconsiderate\": {\n      \"actresses\": \"female\",\n      \"actors\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"disorganized\": \"a\",\n      \"distracted\": \"a\",\n      \"energetic\": \"a\",\n      \"hyperactive\": \"a\",\n      \"impetuous\": \"a\",\n      \"impulsive\": \"a\",\n      \"inattentive\": \"a\",\n      \"restless\": \"a\",\n      \"unfocused\": \"a\"\n    },\n    \"id\": \"add\",\n    \"inconsiderate\": {\n      \"ADD\": \"a\",\n      \"adhd\": \"a\",\n      \"a.d.d.\": \"a\",\n      \"a.d.h.d.\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with a drug addiction\": \"a\",\n      \"person recovering from a drug addiction\": \"a\"\n    },\n    \"id\": \"addict\",\n    \"inconsiderate\": {\n      \"addict\": \"a\",\n      \"junkie\": \"a\"\n    },\n    \"note\": \"Addiction is a neurobiological disease. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"people with a drug addiction\": \"a\",\n      \"people recovering from a drug addiction\": \"a\"\n    },\n    \"id\": \"addicts\",\n    \"inconsiderate\": {\n      \"addicts\": \"a\",\n      \"junkies\": \"a\"\n    },\n    \"note\": \"Addiction is a neurobiological disease. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with AIDS\": \"a\"\n    },\n    \"id\": \"aids-victim\",\n    \"inconsiderate\": {\n      \"suffering from aids\": \"a\",\n      \"suffer from aids\": \"a\",\n      \"suffers from aids\": \"a\",\n      \"afflicted with aids\": \"a\",\n      \"victim of aids\": \"a\",\n      \"aids victim\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"pilot\": \"a\",\n      \"aviator\": \"a\",\n      \"airstaff\": \"a\"\n    },\n    \"id\": \"aircrewwoman-airman\",\n    \"inconsiderate\": {\n      \"aircrewwoman\": \"female\",\n      \"aircrew woman\": \"female\",\n      \"aircrewman\": \"male\",\n      \"airman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"pilots\": \"a\",\n      \"aviators\": \"a\",\n      \"airstaff\": \"a\"\n    },\n    \"id\": \"aircrewwomen-airmen\",\n    \"inconsiderate\": {\n      \"aircrewwomen\": \"female\",\n      \"aircrew women\": \"female\",\n      \"aircrewmen\": \"male\",\n      \"airmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"someone with an alcohol problem\": \"a\"\n    },\n    \"id\": \"alcoholic\",\n    \"inconsiderate\": {\n      \"alcoholic\": \"a\",\n      \"alcohol abuser\": \"a\"\n    },\n    \"note\": \"Alcoholism is a neurobiological disease. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"cabinet member\": \"a\"\n    },\n    \"id\": \"alderman-alderwoman\",\n    \"inconsiderate\": {\n      \"alderwoman\": \"female\",\n      \"alderman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"cabinet\": \"a\",\n      \"cabinet members\": \"a\",\n      \"alderperson\": \"a\"\n    },\n    \"id\": \"aldermen-alderwomen\",\n    \"inconsiderate\": {\n      \"alderwomen\": \"female\",\n      \"aldermen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"graduate\": \"a\"\n    },\n    \"id\": \"alumna-alumnus\",\n    \"inconsiderate\": {\n      \"alumna\": \"female\",\n      \"alumnus\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"graduates\": \"a\"\n    },\n    \"id\": \"alumnae-alumni\",\n    \"inconsiderate\": {\n      \"alumnae\": \"female\",\n      \"alumni\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with an amputation\": \"a\"\n    },\n    \"id\": \"amputee\",\n    \"inconsiderate\": {\n      \"amputee\": \"a\"\n    },\n    \"note\": \"Refer to the person, rather than the condition, first. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"ancient civilization\": \"a\",\n      \"ancient people\": \"a\"\n    },\n    \"id\": \"ancient-man\",\n    \"inconsiderate\": {\n      \"ancient man\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"assembly person\": \"a\",\n      \"assembly worker\": \"a\"\n    },\n    \"id\": \"assemblyman-assemblywoman\",\n    \"inconsiderate\": {\n      \"assemblywoman\": \"female\",\n      \"assemblyman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"psychiatric hospital\": \"a\",\n      \"mental health hospital\": \"a\"\n    },\n    \"id\": \"asylum\",\n    \"inconsiderate\": {\n      \"asylum\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"relative\": \"a\"\n    },\n    \"id\": \"aunt-uncle\",\n    \"inconsiderate\": {\n      \"kinswoman\": \"female\",\n      \"aunt\": \"female\",\n      \"kinsman\": \"male\",\n      \"uncle\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"relatives\": \"a\"\n    },\n    \"id\": \"aunts-uncles\",\n    \"inconsiderate\": {\n      \"kinswomen\": \"female\",\n      \"aunts\": \"female\",\n      \"kinsmen\": \"male\",\n      \"uncles\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"author\": \"a\",\n      \"writer\": \"a\"\n    },\n    \"id\": \"authoress\",\n    \"inconsiderate\": {\n      \"authoress\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"average consumer\": \"a\",\n      \"average household\": \"a\",\n      \"average homemaker\": \"a\"\n    },\n    \"id\": \"average-housewife\",\n    \"inconsiderate\": {\n      \"average housewife\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"average person\": \"a\"\n    },\n    \"id\": \"average-man\",\n    \"inconsiderate\": {\n      \"average man\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"average wage earner\": \"a\",\n      \"average taxpayer\": \"a\"\n    },\n    \"id\": \"average-working-man\",\n    \"inconsiderate\": {\n      \"average working man\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"aviator\": \"a\"\n    },\n    \"id\": \"aviatrix\",\n    \"inconsiderate\": {\n      \"aviatrix\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"empty\": \"a\",\n      \"sterile\": \"a\",\n      \"infertile\": \"a\"\n    },\n    \"id\": \"barren\",\n    \"inconsiderate\": {\n      \"barren\": \"a\"\n    },\n    \"note\": \"Source: https://www.autistichoya.com/p/ableist-words-and-terms-to-avoid.html\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"id\": \"basically\",\n    \"inconsiderate\": {\n      \"basically\": \"a\"\n    },\n    \"note\": \"It\u2019s probably not that basic. If you\u2019re going to explain a confusing previous sentence with a clearer next sentence, why not drop the former and only use the latter? (source: https://css-tricks.com/words-avoid-educational-writing/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"non-discrimination law\": \"a\",\n      \"non-discrimination ordinance\": \"a\"\n    },\n    \"id\": \"bathroom-bill\",\n    \"inconsiderate\": {\n      \"bathroom bill\": \"a\"\n    },\n    \"note\": \"A term created and used by far-right extremists to oppose nondiscrimination laws that protect transgender people (source: https://www.glaad.org/reference/transgender)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"chaos\": \"a\",\n      \"hectic\": \"a\",\n      \"pandemonium\": \"a\"\n    },\n    \"id\": \"bedlam\",\n    \"inconsiderate\": {\n      \"bedlam\": \"a\",\n      \"madhouse\": \"a\",\n      \"loony bin\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"bisexual\": \"a\"\n    },\n    \"id\": \"bi\",\n    \"inconsiderate\": {\n      \"bi\": \"a\"\n    },\n    \"note\": \"Avoid using slang shorthand (source: https://www.glaad.org/reference/style)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"enthusiastic\": \"a\",\n      \"spree\": \"a\"\n    },\n    \"id\": \"binge\",\n    \"inconsiderate\": {\n      \"binge\": \"a\"\n    },\n    \"note\": \"Binge might be insensitive towards folks with eating or drinking disorders (source: https://github.com/retextjs/retext-equality/issues/110)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"fluctuating\": \"a\",\n      \"person with bipolar disorder\": \"a\"\n    },\n    \"id\": \"bipolar\",\n    \"inconsiderate\": {\n      \"bipolar\": \"a\"\n    },\n    \"note\": \"Only use terms describing mental illness when referring to a professionally diagnosed medical condition. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"has a disability\": \"a\",\n      \"person with a disability\": \"a\",\n      \"people with disabilities\": \"a\"\n    },\n    \"id\": \"birth-defect\",\n    \"inconsiderate\": {\n      \"birth defect\": \"a\"\n    },\n    \"note\": \"Assumes/implies that a person with a disability is deficient or inferior to others. When possible, specify the functional ability or its restriction. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"unethical hacker\": \"a\",\n      \"malicious actor\": \"a\"\n    },\n    \"id\": \"blackhat\",\n    \"inconsiderate\": {\n      \"blackhat\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"blocklist\": \"a\",\n      \"wronglist\": \"a\",\n      \"banlist\": \"a\",\n      \"deny list\": \"a\"\n    },\n    \"id\": \"blacklist\",\n    \"inconsiderate\": {\n      \"blacklist\": \"a\",\n      \"black list\": \"a\"\n    },\n    \"note\": \"Replace racially-charged language with more accurate and inclusive words\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"blocklisted\": \"a\",\n      \"wronglisted\": \"a\",\n      \"banlisted\": \"a\",\n      \"deny-listed\": \"a\"\n    },\n    \"id\": \"blacklisted\",\n    \"inconsiderate\": {\n      \"blacklisted\": \"a\"\n    },\n    \"note\": \"Replace racially-charged language with more accurate and inclusive words\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"blocklisting\": \"a\",\n      \"wronglisting\": \"a\",\n      \"banlisting\": \"a\",\n      \"deny-listing\": \"a\"\n    },\n    \"id\": \"blacklisting\",\n    \"inconsiderate\": {\n      \"blacklisting\": \"a\"\n    },\n    \"note\": \"Replace racially-charged language with more accurate and inclusive words\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"bogeymonster\": \"a\"\n    },\n    \"id\": \"bogeyman-bogeywoman\",\n    \"inconsiderate\": {\n      \"bogeywoman\": \"female\",\n      \"bogeyman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"bogeymonster\": \"a\"\n    },\n    \"id\": \"bogieman-bogiewoman\",\n    \"inconsiderate\": {\n      \"bogiewoman\": \"female\",\n      \"bogieman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"bogeymonsters\": \"a\"\n    },\n    \"id\": \"bogiemen-bogiewomen\",\n    \"inconsiderate\": {\n      \"bogiewomen\": \"female\",\n      \"bogiemen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"bonder\": \"a\"\n    },\n    \"id\": \"bondsman-bondswoman\",\n    \"inconsiderate\": {\n      \"bondswoman\": \"female\",\n      \"bondsman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"bonders\": \"a\"\n    },\n    \"id\": \"bondsmen-bondswomen\",\n    \"inconsiderate\": {\n      \"bondswomen\": \"female\",\n      \"bondsmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"thin\": \"a\",\n      \"slim\": \"a\"\n    },\n    \"id\": \"bony\",\n    \"inconsiderate\": {\n      \"anorexic\": \"a\",\n      \"bony\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"boogeymonster\": \"a\"\n    },\n    \"id\": \"boogeyman-boogeywoman\",\n    \"inconsiderate\": {\n      \"boogeywoman\": \"female\",\n      \"boogeyman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"boogeymonster\": \"a\"\n    },\n    \"id\": \"boogieman-boogiewoman\",\n    \"inconsiderate\": {\n      \"boogiewoman\": \"female\",\n      \"boogieman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"boogeymonsters\": \"a\"\n    },\n    \"id\": \"boogiemen-boogiewomen\",\n    \"inconsiderate\": {\n      \"boogiewomen\": \"female\",\n      \"boogiemen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"assigned male at birth\": \"a\",\n      \"designated male at birth\": \"a\"\n    },\n    \"id\": \"born-a-man\",\n    \"inconsiderate\": {\n      \"biologically male\": \"a\",\n      \"born a man\": \"a\",\n      \"genetically male\": \"a\"\n    },\n    \"note\": \"Assigned birth gender is complicated; gender identity is more than what your parents decided you were at birth\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"assigned female at birth\": \"a\",\n      \"designated female at birth\": \"a\"\n    },\n    \"id\": \"born-a-woman\",\n    \"inconsiderate\": {\n      \"biologically female\": \"a\",\n      \"born a woman\": \"a\",\n      \"genetically female\": \"a\"\n    },\n    \"note\": \"Assigned birth gender is complicated; gender identity is more than what your parents decided you were at birth\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"condition\": \"when referring to a person\",\n    \"considerate\": {\n      \"kid\": \"a\",\n      \"child\": \"a\",\n      \"youth\": \"a\"\n    },\n    \"id\": \"boy-girl\",\n    \"inconsiderate\": {\n      \"girl\": \"female\",\n      \"boy\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"partner\": \"a\",\n      \"friend\": \"a\",\n      \"significant other\": \"a\"\n    },\n    \"id\": \"boyfriend-girlfriend\",\n    \"inconsiderate\": {\n      \"girlfriend\": \"female\",\n      \"boyfriend\": \"male\"\n    },\n    \"note\": \"Source: https://www.bustle.com/articles/108321-6-reasons-to-refer-to-your-significant-other-as-your-partner\",\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"partners\": \"a\",\n      \"friends\": \"a\",\n      \"significant others\": \"a\"\n    },\n    \"id\": \"boyfriends-girlfriends\",\n    \"inconsiderate\": {\n      \"girlfriends\": \"female\",\n      \"boyfriends\": \"male\"\n    },\n    \"note\": \"Source: https://www.bustle.com/articles/108321-6-reasons-to-refer-to-your-significant-other-as-your-partner\",\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"childhood\": \"a\"\n    },\n    \"id\": \"boyhood-girlhood\",\n    \"inconsiderate\": {\n      \"girlhood\": \"female\",\n      \"boyhood\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"childish\": \"a\"\n    },\n    \"id\": \"boyish-girly\",\n    \"inconsiderate\": {\n      \"girly\": \"female\",\n      \"girlish\": \"female\",\n      \"boyish\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"spouse\": \"a\",\n      \"newlywed\": \"a\"\n    },\n    \"id\": \"bride-groom\",\n    \"inconsiderate\": {\n      \"bride\": \"female\",\n      \"groom\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"sibling\": \"a\"\n    },\n    \"id\": \"brother-sister\",\n    \"inconsiderate\": {\n      \"sister\": \"female\",\n      \"brother\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"the human family\": \"a\"\n    },\n    \"id\": \"brotherhood-of-man\",\n    \"inconsiderate\": {\n      \"brotherhood of man\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"kinship\": \"a\",\n      \"community\": \"a\"\n    },\n    \"id\": \"brotherhood-sisterhood\",\n    \"inconsiderate\": {\n      \"sisterhood\": \"female\",\n      \"brotherhood\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"siblings\": \"a\"\n    },\n    \"id\": \"brothers-sisters\",\n    \"inconsiderate\": {\n      \"sisters\": \"female\",\n      \"brothers\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with prominent teeth\": \"a\",\n      \"prominent teeth\": \"a\"\n    },\n    \"id\": \"buckteeth\",\n    \"inconsiderate\": {\n      \"bucktoothed\": \"a\",\n      \"buckteeth\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"bug report\": \"a\",\n      \"snapshot\": \"a\"\n    },\n    \"id\": \"bugreport\",\n    \"inconsiderate\": {\n      \"bugreport\": \"a\"\n    },\n    \"note\": \"Avoid using `bugreport`, as the word `bugre` is a slur in Brazilian Portuguese\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"model\": \"a\"\n    },\n    \"id\": \"calendar-girl\",\n    \"inconsiderate\": {\n      \"calendar girl\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"escort\": \"a\",\n      \"prostitute\": \"a\",\n      \"sex worker\": \"a\"\n    },\n    \"id\": \"call-girl\",\n    \"inconsiderate\": {\n      \"call girl\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"camera operator\": \"a\",\n      \"camera person\": \"a\"\n    },\n    \"id\": \"cameraman-camerawoman\",\n    \"inconsiderate\": {\n      \"camerawoman\": \"female\",\n      \"cameraman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"camera operators\": \"a\"\n    },\n    \"id\": \"cameramen-camerawomen\",\n    \"inconsiderate\": {\n      \"camerawomen\": \"female\",\n      \"cameramen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"cattle rancher\": \"a\"\n    },\n    \"id\": \"cattleman-cattlewoman\",\n    \"inconsiderate\": {\n      \"cattlewoman\": \"female\",\n      \"cattleman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"cattle ranchers\": \"a\"\n    },\n    \"id\": \"cattlemen-cattlewomen\",\n    \"inconsiderate\": {\n      \"cattlewomen\": \"female\",\n      \"cattlemen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"troglodyte\": \"a\",\n      \"hominidae\": \"a\"\n    },\n    \"id\": \"caveman-cavewoman\",\n    \"inconsiderate\": {\n      \"cavewoman\": \"female\",\n      \"caveman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"troglodytae\": \"a\",\n      \"troglodyti\": \"a\",\n      \"troglodytes\": \"a\",\n      \"hominids\": \"a\"\n    },\n    \"id\": \"cavemen-cavewomen\",\n    \"inconsiderate\": {\n      \"cavewomen\": \"female\",\n      \"cavemen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"chair\": \"a\",\n      \"head\": \"a\",\n      \"chairperson\": \"a\",\n      \"coordinator\": \"a\",\n      \"committee head\": \"a\",\n      \"moderator\": \"a\",\n      \"presiding officer\": \"a\"\n    },\n    \"id\": \"chairman-chairwoman\",\n    \"inconsiderate\": {\n      \"chairwoman\": \"female\",\n      \"chairman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"chairs\": \"a\",\n      \"chairpersons\": \"a\",\n      \"coordinators\": \"a\"\n    },\n    \"id\": \"chairmen-chairwomen\",\n    \"inconsiderate\": {\n      \"chairwomen\": \"female\",\n      \"chairmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"officer\": \"a\",\n      \"police officer\": \"a\"\n    },\n    \"id\": \"chick-cop-policeman\",\n    \"inconsiderate\": {\n      \"policewoman\": \"female\",\n      \"policeman\": \"male\",\n      \"chick cop\": \"female\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"cleric\": \"a\",\n      \"practicing Christian\": \"a\",\n      \"pillar of the Church\": \"a\"\n    },\n    \"id\": \"churchman\",\n    \"inconsiderate\": {\n      \"churchman\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"id\": \"clearly\",\n    \"inconsiderate\": {\n      \"clearly\": \"a\"\n    },\n    \"note\": \"If it\u2019s self-evident then maybe you don\u2019t need to describe it. If it isn\u2019t, don\u2019t say it. (source: https://css-tricks.com/words-avoid-educational-writing/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"clergyperson\": \"a\",\n      \"clergy\": \"a\",\n      \"cleric\": \"a\"\n    },\n    \"id\": \"clergyman-clergywoman\",\n    \"inconsiderate\": {\n      \"clergywoman\": \"female\",\n      \"clergyman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"clergies\": \"a\",\n      \"clerics\": \"a\"\n    },\n    \"id\": \"clergymen-clergywomen\",\n    \"inconsiderate\": {\n      \"clergywomen\": \"female\",\n      \"clergymen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"die by suicide\": \"a\"\n    },\n    \"id\": \"commit-suicide\",\n    \"inconsiderate\": {\n      \"commit suicide\": \"a\",\n      \"complete suicide\": \"a\",\n      \"successful suicide\": \"a\"\n    },\n    \"note\": \"Committing suicide is not successful/unsuccessful, that sends the wrong message (source: https://www.afsp.org/news-events/for-the-media/reporting-on-suicide, https://www.speakingofsuicide.com/2013/04/13/language/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"died by suicide\": \"a\"\n    },\n    \"id\": \"committed-suicide\",\n    \"inconsiderate\": {\n      \"committed suicide\": \"a\",\n      \"completed suicide\": \"a\"\n    },\n    \"note\": \"Source: https://www.afsp.org/news-events/for-the-media/reporting-on-suicide, https://www.speakingofsuicide.com/2013/04/13/language/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"committee member\": \"a\"\n    },\n    \"id\": \"committee-man-committee-woman\",\n    \"inconsiderate\": {\n      \"committee woman\": \"female\",\n      \"committee man\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"common person\": \"a\",\n      \"average person\": \"a\"\n    },\n    \"id\": \"common-girl-common-man\",\n    \"inconsiderate\": {\n      \"common girl\": \"female\",\n      \"common man\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"member of congress\": \"a\",\n      \"congress person\": \"a\",\n      \"legislator\": \"a\",\n      \"representative\": \"a\"\n    },\n    \"id\": \"congressman-congresswoman\",\n    \"inconsiderate\": {\n      \"congresswoman\": \"female\",\n      \"congressman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"members of congress\": \"a\",\n      \"congress persons\": \"a\",\n      \"legislators\": \"a\",\n      \"representatives\": \"a\"\n    },\n    \"id\": \"congressmen-congresswomen\",\n    \"inconsiderate\": {\n      \"congresswomen\": \"female\",\n      \"congressmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"council member\": \"a\"\n    },\n    \"id\": \"councilman-councilwoman\",\n    \"inconsiderate\": {\n      \"councilwoman\": \"female\",\n      \"councilman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"council members\": \"a\"\n    },\n    \"id\": \"councilmen-councilwomen\",\n    \"inconsiderate\": {\n      \"councilwomen\": \"female\",\n      \"councilmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"country person\": \"a\"\n    },\n    \"id\": \"countryman-countrywoman\",\n    \"inconsiderate\": {\n      \"countrywoman\": \"female\",\n      \"countryman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"country folk\": \"a\"\n    },\n    \"id\": \"countrymen-countrywomen\",\n    \"inconsiderate\": {\n      \"countrywomen\": \"female\",\n      \"countrymen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"cowhand\": \"a\"\n    },\n    \"id\": \"cowboy-cowgirl\",\n    \"inconsiderate\": {\n      \"cowgirl\": \"female\",\n      \"cowboy\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"cowhands\": \"a\"\n    },\n    \"id\": \"cowboys-cowgirls\",\n    \"inconsiderate\": {\n      \"cowgirls\": \"female\",\n      \"cowboys\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"creep\": \"a\",\n      \"fool\": \"a\"\n    },\n    \"id\": \"cretin\",\n    \"inconsiderate\": {\n      \"cretin\": \"a\"\n    },\n    \"note\": \"Source: https://www.autistichoya.com/p/ableist-words-and-terms-to-avoid.html\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"parent\": \"a\"\n    },\n    \"id\": \"dad-mom\",\n    \"inconsiderate\": {\n      \"mama\": \"female\",\n      \"mother\": \"female\",\n      \"mom\": \"female\",\n      \"mum\": \"female\",\n      \"momma\": \"female\",\n      \"mommy\": \"female\",\n      \"papa\": \"male\",\n      \"father\": \"male\",\n      \"dad\": \"male\",\n      \"pop\": \"male\",\n      \"daddy\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"parents\": \"a\"\n    },\n    \"id\": \"dads-moms\",\n    \"inconsiderate\": {\n      \"mamas\": \"female\",\n      \"mothers\": \"female\",\n      \"moms\": \"female\",\n      \"mums\": \"female\",\n      \"mommas\": \"female\",\n      \"mommies\": \"female\",\n      \"papas\": \"male\",\n      \"fathers\": \"male\",\n      \"dads\": \"male\",\n      \"daddies\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"absurd\": \"a\",\n      \"foolish\": \"a\"\n    },\n    \"id\": \"daft\",\n    \"inconsiderate\": {\n      \"daft\": \"a\"\n    },\n    \"note\": \"Source: https://www.autistichoya.com/p/ableist-words-and-terms-to-avoid.html\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"official\": \"a\",\n      \"owner\": \"a\",\n      \"expert\": \"a\",\n      \"superior\": \"a\",\n      \"chief\": \"a\",\n      \"ruler\": \"a\"\n    },\n    \"id\": \"dame-lord\",\n    \"inconsiderate\": {\n      \"dame\": \"female\",\n      \"lord\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"officials\": \"a\",\n      \"chiefs\": \"a\",\n      \"rulers\": \"a\"\n    },\n    \"id\": \"dames-lords\",\n    \"inconsiderate\": {\n      \"dames\": \"female\",\n      \"lords\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"child\": \"a\"\n    },\n    \"id\": \"daughter-son\",\n    \"inconsiderate\": {\n      \"daughter\": \"female\",\n      \"son\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"children\": \"a\"\n    },\n    \"id\": \"daughters-sons\",\n    \"inconsiderate\": {\n      \"daughters\": \"female\",\n      \"sons\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"careless\": \"a\",\n      \"heartless\": \"a\",\n      \"indifferent\": \"a\",\n      \"insensitive\": \"a\"\n    },\n    \"id\": \"deaf-to\",\n    \"inconsiderate\": {\n      \"blind to\": \"a\",\n      \"blind eye to\": \"a\",\n      \"blinded by\": \"a\",\n      \"deaf to\": \"a\",\n      \"deaf ear to\": \"a\",\n      \"deafened by\": \"a\"\n    },\n    \"note\": \"Source: https://www.autistichoya.com/p/ableist-words-and-terms-to-avoid.html\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"deaf\": \"a\"\n    },\n    \"id\": \"deafmute\",\n    \"inconsiderate\": {\n      \"deaf and dumb\": \"a\",\n      \"deafmute\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"courier\": \"a\",\n      \"messenger\": \"a\"\n    },\n    \"id\": \"delivery-boy-delivery-girl\",\n    \"inconsiderate\": {\n      \"delivery girl\": \"female\",\n      \"delivery boy\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"sad\": \"a\",\n      \"blue\": \"a\",\n      \"bummed out\": \"a\",\n      \"person with seasonal affective disorder\": \"a\",\n      \"person with psychotic depression\": \"a\",\n      \"person with postpartum depression\": \"a\"\n    },\n    \"id\": \"depressed\",\n    \"inconsiderate\": {\n      \"depressed\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"concierge\": \"a\"\n    },\n    \"id\": \"doorman-doorwoman\",\n    \"inconsiderate\": {\n      \"doorwoman\": \"female\",\n      \"doorman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"concierges\": \"a\"\n    },\n    \"id\": \"doormen-doorwomen\",\n    \"inconsiderate\": {\n      \"doorwomen\": \"female\",\n      \"doormen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"Down Syndrome\": \"a\"\n    },\n    \"id\": \"downs-syndrome\",\n    \"inconsiderate\": {\n      \"downs syndrome\": \"a\"\n    },\n    \"note\": \"Source: https://media.specialolympics.org/soi/files/press-kit/2014_FactSheet_Final.pdf\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"foolish\": \"a\",\n      \"ludicrous\": \"a\",\n      \"speechless\": \"a\",\n      \"silent\": \"a\"\n    },\n    \"id\": \"dumb\",\n    \"inconsiderate\": {\n      \"dumb\": \"a\"\n    },\n    \"note\": \"Dumb here is used in 2 different contexts , the inability to talk or as a curse word. (source: https://www.autistichoya.com/p/ableist-words-and-terms-to-avoid.html)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"test double\": \"a\",\n      \"placeholder\": \"a\",\n      \"fake\": \"a\",\n      \"stub\": \"a\"\n    },\n    \"id\": \"dummy\",\n    \"inconsiderate\": {\n      \"dummyvariable\": \"a\",\n      \"dummyvalue\": \"a\",\n      \"dummyobject\": \"a\",\n      \"dummy\": \"a\"\n    },\n    \"note\": \"Dummy can refer to the inability to talk or be used as a derogatory word meaning stupid. In computer programming it is used where a value or behavior is unimportant. There are better alternatives for other use cases also.\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with dwarfism\": \"a\",\n      \"little person\": \"a\",\n      \"little people\": \"a\",\n      \"LP\": \"a\",\n      \"person of short stature\": \"a\"\n    },\n    \"id\": \"dwarf\",\n    \"inconsiderate\": {\n      \"vertically challenged\": \"a\",\n      \"midget\": \"a\",\n      \"small person\": \"a\",\n      \"dwarf\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/,https://www.lpaonline.org/faq-#Midget\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with dyslexia\": \"a\"\n    },\n    \"id\": \"dyslexic\",\n    \"inconsiderate\": {\n      \"dyslexic\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"id\": \"easy\",\n    \"inconsiderate\": {\n      \"easy\": \"a\",\n      \"easily\": \"a\"\n    },\n    \"note\": \"It\u2019s probably not that easy. Even if it is, you probably don\u2019t need to specifically say it. (source: https://css-tricks.com/words-avoid-educational-writing/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"english coordinator\": \"a\",\n      \"senior teacher of english\": \"a\"\n    },\n    \"id\": \"english-master\",\n    \"inconsiderate\": {\n      \"english master\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"the english\": \"a\"\n    },\n    \"id\": \"englishmen\",\n    \"inconsiderate\": {\n      \"englishmen\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with epilepsy\": \"a\"\n    },\n    \"id\": \"epileptic\",\n    \"inconsiderate\": {\n      \"epileptic\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"Inuit\": \"a\"\n    },\n    \"id\": \"eskimo\",\n    \"inconsiderate\": {\n      \"eskimo\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"Inuits\": \"a\"\n    },\n    \"id\": \"eskimos\",\n    \"inconsiderate\": {\n      \"eskimos\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"id\": \"everyone-knows\",\n    \"inconsiderate\": {\n      \"everyone knows\": \"a\"\n    },\n    \"note\": \"If it\u2019s self-evident then maybe you don\u2019t need to describe it. If it isn\u2019t, don\u2019t say it. (source: https://css-tricks.com/words-avoid-educational-writing/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"executor\": \"a\"\n    },\n    \"id\": \"executrix\",\n    \"inconsiderate\": {\n      \"executrix\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"gay\": \"a\"\n    },\n    \"id\": \"fag\",\n    \"inconsiderate\": {\n      \"fag\": \"a\",\n      \"faggot\": \"a\",\n      \"dyke\": \"a\",\n      \"homo\": \"a\",\n      \"sodomite\": \"a\"\n    },\n    \"note\": \"Derogatory terms for LGBTQ+ people are offensive (source: https://www.glaad.org/reference/offensive)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"suicide attempt\": \"a\",\n      \"attempted suicide\": \"a\"\n    },\n    \"id\": \"failed-suicide\",\n    \"inconsiderate\": {\n      \"failed suicide\": \"a\",\n      \"failed attempt\": \"a\",\n      \"suicide failure\": \"a\"\n    },\n    \"note\": \"Attempted suicide should not be depicted as a failure (source: https://www.speakingofsuicide.com/2013/04/13/language, https://www.afsp.org/news-events/for-the-media/reporting-on-suicide)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"with family support needs\": \"a\"\n    },\n    \"id\": \"family-burden\",\n    \"inconsiderate\": {\n      \"family burden\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"founder of\": \"a\"\n    },\n    \"id\": \"father-of-*\",\n    \"inconsiderate\": {\n      \"father of *\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"native tongue\": \"a\",\n      \"native language\": \"a\"\n    },\n    \"id\": \"father-tongue-mother-tongue\",\n    \"inconsiderate\": {\n      \"mother tongue\": \"female\",\n      \"father tongue\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"native land\": \"a\",\n      \"homeland\": \"a\"\n    },\n    \"id\": \"fatherland-motherland\",\n    \"inconsiderate\": {\n      \"motherland\": \"female\",\n      \"fatherland\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"camaraderie\": \"a\",\n      \"community\": \"a\",\n      \"organization\": \"a\"\n    },\n    \"id\": \"fellowship\",\n    \"inconsiderate\": {\n      \"fellowship\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"humans\": \"a\"\n    },\n    \"id\": \"females-males\",\n    \"inconsiderate\": {\n      \"females\": \"female\",\n      \"males\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"humanly\": \"a\",\n      \"mature\": \"a\"\n    },\n    \"id\": \"feminin-manly\",\n    \"inconsiderate\": {\n      \"feminin\": \"female\",\n      \"dudely\": \"male\",\n      \"manly\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"humanity\": \"a\"\n    },\n    \"id\": \"femininity-manliness\",\n    \"inconsiderate\": {\n      \"femininity\": \"female\",\n      \"manliness\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"fire fighter\": \"a\",\n      \"fire officer\": \"a\"\n    },\n    \"id\": \"fireman-firewoman\",\n    \"inconsiderate\": {\n      \"firewoman\": \"female\",\n      \"fireman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"fire fighters\": \"a\"\n    },\n    \"id\": \"firemen-firewomen\",\n    \"inconsiderate\": {\n      \"firewomen\": \"female\",\n      \"firemen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"fisher\": \"a\",\n      \"crew member\": \"a\",\n      \"fisherfolk\": \"a\",\n      \"angler\": \"a\"\n    },\n    \"id\": \"fisherman-fisherwoman\",\n    \"inconsiderate\": {\n      \"fisherwoman\": \"female\",\n      \"fisherman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"fishers\": \"a\"\n    },\n    \"id\": \"fishermen-fisherwomen\",\n    \"inconsiderate\": {\n      \"fisherwomen\": \"female\",\n      \"fishermen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"ancestor\": \"a\"\n    },\n    \"id\": \"forefather-foremother\",\n    \"inconsiderate\": {\n      \"foremother\": \"female\",\n      \"forefather\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"ancestors\": \"a\"\n    },\n    \"id\": \"forefathers-foremothers\",\n    \"inconsiderate\": {\n      \"foremothers\": \"female\",\n      \"forefathers\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"supervisor\": \"a\",\n      \"shift boss\": \"a\"\n    },\n    \"id\": \"foreman-forewoman\",\n    \"inconsiderate\": {\n      \"forewoman\": \"female\",\n      \"foreman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"supervisors\": \"a\",\n      \"shift bosses\": \"a\"\n    },\n    \"id\": \"foremen-forewomen\",\n    \"inconsiderate\": {\n      \"forewomen\": \"female\",\n      \"foremen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"the founders\": \"a\",\n      \"founding leaders\": \"a\",\n      \"forebears\": \"a\"\n    },\n    \"id\": \"founding-father\",\n    \"inconsiderate\": {\n      \"founding father\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"french\": \"a\",\n      \"the french\": \"a\"\n    },\n    \"id\": \"frenchmen\",\n    \"inconsiderate\": {\n      \"frenchmen\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"first-year student\": \"a\",\n      \"fresher\": \"a\"\n    },\n    \"id\": \"freshman\",\n    \"inconsiderate\": {\n      \"freshman\": \"male\",\n      \"freshwoman\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"first-year students\": \"a\",\n      \"freshers\": \"a\"\n    },\n    \"id\": \"freshmen-freshwomen\",\n    \"inconsiderate\": {\n      \"freshwomen\": \"female\",\n      \"freshmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"figureheads\": \"a\"\n    },\n    \"id\": \"front-men,-frontmen-front-women,-frontwomen\",\n    \"inconsiderate\": {\n      \"front women, frontwomen\": \"female\",\n      \"front men, frontmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"lead\": \"a\",\n      \"front\": \"a\",\n      \"figurehead\": \"a\"\n    },\n    \"id\": \"frontman,-front-man-frontwoman,-front-woman\",\n    \"inconsiderate\": {\n      \"frontwoman, front woman\": \"female\",\n      \"frontman, front man\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"person\": \"a\",\n      \"friend\": \"a\",\n      \"pal\": \"a\",\n      \"folk\": \"a\",\n      \"individual\": \"a\"\n    },\n    \"id\": \"gal-guy\",\n    \"inconsiderate\": {\n      \"woman\": \"female\",\n      \"gal\": \"female\",\n      \"lady\": \"female\",\n      \"babe\": \"female\",\n      \"bimbo\": \"female\",\n      \"chick\": \"female\",\n      \"guy\": \"male\",\n      \"lad\": \"male\",\n      \"fellow\": \"male\",\n      \"dude\": \"male\",\n      \"bro\": \"male\",\n      \"gentleman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"people\": \"a\",\n      \"persons\": \"a\",\n      \"folks\": \"a\"\n    },\n    \"id\": \"gals-man\",\n    \"inconsiderate\": {\n      \"women\": \"female\",\n      \"girls\": \"female\",\n      \"gals\": \"female\",\n      \"ladies\": \"female\",\n      \"man\": \"male\",\n      \"boys\": \"male\",\n      \"men\": \"male\",\n      \"guys\": \"male\",\n      \"dudes\": \"male\",\n      \"gents\": \"male\",\n      \"gentlemen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"garbage collector\": \"a\",\n      \"waste collector\": \"a\",\n      \"trash collector\": \"a\"\n    },\n    \"id\": \"garbageman-garbagewoman\",\n    \"inconsiderate\": {\n      \"garbagewoman\": \"female\",\n      \"garbageman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"garbage collectors\": \"a\",\n      \"waste collectors\": \"a\",\n      \"trash collectors\": \"a\"\n    },\n    \"id\": \"garbagemen-garbagewomen\",\n    \"inconsiderate\": {\n      \"garbagewomen\": \"female\",\n      \"garbagemen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"gay issues\": \"a\"\n    },\n    \"id\": \"gay-agenda\",\n    \"inconsiderate\": {\n      \"gay agenda\": \"a\",\n      \"homosexual agenda\": \"a\"\n    },\n    \"note\": \"Used by anti-LGBTQ+ extremists to create a climate of fear around LGBTQ+ issues (source: https://www.glaad.org/reference/offensive)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"gay lives\": \"a\",\n      \"gay/lesbian lives\": \"a\"\n    },\n    \"id\": \"gay-lifestyle\",\n    \"inconsiderate\": {\n      \"gay lifestyle\": \"a\",\n      \"homosexual lifestyle\": \"a\"\n    },\n    \"note\": \"Implies that being LGBTQ+ is a choice (source: https://www.glaad.org/reference/offensive)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"equal rights\": \"a\",\n      \"civil rights for gay people\": \"a\"\n    },\n    \"id\": \"gay-rights\",\n    \"inconsiderate\": {\n      \"special rights\": \"a\",\n      \"gay rights\": \"a\"\n    },\n    \"note\": \"LGBTQ+ rights are human rights (source: https://www.glaad.org/reference/style)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"pronoun\": \"a\",\n      \"pronouns\": \"a\"\n    },\n    \"id\": \"gender-pronoun\",\n    \"inconsiderate\": {\n      \"preferred pronoun\": \"a\",\n      \"preferred pronouns\": \"a\",\n      \"gender pronoun\": \"a\",\n      \"gender pronouns\": \"a\"\n    },\n    \"note\": \"Preferred pronoun sounds like it is optional to use someone's correct pronoun (source: https://www.selfdefined.app/definitions/pronouns/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"projects\": \"a\",\n      \"urban\": \"a\"\n    },\n    \"id\": \"ghetto\",\n    \"inconsiderate\": {\n      \"ghetto\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with a limp\": \"a\"\n    },\n    \"id\": \"gimp\",\n    \"inconsiderate\": {\n      \"cripple\": \"a\",\n      \"crippled\": \"a\",\n      \"gimp\": \"a\"\n    },\n    \"note\": \"Refer to the specific disability.\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"godparent\": \"a\",\n      \"elder\": \"a\",\n      \"patron\": \"a\"\n    },\n    \"id\": \"godfather-godmother\",\n    \"inconsiderate\": {\n      \"godmother\": \"female\",\n      \"patroness\": \"female\",\n      \"godfather\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"a person who is not Jewish\": \"a\",\n      \"not Jewish\": \"a\"\n    },\n    \"id\": \"goy\",\n    \"inconsiderate\": {\n      \"goyim\": \"a\",\n      \"goyum\": \"a\",\n      \"goy\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"grandparent\": \"a\",\n      \"ancestor\": \"a\"\n    },\n    \"id\": \"gramps-granny\",\n    \"inconsiderate\": {\n      \"granny\": \"female\",\n      \"grandma\": \"female\",\n      \"grandmother\": \"female\",\n      \"grandpappy\": \"male\",\n      \"granddaddy\": \"male\",\n      \"gramps\": \"male\",\n      \"grandpa\": \"male\",\n      \"grandfather\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"grandchild\": \"a\"\n    },\n    \"id\": \"granddaughter-grandson\",\n    \"inconsiderate\": {\n      \"granddaughter\": \"female\",\n      \"grandson\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"grandchildren\": \"a\"\n    },\n    \"id\": \"granddaughters-grandsons\",\n    \"inconsiderate\": {\n      \"granddaughters\": \"female\",\n      \"grandsons\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"legacy policy\": \"a\",\n      \"legacy clause\": \"a\",\n      \"deprecation policy\": \"a\"\n    },\n    \"id\": \"grandfather-clause\",\n    \"inconsiderate\": {\n      \"grandfather clause\": \"a\",\n      \"grandfather policy\": \"a\"\n    },\n    \"note\": \"Avoid using phrases referring to racist United States \u201CJim Crow\u201D laws. (source: https://en.wikipedia.org/wiki/Grandfather_clause#Origin)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"deprecated\": \"a\",\n      \"legacy\": \"a\"\n    },\n    \"id\": \"grandfathered\",\n    \"inconsiderate\": {\n      \"grandfathered\": \"a\"\n    },\n    \"note\": \"Avoid using phrases referring to racist United States \u201CJim Crow\u201D laws. (source: https://en.wikipedia.org/wiki/Grandfather_clause#Origin)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"deprecate\": \"a\"\n    },\n    \"id\": \"grandfathering\",\n    \"inconsiderate\": {\n      \"grandfathering\": \"a\"\n    },\n    \"note\": \"Avoid using phrases referring to racist United States \u201CJim Crow\u201D laws. (source: https://en.wikipedia.org/wiki/Grandfather_clause#Origin)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"grandparents\": \"a\",\n      \"ancestors\": \"a\"\n    },\n    \"id\": \"grandfathers-grandmothers\",\n    \"inconsiderate\": {\n      \"grandmothers\": \"female\",\n      \"grandfathers\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"Nomad\": \"a\",\n      \"Traveler\": \"a\",\n      \"Roma\": \"a\",\n      \"Romani\": \"a\"\n    },\n    \"id\": \"gyp\",\n    \"inconsiderate\": {\n      \"gyppo\": \"a\",\n      \"gypsy\": \"a\",\n      \"Gipsy\": \"a\",\n      \"gyp\": \"a\"\n    },\n    \"note\": \"Gypsy is insensitive, use Roma or Romani. They\u2019re not Egyptian as the name suggests. (source: en.wikipedia.org/wiki/Romani_people#cite_ref-80)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with a handicap\": \"a\",\n      \"accessible\": \"a\"\n    },\n    \"id\": \"handicapped\",\n    \"inconsiderate\": {\n      \"handicapped\": \"a\"\n    },\n    \"note\": \"Refer to the person, rather than the disability, first. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"accessible parking\": \"a\"\n    },\n    \"id\": \"handicapped-parking\",\n    \"inconsiderate\": {\n      \"handicapped parking\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"artisan\": \"a\",\n      \"craftsperson\": \"a\",\n      \"skilled worker\": \"a\"\n    },\n    \"id\": \"handyman-handywoman\",\n    \"inconsiderate\": {\n      \"handywoman\": \"female\",\n      \"craftswoman\": \"female\",\n      \"handyman\": \"male\",\n      \"craftsman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"artisans\": \"a\",\n      \"craftspersons\": \"a\",\n      \"skilled workers\": \"a\"\n    },\n    \"id\": \"handymen-handywomen\",\n    \"inconsiderate\": {\n      \"handywomen\": \"female\",\n      \"craftswomen\": \"female\",\n      \"handymen\": \"male\",\n      \"craftsmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"the app froze\": \"a\",\n      \"the app stopped responding\": \"a\",\n      \"the app stopped responding to events\": \"a\",\n      \"the app became unresponsive\": \"a\"\n    },\n    \"id\": \"hang\",\n    \"inconsiderate\": {\n      \"hang\": \"a\",\n      \"hanged\": \"a\"\n    },\n    \"note\": \"When describing the behavior of computer software, using the word \u201Changed\u201D needlessly invokes the topic of death by self-harm or lynching.  Consider using the word \u201Cfroze\u201D or the phrase \u201Cstopped responding to events\u201D or \u201Cbecame unresponsive\u201D instead.\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"guillotine\": \"a\"\n    },\n    \"id\": \"hangman-hangwoman\",\n    \"inconsiderate\": {\n      \"hangwoman\": \"female\",\n      \"hangman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"guillotines\": \"a\"\n    },\n    \"id\": \"hangmen-hangwomen\",\n    \"inconsiderate\": {\n      \"hangwomen\": \"female\",\n      \"hangmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"cleft-lip and palate\": \"a\"\n    },\n    \"id\": \"harelip\",\n    \"inconsiderate\": {\n      \"harelip\": \"a\",\n      \"hare lip\": \"a\"\n    },\n    \"note\": \"Source: https://www.autistichoya.com/p/ableist-words-and-terms-to-avoid.html\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with a cleft-lip and palate\": \"a\"\n    },\n    \"id\": \"harelipped\",\n    \"inconsiderate\": {\n      \"harelipped\": \"a\",\n      \"cleftlipped\": \"a\"\n    },\n    \"note\": \"Sometimes it's cleft lip or palate, not both. Specify when possible. (source: https://www.autistichoya.com/p/ableist-words-and-terms-to-avoid.html)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"apostrophe\": true,\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"they\": \"a\",\n      \"it\": \"a\"\n    },\n    \"id\": \"he-she\",\n    \"inconsiderate\": {\n      \"she\": \"female\",\n      \"he\": \"male\",\n      \"she'd\": \"female\",\n      \"he'd\": \"male\",\n      \"she'll\": \"female\",\n      \"he'll\": \"male\",\n      \"she's\": \"female\",\n      \"he's\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"hard of hearing\": \"a\",\n      \"partially deaf\": \"a\",\n      \"partial hearing loss\": \"a\",\n      \"deaf\": \"a\"\n    },\n    \"id\": \"hearing-impaired\",\n    \"inconsiderate\": {\n      \"hearing impaired\": \"a\",\n      \"hearing impairment\": \"a\"\n    },\n    \"note\": \"When possible, ask the person what they prefer. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"sidekick\": \"a\"\n    },\n    \"id\": \"henchman-henchwoman\",\n    \"inconsiderate\": {\n      \"henchwoman\": \"female\",\n      \"henchman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"sidekicks\": \"a\"\n    },\n    \"id\": \"henchmen-henchwomen\",\n    \"inconsiderate\": {\n      \"henchwomen\": \"female\",\n      \"henchmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"condition\": \"when referring to a person\",\n    \"considerate\": {\n      \"their\": \"a\",\n      \"theirs\": \"a\",\n      \"them\": \"a\"\n    },\n    \"id\": \"her-him\",\n    \"inconsiderate\": {\n      \"her\": \"female\",\n      \"hers\": \"female\",\n      \"him\": \"male\",\n      \"his\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person who is intersex\": \"a\",\n      \"person\": \"a\",\n      \"intersex person\": \"a\"\n    },\n    \"id\": \"hermaphrodite\",\n    \"inconsiderate\": {\n      \"hermaphrodite\": \"a\",\n      \"pseudohermaphrodite\": \"a\",\n      \"pseudo hermaphrodite\": \"a\"\n    },\n    \"note\": \"These terms are stigmatizing to patients and their families because intersex status is more complicated than the mere presence or absence of certain gonadal tissues (source: http://www.isna.org/node/979)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"intersex\": \"a\"\n    },\n    \"id\": \"hermaphroditic\",\n    \"inconsiderate\": {\n      \"hermaphroditic\": \"a\",\n      \"pseudohermaphroditic\": \"a\",\n      \"pseudo hermaphroditic\": \"a\"\n    },\n    \"note\": \"These terms are stigmatizing to patients and their families because intersex status is more complicated than the mere presence or absence of certain gonadal tissues (source: http://www.isna.org/node/979)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"role-model\": \"a\",\n      \"mentor\": \"a\"\n    },\n    \"id\": \"hero-heroine\",\n    \"inconsiderate\": {\n      \"heroine\": \"female\",\n      \"hero\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"role-models\": \"a\",\n      \"mentor\": \"a\"\n    },\n    \"id\": \"heroes-heroines\",\n    \"inconsiderate\": {\n      \"heroines\": \"female\",\n      \"heroes\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"themselves\": \"a\",\n      \"theirself\": \"a\",\n      \"self\": \"a\"\n    },\n    \"id\": \"herself-himself\",\n    \"inconsiderate\": {\n      \"herself\": \"female\",\n      \"himself\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"transgender person\": \"a\",\n      \"person\": \"a\"\n    },\n    \"id\": \"heshe\",\n    \"inconsiderate\": {\n      \"shemale\": \"a\",\n      \"she male\": \"a\",\n      \"heshe\": \"a\",\n      \"shehe\": \"a\"\n    },\n    \"note\": \"This word dehumanizes transgender people (source: https://www.reddit.com/r/asktransgender/comments/23wbq1/is_the_term_shemale_seen_as_offensive/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"gay\": \"a\",\n      \"gay man\": \"a\",\n      \"lesbian\": \"a\",\n      \"gay person/people\": \"a\"\n    },\n    \"id\": \"homosexual\",\n    \"inconsiderate\": {\n      \"homosexual\": \"a\"\n    },\n    \"note\": \"This term has a clinical history and is used to imply LGBTQ+ people are diseased or psychologically/emotionally disordered (source: https://www.glaad.org/reference/offensive)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"couple\": \"a\"\n    },\n    \"id\": \"homosexual-couple\",\n    \"inconsiderate\": {\n      \"homosexual couple\": \"a\"\n    },\n    \"note\": \"Avoid labeling something as LGBTQ+ unless you would call the same thing \u201Cstraight\u201D (source: https://www.glaad.org/reference/offensive)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"gay marriage\": \"a\",\n      \"same-sex marriage\": \"a\"\n    },\n    \"id\": \"homosexual-marriage\",\n    \"inconsiderate\": {\n      \"homosexual marriage\": \"a\"\n    },\n    \"note\": \"Homosexual has a clinical history and is used to imply LGBTQ+ people are diseased or psychologically/emotionally disordered (source: https://www.glaad.org/reference/style)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"relationship\": \"a\"\n    },\n    \"id\": \"homosexual-relations\",\n    \"inconsiderate\": {\n      \"homosexual relations\": \"a\",\n      \"homosexual relationship\": \"a\"\n    },\n    \"note\": \"Avoid labeling something as LGBTQ+ unless you would call the same thing \u201Cstraight\u201D (source: https://www.glaad.org/reference/offensive)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"presenter\": \"a\",\n      \"entertainer\": \"a\",\n      \"emcee\": \"a\"\n    },\n    \"id\": \"host-hostess\",\n    \"inconsiderate\": {\n      \"hostess\": \"female\",\n      \"host\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"presenters\": \"a\",\n      \"entertainers\": \"a\",\n      \"emcees\": \"a\"\n    },\n    \"id\": \"hostesses-hosts\",\n    \"inconsiderate\": {\n      \"hostesses\": \"female\",\n      \"hosts\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"house worker\": \"a\",\n      \"domestic help\": \"a\"\n    },\n    \"id\": \"housemaid\",\n    \"inconsiderate\": {\n      \"housemaid\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\"\n    ],\n    \"considerate\": {\n      \"homemaker\": \"a\",\n      \"homeworker\": \"a\"\n    },\n    \"id\": \"housewife\",\n    \"inconsiderate\": {\n      \"housewife\": \"female\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\"\n    ],\n    \"considerate\": {\n      \"homemakers\": \"a\",\n      \"homeworkers\": \"a\"\n    },\n    \"id\": \"housewives\",\n    \"inconsiderate\": {\n      \"housewives\": \"female\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"partner\": \"a\",\n      \"significant other\": \"a\",\n      \"spouse\": \"a\"\n    },\n    \"id\": \"husband-wife\",\n    \"inconsiderate\": {\n      \"wife\": \"female\",\n      \"husband\": \"male\"\n    },\n    \"note\": \"Source: https://www.bustle.com/articles/108321-6-reasons-to-refer-to-your-significant-other-as-your-partner\",\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"partners\": \"a\",\n      \"significant others\": \"a\",\n      \"spouses\": \"a\"\n    },\n    \"id\": \"husbands-wives\",\n    \"inconsiderate\": {\n      \"wives\": \"female\",\n      \"husbands\": \"male\"\n    },\n    \"note\": \"Source: https://www.bustle.com/articles/108321-6-reasons-to-refer-to-your-significant-other-as-your-partner\",\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"Jewish person\": \"a\"\n    },\n    \"id\": \"hymie\",\n    \"inconsiderate\": {\n      \"shlomo\": \"a\",\n      \"shyster\": \"a\",\n      \"hymie\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"foolish\": \"a\",\n      \"ludicrous\": \"a\",\n      \"silly\": \"a\"\n    },\n    \"id\": \"idiot\",\n    \"inconsiderate\": {\n      \"feebleminded\": \"a\",\n      \"feeble minded\": \"a\",\n      \"idiot\": \"a\",\n      \"imbecile\": \"a\"\n    },\n    \"note\": \"Source: https://www.autistichoya.com/p/ableist-words-and-terms-to-avoid.html\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"enemy territory\": \"a\"\n    },\n    \"id\": \"indian-country\",\n    \"inconsiderate\": {\n      \"Indian country\": \"a\"\n    },\n    \"note\": \"Avoid using phrases referring to the genocidal United States \u201CIndian Removal\u201D laws. (source: https://newsmaven.io/indiancountrytoday/archive/off-the-reservation-a-teachable-moment-nW1d7U0JRkOszhtg8N1V1A/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"go back on one\u2019s offer\": \"a\"\n    },\n    \"id\": \"indian-give\",\n    \"inconsiderate\": {\n      \"indian give\": \"a\",\n      \"indian giver\": \"a\"\n    },\n    \"note\": \"Avoid using phrases referring to colonial stereotypes regarding Native Americans.\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"industrial civilization\": \"a\",\n      \"industrial people\": \"a\"\n    },\n    \"id\": \"industrial-man\",\n    \"inconsiderate\": {\n      \"industrial man\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"incredibly\": \"a\"\n    },\n    \"id\": \"insanely\",\n    \"inconsiderate\": {\n      \"insanely\": \"a\"\n    },\n    \"note\": \"Describe the behavior or illness without derogatory words.\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"restlessness\": \"a\",\n      \"sleeplessness\": \"a\"\n    },\n    \"id\": \"insomnia\",\n    \"inconsiderate\": {\n      \"insomnia\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person who has insomnia\": \"a\"\n    },\n    \"id\": \"insomniac\",\n    \"inconsiderate\": {\n      \"insomniac\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"people who have insomnia\": \"a\"\n    },\n    \"id\": \"insomniacs\",\n    \"inconsiderate\": {\n      \"insomniacs\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"insurance agent\": \"a\"\n    },\n    \"id\": \"insurance-man-insurance-woman\",\n    \"inconsiderate\": {\n      \"insurance woman\": \"female\",\n      \"insurance man\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"insurance agents\": \"a\"\n    },\n    \"id\": \"insurance-men-insurance-women\",\n    \"inconsiderate\": {\n      \"insurance women\": \"female\",\n      \"insurance men\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with an intellectual disability\": \"a\"\n    },\n    \"id\": \"intellectually-disabled\",\n    \"inconsiderate\": {\n      \"intellectually disabled\": \"a\",\n      \"has intellectual issues\": \"a\",\n      \"suffers from intellectual disabilities\": \"a\",\n      \"suffering from intellectual disabilities\": \"a\",\n      \"suffering from an intellectual disability\": \"a\",\n      \"afflicted with intellectual disabilities\": \"a\",\n      \"afflicted with a intellectual disability\": \"a\"\n    },\n    \"note\": \"Assumes that a person with an intellectual disability has a reduced quality of life. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"people with intellectual disabilities\": \"a\"\n    },\n    \"id\": \"intellectually-disabled-people\",\n    \"inconsiderate\": {\n      \"intellectually disabled people\": \"a\"\n    },\n    \"note\": \"Refer to the person, rather than the disability, first. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"turned off\": \"a\",\n      \"has a disability\": \"a\",\n      \"person with a disability\": \"a\",\n      \"people with disabilities\": \"a\"\n    },\n    \"id\": \"invalid\",\n    \"inconsiderate\": {\n      \"disabled\": \"a\",\n      \"invalid\": \"a\"\n    },\n    \"note\": \"Refer to the person, rather than the disability, first.\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"muslim\": \"a\",\n      \"person of Islamic faith\": \"a\",\n      \"fanatic\": \"a\",\n      \"zealot\": \"a\",\n      \"follower of islam\": \"a\",\n      \"follower of the islamic faith\": \"a\"\n    },\n    \"id\": \"islamist\",\n    \"inconsiderate\": {\n      \"islamist\": \"a\"\n    },\n    \"note\": \"Source: https://www.usnews.com/news/newsgram/articles/2013/04/04/the-associated-press-revises-islamist-another-politically-charged-term\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"muslims\": \"a\",\n      \"people of Islamic faith\": \"a\",\n      \"fanatics\": \"a\",\n      \"zealots\": \"a\"\n    },\n    \"id\": \"islamists\",\n    \"inconsiderate\": {\n      \"islamists\": \"a\"\n    },\n    \"note\": \"Source: https://www.usnews.com/news/newsgram/articles/2013/04/04/the-associated-press-revises-islamist-another-politically-charged-term\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"cleaner\": \"a\"\n    },\n    \"id\": \"janitor-janitress\",\n    \"inconsiderate\": {\n      \"cleaning lady\": \"female\",\n      \"cleaning girl\": \"female\",\n      \"cleaning woman\": \"female\",\n      \"janitress\": \"female\",\n      \"cleaning man\": \"male\",\n      \"cleaning boy\": \"male\",\n      \"janitor\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"cleaners\": \"a\",\n      \"housekeeping\": \"a\"\n    },\n    \"id\": \"janitors-janitresses\",\n    \"inconsiderate\": {\n      \"cleaning ladies\": \"female\",\n      \"cleaning girls\": \"female\",\n      \"janitresses\": \"female\",\n      \"cleaning men\": \"male\",\n      \"janitors\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"Japanese person\": \"a\",\n      \"Japanese people\": \"a\"\n    },\n    \"id\": \"japs\",\n    \"inconsiderate\": {\n      \"japs\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"journeyperson\": \"a\"\n    },\n    \"id\": \"journeyman-journeywoman\",\n    \"inconsiderate\": {\n      \"journeywoman\": \"female\",\n      \"journeyman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"journeypersons\": \"a\"\n    },\n    \"id\": \"journeymen-journeywomen\",\n    \"inconsiderate\": {\n      \"journeywomen\": \"female\",\n      \"journeymen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"id\": \"just\",\n    \"inconsiderate\": {\n      \"just\": \"a\"\n    },\n    \"note\": \"Not everything is as easy as you might think. And if it isn\u2019t easy for the reader, it can hurt. (source: https://css-tricks.com/words-avoid-educational-writing/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"ruler\": \"a\"\n    },\n    \"id\": \"king-queen\",\n    \"inconsiderate\": {\n      \"empress\": \"female\",\n      \"queen\": \"female\",\n      \"emperor\": \"male\",\n      \"king\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"power behind the throne\": \"a\"\n    },\n    \"id\": \"kingmaker-queenmaker\",\n    \"inconsiderate\": {\n      \"queenmaker\": \"female\",\n      \"kingmaker\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"rulers\": \"a\"\n    },\n    \"id\": \"kings-queens\",\n    \"inconsiderate\": {\n      \"empresses\": \"female\",\n      \"queens\": \"female\",\n      \"emperors\": \"male\",\n      \"kings\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"jumbo\": \"a\",\n      \"gigantic\": \"a\"\n    },\n    \"id\": \"kingsize-queensize\",\n    \"inconsiderate\": {\n      \"queensize\": \"female\",\n      \"kingsize\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"doctor\": \"a\"\n    },\n    \"id\": \"lady-doctor\",\n    \"inconsiderate\": {\n      \"lady doctor\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\"\n    ],\n    \"considerate\": {\n      \"courteous\": \"a\",\n      \"cultured\": \"a\"\n    },\n    \"id\": \"ladylike\",\n    \"inconsiderate\": {\n      \"ladylike\": \"female\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"boring\": \"a\",\n      \"dull\": \"a\"\n    },\n    \"id\": \"lame\",\n    \"inconsiderate\": {\n      \"lame\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"proprietors\": \"a\",\n      \"building managers\": \"a\"\n    },\n    \"id\": \"landladies-landlords\",\n    \"inconsiderate\": {\n      \"landladies\": \"female\",\n      \"landlords\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"proprietor\": \"a\",\n      \"building manager\": \"a\"\n    },\n    \"id\": \"landlady-landlord\",\n    \"inconsiderate\": {\n      \"landlady\": \"female\",\n      \"landlord\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"Latinx\": \"a\"\n    },\n    \"id\": \"latino\",\n    \"inconsiderate\": {\n      \"latino\": \"a\",\n      \"latina\": \"a\"\n    },\n    \"note\": \"Whenever possible, try to be gender inclusive.\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"civilian\": \"a\"\n    },\n    \"id\": \"layman-laywoman\",\n    \"inconsiderate\": {\n      \"laywoman\": \"female\",\n      \"layman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"civilians\": \"a\"\n    },\n    \"id\": \"laymen-laywomen\",\n    \"inconsiderate\": {\n      \"laywomen\": \"female\",\n      \"laymen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"lead\": \"a\"\n    },\n    \"id\": \"leading-lady\",\n    \"inconsiderate\": {\n      \"leading lady\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with learning disabilities\": \"a\"\n    },\n    \"id\": \"learning-disabled\",\n    \"inconsiderate\": {\n      \"learning disabled\": \"a\"\n    },\n    \"note\": \"Refer to the person, rather than the disability, first.\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"disagreeable\": \"a\",\n      \"uneducated\": \"a\",\n      \"ignorant\": \"a\",\n      \"naive\": \"a\",\n      \"inconsiderate\": \"a\"\n    },\n    \"id\": \"libtard\",\n    \"inconsiderate\": {\n      \"fucktard\": \"a\",\n      \"libtard\": \"a\",\n      \"contard\": \"a\"\n    },\n    \"note\": \"Source: https://www.autistichoya.com/p/ableist-words-and-terms-to-avoid.html\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"resolutely\": \"a\",\n      \"bravely\": \"a\"\n    },\n    \"id\": \"like-a-man\",\n    \"inconsiderate\": {\n      \"like a man\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"I haven\u2019t seen you in a long time\": \"a\",\n      \"it\u2019s been a long time\": \"a\"\n    },\n    \"id\": \"long-time-no-see\",\n    \"inconsiderate\": {\n      \"long time no hear\": \"a\",\n      \"long time no see\": \"a\"\n    },\n    \"note\": \"Avoid using phrases that implicitly mock people with limited knowledge of the English language. (source: https://www.npr.org/sections/codeswitch/2014/03/09/288300303/who-first-said-long-time-no-see-and-in-which-language)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"fanatic\": \"a\",\n      \"zealot\": \"a\",\n      \"enthusiast\": \"a\"\n    },\n    \"id\": \"madman\",\n    \"inconsiderate\": {\n      \"madman\": \"male\",\n      \"mad man\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"fanatics\": \"a\",\n      \"zealots\": \"a\",\n      \"enthusiasts\": \"a\"\n    },\n    \"id\": \"madmen\",\n    \"inconsiderate\": {\n      \"madmen\": \"male\",\n      \"mad men\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"virgin\": \"a\"\n    },\n    \"id\": \"maiden\",\n    \"inconsiderate\": {\n      \"maiden\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\"\n    ],\n    \"considerate\": {\n      \"first flight\": \"a\"\n    },\n    \"id\": \"maiden-flight\",\n    \"inconsiderate\": {\n      \"maiden flight\": \"female\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\"\n    ],\n    \"considerate\": {\n      \"birth name\": \"a\"\n    },\n    \"id\": \"maiden-name\",\n    \"inconsiderate\": {\n      \"maiden name\": \"female\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"first race\": \"a\"\n    },\n    \"id\": \"maiden-race\",\n    \"inconsiderate\": {\n      \"maiden race\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"first speech\": \"a\"\n    },\n    \"id\": \"maiden-speech\",\n    \"inconsiderate\": {\n      \"maiden speech\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\"\n    ],\n    \"considerate\": {\n      \"first voyage\": \"a\"\n    },\n    \"id\": \"maiden-voyage\",\n    \"inconsiderate\": {\n      \"maiden voyage\": \"female\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"improve\": \"a\"\n    },\n    \"id\": \"make-*-great-again\",\n    \"inconsiderate\": {\n      \"make * great again\": \"a\",\n      \"make * * great again\": \"a\",\n      \"make * * * great again\": \"a\",\n      \"make * * * * great again\": \"a\",\n      \"make * * * * * great again\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"staff a desk\": \"a\"\n    },\n    \"id\": \"man-a-desk\",\n    \"inconsiderate\": {\n      \"man a desk\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"strong enough\": \"a\"\n    },\n    \"id\": \"man-enough\",\n    \"inconsiderate\": {\n      \"man enough\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"ordinary citizen\": \"a\",\n      \"typical person\": \"a\",\n      \"average person\": \"a\"\n    },\n    \"id\": \"man-in-the-street\",\n    \"inconsiderate\": {\n      \"man in the street\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"dynamo\": \"a\"\n    },\n    \"id\": \"man-of-action\",\n    \"inconsiderate\": {\n      \"man of action\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"scholar\": \"a\",\n      \"writer\": \"a\",\n      \"literary figure\": \"a\"\n    },\n    \"id\": \"man-of-letters\",\n    \"inconsiderate\": {\n      \"man of letters\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"farmer\": \"a\",\n      \"rural worker\": \"a\",\n      \"grazier\": \"a\",\n      \"landowner\": \"a\",\n      \"rural community\": \"a\",\n      \"country people\": \"a\",\n      \"country folk\": \"a\"\n    },\n    \"id\": \"man-of-the-land\",\n    \"inconsiderate\": {\n      \"man of the land\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"sophisticate\": \"a\"\n    },\n    \"id\": \"man-of-the-world\",\n    \"inconsiderate\": {\n      \"man of the world\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"staff the booth\": \"a\"\n    },\n    \"id\": \"man-the-booth\",\n    \"inconsiderate\": {\n      \"man the booth\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"keep an eye on things\": \"a\",\n      \"keep shop\": \"a\",\n      \"provide coverage\": \"a\",\n      \"cover things\": \"a\",\n      \"take charge\": \"a\"\n    },\n    \"id\": \"man-the-fort\",\n    \"inconsiderate\": {\n      \"man the fort\": \"a\"\n    },\n    \"note\": \"Avoid using terms that implies colonialism/genocide against Indigenous peoples\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"answer the phones\": \"a\"\n    },\n    \"id\": \"man-the-phones\",\n    \"inconsiderate\": {\n      \"man the phones\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"adulthood\": \"a\",\n      \"personhood\": \"a\",\n      \"maturity\": \"a\"\n    },\n    \"id\": \"manhood-womanhood\",\n    \"inconsiderate\": {\n      \"womanhood\": \"female\",\n      \"masculinity\": \"male\",\n      \"manhood\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"staff hour\": \"a\",\n      \"hour of work\": \"a\"\n    },\n    \"id\": \"manhour\",\n    \"inconsiderate\": {\n      \"manhour\": \"male\",\n      \"man hour\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"staff hours\": \"a\",\n      \"hours of work\": \"a\",\n      \"hours of labor\": \"a\",\n      \"hours\": \"a\"\n    },\n    \"id\": \"manhours\",\n    \"inconsiderate\": {\n      \"manhours\": \"male\",\n      \"man hours\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"fanatic\": \"a\",\n      \"zealot\": \"a\",\n      \"enthusiast\": \"a\"\n    },\n    \"id\": \"maniac\",\n    \"inconsiderate\": {\n      \"maniac\": \"a\"\n    },\n    \"note\": \"Source: https://www.autistichoya.com/p/ableist-words-and-terms-to-avoid.html\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with schizophrenia\": \"a\"\n    },\n    \"id\": \"manic\",\n    \"inconsiderate\": {\n      \"suffers from schizophrenia\": \"a\",\n      \"suffering from schizophrenia\": \"a\",\n      \"afflicted with schizophrenia\": \"a\",\n      \"manic\": \"a\"\n    },\n    \"note\": \"Assumes a person with schizophrenia experiences a reduced quality of life. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"humankind\": \"a\"\n    },\n    \"id\": \"mankind\",\n    \"inconsiderate\": {\n      \"mankind\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"manufactured\": \"a\",\n      \"artificial\": \"a\",\n      \"synthetic\": \"a\",\n      \"machine-made\": \"a\",\n      \"constructed\": \"a\"\n    },\n    \"id\": \"manmade\",\n    \"inconsiderate\": {\n      \"manmade\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"staffed\": \"a\",\n      \"crewed\": \"a\",\n      \"piloted\": \"a\"\n    },\n    \"id\": \"manned\",\n    \"inconsiderate\": {\n      \"manned\": \"a\"\n    },\n    \"note\": \"Using gender neutral language means users will help to break up gender stereotypes.\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"human resources\": \"a\",\n      \"workforce\": \"a\",\n      \"personnel\": \"a\",\n      \"staff\": \"a\",\n      \"labor\": \"a\",\n      \"labor force\": \"a\",\n      \"staffing\": \"a\",\n      \"combat personnel\": \"a\"\n    },\n    \"id\": \"manpower\",\n    \"inconsiderate\": {\n      \"manpower\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"a faithful dog\": \"a\"\n    },\n    \"id\": \"mans-best-friend\",\n    \"inconsiderate\": {\n      \"mans best friend\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"a demanding task\": \"a\",\n      \"a big job\": \"a\"\n    },\n    \"id\": \"mansized-task\",\n    \"inconsiderate\": {\n      \"mansized task\": \"a\",\n      \"man sized task\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"shooter\": \"a\"\n    },\n    \"id\": \"marksman-markswoman\",\n    \"inconsiderate\": {\n      \"markswoman\": \"female\",\n      \"marksman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"shooters\": \"a\"\n    },\n    \"id\": \"marksmen-markswomen\",\n    \"inconsiderate\": {\n      \"markswomen\": \"female\",\n      \"marksmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"primary\": \"a\",\n      \"lead\": \"a\",\n      \"hub\": \"a\",\n      \"reference\": \"a\"\n    },\n    \"id\": \"master\",\n    \"inconsiderate\": {\n      \"master\": \"a\"\n    },\n    \"note\": \"Avoid using the term `master`; these suggestions are for the computer term, but there are better alternatives for other cases too\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"pass key\": \"a\",\n      \"original\": \"a\"\n    },\n    \"id\": \"master-key\",\n    \"inconsiderate\": {\n      \"master key\": \"a\",\n      \"master copy\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"emcee\": \"a\",\n      \"moderator\": \"a\",\n      \"convenor\": \"a\"\n    },\n    \"id\": \"master-of-ceremonies\",\n    \"inconsiderate\": {\n      \"master of ceremonies\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"grand scheme\": \"a\",\n      \"guiding principles\": \"a\"\n    },\n    \"id\": \"master-plan\",\n    \"inconsiderate\": {\n      \"master plan\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"become skilled\": \"a\"\n    },\n    \"id\": \"master-the-art\",\n    \"inconsiderate\": {\n      \"master the art\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"skilled\": \"a\",\n      \"authoritative\": \"a\",\n      \"commanding\": \"a\"\n    },\n    \"id\": \"masterful\",\n    \"inconsiderate\": {\n      \"masterful\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"genius\": \"a\",\n      \"creator\": \"a\",\n      \"instigator\": \"a\",\n      \"oversee\": \"a\",\n      \"launch\": \"a\",\n      \"originate\": \"a\"\n    },\n    \"id\": \"mastermind\",\n    \"inconsiderate\": {\n      \"mastermind\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"work of genius\": \"a\",\n      \"chef d\u2019oeuvre\": \"a\"\n    },\n    \"id\": \"masterpiece\",\n    \"inconsiderate\": {\n      \"masterpiece\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"vision\": \"a\",\n      \"comprehensive plan\": \"a\"\n    },\n    \"id\": \"masterplan\",\n    \"inconsiderate\": {\n      \"masterplan\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"primaries\": \"a\",\n      \"hubs\": \"a\",\n      \"references\": \"a\"\n    },\n    \"id\": \"masters\",\n    \"inconsiderate\": {\n      \"masters\": \"a\"\n    },\n    \"note\": \"Avoid using the term `master`; these suggestions are for the computer term, but there are better alternatives for other cases too\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"trump card\": \"a\",\n      \"stroke of genius\": \"a\"\n    },\n    \"id\": \"masterstroke\",\n    \"inconsiderate\": {\n      \"masterstroke\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"parental\": \"a\",\n      \"warm\": \"a\",\n      \"intimate\": \"a\"\n    },\n    \"id\": \"maternal-paternal\",\n    \"inconsiderate\": {\n      \"maternal\": \"female\",\n      \"paternal\": \"male\",\n      \"fraternal\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"parental\": \"a\"\n    },\n    \"id\": \"maternity-paternity\",\n    \"inconsiderate\": {\n      \"maternity\": \"female\",\n      \"paternity\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"scientists\": \"a\"\n    },\n    \"id\": \"men-of-science\",\n    \"inconsiderate\": {\n      \"men of science\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"intermediary\": \"a\",\n      \"go-between\": \"a\"\n    },\n    \"id\": \"middleman-middlewoman\",\n    \"inconsiderate\": {\n      \"middlewoman\": \"female\",\n      \"middleman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"intermediaries\": \"a\",\n      \"go-betweens\": \"a\"\n    },\n    \"id\": \"middlemen-middlewomen\",\n    \"inconsiderate\": {\n      \"middlewomen\": \"female\",\n      \"middlemen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"birthing nurse\": \"a\"\n    },\n    \"id\": \"midwife\",\n    \"inconsiderate\": {\n      \"midwife\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"milk person\": \"a\"\n    },\n    \"id\": \"milkman-milkwoman\",\n    \"inconsiderate\": {\n      \"milkwoman\": \"female\",\n      \"milkman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"milk people\": \"a\"\n    },\n    \"id\": \"milkmen-milkwomen\",\n    \"inconsiderate\": {\n      \"milkwomen\": \"female\",\n      \"milkmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"whine\": \"a\",\n      \"complain\": \"a\",\n      \"cry\": \"a\"\n    },\n    \"id\": \"moan\",\n    \"inconsiderate\": {\n      \"bitch\": \"a\",\n      \"moan\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"whining\": \"a\",\n      \"complaining\": \"a\",\n      \"crying\": \"a\"\n    },\n    \"id\": \"moaning\",\n    \"inconsiderate\": {\n      \"bitching\": \"a\",\n      \"moaning\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"modern civilization\": \"a\",\n      \"modern people\": \"a\"\n    },\n    \"id\": \"modern-man\",\n    \"inconsiderate\": {\n      \"modern man\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with Down Syndrome\": \"a\"\n    },\n    \"id\": \"mongoloid\",\n    \"inconsiderate\": {\n      \"mongoloid\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\"\n    ],\n    \"considerate\": {\n      \"loving\": \"a\",\n      \"warm\": \"a\",\n      \"nurturing\": \"a\"\n    },\n    \"id\": \"motherly\",\n    \"inconsiderate\": {\n      \"motherly\": \"female\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\"\n    ],\n    \"considerate\": {\n      \"ms.\": \"a\"\n    },\n    \"id\": \"mrs-\",\n    \"inconsiderate\": {\n      \"miss.\": \"female\",\n      \"mrs.\": \"female\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person who has multiple sclerosis\": \"a\"\n    },\n    \"id\": \"multiple-sclerosis-victim\",\n    \"inconsiderate\": {\n      \"suffers from multiple sclerosis\": \"a\",\n      \"suffering from multiple sclerosis\": \"a\",\n      \"victim of multiple sclerosis\": \"a\",\n      \"multiple sclerosis victim\": \"a\",\n      \"afflicted with multiple sclerosis\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"dissatisfied\": \"a\",\n      \"frustrated\": \"a\"\n    },\n    \"id\": \"natives-are-restless\",\n    \"inconsiderate\": {\n      \"natives are restless\": \"a\",\n      \"natives are becoming restless\": \"a\",\n      \"natives are getting restless\": \"a\",\n      \"natives are growing restless\": \"a\"\n    },\n    \"note\": \"Avoid using phrases referring to colonial stereotypes regarding indigenous peoples. (source: https://tvtropes.org/pmwiki/pmwiki.php/Main/TheNativesAreRestless)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"nibling\": \"a\",\n      \"sibling\u2019s child\": \"a\"\n    },\n    \"id\": \"nephew-niece\",\n    \"inconsiderate\": {\n      \"niece\": \"female\",\n      \"nephew\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"niblings\": \"a\",\n      \"sibling\u2019s children\": \"a\"\n    },\n    \"id\": \"nephews-nieces\",\n    \"inconsiderate\": {\n      \"nieces\": \"female\",\n      \"nephews\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"anchor\": \"a\",\n      \"journalist\": \"a\"\n    },\n    \"id\": \"newsman-newswoman\",\n    \"inconsiderate\": {\n      \"newswoman\": \"female\",\n      \"newspaperwoman\": \"female\",\n      \"anchorwoman\": \"female\",\n      \"newsman\": \"male\",\n      \"newspaperman\": \"male\",\n      \"anchorman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"anchors\": \"a\",\n      \"journalists\": \"a\"\n    },\n    \"id\": \"newsmen-newswomen\",\n    \"inconsiderate\": {\n      \"newswomen\": \"female\",\n      \"newspaperwomen\": \"female\",\n      \"anchorwomen\": \"female\",\n      \"newsmen\": \"male\",\n      \"newspapermen\": \"male\",\n      \"anchormen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"unoccupied territory\": \"a\",\n      \"wasteland\": \"a\",\n      \"deathtrap\": \"a\"\n    },\n    \"id\": \"no-mans-land\",\n    \"inconsiderate\": {\n      \"no mans land\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"noble\": \"a\"\n    },\n    \"id\": \"nobleman-noblewoman\",\n    \"inconsiderate\": {\n      \"noblewoman\": \"female\",\n      \"nobleman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"nobles\": \"a\"\n    },\n    \"id\": \"noblemen-noblewomen\",\n    \"inconsiderate\": {\n      \"noblewomen\": \"female\",\n      \"noblemen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person of color\": \"a\",\n      \"people of color\": \"a\"\n    },\n    \"id\": \"nonwhite\",\n    \"inconsiderate\": {\n      \"nonwhite\": \"a\",\n      \"non white\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"rude\": \"a\",\n      \"malicious\": \"a\",\n      \"mean\": \"a\",\n      \"disgusting\": \"a\",\n      \"incredible\": \"a\",\n      \"vile\": \"a\",\n      \"person with symptoms of mental illness\": \"a\",\n      \"person with mental illness\": \"a\",\n      \"person with symptoms of a mental disorder\": \"a\",\n      \"person with a mental disorder\": \"a\"\n    },\n    \"id\": \"nuts\",\n    \"inconsiderate\": {\n      \"batshit\": \"a\",\n      \"psycho\": \"a\",\n      \"crazy\": \"a\",\n      \"delirious\": \"a\",\n      \"insane\": \"a\",\n      \"insanity\": \"a\",\n      \"loony\": \"a\",\n      \"lunacy\": \"a\",\n      \"lunatic\": \"a\",\n      \"mentally ill\": \"a\",\n      \"psychopathology\": \"a\",\n      \"mental defective\": \"a\",\n      \"moron\": \"a\",\n      \"moronic\": \"a\",\n      \"nuts\": \"a\",\n      \"mental case\": \"a\",\n      \"mental\": \"a\"\n    },\n    \"note\": \"Describe the behavior or illness without derogatory words. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"id\": \"obvious\",\n    \"inconsiderate\": {\n      \"obvious\": \"a\",\n      \"obviously\": \"a\"\n    },\n    \"note\": \"Not everything is as obvious as you might think. And if it isn\u2019t obvious to the reader, it can hurt. (source: https://css-tricks.com/words-avoid-educational-writing/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"has an anxiety disorder\": \"a\",\n      \"obsessive\": \"a\",\n      \"pedantic\": \"a\",\n      \"niggly\": \"a\",\n      \"picky\": \"a\"\n    },\n    \"id\": \"ocd\",\n    \"inconsiderate\": {\n      \"neurotic\": \"a\",\n      \"ocd\": \"a\",\n      \"o.c.d\": \"a\",\n      \"o.c.d.\": \"a\"\n    },\n    \"note\": \"Only use terms describing mental illness when referring to a professionally diagnosed medical condition. (source: https://english.stackexchange.com/questions/247550/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"id\": \"of-course\",\n    \"inconsiderate\": {\n      \"of course\": \"a\"\n    },\n    \"note\": \"If it\u2019s self-evident then maybe you don\u2019t need to describe it. If it isn\u2019t, don\u2019t say it. (source: https://css-tricks.com/words-avoid-educational-writing/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"disobey\": \"a\",\n      \"endure\": \"a\",\n      \"object to\": \"a\",\n      \"oppose\": \"a\",\n      \"resist\": \"a\"\n    },\n    \"id\": \"off-reserve\",\n    \"inconsiderate\": {\n      \"jump the reservation\": \"a\",\n      \"off reserve\": \"a\",\n      \"off the reservation\": \"a\"\n    },\n    \"note\": \"Avoid using phrases referring to the genocidal United States \u201CIndian Removal\u201D laws. (source: http://blog.nativepartnership.org/off-the-reservation/,https://www.wsj.com/articles/off-the-reservation-is-a-phrase-with-a-dark-past-1462552837,https://www.npr.org/sections/codeswitch/2014/06/29/326690947/should-saying-someone-is-off-the-reservation-be-off-limits,https://nowtoronto.com/news/native-references-and-terms-that-are-offensive-to-indigenous-people/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"administrative staff\": \"a\"\n    },\n    \"id\": \"office-girls\",\n    \"inconsiderate\": {\n      \"office girls\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"notary\": \"a\",\n      \"consumer advocate\": \"a\",\n      \"trouble shooter\": \"a\",\n      \"omsbudperson\": \"a\",\n      \"mediator\": \"a\"\n    },\n    \"id\": \"ombudsman-ombudswoman\",\n    \"inconsiderate\": {\n      \"ombudswoman\": \"female\",\n      \"ombudsman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"notaries\": \"a\",\n      \"omsbudpersons\": \"a\",\n      \"omsbudpeople\": \"a\",\n      \"mediators\": \"a\"\n    },\n    \"id\": \"ombudsmen-ombudswomen\",\n    \"inconsiderate\": {\n      \"ombudswomen\": \"female\",\n      \"ombudsmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"defend\": \"a\"\n    },\n    \"id\": \"on-the-warpath\",\n    \"inconsiderate\": {\n      \"circle the wagons\": \"a\",\n      \"on the warpath\": \"a\"\n    },\n    \"note\": \"Avoid using phrases referring to colonial stereotypes regarding Native Americans. (source: https://idioms.thefreedictionary.com/circle+the+wagons,https://idioms.thefreedictionary.com/go+on+the+warpath)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"upstaging\": \"a\",\n      \"competitiveness\": \"a\"\n    },\n    \"id\": \"oneupmanship\",\n    \"inconsiderate\": {\n      \"oneupmanship\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"Asian person\": \"a\"\n    },\n    \"id\": \"oriental\",\n    \"inconsiderate\": {\n      \"oriental\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"Asian people\": \"a\"\n    },\n    \"id\": \"orientals\",\n    \"inconsiderate\": {\n      \"orientals\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"own person\": \"a\"\n    },\n    \"id\": \"own-man-own-woman\",\n    \"inconsiderate\": {\n      \"own woman\": \"female\",\n      \"own man\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"fit of terror\": \"a\",\n      \"scare\": \"a\"\n    },\n    \"id\": \"panic-attack\",\n    \"inconsiderate\": {\n      \"panic attack\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with paraplegia\": \"a\"\n    },\n    \"id\": \"paraplegic\",\n    \"inconsiderate\": {\n      \"paraplegic\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"Filipinos\": \"a\",\n      \"Filipino people\": \"a\"\n    },\n    \"id\": \"pinoys\",\n    \"inconsiderate\": {\n      \"pinoys\": \"a\",\n      \"pinays\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"poet\": \"a\"\n    },\n    \"id\": \"poetess\",\n    \"inconsiderate\": {\n      \"poetess\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"officers\": \"a\",\n      \"police officers\": \"a\"\n    },\n    \"id\": \"policemen-policewomen\",\n    \"inconsiderate\": {\n      \"policewomen\": \"female\",\n      \"policemen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"mail carrier\": \"a\",\n      \"letter carrier\": \"a\",\n      \"postal worker\": \"a\"\n    },\n    \"id\": \"postman-postwoman\",\n    \"inconsiderate\": {\n      \"postwoman\": \"female\",\n      \"mailwoman\": \"female\",\n      \"postman\": \"male\",\n      \"mailman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"mail carriers\": \"a\",\n      \"letter carriers\": \"a\",\n      \"postal workers\": \"a\"\n    },\n    \"id\": \"postmen-postwomen\",\n    \"inconsiderate\": {\n      \"postwomen\": \"female\",\n      \"mailwomen\": \"female\",\n      \"postmen\": \"male\",\n      \"mailmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"conference\": \"a\",\n      \"gathering\": \"a\",\n      \"meeting\": \"a\"\n    },\n    \"id\": \"powwow\",\n    \"inconsiderate\": {\n      \"pow wow\": \"a\",\n      \"powwow\": \"a\"\n    },\n    \"note\": \"Avoid casually using this term, which refers to traditional indigenous celebration ceremonies that were banned by genocidal laws in the United States and Canada \u2014 Native people died fighting for this right. (source: https://twitter.com/chadloder/status/1203507070772793345,http://nativeappropriations.com/2012/09/paul-frank-offends-every-native-person-on-the-planet-with-fashion-night-out-dream-catchin-pow-wow.html,https://www.britannica.com/topic/powwow,https://nowtoronto.com/news/native-references-and-terms-that-are-offensive-to-indigenous-people/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"heir\": \"a\"\n    },\n    \"id\": \"prince-princess\",\n    \"inconsiderate\": {\n      \"princess\": \"female\",\n      \"prince\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"heirs\": \"a\"\n    },\n    \"id\": \"princes-princesses\",\n    \"inconsiderate\": {\n      \"princesses\": \"female\",\n      \"princes\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with a psychotic condition\": \"a\",\n      \"person with psychosis\": \"a\"\n    },\n    \"id\": \"psychotic\",\n    \"inconsiderate\": {\n      \"psychotic\": \"a\",\n      \"suffers from psychosis\": \"a\",\n      \"suffering from psychosis\": \"a\",\n      \"afflicted with psychosis\": \"a\",\n      \"victim of psychosis\": \"a\"\n    },\n    \"note\": \"Only use terms describing mental illness when referring to a professionally diagnosed medical condition.\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"go for it\": \"a\",\n      \"take a chance\": \"a\",\n      \"make a move\": \"a\",\n      \"take action\": \"a\"\n    },\n    \"id\": \"pull-the-trigger\",\n    \"inconsiderate\": {\n      \"pull the trigger\": \"a\"\n    },\n    \"note\": \"Avoid using terms that relate to gun violence.\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with quadriplegia\": \"a\"\n    },\n    \"id\": \"quadriplegic\",\n    \"inconsiderate\": {\n      \"quadriplegic\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"railway worker\": \"a\"\n    },\n    \"id\": \"railwayman\",\n    \"inconsiderate\": {\n      \"railwayman\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"Native American\": \"a\"\n    },\n    \"id\": \"redskin\",\n    \"inconsiderate\": {\n      \"red indian\": \"a\",\n      \"pocahontas\": \"a\",\n      \"redskin\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"Native American People\": \"a\"\n    },\n    \"id\": \"redskins\",\n    \"inconsiderate\": {\n      \"red indians\": \"a\",\n      \"redskins\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"treatment\": \"a\"\n    },\n    \"id\": \"rehab\",\n    \"inconsiderate\": {\n      \"rehab\": \"a\",\n      \"detox\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"treatment center\": \"a\"\n    },\n    \"id\": \"rehab-center\",\n    \"inconsiderate\": {\n      \"rehab center\": \"a\",\n      \"detox center\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"repairer\": \"a\",\n      \"technician\": \"a\"\n    },\n    \"id\": \"repairman-repairwoman\",\n    \"inconsiderate\": {\n      \"repairwoman\": \"female\",\n      \"repairman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"technicians\": \"a\"\n    },\n    \"id\": \"repairmen-repairwomen\",\n    \"inconsiderate\": {\n      \"repairwomen\": \"female\",\n      \"repairmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"silly\": \"a\",\n      \"dullard\": \"a\",\n      \"person with Down Syndrome\": \"a\",\n      \"person with developmental disabilities\": \"a\",\n      \"delay\": \"a\",\n      \"hold back\": \"a\"\n    },\n    \"id\": \"retard\",\n    \"inconsiderate\": {\n      \"retard\": \"a\",\n      \"retarded\": \"a\",\n      \"short bus\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"sillies\": \"a\",\n      \"dullards\": \"a\",\n      \"people with developmental disabilities\": \"a\",\n      \"people with Down\u2019s Syndrome\": \"a\",\n      \"delays\": \"a\",\n      \"holds back\": \"a\"\n    },\n    \"id\": \"retards\",\n    \"inconsiderate\": {\n      \"retards\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"business executive\": \"a\",\n      \"entrepreneur\": \"a\",\n      \"business person\": \"a\",\n      \"professional\": \"a\"\n    },\n    \"id\": \"salaryman-salarywoman\",\n    \"inconsiderate\": {\n      \"businesswoman\": \"female\",\n      \"salarywoman\": \"female\",\n      \"businessman\": \"male\",\n      \"salaryman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"business executives\": \"a\",\n      \"entrepreneurs\": \"a\"\n    },\n    \"id\": \"salarymen-salarywomen\",\n    \"inconsiderate\": {\n      \"businesswomen\": \"female\",\n      \"salarywomen\": \"female\",\n      \"career girl\": \"female\",\n      \"career woman\": \"female\",\n      \"businessmen\": \"male\",\n      \"salarymen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"salesperson\": \"a\",\n      \"sales clerk\": \"a\",\n      \"sales rep\": \"a\",\n      \"sales agent\": \"a\",\n      \"sales attendant\": \"a\",\n      \"seller\": \"a\",\n      \"shop assistant\": \"a\"\n    },\n    \"id\": \"saleslady-salesman\",\n    \"inconsiderate\": {\n      \"saleswoman\": \"female\",\n      \"sales woman\": \"female\",\n      \"saleslady\": \"female\",\n      \"salesman\": \"male\",\n      \"sales man\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"sales clerks\": \"a\",\n      \"sales reps\": \"a\",\n      \"sales agents\": \"a\",\n      \"sellers\": \"a\"\n    },\n    \"id\": \"salesmen-saleswomen\",\n    \"inconsiderate\": {\n      \"saleswomen\": \"female\",\n      \"sales women\": \"female\",\n      \"salesladies\": \"female\",\n      \"salesmen\": \"male\",\n      \"sales men\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"fairy\": \"a\"\n    },\n    \"id\": \"sandman-sandwoman\",\n    \"inconsiderate\": {\n      \"sandwoman\": \"female\",\n      \"sandman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"fairies\": \"a\"\n    },\n    \"id\": \"sandmen-sandwomen\",\n    \"inconsiderate\": {\n      \"sandwomen\": \"female\",\n      \"sandmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"correct\": \"a\",\n      \"adequate\": \"a\",\n      \"sufficient\": \"a\",\n      \"consistent\": \"a\",\n      \"valid\": \"a\",\n      \"coherent\": \"a\",\n      \"sensible\": \"a\",\n      \"reasonable\": \"a\"\n    },\n    \"id\": \"sane\",\n    \"inconsiderate\": {\n      \"sane\": \"a\"\n    },\n    \"note\": \"When describing a mathematical or programmatic value, using the word \u201Csane\u201D needlessly invokes the topic of mental health.  Consider using a domain-specific or neutral term instead.\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"check\": \"a\",\n      \"assertion\": \"a\",\n      \"validation\": \"a\",\n      \"smoke test\": \"a\"\n    },\n    \"id\": \"sanity-check\",\n    \"inconsiderate\": {\n      \"sanity check\": \"a\"\n    },\n    \"note\": \"When describing a mathematical or programmatic value, using the phrase \u201Csanity check\u201D needlessly invokes the topic of mental health.  Consider using simply \u201Ccheck\u201D, or a domain-specific or neutral term, instead.\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"simple\": \"a\",\n      \"indigenous\": \"a\",\n      \"hunter-gatherer\": \"a\"\n    },\n    \"id\": \"savage\",\n    \"inconsiderate\": {\n      \"primitive\": \"a\",\n      \"savage\": \"a\",\n      \"stone age\": \"a\"\n    },\n    \"note\": \"Avoid using terms that imply a group has not changed over time and that they are inferior\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with schizophrenia\": \"a\"\n    },\n    \"id\": \"schizo\",\n    \"inconsiderate\": {\n      \"schizophrenic\": \"a\",\n      \"schizo\": \"a\"\n    },\n    \"note\": \"Only use terms describing mental illness when referring to a professionally diagnosed medical condition. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with dementia\": \"a\"\n    },\n    \"id\": \"senile\",\n    \"inconsiderate\": {\n      \"demented\": \"a\",\n      \"senile\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"soldier\": \"a\",\n      \"service representative\": \"a\"\n    },\n    \"id\": \"serviceman-servicewoman\",\n    \"inconsiderate\": {\n      \"servicewoman\": \"female\",\n      \"serviceman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"soldiers\": \"a\",\n      \"service representatives\": \"a\"\n    },\n    \"id\": \"servicemen-servicewomen\",\n    \"inconsiderate\": {\n      \"servicewomen\": \"female\",\n      \"servicemen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"sex reassignment surgery\": \"a\",\n      \"gender confirmation surgery\": \"a\"\n    },\n    \"id\": \"sex-change-operation\",\n    \"inconsiderate\": {\n      \"sex change operation\": \"a\"\n    },\n    \"note\": \"Shift focus away from the assigned sex and towards the identified gender (source: https://www.glaad.org/reference/transgender)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"transition\": \"a\",\n      \"gender confirmation surgery\": \"a\"\n    },\n    \"id\": \"sexchange\",\n    \"inconsiderate\": {\n      \"sexchange\": \"a\",\n      \"sex change\": \"a\"\n    },\n    \"note\": \"Avoid overemphasizing surgery when discussing transgender people or the process of transition - it\u2019s not a necessary component (source: https://www.glaad.org/reference/transgender)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"sexual orientation\": \"a\",\n      \"orientation\": \"a\"\n    },\n    \"id\": \"sexual-preference\",\n    \"inconsiderate\": {\n      \"sexual preference\": \"a\"\n    },\n    \"note\": \"Implies that being LGBTQ+ is a choice (source: https://www.glaad.org/reference/offensive)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"promoter\": \"a\"\n    },\n    \"id\": \"showman-showwoman\",\n    \"inconsiderate\": {\n      \"showwoman\": \"female\",\n      \"showman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"promoters\": \"a\"\n    },\n    \"id\": \"showmen-showwomen\",\n    \"inconsiderate\": {\n      \"showwomen\": \"female\",\n      \"show women\": \"female\",\n      \"showmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"id\": \"simple\",\n    \"inconsiderate\": {\n      \"simple\": \"a\",\n      \"simply\": \"a\"\n    },\n    \"note\": \"It\u2019s probably not that simple. Even if it is, you probably don\u2019t need to specifically say it. (source: https://css-tricks.com/words-avoid-educational-writing/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"secondary\": \"a\",\n      \"worker\": \"a\",\n      \"replica\": \"a\",\n      \"node\": \"a\"\n    },\n    \"id\": \"slave\",\n    \"inconsiderate\": {\n      \"slave\": \"a\"\n    },\n    \"note\": \"Avoid using the term `slave`; these suggestions are for the computer term, but there are better alternatives for other cases too\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"secondaries\": \"a\",\n      \"workers\": \"a\",\n      \"replicas\": \"a\",\n      \"nodes\": \"a\"\n    },\n    \"id\": \"slaves\",\n    \"inconsiderate\": {\n      \"slaves\": \"a\"\n    },\n    \"note\": \"Avoid using the term `slave`; these suggestions are for the computer term, but there are better alternatives for other cases too\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with a personality disorder\": \"a\",\n      \"person with psychopathic personality\": \"a\"\n    },\n    \"id\": \"sociopath\",\n    \"inconsiderate\": {\n      \"sociopath\": \"a\"\n    },\n    \"note\": \"Only use terms describing mental illness when referring to a professionally diagnosed medical condition. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"people with psychopathic personalities\": \"a\",\n      \"people with a personality disorder\": \"a\"\n    },\n    \"id\": \"sociopaths\",\n    \"inconsiderate\": {\n      \"sociopaths\": \"a\"\n    },\n    \"note\": \"Only use terms describing mental illness when referring to a professionally diagnosed medical condition. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"complex culture\": \"a\"\n    },\n    \"id\": \"sophisticated-culture\",\n    \"inconsiderate\": {\n      \"sophisticated culture\": \"a\"\n    },\n    \"note\": \"Avoid using terms that make some groups sound inferior. Replace \u201Csophisticated\u201D with a neutral term such as \u201Ccomplex\u201D\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"complex technology\": \"a\"\n    },\n    \"id\": \"sophisticated-technology\",\n    \"inconsiderate\": {\n      \"sophisticated technology\": \"a\"\n    },\n    \"note\": \"Avoid using terms that make some groups sound inferior. Replace \u201Csophisticated\u201D with a neutral term such as \u201Ccomplex\u201D\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"astronaut\": \"a\"\n    },\n    \"id\": \"spaceman-spacewoman\",\n    \"inconsiderate\": {\n      \"spacewoman\": \"female\",\n      \"spaceman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"astronauts\": \"a\"\n    },\n    \"id\": \"spacemen-spacewomen\",\n    \"inconsiderate\": {\n      \"spacewomen\": \"female\",\n      \"spacemen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"a Black person\": \"a\"\n    },\n    \"id\": \"spade\",\n    \"inconsiderate\": {\n      \"spade\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with cerebral palsy\": \"a\",\n      \"twitch\": \"a\",\n      \"flinch\": \"a\"\n    },\n    \"id\": \"spastic\",\n    \"inconsiderate\": {\n      \"spastic\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person with cerebral palsy\": \"a\",\n      \"twitch\": \"a\",\n      \"flinch\": \"a\",\n      \"hectic\": \"a\"\n    },\n    \"id\": \"spaz\",\n    \"inconsiderate\": {\n      \"spaz\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"has a disability\": \"a\",\n      \"person with a disability\": \"a\",\n      \"people with disabilities\": \"a\"\n    },\n    \"id\": \"special\",\n    \"inconsiderate\": {\n      \"challenged\": \"a\",\n      \"diffability\": \"a\",\n      \"differently abled\": \"a\",\n      \"handicapable\": \"a\",\n      \"special\": \"a\",\n      \"special needs\": \"a\",\n      \"specially abled\": \"a\"\n    },\n    \"note\": \"Euphemisms for disabilities can be infantilizing. (source: http://cdrnys.org/blog/disability-dialogue/the-disability-dialogue-4-disability-euphemisms-that-need-to-bite-the-dust/,https://www.autistichoya.com/p/ableist-words-and-terms-to-avoid.html)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"athletes\": \"a\",\n      \"Special Olympics athletes\": \"a\"\n    },\n    \"id\": \"special-olympians\",\n    \"inconsiderate\": {\n      \"special olympians\": \"a\",\n      \"special olympic athletes\": \"a\"\n    },\n    \"note\": \"When possible, use the exact discipline of sport. (source: https://media.specialolympics.org/soi/files/press-kit/2014_FactSheet_Final.pdf)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"speaker\": \"a\",\n      \"spokesperson\": \"a\",\n      \"representative\": \"a\"\n    },\n    \"id\": \"spokesman-spokeswoman\",\n    \"inconsiderate\": {\n      \"spokeswoman\": \"female\",\n      \"spokesman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"speakers\": \"a\",\n      \"spokespersons\": \"a\"\n    },\n    \"id\": \"spokesmen-spokeswomen\",\n    \"inconsiderate\": {\n      \"spokeswomen\": \"female\",\n      \"spokesmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"athlete\": \"a\",\n      \"sports person\": \"a\"\n    },\n    \"id\": \"sportsman-sportswoman\",\n    \"inconsiderate\": {\n      \"sportswoman\": \"female\",\n      \"sportsman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"fair\": \"a\",\n      \"sporting\": \"a\"\n    },\n    \"id\": \"sportsmanlike\",\n    \"inconsiderate\": {\n      \"sportsmanlike\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"fairness\": \"a\",\n      \"good humor\": \"a\",\n      \"sense of fair play\": \"a\"\n    },\n    \"id\": \"sportsmanship\",\n    \"inconsiderate\": {\n      \"sportsmanship\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"athletes\": \"a\",\n      \"sports persons\": \"a\"\n    },\n    \"id\": \"sportsmen-sportswomen\",\n    \"inconsiderate\": {\n      \"sportswomen\": \"female\",\n      \"sportsmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"stuttering\": \"a\",\n      \"disfluency of speech\": \"a\"\n    },\n    \"id\": \"stammering\",\n    \"inconsiderate\": {\n      \"stammering\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"senator\": \"a\"\n    },\n    \"id\": \"statesman-stateswoman\",\n    \"inconsiderate\": {\n      \"stateswoman\": \"female\",\n      \"statesman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"diplomatic\": \"a\"\n    },\n    \"id\": \"statesmanlike\",\n    \"inconsiderate\": {\n      \"statesmanlike\": \"a\",\n      \"statesman like\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"step-sibling\": \"a\"\n    },\n    \"id\": \"stepbrother-stepsister\",\n    \"inconsiderate\": {\n      \"stepsister\": \"female\",\n      \"stepbrother\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"step-siblings\": \"a\"\n    },\n    \"id\": \"stepbrothers-stepsisters\",\n    \"inconsiderate\": {\n      \"stepsisters\": \"female\",\n      \"stepbrothers\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"step-parent\": \"a\"\n    },\n    \"id\": \"stepdad-stepmom\",\n    \"inconsiderate\": {\n      \"stepmom\": \"female\",\n      \"stepmother\": \"female\",\n      \"stepdad\": \"male\",\n      \"stepfather\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"step-parents\": \"a\"\n    },\n    \"id\": \"stepfathers-stepmothers\",\n    \"inconsiderate\": {\n      \"stepmothers\": \"female\",\n      \"stepfathers\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"flight attendant\": \"a\"\n    },\n    \"id\": \"steward-stewardess\",\n    \"inconsiderate\": {\n      \"stewardess\": \"female\",\n      \"steward\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"flight attendants\": \"a\"\n    },\n    \"id\": \"stewardesses-stewards\",\n    \"inconsiderate\": {\n      \"stewardesses\": \"female\",\n      \"stewards\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"cattle worker\": \"a\",\n      \"farmhand\": \"a\",\n      \"drover\": \"a\"\n    },\n    \"id\": \"stockman\",\n    \"inconsiderate\": {\n      \"stockman\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"id\": \"straightforward\",\n    \"inconsiderate\": {\n      \"straight forward\": \"a\",\n      \"straightforward\": \"a\",\n      \"straight forwardly\": \"a\",\n      \"straightforwardly\": \"a\"\n    },\n    \"note\": \"It\u2019s probably not that straight forward. Even if it is, you probably don\u2019t need to specifically say it.\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"individual who has had a stroke\": \"a\"\n    },\n    \"id\": \"stroke-victim\",\n    \"inconsiderate\": {\n      \"stroke victim\": \"a\",\n      \"suffering from a stroke\": \"a\",\n      \"victim of a stroke\": \"a\"\n    },\n    \"note\": \"Refer to the person, rather than the condition, first.\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person who stutters\": \"a\"\n    },\n    \"id\": \"stutterer\",\n    \"inconsiderate\": {\n      \"stutterer\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"has a disability\": \"a\",\n      \"person with a disability\": \"a\",\n      \"people with disabilities\": \"a\"\n    },\n    \"id\": \"suffers-from-disabilities\",\n    \"inconsiderate\": {\n      \"suffers from disabilities\": \"a\",\n      \"suffering from disabilities\": \"a\",\n      \"suffering from a disability\": \"a\",\n      \"afflicted with disabilities\": \"a\",\n      \"afflicted with a disability\": \"a\"\n    },\n    \"note\": \"Assumes that a person with a disability has a reduced quality of life. (source: https://ncdj.org/style-guide/)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"person who has muscular dystrophy\": \"a\"\n    },\n    \"id\": \"suffers-from-md\",\n    \"inconsiderate\": {\n      \"suffers from muscular dystrophy\": \"a\",\n      \"afflicted with muscular dystrophy\": \"a\",\n      \"suffers from MD\": \"a\",\n      \"afflicted with MD\": \"a\"\n    },\n    \"note\": \"Refer to a person's condition as a state, not as an affliction. (source: https://ncdj.org/style-guide)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"a note from the deceased\": \"a\"\n    },\n    \"id\": \"suicide-note\",\n    \"inconsiderate\": {\n      \"suicide note\": \"a\"\n    },\n    \"note\": \"Source: https://www.afsp.org/news-events/for-the-media/reporting-on-suicide\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"rise in suicides\": \"a\"\n    },\n    \"id\": \"suicide-pact\",\n    \"inconsiderate\": {\n      \"suicide epidemic\": \"a\",\n      \"epidemic of suicides\": \"a\",\n      \"suicide pact\": \"a\"\n    },\n    \"note\": \"Using sensational words can cause copycat suicides or contagion (source: https://www.afsp.org/news-events/for-the-media/reporting-on-suicide)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"titan\": \"a\"\n    },\n    \"id\": \"superman-superwoman\",\n    \"inconsiderate\": {\n      \"superwoman\": \"female\",\n      \"superman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"titans\": \"a\"\n    },\n    \"id\": \"supermen-superwomen\",\n    \"inconsiderate\": {\n      \"superwomen\": \"female\",\n      \"supermen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"tax commissioner\": \"a\",\n      \"tax office\": \"a\",\n      \"tax collector\": \"a\"\n    },\n    \"id\": \"tax-man\",\n    \"inconsiderate\": {\n      \"tax man\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"too many chefs in the kitchen\": \"a\",\n      \"too many cooks spoil the broth\": \"a\"\n    },\n    \"id\": \"too-many-chiefs\",\n    \"inconsiderate\": {\n      \"too many chiefs\": \"a\"\n    },\n    \"note\": \"Avoid using phrases referring to colonial stereotypes regarding Native Americans. (source: https://idioms.thefreedictionary.com/too+many+chiefs+and+not+enough+Indians)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"favorite\": \"a\",\n      \"inspiration\": \"a\",\n      \"personal interest\": \"a\",\n      \"personality type\": \"a\"\n    },\n    \"id\": \"totem\",\n    \"inconsiderate\": {\n      \"animal spirit\": \"a\",\n      \"dream catcher\": \"a\",\n      \"spirit animal\": \"a\",\n      \"totem\": \"a\"\n    },\n    \"note\": \"Avoid using terms that oversimplify the complex and varied beliefs of indigenous religions. (source: https://www.worldreligionnews.com/opinion/spirit-animal-not-joke-oppression,https://www.spiralnature.com/spirituality/spirit-animal-cultural-appropriation)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"Tourette syndrome\": \"a\"\n    },\n    \"id\": \"tourettes-syndrome\",\n    \"inconsiderate\": {\n      \"tourettes syndrome\": \"a\",\n      \"tourettes disorder\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"Arabs\": \"a\",\n      \"Middle Eastern People\": \"a\"\n    },\n    \"id\": \"towel-heads\",\n    \"inconsiderate\": {\n      \"towel heads\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"service entrance\": \"a\"\n    },\n    \"id\": \"tradesmans-entrance\",\n    \"inconsiderate\": {\n      \"tradesmans entrance\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"transgender\": \"a\"\n    },\n    \"id\": \"tranny\",\n    \"inconsiderate\": {\n      \"tranny\": \"a\"\n    },\n    \"note\": \"Derogatory terms for LGBTQ+ people are offensive (source: https://www.glaad.org/reference/style)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"transgender\": \"a\"\n    },\n    \"id\": \"transgendered\",\n    \"inconsiderate\": {\n      \"transgendered\": \"a\"\n    },\n    \"note\": \"Transgender is already an adjective (source: https://www.glaad.org/reference/transgender)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"being transgender\": \"a\",\n      \"the movement for transgender equality\": \"a\"\n    },\n    \"id\": \"transgenderism\",\n    \"inconsiderate\": {\n      \"transgenderism\": \"a\"\n    },\n    \"note\": \"This is a term used by anti-transgender activists to dehumanize transgender people and reduce who they are to a condition (source: https://www.glaad.org/reference/transgender)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"transgender people\": \"a\"\n    },\n    \"id\": \"transgenders\",\n    \"inconsiderate\": {\n      \"transgenders\": \"a\"\n    },\n    \"note\": \"Transgender should be used as an adjective, not as a noun (source: https://www.glaad.org/reference/transgender)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"cross-dresser\": \"a\"\n    },\n    \"id\": \"transvestite\",\n    \"inconsiderate\": {\n      \"transvestite\": \"a\"\n    },\n    \"note\": \"Avoid using outdated / offensive terms (source: https://www.glaad.org/reference/transgender)\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"society\": \"a\",\n      \"community\": \"a\"\n    },\n    \"id\": \"tribe\",\n    \"inconsiderate\": {\n      \"tribe\": \"a\"\n    },\n    \"note\": \"Avoid using terms that make some groups sound inferior\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"inhumane\": \"a\"\n    },\n    \"id\": \"unmanly-unwomanly\",\n    \"inconsiderate\": {\n      \"unwomanly\": \"female\",\n      \"unwomenly\": \"female\",\n      \"unmanly\": \"male\",\n      \"unmenly\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"robotic\": \"a\",\n      \"automated\": \"a\"\n    },\n    \"id\": \"unmanned\",\n    \"inconsiderate\": {\n      \"unmanned\": \"a\"\n    },\n    \"note\": \"Using gender neutral language means users will help to break up gender stereotypes.\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"usher\": \"a\"\n    },\n    \"id\": \"usherette\",\n    \"inconsiderate\": {\n      \"usherette\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"sustain an injury\": \"a\",\n      \"receive an injury\": \"a\"\n    },\n    \"id\": \"victim-of-an-injury\",\n    \"inconsiderate\": {\n      \"suffer from an injury\": \"a\",\n      \"suffers from an injury\": \"a\",\n      \"suffering from an injury\": \"a\",\n      \"afflicted with an injury\": \"a\",\n      \"victim of an injury\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"sustain injuries\": \"a\",\n      \"receive injuries\": \"a\"\n    },\n    \"id\": \"victim-of-injuries\",\n    \"inconsiderate\": {\n      \"suffer from injuries\": \"a\",\n      \"suffers from injuries\": \"a\",\n      \"suffering from injuries\": \"a\",\n      \"afflicted with injuries\": \"a\",\n      \"victim of injuries\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"polio\": \"a\",\n      \"person who had polio\": \"a\"\n    },\n    \"id\": \"victim-of-polio\",\n    \"inconsiderate\": {\n      \"infantile paralysis\": \"a\",\n      \"suffers from polio\": \"a\",\n      \"suffering from polio\": \"a\",\n      \"suffering from a polio\": \"a\",\n      \"afflicted with polio\": \"a\",\n      \"afflicted with a polio\": \"a\",\n      \"victim of polio\": \"a\"\n    },\n    \"note\": \"Source: https://ncdj.org/style-guide/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"foolish\": \"a\",\n      \"ludicrous\": \"a\",\n      \"unintelligent\": \"a\"\n    },\n    \"id\": \"wacko\",\n    \"inconsiderate\": {\n      \"simpleton\": \"a\",\n      \"stupid\": \"a\",\n      \"wacko\": \"a\",\n      \"whacko\": \"a\",\n      \"low iq\": \"a\"\n    },\n    \"note\": \"Source: http://www.mmonjejr.com/2014/02/deconstructing-stupid.html\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"server\": \"a\"\n    },\n    \"id\": \"waiter-waitress\",\n    \"inconsiderate\": {\n      \"waitress\": \"female\",\n      \"waiter\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"servers\": \"a\"\n    },\n    \"id\": \"waiters-waitresses\",\n    \"inconsiderate\": {\n      \"waitresses\": \"female\",\n      \"waiters\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"watcher\": \"a\"\n    },\n    \"id\": \"watchman-watchwoman\",\n    \"inconsiderate\": {\n      \"watchwoman\": \"female\",\n      \"watchman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"watchers\": \"a\"\n    },\n    \"id\": \"watchmen-watchwomen\",\n    \"inconsiderate\": {\n      \"watchwomen\": \"female\",\n      \"watchmen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"weather forecaster\": \"a\",\n      \"meteorologist\": \"a\"\n    },\n    \"id\": \"weatherman-weatherwoman\",\n    \"inconsiderate\": {\n      \"weatherwoman\": \"female\",\n      \"weatherman\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"weather forecasters\": \"a\",\n      \"meteorologists\": \"a\"\n    },\n    \"id\": \"weathermen-weatherwomen\",\n    \"inconsiderate\": {\n      \"weatherwomen\": \"female\",\n      \"weathermen\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"uses a wheelchair\": \"a\"\n    },\n    \"id\": \"wheelchair-bound\",\n    \"inconsiderate\": {\n      \"confined to a wheelchair\": \"a\",\n      \"bound to a wheelchair\": \"a\",\n      \"restricted to a wheelchair\": \"a\",\n      \"wheelchair bound\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"ethical hacker\": \"a\",\n      \"security researcher\": \"a\"\n    },\n    \"id\": \"whitehat\",\n    \"inconsiderate\": {\n      \"whitehat\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"passlist\": \"a\",\n      \"alrightlist\": \"a\",\n      \"safelist\": \"a\",\n      \"allow list\": \"a\"\n    },\n    \"id\": \"whitelist\",\n    \"inconsiderate\": {\n      \"whitelist\": \"a\",\n      \"white list\": \"a\"\n    },\n    \"note\": \"Replace racially-charged language with more accurate and inclusive words\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"passlisted\": \"a\",\n      \"alrightlisted\": \"a\",\n      \"safelisted\": \"a\",\n      \"allow-listed\": \"a\"\n    },\n    \"id\": \"whitelisted\",\n    \"inconsiderate\": {\n      \"whitelisted\": \"a\"\n    },\n    \"note\": \"Replace racially-charged language with more accurate and inclusive words\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"passlisting\": \"a\",\n      \"alrightlisting\": \"a\",\n      \"safelisting\": \"a\",\n      \"allow-listing\": \"a\"\n    },\n    \"id\": \"whitelisting\",\n    \"inconsiderate\": {\n      \"whitelisting\": \"a\"\n    },\n    \"note\": \"Replace racially-charged language with more accurate and inclusive words\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"bereaved\": \"a\"\n    },\n    \"id\": \"widow-widower\",\n    \"inconsiderate\": {\n      \"widow\": \"female\",\n      \"widows\": \"female\",\n      \"widower\": \"male\",\n      \"widowers\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"tank top\": \"a\",\n      \"sleeveless undershirt\": \"a\"\n    },\n    \"id\": \"wifebeater\",\n    \"inconsiderate\": {\n      \"wife beater\": \"a\",\n      \"wifebeater\": \"a\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"lawyer\": \"a\"\n    },\n    \"id\": \"woman-lawyer\",\n    \"inconsiderate\": {\n      \"woman lawyer\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"painter\": \"a\"\n    },\n    \"id\": \"woman-painter\",\n    \"inconsiderate\": {\n      \"woman painter\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"a\"\n    ],\n    \"considerate\": {\n      \"wage or salary earning woman\": \"a\",\n      \"two-income family\": \"a\"\n    },\n    \"id\": \"working-wife\",\n    \"inconsiderate\": {\n      \"working mother\": \"a\",\n      \"working wife\": \"a\"\n    },\n    \"note\": \"Source: https://radyananda.wordpress.com/2009/06/06/nonsexist-alternative-language-handbook-for-conscious-writers/\",\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"worker\": \"a\",\n      \"wage earner\": \"a\",\n      \"taxpayer\": \"a\"\n    },\n    \"id\": \"workman-workwoman\",\n    \"inconsiderate\": {\n      \"workwoman\": \"female\",\n      \"working woman\": \"female\",\n      \"workman\": \"male\",\n      \"working man\": \"male\"\n    },\n    \"type\": \"or\"\n  },\n  {\n    \"categories\": [\n      \"male\"\n    ],\n    \"considerate\": {\n      \"quality construction\": \"a\",\n      \"expertise\": \"a\"\n    },\n    \"id\": \"workmanship\",\n    \"inconsiderate\": {\n      \"workmanship\": \"male\"\n    },\n    \"type\": \"basic\"\n  },\n  {\n    \"categories\": [\n      \"female\",\n      \"male\"\n    ],\n    \"considerate\": {\n      \"workers\": \"a\"\n    },\n    \"id\": \"workmen-workwomen\",\n    \"inconsiderate\": {\n      \"workwomen\": \"female\",\n      \"workmen\": \"male\"\n    },\n    \"type\": \"or\"\n  }\n]\n", "/**\n * @typedef {import('./create-plugin.js').Options} Options\n */\n\nimport {createPlugin} from './create-plugin.js'\nimport {patterns} from './patterns-en.js'\n\nconst retextEquality = createPlugin(patterns, 'en')\n\nexport default retextEquality\n", "/**\n * @packageDocumentation\n * Shared helpers for linting natural-language source comments.\n */\n\nimport {\n    AST_TOKEN_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { arrayFirst, arrayJoin, isDefined, setHas } from \"ts-extras\";\n\n/** Absolute offset of comment content inside its full source token. */\nconst COMMENT_CONTENT_START_OFFSET = 2;\n\n/**\n * Non-space separators for directive-style prefixes such as: istanbul ignore\n * next.\n */\nconst ignoredCommentDirectiveSeparators = new Set([\"-\", \":\"]);\n\n/**\n * Separators for rule-id and namespace prefixes such as\n * `unicorn/no-array-callback-reference`.\n */\nconst ignoredCommentNamespaceSeparators = new Set([\n    \"-\",\n    \"/\",\n    \":\",\n]);\n\n/** Directive-style prefixes that should not be linted as natural-language prose. */\nconst ignoredCommentDirectivePrefixes: readonly string[] = Object.freeze([\n    \"@ts-\",\n    \"c8\",\n    \"codecov\",\n    \"copyright\",\n    \"coveralls\",\n    \"cspell\",\n    \"eslint\",\n    \"exported\",\n    \"global\",\n    \"globals\",\n    \"ignored\",\n    \"istanbul\",\n    \"jshint\",\n    \"jslint\",\n    \"license\",\n    \"pragma\",\n    \"spell-checker:\",\n    \"ts-check\",\n    \"ts-expect-error\",\n    \"ts-ignore\",\n    \"ts-nocheck\",\n    \"tslint\",\n    \"v8\",\n]);\n\n/** Rule-id and namespace prefixes that should not be linted as prose. */\nconst ignoredCommentNamespacePrefixes: readonly string[] = Object.freeze([\n    \"@docusaurus\",\n    \"@eslint\",\n    \"@react\",\n    \"@typescript-eslint\",\n    \"boundaries\",\n    \"depend\",\n    \"deprecation\",\n    \"etc\",\n    \"ex\",\n    \"functional\",\n    \"import\",\n    \"import-x\",\n    \"import-zod\",\n    \"jcoreio\",\n    \"jsdoc\",\n    \"jsx\",\n    \"jsx-a11y\",\n    \"loadable-imports\",\n    \"math\",\n    \"metamask\",\n    \"microsoft\",\n    \"n\",\n    \"neverthrow\",\n    \"no-constructor-bind\",\n    \"no-explicit-type-exports\",\n    \"no-function-declare-after-return\",\n    \"no-lookahead-lookbehind-regexp\",\n    \"no-non-null-asserted-nullish-coalescing\",\n    \"no-non-null-asserted-optional-chain\",\n    \"no-secrets\",\n    \"no-unary-plus\",\n    \"no-unawaited-dot-catch-throw\",\n    \"no-unnecessary-type-assertion\",\n    \"no-unsanitized\",\n    \"no-unsafe-optional-chaining\",\n    \"no-use-extend-native\",\n    \"nyc\",\n    \"observers\",\n    \"perfectionist\",\n    \"prefer-arrow\",\n    \"prettier\",\n    \"promise\",\n    \"react\",\n    \"react-hooks\",\n    \"react-hooks-addons\",\n    \"redos\",\n    \"regexp\",\n    \"require-jsdoc\",\n    \"safe-jsx\",\n    \"security\",\n    \"sonarjs\",\n    \"sort-class-members\",\n    \"sort-destructure-keys\",\n    \"sort-keys-fix\",\n    \"sql-template\",\n    \"ssr-friendly\",\n    \"styled-components-a11y\",\n    \"switch-case\",\n    \"total-functions\",\n    \"tsdoc\",\n    \"unicorn\",\n    \"unused-imports\",\n    \"usememo-recommendations\",\n    \"validate-jsx-nesting\",\n    \"write-good-comments\",\n    \"xss\",\n]);\n\n/**\n * Prefix families for comments that should be ignored rather than linted as\n * prose.\n */\nexport type IgnoredCommentPrefixes = Readonly<{\n    directive: readonly string[];\n    namespace: readonly string[];\n}>;\n\n/**\n * Prefix families for comments that should be ignored rather than linted as\n * prose.\n */\nexport const ignoredCommentPrefixes: IgnoredCommentPrefixes = Object.freeze({\n    directive: ignoredCommentDirectivePrefixes,\n    namespace: ignoredCommentNamespacePrefixes,\n});\n\n/** Check whether a comment starts with an ignored directive or rule namespace. */\nconst hasIgnoredPrefixStart = (\n    commentText: string,\n    prefix: string,\n    separators: ReadonlySet<string>,\n    allowWhitespaceSeparator: boolean\n): boolean => {\n    if (!commentText.startsWith(prefix)) {\n        return false;\n    }\n\n    const nextCharacter = commentText[prefix.length];\n\n    return (\n        !isDefined(nextCharacter) ||\n        (allowWhitespaceSeparator && /\\s/v.test(nextCharacter)) ||\n        setHas(separators, nextCharacter)\n    );\n};\n\n/** Leading JSDoc-style decoration to neutralize in block comments. */\nconst blockCommentDecorationPattern = /^[\\t\\v\\f ]*\\*(?:[\\t ]|$)/v;\n\n/**\n * Determine whether a comment should be ignored entirely.\n *\n * @param commentText - Trimmed comment text after block-comment normalization.\n *\n * @returns `true` when the comment is a directive or empty.\n */\nexport const isIgnoredCommentText = (commentText: string): boolean => {\n    if (commentText.length === 0) {\n        return true;\n    }\n\n    const normalizedCommentText = commentText.toLowerCase();\n\n    if (\n        ignoredCommentDirectivePrefixes.some((prefix) =>\n            hasIgnoredPrefixStart(\n                normalizedCommentText,\n                prefix,\n                ignoredCommentDirectiveSeparators,\n                true\n            )\n        )\n    ) {\n        return true;\n    }\n\n    return ignoredCommentNamespacePrefixes.some((prefix) =>\n        hasIgnoredPrefixStart(\n            normalizedCommentText,\n            prefix,\n            ignoredCommentNamespaceSeparators,\n            false\n        )\n    );\n};\n\n/**\n * Neutralize decorative block-comment prefixes while preserving source offsets.\n *\n * @param comment - Source comment token.\n *\n * @returns Lint text with stable indexing relative to `comment.value`.\n */\nexport const createCommentLintText = (\n    comment: Readonly<TSESTree.Comment>\n): string => {\n    // eslint-disable-next-line unicorn/prefer-spread -- String spread is blocked by @typescript-eslint/no-misused-spread.\n    const characters = Array.from(comment.value);\n\n    const replaceRangeWithSpaces = (\n        startIndex: number,\n        endIndex: number\n    ): void => {\n        for (let index = startIndex; index < endIndex; index += 1) {\n            if (characters[index] !== \"\\r\" && characters[index] !== \"\\n\") {\n                characters[index] = \" \";\n            }\n        }\n    };\n\n    replaceRangeWithSpaces(\n        0,\n        comment.value.length - comment.value.trimStart().length\n    );\n    replaceRangeWithSpaces(\n        comment.value.trimEnd().length,\n        comment.value.length\n    );\n\n    if (comment.type !== AST_TOKEN_TYPES.Block) {\n        return arrayJoin(characters, \"\");\n    }\n\n    let lineStartIndex = 0;\n\n    while (lineStartIndex <= comment.value.length) {\n        const carriageReturnIndex = comment.value.indexOf(\"\\r\", lineStartIndex);\n        const lineFeedIndex = comment.value.indexOf(\"\\n\", lineStartIndex);\n        let lineEndIndex = comment.value.length;\n\n        if (carriageReturnIndex !== -1) {\n            lineEndIndex = Math.min(lineEndIndex, carriageReturnIndex);\n        }\n\n        if (lineFeedIndex !== -1) {\n            lineEndIndex = Math.min(lineEndIndex, lineFeedIndex);\n        }\n\n        const lineText = comment.value.slice(lineStartIndex, lineEndIndex);\n        const decorationMatch = blockCommentDecorationPattern.exec(lineText);\n\n        if (isDefined(decorationMatch?.[0])) {\n            replaceRangeWithSpaces(\n                lineStartIndex,\n                lineStartIndex + decorationMatch[0].length\n            );\n        }\n\n        if (lineEndIndex >= comment.value.length) {\n            break;\n        }\n\n        const lineBreakLength =\n            comment.value[lineEndIndex] === \"\\r\" &&\n            comment.value[lineEndIndex + 1] === \"\\n\"\n                ? 2\n                : 1;\n        lineStartIndex = lineEndIndex + lineBreakLength;\n    }\n\n    return arrayJoin(characters, \"\");\n};\n\n/**\n * Convert a comment-relative text span into an ESLint source location.\n *\n * @param comment - Source comment token.\n * @param sourceCode - Source code utility object.\n * @param startOffset - Inclusive start offset within `comment.value`.\n * @param endOffset - Exclusive end offset within `comment.value`.\n *\n * @returns ESLint location for the requested span.\n */\nexport const createCommentValueSourceLocation = (\n    comment: Readonly<TSESTree.Comment>,\n    sourceCode: Readonly<TSESLint.SourceCode>,\n    startOffset: number,\n    endOffset: number\n): TSESLint.AST.SourceLocation => {\n    const safeStartOffset = Math.max(startOffset, 0);\n    const safeEndOffset = Math.min(\n        Math.max(endOffset, safeStartOffset + 1),\n        comment.value.length\n    );\n    const commentValueStartIndex =\n        arrayFirst(comment.range) + COMMENT_CONTENT_START_OFFSET;\n\n    return {\n        end: sourceCode.getLocFromIndex(commentValueStartIndex + safeEndOffset),\n        start: sourceCode.getLocFromIndex(\n            commentValueStartIndex + safeStartOffset\n        ),\n    };\n};\n", "/**\n * @packageDocumentation\n * Helpers for normalizing nested default exports across ESM and CJS interop.\n */\n\nimport { objectHasOwn } from \"ts-extras\";\n\n/**\n * Unwrap nested `.default` layers that can appear when ESM-only unified plugins\n * are loaded through CommonJS interop.\n *\n * @param value - Imported module or value.\n *\n * @returns The innermost default export when one exists, otherwise the original\n *   value.\n */\nexport const resolveDefaultExport = <T>(value: T): T => {\n    if (\n        typeof value === \"object\" &&\n        value !== null &&\n        objectHasOwn(value, \"default\")\n    ) {\n        const defaultValue = Reflect.get(value, \"default\") as T;\n\n        return resolveDefaultExport(defaultValue);\n    }\n\n    return value;\n};\n", "/**\n * @import {Code} from 'micromark-util-types'\n */\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function asciiControl(code) {\n  return (\n    // Special whitespace codes (which have negative values), C0 and Control\n    // character DEL\n    code !== null && (code < 32 || code === 127)\n  );\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/);\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownLineEnding(code) {\n  return code !== null && code < -2;\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n  return code !== null && (code < 0 || code === 32);\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownSpace(code) {\n  return code === -2 || code === -1 || code === 32;\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(/\\p{P}|\\p{S}/u);\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/);\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n *   Expression.\n * @returns {(code: Code) => boolean}\n *   Check.\n */\nfunction regexCheck(regex) {\n  return check;\n\n  /**\n   * Check whether a code matches the bound regex.\n   *\n   * @param {Code} code\n   *   Character code.\n   * @returns {boolean}\n   *   Whether the character code matches the bound regex.\n   */\n  function check(code) {\n    return code !== null && code > -1 && regex.test(String.fromCharCode(code));\n  }\n}", "// @ts-expect-error\nimport formatter from 'format'\n\nexport const fault = Object.assign(create(Error), {\n  eval: create(EvalError),\n  range: create(RangeError),\n  reference: create(ReferenceError),\n  syntax: create(SyntaxError),\n  type: create(TypeError),\n  uri: create(URIError)\n})\n\n/**\n * Create a new `EConstructor`, with the formatted `format` as a first argument.\n *\n * @template {Error} Fault\n * @template {new (reason: string) => Fault} Class\n * @param {Class} Constructor\n */\nexport function create(Constructor) {\n  /** @type {string} */\n  // @ts-expect-error\n  FormattedError.displayName = Constructor.displayName || Constructor.name\n\n  return FormattedError\n\n  /**\n   * Create an error with a printf-like formatted message.\n   *\n   * @param {string|null} [format]\n   *   Template string.\n   * @param {...unknown} values\n   *   Values to render in `format`.\n   * @returns {Fault}\n   */\n  function FormattedError(format, ...values) {\n    /** @type {string} */\n    const reason = format ? formatter(format, ...values) : format\n    return new Constructor(reason)\n  }\n}\n", "/**\n * @typedef {'toml' | 'yaml'} Preset\n *   Known name of a frontmatter style.\n *\n * @typedef Info\n *   Sequence.\n *\n *   Depending on how this structure is used, it reflects a marker or a fence.\n * @property {string} close\n *   Closing.\n * @property {string} open\n *   Opening.\n *\n * @typedef MatterProps\n *   Fields describing a kind of matter.\n * @property {string} type\n *   Node type to tokenize as.\n * @property {boolean | null | undefined} [anywhere=false]\n *   Whether matter can be found anywhere in the document, normally, only matter\n *   at the start of the document is recognized.\n *\n *   > \uD83D\uDC49 **Note**: using this is a terrible idea.\n *   > It\u2019s called frontmatter, not matter-in-the-middle or so.\n *   > This makes your markdown less portable.\n *\n * @typedef MarkerProps\n *   Marker configuration.\n * @property {Info | string} marker\n *   Character repeated 3 times, used as complete fences.\n *\n *   For example the character `'-'` will result in `'---'` being used as the\n *   fence\n *   Pass `open` and `close` to specify different characters for opening and\n *   closing fences.\n * @property {never} [fence]\n *   If `marker` is set, `fence` must not be set.\n *\n * @typedef FenceProps\n *   Fence configuration.\n * @property {Info | string} fence\n *   Complete fences.\n *\n *   This can be used when fences contain different characters or lengths\n *   other than 3.\n *   Pass `open` and `close` to interface to specify different characters for opening and\n *   closing fences.\n * @property {never} [marker]\n *   If `fence` is set, `marker` must not be set.\n *\n * @typedef {(MatterProps & FenceProps) | (MatterProps & MarkerProps)} Matter\n *   Fields describing a kind of matter.\n *\n *   > \uD83D\uDC49 **Note**: using `anywhere` is a terrible idea.\n *   > It\u2019s called frontmatter, not matter-in-the-middle or so.\n *   > This makes your markdown less portable.\n *\n *   > \uD83D\uDC49 **Note**: `marker` and `fence` are mutually exclusive.\n *   > If `marker` is set, `fence` must not be set, and vice versa.\n *\n * @typedef {Matter | Preset | Array<Matter | Preset>} Options\n *   Configuration.\n */\n\nimport {fault} from 'fault'\nconst own = {}.hasOwnProperty\nconst markers = {\n  yaml: '-',\n  toml: '+'\n}\n\n/**\n * Simplify options by normalizing them to an array of matters.\n *\n * @param {Options | null | undefined} [options='yaml']\n *   Configuration (default: `'yaml'`).\n * @returns {Array<Matter>}\n *   List of matters.\n */\nexport function toMatters(options) {\n  /** @type {Array<Matter>} */\n  const result = []\n  let index = -1\n\n  /** @type {Array<Matter | Preset>} */\n  const presetsOrMatters = Array.isArray(options)\n    ? options\n    : options\n    ? [options]\n    : ['yaml']\n  while (++index < presetsOrMatters.length) {\n    result[index] = matter(presetsOrMatters[index])\n  }\n  return result\n}\n\n/**\n * Simplify an option.\n *\n * @param {Matter | Preset} option\n *   Configuration.\n * @returns {Matter}\n *   Matter.\n */\nfunction matter(option) {\n  let result = option\n  if (typeof result === 'string') {\n    if (!own.call(markers, result)) {\n      throw fault('Missing matter definition for `%s`', result)\n    }\n    result = {\n      type: result,\n      marker: markers[result]\n    }\n  } else if (typeof result !== 'object') {\n    throw fault('Expected matter to be an object, not `%j`', result)\n  }\n  if (!own.call(result, 'type')) {\n    throw fault('Missing `type` in matter `%j`', result)\n  }\n  if (!own.call(result, 'fence') && !own.call(result, 'marker')) {\n    throw fault('Missing `marker` or `fence` in matter `%j`', result)\n  }\n  return result\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n *\n * @typedef {import('./to-matters.js').Info} Info\n * @typedef {import('./to-matters.js').Matter} Matter\n * @typedef {import('./to-matters.js').Options} Options\n */\n\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\nimport {toMatters} from './to-matters.js'\n\n/**\n * Create an extension for `micromark` to enable frontmatter syntax.\n *\n * @param {Options | null | undefined} [options='yaml']\n *   Configuration (default: `'yaml'`).\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions`, to\n *   enable frontmatter syntax.\n */\nexport function frontmatter(options) {\n  const matters = toMatters(options)\n  /** @type {ConstructRecord} */\n  const flow = {}\n  let index = -1\n  while (++index < matters.length) {\n    const matter = matters[index]\n    const code = fence(matter, 'open').charCodeAt(0)\n    const construct = createConstruct(matter)\n    const existing = flow[code]\n    if (Array.isArray(existing)) {\n      existing.push(construct)\n    } else {\n      // Never a single object, always an array.\n      flow[code] = [construct]\n    }\n  }\n  return {\n    flow\n  }\n}\n\n/**\n * @param {Matter} matter\n * @returns {Construct}\n */\nfunction createConstruct(matter) {\n  const anywhere = matter.anywhere\n  const frontmatterType = /** @type {TokenType} */ matter.type\n  const fenceType = /** @type {TokenType} */ frontmatterType + 'Fence'\n  const sequenceType = /** @type {TokenType} */ fenceType + 'Sequence'\n  const valueType = /** @type {TokenType} */ frontmatterType + 'Value'\n  const closingFenceConstruct = {\n    tokenize: tokenizeClosingFence,\n    partial: true\n  }\n\n  /**\n   * Fence to look for.\n   *\n   * @type {string}\n   */\n  let buffer\n  let bufferIndex = 0\n  return {\n    tokenize: tokenizeFrontmatter,\n    concrete: true\n  }\n\n  /**\n   * @this {TokenizeContext}\n   * @type {Tokenizer}\n   */\n  function tokenizeFrontmatter(effects, ok, nok) {\n    const self = this\n    return start\n\n    /**\n     * Start of frontmatter.\n     *\n     * ```markdown\n     * > | ---\n     *     ^\n     *   | title: \"Venus\"\n     *   | ---\n     * ```\n     *\n     * @type {State}\n     */\n    function start(code) {\n      const position = self.now()\n      if (\n        // Indent not allowed.\n        position.column === 1 &&\n        // Normally, only allowed in first line.\n        (position.line === 1 || anywhere)\n      ) {\n        buffer = fence(matter, 'open')\n        bufferIndex = 0\n        if (code === buffer.charCodeAt(bufferIndex)) {\n          effects.enter(frontmatterType)\n          effects.enter(fenceType)\n          effects.enter(sequenceType)\n          return openSequence(code)\n        }\n      }\n      return nok(code)\n    }\n\n    /**\n     * In open sequence.\n     *\n     * ```markdown\n     * > | ---\n     *     ^\n     *   | title: \"Venus\"\n     *   | ---\n     * ```\n     *\n     * @type {State}\n     */\n    function openSequence(code) {\n      if (bufferIndex === buffer.length) {\n        effects.exit(sequenceType)\n        if (markdownSpace(code)) {\n          effects.enter('whitespace')\n          return openSequenceWhitespace(code)\n        }\n        return openAfter(code)\n      }\n      if (code === buffer.charCodeAt(bufferIndex++)) {\n        effects.consume(code)\n        return openSequence\n      }\n      return nok(code)\n    }\n\n    /**\n     * In whitespace after open sequence.\n     *\n     * ```markdown\n     * > | ---\u2420\n     *        ^\n     *   | title: \"Venus\"\n     *   | ---\n     * ```\n     *\n     * @type {State}\n     */\n    function openSequenceWhitespace(code) {\n      if (markdownSpace(code)) {\n        effects.consume(code)\n        return openSequenceWhitespace\n      }\n      effects.exit('whitespace')\n      return openAfter(code)\n    }\n\n    /**\n     * After open sequence.\n     *\n     * ```markdown\n     * > | ---\n     *        ^\n     *   | title: \"Venus\"\n     *   | ---\n     * ```\n     *\n     * @type {State}\n     */\n    function openAfter(code) {\n      if (markdownLineEnding(code)) {\n        effects.exit(fenceType)\n        effects.enter('lineEnding')\n        effects.consume(code)\n        effects.exit('lineEnding')\n        // Get ready for closing fence.\n        buffer = fence(matter, 'close')\n        bufferIndex = 0\n        return effects.attempt(closingFenceConstruct, after, contentStart)\n      }\n\n      // EOF is not okay.\n      return nok(code)\n    }\n\n    /**\n     * Start of content chunk.\n     *\n     * ```markdown\n     *   | ---\n     * > | title: \"Venus\"\n     *     ^\n     *   | ---\n     * ```\n     *\n     * @type {State}\n     */\n    function contentStart(code) {\n      if (code === null || markdownLineEnding(code)) {\n        return contentEnd(code)\n      }\n      effects.enter(valueType)\n      return contentInside(code)\n    }\n\n    /**\n     * In content chunk.\n     *\n     * ```markdown\n     *   | ---\n     * > | title: \"Venus\"\n     *     ^\n     *   | ---\n     * ```\n     *\n     * @type {State}\n     */\n    function contentInside(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit(valueType)\n        return contentEnd(code)\n      }\n      effects.consume(code)\n      return contentInside\n    }\n\n    /**\n     * End of content chunk.\n     *\n     * ```markdown\n     *   | ---\n     * > | title: \"Venus\"\n     *                   ^\n     *   | ---\n     * ```\n     *\n     * @type {State}\n     */\n    function contentEnd(code) {\n      // Require a closing fence.\n      if (code === null) {\n        return nok(code)\n      }\n\n      // Can only be an eol.\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return effects.attempt(closingFenceConstruct, after, contentStart)\n    }\n\n    /**\n     * After frontmatter.\n     *\n     * ```markdown\n     *   | ---\n     *   | title: \"Venus\"\n     * > | ---\n     *        ^\n     * ```\n     *\n     * @type {State}\n     */\n    function after(code) {\n      // `code` must be eol/eof.\n      effects.exit(frontmatterType)\n      return ok(code)\n    }\n  }\n\n  /** @type {Tokenizer} */\n  function tokenizeClosingFence(effects, ok, nok) {\n    let bufferIndex = 0\n    return closeStart\n\n    /**\n     * Start of close sequence.\n     *\n     * ```markdown\n     *   | ---\n     *   | title: \"Venus\"\n     * > | ---\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function closeStart(code) {\n      if (code === buffer.charCodeAt(bufferIndex)) {\n        effects.enter(fenceType)\n        effects.enter(sequenceType)\n        return closeSequence(code)\n      }\n      return nok(code)\n    }\n\n    /**\n     * In close sequence.\n     *\n     * ```markdown\n     *   | ---\n     *   | title: \"Venus\"\n     * > | ---\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function closeSequence(code) {\n      if (bufferIndex === buffer.length) {\n        effects.exit(sequenceType)\n        if (markdownSpace(code)) {\n          effects.enter('whitespace')\n          return closeSequenceWhitespace(code)\n        }\n        return closeAfter(code)\n      }\n      if (code === buffer.charCodeAt(bufferIndex++)) {\n        effects.consume(code)\n        return closeSequence\n      }\n      return nok(code)\n    }\n\n    /**\n     * In whitespace after close sequence.\n     *\n     * ```markdown\n     * > | ---\n     *   | title: \"Venus\"\n     *   | ---\u2420\n     *        ^\n     * ```\n     *\n     * @type {State}\n     */\n    function closeSequenceWhitespace(code) {\n      if (markdownSpace(code)) {\n        effects.consume(code)\n        return closeSequenceWhitespace\n      }\n      effects.exit('whitespace')\n      return closeAfter(code)\n    }\n\n    /**\n     * After close sequence.\n     *\n     * ```markdown\n     *   | ---\n     *   | title: \"Venus\"\n     * > | ---\n     *        ^\n     * ```\n     *\n     * @type {State}\n     */\n    function closeAfter(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit(fenceType)\n        return ok(code)\n      }\n      return nok(code)\n    }\n  }\n}\n\n/**\n * @param {Matter} matter\n * @param {'close' | 'open'} prop\n * @returns {string}\n */\nfunction fence(matter, prop) {\n  return matter.marker\n    ? pick(matter.marker, prop).repeat(3)\n    : // @ts-expect-error: They\u2019re mutually exclusive.\n      pick(matter.fence, prop)\n}\n\n/**\n * @param {Info | string} schema\n * @param {'close' | 'open'} prop\n * @returns {string}\n */\nfunction pick(schema, prop) {\n  return typeof schema === 'string' ? schema : schema[prop]\n}\n", "export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it\u2019s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns\u2019 stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n", "/**\n * @typedef {import('mdast').Literal} Literal\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('micromark-extension-frontmatter').Info} Info\n * @typedef {import('micromark-extension-frontmatter').Matter} Matter\n * @typedef {import('micromark-extension-frontmatter').Options} Options\n */\n\nimport {ok as assert} from 'devlop'\nimport {toMatters} from 'micromark-extension-frontmatter'\nimport escapeStringRegexp from 'escape-string-regexp'\n\n/**\n * Create an extension for `mdast-util-from-markdown`.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown`.\n */\nexport function frontmatterFromMarkdown(options) {\n  const matters = toMatters(options)\n  /** @type {FromMarkdownExtension['enter']} */\n  const enter = {}\n  /** @type {FromMarkdownExtension['exit']} */\n  const exit = {}\n  let index = -1\n\n  while (++index < matters.length) {\n    const matter = matters[index]\n    enter[matter.type] = opener(matter)\n    exit[matter.type] = close\n    exit[matter.type + 'Value'] = value\n  }\n\n  return {enter, exit}\n}\n\n/**\n * @param {Matter} matter\n * @returns {FromMarkdownHandle} enter\n */\nfunction opener(matter) {\n  return open\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function open(token) {\n    // @ts-expect-error: custom.\n    this.enter({type: matter.type, value: ''}, token)\n    this.buffer()\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction close(token) {\n  const data = this.resume()\n  const node = this.stack[this.stack.length - 1]\n  assert('value' in node)\n  this.exit(token)\n  // Remove the initial and final eol.\n  node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction value(token) {\n  this.config.enter.data.call(this, token)\n  this.config.exit.data.call(this, token)\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown`.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown`.\n */\nexport function frontmatterToMarkdown(options) {\n  /** @type {ToMarkdownExtension['unsafe']} */\n  const unsafe = []\n  /** @type {ToMarkdownExtension['handlers']} */\n  const handlers = {}\n  const matters = toMatters(options)\n  let index = -1\n\n  while (++index < matters.length) {\n    const matter = matters[index]\n\n    // @ts-expect-error: this can add custom frontmatter nodes.\n    // Typing those is the responsibility of the end user.\n    handlers[matter.type] = handler(matter)\n\n    const open = fence(matter, 'open')\n\n    unsafe.push({\n      atBreak: true,\n      character: open.charAt(0),\n      after: escapeStringRegexp(open.charAt(1))\n    })\n  }\n\n  return {unsafe, handlers}\n}\n\n/**\n * Create a handle that can serialize a frontmatter node as markdown.\n *\n * @param {Matter} matter\n *   Structure.\n * @returns {(node: Literal) => string} enter\n *   Handler.\n */\nfunction handler(matter) {\n  const open = fence(matter, 'open')\n  const close = fence(matter, 'close')\n\n  return handle\n\n  /**\n   * Serialize a frontmatter node as markdown.\n   *\n   * @param {Literal} node\n   *   Node to serialize.\n   * @returns {string}\n   *   Serialized node.\n   */\n  function handle(node) {\n    return open + (node.value ? '\\n' + node.value : '') + '\\n' + close\n  }\n}\n\n/**\n * Get an `open` or `close` fence.\n *\n * @param {Matter} matter\n *   Structure.\n * @param {'close' | 'open'} prop\n *   Field to get.\n * @returns {string}\n *   Fence.\n */\nfunction fence(matter, prop) {\n  return matter.marker\n    ? pick(matter.marker, prop).repeat(3)\n    : // @ts-expect-error: They\u2019re mutually exclusive.\n      pick(matter.fence, prop)\n}\n\n/**\n * Take `open` or `close` fields when schema is an info object, or use the\n * given value when it is a string.\n *\n * @param {Info | string} schema\n *   Info object or value.\n * @param {'close' | 'open'} prop\n *   Field to get.\n * @returns {string}\n *   Thing to use for the opening or closing.\n */\nfunction pick(schema, prop) {\n  return typeof schema === 'string' ? schema : schema[prop]\n}\n", "/// <reference types=\"remark-parse\" />\n/// <reference types=\"remark-stringify\" />\n\n/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('micromark-extension-frontmatter').Options} Options\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\nimport {\n  frontmatterFromMarkdown,\n  frontmatterToMarkdown\n} from 'mdast-util-frontmatter'\nimport {frontmatter} from 'micromark-extension-frontmatter'\n\n/** @type {Options} */\nconst emptyOptions = 'yaml'\n\n/**\n * Add support for frontmatter.\n *\n * ###### Notes\n *\n * Doesn\u2019t parse the data inside them: create your own plugin to do that.\n *\n * @param {Options | null | undefined} [options='yaml']\n *   Configuration (default: `'yaml'`).\n * @returns {undefined}\n *   Nothing.\n */\nexport default function remarkFrontmatter(options) {\n  // @ts-expect-error: TS is wrong about `this`.\n  // eslint-disable-next-line unicorn/no-this-assignment\n  const self = /** @type {Processor} */ (this)\n  const settings = options || emptyOptions\n  const data = self.data()\n\n  const micromarkExtensions =\n    data.micromarkExtensions || (data.micromarkExtensions = [])\n  const fromMarkdownExtensions =\n    data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])\n  const toMarkdownExtensions =\n    data.toMarkdownExtensions || (data.toMarkdownExtensions = [])\n\n  micromarkExtensions.push(frontmatter(settings))\n  fromMarkdownExtensions.push(frontmatterFromMarkdown(settings))\n  toMarkdownExtensions.push(frontmatterToMarkdown(settings))\n}\n", "/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n *   Value to search in.\n * @param {string} character\n *   Character (or substring) to look for.\n * @return {number}\n *   Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n  const source = String(value)\n\n  if (typeof character !== 'string') {\n    throw new TypeError('Expected character')\n  }\n\n  let count = 0\n  let index = source.indexOf(character)\n\n  while (index !== -1) {\n    count++\n    index = source.indexOf(character, index + character.length)\n  }\n\n  return count\n}\n", "export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it\u2019s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns\u2019 stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n", "/**\n * @import {Nodes, Parents, PhrasingContent, Root, Text} from 'mdast'\n * @import {BuildVisitor, Test, VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef RegExpMatchObject\n *   Info on the match.\n * @property {number} index\n *   The index of the search at which the result was found.\n * @property {string} input\n *   A copy of the search string in the text node.\n * @property {[...Array<Parents>, Text]} stack\n *   All ancestors of the text node, where the last node is the text itself.\n *\n * @typedef {RegExp | string} Find\n *   Pattern to find.\n *\n *   Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array<FindAndReplaceTuple>} FindAndReplaceList\n *   Several find and replaces, in array form.\n *\n * @typedef {[Find, Replace?]} FindAndReplaceTuple\n *   Find and replace in tuple form.\n *\n * @typedef {ReplaceFunction | string | null | undefined} Replace\n *   Thing to replace with.\n *\n * @callback ReplaceFunction\n *   Callback called when a search matches.\n * @param {...any} parameters\n *   The parameters are the result of corresponding search expression:\n *\n *   * `value` (`string`) \u2014 whole match\n *   * `...capture` (`Array<string>`) \u2014 matches from regex capture groups\n *   * `match` (`RegExpMatchObject`) \u2014 info on the match\n * @returns {Array<PhrasingContent> | PhrasingContent | string | false | null | undefined}\n *   Thing to replace with.\n *\n *   * when `null`, `undefined`, `''`, remove the match\n *   * \u2026or when `false`, do not replace at all\n *   * \u2026or when `string`, replace with a text node of that value\n *   * \u2026or when `Node` or `Array<Node>`, replace with those nodes\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n *   Normalized find and replace.\n *\n * @typedef {Array<Pair>} Pairs\n *   All find and replaced.\n *\n * @typedef Options\n *   Configuration.\n * @property {Test | null | undefined} [ignore]\n *   Test for which nodes to ignore (optional).\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param {Nodes} tree\n *   Tree to change.\n * @param {FindAndReplaceList | FindAndReplaceTuple} list\n *   Patterns to find.\n * @param {Options | null | undefined} [options]\n *   Configuration (when `find` is not `Find`).\n * @returns {undefined}\n *   Nothing.\n */\nexport function findAndReplace(tree, list, options) {\n  const settings = options || {}\n  const ignored = convert(settings.ignore || [])\n  const pairs = toPairs(list)\n  let pairIndex = -1\n\n  while (++pairIndex < pairs.length) {\n    visitParents(tree, 'text', visitor)\n  }\n\n  /** @type {BuildVisitor<Root, 'text'>} */\n  function visitor(node, parents) {\n    let index = -1\n    /** @type {Parents | undefined} */\n    let grandparent\n\n    while (++index < parents.length) {\n      const parent = parents[index]\n      /** @type {Array<Nodes> | undefined} */\n      const siblings = grandparent ? grandparent.children : undefined\n\n      if (\n        ignored(\n          parent,\n          siblings ? siblings.indexOf(parent) : undefined,\n          grandparent\n        )\n      ) {\n        return\n      }\n\n      grandparent = parent\n    }\n\n    if (grandparent) {\n      return handler(node, parents)\n    }\n  }\n\n  /**\n   * Handle a text node which is not in an ignored parent.\n   *\n   * @param {Text} node\n   *   Text node.\n   * @param {Array<Parents>} parents\n   *   Parents.\n   * @returns {VisitorResult}\n   *   Result.\n   */\n  function handler(node, parents) {\n    const parent = parents[parents.length - 1]\n    const find = pairs[pairIndex][0]\n    const replace = pairs[pairIndex][1]\n    let start = 0\n    /** @type {Array<Nodes>} */\n    const siblings = parent.children\n    const index = siblings.indexOf(node)\n    let change = false\n    /** @type {Array<PhrasingContent>} */\n    let nodes = []\n\n    find.lastIndex = 0\n\n    let match = find.exec(node.value)\n\n    while (match) {\n      const position = match.index\n      /** @type {RegExpMatchObject} */\n      const matchObject = {\n        index: match.index,\n        input: match.input,\n        stack: [...parents, node]\n      }\n      let value = replace(...match, matchObject)\n\n      if (typeof value === 'string') {\n        value = value.length > 0 ? {type: 'text', value} : undefined\n      }\n\n      // It wasn\u2019t a match after all.\n      if (value === false) {\n        // False acts as if there was no match.\n        // So we need to reset `lastIndex`, which currently being at the end of\n        // the current match, to the beginning.\n        find.lastIndex = position + 1\n      } else {\n        if (start !== position) {\n          nodes.push({\n            type: 'text',\n            value: node.value.slice(start, position)\n          })\n        }\n\n        if (Array.isArray(value)) {\n          nodes.push(...value)\n        } else if (value) {\n          nodes.push(value)\n        }\n\n        start = position + match[0].length\n        change = true\n      }\n\n      if (!find.global) {\n        break\n      }\n\n      match = find.exec(node.value)\n    }\n\n    if (change) {\n      if (start < node.value.length) {\n        nodes.push({type: 'text', value: node.value.slice(start)})\n      }\n\n      parent.children.splice(index, 1, ...nodes)\n    } else {\n      nodes = [node]\n    }\n\n    return index + nodes.length\n  }\n}\n\n/**\n * Turn a tuple or a list of tuples into pairs.\n *\n * @param {FindAndReplaceList | FindAndReplaceTuple} tupleOrList\n *   Schema.\n * @returns {Pairs}\n *   Clean pairs.\n */\nfunction toPairs(tupleOrList) {\n  /** @type {Pairs} */\n  const result = []\n\n  if (!Array.isArray(tupleOrList)) {\n    throw new TypeError('Expected find and replace tuple or list of tuples')\n  }\n\n  /** @type {FindAndReplaceList} */\n  // @ts-expect-error: correct.\n  const list =\n    !tupleOrList[0] || Array.isArray(tupleOrList[0])\n      ? tupleOrList\n      : [tupleOrList]\n\n  let index = -1\n\n  while (++index < list.length) {\n    const tuple = list[index]\n    result.push([toExpression(tuple[0]), toFunction(tuple[1])])\n  }\n\n  return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n *   Find.\n * @returns {RegExp}\n *   Expression.\n */\nfunction toExpression(find) {\n  return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n *   Replace.\n * @returns {ReplaceFunction}\n *   Function.\n */\nfunction toFunction(replace) {\n  return typeof replace === 'function'\n    ? replace\n    : function () {\n        return replace\n      }\n}\n", "/**\n * @import {RegExpMatchObject, ReplaceFunction} from 'mdast-util-find-and-replace'\n * @import {CompileContext, Extension as FromMarkdownExtension, Handle as FromMarkdownHandle, Transform as FromMarkdownTransform} from 'mdast-util-from-markdown'\n * @import {ConstructName, Options as ToMarkdownExtension} from 'mdast-util-to-markdown'\n * @import {Link, PhrasingContent} from 'mdast'\n */\n\nimport {ccount} from 'ccount'\nimport {ok as assert} from 'devlop'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\n\n/** @type {ConstructName} */\nconst inConstruct = 'phrasing'\n/** @type {Array<ConstructName>} */\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralFromMarkdown() {\n  return {\n    transforms: [transformGfmAutolinkLiterals],\n    enter: {\n      literalAutolink: enterLiteralAutolink,\n      literalAutolinkEmail: enterLiteralAutolinkValue,\n      literalAutolinkHttp: enterLiteralAutolinkValue,\n      literalAutolinkWww: enterLiteralAutolinkValue\n    },\n    exit: {\n      literalAutolink: exitLiteralAutolink,\n      literalAutolinkEmail: exitLiteralAutolinkEmail,\n      literalAutolinkHttp: exitLiteralAutolinkHttp,\n      literalAutolinkWww: exitLiteralAutolinkWww\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralToMarkdown() {\n  return {\n    unsafe: [\n      {\n        character: '@',\n        before: '[+\\\\-.\\\\w]',\n        after: '[\\\\-.\\\\w]',\n        inConstruct,\n        notInConstruct\n      },\n      {\n        character: '.',\n        before: '[Ww]',\n        after: '[\\\\-.\\\\w]',\n        inConstruct,\n        notInConstruct\n      },\n      {\n        character: ':',\n        before: '[ps]',\n        after: '\\\\/',\n        inConstruct,\n        notInConstruct\n      }\n    ]\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolink(token) {\n  this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolinkValue(token) {\n  this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkHttp(token) {\n  this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkWww(token) {\n  this.config.exit.data.call(this, token)\n  const node = this.stack[this.stack.length - 1]\n  assert(node.type === 'link')\n  node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkEmail(token) {\n  this.config.exit.autolinkEmail.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolink(token) {\n  this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n  findAndReplace(\n    tree,\n    [\n      [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n      [/(?<=^|\\s|\\p{P}|\\p{S})([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/gu, findEmail]\n    ],\n    {ignore: ['link', 'linkReference']}\n  )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n * @returns {Array<PhrasingContent> | Link | false}\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n  let prefix = ''\n\n  // Not an expected previous character.\n  if (!previous(match)) {\n    return false\n  }\n\n  // Treat `www` as part of the domain.\n  if (/^w/i.test(protocol)) {\n    domain = protocol + domain\n    protocol = ''\n    prefix = 'http://'\n  }\n\n  if (!isCorrectDomain(domain)) {\n    return false\n  }\n\n  const parts = splitUrl(domain + path)\n\n  if (!parts[0]) return false\n\n  /** @type {Link} */\n  const result = {\n    type: 'link',\n    title: null,\n    url: prefix + protocol + parts[0],\n    children: [{type: 'text', value: protocol + parts[0]}]\n  }\n\n  if (parts[1]) {\n    return [result, {type: 'text', value: parts[1]}]\n  }\n\n  return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n * @returns {Link | false}\n */\nfunction findEmail(_, atext, label, match) {\n  if (\n    // Not an expected previous character.\n    !previous(match, true) ||\n    // Label ends in not allowed character.\n    /[-\\d_]$/.test(label)\n  ) {\n    return false\n  }\n\n  return {\n    type: 'link',\n    title: null,\n    url: 'mailto:' + atext + '@' + label,\n    children: [{type: 'text', value: atext + '@' + label}]\n  }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n  const parts = domain.split('.')\n\n  if (\n    parts.length < 2 ||\n    (parts[parts.length - 1] &&\n      (/_/.test(parts[parts.length - 1]) ||\n        !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n    (parts[parts.length - 2] &&\n      (/_/.test(parts[parts.length - 2]) ||\n        !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n  ) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string | undefined]}\n */\nfunction splitUrl(url) {\n  const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n\n  if (!trailExec) {\n    return [url, undefined]\n  }\n\n  url = url.slice(0, trailExec.index)\n\n  let trail = trailExec[0]\n  let closingParenIndex = trail.indexOf(')')\n  const openingParens = ccount(url, '(')\n  let closingParens = ccount(url, ')')\n\n  while (closingParenIndex !== -1 && openingParens > closingParens) {\n    url += trail.slice(0, closingParenIndex + 1)\n    trail = trail.slice(closingParenIndex + 1)\n    closingParenIndex = trail.indexOf(')')\n    closingParens++\n  }\n\n  return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean | null | undefined} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n  const code = match.input.charCodeAt(match.index - 1)\n\n  return (\n    (match.index === 0 ||\n      unicodeWhitespace(code) ||\n      unicodePunctuation(code)) &&\n    // If it\u2019s an email, the previous character should not be a slash.\n    (!email || code !== 47)\n  )\n}\n", "/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered \u201Cuppercase\u201D, such as U+03F4 (`\u03F4`), but if their\n * lowercase counterpart (U+03B8 (`\u03B8`)) is uppercased will result in a different\n * uppercase character (U+0398 (`\u0398`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n *   Identifier to normalize.\n * @returns {string}\n *   Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n  return value\n  // Collapse markdown whitespace.\n  .replace(/[\\t\\n\\r ]+/g, \" \")\n  // Trim.\n  .replace(/^ | $/g, '')\n  // Some characters are considered \u201Cuppercase\u201D, but if their lowercase\n  // counterpart is uppercased will result in a different uppercase\n  // character.\n  // Hence, to get that form, we perform both lower- and uppercase.\n  // Upper case makes sure keys will not interact with default prototypal\n  // methods: no method is uppercase.\n  .toLowerCase().toUpperCase();\n}", "/**\n * @import {\n *   CompileContext,\n *   Extension as FromMarkdownExtension,\n *   Handle as FromMarkdownHandle\n * } from 'mdast-util-from-markdown'\n * @import {ToMarkdownOptions} from 'mdast-util-gfm-footnote'\n * @import {\n *   Handle as ToMarkdownHandle,\n *   Map,\n *   Options as ToMarkdownExtension\n * } from 'mdast-util-to-markdown'\n * @import {FootnoteDefinition, FootnoteReference} from 'mdast'\n */\n\nimport {ok as assert} from 'devlop'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\n\nfootnoteReference.peek = footnoteReferencePeek\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCallString() {\n  this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCall(token) {\n  this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinitionLabelString() {\n  this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinition(token) {\n  this.enter(\n    {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n    token\n  )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCallString(token) {\n  const label = this.resume()\n  const node = this.stack[this.stack.length - 1]\n  assert(node.type === 'footnoteReference')\n  node.identifier = normalizeIdentifier(\n    this.sliceSerialize(token)\n  ).toLowerCase()\n  node.label = label\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCall(token) {\n  this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinitionLabelString(token) {\n  const label = this.resume()\n  const node = this.stack[this.stack.length - 1]\n  assert(node.type === 'footnoteDefinition')\n  node.identifier = normalizeIdentifier(\n    this.sliceSerialize(token)\n  ).toLowerCase()\n  node.label = label\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinition(token) {\n  this.exit(token)\n}\n\n/** @type {ToMarkdownHandle} */\nfunction footnoteReferencePeek() {\n  return '['\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\nfunction footnoteReference(node, _, state, info) {\n  const tracker = state.createTracker(info)\n  let value = tracker.move('[^')\n  const exit = state.enter('footnoteReference')\n  const subexit = state.enter('reference')\n  value += tracker.move(\n    state.safe(state.associationId(node), {after: ']', before: value})\n  )\n  subexit()\n  exit()\n  value += tracker.move(']')\n  return value\n}\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown`.\n */\nexport function gfmFootnoteFromMarkdown() {\n  return {\n    enter: {\n      gfmFootnoteCallString: enterFootnoteCallString,\n      gfmFootnoteCall: enterFootnoteCall,\n      gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n      gfmFootnoteDefinition: enterFootnoteDefinition\n    },\n    exit: {\n      gfmFootnoteCallString: exitFootnoteCallString,\n      gfmFootnoteCall: exitFootnoteCall,\n      gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n      gfmFootnoteDefinition: exitFootnoteDefinition\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @param {ToMarkdownOptions | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown`.\n */\nexport function gfmFootnoteToMarkdown(options) {\n  // To do: next major: change default.\n  let firstLineBlank = false\n\n  if (options && options.firstLineBlank) {\n    firstLineBlank = true\n  }\n\n  return {\n    handlers: {footnoteDefinition, footnoteReference},\n    // This is on by default already.\n    unsafe: [{character: '[', inConstruct: ['label', 'phrasing', 'reference']}]\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {FootnoteDefinition} node\n   */\n  function footnoteDefinition(node, _, state, info) {\n    const tracker = state.createTracker(info)\n    let value = tracker.move('[^')\n    const exit = state.enter('footnoteDefinition')\n    const subexit = state.enter('label')\n    value += tracker.move(\n      state.safe(state.associationId(node), {before: value, after: ']'})\n    )\n    subexit()\n\n    value += tracker.move(']:')\n\n    if (node.children && node.children.length > 0) {\n      tracker.shift(4)\n\n      value += tracker.move(\n        (firstLineBlank ? '\\n' : ' ') +\n          state.indentLines(\n            state.containerFlow(node, tracker.current()),\n            firstLineBlank ? mapAll : mapExceptFirst\n          )\n      )\n    }\n\n    exit()\n\n    return value\n  }\n}\n\n/** @type {Map} */\nfunction mapExceptFirst(line, index, blank) {\n  return index === 0 ? line : mapAll(line, index, blank)\n}\n\n/** @type {Map} */\nfunction mapAll(line, index, blank) {\n  return (blank ? '' : '    ') + line\n}\n", "/**\n * @typedef {import('mdast').Delete} Delete\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain strikethrough.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * Note: keep in sync with: <https://github.com/syntax-tree/mdast-util-to-markdown/blob/8ce8dbf/lib/unsafe.js#L14>\n *\n * @type {Array<ConstructName>}\n */\nconst constructsWithoutStrikethrough = [\n  'autolink',\n  'destinationLiteral',\n  'destinationRaw',\n  'reference',\n  'titleQuote',\n  'titleApostrophe'\n]\n\nhandleDelete.peek = peekDelete\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughFromMarkdown() {\n  return {\n    canContainEols: ['delete'],\n    enter: {strikethrough: enterStrikethrough},\n    exit: {strikethrough: exitStrikethrough}\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughToMarkdown() {\n  return {\n    unsafe: [\n      {\n        character: '~',\n        inConstruct: 'phrasing',\n        notInConstruct: constructsWithoutStrikethrough\n      }\n    ],\n    handlers: {delete: handleDelete}\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterStrikethrough(token) {\n  this.enter({type: 'delete', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitStrikethrough(token) {\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, state, info) {\n  const tracker = state.createTracker(info)\n  const exit = state.enter('strikethrough')\n  let value = tracker.move('~~')\n  value += state.containerPhrasing(node, {\n    ...tracker.current(),\n    before: value,\n    after: '~'\n  })\n  value += tracker.move('~~')\n  exit()\n  return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n  return '~'\n}\n", "// To do: next major: remove.\n/**\n * @typedef {Options} MarkdownTableOptions\n *   Configuration.\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [alignDelimiters=true]\n *   Whether to align the delimiters (default: `true`);\n *   they are aligned by default:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   Pass `false` to make them staggered:\n *\n *   ```markdown\n *   | Alpha | B |\n *   | - | - |\n *   | C | Delta |\n *   ```\n * @property {ReadonlyArray<string | null | undefined> | string | null | undefined} [align]\n *   How to align columns (default: `''`);\n *   one style for all columns or styles for their respective columns;\n *   each style is either `'l'` (left), `'r'` (right), or `'c'` (center);\n *   other values are treated as `''`, which doesn\u2019t place the colon in the\n *   alignment row but does align left;\n *   *only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean | null | undefined} [delimiterEnd=true]\n *   Whether to end each row with the delimiter (default: `true`).\n *\n *   > \uD83D\uDC49 **Note**: please don\u2019t use this: it could create fragile structures\n *   > that aren\u2019t understandable to some markdown parsers.\n *\n *   When `true`, there are ending delimiters:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there are no ending delimiters:\n *\n *   ```markdown\n *   | Alpha | B\n *   | ----- | -----\n *   | C     | Delta\n *   ```\n * @property {boolean | null | undefined} [delimiterStart=true]\n *   Whether to begin each row with the delimiter (default: `true`).\n *\n *   > \uD83D\uDC49 **Note**: please don\u2019t use this: it could create fragile structures\n *   > that aren\u2019t understandable to some markdown parsers.\n *\n *   When `true`, there are starting delimiters:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there are no starting delimiters:\n *\n *   ```markdown\n *   Alpha | B     |\n *   ----- | ----- |\n *   C     | Delta |\n *   ```\n * @property {boolean | null | undefined} [padding=true]\n *   Whether to add a space of padding between delimiters and cells\n *   (default: `true`).\n *\n *   When `true`, there is padding:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there is no padding:\n *\n *   ```markdown\n *   |Alpha|B    |\n *   |-----|-----|\n *   |C    |Delta|\n *   ```\n * @property {((value: string) => number) | null | undefined} [stringLength]\n *   Function to detect the length of table cell content (optional);\n *   this is used when aligning the delimiters (`|`) between table cells;\n *   full-width characters and emoji mess up delimiter alignment when viewing\n *   the markdown source;\n *   to fix this, you can pass this function,\n *   which receives the cell content and returns its \u201Cvisible\u201D size;\n *   note that what is and isn\u2019t visible depends on where the text is displayed.\n *\n *   Without such a function, the following:\n *\n *   ```js\n *   markdownTable([\n *     ['Alpha', 'Bravo'],\n *     ['\u4E2D\u6587', 'Charlie'],\n *     ['\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69', 'Delta']\n *   ])\n *   ```\n *\n *   Yields:\n *\n *   ```markdown\n *   | Alpha | Bravo |\n *   | - | - |\n *   | \u4E2D\u6587 | Charlie |\n *   | \uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69 | Delta |\n *   ```\n *\n *   With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n *   ```js\n *   import stringWidth from 'string-width'\n *\n *   markdownTable(\n *     [\n *       ['Alpha', 'Bravo'],\n *       ['\u4E2D\u6587', 'Charlie'],\n *       ['\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69', 'Delta']\n *     ],\n *     {stringLength: stringWidth}\n *   )\n *   ```\n *\n *   Yields:\n *\n *   ```markdown\n *   | Alpha | Bravo   |\n *   | ----- | ------- |\n *   | \u4E2D\u6587  | Charlie |\n *   | \uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69    | Delta   |\n *   ```\n */\n\n/**\n * @param {string} value\n *   Cell value.\n * @returns {number}\n *   Cell size.\n */\nfunction defaultStringLength(value) {\n  return value.length\n}\n\n/**\n * Generate a markdown\n * ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables))\n * table.\n *\n * @param {ReadonlyArray<ReadonlyArray<string | null | undefined>>} table\n *   Table data (matrix of strings).\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Result.\n */\nexport function markdownTable(table, options) {\n  const settings = options || {}\n  // To do: next major: change to spread.\n  const align = (settings.align || []).concat()\n  const stringLength = settings.stringLength || defaultStringLength\n  /** @type {Array<number>} Character codes as symbols for alignment per column. */\n  const alignments = []\n  /** @type {Array<Array<string>>} Cells per row. */\n  const cellMatrix = []\n  /** @type {Array<Array<number>>} Sizes of each cell per row. */\n  const sizeMatrix = []\n  /** @type {Array<number>} */\n  const longestCellByColumn = []\n  let mostCellsPerRow = 0\n  let rowIndex = -1\n\n  // This is a superfluous loop if we don\u2019t align delimiters, but otherwise we\u2019d\n  // do superfluous work when aligning, so optimize for aligning.\n  while (++rowIndex < table.length) {\n    /** @type {Array<string>} */\n    const row = []\n    /** @type {Array<number>} */\n    const sizes = []\n    let columnIndex = -1\n\n    if (table[rowIndex].length > mostCellsPerRow) {\n      mostCellsPerRow = table[rowIndex].length\n    }\n\n    while (++columnIndex < table[rowIndex].length) {\n      const cell = serialize(table[rowIndex][columnIndex])\n\n      if (settings.alignDelimiters !== false) {\n        const size = stringLength(cell)\n        sizes[columnIndex] = size\n\n        if (\n          longestCellByColumn[columnIndex] === undefined ||\n          size > longestCellByColumn[columnIndex]\n        ) {\n          longestCellByColumn[columnIndex] = size\n        }\n      }\n\n      row.push(cell)\n    }\n\n    cellMatrix[rowIndex] = row\n    sizeMatrix[rowIndex] = sizes\n  }\n\n  // Figure out which alignments to use.\n  let columnIndex = -1\n\n  if (typeof align === 'object' && 'length' in align) {\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = toAlignment(align[columnIndex])\n    }\n  } else {\n    const code = toAlignment(align)\n\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = code\n    }\n  }\n\n  // Inject the alignment row.\n  columnIndex = -1\n  /** @type {Array<string>} */\n  const row = []\n  /** @type {Array<number>} */\n  const sizes = []\n\n  while (++columnIndex < mostCellsPerRow) {\n    const code = alignments[columnIndex]\n    let before = ''\n    let after = ''\n\n    if (code === 99 /* `c` */) {\n      before = ':'\n      after = ':'\n    } else if (code === 108 /* `l` */) {\n      before = ':'\n    } else if (code === 114 /* `r` */) {\n      after = ':'\n    }\n\n    // There *must* be at least one hyphen-minus in each alignment cell.\n    let size =\n      settings.alignDelimiters === false\n        ? 1\n        : Math.max(\n            1,\n            longestCellByColumn[columnIndex] - before.length - after.length\n          )\n\n    const cell = before + '-'.repeat(size) + after\n\n    if (settings.alignDelimiters !== false) {\n      size = before.length + size + after.length\n\n      if (size > longestCellByColumn[columnIndex]) {\n        longestCellByColumn[columnIndex] = size\n      }\n\n      sizes[columnIndex] = size\n    }\n\n    row[columnIndex] = cell\n  }\n\n  // Inject the alignment row.\n  cellMatrix.splice(1, 0, row)\n  sizeMatrix.splice(1, 0, sizes)\n\n  rowIndex = -1\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (++rowIndex < cellMatrix.length) {\n    const row = cellMatrix[rowIndex]\n    const sizes = sizeMatrix[rowIndex]\n    columnIndex = -1\n    /** @type {Array<string>} */\n    const line = []\n\n    while (++columnIndex < mostCellsPerRow) {\n      const cell = row[columnIndex] || ''\n      let before = ''\n      let after = ''\n\n      if (settings.alignDelimiters !== false) {\n        const size =\n          longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n        const code = alignments[columnIndex]\n\n        if (code === 114 /* `r` */) {\n          before = ' '.repeat(size)\n        } else if (code === 99 /* `c` */) {\n          if (size % 2) {\n            before = ' '.repeat(size / 2 + 0.5)\n            after = ' '.repeat(size / 2 - 0.5)\n          } else {\n            before = ' '.repeat(size / 2)\n            after = before\n          }\n        } else {\n          after = ' '.repeat(size)\n        }\n      }\n\n      if (settings.delimiterStart !== false && !columnIndex) {\n        line.push('|')\n      }\n\n      if (\n        settings.padding !== false &&\n        // Don\u2019t add the opening space if we\u2019re not aligning and the cell is\n        // empty: there will be a closing space.\n        !(settings.alignDelimiters === false && cell === '') &&\n        (settings.delimiterStart !== false || columnIndex)\n      ) {\n        line.push(' ')\n      }\n\n      if (settings.alignDelimiters !== false) {\n        line.push(before)\n      }\n\n      line.push(cell)\n\n      if (settings.alignDelimiters !== false) {\n        line.push(after)\n      }\n\n      if (settings.padding !== false) {\n        line.push(' ')\n      }\n\n      if (\n        settings.delimiterEnd !== false ||\n        columnIndex !== mostCellsPerRow - 1\n      ) {\n        line.push('|')\n      }\n    }\n\n    lines.push(\n      settings.delimiterEnd === false\n        ? line.join('').replace(/ +$/, '')\n        : line.join('')\n    )\n  }\n\n  return lines.join('\\n')\n}\n\n/**\n * @param {string | null | undefined} [value]\n *   Value to serialize.\n * @returns {string}\n *   Result.\n */\nfunction serialize(value) {\n  return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string | null | undefined} value\n *   Value.\n * @returns {number}\n *   Alignment.\n */\nfunction toAlignment(value) {\n  const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n  return code === 67 /* `C` */ || code === 99 /* `c` */\n    ? 99 /* `c` */\n    : code === 76 /* `L` */ || code === 108 /* `l` */\n      ? 108 /* `l` */\n      : code === 82 /* `R` */ || code === 114 /* `r` */\n        ? 114 /* `r` */\n        : 0\n}\n", "/**\n * @import {Blockquote, Parents} from 'mdast'\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {Blockquote} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function blockquote(node, _, state, info) {\n  const exit = state.enter('blockquote')\n  const tracker = state.createTracker(info)\n  tracker.move('> ')\n  tracker.shift(2)\n  const value = state.indentLines(\n    state.containerFlow(node, tracker.current()),\n    map\n  )\n  exit()\n  return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n  return '>' + (blank ? '' : ' ') + line\n}\n", "/**\n * @import {ConstructName, Unsafe} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nexport function patternInScope(stack, pattern) {\n  return (\n    listInScope(stack, pattern.inConstruct, true) &&\n    !listInScope(stack, pattern.notInConstruct, false)\n  )\n}\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n  if (typeof list === 'string') {\n    list = [list]\n  }\n\n  if (!list || list.length === 0) {\n    return none\n  }\n\n  let index = -1\n\n  while (++index < list.length) {\n    if (stack.includes(list[index])) {\n      return true\n    }\n  }\n\n  return false\n}\n", "/**\n * @import {Break, Parents} from 'mdast'\n * @import {Info, State} from 'mdast-util-to-markdown'\n */\n\nimport {patternInScope} from '../util/pattern-in-scope.js'\n\n/**\n * @param {Break} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function hardBreak(_, _1, state, info) {\n  let index = -1\n\n  while (++index < state.unsafe.length) {\n    // If we can\u2019t put eols in this construct (setext headings, tables), use a\n    // space instead.\n    if (\n      state.unsafe[index].character === '\\n' &&\n      patternInScope(state.stack, state.unsafe[index])\n    ) {\n      return /[ \\t]/.test(info.before) ? '' : ' '\n    }\n  }\n\n  return '\\\\\\n'\n}\n", "/**\n * Get the count of the longest repeating streak of `substring` in `value`.\n *\n * @param {string} value\n *   Content to search in.\n * @param {string} substring\n *   Substring to look for, typically one character.\n * @returns {number}\n *   Count of most frequent adjacent `substring`s in `value`.\n */\nexport function longestStreak(value, substring) {\n  const source = String(value)\n  let index = source.indexOf(substring)\n  let expected = index\n  let count = 0\n  let max = 0\n\n  if (typeof substring !== 'string') {\n    throw new TypeError('Expected substring')\n  }\n\n  while (index !== -1) {\n    if (index === expected) {\n      if (++count > max) {\n        max = count\n      }\n    } else {\n      count = 1\n    }\n\n    expected = index + substring.length\n    index = source.indexOf(substring, expected)\n  }\n\n  return max\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Code} from 'mdast'\n */\n\n/**\n * @param {Code} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatCodeAsIndented(node, state) {\n  return Boolean(\n    state.options.fences === false &&\n      node.value &&\n      // If there\u2019s no info\u2026\n      !node.lang &&\n      // And there\u2019s a non-whitespace character\u2026\n      /[^ \\r\\n]/.test(node.value) &&\n      // And the value doesn\u2019t start or end in a blank\u2026\n      !/^[\\t ]*(?:[\\r\\n]|$)|(?:^|[\\r\\n])[\\t ]*$/.test(node.value)\n  )\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['fence'], null | undefined>}\n */\nexport function checkFence(state) {\n  const marker = state.options.fence || '`'\n\n  if (marker !== '`' && marker !== '~') {\n    throw new Error(\n      'Cannot serialize code with `' +\n        marker +\n        '` for `options.fence`, expected `` ` `` or `~`'\n    )\n  }\n\n  return marker\n}\n", "/**\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n * @import {Code, Parents} from 'mdast'\n */\n\nimport {longestStreak} from 'longest-streak'\nimport {formatCodeAsIndented} from '../util/format-code-as-indented.js'\nimport {checkFence} from '../util/check-fence.js'\n\n/**\n * @param {Code} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function code(node, _, state, info) {\n  const marker = checkFence(state)\n  const raw = node.value || ''\n  const suffix = marker === '`' ? 'GraveAccent' : 'Tilde'\n\n  if (formatCodeAsIndented(node, state)) {\n    const exit = state.enter('codeIndented')\n    const value = state.indentLines(raw, map)\n    exit()\n    return value\n  }\n\n  const tracker = state.createTracker(info)\n  const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3))\n  const exit = state.enter('codeFenced')\n  let value = tracker.move(sequence)\n\n  if (node.lang) {\n    const subexit = state.enter(`codeFencedLang${suffix}`)\n    value += tracker.move(\n      state.safe(node.lang, {\n        before: value,\n        after: ' ',\n        encode: ['`'],\n        ...tracker.current()\n      })\n    )\n    subexit()\n  }\n\n  if (node.lang && node.meta) {\n    const subexit = state.enter(`codeFencedMeta${suffix}`)\n    value += tracker.move(' ')\n    value += tracker.move(\n      state.safe(node.meta, {\n        before: value,\n        after: '\\n',\n        encode: ['`'],\n        ...tracker.current()\n      })\n    )\n    subexit()\n  }\n\n  value += tracker.move('\\n')\n\n  if (raw) {\n    value += tracker.move(raw + '\\n')\n  }\n\n  value += tracker.move(sequence)\n  exit()\n  return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n  return (blank ? '' : '    ') + line\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['quote'], null | undefined>}\n */\nexport function checkQuote(state) {\n  const marker = state.options.quote || '\"'\n\n  if (marker !== '\"' && marker !== \"'\") {\n    throw new Error(\n      'Cannot serialize title with `' +\n        marker +\n        '` for `options.quote`, expected `\"`, or `\\'`'\n    )\n  }\n\n  return marker\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Definition, Parents} from 'mdast'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\n/**\n * @param {Definition} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function definition(node, _, state, info) {\n  const quote = checkQuote(state)\n  const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n  const exit = state.enter('definition')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('[')\n  value += tracker.move(\n    state.safe(state.associationId(node), {\n      before: value,\n      after: ']',\n      ...tracker.current()\n    })\n  )\n  value += tracker.move(']: ')\n\n  subexit()\n\n  if (\n    // If there\u2019s no url, or\u2026\n    !node.url ||\n    // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node.url)\n  ) {\n    subexit = state.enter('destinationLiteral')\n    value += tracker.move('<')\n    value += tracker.move(\n      state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n    )\n    value += tracker.move('>')\n  } else {\n    // No whitespace, raw is prettier.\n    subexit = state.enter('destinationRaw')\n    value += tracker.move(\n      state.safe(node.url, {\n        before: value,\n        after: node.title ? ' ' : '\\n',\n        ...tracker.current()\n      })\n    )\n  }\n\n  subexit()\n\n  if (node.title) {\n    subexit = state.enter(`title${suffix}`)\n    value += tracker.move(' ' + quote)\n    value += tracker.move(\n      state.safe(node.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    )\n    value += tracker.move(quote)\n    subexit()\n  }\n\n  exit()\n\n  return value\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['emphasis'], null | undefined>}\n */\nexport function checkEmphasis(state) {\n  const marker = state.options.emphasis || '*'\n\n  if (marker !== '*' && marker !== '_') {\n    throw new Error(\n      'Cannot serialize emphasis with `' +\n        marker +\n        '` for `options.emphasis`, expected `*`, or `_`'\n    )\n  }\n\n  return marker\n}\n", "/**\n * Encode a code point as a character reference.\n *\n * @param {number} code\n *   Code point to encode.\n * @returns {string}\n *   Encoded character reference.\n */\nexport function encodeCharacterReference(code) {\n  return '&#x' + code.toString(16).toUpperCase() + ';'\n}\n", "/**\n * @import {Code} from 'micromark-util-types'\n */\n\nimport { markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > \uD83D\uDC49 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n *   Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n *   Group.\n */\nexport function classifyCharacter(code) {\n  if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n    return 1;\n  }\n  if (unicodePunctuation(code)) {\n    return 2;\n  }\n}", "/**\n * @import {EncodeSides} from '../types.js'\n */\n\nimport {classifyCharacter} from 'micromark-util-classify-character'\n\n/**\n * Check whether to encode (as a character reference) the characters\n * surrounding an attention run.\n *\n * Which characters are around an attention run influence whether it works or\n * not.\n *\n * See <https://github.com/orgs/syntax-tree/discussions/60> for more info.\n * See this markdown in a particular renderer to see what works:\n *\n * ```markdown\n * |                         | A (letter inside) | B (punctuation inside) | C (whitespace inside) | D (nothing inside) |\n * | ----------------------- | ----------------- | ---------------------- | --------------------- | ------------------ |\n * | 1 (letter outside)      | x*y*z             | x*.*z                  | x* *z                 | x**z               |\n * | 2 (punctuation outside) | .*y*.             | .*.*.                  | .* *.                 | .**.               |\n * | 3 (whitespace outside)  | x *y* z           | x *.* z                | x * * z               | x ** z             |\n * | 4 (nothing outside)     | *x*               | *.*                    | * *                   | **                 |\n * ```\n *\n * @param {number} outside\n *   Code point on the outer side of the run.\n * @param {number} inside\n *   Code point on the inner side of the run.\n * @param {'*' | '_'} marker\n *   Marker of the run.\n *   Underscores are handled more strictly (they form less often) than\n *   asterisks.\n * @returns {EncodeSides}\n *   Whether to encode characters.\n */\n// Important: punctuation must never be encoded.\n// Punctuation is solely used by markdown constructs.\n// And by encoding itself.\n// Encoding them will break constructs or double encode things.\nexport function encodeInfo(outside, inside, marker) {\n  const outsideKind = classifyCharacter(outside)\n  const insideKind = classifyCharacter(inside)\n\n  // Letter outside:\n  if (outsideKind === undefined) {\n    return insideKind === undefined\n      ? // Letter inside:\n        // we have to encode *both* letters for `_` as it is looser.\n        // it already forms for `*` (and GFMs `~`).\n        marker === '_'\n        ? {inside: true, outside: true}\n        : {inside: false, outside: false}\n      : insideKind === 1\n        ? // Whitespace inside: encode both (letter, whitespace).\n          {inside: true, outside: true}\n        : // Punctuation inside: encode outer (letter)\n          {inside: false, outside: true}\n  }\n\n  // Whitespace outside:\n  if (outsideKind === 1) {\n    return insideKind === undefined\n      ? // Letter inside: already forms.\n        {inside: false, outside: false}\n      : insideKind === 1\n        ? // Whitespace inside: encode both (whitespace).\n          {inside: true, outside: true}\n        : // Punctuation inside: already forms.\n          {inside: false, outside: false}\n  }\n\n  // Punctuation outside:\n  return insideKind === undefined\n    ? // Letter inside: already forms.\n      {inside: false, outside: false}\n    : insideKind === 1\n      ? // Whitespace inside: encode inner (whitespace).\n        {inside: true, outside: false}\n      : // Punctuation inside: already forms.\n        {inside: false, outside: false}\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Emphasis, Parents} from 'mdast'\n */\n\nimport {checkEmphasis} from '../util/check-emphasis.js'\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {encodeInfo} from '../util/encode-info.js'\n\nemphasis.peek = emphasisPeek\n\n/**\n * @param {Emphasis} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function emphasis(node, _, state, info) {\n  const marker = checkEmphasis(state)\n  const exit = state.enter('emphasis')\n  const tracker = state.createTracker(info)\n  const before = tracker.move(marker)\n\n  let between = tracker.move(\n    state.containerPhrasing(node, {\n      after: marker,\n      before,\n      ...tracker.current()\n    })\n  )\n  const betweenHead = between.charCodeAt(0)\n  const open = encodeInfo(\n    info.before.charCodeAt(info.before.length - 1),\n    betweenHead,\n    marker\n  )\n\n  if (open.inside) {\n    between = encodeCharacterReference(betweenHead) + between.slice(1)\n  }\n\n  const betweenTail = between.charCodeAt(between.length - 1)\n  const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker)\n\n  if (close.inside) {\n    between = between.slice(0, -1) + encodeCharacterReference(betweenTail)\n  }\n\n  const after = tracker.move(marker)\n\n  exit()\n\n  state.attentionEncodeSurroundingInfo = {\n    after: close.outside,\n    before: open.outside\n  }\n  return before + between + after\n}\n\n/**\n * @param {Emphasis} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction emphasisPeek(_, _1, state) {\n  return state.options.emphasis || '*'\n}\n", "/**\n * @typedef {import('mdast').Nodes} Nodes\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n *   Whether to use `alt` for `image`s (default: `true`).\n * @property {boolean | null | undefined} [includeHtml=true]\n *   Whether to use `value` of HTML (default: `true`).\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node\u2019s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} [value]\n *   Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Serialized `value`.\n */\nexport function toString(value, options) {\n  const settings = options || emptyOptions\n  const includeImageAlt =\n    typeof settings.includeImageAlt === 'boolean'\n      ? settings.includeImageAlt\n      : true\n  const includeHtml =\n    typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n  return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @param {boolean} includeHtml\n *   Include HTML.\n * @returns {string}\n *   Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n  if (node(value)) {\n    if ('value' in value) {\n      return value.type === 'html' && !includeHtml ? '' : value.value\n    }\n\n    if (includeImageAlt && 'alt' in value && value.alt) {\n      return value.alt\n    }\n\n    if ('children' in value) {\n      return all(value.children, includeImageAlt, includeHtml)\n    }\n  }\n\n  if (Array.isArray(value)) {\n    return all(value, includeImageAlt, includeHtml)\n  }\n\n  return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array<unknown>} values\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @param {boolean} includeHtml\n *   Include HTML.\n * @returns {string}\n *   Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n  /** @type {Array<string>} */\n  const result = []\n  let index = -1\n\n  while (++index < values.length) {\n    result[index] = one(values[index], includeImageAlt, includeHtml)\n  }\n\n  return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n *   Thing.\n * @returns {value is Nodes}\n *   Whether `value` is a node.\n */\nfunction node(value) {\n  return Boolean(value && typeof value === 'object')\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Heading} from 'mdast'\n */\n\nimport {EXIT, visit} from 'unist-util-visit'\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Heading} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatHeadingAsSetext(node, state) {\n  let literalWithBreak = false\n\n  // Look for literals with a line break.\n  // Note that this also\n  visit(node, function (node) {\n    if (\n      ('value' in node && /\\r?\\n|\\r/.test(node.value)) ||\n      node.type === 'break'\n    ) {\n      literalWithBreak = true\n      return EXIT\n    }\n  })\n\n  return Boolean(\n    (!node.depth || node.depth < 3) &&\n      toString(node) &&\n      (state.options.setext || literalWithBreak)\n  )\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Heading, Parents} from 'mdast'\n */\n\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {formatHeadingAsSetext} from '../util/format-heading-as-setext.js'\n\n/**\n * @param {Heading} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function heading(node, _, state, info) {\n  const rank = Math.max(Math.min(6, node.depth || 1), 1)\n  const tracker = state.createTracker(info)\n\n  if (formatHeadingAsSetext(node, state)) {\n    const exit = state.enter('headingSetext')\n    const subexit = state.enter('phrasing')\n    const value = state.containerPhrasing(node, {\n      ...tracker.current(),\n      before: '\\n',\n      after: '\\n'\n    })\n    subexit()\n    exit()\n\n    return (\n      value +\n      '\\n' +\n      (rank === 1 ? '=' : '-').repeat(\n        // The whole size\u2026\n        value.length -\n          // Minus the position of the character after the last EOL (or\n          // 0 if there is none)\u2026\n          (Math.max(value.lastIndexOf('\\r'), value.lastIndexOf('\\n')) + 1)\n      )\n    )\n  }\n\n  const sequence = '#'.repeat(rank)\n  const exit = state.enter('headingAtx')\n  const subexit = state.enter('phrasing')\n\n  // Note: for proper tracking, we should reset the output positions when there\n  // is no content returned, because then the space is not output.\n  // Practically, in that case, there is no content, so it doesn\u2019t matter that\n  // we\u2019ve tracked one too many characters.\n  tracker.move(sequence + ' ')\n\n  let value = state.containerPhrasing(node, {\n    before: '# ',\n    after: '\\n',\n    ...tracker.current()\n  })\n\n  if (/^[\\t ]/.test(value)) {\n    // To do: what effect has the character reference on tracking?\n    value = encodeCharacterReference(value.charCodeAt(0)) + value.slice(1)\n  }\n\n  value = value ? sequence + ' ' + value : sequence\n\n  if (state.options.closeAtx) {\n    value += ' ' + sequence\n  }\n\n  subexit()\n  exit()\n\n  return value\n}\n", "/**\n * @import {Html} from 'mdast'\n */\n\nhtml.peek = htmlPeek\n\n/**\n * @param {Html} node\n * @returns {string}\n */\nexport function html(node) {\n  return node.value || ''\n}\n\n/**\n * @returns {string}\n */\nfunction htmlPeek() {\n  return '<'\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Image, Parents} from 'mdast'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\nimage.peek = imagePeek\n\n/**\n * @param {Image} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function image(node, _, state, info) {\n  const quote = checkQuote(state)\n  const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n  const exit = state.enter('image')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('![')\n  value += tracker.move(\n    state.safe(node.alt, {before: value, after: ']', ...tracker.current()})\n  )\n  value += tracker.move('](')\n\n  subexit()\n\n  if (\n    // If there\u2019s no url but there is a title\u2026\n    (!node.url && node.title) ||\n    // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node.url)\n  ) {\n    subexit = state.enter('destinationLiteral')\n    value += tracker.move('<')\n    value += tracker.move(\n      state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n    )\n    value += tracker.move('>')\n  } else {\n    // No whitespace, raw is prettier.\n    subexit = state.enter('destinationRaw')\n    value += tracker.move(\n      state.safe(node.url, {\n        before: value,\n        after: node.title ? ' ' : ')',\n        ...tracker.current()\n      })\n    )\n  }\n\n  subexit()\n\n  if (node.title) {\n    subexit = state.enter(`title${suffix}`)\n    value += tracker.move(' ' + quote)\n    value += tracker.move(\n      state.safe(node.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    )\n    value += tracker.move(quote)\n    subexit()\n  }\n\n  value += tracker.move(')')\n  exit()\n\n  return value\n}\n\n/**\n * @returns {string}\n */\nfunction imagePeek() {\n  return '!'\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {ImageReference, Parents} from 'mdast'\n */\n\nimageReference.peek = imageReferencePeek\n\n/**\n * @param {ImageReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function imageReference(node, _, state, info) {\n  const type = node.referenceType\n  const exit = state.enter('imageReference')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('![')\n  const alt = state.safe(node.alt, {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  value += tracker.move(alt + '][')\n\n  subexit()\n  // Hide the fact that we\u2019re in phrasing, because escapes don\u2019t work.\n  const stack = state.stack\n  state.stack = []\n  subexit = state.enter('reference')\n  // Note: for proper tracking, we should reset the output positions when we end\n  // up making a `shortcut` reference, because then there is no brace output.\n  // Practically, in that case, there is no content, so it doesn\u2019t matter that\n  // we\u2019ve tracked one too many characters.\n  const reference = state.safe(state.associationId(node), {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  subexit()\n  state.stack = stack\n  exit()\n\n  if (type === 'full' || !alt || alt !== reference) {\n    value += tracker.move(reference + ']')\n  } else if (type === 'shortcut') {\n    // Remove the unwanted `[`.\n    value = value.slice(0, -1)\n  } else {\n    value += tracker.move(']')\n  }\n\n  return value\n}\n\n/**\n * @returns {string}\n */\nfunction imageReferencePeek() {\n  return '!'\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {InlineCode, Parents} from 'mdast'\n */\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @param {InlineCode} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nexport function inlineCode(node, _, state) {\n  let value = node.value || ''\n  let sequence = '`'\n  let index = -1\n\n  // If there is a single grave accent on its own in the code, use a fence of\n  // two.\n  // If there are two in a row, use one.\n  while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n    sequence += '`'\n  }\n\n  // If this is not just spaces or eols (tabs don\u2019t count), and either the\n  // first or last character are a space, eol, or tick, then pad with spaces.\n  if (\n    /[^ \\r\\n]/.test(value) &&\n    ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n  ) {\n    value = ' ' + value + ' '\n  }\n\n  // We have a potential problem: certain characters after eols could result in\n  // blocks being seen.\n  // For example, if someone injected the string `'\\n# b'`, then that would\n  // result in an ATX heading.\n  // We can\u2019t escape characters in `inlineCode`, but because eols are\n  // transformed to spaces when going from markdown to HTML anyway, we can swap\n  // them out.\n  while (++index < state.unsafe.length) {\n    const pattern = state.unsafe[index]\n    const expression = state.compilePattern(pattern)\n    /** @type {RegExpExecArray | null} */\n    let match\n\n    // Only look for `atBreak`s.\n    // Btw: note that `atBreak` patterns will always start the regex at LF or\n    // CR.\n    if (!pattern.atBreak) continue\n\n    while ((match = expression.exec(value))) {\n      let position = match.index\n\n      // Support CRLF (patterns only look for one of the characters).\n      if (\n        value.charCodeAt(position) === 10 /* `\\n` */ &&\n        value.charCodeAt(position - 1) === 13 /* `\\r` */\n      ) {\n        position--\n      }\n\n      value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n    }\n  }\n\n  return sequence + value + sequence\n}\n\n/**\n * @returns {string}\n */\nfunction inlineCodePeek() {\n  return '`'\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Link} from 'mdast'\n */\n\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Link} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatLinkAsAutolink(node, state) {\n  const raw = toString(node)\n\n  return Boolean(\n    !state.options.resourceLink &&\n      // If there\u2019s a url\u2026\n      node.url &&\n      // And there\u2019s a no title\u2026\n      !node.title &&\n      // And the content of `node` is a single text node\u2026\n      node.children &&\n      node.children.length === 1 &&\n      node.children[0].type === 'text' &&\n      // And if the url is the same as the content\u2026\n      (raw === node.url || 'mailto:' + raw === node.url) &&\n      // And that starts w/ a protocol\u2026\n      /^[a-z][a-z+.-]+:/i.test(node.url) &&\n      // And that doesn\u2019t contain ASCII control codes (character escapes and\n      // references don\u2019t work), space, or angle brackets\u2026\n      !/[\\0- <>\\u007F]/.test(node.url)\n  )\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Link, Parents} from 'mdast'\n * @import {Exit} from '../types.js'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\nimport {formatLinkAsAutolink} from '../util/format-link-as-autolink.js'\n\nlink.peek = linkPeek\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function link(node, _, state, info) {\n  const quote = checkQuote(state)\n  const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n  const tracker = state.createTracker(info)\n  /** @type {Exit} */\n  let exit\n  /** @type {Exit} */\n  let subexit\n\n  if (formatLinkAsAutolink(node, state)) {\n    // Hide the fact that we\u2019re in phrasing, because escapes don\u2019t work.\n    const stack = state.stack\n    state.stack = []\n    exit = state.enter('autolink')\n    let value = tracker.move('<')\n    value += tracker.move(\n      state.containerPhrasing(node, {\n        before: value,\n        after: '>',\n        ...tracker.current()\n      })\n    )\n    value += tracker.move('>')\n    exit()\n    state.stack = stack\n    return value\n  }\n\n  exit = state.enter('link')\n  subexit = state.enter('label')\n  let value = tracker.move('[')\n  value += tracker.move(\n    state.containerPhrasing(node, {\n      before: value,\n      after: '](',\n      ...tracker.current()\n    })\n  )\n  value += tracker.move('](')\n  subexit()\n\n  if (\n    // If there\u2019s no url but there is a title\u2026\n    (!node.url && node.title) ||\n    // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node.url)\n  ) {\n    subexit = state.enter('destinationLiteral')\n    value += tracker.move('<')\n    value += tracker.move(\n      state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n    )\n    value += tracker.move('>')\n  } else {\n    // No whitespace, raw is prettier.\n    subexit = state.enter('destinationRaw')\n    value += tracker.move(\n      state.safe(node.url, {\n        before: value,\n        after: node.title ? ' ' : ')',\n        ...tracker.current()\n      })\n    )\n  }\n\n  subexit()\n\n  if (node.title) {\n    subexit = state.enter(`title${suffix}`)\n    value += tracker.move(' ' + quote)\n    value += tracker.move(\n      state.safe(node.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    )\n    value += tracker.move(quote)\n    subexit()\n  }\n\n  value += tracker.move(')')\n\n  exit()\n  return value\n}\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nfunction linkPeek(node, _, state) {\n  return formatLinkAsAutolink(node, state) ? '<' : '['\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {LinkReference, Parents} from 'mdast'\n */\n\nlinkReference.peek = linkReferencePeek\n\n/**\n * @param {LinkReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function linkReference(node, _, state, info) {\n  const type = node.referenceType\n  const exit = state.enter('linkReference')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('[')\n  const text = state.containerPhrasing(node, {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  value += tracker.move(text + '][')\n\n  subexit()\n  // Hide the fact that we\u2019re in phrasing, because escapes don\u2019t work.\n  const stack = state.stack\n  state.stack = []\n  subexit = state.enter('reference')\n  // Note: for proper tracking, we should reset the output positions when we end\n  // up making a `shortcut` reference, because then there is no brace output.\n  // Practically, in that case, there is no content, so it doesn\u2019t matter that\n  // we\u2019ve tracked one too many characters.\n  const reference = state.safe(state.associationId(node), {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  subexit()\n  state.stack = stack\n  exit()\n\n  if (type === 'full' || !text || text !== reference) {\n    value += tracker.move(reference + ']')\n  } else if (type === 'shortcut') {\n    // Remove the unwanted `[`.\n    value = value.slice(0, -1)\n  } else {\n    value += tracker.move(']')\n  }\n\n  return value\n}\n\n/**\n * @returns {string}\n */\nfunction linkReferencePeek() {\n  return '['\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bullet'], null | undefined>}\n */\nexport function checkBullet(state) {\n  const marker = state.options.bullet || '*'\n\n  if (marker !== '*' && marker !== '+' && marker !== '-') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        marker +\n        '` for `options.bullet`, expected `*`, `+`, or `-`'\n    )\n  }\n\n  return marker\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\nimport {checkBullet} from './check-bullet.js'\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bullet'], null | undefined>}\n */\nexport function checkBulletOther(state) {\n  const bullet = checkBullet(state)\n  const bulletOther = state.options.bulletOther\n\n  if (!bulletOther) {\n    return bullet === '*' ? '-' : '*'\n  }\n\n  if (bulletOther !== '*' && bulletOther !== '+' && bulletOther !== '-') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        bulletOther +\n        '` for `options.bulletOther`, expected `*`, `+`, or `-`'\n    )\n  }\n\n  if (bulletOther === bullet) {\n    throw new Error(\n      'Expected `bullet` (`' +\n        bullet +\n        '`) and `bulletOther` (`' +\n        bulletOther +\n        '`) to be different'\n    )\n  }\n\n  return bulletOther\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bulletOrdered'], null | undefined>}\n */\nexport function checkBulletOrdered(state) {\n  const marker = state.options.bulletOrdered || '.'\n\n  if (marker !== '.' && marker !== ')') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        marker +\n        '` for `options.bulletOrdered`, expected `.` or `)`'\n    )\n  }\n\n  return marker\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['rule'], null | undefined>}\n */\nexport function checkRule(state) {\n  const marker = state.options.rule || '*'\n\n  if (marker !== '*' && marker !== '-' && marker !== '_') {\n    throw new Error(\n      'Cannot serialize rules with `' +\n        marker +\n        '` for `options.rule`, expected `*`, `-`, or `_`'\n    )\n  }\n\n  return marker\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {List, Parents} from 'mdast'\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkBulletOther} from '../util/check-bullet-other.js'\nimport {checkBulletOrdered} from '../util/check-bullet-ordered.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {List} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function list(node, parent, state, info) {\n  const exit = state.enter('list')\n  const bulletCurrent = state.bulletCurrent\n  /** @type {string} */\n  let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state)\n  /** @type {string} */\n  const bulletOther = node.ordered\n    ? bullet === '.'\n      ? ')'\n      : '.'\n    : checkBulletOther(state)\n  let useDifferentMarker =\n    parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false\n\n  if (!node.ordered) {\n    const firstListItem = node.children ? node.children[0] : undefined\n\n    // If there\u2019s an empty first list item directly in two list items,\n    // we have to use a different bullet:\n    //\n    // ```markdown\n    // * - *\n    // ```\n    //\n    // \u2026because otherwise it would become one big thematic break.\n    if (\n      // Bullet could be used as a thematic break marker:\n      (bullet === '*' || bullet === '-') &&\n      // Empty first list item:\n      firstListItem &&\n      (!firstListItem.children || !firstListItem.children[0]) &&\n      // Directly in two other list items:\n      state.stack[state.stack.length - 1] === 'list' &&\n      state.stack[state.stack.length - 2] === 'listItem' &&\n      state.stack[state.stack.length - 3] === 'list' &&\n      state.stack[state.stack.length - 4] === 'listItem' &&\n      // That are each the first child.\n      state.indexStack[state.indexStack.length - 1] === 0 &&\n      state.indexStack[state.indexStack.length - 2] === 0 &&\n      state.indexStack[state.indexStack.length - 3] === 0\n    ) {\n      useDifferentMarker = true\n    }\n\n    // If there\u2019s a thematic break at the start of the first list item,\n    // we have to use a different bullet:\n    //\n    // ```markdown\n    // * ---\n    // ```\n    //\n    // \u2026because otherwise it would become one big thematic break.\n    if (checkRule(state) === bullet && firstListItem) {\n      let index = -1\n\n      while (++index < node.children.length) {\n        const item = node.children[index]\n\n        if (\n          item &&\n          item.type === 'listItem' &&\n          item.children &&\n          item.children[0] &&\n          item.children[0].type === 'thematicBreak'\n        ) {\n          useDifferentMarker = true\n          break\n        }\n      }\n    }\n  }\n\n  if (useDifferentMarker) {\n    bullet = bulletOther\n  }\n\n  state.bulletCurrent = bullet\n  const value = state.containerFlow(node, info)\n  state.bulletLastUsed = bullet\n  state.bulletCurrent = bulletCurrent\n  exit()\n  return value\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['listItemIndent'], null | undefined>}\n */\nexport function checkListItemIndent(state) {\n  const style = state.options.listItemIndent || 'one'\n\n  if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        style +\n        '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n    )\n  }\n\n  return style\n}\n", "/**\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n * @import {ListItem, Parents} from 'mdast'\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\n\n/**\n * @param {ListItem} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function listItem(node, parent, state, info) {\n  const listItemIndent = checkListItemIndent(state)\n  let bullet = state.bulletCurrent || checkBullet(state)\n\n  // Add the marker value for ordered lists.\n  if (parent && parent.type === 'list' && parent.ordered) {\n    bullet =\n      (typeof parent.start === 'number' && parent.start > -1\n        ? parent.start\n        : 1) +\n      (state.options.incrementListMarker === false\n        ? 0\n        : parent.children.indexOf(node)) +\n      bullet\n  }\n\n  let size = bullet.length + 1\n\n  if (\n    listItemIndent === 'tab' ||\n    (listItemIndent === 'mixed' &&\n      ((parent && parent.type === 'list' && parent.spread) || node.spread))\n  ) {\n    size = Math.ceil(size / 4) * 4\n  }\n\n  const tracker = state.createTracker(info)\n  tracker.move(bullet + ' '.repeat(size - bullet.length))\n  tracker.shift(size)\n  const exit = state.enter('listItem')\n  const value = state.indentLines(\n    state.containerFlow(node, tracker.current()),\n    map\n  )\n  exit()\n\n  return value\n\n  /** @type {Map} */\n  function map(line, index, blank) {\n    if (index) {\n      return (blank ? '' : ' '.repeat(size)) + line\n    }\n\n    return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n  }\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Paragraph, Parents} from 'mdast'\n */\n\n/**\n * @param {Paragraph} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function paragraph(node, _, state, info) {\n  const exit = state.enter('paragraph')\n  const subexit = state.enter('phrasing')\n  const value = state.containerPhrasing(node, info)\n  subexit()\n  exit()\n  return value\n}\n", "/**\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n */\n\nimport {convert} from 'unist-util-is'\n\n/**\n * Check if the given value is *phrasing content*.\n *\n * > \uD83D\uDC49 **Note**: Excludes `html`, which can be both phrasing or flow.\n *\n * @param node\n *   Thing to check, typically `Node`.\n * @returns\n *   Whether `value` is phrasing content.\n */\n\nexport const phrasing =\n  /** @type {(node?: unknown) => node is Exclude<PhrasingContent, Html>} */\n  (\n    convert([\n      'break',\n      'delete',\n      'emphasis',\n      // To do: next major: removed since footnotes were added to GFM.\n      'footnote',\n      'footnoteReference',\n      'image',\n      'imageReference',\n      'inlineCode',\n      // Enabled by `mdast-util-math`:\n      'inlineMath',\n      'link',\n      'linkReference',\n      // Enabled by `mdast-util-mdx`:\n      'mdxJsxTextElement',\n      // Enabled by `mdast-util-mdx`:\n      'mdxTextExpression',\n      'strong',\n      'text',\n      // Enabled by `mdast-util-directive`:\n      'textDirective'\n    ])\n  )\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Root} from 'mdast'\n */\n\nimport {phrasing} from 'mdast-util-phrasing'\n\n/**\n * @param {Root} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function root(node, _, state, info) {\n  // Note: `html` nodes are ambiguous.\n  const hasPhrasing = node.children.some(function (d) {\n    return phrasing(d)\n  })\n\n  const container = hasPhrasing ? state.containerPhrasing : state.containerFlow\n  return container.call(state, node, info)\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['strong'], null | undefined>}\n */\nexport function checkStrong(state) {\n  const marker = state.options.strong || '*'\n\n  if (marker !== '*' && marker !== '_') {\n    throw new Error(\n      'Cannot serialize strong with `' +\n        marker +\n        '` for `options.strong`, expected `*`, or `_`'\n    )\n  }\n\n  return marker\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Strong} from 'mdast'\n */\n\nimport {checkStrong} from '../util/check-strong.js'\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {encodeInfo} from '../util/encode-info.js'\n\nstrong.peek = strongPeek\n\n/**\n * @param {Strong} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function strong(node, _, state, info) {\n  const marker = checkStrong(state)\n  const exit = state.enter('strong')\n  const tracker = state.createTracker(info)\n  const before = tracker.move(marker + marker)\n\n  let between = tracker.move(\n    state.containerPhrasing(node, {\n      after: marker,\n      before,\n      ...tracker.current()\n    })\n  )\n  const betweenHead = between.charCodeAt(0)\n  const open = encodeInfo(\n    info.before.charCodeAt(info.before.length - 1),\n    betweenHead,\n    marker\n  )\n\n  if (open.inside) {\n    between = encodeCharacterReference(betweenHead) + between.slice(1)\n  }\n\n  const betweenTail = between.charCodeAt(between.length - 1)\n  const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker)\n\n  if (close.inside) {\n    between = between.slice(0, -1) + encodeCharacterReference(betweenTail)\n  }\n\n  const after = tracker.move(marker + marker)\n\n  exit()\n\n  state.attentionEncodeSurroundingInfo = {\n    after: close.outside,\n    before: open.outside\n  }\n  return before + between + after\n}\n\n/**\n * @param {Strong} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction strongPeek(_, _1, state) {\n  return state.options.strong || '*'\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Text} from 'mdast'\n */\n\n/**\n * @param {Text} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function text(node, _, state, info) {\n  return state.safe(node.value, info)\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['ruleRepetition'], null | undefined>}\n */\nexport function checkRuleRepetition(state) {\n  const repetition = state.options.ruleRepetition || 3\n\n  if (repetition < 3) {\n    throw new Error(\n      'Cannot serialize rules with repetition `' +\n        repetition +\n        '` for `options.ruleRepetition`, expected `3` or more'\n    )\n  }\n\n  return repetition\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Parents, ThematicBreak} from 'mdast'\n */\n\nimport {checkRuleRepetition} from '../util/check-rule-repetition.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {ThematicBreak} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nexport function thematicBreak(_, _1, state) {\n  const value = (\n    checkRule(state) + (state.options.ruleSpaces ? ' ' : '')\n  ).repeat(checkRuleRepetition(state))\n\n  return state.options.ruleSpaces ? value.slice(0, -1) : value\n}\n", "import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {definition} from './definition.js'\nimport {emphasis} from './emphasis.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {image} from './image.js'\nimport {imageReference} from './image-reference.js'\nimport {inlineCode} from './inline-code.js'\nimport {link} from './link.js'\nimport {linkReference} from './link-reference.js'\nimport {list} from './list.js'\nimport {listItem} from './list-item.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default (CommonMark) handlers.\n */\nexport const handle = {\n  blockquote,\n  break: hardBreak,\n  code,\n  definition,\n  emphasis,\n  hardBreak,\n  heading,\n  html,\n  image,\n  imageReference,\n  inlineCode,\n  link,\n  linkReference,\n  list,\n  listItem,\n  paragraph,\n  root,\n  strong,\n  text,\n  thematicBreak\n}\n", "/**\n * Map of named character references.\n *\n * @type {Record<string, string>}\n */\nexport const characterEntities = {\n  AElig: '\u00C6',\n  AMP: '&',\n  Aacute: '\u00C1',\n  Abreve: '\u0102',\n  Acirc: '\u00C2',\n  Acy: '\u0410',\n  Afr: '\uD835\uDD04',\n  Agrave: '\u00C0',\n  Alpha: '\u0391',\n  Amacr: '\u0100',\n  And: '\u2A53',\n  Aogon: '\u0104',\n  Aopf: '\uD835\uDD38',\n  ApplyFunction: '\u2061',\n  Aring: '\u00C5',\n  Ascr: '\uD835\uDC9C',\n  Assign: '\u2254',\n  Atilde: '\u00C3',\n  Auml: '\u00C4',\n  Backslash: '\u2216',\n  Barv: '\u2AE7',\n  Barwed: '\u2306',\n  Bcy: '\u0411',\n  Because: '\u2235',\n  Bernoullis: '\u212C',\n  Beta: '\u0392',\n  Bfr: '\uD835\uDD05',\n  Bopf: '\uD835\uDD39',\n  Breve: '\u02D8',\n  Bscr: '\u212C',\n  Bumpeq: '\u224E',\n  CHcy: '\u0427',\n  COPY: '\u00A9',\n  Cacute: '\u0106',\n  Cap: '\u22D2',\n  CapitalDifferentialD: '\u2145',\n  Cayleys: '\u212D',\n  Ccaron: '\u010C',\n  Ccedil: '\u00C7',\n  Ccirc: '\u0108',\n  Cconint: '\u2230',\n  Cdot: '\u010A',\n  Cedilla: '\u00B8',\n  CenterDot: '\u00B7',\n  Cfr: '\u212D',\n  Chi: '\u03A7',\n  CircleDot: '\u2299',\n  CircleMinus: '\u2296',\n  CirclePlus: '\u2295',\n  CircleTimes: '\u2297',\n  ClockwiseContourIntegral: '\u2232',\n  CloseCurlyDoubleQuote: '\u201D',\n  CloseCurlyQuote: '\u2019',\n  Colon: '\u2237',\n  Colone: '\u2A74',\n  Congruent: '\u2261',\n  Conint: '\u222F',\n  ContourIntegral: '\u222E',\n  Copf: '\u2102',\n  Coproduct: '\u2210',\n  CounterClockwiseContourIntegral: '\u2233',\n  Cross: '\u2A2F',\n  Cscr: '\uD835\uDC9E',\n  Cup: '\u22D3',\n  CupCap: '\u224D',\n  DD: '\u2145',\n  DDotrahd: '\u2911',\n  DJcy: '\u0402',\n  DScy: '\u0405',\n  DZcy: '\u040F',\n  Dagger: '\u2021',\n  Darr: '\u21A1',\n  Dashv: '\u2AE4',\n  Dcaron: '\u010E',\n  Dcy: '\u0414',\n  Del: '\u2207',\n  Delta: '\u0394',\n  Dfr: '\uD835\uDD07',\n  DiacriticalAcute: '\u00B4',\n  DiacriticalDot: '\u02D9',\n  DiacriticalDoubleAcute: '\u02DD',\n  DiacriticalGrave: '`',\n  DiacriticalTilde: '\u02DC',\n  Diamond: '\u22C4',\n  DifferentialD: '\u2146',\n  Dopf: '\uD835\uDD3B',\n  Dot: '\u00A8',\n  DotDot: '\u20DC',\n  DotEqual: '\u2250',\n  DoubleContourIntegral: '\u222F',\n  DoubleDot: '\u00A8',\n  DoubleDownArrow: '\u21D3',\n  DoubleLeftArrow: '\u21D0',\n  DoubleLeftRightArrow: '\u21D4',\n  DoubleLeftTee: '\u2AE4',\n  DoubleLongLeftArrow: '\u27F8',\n  DoubleLongLeftRightArrow: '\u27FA',\n  DoubleLongRightArrow: '\u27F9',\n  DoubleRightArrow: '\u21D2',\n  DoubleRightTee: '\u22A8',\n  DoubleUpArrow: '\u21D1',\n  DoubleUpDownArrow: '\u21D5',\n  DoubleVerticalBar: '\u2225',\n  DownArrow: '\u2193',\n  DownArrowBar: '\u2913',\n  DownArrowUpArrow: '\u21F5',\n  DownBreve: '\u0311',\n  DownLeftRightVector: '\u2950',\n  DownLeftTeeVector: '\u295E',\n  DownLeftVector: '\u21BD',\n  DownLeftVectorBar: '\u2956',\n  DownRightTeeVector: '\u295F',\n  DownRightVector: '\u21C1',\n  DownRightVectorBar: '\u2957',\n  DownTee: '\u22A4',\n  DownTeeArrow: '\u21A7',\n  Downarrow: '\u21D3',\n  Dscr: '\uD835\uDC9F',\n  Dstrok: '\u0110',\n  ENG: '\u014A',\n  ETH: '\u00D0',\n  Eacute: '\u00C9',\n  Ecaron: '\u011A',\n  Ecirc: '\u00CA',\n  Ecy: '\u042D',\n  Edot: '\u0116',\n  Efr: '\uD835\uDD08',\n  Egrave: '\u00C8',\n  Element: '\u2208',\n  Emacr: '\u0112',\n  EmptySmallSquare: '\u25FB',\n  EmptyVerySmallSquare: '\u25AB',\n  Eogon: '\u0118',\n  Eopf: '\uD835\uDD3C',\n  Epsilon: '\u0395',\n  Equal: '\u2A75',\n  EqualTilde: '\u2242',\n  Equilibrium: '\u21CC',\n  Escr: '\u2130',\n  Esim: '\u2A73',\n  Eta: '\u0397',\n  Euml: '\u00CB',\n  Exists: '\u2203',\n  ExponentialE: '\u2147',\n  Fcy: '\u0424',\n  Ffr: '\uD835\uDD09',\n  FilledSmallSquare: '\u25FC',\n  FilledVerySmallSquare: '\u25AA',\n  Fopf: '\uD835\uDD3D',\n  ForAll: '\u2200',\n  Fouriertrf: '\u2131',\n  Fscr: '\u2131',\n  GJcy: '\u0403',\n  GT: '>',\n  Gamma: '\u0393',\n  Gammad: '\u03DC',\n  Gbreve: '\u011E',\n  Gcedil: '\u0122',\n  Gcirc: '\u011C',\n  Gcy: '\u0413',\n  Gdot: '\u0120',\n  Gfr: '\uD835\uDD0A',\n  Gg: '\u22D9',\n  Gopf: '\uD835\uDD3E',\n  GreaterEqual: '\u2265',\n  GreaterEqualLess: '\u22DB',\n  GreaterFullEqual: '\u2267',\n  GreaterGreater: '\u2AA2',\n  GreaterLess: '\u2277',\n  GreaterSlantEqual: '\u2A7E',\n  GreaterTilde: '\u2273',\n  Gscr: '\uD835\uDCA2',\n  Gt: '\u226B',\n  HARDcy: '\u042A',\n  Hacek: '\u02C7',\n  Hat: '^',\n  Hcirc: '\u0124',\n  Hfr: '\u210C',\n  HilbertSpace: '\u210B',\n  Hopf: '\u210D',\n  HorizontalLine: '\u2500',\n  Hscr: '\u210B',\n  Hstrok: '\u0126',\n  HumpDownHump: '\u224E',\n  HumpEqual: '\u224F',\n  IEcy: '\u0415',\n  IJlig: '\u0132',\n  IOcy: '\u0401',\n  Iacute: '\u00CD',\n  Icirc: '\u00CE',\n  Icy: '\u0418',\n  Idot: '\u0130',\n  Ifr: '\u2111',\n  Igrave: '\u00CC',\n  Im: '\u2111',\n  Imacr: '\u012A',\n  ImaginaryI: '\u2148',\n  Implies: '\u21D2',\n  Int: '\u222C',\n  Integral: '\u222B',\n  Intersection: '\u22C2',\n  InvisibleComma: '\u2063',\n  InvisibleTimes: '\u2062',\n  Iogon: '\u012E',\n  Iopf: '\uD835\uDD40',\n  Iota: '\u0399',\n  Iscr: '\u2110',\n  Itilde: '\u0128',\n  Iukcy: '\u0406',\n  Iuml: '\u00CF',\n  Jcirc: '\u0134',\n  Jcy: '\u0419',\n  Jfr: '\uD835\uDD0D',\n  Jopf: '\uD835\uDD41',\n  Jscr: '\uD835\uDCA5',\n  Jsercy: '\u0408',\n  Jukcy: '\u0404',\n  KHcy: '\u0425',\n  KJcy: '\u040C',\n  Kappa: '\u039A',\n  Kcedil: '\u0136',\n  Kcy: '\u041A',\n  Kfr: '\uD835\uDD0E',\n  Kopf: '\uD835\uDD42',\n  Kscr: '\uD835\uDCA6',\n  LJcy: '\u0409',\n  LT: '<',\n  Lacute: '\u0139',\n  Lambda: '\u039B',\n  Lang: '\u27EA',\n  Laplacetrf: '\u2112',\n  Larr: '\u219E',\n  Lcaron: '\u013D',\n  Lcedil: '\u013B',\n  Lcy: '\u041B',\n  LeftAngleBracket: '\u27E8',\n  LeftArrow: '\u2190',\n  LeftArrowBar: '\u21E4',\n  LeftArrowRightArrow: '\u21C6',\n  LeftCeiling: '\u2308',\n  LeftDoubleBracket: '\u27E6',\n  LeftDownTeeVector: '\u2961',\n  LeftDownVector: '\u21C3',\n  LeftDownVectorBar: '\u2959',\n  LeftFloor: '\u230A',\n  LeftRightArrow: '\u2194',\n  LeftRightVector: '\u294E',\n  LeftTee: '\u22A3',\n  LeftTeeArrow: '\u21A4',\n  LeftTeeVector: '\u295A',\n  LeftTriangle: '\u22B2',\n  LeftTriangleBar: '\u29CF',\n  LeftTriangleEqual: '\u22B4',\n  LeftUpDownVector: '\u2951',\n  LeftUpTeeVector: '\u2960',\n  LeftUpVector: '\u21BF',\n  LeftUpVectorBar: '\u2958',\n  LeftVector: '\u21BC',\n  LeftVectorBar: '\u2952',\n  Leftarrow: '\u21D0',\n  Leftrightarrow: '\u21D4',\n  LessEqualGreater: '\u22DA',\n  LessFullEqual: '\u2266',\n  LessGreater: '\u2276',\n  LessLess: '\u2AA1',\n  LessSlantEqual: '\u2A7D',\n  LessTilde: '\u2272',\n  Lfr: '\uD835\uDD0F',\n  Ll: '\u22D8',\n  Lleftarrow: '\u21DA',\n  Lmidot: '\u013F',\n  LongLeftArrow: '\u27F5',\n  LongLeftRightArrow: '\u27F7',\n  LongRightArrow: '\u27F6',\n  Longleftarrow: '\u27F8',\n  Longleftrightarrow: '\u27FA',\n  Longrightarrow: '\u27F9',\n  Lopf: '\uD835\uDD43',\n  LowerLeftArrow: '\u2199',\n  LowerRightArrow: '\u2198',\n  Lscr: '\u2112',\n  Lsh: '\u21B0',\n  Lstrok: '\u0141',\n  Lt: '\u226A',\n  Map: '\u2905',\n  Mcy: '\u041C',\n  MediumSpace: '\u205F',\n  Mellintrf: '\u2133',\n  Mfr: '\uD835\uDD10',\n  MinusPlus: '\u2213',\n  Mopf: '\uD835\uDD44',\n  Mscr: '\u2133',\n  Mu: '\u039C',\n  NJcy: '\u040A',\n  Nacute: '\u0143',\n  Ncaron: '\u0147',\n  Ncedil: '\u0145',\n  Ncy: '\u041D',\n  NegativeMediumSpace: '\u200B',\n  NegativeThickSpace: '\u200B',\n  NegativeThinSpace: '\u200B',\n  NegativeVeryThinSpace: '\u200B',\n  NestedGreaterGreater: '\u226B',\n  NestedLessLess: '\u226A',\n  NewLine: '\\n',\n  Nfr: '\uD835\uDD11',\n  NoBreak: '\u2060',\n  NonBreakingSpace: '\u00A0',\n  Nopf: '\u2115',\n  Not: '\u2AEC',\n  NotCongruent: '\u2262',\n  NotCupCap: '\u226D',\n  NotDoubleVerticalBar: '\u2226',\n  NotElement: '\u2209',\n  NotEqual: '\u2260',\n  NotEqualTilde: '\u2242\u0338',\n  NotExists: '\u2204',\n  NotGreater: '\u226F',\n  NotGreaterEqual: '\u2271',\n  NotGreaterFullEqual: '\u2267\u0338',\n  NotGreaterGreater: '\u226B\u0338',\n  NotGreaterLess: '\u2279',\n  NotGreaterSlantEqual: '\u2A7E\u0338',\n  NotGreaterTilde: '\u2275',\n  NotHumpDownHump: '\u224E\u0338',\n  NotHumpEqual: '\u224F\u0338',\n  NotLeftTriangle: '\u22EA',\n  NotLeftTriangleBar: '\u29CF\u0338',\n  NotLeftTriangleEqual: '\u22EC',\n  NotLess: '\u226E',\n  NotLessEqual: '\u2270',\n  NotLessGreater: '\u2278',\n  NotLessLess: '\u226A\u0338',\n  NotLessSlantEqual: '\u2A7D\u0338',\n  NotLessTilde: '\u2274',\n  NotNestedGreaterGreater: '\u2AA2\u0338',\n  NotNestedLessLess: '\u2AA1\u0338',\n  NotPrecedes: '\u2280',\n  NotPrecedesEqual: '\u2AAF\u0338',\n  NotPrecedesSlantEqual: '\u22E0',\n  NotReverseElement: '\u220C',\n  NotRightTriangle: '\u22EB',\n  NotRightTriangleBar: '\u29D0\u0338',\n  NotRightTriangleEqual: '\u22ED',\n  NotSquareSubset: '\u228F\u0338',\n  NotSquareSubsetEqual: '\u22E2',\n  NotSquareSuperset: '\u2290\u0338',\n  NotSquareSupersetEqual: '\u22E3',\n  NotSubset: '\u2282\u20D2',\n  NotSubsetEqual: '\u2288',\n  NotSucceeds: '\u2281',\n  NotSucceedsEqual: '\u2AB0\u0338',\n  NotSucceedsSlantEqual: '\u22E1',\n  NotSucceedsTilde: '\u227F\u0338',\n  NotSuperset: '\u2283\u20D2',\n  NotSupersetEqual: '\u2289',\n  NotTilde: '\u2241',\n  NotTildeEqual: '\u2244',\n  NotTildeFullEqual: '\u2247',\n  NotTildeTilde: '\u2249',\n  NotVerticalBar: '\u2224',\n  Nscr: '\uD835\uDCA9',\n  Ntilde: '\u00D1',\n  Nu: '\u039D',\n  OElig: '\u0152',\n  Oacute: '\u00D3',\n  Ocirc: '\u00D4',\n  Ocy: '\u041E',\n  Odblac: '\u0150',\n  Ofr: '\uD835\uDD12',\n  Ograve: '\u00D2',\n  Omacr: '\u014C',\n  Omega: '\u03A9',\n  Omicron: '\u039F',\n  Oopf: '\uD835\uDD46',\n  OpenCurlyDoubleQuote: '\u201C',\n  OpenCurlyQuote: '\u2018',\n  Or: '\u2A54',\n  Oscr: '\uD835\uDCAA',\n  Oslash: '\u00D8',\n  Otilde: '\u00D5',\n  Otimes: '\u2A37',\n  Ouml: '\u00D6',\n  OverBar: '\u203E',\n  OverBrace: '\u23DE',\n  OverBracket: '\u23B4',\n  OverParenthesis: '\u23DC',\n  PartialD: '\u2202',\n  Pcy: '\u041F',\n  Pfr: '\uD835\uDD13',\n  Phi: '\u03A6',\n  Pi: '\u03A0',\n  PlusMinus: '\u00B1',\n  Poincareplane: '\u210C',\n  Popf: '\u2119',\n  Pr: '\u2ABB',\n  Precedes: '\u227A',\n  PrecedesEqual: '\u2AAF',\n  PrecedesSlantEqual: '\u227C',\n  PrecedesTilde: '\u227E',\n  Prime: '\u2033',\n  Product: '\u220F',\n  Proportion: '\u2237',\n  Proportional: '\u221D',\n  Pscr: '\uD835\uDCAB',\n  Psi: '\u03A8',\n  QUOT: '\"',\n  Qfr: '\uD835\uDD14',\n  Qopf: '\u211A',\n  Qscr: '\uD835\uDCAC',\n  RBarr: '\u2910',\n  REG: '\u00AE',\n  Racute: '\u0154',\n  Rang: '\u27EB',\n  Rarr: '\u21A0',\n  Rarrtl: '\u2916',\n  Rcaron: '\u0158',\n  Rcedil: '\u0156',\n  Rcy: '\u0420',\n  Re: '\u211C',\n  ReverseElement: '\u220B',\n  ReverseEquilibrium: '\u21CB',\n  ReverseUpEquilibrium: '\u296F',\n  Rfr: '\u211C',\n  Rho: '\u03A1',\n  RightAngleBracket: '\u27E9',\n  RightArrow: '\u2192',\n  RightArrowBar: '\u21E5',\n  RightArrowLeftArrow: '\u21C4',\n  RightCeiling: '\u2309',\n  RightDoubleBracket: '\u27E7',\n  RightDownTeeVector: '\u295D',\n  RightDownVector: '\u21C2',\n  RightDownVectorBar: '\u2955',\n  RightFloor: '\u230B',\n  RightTee: '\u22A2',\n  RightTeeArrow: '\u21A6',\n  RightTeeVector: '\u295B',\n  RightTriangle: '\u22B3',\n  RightTriangleBar: '\u29D0',\n  RightTriangleEqual: '\u22B5',\n  RightUpDownVector: '\u294F',\n  RightUpTeeVector: '\u295C',\n  RightUpVector: '\u21BE',\n  RightUpVectorBar: '\u2954',\n  RightVector: '\u21C0',\n  RightVectorBar: '\u2953',\n  Rightarrow: '\u21D2',\n  Ropf: '\u211D',\n  RoundImplies: '\u2970',\n  Rrightarrow: '\u21DB',\n  Rscr: '\u211B',\n  Rsh: '\u21B1',\n  RuleDelayed: '\u29F4',\n  SHCHcy: '\u0429',\n  SHcy: '\u0428',\n  SOFTcy: '\u042C',\n  Sacute: '\u015A',\n  Sc: '\u2ABC',\n  Scaron: '\u0160',\n  Scedil: '\u015E',\n  Scirc: '\u015C',\n  Scy: '\u0421',\n  Sfr: '\uD835\uDD16',\n  ShortDownArrow: '\u2193',\n  ShortLeftArrow: '\u2190',\n  ShortRightArrow: '\u2192',\n  ShortUpArrow: '\u2191',\n  Sigma: '\u03A3',\n  SmallCircle: '\u2218',\n  Sopf: '\uD835\uDD4A',\n  Sqrt: '\u221A',\n  Square: '\u25A1',\n  SquareIntersection: '\u2293',\n  SquareSubset: '\u228F',\n  SquareSubsetEqual: '\u2291',\n  SquareSuperset: '\u2290',\n  SquareSupersetEqual: '\u2292',\n  SquareUnion: '\u2294',\n  Sscr: '\uD835\uDCAE',\n  Star: '\u22C6',\n  Sub: '\u22D0',\n  Subset: '\u22D0',\n  SubsetEqual: '\u2286',\n  Succeeds: '\u227B',\n  SucceedsEqual: '\u2AB0',\n  SucceedsSlantEqual: '\u227D',\n  SucceedsTilde: '\u227F',\n  SuchThat: '\u220B',\n  Sum: '\u2211',\n  Sup: '\u22D1',\n  Superset: '\u2283',\n  SupersetEqual: '\u2287',\n  Supset: '\u22D1',\n  THORN: '\u00DE',\n  TRADE: '\u2122',\n  TSHcy: '\u040B',\n  TScy: '\u0426',\n  Tab: '\\t',\n  Tau: '\u03A4',\n  Tcaron: '\u0164',\n  Tcedil: '\u0162',\n  Tcy: '\u0422',\n  Tfr: '\uD835\uDD17',\n  Therefore: '\u2234',\n  Theta: '\u0398',\n  ThickSpace: '\u205F\u200A',\n  ThinSpace: '\u2009',\n  Tilde: '\u223C',\n  TildeEqual: '\u2243',\n  TildeFullEqual: '\u2245',\n  TildeTilde: '\u2248',\n  Topf: '\uD835\uDD4B',\n  TripleDot: '\u20DB',\n  Tscr: '\uD835\uDCAF',\n  Tstrok: '\u0166',\n  Uacute: '\u00DA',\n  Uarr: '\u219F',\n  Uarrocir: '\u2949',\n  Ubrcy: '\u040E',\n  Ubreve: '\u016C',\n  Ucirc: '\u00DB',\n  Ucy: '\u0423',\n  Udblac: '\u0170',\n  Ufr: '\uD835\uDD18',\n  Ugrave: '\u00D9',\n  Umacr: '\u016A',\n  UnderBar: '_',\n  UnderBrace: '\u23DF',\n  UnderBracket: '\u23B5',\n  UnderParenthesis: '\u23DD',\n  Union: '\u22C3',\n  UnionPlus: '\u228E',\n  Uogon: '\u0172',\n  Uopf: '\uD835\uDD4C',\n  UpArrow: '\u2191',\n  UpArrowBar: '\u2912',\n  UpArrowDownArrow: '\u21C5',\n  UpDownArrow: '\u2195',\n  UpEquilibrium: '\u296E',\n  UpTee: '\u22A5',\n  UpTeeArrow: '\u21A5',\n  Uparrow: '\u21D1',\n  Updownarrow: '\u21D5',\n  UpperLeftArrow: '\u2196',\n  UpperRightArrow: '\u2197',\n  Upsi: '\u03D2',\n  Upsilon: '\u03A5',\n  Uring: '\u016E',\n  Uscr: '\uD835\uDCB0',\n  Utilde: '\u0168',\n  Uuml: '\u00DC',\n  VDash: '\u22AB',\n  Vbar: '\u2AEB',\n  Vcy: '\u0412',\n  Vdash: '\u22A9',\n  Vdashl: '\u2AE6',\n  Vee: '\u22C1',\n  Verbar: '\u2016',\n  Vert: '\u2016',\n  VerticalBar: '\u2223',\n  VerticalLine: '|',\n  VerticalSeparator: '\u2758',\n  VerticalTilde: '\u2240',\n  VeryThinSpace: '\u200A',\n  Vfr: '\uD835\uDD19',\n  Vopf: '\uD835\uDD4D',\n  Vscr: '\uD835\uDCB1',\n  Vvdash: '\u22AA',\n  Wcirc: '\u0174',\n  Wedge: '\u22C0',\n  Wfr: '\uD835\uDD1A',\n  Wopf: '\uD835\uDD4E',\n  Wscr: '\uD835\uDCB2',\n  Xfr: '\uD835\uDD1B',\n  Xi: '\u039E',\n  Xopf: '\uD835\uDD4F',\n  Xscr: '\uD835\uDCB3',\n  YAcy: '\u042F',\n  YIcy: '\u0407',\n  YUcy: '\u042E',\n  Yacute: '\u00DD',\n  Ycirc: '\u0176',\n  Ycy: '\u042B',\n  Yfr: '\uD835\uDD1C',\n  Yopf: '\uD835\uDD50',\n  Yscr: '\uD835\uDCB4',\n  Yuml: '\u0178',\n  ZHcy: '\u0416',\n  Zacute: '\u0179',\n  Zcaron: '\u017D',\n  Zcy: '\u0417',\n  Zdot: '\u017B',\n  ZeroWidthSpace: '\u200B',\n  Zeta: '\u0396',\n  Zfr: '\u2128',\n  Zopf: '\u2124',\n  Zscr: '\uD835\uDCB5',\n  aacute: '\u00E1',\n  abreve: '\u0103',\n  ac: '\u223E',\n  acE: '\u223E\u0333',\n  acd: '\u223F',\n  acirc: '\u00E2',\n  acute: '\u00B4',\n  acy: '\u0430',\n  aelig: '\u00E6',\n  af: '\u2061',\n  afr: '\uD835\uDD1E',\n  agrave: '\u00E0',\n  alefsym: '\u2135',\n  aleph: '\u2135',\n  alpha: '\u03B1',\n  amacr: '\u0101',\n  amalg: '\u2A3F',\n  amp: '&',\n  and: '\u2227',\n  andand: '\u2A55',\n  andd: '\u2A5C',\n  andslope: '\u2A58',\n  andv: '\u2A5A',\n  ang: '\u2220',\n  ange: '\u29A4',\n  angle: '\u2220',\n  angmsd: '\u2221',\n  angmsdaa: '\u29A8',\n  angmsdab: '\u29A9',\n  angmsdac: '\u29AA',\n  angmsdad: '\u29AB',\n  angmsdae: '\u29AC',\n  angmsdaf: '\u29AD',\n  angmsdag: '\u29AE',\n  angmsdah: '\u29AF',\n  angrt: '\u221F',\n  angrtvb: '\u22BE',\n  angrtvbd: '\u299D',\n  angsph: '\u2222',\n  angst: '\u00C5',\n  angzarr: '\u237C',\n  aogon: '\u0105',\n  aopf: '\uD835\uDD52',\n  ap: '\u2248',\n  apE: '\u2A70',\n  apacir: '\u2A6F',\n  ape: '\u224A',\n  apid: '\u224B',\n  apos: \"'\",\n  approx: '\u2248',\n  approxeq: '\u224A',\n  aring: '\u00E5',\n  ascr: '\uD835\uDCB6',\n  ast: '*',\n  asymp: '\u2248',\n  asympeq: '\u224D',\n  atilde: '\u00E3',\n  auml: '\u00E4',\n  awconint: '\u2233',\n  awint: '\u2A11',\n  bNot: '\u2AED',\n  backcong: '\u224C',\n  backepsilon: '\u03F6',\n  backprime: '\u2035',\n  backsim: '\u223D',\n  backsimeq: '\u22CD',\n  barvee: '\u22BD',\n  barwed: '\u2305',\n  barwedge: '\u2305',\n  bbrk: '\u23B5',\n  bbrktbrk: '\u23B6',\n  bcong: '\u224C',\n  bcy: '\u0431',\n  bdquo: '\u201E',\n  becaus: '\u2235',\n  because: '\u2235',\n  bemptyv: '\u29B0',\n  bepsi: '\u03F6',\n  bernou: '\u212C',\n  beta: '\u03B2',\n  beth: '\u2136',\n  between: '\u226C',\n  bfr: '\uD835\uDD1F',\n  bigcap: '\u22C2',\n  bigcirc: '\u25EF',\n  bigcup: '\u22C3',\n  bigodot: '\u2A00',\n  bigoplus: '\u2A01',\n  bigotimes: '\u2A02',\n  bigsqcup: '\u2A06',\n  bigstar: '\u2605',\n  bigtriangledown: '\u25BD',\n  bigtriangleup: '\u25B3',\n  biguplus: '\u2A04',\n  bigvee: '\u22C1',\n  bigwedge: '\u22C0',\n  bkarow: '\u290D',\n  blacklozenge: '\u29EB',\n  blacksquare: '\u25AA',\n  blacktriangle: '\u25B4',\n  blacktriangledown: '\u25BE',\n  blacktriangleleft: '\u25C2',\n  blacktriangleright: '\u25B8',\n  blank: '\u2423',\n  blk12: '\u2592',\n  blk14: '\u2591',\n  blk34: '\u2593',\n  block: '\u2588',\n  bne: '=\u20E5',\n  bnequiv: '\u2261\u20E5',\n  bnot: '\u2310',\n  bopf: '\uD835\uDD53',\n  bot: '\u22A5',\n  bottom: '\u22A5',\n  bowtie: '\u22C8',\n  boxDL: '\u2557',\n  boxDR: '\u2554',\n  boxDl: '\u2556',\n  boxDr: '\u2553',\n  boxH: '\u2550',\n  boxHD: '\u2566',\n  boxHU: '\u2569',\n  boxHd: '\u2564',\n  boxHu: '\u2567',\n  boxUL: '\u255D',\n  boxUR: '\u255A',\n  boxUl: '\u255C',\n  boxUr: '\u2559',\n  boxV: '\u2551',\n  boxVH: '\u256C',\n  boxVL: '\u2563',\n  boxVR: '\u2560',\n  boxVh: '\u256B',\n  boxVl: '\u2562',\n  boxVr: '\u255F',\n  boxbox: '\u29C9',\n  boxdL: '\u2555',\n  boxdR: '\u2552',\n  boxdl: '\u2510',\n  boxdr: '\u250C',\n  boxh: '\u2500',\n  boxhD: '\u2565',\n  boxhU: '\u2568',\n  boxhd: '\u252C',\n  boxhu: '\u2534',\n  boxminus: '\u229F',\n  boxplus: '\u229E',\n  boxtimes: '\u22A0',\n  boxuL: '\u255B',\n  boxuR: '\u2558',\n  boxul: '\u2518',\n  boxur: '\u2514',\n  boxv: '\u2502',\n  boxvH: '\u256A',\n  boxvL: '\u2561',\n  boxvR: '\u255E',\n  boxvh: '\u253C',\n  boxvl: '\u2524',\n  boxvr: '\u251C',\n  bprime: '\u2035',\n  breve: '\u02D8',\n  brvbar: '\u00A6',\n  bscr: '\uD835\uDCB7',\n  bsemi: '\u204F',\n  bsim: '\u223D',\n  bsime: '\u22CD',\n  bsol: '\\\\',\n  bsolb: '\u29C5',\n  bsolhsub: '\u27C8',\n  bull: '\u2022',\n  bullet: '\u2022',\n  bump: '\u224E',\n  bumpE: '\u2AAE',\n  bumpe: '\u224F',\n  bumpeq: '\u224F',\n  cacute: '\u0107',\n  cap: '\u2229',\n  capand: '\u2A44',\n  capbrcup: '\u2A49',\n  capcap: '\u2A4B',\n  capcup: '\u2A47',\n  capdot: '\u2A40',\n  caps: '\u2229\uFE00',\n  caret: '\u2041',\n  caron: '\u02C7',\n  ccaps: '\u2A4D',\n  ccaron: '\u010D',\n  ccedil: '\u00E7',\n  ccirc: '\u0109',\n  ccups: '\u2A4C',\n  ccupssm: '\u2A50',\n  cdot: '\u010B',\n  cedil: '\u00B8',\n  cemptyv: '\u29B2',\n  cent: '\u00A2',\n  centerdot: '\u00B7',\n  cfr: '\uD835\uDD20',\n  chcy: '\u0447',\n  check: '\u2713',\n  checkmark: '\u2713',\n  chi: '\u03C7',\n  cir: '\u25CB',\n  cirE: '\u29C3',\n  circ: '\u02C6',\n  circeq: '\u2257',\n  circlearrowleft: '\u21BA',\n  circlearrowright: '\u21BB',\n  circledR: '\u00AE',\n  circledS: '\u24C8',\n  circledast: '\u229B',\n  circledcirc: '\u229A',\n  circleddash: '\u229D',\n  cire: '\u2257',\n  cirfnint: '\u2A10',\n  cirmid: '\u2AEF',\n  cirscir: '\u29C2',\n  clubs: '\u2663',\n  clubsuit: '\u2663',\n  colon: ':',\n  colone: '\u2254',\n  coloneq: '\u2254',\n  comma: ',',\n  commat: '@',\n  comp: '\u2201',\n  compfn: '\u2218',\n  complement: '\u2201',\n  complexes: '\u2102',\n  cong: '\u2245',\n  congdot: '\u2A6D',\n  conint: '\u222E',\n  copf: '\uD835\uDD54',\n  coprod: '\u2210',\n  copy: '\u00A9',\n  copysr: '\u2117',\n  crarr: '\u21B5',\n  cross: '\u2717',\n  cscr: '\uD835\uDCB8',\n  csub: '\u2ACF',\n  csube: '\u2AD1',\n  csup: '\u2AD0',\n  csupe: '\u2AD2',\n  ctdot: '\u22EF',\n  cudarrl: '\u2938',\n  cudarrr: '\u2935',\n  cuepr: '\u22DE',\n  cuesc: '\u22DF',\n  cularr: '\u21B6',\n  cularrp: '\u293D',\n  cup: '\u222A',\n  cupbrcap: '\u2A48',\n  cupcap: '\u2A46',\n  cupcup: '\u2A4A',\n  cupdot: '\u228D',\n  cupor: '\u2A45',\n  cups: '\u222A\uFE00',\n  curarr: '\u21B7',\n  curarrm: '\u293C',\n  curlyeqprec: '\u22DE',\n  curlyeqsucc: '\u22DF',\n  curlyvee: '\u22CE',\n  curlywedge: '\u22CF',\n  curren: '\u00A4',\n  curvearrowleft: '\u21B6',\n  curvearrowright: '\u21B7',\n  cuvee: '\u22CE',\n  cuwed: '\u22CF',\n  cwconint: '\u2232',\n  cwint: '\u2231',\n  cylcty: '\u232D',\n  dArr: '\u21D3',\n  dHar: '\u2965',\n  dagger: '\u2020',\n  daleth: '\u2138',\n  darr: '\u2193',\n  dash: '\u2010',\n  dashv: '\u22A3',\n  dbkarow: '\u290F',\n  dblac: '\u02DD',\n  dcaron: '\u010F',\n  dcy: '\u0434',\n  dd: '\u2146',\n  ddagger: '\u2021',\n  ddarr: '\u21CA',\n  ddotseq: '\u2A77',\n  deg: '\u00B0',\n  delta: '\u03B4',\n  demptyv: '\u29B1',\n  dfisht: '\u297F',\n  dfr: '\uD835\uDD21',\n  dharl: '\u21C3',\n  dharr: '\u21C2',\n  diam: '\u22C4',\n  diamond: '\u22C4',\n  diamondsuit: '\u2666',\n  diams: '\u2666',\n  die: '\u00A8',\n  digamma: '\u03DD',\n  disin: '\u22F2',\n  div: '\u00F7',\n  divide: '\u00F7',\n  divideontimes: '\u22C7',\n  divonx: '\u22C7',\n  djcy: '\u0452',\n  dlcorn: '\u231E',\n  dlcrop: '\u230D',\n  dollar: '$',\n  dopf: '\uD835\uDD55',\n  dot: '\u02D9',\n  doteq: '\u2250',\n  doteqdot: '\u2251',\n  dotminus: '\u2238',\n  dotplus: '\u2214',\n  dotsquare: '\u22A1',\n  doublebarwedge: '\u2306',\n  downarrow: '\u2193',\n  downdownarrows: '\u21CA',\n  downharpoonleft: '\u21C3',\n  downharpoonright: '\u21C2',\n  drbkarow: '\u2910',\n  drcorn: '\u231F',\n  drcrop: '\u230C',\n  dscr: '\uD835\uDCB9',\n  dscy: '\u0455',\n  dsol: '\u29F6',\n  dstrok: '\u0111',\n  dtdot: '\u22F1',\n  dtri: '\u25BF',\n  dtrif: '\u25BE',\n  duarr: '\u21F5',\n  duhar: '\u296F',\n  dwangle: '\u29A6',\n  dzcy: '\u045F',\n  dzigrarr: '\u27FF',\n  eDDot: '\u2A77',\n  eDot: '\u2251',\n  eacute: '\u00E9',\n  easter: '\u2A6E',\n  ecaron: '\u011B',\n  ecir: '\u2256',\n  ecirc: '\u00EA',\n  ecolon: '\u2255',\n  ecy: '\u044D',\n  edot: '\u0117',\n  ee: '\u2147',\n  efDot: '\u2252',\n  efr: '\uD835\uDD22',\n  eg: '\u2A9A',\n  egrave: '\u00E8',\n  egs: '\u2A96',\n  egsdot: '\u2A98',\n  el: '\u2A99',\n  elinters: '\u23E7',\n  ell: '\u2113',\n  els: '\u2A95',\n  elsdot: '\u2A97',\n  emacr: '\u0113',\n  empty: '\u2205',\n  emptyset: '\u2205',\n  emptyv: '\u2205',\n  emsp13: '\u2004',\n  emsp14: '\u2005',\n  emsp: '\u2003',\n  eng: '\u014B',\n  ensp: '\u2002',\n  eogon: '\u0119',\n  eopf: '\uD835\uDD56',\n  epar: '\u22D5',\n  eparsl: '\u29E3',\n  eplus: '\u2A71',\n  epsi: '\u03B5',\n  epsilon: '\u03B5',\n  epsiv: '\u03F5',\n  eqcirc: '\u2256',\n  eqcolon: '\u2255',\n  eqsim: '\u2242',\n  eqslantgtr: '\u2A96',\n  eqslantless: '\u2A95',\n  equals: '=',\n  equest: '\u225F',\n  equiv: '\u2261',\n  equivDD: '\u2A78',\n  eqvparsl: '\u29E5',\n  erDot: '\u2253',\n  erarr: '\u2971',\n  escr: '\u212F',\n  esdot: '\u2250',\n  esim: '\u2242',\n  eta: '\u03B7',\n  eth: '\u00F0',\n  euml: '\u00EB',\n  euro: '\u20AC',\n  excl: '!',\n  exist: '\u2203',\n  expectation: '\u2130',\n  exponentiale: '\u2147',\n  fallingdotseq: '\u2252',\n  fcy: '\u0444',\n  female: '\u2640',\n  ffilig: '\uFB03',\n  fflig: '\uFB00',\n  ffllig: '\uFB04',\n  ffr: '\uD835\uDD23',\n  filig: '\uFB01',\n  fjlig: 'fj',\n  flat: '\u266D',\n  fllig: '\uFB02',\n  fltns: '\u25B1',\n  fnof: '\u0192',\n  fopf: '\uD835\uDD57',\n  forall: '\u2200',\n  fork: '\u22D4',\n  forkv: '\u2AD9',\n  fpartint: '\u2A0D',\n  frac12: '\u00BD',\n  frac13: '\u2153',\n  frac14: '\u00BC',\n  frac15: '\u2155',\n  frac16: '\u2159',\n  frac18: '\u215B',\n  frac23: '\u2154',\n  frac25: '\u2156',\n  frac34: '\u00BE',\n  frac35: '\u2157',\n  frac38: '\u215C',\n  frac45: '\u2158',\n  frac56: '\u215A',\n  frac58: '\u215D',\n  frac78: '\u215E',\n  frasl: '\u2044',\n  frown: '\u2322',\n  fscr: '\uD835\uDCBB',\n  gE: '\u2267',\n  gEl: '\u2A8C',\n  gacute: '\u01F5',\n  gamma: '\u03B3',\n  gammad: '\u03DD',\n  gap: '\u2A86',\n  gbreve: '\u011F',\n  gcirc: '\u011D',\n  gcy: '\u0433',\n  gdot: '\u0121',\n  ge: '\u2265',\n  gel: '\u22DB',\n  geq: '\u2265',\n  geqq: '\u2267',\n  geqslant: '\u2A7E',\n  ges: '\u2A7E',\n  gescc: '\u2AA9',\n  gesdot: '\u2A80',\n  gesdoto: '\u2A82',\n  gesdotol: '\u2A84',\n  gesl: '\u22DB\uFE00',\n  gesles: '\u2A94',\n  gfr: '\uD835\uDD24',\n  gg: '\u226B',\n  ggg: '\u22D9',\n  gimel: '\u2137',\n  gjcy: '\u0453',\n  gl: '\u2277',\n  glE: '\u2A92',\n  gla: '\u2AA5',\n  glj: '\u2AA4',\n  gnE: '\u2269',\n  gnap: '\u2A8A',\n  gnapprox: '\u2A8A',\n  gne: '\u2A88',\n  gneq: '\u2A88',\n  gneqq: '\u2269',\n  gnsim: '\u22E7',\n  gopf: '\uD835\uDD58',\n  grave: '`',\n  gscr: '\u210A',\n  gsim: '\u2273',\n  gsime: '\u2A8E',\n  gsiml: '\u2A90',\n  gt: '>',\n  gtcc: '\u2AA7',\n  gtcir: '\u2A7A',\n  gtdot: '\u22D7',\n  gtlPar: '\u2995',\n  gtquest: '\u2A7C',\n  gtrapprox: '\u2A86',\n  gtrarr: '\u2978',\n  gtrdot: '\u22D7',\n  gtreqless: '\u22DB',\n  gtreqqless: '\u2A8C',\n  gtrless: '\u2277',\n  gtrsim: '\u2273',\n  gvertneqq: '\u2269\uFE00',\n  gvnE: '\u2269\uFE00',\n  hArr: '\u21D4',\n  hairsp: '\u200A',\n  half: '\u00BD',\n  hamilt: '\u210B',\n  hardcy: '\u044A',\n  harr: '\u2194',\n  harrcir: '\u2948',\n  harrw: '\u21AD',\n  hbar: '\u210F',\n  hcirc: '\u0125',\n  hearts: '\u2665',\n  heartsuit: '\u2665',\n  hellip: '\u2026',\n  hercon: '\u22B9',\n  hfr: '\uD835\uDD25',\n  hksearow: '\u2925',\n  hkswarow: '\u2926',\n  hoarr: '\u21FF',\n  homtht: '\u223B',\n  hookleftarrow: '\u21A9',\n  hookrightarrow: '\u21AA',\n  hopf: '\uD835\uDD59',\n  horbar: '\u2015',\n  hscr: '\uD835\uDCBD',\n  hslash: '\u210F',\n  hstrok: '\u0127',\n  hybull: '\u2043',\n  hyphen: '\u2010',\n  iacute: '\u00ED',\n  ic: '\u2063',\n  icirc: '\u00EE',\n  icy: '\u0438',\n  iecy: '\u0435',\n  iexcl: '\u00A1',\n  iff: '\u21D4',\n  ifr: '\uD835\uDD26',\n  igrave: '\u00EC',\n  ii: '\u2148',\n  iiiint: '\u2A0C',\n  iiint: '\u222D',\n  iinfin: '\u29DC',\n  iiota: '\u2129',\n  ijlig: '\u0133',\n  imacr: '\u012B',\n  image: '\u2111',\n  imagline: '\u2110',\n  imagpart: '\u2111',\n  imath: '\u0131',\n  imof: '\u22B7',\n  imped: '\u01B5',\n  in: '\u2208',\n  incare: '\u2105',\n  infin: '\u221E',\n  infintie: '\u29DD',\n  inodot: '\u0131',\n  int: '\u222B',\n  intcal: '\u22BA',\n  integers: '\u2124',\n  intercal: '\u22BA',\n  intlarhk: '\u2A17',\n  intprod: '\u2A3C',\n  iocy: '\u0451',\n  iogon: '\u012F',\n  iopf: '\uD835\uDD5A',\n  iota: '\u03B9',\n  iprod: '\u2A3C',\n  iquest: '\u00BF',\n  iscr: '\uD835\uDCBE',\n  isin: '\u2208',\n  isinE: '\u22F9',\n  isindot: '\u22F5',\n  isins: '\u22F4',\n  isinsv: '\u22F3',\n  isinv: '\u2208',\n  it: '\u2062',\n  itilde: '\u0129',\n  iukcy: '\u0456',\n  iuml: '\u00EF',\n  jcirc: '\u0135',\n  jcy: '\u0439',\n  jfr: '\uD835\uDD27',\n  jmath: '\u0237',\n  jopf: '\uD835\uDD5B',\n  jscr: '\uD835\uDCBF',\n  jsercy: '\u0458',\n  jukcy: '\u0454',\n  kappa: '\u03BA',\n  kappav: '\u03F0',\n  kcedil: '\u0137',\n  kcy: '\u043A',\n  kfr: '\uD835\uDD28',\n  kgreen: '\u0138',\n  khcy: '\u0445',\n  kjcy: '\u045C',\n  kopf: '\uD835\uDD5C',\n  kscr: '\uD835\uDCC0',\n  lAarr: '\u21DA',\n  lArr: '\u21D0',\n  lAtail: '\u291B',\n  lBarr: '\u290E',\n  lE: '\u2266',\n  lEg: '\u2A8B',\n  lHar: '\u2962',\n  lacute: '\u013A',\n  laemptyv: '\u29B4',\n  lagran: '\u2112',\n  lambda: '\u03BB',\n  lang: '\u27E8',\n  langd: '\u2991',\n  langle: '\u27E8',\n  lap: '\u2A85',\n  laquo: '\u00AB',\n  larr: '\u2190',\n  larrb: '\u21E4',\n  larrbfs: '\u291F',\n  larrfs: '\u291D',\n  larrhk: '\u21A9',\n  larrlp: '\u21AB',\n  larrpl: '\u2939',\n  larrsim: '\u2973',\n  larrtl: '\u21A2',\n  lat: '\u2AAB',\n  latail: '\u2919',\n  late: '\u2AAD',\n  lates: '\u2AAD\uFE00',\n  lbarr: '\u290C',\n  lbbrk: '\u2772',\n  lbrace: '{',\n  lbrack: '[',\n  lbrke: '\u298B',\n  lbrksld: '\u298F',\n  lbrkslu: '\u298D',\n  lcaron: '\u013E',\n  lcedil: '\u013C',\n  lceil: '\u2308',\n  lcub: '{',\n  lcy: '\u043B',\n  ldca: '\u2936',\n  ldquo: '\u201C',\n  ldquor: '\u201E',\n  ldrdhar: '\u2967',\n  ldrushar: '\u294B',\n  ldsh: '\u21B2',\n  le: '\u2264',\n  leftarrow: '\u2190',\n  leftarrowtail: '\u21A2',\n  leftharpoondown: '\u21BD',\n  leftharpoonup: '\u21BC',\n  leftleftarrows: '\u21C7',\n  leftrightarrow: '\u2194',\n  leftrightarrows: '\u21C6',\n  leftrightharpoons: '\u21CB',\n  leftrightsquigarrow: '\u21AD',\n  leftthreetimes: '\u22CB',\n  leg: '\u22DA',\n  leq: '\u2264',\n  leqq: '\u2266',\n  leqslant: '\u2A7D',\n  les: '\u2A7D',\n  lescc: '\u2AA8',\n  lesdot: '\u2A7F',\n  lesdoto: '\u2A81',\n  lesdotor: '\u2A83',\n  lesg: '\u22DA\uFE00',\n  lesges: '\u2A93',\n  lessapprox: '\u2A85',\n  lessdot: '\u22D6',\n  lesseqgtr: '\u22DA',\n  lesseqqgtr: '\u2A8B',\n  lessgtr: '\u2276',\n  lesssim: '\u2272',\n  lfisht: '\u297C',\n  lfloor: '\u230A',\n  lfr: '\uD835\uDD29',\n  lg: '\u2276',\n  lgE: '\u2A91',\n  lhard: '\u21BD',\n  lharu: '\u21BC',\n  lharul: '\u296A',\n  lhblk: '\u2584',\n  ljcy: '\u0459',\n  ll: '\u226A',\n  llarr: '\u21C7',\n  llcorner: '\u231E',\n  llhard: '\u296B',\n  lltri: '\u25FA',\n  lmidot: '\u0140',\n  lmoust: '\u23B0',\n  lmoustache: '\u23B0',\n  lnE: '\u2268',\n  lnap: '\u2A89',\n  lnapprox: '\u2A89',\n  lne: '\u2A87',\n  lneq: '\u2A87',\n  lneqq: '\u2268',\n  lnsim: '\u22E6',\n  loang: '\u27EC',\n  loarr: '\u21FD',\n  lobrk: '\u27E6',\n  longleftarrow: '\u27F5',\n  longleftrightarrow: '\u27F7',\n  longmapsto: '\u27FC',\n  longrightarrow: '\u27F6',\n  looparrowleft: '\u21AB',\n  looparrowright: '\u21AC',\n  lopar: '\u2985',\n  lopf: '\uD835\uDD5D',\n  loplus: '\u2A2D',\n  lotimes: '\u2A34',\n  lowast: '\u2217',\n  lowbar: '_',\n  loz: '\u25CA',\n  lozenge: '\u25CA',\n  lozf: '\u29EB',\n  lpar: '(',\n  lparlt: '\u2993',\n  lrarr: '\u21C6',\n  lrcorner: '\u231F',\n  lrhar: '\u21CB',\n  lrhard: '\u296D',\n  lrm: '\u200E',\n  lrtri: '\u22BF',\n  lsaquo: '\u2039',\n  lscr: '\uD835\uDCC1',\n  lsh: '\u21B0',\n  lsim: '\u2272',\n  lsime: '\u2A8D',\n  lsimg: '\u2A8F',\n  lsqb: '[',\n  lsquo: '\u2018',\n  lsquor: '\u201A',\n  lstrok: '\u0142',\n  lt: '<',\n  ltcc: '\u2AA6',\n  ltcir: '\u2A79',\n  ltdot: '\u22D6',\n  lthree: '\u22CB',\n  ltimes: '\u22C9',\n  ltlarr: '\u2976',\n  ltquest: '\u2A7B',\n  ltrPar: '\u2996',\n  ltri: '\u25C3',\n  ltrie: '\u22B4',\n  ltrif: '\u25C2',\n  lurdshar: '\u294A',\n  luruhar: '\u2966',\n  lvertneqq: '\u2268\uFE00',\n  lvnE: '\u2268\uFE00',\n  mDDot: '\u223A',\n  macr: '\u00AF',\n  male: '\u2642',\n  malt: '\u2720',\n  maltese: '\u2720',\n  map: '\u21A6',\n  mapsto: '\u21A6',\n  mapstodown: '\u21A7',\n  mapstoleft: '\u21A4',\n  mapstoup: '\u21A5',\n  marker: '\u25AE',\n  mcomma: '\u2A29',\n  mcy: '\u043C',\n  mdash: '\u2014',\n  measuredangle: '\u2221',\n  mfr: '\uD835\uDD2A',\n  mho: '\u2127',\n  micro: '\u00B5',\n  mid: '\u2223',\n  midast: '*',\n  midcir: '\u2AF0',\n  middot: '\u00B7',\n  minus: '\u2212',\n  minusb: '\u229F',\n  minusd: '\u2238',\n  minusdu: '\u2A2A',\n  mlcp: '\u2ADB',\n  mldr: '\u2026',\n  mnplus: '\u2213',\n  models: '\u22A7',\n  mopf: '\uD835\uDD5E',\n  mp: '\u2213',\n  mscr: '\uD835\uDCC2',\n  mstpos: '\u223E',\n  mu: '\u03BC',\n  multimap: '\u22B8',\n  mumap: '\u22B8',\n  nGg: '\u22D9\u0338',\n  nGt: '\u226B\u20D2',\n  nGtv: '\u226B\u0338',\n  nLeftarrow: '\u21CD',\n  nLeftrightarrow: '\u21CE',\n  nLl: '\u22D8\u0338',\n  nLt: '\u226A\u20D2',\n  nLtv: '\u226A\u0338',\n  nRightarrow: '\u21CF',\n  nVDash: '\u22AF',\n  nVdash: '\u22AE',\n  nabla: '\u2207',\n  nacute: '\u0144',\n  nang: '\u2220\u20D2',\n  nap: '\u2249',\n  napE: '\u2A70\u0338',\n  napid: '\u224B\u0338',\n  napos: '\u0149',\n  napprox: '\u2249',\n  natur: '\u266E',\n  natural: '\u266E',\n  naturals: '\u2115',\n  nbsp: '\u00A0',\n  nbump: '\u224E\u0338',\n  nbumpe: '\u224F\u0338',\n  ncap: '\u2A43',\n  ncaron: '\u0148',\n  ncedil: '\u0146',\n  ncong: '\u2247',\n  ncongdot: '\u2A6D\u0338',\n  ncup: '\u2A42',\n  ncy: '\u043D',\n  ndash: '\u2013',\n  ne: '\u2260',\n  neArr: '\u21D7',\n  nearhk: '\u2924',\n  nearr: '\u2197',\n  nearrow: '\u2197',\n  nedot: '\u2250\u0338',\n  nequiv: '\u2262',\n  nesear: '\u2928',\n  nesim: '\u2242\u0338',\n  nexist: '\u2204',\n  nexists: '\u2204',\n  nfr: '\uD835\uDD2B',\n  ngE: '\u2267\u0338',\n  nge: '\u2271',\n  ngeq: '\u2271',\n  ngeqq: '\u2267\u0338',\n  ngeqslant: '\u2A7E\u0338',\n  nges: '\u2A7E\u0338',\n  ngsim: '\u2275',\n  ngt: '\u226F',\n  ngtr: '\u226F',\n  nhArr: '\u21CE',\n  nharr: '\u21AE',\n  nhpar: '\u2AF2',\n  ni: '\u220B',\n  nis: '\u22FC',\n  nisd: '\u22FA',\n  niv: '\u220B',\n  njcy: '\u045A',\n  nlArr: '\u21CD',\n  nlE: '\u2266\u0338',\n  nlarr: '\u219A',\n  nldr: '\u2025',\n  nle: '\u2270',\n  nleftarrow: '\u219A',\n  nleftrightarrow: '\u21AE',\n  nleq: '\u2270',\n  nleqq: '\u2266\u0338',\n  nleqslant: '\u2A7D\u0338',\n  nles: '\u2A7D\u0338',\n  nless: '\u226E',\n  nlsim: '\u2274',\n  nlt: '\u226E',\n  nltri: '\u22EA',\n  nltrie: '\u22EC',\n  nmid: '\u2224',\n  nopf: '\uD835\uDD5F',\n  not: '\u00AC',\n  notin: '\u2209',\n  notinE: '\u22F9\u0338',\n  notindot: '\u22F5\u0338',\n  notinva: '\u2209',\n  notinvb: '\u22F7',\n  notinvc: '\u22F6',\n  notni: '\u220C',\n  notniva: '\u220C',\n  notnivb: '\u22FE',\n  notnivc: '\u22FD',\n  npar: '\u2226',\n  nparallel: '\u2226',\n  nparsl: '\u2AFD\u20E5',\n  npart: '\u2202\u0338',\n  npolint: '\u2A14',\n  npr: '\u2280',\n  nprcue: '\u22E0',\n  npre: '\u2AAF\u0338',\n  nprec: '\u2280',\n  npreceq: '\u2AAF\u0338',\n  nrArr: '\u21CF',\n  nrarr: '\u219B',\n  nrarrc: '\u2933\u0338',\n  nrarrw: '\u219D\u0338',\n  nrightarrow: '\u219B',\n  nrtri: '\u22EB',\n  nrtrie: '\u22ED',\n  nsc: '\u2281',\n  nsccue: '\u22E1',\n  nsce: '\u2AB0\u0338',\n  nscr: '\uD835\uDCC3',\n  nshortmid: '\u2224',\n  nshortparallel: '\u2226',\n  nsim: '\u2241',\n  nsime: '\u2244',\n  nsimeq: '\u2244',\n  nsmid: '\u2224',\n  nspar: '\u2226',\n  nsqsube: '\u22E2',\n  nsqsupe: '\u22E3',\n  nsub: '\u2284',\n  nsubE: '\u2AC5\u0338',\n  nsube: '\u2288',\n  nsubset: '\u2282\u20D2',\n  nsubseteq: '\u2288',\n  nsubseteqq: '\u2AC5\u0338',\n  nsucc: '\u2281',\n  nsucceq: '\u2AB0\u0338',\n  nsup: '\u2285',\n  nsupE: '\u2AC6\u0338',\n  nsupe: '\u2289',\n  nsupset: '\u2283\u20D2',\n  nsupseteq: '\u2289',\n  nsupseteqq: '\u2AC6\u0338',\n  ntgl: '\u2279',\n  ntilde: '\u00F1',\n  ntlg: '\u2278',\n  ntriangleleft: '\u22EA',\n  ntrianglelefteq: '\u22EC',\n  ntriangleright: '\u22EB',\n  ntrianglerighteq: '\u22ED',\n  nu: '\u03BD',\n  num: '#',\n  numero: '\u2116',\n  numsp: '\u2007',\n  nvDash: '\u22AD',\n  nvHarr: '\u2904',\n  nvap: '\u224D\u20D2',\n  nvdash: '\u22AC',\n  nvge: '\u2265\u20D2',\n  nvgt: '>\u20D2',\n  nvinfin: '\u29DE',\n  nvlArr: '\u2902',\n  nvle: '\u2264\u20D2',\n  nvlt: '<\u20D2',\n  nvltrie: '\u22B4\u20D2',\n  nvrArr: '\u2903',\n  nvrtrie: '\u22B5\u20D2',\n  nvsim: '\u223C\u20D2',\n  nwArr: '\u21D6',\n  nwarhk: '\u2923',\n  nwarr: '\u2196',\n  nwarrow: '\u2196',\n  nwnear: '\u2927',\n  oS: '\u24C8',\n  oacute: '\u00F3',\n  oast: '\u229B',\n  ocir: '\u229A',\n  ocirc: '\u00F4',\n  ocy: '\u043E',\n  odash: '\u229D',\n  odblac: '\u0151',\n  odiv: '\u2A38',\n  odot: '\u2299',\n  odsold: '\u29BC',\n  oelig: '\u0153',\n  ofcir: '\u29BF',\n  ofr: '\uD835\uDD2C',\n  ogon: '\u02DB',\n  ograve: '\u00F2',\n  ogt: '\u29C1',\n  ohbar: '\u29B5',\n  ohm: '\u03A9',\n  oint: '\u222E',\n  olarr: '\u21BA',\n  olcir: '\u29BE',\n  olcross: '\u29BB',\n  oline: '\u203E',\n  olt: '\u29C0',\n  omacr: '\u014D',\n  omega: '\u03C9',\n  omicron: '\u03BF',\n  omid: '\u29B6',\n  ominus: '\u2296',\n  oopf: '\uD835\uDD60',\n  opar: '\u29B7',\n  operp: '\u29B9',\n  oplus: '\u2295',\n  or: '\u2228',\n  orarr: '\u21BB',\n  ord: '\u2A5D',\n  order: '\u2134',\n  orderof: '\u2134',\n  ordf: '\u00AA',\n  ordm: '\u00BA',\n  origof: '\u22B6',\n  oror: '\u2A56',\n  orslope: '\u2A57',\n  orv: '\u2A5B',\n  oscr: '\u2134',\n  oslash: '\u00F8',\n  osol: '\u2298',\n  otilde: '\u00F5',\n  otimes: '\u2297',\n  otimesas: '\u2A36',\n  ouml: '\u00F6',\n  ovbar: '\u233D',\n  par: '\u2225',\n  para: '\u00B6',\n  parallel: '\u2225',\n  parsim: '\u2AF3',\n  parsl: '\u2AFD',\n  part: '\u2202',\n  pcy: '\u043F',\n  percnt: '%',\n  period: '.',\n  permil: '\u2030',\n  perp: '\u22A5',\n  pertenk: '\u2031',\n  pfr: '\uD835\uDD2D',\n  phi: '\u03C6',\n  phiv: '\u03D5',\n  phmmat: '\u2133',\n  phone: '\u260E',\n  pi: '\u03C0',\n  pitchfork: '\u22D4',\n  piv: '\u03D6',\n  planck: '\u210F',\n  planckh: '\u210E',\n  plankv: '\u210F',\n  plus: '+',\n  plusacir: '\u2A23',\n  plusb: '\u229E',\n  pluscir: '\u2A22',\n  plusdo: '\u2214',\n  plusdu: '\u2A25',\n  pluse: '\u2A72',\n  plusmn: '\u00B1',\n  plussim: '\u2A26',\n  plustwo: '\u2A27',\n  pm: '\u00B1',\n  pointint: '\u2A15',\n  popf: '\uD835\uDD61',\n  pound: '\u00A3',\n  pr: '\u227A',\n  prE: '\u2AB3',\n  prap: '\u2AB7',\n  prcue: '\u227C',\n  pre: '\u2AAF',\n  prec: '\u227A',\n  precapprox: '\u2AB7',\n  preccurlyeq: '\u227C',\n  preceq: '\u2AAF',\n  precnapprox: '\u2AB9',\n  precneqq: '\u2AB5',\n  precnsim: '\u22E8',\n  precsim: '\u227E',\n  prime: '\u2032',\n  primes: '\u2119',\n  prnE: '\u2AB5',\n  prnap: '\u2AB9',\n  prnsim: '\u22E8',\n  prod: '\u220F',\n  profalar: '\u232E',\n  profline: '\u2312',\n  profsurf: '\u2313',\n  prop: '\u221D',\n  propto: '\u221D',\n  prsim: '\u227E',\n  prurel: '\u22B0',\n  pscr: '\uD835\uDCC5',\n  psi: '\u03C8',\n  puncsp: '\u2008',\n  qfr: '\uD835\uDD2E',\n  qint: '\u2A0C',\n  qopf: '\uD835\uDD62',\n  qprime: '\u2057',\n  qscr: '\uD835\uDCC6',\n  quaternions: '\u210D',\n  quatint: '\u2A16',\n  quest: '?',\n  questeq: '\u225F',\n  quot: '\"',\n  rAarr: '\u21DB',\n  rArr: '\u21D2',\n  rAtail: '\u291C',\n  rBarr: '\u290F',\n  rHar: '\u2964',\n  race: '\u223D\u0331',\n  racute: '\u0155',\n  radic: '\u221A',\n  raemptyv: '\u29B3',\n  rang: '\u27E9',\n  rangd: '\u2992',\n  range: '\u29A5',\n  rangle: '\u27E9',\n  raquo: '\u00BB',\n  rarr: '\u2192',\n  rarrap: '\u2975',\n  rarrb: '\u21E5',\n  rarrbfs: '\u2920',\n  rarrc: '\u2933',\n  rarrfs: '\u291E',\n  rarrhk: '\u21AA',\n  rarrlp: '\u21AC',\n  rarrpl: '\u2945',\n  rarrsim: '\u2974',\n  rarrtl: '\u21A3',\n  rarrw: '\u219D',\n  ratail: '\u291A',\n  ratio: '\u2236',\n  rationals: '\u211A',\n  rbarr: '\u290D',\n  rbbrk: '\u2773',\n  rbrace: '}',\n  rbrack: ']',\n  rbrke: '\u298C',\n  rbrksld: '\u298E',\n  rbrkslu: '\u2990',\n  rcaron: '\u0159',\n  rcedil: '\u0157',\n  rceil: '\u2309',\n  rcub: '}',\n  rcy: '\u0440',\n  rdca: '\u2937',\n  rdldhar: '\u2969',\n  rdquo: '\u201D',\n  rdquor: '\u201D',\n  rdsh: '\u21B3',\n  real: '\u211C',\n  realine: '\u211B',\n  realpart: '\u211C',\n  reals: '\u211D',\n  rect: '\u25AD',\n  reg: '\u00AE',\n  rfisht: '\u297D',\n  rfloor: '\u230B',\n  rfr: '\uD835\uDD2F',\n  rhard: '\u21C1',\n  rharu: '\u21C0',\n  rharul: '\u296C',\n  rho: '\u03C1',\n  rhov: '\u03F1',\n  rightarrow: '\u2192',\n  rightarrowtail: '\u21A3',\n  rightharpoondown: '\u21C1',\n  rightharpoonup: '\u21C0',\n  rightleftarrows: '\u21C4',\n  rightleftharpoons: '\u21CC',\n  rightrightarrows: '\u21C9',\n  rightsquigarrow: '\u219D',\n  rightthreetimes: '\u22CC',\n  ring: '\u02DA',\n  risingdotseq: '\u2253',\n  rlarr: '\u21C4',\n  rlhar: '\u21CC',\n  rlm: '\u200F',\n  rmoust: '\u23B1',\n  rmoustache: '\u23B1',\n  rnmid: '\u2AEE',\n  roang: '\u27ED',\n  roarr: '\u21FE',\n  robrk: '\u27E7',\n  ropar: '\u2986',\n  ropf: '\uD835\uDD63',\n  roplus: '\u2A2E',\n  rotimes: '\u2A35',\n  rpar: ')',\n  rpargt: '\u2994',\n  rppolint: '\u2A12',\n  rrarr: '\u21C9',\n  rsaquo: '\u203A',\n  rscr: '\uD835\uDCC7',\n  rsh: '\u21B1',\n  rsqb: ']',\n  rsquo: '\u2019',\n  rsquor: '\u2019',\n  rthree: '\u22CC',\n  rtimes: '\u22CA',\n  rtri: '\u25B9',\n  rtrie: '\u22B5',\n  rtrif: '\u25B8',\n  rtriltri: '\u29CE',\n  ruluhar: '\u2968',\n  rx: '\u211E',\n  sacute: '\u015B',\n  sbquo: '\u201A',\n  sc: '\u227B',\n  scE: '\u2AB4',\n  scap: '\u2AB8',\n  scaron: '\u0161',\n  sccue: '\u227D',\n  sce: '\u2AB0',\n  scedil: '\u015F',\n  scirc: '\u015D',\n  scnE: '\u2AB6',\n  scnap: '\u2ABA',\n  scnsim: '\u22E9',\n  scpolint: '\u2A13',\n  scsim: '\u227F',\n  scy: '\u0441',\n  sdot: '\u22C5',\n  sdotb: '\u22A1',\n  sdote: '\u2A66',\n  seArr: '\u21D8',\n  searhk: '\u2925',\n  searr: '\u2198',\n  searrow: '\u2198',\n  sect: '\u00A7',\n  semi: ';',\n  seswar: '\u2929',\n  setminus: '\u2216',\n  setmn: '\u2216',\n  sext: '\u2736',\n  sfr: '\uD835\uDD30',\n  sfrown: '\u2322',\n  sharp: '\u266F',\n  shchcy: '\u0449',\n  shcy: '\u0448',\n  shortmid: '\u2223',\n  shortparallel: '\u2225',\n  shy: '\u00AD',\n  sigma: '\u03C3',\n  sigmaf: '\u03C2',\n  sigmav: '\u03C2',\n  sim: '\u223C',\n  simdot: '\u2A6A',\n  sime: '\u2243',\n  simeq: '\u2243',\n  simg: '\u2A9E',\n  simgE: '\u2AA0',\n  siml: '\u2A9D',\n  simlE: '\u2A9F',\n  simne: '\u2246',\n  simplus: '\u2A24',\n  simrarr: '\u2972',\n  slarr: '\u2190',\n  smallsetminus: '\u2216',\n  smashp: '\u2A33',\n  smeparsl: '\u29E4',\n  smid: '\u2223',\n  smile: '\u2323',\n  smt: '\u2AAA',\n  smte: '\u2AAC',\n  smtes: '\u2AAC\uFE00',\n  softcy: '\u044C',\n  sol: '/',\n  solb: '\u29C4',\n  solbar: '\u233F',\n  sopf: '\uD835\uDD64',\n  spades: '\u2660',\n  spadesuit: '\u2660',\n  spar: '\u2225',\n  sqcap: '\u2293',\n  sqcaps: '\u2293\uFE00',\n  sqcup: '\u2294',\n  sqcups: '\u2294\uFE00',\n  sqsub: '\u228F',\n  sqsube: '\u2291',\n  sqsubset: '\u228F',\n  sqsubseteq: '\u2291',\n  sqsup: '\u2290',\n  sqsupe: '\u2292',\n  sqsupset: '\u2290',\n  sqsupseteq: '\u2292',\n  squ: '\u25A1',\n  square: '\u25A1',\n  squarf: '\u25AA',\n  squf: '\u25AA',\n  srarr: '\u2192',\n  sscr: '\uD835\uDCC8',\n  ssetmn: '\u2216',\n  ssmile: '\u2323',\n  sstarf: '\u22C6',\n  star: '\u2606',\n  starf: '\u2605',\n  straightepsilon: '\u03F5',\n  straightphi: '\u03D5',\n  strns: '\u00AF',\n  sub: '\u2282',\n  subE: '\u2AC5',\n  subdot: '\u2ABD',\n  sube: '\u2286',\n  subedot: '\u2AC3',\n  submult: '\u2AC1',\n  subnE: '\u2ACB',\n  subne: '\u228A',\n  subplus: '\u2ABF',\n  subrarr: '\u2979',\n  subset: '\u2282',\n  subseteq: '\u2286',\n  subseteqq: '\u2AC5',\n  subsetneq: '\u228A',\n  subsetneqq: '\u2ACB',\n  subsim: '\u2AC7',\n  subsub: '\u2AD5',\n  subsup: '\u2AD3',\n  succ: '\u227B',\n  succapprox: '\u2AB8',\n  succcurlyeq: '\u227D',\n  succeq: '\u2AB0',\n  succnapprox: '\u2ABA',\n  succneqq: '\u2AB6',\n  succnsim: '\u22E9',\n  succsim: '\u227F',\n  sum: '\u2211',\n  sung: '\u266A',\n  sup1: '\u00B9',\n  sup2: '\u00B2',\n  sup3: '\u00B3',\n  sup: '\u2283',\n  supE: '\u2AC6',\n  supdot: '\u2ABE',\n  supdsub: '\u2AD8',\n  supe: '\u2287',\n  supedot: '\u2AC4',\n  suphsol: '\u27C9',\n  suphsub: '\u2AD7',\n  suplarr: '\u297B',\n  supmult: '\u2AC2',\n  supnE: '\u2ACC',\n  supne: '\u228B',\n  supplus: '\u2AC0',\n  supset: '\u2283',\n  supseteq: '\u2287',\n  supseteqq: '\u2AC6',\n  supsetneq: '\u228B',\n  supsetneqq: '\u2ACC',\n  supsim: '\u2AC8',\n  supsub: '\u2AD4',\n  supsup: '\u2AD6',\n  swArr: '\u21D9',\n  swarhk: '\u2926',\n  swarr: '\u2199',\n  swarrow: '\u2199',\n  swnwar: '\u292A',\n  szlig: '\u00DF',\n  target: '\u2316',\n  tau: '\u03C4',\n  tbrk: '\u23B4',\n  tcaron: '\u0165',\n  tcedil: '\u0163',\n  tcy: '\u0442',\n  tdot: '\u20DB',\n  telrec: '\u2315',\n  tfr: '\uD835\uDD31',\n  there4: '\u2234',\n  therefore: '\u2234',\n  theta: '\u03B8',\n  thetasym: '\u03D1',\n  thetav: '\u03D1',\n  thickapprox: '\u2248',\n  thicksim: '\u223C',\n  thinsp: '\u2009',\n  thkap: '\u2248',\n  thksim: '\u223C',\n  thorn: '\u00FE',\n  tilde: '\u02DC',\n  times: '\u00D7',\n  timesb: '\u22A0',\n  timesbar: '\u2A31',\n  timesd: '\u2A30',\n  tint: '\u222D',\n  toea: '\u2928',\n  top: '\u22A4',\n  topbot: '\u2336',\n  topcir: '\u2AF1',\n  topf: '\uD835\uDD65',\n  topfork: '\u2ADA',\n  tosa: '\u2929',\n  tprime: '\u2034',\n  trade: '\u2122',\n  triangle: '\u25B5',\n  triangledown: '\u25BF',\n  triangleleft: '\u25C3',\n  trianglelefteq: '\u22B4',\n  triangleq: '\u225C',\n  triangleright: '\u25B9',\n  trianglerighteq: '\u22B5',\n  tridot: '\u25EC',\n  trie: '\u225C',\n  triminus: '\u2A3A',\n  triplus: '\u2A39',\n  trisb: '\u29CD',\n  tritime: '\u2A3B',\n  trpezium: '\u23E2',\n  tscr: '\uD835\uDCC9',\n  tscy: '\u0446',\n  tshcy: '\u045B',\n  tstrok: '\u0167',\n  twixt: '\u226C',\n  twoheadleftarrow: '\u219E',\n  twoheadrightarrow: '\u21A0',\n  uArr: '\u21D1',\n  uHar: '\u2963',\n  uacute: '\u00FA',\n  uarr: '\u2191',\n  ubrcy: '\u045E',\n  ubreve: '\u016D',\n  ucirc: '\u00FB',\n  ucy: '\u0443',\n  udarr: '\u21C5',\n  udblac: '\u0171',\n  udhar: '\u296E',\n  ufisht: '\u297E',\n  ufr: '\uD835\uDD32',\n  ugrave: '\u00F9',\n  uharl: '\u21BF',\n  uharr: '\u21BE',\n  uhblk: '\u2580',\n  ulcorn: '\u231C',\n  ulcorner: '\u231C',\n  ulcrop: '\u230F',\n  ultri: '\u25F8',\n  umacr: '\u016B',\n  uml: '\u00A8',\n  uogon: '\u0173',\n  uopf: '\uD835\uDD66',\n  uparrow: '\u2191',\n  updownarrow: '\u2195',\n  upharpoonleft: '\u21BF',\n  upharpoonright: '\u21BE',\n  uplus: '\u228E',\n  upsi: '\u03C5',\n  upsih: '\u03D2',\n  upsilon: '\u03C5',\n  upuparrows: '\u21C8',\n  urcorn: '\u231D',\n  urcorner: '\u231D',\n  urcrop: '\u230E',\n  uring: '\u016F',\n  urtri: '\u25F9',\n  uscr: '\uD835\uDCCA',\n  utdot: '\u22F0',\n  utilde: '\u0169',\n  utri: '\u25B5',\n  utrif: '\u25B4',\n  uuarr: '\u21C8',\n  uuml: '\u00FC',\n  uwangle: '\u29A7',\n  vArr: '\u21D5',\n  vBar: '\u2AE8',\n  vBarv: '\u2AE9',\n  vDash: '\u22A8',\n  vangrt: '\u299C',\n  varepsilon: '\u03F5',\n  varkappa: '\u03F0',\n  varnothing: '\u2205',\n  varphi: '\u03D5',\n  varpi: '\u03D6',\n  varpropto: '\u221D',\n  varr: '\u2195',\n  varrho: '\u03F1',\n  varsigma: '\u03C2',\n  varsubsetneq: '\u228A\uFE00',\n  varsubsetneqq: '\u2ACB\uFE00',\n  varsupsetneq: '\u228B\uFE00',\n  varsupsetneqq: '\u2ACC\uFE00',\n  vartheta: '\u03D1',\n  vartriangleleft: '\u22B2',\n  vartriangleright: '\u22B3',\n  vcy: '\u0432',\n  vdash: '\u22A2',\n  vee: '\u2228',\n  veebar: '\u22BB',\n  veeeq: '\u225A',\n  vellip: '\u22EE',\n  verbar: '|',\n  vert: '|',\n  vfr: '\uD835\uDD33',\n  vltri: '\u22B2',\n  vnsub: '\u2282\u20D2',\n  vnsup: '\u2283\u20D2',\n  vopf: '\uD835\uDD67',\n  vprop: '\u221D',\n  vrtri: '\u22B3',\n  vscr: '\uD835\uDCCB',\n  vsubnE: '\u2ACB\uFE00',\n  vsubne: '\u228A\uFE00',\n  vsupnE: '\u2ACC\uFE00',\n  vsupne: '\u228B\uFE00',\n  vzigzag: '\u299A',\n  wcirc: '\u0175',\n  wedbar: '\u2A5F',\n  wedge: '\u2227',\n  wedgeq: '\u2259',\n  weierp: '\u2118',\n  wfr: '\uD835\uDD34',\n  wopf: '\uD835\uDD68',\n  wp: '\u2118',\n  wr: '\u2240',\n  wreath: '\u2240',\n  wscr: '\uD835\uDCCC',\n  xcap: '\u22C2',\n  xcirc: '\u25EF',\n  xcup: '\u22C3',\n  xdtri: '\u25BD',\n  xfr: '\uD835\uDD35',\n  xhArr: '\u27FA',\n  xharr: '\u27F7',\n  xi: '\u03BE',\n  xlArr: '\u27F8',\n  xlarr: '\u27F5',\n  xmap: '\u27FC',\n  xnis: '\u22FB',\n  xodot: '\u2A00',\n  xopf: '\uD835\uDD69',\n  xoplus: '\u2A01',\n  xotime: '\u2A02',\n  xrArr: '\u27F9',\n  xrarr: '\u27F6',\n  xscr: '\uD835\uDCCD',\n  xsqcup: '\u2A06',\n  xuplus: '\u2A04',\n  xutri: '\u25B3',\n  xvee: '\u22C1',\n  xwedge: '\u22C0',\n  yacute: '\u00FD',\n  yacy: '\u044F',\n  ycirc: '\u0177',\n  ycy: '\u044B',\n  yen: '\u00A5',\n  yfr: '\uD835\uDD36',\n  yicy: '\u0457',\n  yopf: '\uD835\uDD6A',\n  yscr: '\uD835\uDCCE',\n  yucy: '\u044E',\n  yuml: '\u00FF',\n  zacute: '\u017A',\n  zcaron: '\u017E',\n  zcy: '\u0437',\n  zdot: '\u017C',\n  zeetrf: '\u2128',\n  zeta: '\u03B6',\n  zfr: '\uD835\uDD37',\n  zhcy: '\u0436',\n  zigrarr: '\u21DD',\n  zopf: '\uD835\uDD6B',\n  zscr: '\uD835\uDCCF',\n  zwj: '\u200D',\n  zwnj: '\u200C'\n}\n", "import {characterEntities} from 'character-entities'\n\n// To do: next major: use `Object.hasOwn`.\nconst own = {}.hasOwnProperty\n\n/**\n * Decode a single character reference (without the `&` or `;`).\n * You probably only need this when you\u2019re building parsers yourself that follow\n * different rules compared to HTML.\n * This is optimized to be tiny in browsers.\n *\n * @param {string} value\n *   `notin` (named), `#123` (deci), `#x123` (hexa).\n * @returns {string|false}\n *   Decoded reference.\n */\nexport function decodeNamedCharacterReference(value) {\n  return own.call(characterEntities, value) ? characterEntities[value] : false\n}\n", "/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n *   Value to decode.\n * @param {number} base\n *   Numeric base.\n * @returns {string}\n *   Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n  const code = Number.parseInt(value, base);\n  if (\n  // C0 except for HT, LF, FF, CR, space.\n  code < 9 || code === 11 || code > 13 && code < 32 ||\n  // Control character (DEL) of C0, and C1 controls.\n  code > 126 && code < 160 ||\n  // Lone high surrogates and low surrogates.\n  code > 55_295 && code < 57_344 ||\n  // Noncharacters.\n  code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n  (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n  // Out of range\n  code > 1_114_111) {\n    return \"\\uFFFD\";\n  }\n  return String.fromCodePoint(code);\n}", "import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The \u201Cstring\u201D content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n *   Value to decode.\n * @returns {string}\n *   Decoded value.\n */\nexport function decodeString(value) {\n  return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n *   Match.\n * @param {string} $1\n *   Character escape.\n * @param {string} $2\n *   Character reference.\n * @returns {string}\n *   Decoded value\n */\nfunction decode($0, $1, $2) {\n  if ($1) {\n    // Escape.\n    return $1;\n  }\n\n  // Reference.\n  const head = $2.charCodeAt(0);\n  if (head === 35) {\n    const head = $2.charCodeAt(1);\n    const hex = head === 120 || head === 88;\n    return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n  }\n  return decodeNamedCharacterReference($2) || $0;\n}", "/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').TableRow} TableRow\n *\n * @typedef {import('markdown-table').Options} MarkdownTableOptions\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').State} State\n * @typedef {import('mdast-util-to-markdown').Info} Info\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [tableCellPadding=true]\n *   Whether to add a space of padding between delimiters and cells (default:\n *   `true`).\n * @property {boolean | null | undefined} [tablePipeAlign=true]\n *   Whether to align the delimiters (default: `true`).\n * @property {MarkdownTableOptions['stringLength'] | null | undefined} [stringLength]\n *   Function to detect the length of table cell content, used when aligning\n *   the delimiters between cells (optional).\n */\n\nimport {ok as assert} from 'devlop'\nimport {markdownTable} from 'markdown-table'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM tables in\n * markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable GFM tables.\n */\nexport function gfmTableFromMarkdown() {\n  return {\n    enter: {\n      table: enterTable,\n      tableData: enterCell,\n      tableHeader: enterCell,\n      tableRow: enterRow\n    },\n    exit: {\n      codeText: exitCodeText,\n      table: exitTable,\n      tableData: exit,\n      tableHeader: exit,\n      tableRow: exit\n    }\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterTable(token) {\n  const align = token._align\n  assert(align, 'expected `_align` on table')\n  this.enter(\n    {\n      type: 'table',\n      align: align.map(function (d) {\n        return d === 'none' ? null : d\n      }),\n      children: []\n    },\n    token\n  )\n  this.data.inTable = true\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitTable(token) {\n  this.exit(token)\n  this.data.inTable = undefined\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterRow(token) {\n  this.enter({type: 'tableRow', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exit(token) {\n  this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterCell(token) {\n  this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCodeText(token) {\n  let value = this.resume()\n\n  if (this.data.inTable) {\n    value = value.replace(/\\\\([\\\\|])/g, replace)\n  }\n\n  const node = this.stack[this.stack.length - 1]\n  assert(node.type === 'inlineCode')\n  node.value = value\n  this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n  // Pipes work, backslashes don\u2019t (but can\u2019t escape pipes).\n  return $1 === '|' ? $1 : $0\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM tables in\n * markdown.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM tables.\n */\nexport function gfmTableToMarkdown(options) {\n  const settings = options || {}\n  const padding = settings.tableCellPadding\n  const alignDelimiters = settings.tablePipeAlign\n  const stringLength = settings.stringLength\n  const around = padding ? ' ' : '|'\n\n  return {\n    unsafe: [\n      {character: '\\r', inConstruct: 'tableCell'},\n      {character: '\\n', inConstruct: 'tableCell'},\n      // A pipe, when followed by a tab or space (padding), or a dash or colon\n      // (unpadded delimiter row), could result in a table.\n      {atBreak: true, character: '|', after: '[\\t :-]'},\n      // A pipe in a cell must be encoded.\n      {character: '|', inConstruct: 'tableCell'},\n      // A colon must be followed by a dash, in which case it could start a\n      // delimiter row.\n      {atBreak: true, character: ':', after: '-'},\n      // A delimiter row can also start with a dash, when followed by more\n      // dashes, a colon, or a pipe.\n      // This is a stricter version than the built in check for lists, thematic\n      // breaks, and setex heading underlines though:\n      // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n      {atBreak: true, character: '-', after: '[:|-]'}\n    ],\n    handlers: {\n      inlineCode: inlineCodeWithTable,\n      table: handleTable,\n      tableCell: handleTableCell,\n      tableRow: handleTableRow\n    }\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {Table} node\n   */\n  function handleTable(node, _, state, info) {\n    return serializeData(handleTableAsData(node, state, info), node.align)\n  }\n\n  /**\n   * This function isn\u2019t really used normally, because we handle rows at the\n   * table level.\n   * But, if someone passes in a table row, this ensures we make somewhat sense.\n   *\n   * @type {ToMarkdownHandle}\n   * @param {TableRow} node\n   */\n  function handleTableRow(node, _, state, info) {\n    const row = handleTableRowAsData(node, state, info)\n    const value = serializeData([row])\n    // `markdown-table` will always add an align row\n    return value.slice(0, value.indexOf('\\n'))\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {TableCell} node\n   */\n  function handleTableCell(node, _, state, info) {\n    const exit = state.enter('tableCell')\n    const subexit = state.enter('phrasing')\n    const value = state.containerPhrasing(node, {\n      ...info,\n      before: around,\n      after: around\n    })\n    subexit()\n    exit()\n    return value\n  }\n\n  /**\n   * @param {Array<Array<string>>} matrix\n   * @param {Array<string | null | undefined> | null | undefined} [align]\n   */\n  function serializeData(matrix, align) {\n    return markdownTable(matrix, {\n      align,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      alignDelimiters,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      padding,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      stringLength\n    })\n  }\n\n  /**\n   * @param {Table} node\n   * @param {State} state\n   * @param {Info} info\n   */\n  function handleTableAsData(node, state, info) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<Array<string>>} */\n    const result = []\n    const subexit = state.enter('table')\n\n    while (++index < children.length) {\n      result[index] = handleTableRowAsData(children[index], state, info)\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @param {TableRow} node\n   * @param {State} state\n   * @param {Info} info\n   */\n  function handleTableRowAsData(node, state, info) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<string>} */\n    const result = []\n    const subexit = state.enter('tableRow')\n\n    while (++index < children.length) {\n      // Note: the positional info as used here is incorrect.\n      // Making it correct would be impossible due to aligning cells?\n      // And it would need copy/pasting `markdown-table` into this project.\n      result[index] = handleTableCell(children[index], node, state, info)\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {InlineCode} node\n   */\n  function inlineCodeWithTable(node, parent, state) {\n    let value = defaultHandlers.inlineCode(node, parent, state)\n\n    if (state.stack.includes('tableCell')) {\n      value = value.replace(/\\|/g, '\\\\$&')\n    }\n\n    return value\n  }\n}\n", "/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {ok as assert} from 'devlop'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM task\n * list items in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemFromMarkdown() {\n  return {\n    exit: {\n      taskListCheckValueChecked: exitCheck,\n      taskListCheckValueUnchecked: exitCheck,\n      paragraph: exitParagraphWithTaskListItem\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM task list\n * items in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemToMarkdown() {\n  return {\n    unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n    handlers: {listItem: listItemWithTaskListItem}\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCheck(token) {\n  // We\u2019re always in a paragraph, in a list item.\n  const node = this.stack[this.stack.length - 2]\n  assert(node.type === 'listItem')\n  node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitParagraphWithTaskListItem(token) {\n  const parent = this.stack[this.stack.length - 2]\n\n  if (\n    parent &&\n    parent.type === 'listItem' &&\n    typeof parent.checked === 'boolean'\n  ) {\n    const node = this.stack[this.stack.length - 1]\n    assert(node.type === 'paragraph')\n    const head = node.children[0]\n\n    if (head && head.type === 'text') {\n      const siblings = parent.children\n      let index = -1\n      /** @type {Paragraph | undefined} */\n      let firstParaghraph\n\n      while (++index < siblings.length) {\n        const sibling = siblings[index]\n        if (sibling.type === 'paragraph') {\n          firstParaghraph = sibling\n          break\n        }\n      }\n\n      if (firstParaghraph === node) {\n        // Must start with a space or a tab.\n        head.value = head.value.slice(1)\n\n        if (head.value.length === 0) {\n          node.children.shift()\n        } else if (\n          node.position &&\n          head.position &&\n          typeof head.position.start.offset === 'number'\n        ) {\n          head.position.start.column++\n          head.position.start.offset++\n          node.position.start = Object.assign({}, head.position.start)\n        }\n      }\n    }\n  }\n\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, state, info) {\n  const head = node.children[0]\n  const checkable =\n    typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n  const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n  const tracker = state.createTracker(info)\n\n  if (checkable) {\n    tracker.move(checkbox)\n  }\n\n  let value = defaultHandlers.listItem(node, parent, state, {\n    ...info,\n    ...tracker.current()\n  })\n\n  if (checkable) {\n    value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n  }\n\n  return value\n\n  /**\n   * @param {string} $0\n   * @returns {string}\n   */\n  function check($0) {\n    return $0 + checkbox\n  }\n}\n", "/**\n * @import {Extension as FromMarkdownExtension} from 'mdast-util-from-markdown'\n * @import {Options} from 'mdast-util-gfm'\n * @import {Options as ToMarkdownExtension} from 'mdast-util-to-markdown'\n */\n\nimport {\n  gfmAutolinkLiteralFromMarkdown,\n  gfmAutolinkLiteralToMarkdown\n} from 'mdast-util-gfm-autolink-literal'\nimport {\n  gfmFootnoteFromMarkdown,\n  gfmFootnoteToMarkdown\n} from 'mdast-util-gfm-footnote'\nimport {\n  gfmStrikethroughFromMarkdown,\n  gfmStrikethroughToMarkdown\n} from 'mdast-util-gfm-strikethrough'\nimport {gfmTableFromMarkdown, gfmTableToMarkdown} from 'mdast-util-gfm-table'\nimport {\n  gfmTaskListItemFromMarkdown,\n  gfmTaskListItemToMarkdown\n} from 'mdast-util-gfm-task-list-item'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @returns {Array<FromMarkdownExtension>}\n *   Extension for `mdast-util-from-markdown` to enable GFM (autolink literals,\n *   footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmFromMarkdown() {\n  return [\n    gfmAutolinkLiteralFromMarkdown(),\n    gfmFootnoteFromMarkdown(),\n    gfmStrikethroughFromMarkdown(),\n    gfmTableFromMarkdown(),\n    gfmTaskListItemFromMarkdown()\n  ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM (autolink literals,\n *   footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmToMarkdown(options) {\n  return {\n    extensions: [\n      gfmAutolinkLiteralToMarkdown(),\n      gfmFootnoteToMarkdown(options),\n      gfmStrikethroughToMarkdown(),\n      gfmTableToMarkdown(options),\n      gfmTaskListItemToMarkdown()\n    ]\n  }\n}\n", "/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n *   Item type.\n * @param {Array<T>} list\n *   List to operate on.\n * @param {number} start\n *   Index to remove/insert at (can be negative).\n * @param {number} remove\n *   Number of items to remove.\n * @param {Array<T>} items\n *   Items to inject into `list`.\n * @returns {undefined}\n *   Nothing.\n */\nexport function splice(list, start, remove, items) {\n  const end = list.length;\n  let chunkStart = 0;\n  /** @type {Array<unknown>} */\n  let parameters;\n\n  // Make start between zero and `end` (included).\n  if (start < 0) {\n    start = -start > end ? 0 : end + start;\n  } else {\n    start = start > end ? end : start;\n  }\n  remove = remove > 0 ? remove : 0;\n\n  // No need to chunk the items if there\u2019s only a couple (10k) items.\n  if (items.length < 10000) {\n    parameters = Array.from(items);\n    parameters.unshift(start, remove);\n    // @ts-expect-error Hush, it\u2019s fine.\n    list.splice(...parameters);\n  } else {\n    // Delete `remove` items starting from `start`\n    if (remove) list.splice(start, remove);\n\n    // Insert the items in chunks to not cause stack overflows.\n    while (chunkStart < items.length) {\n      parameters = items.slice(chunkStart, chunkStart + 10000);\n      parameters.unshift(start, 0);\n      // @ts-expect-error Hush, it\u2019s fine.\n      list.splice(...parameters);\n      chunkStart += 10000;\n      start += 10000;\n    }\n  }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n *   Item type.\n * @param {Array<T>} list\n *   List to operate on.\n * @param {Array<T>} items\n *   Items to add to `list`.\n * @returns {Array<T>}\n *   Either `list` or `items`.\n */\nexport function push(list, items) {\n  if (list.length > 0) {\n    splice(list, list.length, 0, items);\n    return list;\n  }\n  return items;\n}", "/**\n * @import {\n *   Extension,\n *   Handles,\n *   HtmlExtension,\n *   NormalizedExtension\n * } from 'micromark-util-types'\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {ReadonlyArray<Extension>} extensions\n *   List of syntax extensions.\n * @returns {NormalizedExtension}\n *   A single combined extension.\n */\nexport function combineExtensions(extensions) {\n  /** @type {NormalizedExtension} */\n  const all = {}\n  let index = -1\n\n  while (++index < extensions.length) {\n    syntaxExtension(all, extensions[index])\n  }\n\n  return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n *   Extension to merge into.\n * @param {Extension} extension\n *   Extension to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction syntaxExtension(all, extension) {\n  /** @type {keyof Extension} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    /** @type {Record<string, unknown>} */\n    const left = maybe || (all[hook] = {})\n    /** @type {Record<string, unknown> | undefined} */\n    const right = extension[hook]\n    /** @type {string} */\n    let code\n\n    if (right) {\n      for (code in right) {\n        if (!hasOwnProperty.call(left, code)) left[code] = []\n        const value = right[code]\n        constructs(\n          // @ts-expect-error Looks like a list.\n          left[code],\n          Array.isArray(value) ? value : value ? [value] : []\n        )\n      }\n    }\n  }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array<unknown>} existing\n *   List of constructs to merge into.\n * @param {Array<unknown>} list\n *   List of constructs to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction constructs(existing, list) {\n  let index = -1\n  /** @type {Array<unknown>} */\n  const before = []\n\n  while (++index < list.length) {\n    // @ts-expect-error Looks like an object.\n    ;(list[index].add === 'after' ? existing : before).push(list[index])\n  }\n\n  splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {ReadonlyArray<HtmlExtension>} htmlExtensions\n *   List of HTML extensions.\n * @returns {HtmlExtension}\n *   Single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n  /** @type {HtmlExtension} */\n  const handlers = {}\n  let index = -1\n\n  while (++index < htmlExtensions.length) {\n    htmlExtension(handlers, htmlExtensions[index])\n  }\n\n  return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n *   Extension to merge into.\n * @param {HtmlExtension} extension\n *   Extension to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction htmlExtension(all, extension) {\n  /** @type {keyof HtmlExtension} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    const left = maybe || (all[hook] = {})\n    const right = extension[hook]\n    /** @type {keyof Handles} */\n    let type\n\n    if (right) {\n      for (type in right) {\n        // @ts-expect-error assume document vs regular handler are managed correctly.\n        left[type] = right[type]\n      }\n    }\n  }\n}\n", "/**\n * @import {Code, ConstructRecord, Event, Extension, Previous, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { asciiAlpha, asciiAlphanumeric, asciiControl, markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\nconst wwwPrefix = {\n  tokenize: tokenizeWwwPrefix,\n  partial: true\n};\nconst domain = {\n  tokenize: tokenizeDomain,\n  partial: true\n};\nconst path = {\n  tokenize: tokenizePath,\n  partial: true\n};\nconst trail = {\n  tokenize: tokenizeTrail,\n  partial: true\n};\nconst emailDomainDotTrail = {\n  tokenize: tokenizeEmailDomainDotTrail,\n  partial: true\n};\nconst wwwAutolink = {\n  name: 'wwwAutolink',\n  tokenize: tokenizeWwwAutolink,\n  previous: previousWww\n};\nconst protocolAutolink = {\n  name: 'protocolAutolink',\n  tokenize: tokenizeProtocolAutolink,\n  previous: previousProtocol\n};\nconst emailAutolink = {\n  name: 'emailAutolink',\n  tokenize: tokenizeEmailAutolink,\n  previous: previousEmail\n};\n\n/** @type {ConstructRecord} */\nconst text = {};\n\n/**\n * Create an extension for `micromark` to support GitHub autolink literal\n * syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable GFM\n *   autolink literal syntax.\n */\nexport function gfmAutolinkLiteral() {\n  return {\n    text\n  };\n}\n\n/** @type {Code} */\nlet code = 48;\n\n// Add alphanumerics.\nwhile (code < 123) {\n  text[code] = emailAutolink;\n  code++;\n  if (code === 58) code = 65;else if (code === 91) code = 97;\n}\ntext[43] = emailAutolink;\ntext[45] = emailAutolink;\ntext[46] = emailAutolink;\ntext[95] = emailAutolink;\ntext[72] = [emailAutolink, protocolAutolink];\ntext[104] = [emailAutolink, protocolAutolink];\ntext[87] = [emailAutolink, wwwAutolink];\ntext[119] = [emailAutolink, wwwAutolink];\n\n// To do: perform email autolink literals on events, afterwards.\n// That\u2019s where `markdown-rs` and `cmark-gfm` perform it.\n// It should look for `@`, then for atext backwards, and then for a label\n// forwards.\n// To do: `mailto:`, `xmpp:` protocol as prefix.\n\n/**\n * Email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n *       ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n  const self = this;\n  /** @type {boolean | undefined} */\n  let dot;\n  /** @type {boolean} */\n  let data;\n  return start;\n\n  /**\n   * Start of email autolink literal.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (!gfmAtext(code) || !previousEmail.call(self, self.previous) || previousUnbalanced(self.events)) {\n      return nok(code);\n    }\n    effects.enter('literalAutolink');\n    effects.enter('literalAutolinkEmail');\n    return atext(code);\n  }\n\n  /**\n   * In email atext.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atext(code) {\n    if (gfmAtext(code)) {\n      effects.consume(code);\n      return atext;\n    }\n    if (code === 64) {\n      effects.consume(code);\n      return emailDomain;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In email domain.\n   *\n   * The reference code is a bit overly complex as it handles the `@`, of which\n   * there may be just one.\n   * Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L318>\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomain(code) {\n    // Dot followed by alphanumerical (not `-` or `_`).\n    if (code === 46) {\n      return effects.check(emailDomainDotTrail, emailDomainAfter, emailDomainDot)(code);\n    }\n\n    // Alphanumerical, `-`, and `_`.\n    if (code === 45 || code === 95 || asciiAlphanumeric(code)) {\n      data = true;\n      effects.consume(code);\n      return emailDomain;\n    }\n\n    // To do: `/` if xmpp.\n\n    // Note: normally we\u2019d truncate trailing punctuation from the link.\n    // However, email autolink literals cannot contain any of those markers,\n    // except for `.`, but that can only occur if it isn\u2019t trailing.\n    // So we can ignore truncating!\n    return emailDomainAfter(code);\n  }\n\n  /**\n   * In email domain, on dot that is not a trail.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *                      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomainDot(code) {\n    effects.consume(code);\n    dot = true;\n    return emailDomain;\n  }\n\n  /**\n   * After email domain.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomainAfter(code) {\n    // Domain must not be empty, must include a dot, and must end in alphabetical.\n    // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L332>.\n    if (data && dot && asciiAlpha(self.previous)) {\n      effects.exit('literalAutolinkEmail');\n      effects.exit('literalAutolink');\n      return ok(code);\n    }\n    return nok(code);\n  }\n}\n\n/**\n * `www` autolink literal.\n *\n * ```markdown\n * > | a www.example.org b\n *       ^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n  const self = this;\n  return wwwStart;\n\n  /**\n   * Start of www autolink literal.\n   *\n   * ```markdown\n   * > | www.example.com/a?b#c\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwStart(code) {\n    if (code !== 87 && code !== 119 || !previousWww.call(self, self.previous) || previousUnbalanced(self.events)) {\n      return nok(code);\n    }\n    effects.enter('literalAutolink');\n    effects.enter('literalAutolinkWww');\n    // Note: we *check*, so we can discard the `www.` we parsed.\n    // If it worked, we consider it as a part of the domain.\n    return effects.check(wwwPrefix, effects.attempt(domain, effects.attempt(path, wwwAfter), nok), nok)(code);\n  }\n\n  /**\n   * After a www autolink literal.\n   *\n   * ```markdown\n   * > | www.example.com/a?b#c\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwAfter(code) {\n    effects.exit('literalAutolinkWww');\n    effects.exit('literalAutolink');\n    return ok(code);\n  }\n}\n\n/**\n * Protocol autolink literal.\n *\n * ```markdown\n * > | a https://example.org b\n *       ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n  const self = this;\n  let buffer = '';\n  let seen = false;\n  return protocolStart;\n\n  /**\n   * Start of protocol autolink literal.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolStart(code) {\n    if ((code === 72 || code === 104) && previousProtocol.call(self, self.previous) && !previousUnbalanced(self.events)) {\n      effects.enter('literalAutolink');\n      effects.enter('literalAutolinkHttp');\n      buffer += String.fromCodePoint(code);\n      effects.consume(code);\n      return protocolPrefixInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In protocol.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *     ^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolPrefixInside(code) {\n    // `5` is size of `https`\n    if (asciiAlpha(code) && buffer.length < 5) {\n      // @ts-expect-error: definitely number.\n      buffer += String.fromCodePoint(code);\n      effects.consume(code);\n      return protocolPrefixInside;\n    }\n    if (code === 58) {\n      const protocol = buffer.toLowerCase();\n      if (protocol === 'http' || protocol === 'https') {\n        effects.consume(code);\n        return protocolSlashesInside;\n      }\n    }\n    return nok(code);\n  }\n\n  /**\n   * In slashes.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *           ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolSlashesInside(code) {\n    if (code === 47) {\n      effects.consume(code);\n      if (seen) {\n        return afterProtocol;\n      }\n      seen = true;\n      return protocolSlashesInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After protocol, before domain.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterProtocol(code) {\n    // To do: this is different from `markdown-rs`:\n    // https://github.com/wooorm/markdown-rs/blob/b3a921c761309ae00a51fe348d8a43adbc54b518/src/construct/gfm_autolink_literal.rs#L172-L182\n    return code === null || asciiControl(code) || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || unicodePunctuation(code) ? nok(code) : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code);\n  }\n\n  /**\n   * After a protocol autolink literal.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *                              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolAfter(code) {\n    effects.exit('literalAutolinkHttp');\n    effects.exit('literalAutolink');\n    return ok(code);\n  }\n}\n\n/**\n * `www` prefix.\n *\n * ```markdown\n * > | a www.example.org b\n *       ^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n  let size = 0;\n  return wwwPrefixInside;\n\n  /**\n   * In www prefix.\n   *\n   * ```markdown\n   * > | www.example.com\n   *     ^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwPrefixInside(code) {\n    if ((code === 87 || code === 119) && size < 3) {\n      size++;\n      effects.consume(code);\n      return wwwPrefixInside;\n    }\n    if (code === 46 && size === 3) {\n      effects.consume(code);\n      return wwwPrefixAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After www prefix.\n   *\n   * ```markdown\n   * > | www.example.com\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwPrefixAfter(code) {\n    // If there is *anything*, we can link.\n    return code === null ? nok(code) : ok(code);\n  }\n}\n\n/**\n * Domain.\n *\n * ```markdown\n * > | a https://example.org b\n *               ^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDomain(effects, ok, nok) {\n  /** @type {boolean | undefined} */\n  let underscoreInLastSegment;\n  /** @type {boolean | undefined} */\n  let underscoreInLastLastSegment;\n  /** @type {boolean | undefined} */\n  let seen;\n  return domainInside;\n\n  /**\n   * In domain.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *             ^^^^^^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function domainInside(code) {\n    // Check whether this marker, which is a trailing punctuation\n    // marker, optionally followed by more trailing markers, and then\n    // followed by an end.\n    if (code === 46 || code === 95) {\n      return effects.check(trail, domainAfter, domainAtPunctuation)(code);\n    }\n\n    // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n    // occur, which sounds like ASCII only, but they also support `www.\u9EDE\u770B.com`,\n    // so that\u2019s Unicode.\n    // Instead of some new production for Unicode alphanumerics, markdown\n    // already has that for Unicode punctuation and whitespace, so use those.\n    // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L12>.\n    if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || code !== 45 && unicodePunctuation(code)) {\n      return domainAfter(code);\n    }\n    seen = true;\n    effects.consume(code);\n    return domainInside;\n  }\n\n  /**\n   * In domain, at potential trailing punctuation, that was not trailing.\n   *\n   * ```markdown\n   * > | https://example.com\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function domainAtPunctuation(code) {\n    // There is an underscore in the last segment of the domain\n    if (code === 95) {\n      underscoreInLastSegment = true;\n    }\n    // Otherwise, it\u2019s a `.`: save the last segment underscore in the\n    // penultimate segment slot.\n    else {\n      underscoreInLastLastSegment = underscoreInLastSegment;\n      underscoreInLastSegment = undefined;\n    }\n    effects.consume(code);\n    return domainInside;\n  }\n\n  /**\n   * After domain.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *                        ^\n   * ```\n   *\n   * @type {State} */\n  function domainAfter(code) {\n    // Note: that\u2019s GH says a dot is needed, but it\u2019s not true:\n    // <https://github.com/github/cmark-gfm/issues/279>\n    if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n      return nok(code);\n    }\n    return ok(code);\n  }\n}\n\n/**\n * Path.\n *\n * ```markdown\n * > | a https://example.org/stuff b\n *                          ^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePath(effects, ok) {\n  let sizeOpen = 0;\n  let sizeClose = 0;\n  return pathInside;\n\n  /**\n   * In path.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *                        ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function pathInside(code) {\n    if (code === 40) {\n      sizeOpen++;\n      effects.consume(code);\n      return pathInside;\n    }\n\n    // To do: `markdown-rs` also needs this.\n    // If this is a paren, and there are less closings than openings,\n    // we don\u2019t check for a trail.\n    if (code === 41 && sizeClose < sizeOpen) {\n      return pathAtPunctuation(code);\n    }\n\n    // Check whether this trailing punctuation marker is optionally\n    // followed by more trailing markers, and then followed\n    // by an end.\n    if (code === 33 || code === 34 || code === 38 || code === 39 || code === 41 || code === 42 || code === 44 || code === 46 || code === 58 || code === 59 || code === 60 || code === 63 || code === 93 || code === 95 || code === 126) {\n      return effects.check(trail, ok, pathAtPunctuation)(code);\n    }\n    if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      return ok(code);\n    }\n    effects.consume(code);\n    return pathInside;\n  }\n\n  /**\n   * In path, at potential trailing punctuation, that was not trailing.\n   *\n   * ```markdown\n   * > | https://example.com/a\"b\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function pathAtPunctuation(code) {\n    // Count closing parens.\n    if (code === 41) {\n      sizeClose++;\n    }\n    effects.consume(code);\n    return pathInside;\n  }\n}\n\n/**\n * Trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the entire trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | https://example.com\").\n *                        ^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTrail(effects, ok, nok) {\n  return trail;\n\n  /**\n   * In trail of domain or path.\n   *\n   * ```markdown\n   * > | https://example.com\").\n   *                        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trail(code) {\n    // Regular trailing punctuation.\n    if (code === 33 || code === 34 || code === 39 || code === 41 || code === 42 || code === 44 || code === 46 || code === 58 || code === 59 || code === 63 || code === 95 || code === 126) {\n      effects.consume(code);\n      return trail;\n    }\n\n    // `&` followed by one or more alphabeticals and then a `;`, is\n    // as a whole considered as trailing punctuation.\n    // In all other cases, it is considered as continuation of the URL.\n    if (code === 38) {\n      effects.consume(code);\n      return trailCharacterReferenceStart;\n    }\n\n    // Needed because we allow literals after `[`, as we fix:\n    // <https://github.com/github/cmark-gfm/issues/278>.\n    // Check that it is not followed by `(` or `[`.\n    if (code === 93) {\n      effects.consume(code);\n      return trailBracketAfter;\n    }\n    if (\n    // `<` is an end.\n    code === 60 ||\n    // So is whitespace.\n    code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      return ok(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In trail, after `]`.\n   *\n   * > \uD83D\uDC49 **Note**: this deviates from `cmark-gfm` to fix a bug.\n   * > See end of <https://github.com/github/cmark-gfm/issues/278> for more.\n   *\n   * ```markdown\n   * > | https://example.com](\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailBracketAfter(code) {\n    // Whitespace or something that could start a resource or reference is the end.\n    // Switch back to trail otherwise.\n    if (code === null || code === 40 || code === 91 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      return ok(code);\n    }\n    return trail(code);\n  }\n\n  /**\n   * In character-reference like trail, after `&`.\n   *\n   * ```markdown\n   * > | https://example.com&amp;).\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailCharacterReferenceStart(code) {\n    // When non-alpha, it\u2019s not a trail.\n    return asciiAlpha(code) ? trailCharacterReferenceInside(code) : nok(code);\n  }\n\n  /**\n   * In character-reference like trail.\n   *\n   * ```markdown\n   * > | https://example.com&amp;).\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailCharacterReferenceInside(code) {\n    // Switch back to trail if this is well-formed.\n    if (code === 59) {\n      effects.consume(code);\n      return trail;\n    }\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return trailCharacterReferenceInside;\n    }\n\n    // It\u2019s not a trail.\n    return nok(code);\n  }\n}\n\n/**\n * Dot in email domain trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | contact@example.org.\n *                        ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n  return start;\n\n  /**\n   * Dot.\n   *\n   * ```markdown\n   * > | contact@example.org.\n   *                    ^   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // Must be dot.\n    effects.consume(code);\n    return after;\n  }\n\n  /**\n   * After dot.\n   *\n   * ```markdown\n   * > | contact@example.org.\n   *                     ^   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // Not a trail if alphanumeric.\n    return asciiAlphanumeric(code) ? nok(code) : ok(code);\n  }\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L156>.\n *\n * @type {Previous}\n */\nfunction previousWww(code) {\n  return code === null || code === 40 || code === 42 || code === 95 || code === 91 || code === 93 || code === 126 || markdownLineEndingOrSpace(code);\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L214>.\n *\n * @type {Previous}\n */\nfunction previousProtocol(code) {\n  return !asciiAlpha(code);\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previousEmail(code) {\n  // Do not allow a slash \u201Cinside\u201D atext.\n  // The reference code is a bit weird, but that\u2019s what it results in.\n  // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L307>.\n  // Other than slash, every preceding character is allowed.\n  return !(code === 47 || gfmAtext(code));\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction gfmAtext(code) {\n  return code === 43 || code === 45 || code === 46 || code === 95 || asciiAlphanumeric(code);\n}\n\n/**\n * @param {Array<Event>} events\n * @returns {boolean}\n */\nfunction previousUnbalanced(events) {\n  let index = events.length;\n  let result = false;\n  while (index--) {\n    const token = events[index][1];\n    if ((token.type === 'labelLink' || token.type === 'labelImage') && !token._balanced) {\n      result = true;\n      break;\n    }\n\n    // If we\u2019ve seen this token, and it was marked as not having any unbalanced\n    // bracket before it, we can exit.\n    if (token._gfmAutolinkLiteralWalkedInto) {\n      result = false;\n      break;\n    }\n  }\n  if (events.length > 0 && !result) {\n    // Mark the last token as \u201Cwalked into\u201D w/o finding\n    // anything.\n    events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;\n  }\n  return result;\n}", "/**\n * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {ReadonlyArray<{resolveAll?: Resolver | undefined}>} constructs\n *   List of constructs, optionally with `resolveAll`s.\n * @param {Array<Event>} events\n *   List of events.\n * @param {TokenizeContext} context\n *   Context used by `tokenize`.\n * @returns {Array<Event>}\n *   Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n  /** @type {Array<Resolver>} */\n  const called = []\n  let index = -1\n\n  while (++index < constructs.length) {\n    const resolve = constructs[index].resolveAll\n\n    if (resolve && !called.includes(resolve)) {\n      events = resolve(events, context)\n      called.push(resolve)\n    }\n  }\n\n  return events\n}\n", "/**\n * @import {\n *   Code,\n *   Construct,\n *   Event,\n *   Point,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n  name: 'attention',\n  resolveAll: resolveAllAttention,\n  tokenize: tokenizeAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n  let index = -1;\n  /** @type {number} */\n  let open;\n  /** @type {Token} */\n  let group;\n  /** @type {Token} */\n  let text;\n  /** @type {Token} */\n  let openingSequence;\n  /** @type {Token} */\n  let closingSequence;\n  /** @type {number} */\n  let use;\n  /** @type {Array<Event>} */\n  let nextEvents;\n  /** @type {number} */\n  let offset;\n\n  // Walk through all events.\n  //\n  // Note: performance of this is fine on an mb of normal markdown, but it\u2019s\n  // a bottleneck for malicious stuff.\n  while (++index < events.length) {\n    // Find a token that can close.\n    if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n      open = index;\n\n      // Now walk back to find an opener.\n      while (open--) {\n        // Find a token that can open the closer.\n        if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n        // If the markers are the same:\n        context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n          // If the opening can close or the closing can open,\n          // and the close size *is not* a multiple of three,\n          // but the sum of the opening and closing size *is* multiple of three,\n          // then don\u2019t match.\n          if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n            continue;\n          }\n\n          // Number of markers to use from the sequence.\n          use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n          const start = {\n            ...events[open][1].end\n          };\n          const end = {\n            ...events[index][1].start\n          };\n          movePoint(start, -use);\n          movePoint(end, use);\n          openingSequence = {\n            type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n            start,\n            end: {\n              ...events[open][1].end\n            }\n          };\n          closingSequence = {\n            type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n            start: {\n              ...events[index][1].start\n            },\n            end\n          };\n          text = {\n            type: use > 1 ? \"strongText\" : \"emphasisText\",\n            start: {\n              ...events[open][1].end\n            },\n            end: {\n              ...events[index][1].start\n            }\n          };\n          group = {\n            type: use > 1 ? \"strong\" : \"emphasis\",\n            start: {\n              ...openingSequence.start\n            },\n            end: {\n              ...closingSequence.end\n            }\n          };\n          events[open][1].end = {\n            ...openingSequence.start\n          };\n          events[index][1].start = {\n            ...closingSequence.end\n          };\n          nextEvents = [];\n\n          // If there are more markers in the opening, add them before.\n          if (events[open][1].end.offset - events[open][1].start.offset) {\n            nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n          }\n\n          // Opening.\n          nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n          // Always populated by defaults.\n\n          // Between.\n          nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n          // Closing.\n          nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n          // If there are more markers in the closing, add them after.\n          if (events[index][1].end.offset - events[index][1].start.offset) {\n            offset = 2;\n            nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n          } else {\n            offset = 0;\n          }\n          splice(events, open - 1, index - open + 3, nextEvents);\n          index = open + nextEvents.length - offset - 2;\n          break;\n        }\n      }\n    }\n  }\n\n  // Remove remaining sequences.\n  index = -1;\n  while (++index < events.length) {\n    if (events[index][1].type === 'attentionSequence') {\n      events[index][1].type = 'data';\n    }\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n  const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n  const previous = this.previous;\n  const before = classifyCharacter(previous);\n\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Before a sequence.\n   *\n   * ```markdown\n   * > | **\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    marker = code;\n    effects.enter('attentionSequence');\n    return inside(code);\n  }\n\n  /**\n   * In a sequence.\n   *\n   * ```markdown\n   * > | **\n   *     ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker) {\n      effects.consume(code);\n      return inside;\n    }\n    const token = effects.exit('attentionSequence');\n\n    // To do: next major: move this to resolver, just like `markdown-rs`.\n    const after = classifyCharacter(code);\n\n    // Always populated by defaults.\n\n    const open = !after || after === 2 && before || attentionMarkers.includes(code);\n    const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n    token._open = Boolean(marker === 42 ? open : open && (before || !close));\n    token._close = Boolean(marker === 42 ? close : close && (after || !open));\n    return ok(code);\n  }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It\u2019s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n *   Point.\n * @param {number} offset\n *   Amount to move.\n * @returns {undefined}\n *   Nothing.\n */\nfunction movePoint(point, offset) {\n  point.column += offset;\n  point.offset += offset;\n  point._bufferIndex += offset;\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n  name: 'autolink',\n  tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n  let size = 0;\n  return start;\n\n  /**\n   * Start of an autolink.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *      ^\n   * > | a<user@example.com>b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"autolink\");\n    effects.enter(\"autolinkMarker\");\n    effects.consume(code);\n    effects.exit(\"autolinkMarker\");\n    effects.enter(\"autolinkProtocol\");\n    return open;\n  }\n\n  /**\n   * After `<`, at protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *       ^\n   * > | a<user@example.com>b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return schemeOrEmailAtext;\n    }\n    if (code === 64) {\n      return nok(code);\n    }\n    return emailAtext(code);\n  }\n\n  /**\n   * At second byte of protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function schemeOrEmailAtext(code) {\n    // ASCII alphanumeric and `+`, `-`, and `.`.\n    if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n      // Count the previous alphabetical from `open` too.\n      size = 1;\n      return schemeInsideOrEmailAtext(code);\n    }\n    return emailAtext(code);\n  }\n\n  /**\n   * In ambiguous protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function schemeInsideOrEmailAtext(code) {\n    if (code === 58) {\n      effects.consume(code);\n      size = 0;\n      return urlInside;\n    }\n\n    // ASCII alphanumeric and `+`, `-`, and `.`.\n    if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n      effects.consume(code);\n      return schemeInsideOrEmailAtext;\n    }\n    size = 0;\n    return emailAtext(code);\n  }\n\n  /**\n   * After protocol, in URL.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function urlInside(code) {\n    if (code === 62) {\n      effects.exit(\"autolinkProtocol\");\n      effects.enter(\"autolinkMarker\");\n      effects.consume(code);\n      effects.exit(\"autolinkMarker\");\n      effects.exit(\"autolink\");\n      return ok;\n    }\n\n    // ASCII control, space, or `<`.\n    if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return urlInside;\n  }\n\n  /**\n   * In email atext.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailAtext(code) {\n    if (code === 64) {\n      effects.consume(code);\n      return emailAtSignOrDot;\n    }\n    if (asciiAtext(code)) {\n      effects.consume(code);\n      return emailAtext;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In label, after at-sign or dot.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *                 ^       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailAtSignOrDot(code) {\n    return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n  }\n\n  /**\n   * In label, where `.` and `>` are allowed.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *                   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailLabel(code) {\n    if (code === 46) {\n      effects.consume(code);\n      size = 0;\n      return emailAtSignOrDot;\n    }\n    if (code === 62) {\n      // Exit, then change the token type.\n      effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n      effects.enter(\"autolinkMarker\");\n      effects.consume(code);\n      effects.exit(\"autolinkMarker\");\n      effects.exit(\"autolink\");\n      return ok;\n    }\n    return emailValue(code);\n  }\n\n  /**\n   * In label, where `.` and `>` are *not* allowed.\n   *\n   * Though, this is also used in `emailLabel` to parse other values.\n   *\n   * ```markdown\n   * > | a<user.name@ex-ample.com>b\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailValue(code) {\n    // ASCII alphanumeric or `-`.\n    if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n      const next = code === 45 ? emailValue : emailLabel;\n      effects.consume(code);\n      return next;\n    }\n    return nok(code);\n  }\n}", "/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { markdownSpace } from 'micromark-util-character';\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * *   spaces in markdown are often optional, in which case this factory can be\n *     used and `ok` will be switched to whether spaces were found or not\n * *   one line ending or space can be detected with `markdownSpace(code)` right\n *     before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `\u2409` represents a tab (plus how much it expands) and `\u2420` represents a\n * single space.\n *\n * ```markdown\n * \u2409\n * \u2420\u2420\u2420\u2420\n * \u2409\u2420\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {TokenType} type\n *   Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n *   Max (exclusive).\n * @returns {State}\n *   Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n  const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n  let size = 0;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    if (markdownSpace(code)) {\n      effects.enter(type);\n      return prefix(code);\n    }\n    return ok(code);\n  }\n\n  /** @type {State} */\n  function prefix(code) {\n    if (markdownSpace(code) && size++ < limit) {\n      effects.consume(code);\n      return prefix;\n    }\n    effects.exit(type);\n    return ok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blankLine = {\n  partial: true,\n  tokenize: tokenizeBlankLine\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of blank line.\n   *\n   * > \uD83D\uDC49 **Note**: `\u2420` represents a space character.\n   *\n   * ```markdown\n   * > | \u2420\u2420\u240A\n   *     ^\n   * > | \u240A\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    return markdownSpace(code) ? factorySpace(effects, after, \"linePrefix\")(code) : after(code);\n  }\n\n  /**\n   * At eof/eol, after optional whitespace.\n   *\n   * > \uD83D\uDC49 **Note**: `\u2420` represents a space character.\n   *\n   * ```markdown\n   * > | \u2420\u2420\u240A\n   *       ^\n   * > | \u240A\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   Exiter,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blockQuote = {\n  continuation: {\n    tokenize: tokenizeBlockQuoteContinuation\n  },\n  exit,\n  name: 'blockQuote',\n  tokenize: tokenizeBlockQuoteStart\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of block quote.\n   *\n   * ```markdown\n   * > | > a\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 62) {\n      const state = self.containerState;\n      if (!state.open) {\n        effects.enter(\"blockQuote\", {\n          _container: true\n        });\n        state.open = true;\n      }\n      effects.enter(\"blockQuotePrefix\");\n      effects.enter(\"blockQuoteMarker\");\n      effects.consume(code);\n      effects.exit(\"blockQuoteMarker\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `>`, before optional whitespace.\n   *\n   * ```markdown\n   * > | > a\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    if (markdownSpace(code)) {\n      effects.enter(\"blockQuotePrefixWhitespace\");\n      effects.consume(code);\n      effects.exit(\"blockQuotePrefixWhitespace\");\n      effects.exit(\"blockQuotePrefix\");\n      return ok;\n    }\n    effects.exit(\"blockQuotePrefix\");\n    return ok(code);\n  }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n *   | > a\n * > | > b\n *     ^\n * ```\n *\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n  const self = this;\n  return contStart;\n\n  /**\n   * Start of block quote continuation.\n   *\n   * Also used to parse the first block quote opening.\n   *\n   * ```markdown\n   *   | > a\n   * > | > b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function contStart(code) {\n    if (markdownSpace(code)) {\n      // Always populated by defaults.\n\n      return factorySpace(effects, contBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n    }\n    return contBefore(code);\n  }\n\n  /**\n   * At `>`, after optional whitespace.\n   *\n   * Also used to parse the first block quote opening.\n   *\n   * ```markdown\n   *   | > a\n   * > | > b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function contBefore(code) {\n    return effects.attempt(blockQuote, ok, nok)(code);\n  }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n  effects.exit(\"blockQuote\");\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n  name: 'characterEscape',\n  tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of character escape.\n   *\n   * ```markdown\n   * > | a\\*b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"characterEscape\");\n    effects.enter(\"escapeMarker\");\n    effects.consume(code);\n    effects.exit(\"escapeMarker\");\n    return inside;\n  }\n\n  /**\n   * After `\\`, at punctuation.\n   *\n   * ```markdown\n   * > | a\\*b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    // ASCII punctuation.\n    if (asciiPunctuation(code)) {\n      effects.enter(\"characterEscapeValue\");\n      effects.consume(code);\n      effects.exit(\"characterEscapeValue\");\n      effects.exit(\"characterEscape\");\n      return ok;\n    }\n    return nok(code);\n  }\n}", "/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n  name: 'characterReference',\n  tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n  const self = this;\n  let size = 0;\n  /** @type {number} */\n  let max;\n  /** @type {(code: Code) => boolean} */\n  let test;\n  return start;\n\n  /**\n   * Start of character reference.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *      ^\n   * > | a&#123;b\n   *      ^\n   * > | a&#x9;b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"characterReference\");\n    effects.enter(\"characterReferenceMarker\");\n    effects.consume(code);\n    effects.exit(\"characterReferenceMarker\");\n    return open;\n  }\n\n  /**\n   * After `&`, at `#` for numeric references or alphanumeric for named\n   * references.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *       ^\n   * > | a&#123;b\n   *       ^\n   * > | a&#x9;b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 35) {\n      effects.enter(\"characterReferenceMarkerNumeric\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarkerNumeric\");\n      return numeric;\n    }\n    effects.enter(\"characterReferenceValue\");\n    max = 31;\n    test = asciiAlphanumeric;\n    return value(code);\n  }\n\n  /**\n   * After `#`, at `x` for hexadecimals or digit for decimals.\n   *\n   * ```markdown\n   * > | a&#123;b\n   *        ^\n   * > | a&#x9;b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function numeric(code) {\n    if (code === 88 || code === 120) {\n      effects.enter(\"characterReferenceMarkerHexadecimal\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarkerHexadecimal\");\n      effects.enter(\"characterReferenceValue\");\n      max = 6;\n      test = asciiHexDigit;\n      return value;\n    }\n    effects.enter(\"characterReferenceValue\");\n    max = 7;\n    test = asciiDigit;\n    return value(code);\n  }\n\n  /**\n   * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n   *\n   * The character reference kind defines what and how many characters are\n   * allowed.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *       ^^^\n   * > | a&#123;b\n   *        ^^^\n   * > | a&#x9;b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function value(code) {\n    if (code === 59 && size) {\n      const token = effects.exit(\"characterReferenceValue\");\n      if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n        return nok(code);\n      }\n\n      // To do: `markdown-rs` uses a different name:\n      // `CharacterReferenceMarkerSemi`.\n      effects.enter(\"characterReferenceMarker\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarker\");\n      effects.exit(\"characterReference\");\n      return ok;\n    }\n    if (test(code) && size++ < max) {\n      effects.consume(code);\n      return value;\n    }\n    return nok(code);\n  }\n}", "/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n  partial: true,\n  tokenize: tokenizeNonLazyContinuation\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n  concrete: true,\n  name: 'codeFenced',\n  tokenize: tokenizeCodeFenced\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n  const self = this;\n  /** @type {Construct} */\n  const closeStart = {\n    partial: true,\n    tokenize: tokenizeCloseStart\n  };\n  let initialPrefix = 0;\n  let sizeOpen = 0;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of code.\n   *\n   * ```markdown\n   * > | ~~~js\n   *     ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse whitespace like `markdown-rs`.\n    return beforeSequenceOpen(code);\n  }\n\n  /**\n   * In opening fence, after prefix, at sequence.\n   *\n   * ```markdown\n   * > | ~~~js\n   *     ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeSequenceOpen(code) {\n    const tail = self.events[self.events.length - 1];\n    initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n    marker = code;\n    effects.enter(\"codeFenced\");\n    effects.enter(\"codeFencedFence\");\n    effects.enter(\"codeFencedFenceSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening fence sequence.\n   *\n   * ```markdown\n   * > | ~~~js\n   *      ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === marker) {\n      sizeOpen++;\n      effects.consume(code);\n      return sequenceOpen;\n    }\n    if (sizeOpen < 3) {\n      return nok(code);\n    }\n    effects.exit(\"codeFencedFenceSequence\");\n    return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n  }\n\n  /**\n   * In opening fence, after the sequence (and optional whitespace), before info.\n   *\n   * ```markdown\n   * > | ~~~js\n   *        ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function infoBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFencedFence\");\n      return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n    }\n    effects.enter(\"codeFencedFenceInfo\");\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return info(code);\n  }\n\n  /**\n   * In info.\n   *\n   * ```markdown\n   * > | ~~~js\n   *        ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function info(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceInfo\");\n      return infoBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceInfo\");\n      return factorySpace(effects, metaBefore, \"whitespace\")(code);\n    }\n    if (code === 96 && code === marker) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return info;\n  }\n\n  /**\n   * In opening fence, after info and whitespace, before meta.\n   *\n   * ```markdown\n   * > | ~~~js eval\n   *           ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function metaBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return infoBefore(code);\n    }\n    effects.enter(\"codeFencedFenceMeta\");\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return meta(code);\n  }\n\n  /**\n   * In meta.\n   *\n   * ```markdown\n   * > | ~~~js eval\n   *           ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function meta(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceMeta\");\n      return infoBefore(code);\n    }\n    if (code === 96 && code === marker) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return meta;\n  }\n\n  /**\n   * At eol/eof in code, before a non-lazy closing fence or content.\n   *\n   * ```markdown\n   * > | ~~~js\n   *          ^\n   * > | alert(1)\n   *             ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function atNonLazyBreak(code) {\n    return effects.attempt(closeStart, after, contentBefore)(code);\n  }\n\n  /**\n   * Before code content, not a closing fence, at eol.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *             ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentBefore(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return contentStart;\n  }\n\n  /**\n   * Before code content, not a closing fence.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentStart(code) {\n    return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n  }\n\n  /**\n   * Before code content, after optional prefix.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeContentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n    }\n    effects.enter(\"codeFlowValue\");\n    return contentChunk(code);\n  }\n\n  /**\n   * In code content.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^^^^^^^^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFlowValue\");\n      return beforeContentChunk(code);\n    }\n    effects.consume(code);\n    return contentChunk;\n  }\n\n  /**\n   * After code.\n   *\n   * ```markdown\n   *   | ~~~js\n   *   | alert(1)\n   * > | ~~~\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    effects.exit(\"codeFenced\");\n    return ok(code);\n  }\n\n  /**\n   * @this {TokenizeContext}\n   *   Context.\n   * @type {Tokenizer}\n   */\n  function tokenizeCloseStart(effects, ok, nok) {\n    let size = 0;\n    return startBefore;\n\n    /**\n     *\n     *\n     * @type {State}\n     */\n    function startBefore(code) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return start;\n    }\n\n    /**\n     * Before closing fence, at optional whitespace.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function start(code) {\n      // Always populated by defaults.\n\n      // To do: `enter` here or in next state?\n      effects.enter(\"codeFencedFence\");\n      return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n    }\n\n    /**\n     * In closing fence, after optional whitespace, at sequence.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function beforeSequenceClose(code) {\n      if (code === marker) {\n        effects.enter(\"codeFencedFenceSequence\");\n        return sequenceClose(code);\n      }\n      return nok(code);\n    }\n\n    /**\n     * In closing fence sequence.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceClose(code) {\n      if (code === marker) {\n        size++;\n        effects.consume(code);\n        return sequenceClose;\n      }\n      if (size >= sizeOpen) {\n        effects.exit(\"codeFencedFenceSequence\");\n        return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n      }\n      return nok(code);\n    }\n\n    /**\n     * After closing fence sequence, after optional whitespace.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *        ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceCloseAfter(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit(\"codeFencedFence\");\n        return ok(code);\n      }\n      return nok(code);\n    }\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return lineStart;\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function lineStart(code) {\n    return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeIndented = {\n  name: 'codeIndented',\n  tokenize: tokenizeCodeIndented\n};\n\n/** @type {Construct} */\nconst furtherStart = {\n  partial: true,\n  tokenize: tokenizeFurtherStart\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of code (indented).\n   *\n   * > **Parsing note**: it is not needed to check if this first line is a\n   * > filled line (that it has a non-whitespace character), because blank lines\n   * > are parsed already, so we never run into that.\n   *\n   * ```markdown\n   * > |     aaa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: manually check if interrupting like `markdown-rs`.\n\n    effects.enter(\"codeIndented\");\n    // To do: use an improved `space_or_tab` function like `markdown-rs`,\n    // so that we can drop the next state.\n    return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n  }\n\n  /**\n   * At start, after 1 or 4 spaces.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code) : nok(code);\n  }\n\n  /**\n   * At a break.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^  ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === null) {\n      return after(code);\n    }\n    if (markdownLineEnding(code)) {\n      return effects.attempt(furtherStart, atBreak, after)(code);\n    }\n    effects.enter(\"codeFlowValue\");\n    return inside(code);\n  }\n\n  /**\n   * In code content.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFlowValue\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return inside;\n  }\n\n  /** @type {State} */\n  function after(code) {\n    effects.exit(\"codeIndented\");\n    // To do: allow interrupting like `markdown-rs`.\n    // Feel free to interrupt.\n    // tokenizer.interrupt = false\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n  const self = this;\n  return furtherStart;\n\n  /**\n   * At eol, trying to parse another indent.\n   *\n   * ```markdown\n   * > |     aaa\n   *            ^\n   *   |     bbb\n   * ```\n   *\n   * @type {State}\n   */\n  function furtherStart(code) {\n    // To do: improve `lazy` / `pierce` handling.\n    // If this is a lazy line, it can\u2019t be code.\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code);\n    }\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return furtherStart;\n    }\n\n    // To do: the code here in `micromark-js` is a bit different from\n    // `markdown-rs` because there it can attempt spaces.\n    // We can\u2019t yet.\n    //\n    // To do: use an improved `space_or_tab` function like `markdown-rs`,\n    // so that we can drop the next state.\n    return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n  }\n\n  /**\n   * At start, after 1 or 4 spaces.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart(code) : nok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   Previous,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n  name: 'codeText',\n  previous,\n  resolve: resolveCodeText,\n  tokenize: tokenizeCodeText\n};\n\n// To do: next major: don\u2019t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n  let tailExitIndex = events.length - 4;\n  let headEnterIndex = 3;\n  /** @type {number} */\n  let index;\n  /** @type {number | undefined} */\n  let enter;\n\n  // If we start and end with an EOL or a space.\n  if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n    index = headEnterIndex;\n\n    // And we have data.\n    while (++index < tailExitIndex) {\n      if (events[index][1].type === \"codeTextData\") {\n        // Then we have padding.\n        events[headEnterIndex][1].type = \"codeTextPadding\";\n        events[tailExitIndex][1].type = \"codeTextPadding\";\n        headEnterIndex += 2;\n        tailExitIndex -= 2;\n        break;\n      }\n    }\n  }\n\n  // Merge adjacent spaces and data.\n  index = headEnterIndex - 1;\n  tailExitIndex++;\n  while (++index <= tailExitIndex) {\n    if (enter === undefined) {\n      if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n        enter = index;\n      }\n    } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n      events[enter][1].type = \"codeTextData\";\n      if (index !== enter + 2) {\n        events[enter][1].end = events[index - 1][1].end;\n        events.splice(enter + 2, index - enter - 2);\n        tailExitIndex -= index - enter - 2;\n        index = enter + 2;\n      }\n      enter = undefined;\n    }\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Previous}\n */\nfunction previous(code) {\n  // If there is a previous code, there will always be a tail.\n  return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n  const self = this;\n  let sizeOpen = 0;\n  /** @type {number} */\n  let size;\n  /** @type {Token} */\n  let token;\n  return start;\n\n  /**\n   * Start of code (text).\n   *\n   * ```markdown\n   * > | `a`\n   *     ^\n   * > | \\`a`\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"codeText\");\n    effects.enter(\"codeTextSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening sequence.\n   *\n   * ```markdown\n   * > | `a`\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 96) {\n      effects.consume(code);\n      sizeOpen++;\n      return sequenceOpen;\n    }\n    effects.exit(\"codeTextSequence\");\n    return between(code);\n  }\n\n  /**\n   * Between something and something else.\n   *\n   * ```markdown\n   * > | `a`\n   *      ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function between(code) {\n    // EOF.\n    if (code === null) {\n      return nok(code);\n    }\n\n    // To do: next major: don\u2019t do spaces in resolve, but when compiling,\n    // like `markdown-rs`.\n    // Tabs don\u2019t work, and virtual spaces don\u2019t make sense.\n    if (code === 32) {\n      effects.enter('space');\n      effects.consume(code);\n      effects.exit('space');\n      return between;\n    }\n\n    // Closing fence? Could also be data.\n    if (code === 96) {\n      token = effects.enter(\"codeTextSequence\");\n      size = 0;\n      return sequenceClose(code);\n    }\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return between;\n    }\n\n    // Data.\n    effects.enter(\"codeTextData\");\n    return data(code);\n  }\n\n  /**\n   * In data.\n   *\n   * ```markdown\n   * > | `a`\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function data(code) {\n    if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n      effects.exit(\"codeTextData\");\n      return between(code);\n    }\n    effects.consume(code);\n    return data;\n  }\n\n  /**\n   * In closing sequence.\n   *\n   * ```markdown\n   * > | `a`\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceClose(code) {\n    // More.\n    if (code === 96) {\n      effects.consume(code);\n      size++;\n      return sequenceClose;\n    }\n\n    // Done!\n    if (size === sizeOpen) {\n      effects.exit(\"codeTextSequence\");\n      effects.exit(\"codeText\");\n      return ok(code);\n    }\n\n    // More or less accents: mark as data.\n    token.type = \"codeTextData\";\n    return data(code);\n  }\n}", "/**\n * Some of the internal operations of micromark do lots of editing\n * operations on very large arrays. This runs into problems with two\n * properties of most circa-2020 JavaScript interpreters:\n *\n *  - Array-length modifications at the high end of an array (push/pop) are\n *    expected to be common and are implemented in (amortized) time\n *    proportional to the number of elements added or removed, whereas\n *    other operations (shift/unshift and splice) are much less efficient.\n *  - Function arguments are passed on the stack, so adding tens of thousands\n *    of elements to an array with `arr.push(...newElements)` will frequently\n *    cause stack overflows. (see <https://stackoverflow.com/questions/22123769/rangeerror-maximum-call-stack-size-exceeded-why>)\n *\n * SpliceBuffers are an implementation of gap buffers, which are a\n * generalization of the \"queue made of two stacks\" idea. The splice buffer\n * maintains a cursor, and moving the cursor has cost proportional to the\n * distance the cursor moves, but inserting, deleting, or splicing in\n * new information at the cursor is as efficient as the push/pop operation.\n * This allows for an efficient sequence of splices (or pushes, pops, shifts,\n * or unshifts) as long such edits happen at the same part of the array or\n * generally sweep through the array from the beginning to the end.\n *\n * The interface for splice buffers also supports large numbers of inputs by\n * passing a single array argument rather passing multiple arguments on the\n * function call stack.\n *\n * @template T\n *   Item type.\n */\nexport class SpliceBuffer {\n  /**\n   * @param {ReadonlyArray<T> | null | undefined} [initial]\n   *   Initial items (optional).\n   * @returns\n   *   Splice buffer.\n   */\n  constructor(initial) {\n    /** @type {Array<T>} */\n    this.left = initial ? [...initial] : [];\n    /** @type {Array<T>} */\n    this.right = [];\n  }\n\n  /**\n   * Array access;\n   * does not move the cursor.\n   *\n   * @param {number} index\n   *   Index.\n   * @return {T}\n   *   Item.\n   */\n  get(index) {\n    if (index < 0 || index >= this.left.length + this.right.length) {\n      throw new RangeError('Cannot access index `' + index + '` in a splice buffer of size `' + (this.left.length + this.right.length) + '`');\n    }\n    if (index < this.left.length) return this.left[index];\n    return this.right[this.right.length - index + this.left.length - 1];\n  }\n\n  /**\n   * The length of the splice buffer, one greater than the largest index in the\n   * array.\n   */\n  get length() {\n    return this.left.length + this.right.length;\n  }\n\n  /**\n   * Remove and return `list[0]`;\n   * moves the cursor to `0`.\n   *\n   * @returns {T | undefined}\n   *   Item, optional.\n   */\n  shift() {\n    this.setCursor(0);\n    return this.right.pop();\n  }\n\n  /**\n   * Slice the buffer to get an array;\n   * does not move the cursor.\n   *\n   * @param {number} start\n   *   Start.\n   * @param {number | null | undefined} [end]\n   *   End (optional).\n   * @returns {Array<T>}\n   *   Array of items.\n   */\n  slice(start, end) {\n    /** @type {number} */\n    const stop = end === null || end === undefined ? Number.POSITIVE_INFINITY : end;\n    if (stop < this.left.length) {\n      return this.left.slice(start, stop);\n    }\n    if (start > this.left.length) {\n      return this.right.slice(this.right.length - stop + this.left.length, this.right.length - start + this.left.length).reverse();\n    }\n    return this.left.slice(start).concat(this.right.slice(this.right.length - stop + this.left.length).reverse());\n  }\n\n  /**\n   * Mimics the behavior of Array.prototype.splice() except for the change of\n   * interface necessary to avoid segfaults when patching in very large arrays.\n   *\n   * This operation moves cursor is moved to `start` and results in the cursor\n   * placed after any inserted items.\n   *\n   * @param {number} start\n   *   Start;\n   *   zero-based index at which to start changing the array;\n   *   negative numbers count backwards from the end of the array and values\n   *   that are out-of bounds are clamped to the appropriate end of the array.\n   * @param {number | null | undefined} [deleteCount=0]\n   *   Delete count (default: `0`);\n   *   maximum number of elements to delete, starting from start.\n   * @param {Array<T> | null | undefined} [items=[]]\n   *   Items to include in place of the deleted items (default: `[]`).\n   * @return {Array<T>}\n   *   Any removed items.\n   */\n  splice(start, deleteCount, items) {\n    /** @type {number} */\n    const count = deleteCount || 0;\n    this.setCursor(Math.trunc(start));\n    const removed = this.right.splice(this.right.length - count, Number.POSITIVE_INFINITY);\n    if (items) chunkedPush(this.left, items);\n    return removed.reverse();\n  }\n\n  /**\n   * Remove and return the highest-numbered item in the array, so\n   * `list[list.length - 1]`;\n   * Moves the cursor to `length`.\n   *\n   * @returns {T | undefined}\n   *   Item, optional.\n   */\n  pop() {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    return this.left.pop();\n  }\n\n  /**\n   * Inserts a single item to the high-numbered side of the array;\n   * moves the cursor to `length`.\n   *\n   * @param {T} item\n   *   Item.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  push(item) {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    this.left.push(item);\n  }\n\n  /**\n   * Inserts many items to the high-numbered side of the array.\n   * Moves the cursor to `length`.\n   *\n   * @param {Array<T>} items\n   *   Items.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  pushMany(items) {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    chunkedPush(this.left, items);\n  }\n\n  /**\n   * Inserts a single item to the low-numbered side of the array;\n   * Moves the cursor to `0`.\n   *\n   * @param {T} item\n   *   Item.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  unshift(item) {\n    this.setCursor(0);\n    this.right.push(item);\n  }\n\n  /**\n   * Inserts many items to the low-numbered side of the array;\n   * moves the cursor to `0`.\n   *\n   * @param {Array<T>} items\n   *   Items.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  unshiftMany(items) {\n    this.setCursor(0);\n    chunkedPush(this.right, items.reverse());\n  }\n\n  /**\n   * Move the cursor to a specific position in the array. Requires\n   * time proportional to the distance moved.\n   *\n   * If `n < 0`, the cursor will end up at the beginning.\n   * If `n > length`, the cursor will end up at the end.\n   *\n   * @param {number} n\n   *   Position.\n   * @return {undefined}\n   *   Nothing.\n   */\n  setCursor(n) {\n    if (n === this.left.length || n > this.left.length && this.right.length === 0 || n < 0 && this.left.length === 0) return;\n    if (n < this.left.length) {\n      // Move cursor to the this.left\n      const removed = this.left.splice(n, Number.POSITIVE_INFINITY);\n      chunkedPush(this.right, removed.reverse());\n    } else {\n      // Move cursor to the this.right\n      const removed = this.right.splice(this.left.length + this.right.length - n, Number.POSITIVE_INFINITY);\n      chunkedPush(this.left, removed.reverse());\n    }\n  }\n}\n\n/**\n * Avoid stack overflow by pushing items onto the stack in segments\n *\n * @template T\n *   Item type.\n * @param {Array<T>} list\n *   List to inject into.\n * @param {ReadonlyArray<T>} right\n *   Items to inject.\n * @return {undefined}\n *   Nothing.\n */\nfunction chunkedPush(list, right) {\n  /** @type {number} */\n  let chunkStart = 0;\n  if (right.length < 10000) {\n    list.push(...right);\n  } else {\n    while (chunkStart < right.length) {\n      list.push(...right.slice(chunkStart, chunkStart + 10000));\n      chunkStart += 10000;\n    }\n  }\n}", "/**\n * @import {Chunk, Event, Token} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { SpliceBuffer } from './lib/splice-buffer.js';\n\n// Hidden API exposed for testing.\nexport { SpliceBuffer } from './lib/splice-buffer.js';\n\n/**\n * Tokenize subcontent.\n *\n * @param {Array<Event>} eventsArray\n *   List of events.\n * @returns {boolean}\n *   Whether subtokens were found.\n */\n// eslint-disable-next-line complexity\nexport function subtokenize(eventsArray) {\n  /** @type {Record<string, number>} */\n  const jumps = {};\n  let index = -1;\n  /** @type {Event} */\n  let event;\n  /** @type {number | undefined} */\n  let lineIndex;\n  /** @type {number} */\n  let otherIndex;\n  /** @type {Event} */\n  let otherEvent;\n  /** @type {Array<Event>} */\n  let parameters;\n  /** @type {Array<Event>} */\n  let subevents;\n  /** @type {boolean | undefined} */\n  let more;\n  const events = new SpliceBuffer(eventsArray);\n  while (++index < events.length) {\n    while (index in jumps) {\n      index = jumps[index];\n    }\n    event = events.get(index);\n\n    // Add a hook for the GFM tasklist extension, which needs to know if text\n    // is in the first content of a list item.\n    if (index && event[1].type === \"chunkFlow\" && events.get(index - 1)[1].type === \"listItemPrefix\") {\n      subevents = event[1]._tokenizer.events;\n      otherIndex = 0;\n      if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"lineEndingBlank\") {\n        otherIndex += 2;\n      }\n      if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"content\") {\n        while (++otherIndex < subevents.length) {\n          if (subevents[otherIndex][1].type === \"content\") {\n            break;\n          }\n          if (subevents[otherIndex][1].type === \"chunkText\") {\n            subevents[otherIndex][1]._isInFirstContentOfListItem = true;\n            otherIndex++;\n          }\n        }\n      }\n    }\n\n    // Enter.\n    if (event[0] === 'enter') {\n      if (event[1].contentType) {\n        Object.assign(jumps, subcontent(events, index));\n        index = jumps[index];\n        more = true;\n      }\n    }\n    // Exit.\n    else if (event[1]._container) {\n      otherIndex = index;\n      lineIndex = undefined;\n      while (otherIndex--) {\n        otherEvent = events.get(otherIndex);\n        if (otherEvent[1].type === \"lineEnding\" || otherEvent[1].type === \"lineEndingBlank\") {\n          if (otherEvent[0] === 'enter') {\n            if (lineIndex) {\n              events.get(lineIndex)[1].type = \"lineEndingBlank\";\n            }\n            otherEvent[1].type = \"lineEnding\";\n            lineIndex = otherIndex;\n          }\n        } else if (otherEvent[1].type === \"linePrefix\" || otherEvent[1].type === \"listItemIndent\") {\n          // Move past.\n        } else {\n          break;\n        }\n      }\n      if (lineIndex) {\n        // Fix position.\n        event[1].end = {\n          ...events.get(lineIndex)[1].start\n        };\n\n        // Switch container exit w/ line endings.\n        parameters = events.slice(lineIndex, index);\n        parameters.unshift(event);\n        events.splice(lineIndex, index - lineIndex + 1, parameters);\n      }\n    }\n  }\n\n  // The changes to the `events` buffer must be copied back into the eventsArray\n  splice(eventsArray, 0, Number.POSITIVE_INFINITY, events.slice(0));\n  return !more;\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {SpliceBuffer<Event>} events\n *   Events.\n * @param {number} eventIndex\n *   Index.\n * @returns {Record<string, number>}\n *   Gaps.\n */\nfunction subcontent(events, eventIndex) {\n  const token = events.get(eventIndex)[1];\n  const context = events.get(eventIndex)[2];\n  let startPosition = eventIndex - 1;\n  /** @type {Array<number>} */\n  const startPositions = [];\n  let tokenizer = token._tokenizer;\n  if (!tokenizer) {\n    tokenizer = context.parser[token.contentType](token.start);\n    if (token._contentTypeTextTrailing) {\n      tokenizer._contentTypeTextTrailing = true;\n    }\n  }\n  const childEvents = tokenizer.events;\n  /** @type {Array<[number, number]>} */\n  const jumps = [];\n  /** @type {Record<string, number>} */\n  const gaps = {};\n  /** @type {Array<Chunk>} */\n  let stream;\n  /** @type {Token | undefined} */\n  let previous;\n  let index = -1;\n  /** @type {Token | undefined} */\n  let current = token;\n  let adjust = 0;\n  let start = 0;\n  const breaks = [start];\n\n  // Loop forward through the linked tokens to pass them in order to the\n  // subtokenizer.\n  while (current) {\n    // Find the position of the event for this token.\n    while (events.get(++startPosition)[1] !== current) {\n      // Empty.\n    }\n    startPositions.push(startPosition);\n    if (!current._tokenizer) {\n      stream = context.sliceStream(current);\n      if (!current.next) {\n        stream.push(null);\n      }\n      if (previous) {\n        tokenizer.defineSkip(current.start);\n      }\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = true;\n      }\n      tokenizer.write(stream);\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = undefined;\n      }\n    }\n\n    // Unravel the next token.\n    previous = current;\n    current = current.next;\n  }\n\n  // Now, loop back through all events (and linked tokens), to figure out which\n  // parts belong where.\n  current = token;\n  while (++index < childEvents.length) {\n    if (\n    // Find a void token that includes a break.\n    childEvents[index][0] === 'exit' && childEvents[index - 1][0] === 'enter' && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {\n      start = index + 1;\n      breaks.push(start);\n      // Help GC.\n      current._tokenizer = undefined;\n      current.previous = undefined;\n      current = current.next;\n    }\n  }\n\n  // Help GC.\n  tokenizer.events = [];\n\n  // If there\u2019s one more token (which is the cases for lines that end in an\n  // EOF), that\u2019s perfect: the last point we found starts it.\n  // If there isn\u2019t then make sure any remaining content is added to it.\n  if (current) {\n    // Help GC.\n    current._tokenizer = undefined;\n    current.previous = undefined;\n  } else {\n    breaks.pop();\n  }\n\n  // Now splice the events from the subtokenizer into the current events,\n  // moving back to front so that splice indices aren\u2019t affected.\n  index = breaks.length;\n  while (index--) {\n    const slice = childEvents.slice(breaks[index], breaks[index + 1]);\n    const start = startPositions.pop();\n    jumps.push([start, start + slice.length - 1]);\n    events.splice(start, 2, slice);\n  }\n  jumps.reverse();\n  index = -1;\n  while (++index < jumps.length) {\n    gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];\n    adjust += jumps[index][1] - jumps[index][0] - 1;\n  }\n  return gaps;\n}", "/**\n * @import {\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { subtokenize } from 'micromark-util-subtokenize';\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n  resolve: resolveContent,\n  tokenize: tokenizeContent\n};\n\n/** @type {Construct} */\nconst continuationConstruct = {\n  partial: true,\n  tokenize: tokenizeContinuation\n};\n\n/**\n * Content is transparent: it\u2019s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n  subtokenize(events);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n  /** @type {Token | undefined} */\n  let previous;\n  return chunkStart;\n\n  /**\n   * Before a content chunk.\n   *\n   * ```markdown\n   * > | abc\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function chunkStart(code) {\n    effects.enter(\"content\");\n    previous = effects.enter(\"chunkContent\", {\n      contentType: \"content\"\n    });\n    return chunkInside(code);\n  }\n\n  /**\n   * In a content chunk.\n   *\n   * ```markdown\n   * > | abc\n   *     ^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function chunkInside(code) {\n    if (code === null) {\n      return contentEnd(code);\n    }\n\n    // To do: in `markdown-rs`, each line is parsed on its own, and everything\n    // is stitched together resolving.\n    if (markdownLineEnding(code)) {\n      return effects.check(continuationConstruct, contentContinue, contentEnd)(code);\n    }\n\n    // Data.\n    effects.consume(code);\n    return chunkInside;\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function contentEnd(code) {\n    effects.exit(\"chunkContent\");\n    effects.exit(\"content\");\n    return ok(code);\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function contentContinue(code) {\n    effects.consume(code);\n    effects.exit(\"chunkContent\");\n    previous.next = effects.enter(\"chunkContent\", {\n      contentType: \"content\",\n      previous\n    });\n    previous = previous.next;\n    return chunkInside;\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n  const self = this;\n  return startLookahead;\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function startLookahead(code) {\n    effects.exit(\"chunkContent\");\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, prefixed, \"linePrefix\");\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function prefixed(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code);\n    }\n\n    // Always populated by defaults.\n\n    const tail = self.events[self.events.length - 1];\n    if (!self.parser.constructs.disable.null.includes('codeIndented') && tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4) {\n      return ok(code);\n    }\n    return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);\n  }\n}", "/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { asciiControl, markdownLineEndingOrSpace, markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * <a>\n * <a\\>b>\n * <a b>\n * <a)>\n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type for whole (`<a>` or `b`).\n * @param {TokenType} literalType\n *   Type when enclosed (`<a>`).\n * @param {TokenType} literalMarkerType\n *   Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n *   Type when not enclosed (`b`).\n * @param {TokenType} stringType\n *   Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n *   Depth of nested parens (inclusive).\n * @returns {State}\n *   Start state.\n */\nexport function factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) {\n  const limit = max || Number.POSITIVE_INFINITY;\n  let balance = 0;\n  return start;\n\n  /**\n   * Start of destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *     ^\n   * > | aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 60) {\n      effects.enter(type);\n      effects.enter(literalType);\n      effects.enter(literalMarkerType);\n      effects.consume(code);\n      effects.exit(literalMarkerType);\n      return enclosedBefore;\n    }\n\n    // ASCII control, space, closing paren.\n    if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.enter(type);\n    effects.enter(rawType);\n    effects.enter(stringType);\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return raw(code);\n  }\n\n  /**\n   * After `<`, at an enclosed destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosedBefore(code) {\n    if (code === 62) {\n      effects.enter(literalMarkerType);\n      effects.consume(code);\n      effects.exit(literalMarkerType);\n      effects.exit(literalType);\n      effects.exit(type);\n      return ok;\n    }\n    effects.enter(stringType);\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return enclosed(code);\n  }\n\n  /**\n   * In enclosed destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosed(code) {\n    if (code === 62) {\n      effects.exit(\"chunkString\");\n      effects.exit(stringType);\n      return enclosedBefore(code);\n    }\n    if (code === null || code === 60 || markdownLineEnding(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return code === 92 ? enclosedEscape : enclosed;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | <a\\*a>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosedEscape(code) {\n    if (code === 60 || code === 62 || code === 92) {\n      effects.consume(code);\n      return enclosed;\n    }\n    return enclosed(code);\n  }\n\n  /**\n   * In raw destination.\n   *\n   * ```markdown\n   * > | aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function raw(code) {\n    if (!balance && (code === null || code === 41 || markdownLineEndingOrSpace(code))) {\n      effects.exit(\"chunkString\");\n      effects.exit(stringType);\n      effects.exit(rawType);\n      effects.exit(type);\n      return ok(code);\n    }\n    if (balance < limit && code === 40) {\n      effects.consume(code);\n      balance++;\n      return raw;\n    }\n    if (code === 41) {\n      effects.consume(code);\n      balance--;\n      return raw;\n    }\n\n    // ASCII control (but *not* `\\0`) and space and `(`.\n    // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n    // doesn\u2019t.\n    if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return code === 92 ? rawEscape : raw;\n  }\n\n  /**\n   * After `\\`, at special character.\n   *\n   * ```markdown\n   * > | a\\*a\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function rawEscape(code) {\n    if (code === 40 || code === 41 || code === 92) {\n      effects.consume(code);\n      return raw;\n    }\n    return raw(code);\n  }\n}", "/**\n * @import {\n *   Effects,\n *   State,\n *   TokenizeContext,\n *   TokenType\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse labels.\n *\n * > \uD83D\uDC49 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n *   Tokenize context.\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n *   Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n *   Type for the identifier (`a`).\n * @returns {State}\n *   Start state.\n */\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n  const self = this;\n  let size = 0;\n  /** @type {boolean} */\n  let seen;\n  return start;\n\n  /**\n   * Start of label.\n   *\n   * ```markdown\n   * > | [a]\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(type);\n    effects.enter(markerType);\n    effects.consume(code);\n    effects.exit(markerType);\n    effects.enter(stringType);\n    return atBreak;\n  }\n\n  /**\n   * In label, at something, before something else.\n   *\n   * ```markdown\n   * > | [a]\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (size > 999 || code === null || code === 91 || code === 93 && !seen ||\n    // To do: remove in the future once we\u2019ve switched from\n    // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n    // which doesn\u2019t need this.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    code === 94 && !size && '_hiddenFootnoteSupport' in self.parser.constructs) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.exit(stringType);\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      effects.exit(type);\n      return ok;\n    }\n\n    // To do: indent? Link chunks and EOLs together?\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return atBreak;\n    }\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return labelInside(code);\n  }\n\n  /**\n   * In label, in text.\n   *\n   * ```markdown\n   * > | [a]\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelInside(code) {\n    if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) {\n      effects.exit(\"chunkString\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    if (!seen) seen = !markdownSpace(code);\n    return code === 92 ? labelEscape : labelInside;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | [a\\*a]\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code);\n      size++;\n      return labelInside;\n    }\n    return labelInside(code);\n  }\n}", "/**\n * @import {\n *   Code,\n *   Effects,\n *   State,\n *   TokenType\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n *     b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n *   Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n *   Type for the value (`a`).\n * @returns {State}\n *   Start state.\n */\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of title.\n   *\n   * ```markdown\n   * > | \"a\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      effects.enter(type);\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      marker = code === 40 ? 41 : code;\n      return begin;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After opening marker.\n   *\n   * This is also used at the closing marker.\n   *\n   * ```markdown\n   * > | \"a\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function begin(code) {\n    if (code === marker) {\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      effects.exit(type);\n      return ok;\n    }\n    effects.enter(stringType);\n    return atBreak(code);\n  }\n\n  /**\n   * At something, before something else.\n   *\n   * ```markdown\n   * > | \"a\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.exit(stringType);\n      return begin(marker);\n    }\n    if (code === null) {\n      return nok(code);\n    }\n\n    // Note: blank lines can\u2019t exist in content.\n    if (markdownLineEnding(code)) {\n      // To do: use `space_or_tab_eol_with_options`, connect.\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return factorySpace(effects, atBreak, \"linePrefix\");\n    }\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return inside(code);\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker || code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return code === 92 ? escape : inside;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | \"a\\*b\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function escape(code) {\n    if (code === marker || code === 92) {\n      effects.consume(code);\n      return inside;\n    }\n    return inside(code);\n  }\n}", "/**\n * @import {Effects, State} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * *   line endings or spaces in markdown are often optional, in which case this\n *     factory can be used and `ok` will be switched to whether spaces were found\n *     or not\n * *   one line ending or space can be detected with\n *     `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @returns {State}\n *   Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n  /** @type {boolean} */\n  let seen;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      seen = true;\n      return start;\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, start, seen ? \"linePrefix\" : \"lineSuffix\")(code);\n    }\n    return ok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factorySpace } from 'micromark-factory-space';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\n/** @type {Construct} */\nexport const definition = {\n  name: 'definition',\n  tokenize: tokenizeDefinition\n};\n\n/** @type {Construct} */\nconst titleBefore = {\n  partial: true,\n  tokenize: tokenizeTitleBefore\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n  const self = this;\n  /** @type {string} */\n  let identifier;\n  return start;\n\n  /**\n   * At start of a definition.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // Do not interrupt paragraphs (but do follow definitions).\n    // To do: do `interrupt` the way `markdown-rs` does.\n    // To do: parse whitespace the way `markdown-rs` does.\n    effects.enter(\"definition\");\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at `[`.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    // To do: parse whitespace the way `markdown-rs` does.\n\n    return factoryLabel.call(self, effects, labelAfter,\n    // Note: we don\u2019t need to reset the way `markdown-rs` does.\n    nok, \"definitionLabel\", \"definitionLabelMarker\", \"definitionLabelString\")(code);\n  }\n\n  /**\n   * After label.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAfter(code) {\n    identifier = normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1));\n    if (code === 58) {\n      effects.enter(\"definitionMarker\");\n      effects.consume(code);\n      effects.exit(\"definitionMarker\");\n      return markerAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After marker.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function markerAfter(code) {\n    // Note: whitespace is optional.\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code);\n  }\n\n  /**\n   * Before destination.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function destinationBefore(code) {\n    return factoryDestination(effects, destinationAfter,\n    // Note: we don\u2019t need to reset the way `markdown-rs` does.\n    nok, \"definitionDestination\", \"definitionDestinationLiteral\", \"definitionDestinationLiteralMarker\", \"definitionDestinationRaw\", \"definitionDestinationString\")(code);\n  }\n\n  /**\n   * After destination.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function destinationAfter(code) {\n    return effects.attempt(titleBefore, after, after)(code);\n  }\n\n  /**\n   * After definition.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return markdownSpace(code) ? factorySpace(effects, afterWhitespace, \"whitespace\")(code) : afterWhitespace(code);\n  }\n\n  /**\n   * After definition, after optional whitespace.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterWhitespace(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"definition\");\n\n      // Note: we don\u2019t care about uniqueness.\n      // It\u2019s likely that that doesn\u2019t happen very frequently.\n      // It is more likely that it wastes precious time.\n      self.parser.defined.push(identifier);\n\n      // To do: `markdown-rs` interrupt.\n      // // You\u2019d be interrupting.\n      // tokenizer.interrupt = true\n      return ok(code);\n    }\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n  return titleBefore;\n\n  /**\n   * After destination, at whitespace.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleBefore(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code);\n  }\n\n  /**\n   * At title.\n   *\n   * ```markdown\n   *   | [a]: b\n   * > | \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeMarker(code) {\n    return factoryTitle(effects, titleAfter, nok, \"definitionTitle\", \"definitionTitleMarker\", \"definitionTitleString\")(code);\n  }\n\n  /**\n   * After title.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleAfter(code) {\n    return markdownSpace(code) ? factorySpace(effects, titleAfterOptionalWhitespace, \"whitespace\")(code) : titleAfterOptionalWhitespace(code);\n  }\n\n  /**\n   * After title, after optional whitespace.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleAfterOptionalWhitespace(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n  name: 'hardBreakEscape',\n  tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of a hard break (escape).\n   *\n   * ```markdown\n   * > | a\\\n   *      ^\n   *   | b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"hardBreakEscape\");\n    effects.consume(code);\n    return after;\n  }\n\n  /**\n   * After `\\`, at eol.\n   *\n   * ```markdown\n   * > | a\\\n   *       ^\n   *   | b\n   * ```\n   *\n   *  @type {State}\n   */\n  function after(code) {\n    if (markdownLineEnding(code)) {\n      effects.exit(\"hardBreakEscape\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {Construct} */\nexport const headingAtx = {\n  name: 'headingAtx',\n  resolve: resolveHeadingAtx,\n  tokenize: tokenizeHeadingAtx\n};\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n  let contentEnd = events.length - 2;\n  let contentStart = 3;\n  /** @type {Token} */\n  let content;\n  /** @type {Token} */\n  let text;\n\n  // Prefix whitespace, part of the opening.\n  if (events[contentStart][1].type === \"whitespace\") {\n    contentStart += 2;\n  }\n\n  // Suffix whitespace, part of the closing.\n  if (contentEnd - 2 > contentStart && events[contentEnd][1].type === \"whitespace\") {\n    contentEnd -= 2;\n  }\n  if (events[contentEnd][1].type === \"atxHeadingSequence\" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === \"whitespace\")) {\n    contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;\n  }\n  if (contentEnd > contentStart) {\n    content = {\n      type: \"atxHeadingText\",\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end\n    };\n    text = {\n      type: \"chunkText\",\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end,\n      contentType: \"text\"\n    };\n    splice(events, contentStart, contentEnd - contentStart + 1, [['enter', content, context], ['enter', text, context], ['exit', text, context], ['exit', content, context]]);\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n  let size = 0;\n  return start;\n\n  /**\n   * Start of a heading (atx).\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse indent like `markdown-rs`.\n    effects.enter(\"atxHeading\");\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at `#`.\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"atxHeadingSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening sequence.\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 35 && size++ < 6) {\n      effects.consume(code);\n      return sequenceOpen;\n    }\n\n    // Always at least one `#`.\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"atxHeadingSequence\");\n      return atBreak(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * After something, before something else.\n   *\n   * ```markdown\n   * > | ## aa\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === 35) {\n      effects.enter(\"atxHeadingSequence\");\n      return sequenceFurther(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"atxHeading\");\n      // To do: interrupt like `markdown-rs`.\n      // // Feel free to interrupt.\n      // tokenizer.interrupt = false\n      return ok(code);\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, atBreak, \"whitespace\")(code);\n    }\n\n    // To do: generate `data` tokens, add the `text` token later.\n    // Needs edit map, see: `markdown.rs`.\n    effects.enter(\"atxHeadingText\");\n    return data(code);\n  }\n\n  /**\n   * In further sequence (after whitespace).\n   *\n   * Could be normal \u201Cvisible\u201D hashes in the heading or a final sequence.\n   *\n   * ```markdown\n   * > | ## aa ##\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceFurther(code) {\n    if (code === 35) {\n      effects.consume(code);\n      return sequenceFurther;\n    }\n    effects.exit(\"atxHeadingSequence\");\n    return atBreak(code);\n  }\n\n  /**\n   * In text.\n   *\n   * ```markdown\n   * > | ## aa\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function data(code) {\n    if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"atxHeadingText\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return data;\n  }\n}", "/**\n * List of lowercase HTML \u201Cblock\u201D tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn\u2019t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > \uD83D\uDC49 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = [\n  'address',\n  'article',\n  'aside',\n  'base',\n  'basefont',\n  'blockquote',\n  'body',\n  'caption',\n  'center',\n  'col',\n  'colgroup',\n  'dd',\n  'details',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'frame',\n  'frameset',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hr',\n  'html',\n  'iframe',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'menu',\n  'menuitem',\n  'nav',\n  'noframes',\n  'ol',\n  'optgroup',\n  'option',\n  'p',\n  'param',\n  'search',\n  'section',\n  'summary',\n  'table',\n  'tbody',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'title',\n  'tr',\n  'track',\n  'ul'\n]\n\n/**\n * List of lowercase HTML \u201Craw\u201D tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > \uD83D\uDC49 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n", "/**\n * @import {\n *   Code,\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { htmlBlockNames, htmlRawNames } from 'micromark-util-html-tag-name';\nimport { blankLine } from './blank-line.js';\n\n/** @type {Construct} */\nexport const htmlFlow = {\n  concrete: true,\n  name: 'htmlFlow',\n  resolveTo: resolveToHtmlFlow,\n  tokenize: tokenizeHtmlFlow\n};\n\n/** @type {Construct} */\nconst blankLineBefore = {\n  partial: true,\n  tokenize: tokenizeBlankLineBefore\n};\nconst nonLazyContinuationStart = {\n  partial: true,\n  tokenize: tokenizeNonLazyContinuationStart\n};\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n  let index = events.length;\n  while (index--) {\n    if (events[index][0] === 'enter' && events[index][1].type === \"htmlFlow\") {\n      break;\n    }\n  }\n  if (index > 1 && events[index - 2][1].type === \"linePrefix\") {\n    // Add the prefix start to the HTML token.\n    events[index][1].start = events[index - 2][1].start;\n    // Add the prefix start to the HTML line token.\n    events[index + 1][1].start = events[index - 2][1].start;\n    // Remove the line prefix.\n    events.splice(index - 2, 2);\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n  const self = this;\n  /** @type {number} */\n  let marker;\n  /** @type {boolean} */\n  let closingTag;\n  /** @type {string} */\n  let buffer;\n  /** @type {number} */\n  let index;\n  /** @type {Code} */\n  let markerB;\n  return start;\n\n  /**\n   * Start of HTML (flow).\n   *\n   * ```markdown\n   * > | <x />\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse indent like `markdown-rs`.\n    return before(code);\n  }\n\n  /**\n   * At `<`, after optional whitespace.\n   *\n   * ```markdown\n   * > | <x />\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"htmlFlow\");\n    effects.enter(\"htmlFlowData\");\n    effects.consume(code);\n    return open;\n  }\n\n  /**\n   * After `<`, at tag name or other stuff.\n   *\n   * ```markdown\n   * > | <x />\n   *      ^\n   * > | <!doctype>\n   *      ^\n   * > | <!--xxx-->\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code);\n      return declarationOpen;\n    }\n    if (code === 47) {\n      effects.consume(code);\n      closingTag = true;\n      return tagCloseStart;\n    }\n    if (code === 63) {\n      effects.consume(code);\n      marker = 3;\n      // To do:\n      // tokenizer.concrete = true\n      // To do: use `markdown-rs` style interrupt.\n      // While we\u2019re in an instruction instead of a declaration, we\u2019re on a `?`\n      // right now, so we do need to search for `>`, similar to declarations.\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      // Always the case.\n      effects.consume(code);\n      buffer = String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *       ^\n   * > | <!--xxx-->\n   *       ^\n   * > | <![CDATA[>&<]]>\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code);\n      marker = 2;\n      return commentOpenInside;\n    }\n    if (code === 91) {\n      effects.consume(code);\n      marker = 5;\n      index = 0;\n      return cdataOpenInside;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      marker = 4;\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!-`, inside a comment, at another `-`.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<![`, inside CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\n   *        ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataOpenInside(code) {\n    const value = \"CDATA[\";\n    if (code === value.charCodeAt(index++)) {\n      effects.consume(code);\n      if (index === value.length) {\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok : continuation;\n      }\n      return cdataOpenInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | </x>\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseStart(code) {\n    if (asciiAlpha(code)) {\n      // Always the case.\n      effects.consume(code);\n      buffer = String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In tag name.\n   *\n   * ```markdown\n   * > | <ab>\n   *      ^^\n   * > | </ab>\n   *       ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagName(code) {\n    if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      const slash = code === 47;\n      const name = buffer.toLowerCase();\n      if (!slash && !closingTag && htmlRawNames.includes(name)) {\n        marker = 1;\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok(code) : continuation(code);\n      }\n      if (htmlBlockNames.includes(buffer.toLowerCase())) {\n        marker = 6;\n        if (slash) {\n          effects.consume(code);\n          return basicSelfClosing;\n        }\n\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok(code) : continuation(code);\n      }\n      marker = 7;\n      // Do not support complete HTML when interrupting.\n      return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code);\n    }\n\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      buffer += String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After closing slash of a basic tag name.\n   *\n   * ```markdown\n   * > | <div/>\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function basicSelfClosing(code) {\n    if (code === 62) {\n      effects.consume(code);\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuation;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After closing slash of a complete tag name.\n   *\n   * ```markdown\n   * > | <x/>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeClosingTagAfter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeClosingTagAfter;\n    }\n    return completeEnd(code);\n  }\n\n  /**\n   * At an attribute name.\n   *\n   * At first, this state is used after a complete tag name, after whitespace,\n   * where it expects optional attributes or the end of the tag.\n   * It is also reused after attributes, when expecting more optional\n   * attributes.\n   *\n   * ```markdown\n   * > | <a />\n   *        ^\n   * > | <a :b>\n   *        ^\n   * > | <a _b>\n   *        ^\n   * > | <a b>\n   *        ^\n   * > | <a >\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeNameBefore(code) {\n    if (code === 47) {\n      effects.consume(code);\n      return completeEnd;\n    }\n\n    // ASCII alphanumerical and `:` and `_`.\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code);\n      return completeAttributeName;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeNameBefore;\n    }\n    return completeEnd(code);\n  }\n\n  /**\n   * In attribute name.\n   *\n   * ```markdown\n   * > | <a :b>\n   *         ^\n   * > | <a _b>\n   *         ^\n   * > | <a b>\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeName(code) {\n    // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n    if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return completeAttributeName;\n    }\n    return completeAttributeNameAfter(code);\n  }\n\n  /**\n   * After attribute name, at an optional initializer, the end of the tag, or\n   * whitespace.\n   *\n   * ```markdown\n   * > | <a b>\n   *         ^\n   * > | <a b=c>\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code);\n      return completeAttributeValueBefore;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeNameAfter;\n    }\n    return completeAttributeNameBefore(code);\n  }\n\n  /**\n   * Before unquoted, double quoted, or single quoted attribute value, allowing\n   * whitespace.\n   *\n   * ```markdown\n   * > | <a b=c>\n   *          ^\n   * > | <a b=\"c\">\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueBefore(code) {\n    if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n      return nok(code);\n    }\n    if (code === 34 || code === 39) {\n      effects.consume(code);\n      markerB = code;\n      return completeAttributeValueQuoted;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeValueBefore;\n    }\n    return completeAttributeValueUnquoted(code);\n  }\n\n  /**\n   * In double or single quoted attribute value.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *           ^\n   * > | <a b='c'>\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueQuoted(code) {\n    if (code === markerB) {\n      effects.consume(code);\n      markerB = null;\n      return completeAttributeValueQuotedAfter;\n    }\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return completeAttributeValueQuoted;\n  }\n\n  /**\n   * In unquoted attribute value.\n   *\n   * ```markdown\n   * > | <a b=c>\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueUnquoted(code) {\n    if (code === null || code === 34 || code === 39 || code === 47 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) {\n      return completeAttributeNameAfter(code);\n    }\n    effects.consume(code);\n    return completeAttributeValueUnquoted;\n  }\n\n  /**\n   * After double or single quoted attribute value, before whitespace or the\n   * end of the tag.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownSpace(code)) {\n      return completeAttributeNameBefore(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In certain circumstances of a complete tag where only an `>` is allowed.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeEnd(code) {\n    if (code === 62) {\n      effects.consume(code);\n      return completeAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `>` in a complete tag.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAfter(code) {\n    if (code === null || markdownLineEnding(code)) {\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return continuation(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In continuation of any HTML kind.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuation(code) {\n    if (code === 45 && marker === 2) {\n      effects.consume(code);\n      return continuationCommentInside;\n    }\n    if (code === 60 && marker === 1) {\n      effects.consume(code);\n      return continuationRawTagOpen;\n    }\n    if (code === 62 && marker === 4) {\n      effects.consume(code);\n      return continuationClose;\n    }\n    if (code === 63 && marker === 3) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    if (code === 93 && marker === 5) {\n      effects.consume(code);\n      return continuationCdataInside;\n    }\n    if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n      effects.exit(\"htmlFlowData\");\n      return effects.check(blankLineBefore, continuationAfter, continuationStart)(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"htmlFlowData\");\n      return continuationStart(code);\n    }\n    effects.consume(code);\n    return continuation;\n  }\n\n  /**\n   * In continuation, at eol.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   *   | asd\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationStart(code) {\n    return effects.check(nonLazyContinuationStart, continuationStartNonLazy, continuationAfter)(code);\n  }\n\n  /**\n   * In continuation, at eol, before non-lazy content.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   *   | asd\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationStartNonLazy(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return continuationBefore;\n  }\n\n  /**\n   * In continuation, before non-lazy content.\n   *\n   * ```markdown\n   *   | <x>\n   * > | asd\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return continuationStart(code);\n    }\n    effects.enter(\"htmlFlowData\");\n    return continuation(code);\n  }\n\n  /**\n   * In comment continuation, after one `-`, expecting another.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationCommentInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In raw continuation, after `<`, at `/`.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\n   *                            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationRawTagOpen(code) {\n    if (code === 47) {\n      effects.consume(code);\n      buffer = '';\n      return continuationRawEndTag;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In raw continuation, after `</`, in a raw tag name.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\n   *                             ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationRawEndTag(code) {\n    if (code === 62) {\n      const name = buffer.toLowerCase();\n      if (htmlRawNames.includes(name)) {\n        effects.consume(code);\n        return continuationClose;\n      }\n      return continuation(code);\n    }\n    if (asciiAlpha(code) && buffer.length < 8) {\n      // Always the case.\n      effects.consume(code);\n      buffer += String.fromCharCode(code);\n      return continuationRawEndTag;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In cdata continuation, after `]`, expecting `]>`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\n   *                  ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationCdataInside(code) {\n    if (code === 93) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In declaration or instruction continuation, at `>`.\n   *\n   * ```markdown\n   * > | <!-->\n   *         ^\n   * > | <?>\n   *       ^\n   * > | <!q>\n   *        ^\n   * > | <!--ab-->\n   *             ^\n   * > | <![CDATA[>&<]]>\n   *                   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationDeclarationInside(code) {\n    if (code === 62) {\n      effects.consume(code);\n      return continuationClose;\n    }\n\n    // More dashes.\n    if (code === 45 && marker === 2) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In closed continuation: everything we get until the eol/eof is part of it.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationClose(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"htmlFlowData\");\n      return continuationAfter(code);\n    }\n    effects.consume(code);\n    return continuationClose;\n  }\n\n  /**\n   * Done.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationAfter(code) {\n    effects.exit(\"htmlFlow\");\n    // // Feel free to interrupt.\n    // tokenizer.interrupt = false\n    // // No longer concrete.\n    // tokenizer.concrete = false\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * At eol, before continuation.\n   *\n   * ```markdown\n   * > | * ```js\n   *            ^\n   *   | b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * A continuation.\n   *\n   * ```markdown\n   *   | * ```js\n   * > | b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n  return start;\n\n  /**\n   * Before eol, expecting blank line.\n   *\n   * ```markdown\n   * > | <div>\n   *          ^\n   *   |\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return effects.attempt(blankLine, ok, nok);\n  }\n}", "/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n  name: 'htmlText',\n  tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n  const self = this;\n  /** @type {NonNullable<Code> | undefined} */\n  let marker;\n  /** @type {number} */\n  let index;\n  /** @type {State} */\n  let returnState;\n  return start;\n\n  /**\n   * Start of HTML (text).\n   *\n   * ```markdown\n   * > | a <b> c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"htmlText\");\n    effects.enter(\"htmlTextData\");\n    effects.consume(code);\n    return open;\n  }\n\n  /**\n   * After `<`, at tag name or other stuff.\n   *\n   * ```markdown\n   * > | a <b> c\n   *        ^\n   * > | a <!doctype> c\n   *        ^\n   * > | a <!--b--> c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code);\n      return declarationOpen;\n    }\n    if (code === 47) {\n      effects.consume(code);\n      return tagCloseStart;\n    }\n    if (code === 63) {\n      effects.consume(code);\n      return instruction;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return tagOpen;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | a <!doctype> c\n   *         ^\n   * > | a <!--b--> c\n   *         ^\n   * > | a <![CDATA[>&<]]> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentOpenInside;\n    }\n    if (code === 91) {\n      effects.consume(code);\n      index = 0;\n      return cdataOpenInside;\n    }\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return declaration;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In a comment, after `<!-`, at another `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentEnd;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In comment.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function comment(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 45) {\n      effects.consume(code);\n      return commentClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = comment;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return comment;\n  }\n\n  /**\n   * In comment, after `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentClose(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentEnd;\n    }\n    return comment(code);\n  }\n\n  /**\n   * In comment, after `--`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentEnd(code) {\n    return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n  }\n\n  /**\n   * After `<![`, in CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *          ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataOpenInside(code) {\n    const value = \"CDATA[\";\n    if (code === value.charCodeAt(index++)) {\n      effects.consume(code);\n      return index === value.length ? cdata : cdataOpenInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In CDATA.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                ^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdata(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.consume(code);\n      return cdataClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = cdata;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return cdata;\n  }\n\n  /**\n   * In CDATA, after `]`, at another `]`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataClose(code) {\n    if (code === 93) {\n      effects.consume(code);\n      return cdataEnd;\n    }\n    return cdata(code);\n  }\n\n  /**\n   * In CDATA, after `]]`, at `>`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataEnd(code) {\n    if (code === 62) {\n      return end(code);\n    }\n    if (code === 93) {\n      effects.consume(code);\n      return cdataEnd;\n    }\n    return cdata(code);\n  }\n\n  /**\n   * In declaration.\n   *\n   * ```markdown\n   * > | a <!b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declaration(code) {\n    if (code === null || code === 62) {\n      return end(code);\n    }\n    if (markdownLineEnding(code)) {\n      returnState = declaration;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return declaration;\n  }\n\n  /**\n   * In instruction.\n   *\n   * ```markdown\n   * > | a <?b?> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function instruction(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 63) {\n      effects.consume(code);\n      return instructionClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = instruction;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return instruction;\n  }\n\n  /**\n   * In instruction, after `?`, at `>`.\n   *\n   * ```markdown\n   * > | a <?b?> c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function instructionClose(code) {\n    return code === 62 ? end(code) : instruction(code);\n  }\n\n  /**\n   * After `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseStart(code) {\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return tagClose;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `</x`, in a tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagClose(code) {\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagClose;\n    }\n    return tagCloseBetween(code);\n  }\n\n  /**\n   * In closing tag, after tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseBetween(code) {\n    if (markdownLineEnding(code)) {\n      returnState = tagCloseBetween;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagCloseBetween;\n    }\n    return end(code);\n  }\n\n  /**\n   * After `<x`, in opening tag name.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpen(code) {\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagOpen;\n    }\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In opening tag, after tag name.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenBetween(code) {\n    if (code === 47) {\n      effects.consume(code);\n      return end;\n    }\n\n    // ASCII alphabetical and `:` and `_`.\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code);\n      return tagOpenAttributeName;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenBetween;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenBetween;\n    }\n    return end(code);\n  }\n\n  /**\n   * In attribute name.\n   *\n   * ```markdown\n   * > | a <b c> d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeName(code) {\n    // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n    if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagOpenAttributeName;\n    }\n    return tagOpenAttributeNameAfter(code);\n  }\n\n  /**\n   * After attribute name, before initializer, the end of the tag, or\n   * whitespace.\n   *\n   * ```markdown\n   * > | a <b c> d\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code);\n      return tagOpenAttributeValueBefore;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeNameAfter;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenAttributeNameAfter;\n    }\n    return tagOpenBetween(code);\n  }\n\n  /**\n   * Before unquoted, double quoted, or single quoted attribute value, allowing\n   * whitespace.\n   *\n   * ```markdown\n   * > | a <b c=d> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueBefore(code) {\n    if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n      return nok(code);\n    }\n    if (code === 34 || code === 39) {\n      effects.consume(code);\n      marker = code;\n      return tagOpenAttributeValueQuoted;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueBefore;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenAttributeValueBefore;\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueUnquoted;\n  }\n\n  /**\n   * In double or single quoted attribute value.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueQuoted(code) {\n    if (code === marker) {\n      effects.consume(code);\n      marker = undefined;\n      return tagOpenAttributeValueQuotedAfter;\n    }\n    if (code === null) {\n      return nok(code);\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueQuoted;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueQuoted;\n  }\n\n  /**\n   * In unquoted attribute value.\n   *\n   * ```markdown\n   * > | a <b c=d> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueUnquoted(code) {\n    if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n      return nok(code);\n    }\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueUnquoted;\n  }\n\n  /**\n   * After double or single quoted attribute value, before whitespace or the end\n   * of the tag.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In certain circumstances of a tag where only an `>` is allowed.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function end(code) {\n    if (code === 62) {\n      effects.consume(code);\n      effects.exit(\"htmlTextData\");\n      effects.exit(\"htmlText\");\n      return ok;\n    }\n    return nok(code);\n  }\n\n  /**\n   * At eol.\n   *\n   * > \uD83D\uDC49 **Note**: we can\u2019t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   * > | a <!--a\n   *            ^\n   *   | b-->\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingBefore(code) {\n    effects.exit(\"htmlTextData\");\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return lineEndingAfter;\n  }\n\n  /**\n   * After eol, at optional whitespace.\n   *\n   * > \uD83D\uDC49 **Note**: we can\u2019t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   *   | a <!--a\n   * > | b-->\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingAfter(code) {\n    // Always populated by defaults.\n\n    return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n  }\n\n  /**\n   * After eol, after optional whitespace.\n   *\n   * > \uD83D\uDC49 **Note**: we can\u2019t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   *   | a <!--a\n   * > | b-->\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingAfterPrefix(code) {\n    effects.enter(\"htmlTextData\");\n    return returnState(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   Event,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n  name: 'labelEnd',\n  resolveAll: resolveAllLabelEnd,\n  resolveTo: resolveToLabelEnd,\n  tokenize: tokenizeLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n  tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n  tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n  tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n  let index = -1;\n  /** @type {Array<Event>} */\n  const newEvents = [];\n  while (++index < events.length) {\n    const token = events[index][1];\n    newEvents.push(events[index]);\n    if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n      // Remove the marker.\n      const offset = token.type === \"labelImage\" ? 4 : 2;\n      token.type = \"data\";\n      index += offset;\n    }\n  }\n\n  // If the events are equal, we don't have to copy newEvents to events\n  if (events.length !== newEvents.length) {\n    splice(events, 0, events.length, newEvents);\n  }\n  return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n  let index = events.length;\n  let offset = 0;\n  /** @type {Token} */\n  let token;\n  /** @type {number | undefined} */\n  let open;\n  /** @type {number | undefined} */\n  let close;\n  /** @type {Array<Event>} */\n  let media;\n\n  // Find an opening.\n  while (index--) {\n    token = events[index][1];\n    if (open) {\n      // If we see another link, or inactive link label, we\u2019ve been here before.\n      if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n        break;\n      }\n\n      // Mark other link openings as inactive, as we can\u2019t have links in\n      // links.\n      if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n        token._inactive = true;\n      }\n    } else if (close) {\n      if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n        open = index;\n        if (token.type !== \"labelLink\") {\n          offset = 2;\n          break;\n        }\n      }\n    } else if (token.type === \"labelEnd\") {\n      close = index;\n    }\n  }\n  const group = {\n    type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n    start: {\n      ...events[open][1].start\n    },\n    end: {\n      ...events[events.length - 1][1].end\n    }\n  };\n  const label = {\n    type: \"label\",\n    start: {\n      ...events[open][1].start\n    },\n    end: {\n      ...events[close][1].end\n    }\n  };\n  const text = {\n    type: \"labelText\",\n    start: {\n      ...events[open + offset + 2][1].end\n    },\n    end: {\n      ...events[close - 2][1].start\n    }\n  };\n  media = [['enter', group, context], ['enter', label, context]];\n\n  // Opening marker.\n  media = push(media, events.slice(open + 1, open + offset + 3));\n\n  // Text open.\n  media = push(media, [['enter', text, context]]);\n\n  // Always populated by defaults.\n\n  // Between.\n  media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n  // Text close, marker close, label close.\n  media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n  // Reference, resource, or so.\n  media = push(media, events.slice(close + 1));\n\n  // Media close.\n  media = push(media, [['exit', group, context]]);\n  splice(events, open, events.length, media);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n  const self = this;\n  let index = self.events.length;\n  /** @type {Token} */\n  let labelStart;\n  /** @type {boolean} */\n  let defined;\n\n  // Find an opening.\n  while (index--) {\n    if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n      labelStart = self.events[index][1];\n      break;\n    }\n  }\n  return start;\n\n  /**\n   * Start of label end.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *       ^\n   * > | [a][b] c\n   *       ^\n   * > | [a][] b\n   *       ^\n   * > | [a] b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // If there is not an okay opening.\n    if (!labelStart) {\n      return nok(code);\n    }\n\n    // If the corresponding label (link) start is marked as inactive,\n    // it means we\u2019d be wrapping a link, like this:\n    //\n    // ```markdown\n    // > | a [b [c](d) e](f) g.\n    //                  ^\n    // ```\n    //\n    // We can\u2019t have that, so it\u2019s just balanced brackets.\n    if (labelStart._inactive) {\n      return labelEndNok(code);\n    }\n    defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n      start: labelStart.end,\n      end: self.now()\n    })));\n    effects.enter(\"labelEnd\");\n    effects.enter(\"labelMarker\");\n    effects.consume(code);\n    effects.exit(\"labelMarker\");\n    effects.exit(\"labelEnd\");\n    return after;\n  }\n\n  /**\n   * After `]`.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *       ^\n   * > | [a][b] c\n   *       ^\n   * > | [a][] b\n   *       ^\n   * > | [a] b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n    // an extension.\n\n    // Resource (`[asd](fgh)`)?\n    if (code === 40) {\n      return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n    }\n\n    // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n    if (code === 91) {\n      return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n    }\n\n    // Shortcut (`[asd]`) reference?\n    return defined ? labelEndOk(code) : labelEndNok(code);\n  }\n\n  /**\n   * After `]`, at `[`, but not at a full reference.\n   *\n   * > \uD83D\uDC49 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] b\n   *        ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceNotFull(code) {\n    return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n  }\n\n  /**\n   * Done, we found something.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *           ^\n   * > | [a][b] c\n   *           ^\n   * > | [a][] b\n   *          ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEndOk(code) {\n    // Note: `markdown-rs` does a bunch of stuff here.\n    return ok(code);\n  }\n\n  /**\n   * Done, it\u2019s nothing.\n   *\n   * There was an okay opening, but we didn\u2019t match anything.\n   *\n   * ```markdown\n   * > | [a](b c\n   *        ^\n   * > | [a][b c\n   *        ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEndNok(code) {\n    labelStart._balanced = true;\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n  return resourceStart;\n\n  /**\n   * At a resource.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceStart(code) {\n    effects.enter(\"resource\");\n    effects.enter(\"resourceMarker\");\n    effects.consume(code);\n    effects.exit(\"resourceMarker\");\n    return resourceBefore;\n  }\n\n  /**\n   * In resource, after `(`, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceBefore(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n  }\n\n  /**\n   * In resource, after optional whitespace, at `)` or a destination.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceOpen(code) {\n    if (code === 41) {\n      return resourceEnd(code);\n    }\n    return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n  }\n\n  /**\n   * In resource, after destination, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceDestinationAfter(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n  }\n\n  /**\n   * At invalid destination.\n   *\n   * ```markdown\n   * > | [a](<<) b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceDestinationMissing(code) {\n    return nok(code);\n  }\n\n  /**\n   * In resource, after destination and whitespace, at `(` or title.\n   *\n   * ```markdown\n   * > | [a](b ) c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceBetween(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n    }\n    return resourceEnd(code);\n  }\n\n  /**\n   * In resource, after title, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b \"c\") d\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceTitleAfter(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n  }\n\n  /**\n   * In resource, at `)`.\n   *\n   * ```markdown\n   * > | [a](b) d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceEnd(code) {\n    if (code === 41) {\n      effects.enter(\"resourceMarker\");\n      effects.consume(code);\n      effects.exit(\"resourceMarker\");\n      effects.exit(\"resource\");\n      return ok;\n    }\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n  const self = this;\n  return referenceFull;\n\n  /**\n   * In a reference (full), at the `[`.\n   *\n   * ```markdown\n   * > | [a][b] d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFull(code) {\n    return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n  }\n\n  /**\n   * In a reference (full), after `]`.\n   *\n   * ```markdown\n   * > | [a][b] d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFullAfter(code) {\n    return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n  }\n\n  /**\n   * In reference (full) that was missing.\n   *\n   * ```markdown\n   * > | [a][b d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFullMissing(code) {\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n  return referenceCollapsedStart;\n\n  /**\n   * In reference (collapsed), at `[`.\n   *\n   * > \uD83D\uDC49 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceCollapsedStart(code) {\n    // We only attempt a collapsed label if there\u2019s a `[`.\n\n    effects.enter(\"reference\");\n    effects.enter(\"referenceMarker\");\n    effects.consume(code);\n    effects.exit(\"referenceMarker\");\n    return referenceCollapsedOpen;\n  }\n\n  /**\n   * In reference (collapsed), at `]`.\n   *\n   * > \uD83D\uDC49 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] d\n   *         ^\n   * ```\n   *\n   *  @type {State}\n   */\n  function referenceCollapsedOpen(code) {\n    if (code === 93) {\n      effects.enter(\"referenceMarker\");\n      effects.consume(code);\n      effects.exit(\"referenceMarker\");\n      effects.exit(\"reference\");\n      return ok;\n    }\n    return nok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n  name: 'labelStartImage',\n  resolveAll: labelEnd.resolveAll,\n  tokenize: tokenizeLabelStartImage\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of label (image) start.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"labelImage\");\n    effects.enter(\"labelImageMarker\");\n    effects.consume(code);\n    effects.exit(\"labelImageMarker\");\n    return open;\n  }\n\n  /**\n   * After `!`, at `[`.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 91) {\n      effects.enter(\"labelMarker\");\n      effects.consume(code);\n      effects.exit(\"labelMarker\");\n      effects.exit(\"labelImage\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `![`.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *         ^\n   * ```\n   *\n   * This is needed in because, when GFM footnotes are enabled, images never\n   * form when started with a `^`.\n   * Instead, links form:\n   *\n   * ```markdown\n   * ![^a](b)\n   *\n   * ![^a][b]\n   *\n   * [b]: c\n   * ```\n   *\n   * ```html\n   * <p>!<a href=\\\"b\\\">^a</a></p>\n   * <p>!<a href=\\\"c\\\">^a</a></p>\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // To do: use a new field to do this, this is still needed for\n    // `micromark-extension-gfm-footnote`, but the `label-start-link`\n    // behavior isn\u2019t.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n  name: 'labelStartLink',\n  resolveAll: labelEnd.resolveAll,\n  tokenize: tokenizeLabelStartLink\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of label (link) start.\n   *\n   * ```markdown\n   * > | a [b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"labelLink\");\n    effects.enter(\"labelMarker\");\n    effects.consume(code);\n    effects.exit(\"labelMarker\");\n    effects.exit(\"labelLink\");\n    return after;\n  }\n\n  /** @type {State} */\n  function after(code) {\n    // To do: this isn\u2019t needed in `micromark-extension-gfm-footnote`,\n    // remove.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n  name: 'lineEnding',\n  tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, ok, \"linePrefix\");\n  }\n}", "/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const thematicBreak = {\n  name: 'thematicBreak',\n  tokenize: tokenizeThematicBreak\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n  let size = 0;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of thematic break.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"thematicBreak\");\n    // To do: parse indent like `markdown-rs`.\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at marker.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    marker = code;\n    return atBreak(code);\n  }\n\n  /**\n   * After something, before something else.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.enter(\"thematicBreakSequence\");\n      return sequence(code);\n    }\n    if (size >= 3 && (code === null || markdownLineEnding(code))) {\n      effects.exit(\"thematicBreak\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In sequence.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequence(code) {\n    if (code === marker) {\n      effects.consume(code);\n      size++;\n      return sequence;\n    }\n    effects.exit(\"thematicBreakSequence\");\n    return markdownSpace(code) ? factorySpace(effects, atBreak, \"whitespace\")(code) : atBreak(code);\n  }\n}", "/**\n * @import {\n *   Code,\n *   Construct,\n *   Exiter,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiDigit, markdownSpace } from 'micromark-util-character';\nimport { blankLine } from './blank-line.js';\nimport { thematicBreak } from './thematic-break.js';\n\n/** @type {Construct} */\nexport const list = {\n  continuation: {\n    tokenize: tokenizeListContinuation\n  },\n  exit: tokenizeListEnd,\n  name: 'list',\n  tokenize: tokenizeListStart\n};\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n  partial: true,\n  tokenize: tokenizeListItemPrefixWhitespace\n};\n\n/** @type {Construct} */\nconst indentConstruct = {\n  partial: true,\n  tokenize: tokenizeIndent\n};\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n  const self = this;\n  const tail = self.events[self.events.length - 1];\n  let initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n  let size = 0;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? \"listUnordered\" : \"listOrdered\");\n    if (kind === \"listUnordered\" ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) {\n      if (!self.containerState.type) {\n        self.containerState.type = kind;\n        effects.enter(kind, {\n          _container: true\n        });\n      }\n      if (kind === \"listUnordered\") {\n        effects.enter(\"listItemPrefix\");\n        return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code);\n      }\n      if (!self.interrupt || code === 49) {\n        effects.enter(\"listItemPrefix\");\n        effects.enter(\"listItemValue\");\n        return inside(code);\n      }\n    }\n    return nok(code);\n  }\n\n  /** @type {State} */\n  function inside(code) {\n    if (asciiDigit(code) && ++size < 10) {\n      effects.consume(code);\n      return inside;\n    }\n    if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) {\n      effects.exit(\"listItemValue\");\n      return atMarker(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * @type {State}\n   **/\n  function atMarker(code) {\n    effects.enter(\"listItemMarker\");\n    effects.consume(code);\n    effects.exit(\"listItemMarker\");\n    self.containerState.marker = self.containerState.marker || code;\n    return effects.check(blankLine,\n    // Can\u2019t be empty when interrupting.\n    self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix));\n  }\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.initialBlankLine = true;\n    initialSize++;\n    return endOfPrefix(code);\n  }\n\n  /** @type {State} */\n  function otherPrefix(code) {\n    if (markdownSpace(code)) {\n      effects.enter(\"listItemPrefixWhitespace\");\n      effects.consume(code);\n      effects.exit(\"listItemPrefixWhitespace\");\n      return endOfPrefix;\n    }\n    return nok(code);\n  }\n\n  /** @type {State} */\n  function endOfPrefix(code) {\n    self.containerState.size = initialSize + self.sliceSerialize(effects.exit(\"listItemPrefix\"), true).length;\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n  const self = this;\n  self.containerState._closeFlow = undefined;\n  return effects.check(blankLine, onBlank, notBlank);\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine;\n\n    // We have a blank line.\n    // Still, try to consume at most the items size.\n    return factorySpace(effects, ok, \"listItemIndent\", self.containerState.size + 1)(code);\n  }\n\n  /** @type {State} */\n  function notBlank(code) {\n    if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n      self.containerState.furtherBlankLines = undefined;\n      self.containerState.initialBlankLine = undefined;\n      return notInCurrentItem(code);\n    }\n    self.containerState.furtherBlankLines = undefined;\n    self.containerState.initialBlankLine = undefined;\n    return effects.attempt(indentConstruct, ok, notInCurrentItem)(code);\n  }\n\n  /** @type {State} */\n  function notInCurrentItem(code) {\n    // While we do continue, we signal that the flow should be closed.\n    self.containerState._closeFlow = true;\n    // As we\u2019re closing flow, we\u2019re no longer interrupting.\n    self.interrupt = undefined;\n    // Always populated by defaults.\n\n    return factorySpace(effects, effects.attempt(list, ok, nok), \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this;\n  return factorySpace(effects, afterPrefix, \"listItemIndent\", self.containerState.size + 1);\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"listItemIndent\" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Exiter}\n */\nfunction tokenizeListEnd(effects) {\n  effects.exit(this.containerState.type);\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n  const self = this;\n\n  // Always populated by defaults.\n\n  return factorySpace(effects, afterPrefix, \"listItemPrefixWhitespace\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1);\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return !markdownSpace(code) && tail && tail[1].type === \"listItemPrefixWhitespace\" ? ok(code) : nok(code);\n  }\n}", "/**\n * @import {\n *   Code,\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const setextUnderline = {\n  name: 'setextUnderline',\n  resolveTo: resolveToSetextUnderline,\n  tokenize: tokenizeSetextUnderline\n};\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n  // To do: resolve like `markdown-rs`.\n  let index = events.length;\n  /** @type {number | undefined} */\n  let content;\n  /** @type {number | undefined} */\n  let text;\n  /** @type {number | undefined} */\n  let definition;\n\n  // Find the opening of the content.\n  // It\u2019ll always exist: we don\u2019t tokenize if it isn\u2019t there.\n  while (index--) {\n    if (events[index][0] === 'enter') {\n      if (events[index][1].type === \"content\") {\n        content = index;\n        break;\n      }\n      if (events[index][1].type === \"paragraph\") {\n        text = index;\n      }\n    }\n    // Exit\n    else {\n      if (events[index][1].type === \"content\") {\n        // Remove the content end (if needed we\u2019ll add it later)\n        events.splice(index, 1);\n      }\n      if (!definition && events[index][1].type === \"definition\") {\n        definition = index;\n      }\n    }\n  }\n  const heading = {\n    type: \"setextHeading\",\n    start: {\n      ...events[content][1].start\n    },\n    end: {\n      ...events[events.length - 1][1].end\n    }\n  };\n\n  // Change the paragraph to setext heading text.\n  events[text][1].type = \"setextHeadingText\";\n\n  // If we have definitions in the content, we\u2019ll keep on having content,\n  // but we need move it.\n  if (definition) {\n    events.splice(text, 0, ['enter', heading, context]);\n    events.splice(definition + 1, 0, ['exit', events[content][1], context]);\n    events[content][1].end = {\n      ...events[definition][1].end\n    };\n  } else {\n    events[content][1] = heading;\n  }\n\n  // Add the heading exit at the end.\n  events.push(['exit', heading, context]);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n  const self = this;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * At start of heading (setext) underline.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    let index = self.events.length;\n    /** @type {boolean | undefined} */\n    let paragraph;\n    // Find an opening.\n    while (index--) {\n      // Skip enter/exit of line ending, line prefix, and content.\n      // We can now either have a definition or a paragraph.\n      if (self.events[index][1].type !== \"lineEnding\" && self.events[index][1].type !== \"linePrefix\" && self.events[index][1].type !== \"content\") {\n        paragraph = self.events[index][1].type === \"paragraph\";\n        break;\n      }\n    }\n\n    // To do: handle lazy/pierce like `markdown-rs`.\n    // To do: parse indent like `markdown-rs`.\n    if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n      effects.enter(\"setextHeadingLine\");\n      marker = code;\n      return before(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * After optional whitespace, at `-` or `=`.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"setextHeadingLineSequence\");\n    return inside(code);\n  }\n\n  /**\n   * In sequence.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker) {\n      effects.consume(code);\n      return inside;\n    }\n    effects.exit(\"setextHeadingLineSequence\");\n    return markdownSpace(code) ? factorySpace(effects, after, \"lineSuffix\")(code) : after(code);\n  }\n\n  /**\n   * After sequence, after optional whitespace.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"setextHeadingLine\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n}", "/**\n * @import {Event, Exiter, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { blankLine } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nconst indent = {\n  tokenize: tokenizeIndent,\n  partial: true\n};\n\n// To do: micromark should support a `_hiddenGfmFootnoteSupport`, which only\n// affects label start (image).\n// That will let us drop `tokenizePotentialGfmFootnote*`.\n// It currently has a `_hiddenFootnoteSupport`, which affects that and more.\n// That can be removed when `micromark-extension-footnote` is archived.\n\n/**\n * Create an extension for `micromark` to enable GFM footnote syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to\n *   enable GFM footnote syntax.\n */\nexport function gfmFootnote() {\n  /** @type {Extension} */\n  return {\n    document: {\n      [91]: {\n        name: 'gfmFootnoteDefinition',\n        tokenize: tokenizeDefinitionStart,\n        continuation: {\n          tokenize: tokenizeDefinitionContinuation\n        },\n        exit: gfmFootnoteDefinitionEnd\n      }\n    },\n    text: {\n      [91]: {\n        name: 'gfmFootnoteCall',\n        tokenize: tokenizeGfmFootnoteCall\n      },\n      [93]: {\n        name: 'gfmPotentialFootnoteCall',\n        add: 'after',\n        tokenize: tokenizePotentialGfmFootnoteCall,\n        resolveTo: resolveToPotentialGfmFootnoteCall\n      }\n    }\n  };\n}\n\n// To do: remove after micromark update.\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n  const self = this;\n  let index = self.events.length;\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n  /** @type {Token} */\n  let labelStart;\n\n  // Find an opening.\n  while (index--) {\n    const token = self.events[index][1];\n    if (token.type === \"labelImage\") {\n      labelStart = token;\n      break;\n    }\n\n    // Exit if we\u2019ve walked far enough.\n    if (token.type === 'gfmFootnoteCall' || token.type === \"labelLink\" || token.type === \"label\" || token.type === \"image\" || token.type === \"link\") {\n      break;\n    }\n  }\n  return start;\n\n  /**\n   * @type {State}\n   */\n  function start(code) {\n    if (!labelStart || !labelStart._balanced) {\n      return nok(code);\n    }\n    const id = normalizeIdentifier(self.sliceSerialize({\n      start: labelStart.end,\n      end: self.now()\n    }));\n    if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n      return nok(code);\n    }\n    effects.enter('gfmFootnoteCallLabelMarker');\n    effects.consume(code);\n    effects.exit('gfmFootnoteCallLabelMarker');\n    return ok(code);\n  }\n}\n\n// To do: remove after micromark update.\n/** @type {Resolver} */\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n  let index = events.length;\n  /** @type {Token | undefined} */\n  let labelStart;\n\n  // Find an opening.\n  while (index--) {\n    if (events[index][1].type === \"labelImage\" && events[index][0] === 'enter') {\n      labelStart = events[index][1];\n      break;\n    }\n  }\n  // Change the `labelImageMarker` to a `data`.\n  events[index + 1][1].type = \"data\";\n  events[index + 3][1].type = 'gfmFootnoteCallLabelMarker';\n\n  // The whole (without `!`):\n  /** @type {Token} */\n  const call = {\n    type: 'gfmFootnoteCall',\n    start: Object.assign({}, events[index + 3][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  };\n  // The `^` marker\n  /** @type {Token} */\n  const marker = {\n    type: 'gfmFootnoteCallMarker',\n    start: Object.assign({}, events[index + 3][1].end),\n    end: Object.assign({}, events[index + 3][1].end)\n  };\n  // Increment the end 1 character.\n  marker.end.column++;\n  marker.end.offset++;\n  marker.end._bufferIndex++;\n  /** @type {Token} */\n  const string = {\n    type: 'gfmFootnoteCallString',\n    start: Object.assign({}, marker.end),\n    end: Object.assign({}, events[events.length - 1][1].start)\n  };\n  /** @type {Token} */\n  const chunk = {\n    type: \"chunkString\",\n    contentType: 'string',\n    start: Object.assign({}, string.start),\n    end: Object.assign({}, string.end)\n  };\n\n  /** @type {Array<Event>} */\n  const replacement = [\n  // Take the `labelImageMarker` (now `data`, the `!`)\n  events[index + 1], events[index + 2], ['enter', call, context],\n  // The `[`\n  events[index + 3], events[index + 4],\n  // The `^`.\n  ['enter', marker, context], ['exit', marker, context],\n  // Everything in between.\n  ['enter', string, context], ['enter', chunk, context], ['exit', chunk, context], ['exit', string, context],\n  // The ending (`]`, properly parsed and labelled).\n  events[events.length - 2], events[events.length - 1], ['exit', call, context]];\n  events.splice(index, events.length - index + 1, ...replacement);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n  const self = this;\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n  let size = 0;\n  /** @type {boolean} */\n  let data;\n\n  // Note: the implementation of `markdown-rs` is different, because it houses\n  // core *and* extensions in one project.\n  // Therefore, it can include footnote logic inside `label-end`.\n  // We can\u2019t do that, but luckily, we can parse footnotes in a simpler way than\n  // needed for labels.\n  return start;\n\n  /**\n   * Start of footnote label.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('gfmFootnoteCall');\n    effects.enter('gfmFootnoteCallLabelMarker');\n    effects.consume(code);\n    effects.exit('gfmFootnoteCallLabelMarker');\n    return callStart;\n  }\n\n  /**\n   * After `[`, at `^`.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callStart(code) {\n    if (code !== 94) return nok(code);\n    effects.enter('gfmFootnoteCallMarker');\n    effects.consume(code);\n    effects.exit('gfmFootnoteCallMarker');\n    effects.enter('gfmFootnoteCallString');\n    effects.enter('chunkString').contentType = 'string';\n    return callData;\n  }\n\n  /**\n   * In label.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callData(code) {\n    if (\n    // Too long.\n    size > 999 ||\n    // Closing brace with nothing.\n    code === 93 && !data ||\n    // Space or tab is not supported by GFM for some reason.\n    // `\\n` and `[` not being supported makes sense.\n    code === null || code === 91 || markdownLineEndingOrSpace(code)) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.exit('chunkString');\n      const token = effects.exit('gfmFootnoteCallString');\n      if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n        return nok(code);\n      }\n      effects.enter('gfmFootnoteCallLabelMarker');\n      effects.consume(code);\n      effects.exit('gfmFootnoteCallLabelMarker');\n      effects.exit('gfmFootnoteCall');\n      return ok;\n    }\n    if (!markdownLineEndingOrSpace(code)) {\n      data = true;\n    }\n    size++;\n    effects.consume(code);\n    return code === 92 ? callEscape : callData;\n  }\n\n  /**\n   * On character after escape.\n   *\n   * ```markdown\n   * > | a [^b\\c] d\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code);\n      size++;\n      return callData;\n    }\n    return callData(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n  const self = this;\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n  /** @type {string} */\n  let identifier;\n  let size = 0;\n  /** @type {boolean | undefined} */\n  let data;\n  return start;\n\n  /**\n   * Start of GFM footnote definition.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('gfmFootnoteDefinition')._container = true;\n    effects.enter('gfmFootnoteDefinitionLabel');\n    effects.enter('gfmFootnoteDefinitionLabelMarker');\n    effects.consume(code);\n    effects.exit('gfmFootnoteDefinitionLabelMarker');\n    return labelAtMarker;\n  }\n\n  /**\n   * In label, at caret.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAtMarker(code) {\n    if (code === 94) {\n      effects.enter('gfmFootnoteDefinitionMarker');\n      effects.consume(code);\n      effects.exit('gfmFootnoteDefinitionMarker');\n      effects.enter('gfmFootnoteDefinitionLabelString');\n      effects.enter('chunkString').contentType = 'string';\n      return labelInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In label.\n   *\n   * > \uD83D\uDC49 **Note**: `cmark-gfm` prevents whitespace from occurring in footnote\n   * > definition labels.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelInside(code) {\n    if (\n    // Too long.\n    size > 999 ||\n    // Closing brace with nothing.\n    code === 93 && !data ||\n    // Space or tab is not supported by GFM for some reason.\n    // `\\n` and `[` not being supported makes sense.\n    code === null || code === 91 || markdownLineEndingOrSpace(code)) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.exit('chunkString');\n      const token = effects.exit('gfmFootnoteDefinitionLabelString');\n      identifier = normalizeIdentifier(self.sliceSerialize(token));\n      effects.enter('gfmFootnoteDefinitionLabelMarker');\n      effects.consume(code);\n      effects.exit('gfmFootnoteDefinitionLabelMarker');\n      effects.exit('gfmFootnoteDefinitionLabel');\n      return labelAfter;\n    }\n    if (!markdownLineEndingOrSpace(code)) {\n      data = true;\n    }\n    size++;\n    effects.consume(code);\n    return code === 92 ? labelEscape : labelInside;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * > \uD83D\uDC49 **Note**: `cmark-gfm` currently does not support escaped brackets:\n   * > <https://github.com/github/cmark-gfm/issues/240>\n   *\n   * ```markdown\n   * > | [^a\\*b]: c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code);\n      size++;\n      return labelInside;\n    }\n    return labelInside(code);\n  }\n\n  /**\n   * After definition label.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAfter(code) {\n    if (code === 58) {\n      effects.enter('definitionMarker');\n      effects.consume(code);\n      effects.exit('definitionMarker');\n      if (!defined.includes(identifier)) {\n        defined.push(identifier);\n      }\n\n      // Any whitespace after the marker is eaten, forming indented code\n      // is not possible.\n      // No space is also fine, just like a block quote marker.\n      return factorySpace(effects, whitespaceAfter, 'gfmFootnoteDefinitionWhitespace');\n    }\n    return nok(code);\n  }\n\n  /**\n   * After definition prefix.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function whitespaceAfter(code) {\n    // `markdown-rs` has a wrapping token for the prefix that is closed here.\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n  /// Start of footnote definition continuation.\n  ///\n  /// ```markdown\n  ///   | [^a]: b\n  /// > |     c\n  ///     ^\n  /// ```\n  //\n  // Either a blank line, which is okay, or an indented thing.\n  return effects.check(blankLine, ok, effects.attempt(indent, ok, nok));\n}\n\n/** @type {Exiter} */\nfunction gfmFootnoteDefinitionEnd(effects) {\n  effects.exit('gfmFootnoteDefinition');\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this;\n  return factorySpace(effects, afterPrefix, 'gfmFootnoteDefinitionIndent', 4 + 1);\n\n  /**\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === 'gfmFootnoteDefinitionIndent' && tail[2].sliceSerialize(tail[1], true).length === 4 ? ok(code) : nok(code);\n  }\n}", "/**\n * @import {Options} from 'micromark-extension-gfm-strikethrough'\n * @import {Event, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create an extension for `micromark` to enable GFM strikethrough syntax.\n *\n * @param {Options | null | undefined} [options={}]\n *   Configuration.\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions`, to\n *   enable GFM strikethrough syntax.\n */\nexport function gfmStrikethrough(options) {\n  const options_ = options || {};\n  let single = options_.singleTilde;\n  const tokenizer = {\n    name: 'strikethrough',\n    tokenize: tokenizeStrikethrough,\n    resolveAll: resolveAllStrikethrough\n  };\n  if (single === null || single === undefined) {\n    single = true;\n  }\n  return {\n    text: {\n      [126]: tokenizer\n    },\n    insideSpan: {\n      null: [tokenizer]\n    },\n    attentionMarkers: {\n      null: [126]\n    }\n  };\n\n  /**\n   * Take events and resolve strikethrough.\n   *\n   * @type {Resolver}\n   */\n  function resolveAllStrikethrough(events, context) {\n    let index = -1;\n\n    // Walk through all events.\n    while (++index < events.length) {\n      // Find a token that can close.\n      if (events[index][0] === 'enter' && events[index][1].type === 'strikethroughSequenceTemporary' && events[index][1]._close) {\n        let open = index;\n\n        // Now walk back to find an opener.\n        while (open--) {\n          // Find a token that can open the closer.\n          if (events[open][0] === 'exit' && events[open][1].type === 'strikethroughSequenceTemporary' && events[open][1]._open &&\n          // If the sizes are the same:\n          events[index][1].end.offset - events[index][1].start.offset === events[open][1].end.offset - events[open][1].start.offset) {\n            events[index][1].type = 'strikethroughSequence';\n            events[open][1].type = 'strikethroughSequence';\n\n            /** @type {Token} */\n            const strikethrough = {\n              type: 'strikethrough',\n              start: Object.assign({}, events[open][1].start),\n              end: Object.assign({}, events[index][1].end)\n            };\n\n            /** @type {Token} */\n            const text = {\n              type: 'strikethroughText',\n              start: Object.assign({}, events[open][1].end),\n              end: Object.assign({}, events[index][1].start)\n            };\n\n            // Opening.\n            /** @type {Array<Event>} */\n            const nextEvents = [['enter', strikethrough, context], ['enter', events[open][1], context], ['exit', events[open][1], context], ['enter', text, context]];\n            const insideSpan = context.parser.constructs.insideSpan.null;\n            if (insideSpan) {\n              // Between.\n              splice(nextEvents, nextEvents.length, 0, resolveAll(insideSpan, events.slice(open + 1, index), context));\n            }\n\n            // Closing.\n            splice(nextEvents, nextEvents.length, 0, [['exit', text, context], ['enter', events[index][1], context], ['exit', events[index][1], context], ['exit', strikethrough, context]]);\n            splice(events, open - 1, index - open + 3, nextEvents);\n            index = open + nextEvents.length - 2;\n            break;\n          }\n        }\n      }\n    }\n    index = -1;\n    while (++index < events.length) {\n      if (events[index][1].type === 'strikethroughSequenceTemporary') {\n        events[index][1].type = \"data\";\n      }\n    }\n    return events;\n  }\n\n  /**\n   * @this {TokenizeContext}\n   * @type {Tokenizer}\n   */\n  function tokenizeStrikethrough(effects, ok, nok) {\n    const previous = this.previous;\n    const events = this.events;\n    let size = 0;\n    return start;\n\n    /** @type {State} */\n    function start(code) {\n      if (previous === 126 && events[events.length - 1][1].type !== \"characterEscape\") {\n        return nok(code);\n      }\n      effects.enter('strikethroughSequenceTemporary');\n      return more(code);\n    }\n\n    /** @type {State} */\n    function more(code) {\n      const before = classifyCharacter(previous);\n      if (code === 126) {\n        // If this is the third marker, exit.\n        if (size > 1) return nok(code);\n        effects.consume(code);\n        size++;\n        return more;\n      }\n      if (size < 2 && !single) return nok(code);\n      const token = effects.exit('strikethroughSequenceTemporary');\n      const after = classifyCharacter(code);\n      token._open = !after || after === 2 && Boolean(before);\n      token._close = !before || before === 2 && Boolean(after);\n      return ok(code);\n    }\n  }\n}", "/**\n * @import {Event} from 'micromark-util-types'\n */\n\n// Port of `edit_map.rs` from `markdown-rs`.\n// This should move to `markdown-js` later.\n\n// Deal with several changes in events, batching them together.\n//\n// Preferably, changes should be kept to a minimum.\n// Sometimes, it\u2019s needed to change the list of events, because parsing can be\n// messy, and it helps to expose a cleaner interface of events to the compiler\n// and other users.\n// It can also help to merge many adjacent similar events.\n// And, in other cases, it\u2019s needed to parse subcontent: pass some events\n// through another tokenizer and inject the result.\n\n/**\n * @typedef {[number, number, Array<Event>]} Change\n * @typedef {[number, number, number]} Jump\n */\n\n/**\n * Tracks a bunch of edits.\n */\nexport class EditMap {\n  /**\n   * Create a new edit map.\n   */\n  constructor() {\n    /**\n     * Record of changes.\n     *\n     * @type {Array<Change>}\n     */\n    this.map = [];\n  }\n\n  /**\n   * Create an edit: a remove and/or add at a certain place.\n   *\n   * @param {number} index\n   * @param {number} remove\n   * @param {Array<Event>} add\n   * @returns {undefined}\n   */\n  add(index, remove, add) {\n    addImplementation(this, index, remove, add);\n  }\n\n  // To do: add this when moving to `micromark`.\n  // /**\n  //  * Create an edit: but insert `add` before existing additions.\n  //  *\n  //  * @param {number} index\n  //  * @param {number} remove\n  //  * @param {Array<Event>} add\n  //  * @returns {undefined}\n  //  */\n  // addBefore(index, remove, add) {\n  //   addImplementation(this, index, remove, add, true)\n  // }\n\n  /**\n   * Done, change the events.\n   *\n   * @param {Array<Event>} events\n   * @returns {undefined}\n   */\n  consume(events) {\n    this.map.sort(function (a, b) {\n      return a[0] - b[0];\n    });\n\n    /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n    if (this.map.length === 0) {\n      return;\n    }\n\n    // To do: if links are added in events, like they are in `markdown-rs`,\n    // this is needed.\n    // // Calculate jumps: where items in the current list move to.\n    // /** @type {Array<Jump>} */\n    // const jumps = []\n    // let index = 0\n    // let addAcc = 0\n    // let removeAcc = 0\n    // while (index < this.map.length) {\n    //   const [at, remove, add] = this.map[index]\n    //   removeAcc += remove\n    //   addAcc += add.length\n    //   jumps.push([at, removeAcc, addAcc])\n    //   index += 1\n    // }\n    //\n    // . shiftLinks(events, jumps)\n\n    let index = this.map.length;\n    /** @type {Array<Array<Event>>} */\n    const vecs = [];\n    while (index > 0) {\n      index -= 1;\n      vecs.push(events.slice(this.map[index][0] + this.map[index][1]), this.map[index][2]);\n\n      // Truncate rest.\n      events.length = this.map[index][0];\n    }\n    vecs.push(events.slice());\n    events.length = 0;\n    let slice = vecs.pop();\n    while (slice) {\n      for (const element of slice) {\n        events.push(element);\n      }\n      slice = vecs.pop();\n    }\n\n    // Truncate everything.\n    this.map.length = 0;\n  }\n}\n\n/**\n * Create an edit.\n *\n * @param {EditMap} editMap\n * @param {number} at\n * @param {number} remove\n * @param {Array<Event>} add\n * @returns {undefined}\n */\nfunction addImplementation(editMap, at, remove, add) {\n  let index = 0;\n\n  /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n  if (remove === 0 && add.length === 0) {\n    return;\n  }\n  while (index < editMap.map.length) {\n    if (editMap.map[index][0] === at) {\n      editMap.map[index][1] += remove;\n\n      // To do: before not used by tables, use when moving to micromark.\n      // if (before) {\n      //   add.push(...editMap.map[index][2])\n      //   editMap.map[index][2] = add\n      // } else {\n      editMap.map[index][2].push(...add);\n      // }\n\n      return;\n    }\n    index += 1;\n  }\n  editMap.map.push([at, remove, add]);\n}\n\n// /**\n//  * Shift `previous` and `next` links according to `jumps`.\n//  *\n//  * This fixes links in case there are events removed or added between them.\n//  *\n//  * @param {Array<Event>} events\n//  * @param {Array<Jump>} jumps\n//  */\n// function shiftLinks(events, jumps) {\n//   let jumpIndex = 0\n//   let index = 0\n//   let add = 0\n//   let rm = 0\n\n//   while (index < events.length) {\n//     const rmCurr = rm\n\n//     while (jumpIndex < jumps.length && jumps[jumpIndex][0] <= index) {\n//       add = jumps[jumpIndex][2]\n//       rm = jumps[jumpIndex][1]\n//       jumpIndex += 1\n//     }\n\n//     // Ignore items that will be removed.\n//     if (rm > rmCurr) {\n//       index += rm - rmCurr\n//     } else {\n//       // ?\n//       // if let Some(link) = &events[index].link {\n//       //     if let Some(next) = link.next {\n//       //         events[next].link.as_mut().unwrap().previous = Some(index + add - rm);\n//       //         while jumpIndex < jumps.len() && jumps[jumpIndex].0 <= next {\n//       //             add = jumps[jumpIndex].2;\n//       //             rm = jumps[jumpIndex].1;\n//       //             jumpIndex += 1;\n//       //         }\n//       //         events[index].link.as_mut().unwrap().next = Some(next + add - rm);\n//       //         index = next;\n//       //         continue;\n//       //     }\n//       // }\n//       index += 1\n//     }\n//   }\n// }", "/**\n * @import {Event} from 'micromark-util-types'\n */\n\n/**\n * @typedef {'center' | 'left' | 'none' | 'right'} Align\n */\n\n/**\n * Figure out the alignment of a GFM table.\n *\n * @param {Readonly<Array<Event>>} events\n *   List of events.\n * @param {number} index\n *   Table enter event.\n * @returns {Array<Align>}\n *   List of aligns.\n */\nexport function gfmTableAlign(events, index) {\n  let inDelimiterRow = false;\n  /** @type {Array<Align>} */\n  const align = [];\n  while (index < events.length) {\n    const event = events[index];\n    if (inDelimiterRow) {\n      if (event[0] === 'enter') {\n        // Start of alignment value: set a new column.\n        // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n        if (event[1].type === 'tableContent') {\n          align.push(events[index + 1][1].type === 'tableDelimiterMarker' ? 'left' : 'none');\n        }\n      }\n      // Exits:\n      // End of alignment value: change the column.\n      // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n      else if (event[1].type === 'tableContent') {\n        if (events[index - 1][1].type === 'tableDelimiterMarker') {\n          const alignIndex = align.length - 1;\n          align[alignIndex] = align[alignIndex] === 'left' ? 'center' : 'right';\n        }\n      }\n      // Done!\n      else if (event[1].type === 'tableDelimiterRow') {\n        break;\n      }\n    } else if (event[0] === 'enter' && event[1].type === 'tableDelimiterRow') {\n      inDelimiterRow = true;\n    }\n    index += 1;\n  }\n  return align;\n}", "/**\n * @import {Event, Extension, Point, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\n/**\n * @typedef {[number, number, number, number]} Range\n *   Cell info.\n *\n * @typedef {0 | 1 | 2 | 3} RowKind\n *   Where we are: `1` for head row, `2` for delimiter row, `3` for body row.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nimport { EditMap } from './edit-map.js';\nimport { gfmTableAlign } from './infer.js';\n\n/**\n * Create an HTML extension for `micromark` to support GitHub tables syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable GFM\n *   table syntax.\n */\nexport function gfmTable() {\n  return {\n    flow: {\n      null: {\n        name: 'table',\n        tokenize: tokenizeTable,\n        resolveAll: resolveTable\n      }\n    }\n  };\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTable(effects, ok, nok) {\n  const self = this;\n  let size = 0;\n  let sizeB = 0;\n  /** @type {boolean | undefined} */\n  let seen;\n  return start;\n\n  /**\n   * Start of a GFM table.\n   *\n   * If there is a valid table row or table head before, then we try to parse\n   * another row.\n   * Otherwise, we try to parse a head.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   * > | | b |\n   *     ^\n   * ```\n   * @type {State}\n   */\n  function start(code) {\n    let index = self.events.length - 1;\n    while (index > -1) {\n      const type = self.events[index][1].type;\n      if (type === \"lineEnding\" ||\n      // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n      type === \"linePrefix\") index--;else break;\n    }\n    const tail = index > -1 ? self.events[index][1].type : null;\n    const next = tail === 'tableHead' || tail === 'tableRow' ? bodyRowStart : headRowBefore;\n\n    // Don\u2019t allow lazy body rows.\n    if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n      return nok(code);\n    }\n    return next(code);\n  }\n\n  /**\n   * Before table head row.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowBefore(code) {\n    effects.enter('tableHead');\n    effects.enter('tableRow');\n    return headRowStart(code);\n  }\n\n  /**\n   * Before table head row, after whitespace.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowStart(code) {\n    if (code === 124) {\n      return headRowBreak(code);\n    }\n\n    // To do: micromark-js should let us parse our own whitespace in extensions,\n    // like `markdown-rs`:\n    //\n    // ```js\n    // // 4+ spaces.\n    // if (markdownSpace(code)) {\n    //   return nok(code)\n    // }\n    // ```\n\n    seen = true;\n    // Count the first character, that isn\u2019t a pipe, double.\n    sizeB += 1;\n    return headRowBreak(code);\n  }\n\n  /**\n   * At break in table head row.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *       ^\n   *         ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowBreak(code) {\n    if (code === null) {\n      // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don\u2018t.\n      return nok(code);\n    }\n    if (markdownLineEnding(code)) {\n      // If anything other than one pipe (ignoring whitespace) was used, it\u2019s fine.\n      if (sizeB > 1) {\n        sizeB = 0;\n        // To do: check if this works.\n        // Feel free to interrupt:\n        self.interrupt = true;\n        effects.exit('tableRow');\n        effects.enter(\"lineEnding\");\n        effects.consume(code);\n        effects.exit(\"lineEnding\");\n        return headDelimiterStart;\n      }\n\n      // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don\u2018t.\n      return nok(code);\n    }\n    if (markdownSpace(code)) {\n      // To do: check if this is fine.\n      // effects.attempt(State::Next(StateName::GfmTableHeadRowBreak), State::Nok)\n      // State::Retry(space_or_tab(tokenizer))\n      return factorySpace(effects, headRowBreak, \"whitespace\")(code);\n    }\n    sizeB += 1;\n    if (seen) {\n      seen = false;\n      // Header cell count.\n      size += 1;\n    }\n    if (code === 124) {\n      effects.enter('tableCellDivider');\n      effects.consume(code);\n      effects.exit('tableCellDivider');\n      // Whether a delimiter was seen.\n      seen = true;\n      return headRowBreak;\n    }\n\n    // Anything else is cell data.\n    effects.enter(\"data\");\n    return headRowData(code);\n  }\n\n  /**\n   * In table head row data.\n   *\n   * ```markdown\n   * > | | a |\n   *       ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowData(code) {\n    if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"data\");\n      return headRowBreak(code);\n    }\n    effects.consume(code);\n    return code === 92 ? headRowEscape : headRowData;\n  }\n\n  /**\n   * In table head row escape.\n   *\n   * ```markdown\n   * > | | a\\-b |\n   *         ^\n   *   | | ---- |\n   *   | | c    |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowEscape(code) {\n    if (code === 92 || code === 124) {\n      effects.consume(code);\n      return headRowData;\n    }\n    return headRowData(code);\n  }\n\n  /**\n   * Before delimiter row.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *     ^\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterStart(code) {\n    // Reset `interrupt`.\n    self.interrupt = false;\n\n    // Note: in `markdown-rs`, we need to handle piercing here too.\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code);\n    }\n    effects.enter('tableDelimiterRow');\n    // Track if we\u2019ve seen a `:` or `|`.\n    seen = false;\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headDelimiterBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n    }\n    return headDelimiterBefore(code);\n  }\n\n  /**\n   * Before delimiter row, after optional whitespace.\n   *\n   * Reused when a `|` is found later, to parse another cell.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *     ^\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterBefore(code) {\n    if (code === 45 || code === 58) {\n      return headDelimiterValueBefore(code);\n    }\n    if (code === 124) {\n      seen = true;\n      // If we start with a pipe, we open a cell marker.\n      effects.enter('tableCellDivider');\n      effects.consume(code);\n      effects.exit('tableCellDivider');\n      return headDelimiterCellBefore;\n    }\n\n    // More whitespace / empty row not allowed at start.\n    return headDelimiterNok(code);\n  }\n\n  /**\n   * After `|`, before delimiter cell.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterCellBefore(code) {\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headDelimiterValueBefore, \"whitespace\")(code);\n    }\n    return headDelimiterValueBefore(code);\n  }\n\n  /**\n   * Before delimiter cell value.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterValueBefore(code) {\n    // Align: left.\n    if (code === 58) {\n      sizeB += 1;\n      seen = true;\n      effects.enter('tableDelimiterMarker');\n      effects.consume(code);\n      effects.exit('tableDelimiterMarker');\n      return headDelimiterLeftAlignmentAfter;\n    }\n\n    // Align: none.\n    if (code === 45) {\n      sizeB += 1;\n      // To do: seems weird that this *isn\u2019t* left aligned, but that state is used?\n      return headDelimiterLeftAlignmentAfter(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      return headDelimiterCellAfter(code);\n    }\n    return headDelimiterNok(code);\n  }\n\n  /**\n   * After delimiter cell left alignment marker.\n   *\n   * ```markdown\n   *   | | a  |\n   * > | | :- |\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterLeftAlignmentAfter(code) {\n    if (code === 45) {\n      effects.enter('tableDelimiterFiller');\n      return headDelimiterFiller(code);\n    }\n\n    // Anything else is not ok after the left-align colon.\n    return headDelimiterNok(code);\n  }\n\n  /**\n   * In delimiter cell filler.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterFiller(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return headDelimiterFiller;\n    }\n\n    // Align is `center` if it was `left`, `right` otherwise.\n    if (code === 58) {\n      seen = true;\n      effects.exit('tableDelimiterFiller');\n      effects.enter('tableDelimiterMarker');\n      effects.consume(code);\n      effects.exit('tableDelimiterMarker');\n      return headDelimiterRightAlignmentAfter;\n    }\n    effects.exit('tableDelimiterFiller');\n    return headDelimiterRightAlignmentAfter(code);\n  }\n\n  /**\n   * After delimiter cell right alignment marker.\n   *\n   * ```markdown\n   *   | |  a |\n   * > | | -: |\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterRightAlignmentAfter(code) {\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headDelimiterCellAfter, \"whitespace\")(code);\n    }\n    return headDelimiterCellAfter(code);\n  }\n\n  /**\n   * After delimiter cell.\n   *\n   * ```markdown\n   *   | |  a |\n   * > | | -: |\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterCellAfter(code) {\n    if (code === 124) {\n      return headDelimiterBefore(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      // Exit when:\n      // * there was no `:` or `|` at all (it\u2019s a thematic break or setext\n      //   underline instead)\n      // * the header cell count is not the delimiter cell count\n      if (!seen || size !== sizeB) {\n        return headDelimiterNok(code);\n      }\n\n      // Note: in markdown-rs`, a reset is needed here.\n      effects.exit('tableDelimiterRow');\n      effects.exit('tableHead');\n      // To do: in `markdown-rs`, resolvers need to be registered manually.\n      // effects.register_resolver(ResolveName::GfmTable)\n      return ok(code);\n    }\n    return headDelimiterNok(code);\n  }\n\n  /**\n   * In delimiter row, at a disallowed byte.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | x |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterNok(code) {\n    // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don\u2018t.\n    return nok(code);\n  }\n\n  /**\n   * Before table body row.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowStart(code) {\n    // Note: in `markdown-rs` we need to manually take care of a prefix,\n    // but in `micromark-js` that is done for us, so if we\u2019re here, we\u2019re\n    // never at whitespace.\n    effects.enter('tableRow');\n    return bodyRowBreak(code);\n  }\n\n  /**\n   * At break in table body row.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *     ^\n   *       ^\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowBreak(code) {\n    if (code === 124) {\n      effects.enter('tableCellDivider');\n      effects.consume(code);\n      effects.exit('tableCellDivider');\n      return bodyRowBreak;\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('tableRow');\n      return ok(code);\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, bodyRowBreak, \"whitespace\")(code);\n    }\n\n    // Anything else is cell content.\n    effects.enter(\"data\");\n    return bodyRowData(code);\n  }\n\n  /**\n   * In table body row data.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowData(code) {\n    if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"data\");\n      return bodyRowBreak(code);\n    }\n    effects.consume(code);\n    return code === 92 ? bodyRowEscape : bodyRowData;\n  }\n\n  /**\n   * In table body row escape.\n   *\n   * ```markdown\n   *   | | a    |\n   *   | | ---- |\n   * > | | b\\-c |\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowEscape(code) {\n    if (code === 92 || code === 124) {\n      effects.consume(code);\n      return bodyRowData;\n    }\n    return bodyRowData(code);\n  }\n}\n\n/** @type {Resolver} */\n\nfunction resolveTable(events, context) {\n  let index = -1;\n  let inFirstCellAwaitingPipe = true;\n  /** @type {RowKind} */\n  let rowKind = 0;\n  /** @type {Range} */\n  let lastCell = [0, 0, 0, 0];\n  /** @type {Range} */\n  let cell = [0, 0, 0, 0];\n  let afterHeadAwaitingFirstBodyRow = false;\n  let lastTableEnd = 0;\n  /** @type {Token | undefined} */\n  let currentTable;\n  /** @type {Token | undefined} */\n  let currentBody;\n  /** @type {Token | undefined} */\n  let currentCell;\n  const map = new EditMap();\n  while (++index < events.length) {\n    const event = events[index];\n    const token = event[1];\n    if (event[0] === 'enter') {\n      // Start of head.\n      if (token.type === 'tableHead') {\n        afterHeadAwaitingFirstBodyRow = false;\n\n        // Inject previous (body end and) table end.\n        if (lastTableEnd !== 0) {\n          flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n          currentBody = undefined;\n          lastTableEnd = 0;\n        }\n\n        // Inject table start.\n        currentTable = {\n          type: 'table',\n          start: Object.assign({}, token.start),\n          // Note: correct end is set later.\n          end: Object.assign({}, token.end)\n        };\n        map.add(index, 0, [['enter', currentTable, context]]);\n      } else if (token.type === 'tableRow' || token.type === 'tableDelimiterRow') {\n        inFirstCellAwaitingPipe = true;\n        currentCell = undefined;\n        lastCell = [0, 0, 0, 0];\n        cell = [0, index + 1, 0, 0];\n\n        // Inject table body start.\n        if (afterHeadAwaitingFirstBodyRow) {\n          afterHeadAwaitingFirstBodyRow = false;\n          currentBody = {\n            type: 'tableBody',\n            start: Object.assign({}, token.start),\n            // Note: correct end is set later.\n            end: Object.assign({}, token.end)\n          };\n          map.add(index, 0, [['enter', currentBody, context]]);\n        }\n        rowKind = token.type === 'tableDelimiterRow' ? 2 : currentBody ? 3 : 1;\n      }\n      // Cell data.\n      else if (rowKind && (token.type === \"data\" || token.type === 'tableDelimiterMarker' || token.type === 'tableDelimiterFiller')) {\n        inFirstCellAwaitingPipe = false;\n\n        // First value in cell.\n        if (cell[2] === 0) {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1];\n            currentCell = flushCell(map, context, lastCell, rowKind, undefined, currentCell);\n            lastCell = [0, 0, 0, 0];\n          }\n          cell[2] = index;\n        }\n      } else if (token.type === 'tableCellDivider') {\n        if (inFirstCellAwaitingPipe) {\n          inFirstCellAwaitingPipe = false;\n        } else {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1];\n            currentCell = flushCell(map, context, lastCell, rowKind, undefined, currentCell);\n          }\n          lastCell = cell;\n          cell = [lastCell[1], index, 0, 0];\n        }\n      }\n    }\n    // Exit events.\n    else if (token.type === 'tableHead') {\n      afterHeadAwaitingFirstBodyRow = true;\n      lastTableEnd = index;\n    } else if (token.type === 'tableRow' || token.type === 'tableDelimiterRow') {\n      lastTableEnd = index;\n      if (lastCell[1] !== 0) {\n        cell[0] = cell[1];\n        currentCell = flushCell(map, context, lastCell, rowKind, index, currentCell);\n      } else if (cell[1] !== 0) {\n        currentCell = flushCell(map, context, cell, rowKind, index, currentCell);\n      }\n      rowKind = 0;\n    } else if (rowKind && (token.type === \"data\" || token.type === 'tableDelimiterMarker' || token.type === 'tableDelimiterFiller')) {\n      cell[3] = index;\n    }\n  }\n  if (lastTableEnd !== 0) {\n    flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n  }\n  map.consume(context.events);\n\n  // To do: move this into `html`, when events are exposed there.\n  // That\u2019s what `markdown-rs` does.\n  // That needs updates to `mdast-util-gfm-table`.\n  index = -1;\n  while (++index < context.events.length) {\n    const event = context.events[index];\n    if (event[0] === 'enter' && event[1].type === 'table') {\n      event[1]._align = gfmTableAlign(context.events, index);\n    }\n  }\n  return events;\n}\n\n/**\n * Generate a cell.\n *\n * @param {EditMap} map\n * @param {Readonly<TokenizeContext>} context\n * @param {Readonly<Range>} range\n * @param {RowKind} rowKind\n * @param {number | undefined} rowEnd\n * @param {Token | undefined} previousCell\n * @returns {Token | undefined}\n */\n// eslint-disable-next-line max-params\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n  // `markdown-rs` uses:\n  // rowKind === 2 ? 'tableDelimiterCell' : 'tableCell'\n  const groupName = rowKind === 1 ? 'tableHeader' : rowKind === 2 ? 'tableDelimiter' : 'tableData';\n  // `markdown-rs` uses:\n  // rowKind === 2 ? 'tableDelimiterCellValue' : 'tableCellText'\n  const valueName = 'tableContent';\n\n  // Insert an exit for the previous cell, if there is one.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //          ^-- exit\n  //           ^^^^-- this cell\n  // ```\n  if (range[0] !== 0) {\n    previousCell.end = Object.assign({}, getPoint(context.events, range[0]));\n    map.add(range[0], 0, [['exit', previousCell, context]]);\n  }\n\n  // Insert enter of this cell.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //           ^-- enter\n  //           ^^^^-- this cell\n  // ```\n  const now = getPoint(context.events, range[1]);\n  previousCell = {\n    type: groupName,\n    start: Object.assign({}, now),\n    // Note: correct end is set later.\n    end: Object.assign({}, now)\n  };\n  map.add(range[1], 0, [['enter', previousCell, context]]);\n\n  // Insert text start at first data start and end at last data end, and\n  // remove events between.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //            ^-- enter\n  //             ^-- exit\n  //           ^^^^-- this cell\n  // ```\n  if (range[2] !== 0) {\n    const relatedStart = getPoint(context.events, range[2]);\n    const relatedEnd = getPoint(context.events, range[3]);\n    /** @type {Token} */\n    const valueToken = {\n      type: valueName,\n      start: Object.assign({}, relatedStart),\n      end: Object.assign({}, relatedEnd)\n    };\n    map.add(range[2], 0, [['enter', valueToken, context]]);\n    if (rowKind !== 2) {\n      // Fix positional info on remaining events\n      const start = context.events[range[2]];\n      const end = context.events[range[3]];\n      start[1].end = Object.assign({}, end[1].end);\n      start[1].type = \"chunkText\";\n      start[1].contentType = \"text\";\n\n      // Remove if needed.\n      if (range[3] > range[2] + 1) {\n        const a = range[2] + 1;\n        const b = range[3] - range[2] - 1;\n        map.add(a, b, []);\n      }\n    }\n    map.add(range[3] + 1, 0, [['exit', valueToken, context]]);\n  }\n\n  // Insert an exit for the last cell, if at the row end.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //                    ^-- exit\n  //               ^^^^^^-- this cell (the last one contains two \u201Cbetween\u201D parts)\n  // ```\n  if (rowEnd !== undefined) {\n    previousCell.end = Object.assign({}, getPoint(context.events, rowEnd));\n    map.add(rowEnd, 0, [['exit', previousCell, context]]);\n    previousCell = undefined;\n  }\n  return previousCell;\n}\n\n/**\n * Generate table end (and table body end).\n *\n * @param {Readonly<EditMap>} map\n * @param {Readonly<TokenizeContext>} context\n * @param {number} index\n * @param {Token} table\n * @param {Token | undefined} tableBody\n */\n// eslint-disable-next-line max-params\nfunction flushTableEnd(map, context, index, table, tableBody) {\n  /** @type {Array<Event>} */\n  const exits = [];\n  const related = getPoint(context.events, index);\n  if (tableBody) {\n    tableBody.end = Object.assign({}, related);\n    exits.push(['exit', tableBody, context]);\n  }\n  table.end = Object.assign({}, related);\n  exits.push(['exit', table, context]);\n  map.add(index + 1, 0, exits);\n}\n\n/**\n * @param {Readonly<Array<Event>>} events\n * @param {number} index\n * @returns {Readonly<Point>}\n */\nfunction getPoint(events, index) {\n  const event = events[index];\n  const side = event[0] === 'enter' ? 'start' : 'end';\n  return event[1][side];\n}", "/**\n * @import {Extension, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nconst tasklistCheck = {\n  name: 'tasklistCheck',\n  tokenize: tokenizeTasklistCheck\n};\n\n/**\n * Create an HTML extension for `micromark` to support GFM task list items\n * syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `htmlExtensions` to\n *   support GFM task list items when serializing to HTML.\n */\nexport function gfmTaskListItem() {\n  return {\n    text: {\n      [91]: tasklistCheck\n    }\n  };\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n  const self = this;\n  return open;\n\n  /**\n   * At start of task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (\n    // Exit if there\u2019s stuff before.\n    self.previous !== null ||\n    // Exit if not in the first content that is the first child of a list\n    // item.\n    !self._gfmTasklistFirstContentOfListItem) {\n      return nok(code);\n    }\n    effects.enter('taskListCheck');\n    effects.enter('taskListCheckMarker');\n    effects.consume(code);\n    effects.exit('taskListCheckMarker');\n    return inside;\n  }\n\n  /**\n   * In task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    // Currently we match how GH works in files.\n    // To match how GH works in comments, use `markdownSpace` (`[\\t ]`) instead\n    // of `markdownLineEndingOrSpace` (`[\\t\\n\\r ]`).\n    if (markdownLineEndingOrSpace(code)) {\n      effects.enter('taskListCheckValueUnchecked');\n      effects.consume(code);\n      effects.exit('taskListCheckValueUnchecked');\n      return close;\n    }\n    if (code === 88 || code === 120) {\n      effects.enter('taskListCheckValueChecked');\n      effects.consume(code);\n      effects.exit('taskListCheckValueChecked');\n      return close;\n    }\n    return nok(code);\n  }\n\n  /**\n   * At close of task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function close(code) {\n    if (code === 93) {\n      effects.enter('taskListCheckMarker');\n      effects.consume(code);\n      effects.exit('taskListCheckMarker');\n      effects.exit('taskListCheck');\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * @type {State}\n   */\n  function after(code) {\n    // EOL in paragraph means there must be something else after it.\n    if (markdownLineEnding(code)) {\n      return ok(code);\n    }\n\n    // Space or tab?\n    // Check what comes after.\n    if (markdownSpace(code)) {\n      return effects.check({\n        tokenize: spaceThenNonSpace\n      }, ok, nok)(code);\n    }\n\n    // EOF, or non-whitespace, both wrong.\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction spaceThenNonSpace(effects, ok, nok) {\n  return factorySpace(effects, after, \"whitespace\");\n\n  /**\n   * After whitespace, after task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // EOF means there was nothing, so bad.\n    // EOL means there\u2019s content after it, so good.\n    // Impossible to have more spaces.\n    // Anything else is good.\n    return code === null ? nok(code) : ok(code);\n  }\n}", "/**\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {\n  combineExtensions,\n  combineHtmlExtensions\n} from 'micromark-util-combine-extensions'\nimport {\n  gfmAutolinkLiteral,\n  gfmAutolinkLiteralHtml\n} from 'micromark-extension-gfm-autolink-literal'\nimport {gfmFootnote, gfmFootnoteHtml} from 'micromark-extension-gfm-footnote'\nimport {\n  gfmStrikethrough,\n  gfmStrikethroughHtml\n} from 'micromark-extension-gfm-strikethrough'\nimport {gfmTable, gfmTableHtml} from 'micromark-extension-gfm-table'\nimport {gfmTagfilterHtml} from 'micromark-extension-gfm-tagfilter'\nimport {\n  gfmTaskListItem,\n  gfmTaskListItemHtml\n} from 'micromark-extension-gfm-task-list-item'\n\n/**\n * Create an extension for `micromark` to enable GFM syntax.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n *\n *   Passed to `micromark-extens-gfm-strikethrough`.\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable GFM\n *   syntax.\n */\nexport function gfm(options) {\n  return combineExtensions([\n    gfmAutolinkLiteral(),\n    gfmFootnote(),\n    gfmStrikethrough(options),\n    gfmTable(),\n    gfmTaskListItem()\n  ])\n}\n\n/**\n * Create an extension for `micromark` to support GFM when serializing to HTML.\n *\n * @param {HtmlOptions | null | undefined} [options]\n *   Configuration (optional).\n *\n *   Passed to `micromark-extens-gfm-footnote`.\n * @returns {HtmlExtension}\n *   Extension for `micromark` that can be passed in `htmlExtensions` to\n *   support GFM when serializing to HTML.\n */\nexport function gfmHtml(options) {\n  return combineHtmlExtensions([\n    gfmAutolinkLiteralHtml(),\n    gfmFootnoteHtml(options),\n    gfmStrikethroughHtml(),\n    gfmTableHtml(),\n    gfmTagfilterHtml(),\n    gfmTaskListItemHtml()\n  ])\n}\n", "/**\n * @import {Root} from 'mdast'\n * @import {Options} from 'remark-gfm'\n * @import {} from 'remark-parse'\n * @import {} from 'remark-stringify'\n * @import {Processor} from 'unified'\n */\n\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\nimport {gfm} from 'micromark-extension-gfm'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Add support GFM (autolink literals, footnotes, strikethrough, tables,\n * tasklists).\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nexport default function remarkGfm(options) {\n  // @ts-expect-error: TS is wrong about `this`.\n  // eslint-disable-next-line unicorn/no-this-assignment\n  const self = /** @type {Processor<Root>} */ (this)\n  const settings = options || emptyOptions\n  const data = self.data()\n\n  const micromarkExtensions =\n    data.micromarkExtensions || (data.micromarkExtensions = [])\n  const fromMarkdownExtensions =\n    data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])\n  const toMarkdownExtensions =\n    data.toMarkdownExtensions || (data.toMarkdownExtensions = [])\n\n  micromarkExtensions.push(gfm(settings))\n  fromMarkdownExtensions.push(gfmFromMarkdown())\n  toMarkdownExtensions.push(gfmToMarkdown(settings))\n}\n", "/**\n * @import {\n *   InitialConstruct,\n *   Initializer,\n *   State,\n *   TokenizeContext,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const content = {\n  tokenize: initializeContent\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Initializer}\n *   Content.\n */\nfunction initializeContent(effects) {\n  const contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial);\n  /** @type {Token} */\n  let previous;\n  return contentStart;\n\n  /** @type {State} */\n  function afterContentStartConstruct(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, contentStart, \"linePrefix\");\n  }\n\n  /** @type {State} */\n  function paragraphInitial(code) {\n    effects.enter(\"paragraph\");\n    return lineStart(code);\n  }\n\n  /** @type {State} */\n  function lineStart(code) {\n    const token = effects.enter(\"chunkText\", {\n      contentType: \"text\",\n      previous\n    });\n    if (previous) {\n      previous.next = token;\n    }\n    previous = token;\n    return data(code);\n  }\n\n  /** @type {State} */\n  function data(code) {\n    if (code === null) {\n      effects.exit(\"chunkText\");\n      effects.exit(\"paragraph\");\n      effects.consume(code);\n      return;\n    }\n    if (markdownLineEnding(code)) {\n      effects.consume(code);\n      effects.exit(\"chunkText\");\n      return lineStart;\n    }\n\n    // Data.\n    effects.consume(code);\n    return data;\n  }\n}", "/**\n * @import {\n *   Construct,\n *   ContainerState,\n *   InitialConstruct,\n *   Initializer,\n *   Point,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n *   Construct and its state.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {InitialConstruct} */\nexport const document = {\n  tokenize: initializeDocument\n};\n\n/** @type {Construct} */\nconst containerConstruct = {\n  tokenize: tokenizeContainer\n};\n\n/**\n * @this {TokenizeContext}\n *   Self.\n * @type {Initializer}\n *   Initializer.\n */\nfunction initializeDocument(effects) {\n  const self = this;\n  /** @type {Array<StackItem>} */\n  const stack = [];\n  let continued = 0;\n  /** @type {TokenizeContext | undefined} */\n  let childFlow;\n  /** @type {Token | undefined} */\n  let childToken;\n  /** @type {number} */\n  let lineStartOffset;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    // First we iterate through the open blocks, starting with the root\n    // document, and descending through last children down to the last open\n    // block.\n    // Each block imposes a condition that the line must satisfy if the block is\n    // to remain open.\n    // For example, a block quote requires a `>` character.\n    // A paragraph requires a non-blank line.\n    // In this phase we may match all or just some of the open blocks.\n    // But we cannot close unmatched blocks yet, because we may have a lazy\n    // continuation line.\n    if (continued < stack.length) {\n      const item = stack[continued];\n      self.containerState = item[1];\n      return effects.attempt(item[0].continuation, documentContinue, checkNewContainers)(code);\n    }\n\n    // Done.\n    return checkNewContainers(code);\n  }\n\n  /** @type {State} */\n  function documentContinue(code) {\n    continued++;\n\n    // Note: this field is called `_closeFlow` but it also closes containers.\n    // Perhaps a good idea to rename it but it\u2019s already used in the wild by\n    // extensions.\n    if (self.containerState._closeFlow) {\n      self.containerState._closeFlow = undefined;\n      if (childFlow) {\n        closeFlow();\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when dealing with lazy lines in `writeToChild`.\n      const indexBeforeExits = self.events.length;\n      let indexBeforeFlow = indexBeforeExits;\n      /** @type {Point | undefined} */\n      let point;\n\n      // Find the flow chunk.\n      while (indexBeforeFlow--) {\n        if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n          point = self.events[indexBeforeFlow][1].end;\n          break;\n        }\n      }\n      exitContainers(continued);\n\n      // Fix positions.\n      let index = indexBeforeExits;\n      while (index < self.events.length) {\n        self.events[index][1].end = {\n          ...point\n        };\n        index++;\n      }\n\n      // Inject the exits earlier (they\u2019re still also at the end).\n      splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n      // Discard the duplicate exits.\n      self.events.length = index;\n      return checkNewContainers(code);\n    }\n    return start(code);\n  }\n\n  /** @type {State} */\n  function checkNewContainers(code) {\n    // Next, after consuming the continuation markers for existing blocks, we\n    // look for new block starts (e.g. `>` for a block quote).\n    // If we encounter a new block start, we close any blocks unmatched in\n    // step 1 before creating the new block as a child of the last matched\n    // block.\n    if (continued === stack.length) {\n      // No need to `check` whether there\u2019s a container, of `exitContainers`\n      // would be moot.\n      // We can instead immediately `attempt` to parse one.\n      if (!childFlow) {\n        return documentContinued(code);\n      }\n\n      // If we have concrete content, such as block HTML or fenced code,\n      // we can\u2019t have containers \u201Cpierce\u201D into them, so we can immediately\n      // start.\n      if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n        return flowStart(code);\n      }\n\n      // If we do have flow, it could still be a blank line,\n      // but we\u2019d be interrupting it w/ a new container if there\u2019s a current\n      // construct.\n      // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n      // needed in micromark-extension-gfm-table@1.0.6).\n      self.interrupt = Boolean(childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack);\n    }\n\n    // Check if there is a new container.\n    self.containerState = {};\n    return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code);\n  }\n\n  /** @type {State} */\n  function thereIsANewContainer(code) {\n    if (childFlow) closeFlow();\n    exitContainers(continued);\n    return documentContinued(code);\n  }\n\n  /** @type {State} */\n  function thereIsNoNewContainer(code) {\n    self.parser.lazy[self.now().line] = continued !== stack.length;\n    lineStartOffset = self.now().offset;\n    return flowStart(code);\n  }\n\n  /** @type {State} */\n  function documentContinued(code) {\n    // Try new containers.\n    self.containerState = {};\n    return effects.attempt(containerConstruct, containerContinue, flowStart)(code);\n  }\n\n  /** @type {State} */\n  function containerContinue(code) {\n    continued++;\n    stack.push([self.currentConstruct, self.containerState]);\n    // Try another.\n    return documentContinued(code);\n  }\n\n  /** @type {State} */\n  function flowStart(code) {\n    if (code === null) {\n      if (childFlow) closeFlow();\n      exitContainers(0);\n      effects.consume(code);\n      return;\n    }\n    childFlow = childFlow || self.parser.flow(self.now());\n    effects.enter(\"chunkFlow\", {\n      _tokenizer: childFlow,\n      contentType: \"flow\",\n      previous: childToken\n    });\n    return flowContinue(code);\n  }\n\n  /** @type {State} */\n  function flowContinue(code) {\n    if (code === null) {\n      writeToChild(effects.exit(\"chunkFlow\"), true);\n      exitContainers(0);\n      effects.consume(code);\n      return;\n    }\n    if (markdownLineEnding(code)) {\n      effects.consume(code);\n      writeToChild(effects.exit(\"chunkFlow\"));\n      // Get ready for the next line.\n      continued = 0;\n      self.interrupt = undefined;\n      return start;\n    }\n    effects.consume(code);\n    return flowContinue;\n  }\n\n  /**\n   * @param {Token} token\n   *   Token.\n   * @param {boolean | undefined} [endOfFile]\n   *   Whether the token is at the end of the file (default: `false`).\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function writeToChild(token, endOfFile) {\n    const stream = self.sliceStream(token);\n    if (endOfFile) stream.push(null);\n    token.previous = childToken;\n    if (childToken) childToken.next = token;\n    childToken = token;\n    childFlow.defineSkip(token.start);\n    childFlow.write(stream);\n\n    // Alright, so we just added a lazy line:\n    //\n    // ```markdown\n    // > a\n    // b.\n    //\n    // Or:\n    //\n    // > ~~~c\n    // d\n    //\n    // Or:\n    //\n    // > | e |\n    // f\n    // ```\n    //\n    // The construct in the second example (fenced code) does not accept lazy\n    // lines, so it marked itself as done at the end of its first line, and\n    // then the content construct parses `d`.\n    // Most constructs in markdown match on the first line: if the first line\n    // forms a construct, a non-lazy line can\u2019t \u201Cunmake\u201D it.\n    //\n    // The construct in the third example is potentially a GFM table, and\n    // those are *weird*.\n    // It *could* be a table, from the first line, if the following line\n    // matches a condition.\n    // In this case, that second line is lazy, which \u201Cunmakes\u201D the first line\n    // and turns the whole into one content block.\n    //\n    // We\u2019ve now parsed the non-lazy and the lazy line, and can figure out\n    // whether the lazy line started a new flow block.\n    // If it did, we exit the current containers between the two flow blocks.\n    if (self.parser.lazy[token.start.line]) {\n      let index = childFlow.events.length;\n      while (index--) {\n        if (\n        // The token starts before the line ending\u2026\n        childFlow.events[index][1].start.offset < lineStartOffset && (\n        // \u2026and either is not ended yet\u2026\n        !childFlow.events[index][1].end ||\n        // \u2026or ends after it.\n        childFlow.events[index][1].end.offset > lineStartOffset)) {\n          // Exit: there\u2019s still something open, which means it\u2019s a lazy line\n          // part of something.\n          return;\n        }\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when closing flow in `documentContinue`.\n      const indexBeforeExits = self.events.length;\n      let indexBeforeFlow = indexBeforeExits;\n      /** @type {boolean | undefined} */\n      let seen;\n      /** @type {Point | undefined} */\n      let point;\n\n      // Find the previous chunk (the one before the lazy line).\n      while (indexBeforeFlow--) {\n        if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n          if (seen) {\n            point = self.events[indexBeforeFlow][1].end;\n            break;\n          }\n          seen = true;\n        }\n      }\n      exitContainers(continued);\n\n      // Fix positions.\n      index = indexBeforeExits;\n      while (index < self.events.length) {\n        self.events[index][1].end = {\n          ...point\n        };\n        index++;\n      }\n\n      // Inject the exits earlier (they\u2019re still also at the end).\n      splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n      // Discard the duplicate exits.\n      self.events.length = index;\n    }\n  }\n\n  /**\n   * @param {number} size\n   *   Size.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function exitContainers(size) {\n    let index = stack.length;\n\n    // Exit open containers.\n    while (index-- > size) {\n      const entry = stack[index];\n      self.containerState = entry[1];\n      entry[0].exit.call(self, effects);\n    }\n    stack.length = size;\n  }\n  function closeFlow() {\n    childFlow.write([null]);\n    childToken = undefined;\n    childFlow = undefined;\n    self.containerState._closeFlow = undefined;\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n *   Tokenizer.\n */\nfunction tokenizeContainer(effects, ok, nok) {\n  // Always populated by defaults.\n\n  return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), \"linePrefix\", this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4);\n}", "/**\n * @import {\n *   InitialConstruct,\n *   Initializer,\n *   State,\n *   TokenizeContext\n * } from 'micromark-util-types'\n */\n\nimport { blankLine, content } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const flow = {\n  tokenize: initializeFlow\n};\n\n/**\n * @this {TokenizeContext}\n *   Self.\n * @type {Initializer}\n *   Initializer.\n */\nfunction initializeFlow(effects) {\n  const self = this;\n  const initial = effects.attempt(\n  // Try to parse a blank line.\n  blankLine, atBlankEnding,\n  // Try to parse initial flow (essentially, only code).\n  effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), \"linePrefix\")));\n  return initial;\n\n  /** @type {State} */\n  function atBlankEnding(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEndingBlank\");\n    effects.consume(code);\n    effects.exit(\"lineEndingBlank\");\n    self.currentConstruct = undefined;\n    return initial;\n  }\n\n  /** @type {State} */\n  function afterConstruct(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    self.currentConstruct = undefined;\n    return initial;\n  }\n}", "/**\n * @import {\n *   Code,\n *   InitialConstruct,\n *   Initializer,\n *   Resolver,\n *   State,\n *   TokenizeContext\n * } from 'micromark-util-types'\n */\n\nexport const resolver = {\n  resolveAll: createResolver()\n};\nexport const string = initializeFactory('string');\nexport const text = initializeFactory('text');\n\n/**\n * @param {'string' | 'text'} field\n *   Field.\n * @returns {InitialConstruct}\n *   Construct.\n */\nfunction initializeFactory(field) {\n  return {\n    resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined),\n    tokenize: initializeText\n  };\n\n  /**\n   * @this {TokenizeContext}\n   *   Context.\n   * @type {Initializer}\n   */\n  function initializeText(effects) {\n    const self = this;\n    const constructs = this.parser.constructs[field];\n    const text = effects.attempt(constructs, start, notText);\n    return start;\n\n    /** @type {State} */\n    function start(code) {\n      return atBreak(code) ? text(code) : notText(code);\n    }\n\n    /** @type {State} */\n    function notText(code) {\n      if (code === null) {\n        effects.consume(code);\n        return;\n      }\n      effects.enter(\"data\");\n      effects.consume(code);\n      return data;\n    }\n\n    /** @type {State} */\n    function data(code) {\n      if (atBreak(code)) {\n        effects.exit(\"data\");\n        return text(code);\n      }\n\n      // Data.\n      effects.consume(code);\n      return data;\n    }\n\n    /**\n     * @param {Code} code\n     *   Code.\n     * @returns {boolean}\n     *   Whether the code is a break.\n     */\n    function atBreak(code) {\n      if (code === null) {\n        return true;\n      }\n      const list = constructs[code];\n      let index = -1;\n      if (list) {\n        // Always populated by defaults.\n\n        while (++index < list.length) {\n          const item = list[index];\n          if (!item.previous || item.previous.call(self, self.previous)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n  }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n *   Resolver.\n * @returns {Resolver}\n *   Resolver.\n */\nfunction createResolver(extraResolver) {\n  return resolveAllText;\n\n  /** @type {Resolver} */\n  function resolveAllText(events, context) {\n    let index = -1;\n    /** @type {number | undefined} */\n    let enter;\n\n    // A rather boring computation (to merge adjacent `data` events) which\n    // improves mm performance by 29%.\n    while (++index <= events.length) {\n      if (enter === undefined) {\n        if (events[index] && events[index][1].type === \"data\") {\n          enter = index;\n          index++;\n        }\n      } else if (!events[index] || events[index][1].type !== \"data\") {\n        // Don\u2019t do anything if there is one data token.\n        if (index !== enter + 2) {\n          events[enter][1].end = events[index - 1][1].end;\n          events.splice(enter + 2, index - enter - 2);\n          index = enter + 2;\n        }\n        enter = undefined;\n      }\n    }\n    return extraResolver ? extraResolver(events, context) : events;\n  }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can\u2019t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n  let eventIndex = 0; // Skip first.\n\n  while (++eventIndex <= events.length) {\n    if ((eventIndex === events.length || events[eventIndex][1].type === \"lineEnding\") && events[eventIndex - 1][1].type === \"data\") {\n      const data = events[eventIndex - 1][1];\n      const chunks = context.sliceStream(data);\n      let index = chunks.length;\n      let bufferIndex = -1;\n      let size = 0;\n      /** @type {boolean | undefined} */\n      let tabs;\n      while (index--) {\n        const chunk = chunks[index];\n        if (typeof chunk === 'string') {\n          bufferIndex = chunk.length;\n          while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n            size++;\n            bufferIndex--;\n          }\n          if (bufferIndex) break;\n          bufferIndex = -1;\n        }\n        // Number\n        else if (chunk === -2) {\n          tabs = true;\n          size++;\n        } else if (chunk === -1) {\n          // Empty\n        } else {\n          // Replacement character, exit.\n          index++;\n          break;\n        }\n      }\n\n      // Allow final trailing whitespace.\n      if (context._contentTypeTextTrailing && eventIndex === events.length) {\n        size = 0;\n      }\n      if (size) {\n        const token = {\n          type: eventIndex === events.length || tabs || size < 2 ? \"lineSuffix\" : \"hardBreakTrailing\",\n          start: {\n            _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex,\n            _index: data.start._index + index,\n            line: data.end.line,\n            column: data.end.column - size,\n            offset: data.end.offset - size\n          },\n          end: {\n            ...data.end\n          }\n        };\n        data.end = {\n          ...token.start\n        };\n        if (data.start.offset === data.end.offset) {\n          Object.assign(data, token);\n        } else {\n          events.splice(eventIndex, 0, ['enter', token, context], ['exit', token, context]);\n          eventIndex += 2;\n        }\n      }\n      eventIndex++;\n    }\n  }\n  return events;\n}", "/**\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n  [42]: list,\n  [43]: list,\n  [45]: list,\n  [48]: list,\n  [49]: list,\n  [50]: list,\n  [51]: list,\n  [52]: list,\n  [53]: list,\n  [54]: list,\n  [55]: list,\n  [56]: list,\n  [57]: list,\n  [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n  [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n  [-2]: codeIndented,\n  [-1]: codeIndented,\n  [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n  [35]: headingAtx,\n  [42]: thematicBreak,\n  [45]: [setextUnderline, thematicBreak],\n  [60]: htmlFlow,\n  [61]: setextUnderline,\n  [95]: thematicBreak,\n  [96]: codeFenced,\n  [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n  [38]: characterReference,\n  [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n  [-5]: lineEnding,\n  [-4]: lineEnding,\n  [-3]: lineEnding,\n  [33]: labelStartImage,\n  [38]: characterReference,\n  [42]: attention,\n  [60]: [autolink, htmlText],\n  [91]: labelStartLink,\n  [92]: [hardBreakEscape, characterEscape],\n  [93]: labelEnd,\n  [95]: attention,\n  [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n  null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n  null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n  null: []\n};", "/**\n * @import {\n *   Chunk,\n *   Code,\n *   ConstructRecord,\n *   Construct,\n *   Effects,\n *   InitialConstruct,\n *   ParseContext,\n *   Point,\n *   State,\n *   TokenizeContext,\n *   Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @callback Restore\n *   Restore the state.\n * @returns {undefined}\n *   Nothing.\n *\n * @typedef Info\n *   Info.\n * @property {Restore} restore\n *   Restore.\n * @property {number} from\n *   From.\n *\n * @callback ReturnHandle\n *   Handle a successful run.\n * @param {Construct} construct\n *   Construct.\n * @param {Info} info\n *   Info.\n * @returns {undefined}\n *   Nothing.\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn\u2019t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n *   Parser.\n * @param {InitialConstruct} initialize\n *   Construct.\n * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from]\n *   Point (optional).\n * @returns {TokenizeContext}\n *   Context.\n */\nexport function createTokenizer(parser, initialize, from) {\n  /** @type {Point} */\n  let point = {\n    _bufferIndex: -1,\n    _index: 0,\n    line: from && from.line || 1,\n    column: from && from.column || 1,\n    offset: from && from.offset || 0\n  };\n  /** @type {Record<string, number>} */\n  const columnStart = {};\n  /** @type {Array<Construct>} */\n  const resolveAllConstructs = [];\n  /** @type {Array<Chunk>} */\n  let chunks = [];\n  /** @type {Array<Token>} */\n  let stack = [];\n  /** @type {boolean | undefined} */\n  let consumed = true;\n\n  /**\n   * Tools used for tokenizing.\n   *\n   * @type {Effects}\n   */\n  const effects = {\n    attempt: constructFactory(onsuccessfulconstruct),\n    check: constructFactory(onsuccessfulcheck),\n    consume,\n    enter,\n    exit,\n    interrupt: constructFactory(onsuccessfulcheck, {\n      interrupt: true\n    })\n  };\n\n  /**\n   * State and tools for resolving and serializing.\n   *\n   * @type {TokenizeContext}\n   */\n  const context = {\n    code: null,\n    containerState: {},\n    defineSkip,\n    events: [],\n    now,\n    parser,\n    previous: null,\n    sliceSerialize,\n    sliceStream,\n    write\n  };\n\n  /**\n   * The state function.\n   *\n   * @type {State | undefined}\n   */\n  let state = initialize.tokenize.call(context, effects);\n\n  /**\n   * Track which character we expect to be consumed, to catch bugs.\n   *\n   * @type {Code}\n   */\n  let expectedCode;\n  if (initialize.resolveAll) {\n    resolveAllConstructs.push(initialize);\n  }\n  return context;\n\n  /** @type {TokenizeContext['write']} */\n  function write(slice) {\n    chunks = push(chunks, slice);\n    main();\n\n    // Exit if we\u2019re not done, resolve might change stuff.\n    if (chunks[chunks.length - 1] !== null) {\n      return [];\n    }\n    addResult(initialize, 0);\n\n    // Otherwise, resolve, and exit.\n    context.events = resolveAll(resolveAllConstructs, context.events, context);\n    return context.events;\n  }\n\n  //\n  // Tools.\n  //\n\n  /** @type {TokenizeContext['sliceSerialize']} */\n  function sliceSerialize(token, expandTabs) {\n    return serializeChunks(sliceStream(token), expandTabs);\n  }\n\n  /** @type {TokenizeContext['sliceStream']} */\n  function sliceStream(token) {\n    return sliceChunks(chunks, token);\n  }\n\n  /** @type {TokenizeContext['now']} */\n  function now() {\n    // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n    const {\n      _bufferIndex,\n      _index,\n      line,\n      column,\n      offset\n    } = point;\n    return {\n      _bufferIndex,\n      _index,\n      line,\n      column,\n      offset\n    };\n  }\n\n  /** @type {TokenizeContext['defineSkip']} */\n  function defineSkip(value) {\n    columnStart[value.line] = value.column;\n    accountForPotentialSkip();\n  }\n\n  //\n  // State management.\n  //\n\n  /**\n   * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n   * `consume`).\n   * Here is where we walk through the chunks, which either include strings of\n   * several characters, or numerical character codes.\n   * The reason to do this in a loop instead of a call is so the stack can\n   * drain.\n   *\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function main() {\n    /** @type {number} */\n    let chunkIndex;\n    while (point._index < chunks.length) {\n      const chunk = chunks[point._index];\n\n      // If we\u2019re in a buffer chunk, loop through it.\n      if (typeof chunk === 'string') {\n        chunkIndex = point._index;\n        if (point._bufferIndex < 0) {\n          point._bufferIndex = 0;\n        }\n        while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n          go(chunk.charCodeAt(point._bufferIndex));\n        }\n      } else {\n        go(chunk);\n      }\n    }\n  }\n\n  /**\n   * Deal with one code.\n   *\n   * @param {Code} code\n   *   Code.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function go(code) {\n    consumed = undefined;\n    expectedCode = code;\n    state = state(code);\n  }\n\n  /** @type {Effects['consume']} */\n  function consume(code) {\n    if (markdownLineEnding(code)) {\n      point.line++;\n      point.column = 1;\n      point.offset += code === -3 ? 2 : 1;\n      accountForPotentialSkip();\n    } else if (code !== -1) {\n      point.column++;\n      point.offset++;\n    }\n\n    // Not in a string chunk.\n    if (point._bufferIndex < 0) {\n      point._index++;\n    } else {\n      point._bufferIndex++;\n\n      // At end of string chunk.\n      if (point._bufferIndex ===\n      // Points w/ non-negative `_bufferIndex` reference\n      // strings.\n      /** @type {string} */\n      chunks[point._index].length) {\n        point._bufferIndex = -1;\n        point._index++;\n      }\n    }\n\n    // Expose the previous character.\n    context.previous = code;\n\n    // Mark as consumed.\n    consumed = true;\n  }\n\n  /** @type {Effects['enter']} */\n  function enter(type, fields) {\n    /** @type {Token} */\n    // @ts-expect-error Patch instead of assign required fields to help GC.\n    const token = fields || {};\n    token.type = type;\n    token.start = now();\n    context.events.push(['enter', token, context]);\n    stack.push(token);\n    return token;\n  }\n\n  /** @type {Effects['exit']} */\n  function exit(type) {\n    const token = stack.pop();\n    token.end = now();\n    context.events.push(['exit', token, context]);\n    return token;\n  }\n\n  /**\n   * Use results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulconstruct(construct, info) {\n    addResult(construct, info.from);\n  }\n\n  /**\n   * Discard results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulcheck(_, info) {\n    info.restore();\n  }\n\n  /**\n   * Factory to attempt/check/interrupt.\n   *\n   * @param {ReturnHandle} onreturn\n   *   Callback.\n   * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n   *   Fields.\n   */\n  function constructFactory(onreturn, fields) {\n    return hook;\n\n    /**\n     * Handle either an object mapping codes to constructs, a list of\n     * constructs, or a single construct.\n     *\n     * @param {Array<Construct> | ConstructRecord | Construct} constructs\n     *   Constructs.\n     * @param {State} returnState\n     *   State.\n     * @param {State | undefined} [bogusState]\n     *   State.\n     * @returns {State}\n     *   State.\n     */\n    function hook(constructs, returnState, bogusState) {\n      /** @type {ReadonlyArray<Construct>} */\n      let listOfConstructs;\n      /** @type {number} */\n      let constructIndex;\n      /** @type {Construct} */\n      let currentConstruct;\n      /** @type {Info} */\n      let info;\n      return Array.isArray(constructs) ? /* c8 ignore next 1 */\n      handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n      // Looks like a construct.\n      handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs);\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ConstructRecord} map\n       *   Constructs.\n       * @returns {State}\n       *   State.\n       */\n      function handleMapOfConstructs(map) {\n        return start;\n\n        /** @type {State} */\n        function start(code) {\n          const left = code !== null && map[code];\n          const all = code !== null && map.null;\n          const list = [\n          // To do: add more extension tests.\n          /* c8 ignore next 2 */\n          ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n          return handleListOfConstructs(list)(code);\n        }\n      }\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ReadonlyArray<Construct>} list\n       *   Constructs.\n       * @returns {State}\n       *   State.\n       */\n      function handleListOfConstructs(list) {\n        listOfConstructs = list;\n        constructIndex = 0;\n        if (list.length === 0) {\n          return bogusState;\n        }\n        return handleConstruct(list[constructIndex]);\n      }\n\n      /**\n       * Handle a single construct.\n       *\n       * @param {Construct} construct\n       *   Construct.\n       * @returns {State}\n       *   State.\n       */\n      function handleConstruct(construct) {\n        return start;\n\n        /** @type {State} */\n        function start(code) {\n          // To do: not needed to store if there is no bogus state, probably?\n          // Currently doesn\u2019t work because `inspect` in document does a check\n          // w/o a bogus, which doesn\u2019t make sense. But it does seem to help perf\n          // by not storing.\n          info = store();\n          currentConstruct = construct;\n          if (!construct.partial) {\n            context.currentConstruct = construct;\n          }\n\n          // Always populated by defaults.\n\n          if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n            return nok(code);\n          }\n          return construct.tokenize.call(\n          // If we do have fields, create an object w/ `context` as its\n          // prototype.\n          // This allows a \u201Clive binding\u201D, which is needed for `interrupt`.\n          fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n        }\n      }\n\n      /** @type {State} */\n      function ok(code) {\n        consumed = true;\n        onreturn(currentConstruct, info);\n        return returnState;\n      }\n\n      /** @type {State} */\n      function nok(code) {\n        consumed = true;\n        info.restore();\n        if (++constructIndex < listOfConstructs.length) {\n          return handleConstruct(listOfConstructs[constructIndex]);\n        }\n        return bogusState;\n      }\n    }\n  }\n\n  /**\n   * @param {Construct} construct\n   *   Construct.\n   * @param {number} from\n   *   From.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function addResult(construct, from) {\n    if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n      resolveAllConstructs.push(construct);\n    }\n    if (construct.resolve) {\n      splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n    }\n    if (construct.resolveTo) {\n      context.events = construct.resolveTo(context.events, context);\n    }\n  }\n\n  /**\n   * Store state.\n   *\n   * @returns {Info}\n   *   Info.\n   */\n  function store() {\n    const startPoint = now();\n    const startPrevious = context.previous;\n    const startCurrentConstruct = context.currentConstruct;\n    const startEventsIndex = context.events.length;\n    const startStack = Array.from(stack);\n    return {\n      from: startEventsIndex,\n      restore\n    };\n\n    /**\n     * Restore state.\n     *\n     * @returns {undefined}\n     *   Nothing.\n     */\n    function restore() {\n      point = startPoint;\n      context.previous = startPrevious;\n      context.currentConstruct = startCurrentConstruct;\n      context.events.length = startEventsIndex;\n      stack = startStack;\n      accountForPotentialSkip();\n    }\n  }\n\n  /**\n   * Move the current point a bit forward in the line when it\u2019s on a column\n   * skip.\n   *\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function accountForPotentialSkip() {\n    if (point.line in columnStart && point.column < 2) {\n      point.column = columnStart[point.line];\n      point.offset += columnStart[point.line] - 1;\n    }\n  }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n *   Chunks.\n * @param {Pick<Token, 'end' | 'start'>} token\n *   Token.\n * @returns {Array<Chunk>}\n *   Chunks.\n */\nfunction sliceChunks(chunks, token) {\n  const startIndex = token.start._index;\n  const startBufferIndex = token.start._bufferIndex;\n  const endIndex = token.end._index;\n  const endBufferIndex = token.end._bufferIndex;\n  /** @type {Array<Chunk>} */\n  let view;\n  if (startIndex === endIndex) {\n    // @ts-expect-error `_bufferIndex` is used on string chunks.\n    view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n  } else {\n    view = chunks.slice(startIndex, endIndex);\n    if (startBufferIndex > -1) {\n      const head = view[0];\n      if (typeof head === 'string') {\n        view[0] = head.slice(startBufferIndex);\n        /* c8 ignore next 4 -- used to be used, no longer */\n      } else {\n        view.shift();\n      }\n    }\n    if (endBufferIndex > 0) {\n      // @ts-expect-error `_bufferIndex` is used on string chunks.\n      view.push(chunks[endIndex].slice(0, endBufferIndex));\n    }\n  }\n  return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n *   Chunks.\n * @param {boolean | undefined} [expandTabs=false]\n *   Whether to expand tabs (default: `false`).\n * @returns {string}\n *   Result.\n */\nfunction serializeChunks(chunks, expandTabs) {\n  let index = -1;\n  /** @type {Array<string>} */\n  const result = [];\n  /** @type {boolean | undefined} */\n  let atTab;\n  while (++index < chunks.length) {\n    const chunk = chunks[index];\n    /** @type {string} */\n    let value;\n    if (typeof chunk === 'string') {\n      value = chunk;\n    } else switch (chunk) {\n      case -5:\n        {\n          value = \"\\r\";\n          break;\n        }\n      case -4:\n        {\n          value = \"\\n\";\n          break;\n        }\n      case -3:\n        {\n          value = \"\\r\" + \"\\n\";\n          break;\n        }\n      case -2:\n        {\n          value = expandTabs ? \" \" : \"\\t\";\n          break;\n        }\n      case -1:\n        {\n          if (!expandTabs && atTab) continue;\n          value = \" \";\n          break;\n        }\n      default:\n        {\n          // Currently only replacement character.\n          value = String.fromCharCode(chunk);\n        }\n    }\n    atTab = chunk === -2;\n    result.push(value);\n  }\n  return result.join('');\n}", "/**\n * @import {\n *   Create,\n *   FullNormalizedExtension,\n *   InitialConstruct,\n *   ParseContext,\n *   ParseOptions\n * } from 'micromark-util-types'\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { string, text } from './initialize/text.js';\nimport * as defaultConstructs from './constructs.js';\nimport { createTokenizer } from './create-tokenizer.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ParseContext}\n *   Parser.\n */\nexport function parse(options) {\n  const settings = options || {};\n  const constructs = /** @type {FullNormalizedExtension} */\n  combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n  /** @type {ParseContext} */\n  const parser = {\n    constructs,\n    content: create(content),\n    defined: [],\n    document: create(document),\n    flow: create(flow),\n    lazy: {},\n    string: create(string),\n    text: create(text)\n  };\n  return parser;\n\n  /**\n   * @param {InitialConstruct} initial\n   *   Construct to start with.\n   * @returns {Create}\n   *   Create a tokenizer.\n   */\n  function create(initial) {\n    return creator;\n    /** @type {Create} */\n    function creator(from) {\n      return createTokenizer(parser, initial, from);\n    }\n  }\n}", "/**\n * @import {Event} from 'micromark-util-types'\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array<Event>} events\n *   Events.\n * @returns {Array<Event>}\n *   Events.\n */\nexport function postprocess(events) {\n  while (!subtokenize(events)) {\n    // Empty\n  }\n  return events;\n}", "/**\n * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'\n */\n\n/**\n * @callback Preprocessor\n *   Preprocess a value.\n * @param {Value} value\n *   Value.\n * @param {Encoding | null | undefined} [encoding]\n *   Encoding when `value` is a typed array (optional).\n * @param {boolean | null | undefined} [end=false]\n *   Whether this is the last chunk (default: `false`).\n * @returns {Array<Chunk>}\n *   Chunks.\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n *   Preprocess a value.\n */\nexport function preprocess() {\n  let column = 1;\n  let buffer = '';\n  /** @type {boolean | undefined} */\n  let start = true;\n  /** @type {boolean | undefined} */\n  let atCarriageReturn;\n  return preprocessor;\n\n  /** @type {Preprocessor} */\n  // eslint-disable-next-line complexity\n  function preprocessor(value, encoding, end) {\n    /** @type {Array<Chunk>} */\n    const chunks = [];\n    /** @type {RegExpMatchArray | null} */\n    let match;\n    /** @type {number} */\n    let next;\n    /** @type {number} */\n    let startPosition;\n    /** @type {number} */\n    let endPosition;\n    /** @type {Code} */\n    let code;\n    value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value));\n    startPosition = 0;\n    buffer = '';\n    if (start) {\n      // To do: `markdown-rs` actually parses BOMs (byte order mark).\n      if (value.charCodeAt(0) === 65279) {\n        startPosition++;\n      }\n      start = undefined;\n    }\n    while (startPosition < value.length) {\n      search.lastIndex = startPosition;\n      match = search.exec(value);\n      endPosition = match && match.index !== undefined ? match.index : value.length;\n      code = value.charCodeAt(endPosition);\n      if (!match) {\n        buffer = value.slice(startPosition);\n        break;\n      }\n      if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n        chunks.push(-3);\n        atCarriageReturn = undefined;\n      } else {\n        if (atCarriageReturn) {\n          chunks.push(-5);\n          atCarriageReturn = undefined;\n        }\n        if (startPosition < endPosition) {\n          chunks.push(value.slice(startPosition, endPosition));\n          column += endPosition - startPosition;\n        }\n        switch (code) {\n          case 0:\n            {\n              chunks.push(65533);\n              column++;\n              break;\n            }\n          case 9:\n            {\n              next = Math.ceil(column / 4) * 4;\n              chunks.push(-2);\n              while (column++ < next) chunks.push(-1);\n              break;\n            }\n          case 10:\n            {\n              chunks.push(-4);\n              column = 1;\n              break;\n            }\n          default:\n            {\n              atCarriageReturn = true;\n              column = 1;\n            }\n        }\n      }\n      startPosition = endPosition + 1;\n    }\n    if (end) {\n      if (atCarriageReturn) chunks.push(-5);\n      if (buffer) chunks.push(buffer);\n      chunks.push(null);\n    }\n    return chunks;\n  }\n}", "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n *   Node, position, or point.\n * @returns {string}\n *   Pretty printed positional info of a node (`string`).\n *\n *   In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n *   or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n *   column, `s` for `start`, and `e` for end.\n *   An empty string (`''`) is returned if the given value is neither `node`,\n *   `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n  // Nothing.\n  if (!value || typeof value !== 'object') {\n    return ''\n  }\n\n  // Node.\n  if ('position' in value || 'type' in value) {\n    return position(value.position)\n  }\n\n  // Position.\n  if ('start' in value || 'end' in value) {\n    return position(value)\n  }\n\n  // Point.\n  if ('line' in value || 'column' in value) {\n    return point(value)\n  }\n\n  // ?\n  return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n  return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n  return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n  return value && typeof value === 'number' ? value : 1\n}\n", "/**\n * @import {\n *   Break,\n *   Blockquote,\n *   Code,\n *   Definition,\n *   Emphasis,\n *   Heading,\n *   Html,\n *   Image,\n *   InlineCode,\n *   Link,\n *   ListItem,\n *   List,\n *   Nodes,\n *   Paragraph,\n *   PhrasingContent,\n *   ReferenceType,\n *   Root,\n *   Strong,\n *   Text,\n *   ThematicBreak\n * } from 'mdast'\n * @import {\n *   Encoding,\n *   Event,\n *   Token,\n *   Value\n * } from 'micromark-util-types'\n * @import {Point} from 'unist'\n * @import {\n *   CompileContext,\n *   CompileData,\n *   Config,\n *   Extension,\n *   Handle,\n *   OnEnterError,\n *   Options\n * } from './types.js'\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n *   Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n *   Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {Root}\n *   mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n  if (encoding && typeof encoding === 'object') {\n    options = encoding;\n    encoding = undefined;\n  }\n  return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n  /** @type {Config} */\n  const config = {\n    transforms: [],\n    canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n    enter: {\n      autolink: opener(link),\n      autolinkProtocol: onenterdata,\n      autolinkEmail: onenterdata,\n      atxHeading: opener(heading),\n      blockQuote: opener(blockQuote),\n      characterEscape: onenterdata,\n      characterReference: onenterdata,\n      codeFenced: opener(codeFlow),\n      codeFencedFenceInfo: buffer,\n      codeFencedFenceMeta: buffer,\n      codeIndented: opener(codeFlow, buffer),\n      codeText: opener(codeText, buffer),\n      codeTextData: onenterdata,\n      data: onenterdata,\n      codeFlowValue: onenterdata,\n      definition: opener(definition),\n      definitionDestinationString: buffer,\n      definitionLabelString: buffer,\n      definitionTitleString: buffer,\n      emphasis: opener(emphasis),\n      hardBreakEscape: opener(hardBreak),\n      hardBreakTrailing: opener(hardBreak),\n      htmlFlow: opener(html, buffer),\n      htmlFlowData: onenterdata,\n      htmlText: opener(html, buffer),\n      htmlTextData: onenterdata,\n      image: opener(image),\n      label: buffer,\n      link: opener(link),\n      listItem: opener(listItem),\n      listItemValue: onenterlistitemvalue,\n      listOrdered: opener(list, onenterlistordered),\n      listUnordered: opener(list),\n      paragraph: opener(paragraph),\n      reference: onenterreference,\n      referenceString: buffer,\n      resourceDestinationString: buffer,\n      resourceTitleString: buffer,\n      setextHeading: opener(heading),\n      strong: opener(strong),\n      thematicBreak: opener(thematicBreak)\n    },\n    exit: {\n      atxHeading: closer(),\n      atxHeadingSequence: onexitatxheadingsequence,\n      autolink: closer(),\n      autolinkEmail: onexitautolinkemail,\n      autolinkProtocol: onexitautolinkprotocol,\n      blockQuote: closer(),\n      characterEscapeValue: onexitdata,\n      characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n      characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n      characterReferenceValue: onexitcharacterreferencevalue,\n      characterReference: onexitcharacterreference,\n      codeFenced: closer(onexitcodefenced),\n      codeFencedFence: onexitcodefencedfence,\n      codeFencedFenceInfo: onexitcodefencedfenceinfo,\n      codeFencedFenceMeta: onexitcodefencedfencemeta,\n      codeFlowValue: onexitdata,\n      codeIndented: closer(onexitcodeindented),\n      codeText: closer(onexitcodetext),\n      codeTextData: onexitdata,\n      data: onexitdata,\n      definition: closer(),\n      definitionDestinationString: onexitdefinitiondestinationstring,\n      definitionLabelString: onexitdefinitionlabelstring,\n      definitionTitleString: onexitdefinitiontitlestring,\n      emphasis: closer(),\n      hardBreakEscape: closer(onexithardbreak),\n      hardBreakTrailing: closer(onexithardbreak),\n      htmlFlow: closer(onexithtmlflow),\n      htmlFlowData: onexitdata,\n      htmlText: closer(onexithtmltext),\n      htmlTextData: onexitdata,\n      image: closer(onexitimage),\n      label: onexitlabel,\n      labelText: onexitlabeltext,\n      lineEnding: onexitlineending,\n      link: closer(onexitlink),\n      listItem: closer(),\n      listOrdered: closer(),\n      listUnordered: closer(),\n      paragraph: closer(),\n      referenceString: onexitreferencestring,\n      resourceDestinationString: onexitresourcedestinationstring,\n      resourceTitleString: onexitresourcetitlestring,\n      resource: onexitresource,\n      setextHeading: closer(onexitsetextheading),\n      setextHeadingLineSequence: onexitsetextheadinglinesequence,\n      setextHeadingText: onexitsetextheadingtext,\n      strong: closer(),\n      thematicBreak: closer()\n    }\n  };\n  configure(config, (options || {}).mdastExtensions || []);\n\n  /** @type {CompileData} */\n  const data = {};\n  return compile;\n\n  /**\n   * Turn micromark events into an mdast tree.\n   *\n   * @param {Array<Event>} events\n   *   Events.\n   * @returns {Root}\n   *   mdast tree.\n   */\n  function compile(events) {\n    /** @type {Root} */\n    let tree = {\n      type: 'root',\n      children: []\n    };\n    /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n    const context = {\n      stack: [tree],\n      tokenStack: [],\n      config,\n      enter,\n      exit,\n      buffer,\n      resume,\n      data\n    };\n    /** @type {Array<number>} */\n    const listStack = [];\n    let index = -1;\n    while (++index < events.length) {\n      // We preprocess lists to add `listItem` tokens, and to infer whether\n      // items the list itself are spread out.\n      if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n        if (events[index][0] === 'enter') {\n          listStack.push(index);\n        } else {\n          const tail = listStack.pop();\n          index = prepareList(events, tail, index);\n        }\n      }\n    }\n    index = -1;\n    while (++index < events.length) {\n      const handler = config[events[index][0]];\n      if (own.call(handler, events[index][1].type)) {\n        handler[events[index][1].type].call(Object.assign({\n          sliceSerialize: events[index][2].sliceSerialize\n        }, context), events[index][1]);\n      }\n    }\n\n    // Handle tokens still being open.\n    if (context.tokenStack.length > 0) {\n      const tail = context.tokenStack[context.tokenStack.length - 1];\n      const handler = tail[1] || defaultOnError;\n      handler.call(context, undefined, tail[0]);\n    }\n\n    // Figure out `root` position.\n    tree.position = {\n      start: point(events.length > 0 ? events[0][1].start : {\n        line: 1,\n        column: 1,\n        offset: 0\n      }),\n      end: point(events.length > 0 ? events[events.length - 2][1].end : {\n        line: 1,\n        column: 1,\n        offset: 0\n      })\n    };\n\n    // Call transforms.\n    index = -1;\n    while (++index < config.transforms.length) {\n      tree = config.transforms[index](tree) || tree;\n    }\n    return tree;\n  }\n\n  /**\n   * @param {Array<Event>} events\n   * @param {number} start\n   * @param {number} length\n   * @returns {number}\n   */\n  function prepareList(events, start, length) {\n    let index = start - 1;\n    let containerBalance = -1;\n    let listSpread = false;\n    /** @type {Token | undefined} */\n    let listItem;\n    /** @type {number | undefined} */\n    let lineIndex;\n    /** @type {number | undefined} */\n    let firstBlankLineIndex;\n    /** @type {boolean | undefined} */\n    let atMarker;\n    while (++index <= length) {\n      const event = events[index];\n      switch (event[1].type) {\n        case \"listUnordered\":\n        case \"listOrdered\":\n        case \"blockQuote\":\n          {\n            if (event[0] === 'enter') {\n              containerBalance++;\n            } else {\n              containerBalance--;\n            }\n            atMarker = undefined;\n            break;\n          }\n        case \"lineEndingBlank\":\n          {\n            if (event[0] === 'enter') {\n              if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n                firstBlankLineIndex = index;\n              }\n              atMarker = undefined;\n            }\n            break;\n          }\n        case \"linePrefix\":\n        case \"listItemValue\":\n        case \"listItemMarker\":\n        case \"listItemPrefix\":\n        case \"listItemPrefixWhitespace\":\n          {\n            // Empty.\n\n            break;\n          }\n        default:\n          {\n            atMarker = undefined;\n          }\n      }\n      if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n        if (listItem) {\n          let tailIndex = index;\n          lineIndex = undefined;\n          while (tailIndex--) {\n            const tailEvent = events[tailIndex];\n            if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n              if (tailEvent[0] === 'exit') continue;\n              if (lineIndex) {\n                events[lineIndex][1].type = \"lineEndingBlank\";\n                listSpread = true;\n              }\n              tailEvent[1].type = \"lineEnding\";\n              lineIndex = tailIndex;\n            } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n              // Empty\n            } else {\n              break;\n            }\n          }\n          if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n            listItem._spread = true;\n          }\n\n          // Fix position.\n          listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n          events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n          index++;\n          length++;\n        }\n\n        // Create a new list item.\n        if (event[1].type === \"listItemPrefix\") {\n          /** @type {Token} */\n          const item = {\n            type: 'listItem',\n            _spread: false,\n            start: Object.assign({}, event[1].start),\n            // @ts-expect-error: we\u2019ll add `end` in a second.\n            end: undefined\n          };\n          listItem = item;\n          events.splice(index, 0, ['enter', item, event[2]]);\n          index++;\n          length++;\n          firstBlankLineIndex = undefined;\n          atMarker = true;\n        }\n      }\n    }\n    events[start][1]._spread = listSpread;\n    return length;\n  }\n\n  /**\n   * Create an opener handle.\n   *\n   * @param {(token: Token) => Nodes} create\n   *   Create a node.\n   * @param {Handle | undefined} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function opener(create, and) {\n    return open;\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {undefined}\n     */\n    function open(token) {\n      enter.call(this, create(token), token);\n      if (and) and.call(this, token);\n    }\n  }\n\n  /**\n   * @type {CompileContext['buffer']}\n   */\n  function buffer() {\n    this.stack.push({\n      type: 'fragment',\n      children: []\n    });\n  }\n\n  /**\n   * @type {CompileContext['enter']}\n   */\n  function enter(node, token, errorHandler) {\n    const parent = this.stack[this.stack.length - 1];\n    /** @type {Array<Nodes>} */\n    const siblings = parent.children;\n    siblings.push(node);\n    this.stack.push(node);\n    this.tokenStack.push([token, errorHandler || undefined]);\n    node.position = {\n      start: point(token.start),\n      // @ts-expect-error: `end` will be patched later.\n      end: undefined\n    };\n  }\n\n  /**\n   * Create a closer handle.\n   *\n   * @param {Handle | undefined} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function closer(and) {\n    return close;\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {undefined}\n     */\n    function close(token) {\n      if (and) and.call(this, token);\n      exit.call(this, token);\n    }\n  }\n\n  /**\n   * @type {CompileContext['exit']}\n   */\n  function exit(token, onExitError) {\n    const node = this.stack.pop();\n    const open = this.tokenStack.pop();\n    if (!open) {\n      throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n        start: token.start,\n        end: token.end\n      }) + '): it\u2019s not open');\n    } else if (open[0].type !== token.type) {\n      if (onExitError) {\n        onExitError.call(this, token, open[0]);\n      } else {\n        const handler = open[1] || defaultOnError;\n        handler.call(this, token, open[0]);\n      }\n    }\n    node.position.end = point(token.end);\n  }\n\n  /**\n   * @type {CompileContext['resume']}\n   */\n  function resume() {\n    return toString(this.stack.pop());\n  }\n\n  //\n  // Handlers.\n  //\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistordered() {\n    this.data.expectingFirstListItemValue = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistitemvalue(token) {\n    if (this.data.expectingFirstListItemValue) {\n      const ancestor = this.stack[this.stack.length - 2];\n      ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n      this.data.expectingFirstListItemValue = undefined;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfenceinfo() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.lang = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfencemeta() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.meta = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfence() {\n    // Exit if this is the closing fence.\n    if (this.data.flowCodeInside) return;\n    this.buffer();\n    this.data.flowCodeInside = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefenced() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n    this.data.flowCodeInside = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodeindented() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitionlabelstring(token) {\n    const label = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.label = label;\n    node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiontitlestring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.title = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiondestinationstring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.url = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitatxheadingsequence(token) {\n    const node = this.stack[this.stack.length - 1];\n    if (!node.depth) {\n      const depth = this.sliceSerialize(token).length;\n      node.depth = depth;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadingtext() {\n    this.data.setextHeadingSlurpLineEnding = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadinglinesequence(token) {\n    const node = this.stack[this.stack.length - 1];\n    node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheading() {\n    this.data.setextHeadingSlurpLineEnding = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterdata(token) {\n    const node = this.stack[this.stack.length - 1];\n    /** @type {Array<Nodes>} */\n    const siblings = node.children;\n    let tail = siblings[siblings.length - 1];\n    if (!tail || tail.type !== 'text') {\n      // Add a new text node.\n      tail = text();\n      tail.position = {\n        start: point(token.start),\n        // @ts-expect-error: we\u2019ll add `end` later.\n        end: undefined\n      };\n      siblings.push(tail);\n    }\n    this.stack.push(tail);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitdata(token) {\n    const tail = this.stack.pop();\n    tail.value += this.sliceSerialize(token);\n    tail.position.end = point(token.end);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlineending(token) {\n    const context = this.stack[this.stack.length - 1];\n    // If we\u2019re at a hard break, include the line ending in there.\n    if (this.data.atHardBreak) {\n      const tail = context.children[context.children.length - 1];\n      tail.position.end = point(token.end);\n      this.data.atHardBreak = undefined;\n      return;\n    }\n    if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n      onenterdata.call(this, token);\n      onexitdata.call(this, token);\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithardbreak() {\n    this.data.atHardBreak = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmlflow() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmltext() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcodetext() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlink() {\n    const node = this.stack[this.stack.length - 1];\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n\n    // To do: clean.\n    if (this.data.inReference) {\n      /** @type {ReferenceType} */\n      const referenceType = this.data.referenceType || 'shortcut';\n      node.type += 'Reference';\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType;\n      // @ts-expect-error: mutate.\n      delete node.url;\n      delete node.title;\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier;\n      // @ts-expect-error: mutate.\n      delete node.label;\n    }\n    this.data.referenceType = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitimage() {\n    const node = this.stack[this.stack.length - 1];\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n\n    // To do: clean.\n    if (this.data.inReference) {\n      /** @type {ReferenceType} */\n      const referenceType = this.data.referenceType || 'shortcut';\n      node.type += 'Reference';\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType;\n      // @ts-expect-error: mutate.\n      delete node.url;\n      delete node.title;\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier;\n      // @ts-expect-error: mutate.\n      delete node.label;\n    }\n    this.data.referenceType = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabeltext(token) {\n    const string = this.sliceSerialize(token);\n    const ancestor = this.stack[this.stack.length - 2];\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    ancestor.label = decodeString(string);\n    // @ts-expect-error: same as above.\n    ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabel() {\n    const fragment = this.stack[this.stack.length - 1];\n    const value = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    // Assume a reference.\n    this.data.inReference = true;\n    if (node.type === 'link') {\n      /** @type {Array<PhrasingContent>} */\n      const children = fragment.children;\n      node.children = children;\n    } else {\n      node.alt = value;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcedestinationstring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.url = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcetitlestring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.title = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresource() {\n    this.data.inReference = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterreference() {\n    this.data.referenceType = 'collapsed';\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitreferencestring(token) {\n    const label = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    node.label = label;\n    // @ts-expect-error: same as above.\n    node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n    this.data.referenceType = 'full';\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcharacterreferencemarker(token) {\n    this.data.characterReferenceType = token.type;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcharacterreferencevalue(token) {\n    const data = this.sliceSerialize(token);\n    const type = this.data.characterReferenceType;\n    /** @type {string} */\n    let value;\n    if (type) {\n      value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n      this.data.characterReferenceType = undefined;\n    } else {\n      const result = decodeNamedCharacterReference(data);\n      value = result;\n    }\n    const tail = this.stack[this.stack.length - 1];\n    tail.value += value;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcharacterreference(token) {\n    const tail = this.stack.pop();\n    tail.position.end = point(token.end);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkprotocol(token) {\n    onexitdata.call(this, token);\n    const node = this.stack[this.stack.length - 1];\n    node.url = this.sliceSerialize(token);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkemail(token) {\n    onexitdata.call(this, token);\n    const node = this.stack[this.stack.length - 1];\n    node.url = 'mailto:' + this.sliceSerialize(token);\n  }\n\n  //\n  // Creaters.\n  //\n\n  /** @returns {Blockquote} */\n  function blockQuote() {\n    return {\n      type: 'blockquote',\n      children: []\n    };\n  }\n\n  /** @returns {Code} */\n  function codeFlow() {\n    return {\n      type: 'code',\n      lang: null,\n      meta: null,\n      value: ''\n    };\n  }\n\n  /** @returns {InlineCode} */\n  function codeText() {\n    return {\n      type: 'inlineCode',\n      value: ''\n    };\n  }\n\n  /** @returns {Definition} */\n  function definition() {\n    return {\n      type: 'definition',\n      identifier: '',\n      label: null,\n      title: null,\n      url: ''\n    };\n  }\n\n  /** @returns {Emphasis} */\n  function emphasis() {\n    return {\n      type: 'emphasis',\n      children: []\n    };\n  }\n\n  /** @returns {Heading} */\n  function heading() {\n    return {\n      type: 'heading',\n      // @ts-expect-error `depth` will be set later.\n      depth: 0,\n      children: []\n    };\n  }\n\n  /** @returns {Break} */\n  function hardBreak() {\n    return {\n      type: 'break'\n    };\n  }\n\n  /** @returns {Html} */\n  function html() {\n    return {\n      type: 'html',\n      value: ''\n    };\n  }\n\n  /** @returns {Image} */\n  function image() {\n    return {\n      type: 'image',\n      title: null,\n      url: '',\n      alt: null\n    };\n  }\n\n  /** @returns {Link} */\n  function link() {\n    return {\n      type: 'link',\n      title: null,\n      url: '',\n      children: []\n    };\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {List}\n   */\n  function list(token) {\n    return {\n      type: 'list',\n      ordered: token.type === 'listOrdered',\n      start: null,\n      spread: token._spread,\n      children: []\n    };\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {ListItem}\n   */\n  function listItem(token) {\n    return {\n      type: 'listItem',\n      spread: token._spread,\n      checked: null,\n      children: []\n    };\n  }\n\n  /** @returns {Paragraph} */\n  function paragraph() {\n    return {\n      type: 'paragraph',\n      children: []\n    };\n  }\n\n  /** @returns {Strong} */\n  function strong() {\n    return {\n      type: 'strong',\n      children: []\n    };\n  }\n\n  /** @returns {Text} */\n  function text() {\n    return {\n      type: 'text',\n      value: ''\n    };\n  }\n\n  /** @returns {ThematicBreak} */\n  function thematicBreak() {\n    return {\n      type: 'thematicBreak'\n    };\n  }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n *   Point-like value.\n * @returns {Point}\n *   unist point.\n */\nfunction point(d) {\n  return {\n    line: d.line,\n    column: d.column,\n    offset: d.offset\n  };\n}\n\n/**\n * @param {Config} combined\n * @param {Array<Array<Extension> | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n  let index = -1;\n  while (++index < extensions.length) {\n    const value = extensions[index];\n    if (Array.isArray(value)) {\n      configure(combined, value);\n    } else {\n      extension(combined, value);\n    }\n  }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n  /** @type {keyof Extension} */\n  let key;\n  for (key in extension) {\n    if (own.call(extension, key)) {\n      switch (key) {\n        case 'canContainEols':\n          {\n            const right = extension[key];\n            if (right) {\n              combined[key].push(...right);\n            }\n            break;\n          }\n        case 'transforms':\n          {\n            const right = extension[key];\n            if (right) {\n              combined[key].push(...right);\n            }\n            break;\n          }\n        case 'enter':\n        case 'exit':\n          {\n            const right = extension[key];\n            if (right) {\n              Object.assign(combined[key], right);\n            }\n            break;\n          }\n        // No default\n      }\n    }\n  }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n  if (left) {\n    throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n      start: left.start,\n      end: left.end\n    }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n      start: right.start,\n      end: right.end\n    }) + ') is open');\n  } else {\n    throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n      start: right.start,\n      end: right.end\n    }) + ') is still open');\n  }\n}", "/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser<Root>} Parser\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\n/**\n * @typedef {Omit<FromMarkdownOptions, 'extensions' | 'mdastExtensions'>} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nexport default function remarkParse(options) {\n  /** @type {Processor} */\n  // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n  const self = this\n\n  self.parser = parser\n\n  /**\n   * @type {Parser}\n   */\n  function parser(doc) {\n    return fromMarkdown(doc, {\n      ...self.data('settings'),\n      ...options,\n      // Note: these options are not in the readme.\n      // The goal is for them to be set by plugins on `data` instead of being\n      // passed by users.\n      extensions: self.data('micromarkExtensions') || [],\n      mdastExtensions: self.data('fromMarkdownExtensions') || []\n    })\n  }\n}\n", "/**\n * @typedef {import('nlcst').Nodes} Nodes\n */\n\n/** @type {Readonly<Array<Nodes>>} */\nconst emptyNodes = []\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node\u2019s plain-text fields, otherwise serializes its children, and\n * if the given value is an array, serialize the nodes in it.\n *\n * @param {Array<Nodes> | Nodes} value\n *   Node or list of nodes to serialize.\n * @returns {string}\n *   Result.\n */\nexport function toString(value) {\n  let index = -1\n\n  if (!value || (!Array.isArray(value) && !value.type)) {\n    throw new Error('Expected node, not `' + value + '`')\n  }\n\n  if ('value' in value) return value.value\n\n  const children = (Array.isArray(value) ? value : value.children) || emptyNodes\n\n  /** @type {Array<string>} */\n  const values = []\n\n  while (++index < children.length) {\n    values[index] = toString(children[index])\n  }\n\n  return values.join('')\n}\n", "/**\n * @typedef {import('nlcst').Nodes} Nodes\n */\n\n/** @type {Readonly<Array<Nodes>>} */\nconst emptyNodes = []\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node\u2019s plain-text fields, otherwise serializes its children, and\n * if the given value is an array, serialize the nodes in it.\n *\n * @param {Array<Nodes> | Nodes} value\n *   Node or list of nodes to serialize.\n * @returns {string}\n *   Result.\n */\nexport function toString(value) {\n  let index = -1\n\n  if (!value || (!Array.isArray(value) && !value.type)) {\n    throw new Error('Expected node, not `' + value + '`')\n  }\n\n  if ('value' in value) return value.value\n\n  const children = (Array.isArray(value) ? value : value.children) || emptyNodes\n\n  /** @type {Array<string>} */\n  const values = []\n\n  while (++index < children.length) {\n    values[index] = toString(children[index])\n  }\n\n  return values.join('')\n}\n", "const own = {}.hasOwnProperty\n\n/**\n * Perform the specified action for each element in an array.\n * When `callbackFn` returns a `number`, moves to the element at that index\n * next.\n *\n * @param {unknown[]} values\n *   Values to iterate over.\n * @param {(this: unknown, value: unknown, index: number, array: unknown[]) => number | void} callbackFn\n *   Function called for each element.\n *   Can return the `index` to move to next.\n * @param {unknown} [thisArg]\n *   Optional object assigned as `this` in `callbackFn`.\n * @returns {void}\n */\nexport function arrayIterate(values, callbackFn, thisArg) {\n  let index = -1\n\n  if (!values) {\n    throw new Error('Iterate requires that |this| not be ' + values)\n  }\n\n  if (!own.call(values, 'length')) {\n    throw new Error('Iterate requires that |this| has a `length`')\n  }\n\n  if (typeof callbackFn !== 'function') {\n    throw new TypeError('`callback` must be a function')\n  }\n\n  // The length might change, so we do not cache it.\n  while (++index < values.length) {\n    // Skip missing values.\n    if (!(index in values)) {\n      continue\n    }\n\n    const result = callbackFn.call(thisArg, values[index], index, values)\n\n    // If `callback` returns a `number`, move `index` over to `number`.\n    if (typeof result === 'number') {\n      // Make sure that negative numbers do not break the loop.\n      if (result < 0) {\n        index = 0\n      }\n\n      index = result - 1\n    }\n  }\n}\n", "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template {Parent} Kind\n *   Node type.\n * @callback Modifier\n *   Callback called for each `child` in `parent` later given to `modify`.\n * @param {Kind['children'][number]} child\n *   Child of `parent`.\n * @param {number} index\n *   Position of `child` in `parent`.\n * @param {Kind} parent\n *   Parent node.\n * @returns {number | undefined | void}\n *   Position to move to next (optional).\n */\n\n/**\n * @template {Parent} Kind\n *   Node type.\n * @callback Modify\n *   Modify children of `parent`.\n * @param {Kind} parent\n *   Parent node.\n * @returns {undefined}\n *   Nothing.\n */\n\nimport {arrayIterate} from 'array-iterate'\n\n/**\n * Wrap `modifier` to be called for each child in the nodes later given to\n * `modify`.\n *\n * @template {Parent} Kind\n *   Node type.\n * @param {Modifier<Kind>} modifier\n *   Callback called for each `child` in `parent` later given to `modify`.\n * @returns {Modify<Kind>}\n *   Modify children of `parent`.\n */\nexport function modifyChildren(modifier) {\n  return modify\n\n  /** @type {Modify<Kind>} */\n  function modify(parent) {\n    if (!parent || !parent.children) {\n      throw new Error('Missing children in `parent` for `modifier`')\n    }\n\n    arrayIterate(parent.children, iteratee, parent)\n  }\n\n  /**\n   * Pass the context as the third argument to `modifier`.\n   *\n   * @this {Kind}\n   * @param {Node} node\n   * @param {number} index\n   * @returns {number | undefined | void}\n   */\n  function iteratee(node, index) {\n    return modifier(node, index, this)\n  }\n}\n", "/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Merge a sentence into its previous sentence, when the sentence starts with a\n// comma.\nexport const mergeAffixExceptions = modifyChildren(\n  /**\n   * @type {import('unist-util-modify-children').Modifier<Paragraph>}\n   */\n  function (child, index, parent) {\n    const previous = parent.children[index - 1]\n\n    if (\n      previous &&\n      'children' in previous &&\n      'children' in child &&\n      child.children.length > 0\n    ) {\n      let position = -1\n\n      while (child.children[++position]) {\n        const node = child.children[position]\n\n        if (node.type === 'WordNode') {\n          return\n        }\n\n        if (node.type === 'SymbolNode' || node.type === 'PunctuationNode') {\n          const value = toString(node)\n\n          if (value !== ',' && value !== ';') {\n            return\n          }\n\n          previous.children.push(...child.children)\n\n          // Update position.\n          if (previous.position && child.position) {\n            previous.position.end = child.position.end\n          }\n\n          parent.children.splice(index, 1)\n\n          // Next, iterate over the node *now* at the current position.\n          return index\n        }\n      }\n    }\n  }\n)\n", "// This module is generated by `script/build-expressions.js`.\nexport const affixSymbol =\n  /^([!\"').?\\u0F3B\\u0F3D\\u169C\\u2019\\u201D\\u2026\\u203A\\u203D\\u2046\\u207E\\u208E\\u2309\\u230B\\u232A\\u2769\\u276B\\u276D\\u276F\\u2771\\u2773\\u2775\\u27C6\\u27E7\\u27E9\\u27EB\\u27ED\\u27EF\\u2984\\u2986\\u2988\\u298A\\u298C\\u298E\\u2990\\u2992\\u2994\\u2996\\u2998\\u29D9\\u29DB\\u29FD\\u2E03\\u2E05\\u2E0A\\u2E0D\\u2E1D\\u2E21\\u2E23\\u2E25\\u2E27\\u2E29\\u2E56\\u2E58\\u2E5A\\u2E5C\\u3009\\u300B\\u300D\\u300F\\u3011\\u3015\\u3017\\u3019\\u301B\\u301E\\u301F\\uFD3E\\uFE18\\uFE36\\uFE38\\uFE3A\\uFE3C\\uFE3E\\uFE40\\uFE42\\uFE44\\uFE48\\uFE5A\\uFE5C\\uFE5E\\uFF09\\uFF3D\\uFF5D\\uFF60\\uFF63\\u00BB\\]}])\\1*$/\nexport const newLine = /^[ \\t]*((\\r?\\n|\\r)[\\t ]*)+$/\nexport const terminalMarker = /^([!.?\\u2026\\u203D]+)$/\nexport const wordSymbolInner =\n  /^([&'\\-.:=?@\\u00AD\\u00B7\\u2010\\u2011\\u2019\\u2027]|_+)$/\nexport const numerical =\n  /^(?:[\\d\\u00B2\\u00B3\\u00B9\\u00BC-\\u00BE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D58-\\u0D5E\\u0D66-\\u0D78\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]|\\uD800[\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDEE1-\\uDEFB\\uDF20-\\uDF23\\uDF41\\uDF4A\\uDFD1-\\uDFD5]|\\uD801[\\uDCA0-\\uDCA9]|\\uD802[\\uDC58-\\uDC5F\\uDC79-\\uDC7F\\uDCA7-\\uDCAF\\uDCFB-\\uDCFF\\uDD16-\\uDD1B\\uDDBC\\uDDBD\\uDDC0-\\uDDCF\\uDDD2-\\uDDFF\\uDE40-\\uDE48\\uDE7D\\uDE7E\\uDE9D-\\uDE9F\\uDEEB-\\uDEEF\\uDF58-\\uDF5F\\uDF78-\\uDF7F\\uDFA9-\\uDFAF]|\\uD803[\\uDCFA-\\uDCFF\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDF1D-\\uDF26\\uDF51-\\uDF54\\uDFC5-\\uDFCB]|\\uD804[\\uDC52-\\uDC6F\\uDCF0-\\uDCF9\\uDD36-\\uDD3F\\uDDD0-\\uDDD9\\uDDE1-\\uDDF4\\uDEF0-\\uDEF9]|\\uD805[\\uDC50-\\uDC59\\uDCD0-\\uDCD9\\uDE50-\\uDE59\\uDEC0-\\uDEC9\\uDF30-\\uDF3B]|\\uD806[\\uDCE0-\\uDCF2\\uDD50-\\uDD59]|\\uD807[\\uDC50-\\uDC6C\\uDD50-\\uDD59\\uDDA0-\\uDDA9\\uDF50-\\uDF59\\uDFC0-\\uDFD4]|\\uD809[\\uDC00-\\uDC6E]|\\uD81A[\\uDE60-\\uDE69\\uDEC0-\\uDEC9\\uDF50-\\uDF59\\uDF5B-\\uDF61]|\\uD81B[\\uDE80-\\uDE96]|\\uD834[\\uDEC0-\\uDED3\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDFCE-\\uDFFF]|\\uD838[\\uDD40-\\uDD49\\uDEF0-\\uDEF9]|\\uD839[\\uDCF0-\\uDCF9]|\\uD83A[\\uDCC7-\\uDCCF\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9])+$/\nexport const digitStart = /^\\d/\nexport const lowerInitial =\n  /^(?:[a-z\\u00B5\\u00DF-\\u00F6\\u00F8-\\u00FF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0529\\u052B\\u052D\\u052F\\u0560-\\u0588\\u10D0-\\u10FA\\u10FD-\\u10FF\\u13F8-\\u13FD\\u1C80-\\u1C88\\u1D00-\\u1D2B\\u1D6B-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD0-\\u1FD3\\u1FD6\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u210A\\u210E\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5F\\u2C61\\u2C65\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73\\u2C74\\u2C76-\\u2C7B\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3\\u2CE4\\u2CEC\\u2CEE\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA699\\uA69B\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA793-\\uA795\\uA797\\uA799\\uA79B\\uA79D\\uA79F\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7AF\\uA7B5\\uA7B7\\uA7B9\\uA7BB\\uA7BD\\uA7BF\\uA7C1\\uA7C3\\uA7C8\\uA7CA\\uA7D1\\uA7D3\\uA7D5\\uA7D7\\uA7D9\\uA7F6\\uA7FA\\uAB30-\\uAB5A\\uAB60-\\uAB68\\uAB70-\\uABBF\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A]|\\uD801[\\uDC28-\\uDC4F\\uDCD8-\\uDCFB\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC]|\\uD803[\\uDCC0-\\uDCF2]|\\uD806[\\uDCC0-\\uDCDF]|\\uD81B[\\uDE60-\\uDE7F]|\\uD835[\\uDC1A-\\uDC33\\uDC4E-\\uDC54\\uDC56-\\uDC67\\uDC82-\\uDC9B\\uDCB6-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDCEA-\\uDD03\\uDD1E-\\uDD37\\uDD52-\\uDD6B\\uDD86-\\uDD9F\\uDDBA-\\uDDD3\\uDDEE-\\uDE07\\uDE22-\\uDE3B\\uDE56-\\uDE6F\\uDE8A-\\uDEA5\\uDEC2-\\uDEDA\\uDEDC-\\uDEE1\\uDEFC-\\uDF14\\uDF16-\\uDF1B\\uDF36-\\uDF4E\\uDF50-\\uDF55\\uDF70-\\uDF88\\uDF8A-\\uDF8F\\uDFAA-\\uDFC2\\uDFC4-\\uDFC9\\uDFCB]|\\uD837[\\uDF00-\\uDF09\\uDF0B-\\uDF1E\\uDF25-\\uDF2A]|\\uD83A[\\uDD22-\\uDD43])/\nexport const surrogates = /[\\uD800-\\uDFFF]/\nexport const punctuation =\n  /[!\"'-),-/:;?[-\\]_{}\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u201F\\u2022-\\u2027\\u2032-\\u203A\\u203C-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDEAD\\uDF55-\\uDF59\\uDF86-\\uDF89]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDEB9\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDD44-\\uDD46\\uDDE2\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2\\uDF00-\\uDF09]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8\\uDF43-\\uDF4F\\uDFFF]|\\uD809[\\uDC70-\\uDC74]|\\uD80B[\\uDFF1\\uDFF2]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A\\uDFE2]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/\nexport const word =\n  /[\\dA-Za-z\\u00AA\\u00B2\\u00B3\\u00B5\\u00B9\\u00BA\\u00BC-\\u00BE\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u07FD\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u0898-\\u08E1\\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\\u09F4-\\u09F9\\u09FC\\u09FE\\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-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71-\\u0B77\\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-\\u0BF2\\u0C00-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3C-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C5D\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D00-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D63\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D81-\\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\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECE\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F33\\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-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1715\\u171F-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u17F0-\\u17F9\\u180B-\\u180D\\u180F-\\u1819\\u1820-\\u1878\\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-\\u1ACE\\u1B00-\\u1B4C\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CD0-\\u1CD2\\u1CD4-\\u1CFA\\u1D00-\\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\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u20D0-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2CE4\\u2CEB-\\u2CF3\\u2CFD\\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\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA672\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA827\\uA82C\\uA830-\\uA835\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD-\\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-\\uAB69\\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\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\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\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE38-\\uDE3A\\uDE3F-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD27\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEAB\\uDEAC\\uDEB0\\uDEB1\\uDEFD-\\uDF27\\uDF30-\\uDF54\\uDF70-\\uDF85\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC00-\\uDC46\\uDC52-\\uDC75\\uDC7F-\\uDCBA\\uDCC2\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD44-\\uDD47\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDC9-\\uDDCC\\uDDCE-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E-\\uDE41\\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\\uDF3B-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC5E-\\uDC61\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF1D-\\uDF2B\\uDF30-\\uDF3B\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC3A\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD35\\uDD37\\uDD38\\uDD3B-\\uDD43\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD7\\uDDDA-\\uDDE1\\uDDE3\\uDDE4\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE99\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF6\\uDF00-\\uDF10\\uDF12-\\uDF3A\\uDF3E-\\uDF42\\uDF50-\\uDF59\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883\\uD885-\\uD887][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F\\uDC40-\\uDC55]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF4F-\\uDF87\\uDF8F-\\uDF9F\\uDFE0\\uDFE1\\uDFE3\\uDFE4\\uDFF0\\uDFF1]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD32\\uDD50-\\uDD52\\uDD55\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44\\uDEC0-\\uDED3\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\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]|\\uD837[\\uDF00-\\uDF1E\\uDF25-\\uDF2A]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDC30-\\uDC6D\\uDC8F\\uDD00-\\uDD2C\\uDD30-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAE\\uDEC0-\\uDEF9]|\\uD839[\\uDCD0-\\uDCF9\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCD6\\uDD00-\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\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]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF39\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A\\uDF50-\\uDFFF]|\\uD888[\\uDC00-\\uDFAF]|\\uDB40[\\uDD00-\\uDDEF]/\nexport const whiteSpace =\n  /[\\t-\\r \\u0085\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/\n", "/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n// Closing or final punctuation, or terminal markers that should still be\n// included in the previous sentence, even though they follow the sentence\u2019s\n// terminal marker.\nimport {affixSymbol} from '../expressions.js'\n\n// Move certain punctuation following a terminal marker (thus in the next\n// sentence) to the previous sentence.\nexport const mergeAffixSymbol = modifyChildren(\n  /**\n   * @type {import('unist-util-modify-children').Modifier<Paragraph>}\n   */\n  function (child, index, parent) {\n    if ('children' in child && child.children.length > 0 && index > 0) {\n      const previous = parent.children[index - 1]\n      const first = child.children[0]\n      const second = child.children[1]\n\n      if (\n        previous &&\n        previous.type === 'SentenceNode' &&\n        (first.type === 'SymbolNode' || first.type === 'PunctuationNode') &&\n        affixSymbol.test(toString(first))\n      ) {\n        child.children.shift() // Remove `first`.\n        previous.children.push(first)\n\n        // Update position.\n        if (first.position && previous.position) {\n          previous.position.end = first.position.end\n        }\n\n        if (second && second.position && child.position) {\n          child.position.start = second.position.start\n        }\n\n        // Next, iterate over the previous node again.\n        return index - 1\n      }\n    }\n  }\n)\n", "/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n * @typedef {import('nlcst').Sentence} Sentence\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Break a sentence if a white space with more than one new-line is found.\nexport const breakImplicitSentences = modifyChildren(\n  /**\n   * @type {import('unist-util-modify-children').Modifier<Paragraph>}\n   */\n\n  function (child, index, parent) {\n    if (child.type !== 'SentenceNode') {\n      return\n    }\n\n    const children = child.children\n\n    // Ignore first and last child.\n    let position = 0\n\n    while (++position < children.length - 1) {\n      const node = children[position]\n\n      if (\n        node.type !== 'WhiteSpaceNode' ||\n        toString(node).split(/\\r\\n|\\r|\\n/).length < 3\n      ) {\n        continue\n      }\n\n      child.children = children.slice(0, position)\n\n      /** @type {Sentence} */\n      const insertion = {\n        type: 'SentenceNode',\n        children: children.slice(position + 1)\n      }\n\n      const tail = children[position - 1]\n      const head = children[position + 1]\n\n      parent.children.splice(index + 1, 0, node, insertion)\n\n      if (child.position && tail.position && head.position) {\n        const end = child.position.end\n\n        child.position.end = tail.position.end\n\n        insertion.position = {start: head.position.start, end}\n      }\n\n      return index + 1\n    }\n  }\n)\n", "/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n * @typedef {import('nlcst').Root} Root\n */\n\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Move white space ending a paragraph up, so they are the siblings of\n// paragraphs.\nexport const makeFinalWhiteSpaceSiblings = modifyChildren(\n  /**\n   * @type {import('unist-util-modify-children').Modifier<Paragraph | Root>}\n   */\n\n  function (child, index, parent) {\n    if ('children' in child) {\n      const tail = child.children[child.children.length - 1]\n\n      if (tail && tail.type === 'WhiteSpaceNode') {\n        child.children.pop() // Remove `tail`.\n        parent.children.splice(index + 1, 0, tail)\n        const previous = child.children[child.children.length - 1]\n\n        if (previous && previous.position && child.position) {\n          child.position.end = previous.position.end\n        }\n\n        // Next, iterate over the current node again.\n        return index\n      }\n    }\n  }\n)\n", "/**\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template {Parent} Kind\n *   Node type.\n * @callback Visitor\n *   Callback called for each `child` in `parent` later given to `visit`.\n * @param {Kind['children'][number]} child\n *   Child of parent.\n * @param {number} index\n *   Position of `child` in parent.\n * @param {Kind} parent\n *   Parent node.\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Parent} Kind\n *   Node type.\n * @callback Visit\n *   Function to call the bound `visitor` for each child in `parent`.\n * @param {Kind} node\n *   Parent node.\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * Wrap `visitor` to be called for each child in the nodes later given to\n * `visit`.\n *\n * @template {Parent} Kind\n *   Node type.\n * @param {Visitor<Kind>} visitor\n *   Callback called for each `child` in `parent` later given to `visit`.\n * @returns {Visit<Kind>}\n *   Function to call the bound `visitor` for each child in `parent`.\n */\nexport function visitChildren(visitor) {\n  return visit\n\n  /** @type {Visit<Kind>} */\n  function visit(parent) {\n    const children = parent && parent.children\n    let index = -1\n\n    if (!children) {\n      throw new Error('Missing children in `parent` for `visit`')\n    }\n\n    while (++index in children) {\n      visitor(children[index], index, parent)\n    }\n  }\n}\n", "/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n * @typedef {import('nlcst').Root} Root\n */\n\nimport {visitChildren} from 'unist-util-visit-children'\n\n// Move white space starting a sentence up, so they are the siblings of\n// sentences.\nexport const makeInitialWhiteSpaceSiblings = visitChildren(\n  /**\n   * @type {import('unist-util-visit-children').Visitor<Paragraph | Root>}\n   */\n  function (child, index, parent) {\n    if ('children' in child && child.children) {\n      const head = child.children[0]\n      if (head && head.type === 'WhiteSpaceNode') {\n        child.children.shift()\n        parent.children.splice(index, 0, head)\n        const next = child.children[0]\n\n        if (next && next.position && child.position) {\n          child.position.start = next.position.start\n        }\n      }\n    }\n  }\n)\n", "/**\n * @typedef {import('nlcst').Sentence} Sentence\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Merge certain punctuation marks into their preceding words.\nexport const mergeFinalWordSymbol = modifyChildren(\n  /**\n   * @type {import('unist-util-modify-children').Modifier<Sentence>}\n   */\n  function (child, index, parent) {\n    if (\n      index > 0 &&\n      (child.type === 'SymbolNode' || child.type === 'PunctuationNode') &&\n      toString(child) === '-'\n    ) {\n      const children = parent.children\n      const previous = children[index - 1]\n      const next = children[index + 1]\n\n      if (\n        (!next || next.type !== 'WordNode') &&\n        previous &&\n        previous.type === 'WordNode'\n      ) {\n        // Remove `child` from parent.\n        children.splice(index, 1)\n\n        // Add the punctuation mark at the end of the previous node.\n        previous.children.push(child)\n\n        // Update position.\n        if (previous.position && child.position) {\n          previous.position.end = child.position.end\n        }\n\n        // Next, iterate over the node *now* at the current position (which was\n        // the next node).\n        return index\n      }\n    }\n  }\n)\n", "/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\nimport {digitStart} from '../expressions.js'\n\n// Merge a sentence into its previous sentence, when the sentence starts with a\n// lower case letter.\nexport const mergeInitialDigitSentences = modifyChildren(\n  /**\n   * @type {import('unist-util-modify-children').Modifier<Paragraph>}\n   */\n  function (child, index, parent) {\n    const previous = parent.children[index - 1]\n\n    if (\n      previous &&\n      previous.type === 'SentenceNode' &&\n      child.type === 'SentenceNode'\n    ) {\n      const head = child.children[0]\n\n      if (head && head.type === 'WordNode' && digitStart.test(toString(head))) {\n        previous.children.push(...child.children)\n        parent.children.splice(index, 1)\n\n        // Update position.\n        if (previous.position && child.position) {\n          previous.position.end = child.position.end\n        }\n\n        // Next, iterate over the node *now* at the current position.\n        return index\n      }\n    }\n  }\n)\n", "/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n// Initial lowercase letter.\nimport {lowerInitial} from '../expressions.js'\n\n// Merge a sentence into its previous sentence, when the sentence starts with a\n// lower case letter.\nexport const mergeInitialLowerCaseLetterSentences = modifyChildren(\n  /**\n   * @type {import('unist-util-modify-children').Modifier<Paragraph>}\n   */\n  function (child, index, parent) {\n    if (child.type === 'SentenceNode' && index > 0) {\n      const previous = parent.children[index - 1]\n      const children = child.children\n\n      if (children.length > 0 && previous.type === 'SentenceNode') {\n        let position = -1\n\n        while (children[++position]) {\n          const node = children[position]\n\n          if (node.type === 'WordNode') {\n            if (!lowerInitial.test(toString(node))) {\n              return\n            }\n\n            previous.children.push(...children)\n\n            parent.children.splice(index, 1)\n\n            // Update position.\n            if (previous.position && child.position) {\n              previous.position.end = child.position.end\n            }\n\n            // Next, iterate over the node *now* at the current position.\n            return index\n          }\n\n          if (node.type === 'SymbolNode' || node.type === 'PunctuationNode') {\n            return\n          }\n        }\n      }\n    }\n  }\n)\n", "/**\n * @typedef {import('nlcst').Sentence} Sentence\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Merge certain punctuation marks into their following words.\nexport const mergeInitialWordSymbol = modifyChildren(\n  /**\n   * @type {import('unist-util-modify-children').Modifier<Sentence>}\n   */\n  function (child, index, parent) {\n    if (\n      (child.type !== 'SymbolNode' && child.type !== 'PunctuationNode') ||\n      toString(child) !== '&'\n    ) {\n      return\n    }\n\n    const children = parent.children\n    const next = children[index + 1]\n\n    // If either a previous word, or no following word, exists, exit early.\n    if (\n      (index > 0 && children[index - 1].type === 'WordNode') ||\n      !(next && next.type === 'WordNode')\n    ) {\n      return\n    }\n\n    // Remove `child` from parent.\n    children.splice(index, 1)\n\n    // Add the punctuation mark at the start of the next node.\n    next.children.unshift(child)\n\n    // Update position.\n    if (next.position && child.position) {\n      next.position.start = child.position.start\n    }\n\n    // Next, iterate over the node at the previous position, as it's now adjacent\n    // to a following word.\n    return index - 1\n  }\n)\n", "/**\n * @typedef {import('nlcst').Sentence} Sentence\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\nimport {numerical} from '../expressions.js'\n\n// Merge initialisms.\nexport const mergeInitialisms = modifyChildren(\n  /**\n   * @type {import('unist-util-modify-children').Modifier<Sentence>}\n   */\n  function (child, index, parent) {\n    if (\n      index > 0 &&\n      child.type === 'PunctuationNode' &&\n      toString(child) === '.'\n    ) {\n      const previous = parent.children[index - 1]\n\n      if (\n        previous.type === 'WordNode' &&\n        previous.children &&\n        previous.children.length !== 1 &&\n        previous.children.length % 2 !== 0\n      ) {\n        let position = previous.children.length\n        let isAllDigits = true\n\n        while (previous.children[--position]) {\n          const otherChild = previous.children[position]\n\n          const value = toString(otherChild)\n\n          if (position % 2 === 0) {\n            // Initialisms consist of one character values.\n            if (value.length > 1) {\n              return\n            }\n\n            if (!numerical.test(value)) {\n              isAllDigits = false\n            }\n          } else if (value !== '.') {\n            if (position < previous.children.length - 2) {\n              break\n            } else {\n              return\n            }\n          }\n        }\n\n        if (!isAllDigits) {\n          // Remove `child` from parent.\n          parent.children.splice(index, 1)\n\n          // Add child to the previous children.\n          previous.children.push(child)\n\n          // Update position.\n          if (previous.position && child.position) {\n            previous.position.end = child.position.end\n          }\n\n          // Next, iterate over the node *now* at the current position.\n          return index\n        }\n      }\n    }\n  }\n)\n", "/**\n * @typedef {import('nlcst').Sentence} Sentence\n * @typedef {import('nlcst').WordContent} WordContent\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n// Symbols part of surrounding words.\nimport {wordSymbolInner} from '../expressions.js'\n\n// Merge words joined by certain punctuation marks.\nexport const mergeInnerWordSymbol = modifyChildren(\n  /**\n   * @type {import('unist-util-modify-children').Modifier<Sentence>}\n   */\n  function (child, index, parent) {\n    if (\n      index > 0 &&\n      (child.type === 'SymbolNode' || child.type === 'PunctuationNode')\n    ) {\n      const siblings = parent.children\n      const previous = siblings[index - 1]\n\n      if (previous && previous.type === 'WordNode') {\n        let position = index - 1\n        /** @type {Array<WordContent>} */\n        const tokens = []\n        /** @type {Array<WordContent>} */\n        let queue = []\n\n        // -   If a token which is neither word nor inner word symbol is found,\n        //     the loop is broken\n        // -   If an inner word symbol is found,  it\u2019s queued\n        // -   If a word is found, it\u2019s queued (and the queue stored and emptied)\n        while (siblings[++position]) {\n          const sibling = siblings[position]\n\n          if (sibling.type === 'WordNode') {\n            tokens.push(...queue, ...sibling.children)\n\n            queue = []\n          } else if (\n            (sibling.type === 'SymbolNode' ||\n              sibling.type === 'PunctuationNode') &&\n            wordSymbolInner.test(toString(sibling))\n          ) {\n            queue.push(sibling)\n          } else {\n            break\n          }\n        }\n\n        if (tokens.length > 0) {\n          // If there is a queue, remove its length from `position`.\n          if (queue.length > 0) {\n            position -= queue.length\n          }\n\n          // Remove every (one or more) inner-word punctuation marks and children\n          // of words.\n          siblings.splice(index, position - index)\n\n          // Add all found tokens to `prev`s children.\n          previous.children.push(...tokens)\n\n          const last = tokens[tokens.length - 1]\n\n          // Update position.\n          if (previous.position && last.position) {\n            previous.position.end = last.position.end\n          }\n\n          // Next, iterate over the node *now* at the current position.\n          return index\n        }\n      }\n    }\n  }\n)\n", "/**\n * @typedef {import('nlcst').Sentence} Sentence\n * @typedef {import('nlcst').SentenceContent} SentenceContent\n * @typedef {import('nlcst').WordContent} WordContent\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Merge words joined by certain punctuation marks.\nexport const mergeInnerWordSlash = modifyChildren(\n  /**\n   * @type {import('unist-util-modify-children').Modifier<Sentence>}\n   */\n  function (child, index, parent) {\n    const siblings = parent.children\n    const previous = siblings[index - 1]\n\n    if (\n      previous &&\n      previous.type === 'WordNode' &&\n      (child.type === 'SymbolNode' || child.type === 'PunctuationNode') &&\n      toString(child) === '/'\n    ) {\n      const previousValue = toString(previous)\n      /** @type {SentenceContent} */\n      let tail = child\n      /** @type {Array<WordContent>} */\n      const queue = [child]\n      let count = 1\n      let nextValue = ''\n      const next = siblings[index + 1]\n\n      if (next && next.type === 'WordNode') {\n        nextValue = toString(next)\n        tail = next\n        queue.push(...next.children)\n        count++\n      }\n\n      if (previousValue.length < 3 && (!nextValue || nextValue.length < 3)) {\n        // Add all found tokens to `prev`s children.\n        previous.children.push(...queue)\n\n        siblings.splice(index, count)\n\n        // Update position.\n        if (previous.position && tail.position) {\n          previous.position.end = tail.position.end\n        }\n\n        // Next, iterate over the node *now* at the current position.\n        return index\n      }\n    }\n  }\n)\n", "/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n */\n\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Merge a sentence into the following sentence, when the sentence does not\n// contain word tokens.\nexport const mergeNonWordSentences = modifyChildren(\n  /**\n   * @type {import('unist-util-modify-children').Modifier<Paragraph>}\n   */\n  function (child, index, parent) {\n    if ('children' in child) {\n      let position = -1\n\n      while (child.children[++position]) {\n        if (child.children[position].type === 'WordNode') {\n          return\n        }\n      }\n\n      const previous = parent.children[index - 1]\n\n      if (previous && 'children' in previous) {\n        previous.children.push(...child.children)\n\n        // Remove the child.\n        parent.children.splice(index, 1)\n\n        // Patch position.\n        if (previous.position && child.position) {\n          previous.position.end = child.position.end\n        }\n\n        // Next, iterate over the node *now* at the current position (which was the\n        // next node).\n        return index\n      }\n\n      const next = parent.children[index + 1]\n\n      if (next && 'children' in next) {\n        next.children.unshift(...child.children)\n\n        // Patch position.\n        if (next.position && child.position) {\n          next.position.start = child.position.start\n        }\n\n        // Remove the child.\n        parent.children.splice(index, 1)\n      }\n    }\n  }\n)\n", "/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Full stop characters that should not be treated as terminal sentence markers:\n// A case-insensitive abbreviation.\nconst abbreviationPrefix = new RegExp(\n  '^(' +\n    '[0-9]{1,3}|' +\n    '[a-z]|' +\n    // Common Latin Abbreviations:\n    // Based on: <https://en.wikipedia.org/wiki/List_of_Latin_abbreviations>.\n    // Where only the abbreviations written without joining full stops,\n    // but with a final full stop, were extracted.\n    //\n    // circa, capitulus, confer, compare, centum weight, eadem, (et) alii,\n    // et cetera, floruit, foliis, ibidem, idem, nemine && contradicente,\n    // opere && citato, (per) cent, (per) procurationem, (pro) tempore,\n    // sic erat scriptum, (et) sequentia, statim, videlicet. */\n    'al|ca|cap|cca|cent|cf|cit|con|cp|cwt|ead|etc|ff|' +\n    'fl|ibid|id|nem|op|pro|seq|sic|stat|tem|viz' +\n    ')$'\n)\n\n// Merge a sentence into its next sentence, when the sentence ends with a\n// certain word.\nexport const mergePrefixExceptions = modifyChildren(\n  /**\n   * @type {import('unist-util-modify-children').Modifier<Paragraph>}\n   */\n  function (child, index, parent) {\n    if ('children' in child && child.children.length > 1) {\n      const period = child.children[child.children.length - 1]\n\n      if (\n        period &&\n        (period.type === 'PunctuationNode' || period.type === 'SymbolNode') &&\n        toString(period) === '.'\n      ) {\n        const node = child.children[child.children.length - 2]\n\n        if (\n          node &&\n          node.type === 'WordNode' &&\n          abbreviationPrefix.test(toString(node).toLowerCase())\n        ) {\n          // Merge period into abbreviation.\n          node.children.push(period)\n          child.children.pop()\n\n          // Update position.\n          if (period.position && node.position) {\n            node.position.end = period.position.end\n          }\n\n          // Merge sentences.\n          const next = parent.children[index + 1]\n\n          if (next && next.type === 'SentenceNode') {\n            child.children.push(...next.children)\n            parent.children.splice(index + 1, 1)\n\n            // Update position.\n            if (next.position && child.position) {\n              child.position.end = next.position.end\n            }\n\n            // Next, iterate over the current node again.\n            return index - 1\n          }\n        }\n      }\n    }\n  }\n)\n", "/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {visitChildren} from 'unist-util-visit-children'\n// Full stop characters that should not be treated as terminal sentence markers:\n// A case-insensitive abbreviation.\nimport {terminalMarker} from '../expressions.js'\n\n// Merge non-terminal-marker full stops into the previous word (if available),\n// or the next word (if available).\nexport const mergeRemainingFullStops = visitChildren(\n  /**\n   * @type {import('unist-util-visit-children').Visitor<Paragraph>}\n   */\n  // eslint-disable-next-line complexity\n  function (child, _, _parent) {\n    if ('children' in child) {\n      let position = child.children.length\n      let hasFoundDelimiter = false\n\n      while (child.children[--position]) {\n        const grandchild = child.children[position]\n\n        if (\n          grandchild.type !== 'SymbolNode' &&\n          grandchild.type !== 'PunctuationNode'\n        ) {\n          // This is a sentence without terminal marker, so we 'fool' the code to\n          // make it think we have found one.\n          if (grandchild.type === 'WordNode') {\n            hasFoundDelimiter = true\n          }\n\n          continue\n        }\n\n        // Exit when this token is not a terminal marker.\n        if (!terminalMarker.test(toString(grandchild))) {\n          continue\n        }\n\n        // Ignore the first terminal marker found (starting at the end), as it\n        // should not be merged.\n        if (!hasFoundDelimiter) {\n          hasFoundDelimiter = true\n          continue\n        }\n\n        // Only merge a single full stop.\n        if (toString(grandchild) !== '.') {\n          continue\n        }\n\n        const previous = child.children[position - 1]\n        const next = child.children[position + 1]\n\n        if (previous && previous.type === 'WordNode') {\n          const nextNext = child.children[position + 2]\n\n          // Continue when the full stop is followed by a space and another full\n          // stop, such as: `{.} .`\n          if (\n            next &&\n            nextNext &&\n            next.type === 'WhiteSpaceNode' &&\n            toString(nextNext) === '.'\n          ) {\n            continue\n          }\n\n          // Remove `child` from parent.\n          child.children.splice(position, 1)\n\n          // Add the punctuation mark at the end of the previous node.\n          previous.children.push(grandchild)\n\n          // Update position.\n          if (grandchild.position && previous.position) {\n            previous.position.end = grandchild.position.end\n          }\n\n          position--\n        } else if (next && next.type === 'WordNode') {\n          // Remove `child` from parent.\n          child.children.splice(position, 1)\n\n          // Add the punctuation mark at the start of the next node.\n          next.children.unshift(grandchild)\n\n          if (grandchild.position && next.position) {\n            next.position.start = grandchild.position.start\n          }\n        }\n      }\n    }\n  }\n)\n", "/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n * @typedef {import('nlcst').Root} Root\n */\n\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Remove empty children.\nexport const removeEmptyNodes = modifyChildren(\n  /**\n   * @type {import('unist-util-modify-children').Modifier<Paragraph | Root>}\n   */\n\n  function (child, index, parent) {\n    if ('children' in child && child.children.length === 0) {\n      parent.children.splice(index, 1)\n\n      // Next, iterate over the node *now* at the current position (which was the\n      // next node).\n      return index\n    }\n  }\n)\n", "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('nlcst').Paragraph} Paragraph\n * @typedef {import('unist').Position} Position\n * @typedef {import('nlcst').Root} Root\n * @typedef {import('nlcst').Sentence} Sentence\n */\n\nimport {visitChildren} from 'unist-util-visit-children'\n\n// Patch the position on a parent node based on its first and last child.\nexport const patchPosition = visitChildren(\n  /**\n   * @type {import('unist-util-visit-children').Visitor<Paragraph | Root | Sentence>}\n   */\n  function (child, index, node) {\n    const siblings = node.children\n\n    if (\n      child.position &&\n      index < 1 &&\n      /* c8 ignore next */\n      (!node.position || !node.position.start)\n    ) {\n      patch(node)\n      node.position.start = child.position.start\n    }\n\n    if (\n      child.position &&\n      index === siblings.length - 1 &&\n      (!node.position || !node.position.end)\n    ) {\n      patch(node)\n      node.position.end = child.position.end\n    }\n  }\n)\n\n/**\n * @param {Node} node\n * @returns {asserts node is Node & {position: Position}}\n */\nfunction patch(node) {\n  if (!node.position) {\n    // @ts-expect-error: fine, we\u2019ll fill it later.\n    node.position = {}\n  }\n}\n", "/**\n * @typedef {import('nlcst').Nodes} Nodes\n * @typedef {import('nlcst').Parents} Parents\n * @typedef {import('nlcst').Paragraph} Paragraph\n * @typedef {import('nlcst').Root} Root\n * @typedef {import('nlcst').RootContent} RootContent\n * @typedef {import('nlcst').Sentence} Sentence\n * @typedef {import('nlcst').SentenceContent} SentenceContent\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @template {Nodes} Node\n *   Node type.\n * @callback Plugin\n *   Transform a node.\n * @param {Node} node\n *   The node.\n * @returns {undefined | void}\n *   Nothing.\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {mergeAffixExceptions} from './plugin/merge-affix-exceptions.js'\nimport {mergeAffixSymbol} from './plugin/merge-affix-symbol.js'\nimport {breakImplicitSentences} from './plugin/break-implicit-sentences.js'\nimport {makeFinalWhiteSpaceSiblings} from './plugin/make-final-white-space-siblings.js'\nimport {makeInitialWhiteSpaceSiblings} from './plugin/make-initial-white-space-siblings.js'\nimport {mergeFinalWordSymbol} from './plugin/merge-final-word-symbol.js'\nimport {mergeInitialDigitSentences} from './plugin/merge-initial-digit-sentences.js'\nimport {mergeInitialLowerCaseLetterSentences} from './plugin/merge-initial-lower-case-letter-sentences.js'\nimport {mergeInitialWordSymbol} from './plugin/merge-initial-word-symbol.js'\nimport {mergeInitialisms} from './plugin/merge-initialisms.js'\nimport {mergeInnerWordSymbol} from './plugin/merge-inner-word-symbol.js'\nimport {mergeInnerWordSlash} from './plugin/merge-inner-word-slash.js'\nimport {mergeNonWordSentences} from './plugin/merge-non-word-sentences.js'\nimport {mergePrefixExceptions} from './plugin/merge-prefix-exceptions.js'\nimport {mergeRemainingFullStops} from './plugin/merge-remaining-full-stops.js'\nimport {removeEmptyNodes} from './plugin/remove-empty-nodes.js'\nimport {patchPosition} from './plugin/patch-position.js'\nimport {\n  newLine,\n  punctuation,\n  surrogates,\n  terminalMarker,\n  whiteSpace,\n  word\n} from './expressions.js'\n\n// PARSE LATIN\n\n/**\n * Create a new parser.\n */\nexport class ParseLatin {\n  /**\n   * Create a new parser.\n   *\n   * This additionally supports `retext`-like call: where an instance is\n   * created for each file, and the file is given on construction.\n   *\n   * @param {string | null | undefined} [doc]\n   *   Value to parse (optional).\n   * @param {VFile | null | undefined} [file]\n   *   Corresponding file (optional).\n   */\n  constructor(doc, file) {\n    const value = file || doc\n\n    /** @type {string | undefined} */\n    this.doc = value ? String(value) : undefined\n\n    /** @type {Array<Plugin<Root>>} */\n    this.tokenizeRootPlugins = [...this.tokenizeRootPlugins]\n    /** @type {Array<Plugin<Paragraph>>} */\n    this.tokenizeParagraphPlugins = [...this.tokenizeParagraphPlugins]\n    /** @type {Array<Plugin<Sentence>>} */\n    this.tokenizeSentencePlugins = [...this.tokenizeSentencePlugins]\n  }\n\n  /**\n   * Turn natural language into a syntax tree.\n   *\n   * @param {string | null | undefined} [value]\n   *   Value to parse (optional).\n   * @returns {Root}\n   *   Tree.\n   */\n  parse(value) {\n    return this.tokenizeRoot(value || this.doc)\n  }\n\n  /**\n   * Parse as a root.\n   *\n   * @param {string | null | undefined} [value]\n   *   Value to parse (optional).\n   * @returns {Root}\n   *   Built tree.\n   */\n  tokenizeRoot(value) {\n    const paragraph = this.tokenizeParagraph(value)\n    /** @type {Root} */\n    const result = {\n      type: 'RootNode',\n      children: splitNode(paragraph, 'WhiteSpaceNode', newLine)\n    }\n\n    let index = -1\n    while (this.tokenizeRootPlugins[++index]) {\n      this.tokenizeRootPlugins[index](result)\n    }\n\n    return result\n  }\n\n  /**\n   * Parse as a paragraph.\n   *\n   * @param {string | null | undefined} [value]\n   *   Value to parse (optional).\n   * @returns {Paragraph}\n   *   Built tree.\n   */\n  tokenizeParagraph(value) {\n    const sentence = this.tokenizeSentence(value)\n    /** @type {Paragraph} */\n    const result = {\n      type: 'ParagraphNode',\n      children: splitNode(sentence, 'PunctuationNode', terminalMarker)\n    }\n\n    let index = -1\n    while (this.tokenizeParagraphPlugins[++index]) {\n      this.tokenizeParagraphPlugins[index](result)\n    }\n\n    return result\n  }\n\n  /**\n   * Parse as a sentence.\n   *\n   * @param {string | null | undefined} [value]\n   *   Value to parse (optional).\n   * @returns {Sentence}\n   *   Built tree.\n   */\n  tokenizeSentence(value) {\n    const children = this.tokenize(value)\n    /** @type {Sentence} */\n    const result = {type: 'SentenceNode', children}\n\n    let index = -1\n    while (this.tokenizeSentencePlugins[++index]) {\n      this.tokenizeSentencePlugins[index](result)\n    }\n\n    return result\n  }\n\n  /**\n   *  Transform a `value` into a list of nlcsts.\n   *\n   * @param {string | null | undefined} [value]\n   *   Value to parse (optional).\n   * @returns {Array<SentenceContent>}\n   *   Built sentence content.\n   */\n  tokenize(value) {\n    /** @type {Array<SentenceContent>} */\n    const children = []\n\n    if (!value) {\n      return children\n    }\n\n    const currentPoint = {line: 1, column: 1, offset: 0}\n    let from = 0\n    let index = 0\n    let start = {...currentPoint}\n    /** @type {SentenceContent['type'] | undefined} */\n    let previousType\n    /** @type {string | undefined} */\n    let previous\n\n    while (index < value.length) {\n      const current = value.charAt(index)\n      const currentType = whiteSpace.test(current)\n        ? 'WhiteSpaceNode'\n        : punctuation.test(current)\n        ? 'PunctuationNode'\n        : word.test(current)\n        ? 'WordNode'\n        : 'SymbolNode'\n\n      if (\n        from < index &&\n        previousType &&\n        currentType &&\n        !(\n          previousType === currentType &&\n          // Words or white space continue.\n          (previousType === 'WordNode' ||\n            previousType === 'WhiteSpaceNode' ||\n            // Same character of punctuation or symbol also continues.\n            current === previous ||\n            // Surrogates of  punctuation or symbol also continue.\n            surrogates.test(current))\n        )\n      ) {\n        // Flush the previous queue.\n        children.push(createNode(previousType, value.slice(from, index)))\n        from = index\n        start = {...currentPoint}\n      }\n\n      if (current === '\\r' || (current === '\\n' && previous !== '\\r')) {\n        currentPoint.line++\n        currentPoint.column = 1\n      } else if (current !== '\\n') {\n        currentPoint.column++\n      }\n\n      currentPoint.offset++\n      previousType = currentType\n      previous = current\n      index++\n    }\n\n    if (previousType && from < index) {\n      children.push(createNode(previousType, value.slice(from, index)))\n    }\n\n    return children\n\n    /**\n     * @param {SentenceContent['type']} type\n     *   Node type to build.\n     * @param {string} value\n     *   Value.\n     * @returns {SentenceContent}\n     *   Node.\n     */\n    function createNode(type, value) {\n      return type === 'WordNode'\n        ? {\n            type: 'WordNode',\n            children: [\n              {\n                type: 'TextNode',\n                value,\n                position: {start, end: {...currentPoint}}\n              }\n            ],\n            position: {start, end: {...currentPoint}}\n          }\n        : {type, value, position: {start, end: {...currentPoint}}}\n    }\n  }\n}\n\n/**\n * List of transforms handling a sentence.\n */\nParseLatin.prototype.tokenizeSentencePlugins = [\n  mergeInitialWordSymbol,\n  mergeFinalWordSymbol,\n  mergeInnerWordSymbol,\n  mergeInnerWordSlash,\n  mergeInitialisms,\n  patchPosition\n]\n\n/**\n * List of transforms handling a paragraph.\n */\nParseLatin.prototype.tokenizeParagraphPlugins = [\n  mergeNonWordSentences,\n  mergeAffixSymbol,\n  mergeInitialLowerCaseLetterSentences,\n  mergeInitialDigitSentences,\n  mergePrefixExceptions,\n  mergeAffixExceptions,\n  mergeRemainingFullStops,\n  makeInitialWhiteSpaceSiblings,\n  makeFinalWhiteSpaceSiblings,\n  breakImplicitSentences,\n  removeEmptyNodes,\n  patchPosition\n]\n\n/**\n * List of transforms handling a root.\n */\nParseLatin.prototype.tokenizeRootPlugins = [\n  makeInitialWhiteSpaceSiblings,\n  makeFinalWhiteSpaceSiblings,\n  removeEmptyNodes,\n  patchPosition\n]\n\n/**\n * A function that splits one node into several nodes.\n *\n * @template {Parents} Node\n *   Node type.\n * @param {Node} node\n *   Node to split.\n * @param {RegExp} expression\n *   Split on this regex.\n * @param {Node['children'][number]['type']} childType\n *   Split this node type.\n * @returns {Array<Node>}\n *   The given node, split into several nodes.\n */\nfunction splitNode(node, childType, expression) {\n  /** @type {Array<Node>} */\n  const result = []\n  let index = -1\n  let start = 0\n\n  while (++index < node.children.length) {\n    const token = node.children[index]\n\n    if (\n      index === node.children.length - 1 ||\n      (token.type === childType && expression.test(toString(token)))\n    ) {\n      /** @type {Node} */\n      // @ts-expect-error: fine\n      const parent = {\n        type: node.type,\n        children: node.children.slice(start, index + 1)\n      }\n\n      const first = node.children[start]\n      const last = token\n      if (first.position && last.position) {\n        parent.position = {\n          start: first.position.start,\n          end: last.position.end\n        }\n      }\n\n      result.push(parent)\n      start = index + 1\n    }\n  }\n\n  return result\n}\n", "// Note: this file is generated by `script/generate-regex.js`\nexport const abbreviations =\n  /^(t(?:hurs|bsp|sp)|s(?:e(?:pt|c)|q)|(?:tue|bbl|yd)s|thu|sep|tue|bbl|nov|aug|ju[ln]|(?:ap|h)r|(?:ja|su)n|m(?:ar|on|in)|(?:sa|oc|[kpq])t|g(?:ro|al)|f(?:eb|ri|[lt])|d(?:ec|oz)|wed|l(?:bs|td)|inc?|mi|gr|yd|lb|oz|cu)$/\n\nexport const abbreviationsSensitive =\n  /^((?:Northant|Derby|S(?:hrop|taff)|W(?:ark|orc)|L(?:in|ei|an)c|C(?:amb|he)|Trea|York|B(?:uck|e(?:rk|d))|(?:Not|Wil)t|H(?:er|[au]n)t|Glo|Pre)s|Northumb|N(?:or(?:thd|f)|e(?:br|v)|atl)|M(?:(?:essr|as|se)s|i(?:ddx|nn|ch|ss)|ont|lle|s(?:gr|s)|ddx|(?:me|r)s?|a[jn]|ex|gr|o|d|e|s|[tx])?|Heref|P(?:enna|[ahot])|D(?:e(?:rbs|[lv])|r)|Westm|(?:Cali|Pro)f|S(?:a(?:lop|sk)|uff|om|e[cn]|[qrxy])|(?:Bldg|Kan)s?|Here|P(?:enn?|k)|St(?:af)?|W(?:isc|arw|yo)|C(?:umb|olo)|B(?:lvd|rig)|(?:Ok|F)la|(?:Pk|[FH])wy|A(?:r(?:iz|k)|lt?a|tty|m[bd])|(?:Cap|S(?:up|g)|On|Ru|U)t|(?:Ter|Cd|D[ou]|Sn|J)r|(?:Oxo|Co[nr]|Ten|Ke|Ge|Ho)n|Wash|N(?:eb|at)|W(?:is|ar|o)|C(?:al|ol?)|Qu[e\\u00E9]|I(?:ll|a)|Tex|G(?:ov|a)|Ind|R(?:te|e[pv]|d)|Ida|(?:Yu|Da)k|(?:Or|Av)e|Ssx|Ok|La|Br|Rt|Id|V[at]|Ky|Lt|F[rt])$/\n\nexport const elisionPrefix = /^(ol?)$/\n\nexport const elisionAffix = /^(t(?:were|(?:wa|i)s)|cause|e[mr]|im|\\d\\ds?)$/\n", "/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n * @typedef {import('nlcst').Sentence} Sentence\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {ParseLatin} from 'parse-latin'\nimport {modifyChildren} from 'unist-util-modify-children'\nimport {visitChildren} from 'unist-util-visit-children'\nimport {\n  abbreviations,\n  abbreviationsSensitive,\n  elisionAffix,\n  elisionPrefix\n} from './regex.js'\n\n// Match one apostrophe.\nconst apostrophe = /^['\u2019]$/\n\n/**\n * Create a new parser.\n *\n * `ParseEnglish` extends `ParseLatin`.\n * See `parse-latin` for API docs.\n */\nexport class ParseEnglish extends ParseLatin {}\n\n/**\n * List of transforms handling a sentence.\n */\nParseEnglish.prototype.tokenizeSentencePlugins = [\n  visitChildren(mergeEnglishElisionExceptions),\n  ...ParseLatin.prototype.tokenizeSentencePlugins\n]\n\n/**\n * List of transforms handling a paragraph.\n */\nParseEnglish.prototype.tokenizeParagraphPlugins = [\n  modifyChildren(mergeEnglishPrefixExceptions),\n  ...ParseLatin.prototype.tokenizeParagraphPlugins\n]\n\n/**\n * Merge a sentence into its next sentence, when the sentence ends with a\n * certain word.\n *\n * @type {import('unist-util-modify-children').Modifier<Paragraph>}\n */\nfunction mergeEnglishPrefixExceptions(sentence, index, paragraph) {\n  if ('children' in sentence && sentence.children) {\n    const period = sentence.children[sentence.children.length - 1]\n    const word = sentence.children[sentence.children.length - 2]\n\n    if (\n      period &&\n      period.type === 'PunctuationNode' &&\n      toString(period) === '.' &&\n      word &&\n      word.type === 'WordNode'\n    ) {\n      const value = toString(word)\n\n      if (\n        abbreviations.test(value.toLowerCase()) ||\n        abbreviationsSensitive.test(value)\n      ) {\n        // Merge period into abbreviation.\n        word.children.push(period)\n        sentence.children.pop()\n\n        if (period.position && word.position) {\n          word.position.end = period.position.end\n        }\n\n        // Merge sentences.\n        const next = paragraph.children[index + 1]\n\n        if (next && next.type === 'SentenceNode') {\n          sentence.children.push(...next.children)\n          paragraph.children.splice(index + 1, 1)\n\n          // Update position.\n          if (next.position && sentence.position) {\n            sentence.position.end = next.position.end\n          }\n\n          // Next, iterate over the current node again.\n          return index - 1\n        }\n      }\n    }\n  }\n}\n\n/**\n * Merge an apostrophe depicting elision into its surrounding word.\n *\n * @type {import('unist-util-visit-children').Visitor<Sentence>}\n */\nfunction mergeEnglishElisionExceptions(child, index, sentence) {\n  if (child.type === 'PunctuationNode' || child.type === 'SymbolNode') {\n    const siblings = sentence.children\n    const length = siblings.length\n    const value = toString(child)\n\n    // Match abbreviation of `with`, `w/`\n    if (value === '/') {\n      const sibling = siblings[index - 1]\n\n      if (\n        sibling &&\n        sibling.type === 'WordNode' &&\n        toString(sibling).toLowerCase() === 'w'\n      ) {\n        // Remove the slash from the sentence.\n        siblings.splice(index, 1)\n\n        // Append the slash into the children of the previous node.\n        sibling.children.push(child)\n\n        // Update position.\n        if (sibling.position && child.position) {\n          sibling.position.end = child.position.end\n        }\n      }\n    } else if (apostrophe.test(value)) {\n      // If two preceding (the first white space and the second a word), and one\n      // following (white space) nodes exist...\n      const sibling = siblings[index - 1]\n\n      if (\n        index > 2 &&\n        index < length - 1 &&\n        sibling.type === 'WordNode' &&\n        siblings[index - 2].type === 'WhiteSpaceNode' &&\n        siblings[index + 1].type === 'WhiteSpaceNode' &&\n        elisionPrefix.test(toString(sibling).toLowerCase())\n      ) {\n        // Remove the apostrophe from the sentence.\n        siblings.splice(index, 1)\n\n        // Append the apostrophe into the children of node.\n        sibling.children.push(child)\n\n        // Update position.\n        if (sibling.position && child.position) {\n          sibling.position.end = child.position.end\n        }\n\n        return\n      }\n\n      // If a following word exists, and the preceding node is not a word...\n      if (\n        index !== length - 1 &&\n        siblings[index + 1].type === 'WordNode' &&\n        (index === 0 || siblings[index - 1].type !== 'WordNode')\n      ) {\n        const sibling = siblings[index + 1]\n        const value = toString(sibling).toLowerCase()\n        const other = siblings[index + 2]\n\n        if (sibling.type === 'WordNode' && elisionAffix.test(value)) {\n          // Remove the apostrophe from the sentence.\n          siblings.splice(index, 1)\n\n          // Prepend the apostrophe into the children of node.\n          sibling.children.unshift(child)\n\n          // Update position.\n          if (sibling.position && child.position) {\n            sibling.position.start = child.position.start\n          }\n          // If both preceded and followed by an apostrophe, and the word is\n          // `n`...\n        } else if (\n          sibling.type === 'WordNode' &&\n          value === 'n' &&\n          other &&\n          other.type === 'PunctuationNode' &&\n          apostrophe.test(toString(other))\n        ) {\n          // Remove the apostrophe from the sentence.\n          siblings.splice(index, 1)\n          siblings.splice(index + 1, 1)\n\n          // Prepend the preceding apostrophe and append the into the following\n          // apostrophe into the children of node.\n          sibling.children.unshift(child)\n          sibling.children.push(other)\n\n          // Update position.\n          if (sibling.position) {\n            if (child.position) {\n              sibling.position.start = child.position.start\n            }\n\n            if (other.position) {\n              sibling.position.end = other.position.end\n            }\n          }\n        }\n      }\n    }\n  }\n}\n", "/**\n * @typedef {import('nlcst').Root} Root\n */\n\nimport {ParseEnglish} from 'parse-english'\n\n/**\n * Add support for parsing English natural language.\n *\n * @returns {undefined}\n *   Nothing.\n */\nexport default function retextEnglish() {\n  // @ts-expect-error -- TS in JSDoc doesn\u2019t understand `this`.\n  // eslint-disable-next-line unicorn/no-this-assignment\n  const self = /** @type {import('unified').Processor<Root>} */ (this)\n\n  self.parser = parser\n\n  /** @type {import('unified').Parser<Root>} */\n  function parser(value) {\n    const parser = new ParseEnglish()\n    add(parser.tokenizeParagraphPlugins, self.data('nlcstParagraphExtensions'))\n    add(parser.tokenizeRootPlugins, self.data('nlcstRootExtensions'))\n    add(parser.tokenizeSentencePlugins, self.data('nlcstSentenceExtensions'))\n    return parser.parse(value)\n  }\n}\n\n/**\n * @template T\n * @param {Array<T>} list\n * @param {Array<T> | undefined} values\n */\nfunction add(list, values) {\n  if (values) list.unshift(...values)\n}\n", "/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n *   Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n  if (error) {\n    throw error\n  }\n}\n", "/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n *   Acceptable results from compilers.\n *\n *   To register custom results, add them to\n *   {@linkcode CompileResultMap}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n *   The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n *   A **compiler** handles the compiling of a syntax tree to something else\n *   (in most cases, text) (TypeScript type).\n *\n *   It is used in the stringify phase and called with a {@linkcode Node}\n *   and {@linkcode VFile} representation of the document to compile.\n *   It should return the textual representation of the given tree (typically\n *   `string`).\n *\n *   > **Note**: unified typically compiles by serializing: most compilers\n *   > return `string` (or `Uint8Array`).\n *   > Some compilers, such as the one configured with\n *   > [`rehype-react`][rehype-react], return other values (in this case, a\n *   > React tree).\n *   > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n *   > result values.\n *   >\n *   > To register custom results in TypeScript, add them to\n *   > {@linkcode CompileResultMap}.\n *\n *   [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n *   Tree to compile.\n * @param {VFile} file\n *   File associated with `tree`.\n * @returns {Result}\n *   New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n *   something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The node that the parser yields (default: `Node`)\n * @callback Parser\n *   A **parser** handles the parsing of text to a syntax tree.\n *\n *   It is used in the parse phase and is called with a `string` and\n *   {@linkcode VFile} of the document to parse.\n *   It must return the syntax tree representation of the given file\n *   ({@linkcode Node}).\n * @param {string} document\n *   Document to parse.\n * @param {VFile} file\n *   File associated with `document`.\n * @returns {Tree}\n *   Node representing the given file.\n */\n\n/**\n * @typedef {(\n *   Plugin<Array<any>, any, any> |\n *   PluginTuple<Array<any>, any, any> |\n *   Preset\n * )} Pluggable\n *   Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array<Pluggable>} PluggableList\n *   List of plugins and presets.\n */\n\n// Note: we can\u2019t use `callback` yet as it messes up `this`:\n//  <https://github.com/microsoft/TypeScript/issues/55197>.\n/**\n * @template {Array<unknown>} [PluginParameters=[]]\n *   Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n *   Value that is expected as input (default: `Node`).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node it expects.\n *   *   If the plugin sets a {@linkcode Parser}, this should be\n *       `string`.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be the\n *       node it expects.\n * @template [Output=Input]\n *   Value that is yielded as output (default: `Input`).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node that that yields.\n *   *   If the plugin sets a {@linkcode Parser}, this should be the\n *       node that it yields.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be\n *       result it yields.\n * @typedef {(\n *   (this: Processor, ...parameters: PluginParameters) =>\n *     Input extends string ? // Parser.\n *        Output extends Node | undefined ? undefined | void : never :\n *     Output extends CompileResults ? // Compiler.\n *        Input extends Node | undefined ? undefined | void : never :\n *     Transformer<\n *       Input extends Node ? Input : Node,\n *       Output extends Node ? Output : Node\n *     > | undefined | void\n * )} Plugin\n *   Single plugin.\n *\n *   Plugins configure the processors they are applied on in the following\n *   ways:\n *\n *   *   they change the processor, such as the parser, the compiler, or by\n *       configuring data\n *   *   they specify how to handle trees and files\n *\n *   In practice, they are functions that can receive options and configure the\n *   processor (`this`).\n *\n *   > **Note**: plugins are called when the processor is *frozen*, not when\n *   > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array<unknown>} [TupleParameters=[]]\n *   Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n *   Value that is expected as input (optional).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node it expects.\n *   *   If the plugin sets a {@linkcode Parser}, this should be\n *       `string`.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be the\n *       node it expects.\n * @template [Output=undefined] (optional).\n *   Value that is yielded as output.\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node that that yields.\n *   *   If the plugin sets a {@linkcode Parser}, this should be the\n *       node that it yields.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be\n *       result it yields.\n * @typedef {(\n *   [\n *     plugin: Plugin<TupleParameters, Input, Output>,\n *     ...parameters: TupleParameters\n *   ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n *   Sharable configuration.\n *\n *   They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n *   List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n *   Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n *   The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n *   Callback called when the process is done.\n *\n *   Called with either an error or a result.\n * @param {Error | undefined} [error]\n *   Fatal error (optional).\n * @param {File | undefined} [file]\n *   Processed file (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n *   Callback called when transformers are done.\n *\n *   Called with either an error or results.\n * @param {Error | undefined} [error]\n *   Fatal error (optional).\n * @param {Tree | undefined} [tree]\n *   Transformed tree (optional).\n * @param {VFile | undefined} [file]\n *   File (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n *   Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n *   Callback passed to transforms.\n *\n *   If the signature of a `transformer` accepts a third argument, the\n *   transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n *   Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n *   New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n *   New, changed, file (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n *   Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n *   Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n *   Transformers handle syntax trees and files.\n *\n *   They are functions that are called each time a syntax tree and file are\n *   passed through the run phase.\n *   When an error occurs in them (either because it\u2019s thrown, returned,\n *   rejected, or passed to `next`), the process stops.\n *\n *   The run phase is handled by [`trough`][trough], see its documentation for\n *   the exact semantics of these functions.\n *\n *   > **Note**: you should likely ignore `next`: don\u2019t accept it.\n *   > it supports callback-style async work.\n *   > But promises are likely easier to reason about.\n *\n *   [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n *   Tree to handle.\n * @param {VFile} file\n *   File to handle.\n * @param {TransformCallback<Output>} next\n *   Callback.\n * @returns {(\n *   Promise<Output | undefined | void> |\n *   Promise<never> | // For some reason this is needed separately.\n *   Output |\n *   Error |\n *   undefined |\n *   void\n * )}\n *   If you accept `next`, nothing.\n *   Otherwise:\n *\n *   *   `Error` \u2014 fatal error to stop the process\n *   *   `Promise<undefined>` or `undefined` \u2014 the next transformer keeps using\n *       same tree\n *   *   `Promise<Node>` or `Node` \u2014 new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n *   Output of `parse`.\n * @template {Node | undefined} HeadTree\n *   Input for `run`.\n * @template {Node | undefined} TailTree\n *   Output for `run`.\n * @template {Node | undefined} CompileTree\n *   Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n *   Output of `stringify`.\n * @template {Node | string | undefined} Input\n *   Input of plugin.\n * @template Output\n *   Output of plugin (optional).\n * @typedef {(\n *   Input extends string\n *     ? Output extends Node | undefined\n *       ? // Parser.\n *         Processor<\n *           Output extends undefined ? ParseTree : Output,\n *           HeadTree,\n *           TailTree,\n *           CompileTree,\n *           CompileResult\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : Output extends CompileResults\n *     ? Input extends Node | undefined\n *       ? // Compiler.\n *         Processor<\n *           ParseTree,\n *           HeadTree,\n *           TailTree,\n *           Input extends undefined ? CompileTree : Input,\n *           Output extends undefined ? CompileResult : Output\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : Input extends Node | undefined\n *     ? Output extends Node | undefined\n *       ? // Transform.\n *         Processor<\n *           ParseTree,\n *           HeadTree extends undefined ? Input : HeadTree,\n *           Output extends undefined ? TailTree : Output,\n *           CompileTree,\n *           CompileResult\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : // Unknown.\n *       Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * )} UsePlugin\n *   Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n *   Node type that the transformer yields.\n * @typedef {(\n *   Result extends Value | undefined ?\n *     VFile :\n *     VFile & {result: Result}\n *   )} VFileWithOutput\n *   Type to generate a {@linkcode VFile} corresponding to a compiler result.\n *\n *   If a result that is not acceptable on a `VFile` is used, that will\n *   be stored on the `result` field of {@linkcode VFile}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n *   Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n *   Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n *   Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n *   Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n *   Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>}\n */\nexport class Processor extends CallableInstance {\n  /**\n   * Create a processor.\n   */\n  constructor() {\n    // If `Processor()` is called (w/o new), `copy` is called instead.\n    super('copy')\n\n    /**\n     * Compiler to use (deprecated).\n     *\n     * @deprecated\n     *   Use `compiler` instead.\n     * @type {(\n     *   Compiler<\n     *     CompileTree extends undefined ? Node : CompileTree,\n     *     CompileResult extends undefined ? CompileResults : CompileResult\n     *   > |\n     *   undefined\n     * )}\n     */\n    this.Compiler = undefined\n\n    /**\n     * Parser to use (deprecated).\n     *\n     * @deprecated\n     *   Use `parser` instead.\n     * @type {(\n     *   Parser<ParseTree extends undefined ? Node : ParseTree> |\n     *   undefined\n     * )}\n     */\n    this.Parser = undefined\n\n    // Note: the following fields are considered private.\n    // However, they are needed for tests, and TSC generates an untyped\n    // `private freezeIndex` field for, which trips `type-coverage` up.\n    // Instead, we use `@deprecated` to visualize that they shouldn\u2019t be used.\n    /**\n     * Internal list of configured plugins.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Array<PluginTuple<Array<unknown>>>}\n     */\n    this.attachers = []\n\n    /**\n     * Compiler to use.\n     *\n     * @type {(\n     *   Compiler<\n     *     CompileTree extends undefined ? Node : CompileTree,\n     *     CompileResult extends undefined ? CompileResults : CompileResult\n     *   > |\n     *   undefined\n     * )}\n     */\n    this.compiler = undefined\n\n    /**\n     * Internal state to track where we are while freezing.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {number}\n     */\n    this.freezeIndex = -1\n\n    /**\n     * Internal state to track whether we\u2019re frozen.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {boolean | undefined}\n     */\n    this.frozen = undefined\n\n    /**\n     * Internal state.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Data}\n     */\n    this.namespace = {}\n\n    /**\n     * Parser to use.\n     *\n     * @type {(\n     *   Parser<ParseTree extends undefined ? Node : ParseTree> |\n     *   undefined\n     * )}\n     */\n    this.parser = undefined\n\n    /**\n     * Internal list of configured transformers.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Pipeline}\n     */\n    this.transformers = trough()\n  }\n\n  /**\n   * Copy a processor.\n   *\n   * @deprecated\n   *   This is a private internal method and should not be used.\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   New *unfrozen* processor ({@linkcode Processor}) that is\n   *   configured to work the same as its ancestor.\n   *   When the descendant processor is configured in the future it does not\n   *   affect the ancestral processor.\n   */\n  copy() {\n    // Cast as the type parameters will be the same after attaching.\n    const destination =\n      /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */ (\n        new Processor()\n      )\n    let index = -1\n\n    while (++index < this.attachers.length) {\n      const attacher = this.attachers[index]\n      destination.use(...attacher)\n    }\n\n    destination.data(extend(true, {}, this.namespace))\n\n    return destination\n  }\n\n  /**\n   * Configure the processor with info available to all plugins.\n   * Information is stored in an object.\n   *\n   * Typically, options can be given to a specific plugin, but sometimes it\n   * makes sense to have information shared with several plugins.\n   * For example, a list of HTML elements that are self-closing, which is\n   * needed during all phases.\n   *\n   * > **Note**: setting information cannot occur on *frozen* processors.\n   * > Call the processor first to create a new unfrozen processor.\n   *\n   * > **Note**: to register custom data in TypeScript, augment the\n   * > {@linkcode Data} interface.\n   *\n   * @example\n   *   This example show how to get and set info:\n   *\n   *   ```js\n   *   import {unified} from 'unified'\n   *\n   *   const processor = unified().data('alpha', 'bravo')\n   *\n   *   processor.data('alpha') // => 'bravo'\n   *\n   *   processor.data() // => {alpha: 'bravo'}\n   *\n   *   processor.data({charlie: 'delta'})\n   *\n   *   processor.data() // => {charlie: 'delta'}\n   *   ```\n   *\n   * @template {keyof Data} Key\n   *\n   * @overload\n   * @returns {Data}\n   *\n   * @overload\n   * @param {Data} dataset\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {Key} key\n   * @returns {Data[Key]}\n   *\n   * @overload\n   * @param {Key} key\n   * @param {Data[Key]} value\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @param {Data | Key} [key]\n   *   Key to get or set, or entire dataset to set, or nothing to get the\n   *   entire dataset (optional).\n   * @param {Data[Key]} [value]\n   *   Value to set (optional).\n   * @returns {unknown}\n   *   The current processor when setting, the value at `key` when getting, or\n   *   the entire dataset when getting without key.\n   */\n  data(key, value) {\n    if (typeof key === 'string') {\n      // Set `key`.\n      if (arguments.length === 2) {\n        assertUnfrozen('data', this.frozen)\n        this.namespace[key] = value\n        return this\n      }\n\n      // Get `key`.\n      return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n    }\n\n    // Set space.\n    if (key) {\n      assertUnfrozen('data', this.frozen)\n      this.namespace = key\n      return this\n    }\n\n    // Get space.\n    return this.namespace\n  }\n\n  /**\n   * Freeze a processor.\n   *\n   * Frozen processors are meant to be extended and not to be configured\n   * directly.\n   *\n   * When a processor is frozen it cannot be unfrozen.\n   * New processors working the same way can be created by calling the\n   * processor.\n   *\n   * It\u2019s possible to freeze processors explicitly by calling `.freeze()`.\n   * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n   * `.stringify()`, `.process()`, or `.processSync()` are called.\n   *\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   The current processor.\n   */\n  freeze() {\n    if (this.frozen) {\n      return this\n    }\n\n    // Cast so that we can type plugins easier.\n    // Plugins are supposed to be usable on different processors, not just on\n    // this exact processor.\n    const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n    while (++this.freezeIndex < this.attachers.length) {\n      const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n      if (options[0] === false) {\n        continue\n      }\n\n      if (options[0] === true) {\n        options[0] = undefined\n      }\n\n      const transformer = attacher.call(self, ...options)\n\n      if (typeof transformer === 'function') {\n        this.transformers.use(transformer)\n      }\n    }\n\n    this.frozen = true\n    this.freezeIndex = Number.POSITIVE_INFINITY\n\n    return this\n  }\n\n  /**\n   * Parse text to a syntax tree.\n   *\n   * > **Note**: `parse` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `parse` performs the parse phase, not the run phase or other\n   * > phases.\n   *\n   * @param {Compatible | undefined} [file]\n   *   file to parse (optional); typically `string` or `VFile`; any value\n   *   accepted as `x` in `new VFile(x)`.\n   * @returns {ParseTree extends undefined ? Node : ParseTree}\n   *   Syntax tree representing `file`.\n   */\n  parse(file) {\n    this.freeze()\n    const realFile = vfile(file)\n    const parser = this.parser || this.Parser\n    assertParser('parse', parser)\n    return parser(String(realFile), realFile)\n  }\n\n  /**\n   * Process the given file as configured on the processor.\n   *\n   * > **Note**: `process` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `process` performs the parse, run, and stringify phases.\n   *\n   * @overload\n   * @param {Compatible | undefined} file\n   * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {Compatible | undefined} [file]\n   * @returns {Promise<VFileWithOutput<CompileResult>>}\n   *\n   * @param {Compatible | undefined} [file]\n   *   File (optional); typically `string` or `VFile`]; any value accepted as\n   *   `x` in `new VFile(x)`.\n   * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]\n   *   Callback (optional).\n   * @returns {Promise<VFile> | undefined}\n   *   Nothing if `done` is given.\n   *   Otherwise a promise, rejected with a fatal error or resolved with the\n   *   processed file.\n   *\n   *   The parsed, transformed, and compiled value is available at\n   *   `file.value` (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most\n   *   > compilers return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  process(file, done) {\n    const self = this\n\n    this.freeze()\n    assertParser('process', this.parser || this.Parser)\n    assertCompiler('process', this.compiler || this.Compiler)\n\n    return done ? executor(undefined, done) : new Promise(executor)\n\n    // Note: `void`s needed for TS.\n    /**\n     * @param {((file: VFileWithOutput<CompileResult>) => undefined | void) | undefined} resolve\n     * @param {(error: Error | undefined) => undefined | void} reject\n     * @returns {undefined}\n     */\n    function executor(resolve, reject) {\n      const realFile = vfile(file)\n      // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n      // input of the first transform).\n      const parseTree =\n        /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n          /** @type {unknown} */ (self.parse(realFile))\n        )\n\n      self.run(parseTree, realFile, function (error, tree, file) {\n        if (error || !tree || !file) {\n          return realDone(error)\n        }\n\n        // Assume `TailTree` (the output of the last transform) matches\n        // `CompileTree` (the input of the compiler).\n        const compileTree =\n          /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n            /** @type {unknown} */ (tree)\n          )\n\n        const compileResult = self.stringify(compileTree, file)\n\n        if (looksLikeAValue(compileResult)) {\n          file.value = compileResult\n        } else {\n          file.result = compileResult\n        }\n\n        realDone(error, /** @type {VFileWithOutput<CompileResult>} */ (file))\n      })\n\n      /**\n       * @param {Error | undefined} error\n       * @param {VFileWithOutput<CompileResult> | undefined} [file]\n       * @returns {undefined}\n       */\n      function realDone(error, file) {\n        if (error || !file) {\n          reject(error)\n        } else if (resolve) {\n          resolve(file)\n        } else {\n          assert(done, '`done` is defined if `resolve` is not')\n          done(undefined, file)\n        }\n      }\n    }\n  }\n\n  /**\n   * Process the given file as configured on the processor.\n   *\n   * An error is thrown if asynchronous transforms are configured.\n   *\n   * > **Note**: `processSync` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `processSync` performs the parse, run, and stringify phases.\n   *\n   * @param {Compatible | undefined} [file]\n   *   File (optional); typically `string` or `VFile`; any value accepted as\n   *   `x` in `new VFile(x)`.\n   * @returns {VFileWithOutput<CompileResult>}\n   *   The processed file.\n   *\n   *   The parsed, transformed, and compiled value is available at\n   *   `file.value` (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most\n   *   > compilers return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  processSync(file) {\n    /** @type {boolean} */\n    let complete = false\n    /** @type {VFileWithOutput<CompileResult> | undefined} */\n    let result\n\n    this.freeze()\n    assertParser('processSync', this.parser || this.Parser)\n    assertCompiler('processSync', this.compiler || this.Compiler)\n\n    this.process(file, realDone)\n    assertDone('processSync', 'process', complete)\n    assert(result, 'we either bailed on an error or have a tree')\n\n    return result\n\n    /**\n     * @type {ProcessCallback<VFileWithOutput<CompileResult>>}\n     */\n    function realDone(error, file) {\n      complete = true\n      bail(error)\n      result = file\n    }\n  }\n\n  /**\n   * Run *transformers* on a syntax tree.\n   *\n   * > **Note**: `run` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `run` performs the run phase, not other phases.\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {Compatible | undefined} file\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {Compatible | undefined} [file]\n   * @returns {Promise<TailTree extends undefined ? Node : TailTree>}\n   *\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   *   Tree to transform and inspect.\n   * @param {(\n   *   RunCallback<TailTree extends undefined ? Node : TailTree> |\n   *   Compatible\n   * )} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]\n   *   Callback (optional).\n   * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}\n   *   Nothing if `done` is given.\n   *   Otherwise, a promise rejected with a fatal error or resolved with the\n   *   transformed tree.\n   */\n  run(tree, file, done) {\n    assertNode(tree)\n    this.freeze()\n\n    const transformers = this.transformers\n\n    if (!done && typeof file === 'function') {\n      done = file\n      file = undefined\n    }\n\n    return done ? executor(undefined, done) : new Promise(executor)\n\n    // Note: `void`s needed for TS.\n    /**\n     * @param {(\n     *   ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n     *   undefined\n     * )} resolve\n     * @param {(error: Error) => undefined | void} reject\n     * @returns {undefined}\n     */\n    function executor(resolve, reject) {\n      assert(\n        typeof file !== 'function',\n        '`file` can\u2019t be a `done` anymore, we checked'\n      )\n      const realFile = vfile(file)\n      transformers.run(tree, realFile, realDone)\n\n      /**\n       * @param {Error | undefined} error\n       * @param {Node} outputTree\n       * @param {VFile} file\n       * @returns {undefined}\n       */\n      function realDone(error, outputTree, file) {\n        const resultingTree =\n          /** @type {TailTree extends undefined ? Node : TailTree} */ (\n            outputTree || tree\n          )\n\n        if (error) {\n          reject(error)\n        } else if (resolve) {\n          resolve(resultingTree)\n        } else {\n          assert(done, '`done` is defined if `resolve` is not')\n          done(undefined, resultingTree, file)\n        }\n      }\n    }\n  }\n\n  /**\n   * Run *transformers* on a syntax tree.\n   *\n   * An error is thrown if asynchronous transforms are configured.\n   *\n   * > **Note**: `runSync` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `runSync` performs the run phase, not other phases.\n   *\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   *   Tree to transform and inspect.\n   * @param {Compatible | undefined} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @returns {TailTree extends undefined ? Node : TailTree}\n   *   Transformed tree.\n   */\n  runSync(tree, file) {\n    /** @type {boolean} */\n    let complete = false\n    /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n    let result\n\n    this.run(tree, file, realDone)\n\n    assertDone('runSync', 'run', complete)\n    assert(result, 'we either bailed on an error or have a tree')\n    return result\n\n    /**\n     * @type {RunCallback<TailTree extends undefined ? Node : TailTree>}\n     */\n    function realDone(error, tree) {\n      bail(error)\n      result = tree\n      complete = true\n    }\n  }\n\n  /**\n   * Compile a syntax tree.\n   *\n   * > **Note**: `stringify` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `stringify` performs the stringify phase, not the run phase\n   * > or other phases.\n   *\n   * @param {CompileTree extends undefined ? Node : CompileTree} tree\n   *   Tree to compile.\n   * @param {Compatible | undefined} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @returns {CompileResult extends undefined ? Value : CompileResult}\n   *   Textual representation of the tree (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most compilers\n   *   > return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  stringify(tree, file) {\n    this.freeze()\n    const realFile = vfile(file)\n    const compiler = this.compiler || this.Compiler\n    assertCompiler('stringify', compiler)\n    assertNode(tree)\n\n    return compiler(tree, realFile)\n  }\n\n  /**\n   * Configure the processor to use a plugin, a list of usable values, or a\n   * preset.\n   *\n   * If the processor is already using a plugin, the previous plugin\n   * configuration is changed based on the options that are passed in.\n   * In other words, the plugin is not added a second time.\n   *\n   * > **Note**: `use` cannot be called on *frozen* processors.\n   * > Call the processor first to create a new unfrozen processor.\n   *\n   * @example\n   *   There are many ways to pass plugins to `.use()`.\n   *   This example gives an overview:\n   *\n   *   ```js\n   *   import {unified} from 'unified'\n   *\n   *   unified()\n   *     // Plugin with options:\n   *     .use(pluginA, {x: true, y: true})\n   *     // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n   *     .use(pluginA, {y: false, z: true})\n   *     // Plugins:\n   *     .use([pluginB, pluginC])\n   *     // Two plugins, the second with options:\n   *     .use([pluginD, [pluginE, {}]])\n   *     // Preset with plugins and settings:\n   *     .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n   *     // Settings only:\n   *     .use({settings: {position: false}})\n   *   ```\n   *\n   * @template {Array<unknown>} [Parameters=[]]\n   * @template {Node | string | undefined} [Input=undefined]\n   * @template [Output=Input]\n   *\n   * @overload\n   * @param {Preset | null | undefined} [preset]\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {PluggableList} list\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {Plugin<Parameters, Input, Output>} plugin\n   * @param {...(Parameters | [boolean])} parameters\n   * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}\n   *\n   * @param {PluggableList | Plugin | Preset | null | undefined} value\n   *   Usable value.\n   * @param {...unknown} parameters\n   *   Parameters, when a plugin is given as a usable value.\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   Current processor.\n   */\n  use(value, ...parameters) {\n    const attachers = this.attachers\n    const namespace = this.namespace\n\n    assertUnfrozen('use', this.frozen)\n\n    if (value === null || value === undefined) {\n      // Empty.\n    } else if (typeof value === 'function') {\n      addPlugin(value, parameters)\n    } else if (typeof value === 'object') {\n      if (Array.isArray(value)) {\n        addList(value)\n      } else {\n        addPreset(value)\n      }\n    } else {\n      throw new TypeError('Expected usable value, not `' + value + '`')\n    }\n\n    return this\n\n    /**\n     * @param {Pluggable} value\n     * @returns {undefined}\n     */\n    function add(value) {\n      if (typeof value === 'function') {\n        addPlugin(value, [])\n      } else if (typeof value === 'object') {\n        if (Array.isArray(value)) {\n          const [plugin, ...parameters] =\n            /** @type {PluginTuple<Array<unknown>>} */ (value)\n          addPlugin(plugin, parameters)\n        } else {\n          addPreset(value)\n        }\n      } else {\n        throw new TypeError('Expected usable value, not `' + value + '`')\n      }\n    }\n\n    /**\n     * @param {Preset} result\n     * @returns {undefined}\n     */\n    function addPreset(result) {\n      if (!('plugins' in result) && !('settings' in result)) {\n        throw new Error(\n          'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n        )\n      }\n\n      addList(result.plugins)\n\n      if (result.settings) {\n        namespace.settings = extend(true, namespace.settings, result.settings)\n      }\n    }\n\n    /**\n     * @param {PluggableList | null | undefined} plugins\n     * @returns {undefined}\n     */\n    function addList(plugins) {\n      let index = -1\n\n      if (plugins === null || plugins === undefined) {\n        // Empty.\n      } else if (Array.isArray(plugins)) {\n        while (++index < plugins.length) {\n          const thing = plugins[index]\n          add(thing)\n        }\n      } else {\n        throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n      }\n    }\n\n    /**\n     * @param {Plugin} plugin\n     * @param {Array<unknown>} parameters\n     * @returns {undefined}\n     */\n    function addPlugin(plugin, parameters) {\n      let index = -1\n      let entryIndex = -1\n\n      while (++index < attachers.length) {\n        if (attachers[index][0] === plugin) {\n          entryIndex = index\n          break\n        }\n      }\n\n      if (entryIndex === -1) {\n        attachers.push([plugin, ...parameters])\n      }\n      // Only set if there was at least a `primary` value, otherwise we\u2019d change\n      // `arguments.length`.\n      else if (parameters.length > 0) {\n        let [primary, ...rest] = parameters\n        const currentPrimary = attachers[entryIndex][1]\n        if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n          primary = extend(true, currentPrimary, primary)\n        }\n\n        attachers[entryIndex] = [plugin, primary, ...rest]\n      }\n    }\n  }\n}\n\n// Note: this returns a *callable* instance.\n// That\u2019s why it\u2019s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n *   This example shows how a new processor can be created (from `remark`) and linked\n *   to **stdin**(4) and **stdout**(4).\n *\n *   ```js\n *   import process from 'node:process'\n *   import concatStream from 'concat-stream'\n *   import {remark} from 'remark'\n *\n *   process.stdin.pipe(\n *     concatStream(function (buf) {\n *       process.stdout.write(String(remark().processSync(buf)))\n *     })\n *   )\n *   ```\n *\n * @returns\n *   New *unfrozen* processor (`processor`).\n *\n *   This processor is configured to work the same as its ancestor.\n *   When the descendant processor is configured in the future it does not\n *   affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `parser`')\n  }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `compiler`')\n  }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n  if (frozen) {\n    throw new Error(\n      'Cannot call `' +\n        name +\n        '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n    )\n  }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n  // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n  // type-coverage:ignore-next-line\n  if (!isPlainObj(node) || typeof node.type !== 'string') {\n    throw new TypeError('Expected node, got `' + node + '`')\n    // Fine.\n  }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n  if (!complete) {\n    throw new Error(\n      '`' + name + '` finished async. Use `' + asyncName + '` instead'\n    )\n  }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n  return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'message' in value &&\n      'messages' in value\n  )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n  return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n *   thing.\n * @returns {value is Uint8Array}\n *   Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'byteLength' in value &&\n      'byteOffset' in value\n  )\n}\n", "export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n", "// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n *   Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n *   Ware.\n *\n * @typedef Pipeline\n *   Pipeline.\n * @property {Run} run\n *   Run the pipeline.\n * @property {Use} use\n *   Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n *   Call all middleware.\n *\n *   Calls `done` on completion with either an error or the output of the\n *   last middleware.\n *\n *   > \uD83D\uDC49 **Note**: as the length of input defines whether async functions get a\n *   > `next` function,\n *   > it\u2019s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n *   Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n *   Pipeline.\n */\nexport function trough() {\n  /** @type {Array<Middleware>} */\n  const fns = []\n  /** @type {Pipeline} */\n  const pipeline = {run, use}\n\n  return pipeline\n\n  /** @type {Run} */\n  function run(...values) {\n    let middlewareIndex = -1\n    /** @type {Callback} */\n    const callback = values.pop()\n\n    if (typeof callback !== 'function') {\n      throw new TypeError('Expected function as last argument, not ' + callback)\n    }\n\n    next(null, ...values)\n\n    /**\n     * Run the next `fn`, or we\u2019re done.\n     *\n     * @param {Error | null | undefined} error\n     * @param {Array<any>} output\n     */\n    function next(error, ...output) {\n      const fn = fns[++middlewareIndex]\n      let index = -1\n\n      if (error) {\n        callback(error)\n        return\n      }\n\n      // Copy non-nullish input into values.\n      while (++index < values.length) {\n        if (output[index] === null || output[index] === undefined) {\n          output[index] = values[index]\n        }\n      }\n\n      // Save the newly created `output` for the next call.\n      values = output\n\n      // Next or done.\n      if (fn) {\n        wrap(fn, next)(...output)\n      } else {\n        callback(null, ...output)\n      }\n    }\n  }\n\n  /** @type {Use} */\n  function use(middelware) {\n    if (typeof middelware !== 'function') {\n      throw new TypeError(\n        'Expected `middelware` to be a function, not ' + middelware\n      )\n    }\n\n    fns.push(middelware)\n    return pipeline\n  }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n *   returns a promise that is rejected,\n *   or calls the given `done` function with an error,\n *   `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n *   that value is the main output value\n * * if `middleware` calls `done`,\n *   all non-nullish values except for the first one (the error) overwrite the\n *   output values\n *\n * @param {Middleware} middleware\n *   Function to wrap.\n * @param {Callback} callback\n *   Callback called with the output of `middleware`.\n * @returns {Run}\n *   Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n  /** @type {boolean} */\n  let called\n\n  return wrapped\n\n  /**\n   * Call `middleware`.\n   * @this {any}\n   * @param {Array<any>} parameters\n   * @returns {void}\n   */\n  function wrapped(...parameters) {\n    const fnExpectsCallback = middleware.length > parameters.length\n    /** @type {any} */\n    let result\n\n    if (fnExpectsCallback) {\n      parameters.push(done)\n    }\n\n    try {\n      result = middleware.apply(this, parameters)\n    } catch (error) {\n      const exception = /** @type {Error} */ (error)\n\n      // Well, this is quite the pickle.\n      // `middleware` received a callback and called it synchronously, but that\n      // threw an error.\n      // The only thing left to do is to throw the thing instead.\n      if (fnExpectsCallback && called) {\n        throw exception\n      }\n\n      return done(exception)\n    }\n\n    if (!fnExpectsCallback) {\n      if (result && result.then && typeof result.then === 'function') {\n        result.then(then, done)\n      } else if (result instanceof Error) {\n        done(result)\n      } else {\n        then(result)\n      }\n    }\n  }\n\n  /**\n   * Call `callback`, only once.\n   *\n   * @type {Callback}\n   */\n  function done(error, ...output) {\n    if (!called) {\n      called = true\n      callback(error, ...output)\n    }\n  }\n\n  /**\n   * Call `done` with one value.\n   *\n   * @param {any} [value]\n   */\n  function then(value) {\n    done(null, value)\n  }\n}\n", "/**\n * @import {Node, Point, Position} from 'unist'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n *   Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n *   Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n *   Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n *   Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n *   Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n *   Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n  /**\n   * Create a message for `reason`.\n   *\n   * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Options | null | undefined} [options]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns\n   *   Instance of `VFileMessage`.\n   */\n  // eslint-disable-next-line complexity\n  constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n    super()\n\n    if (typeof optionsOrParentOrPlace === 'string') {\n      origin = optionsOrParentOrPlace\n      optionsOrParentOrPlace = undefined\n    }\n\n    /** @type {string} */\n    let reason = ''\n    /** @type {Options} */\n    let options = {}\n    let legacyCause = false\n\n    if (optionsOrParentOrPlace) {\n      // Point.\n      if (\n        'line' in optionsOrParentOrPlace &&\n        'column' in optionsOrParentOrPlace\n      ) {\n        options = {place: optionsOrParentOrPlace}\n      }\n      // Position.\n      else if (\n        'start' in optionsOrParentOrPlace &&\n        'end' in optionsOrParentOrPlace\n      ) {\n        options = {place: optionsOrParentOrPlace}\n      }\n      // Node.\n      else if ('type' in optionsOrParentOrPlace) {\n        options = {\n          ancestors: [optionsOrParentOrPlace],\n          place: optionsOrParentOrPlace.position\n        }\n      }\n      // Options.\n      else {\n        options = {...optionsOrParentOrPlace}\n      }\n    }\n\n    if (typeof causeOrReason === 'string') {\n      reason = causeOrReason\n    }\n    // Error.\n    else if (!options.cause && causeOrReason) {\n      legacyCause = true\n      reason = causeOrReason.message\n      options.cause = causeOrReason\n    }\n\n    if (!options.ruleId && !options.source && typeof origin === 'string') {\n      const index = origin.indexOf(':')\n\n      if (index === -1) {\n        options.ruleId = origin\n      } else {\n        options.source = origin.slice(0, index)\n        options.ruleId = origin.slice(index + 1)\n      }\n    }\n\n    if (!options.place && options.ancestors && options.ancestors) {\n      const parent = options.ancestors[options.ancestors.length - 1]\n\n      if (parent) {\n        options.place = parent.position\n      }\n    }\n\n    const start =\n      options.place && 'start' in options.place\n        ? options.place.start\n        : options.place\n\n    /**\n     * Stack of ancestor nodes surrounding the message.\n     *\n     * @type {Array<Node> | undefined}\n     */\n    this.ancestors = options.ancestors || undefined\n\n    /**\n     * Original error cause of the message.\n     *\n     * @type {Error | undefined}\n     */\n    this.cause = options.cause || undefined\n\n    /**\n     * Starting column of message.\n     *\n     * @type {number | undefined}\n     */\n    this.column = start ? start.column : undefined\n\n    /**\n     * State of problem.\n     *\n     * * `true` \u2014 error, file not usable\n     * * `false` \u2014 warning, change may be needed\n     * * `undefined` \u2014 change likely not needed\n     *\n     * @type {boolean | null | undefined}\n     */\n    this.fatal = undefined\n\n    /**\n     * Path of a file (used throughout the `VFile` ecosystem).\n     *\n     * @type {string | undefined}\n     */\n    this.file = ''\n\n    // Field from `Error`.\n    /**\n     * Reason for message.\n     *\n     * @type {string}\n     */\n    this.message = reason\n\n    /**\n     * Starting line of error.\n     *\n     * @type {number | undefined}\n     */\n    this.line = start ? start.line : undefined\n\n    // Field from `Error`.\n    /**\n     * Serialized positional info of message.\n     *\n     * On normal errors, this would be something like `ParseError`, buit in\n     * `VFile` messages we use this space to show where an error happened.\n     */\n    this.name = stringifyPosition(options.place) || '1:1'\n\n    /**\n     * Place of message.\n     *\n     * @type {Point | Position | undefined}\n     */\n    this.place = options.place || undefined\n\n    /**\n     * Reason for message, should use markdown.\n     *\n     * @type {string}\n     */\n    this.reason = this.message\n\n    /**\n     * Category of message (example: `'my-rule'`).\n     *\n     * @type {string | undefined}\n     */\n    this.ruleId = options.ruleId || undefined\n\n    /**\n     * Namespace of message (example: `'my-package'`).\n     *\n     * @type {string | undefined}\n     */\n    this.source = options.source || undefined\n\n    // Field from `Error`.\n    /**\n     * Stack of message.\n     *\n     * This is used by normal errors to show where something happened in\n     * programming code, irrelevant for `VFile` messages,\n     *\n     * @type {string}\n     */\n    this.stack =\n      legacyCause && options.cause && typeof options.cause.stack === 'string'\n        ? options.cause.stack\n        : ''\n\n    // The following fields are \u201Cwell known\u201D.\n    // Not standard.\n    // Feel free to add other non-standard fields to your messages.\n\n    /**\n     * Specify the source value that\u2019s being reported, which is deemed\n     * incorrect.\n     *\n     * @type {string | undefined}\n     */\n    this.actual = undefined\n\n    /**\n     * Suggest acceptable values that can be used instead of `actual`.\n     *\n     * @type {Array<string> | undefined}\n     */\n    this.expected = undefined\n\n    /**\n     * Long form description of the message (you should use markdown).\n     *\n     * @type {string | undefined}\n     */\n    this.note = undefined\n\n    /**\n     * Link to docs for the message.\n     *\n     * > \uD83D\uDC49 **Note**: this must be an absolute URL that can be passed as `x`\n     * > to `new URL(x)`.\n     *\n     * @type {string | undefined}\n     */\n    this.url = undefined\n  }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n", "export {default as minpath} from 'node:path'\n", "export {default as minproc} from 'node:process'\n", "export {fileURLToPath as urlToPath} from 'node:url'\nexport {isUrl} from './minurl.shared.js'\n", "/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n *   File path or URL.\n * @returns {fileUrlOrPath is URL}\n *   Whether it\u2019s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nexport function isUrl(fileUrlOrPath) {\n  return Boolean(\n    fileUrlOrPath !== null &&\n      typeof fileUrlOrPath === 'object' &&\n      'href' in fileUrlOrPath &&\n      fileUrlOrPath.href &&\n      'protocol' in fileUrlOrPath &&\n      fileUrlOrPath.protocol &&\n      // @ts-expect-error: indexing is fine.\n      fileUrlOrPath.auth === undefined\n  )\n}\n", "/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n  'history',\n  'path',\n  'basename',\n  'stem',\n  'extname',\n  'dirname'\n])\n\nexport class VFile {\n  /**\n   * Create a new virtual file.\n   *\n   * `options` is treated as:\n   *\n   * *   `string` or `Uint8Array` \u2014 `{value: options}`\n   * *   `URL` \u2014 `{path: options}`\n   * *   `VFile` \u2014 shallow copies its data over to the new file\n   * *   `object` \u2014 all fields are shallow copied over to the new file\n   *\n   * Path related fields are set in the following order (least specific to\n   * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n   * `dirname`.\n   *\n   * You cannot set `dirname` or `extname` without setting either `history`,\n   * `path`, `basename`, or `stem` too.\n   *\n   * @param {Compatible | null | undefined} [value]\n   *   File value.\n   * @returns\n   *   New instance.\n   */\n  constructor(value) {\n    /** @type {Options | VFile} */\n    let options\n\n    if (!value) {\n      options = {}\n    } else if (isUrl(value)) {\n      options = {path: value}\n    } else if (typeof value === 'string' || isUint8Array(value)) {\n      options = {value}\n    } else {\n      options = value\n    }\n\n    /* eslint-disable no-unused-expressions */\n\n    /**\n     * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n     *\n     * @type {string}\n     */\n    // Prevent calling `cwd` (which could be expensive) if it\u2019s not needed;\n    // the empty string will be overridden in the next block.\n    this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n    /**\n     * Place to store custom info (default: `{}`).\n     *\n     * It\u2019s OK to store custom data directly on the file but moving it to\n     * `data` is recommended.\n     *\n     * @type {Data}\n     */\n    this.data = {}\n\n    /**\n     * List of file paths the file moved between.\n     *\n     * The first is the original path and the last is the current path.\n     *\n     * @type {Array<string>}\n     */\n    this.history = []\n\n    /**\n     * List of messages associated with the file.\n     *\n     * @type {Array<VFileMessage>}\n     */\n    this.messages = []\n\n    /**\n     * Raw value.\n     *\n     * @type {Value}\n     */\n    this.value\n\n    // The below are non-standard, they are \u201Cwell-known\u201D.\n    // As in, used in several tools.\n    /**\n     * Source map.\n     *\n     * This type is equivalent to the `RawSourceMap` type from the `source-map`\n     * module.\n     *\n     * @type {Map | null | undefined}\n     */\n    this.map\n\n    /**\n     * Custom, non-string, compiled, representation.\n     *\n     * This is used by unified to store non-string results.\n     * One example is when turning markdown into React nodes.\n     *\n     * @type {unknown}\n     */\n    this.result\n\n    /**\n     * Whether a file was saved to disk.\n     *\n     * This is used by vfile reporters.\n     *\n     * @type {boolean}\n     */\n    this.stored\n    /* eslint-enable no-unused-expressions */\n\n    // Set path related properties in the correct order.\n    let index = -1\n\n    while (++index < order.length) {\n      const field = order[index]\n\n      // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n      // `vfile`s too.\n      if (\n        field in options &&\n        options[field] !== undefined &&\n        options[field] !== null\n      ) {\n        // @ts-expect-error: TS doesn\u2019t understand basic reality.\n        this[field] = field === 'history' ? [...options[field]] : options[field]\n      }\n    }\n\n    /** @type {string} */\n    let field\n\n    // Set non-path related properties.\n    for (field in options) {\n      // @ts-expect-error: fine to set other things.\n      if (!order.includes(field)) {\n        // @ts-expect-error: fine to set other things.\n        this[field] = options[field]\n      }\n    }\n  }\n\n  /**\n   * Get the basename (including extname) (example: `'index.min.js'`).\n   *\n   * @returns {string | undefined}\n   *   Basename.\n   */\n  get basename() {\n    return typeof this.path === 'string'\n      ? minpath.basename(this.path)\n      : undefined\n  }\n\n  /**\n   * Set basename (including extname) (`'index.min.js'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   *\n   * @param {string} basename\n   *   Basename.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set basename(basename) {\n    assertNonEmpty(basename, 'basename')\n    assertPart(basename, 'basename')\n    this.path = minpath.join(this.dirname || '', basename)\n  }\n\n  /**\n   * Get the parent path (example: `'~'`).\n   *\n   * @returns {string | undefined}\n   *   Dirname.\n   */\n  get dirname() {\n    return typeof this.path === 'string'\n      ? minpath.dirname(this.path)\n      : undefined\n  }\n\n  /**\n   * Set the parent path (example: `'~'`).\n   *\n   * Cannot be set if there\u2019s no `path` yet.\n   *\n   * @param {string | undefined} dirname\n   *   Dirname.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set dirname(dirname) {\n    assertPath(this.basename, 'dirname')\n    this.path = minpath.join(dirname || '', this.basename)\n  }\n\n  /**\n   * Get the extname (including dot) (example: `'.js'`).\n   *\n   * @returns {string | undefined}\n   *   Extname.\n   */\n  get extname() {\n    return typeof this.path === 'string'\n      ? minpath.extname(this.path)\n      : undefined\n  }\n\n  /**\n   * Set the extname (including dot) (example: `'.js'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be set if there\u2019s no `path` yet.\n   *\n   * @param {string | undefined} extname\n   *   Extname.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set extname(extname) {\n    assertPart(extname, 'extname')\n    assertPath(this.dirname, 'extname')\n\n    if (extname) {\n      if (extname.codePointAt(0) !== 46 /* `.` */) {\n        throw new Error('`extname` must start with `.`')\n      }\n\n      if (extname.includes('.', 1)) {\n        throw new Error('`extname` cannot contain multiple dots')\n      }\n    }\n\n    this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n  }\n\n  /**\n   * Get the full path (example: `'~/index.min.js'`).\n   *\n   * @returns {string}\n   *   Path.\n   */\n  get path() {\n    return this.history[this.history.length - 1]\n  }\n\n  /**\n   * Set the full path (example: `'~/index.min.js'`).\n   *\n   * Cannot be nullified.\n   * You can set a file URL (a `URL` object with a `file:` protocol) which will\n   * be turned into a path with `url.fileURLToPath`.\n   *\n   * @param {URL | string} path\n   *   Path.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set path(path) {\n    if (isUrl(path)) {\n      path = urlToPath(path)\n    }\n\n    assertNonEmpty(path, 'path')\n\n    if (this.path !== path) {\n      this.history.push(path)\n    }\n  }\n\n  /**\n   * Get the stem (basename w/o extname) (example: `'index.min'`).\n   *\n   * @returns {string | undefined}\n   *   Stem.\n   */\n  get stem() {\n    return typeof this.path === 'string'\n      ? minpath.basename(this.path, this.extname)\n      : undefined\n  }\n\n  /**\n   * Set the stem (basename w/o extname) (example: `'index.min'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   *\n   * @param {string} stem\n   *   Stem.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set stem(stem) {\n    assertNonEmpty(stem, 'stem')\n    assertPart(stem, 'stem')\n    this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n  }\n\n  // Normal prototypal methods.\n  /**\n   * Create a fatal message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `true` (error; file not usable)\n   * and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {never}\n   *   Never.\n   * @throws {VFileMessage}\n   *   Message.\n   */\n  fail(causeOrReason, optionsOrParentOrPlace, origin) {\n    // @ts-expect-error: the overloads are fine.\n    const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n    message.fatal = true\n\n    throw message\n  }\n\n  /**\n   * Create an info message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `undefined` (info; change\n   * likely not needed) and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  info(causeOrReason, optionsOrParentOrPlace, origin) {\n    // @ts-expect-error: the overloads are fine.\n    const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n    message.fatal = undefined\n\n    return message\n  }\n\n  /**\n   * Create a message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `false` (warning; change may be\n   * needed) and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  message(causeOrReason, optionsOrParentOrPlace, origin) {\n    const message = new VFileMessage(\n      // @ts-expect-error: the overloads are fine.\n      causeOrReason,\n      optionsOrParentOrPlace,\n      origin\n    )\n\n    if (this.path) {\n      message.name = this.path + ':' + message.name\n      message.file = this.path\n    }\n\n    message.fatal = false\n\n    this.messages.push(message)\n\n    return message\n  }\n\n  /**\n   * Serialize the file.\n   *\n   * > **Note**: which encodings are supported depends on the engine.\n   * > For info on Node.js, see:\n   * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n   *\n   * @param {string | null | undefined} [encoding='utf8']\n   *   Character encoding to understand `value` as when it\u2019s a `Uint8Array`\n   *   (default: `'utf-8'`).\n   * @returns {string}\n   *   Serialized file.\n   */\n  toString(encoding) {\n    if (this.value === undefined) {\n      return ''\n    }\n\n    if (typeof this.value === 'string') {\n      return this.value\n    }\n\n    const decoder = new TextDecoder(encoding || undefined)\n    return decoder.decode(this.value)\n  }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n *   File path part.\n * @param {string} name\n *   Part name.\n * @returns {undefined}\n *   Nothing.\n */\nfunction assertPart(part, name) {\n  if (part && part.includes(minpath.sep)) {\n    throw new Error(\n      '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n    )\n  }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n *   Thing.\n * @param {string} name\n *   Part name.\n * @returns {asserts part is string}\n *   Nothing.\n */\nfunction assertNonEmpty(part, name) {\n  if (!part) {\n    throw new Error('`' + name + '` cannot be empty')\n  }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n *   Path.\n * @param {string} name\n *   Dependency name.\n * @returns {asserts path is string}\n *   Nothing.\n */\nfunction assertPath(path, name) {\n  if (!path) {\n    throw new Error('Setting `' + name + '` requires `path` to be set too')\n  }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n *   thing.\n * @returns {value is Uint8Array}\n *   Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'byteLength' in value &&\n      'byteOffset' in value\n  )\n}\n", "export const CallableInstance =\n  /**\n   * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n   */\n  (\n    /** @type {unknown} */\n    (\n      /**\n       * @this {Function}\n       * @param {string | symbol} property\n       * @returns {(...parameters: Array<unknown>) => unknown}\n       */\n      function (property) {\n        const self = this\n        const constr = self.constructor\n        const proto = /** @type {Record<string | symbol, Function>} */ (\n          // Prototypes do exist.\n          // type-coverage:ignore-next-line\n          constr.prototype\n        )\n        const value = proto[property]\n        /** @type {(...parameters: Array<unknown>) => unknown} */\n        const apply = function () {\n          return value.apply(apply, arguments)\n        }\n\n        Object.setPrototypeOf(apply, proto)\n\n        // Not needed for us in `unified`: we only call this on the `copy`\n        // function,\n        // and we don't need to add its fields (`length`, `name`)\n        // over.\n        // See also: GH-246.\n        // const names = Object.getOwnPropertyNames(value)\n        //\n        // for (const p of names) {\n        //   const descriptor = Object.getOwnPropertyDescriptor(value, p)\n        //   if (descriptor) Object.defineProperty(apply, p, descriptor)\n        // }\n\n        return apply\n      }\n    )\n  )\n", "/**\n * @packageDocumentation\n * Markdown-aware retext integration for comment-only ESLint rules.\n */\n\nimport type { TSESLint, TSESTree } from \"@typescript-eslint/utils\";\nimport type { ArrayElement, UnknownRecord } from \"type-fest\";\n\nimport remarkFrontmatter from \"remark-frontmatter\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkParse from \"remark-parse\";\nimport retextEnglish from \"retext-english\";\nimport {\n    arrayIncludes,\n    arrayJoin,\n    isDefined,\n    isInteger,\n    keyIn,\n    setHas,\n} from \"ts-extras\";\nimport { unified } from \"unified\";\nimport { VFile } from \"vfile\";\n\nimport { createCommentValueSourceLocation } from \"./comment-prose.js\";\nimport { resolveDefaultExport } from \"./default-export.js\";\n\n/** Normalized retext message with stable source offsets. */\nexport type RetextLintMessage = Readonly<{\n    actual: null | string;\n    endOffset: number;\n    expected: readonly string[];\n    note: null | string;\n    reason: string;\n    ruleId: null | string;\n    source: RetextMessageSource;\n    startOffset: number;\n}>;\n\n/** Optional rule-id filter shared by rule wrappers. */\nexport type RetextMessageFilterOptions = Readonly<{\n    allow?: readonly string[];\n    deny?: readonly string[];\n}>;\n\n/** Supported message sources emitted by retext rules used in this plugin. */\nexport type RetextMessageSource =\n    | \"retext-equality\"\n    | \"retext-profanities\"\n    | \"retext-readability\"\n    | \"retext-spell\";\n\n/** Runtime message sources emitted by supported retext plugins. */\nconst retextMessageSources = new Set<unknown>([\n    \"retext-equality\",\n    \"retext-profanities\",\n    \"retext-readability\",\n    \"retext-spell\",\n]);\n\n/** Runtime node shape needed to project markdown text ranges. */\ntype MarkdownNode = Readonly<{\n    children?: readonly MarkdownNode[];\n    position?: Readonly<{\n        end?: Readonly<{\n            offset?: number;\n        }>;\n        start?: Readonly<{\n            offset?: number;\n        }>;\n    }>;\n    type: string;\n}>;\n\n/** Stable start/end offsets for one normalized message. */\ntype MessageOffsets = Readonly<{\n    endOffset: number;\n    startOffset: number;\n}>;\n\n/** Position-like runtime shape with stable start and end offsets. */\ntype MessagePosition = Readonly<{\n    end: Readonly<{\n        offset?: number;\n    }>;\n    start: Readonly<{\n        offset?: number;\n    }>;\n}>;\n\n/** Runtime message type emitted by retext processors. */\ntype RetextRuntimeMessage = ArrayElement<VFile[\"messages\"]>;\n\n/** Lazily create the markdown parser used to blank markdown-only syntax. */\nconst createMarkdownProjectionProcessor = () =>\n    unified()\n        .use(resolveDefaultExport(remarkParse))\n        .use(resolveDefaultExport(remarkGfm))\n        .use(resolveDefaultExport(remarkFrontmatter), [\"yaml\", \"toml\"]);\n\n/** Narrow processor surface exposed to rule-specific configuration callbacks. */\ntype RetextConfigurableProcessor = Readonly<{\n    use: (plugin: unknown, options?: unknown) => RetextConfigurableProcessor;\n}>;\n\n/** Check whether an unknown value is a supported retext message source. */\nconst isRetextMessageSource = (value: unknown): value is RetextMessageSource =>\n    setHas(retextMessageSources, value);\n\n/** Check whether an unknown value is a non-negative integer offset. */\nconst isNonNegativeInteger = (value: unknown): value is number =>\n    typeof value === \"number\" && isInteger(value) && value >= 0;\n\n/** Check whether a runtime place value is a full start/end position object. */\nconst isMessagePosition = (value: unknown): value is MessagePosition => {\n    if (typeof value !== \"object\" || value === null) {\n        return false;\n    }\n\n    const objectValue = value as UnknownRecord;\n\n    return keyIn(objectValue, \"end\") && keyIn(objectValue, \"start\");\n};\n\n/** Check whether one message survives the configured allow/deny filter. */\nconst shouldKeepMessage = (\n    message: Readonly<Pick<RetextLintMessage, \"ruleId\">>,\n    filter: Readonly<RetextMessageFilterOptions>\n): boolean => {\n    if (isDefined(filter.deny)) {\n        return (\n            message.ruleId !== null &&\n            arrayIncludes(filter.deny, message.ruleId)\n        );\n    }\n\n    if (isDefined(filter.allow) && message.ruleId !== null) {\n        return !arrayIncludes(filter.allow, message.ruleId);\n    }\n\n    return true;\n};\n\n/** Build a blank markdown projection while preserving line endings and tabs. */\nconst createBlankProjection = (source: string): string[] =>\n    Array.from({ length: source.length }, (_, index) => {\n        const character = source[index] ?? \" \";\n\n        return arrayIncludes(\n            [\n                \"\\n\",\n                \"\\r\",\n                \"\\t\",\n            ],\n            character\n        )\n            ? character\n            : \" \";\n    });\n\n/** Project markdown into a same-length plain-text string for retext analysis. */\nexport const projectMarkdownCommentText = (source: string): string => {\n    const markdownTree = createMarkdownProjectionProcessor().parse(\n        new VFile({ value: source })\n    );\n    const typedMarkdownTree = markdownTree as MarkdownNode;\n    const projection = createBlankProjection(source);\n\n    const visitNode = (node: Readonly<MarkdownNode>): void => {\n        if (node.type === \"text\") {\n            const startOffset = node.position?.start?.offset;\n            const endOffset = node.position?.end?.offset;\n\n            if (\n                isNonNegativeInteger(startOffset) &&\n                isNonNegativeInteger(endOffset) &&\n                endOffset > startOffset\n            ) {\n                for (let index = startOffset; index < endOffset; index += 1) {\n                    projection[index] = source[index] ?? \" \";\n                }\n            }\n        }\n\n        const children = node.children ?? [];\n\n        for (const child of children) {\n            visitNode(child);\n        }\n    };\n\n    visitNode(typedMarkdownTree);\n\n    return arrayJoin(projection, \"\");\n};\n\n/** Extract stable start/end offsets from one runtime retext message. */\nconst getMessageOffsets = (\n    message: Readonly<RetextRuntimeMessage>\n): MessageOffsets | null => {\n    const place = message.place;\n\n    if (!isMessagePosition(place)) {\n        return null;\n    }\n\n    const startOffset = place.start.offset;\n    const endOffset = place.end.offset;\n\n    if (\n        !isNonNegativeInteger(startOffset) ||\n        !isNonNegativeInteger(endOffset) ||\n        endOffset <= startOffset\n    ) {\n        return null;\n    }\n\n    return {\n        endOffset,\n        startOffset,\n    };\n};\n\n/** Normalize one runtime retext message into a stable plugin shape. */\nconst normalizeRetextMessage = (\n    message: Readonly<RetextRuntimeMessage>\n): null | RetextLintMessage => {\n    if (!isRetextMessageSource(message.source)) {\n        return null;\n    }\n\n    const offsets = getMessageOffsets(message);\n\n    if (offsets === null) {\n        return null;\n    }\n\n    return {\n        actual: message.actual ?? null,\n        endOffset: offsets.endOffset,\n        expected: [...(message.expected ?? [])],\n        note: message.note ?? null,\n        reason: message.reason,\n        ruleId: message.ruleId ?? null,\n        source: message.source,\n        startOffset: offsets.startOffset,\n    };\n};\n\n/** Run one markdown-aware retext analysis pass against projected comment text. */\nexport const lintMarkdownWithRetext = (\n    text: string,\n    configureProcessor: (processor: RetextConfigurableProcessor) => void,\n    filter: Readonly<RetextMessageFilterOptions> = {}\n): readonly RetextLintMessage[] => {\n    const projectedText = projectMarkdownCommentText(text);\n    const file = new VFile({ path: \"comment.md\", value: projectedText });\n    const processor = unified().use(resolveDefaultExport(retextEnglish));\n    const configurableProcessor: RetextConfigurableProcessor = {\n        use(plugin, options) {\n            const typedPlugin = plugin as Parameters<typeof processor.use>[0];\n\n            if (isDefined(options)) {\n                const typedOptions = options;\n                processor.use(typedPlugin, typedOptions);\n            } else {\n                processor.use(typedPlugin);\n            }\n\n            return configurableProcessor;\n        },\n    };\n\n    configureProcessor(configurableProcessor);\n\n    const tree = processor.parse(file);\n\n    // eslint-disable-next-line n/no-sync -- ESLint rule execution is synchronous and the retext pipeline must finish before returning reports.\n    processor.runSync(tree, file);\n\n    const results: RetextLintMessage[] = [];\n\n    for (const message of file.messages) {\n        const normalizedMessage = normalizeRetextMessage(message);\n\n        if (\n            normalizedMessage === null ||\n            !shouldKeepMessage(normalizedMessage, filter)\n        ) {\n            continue;\n        }\n\n        results.push(normalizedMessage);\n    }\n\n    return results;\n};\n\n/** Convert normalized retext message offsets into an ESLint source location. */\nexport const createRetextMessageSourceLocation = (\n    comment: Readonly<TSESTree.Comment>,\n    sourceCode: Readonly<TSESLint.SourceCode>,\n    message: Readonly<Pick<RetextLintMessage, \"endOffset\" | \"startOffset\">>\n): TSESLint.AST.SourceLocation =>\n    createCommentValueSourceLocation(\n        comment,\n        sourceCode,\n        message.startOffset,\n        message.endOffset\n    );\n", "/**\n * @packageDocumentation\n * ESLint rule that checks source comments for exclusionary or inconsiderate language.\n */\n\nimport type { TSESLint } from \"@typescript-eslint/utils\";\n\nimport retextEquality from \"retext-equality\";\nimport { isDefined } from \"ts-extras\";\n\nimport {\n    createCommentLintText,\n    isIgnoredCommentText,\n} from \"../_internal/comment-prose.js\";\nimport { resolveDefaultExport } from \"../_internal/default-export.js\";\nimport {\n    createRetextMessageSourceLocation,\n    lintMarkdownWithRetext,\n} from \"../_internal/retext.js\";\n\n/** Configurable rule options. */\ntype InclusiveLanguageCommentsOptions = Readonly<{\n    allow?: readonly string[];\n    deny?: readonly string[];\n    noBinary?: boolean;\n}>;\n\n/** Message ids emitted by this rule. */\ntype MessageIds = \"problem\";\n\n/** Configurable rule options tuple. */\ntype Options = [InclusiveLanguageCommentsOptions?];\n\n/** Extra docs metadata carried by this plugin's rules. */\ntype PluginDocs = Readonly<{\n    recommended: boolean;\n}>;\n\n/** Shared schema for retext rule-id lists. */\nconst retextRuleListSchema = {\n    items: {\n        minLength: 1,\n        type: \"string\",\n    },\n    type: \"array\",\n    uniqueItems: true,\n} as const;\n\n/** Default options for inclusive-language-comments. */\nconst defaultInclusiveLanguageCommentsOptions: InclusiveLanguageCommentsOptions =\n    {};\n\n/** Create the runtime inclusive-language-comments rule. */\nconst inclusiveLanguageCommentsRule: TSESLint.RuleModule<\n    MessageIds,\n    Options,\n    PluginDocs\n> = {\n    create(context) {\n        const sourceCode = context.sourceCode;\n        const [options = defaultInclusiveLanguageCommentsOptions] =\n            context.options;\n        const ruleFilter = {\n            ...(isDefined(options.allow) && { allow: options.allow }),\n            ...(isDefined(options.deny) && { deny: options.deny }),\n        };\n\n        return {\n            Program() {\n                for (const comment of sourceCode.getAllComments()) {\n                    const lintText = createCommentLintText(comment);\n                    const trimmedLintText = lintText.trim();\n\n                    if (isIgnoredCommentText(trimmedLintText)) {\n                        continue;\n                    }\n\n                    const messages = lintMarkdownWithRetext(\n                        lintText,\n                        (processor) => {\n                            processor.use(\n                                resolveDefaultExport(retextEquality),\n                                {\n                                    binary: options.noBinary !== true,\n                                }\n                            );\n                        },\n                        ruleFilter\n                    );\n\n                    for (const message of messages) {\n                        if (message.source === \"retext-equality\") {\n                            context.report({\n                                data: {\n                                    reason: message.reason.trim(),\n                                },\n                                loc: createRetextMessageSourceLocation(\n                                    comment,\n                                    sourceCode,\n                                    message\n                                ),\n                                messageId: \"problem\",\n                            });\n                        }\n                    }\n                }\n            },\n        };\n    },\n    meta: {\n        defaultOptions: [defaultInclusiveLanguageCommentsOptions],\n        deprecated: false,\n        docs: {\n            description:\n                \"enforce inclusive, considerate language in source comments with retext-equality.\",\n            frozen: false,\n            recommended: true,\n            url: \"https://nick2bad4u.github.io/eslint-plugin-write-good-comments-2/docs/rules/inclusive-language-comments\",\n        },\n        messages: {\n            problem: \"{{reason}}\",\n        },\n        schema: [\n            {\n                additionalProperties: false,\n                allOf: [\n                    {\n                        not: {\n                            required: [\"allow\", \"deny\"],\n                            type: \"object\",\n                        },\n                        type: \"object\",\n                    },\n                ],\n                description:\n                    \"Optional retext-equality filters and binary-language handling for comment analysis.\",\n                properties: {\n                    allow: {\n                        ...retextRuleListSchema,\n                        description:\n                            \"Retext equality rule ids to suppress for this rule.\",\n                    },\n                    deny: {\n                        ...retextRuleListSchema,\n                        description:\n                            \"Retext equality rule ids to report exclusively for this rule.\",\n                    },\n                    noBinary: {\n                        description:\n                            \"When true, binary pairings such as 'his or her' are also reported.\",\n                        type: \"boolean\",\n                    },\n                },\n                type: \"object\",\n            },\n        ],\n        type: \"suggestion\",\n    },\n};\n\nexport default inclusiveLanguageCommentsRule;\n", "/**\n * @typedef {import('./create-plugin.js').Options} Options\n */\n\nimport {cuss} from 'cuss'\nimport pluralize from 'pluralize'\nimport {createPlugin} from './create-plugin.js'\n\nconst retextProfanitiesEn = createPlugin({\n  cuss,\n  // Misclassified singulars and plurals.\n  ignorePluralize: [\n    'children',\n    'dy', // Singular of `dies`.\n    'pro', // Singular of `pros`.\n    'remain', // Singular of `remains`\n    'so', // Singular of `sos`.\n    'dice', // Plural of `die`.\n    'fus' // Plural of `fu`.\n  ],\n  lang: 'en',\n  pluralize,\n  // List of values not to normalize.\n  regular: ['hell', 'whore']\n})\n\nexport default retextProfanitiesEn\n", "/**\n * Map of English profane words to a rating of sureness.\n *\n * @type {Record<string, number>}\n */\nexport const cuss = {\n  abbo: 1,\n  abeed: 2,\n  abid: 1,\n  abo: 1,\n  abortion: 1,\n  abuse: 1,\n  addict: 1,\n  addicts: 1,\n  adult: 0,\n  africa: 0,\n  african: 0,\n  africoon: 2,\n  alla: 1,\n  allah: 0,\n  'alligator bait': 2,\n  alligatorbait: 2,\n  amateur: 0,\n  american: 0,\n  anal: 1,\n  analannie: 2,\n  analsex: 1,\n  angie: 0,\n  angry: 0,\n  anus: 1,\n  arab: 0,\n  arabs: 0,\n  arabush: 2,\n  arabushs: 2,\n  areola: 1,\n  argie: 2,\n  armo: 2,\n  armos: 2,\n  aroused: 0,\n  arse: 2,\n  'arse bandit': 2,\n  arsehole: 2,\n  asian: 0,\n  ass: 2,\n  assassin: 0,\n  assassinate: 0,\n  assassination: 0,\n  assault: 0,\n  assbagger: 2,\n  assblaster: 2,\n  assclown: 2,\n  asscowboy: 2,\n  asses: 2,\n  assfuck: 2,\n  assfucker: 2,\n  asshat: 2,\n  asshole: 2,\n  assholes: 2,\n  asshore: 2,\n  assjockey: 2,\n  asskiss: 2,\n  asskisser: 2,\n  assklown: 2,\n  asslick: 2,\n  asslicker: 2,\n  asslover: 2,\n  assman: 2,\n  assmonkey: 2,\n  assmunch: 2,\n  assmuncher: 2,\n  asspacker: 2,\n  asspirate: 2,\n  asspuppies: 2,\n  assranger: 2,\n  asswhore: 2,\n  asswipe: 2,\n  athletesfoot: 1,\n  attack: 0,\n  australian: 0,\n  babe: 1,\n  babies: 0,\n  backdoor: 0,\n  backdoorman: 2,\n  backseat: 0,\n  badfuck: 2,\n  balllicker: 2,\n  balls: 1,\n  ballsack: 1,\n  banana: 0,\n  bananas: 0,\n  banging: 1,\n  baptist: 0,\n  barelylegal: 2,\n  barf: 2,\n  barface: 2,\n  barfface: 2,\n  bast: 0,\n  bastard: 1,\n  'batty boy': 2,\n  bazongas: 2,\n  bazooms: 2,\n  beanbag: 2,\n  beanbags: 2,\n  beaner: 2,\n  beaners: 2,\n  beaney: 2,\n  beaneys: 2,\n  beast: 0,\n  beastality: 1,\n  beastial: 1,\n  beastiality: 1,\n  beatoff: 2,\n  beatyourmeat: 2,\n  beaver: 0,\n  bender: 0,\n  bent: 0,\n  bestial: 1,\n  bestiality: 1,\n  bi: 0,\n  biatch: 2,\n  bible: 0,\n  bicurious: 1,\n  bigass: 2,\n  bigbastard: 2,\n  bigbutt: 2,\n  bigger: 0,\n  bisexual: 0,\n  bitch: 1,\n  bitcher: 2,\n  bitches: 1,\n  bitchez: 2,\n  bitchin: 2,\n  bitching: 2,\n  bitchslap: 2,\n  bitchy: 2,\n  biteme: 2,\n  black: 0,\n  blackman: 1,\n  blackout: 0,\n  blacks: 1,\n  blind: 0,\n  blow: 0,\n  blowjob: 2,\n  bluegum: 2,\n  bluegums: 2,\n  boang: 2,\n  boche: 2,\n  boches: 2,\n  bogan: 2,\n  bohunk: 2,\n  bollick: 2,\n  bollock: 2,\n  bollocks: 2,\n  bomb: 0,\n  bombers: 0,\n  bombing: 0,\n  bombs: 0,\n  bomd: 0,\n  bondage: 1,\n  boner: 2,\n  bong: 2,\n  boob: 1,\n  boobies: 2,\n  boobs: 1,\n  booby: 2,\n  boody: 2,\n  boom: 0,\n  boong: 2,\n  boonga: 2,\n  boongas: 2,\n  boongs: 2,\n  boonie: 2,\n  boonies: 2,\n  bootlip: 2,\n  bootlips: 2,\n  booty: 2,\n  bootycall: 2,\n  bosch: 0,\n  bosche: 2,\n  bosches: 2,\n  boschs: 2,\n  'bounty bar': 1,\n  'bounty bars': 1,\n  bountybar: 1,\n  bra: 0,\n  brea5t: 2,\n  breast: 0,\n  breastjob: 2,\n  breastlover: 2,\n  breastman: 2,\n  brothel: 1,\n  brownie: 0,\n  brownies: 0,\n  buddhahead: 2,\n  buddhaheads: 2,\n  buffies: 2,\n  buffy: 0,\n  bufter: 2,\n  bufty: 2,\n  bugger: 2,\n  buggered: 2,\n  buggery: 2,\n  bule: 2,\n  bules: 2,\n  bullcrap: 2,\n  bulldike: 2,\n  bulldyke: 2,\n  bullshit: 2,\n  'bum boy': 2,\n  'bum chum': 2,\n  'bum robber': 2,\n  bumblefuck: 2,\n  bumfuck: 2,\n  bung: 2,\n  bunga: 2,\n  bungas: 2,\n  bunghole: 2,\n  buried: 0,\n  burn: 0,\n  'burr head': 2,\n  'burr heads': 2,\n  burrhead: 2,\n  burrheads: 2,\n  butchbabes: 2,\n  butchdike: 2,\n  butchdyke: 2,\n  butt: 0,\n  buttbang: 2,\n  buttface: 2,\n  buttfuck: 2,\n  buttfucker: 2,\n  buttfuckers: 2,\n  butthead: 2,\n  buttman: 2,\n  buttmunch: 2,\n  buttmuncher: 2,\n  buttpirate: 2,\n  buttplug: 1,\n  buttstain: 2,\n  byatch: 2,\n  cacker: 2,\n  'camel jockey': 2,\n  'camel jockeys': 2,\n  cameljockey: 2,\n  cameltoe: 2,\n  canadian: 0,\n  cancer: 0,\n  carpetmuncher: 2,\n  carruth: 2,\n  catholic: 0,\n  catholics: 0,\n  cemetery: 0,\n  chav: 2,\n  'cheese eating surrender monkey': 2,\n  'cheese eating surrender monkies': 2,\n  'cheeseeating surrender monkey': 2,\n  'cheeseeating surrender monkies': 2,\n  cheesehead: 2,\n  cheeseheads: 2,\n  cherrypopper: 2,\n  'chi chi man': 2,\n  chickslick: 2,\n  childrens: 0,\n  chin: 0,\n  'china swede': 2,\n  'china swedes': 2,\n  chinaman: 2,\n  chinamen: 2,\n  chinaswede: 2,\n  chinaswedes: 2,\n  chinese: 0,\n  'ching chong': 2,\n  'ching chongs': 2,\n  chingchong: 2,\n  chingchongs: 2,\n  chink: 2,\n  chinks: 2,\n  chinky: 2,\n  choad: 2,\n  chode: 2,\n  chonkies: 2,\n  chonky: 2,\n  chonkys: 2,\n  christ: 0,\n  'christ killer': 2,\n  'christ killers': 2,\n  christian: 0,\n  chug: 2,\n  chugs: 2,\n  chunger: 2,\n  chungers: 2,\n  chunkies: 2,\n  chunky: 2,\n  chunkys: 2,\n  church: 0,\n  cigarette: 0,\n  cigs: 0,\n  clamdigger: 2,\n  clamdiver: 2,\n  clansman: 2,\n  clansmen: 2,\n  clanswoman: 2,\n  clanswomen: 2,\n  clit: 1,\n  clitoris: 1,\n  clogwog: 2,\n  cocaine: 1,\n  cock: 1,\n  cockblock: 2,\n  cockblocker: 2,\n  cockcowboy: 2,\n  cockfight: 2,\n  cockhead: 2,\n  cockknob: 2,\n  cocklicker: 2,\n  cocklover: 2,\n  cocknob: 2,\n  cockqueen: 2,\n  cockrider: 2,\n  cocksman: 2,\n  cocksmith: 2,\n  cocksmoker: 2,\n  cocksucer: 2,\n  cocksuck: 2,\n  cocksucked: 2,\n  cocksucker: 2,\n  cocksucking: 2,\n  cocktail: 0,\n  cocktease: 2,\n  cocky: 2,\n  coconut: 0,\n  coconuts: 0,\n  cohee: 2,\n  coitus: 1,\n  color: 0,\n  colored: 0,\n  coloured: 0,\n  commie: 2,\n  communist: 0,\n  condom: 1,\n  conservative: 0,\n  conspiracy: 0,\n  coolie: 2,\n  coolies: 2,\n  cooly: 2,\n  coon: 2,\n  'coon ass': 2,\n  'coon asses': 2,\n  coonass: 2,\n  coonasses: 2,\n  coondog: 2,\n  coons: 2,\n  copulate: 1,\n  cornhole: 2,\n  corruption: 0,\n  cra5h: 1,\n  crabs: 0,\n  crack: 1,\n  cracka: 2,\n  cracker: 1,\n  crackpipe: 1,\n  crackwhore: 2,\n  crap: 2,\n  crapola: 2,\n  crapper: 2,\n  crappy: 2,\n  crash: 0,\n  creamy: 0,\n  crime: 0,\n  crimes: 0,\n  criminal: 0,\n  criminals: 0,\n  crotch: 1,\n  crotchjockey: 2,\n  crotchmonkey: 2,\n  crotchrot: 2,\n  cum: 2,\n  cumbubble: 2,\n  cumfest: 2,\n  cumjockey: 2,\n  cumm: 2,\n  cummer: 2,\n  cumming: 2,\n  cummings: 1,\n  cumquat: 2,\n  cumqueen: 2,\n  cumshot: 2,\n  cunilingus: 1,\n  cunillingus: 1,\n  cunn: 2,\n  cunnilingus: 1,\n  cunntt: 2,\n  cunt: 2,\n  cunteyed: 2,\n  cuntfuck: 2,\n  cuntfucker: 2,\n  cuntlick: 2,\n  cuntlicker: 2,\n  cuntlicking: 2,\n  cuntsucker: 2,\n  'curry muncher': 2,\n  'curry munchers': 2,\n  currymuncher: 2,\n  currymunchers: 2,\n  cushi: 2,\n  cushis: 2,\n  cybersex: 1,\n  cyberslimer: 2,\n  dago: 2,\n  dagos: 2,\n  dahmer: 2,\n  dammit: 2,\n  damn: 1,\n  damnation: 1,\n  damnit: 2,\n  darkey: 2,\n  darkeys: 2,\n  darkie: 2,\n  darkies: 2,\n  darky: 2,\n  datnigga: 2,\n  dead: 0,\n  deapthroat: 2,\n  death: 0,\n  deepthroat: 2,\n  defecate: 1,\n  dego: 2,\n  degos: 2,\n  demon: 1,\n  deposit: 0,\n  desire: 0,\n  destroy: 0,\n  deth: 0,\n  devil: 1,\n  devilworshipper: 1,\n  'diaper head': 2,\n  'diaper heads': 2,\n  diaperhead: 2,\n  diaperheads: 2,\n  dick: 1,\n  dickbrain: 2,\n  dickforbrains: 2,\n  dickhead: 2,\n  dickless: 2,\n  dicklick: 2,\n  dicklicker: 2,\n  dickman: 2,\n  dickwad: 2,\n  dickweed: 2,\n  diddle: 2,\n  die: 0,\n  died: 0,\n  dies: 0,\n  dike: 1,\n  dildo: 1,\n  dingleberry: 2,\n  dink: 2,\n  dinks: 2,\n  dipshit: 2,\n  dipstick: 2,\n  dirty: 0,\n  disease: 0,\n  diseases: 0,\n  disturbed: 0,\n  dive: 0,\n  dix: 2,\n  dixiedike: 2,\n  dixiedyke: 2,\n  doggiestyle: 2,\n  doggystyle: 2,\n  dong: 2,\n  doodoo: 2,\n  doom: 0,\n  dope: 2,\n  'dot head': 2,\n  'dot heads': 2,\n  dothead: 2,\n  dotheads: 2,\n  dragqueen: 2,\n  dragqween: 2,\n  dripdick: 2,\n  drug: 1,\n  drunk: 1,\n  drunken: 1,\n  dumb: 2,\n  dumbass: 2,\n  dumbbitch: 2,\n  dumbfuck: 2,\n  'dune coon': 2,\n  'dune coons': 2,\n  dyefly: 2,\n  dyke: 1,\n  easyslut: 2,\n  eatballs: 2,\n  eatme: 2,\n  eatpussy: 2,\n  ecstacy: 0,\n  'eight ball': 2,\n  'eight balls': 2,\n  ejaculate: 1,\n  ejaculated: 1,\n  ejaculating: 1,\n  ejaculation: 1,\n  enema: 1,\n  enemy: 0,\n  erect: 0,\n  erection: 1,\n  ero: 2,\n  escort: 0,\n  esqua: 2,\n  ethiopian: 0,\n  ethnic: 0,\n  european: 0,\n  evl: 2,\n  excrement: 1,\n  execute: 0,\n  executed: 0,\n  execution: 0,\n  executioner: 0,\n  exkwew: 2,\n  explosion: 0,\n  facefucker: 2,\n  faeces: 2,\n  fag: 1,\n  fagging: 2,\n  faggot: 2,\n  fagot: 2,\n  failed: 0,\n  failure: 0,\n  fairies: 0,\n  fairy: 0,\n  faith: 0,\n  fannyfucker: 2,\n  fart: 1,\n  farted: 1,\n  farting: 1,\n  farty: 2,\n  fastfuck: 2,\n  fat: 0,\n  fatah: 2,\n  fatass: 2,\n  fatfuck: 2,\n  fatfucker: 2,\n  fatso: 2,\n  fckcum: 2,\n  fear: 0,\n  feces: 1,\n  felatio: 1,\n  felch: 2,\n  felcher: 2,\n  felching: 2,\n  fellatio: 2,\n  feltch: 2,\n  feltcher: 2,\n  feltching: 2,\n  fetish: 1,\n  fight: 0,\n  filipina: 0,\n  filipino: 0,\n  fingerfood: 1,\n  fingerfuck: 2,\n  fingerfucked: 2,\n  fingerfucker: 2,\n  fingerfuckers: 2,\n  fingerfucking: 2,\n  fire: 0,\n  firing: 0,\n  fister: 2,\n  fistfuck: 2,\n  fistfucked: 2,\n  fistfucker: 2,\n  fistfucking: 2,\n  fisting: 2,\n  flamer: 1,\n  flange: 2,\n  flasher: 1,\n  flatulence: 1,\n  floo: 2,\n  flydie: 2,\n  flydye: 2,\n  fok: 2,\n  fondle: 1,\n  footaction: 1,\n  footfuck: 2,\n  footfucker: 2,\n  footlicker: 2,\n  footstar: 2,\n  fore: 0,\n  foreskin: 1,\n  forni: 2,\n  fornicate: 1,\n  foursome: 1,\n  fourtwenty: 1,\n  fraud: 0,\n  freakfuck: 2,\n  freakyfucker: 2,\n  freefuck: 2,\n  fruit: 0,\n  fruitcake: 1,\n  fu: 2,\n  fubar: 2,\n  fuc: 2,\n  fucck: 2,\n  fuck: 2,\n  fucka: 2,\n  fuckable: 2,\n  fuckbag: 2,\n  fuckbook: 2,\n  fuckbuddy: 2,\n  fucked: 2,\n  fuckedup: 2,\n  fucker: 2,\n  fuckers: 2,\n  fuckface: 2,\n  fuckfest: 2,\n  fuckfreak: 2,\n  fuckfriend: 2,\n  fuckhead: 2,\n  fuckher: 2,\n  fuckin: 2,\n  fuckina: 2,\n  fucking: 2,\n  fuckingbitch: 2,\n  fuckinnuts: 2,\n  fuckinright: 2,\n  fuckit: 2,\n  fuckknob: 2,\n  fuckme: 2,\n  fuckmehard: 2,\n  fuckmonkey: 2,\n  fuckoff: 2,\n  fuckpig: 2,\n  fucks: 2,\n  fucktard: 2,\n  fuckwhore: 2,\n  fuckyou: 2,\n  'fudge packer': 2,\n  fudgepacker: 2,\n  fugly: 2,\n  fuk: 2,\n  fuks: 2,\n  funeral: 0,\n  funfuck: 2,\n  fungus: 0,\n  fuuck: 2,\n  gable: 1,\n  gables: 2,\n  gangbang: 2,\n  gangbanged: 2,\n  gangbanger: 2,\n  gangsta: 2,\n  'gator bait': 2,\n  gatorbait: 2,\n  gay: 0,\n  gaymuthafuckinwhore: 2,\n  gaysex: 2,\n  geez: 2,\n  geezer: 2,\n  geni: 2,\n  genital: 1,\n  german: 0,\n  getiton: 2,\n  gin: 0,\n  ginzo: 2,\n  ginzos: 2,\n  gipp: 2,\n  gippo: 2,\n  gippos: 2,\n  gipps: 2,\n  girls: 0,\n  givehead: 2,\n  glazeddonut: 2,\n  gob: 1,\n  god: 1,\n  godammit: 2,\n  goddamit: 2,\n  goddammit: 2,\n  goddamn: 2,\n  goddamned: 2,\n  goddamnes: 2,\n  goddamnit: 2,\n  goddamnmuthafucker: 2,\n  goldenshower: 2,\n  golliwog: 2,\n  golliwogs: 2,\n  gonorrehea: 2,\n  gonzagas: 1,\n  gook: 2,\n  'gook eye': 2,\n  'gook eyes': 2,\n  gookeye: 2,\n  gookeyes: 2,\n  gookies: 2,\n  gooks: 2,\n  gooky: 2,\n  gora: 2,\n  goras: 2,\n  gotohell: 2,\n  goy: 1,\n  goyim: 1,\n  greaseball: 2,\n  greaseballs: 2,\n  greaser: 2,\n  greasers: 2,\n  gringo: 2,\n  gringos: 2,\n  groe: 1,\n  groid: 2,\n  groids: 2,\n  gross: 1,\n  grostulation: 1,\n  gub: 1,\n  gubba: 2,\n  gubbas: 2,\n  gubs: 2,\n  guinea: 1,\n  guineas: 1,\n  guizi: 1,\n  gummer: 2,\n  gun: 0,\n  gwailo: 2,\n  gwailos: 2,\n  gweilo: 2,\n  gweilos: 2,\n  gyopo: 2,\n  gyopos: 2,\n  gyp: 2,\n  gyped: 2,\n  gypo: 2,\n  gypos: 2,\n  gypp: 2,\n  gypped: 2,\n  gyppie: 2,\n  gyppies: 2,\n  gyppo: 2,\n  gyppos: 2,\n  gyppy: 2,\n  gyppys: 2,\n  gypsies: 2,\n  gypsy: 2,\n  gypsys: 2,\n  hadji: 2,\n  hadjis: 2,\n  hairyback: 2,\n  hairybacks: 2,\n  haji: 2,\n  hajis: 2,\n  hajji: 2,\n  hajjis: 2,\n  'half breed': 2,\n  'half caste': 2,\n  halfbreed: 2,\n  halfcaste: 2,\n  hamas: 1,\n  handjob: 2,\n  haole: 2,\n  haoles: 2,\n  hapa: 2,\n  harder: 0,\n  hardon: 2,\n  harem: 0,\n  headfuck: 2,\n  headlights: 0,\n  hebe: 2,\n  hebephila: 1,\n  hebephile: 1,\n  hebephiles: 1,\n  hebephilia: 1,\n  hebephilic: 1,\n  hebes: 2,\n  heeb: 2,\n  heebs: 2,\n  hell: 0,\n  henhouse: 0,\n  heroin: 1,\n  herpes: 1,\n  heterosexual: 0,\n  hijack: 0,\n  hijacker: 0,\n  hijacking: 0,\n  hillbillies: 2,\n  hillbilly: 2,\n  hindoo: 2,\n  hiscock: 2,\n  hitler: 1,\n  hitlerism: 2,\n  hitlerist: 2,\n  hiv: 1,\n  ho: 2,\n  hobo: 2,\n  hodgie: 2,\n  hoes: 2,\n  hole: 0,\n  holestuffer: 2,\n  homicide: 1,\n  homo: 2,\n  homobangers: 2,\n  homosexual: 1,\n  honger: 2,\n  honk: 0,\n  honkers: 2,\n  honkey: 2,\n  honkeys: 2,\n  honkie: 2,\n  honkies: 2,\n  honky: 2,\n  hook: 0,\n  hooker: 2,\n  hookers: 2,\n  hooters: 2,\n  hore: 2,\n  hori: 2,\n  horis: 2,\n  hork: 2,\n  horn: 0,\n  horney: 2,\n  horniest: 2,\n  horny: 1,\n  horseshit: 2,\n  hosejob: 2,\n  hoser: 2,\n  hostage: 0,\n  hotdamn: 2,\n  hotpussy: 2,\n  hottotrot: 2,\n  hummer: 0,\n  hun: 0,\n  huns: 0,\n  husky: 0,\n  hussy: 2,\n  hustler: 0,\n  hymen: 1,\n  hymie: 2,\n  hymies: 2,\n  iblowu: 2,\n  idiot: 2,\n  ike: 1,\n  ikes: 1,\n  ikey: 1,\n  ikeymo: 2,\n  ikeymos: 2,\n  ikwe: 2,\n  illegal: 0,\n  illegals: 1,\n  incest: 1,\n  indon: 2,\n  indons: 2,\n  injun: 2,\n  injuns: 2,\n  insest: 2,\n  intercourse: 1,\n  interracial: 1,\n  intheass: 2,\n  inthebuff: 2,\n  israel: 0,\n  israeli: 0,\n  israels: 0,\n  italiano: 1,\n  itch: 0,\n  jackass: 2,\n  jackoff: 2,\n  jackshit: 2,\n  jacktheripper: 2,\n  jade: 0,\n  jap: 2,\n  japanese: 0,\n  japcrap: 2,\n  japie: 2,\n  japies: 2,\n  japs: 2,\n  jebus: 2,\n  jeez: 2,\n  jerkoff: 2,\n  jerries: 1,\n  jerry: 0,\n  jesus: 1,\n  jesuschrist: 1,\n  jew: 0,\n  jewboy: 2,\n  jewed: 2,\n  jewess: 2,\n  jewish: 0,\n  jig: 2,\n  jiga: 2,\n  jigaboo: 2,\n  jigaboos: 2,\n  jigarooni: 2,\n  jigaroonis: 2,\n  jigg: 2,\n  jigga: 2,\n  jiggabo: 2,\n  jiggabos: 2,\n  jiggas: 2,\n  jigger: 2,\n  jiggers: 2,\n  jiggs: 2,\n  jiggy: 2,\n  jigs: 2,\n  jihad: 1,\n  jijjiboo: 2,\n  jijjiboos: 2,\n  jimfish: 2,\n  jism: 2,\n  jiz: 2,\n  jizim: 2,\n  jizjuice: 2,\n  jizm: 2,\n  jizz: 2,\n  jizzim: 2,\n  jizzum: 2,\n  joint: 0,\n  juggalo: 2,\n  jugs: 0,\n  'jungle bunnies': 2,\n  'jungle bunny': 2,\n  junglebunny: 2,\n  kacap: 2,\n  kacapas: 2,\n  kacaps: 2,\n  kaffer: 2,\n  kaffir: 2,\n  kaffre: 2,\n  kafir: 2,\n  kanake: 2,\n  katsap: 2,\n  katsaps: 2,\n  khokhol: 2,\n  khokhols: 2,\n  kid: 0,\n  kigger: 2,\n  kike: 2,\n  kikes: 2,\n  kill: 0,\n  killed: 0,\n  killer: 0,\n  killing: 0,\n  kills: 0,\n  kimchi: 0,\n  kimchis: 2,\n  kink: 1,\n  kinky: 1,\n  kissass: 2,\n  kkk: 2,\n  klansman: 2,\n  klansmen: 2,\n  klanswoman: 2,\n  klanswomen: 2,\n  knife: 0,\n  knockers: 1,\n  kock: 1,\n  kondum: 2,\n  koon: 2,\n  kotex: 1,\n  krap: 2,\n  krappy: 2,\n  kraut: 1,\n  krauts: 2,\n  kuffar: 2,\n  kum: 2,\n  kumbubble: 2,\n  kumbullbe: 2,\n  kummer: 2,\n  kumming: 2,\n  kumquat: 2,\n  kums: 2,\n  kunilingus: 2,\n  kunnilingus: 2,\n  kunt: 2,\n  kushi: 2,\n  kushis: 2,\n  kwa: 2,\n  'kwai lo': 2,\n  'kwai los': 2,\n  ky: 1,\n  kyke: 2,\n  kykes: 2,\n  kyopo: 2,\n  kyopos: 2,\n  lactate: 1,\n  laid: 0,\n  lapdance: 1,\n  latin: 0,\n  lebo: 2,\n  lebos: 2,\n  lesbain: 2,\n  lesbayn: 2,\n  lesbian: 0,\n  lesbin: 2,\n  lesbo: 2,\n  lez: 2,\n  lezbe: 2,\n  lezbefriends: 2,\n  lezbo: 2,\n  lezz: 2,\n  lezzo: 2,\n  liberal: 0,\n  libido: 1,\n  licker: 1,\n  lickme: 2,\n  lies: 0,\n  limey: 2,\n  limpdick: 2,\n  limy: 2,\n  lingerie: 0,\n  liquor: 1,\n  livesex: 2,\n  loadedgun: 2,\n  lolita: 1,\n  looser: 2,\n  loser: 2,\n  lotion: 0,\n  lovebone: 2,\n  lovegoo: 2,\n  lovegun: 2,\n  lovejuice: 2,\n  lovemuscle: 2,\n  lovepistol: 2,\n  loverocket: 2,\n  lowlife: 2,\n  lsd: 1,\n  lubejob: 2,\n  lubra: 2,\n  lucifer: 0,\n  luckycammeltoe: 2,\n  lugan: 2,\n  lugans: 2,\n  lynch: 1,\n  mabuno: 2,\n  mabunos: 2,\n  macaca: 2,\n  macacas: 2,\n  mad: 0,\n  mafia: 1,\n  magicwand: 2,\n  mahbuno: 2,\n  mahbunos: 2,\n  mams: 2,\n  manhater: 2,\n  manpaste: 2,\n  marijuana: 1,\n  mastabate: 2,\n  mastabater: 2,\n  masterbate: 2,\n  masterblaster: 2,\n  mastrabator: 2,\n  masturbate: 2,\n  masturbating: 2,\n  mattressprincess: 2,\n  'mau mau': 2,\n  'mau maus': 2,\n  maumau: 2,\n  maumaus: 2,\n  meatbeatter: 2,\n  meatrack: 2,\n  meth: 1,\n  mexican: 0,\n  mgger: 2,\n  mggor: 2,\n  mick: 1,\n  mickeyfinn: 2,\n  mideast: 0,\n  milf: 2,\n  minority: 0,\n  mockey: 2,\n  mockie: 2,\n  mocky: 2,\n  mofo: 2,\n  moky: 2,\n  moles: 0,\n  molest: 1,\n  molestation: 1,\n  molester: 1,\n  molestor: 1,\n  moneyshot: 2,\n  'moon cricket': 2,\n  'moon crickets': 2,\n  mooncricket: 2,\n  mooncrickets: 2,\n  mormon: 0,\n  moron: 2,\n  moskal: 2,\n  moskals: 2,\n  moslem: 2,\n  mosshead: 2,\n  mothafuck: 2,\n  mothafucka: 2,\n  mothafuckaz: 2,\n  mothafucked: 2,\n  mothafucker: 2,\n  mothafuckin: 2,\n  mothafucking: 2,\n  mothafuckings: 2,\n  motherfuck: 2,\n  motherfucked: 2,\n  motherfucker: 2,\n  motherfuckin: 2,\n  motherfucking: 2,\n  motherfuckings: 2,\n  motherlovebone: 2,\n  muff: 2,\n  muffdive: 2,\n  muffdiver: 2,\n  muffindiver: 2,\n  mufflikcer: 2,\n  mulatto: 2,\n  muncher: 2,\n  munt: 2,\n  murder: 1,\n  murderer: 1,\n  muslim: 0,\n  mzungu: 2,\n  mzungus: 2,\n  naked: 0,\n  nancy: 0,\n  narcotic: 1,\n  nasty: 0,\n  nastybitch: 2,\n  nastyho: 2,\n  nastyslut: 2,\n  nastywhore: 2,\n  nazi: 1,\n  necro: 1,\n  negres: 2,\n  negress: 2,\n  negro: 2,\n  negroes: 2,\n  negroid: 2,\n  negros: 2,\n  nig: 2,\n  nigar: 2,\n  nigars: 2,\n  niger: 0,\n  nigerian: 1,\n  nigerians: 1,\n  nigers: 2,\n  nigette: 2,\n  nigettes: 2,\n  nigg: 2,\n  nigga: 2,\n  niggah: 2,\n  niggahs: 2,\n  niggar: 2,\n  niggaracci: 2,\n  niggard: 2,\n  niggarded: 2,\n  niggarding: 2,\n  niggardliness: 2,\n  niggardlinesss: 2,\n  niggardly: 0,\n  niggards: 2,\n  niggars: 2,\n  niggas: 2,\n  niggaz: 2,\n  nigger: 2,\n  niggerhead: 2,\n  niggerhole: 2,\n  niggers: 2,\n  niggle: 2,\n  niggled: 2,\n  niggles: 2,\n  niggling: 2,\n  nigglings: 2,\n  niggor: 2,\n  niggress: 2,\n  niggresses: 2,\n  nigguh: 2,\n  nigguhs: 2,\n  niggur: 2,\n  niggurs: 2,\n  niglet: 2,\n  nignog: 2,\n  nigor: 2,\n  nigors: 2,\n  nigr: 2,\n  nigra: 2,\n  nigras: 2,\n  nigre: 2,\n  nigres: 2,\n  nigress: 2,\n  nigs: 2,\n  nip: 2,\n  nipple: 1,\n  nipplering: 1,\n  nittit: 2,\n  nlgger: 2,\n  nlggor: 2,\n  nofuckingway: 2,\n  nook: 1,\n  nookey: 2,\n  nookie: 2,\n  noonan: 2,\n  nooner: 1,\n  nude: 1,\n  nudger: 2,\n  nuke: 1,\n  nutfucker: 2,\n  nymph: 1,\n  ontherag: 2,\n  oral: 1,\n  oreo: 0,\n  oreos: 0,\n  orga: 2,\n  orgasim: 2,\n  orgasm: 1,\n  orgies: 1,\n  orgy: 1,\n  osama: 0,\n  paddy: 1,\n  paederastic: 1,\n  paederasts: 1,\n  paederasty: 1,\n  paki: 2,\n  pakis: 2,\n  palesimian: 2,\n  palestinian: 0,\n  'pancake face': 2,\n  'pancake faces': 2,\n  pansies: 2,\n  pansy: 2,\n  panti: 2,\n  panties: 0,\n  payo: 2,\n  pearlnecklace: 1,\n  peck: 1,\n  pecker: 1,\n  peckerwood: 2,\n  pederastic: 1,\n  pederasts: 1,\n  pederasty: 1,\n  pedo: 2,\n  pedophile: 1,\n  pedophiles: 1,\n  pedophilia: 1,\n  pedophilic: 1,\n  pee: 1,\n  peehole: 2,\n  peepee: 2,\n  peepshow: 1,\n  peepshpw: 2,\n  pendy: 1,\n  penetration: 1,\n  peni5: 2,\n  penile: 1,\n  penis: 1,\n  penises: 1,\n  penthouse: 0,\n  period: 0,\n  perv: 2,\n  phonesex: 1,\n  phuk: 2,\n  phuked: 2,\n  phuking: 2,\n  phukked: 2,\n  phukking: 2,\n  phungky: 2,\n  phuq: 2,\n  pi55: 2,\n  picaninny: 2,\n  piccaninny: 2,\n  pickaninnies: 2,\n  pickaninny: 2,\n  piefke: 2,\n  piefkes: 2,\n  piker: 2,\n  pikey: 2,\n  piky: 2,\n  'pillow biter': 2,\n  pimp: 2,\n  pimped: 2,\n  pimper: 2,\n  pimpjuic: 2,\n  pimpjuice: 2,\n  pimpsimp: 2,\n  pindick: 2,\n  piss: 2,\n  pissed: 2,\n  pisser: 2,\n  pisses: 2,\n  pisshead: 2,\n  pissin: 2,\n  pissing: 2,\n  pissoff: 2,\n  pistol: 1,\n  pixie: 1,\n  pixy: 1,\n  playboy: 1,\n  playgirl: 1,\n  pocha: 2,\n  pochas: 2,\n  pocho: 2,\n  pochos: 2,\n  pocketpool: 2,\n  pohm: 2,\n  pohms: 2,\n  polack: 2,\n  polacks: 2,\n  pollock: 2,\n  pollocks: 2,\n  pom: 2,\n  pommie: 2,\n  'pommie grant': 2,\n  'pommie grants': 2,\n  pommies: 2,\n  pommy: 2,\n  poms: 2,\n  poo: 2,\n  poof: 2,\n  poofta: 2,\n  poofter: 2,\n  poon: 2,\n  poontang: 2,\n  poop: 2,\n  pooper: 2,\n  pooperscooper: 2,\n  pooping: 2,\n  poorwhitetrash: 2,\n  popimp: 2,\n  'porch monkey': 2,\n  'porch monkies': 2,\n  porchmonkey: 2,\n  porn: 1,\n  pornflick: 1,\n  pornking: 2,\n  porno: 1,\n  pornography: 1,\n  pornprincess: 2,\n  pot: 0,\n  poverty: 0,\n  'prairie nigger': 2,\n  'prairie niggers': 2,\n  premature: 0,\n  pric: 2,\n  prick: 2,\n  prickhead: 2,\n  primetime: 0,\n  propaganda: 0,\n  pros: 0,\n  prostitute: 1,\n  protestant: 1,\n  pu55i: 2,\n  pu55y: 2,\n  pube: 1,\n  pubic: 1,\n  pubiclice: 2,\n  pud: 2,\n  pudboy: 2,\n  pudd: 2,\n  puddboy: 2,\n  puke: 2,\n  puntang: 2,\n  purinapricness: 2,\n  puss: 2,\n  pussie: 2,\n  pussies: 2,\n  pussy: 1,\n  pussycat: 1,\n  pussyeater: 2,\n  pussyfucker: 2,\n  pussylicker: 2,\n  pussylips: 2,\n  pussylover: 2,\n  pussypounder: 2,\n  pusy: 2,\n  quashie: 2,\n  que: 0,\n  queef: 2,\n  queer: 1,\n  quickie: 2,\n  quim: 2,\n  ra8s: 2,\n  rabbi: 0,\n  racial: 0,\n  racist: 1,\n  radical: 1,\n  radicals: 1,\n  raghead: 2,\n  ragheads: 2,\n  randy: 1,\n  rape: 1,\n  raped: 1,\n  raper: 2,\n  rapist: 1,\n  rearend: 2,\n  rearentry: 2,\n  rectum: 1,\n  redleg: 2,\n  redlegs: 2,\n  redlight: 0,\n  redneck: 2,\n  rednecks: 2,\n  redskin: 2,\n  redskins: 2,\n  reefer: 2,\n  reestie: 2,\n  refugee: 0,\n  reject: 0,\n  remains: 0,\n  rentafuck: 2,\n  republican: 0,\n  rere: 2,\n  retard: 2,\n  retarded: 2,\n  ribbed: 1,\n  rigger: 2,\n  rimjob: 2,\n  rimming: 2,\n  roach: 0,\n  robber: 0,\n  'round eyes': 2,\n  roundeye: 2,\n  rump: 0,\n  russki: 2,\n  russkie: 2,\n  sadis: 2,\n  sadom: 2,\n  sambo: 2,\n  sambos: 2,\n  samckdaddy: 2,\n  'sand nigger': 2,\n  'sand niggers': 2,\n  sandm: 2,\n  sandnigger: 2,\n  satan: 1,\n  scag: 1,\n  scallywag: 2,\n  scat: 1,\n  schlong: 2,\n  schvartse: 2,\n  schvartsen: 2,\n  schwartze: 2,\n  schwartzen: 2,\n  screw: 1,\n  screwyou: 2,\n  scrotum: 1,\n  scum: 1,\n  semen: 1,\n  seppo: 2,\n  seppos: 2,\n  septic: 1,\n  septics: 1,\n  servant: 0,\n  sex: 1,\n  sexed: 2,\n  sexfarm: 2,\n  sexhound: 2,\n  sexhouse: 1,\n  sexing: 2,\n  sexkitten: 2,\n  sexpot: 2,\n  sexslave: 2,\n  sextogo: 2,\n  sextoy: 1,\n  sextoys: 1,\n  sexual: 1,\n  sexually: 1,\n  sexwhore: 2,\n  sexy: 1,\n  sexymoma: 2,\n  sexyslim: 2,\n  shag: 1,\n  shaggin: 2,\n  shagging: 2,\n  shat: 2,\n  shav: 2,\n  shawtypimp: 2,\n  sheeney: 2,\n  shhit: 2,\n  shiksa: 2,\n  shinola: 1,\n  shit: 1,\n  shitcan: 2,\n  shitdick: 2,\n  shite: 2,\n  shiteater: 2,\n  shited: 2,\n  shitface: 2,\n  shitfaced: 2,\n  shitfit: 2,\n  shitforbrains: 2,\n  shitfuck: 2,\n  shitfucker: 2,\n  shitfull: 2,\n  shithapens: 2,\n  shithappens: 2,\n  shithead: 2,\n  shithouse: 2,\n  shiting: 2,\n  shitlist: 2,\n  shitola: 2,\n  shitoutofluck: 2,\n  shits: 2,\n  shitstain: 2,\n  shitted: 2,\n  shitter: 2,\n  shitting: 2,\n  shitty: 2,\n  shoot: 0,\n  shooting: 0,\n  shortfuck: 2,\n  showtime: 0,\n  shylock: 2,\n  shylocks: 2,\n  sick: 0,\n  sissy: 2,\n  sixsixsix: 2,\n  sixtynine: 2,\n  sixtyniner: 2,\n  skank: 2,\n  skankbitch: 2,\n  skankfuck: 2,\n  skankwhore: 2,\n  skanky: 2,\n  skankybitch: 2,\n  skankywhore: 2,\n  skinflute: 2,\n  skum: 2,\n  skumbag: 2,\n  skwa: 2,\n  skwe: 2,\n  slant: 0,\n  slanteye: 2,\n  slanty: 2,\n  slapper: 2,\n  slaughter: 1,\n  slav: 0,\n  slave: 2,\n  slavedriver: 2,\n  sleezebag: 2,\n  sleezeball: 2,\n  slideitin: 2,\n  slime: 0,\n  slimeball: 2,\n  slimebucket: 2,\n  slope: 0,\n  slopehead: 2,\n  slopeheads: 2,\n  sloper: 2,\n  slopers: 2,\n  slopes: 0,\n  slopey: 2,\n  slopeys: 2,\n  slopies: 2,\n  slopy: 2,\n  slut: 2,\n  sluts: 2,\n  slutt: 2,\n  slutting: 2,\n  slutty: 2,\n  slutwear: 2,\n  slutwhore: 2,\n  smack: 1,\n  smackthemonkey: 2,\n  smut: 2,\n  snatch: 1,\n  snatchpatch: 2,\n  snigger: 0,\n  sniggered: 0,\n  sniggering: 0,\n  sniggers: 1,\n  sniper: 0,\n  snot: 0,\n  snowback: 2,\n  snownigger: 2,\n  sob: 0,\n  sod: 0,\n  sodom: 1,\n  sodomise: 2,\n  sodomite: 1,\n  sodomize: 2,\n  sodomy: 2,\n  sonofabitch: 2,\n  sonofbitch: 2,\n  sooties: 2,\n  sooty: 2,\n  sos: 0,\n  soviet: 0,\n  spa: 0,\n  spade: 1,\n  spades: 1,\n  spaghettibender: 2,\n  spaghettinigger: 2,\n  spank: 1,\n  spankthemonkey: 2,\n  spearchucker: 2,\n  spearchuckers: 2,\n  sperm: 1,\n  spermacide: 2,\n  spermbag: 2,\n  spermhearder: 2,\n  spermherder: 2,\n  spic: 2,\n  spick: 2,\n  spicks: 2,\n  spics: 2,\n  spig: 2,\n  spigotty: 2,\n  spik: 2,\n  spit: 2,\n  spitter: 2,\n  splittail: 2,\n  spooge: 2,\n  spreadeagle: 2,\n  spunk: 2,\n  spunky: 2,\n  sqeh: 2,\n  squa: 2,\n  squarehead: 2,\n  squareheads: 2,\n  squaw: 2,\n  squinty: 2,\n  stagg: 1,\n  stiffy: 1,\n  strapon: 1,\n  stringer: 2,\n  stripclub: 2,\n  stroke: 0,\n  stroking: 1,\n  stuinties: 2,\n  stupid: 2,\n  stupidfuck: 2,\n  stupidfucker: 2,\n  suck: 1,\n  suckdick: 2,\n  sucker: 2,\n  suckme: 2,\n  suckmyass: 2,\n  suckmydick: 2,\n  suckmytit: 2,\n  suckoff: 2,\n  suicide: 1,\n  swallow: 1,\n  swallower: 2,\n  swalow: 2,\n  'swamp guinea': 2,\n  'swamp guineas': 2,\n  swastika: 1,\n  sweetness: 0,\n  syphilis: 1,\n  taboo: 0,\n  tacohead: 2,\n  tacoheads: 2,\n  taff: 2,\n  tampon: 0,\n  tang: 2,\n  tantra: 1,\n  'tar babies': 2,\n  'tar baby': 2,\n  tarbaby: 2,\n  tard: 2,\n  teat: 1,\n  terror: 0,\n  terrorist: 1,\n  teste: 2,\n  testicle: 1,\n  testicles: 1,\n  thicklip: 2,\n  thicklips: 2,\n  thirdeye: 2,\n  thirdleg: 2,\n  threesome: 1,\n  threeway: 2,\n  'timber nigger': 2,\n  'timber niggers': 2,\n  timbernigger: 2,\n  tinker: 2,\n  tinkers: 2,\n  tinkle: 1,\n  tit: 1,\n  titbitnipply: 2,\n  titfuck: 2,\n  titfucker: 2,\n  titfuckin: 2,\n  titjob: 2,\n  titlicker: 2,\n  titlover: 2,\n  tits: 1,\n  tittie: 2,\n  titties: 2,\n  titty: 2,\n  tnt: 1,\n  toilet: 0,\n  tongethruster: 2,\n  tongue: 0,\n  tonguethrust: 2,\n  tonguetramp: 2,\n  tortur: 2,\n  torture: 1,\n  tosser: 2,\n  'towel head': 2,\n  'towel heads': 2,\n  towelhead: 2,\n  trailertrash: 2,\n  tramp: 1,\n  trannie: 2,\n  tranny: 2,\n  transexual: 0,\n  transsexual: 0,\n  transvestite: 2,\n  trap: 1,\n  triplex: 2,\n  trisexual: 1,\n  trojan: 0,\n  trots: 1,\n  tuckahoe: 2,\n  tunneloflove: 2,\n  turd: 1,\n  turnon: 2,\n  twat: 2,\n  twink: 2,\n  twinkie: 2,\n  twobitwhore: 2,\n  uck: 2,\n  uk: 0,\n  ukrop: 2,\n  'uncle tom': 2,\n  unfuckable: 2,\n  upskirt: 2,\n  uptheass: 2,\n  upthebutt: 2,\n  urinary: 0,\n  urinate: 0,\n  urine: 0,\n  usama: 2,\n  uterus: 1,\n  vagina: 1,\n  vaginal: 1,\n  vatican: 0,\n  vibr: 2,\n  vibrater: 2,\n  vibrator: 1,\n  vietcong: 0,\n  violence: 0,\n  virgin: 0,\n  virginbreaker: 2,\n  vomit: 2,\n  vulva: 1,\n  wab: 2,\n  wank: 2,\n  wanker: 2,\n  wanking: 2,\n  waysted: 2,\n  weapon: 0,\n  weenie: 2,\n  weewee: 2,\n  welcher: 2,\n  welfare: 2,\n  wetb: 2,\n  wetback: 2,\n  wetbacks: 2,\n  wetspot: 2,\n  whacker: 2,\n  whash: 2,\n  whigger: 2,\n  whiggers: 2,\n  whiskey: 0,\n  whiskeydick: 2,\n  whiskydick: 2,\n  whit: 1,\n  'white trash': 2,\n  whitenigger: 2,\n  whites: 1,\n  whitetrash: 2,\n  whitey: 2,\n  whiteys: 2,\n  whities: 2,\n  whiz: 2,\n  whop: 2,\n  whore: 2,\n  whorefucker: 2,\n  whorehouse: 2,\n  wigga: 2,\n  wiggas: 2,\n  wigger: 2,\n  wiggers: 2,\n  willie: 2,\n  williewanker: 2,\n  willy: 1,\n  wn: 2,\n  wog: 2,\n  wogs: 2,\n  womens: 0,\n  wop: 2,\n  wtf: 2,\n  wuss: 2,\n  wuzzie: 2,\n  xkwe: 2,\n  xtc: 1,\n  xxx: 1,\n  yank: 2,\n  yankee: 1,\n  yankees: 1,\n  yanks: 2,\n  yarpie: 2,\n  yarpies: 2,\n  yellowman: 2,\n  yid: 2,\n  yids: 2,\n  zigabo: 2,\n  zigabos: 2,\n  zipperhead: 2,\n  zipperheads: 2\n}\n", "/**\n * @typedef {import('nlcst').Nodes} Nodes\n */\n\n/** @type {Readonly<Array<Nodes>>} */\nconst emptyNodes = []\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node\u2019s plain-text fields, otherwise serializes its children, and\n * if the given value is an array, serialize the nodes in it.\n *\n * @param {Array<Nodes> | Nodes} value\n *   Node or list of nodes to serialize.\n * @returns {string}\n *   Result.\n */\nexport function toString(value) {\n  let index = -1\n\n  if (!value || (!Array.isArray(value) && !value.type)) {\n    throw new Error('Expected node, not `' + value + '`')\n  }\n\n  if ('value' in value) return value.value\n\n  const children = (Array.isArray(value) ? value : value.children) || emptyNodes\n\n  /** @type {Array<string>} */\n  const values = []\n\n  while (++index < children.length) {\n    values[index] = toString(children[index])\n  }\n\n  return values.join('')\n}\n", "/**\n * @typedef {import('nlcst').Root} Root\n *\n * @typedef {import('nlcst-search').Handler} Handler\n *\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef Config\n *   Configuration.\n * @property {string} lang\n *   BCP-47 tag.\n * @property {Record<string, number>} cuss\n *   Cuss.\n * @property {Pluralize | undefined} [pluralize]\n *   Pluralize instance.\n * @property {ReadonlyArray<string> | undefined} [ignorePluralize]\n *   Phrases not to make plural/singular.\n * @property {ReadonlyArray<string> | undefined} [regular]\n *   Phrases not to normalize.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {ReadonlyArray<string> | null | undefined} [ignore]\n *   Phrases *not* to warn about (optional).\n * @property {0 | 1 | 2 | null | undefined} [sureness=0]\n *   Minimum *sureness* to warn about, see `cuss` (default: `0`).\n *\n * @typedef Pluralize\n *   Pluralize instance.\n * @property {Transform} singular\n *   Transform to singular.\n * @property {Transform} plural\n *   Transform to plural.\n *\n * @callback Transform\n *   Transform a word.\n * @param {string} word\n *   Word to transform.\n * @returns {string}\n *   Transformed word.\n */\n\nimport {search} from 'nlcst-search'\nimport {toString} from 'nlcst-to-string'\nimport {quotation} from 'quotation'\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/** @type {Readonly<Options>} */\nconst emptyOptions = {}\n/** @type {ReadonlyArray<never>} */\nconst emptyList = []\n\n/**\n * @param {Config} config\n *   Configuration (required).\n * @returns\n *   Plugin.\n */\nexport function createPlugin(config) {\n  const regular = config.regular || emptyList\n  const words = unpack()\n  const source =\n    'retext-profanities' + (config.lang === 'en' ? '' : '-' + config.lang)\n\n  /**\n   * Check for potential bad words.\n   *\n   * @param {Readonly<Options> | null | undefined} [options]\n   *   Configuration (optional).\n   * @returns\n   *   Transform.\n   */\n  return function (options) {\n    const settings = options || emptyOptions\n    const ignore = settings.ignore || emptyList\n    const sureness = settings.sureness || 0\n    const phrases = Object.keys(words).filter(function (d) {\n      return !ignore.includes(d)\n    })\n    const normals =\n      regular.length > 0\n        ? phrases.filter(function (d) {\n            return !regular.includes(d)\n          })\n        : phrases\n    const literals = regular.filter(function (d) {\n      return phrases.includes(d)\n    })\n\n    /**\n     * Transform.\n     *\n     * @param {Root} tree\n     *   Tree.\n     * @param {VFile} file\n     *   File.\n     * @returns {undefined}\n     *   Nothing.\n     */\n    return function (tree, file) {\n      search(tree, normals, handle)\n      search(tree, literals, handle, {allowApostrophes: true})\n\n      /** @type {Handler} */\n      function handle(match, _, parent, phrase) {\n        const profanitySeverity = words[phrase]\n        const actual = toString(match)\n\n        if (profanitySeverity < sureness) {\n          return\n        }\n\n        const start = pointStart(match[0])\n        const end = pointEnd(match[match.length - 1])\n\n        const message = file.message(\n          [\n            profanitySeverity === 0\n              ? 'Be careful with'\n              : profanitySeverity === 1\n              ? 'Reconsider using'\n              : 'Don\u2019t use',\n            quotation(actual, '`') + ',',\n            profanitySeverity === 0\n              ? 'it\u2019s profane in some cases'\n              : profanitySeverity === 1\n              ? 'it may be profane'\n              : 'it\u2019s profane'\n          ].join(' '),\n          {\n            /* c8 ignore next -- verbose to test */\n            place: start && end ? {start, end} : undefined,\n            ruleId: phrase.replace(/\\W+/g, '-'),\n            source\n          }\n        )\n\n        message.actual = actual\n        message.expected = []\n        // @ts-expect-error: to do: remove or type.\n        message.profanitySeverity = profanitySeverity\n        message.url = 'https://github.com/retextjs/retext-profanities#readme'\n      }\n    }\n  }\n\n  /**\n   * @returns {Record<string, number>}\n   *   Cuss.\n   */\n  function unpack() {\n    /** @type {Record<string, number>} */\n    const result = {}\n    /** @type {string} */\n    let key\n\n    for (key in config.cuss) {\n      if (Object.hasOwn(config.cuss, key)) {\n        add(key, config.cuss[key])\n\n        if (config.pluralize) {\n          add(config.pluralize.singular(key), config.cuss[key])\n          add(config.pluralize.plural(key), config.cuss[key])\n        }\n      }\n    }\n\n    /**\n     * @param {string} key\n     *   Key.\n     * @param {number} value\n     *   Value.\n     */\n    function add(key, value) {\n      if (!config.ignorePluralize || !config.ignorePluralize.includes(key)) {\n        result[key] = value\n      }\n    }\n\n    return result\n  }\n}\n", "/**\n * @packageDocumentation\n * ESLint rule that checks source comments for profane wording.\n */\n\nimport type { TSESLint } from \"@typescript-eslint/utils\";\n\nimport * as retextProfanities from \"retext-profanities\";\nimport { isDefined } from \"ts-extras\";\n\nimport {\n    createCommentLintText,\n    isIgnoredCommentText,\n} from \"../_internal/comment-prose.js\";\nimport { resolveDefaultExport } from \"../_internal/default-export.js\";\nimport {\n    createRetextMessageSourceLocation,\n    lintMarkdownWithRetext,\n} from \"../_internal/retext.js\";\n\n/** Message ids emitted by this rule. */\ntype MessageIds = \"problem\";\n\n/** Configurable rule options. */\ntype NoProfaneCommentsOptions = Readonly<{\n    allow?: readonly string[];\n    deny?: readonly string[];\n    profanitySureness?: 0 | 1 | 2;\n}>;\n\n/** Configurable rule options tuple. */\ntype Options = [NoProfaneCommentsOptions?];\n\n/** Extra docs metadata carried by this plugin's rules. */\ntype PluginDocs = Readonly<{\n    recommended: boolean;\n}>;\n\n/** Shared schema for retext rule-id lists. */\nconst retextRuleListSchema = {\n    items: {\n        minLength: 1,\n        type: \"string\",\n    },\n    type: \"array\",\n    uniqueItems: true,\n} as const;\n\n/** Default options for no-profane-comments. */\nconst defaultNoProfaneCommentsOptions: NoProfaneCommentsOptions = {};\n\n/** Create the runtime no-profane-comments rule. */\nconst noProfaneCommentsRule: TSESLint.RuleModule<\n    MessageIds,\n    Options,\n    PluginDocs\n> = {\n    create(context) {\n        const sourceCode = context.sourceCode;\n        const [options = defaultNoProfaneCommentsOptions] = context.options;\n        const ruleFilter = {\n            ...(isDefined(options.allow) && { allow: options.allow }),\n            ...(isDefined(options.deny) && { deny: options.deny }),\n        };\n\n        return {\n            Program() {\n                for (const comment of sourceCode.getAllComments()) {\n                    const lintText = createCommentLintText(comment);\n                    const trimmedLintText = lintText.trim();\n\n                    if (isIgnoredCommentText(trimmedLintText)) {\n                        continue;\n                    }\n\n                    const messages = lintMarkdownWithRetext(\n                        lintText,\n                        (processor) => {\n                            processor.use(\n                                resolveDefaultExport(retextProfanities),\n                                {\n                                    ...(isDefined(\n                                        options.profanitySureness\n                                    ) && {\n                                        sureness: options.profanitySureness,\n                                    }),\n                                }\n                            );\n                        },\n                        ruleFilter\n                    );\n\n                    for (const message of messages) {\n                        if (message.source === \"retext-profanities\") {\n                            context.report({\n                                data: {\n                                    reason: message.reason.trim(),\n                                },\n                                loc: createRetextMessageSourceLocation(\n                                    comment,\n                                    sourceCode,\n                                    message\n                                ),\n                                messageId: \"problem\",\n                            });\n                        }\n                    }\n                }\n            },\n        };\n    },\n    meta: {\n        defaultOptions: [defaultNoProfaneCommentsOptions],\n        deprecated: false,\n        docs: {\n            description:\n                \"disallow profane wording in source comments with retext-profanities.\",\n            frozen: false,\n            recommended: false,\n            url: \"https://nick2bad4u.github.io/eslint-plugin-write-good-comments-2/docs/rules/no-profane-comments\",\n        },\n        messages: {\n            problem: \"{{reason}}\",\n        },\n        schema: [\n            {\n                additionalProperties: false,\n                allOf: [\n                    {\n                        not: {\n                            required: [\"allow\", \"deny\"],\n                            type: \"object\",\n                        },\n                        type: \"object\",\n                    },\n                ],\n                description:\n                    \"Optional retext profanity filters and minimum sureness for comment analysis.\",\n                properties: {\n                    allow: {\n                        ...retextRuleListSchema,\n                        description:\n                            \"Retext profanity rule ids to suppress for this rule.\",\n                    },\n                    deny: {\n                        ...retextRuleListSchema,\n                        description:\n                            \"Retext profanity rule ids to report exclusively for this rule.\",\n                    },\n                    profanitySureness: {\n                        description:\n                            \"Minimum retext profanity sureness to report: 0 (unlikely), 1 (maybe), or 2 (likely).\",\n                        enum: [\n                            0,\n                            1,\n                            2,\n                        ],\n                        type: \"integer\",\n                    },\n                },\n                type: \"object\",\n            },\n        ],\n        type: \"suggestion\",\n    },\n};\n\nexport default noProfaneCommentsRule;\n", "/**\n * @typedef {import('./lib/index.js').Options} Options\n */\n\nexport {default} from './lib/index.js'\n", "/**\n * @typedef Counts\n *   Counts from input document.\n * @property {number} sentence\n *   Number of sentences.\n * @property {number} word\n *   Number of words.\n * @property {number} character\n *   Number of characters.\n */\n\n/**\n * @typedef {Counts} AutomatedReadabilityCounts\n *   Deprecated: please use the `Counts` type instead.\n */\n\nconst characterWeight = 4.71\nconst sentenceWeight = 0.5\nconst base = 21.43\n\n/**\n * Given an object containing the number of words (`word`), the number of\n * sentences (`sentence`), and the number of characters  (`character`) in a\n * document, returns the grade level associated with the document.\n *\n * @param {Counts} counts\n *   Counts from input document.\n * @return {number}\n *   Grade level associated with the document.\n */\nexport function automatedReadability(counts) {\n  if (!counts || !counts.sentence || !counts.word || !counts.character) {\n    return Number.NaN\n  }\n\n  return (\n    characterWeight * (counts.character / counts.word) +\n    sentenceWeight * (counts.word / counts.sentence) -\n    base\n  )\n}\n", "/**\n * @typedef Counts\n *   Counts from input document.\n * @property {number} sentence\n *   Number of sentences.\n * @property {number} word\n *   Number of words.\n * @property {number} letter\n *   Number of letters.\n */\n\n/**\n * @typedef {Counts} ColemanLiauCounts\n *   Deprecated: please use the `Counts` type instead.\n */\n\nconst letterWeight = 0.0588\nconst sentenceWeight = 0.296\nconst base = 15.8\nconst percentage = 100\n\n/**\n * Given an object containing the number of words (`word`), the number of\n * sentences (`sentence`), and the number of letters  (`letter`) in a\n * document, returns the grade level associated with the document.\n *\n * @param {Counts} counts\n *   Counts from input document.\n * @returns {number}\n *   Grade level associated with the document.\n */\nexport function colemanLiau(counts) {\n  if (!counts || !counts.sentence || !counts.word || !counts.letter) {\n    return Number.NaN\n  }\n\n  return (\n    letterWeight * ((counts.letter / counts.word) * percentage) -\n    sentenceWeight * ((counts.sentence / counts.word) * percentage) -\n    base\n  )\n}\n", "/**\n * List of easy American-English words: new Dale\u2013Chall (1995).\n */\nexport const daleChall = [\n  'a',\n  'able',\n  'aboard',\n  'about',\n  'above',\n  'absent',\n  'accept',\n  'accident',\n  'account',\n  'ache',\n  'aching',\n  'acorn',\n  'acre',\n  'across',\n  'act',\n  'acts',\n  'add',\n  'address',\n  'admire',\n  'adventure',\n  'afar',\n  'afraid',\n  'after',\n  'afternoon',\n  'afterward',\n  'afterwards',\n  'again',\n  'against',\n  'age',\n  'aged',\n  'ago',\n  'agree',\n  'ah',\n  'ahead',\n  'aid',\n  'aim',\n  'air',\n  'airfield',\n  'airplane',\n  'airport',\n  'airship',\n  'airy',\n  'alarm',\n  'alike',\n  'alive',\n  'all',\n  'alley',\n  'alligator',\n  'allow',\n  'almost',\n  'alone',\n  'along',\n  'aloud',\n  'already',\n  'also',\n  'always',\n  'am',\n  'america',\n  'american',\n  'among',\n  'amount',\n  'an',\n  'and',\n  'angel',\n  'anger',\n  'angry',\n  'animal',\n  'another',\n  'answer',\n  'ant',\n  'any',\n  'anybody',\n  'anyhow',\n  'anyone',\n  'anything',\n  'anyway',\n  'anywhere',\n  'apart',\n  'apartment',\n  'ape',\n  'apiece',\n  'appear',\n  'apple',\n  'april',\n  'apron',\n  'are',\n  \"aren't\",\n  'arise',\n  'arithmetic',\n  'arm',\n  'armful',\n  'army',\n  'arose',\n  'around',\n  'arrange',\n  'arrive',\n  'arrived',\n  'arrow',\n  'art',\n  'artist',\n  'as',\n  'ash',\n  'ashes',\n  'aside',\n  'ask',\n  'asleep',\n  'at',\n  'ate',\n  'attack',\n  'attend',\n  'attention',\n  'august',\n  'aunt',\n  'author',\n  'auto',\n  'automobile',\n  'autumn',\n  'avenue',\n  'awake',\n  'awaken',\n  'away',\n  'awful',\n  'awfully',\n  'awhile',\n  'ax',\n  'axe',\n  'baa',\n  'babe',\n  'babies',\n  'back',\n  'background',\n  'backward',\n  'backwards',\n  'bacon',\n  'bad',\n  'badge',\n  'badly',\n  'bag',\n  'bake',\n  'baker',\n  'bakery',\n  'baking',\n  'ball',\n  'balloon',\n  'banana',\n  'band',\n  'bandage',\n  'bang',\n  'banjo',\n  'bank',\n  'banker',\n  'bar',\n  'barber',\n  'bare',\n  'barefoot',\n  'barely',\n  'bark',\n  'barn',\n  'barrel',\n  'base',\n  'baseball',\n  'basement',\n  'basket',\n  'bat',\n  'batch',\n  'bath',\n  'bathe',\n  'bathing',\n  'bathroom',\n  'bathtub',\n  'battle',\n  'battleship',\n  'bay',\n  'be',\n  'beach',\n  'bead',\n  'beam',\n  'bean',\n  'bear',\n  'beard',\n  'beast',\n  'beat',\n  'beating',\n  'beautiful',\n  'beautify',\n  'beauty',\n  'became',\n  'because',\n  'become',\n  'becoming',\n  'bed',\n  'bedbug',\n  'bedroom',\n  'bedspread',\n  'bedtime',\n  'bee',\n  'beech',\n  'beef',\n  'beefsteak',\n  'beehive',\n  'been',\n  'beer',\n  'beet',\n  'before',\n  'beg',\n  'began',\n  'beggar',\n  'begged',\n  'begin',\n  'beginning',\n  'begun',\n  'behave',\n  'behind',\n  'being',\n  'believe',\n  'bell',\n  'belong',\n  'below',\n  'belt',\n  'bench',\n  'bend',\n  'beneath',\n  'bent',\n  'berries',\n  'berry',\n  'beside',\n  'besides',\n  'best',\n  'bet',\n  'better',\n  'between',\n  'bib',\n  'bible',\n  'bicycle',\n  'bid',\n  'big',\n  'bigger',\n  'bill',\n  'billboard',\n  'bin',\n  'bind',\n  'bird',\n  'birth',\n  'birthday',\n  'biscuit',\n  'bit',\n  'bite',\n  'biting',\n  'bitter',\n  'black',\n  'blackberry',\n  'blackbird',\n  'blackboard',\n  'blackness',\n  'blacksmith',\n  'blame',\n  'blank',\n  'blanket',\n  'blast',\n  'blaze',\n  'bleed',\n  'bless',\n  'blessing',\n  'blew',\n  'blind',\n  'blindfold',\n  'blinds',\n  'block',\n  'blood',\n  'bloom',\n  'blossom',\n  'blot',\n  'blow',\n  'blue',\n  'blueberry',\n  'bluebird',\n  'blush',\n  'board',\n  'boast',\n  'boat',\n  'bob',\n  'bobwhite',\n  'bodies',\n  'body',\n  'boil',\n  'boiler',\n  'bold',\n  'bone',\n  'bonnet',\n  'boo',\n  'book',\n  'bookcase',\n  'bookkeeper',\n  'boom',\n  'boot',\n  'born',\n  'borrow',\n  'boss',\n  'both',\n  'bother',\n  'bottle',\n  'bottom',\n  'bought',\n  'bounce',\n  'bow',\n  'bow-wow',\n  'bowl',\n  'box',\n  'boxcar',\n  'boxer',\n  'boxes',\n  'boy',\n  'boyhood',\n  'bracelet',\n  'brain',\n  'brake',\n  'bran',\n  'branch',\n  'brass',\n  'brave',\n  'bread',\n  'break',\n  'breakfast',\n  'breast',\n  'breath',\n  'breathe',\n  'breeze',\n  'brick',\n  'bride',\n  'bridge',\n  'bright',\n  'brightness',\n  'bring',\n  'broad',\n  'broadcast',\n  'broke',\n  'broken',\n  'brook',\n  'broom',\n  'brother',\n  'brought',\n  'brown',\n  'brush',\n  'bubble',\n  'bucket',\n  'buckle',\n  'bud',\n  'buffalo',\n  'bug',\n  'buggy',\n  'build',\n  'building',\n  'built',\n  'bulb',\n  'bull',\n  'bullet',\n  'bum',\n  'bumblebee',\n  'bump',\n  'bun',\n  'bunch',\n  'bundle',\n  'bunny',\n  'burn',\n  'burst',\n  'bury',\n  'bus',\n  'bush',\n  'bushel',\n  'business',\n  'busy',\n  'but',\n  'butcher',\n  'butt',\n  'butter',\n  'buttercup',\n  'butterfly',\n  'buttermilk',\n  'butterscotch',\n  'button',\n  'buttonhole',\n  'buy',\n  'buzz',\n  'by',\n  'bye',\n  'cab',\n  'cabbage',\n  'cabin',\n  'cabinet',\n  'cackle',\n  'cage',\n  'cake',\n  'calendar',\n  'calf',\n  'call',\n  'caller',\n  'calling',\n  'came',\n  'camel',\n  'camp',\n  'campfire',\n  'can',\n  \"can't\",\n  'canal',\n  'canary',\n  'candle',\n  'candlestick',\n  'candy',\n  'cane',\n  'cannon',\n  'cannot',\n  'canoe',\n  'canyon',\n  'cap',\n  'cape',\n  'capital',\n  'captain',\n  'car',\n  'card',\n  'cardboard',\n  'care',\n  'careful',\n  'careless',\n  'carelessness',\n  'carload',\n  'carpenter',\n  'carpet',\n  'carriage',\n  'carrot',\n  'carry',\n  'cart',\n  'carve',\n  'case',\n  'cash',\n  'cashier',\n  'castle',\n  'cat',\n  'catbird',\n  'catch',\n  'catcher',\n  'caterpillar',\n  'catfish',\n  'catsup',\n  'cattle',\n  'caught',\n  'cause',\n  'cave',\n  'ceiling',\n  'cell',\n  'cellar',\n  'cent',\n  'center',\n  'cereal',\n  'certain',\n  'certainly',\n  'chain',\n  'chair',\n  'chalk',\n  'champion',\n  'chance',\n  'change',\n  'chap',\n  'charge',\n  'charm',\n  'chart',\n  'chase',\n  'chatter',\n  'cheap',\n  'cheat',\n  'check',\n  'checkers',\n  'cheek',\n  'cheer',\n  'cheese',\n  'cherry',\n  'chest',\n  'chew',\n  'chick',\n  'chicken',\n  'chief',\n  'child',\n  'childhood',\n  'children',\n  'chill',\n  'chilly',\n  'chimney',\n  'chin',\n  'china',\n  'chip',\n  'chipmunk',\n  'chocolate',\n  'choice',\n  'choose',\n  'chop',\n  'chorus',\n  'chose',\n  'chosen',\n  'christen',\n  'christmas',\n  'church',\n  'churn',\n  'cigarette',\n  'circle',\n  'circus',\n  'citizen',\n  'city',\n  'clang',\n  'clap',\n  'class',\n  'classmate',\n  'classroom',\n  'claw',\n  'clay',\n  'clean',\n  'cleaner',\n  'clear',\n  'clerk',\n  'clever',\n  'click',\n  'cliff',\n  'climb',\n  'clip',\n  'cloak',\n  'clock',\n  'close',\n  'closet',\n  'cloth',\n  'clothes',\n  'clothing',\n  'cloud',\n  'cloudy',\n  'clover',\n  'clown',\n  'club',\n  'cluck',\n  'clump',\n  'coach',\n  'coal',\n  'coast',\n  'coat',\n  'cob',\n  'cobbler',\n  'cocoa',\n  'coconut',\n  'cocoon',\n  'cod',\n  'codfish',\n  'coffee',\n  'coffeepot',\n  'coin',\n  'cold',\n  'collar',\n  'college',\n  'color',\n  'colored',\n  'colt',\n  'column',\n  'comb',\n  'come',\n  'comfort',\n  'comic',\n  'coming',\n  'company',\n  'compare',\n  'conductor',\n  'cone',\n  'connect',\n  'coo',\n  'cook',\n  'cooked',\n  'cookie',\n  'cookies',\n  'cooking',\n  'cool',\n  'cooler',\n  'coop',\n  'copper',\n  'copy',\n  'cord',\n  'cork',\n  'corn',\n  'corner',\n  'correct',\n  'cost',\n  'cot',\n  'cottage',\n  'cotton',\n  'couch',\n  'cough',\n  'could',\n  \"couldn't\",\n  'count',\n  'counter',\n  'country',\n  'county',\n  'course',\n  'court',\n  'cousin',\n  'cover',\n  'cow',\n  'coward',\n  'cowardly',\n  'cowboy',\n  'cozy',\n  'crab',\n  'crack',\n  'cracker',\n  'cradle',\n  'cramps',\n  'cranberry',\n  'crank',\n  'cranky',\n  'crash',\n  'crawl',\n  'crazy',\n  'cream',\n  'creamy',\n  'creek',\n  'creep',\n  'crept',\n  'cried',\n  'cries',\n  'croak',\n  'crook',\n  'crooked',\n  'crop',\n  'cross',\n  'cross-eyed',\n  'crossing',\n  'crow',\n  'crowd',\n  'crowded',\n  'crown',\n  'cruel',\n  'crumb',\n  'crumble',\n  'crush',\n  'crust',\n  'cry',\n  'cub',\n  'cuff',\n  'cup',\n  'cupboard',\n  'cupful',\n  'cure',\n  'curl',\n  'curly',\n  'curtain',\n  'curve',\n  'cushion',\n  'custard',\n  'customer',\n  'cut',\n  'cute',\n  'cutting',\n  'dab',\n  'dad',\n  'daddy',\n  'daily',\n  'dairy',\n  'daisy',\n  'dam',\n  'damage',\n  'dame',\n  'damp',\n  'dance',\n  'dancer',\n  'dancing',\n  'dandy',\n  'danger',\n  'dangerous',\n  'dare',\n  'dark',\n  'darkness',\n  'darling',\n  'darn',\n  'dart',\n  'dash',\n  'date',\n  'daughter',\n  'dawn',\n  'day',\n  'daybreak',\n  'daytime',\n  'dead',\n  'deaf',\n  'deal',\n  'dear',\n  'death',\n  'december',\n  'decide',\n  'deck',\n  'deed',\n  'deep',\n  'deer',\n  'defeat',\n  'defend',\n  'defense',\n  'delight',\n  'den',\n  'dentist',\n  'depend',\n  'deposit',\n  'describe',\n  'desert',\n  'deserve',\n  'desire',\n  'desk',\n  'destroy',\n  'devil',\n  'dew',\n  'diamond',\n  'did',\n  \"didn't\",\n  'die',\n  'died',\n  'dies',\n  'difference',\n  'different',\n  'dig',\n  'dim',\n  'dime',\n  'dine',\n  'ding-dong',\n  'dinner',\n  'dip',\n  'direct',\n  'direction',\n  'dirt',\n  'dirty',\n  'discover',\n  'dish',\n  'dislike',\n  'dismiss',\n  'ditch',\n  'dive',\n  'diver',\n  'divide',\n  'do',\n  'dock',\n  'doctor',\n  'does',\n  \"doesn't\",\n  'dog',\n  'doll',\n  'dollar',\n  'dolly',\n  \"don't\",\n  'done',\n  'donkey',\n  'door',\n  'doorbell',\n  'doorknob',\n  'doorstep',\n  'dope',\n  'dot',\n  'double',\n  'dough',\n  'dove',\n  'down',\n  'downstairs',\n  'downtown',\n  'dozen',\n  'drag',\n  'drain',\n  'drank',\n  'draw',\n  'drawer',\n  'drawing',\n  'dream',\n  'dress',\n  'dresser',\n  'dressmaker',\n  'drew',\n  'dried',\n  'drift',\n  'drill',\n  'drink',\n  'drip',\n  'drive',\n  'driven',\n  'driver',\n  'drop',\n  'drove',\n  'drown',\n  'drowsy',\n  'drub',\n  'drum',\n  'drunk',\n  'dry',\n  'duck',\n  'due',\n  'dug',\n  'dull',\n  'dumb',\n  'dump',\n  'during',\n  'dust',\n  'dusty',\n  'duty',\n  'dwarf',\n  'dwell',\n  'dwelt',\n  'dying',\n  'each',\n  'eager',\n  'eagle',\n  'ear',\n  'early',\n  'earn',\n  'earth',\n  'east',\n  'eastern',\n  'easy',\n  'eat',\n  'eaten',\n  'edge',\n  'egg',\n  'eh',\n  'eight',\n  'eighteen',\n  'eighth',\n  'eighty',\n  'either',\n  'elbow',\n  'elder',\n  'eldest',\n  'electric',\n  'electricity',\n  'elephant',\n  'eleven',\n  'elf',\n  'elm',\n  'else',\n  'elsewhere',\n  'empty',\n  'end',\n  'ending',\n  'enemy',\n  'engine',\n  'engineer',\n  'english',\n  'enjoy',\n  'enough',\n  'enter',\n  'envelope',\n  'equal',\n  'erase',\n  'eraser',\n  'errand',\n  'escape',\n  'eve',\n  'even',\n  'evening',\n  'ever',\n  'every',\n  'everybody',\n  'everyday',\n  'everyone',\n  'everything',\n  'everywhere',\n  'evil',\n  'exact',\n  'except',\n  'exchange',\n  'excited',\n  'exciting',\n  'excuse',\n  'exit',\n  'expect',\n  'explain',\n  'extra',\n  'eye',\n  'eyebrow',\n  'fable',\n  'face',\n  'facing',\n  'fact',\n  'factory',\n  'fail',\n  'faint',\n  'fair',\n  'fairy',\n  'faith',\n  'fake',\n  'fall',\n  'false',\n  'family',\n  'fan',\n  'fancy',\n  'far',\n  'far-off',\n  'faraway',\n  'fare',\n  'farm',\n  'farmer',\n  'farming',\n  'farther',\n  'fashion',\n  'fast',\n  'fasten',\n  'fat',\n  'father',\n  'fault',\n  'favor',\n  'favorite',\n  'fear',\n  'feast',\n  'feather',\n  'february',\n  'fed',\n  'feed',\n  'feel',\n  'feet',\n  'fell',\n  'fellow',\n  'felt',\n  'fence',\n  'fever',\n  'few',\n  'fib',\n  'fiddle',\n  'field',\n  'fife',\n  'fifteen',\n  'fifth',\n  'fifty',\n  'fig',\n  'fight',\n  'figure',\n  'file',\n  'fill',\n  'film',\n  'finally',\n  'find',\n  'fine',\n  'finger',\n  'finish',\n  'fire',\n  'firearm',\n  'firecracker',\n  'fireplace',\n  'fireworks',\n  'firing',\n  'first',\n  'fish',\n  'fisherman',\n  'fist',\n  'fit',\n  'fits',\n  'five',\n  'fix',\n  'flag',\n  'flake',\n  'flame',\n  'flap',\n  'flash',\n  'flashlight',\n  'flat',\n  'flea',\n  'flesh',\n  'flew',\n  'flies',\n  'flight',\n  'flip',\n  'flip-flop',\n  'float',\n  'flock',\n  'flood',\n  'floor',\n  'flop',\n  'flour',\n  'flow',\n  'flower',\n  'flowery',\n  'flutter',\n  'fly',\n  'foam',\n  'fog',\n  'foggy',\n  'fold',\n  'folks',\n  'follow',\n  'following',\n  'fond',\n  'food',\n  'fool',\n  'foolish',\n  'foot',\n  'football',\n  'footprint',\n  'for',\n  'forehead',\n  'forest',\n  'forget',\n  'forgive',\n  'forgot',\n  'forgotten',\n  'fork',\n  'form',\n  'fort',\n  'forth',\n  'fortune',\n  'forty',\n  'forward',\n  'fought',\n  'found',\n  'fountain',\n  'four',\n  'fourteen',\n  'fourth',\n  'fox',\n  'frame',\n  'free',\n  'freedom',\n  'freeze',\n  'freight',\n  'french',\n  'fresh',\n  'fret',\n  'friday',\n  'fried',\n  'friend',\n  'friendly',\n  'friendship',\n  'frighten',\n  'frog',\n  'from',\n  'front',\n  'frost',\n  'frown',\n  'froze',\n  'fruit',\n  'fry',\n  'fudge',\n  'fuel',\n  'full',\n  'fully',\n  'fun',\n  'funny',\n  'fur',\n  'furniture',\n  'further',\n  'fuzzy',\n  'gain',\n  'gallon',\n  'gallop',\n  'game',\n  'gang',\n  'garage',\n  'garbage',\n  'garden',\n  'gas',\n  'gasoline',\n  'gate',\n  'gather',\n  'gave',\n  'gay',\n  'gear',\n  'geese',\n  'general',\n  'gentle',\n  'gentleman',\n  'gentlemen',\n  'geography',\n  'get',\n  'getting',\n  'giant',\n  'gift',\n  'gingerbread',\n  'girl',\n  'give',\n  'given',\n  'giving',\n  'glad',\n  'gladly',\n  'glance',\n  'glass',\n  'glasses',\n  'gleam',\n  'glide',\n  'glory',\n  'glove',\n  'glow',\n  'glue',\n  'go',\n  'goal',\n  'goat',\n  'gobble',\n  'god',\n  'godmother',\n  'goes',\n  'going',\n  'gold',\n  'golden',\n  'goldfish',\n  'golf',\n  'gone',\n  'good',\n  'good-by',\n  'good-bye',\n  'good-looking',\n  'goodbye',\n  'goodness',\n  'goods',\n  'goody',\n  'goose',\n  'gooseberry',\n  'got',\n  'govern',\n  'government',\n  'gown',\n  'grab',\n  'gracious',\n  'grade',\n  'grain',\n  'grand',\n  'grandchild',\n  'grandchildren',\n  'granddaughter',\n  'grandfather',\n  'grandma',\n  'grandmother',\n  'grandpa',\n  'grandson',\n  'grandstand',\n  'grape',\n  'grapefruit',\n  'grapes',\n  'grass',\n  'grasshopper',\n  'grateful',\n  'grave',\n  'gravel',\n  'graveyard',\n  'gravy',\n  'gray',\n  'graze',\n  'grease',\n  'great',\n  'green',\n  'greet',\n  'grew',\n  'grind',\n  'groan',\n  'grocery',\n  'ground',\n  'group',\n  'grove',\n  'grow',\n  'guard',\n  'guess',\n  'guest',\n  'guide',\n  'gulf',\n  'gum',\n  'gun',\n  'gunpowder',\n  'guy',\n  'ha',\n  'habit',\n  'had',\n  \"hadn't\",\n  'hail',\n  'hair',\n  'haircut',\n  'hairpin',\n  'half',\n  'hall',\n  'halt',\n  'ham',\n  'hammer',\n  'hand',\n  'handful',\n  'handkerchief',\n  'handle',\n  'handwriting',\n  'hang',\n  'happen',\n  'happily',\n  'happiness',\n  'happy',\n  'harbor',\n  'hard',\n  'hardly',\n  'hardship',\n  'hardware',\n  'hare',\n  'hark',\n  'harm',\n  'harness',\n  'harp',\n  'harvest',\n  'has',\n  \"hasn't\",\n  'haste',\n  'hasten',\n  'hasty',\n  'hat',\n  'hatch',\n  'hatchet',\n  'hate',\n  'haul',\n  'have',\n  \"haven't\",\n  'having',\n  'hawk',\n  'hay',\n  'hayfield',\n  'haystack',\n  'he',\n  \"he'd\",\n  \"he'll\",\n  \"he's\",\n  'head',\n  'headache',\n  'heal',\n  'health',\n  'healthy',\n  'heap',\n  'hear',\n  'heard',\n  'hearing',\n  'heart',\n  'heat',\n  'heater',\n  'heaven',\n  'heavy',\n  'heel',\n  'height',\n  'held',\n  'hell',\n  'hello',\n  'helmet',\n  'help',\n  'helper',\n  'helpful',\n  'hem',\n  'hen',\n  'henhouse',\n  'her',\n  'herd',\n  'here',\n  \"here's\",\n  'hero',\n  'hers',\n  'herself',\n  'hey',\n  'hickory',\n  'hid',\n  'hidden',\n  'hide',\n  'high',\n  'highway',\n  'hill',\n  'hillside',\n  'hilltop',\n  'hilly',\n  'him',\n  'himself',\n  'hind',\n  'hint',\n  'hip',\n  'hire',\n  'his',\n  'hiss',\n  'history',\n  'hit',\n  'hitch',\n  'hive',\n  'ho',\n  'hoe',\n  'hog',\n  'hold',\n  'holder',\n  'hole',\n  'holiday',\n  'hollow',\n  'holy',\n  'home',\n  'homely',\n  'homesick',\n  'honest',\n  'honey',\n  'honeybee',\n  'honeymoon',\n  'honk',\n  'honor',\n  'hood',\n  'hoof',\n  'hook',\n  'hoop',\n  'hop',\n  'hope',\n  'hopeful',\n  'hopeless',\n  'horn',\n  'horse',\n  'horseback',\n  'horseshoe',\n  'hose',\n  'hospital',\n  'host',\n  'hot',\n  'hotel',\n  'hound',\n  'hour',\n  'house',\n  'housetop',\n  'housewife',\n  'housework',\n  'how',\n  'however',\n  'howl',\n  'hug',\n  'huge',\n  'hum',\n  'humble',\n  'hump',\n  'hundred',\n  'hung',\n  'hunger',\n  'hungry',\n  'hunk',\n  'hunt',\n  'hunter',\n  'hurrah',\n  'hurried',\n  'hurry',\n  'hurt',\n  'husband',\n  'hush',\n  'hut',\n  'hymn',\n  'i',\n  \"i'd\",\n  \"i'll\",\n  \"i'm\",\n  \"i've\",\n  'ice',\n  'icy',\n  'idea',\n  'ideal',\n  'if',\n  'ill',\n  'important',\n  'impossible',\n  'improve',\n  'in',\n  'inch',\n  'inches',\n  'income',\n  'indeed',\n  'indian',\n  'indoors',\n  'ink',\n  'inn',\n  'insect',\n  'inside',\n  'instant',\n  'instead',\n  'insult',\n  'intend',\n  'interested',\n  'interesting',\n  'into',\n  'invite',\n  'iron',\n  'is',\n  'island',\n  \"isn't\",\n  'it',\n  \"it's\",\n  'its',\n  'itself',\n  'ivory',\n  'ivy',\n  'jacket',\n  'jacks',\n  'jail',\n  'jam',\n  'january',\n  'jar',\n  'jaw',\n  'jay',\n  'jelly',\n  'jellyfish',\n  'jerk',\n  'jig',\n  'job',\n  'jockey',\n  'join',\n  'joke',\n  'joking',\n  'jolly',\n  'journey',\n  'joy',\n  'joyful',\n  'joyous',\n  'judge',\n  'jug',\n  'juice',\n  'juicy',\n  'july',\n  'jump',\n  'june',\n  'junior',\n  'junk',\n  'just',\n  'keen',\n  'keep',\n  'kept',\n  'kettle',\n  'key',\n  'kick',\n  'kid',\n  'kill',\n  'killed',\n  'kind',\n  'kindly',\n  'kindness',\n  'king',\n  'kingdom',\n  'kiss',\n  'kitchen',\n  'kite',\n  'kitten',\n  'kitty',\n  'knee',\n  'kneel',\n  'knew',\n  'knife',\n  'knit',\n  'knives',\n  'knob',\n  'knock',\n  'knot',\n  'know',\n  'known',\n  'lace',\n  'lad',\n  'ladder',\n  'ladies',\n  'lady',\n  'laid',\n  'lake',\n  'lamb',\n  'lame',\n  'lamp',\n  'land',\n  'lane',\n  'language',\n  'lantern',\n  'lap',\n  'lard',\n  'large',\n  'lash',\n  'lass',\n  'last',\n  'late',\n  'laugh',\n  'laundry',\n  'law',\n  'lawn',\n  'lawyer',\n  'lay',\n  'lazy',\n  'lead',\n  'leader',\n  'leaf',\n  'leak',\n  'lean',\n  'leap',\n  'learn',\n  'learned',\n  'least',\n  'leather',\n  'leave',\n  'leaving',\n  'led',\n  'left',\n  'leg',\n  'lemon',\n  'lemonade',\n  'lend',\n  'length',\n  'less',\n  'lesson',\n  'let',\n  \"let's\",\n  'letter',\n  'letting',\n  'lettuce',\n  'level',\n  'liberty',\n  'library',\n  'lice',\n  'lick',\n  'lid',\n  'lie',\n  'life',\n  'lift',\n  'light',\n  'lightness',\n  'lightning',\n  'like',\n  'likely',\n  'liking',\n  'lily',\n  'limb',\n  'lime',\n  'limp',\n  'line',\n  'linen',\n  'lion',\n  'lip',\n  'list',\n  'listen',\n  'lit',\n  'little',\n  'live',\n  'lively',\n  'liver',\n  'lives',\n  'living',\n  'lizard',\n  'load',\n  'loaf',\n  'loan',\n  'loaves',\n  'lock',\n  'locomotive',\n  'log',\n  'lone',\n  'lonely',\n  'lonesome',\n  'long',\n  'look',\n  'lookout',\n  'loop',\n  'loose',\n  'lord',\n  'lose',\n  'loser',\n  'loss',\n  'lost',\n  'lot',\n  'loud',\n  'love',\n  'lovely',\n  'lover',\n  'low',\n  'luck',\n  'lucky',\n  'lumber',\n  'lump',\n  'lunch',\n  'lying',\n  'ma',\n  'machine',\n  'machinery',\n  'mad',\n  'made',\n  'magazine',\n  'magic',\n  'maid',\n  'mail',\n  'mailbox',\n  'mailman',\n  'major',\n  'make',\n  'making',\n  'male',\n  'mama',\n  'mamma',\n  'man',\n  'manager',\n  'mane',\n  'manger',\n  'many',\n  'map',\n  'maple',\n  'marble',\n  'march',\n  'mare',\n  'mark',\n  'market',\n  'marriage',\n  'married',\n  'marry',\n  'mask',\n  'mast',\n  'master',\n  'mat',\n  'match',\n  'matter',\n  'mattress',\n  'may',\n  'maybe',\n  'mayor',\n  'maypole',\n  'me',\n  'meadow',\n  'meal',\n  'mean',\n  'means',\n  'meant',\n  'measure',\n  'meat',\n  'medicine',\n  'meet',\n  'meeting',\n  'melt',\n  'member',\n  'men',\n  'mend',\n  'meow',\n  'merry',\n  'mess',\n  'message',\n  'met',\n  'metal',\n  'mew',\n  'mice',\n  'middle',\n  'midnight',\n  'might',\n  'mighty',\n  'mile',\n  'miler',\n  'milk',\n  'milkman',\n  'mill',\n  'million',\n  'mind',\n  'mine',\n  'miner',\n  'mint',\n  'minute',\n  'mirror',\n  'mischief',\n  'miss',\n  'misspell',\n  'mistake',\n  'misty',\n  'mitt',\n  'mitten',\n  'mix',\n  'moment',\n  'monday',\n  'money',\n  'monkey',\n  'month',\n  'moo',\n  'moon',\n  'moonlight',\n  'moose',\n  'mop',\n  'more',\n  'morning',\n  'morrow',\n  'moss',\n  'most',\n  'mostly',\n  'mother',\n  'motor',\n  'mount',\n  'mountain',\n  'mouse',\n  'mouth',\n  'move',\n  'movie',\n  'movies',\n  'moving',\n  'mow',\n  'mr.',\n  'mrs.',\n  'much',\n  'mud',\n  'muddy',\n  'mug',\n  'mule',\n  'multiply',\n  'murder',\n  'music',\n  'must',\n  'my',\n  'myself',\n  'nail',\n  'name',\n  'nap',\n  'napkin',\n  'narrow',\n  'nasty',\n  'naughty',\n  'navy',\n  'near',\n  'nearby',\n  'nearly',\n  'neat',\n  'neck',\n  'necktie',\n  'need',\n  'needle',\n  \"needn't\",\n  'negro',\n  'neighbor',\n  'neighborhood',\n  'neither',\n  'nerve',\n  'nest',\n  'net',\n  'never',\n  'nevermore',\n  'new',\n  'news',\n  'newspaper',\n  'next',\n  'nibble',\n  'nice',\n  'nickel',\n  'night',\n  'nightgown',\n  'nine',\n  'nineteen',\n  'ninety',\n  'no',\n  'nobody',\n  'nod',\n  'noise',\n  'noisy',\n  'none',\n  'noon',\n  'nor',\n  'north',\n  'northern',\n  'nose',\n  'not',\n  'note',\n  'nothing',\n  'notice',\n  'november',\n  'now',\n  'nowhere',\n  'number',\n  'nurse',\n  'nut',\n  \"o'clock\",\n  'oak',\n  'oar',\n  'oatmeal',\n  'oats',\n  'obey',\n  'ocean',\n  'october',\n  'odd',\n  'of',\n  'off',\n  'offer',\n  'office',\n  'officer',\n  'often',\n  'oh',\n  'oil',\n  'old',\n  'old-fashioned',\n  'on',\n  'once',\n  'one',\n  'onion',\n  'only',\n  'onward',\n  'open',\n  'or',\n  'orange',\n  'orchard',\n  'order',\n  'ore',\n  'organ',\n  'other',\n  'otherwise',\n  'ouch',\n  'ought',\n  'our',\n  'ours',\n  'ourselves',\n  'out',\n  'outdoors',\n  'outfit',\n  'outlaw',\n  'outline',\n  'outside',\n  'outward',\n  'oven',\n  'over',\n  'overalls',\n  'overcoat',\n  'overeat',\n  'overhead',\n  'overhear',\n  'overnight',\n  'overturn',\n  'owe',\n  'owing',\n  'owl',\n  'own',\n  'owner',\n  'ox',\n  'pa',\n  'pace',\n  'pack',\n  'package',\n  'pad',\n  'page',\n  'paid',\n  'pail',\n  'pain',\n  'painful',\n  'paint',\n  'painter',\n  'painting',\n  'pair',\n  'pal',\n  'palace',\n  'pale',\n  'pan',\n  'pancake',\n  'pane',\n  'pansy',\n  'pants',\n  'papa',\n  'paper',\n  'parade',\n  'pardon',\n  'parent',\n  'park',\n  'part',\n  'partly',\n  'partner',\n  'party',\n  'pass',\n  'passenger',\n  'past',\n  'paste',\n  'pasture',\n  'pat',\n  'patch',\n  'path',\n  'patter',\n  'pave',\n  'pavement',\n  'paw',\n  'pay',\n  'payment',\n  'pea',\n  'peace',\n  'peaceful',\n  'peach',\n  'peaches',\n  'peak',\n  'peanut',\n  'pear',\n  'pearl',\n  'peas',\n  'peck',\n  'peek',\n  'peel',\n  'peep',\n  'peg',\n  'pen',\n  'pencil',\n  'penny',\n  'people',\n  'pepper',\n  'peppermint',\n  'perfume',\n  'perhaps',\n  'person',\n  'pet',\n  'phone',\n  'piano',\n  'pick',\n  'pickle',\n  'picnic',\n  'picture',\n  'pie',\n  'piece',\n  'pig',\n  'pigeon',\n  'piggy',\n  'pile',\n  'pill',\n  'pillow',\n  'pin',\n  'pine',\n  'pineapple',\n  'pink',\n  'pint',\n  'pipe',\n  'pistol',\n  'pit',\n  'pitch',\n  'pitcher',\n  'pity',\n  'place',\n  'plain',\n  'plan',\n  'plane',\n  'plant',\n  'plate',\n  'platform',\n  'platter',\n  'play',\n  'player',\n  'playground',\n  'playhouse',\n  'playmate',\n  'plaything',\n  'pleasant',\n  'please',\n  'pleasure',\n  'plenty',\n  'plow',\n  'plug',\n  'plum',\n  'pocket',\n  'pocketbook',\n  'poem',\n  'point',\n  'poison',\n  'poke',\n  'pole',\n  'police',\n  'policeman',\n  'polish',\n  'polite',\n  'pond',\n  'ponies',\n  'pony',\n  'pool',\n  'poor',\n  'pop',\n  'popcorn',\n  'popped',\n  'porch',\n  'pork',\n  'possible',\n  'post',\n  'postage',\n  'postman',\n  'pot',\n  'potato',\n  'potatoes',\n  'pound',\n  'pour',\n  'powder',\n  'power',\n  'powerful',\n  'praise',\n  'pray',\n  'prayer',\n  'prepare',\n  'present',\n  'pretty',\n  'price',\n  'prick',\n  'prince',\n  'princess',\n  'print',\n  'prison',\n  'prize',\n  'promise',\n  'proper',\n  'protect',\n  'proud',\n  'prove',\n  'prune',\n  'public',\n  'puddle',\n  'puff',\n  'pull',\n  'pump',\n  'pumpkin',\n  'punch',\n  'punish',\n  'pup',\n  'pupil',\n  'puppy',\n  'pure',\n  'purple',\n  'purse',\n  'push',\n  'puss',\n  'pussy',\n  'pussycat',\n  'put',\n  'putting',\n  'puzzle',\n  'quack',\n  'quart',\n  'quarter',\n  'queen',\n  'queer',\n  'question',\n  'quick',\n  'quickly',\n  'quiet',\n  'quilt',\n  'quit',\n  'quite',\n  'rabbit',\n  'race',\n  'rack',\n  'radio',\n  'radish',\n  'rag',\n  'rail',\n  'railroad',\n  'railway',\n  'rain',\n  'rainbow',\n  'rainy',\n  'raise',\n  'raisin',\n  'rake',\n  'ram',\n  'ran',\n  'ranch',\n  'rang',\n  'rap',\n  'rapidly',\n  'rat',\n  'rate',\n  'rather',\n  'rattle',\n  'raw',\n  'ray',\n  'reach',\n  'read',\n  'reader',\n  'reading',\n  'ready',\n  'real',\n  'really',\n  'reap',\n  'rear',\n  'reason',\n  'rebuild',\n  'receive',\n  'recess',\n  'record',\n  'red',\n  'redbird',\n  'redbreast',\n  'refuse',\n  'reindeer',\n  'rejoice',\n  'remain',\n  'remember',\n  'remind',\n  'remove',\n  'rent',\n  'repair',\n  'repay',\n  'repeat',\n  'report',\n  'rest',\n  'return',\n  'review',\n  'reward',\n  'rib',\n  'ribbon',\n  'rice',\n  'rich',\n  'rid',\n  'riddle',\n  'ride',\n  'rider',\n  'riding',\n  'right',\n  'rim',\n  'ring',\n  'rip',\n  'ripe',\n  'rise',\n  'rising',\n  'river',\n  'road',\n  'roadside',\n  'roar',\n  'roast',\n  'rob',\n  'robber',\n  'robe',\n  'robin',\n  'rock',\n  'rocket',\n  'rocky',\n  'rode',\n  'roll',\n  'roller',\n  'roof',\n  'room',\n  'rooster',\n  'root',\n  'rope',\n  'rose',\n  'rosebud',\n  'rot',\n  'rotten',\n  'rough',\n  'round',\n  'route',\n  'row',\n  'rowboat',\n  'royal',\n  'rub',\n  'rubbed',\n  'rubber',\n  'rubbish',\n  'rug',\n  'rule',\n  'ruler',\n  'rumble',\n  'run',\n  'rung',\n  'runner',\n  'running',\n  'rush',\n  'rust',\n  'rusty',\n  'rye',\n  'sack',\n  'sad',\n  'saddle',\n  'sadness',\n  'safe',\n  'safety',\n  'said',\n  'sail',\n  'sailboat',\n  'sailor',\n  'saint',\n  'salad',\n  'sale',\n  'salt',\n  'same',\n  'sand',\n  'sandwich',\n  'sandy',\n  'sang',\n  'sank',\n  'sap',\n  'sash',\n  'sat',\n  'satin',\n  'satisfactory',\n  'saturday',\n  'sausage',\n  'savage',\n  'save',\n  'savings',\n  'saw',\n  'say',\n  'scab',\n  'scales',\n  'scare',\n  'scarf',\n  'school',\n  'schoolboy',\n  'schoolhouse',\n  'schoolmaster',\n  'schoolroom',\n  'scorch',\n  'score',\n  'scrap',\n  'scrape',\n  'scratch',\n  'scream',\n  'screen',\n  'screw',\n  'scrub',\n  'sea',\n  'seal',\n  'seam',\n  'search',\n  'season',\n  'seat',\n  'second',\n  'secret',\n  'see',\n  'seed',\n  'seeing',\n  'seek',\n  'seem',\n  'seen',\n  'seesaw',\n  'select',\n  'self',\n  'selfish',\n  'sell',\n  'send',\n  'sense',\n  'sent',\n  'sentence',\n  'separate',\n  'september',\n  'servant',\n  'serve',\n  'service',\n  'set',\n  'setting',\n  'settle',\n  'settlement',\n  'seven',\n  'seventeen',\n  'seventh',\n  'seventy',\n  'several',\n  'sew',\n  'shade',\n  'shadow',\n  'shady',\n  'shake',\n  'shaker',\n  'shaking',\n  'shall',\n  'shame',\n  \"shan't\",\n  'shape',\n  'share',\n  'sharp',\n  'shave',\n  'she',\n  \"she'd\",\n  \"she'll\",\n  \"she's\",\n  'shear',\n  'shears',\n  'shed',\n  'sheep',\n  'sheet',\n  'shelf',\n  'shell',\n  'shepherd',\n  'shine',\n  'shining',\n  'shiny',\n  'ship',\n  'shirt',\n  'shock',\n  'shoe',\n  'shoemaker',\n  'shone',\n  'shook',\n  'shoot',\n  'shop',\n  'shopping',\n  'shore',\n  'short',\n  'shot',\n  'should',\n  'shoulder',\n  \"shouldn't\",\n  'shout',\n  'shovel',\n  'show',\n  'shower',\n  'shut',\n  'shy',\n  'sick',\n  'sickness',\n  'side',\n  'sidewalk',\n  'sideways',\n  'sigh',\n  'sight',\n  'sign',\n  'silence',\n  'silent',\n  'silk',\n  'sill',\n  'silly',\n  'silver',\n  'simple',\n  'sin',\n  'since',\n  'sing',\n  'singer',\n  'single',\n  'sink',\n  'sip',\n  'sir',\n  'sis',\n  'sissy',\n  'sister',\n  'sit',\n  'sitting',\n  'six',\n  'sixteen',\n  'sixth',\n  'sixty',\n  'size',\n  'skate',\n  'skater',\n  'ski',\n  'skin',\n  'skip',\n  'skirt',\n  'sky',\n  'slam',\n  'slap',\n  'slate',\n  'slave',\n  'sled',\n  'sleep',\n  'sleepy',\n  'sleeve',\n  'sleigh',\n  'slept',\n  'slice',\n  'slid',\n  'slide',\n  'sling',\n  'slip',\n  'slipped',\n  'slipper',\n  'slippery',\n  'slit',\n  'slow',\n  'slowly',\n  'sly',\n  'smack',\n  'small',\n  'smart',\n  'smell',\n  'smile',\n  'smoke',\n  'smooth',\n  'snail',\n  'snake',\n  'snap',\n  'snapping',\n  'sneeze',\n  'snow',\n  'snowball',\n  'snowflake',\n  'snowy',\n  'snuff',\n  'snug',\n  'so',\n  'soak',\n  'soap',\n  'sob',\n  'socks',\n  'sod',\n  'soda',\n  'sofa',\n  'soft',\n  'soil',\n  'sold',\n  'soldier',\n  'sole',\n  'some',\n  'somebody',\n  'somehow',\n  'someone',\n  'something',\n  'sometime',\n  'sometimes',\n  'somewhere',\n  'son',\n  'song',\n  'soon',\n  'sore',\n  'sorrow',\n  'sorry',\n  'sort',\n  'soul',\n  'sound',\n  'soup',\n  'sour',\n  'south',\n  'southern',\n  'space',\n  'spade',\n  'spank',\n  'sparrow',\n  'speak',\n  'speaker',\n  'spear',\n  'speech',\n  'speed',\n  'spell',\n  'spelling',\n  'spend',\n  'spent',\n  'spider',\n  'spike',\n  'spill',\n  'spin',\n  'spinach',\n  'spirit',\n  'spit',\n  'splash',\n  'spoil',\n  'spoke',\n  'spook',\n  'spoon',\n  'sport',\n  'spot',\n  'spread',\n  'spring',\n  'springtime',\n  'sprinkle',\n  'square',\n  'squash',\n  'squeak',\n  'squeeze',\n  'squirrel',\n  'stable',\n  'stack',\n  'stage',\n  'stair',\n  'stall',\n  'stamp',\n  'stand',\n  'star',\n  'stare',\n  'start',\n  'starve',\n  'state',\n  'states',\n  'station',\n  'stay',\n  'steak',\n  'steal',\n  'steam',\n  'steamboat',\n  'steamer',\n  'steel',\n  'steep',\n  'steeple',\n  'steer',\n  'stem',\n  'step',\n  'stepping',\n  'stick',\n  'sticky',\n  'stiff',\n  'still',\n  'stillness',\n  'sting',\n  'stir',\n  'stitch',\n  'stock',\n  'stocking',\n  'stole',\n  'stone',\n  'stood',\n  'stool',\n  'stoop',\n  'stop',\n  'stopped',\n  'stopping',\n  'store',\n  'stories',\n  'stork',\n  'storm',\n  'stormy',\n  'story',\n  'stove',\n  'straight',\n  'strange',\n  'stranger',\n  'strap',\n  'straw',\n  'strawberry',\n  'stream',\n  'street',\n  'stretch',\n  'string',\n  'strip',\n  'stripes',\n  'strong',\n  'stuck',\n  'study',\n  'stuff',\n  'stump',\n  'stung',\n  'subject',\n  'such',\n  'suck',\n  'sudden',\n  'suffer',\n  'sugar',\n  'suit',\n  'sum',\n  'summer',\n  'sun',\n  'sunday',\n  'sunflower',\n  'sung',\n  'sunk',\n  'sunlight',\n  'sunny',\n  'sunrise',\n  'sunset',\n  'sunshine',\n  'supper',\n  'suppose',\n  'sure',\n  'surely',\n  'surface',\n  'surprise',\n  'swallow',\n  'swam',\n  'swamp',\n  'swan',\n  'swat',\n  'swear',\n  'sweat',\n  'sweater',\n  'sweep',\n  'sweet',\n  'sweetheart',\n  'sweetness',\n  'swell',\n  'swept',\n  'swift',\n  'swim',\n  'swimming',\n  'swing',\n  'switch',\n  'sword',\n  'swore',\n  'table',\n  'tablecloth',\n  'tablespoon',\n  'tablet',\n  'tack',\n  'tag',\n  'tail',\n  'tailor',\n  'take',\n  'taken',\n  'taking',\n  'tale',\n  'talk',\n  'talker',\n  'tall',\n  'tame',\n  'tan',\n  'tank',\n  'tap',\n  'tape',\n  'tar',\n  'tardy',\n  'task',\n  'taste',\n  'taught',\n  'tax',\n  'tea',\n  'teach',\n  'teacher',\n  'team',\n  'tear',\n  'tease',\n  'teaspoon',\n  'teeth',\n  'telephone',\n  'tell',\n  'temper',\n  'ten',\n  'tennis',\n  'tent',\n  'term',\n  'terrible',\n  'test',\n  'than',\n  'thank',\n  'thankful',\n  'thanks',\n  'thanksgiving',\n  'that',\n  \"that's\",\n  'the',\n  'theater',\n  'thee',\n  'their',\n  'them',\n  'then',\n  'there',\n  'these',\n  'they',\n  \"they'd\",\n  \"they'll\",\n  \"they're\",\n  \"they've\",\n  'thick',\n  'thief',\n  'thimble',\n  'thin',\n  'thing',\n  'think',\n  'third',\n  'thirsty',\n  'thirteen',\n  'thirty',\n  'this',\n  'thorn',\n  'those',\n  'though',\n  'thought',\n  'thousand',\n  'thread',\n  'three',\n  'threw',\n  'throat',\n  'throne',\n  'through',\n  'throw',\n  'thrown',\n  'thumb',\n  'thunder',\n  'thursday',\n  'thy',\n  'tick',\n  'ticket',\n  'tickle',\n  'tie',\n  'tiger',\n  'tight',\n  'till',\n  'time',\n  'tin',\n  'tinkle',\n  'tiny',\n  'tip',\n  'tiptoe',\n  'tire',\n  'tired',\n  'title',\n  'to',\n  'toad',\n  'toadstool',\n  'toast',\n  'tobacco',\n  'today',\n  'toe',\n  'together',\n  'toilet',\n  'told',\n  'tomato',\n  'tomorrow',\n  'ton',\n  'tone',\n  'tongue',\n  'tonight',\n  'too',\n  'took',\n  'tool',\n  'toot',\n  'tooth',\n  'toothbrush',\n  'toothpick',\n  'top',\n  'tore',\n  'torn',\n  'toss',\n  'touch',\n  'tow',\n  'toward',\n  'towards',\n  'towel',\n  'tower',\n  'town',\n  'toy',\n  'trace',\n  'track',\n  'trade',\n  'train',\n  'tramp',\n  'trap',\n  'tray',\n  'treasure',\n  'treat',\n  'tree',\n  'trick',\n  'tricycle',\n  'tried',\n  'trim',\n  'trip',\n  'trolley',\n  'trouble',\n  'truck',\n  'true',\n  'truly',\n  'trunk',\n  'trust',\n  'truth',\n  'try',\n  'tub',\n  'tuesday',\n  'tug',\n  'tulip',\n  'tumble',\n  'tune',\n  'tunnel',\n  'turkey',\n  'turn',\n  'turtle',\n  'twelve',\n  'twenty',\n  'twice',\n  'twig',\n  'twin',\n  'two',\n  'ugly',\n  'umbrella',\n  'uncle',\n  'under',\n  'understand',\n  'underwear',\n  'undress',\n  'unfair',\n  'unfinished',\n  'unfold',\n  'unfriendly',\n  'unhappy',\n  'unhurt',\n  'uniform',\n  'united',\n  'unkind',\n  'unknown',\n  'unless',\n  'unpleasant',\n  'until',\n  'unwilling',\n  'up',\n  'upon',\n  'upper',\n  'upset',\n  'upside',\n  'upstairs',\n  'uptown',\n  'upward',\n  'us',\n  'use',\n  'used',\n  'useful',\n  'valentine',\n  'valley',\n  'valuable',\n  'value',\n  'vase',\n  'vegetable',\n  'velvet',\n  'very',\n  'vessel',\n  'victory',\n  'view',\n  'village',\n  'vine',\n  'violet',\n  'visit',\n  'visitor',\n  'voice',\n  'vote',\n  'wag',\n  'wagon',\n  'waist',\n  'wait',\n  'wake',\n  'waken',\n  'walk',\n  'wall',\n  'walnut',\n  'want',\n  'war',\n  'warm',\n  'warn',\n  'was',\n  'wash',\n  'washer',\n  'washtub',\n  \"wasn't\",\n  'waste',\n  'watch',\n  'watchman',\n  'water',\n  'watermelon',\n  'waterproof',\n  'wave',\n  'wax',\n  'way',\n  'wayside',\n  'we',\n  \"we'd\",\n  \"we'll\",\n  \"we're\",\n  \"we've\",\n  'weak',\n  'weaken',\n  'weakness',\n  'wealth',\n  'weapon',\n  'wear',\n  'weary',\n  'weather',\n  'weave',\n  'web',\n  'wedding',\n  'wednesday',\n  'wee',\n  'weed',\n  'week',\n  'weep',\n  'weigh',\n  'welcome',\n  'well',\n  'went',\n  'were',\n  'west',\n  'western',\n  'wet',\n  'whale',\n  'what',\n  \"what's\",\n  'wheat',\n  'wheel',\n  'when',\n  'whenever',\n  'where',\n  'which',\n  'while',\n  'whip',\n  'whipped',\n  'whirl',\n  'whiskey',\n  'whisky',\n  'whisper',\n  'whistle',\n  'white',\n  'who',\n  \"who'd\",\n  \"who'll\",\n  \"who's\",\n  'whole',\n  'whom',\n  'whose',\n  'why',\n  'wicked',\n  'wide',\n  'wife',\n  'wiggle',\n  'wild',\n  'wildcat',\n  'will',\n  'willing',\n  'willow',\n  'win',\n  'wind',\n  'windmill',\n  'window',\n  'windy',\n  'wine',\n  'wing',\n  'wink',\n  'winner',\n  'winter',\n  'wipe',\n  'wire',\n  'wise',\n  'wish',\n  'wit',\n  'witch',\n  'with',\n  'without',\n  'woke',\n  'wolf',\n  'woman',\n  'women',\n  'won',\n  \"won't\",\n  'wonder',\n  'wonderful',\n  'wood',\n  'wooden',\n  'woodpecker',\n  'woods',\n  'wool',\n  'woolen',\n  'word',\n  'wore',\n  'work',\n  'worker',\n  'workman',\n  'world',\n  'worm',\n  'worn',\n  'worry',\n  'worse',\n  'worst',\n  'worth',\n  'would',\n  \"wouldn't\",\n  'wound',\n  'wove',\n  'wrap',\n  'wrapped',\n  'wreck',\n  'wren',\n  'wring',\n  'write',\n  'writing',\n  'written',\n  'wrong',\n  'wrote',\n  'wrung',\n  'yard',\n  'yarn',\n  'year',\n  'yell',\n  'yellow',\n  'yes',\n  'yesterday',\n  'yet',\n  'yolk',\n  'yonder',\n  'you',\n  \"you'd\",\n  \"you'll\",\n  \"you're\",\n  \"you've\",\n  'young',\n  'youngster',\n  'your',\n  'yours',\n  'yourself',\n  'yourselves',\n  'youth'\n]\n", "/**\n * @typedef Counts\n *   Counts from input document.\n * @property {number} sentence\n *   Number of sentences.\n * @property {number} word\n *   Number of words.\n * @property {number} [difficultWord=0]\n *   Number of difficult words.\n */\n\n/**\n * @typedef {Counts} DaleChallFormulaCounts\n *   Deprecated: please use the `Counts` type instead.\n */\n\nconst difficultWordWeight = 0.1579\nconst wordWeight = 0.0496\nconst difficultWordThreshold = 0.05\nconst percentage = 100\nconst adjustment = 3.6365\n\n// Grade map associated with the scores.\n/** @type {Record<string, [number, number]>} */\nconst gradeMap = {\n  4: [0, 4],\n  5: [5, 6],\n  6: [7, 8],\n  7: [9, 10],\n  8: [11, 12],\n  9: [13, 15],\n  10: [16, Number.POSITIVE_INFINITY],\n  NaN: [Number.NaN, Number.NaN]\n}\n\n/**\n * Given the number of words (`word`), the number of sentences (`sentence`),\n * and the number of unique unfamiliar words in a document (`difficultWord`),\n * returns the score associated with the document.\n *\n * @param {Counts} counts\n *   Counts from input document.\n * @return {number}\n *   Score representing ease of reading.\n *\n *   Pass it to `daleChallGradeLevel` to get grade levels.\n */\nexport function daleChallFormula(counts) {\n  if (!counts || !counts.sentence || !counts.word) {\n    return Number.NaN\n  }\n\n  const percentageOfDifficultWords = (counts.difficultWord || 0) / counts.word\n  let score =\n    difficultWordWeight * percentageOfDifficultWords * percentage +\n    (wordWeight * counts.word) / counts.sentence\n\n  if (percentageOfDifficultWords > difficultWordThreshold) {\n    score += adjustment\n  }\n\n  return score\n}\n\n/**\n * Turn a dale\u2013chall score into U.S. grade levels.\n *\n * @param {number} score\n *   Score representing ease of reading.\n * @returns {[number, number]}\n *   Grade levels.\n *\n *   |        Score | Corresponding grade level               | Return value     |\n *   | -----------: | --------------------------------------- | ---------------- |\n *   |  Less than 5 | Grade 4 and lower                       | `[0, 4]`         |\n *   |  Less than 6 | Grades 5 and 6                          | `[5, 6]`         |\n *   |  Less than 7 | Grades 7 and 8                          | `[7, 8]`         |\n *   |  Less than 8 | Grades 9 and 10                         | `[9, 10]`        |\n *   |  Less than 9 | Grades 11 and 12                        | `[11, 12]`       |\n *   | Less than 10 | Grades 13 and 15 (College)              | `[13, 15]`       |\n *   |       Higher | Grades 16 and higher (College Graduate) | `[16, Infinity]` |\n */\nexport function daleChallGradeLevel(score) {\n  let floored = Math.floor(score)\n\n  if (floored < 5) {\n    floored = 4\n  } else if (floored > 9) {\n    floored = 10\n  }\n\n  // @ts-expect-error: fine.\n  return gradeMap[floored].concat()\n}\n", "/**\n * @typedef Counts\n *   Counts from input document.\n * @property {number} sentence\n *   Number of sentences.\n * @property {number} word\n *   Number of words.\n * @property {number} syllable\n *   Number of syllables.\n */\n\n/**\n * @typedef {Counts} FleschCounts\n *   Deprecated: please use the `Counts` type instead.\n */\n\nconst sentenceWeight = 1.015\nconst wordWeight = 84.6\nconst base = 206.835\n\n/**\n * Given an object containing the number of words (`word`), the number of\n * sentences (`sentence`), and the number of syllables  (`syllable`) in a\n * document, returns the reading ease associated with the document.\n *\n * @param {Counts} counts\n *   Counts from input document.\n * @returns {number}\n *   Result is `120` (every sentence consisting of only two one-syllable words)\n *   or lower (including negative values).\n *\n *   The values have the following semantics:\n *\n *   |     Score    | Semantics                                           |\n *   | :----------: | :-------------------------------------------------- |\n *   | 90.0 \u2013 100.0 | Easily understood by an average 11-year-old student |\n *   |  60.0 \u2013 70.0 | Easily understood by 13- to 15-year-old students    |\n *   |  0.0 \u2013 30.0  | Best understood by university graduates             |\n *\n *   Therefore we can use the following formula to approximate the average age\n *   a student would understand a document at, given score `score`:\n *\n *   ```js\n *   const age = 20 - Math.floor(score / 10)\n *   ```\n */\nexport function flesch(counts) {\n  if (!counts || !counts.sentence || !counts.word || !counts.syllable) {\n    return Number.NaN\n  }\n\n  return (\n    base -\n    sentenceWeight * (counts.word / counts.sentence) -\n    wordWeight * (counts.syllable / counts.word)\n  )\n}\n", "/**\n * @typedef Counts\n *   Counts from input document.\n * @property {number} sentence\n *   Number of sentences.\n * @property {number} word\n *   Number of words.\n * @property {number} [complexPolysillabicWord=0]\n *   Number of words that consist of three or more syllables, that are jargon,\n *   proper nouns, or compound words.\n */\n\n/**\n * @typedef {Counts} GunningFogCounts\n *   Deprecated: please use the `Counts` type instead.\n */\n\nconst complexWordWeight = 100\nconst weight = 0.4\n\n/**\n * Given an object containing the number of words (`word`), the number of\n * sentences (`sentence`), and the number of complex (i.e., jargon, proper\n * nouns, compound words) polysillabic (three or more syllables) words\n * (`complexPolysillabicWord`) in a document, returns the grade level\n * associated with the document.\n *\n * @param {Counts} counts\n *   Counts from input document.\n * @returns {number}\n *   Grade level associated with the document.\n */\nexport function gunningFog(counts) {\n  if (!counts || !counts.sentence || !counts.word) {\n    return Number.NaN\n  }\n\n  return (\n    weight *\n    (counts.word / counts.sentence +\n      complexWordWeight * ((counts.complexPolysillabicWord || 0) / counts.word))\n  )\n}\n", "/**\n * @typedef {import('nlcst').Nodes} Nodes\n */\n\n/** @type {Readonly<Array<Nodes>>} */\nconst emptyNodes = []\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node\u2019s plain-text fields, otherwise serializes its children, and\n * if the given value is an array, serialize the nodes in it.\n *\n * @param {Array<Nodes> | Nodes} value\n *   Node or list of nodes to serialize.\n * @returns {string}\n *   Result.\n */\nexport function toString(value) {\n  let index = -1\n\n  if (!value || (!Array.isArray(value) && !value.type)) {\n    throw new Error('Expected node, not `' + value + '`')\n  }\n\n  if ('value' in value) return value.value\n\n  const children = (Array.isArray(value) ? value : value.children) || emptyNodes\n\n  /** @type {Array<string>} */\n  const values = []\n\n  while (++index < children.length) {\n    values[index] = toString(children[index])\n  }\n\n  return values.join('')\n}\n", "/**\n * @typedef Counts\n *   Counts from input document.\n * @property {number} sentence\n *   Number of sentences.\n * @property {number} [polysillabicWord]\n *   Number of polysillabic (three or more syllables) words.\n */\n\n/**\n * @typedef {Counts} SmogFormulaCounts\n *   Deprecated: please use the `Counts` type instead.\n */\n\nconst sentenceSize = 30\nconst weight = 1.043\nconst base = 3.1291\n\n/**\n * Given an object containing the number of sentences (`sentence`) and the\n * number of polysillabic (three or more syllables) words (`polysillabicWord`)\n * in a document, returns the reading ease associated with the document.\n *\n * @param {Counts} counts\n *   Counts from input document.\n * @returns {number}\n *   Reading ease associated with the document.\n */\nexport function smogFormula(counts) {\n  if (!counts || !counts.sentence) {\n    return Number.NaN\n  }\n\n  return (\n    base +\n    weight *\n      Math.sqrt(\n        (counts.polysillabicWord || 0) * (sentenceSize / counts.sentence)\n      )\n  )\n}\n", "/**\n * List of familiar American-English words: Revised Spache (1974)\n */\nexport const spache = [\n  'a',\n  'able',\n  'about',\n  'above',\n  'across',\n  'act',\n  'add',\n  'afraid',\n  'after',\n  'afternoon',\n  'again',\n  'against',\n  'ago',\n  'air',\n  'airplane',\n  'alarm',\n  'all',\n  'almost',\n  'alone',\n  'along',\n  'already',\n  'also',\n  'always',\n  'am',\n  'among',\n  'an',\n  'and',\n  'angry',\n  'animal',\n  'another',\n  'answer',\n  'any',\n  'anyone',\n  'appear',\n  'apple',\n  'are',\n  'arm',\n  'around',\n  'arrow',\n  'as',\n  'ask',\n  'asleep',\n  'at',\n  'ate',\n  'attention',\n  'aunt',\n  'awake',\n  'away',\n  'b',\n  'baby',\n  'back',\n  'bad',\n  'bag',\n  'ball',\n  'balloon',\n  'bang',\n  'bank',\n  'bark',\n  'barn',\n  'basket',\n  'be',\n  'bean',\n  'bear',\n  'beat',\n  'beautiful',\n  'became',\n  'because',\n  'become',\n  'bed',\n  'bee',\n  'been',\n  'before',\n  'began',\n  'begin',\n  'behind',\n  'believe',\n  'bell',\n  'belong',\n  'bend',\n  'bent',\n  'beside',\n  'best',\n  'better',\n  'between',\n  'big',\n  'bird',\n  'birthday',\n  'bit',\n  'bite',\n  'black',\n  'blanket',\n  'blew',\n  'block',\n  'blow',\n  'blue',\n  'board',\n  'boat',\n  'book',\n  'boot',\n  'born',\n  'borrow',\n  'both',\n  'bother',\n  'bottle',\n  'bottom',\n  'bought',\n  'bow',\n  'box',\n  'boy',\n  'branch',\n  'brave',\n  'bread',\n  'break',\n  'breakfast',\n  'breath',\n  'brick',\n  'bridge',\n  'bright',\n  'bring',\n  'broke',\n  'broken',\n  'brother',\n  'brought',\n  'brown',\n  'brush',\n  'build',\n  'bump',\n  'burn',\n  'bus',\n  'busy',\n  'but',\n  'butter',\n  'button',\n  'buy',\n  'by',\n  'c',\n  'cabin',\n  'cage',\n  'cake',\n  'call',\n  'came',\n  'camp',\n  'can',\n  \"can't\",\n  'candle',\n  'candy',\n  'cap',\n  'captain',\n  'car',\n  'card',\n  'care',\n  'careful',\n  'carrot',\n  'carry',\n  'case',\n  'castle',\n  'cat',\n  'catch',\n  'cattle',\n  'caught',\n  'cause',\n  'cent',\n  'certain',\n  'chair',\n  'chance',\n  'change',\n  'chase',\n  'chicken',\n  'chief',\n  'child',\n  'children',\n  'church',\n  'circle',\n  'circus',\n  'city',\n  'clap',\n  'clean',\n  'clever',\n  'cliff',\n  'climb',\n  'clock',\n  'close',\n  'cloth',\n  'clothes',\n  'clown',\n  'coat',\n  'cold',\n  'color',\n  'come',\n  'comfortable',\n  'company',\n  'contest',\n  'continue',\n  'cook',\n  'cool',\n  'corner',\n  'could',\n  'count',\n  'country',\n  'course',\n  'cover',\n  'cow',\n  'crawl',\n  'cream',\n  'cry',\n  'cup',\n  'curtain',\n  'cut',\n  'd',\n  'dad',\n  'dance',\n  'danger',\n  'dangerous',\n  'dark',\n  'dash',\n  'daughter',\n  'day',\n  'dear',\n  'decide',\n  'deep',\n  'desk',\n  'did',\n  \"didn't\",\n  'die',\n  'different',\n  'dig',\n  'dinner',\n  'direction',\n  'disappear',\n  'disappoint',\n  'discover',\n  'distance',\n  'do',\n  'doctor',\n  'does',\n  'dog',\n  'dollar',\n  \"don't\",\n  'done',\n  'door',\n  'down',\n  'dragon',\n  'dream',\n  'dress',\n  'drink',\n  'drive',\n  'drop',\n  'drove',\n  'dry',\n  'duck',\n  'during',\n  'dust',\n  'e',\n  'each',\n  'eager',\n  'ear',\n  'early',\n  'earn',\n  'earth',\n  'easy',\n  'eat',\n  'edge',\n  'egg',\n  'eight',\n  'eighteen',\n  'either',\n  'elephant',\n  'else',\n  'empty',\n  'end',\n  'enemy',\n  'enough',\n  'enter',\n  'even',\n  'ever',\n  'every',\n  'everything',\n  'exact',\n  'except',\n  'excite',\n  'exclaim',\n  'explain',\n  'eye',\n  'face',\n  'fact',\n  'fair',\n  'fall',\n  'family',\n  'far',\n  'farm',\n  'farmer',\n  'farther',\n  'fast',\n  'fat',\n  'father',\n  'feather',\n  'feed',\n  'feel',\n  'feet',\n  'fell',\n  'fellow',\n  'felt',\n  'fence',\n  'few',\n  'field',\n  'fierce',\n  'fight',\n  'figure',\n  'fill',\n  'final',\n  'find',\n  'fine',\n  'finger',\n  'finish',\n  'fire',\n  'first',\n  'fish',\n  'five',\n  'flag',\n  'flash',\n  'flat',\n  'flew',\n  'floor',\n  'flower',\n  'fly',\n  'follow',\n  'food',\n  'for',\n  'forest',\n  'forget',\n  'forth',\n  'found',\n  'four',\n  'fourth',\n  'fox',\n  'fresh',\n  'friend',\n  'frighten',\n  'frog',\n  'from',\n  'front',\n  'fruit',\n  'full',\n  'fun',\n  'funny',\n  'fur',\n  'g',\n  'game',\n  'garden',\n  'gasp',\n  'gate',\n  'gave',\n  'get',\n  'giant',\n  'gift',\n  'girl',\n  'give',\n  'glad',\n  'glass',\n  'go',\n  'goat',\n  'gone',\n  'good',\n  'got',\n  'grandfather',\n  'grandmother',\n  'grass',\n  'gray',\n  'great',\n  'green',\n  'grew',\n  'grin',\n  'ground',\n  'group',\n  'grow',\n  'growl',\n  'guess',\n  'gun',\n  'h',\n  'had',\n  'hair',\n  'half',\n  'hall',\n  'hand',\n  'handle',\n  'hang',\n  'happen',\n  'happiness',\n  'happy',\n  'hard',\n  'harm',\n  'has',\n  'hat',\n  'hate',\n  'have',\n  'he',\n  \"he's\",\n  'head',\n  'hear',\n  'heard',\n  'heavy',\n  'held',\n  'hello',\n  'help',\n  'hen',\n  'her',\n  'here',\n  'herself',\n  'hid',\n  'hide',\n  'high',\n  'hill',\n  'him',\n  'himself',\n  'his',\n  'hit',\n  'hold',\n  'hole',\n  'holiday',\n  'home',\n  'honey',\n  'hop',\n  'horn',\n  'horse',\n  'hot',\n  'hour',\n  'house',\n  'how',\n  'howl',\n  'hum',\n  'hundred',\n  'hung',\n  'hungry',\n  'hunt',\n  'hurry',\n  'hurt',\n  'husband',\n  'i',\n  \"i'll\",\n  \"i'm\",\n  'ice',\n  'idea',\n  'if',\n  'imagine',\n  'important',\n  'in',\n  'inch',\n  'indeed',\n  'inside',\n  'instead',\n  'into',\n  'invite',\n  'is',\n  'it',\n  \"it's\",\n  'its',\n  'j',\n  'jacket',\n  'jar',\n  'jet',\n  'job',\n  'join',\n  'joke',\n  'joy',\n  'jump',\n  'just',\n  'k',\n  'keep',\n  'kept',\n  'key',\n  'kick',\n  'kill',\n  'kind',\n  'king',\n  'kitchen',\n  'kitten',\n  'knee',\n  'knew',\n  'knock',\n  'know',\n  'l',\n  'ladder',\n  'lady',\n  'laid',\n  'lake',\n  'land',\n  'large',\n  'last',\n  'late',\n  'laugh',\n  'lay',\n  'lazy',\n  'lead',\n  'leap',\n  'learn',\n  'least',\n  'leave',\n  'left',\n  'leg',\n  'less',\n  'let',\n  \"let's\",\n  'letter',\n  'lick',\n  'lift',\n  'light',\n  'like',\n  'line',\n  'lion',\n  'list',\n  'listen',\n  'little',\n  'live',\n  'load',\n  'long',\n  'look',\n  'lost',\n  'lot',\n  'loud',\n  'love',\n  'low',\n  'luck',\n  'lump',\n  'lunch',\n  'm',\n  'machine',\n  'made',\n  'magic',\n  'mail',\n  'make',\n  'man',\n  'many',\n  'march',\n  'mark',\n  'market',\n  'master',\n  'matter',\n  'may',\n  'maybe',\n  'me',\n  'mean',\n  'meant',\n  'meat',\n  'meet',\n  'melt',\n  'men',\n  'merry',\n  'met',\n  'middle',\n  'might',\n  'mile',\n  'milk',\n  'milkman',\n  'mind',\n  'mine',\n  'minute',\n  'miss',\n  'mistake',\n  'moment',\n  'money',\n  'monkey',\n  'month',\n  'more',\n  'morning',\n  'most',\n  'mother',\n  'mountain',\n  'mouse',\n  'mouth',\n  'move',\n  'much',\n  'mud',\n  'music',\n  'must',\n  'my',\n  'n',\n  'name',\n  'near',\n  'neck',\n  'need',\n  'needle',\n  'neighbor',\n  'neighborhood',\n  'nest',\n  'never',\n  'new',\n  'next',\n  'nibble',\n  'nice',\n  'night',\n  'nine',\n  'no',\n  'nod',\n  'noise',\n  'none',\n  'north',\n  'nose',\n  'not',\n  'note',\n  'nothing',\n  'notice',\n  'now',\n  'number',\n  'o',\n  'ocean',\n  'of',\n  'off',\n  'offer',\n  'often',\n  'oh',\n  'old',\n  'on',\n  'once',\n  'one',\n  'only',\n  'open',\n  'or',\n  'orange',\n  'order',\n  'other',\n  'our',\n  'out',\n  'outside',\n  'over',\n  'owl',\n  'own',\n  'p',\n  'pack',\n  'paid',\n  'pail',\n  'paint',\n  'pair',\n  'palace',\n  'pan',\n  'paper',\n  'parade',\n  'parent',\n  'park',\n  'part',\n  'party',\n  'pass',\n  'past',\n  'pasture',\n  'path',\n  'paw',\n  'pay',\n  'peanut',\n  'peek',\n  'pen',\n  'penny',\n  'people',\n  'perfect',\n  'perhaps',\n  'person',\n  'pet',\n  'pick',\n  'picket',\n  'picnic',\n  'picture',\n  'pie',\n  'piece',\n  'pig',\n  'pile',\n  'pin',\n  'place',\n  'plan',\n  'plant',\n  'play',\n  'pleasant',\n  'please',\n  'plenty',\n  'plow',\n  'point',\n  'poke',\n  'pole',\n  'policeman',\n  'pond',\n  'poor',\n  'pop',\n  'postman',\n  'pot',\n  'potato',\n  'pound',\n  'pour',\n  'practice',\n  'prepare',\n  'present',\n  'pretend',\n  'pretty',\n  'princess',\n  'prize',\n  'probably',\n  'problem',\n  'promise',\n  'protect',\n  'proud',\n  'puff',\n  'pull',\n  'puppy',\n  'push',\n  'put',\n  'q',\n  'queen',\n  'queer',\n  'quick',\n  'quiet',\n  'quite',\n  'r',\n  'rabbit',\n  'raccoon',\n  'race',\n  'radio',\n  'rag',\n  'rain',\n  'raise',\n  'ran',\n  'ranch',\n  'rang',\n  'reach',\n  'read',\n  'ready',\n  'real',\n  'red',\n  'refuse',\n  'remember',\n  'reply',\n  'rest',\n  'return',\n  'reward',\n  'rich',\n  'ride',\n  'right',\n  'ring',\n  'river',\n  'road',\n  'roar',\n  'rock',\n  'rode',\n  'roll',\n  'roof',\n  'room',\n  'rope',\n  'round',\n  'row',\n  'rub',\n  'rule',\n  'run',\n  'rush',\n  's',\n  'sad',\n  'safe',\n  'said',\n  'sail',\n  'sale',\n  'salt',\n  'same',\n  'sand',\n  'sang',\n  'sat',\n  'save',\n  'saw',\n  'say',\n  'scare',\n  'school',\n  'scold',\n  'scratch',\n  'scream',\n  'sea',\n  'seat',\n  'second',\n  'secret',\n  'see',\n  'seed',\n  'seem',\n  'seen',\n  'sell',\n  'send',\n  'sent',\n  'seven',\n  'several',\n  'sew',\n  'shadow',\n  'shake',\n  'shall',\n  'shape',\n  'she',\n  'sheep',\n  'shell',\n  'shine',\n  'ship',\n  'shoe',\n  'shone',\n  'shook',\n  'shoot',\n  'shop',\n  'shore',\n  'short',\n  'shot',\n  'should',\n  'show',\n  'sick',\n  'side',\n  'sight',\n  'sign',\n  'signal',\n  'silent',\n  'silly',\n  'silver',\n  'since',\n  'sing',\n  'sister',\n  'sit',\n  'six',\n  'size',\n  'skip',\n  'sky',\n  'sled',\n  'sleep',\n  'slid',\n  'slide',\n  'slow',\n  'small',\n  'smart',\n  'smell',\n  'smile',\n  'smoke',\n  'snap',\n  'sniff',\n  'snow',\n  'so',\n  'soft',\n  'sold',\n  'some',\n  'something',\n  'sometimes',\n  'son',\n  'song',\n  'soon',\n  'sorry',\n  'sound',\n  'speak',\n  'special',\n  'spend',\n  'spill',\n  'splash',\n  'spoke',\n  'spot',\n  'spread',\n  'spring',\n  'squirrel',\n  'stand',\n  'star',\n  'start',\n  'station',\n  'stay',\n  'step',\n  'stick',\n  'still',\n  'stone',\n  'stood',\n  'stop',\n  'store',\n  'story',\n  'straight',\n  'strange',\n  'street',\n  'stretch',\n  'strike',\n  'strong',\n  'such',\n  'sudden',\n  'sugar',\n  'suit',\n  'summer',\n  'sun',\n  'supper',\n  'suppose',\n  'sure',\n  'surprise',\n  'swallow',\n  'sweet',\n  'swim',\n  'swing',\n  't',\n  'table',\n  'tail',\n  'take',\n  'talk',\n  'tall',\n  'tap',\n  'taste',\n  'teach',\n  'teacher',\n  'team',\n  'tear',\n  'teeth',\n  'telephone',\n  'tell',\n  'ten',\n  'tent',\n  'than',\n  'thank',\n  'that',\n  \"that's\",\n  'the',\n  'their',\n  'them',\n  'then',\n  'there',\n  'these',\n  'they',\n  'thick',\n  'thin',\n  'thing',\n  'think',\n  'third',\n  'this',\n  'those',\n  'though',\n  'thought',\n  'three',\n  'threw',\n  'through',\n  'throw',\n  'tie',\n  'tiger',\n  'tight',\n  'time',\n  'tiny',\n  'tip',\n  'tire',\n  'to',\n  'today',\n  'toe',\n  'together',\n  'told',\n  'tomorrow',\n  'too',\n  'took',\n  'tooth',\n  'top',\n  'touch',\n  'toward',\n  'tower',\n  'town',\n  'toy',\n  'track',\n  'traffic',\n  'train',\n  'trap',\n  'tree',\n  'trick',\n  'trip',\n  'trot',\n  'truck',\n  'true',\n  'trunk',\n  'try',\n  'turkey',\n  'turn',\n  'turtle',\n  'twelve',\n  'twin',\n  'two',\n  'u',\n  'ugly',\n  'uncle',\n  'under',\n  'unhappy',\n  'until',\n  'up',\n  'upon',\n  'upstairs',\n  'us',\n  'use',\n  'usual',\n  'v',\n  'valley',\n  'vegetable',\n  'very',\n  'village',\n  'visit',\n  'voice',\n  'w',\n  'wag',\n  'wagon',\n  'wait',\n  'wake',\n  'walk',\n  'want',\n  'war',\n  'warm',\n  'was',\n  'wash',\n  'waste',\n  'watch',\n  'water',\n  'wave',\n  'way',\n  'we',\n  'wear',\n  'weather',\n  'week',\n  'well',\n  'went',\n  'were',\n  'wet',\n  'what',\n  'wheel',\n  'when',\n  'where',\n  'which',\n  'while',\n  'whisper',\n  'whistle',\n  'white',\n  'who',\n  'whole',\n  'whose',\n  'why',\n  'wide',\n  'wife',\n  'will',\n  'win',\n  'wind',\n  'window',\n  'wing',\n  'wink',\n  'winter',\n  'wire',\n  'wise',\n  'wish',\n  'with',\n  'without',\n  'woke',\n  'wolf',\n  'woman',\n  'women',\n  \"won't\",\n  'wonder',\n  'wood',\n  'word',\n  'wore',\n  'work',\n  'world',\n  'worm',\n  'worry',\n  'worth',\n  'would',\n  'wrong',\n  'x',\n  'y',\n  'yard',\n  'year',\n  'yell',\n  'yellow',\n  'yes',\n  'yet',\n  'you',\n  'young',\n  'your',\n  'z',\n  'zoo'\n]\n", "/**\n * @typedef Counts\n *   Counts from input document.\n * @property {number} sentence\n *   Number of sentences.\n * @property {number} word\n *   Number of words.\n * @property {number} [unfamiliarWord=0]\n *   Number of unfamiliar words.\n */\n\n/**\n * @typedef {Counts} SpaceFormulaCounts\n *   Deprecated: please use the `Counts` type instead.\n */\n\nconst sentenceWeight = 0.121\nconst wordWeight = 0.082\nconst percentage = 100\nconst base = 0.659\n\n/**\n * Given the number of words (`word`), the number of sentences (`sentence`),\n * and the number of unique unfamiliar words (`unfamiliarWord`) in a document,\n * returns the grade level associated with the document.\n *\n * @param {Counts} counts\n *   Counts from input document.\n * @return {number}\n *   Grade level associated with the document.\n */\nexport function spacheFormula(counts) {\n  if (!counts || !counts.sentence || !counts.word) {\n    return Number.NaN\n  }\n\n  return (\n    base +\n    (sentenceWeight * counts.word) / counts.sentence +\n    ((wordWeight * (counts.unfamiliarWord || 0)) / counts.word) * percentage\n  )\n}\n", "import pluralize from 'pluralize'\n// @ts-ignore remove when typed.\nimport normalize from 'normalize-strings'\nimport {problematic} from './problematic.js'\n\nconst own = {}.hasOwnProperty\n\n// Two expressions of occurrences which normally would be counted as two\n// syllables, but should be counted as one.\nconst EXPRESSION_MONOSYLLABIC_ONE = new RegExp(\n  [\n    'awe($|d|so)',\n    'cia(?:l|$)',\n    'tia',\n    'cius',\n    'cious',\n    '[^aeiou]giu',\n    '[aeiouy][^aeiouy]ion',\n    'iou',\n    'sia$',\n    'eous$',\n    '[oa]gue$',\n    '.[^aeiuoycgltdb]{2,}ed$',\n    '.ely$',\n    '^jua',\n    'uai',\n    'eau',\n    '^busi$',\n    '(?:[aeiouy](?:' +\n      [\n        '[bcfgklmnprsvwxyz]',\n        'ch',\n        'dg',\n        'g[hn]',\n        'lch',\n        'l[lv]',\n        'mm',\n        'nch',\n        'n[cgn]',\n        'r[bcnsv]',\n        'squ',\n        's[chkls]',\n        'th'\n      ].join('|') +\n      ')ed$)',\n    '(?:[aeiouy](?:' +\n      [\n        '[bdfklmnprstvy]',\n        'ch',\n        'g[hn]',\n        'lch',\n        'l[lv]',\n        'mm',\n        'nch',\n        'nn',\n        'r[nsv]',\n        'squ',\n        's[cklst]',\n        'th'\n      ].join('|') +\n      ')es$)'\n  ].join('|'),\n  'g'\n)\n\nconst EXPRESSION_MONOSYLLABIC_TWO = new RegExp(\n  '[aeiouy](?:' +\n    [\n      '[bcdfgklmnprstvyz]',\n      'ch',\n      'dg',\n      'g[hn]',\n      'l[lv]',\n      'mm',\n      'n[cgns]',\n      'r[cnsv]',\n      'squ',\n      's[cklst]',\n      'th'\n    ].join('|') +\n    ')e$',\n  'g'\n)\n\n// Four expression of occurrences which normally would be counted as one\n// syllable, but should be counted as two.\nconst EXPRESSION_DOUBLE_SYLLABIC_ONE = new RegExp(\n  '(?:' +\n    [\n      '([^aeiouy])\\\\1l',\n      '[^aeiouy]ie(?:r|s?t)',\n      '[aeiouym]bl',\n      'eo',\n      'ism',\n      'asm',\n      'thm',\n      'dnt',\n      'snt',\n      'uity',\n      'dea',\n      'gean',\n      'oa',\n      'ua',\n      'react?',\n      'orbed', // Cancel `'.[^aeiuoycgltdb]{2,}ed$',`\n      'shred', // Cancel `'.[^aeiuoycgltdb]{2,}ed$',`\n      'eings?',\n      '[aeiouy]sh?e[rs]'\n    ].join('|') +\n    ')$',\n  'g'\n)\n\nconst EXPRESSION_DOUBLE_SYLLABIC_TWO = new RegExp(\n  [\n    'creat(?!u)',\n    '[^gq]ua[^auieo]',\n    '[aeiou]{3}',\n    '^(?:ia|mc|coa[dglx].)',\n    '^re(app|es|im|us)',\n    '(th|d)eist'\n  ].join('|'),\n  'g'\n)\n\nconst EXPRESSION_DOUBLE_SYLLABIC_THREE = new RegExp(\n  [\n    '[^aeiou]y[ae]',\n    '[^l]lien',\n    'riet',\n    'dien',\n    'iu',\n    'io',\n    'ii',\n    'uen',\n    '[aeilotu]real',\n    'real[aeilotu]',\n    'iell',\n    'eo[^aeiou]',\n    '[aeiou]y[aeiou]'\n  ].join('|'),\n  'g'\n)\n\nconst EXPRESSION_DOUBLE_SYLLABIC_FOUR = /[^s]ia/\n\n// Expression to match single syllable pre- and suffixes.\nconst EXPRESSION_SINGLE = new RegExp(\n  [\n    '^(?:' +\n      [\n        'un',\n        'fore',\n        'ware',\n        'none?',\n        'out',\n        'post',\n        'sub',\n        'pre',\n        'pro',\n        'dis',\n        'side',\n        'some'\n      ].join('|') +\n      ')',\n    '(?:' +\n      [\n        'ly',\n        'less',\n        'some',\n        'ful',\n        'ers?',\n        'ness',\n        'cians?',\n        'ments?',\n        'ettes?',\n        'villes?',\n        'ships?',\n        'sides?',\n        'ports?',\n        'shires?',\n        '[gnst]ion(?:ed|s)?'\n      ].join('|') +\n      ')$'\n  ].join('|'),\n  'g'\n)\n\n// Expression to match double syllable pre- and suffixes.\nconst EXPRESSION_DOUBLE = new RegExp(\n  [\n    '^' +\n      '(?:' +\n      [\n        'above',\n        'anti',\n        'ante',\n        'counter',\n        'hyper',\n        'afore',\n        'agri',\n        'infra',\n        'intra',\n        'inter',\n        'over',\n        'semi',\n        'ultra',\n        'under',\n        'extra',\n        'dia',\n        'micro',\n        'mega',\n        'kilo',\n        'pico',\n        'nano',\n        'macro',\n        'somer'\n      ].join('|') +\n      ')',\n    '(?:fully|berry|woman|women|edly|union|((?:[bcdfghjklmnpqrstvwxz])|[aeiou])ye?ing)$'\n  ].join('|'),\n  'g'\n)\n\n// Expression to match triple syllable suffixes.\nconst EXPRESSION_TRIPLE = /(creations?|ology|ologist|onomy|onomist)$/g\n\n/**\n * Count syllables in `value`.\n *\n * @param {string} value\n *   Value to check.\n * @returns {number}\n *   Syllables in `value`.\n */\nexport function syllable(value) {\n  const values = normalize(String(value))\n    .toLowerCase()\n    // Remove apostrophes.\n    .replace(/['\u2019]/g, '')\n    // Split on word boundaries.\n    .split(/\\b/g)\n  let index = -1\n  let sum = 0\n\n  while (++index < values.length) {\n    // Remove non-alphabetic characters from a given value.\n    sum += one(values[index].replace(/[^a-z]/g, ''))\n  }\n\n  return sum\n}\n\n/**\n * Get syllables in a word.\n *\n * @param {string} value\n * @returns {number}\n */\nfunction one(value) {\n  let count = 0\n\n  if (value.length === 0) {\n    return count\n  }\n\n  // Return early when possible.\n  if (value.length < 3) {\n    return 1\n  }\n\n  // If `value` is a hard to count, it might be in `problematic`.\n  if (own.call(problematic, value)) {\n    return problematic[value]\n  }\n\n  // Additionally, the singular word might be in `problematic`.\n  const singular = pluralize(value, 1)\n\n  if (own.call(problematic, singular)) {\n    return problematic[singular]\n  }\n\n  const addOne = returnFactory(1)\n  const subtractOne = returnFactory(-1)\n\n  // Count some prefixes and suffixes, and remove their matched ranges.\n  value = value\n    .replace(EXPRESSION_TRIPLE, countFactory(3))\n    .replace(EXPRESSION_DOUBLE, countFactory(2))\n    .replace(EXPRESSION_SINGLE, countFactory(1))\n\n  // Count multiple consonants.\n  const parts = value.split(/[^aeiouy]+/)\n  let index = -1\n\n  while (++index < parts.length) {\n    if (parts[index] !== '') {\n      count++\n    }\n  }\n\n  // Subtract one for occurrences which should be counted as one (but are\n  // counted as two).\n  value\n    .replace(EXPRESSION_MONOSYLLABIC_ONE, subtractOne)\n    .replace(EXPRESSION_MONOSYLLABIC_TWO, subtractOne)\n\n  // Add one for occurrences which should be counted as two (but are counted as\n  // one).\n  value\n    .replace(EXPRESSION_DOUBLE_SYLLABIC_ONE, addOne)\n    .replace(EXPRESSION_DOUBLE_SYLLABIC_TWO, addOne)\n    .replace(EXPRESSION_DOUBLE_SYLLABIC_THREE, addOne)\n    .replace(EXPRESSION_DOUBLE_SYLLABIC_FOUR, addOne)\n\n  // Make sure at least on is returned.\n  return count || 1\n\n  /**\n   * Define scoped counters, to be used in `String#replace()` calls.\n   * The scoped counter removes the matched value from the input.\n   *\n   * @param {number} addition\n   */\n  function countFactory(addition) {\n    return counter\n    /**\n     * @returns {string}\n     */\n    function counter() {\n      count += addition\n      return ''\n    }\n  }\n\n  /**\n   * This scoped counter does not remove the matched value from the input.\n   *\n   * @param {number} addition\n   */\n  function returnFactory(addition) {\n    return returner\n    /**\n     * @param {string} $0\n     * @returns {string}\n     */\n    function returner($0) {\n      count += addition\n      return $0\n    }\n  }\n}\n", "/** @type {Record<string, number>} */\nexport const problematic = {\n  abalone: 4,\n  abare: 3,\n  abbruzzese: 4,\n  abed: 2,\n  aborigine: 5,\n  abruzzese: 4,\n  acreage: 3,\n  adame: 3,\n  adieu: 2,\n  adobe: 3,\n  anemone: 4,\n  anyone: 3,\n  apache: 3,\n  aphrodite: 4,\n  apostrophe: 4,\n  ariadne: 4,\n  cafe: 2,\n  calliope: 4,\n  catastrophe: 4,\n  chile: 2,\n  chloe: 2,\n  circe: 2,\n  coyote: 3,\n  daphne: 2,\n  epitome: 4,\n  eurydice: 4,\n  euterpe: 3,\n  every: 2,\n  everywhere: 3,\n  forever: 3,\n  gethsemane: 4,\n  guacamole: 4,\n  hermione: 4,\n  hyperbole: 4,\n  jesse: 2,\n  jukebox: 2,\n  karate: 3,\n  machete: 3,\n  maybe: 2,\n  naive: 2,\n  newlywed: 3,\n  penelope: 4,\n  people: 2,\n  persephone: 4,\n  phoebe: 2,\n  pulse: 1,\n  queue: 1,\n  recipe: 3,\n  riverbed: 3,\n  sesame: 3,\n  shoreline: 2,\n  simile: 3,\n  snuffleupagus: 5,\n  sometimes: 2,\n  syncope: 3,\n  tamale: 3,\n  waterbed: 3,\n  wednesday: 2,\n  yosemite: 4,\n  zoe: 2\n}\n", "/**\n * @typedef {import('nlcst').Root} Root\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {number | null | undefined} [age=16]\n *   Target age group (default: `16`).\n * @property {number | null | undefined} [minWords=5]\n *   Check sentences with at least this number of words (default: `5`);\n *   most algos are made to detect the reading level on an entire text;\n *   this plugin checks each sentence on its own;\n *   for short sentences, one long or complex word can strongly skew the\n *   results.\n * @property {number | null | undefined} [threshold=4 / 7]\n *   Number of algos (out of 7) that need to agree something is hard to read\n *   (default: `4 / 7`).\n */\n\nimport {automatedReadability} from 'automated-readability'\nimport {colemanLiau} from 'coleman-liau'\nimport {daleChall} from 'dale-chall'\nimport {daleChallFormula, daleChallGradeLevel} from 'dale-chall-formula'\nimport {flesch} from 'flesch'\nimport {gunningFog} from 'gunning-fog'\nimport {toString} from 'nlcst-to-string'\nimport {smogFormula} from 'smog-formula'\nimport {spache} from 'spache'\nimport {spacheFormula} from 'spache-formula'\nimport {syllable} from 'syllable'\nimport {SKIP, visit} from 'unist-util-visit'\n\n/** @type {Readonly<Options>} */\nconst emptyOptions = {}\n\n/**\n * Check hard to read sentences.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns\n *   Transform.\n */\nexport default function retextReadability(options) {\n  const settings = options || emptyOptions\n  const age = settings.age || 16\n  const threshold = settings.threshold || 4 / 7\n  const minWords = typeof settings.minWords === 'number' ? settings.minWords : 5\n\n  /**\n   * Transform.\n   *\n   * @param {Root} tree\n   *   Tree.\n   * @param {VFile} file\n   *   File.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  return function (tree, file) {\n    visit(tree, 'SentenceNode', function (sentence, _, parent) {\n      /** @type {Set<string>} */\n      const familiarWords = new Set()\n      /** @type {Set<string>} */\n      const easyWord = new Set()\n      let complexPolysillabicWord = 0\n      let easyWordCount = 0\n      let familiarWordCount = 0\n      let letters = 0\n      let polysillabicWord = 0\n      let totalSyllables = 0\n      let wordCount = 0\n\n      visit(sentence, 'WordNode', function (node) {\n        const value = toString(node)\n        const caseless = value.toLowerCase()\n        const syllables = syllable(value)\n\n        wordCount++\n        totalSyllables += syllables\n        letters += value.length\n\n        // Count complex words for gunning-fog based on whether they have three\n        // or more syllables and whether they aren\u2019t proper nouns.  The last is\n        // checked a little simple, so this index might be over-eager.\n        if (syllables >= 3) {\n          polysillabicWord++\n\n          if (value.charCodeAt(0) === caseless.charCodeAt(0)) {\n            complexPolysillabicWord++\n          }\n        }\n\n        // Find unique unfamiliar words for spache.\n        if (spache.includes(caseless) && !familiarWords.has(caseless)) {\n          familiarWords.add(caseless)\n          familiarWordCount++\n        }\n\n        // Find unique difficult words for dale-chall.\n        if (daleChall.includes(caseless) && !easyWord.has(caseless)) {\n          easyWord.add(caseless)\n          easyWordCount++\n        }\n      })\n\n      if (wordCount >= minWords) {\n        const counts = {\n          character: letters,\n          complexPolysillabicWord,\n          difficultWord: wordCount - easyWordCount,\n          letter: letters,\n          polysillabicWord,\n          sentence: 1,\n          syllable: totalSyllables,\n          unfamiliarWord: wordCount - familiarWordCount,\n          word: wordCount\n        }\n\n        const scores = [\n          gradeToAge(automatedReadability(counts)),\n          gradeToAge(colemanLiau(counts)),\n          gradeToAge(daleChallGradeLevel(daleChallFormula(counts))[1]),\n          fleschToAge(flesch(counts)),\n          gradeToAge(gunningFog(counts)),\n          smogToAge(smogFormula(counts)),\n          gradeToAge(spacheFormula(counts))\n        ]\n\n        let index = -1\n        let nok = 0\n\n        while (++index < scores.length) {\n          if (scores[index] > age) {\n            nok++\n          }\n        }\n\n        const confidence = nok / scores.length\n\n        if (confidence >= threshold) {\n          const message = file.message(\n            'Unexpected hard to read sentence, according to ' +\n              (nok < scores.length ? nok + ' out of ' : 'all ') +\n              scores.length +\n              ' algorithms',\n            {\n              /* c8 ignore next -- verbose to test */\n              ancestors: parent ? [parent, sentence] : [sentence],\n              place: sentence.position,\n              ruleId: 'readability',\n              source: 'retext-readability'\n            }\n          )\n\n          message.actual = toString(sentence)\n          message.expected = []\n          message.url = 'https://github.com/retextjs/retext-readability#readme'\n        }\n      }\n\n      return SKIP\n    })\n  }\n}\n\n/**\n * Calculate the typical starting age (on the higher-end) when someone joins\n * `grade` grade, in the US.\n * See: <https://en.wikipedia.org/wiki/Educational_stage#United_States>\n *\n * @param {number} grade\n *   Grade.\n * @returns {number}\n *   Age.\n */\nfunction gradeToAge(grade) {\n  return Math.round(grade + 5)\n}\n\n/**\n * Calculate the age relating to a Flesch result.\n *\n * @param {number} value\n *   Flesch score.\n * @returns {number}\n *   Age.\n */\nfunction fleschToAge(value) {\n  return 20 - Math.floor(value / 10)\n}\n\n/**\n * Calculate the age relating to a SMOG result.\n * See: <http://www.readabilityformulas.com/smog-readability-formula.php>\n *\n * @param {number} value\n *   SMOG score.\n * @returns {number}\n *   Age.\n */\nfunction smogToAge(value) {\n  return Math.ceil(Math.sqrt(value) + 2.5)\n}\n", "/**\n * @packageDocumentation\n * ESLint rule that checks source comments for difficult-to-read prose.\n */\n\nimport type { TSESLint } from \"@typescript-eslint/utils\";\n\nimport * as retextReadability from \"retext-readability\";\n\nimport {\n    createCommentLintText,\n    isIgnoredCommentText,\n} from \"../_internal/comment-prose.js\";\nimport { resolveDefaultExport } from \"../_internal/default-export.js\";\nimport {\n    createRetextMessageSourceLocation,\n    lintMarkdownWithRetext,\n} from \"../_internal/retext.js\";\n\n/** Message ids emitted by this rule. */\ntype MessageIds = \"problem\";\n\n/** Configurable rule options tuple. */\ntype Options = [ReadabilityCommentsOptions?];\n\n/** Extra docs metadata carried by this plugin's rules. */\ntype PluginDocs = Readonly<{\n    recommended: boolean;\n}>;\n\n/** Configurable readability rule options. */\ntype ReadabilityCommentsOptions = Readonly<{\n    age?: number;\n    minWords?: number;\n    threshold?: number;\n}>;\n\n/** Default options for readability-comments. */\nconst defaultReadabilityCommentsOptions = {\n    age: 16,\n    minWords: 5,\n    threshold: 4 / 7,\n} as const satisfies ReadabilityCommentsOptions;\n\n/** Create the runtime readability-comments rule. */\nconst readabilityCommentsRule: TSESLint.RuleModule<\n    MessageIds,\n    Options,\n    PluginDocs\n> = {\n    create(context) {\n        const sourceCode = context.sourceCode;\n        const [options = defaultReadabilityCommentsOptions] = context.options;\n\n        return {\n            Program() {\n                for (const comment of sourceCode.getAllComments()) {\n                    const lintText = createCommentLintText(comment);\n                    const trimmedLintText = lintText.trim();\n\n                    if (isIgnoredCommentText(trimmedLintText)) {\n                        continue;\n                    }\n\n                    const messages = lintMarkdownWithRetext(\n                        lintText,\n                        (processor) => {\n                            processor.use(\n                                resolveDefaultExport(retextReadability),\n                                {\n                                    age: options.age,\n                                    minWords: options.minWords,\n                                    threshold: options.threshold,\n                                }\n                            );\n                        }\n                    );\n\n                    for (const message of messages) {\n                        if (message.source === \"retext-readability\") {\n                            context.report({\n                                data: {\n                                    reason: message.reason.trim(),\n                                },\n                                loc: createRetextMessageSourceLocation(\n                                    comment,\n                                    sourceCode,\n                                    message\n                                ),\n                                messageId: \"problem\",\n                            });\n                        }\n                    }\n                }\n            },\n        };\n    },\n    meta: {\n        defaultOptions: [defaultReadabilityCommentsOptions],\n        deprecated: false,\n        docs: {\n            description:\n                \"require comment prose to stay readable with retext-readability.\",\n            frozen: false,\n            recommended: false,\n            url: \"https://nick2bad4u.github.io/eslint-plugin-write-good-comments-2/docs/rules/readability-comments\",\n        },\n        messages: {\n            problem: \"{{reason}}\",\n        },\n        schema: [\n            {\n                additionalProperties: false,\n                description:\n                    \"Optional readability thresholds for comment prose analysis.\",\n                properties: {\n                    age: {\n                        description:\n                            \"Target reader age used by the readability formula.\",\n                        minimum: 5,\n                        type: \"integer\",\n                    },\n                    minWords: {\n                        description:\n                            \"Minimum sentence length before readability analysis applies.\",\n                        minimum: 1,\n                        type: \"integer\",\n                    },\n                    threshold: {\n                        description:\n                            \"Maximum difficult-word ratio allowed before a sentence is reported.\",\n                        maximum: 1,\n                        minimum: 0,\n                        type: \"number\",\n                    },\n                },\n                type: \"object\",\n            },\n        ],\n        type: \"suggestion\",\n    },\n};\n\nexport default readabilityCommentsRule;\n", "//#region ../cspell-pipe/dist/helpers/iteratorToIterable.js\nfunction* iteratorToIterable(iterator) {\n\ttry {\n\t\tlet n;\n\t\twhile (!(n = iterator.next()).done) yield n.value;\n\t} catch (e) {\n\t\tif (iterator.throw) return iterator.throw(e);\n\t\tthrow e;\n\t} finally {\n\t\titerator.return?.();\n\t}\n}\n//#endregion\n//#region ../cspell-pipe/dist/operators/append.js\n/**\n* Append values onto the end of an iterable.\n* @param iterablesToAppend - the iterables in the order to be appended.\n* @returns\n*/\nfunction opAppendSync(...iterablesToAppend) {\n\tfunction* fnAppend(iter) {\n\t\tyield* iter;\n\t\tfor (const i of iterablesToAppend) yield* i;\n\t}\n\treturn fnAppend;\n}\n//#endregion\n//#region ../cspell-pipe/dist/operators/combine.js\nfunction opCombineSync(...fns) {\n\tfunction combine(iter) {\n\t\tfor (const fn of fns) iter = fn(iter);\n\t\treturn iter;\n\t}\n\treturn combine;\n}\n//#endregion\n//#region ../cspell-pipe/dist/operators/concatMap.js\nfunction opConcatMapSync(mapFn) {\n\tfunction fnConcatMapSync(iterable) {\n\t\tfunction opConcatMapIterator() {\n\t\t\tconst iter = iterable[Symbol.iterator]();\n\t\t\tlet resultsIter = void 0;\n\t\t\tfunction nextConcatMap() {\n\t\t\t\twhile (true) {\n\t\t\t\t\tif (resultsIter) {\n\t\t\t\t\t\tconst { done, value } = resultsIter.next();\n\t\t\t\t\t\tif (!done) return { value };\n\t\t\t\t\t\tresultsIter = void 0;\n\t\t\t\t\t}\n\t\t\t\t\tconst { done, value } = iter.next();\n\t\t\t\t\tif (done) return {\n\t\t\t\t\t\tdone,\n\t\t\t\t\t\tvalue: void 0\n\t\t\t\t\t};\n\t\t\t\t\tresultsIter = mapFn(value)[Symbol.iterator]();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn { next: nextConcatMap };\n\t\t}\n\t\treturn { [Symbol.iterator]: opConcatMapIterator };\n\t}\n\treturn fnConcatMapSync;\n}\n//#endregion\n//#region ../cspell-pipe/dist/operators/filter.js\nfunction opFilterSync(filterFn) {\n\tfunction opFilterIterable(iterable) {\n\t\tfunction opFilterIterator() {\n\t\t\tconst iter = iterable[Symbol.iterator]();\n\t\t\tfunction nextOpFilter() {\n\t\t\t\twhile (true) {\n\t\t\t\t\tconst { done, value } = iter.next();\n\t\t\t\t\tif (done) return {\n\t\t\t\t\t\tdone,\n\t\t\t\t\t\tvalue: void 0\n\t\t\t\t\t};\n\t\t\t\t\tif (filterFn(value)) return { value };\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn { next: nextOpFilter };\n\t\t}\n\t\treturn { [Symbol.iterator]: opFilterIterator };\n\t}\n\treturn opFilterIterable;\n}\n//#endregion\n//#region ../cspell-pipe/dist/operators/flatten.js\nfunction opFlattenSync() {\n\tfunction* fn(iter) {\n\t\tfor (const v of iter) yield* v;\n\t}\n\treturn fn;\n}\n//#endregion\n//#region ../cspell-pipe/dist/operators/map.js\nfunction opMapSync(mapFn) {\n\tfunction opMapIterable(iterable) {\n\t\tfunction opMapIterator() {\n\t\t\tconst iter = iterable[Symbol.iterator]();\n\t\t\tfunction nextOpMap() {\n\t\t\t\tconst { done, value } = iter.next();\n\t\t\t\tif (done) return {\n\t\t\t\t\tdone,\n\t\t\t\t\tvalue: void 0\n\t\t\t\t};\n\t\t\t\treturn { value: mapFn(value) };\n\t\t\t}\n\t\t\treturn { next: nextOpMap };\n\t\t}\n\t\treturn { [Symbol.iterator]: opMapIterator };\n\t}\n\treturn opMapIterable;\n}\n//#endregion\n//#region ../cspell-pipe/dist/operators/reduce.js\nfunction opReduceSync(reduceFn, initialValue) {\n\tfunction* reduce(head, tail) {\n\t\tfor (const v of tail) head = reduceFn(head, v);\n\t\tyield head;\n\t}\n\tfunction* fn(iter) {\n\t\tconst ht = initialValue === void 0 ? headTail(iter) : {\n\t\t\thead: initialValue,\n\t\t\ttail: iter\n\t\t};\n\t\tif (!ht) return;\n\t\tyield* reduce(ht.head, ht.tail);\n\t}\n\treturn fn;\n}\nfunction headTail(iter) {\n\tconst iterator = iter[Symbol.iterator]();\n\tconst first = iterator.next();\n\tif (first.done) return void 0;\n\treturn {\n\t\thead: first.value,\n\t\ttail: iteratorToIterable(iterator)\n\t};\n}\n//#endregion\n//#region ../cspell-pipe/dist/operators/unique.js\nfunction opUniqueSync(k) {\n\tfunction fnK(key) {\n\t\tfunction* fn(iter) {\n\t\t\tconst s = /* @__PURE__ */ new Set();\n\t\t\tfor (const v of iter) {\n\t\t\t\tconst kk = key(v);\n\t\t\t\tif (s.has(kk)) continue;\n\t\t\t\ts.add(kk);\n\t\t\t\tyield v;\n\t\t\t}\n\t\t}\n\t\treturn fn;\n\t}\n\tfunction* fn(iter) {\n\t\tconst s = /* @__PURE__ */ new Set();\n\t\tfor (const v of iter) {\n\t\t\tif (s.has(v)) continue;\n\t\t\ts.add(v);\n\t\t\tyield v;\n\t\t}\n\t}\n\treturn k ? fnK(k) : fn;\n}\n//#endregion\n//#region ../cspell-pipe/dist/pipe.js\nfunction pipeSync(i, ...fns) {\n\treturn opCombineSync(...fns)(i);\n}\n//#endregion\n//#region ../cspell-pipe/dist/reduce.js\nfunction reduceSync(iter, reduceFn, initialValue) {\n\treturn [...initialValue === void 0 ? pipeSync(iter, opReduceSync(reduceFn)) : pipeSync(iter, opReduceSync(reduceFn, initialValue))][0];\n}\n//#endregion\n//#region src/lib/utils/memorizeLastCall.ts\nconst SymEmpty = Symbol(\"memorizeLastCall\");\nfunction memorizeLastCall(fn) {\n\tlet lastP = void 0;\n\tlet lastR = SymEmpty;\n\tfunction calc(p) {\n\t\tif (lastP === p && lastR !== SymEmpty) return lastR;\n\t\tlastP = p;\n\t\tlastR = fn(p);\n\t\treturn lastR;\n\t}\n\treturn calc;\n}\n//#endregion\n//#region src/lib/ITrieNode/find.ts\nconst defaultLegacyMinCompoundLength$2 = 3;\nconst _defaultFindOptions$1 = {\n\tmatchCase: false,\n\tcompoundMode: \"compound\",\n\tlegacyMinCompoundLength: defaultLegacyMinCompoundLength$2\n};\nObject.freeze(_defaultFindOptions$1);\nconst knownCompoundModes$1 = new Map([\n\t\"none\",\n\t\"compound\",\n\t\"legacy\"\n].map((a) => [a, a]));\nconst notFound = {\n\tfound: false,\n\tcompoundUsed: false,\n\tcaseMatched: false,\n\tforbidden: void 0\n};\nObject.freeze(notFound);\n/**\n*\n* @param root Trie root node. root.c contains the compound root and forbidden root.\n* @param word A pre normalized word use `normalizeWord` or `normalizeWordToLowercase`\n* @param options\n*/\nfunction findWordNode$1(root, word, options) {\n\treturn _findWordNode$1(root, word, options);\n}\n/**\n*\n* @param root Trie root node. root.c contains the compound root and forbidden root.\n* @param word A pre normalized word use `normalizeWord` or `normalizeWordToLowercase`\n* @param options\n*/\nfunction findWord$1(root, word, options) {\n\tif (root.find && !options?.compoundSeparator) {\n\t\tconst found = root.find(word, options?.matchCase || false);\n\t\tif (found) {\n\t\t\tif (options?.checkForbidden && found.forbidden === void 0) found.forbidden = isForbiddenWord$1(root, word, root.forbidPrefix);\n\t\t\treturn found;\n\t\t}\n\t\tif (!root.hasCompoundWords) return notFound;\n\t}\n\tconst { found, compoundUsed, caseMatched, forbidden } = _findWordNode$1(root, word, options);\n\tconst result = {\n\t\tfound,\n\t\tcompoundUsed,\n\t\tcaseMatched,\n\t\tforbidden\n\t};\n\tif (options?.checkForbidden && forbidden === void 0) result.forbidden = isForbiddenWord$1(root, word, root.forbidPrefix);\n\treturn result;\n}\n/**\n*\n* @param root Trie root node. root.c contains the compound root and forbidden root.\n* @param word A pre normalized word use `normalizeWord` or `normalizeWordToLowercase`\n* @param options\n*/\nfunction _findWordNode$1(root, word, options) {\n\tconst trieInfo = root.info;\n\tconst matchCase = options?.matchCase || false;\n\tconst compoundMode = knownCompoundModes$1.get(options?.compoundMode) || _defaultFindOptions$1.compoundMode;\n\tconst compoundPrefix = compoundMode === \"compound\" ? trieInfo.compoundCharacter ?? root.compoundFix : \"\";\n\tconst ignoreCasePrefix = matchCase ? \"\" : trieInfo.stripCaseAndAccentsPrefix ?? root.caseInsensitivePrefix;\n\tconst mustCheckForbidden = options?.checkForbidden === true;\n\tconst checkForbidden = options?.checkForbidden ?? true;\n\tconst compoundSeparator = options?.compoundSeparator || \"\";\n\tfunction __findCompound() {\n\t\tconst f = findCompoundWord$1(root, word, compoundPrefix, ignoreCasePrefix, compoundSeparator);\n\t\tif (f.found !== false && (mustCheckForbidden || f.compoundUsed && checkForbidden)) f.forbidden = isForbiddenWord$1(!f.caseMatched ? walk$2(root, root.caseInsensitivePrefix) : root, word, root.forbidPrefix);\n\t\treturn f;\n\t}\n\tfunction __findExact() {\n\t\tconst n = root.getNode ? root.getNode(word) : walk$2(root, word);\n\t\treturn {\n\t\t\tfound: isEndOfWordNode$1(n) && word,\n\t\t\tcompoundUsed: false,\n\t\t\tforbidden: checkForbidden ? isForbiddenWord$1(root, word, root.forbidPrefix) : void 0,\n\t\t\tnode: n,\n\t\t\tcaseMatched: true\n\t\t};\n\t}\n\tswitch (compoundMode) {\n\t\tcase \"none\": return matchCase ? __findExact() : __findCompound();\n\t\tcase \"compound\": return __findCompound();\n\t\tcase \"legacy\": return findLegacyCompound$1(root, word, options);\n\t}\n}\nfunction findLegacyCompound$1(root, word, options) {\n\tconst roots = [root];\n\tif (!options?.matchCase) roots.push(walk$2(root, root.caseInsensitivePrefix));\n\treturn findLegacyCompoundNode$1(roots, word, options?.legacyMinCompoundLength || defaultLegacyMinCompoundLength$2, options?.compoundSeparator ?? \"+\");\n}\nfunction findCompoundNode$1(root, word, compoundCharacter, ignoreCasePrefix, compoundSeparator) {\n\tconst stack = [{\n\t\tn: root,\n\t\tcompoundPrefix: ignoreCasePrefix,\n\t\tcr: void 0,\n\t\tcaseMatched: true,\n\t\ts: \"\"\n\t}];\n\tconst compoundPrefix = compoundCharacter || ignoreCasePrefix;\n\tconst possibleCompoundPrefix = ignoreCasePrefix && compoundCharacter ? ignoreCasePrefix + compoundCharacter : \"\";\n\tconst nw = word.normalize();\n\tconst w = [...nw];\n\tfunction determineRoot(s) {\n\t\tconst prefix = s.compoundPrefix;\n\t\tlet r = root;\n\t\tlet i;\n\t\tfor (i = 0; i < prefix.length && r; ++i) r = r.get(prefix[i]);\n\t\tconst caseMatched = s.caseMatched && prefix[0] !== ignoreCasePrefix;\n\t\treturn {\n\t\t\tn: s.n,\n\t\t\tcompoundPrefix: prefix === compoundPrefix ? possibleCompoundPrefix : \"\",\n\t\t\tcr: r,\n\t\t\tcaseMatched,\n\t\t\ts: prefix.endsWith(compoundCharacter) ? compoundSeparator : \"\"\n\t\t};\n\t}\n\tlet compoundUsed = false;\n\tlet caseMatched = true;\n\tlet i = 0;\n\tlet node;\n\twhile (true) {\n\t\tconst s = stack[i];\n\t\tconst h = w[i++];\n\t\tconst n = s.cr || s.n;\n\t\tconst c = h && n?.get(h) || void 0;\n\t\tif (c && i < word.length) {\n\t\t\tcaseMatched = s.caseMatched;\n\t\t\tstack[i] = {\n\t\t\t\tn: c,\n\t\t\t\tcompoundPrefix,\n\t\t\t\tcr: void 0,\n\t\t\t\tcaseMatched,\n\t\t\t\ts: \"\"\n\t\t\t};\n\t\t} else if (!c || !c.eow) {\n\t\t\tnode = node || c;\n\t\t\twhile (--i > 0) {\n\t\t\t\tconst s = stack[i];\n\t\t\t\tif (!s.compoundPrefix || !s.n?.hasChildren()) continue;\n\t\t\t\tif (s.n.get(compoundCharacter)) break;\n\t\t\t}\n\t\t\tif (i >= 0 && stack[i].compoundPrefix) {\n\t\t\t\tcompoundUsed = i > 0;\n\t\t\t\tconst r = determineRoot(stack[i]);\n\t\t\t\tstack[i] = r;\n\t\t\t\tif (!r.cr) break;\n\t\t\t\tif (!i && !r.caseMatched && nw !== nw.toLowerCase()) break;\n\t\t\t} else break;\n\t\t} else {\n\t\t\tnode = c;\n\t\t\tcaseMatched = s.caseMatched;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfunction joinCompoundWord() {\n\t\treturn stack.map((s) => s.s).map((c, i) => c + w[i]).join(\"\");\n\t}\n\tconst f = i === word.length && word || false;\n\treturn {\n\t\tfound: f && (compoundSeparator ? joinCompoundWord() : f),\n\t\tcompoundUsed,\n\t\tnode,\n\t\tforbidden: void 0,\n\t\tcaseMatched\n\t};\n}\nfunction findCompoundWord$1(root, word, compoundCharacter, ignoreCasePrefix, compoundSeparator) {\n\tconst { found, compoundUsed, node, caseMatched } = findCompoundNode$1(root, word, compoundCharacter, ignoreCasePrefix, compoundSeparator);\n\tif (!node || !node.eow) return {\n\t\tfound: false,\n\t\tcompoundUsed,\n\t\tnode,\n\t\tforbidden: void 0,\n\t\tcaseMatched\n\t};\n\treturn {\n\t\tfound,\n\t\tcompoundUsed,\n\t\tnode,\n\t\tforbidden: void 0,\n\t\tcaseMatched\n\t};\n}\nfunction findWordExact$1(root, word) {\n\tconst r = root;\n\tif (r?.findExact) return r.findExact(word);\n\treturn isEndOfWordNode$1(walk$2(root, word));\n}\nfunction isEndOfWordNode$1(n) {\n\treturn !!n?.eow;\n}\nfunction walk$2(root, word) {\n\tconst w = [...word];\n\tlet n = root;\n\tlet i = 0;\n\twhile (n && i < w.length) {\n\t\tconst h = w[i++];\n\t\tn = n.get(h);\n\t}\n\treturn n;\n}\nfunction findLegacyCompoundNode$1(roots, word, minCompoundLength, compoundSeparator) {\n\tconst root = roots[0];\n\tconst numRoots = roots.length;\n\tconst stack = [{\n\t\tn: root,\n\t\tusedRoots: 1,\n\t\tsubLength: 0,\n\t\tisCompound: false,\n\t\tcr: void 0,\n\t\tcaseMatched: true\n\t}];\n\tconst w = word;\n\tconst wLen = w.length;\n\tlet compoundUsed = false;\n\tlet caseMatched = true;\n\tlet i = 0;\n\tlet node;\n\twhile (true) {\n\t\tconst s = stack[i];\n\t\tconst h = w[i++];\n\t\tconst c = (s.cr || s.n)?.get(h);\n\t\tif (c && i < wLen) stack[i] = {\n\t\t\tn: c,\n\t\t\tusedRoots: 0,\n\t\t\tsubLength: s.subLength + 1,\n\t\t\tisCompound: s.isCompound,\n\t\t\tcr: void 0,\n\t\t\tcaseMatched: s.caseMatched\n\t\t};\n\t\telse if (!c || !c.eow || c.eow && s.subLength < minCompoundLength - 1) {\n\t\t\twhile (--i > 0) {\n\t\t\t\tconst s = stack[i];\n\t\t\t\tif (s.usedRoots < numRoots && s.n?.eow && (s.subLength >= minCompoundLength || !s.subLength) && wLen - i >= minCompoundLength) break;\n\t\t\t}\n\t\t\tif (i > 0 || stack[i].usedRoots < numRoots) {\n\t\t\t\tcompoundUsed = i > 0;\n\t\t\t\tconst s = stack[i];\n\t\t\t\ts.cr = roots[s.usedRoots++];\n\t\t\t\ts.subLength = 0;\n\t\t\t\ts.isCompound = compoundUsed;\n\t\t\t\ts.caseMatched = s.caseMatched && s.usedRoots <= 1;\n\t\t\t} else break;\n\t\t} else {\n\t\t\tnode = c;\n\t\t\tcaseMatched = s.caseMatched;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfunction extractWord() {\n\t\tif (!word || i < word.length) return false;\n\t\tconst letters = [];\n\t\tlet subLen = 0;\n\t\tfor (let j = 0; j < i; ++j) {\n\t\t\tconst { subLength } = stack[j];\n\t\t\tif (subLength < subLen) letters.push(compoundSeparator);\n\t\t\tletters.push(word[j]);\n\t\t\tsubLen = subLength;\n\t\t}\n\t\treturn letters.join(\"\");\n\t}\n\treturn {\n\t\tfound: extractWord(),\n\t\tcompoundUsed,\n\t\tnode,\n\t\tforbidden: void 0,\n\t\tcaseMatched\n\t};\n}\nfunction isForbiddenWord$1(root, word, forbiddenPrefix) {\n\tconst r = root;\n\tif (r?.isForbidden) return r.isForbidden(word);\n\treturn findWordExact$1(root?.get(forbiddenPrefix), word);\n}\nconst createFindOptions$1 = memorizeLastCall(_createFindOptions$1);\nfunction _createFindOptions$1(options) {\n\tif (!options) return _defaultFindOptions$1;\n\tconst d = _defaultFindOptions$1;\n\treturn {\n\t\tmatchCase: options.matchCase ?? d.matchCase,\n\t\tcompoundMode: options.compoundMode ?? d.compoundMode,\n\t\tlegacyMinCompoundLength: options.legacyMinCompoundLength ?? d.legacyMinCompoundLength,\n\t\tcheckForbidden: options.checkForbidden ?? d.checkForbidden,\n\t\tcompoundSeparator: options.compoundSeparator ?? d.compoundSeparator\n\t};\n}\n//#endregion\n//#region src/lib/walker/walkerTypes.ts\nconst JOIN_SEPARATOR = \"+\";\nconst WORD_SEPARATOR = \" \";\nconst CompoundWordsMethod = {\n\t/**\n\t* Do not compound words.\n\t*/\n\tNONE: 0,\n\t/**\n\t* Create word compounds separated by spaces.\n\t*/\n\tSEPARATE_WORDS: 1,\n\t/**\n\t* Create word compounds without separation.\n\t*/\n\tJOIN_WORDS: 2,\n\t0: \"NONE\",\n\t1: \"SEPARATE_WORDS\",\n\t2: \"JOIN_WORDS\"\n};\n//#endregion\n//#region src/lib/ITrieNode/walker/walker.ts\n/**\n* Walks the Trie and yields a value at each node.\n* next(goDeeper: boolean):\n*/\nfunction* compoundWalker$1(root, compoundingMethod) {\n\tconst empty = Object.freeze([]);\n\tconst roots = {\n\t\t[CompoundWordsMethod.NONE]: empty,\n\t\t[CompoundWordsMethod.JOIN_WORDS]: [[\"+\", root]],\n\t\t[CompoundWordsMethod.SEPARATE_WORDS]: [[\" \", root]]\n\t};\n\tconst rc = roots[compoundingMethod].length ? roots[compoundingMethod] : void 0;\n\tfunction children(n) {\n\t\tif (n.hasChildren()) {\n\t\t\tconst entries = n.entries();\n\t\t\tconst c = Array.isArray(entries) ? entries : [...entries];\n\t\t\treturn n.eow && rc ? [...c, ...rc] : c;\n\t\t}\n\t\tif (n.eow) return roots[compoundingMethod];\n\t\treturn empty;\n\t}\n\tlet depth = 0;\n\tconst stack = [];\n\tstack[depth] = {\n\t\tt: \"\",\n\t\tc: children(root),\n\t\tci: 0\n\t};\n\twhile (depth >= 0) {\n\t\tlet s = stack[depth];\n\t\tlet baseText = s.t;\n\t\twhile (s.ci < s.c.length) {\n\t\t\tconst [char, node] = s.c[s.ci++];\n\t\t\tconst text = baseText + char;\n\t\t\tif ((yield {\n\t\t\t\ttext,\n\t\t\t\tnode,\n\t\t\t\tdepth\n\t\t\t}) ?? true) {\n\t\t\t\tdepth++;\n\t\t\t\tbaseText = text;\n\t\t\t\tstack[depth] = {\n\t\t\t\t\tt: text,\n\t\t\t\t\tc: children(node),\n\t\t\t\t\tci: 0\n\t\t\t\t};\n\t\t\t}\n\t\t\ts = stack[depth];\n\t\t}\n\t\tdepth -= 1;\n\t}\n}\n/**\n* Walks the Trie and yields a value at each node.\n* next(goDeeper: boolean):\n*/\nfunction* nodeWalker$1(root) {\n\tlet depth = 0;\n\tconst stack = [];\n\tconst entries = root.entries();\n\tstack[depth] = {\n\t\tt: \"\",\n\t\tn: root,\n\t\tc: Array.isArray(entries) ? entries : [...entries],\n\t\tci: 0\n\t};\n\twhile (depth >= 0) {\n\t\tlet s = stack[depth];\n\t\tlet baseText = s.t;\n\t\twhile (s.ci < s.c.length && s.n) {\n\t\t\tconst idx = s.ci++;\n\t\t\tconst [char, node] = s.c[idx];\n\t\t\tconst text = baseText + char;\n\t\t\tif ((yield {\n\t\t\t\ttext,\n\t\t\t\tnode,\n\t\t\t\tdepth\n\t\t\t}) !== false) {\n\t\t\t\tdepth++;\n\t\t\t\tbaseText = text;\n\t\t\t\tconst s = stack[depth];\n\t\t\t\tconst entries = node.entries();\n\t\t\t\tconst c = Array.isArray(entries) ? entries : [...entries];\n\t\t\t\tif (s) {\n\t\t\t\t\ts.t = text;\n\t\t\t\t\ts.n = node;\n\t\t\t\t\ts.c = c;\n\t\t\t\t\ts.ci = 0;\n\t\t\t\t} else stack[depth] = {\n\t\t\t\t\tt: text,\n\t\t\t\t\tn: node,\n\t\t\t\t\tc,\n\t\t\t\t\tci: 0\n\t\t\t\t};\n\t\t\t}\n\t\t\ts = stack[depth];\n\t\t}\n\t\tdepth -= 1;\n\t}\n}\nfunction walker$1(root, compoundingMethod = CompoundWordsMethod.NONE) {\n\treturn compoundingMethod === CompoundWordsMethod.NONE ? nodeWalker$1(root) : compoundWalker$1(root, compoundingMethod);\n}\nfunction walkerWords$1(root) {\n\treturn walkerWordsITrie(root);\n}\n/**\n* Walks the Trie and yields each word.\n*/\nfunction* walkerWordsITrie(root) {\n\tlet depth = 0;\n\tconst stack = [];\n\tconst entries = root.entries();\n\tstack[depth] = {\n\t\tt: \"\",\n\t\tn: root,\n\t\tc: Array.isArray(entries) ? entries : [...entries],\n\t\tci: 0\n\t};\n\twhile (depth >= 0) {\n\t\tlet s = stack[depth];\n\t\tlet baseText = s.t;\n\t\twhile (s.ci < s.c.length && s.n) {\n\t\t\tconst [char, node] = s.c[s.ci++];\n\t\t\tif (!node) continue;\n\t\t\tconst text = baseText + char;\n\t\t\tif (node.eow) yield text;\n\t\t\tdepth++;\n\t\t\tbaseText = text;\n\t\t\tconst entries = node.entries();\n\t\t\tconst c = Array.isArray(entries) ? entries : [...entries];\n\t\t\tif (stack[depth]) {\n\t\t\t\ts = stack[depth];\n\t\t\t\ts.t = text;\n\t\t\t\ts.n = node;\n\t\t\t\ts.c = c;\n\t\t\t\ts.ci = 0;\n\t\t\t} else stack[depth] = {\n\t\t\t\tt: text,\n\t\t\t\tn: node,\n\t\t\t\tc,\n\t\t\t\tci: 0\n\t\t\t};\n\t\t\ts = stack[depth];\n\t\t}\n\t\tdepth -= 1;\n\t}\n}\n//#endregion\n//#region src/lib/ITrieNode/trie-util.ts\n/**\n* Generate a Iterator that can walk a Trie and yield the words.\n*/\nfunction iteratorTrieWords$1(node) {\n\treturn walkerWords$1(node);\n}\nfunction findNode$1(node, word) {\n\tfor (let i = 0; i < word.length; ++i) {\n\t\tconst n = node.get(word[i]);\n\t\tif (!n) return void 0;\n\t\tnode = n;\n\t}\n\treturn node;\n}\nfunction countWords$1(root) {\n\tconst visited = /* @__PURE__ */ new Map();\n\tfunction walk(n) {\n\t\tconst nestedCount = visited.get(n.id);\n\t\tif (nestedCount !== void 0) return nestedCount;\n\t\tlet cnt = n.eow ? 1 : 0;\n\t\tvisited.set(n, cnt);\n\t\tfor (const c of n.values()) cnt += walk(c);\n\t\tvisited.set(n, cnt);\n\t\treturn cnt;\n\t}\n\treturn walk(root);\n}\n//#endregion\n//#region src/lib/utils/debugger.ts\nlet debuggerIsAttached = false;\nfunction isDebuggerAttached() {\n\treturn debuggerIsAttached;\n}\n//#endregion\n//#region src/lib/utils/isDefined.ts\nfunction isDefined(t) {\n\treturn t !== void 0;\n}\n//#endregion\n//#region src/lib/walker/hintedWalker.ts\nfunction hintedWalker(root, ignoreCase, hint, compoundingMethod, emitWordSeparator) {\n\treturn hintedWalkerNext(root, ignoreCase, hint, compoundingMethod, emitWordSeparator);\n}\n/**\n* Walks the Trie and yields a value at each node.\n* next(goDeeper: boolean):\n*/\nfunction* hintedWalkerNext(root, ignoreCase, hint, compoundingMethod, emitWordSeparator = \"\") {\n\tconst _compoundingMethod = compoundingMethod ?? CompoundWordsMethod.NONE;\n\tconst compoundCharacter = root.compoundCharacter;\n\tconst noCaseCharacter = root.stripCaseAndAccentsPrefix;\n\tconst rawRoots = [root, ignoreCase ? root.c[noCaseCharacter] : void 0].filter(isDefined);\n\tconst specialRootsPrefix = existMap([\n\t\tcompoundCharacter,\n\t\tnoCaseCharacter,\n\t\troot.forbiddenWordPrefix\n\t]);\n\tfunction filterRoot(root) {\n\t\tconst c = (root.c && Object.entries(root.c))?.filter(([v]) => !(v in specialRootsPrefix));\n\t\treturn { c: c && Object.fromEntries(c) };\n\t}\n\tconst roots = rawRoots.map(filterRoot);\n\tconst compoundRoots = rawRoots.map((r) => r.c?.[compoundCharacter]).filter(isDefined);\n\tconst setOfCompoundRoots = new Set(compoundRoots);\n\tconst rootsForCompoundMethods = [...roots, ...compoundRoots];\n\tconst compoundMethodRoots = {\n\t\t[CompoundWordsMethod.NONE]: [],\n\t\t[CompoundWordsMethod.JOIN_WORDS]: rootsForCompoundMethods.map((r) => [\"+\", r]),\n\t\t[CompoundWordsMethod.SEPARATE_WORDS]: rootsForCompoundMethods.map((r) => [\" \", r])\n\t};\n\tfunction* children(n, hintOffset) {\n\t\tif (n.c) {\n\t\t\tconst h = hint.slice(hintOffset, hintOffset + 3) + hint.slice(Math.max(0, hintOffset - 2), hintOffset);\n\t\t\tconst hints = new Set(h);\n\t\t\tconst c = n.c;\n\t\t\tyield* [...hints].filter((a) => a in c).map((letter) => ({\n\t\t\t\tletter,\n\t\t\t\tnode: c[letter],\n\t\t\t\thintOffset: hintOffset + 1\n\t\t\t}));\n\t\t\thints.add(compoundCharacter);\n\t\t\tyield* Object.entries(c).filter((a) => !hints.has(a[0])).map(([letter, node]) => ({\n\t\t\t\tletter,\n\t\t\t\tnode,\n\t\t\t\thintOffset: hintOffset + 1\n\t\t\t}));\n\t\t\tif (compoundCharacter in c && !setOfCompoundRoots.has(n)) for (const compoundRoot of compoundRoots) for (const child of children(compoundRoot, hintOffset)) {\n\t\t\t\tconst { letter, node, hintOffset } = child;\n\t\t\t\tyield {\n\t\t\t\t\tletter: emitWordSeparator + letter,\n\t\t\t\t\tnode,\n\t\t\t\t\thintOffset\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tif (n.f) yield* [...compoundMethodRoots[_compoundingMethod]].map(([letter, node]) => ({\n\t\t\tletter,\n\t\t\tnode,\n\t\t\thintOffset\n\t\t}));\n\t}\n\tfor (const root of roots) {\n\t\tlet depth = 0;\n\t\tconst stack = [];\n\t\tconst stackText = [\"\"];\n\t\tstack[depth] = children(root, depth);\n\t\tlet ir;\n\t\twhile (depth >= 0) {\n\t\t\twhile (!(ir = stack[depth].next()).done) {\n\t\t\t\tconst { letter: char, node, hintOffset } = ir.value;\n\t\t\t\tconst text = stackText[depth] + char;\n\t\t\t\tconst hinting = yield {\n\t\t\t\t\ttext,\n\t\t\t\t\tnode,\n\t\t\t\t\tdepth\n\t\t\t\t};\n\t\t\t\tif (hinting && hinting.goDeeper) {\n\t\t\t\t\tdepth++;\n\t\t\t\t\tstackText[depth] = text;\n\t\t\t\t\tstack[depth] = children(node, hintOffset);\n\t\t\t\t}\n\t\t\t}\n\t\t\tdepth -= 1;\n\t\t}\n\t}\n}\nfunction existMap(values) {\n\tconst m = Object.create(null);\n\tfor (const v of values) m[v] = true;\n\treturn m;\n}\n//#endregion\n//#region src/lib/TrieNode/trie.ts\nfunction trieRootToITrieRoot(root) {\n\treturn ImplITrieRoot.toITrieNode(root);\n}\nconst EmptyKeys = Object.freeze([]);\nconst EmptyValues = Object.freeze([]);\nconst EmptyEntries = Object.freeze([]);\nvar ImplITrieNode = class ImplITrieNode {\n\tid;\n\t_keys;\n\tnode;\n\tconstructor(node) {\n\t\tthis.node = node;\n\t\tthis.id = node;\n\t}\n\t/** flag End of Word */\n\tget eow() {\n\t\treturn !!this.node.f;\n\t}\n\t/** number of children */\n\tget size() {\n\t\tif (!this.node.c) return 0;\n\t\treturn this.keys().length;\n\t}\n\t/** get keys to children */\n\tkeys() {\n\t\tif (this._keys) return this._keys;\n\t\tconst keys = this.node.c ? Object.keys(this.node.c) : EmptyKeys;\n\t\tthis._keys = keys;\n\t\treturn keys;\n\t}\n\t/** get the child nodes */\n\tvalues() {\n\t\treturn !this.node.c ? EmptyValues : Object.values(this.node.c).map((n) => ImplITrieNode.toITrieNode(n));\n\t}\n\tentries() {\n\t\treturn !this.node.c ? EmptyEntries : Object.entries(this.node.c).map(([k, n]) => [k, ImplITrieNode.toITrieNode(n)]);\n\t}\n\t/** get child ITrieNode */\n\tget(char) {\n\t\tconst n = this.node.c?.[char];\n\t\tif (!n) return void 0;\n\t\treturn ImplITrieNode.toITrieNode(n);\n\t}\n\tgetNode(chars) {\n\t\treturn this.findNode(chars);\n\t}\n\thas(char) {\n\t\tconst c = this.node.c;\n\t\treturn c && char in c || false;\n\t}\n\tchild(keyIdx) {\n\t\tconst char = this.keys()[keyIdx];\n\t\tconst n = char && this.get(char);\n\t\tif (!n) throw new Error(\"Index out of range.\");\n\t\treturn n;\n\t}\n\thasChildren() {\n\t\treturn !!this.node.c;\n\t}\n\t#findTrieNode(word) {\n\t\tlet node = this.node;\n\t\tfor (const char of word) {\n\t\t\tif (!node) return void 0;\n\t\t\tnode = node.c?.[char];\n\t\t}\n\t\treturn node;\n\t}\n\tfindNode(word) {\n\t\tconst node = this.#findTrieNode(word);\n\t\treturn node && ImplITrieNode.toITrieNode(node);\n\t}\n\tfindExact(word) {\n\t\tconst node = this.#findTrieNode(word);\n\t\treturn !!node && !!node.f;\n\t}\n\tstatic toITrieNode(node) {\n\t\treturn new this(node);\n\t}\n};\nvar ImplITrieRoot = class extends ImplITrieNode {\n\tinfo;\n\thasForbiddenWords;\n\thasCompoundWords;\n\thasNonStrictWords;\n\troot;\n\tconstructor(root) {\n\t\tsuper(root);\n\t\tthis.root = root;\n\t\tconst { stripCaseAndAccentsPrefix, compoundCharacter, forbiddenWordPrefix, suggestionPrefix } = root;\n\t\tthis.info = {\n\t\t\tstripCaseAndAccentsPrefix,\n\t\t\tcompoundCharacter,\n\t\t\tforbiddenWordPrefix,\n\t\t\tsuggestionPrefix\n\t\t};\n\t\tthis.hasForbiddenWords = !!root.c[forbiddenWordPrefix];\n\t\tthis.hasCompoundWords = !!root.c[compoundCharacter];\n\t\tthis.hasNonStrictWords = !!root.c[stripCaseAndAccentsPrefix];\n\t}\n\tget eow() {\n\t\treturn false;\n\t}\n\tresolveId(id) {\n\t\treturn new ImplITrieNode(id);\n\t}\n\tget forbidPrefix() {\n\t\treturn this.root.forbiddenWordPrefix;\n\t}\n\tget compoundFix() {\n\t\treturn this.root.compoundCharacter;\n\t}\n\tget caseInsensitivePrefix() {\n\t\treturn this.root.stripCaseAndAccentsPrefix;\n\t}\n\tget suggestionPrefix() {\n\t\treturn this.root.suggestionPrefix;\n\t}\n\tstatic toITrieNode(node) {\n\t\treturn new this(node);\n\t}\n};\n//#endregion\n//#region src/lib/walker/walker.ts\n/**\n* Walks the Trie and yields a value at each node.\n* next(goDeeper: boolean):\n*/\nfunction* compoundWalker(root, compoundingMethod) {\n\tconst roots = {\n\t\t[CompoundWordsMethod.NONE]: [],\n\t\t[CompoundWordsMethod.JOIN_WORDS]: [[\"+\", root]],\n\t\t[CompoundWordsMethod.SEPARATE_WORDS]: [[\" \", root]]\n\t};\n\tconst rc = roots[compoundingMethod].length ? roots[compoundingMethod] : void 0;\n\tconst empty = [];\n\tfunction children(n) {\n\t\tif (n.c && n.f && rc) return [...Object.entries(n.c), ...rc];\n\t\tif (n.c) return Object.entries(n.c);\n\t\tif (n.f && rc) return rc;\n\t\treturn empty;\n\t}\n\tlet depth = 0;\n\tconst stack = [];\n\tstack[depth] = {\n\t\tt: \"\",\n\t\tc: children(root),\n\t\tci: 0\n\t};\n\twhile (depth >= 0) {\n\t\tlet s = stack[depth];\n\t\tlet baseText = s.t;\n\t\twhile (s.ci < s.c.length) {\n\t\t\tconst [char, node] = s.c[s.ci++];\n\t\t\tconst text = baseText + char;\n\t\t\tif ((yield {\n\t\t\t\ttext,\n\t\t\t\tnode,\n\t\t\t\tdepth\n\t\t\t}) ?? true) {\n\t\t\t\tdepth++;\n\t\t\t\tbaseText = text;\n\t\t\t\tstack[depth] = {\n\t\t\t\t\tt: text,\n\t\t\t\t\tc: children(node),\n\t\t\t\t\tci: 0\n\t\t\t\t};\n\t\t\t}\n\t\t\ts = stack[depth];\n\t\t}\n\t\tdepth -= 1;\n\t}\n}\n/**\n* Walks the Trie and yields a value at each node.\n* next(goDeeper: boolean):\n*/\nfunction* nodeWalker(root) {\n\tconst empty = [];\n\tfunction children(n) {\n\t\tif (n.c) return Object.keys(n.c);\n\t\treturn empty;\n\t}\n\tlet depth = 0;\n\tconst stack = [];\n\tstack[depth] = {\n\t\tt: \"\",\n\t\tn: root.c,\n\t\tc: children(root),\n\t\tci: 0\n\t};\n\twhile (depth >= 0) {\n\t\tlet s = stack[depth];\n\t\tlet baseText = s.t;\n\t\twhile (s.ci < s.c.length && s.n) {\n\t\t\tconst char = s.c[s.ci++];\n\t\t\tconst node = s.n[char];\n\t\t\tconst text = baseText + char;\n\t\t\tif ((yield {\n\t\t\t\ttext,\n\t\t\t\tnode,\n\t\t\t\tdepth\n\t\t\t}) !== false) {\n\t\t\t\tdepth++;\n\t\t\t\tbaseText = text;\n\t\t\t\tconst s = stack[depth];\n\t\t\t\tconst c = children(node);\n\t\t\t\tif (s) {\n\t\t\t\t\ts.t = text;\n\t\t\t\t\ts.n = node.c;\n\t\t\t\t\ts.c = c;\n\t\t\t\t\ts.ci = 0;\n\t\t\t\t} else stack[depth] = {\n\t\t\t\t\tt: text,\n\t\t\t\t\tn: node.c,\n\t\t\t\t\tc,\n\t\t\t\t\tci: 0\n\t\t\t\t};\n\t\t\t}\n\t\t\ts = stack[depth];\n\t\t}\n\t\tdepth -= 1;\n\t}\n}\nconst walkerWords = _walkerWords;\n/**\n* Walks the Trie and yields each word.\n*/\nfunction* _walkerWords(root) {\n\tconst empty = [];\n\tfunction children(n) {\n\t\tif (n.c) return Object.keys(n.c);\n\t\treturn empty;\n\t}\n\tlet depth = 0;\n\tconst stack = [];\n\tstack[depth] = {\n\t\tt: \"\",\n\t\tn: root.c,\n\t\tc: children(root),\n\t\tci: 0\n\t};\n\twhile (depth >= 0) {\n\t\tlet s = stack[depth];\n\t\tlet baseText = s.t;\n\t\twhile (s.ci < s.c.length && s.n) {\n\t\t\tconst char = s.c[s.ci++];\n\t\t\tconst node = s.n[char];\n\t\t\tconst text = baseText + char;\n\t\t\tif (node.f) yield text;\n\t\t\tdepth++;\n\t\t\tbaseText = text;\n\t\t\tconst c = children(node);\n\t\t\tif (stack[depth]) {\n\t\t\t\ts = stack[depth];\n\t\t\t\ts.t = text;\n\t\t\t\ts.n = node.c;\n\t\t\t\ts.c = c;\n\t\t\t\ts.ci = 0;\n\t\t\t} else stack[depth] = {\n\t\t\t\tt: text,\n\t\t\t\tn: node.c,\n\t\t\t\tc,\n\t\t\t\tci: 0\n\t\t\t};\n\t\t\ts = stack[depth];\n\t\t}\n\t\tdepth -= 1;\n\t}\n}\nfunction walker(root, compoundingMethod = CompoundWordsMethod.NONE) {\n\treturn compoundingMethod === CompoundWordsMethod.NONE ? nodeWalker(root) : compoundWalker(root, compoundingMethod);\n}\nconst defaultSuggestionOptions = {\n\tcompoundMethod: CompoundWordsMethod.NONE,\n\tignoreCase: true,\n\tchangeLimit: 5,\n\tnumSuggestions: 8,\n\tincludeTies: true,\n\tget timeout() {\n\t\treturn isDebuggerAttached() ? 1e6 : 1e3;\n\t}\n};\nconst keyMapOfSuggestionOptionsStrict = {\n\tchangeLimit: \"changeLimit\",\n\tcompoundMethod: \"compoundMethod\",\n\tignoreCase: \"ignoreCase\",\n\tcompoundSeparator: \"compoundSeparator\",\n\tfilter: \"filter\",\n\tincludeTies: \"includeTies\",\n\tnumSuggestions: \"numSuggestions\",\n\ttimeout: \"timeout\",\n\tweightMap: \"weightMap\"\n};\n/**\n* Create suggestion options using composition.\n* @param opts - partial options.\n* @returns Options - with defaults.\n*/\nfunction createSuggestionOptions(...opts) {\n\tconst options = { ...defaultSuggestionOptions };\n\tconst keys = Object.keys(keyMapOfSuggestionOptionsStrict);\n\tfor (const opt of opts) for (const key of keys) assign(options, opt, key);\n\treturn options;\n}\nfunction assign(dest, src, k) {\n\tdest[k] = src[k] ?? dest[k];\n}\n//#endregion\n//#region src/lib/utils/PairingHeap.ts\nvar PairingHeap = class {\n\t_heap;\n\t_size = 0;\n\tcompare;\n\tconstructor(compare) {\n\t\tthis.compare = compare;\n\t}\n\t/** Add an item to the heap. */\n\tadd(v) {\n\t\tthis._heap = insert$1(this.compare, this._heap, v);\n\t\t++this._size;\n\t\treturn this;\n\t}\n\t/** take an item from the heap. */\n\tdequeue() {\n\t\tconst n = this.next();\n\t\tif (n.done) return void 0;\n\t\treturn n.value;\n\t}\n\t/** Add items to the heap */\n\tappend(i) {\n\t\tfor (const v of i) this.add(v);\n\t\treturn this;\n\t}\n\t/** get the next value */\n\tnext() {\n\t\tif (!this._heap) return {\n\t\t\tvalue: void 0,\n\t\t\tdone: true\n\t\t};\n\t\tconst value = this._heap.v;\n\t\t--this._size;\n\t\tthis._heap = removeHead(this.compare, this._heap);\n\t\treturn { value };\n\t}\n\t/** peek at the next value without removing it. */\n\tpeek() {\n\t\treturn this._heap?.v;\n\t}\n\t[Symbol.iterator]() {\n\t\treturn this;\n\t}\n\t/** alias of `size` */\n\tget length() {\n\t\treturn this._size;\n\t}\n\t/** number of entries in the heap. */\n\tget size() {\n\t\treturn this._size;\n\t}\n};\nfunction removeHead(compare, heap) {\n\tif (!heap || !heap.c) return void 0;\n\treturn mergeSiblings(compare, heap.c);\n}\nfunction insert$1(compare, heap, v) {\n\tconst n = {\n\t\tv,\n\t\ts: void 0,\n\t\tc: void 0\n\t};\n\tif (!heap || compare(v, heap.v) <= 0) {\n\t\tn.c = heap;\n\t\treturn n;\n\t}\n\tn.s = heap.c;\n\theap.c = n;\n\treturn heap;\n}\nfunction merge(compare, a, b) {\n\tif (compare(a.v, b.v) <= 0) {\n\t\ta.s = void 0;\n\t\tb.s = a.c;\n\t\ta.c = b;\n\t\treturn a;\n\t}\n\tb.s = void 0;\n\ta.s = b.c;\n\tb.c = a;\n\treturn b;\n}\nfunction mergeSiblings(compare, n) {\n\tif (!n.s) return n;\n\tconst s = n.s;\n\tconst ss = s.s;\n\tconst m = merge(compare, n, s);\n\treturn ss ? merge(compare, m, mergeSiblings(compare, ss)) : m;\n}\n//#endregion\n//#region src/lib/suggestions/constants.ts\nconst opCosts = {\n\tbaseCost: 100,\n\tswapCost: 75,\n\tduplicateLetterCost: 80,\n\tcompound: 1,\n\tvisuallySimilar: 1,\n\tfirstLetterBias: 5,\n\twordBreak: 99,\n\twordLengthCostFactor: .5\n};\nnew Intl.Collator(\"en\", { sensitivity: \"base\" }).compare;\n/**\n* This a set of letters that look like each other.\n* There can be a maximum of 30 groups.\n* It is possible for a letter to appear in more than 1 group, but not encouraged.\n*/\nconst visualLetterGroups = [\n\tforms(\"\u01CE\u00E0\u00E5\u00C4\u00C0A\u00E3\u00E2\u00E1\u01DF\u1EB7\u1EAF\u1EA5\u0100\u0101\u0103\u0105a\u00E4\u00E6\u0250\u0251\u03B1\u0430\u1FB3\") + \"\u1FB3\",\n\tforms(\"Bb\u1E03\u0432\u044A\u044C\"),\n\tforms(\"\u010B\u010C\u010Dc\u0109\u00E7C\u00C7\u0107\u010A\u0421\u0441\u03C2\"),\n\tforms(\"\u1E0E\u1E0B\u1E0F\u1E11\u010F\u0111\u1E0DDd\"),\n\tforms(\"\u0113\u00EB\u00C8\u00CA\u00CB\u1EC1\u00E9\u00E8\u1EBF\u1EC7\u0115eE\u0112\u0117\u0119\u011B\u00EA\u0259\u025B\u0451\u0401\u0435\u0292\"),\n\tforms(\"f\u1E1FF\uFB00\"),\n\tforms(\"\u0121\u0120\u011E\u01E7\u011D\u0123Gg\u0263\"),\n\tforms(\"\u0127\u0126\u0125\u1E25Hh\u1E24\u021F\u043D\"),\n\tforms(\"I\u012F\u00EF\u0130\u00CE\u00CD\u012Bi\u00CC\u00EC\u00ED\u00EE\u0131\u026A\u0268\u0457\u038A\u0399\"),\n\tforms(\"jJ\u0135\"),\n\tforms(\"\u0137Kk\u03BA\u043A\u045C\"),\n\tforms(\"\u1E37\u0142\u013E\u013CLl\u013A\u1E36\u03AF\u03B9\"),\n\tforms(\"M\u1E43\u1E41m\"),\n\tforms(\"n\u0146\u00D1N\u1E47\u0148\u0147\u00F1\u0144\u014B\u045D\u0438\u0439\"),\n\tforms(\"\u00D2O\u00F8\u022D\u014C\u014D\u0151\u1ECFo\u00D6\u00F2\u0231\u022F\u00F3\u00F4\u00F5\u00F6\u01A1\u0254\u03CC\u03B4\u043E\"),\n\tforms(\"P\u1E57p\u0440\u0420\u03C1\"),\n\tforms(\"Qq\"),\n\tforms(\"\u0159R\u1E5Br\u0155\u0157\u0453\u0433\u044F\"),\n\tforms(\"\u1E63\u0161\u0218\u1E62sS\u0160\u1E61\u015E\u015D\u015B\u0219\u0283\u03A3\"),\n\tforms(\"t\u021B\u021A\u0165T\u1E6D\u1E6C\u1E6B\"),\n\tforms(\"\u00DC\u00FC\u00FB\u016A\u01B0\u016F\u016B\u0171\u00FA\u00DB\u016D\u00D9\u00F9u\u0173U\"),\n\tforms(\"Vv\u03BD\"),\n\tforms(\"\u0175wW\u1E83\u1E85\u1E81\u03C9\u0448\"),\n\tforms(\"xX\u0445\"),\n\tforms(\"\u00FF\u00FDY\u0177y\u00DD\u1EF3\u0423\u045E\u0443\"),\n\tforms(\"Z\u1E93\u017E\u017D\u017C\u017B\u017Az\")\n];\nfunction forms(letters) {\n\tconst n = letters.normalize(\"NFC\").replaceAll(/\\p{M}/gu, \"\");\n\tconst na = n.normalize(\"NFD\").replaceAll(/\\p{M}/gu, \"\");\n\treturn [...new Set(n + n.toLowerCase() + n.toUpperCase() + na + na.toLowerCase() + na.toUpperCase())].join(\"\");\n}\n/**\n* This is a map of letters to groups mask values.\n* If two letters are part of the same group then `visualLetterMaskMap[a] & visualLetterMaskMap[b] !== 0`\n*/\nconst visualLetterMaskMap = calcVisualLetterMasks(visualLetterGroups);\n/**\n*\n* @param groups\n* @returns\n*/\nfunction calcVisualLetterMasks(groups) {\n\tconst map = Object.create(null);\n\tfor (let i = 0; i < groups.length; ++i) {\n\t\tconst m = 1 << i;\n\t\tconst g = groups[i];\n\t\tfor (const c of g) map[c] = (map[c] || 0) | m;\n\t}\n\treturn map;\n}\n//#endregion\n//#region src/lib/utils/assert.ts\nfunction assert(condition, message = \"Assert Failed\") {\n\tif (condition) return;\n\tthrow new Error(message);\n}\n//#endregion\n//#region src/lib/distance/weightedMaps.ts\nconst matchPossibleWordSeparators = /[+\u2219\u2022\u30FB\u25CF]/g;\nfunction createWeightMap(...defs) {\n\tconst map = _createWeightMap();\n\taddDefsToWeightMap(map, defs);\n\treturn map;\n}\nfunction addDefToWeightMap(map, ...defs) {\n\treturn addDefsToWeightMap(map, defs);\n}\nfunction addAdjustment(map, ...adjustments) {\n\tfor (const adj of adjustments) map.adjustments.set(adj.id, adj);\n\treturn map;\n}\nfunction addDefsToWeightMap(map, defs) {\n\tfunction addSet(set, def) {\n\t\taddSetToTrieCost(map.insDel, set, def.insDel, def.penalty);\n\t\taddSetToTrieTrieCost(map.replace, set, def.replace, def.penalty);\n\t\taddSetToTrieTrieCost(map.swap, set, def.swap, def.penalty);\n\t}\n\tfor (const _def of defs) {\n\t\tconst def = normalizeDef(_def);\n\t\tsplitMap$1(def).forEach((s) => addSet(s, def));\n\t}\n\treturn map;\n}\nfunction _createWeightMap() {\n\treturn {\n\t\tinsDel: {},\n\t\treplace: {},\n\t\tswap: {},\n\t\tadjustments: /* @__PURE__ */ new Map()\n\t};\n}\nfunction lowest(a, b) {\n\tif (a === void 0) return b;\n\tif (b === void 0) return a;\n\treturn a <= b ? a : b;\n}\nfunction highest(a, b) {\n\tif (a === void 0) return b;\n\tif (b === void 0) return a;\n\treturn a >= b ? a : b;\n}\nfunction normalize(s) {\n\tconst f = new Set([s]);\n\tf.add(s.normalize(\"NFC\"));\n\tf.add(s.normalize(\"NFD\"));\n\treturn f;\n}\nfunction* splitMapSubstringsIterable(map) {\n\tlet seq = \"\";\n\tlet mode = 0;\n\tfor (const char of map) {\n\t\tif (mode && char === \")\") {\n\t\t\tyield* normalize(seq);\n\t\t\tmode = 0;\n\t\t\tcontinue;\n\t\t}\n\t\tif (mode) {\n\t\t\tseq += char;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"(\") {\n\t\t\tmode = 1;\n\t\t\tseq = \"\";\n\t\t\tcontinue;\n\t\t}\n\t\tyield* normalize(char);\n\t}\n}\nfunction splitMapSubstrings(map) {\n\treturn [...splitMapSubstringsIterable(map)];\n}\n/**\n* Splits a WeightedMapDef.map\n* @param map\n*/\nfunction splitMap$1(def) {\n\tconst { map } = def;\n\treturn map.split(\"|\").map(splitMapSubstrings).filter((s) => s.length > 0);\n}\nfunction addToTrieCost(trie, str, cost, penalties) {\n\tif (!str) return;\n\tlet t = trie;\n\tfor (const c of str) {\n\t\tconst n = t.n = t.n || Object.create(null);\n\t\tt = n[c] = n[c] || Object.create(null);\n\t}\n\tt.c = lowest(t.c, cost);\n\tt.p = highest(t.p, penalties);\n}\nfunction addToTrieTrieCost(trie, left, right, cost, penalties) {\n\tlet t = trie;\n\tfor (const c of left) {\n\t\tconst n = t.n = t.n || Object.create(null);\n\t\tt = n[c] = n[c] || Object.create(null);\n\t}\n\taddToTrieCost(t.t = t.t || Object.create(null), right, cost, penalties);\n}\nfunction addSetToTrieCost(trie, set, cost, penalties) {\n\tif (cost === void 0) return;\n\tfor (const str of set) addToTrieCost(trie, str, cost, penalties);\n}\nfunction addSetToTrieTrieCost(trie, set, cost, penalties) {\n\tif (cost === void 0) return;\n\tfor (const left of set) for (const right of set) {\n\t\tif (left === right) continue;\n\t\taddToTrieTrieCost(trie, left, right, cost, penalties);\n\t}\n}\nfunction* searchTrieNodes(trie, str, i) {\n\tconst len = str.length;\n\tfor (let n = trie.n; i < len && n;) {\n\t\tconst t = n[str[i]];\n\t\tif (!t) return;\n\t\t++i;\n\t\tyield {\n\t\t\ti,\n\t\t\tt\n\t\t};\n\t\tn = t.n;\n\t}\n}\nfunction* findTrieCostPrefixes(trie, str, i) {\n\tfor (const n of searchTrieNodes(trie, str, i)) {\n\t\tconst { c, p } = n.t;\n\t\tif (c !== void 0) yield {\n\t\t\ti: n.i,\n\t\t\tc,\n\t\t\tp: p || 0\n\t\t};\n\t}\n}\nfunction* findTrieTrieCostPrefixes(trie, str, i) {\n\tfor (const n of searchTrieNodes(trie, str, i)) {\n\t\tconst t = n.t.t;\n\t\tif (t !== void 0) yield {\n\t\t\ti: n.i,\n\t\t\tt\n\t\t};\n\t}\n}\nfunction createWeightCostCalculator(weightMap) {\n\treturn new _WeightCostCalculator(weightMap);\n}\nvar _WeightCostCalculator = class {\n\tweightMap;\n\tconstructor(weightMap) {\n\t\tthis.weightMap = weightMap;\n\t}\n\t*calcInsDelCosts(pos) {\n\t\tconst { a, ai, b, bi, c, p } = pos;\n\t\tfor (const del of findTrieCostPrefixes(this.weightMap.insDel, a, ai)) yield {\n\t\t\ta,\n\t\t\tb,\n\t\t\tai: del.i,\n\t\t\tbi,\n\t\t\tc: c + del.c,\n\t\t\tp: p + del.p\n\t\t};\n\t\tfor (const ins of findTrieCostPrefixes(this.weightMap.insDel, b, bi)) yield {\n\t\t\ta,\n\t\t\tb,\n\t\t\tai,\n\t\t\tbi: ins.i,\n\t\t\tc: c + ins.c,\n\t\t\tp: p + ins.p\n\t\t};\n\t}\n\t*calcReplaceCosts(pos) {\n\t\tconst { a, ai, b, bi, c, p } = pos;\n\t\tfor (const del of findTrieTrieCostPrefixes(this.weightMap.replace, a, ai)) for (const ins of findTrieCostPrefixes(del.t, b, bi)) yield {\n\t\t\ta,\n\t\t\tb,\n\t\t\tai: del.i,\n\t\t\tbi: ins.i,\n\t\t\tc: c + ins.c,\n\t\t\tp: p + ins.p\n\t\t};\n\t}\n\t*calcSwapCosts(pos) {\n\t\tconst { a, ai, b, bi, c, p } = pos;\n\t\tconst swap = this.weightMap.swap;\n\t\tfor (const left of findTrieTrieCostPrefixes(swap, a, ai)) for (const right of findTrieCostPrefixes(left.t, a, left.i)) {\n\t\t\tconst sw = a.slice(left.i, right.i) + a.slice(ai, left.i);\n\t\t\tif (b.slice(bi).startsWith(sw)) {\n\t\t\t\tconst len = sw.length;\n\t\t\t\tyield {\n\t\t\t\t\ta,\n\t\t\t\t\tb,\n\t\t\t\t\tai: ai + len,\n\t\t\t\t\tbi: bi + len,\n\t\t\t\t\tc: c + right.c,\n\t\t\t\t\tp: p + right.p\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\tcalcAdjustment(word) {\n\t\tlet penalty = 0;\n\t\tfor (const adj of this.weightMap.adjustments.values()) if (adj.regexp.global) for (const _m of word.matchAll(adj.regexp)) penalty += adj.penalty;\n\t\telse if (adj.regexp.test(word)) penalty += adj.penalty;\n\t\treturn penalty;\n\t}\n};\nfunction normalizeDef(def) {\n\tconst { map, ...rest } = def;\n\treturn {\n\t\t...rest,\n\t\tmap: normalizeMap(map)\n\t};\n}\nfunction normalizeMap(map) {\n\treturn map.replaceAll(matchPossibleWordSeparators, \"\u2219\");\n}\n//#endregion\n//#region src/lib/distance/distanceAStarWeighted.ts\n/**\n* Calculate the edit distance between two words using an A* algorithm.\n*\n* Using basic weights, this algorithm has the same results as the Damerau-Levenshtein algorithm.\n*/\nfunction distanceAStarWeighted(wordA, wordB, map, cost = 100) {\n\tconst calc = createWeightCostCalculator(map);\n\tconst best = _distanceAStarWeightedEx(wordA, wordB, calc, cost);\n\tconst penalty = calc.calcAdjustment(wordB);\n\treturn best.c + best.p + penalty;\n}\nfunction _distanceAStarWeightedEx(wordA, wordB, map, cost = 100) {\n\tconst a = \"^\" + wordA + \"$\";\n\tconst b = \"^\" + wordB + \"$\";\n\tconst aN = a.length;\n\tconst bN = b.length;\n\tconst candidates = new CandidatePool(aN, bN);\n\tcandidates.add({\n\t\tai: 0,\n\t\tbi: 0,\n\t\tc: 0,\n\t\tp: 0,\n\t\tf: void 0\n\t});\n\t/** Substitute / Replace */\n\tfunction opSub(n) {\n\t\tconst { ai, bi, c, p } = n;\n\t\tif (ai < aN && bi < bN) {\n\t\t\tconst cc = a[ai] === b[bi] ? c : c + cost;\n\t\t\tcandidates.add({\n\t\t\t\tai: ai + 1,\n\t\t\t\tbi: bi + 1,\n\t\t\t\tc: cc,\n\t\t\t\tp,\n\t\t\t\tf: n\n\t\t\t});\n\t\t}\n\t}\n\t/** Insert */\n\tfunction opIns(n) {\n\t\tconst { ai, bi, c, p } = n;\n\t\tif (bi < bN) candidates.add({\n\t\t\tai,\n\t\t\tbi: bi + 1,\n\t\t\tc: c + cost,\n\t\t\tp,\n\t\t\tf: n\n\t\t});\n\t}\n\t/** Delete */\n\tfunction opDel(n) {\n\t\tconst { ai, bi, c, p } = n;\n\t\tif (ai < aN) candidates.add({\n\t\t\tai: ai + 1,\n\t\t\tbi,\n\t\t\tc: c + cost,\n\t\t\tp,\n\t\t\tf: n\n\t\t});\n\t}\n\t/** Swap adjacent letters */\n\tfunction opSwap(n) {\n\t\tconst { ai, bi, c, p } = n;\n\t\tif (a[ai] === b[bi + 1] && a[ai + 1] === b[bi]) candidates.add({\n\t\t\tai: ai + 2,\n\t\t\tbi: bi + 2,\n\t\t\tc: c + cost,\n\t\t\tp,\n\t\t\tf: n\n\t\t});\n\t}\n\tfunction opMap(n) {\n\t\tconst { ai, bi, c, p } = n;\n\t\tconst pos = {\n\t\t\ta,\n\t\t\tb,\n\t\t\tai,\n\t\t\tbi,\n\t\t\tc,\n\t\t\tp\n\t\t};\n\t\t[\n\t\t\tmap.calcInsDelCosts(pos),\n\t\t\tmap.calcSwapCosts(pos),\n\t\t\tmap.calcReplaceCosts(pos)\n\t\t].forEach((iter) => {\n\t\t\tfor (const nn of iter) candidates.add({\n\t\t\t\t...nn,\n\t\t\t\tf: n\n\t\t\t});\n\t\t});\n\t}\n\tlet best;\n\twhile (best = candidates.next()) {\n\t\tif (best.ai === aN && best.bi === bN) break;\n\t\topSwap(best);\n\t\topIns(best);\n\t\topDel(best);\n\t\topMap(best);\n\t\topSub(best);\n\t}\n\tassert(best);\n\treturn best;\n}\nvar CandidatePool = class {\n\tpool = new PairingHeap(compare$1);\n\tgrid = [];\n\taN;\n\tbN;\n\tconstructor(aN, bN) {\n\t\tthis.aN = aN;\n\t\tthis.bN = bN;\n\t}\n\tnext() {\n\t\tlet n;\n\t\twhile (n = this.pool.dequeue()) if (!n.d) return n;\n\t}\n\tadd(n) {\n\t\tconst i = idx(n.ai, n.bi, this.bN);\n\t\tconst g = this.grid[i];\n\t\tif (!g) {\n\t\t\tthis.grid[i] = n;\n\t\t\tthis.pool.add(n);\n\t\t\treturn;\n\t\t}\n\t\tif (g.c <= n.c) return;\n\t\tg.d = true;\n\t\tthis.grid[i] = n;\n\t\tthis.pool.add(n);\n\t}\n};\nfunction idx(r, c, cols) {\n\treturn r * cols + c;\n}\nfunction compare$1(a, b) {\n\treturn a.c - b.c || b.ai + b.bi - a.ai - a.bi;\n}\n//#endregion\n//#region src/lib/distance/levenshtein.ts\nconst initialRow = [...\".\".repeat(50)].map((_, i) => i);\nObject.freeze(initialRow);\n/**\n* Damerau\u2013Levenshtein distance\n* [Damerau\u2013Levenshtein distance - Wikipedia](https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance)\n* @param a - first word\n* @param b - second word\n* @returns Distance value\n*/\nfunction levenshteinDistance(a, b) {\n\tconst aa = \"  \" + a;\n\tconst bb = \"  \" + b;\n\tconst nA = a.length + 1;\n\tconst nB = b.length + 1;\n\tconst firstRow = initialRow.slice(0, nA + 1);\n\tfor (let i = firstRow.length; i <= nA; ++i) firstRow[i] = i;\n\tconst matrix = [\n\t\tfirstRow,\n\t\t[1, ...firstRow],\n\t\t[\n\t\t\t2,\n\t\t\t1,\n\t\t\t...firstRow\n\t\t]\n\t];\n\tlet ppRow = matrix[0];\n\tlet pRow = matrix[1];\n\tfor (let j = 2; j <= nB; ++j) {\n\t\tconst row = matrix[j % 3];\n\t\trow[0] = pRow[0] + 1;\n\t\trow[1] = pRow[1] + 1;\n\t\tconst bp = bb[j - 1];\n\t\tconst bc = bb[j];\n\t\tlet ap = aa[0];\n\t\tfor (let i = 2, i1 = 1; i <= nA; i1 = i, ++i) {\n\t\t\tconst ac = aa[i];\n\t\t\tconst c = pRow[i1] + (ac === bc ? 0 : 1);\n\t\t\tconst ct = ac === bp && ap === bc ? ppRow[i1 - 1] + 1 : c;\n\t\t\trow[i] = Math.min(c, ct, pRow[i] + 1, row[i1] + 1);\n\t\t\tap = ac;\n\t\t}\n\t\tppRow = pRow;\n\t\tpRow = row;\n\t}\n\treturn pRow[nA];\n}\n//#endregion\n//#region src/lib/distance/distance.ts\nconst defaultCost = 100;\n/**\n* Calculate the edit distance between any two words.\n* Use the Damerau\u2013Levenshtein distance algorithm.\n* @param wordA\n* @param wordB\n* @param editCost - the cost of each edit (defaults to 100)\n* @returns the edit distance.\n*/\nfunction editDistance(wordA, wordB, editCost = defaultCost) {\n\treturn levenshteinDistance(wordA, wordB) * editCost;\n}\n/**\n* Calculate the weighted edit distance between any two words.\n* @param wordA\n* @param wordB\n* @param weights - the weights to use\n* @param editCost - the cost of each edit (defaults to 100)\n* @returns the edit distance\n*/\nfunction editDistanceWeighted(wordA, wordB, weights, editCost = defaultCost) {\n\treturn distanceAStarWeighted(wordA, wordB, weights, editCost);\n}\n/**\n* Collect Map definitions into a single weighted map.\n* @param defs - list of definitions\n* @returns A Weighted Map to be used with distance calculations.\n*/\nfunction createWeightedMap(defs) {\n\treturn createWeightMap(...defs);\n}\n//#endregion\n//#region src/lib/utils/timer.ts\nfunction startTimer() {\n\tconst start = performance.now();\n\treturn () => performance.now() - start;\n}\n//#endregion\n//#region src/lib/utils/util.ts\nfunction isDefined$1(a) {\n\treturn a !== void 0;\n}\n/**\n* Remove any fields with an `undefined` value.\n* @param t - object to clean\n* @returns t\n*/\nfunction cleanCopy(t) {\n\treturn clean$1({ ...t });\n}\n/**\n* Remove any fields with an `undefined` value.\n* **MODIFIES THE OBJECT**\n* @param t - object to clean\n* @returns t\n*/\nfunction clean$1(t) {\n\tfor (const prop in t) if (t[prop] === void 0) delete t[prop];\n\treturn t;\n}\nfunction unique(a) {\n\treturn [...new Set(a)];\n}\n/**\n*\n* @param text verbatim text to be inserted into a regexp\n* @returns text that can be used in a regexp.\n*/\nfunction regexQuote(text) {\n\treturn text.replaceAll(/([[\\]\\-+(){},|*.\\\\])/g, \"\\\\$1\");\n}\n/**\n* Factory to create a function that will replace all occurrences of `match` with `withText`\n* @param match - string to match\n* @param replaceWithText - the text to substitute.\n*/\nfunction replaceAllFactory(match, replaceWithText) {\n\tconst r = RegExp(regexQuote(match), \"g\");\n\treturn (text) => text.replace(r, replaceWithText);\n}\n//#endregion\n//#region src/lib/suggestions/suggestCollector.ts\nconst defaultMaxNumberSuggestions = 10;\nconst BASE_COST = 100;\nconst MAX_NUM_CHANGES = 5;\nconst MAX_ALLOWED_COST_SCALE = 1.03 * .5;\nconst collator = new Intl.Collator();\nconst regexSeparator = new RegExp(`[${regexQuote(\" \")}]`, \"g\");\nconst wordLengthCost = [\n\t0,\n\t50,\n\t25,\n\t5,\n\t0\n];\nconst EXTRA_WORD_COST = 5;\n/** time in ms */\nconst DEFAULT_COLLECTOR_TIMEOUT = 1e3;\nconst symStopProcessing = Symbol(\"Collector Stop Processing\");\nfunction compSuggestionResults(a, b) {\n\treturn (a.isPreferred && -1 || 0) - (b.isPreferred && -1 || 0) || a.cost - b.cost || a.word.length - b.word.length || collator.compare(a.word, b.word);\n}\nconst defaultSuggestionCollectorOptions = Object.freeze({\n\tnumSuggestions: defaultMaxNumberSuggestions,\n\tfilter: () => true,\n\tchangeLimit: MAX_NUM_CHANGES,\n\tincludeTies: false,\n\tignoreCase: true,\n\ttimeout: DEFAULT_COLLECTOR_TIMEOUT,\n\tweightMap: void 0,\n\tcompoundSeparator: \"\",\n\tcompoundMethod: void 0\n});\nfunction suggestionCollector(wordToMatch, options) {\n\tconst { filter = () => true, changeLimit = MAX_NUM_CHANGES, includeTies = false, ignoreCase = true, timeout = DEFAULT_COLLECTOR_TIMEOUT, weightMap, compoundSeparator = defaultSuggestionCollectorOptions.compoundSeparator } = options;\n\tconst numSuggestions = Math.max(options.numSuggestions, 0) || 0;\n\tconst numSugToHold = weightMap ? numSuggestions * 2 : numSuggestions;\n\tconst sugs = /* @__PURE__ */ new Map();\n\tlet maxCost = BASE_COST * Math.min(wordToMatch.length * MAX_ALLOWED_COST_SCALE, changeLimit);\n\tconst useSeparator = compoundSeparator || (weightMap ? \"\u2219\" : defaultSuggestionCollectorOptions.compoundSeparator);\n\tconst fnCleanWord = !useSeparator || useSeparator === compoundSeparator ? (w) => w : replaceAllFactory(useSeparator, \"\");\n\tif (useSeparator && weightMap) addDefToWeightMap(weightMap, {\n\t\tmap: useSeparator,\n\t\tinsDel: 50\n\t});\n\tconst genSuggestionOptions = clean$1({\n\t\tchangeLimit,\n\t\tignoreCase,\n\t\tcompoundMethod: options.compoundMethod,\n\t\tcompoundSeparator: useSeparator\n\t});\n\tlet timeRemaining = timeout;\n\tfunction dropMax() {\n\t\tif (sugs.size < 2 || !numSuggestions) {\n\t\t\tsugs.clear();\n\t\t\treturn;\n\t\t}\n\t\tconst sorted = [...sugs.values()].sort(compSuggestionResults);\n\t\tlet i = numSugToHold - 1;\n\t\tmaxCost = sorted[i].cost;\n\t\tfor (; i < sorted.length && sorted[i].cost <= maxCost; ++i);\n\t\tfor (; i < sorted.length; ++i) sugs.delete(sorted[i].word);\n\t}\n\tfunction adjustCost(sug) {\n\t\tif (sug.isPreferred) return sug;\n\t\tconst words = sug.word.split(regexSeparator);\n\t\tconst extraCost = words.map((w) => wordLengthCost[w.length] || 0).reduce((a, b) => a + b, 0) + (words.length - 1) * EXTRA_WORD_COST;\n\t\treturn {\n\t\t\tword: sug.word,\n\t\t\tcost: sug.cost + extraCost\n\t\t};\n\t}\n\tfunction collectSuggestion(suggestion) {\n\t\tconst { word, cost, isPreferred } = adjustCost(suggestion);\n\t\tif (cost <= maxCost && filter(suggestion.word, cost)) {\n\t\t\tconst known = sugs.get(word);\n\t\t\tif (known) {\n\t\t\t\tknown.cost = Math.min(known.cost, cost);\n\t\t\t\tknown.isPreferred = known.isPreferred || isPreferred;\n\t\t\t} else {\n\t\t\t\tsugs.set(word, {\n\t\t\t\t\tword,\n\t\t\t\t\tcost,\n\t\t\t\t\tisPreferred\n\t\t\t\t});\n\t\t\t\tif (cost < maxCost && sugs.size > numSugToHold) dropMax();\n\t\t\t}\n\t\t}\n\t\treturn maxCost;\n\t}\n\t/**\n\t* Collection suggestions from a SuggestionIterator\n\t* @param src - the SuggestionIterator used to generate suggestions.\n\t* @param timeout - the amount of time in milliseconds to allow for suggestions.\n\t*/\n\tfunction collect(src, timeout, filter) {\n\t\tlet stop = false;\n\t\ttimeout = timeout ?? timeRemaining;\n\t\ttimeout = Math.min(timeout, timeRemaining);\n\t\tif (timeout < 0) return;\n\t\tconst timer = startTimer();\n\t\tlet ir;\n\t\twhile (!(ir = src.next(stop || maxCost)).done) {\n\t\t\tif (timer() > timeout) stop = symStopProcessing;\n\t\t\tconst { value } = ir;\n\t\t\tif (!value) continue;\n\t\t\tif (isSuggestionResult(value)) {\n\t\t\t\tif (!filter || filter(value.word, value.cost)) collectSuggestion(value);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\ttimeRemaining -= timer();\n\t}\n\tfunction cleanCompoundResult(sr) {\n\t\tconst { word, cost } = sr;\n\t\tconst cWord = fnCleanWord(word);\n\t\tif (cWord !== word) return {\n\t\t\tword: cWord,\n\t\t\tcost,\n\t\t\tcompoundWord: word,\n\t\t\tisPreferred: void 0\n\t\t};\n\t\treturn { ...sr };\n\t}\n\tfunction suggestions() {\n\t\tif (numSuggestions < 1 || !sugs.size) return [];\n\t\tconst NF = \"NFD\";\n\t\tconst nWordToMatch = wordToMatch.normalize(NF);\n\t\tconst rawValues = [...sugs.values()];\n\t\tconst sorted = (weightMap ? rawValues.map(({ word, cost, isPreferred }) => ({\n\t\t\tword,\n\t\t\tcost: isPreferred ? cost : editDistanceWeighted(nWordToMatch, word.normalize(NF), weightMap, 110),\n\t\t\tisPreferred\n\t\t})) : rawValues).sort(compSuggestionResults).map(cleanCompoundResult);\n\t\tlet i = Math.min(sorted.length, numSuggestions) - 1;\n\t\tconst limit = includeTies ? sorted.length : Math.min(sorted.length, numSuggestions);\n\t\tconst iCost = sorted[i].cost;\n\t\tconst maxCost = Math.min(iCost, weightMap ? changeLimit * BASE_COST - 1 : iCost);\n\t\tfor (i = 1; i < limit && sorted[i].cost <= maxCost; ++i);\n\t\tsorted.length = i;\n\t\treturn sorted;\n\t}\n\treturn {\n\t\tcollect,\n\t\tadd: function(suggestion) {\n\t\t\tcollectSuggestion(suggestion);\n\t\t\treturn this;\n\t\t},\n\t\tget suggestions() {\n\t\t\treturn suggestions();\n\t\t},\n\t\tget maxCost() {\n\t\t\treturn maxCost;\n\t\t},\n\t\tget word() {\n\t\t\treturn wordToMatch;\n\t\t},\n\t\tget maxNumSuggestions() {\n\t\t\treturn numSuggestions;\n\t\t},\n\t\tget changeLimit() {\n\t\t\treturn changeLimit;\n\t\t},\n\t\tincludesTies: includeTies,\n\t\tignoreCase,\n\t\tsymbolStopProcessing: symStopProcessing,\n\t\tgenSuggestionOptions\n\t};\n}\n/**\n* Impersonating a Collector, allows searching for multiple variants on the same word.\n* The collection is still in the original collector.\n* @param collector - collector to impersonate\n* @param word - word to present instead of `collector.word`.\n* @returns a SuggestionCollector\n*/\nfunction impersonateCollector(collector, word) {\n\tconst r = Object.create(collector);\n\tObject.defineProperty(r, \"word\", {\n\t\tvalue: word,\n\t\twritable: false\n\t});\n\treturn r;\n}\nfunction isSuggestionResult(s) {\n\tconst r = s;\n\treturn !!r && typeof r === \"object\" && r?.cost !== void 0 && r.word !== void 0;\n}\n//#endregion\n//#region src/lib/suggestions/suggestAStar.ts\n/**\n* Compare Path Nodes.\n* Balance the calculation between depth vs cost\n*/\nfunction comparePath(a, b) {\n\treturn a.c / (a.i + 1) - b.c / (b.i + 1) + (b.i - a.i);\n}\nfunction suggestAStar(trie, word, options = {}) {\n\tconst opts = createSuggestionOptions(options);\n\tconst collector = suggestionCollector(word, opts);\n\tcollector.collect(getSuggestionsAStar(trie, word, opts));\n\treturn collector.suggestions;\n}\nfunction* getSuggestionsAStar(trie, srcWord, options = {}) {\n\tconst { compoundMethod, changeLimit, ignoreCase, weightMap } = createSuggestionOptions(options);\n\tconst visMap = visualLetterMaskMap;\n\tconst root = trie.getRoot();\n\tconst rootIgnoreCase = ignoreCase && root.get(root.info.stripCaseAndAccentsPrefix) || void 0;\n\tconst pathHeap = new PairingHeap(comparePath);\n\tconst resultHeap = new PairingHeap(compareSuggestion);\n\tconst rootPNode = {\n\t\tn: root,\n\t\ti: 0,\n\t\tc: 0,\n\t\ts: \"\",\n\t\tp: void 0,\n\t\tt: createCostTrie()\n\t};\n\tconst BC = opCosts.baseCost;\n\tconst VC = opCosts.visuallySimilar;\n\tconst DL = opCosts.duplicateLetterCost;\n\tconst wordSeparator = compoundMethod === CompoundWordsMethod.JOIN_WORDS ? \"+\" : \" \";\n\tconst sc = specialChars(trie.info);\n\tconst comp = trie.info.compoundCharacter;\n\tconst compRoot = root.get(comp);\n\tconst compRootIgnoreCase = rootIgnoreCase && rootIgnoreCase.get(comp);\n\tconst emitted = Object.create(null);\n\tconst debug = isDebuggerAttached();\n\tconst srcLetters = [...srcWord];\n\t/** Initial limit is based upon the length of the word. */\n\tlet limit = BC * Math.min(srcLetters.length * opCosts.wordLengthCostFactor, changeLimit);\n\tpathHeap.add(rootPNode);\n\tif (rootIgnoreCase) pathHeap.add({\n\t\tn: rootIgnoreCase,\n\t\ti: 0,\n\t\tc: 0,\n\t\ts: \"\",\n\t\tp: void 0,\n\t\tt: createCostTrie()\n\t});\n\tlet best = pathHeap.dequeue();\n\tlet maxSize = pathHeap.size;\n\tlet suggestionsGenerated = 0;\n\tlet nodesProcessed = 0;\n\tlet nodesProcessedLimit = 1e3;\n\tlet minGen = 1;\n\twhile (best) {\n\t\tif (++nodesProcessed > nodesProcessedLimit) {\n\t\t\tnodesProcessedLimit += 1e3;\n\t\t\tif (suggestionsGenerated < minGen) break;\n\t\t\tminGen += suggestionsGenerated;\n\t\t}\n\t\tif (best.c > limit) {\n\t\t\tbest = pathHeap.dequeue();\n\t\t\tmaxSize = Math.max(maxSize, pathHeap.size);\n\t\t\tcontinue;\n\t\t}\n\t\tprocessPath(best);\n\t\tfor (const sug of resultHeap) {\n\t\t\t++suggestionsGenerated;\n\t\t\tif (sug.cost > limit) continue;\n\t\t\tif (sug.word in emitted && emitted[sug.word] <= sug.cost) continue;\n\t\t\tconst action = yield sug;\n\t\t\temitted[sug.word] = sug.cost;\n\t\t\tif (typeof action === \"number\") limit = Math.min(action, limit);\n\t\t\tif (typeof action === \"symbol\") return;\n\t\t}\n\t\tbest = pathHeap.dequeue();\n\t\tmaxSize = Math.max(maxSize, pathHeap.size);\n\t}\n\treturn;\n\tfunction compareSuggestion(a, b) {\n\t\tconst pa = a.isPreferred && 1 || 0;\n\t\treturn (b.isPreferred && 1 || 0) - pa || a.cost - b.cost || Math.abs(a.word.charCodeAt(0) - srcWord.charCodeAt(0)) - Math.abs(b.word.charCodeAt(0) - srcWord.charCodeAt(0));\n\t}\n\tfunction processPath(p) {\n\t\tconst len = srcLetters.length;\n\t\tif (p.n.eow && p.i === len) {\n\t\t\tconst result = {\n\t\t\t\tword: pNodeToWord(p),\n\t\t\t\tcost: p.c\n\t\t\t};\n\t\t\tif (debug) console.log(\"add possible suggestion: %o\", {\n\t\t\t\t...result,\n\t\t\t\tnodes: pNodeToDbgInfo(p).map(({ id, s, c, a }) => `${a}{${s || \"\u2205\"}} $${c}-> ${id} `).join(\"\")\n\t\t\t});\n\t\t\tresultHeap.add(result);\n\t\t}\n\t\tcalcEdges(p);\n\t}\n\tfunction calcEdges(p) {\n\t\tconst { n, i, t } = p;\n\t\tconst s = srcLetters[i];\n\t\tconst sg = visMap[s] || 0;\n\t\tconst cost0 = p.c;\n\t\tconst cost = cost0 + BC + (i ? 0 : opCosts.firstLetterBias);\n\t\tconst costVis = cost0 + VC;\n\t\tconst costLegacyCompound = cost0 + opCosts.wordBreak;\n\t\tconst costCompound = cost0 + opCosts.compound;\n\t\tif (s) {\n\t\t\tconst m = n.get(s);\n\t\t\tif (m) storePath(t, m, i + 1, cost0, s, p, \"=\", s);\n\t\t\tif (weightMap) processWeightMapEdges(p, weightMap);\n\t\t\tconst ns = srcLetters[i + 1];\n\t\t\tif (s === ns && m) storePath(t, m, i + 2, cost0 + DL, s, p, \"dd\", s);\n\t\t\tstorePath(t, n, i + 1, cost, \"\", p, \"d\", \"\");\n\t\t\tfor (const [ss, node] of n.entries()) {\n\t\t\t\tif (ss === s || ss in sc) continue;\n\t\t\t\tconst c = sg & (visMap[ss] || 0) ? costVis : cost;\n\t\t\t\tstorePath(t, node, i + 1, c, ss, p, \"r\", ss);\n\t\t\t}\n\t\t\tif (n.eow && i && compoundMethod) storePath(t, root, i, costLegacyCompound, wordSeparator, p, \"L\", wordSeparator);\n\t\t\tif (ns) {\n\t\t\t\tconst n2 = n.get(ns)?.get(s);\n\t\t\t\tif (n2) {\n\t\t\t\t\tconst ss = ns + s;\n\t\t\t\t\tstorePath(t, n2, i + 2, cost0 + opCosts.swapCost, ss, p, \"s\", ss);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (compRoot && costCompound <= limit && n.get(comp)) {\n\t\t\tif (compRootIgnoreCase) storePath(t, compRootIgnoreCase, i, costCompound, \"\", p, \"~+\", \"~+\");\n\t\t\tstorePath(t, compRoot, i, costCompound, \"\", p, \"+\", \"+\");\n\t\t}\n\t\tif (cost <= limit) for (const [char, node] of n.entries()) {\n\t\t\tif (char in sc) continue;\n\t\t\tstorePath(t, node, i, cost, char, p, \"i\", char);\n\t\t}\n\t}\n\tfunction processWeightMapEdges(p, weightMap) {\n\t\tdelLetters(p, weightMap, srcLetters, storePath);\n\t\tinsLetters(p, weightMap, srcLetters, storePath);\n\t\trepLetters(p, weightMap, srcLetters, storePath);\n\t}\n\t/**\n\t* Apply a cost to the current step.\n\t* @param t - trie node\n\t* @param s - letter to apply, empty string means to apply to the current node\n\t* @param i - index\n\t* @param c - cost\n\t* @returns PNode if it was applied, otherwise undefined\n\t*/\n\tfunction storePath(t, n, i, c, s, p, a, ss) {\n\t\tconst tt = getCostTrie(t, ss);\n\t\tif (tt.c[i] <= c || c > limit) return void 0;\n\t\ttt.c[i] = c;\n\t\tpathHeap.add({\n\t\t\tn,\n\t\t\ti,\n\t\t\tc,\n\t\t\ts,\n\t\t\tp,\n\t\t\tt: tt,\n\t\t\ta\n\t\t});\n\t}\n}\nfunction delLetters(pNode, weightMap, letters, storePath) {\n\tconst { t, n } = pNode;\n\tconst trie = weightMap.insDel;\n\tlet ii = pNode.i;\n\tconst cost0 = pNode.c - pNode.i;\n\tconst len = letters.length;\n\tfor (let nn = trie.n; ii < len && nn;) {\n\t\tconst tt = nn[letters[ii]];\n\t\tif (!tt) return;\n\t\t++ii;\n\t\tif (tt.c !== void 0) storePath(t, n, ii, cost0 + tt.c, \"\", pNode, \"d\", \"\");\n\t\tnn = tt.n;\n\t}\n}\nfunction insLetters(p, weightMap, _letters, storePath) {\n\tconst { t, i, c, n } = p;\n\tconst cost0 = c;\n\tsearchTrieCostNodesMatchingTrie2(weightMap.insDel, n, (s, tc, n) => {\n\t\tif (tc.c !== void 0) storePath(t, n, i, cost0 + tc.c, s, p, \"i\", s);\n\t});\n}\nfunction repLetters(pNode, weightMap, letters, storePath) {\n\tconst node = pNode.n;\n\tconst pt = pNode.t;\n\tconst cost0 = pNode.c;\n\tconst len = letters.length;\n\tconst trie = weightMap.replace;\n\tlet i = pNode.i;\n\tfor (let n = trie.n; i < len && n;) {\n\t\tconst t = n[letters[i]];\n\t\tif (!t) return;\n\t\t++i;\n\t\tconst tInsert = t.t;\n\t\tif (tInsert) searchTrieCostNodesMatchingTrie2(tInsert, node, (s, tt, n) => {\n\t\t\tconst c = tt.c;\n\t\t\tif (c === void 0) return;\n\t\t\tstorePath(pt, n, i, cost0 + c + (tt.p || 0), s, pNode, \"r\", s);\n\t\t});\n\t\tn = t.n;\n\t}\n}\nfunction createCostTrie() {\n\treturn {\n\t\tc: [],\n\t\tt: Object.create(null)\n\t};\n}\nfunction getCostTrie(t, s) {\n\tif (s.length === 1) return t.t[s] ??= createCostTrie();\n\tif (!s) return t;\n\tlet tt = t;\n\tfor (const c of s) tt = tt.t[c] ??= createCostTrie();\n\treturn tt;\n}\nfunction pNodeToDbgInfo(p) {\n\tconst parts = [];\n\tlet n = p;\n\twhile (n) {\n\t\tconst id = formatNodeId(n.n.id);\n\t\tparts.push({\n\t\t\tid,\n\t\t\ts: n.s,\n\t\t\tc: n.c,\n\t\t\ta: n.a || \"\"\n\t\t});\n\t\tn = n.p;\n\t}\n\tparts.reverse();\n\treturn parts;\n}\nfunction formatNodeId(id) {\n\tconst s = id.toString(16).padStart(16, \"0\");\n\tconst upper = s.slice(0, 8).replace(/^0+/, \"\").padStart(4, \"0\");\n\tconst lower = s.slice(8).replace(/^0+/, \"\");\n\treturn `${upper}${lower ? \".\" + lower : \"\"}`;\n}\nfunction pNodeToWord(p) {\n\tconst parts = [];\n\tlet n = p;\n\twhile (n) {\n\t\tparts.push(n.s);\n\t\tn = n.p;\n\t}\n\tparts.reverse();\n\treturn parts.join(\"\");\n}\nfunction specialChars(options) {\n\tconst charSet = Object.create(null);\n\tfor (const c of Object.values(options)) if (typeof c === \"string\") charSet[c] = true;\n\treturn charSet;\n}\nfunction searchTrieCostNodesMatchingTrie2(trie, node, emit, s = \"\") {\n\tconst n = trie.n;\n\tif (!n) return;\n\tfor (const [key, c] of node.entries()) {\n\t\tconst t = n[key];\n\t\tif (!t) continue;\n\t\tconst pfx = s + key;\n\t\temit(pfx, t, c);\n\t\tif (t.n) searchTrieCostNodesMatchingTrie2(t, c, emit, pfx);\n\t}\n}\n//#endregion\n//#region src/lib/ITrieNode/TrieInfo.ts\nconst defaultTrieInfoSettings = {\n\tforbiddenWordPrefix: \"!\",\n\tstripCaseAndAccentsPrefix: \"~\",\n\tcompoundCharacter: \"+\",\n\tsuggestionPrefix: \":\"\n};\nconst revMapDefaultTrieInfoSettings = {\n\t\"!\": \"forbiddenWordPrefix\",\n\t\"~\": \"stripCaseAndAccentsPrefix\",\n\t\"+\": \"compoundCharacter\",\n\t\":\": \"suggestionPrefix\"\n};\nconst defaultTrieCharacteristics = {\n\thasForbiddenWords: \"!\",\n\thasNonStrictWords: \"~\",\n\thasCompoundWords: \"+\",\n\thasPreferredSuggestions: \":\"\n};\nconst mapInfoToCharacteristics = {\n\tcompoundCharacter: \"hasCompoundWords\",\n\tstripCaseAndAccentsPrefix: \"hasNonStrictWords\",\n\tforbiddenWordPrefix: \"hasForbiddenWords\",\n\tsuggestionPrefix: \"hasPreferredSuggestions\"\n};\nconst mapCharacteristicToInfo = {\n\thasCompoundWords: \"compoundCharacter\",\n\thasNonStrictWords: \"stripCaseAndAccentsPrefix\",\n\thasForbiddenWords: \"forbiddenWordPrefix\",\n\thasPreferredSuggestions: \"suggestionPrefix\"\n};\nconst keysTrieCharacteristics = Object.keys(defaultTrieCharacteristics);\nconst keysTrieInfo = Object.keys(defaultTrieInfoSettings);\nconst revMapDefaultTrieCharacteristics = {\n\t\"!\": \"hasForbiddenWords\",\n\t\"+\": \"hasCompoundWords\",\n\t\"~\": \"hasNonStrictWords\",\n\t\":\": \"hasPreferredSuggestions\"\n};\nfunction parseTrieInfoFlags(info) {\n\tconst trieInfo = {};\n\tfor (let i = 0; i < info.length; i += 2) {\n\t\tconst k = info[i];\n\t\tconst c = info[i + 1];\n\t\tif (!charInRevMapDefaultTrieInfoSettings(k) || !c) continue;\n\t\tconst key = revMapDefaultTrieInfoSettings[k];\n\t\ttrieInfo[key] = c;\n\t}\n\treturn trieInfo;\n}\nfunction normalizeTrieInfo(info, defaultInfo = defaultTrieInfoSettings) {\n\treturn {\n\t\tcompoundCharacter: info?.compoundCharacter || defaultInfo.compoundCharacter,\n\t\tstripCaseAndAccentsPrefix: info?.stripCaseAndAccentsPrefix || defaultInfo.stripCaseAndAccentsPrefix,\n\t\tforbiddenWordPrefix: info?.forbiddenWordPrefix || defaultInfo.forbiddenWordPrefix,\n\t\tsuggestionPrefix: info?.suggestionPrefix || defaultInfo.suggestionPrefix\n\t};\n}\n/**\n* Extract the TrieInfo a source PartialTrieInfo\n* @param info - The source PartialTrieInfo\n* @returns a new object with only the defined TrieInfo properties.\n*/\nfunction extractTrieInfo(info) {\n\treturn partialInfoToInfo(info);\n}\nfunction cvtTrieInfoToFlags(info) {\n\tlet flags = \"\";\n\tfor (const k of keysTrieInfo) {\n\t\tconst c = info[k];\n\t\tif (!c) continue;\n\t\tassert(c.length === 1, `Expected single character for trie info ${k}, got '${c}'`);\n\t\tconst flagChar = defaultTrieInfoSettings[k];\n\t\tflags += flagChar + c;\n\t}\n\treturn flags;\n}\nfunction charInRevMapDefaultTrieInfoSettings(c) {\n\treturn c in revMapDefaultTrieInfoSettings;\n}\nfunction parseTrieCharacteristics(chars) {\n\tconst characteristics = {};\n\tfor (const c of chars) {\n\t\tif (!charInRevMapDefaultTrieCharacteristics(c)) continue;\n\t\tconst key = revMapDefaultTrieCharacteristics[c];\n\t\tcharacteristics[key] = true;\n\t}\n\treturn characteristics;\n}\nfunction mapTrieCharacteristics(characteristics, info) {\n\tlet chars = \"\";\n\tfor (const k of keysTrieCharacteristics) if (characteristics[k] === true) {\n\t\tconst c = info[mapCharacteristicToInfo[k]] || \"\";\n\t\tchars += c;\n\t}\n\treturn chars;\n}\nfunction cvtTrieCharacteristicsToFlags(characteristics) {\n\treturn mapTrieCharacteristics(characteristics, defaultTrieInfoSettings);\n}\nfunction charInRevMapDefaultTrieCharacteristics(c) {\n\treturn c in revMapDefaultTrieCharacteristics;\n}\nfunction mapTrieCharacteristicToInfoValues(char, info) {\n\treturn keysTrieCharacteristics.map((k) => [k, char[k]]).filter((kvp) => kvp[1] === true).map(([k]) => mapCharacteristicToInfo[k]).map((k) => info[k]);\n}\nvar TrieInfoBuilder = class {\n\t#givenInfo;\n\t#givenCharacteristics;\n\t#srcInfo;\n\t#knownChars;\n\t#foundChars;\n\tconstructor(info, characteristics) {\n\t\tthis.#givenInfo = info;\n\t\tthis.#srcInfo = normalizeTrieInfo(info);\n\t\tthis.#knownChars = revTrieInfo(this.#srcInfo);\n\t\tthis.#givenCharacteristics = characteristics || {};\n\t\tthis.#foundChars = new Set(mapTrieCharacteristicToInfoValues(this.#givenCharacteristics, this.#srcInfo));\n\t}\n\tsetInfo(info) {\n\t\tthis.#givenInfo = info;\n\t\tthis.#srcInfo = normalizeTrieInfo(info);\n\t\tthis.#knownChars = revTrieInfo(this.#srcInfo);\n\t\tthis.#foundChars = new Set(mapTrieCharacteristicToInfoValues(this.#givenCharacteristics, this.#srcInfo));\n\t}\n\tgetActiveInfo() {\n\t\treturn this.#srcInfo;\n\t}\n\taddWord(word) {\n\t\tif (word[0] in this.#knownChars) this.#foundChars.add(word[0]);\n\t}\n\t#getCharacteristics() {\n\t\tconst characteristics = {};\n\t\tfor (const char of this.#foundChars) {\n\t\t\tconst key = this.#knownChars[char];\n\t\t\tif (!key) continue;\n\t\t\tconst charToCharacteristic = mapInfoToCharacteristics[key];\n\t\t\tif (!charToCharacteristic) continue;\n\t\t\tcharacteristics[charToCharacteristic] = true;\n\t\t}\n\t\treturn characteristics;\n\t}\n\t#getInfo() {\n\t\tconst info = partialInfoToInfo(this.#givenInfo);\n\t\tfor (const char of this.#foundChars) {\n\t\t\tconst key = this.#knownChars[char];\n\t\t\tif (!key) continue;\n\t\t\tinfo[key] = this.#srcInfo[key];\n\t\t}\n\t\treturn info;\n\t}\n\tbuild() {\n\t\treturn {\n\t\t\tinfo: this.#getInfo(),\n\t\t\tcharacteristics: this.#getCharacteristics()\n\t\t};\n\t}\n};\nfunction partialInfoToInfo(info) {\n\tif (!info) return {};\n\treturn Object.fromEntries(keysTrieInfo.map((k) => [k, info[k]]).filter(([_k, v]) => !!v));\n}\nfunction revTrieInfo(info) {\n\tconst rev = {};\n\tfor (const k of keysTrieInfo) {\n\t\tconst v = info[k];\n\t\tif (typeof v !== \"string\") continue;\n\t\trev[v] = k;\n\t}\n\treturn rev;\n}\n//#endregion\n//#region src/lib/utils/endian.ts\nlet cachedEndianness;\nfunction endianness() {\n\tif (cachedEndianness) return cachedEndianness;\n\tconst uint32s = new Uint32Array([168496141]);\n\tcachedEndianness = new Uint8Array(uint32s.buffer)[0] === 10 ? \"BE\" : \"LE\";\n\treturn cachedEndianness;\n}\n//#endregion\n//#region src/lib/binary/binaryFormat.ts\nconst isLittleEndian = endianness() === \"LE\";\nconst BytesSize = {\n\tuint8: 1,\n\tuint16: 2,\n\tuint32: 4,\n\tuint64: 8,\n\tstring: 1\n};\n/**\n* BinaryFormatBuilder is used to define the structure and layout of binary data.\n* It provides methods to add various data types (uint8, uint16, uint32, strings, arrays)\n* and pointers to the format definition. Each element is automatically aligned and positioned\n* based on its type and size. Once all elements are added, call build() to create an\n* immutable BinaryFormat that can be used with BinaryDataBuilder and BinaryDataReader.\n*/\nvar BinaryFormatBuilder = class {\n\t#elements = [];\n\t#elementsByName = /* @__PURE__ */ new Map();\n\t#offset = 0;\n\t#textEncoder = new TextEncoder();\n\taddUint8(name, description, value) {\n\t\tconst uValue = value === void 0 || typeof value === \"number\" ? new Uint8Array([value || 0]) : new Uint8Array(value);\n\t\treturn this.addData(name, description, \"value\", uValue);\n\t}\n\taddUint16(name, description, value) {\n\t\tconst uValue = value !== void 0 ? rawNumberToUint16Array(value) : rawNumberToUint16Array(0);\n\t\treturn this.addData(name, description, \"value\", uValue);\n\t}\n\taddUint32(name, description, value) {\n\t\tconst uValue = value !== void 0 ? rawNumberToUint32Array(value) : rawNumberToUint32Array(0);\n\t\treturn this.addData(name, description, \"value\", uValue);\n\t}\n\t/**\n\t* A pointer to a uint32 array, it has two parts, the offset and the length.\n\t* @param name - name of pointer\n\t* @param description - the description of the field\n\t* @param overload - optional name of element to overload\n\t* @returns this\n\t*/\n\taddUint32ArrayPtr(name, description, overload) {\n\t\treturn this.addPointer(BytesSize.uint32, name, description, overload);\n\t}\n\t/**\n\t* A pointer to a uint16 array, it has two parts, the offset and the length.\n\t* @param name - name of pointer\n\t* @param description - the description of the field\n\t* @param overload - optional name of element to overload\n\t* @returns this\n\t*/\n\taddUint16ArrayPtr(name, description, overload) {\n\t\treturn this.addPointer(BytesSize.uint16, name, description, overload);\n\t}\n\t/**\n\t* A pointer to a uint8 array, it has two parts, the offset and the length.\n\t* @param name - name of pointer\n\t* @param description - the description of the field\n\t* @param overload - optional name of element to overload\n\t* @returns this\n\t*/\n\taddUint8ArrayPtr(name, description, overload) {\n\t\treturn this.addPointer(BytesSize.uint8, name, description, overload);\n\t}\n\t/**\n\t* A pointer to a string of UTF-8 bytes, it has two parts, the offset and the length.\n\t* @param name - name of pointer\n\t* @param description - the description of the field\n\t* @param overload - optional name of element to overload\n\t* @returns this\n\t*/\n\taddStringPtr(name, description, overload) {\n\t\treturn this.addPointer(BytesSize.string, name, description, overload);\n\t}\n\t/**\n\t* Add a pointer element.\n\t* @param byteSize - size of each element pointed to\n\t* @param name - name of the pointer\n\t* @param description - description of the pointer\n\t* @param overload - optional name of element to overload\n\t* @returns this\n\t*/\n\taddPointer(byteSize, name, description, overload) {\n\t\tconst alignment = 4;\n\t\tlet offset = byteAlign(this.#offset, alignment);\n\t\tif (overload) {\n\t\t\tconst existing = this.#elementsByName.get(overload);\n\t\t\tassert(existing, `Overload target not found: ${overload}`);\n\t\t\toffset = byteAlign(existing.offset, alignment);\n\t\t\tassert(existing.offset === offset, `Overload target offset mismatch: ${overload}`);\n\t\t}\n\t\tconst element = {\n\t\t\tname,\n\t\t\tdescription,\n\t\t\ttype: \"ptr+size\",\n\t\t\talignment,\n\t\t\toffset,\n\t\t\tsize: 8,\n\t\t\tvalue: void 0,\n\t\t\tbyteSize,\n\t\t\toverload\n\t\t};\n\t\tthis.#addElement(element);\n\t\treturn this;\n\t}\n\taddString(name, description, length) {\n\t\tconst value = typeof length === \"string\" ? this.#textEncoder.encode(length) : new Uint8Array(length);\n\t\tthis.addData(name, description, \"value\", value);\n\t\treturn this;\n\t}\n\taddUint8Array(name, description, length) {\n\t\tconst value = new Uint8Array(length);\n\t\tthis.addData(name, description, \"value\", value);\n\t\treturn this;\n\t}\n\taddData(name, description, formatType, data) {\n\t\tconst byteSize = data.byteLength / data.length;\n\t\tassert(isByteAlignment(byteSize), `Invalid byte size: ${byteSize} for field: ${name}`);\n\t\tconst alignment = byteSize;\n\t\tconst offset = byteAlign(this.#offset, byteSize);\n\t\tconst value = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n\t\tconst size = value.byteLength;\n\t\tthis.#addElement({\n\t\t\tname,\n\t\t\tdescription,\n\t\t\ttype: formatType,\n\t\t\talignment,\n\t\t\toffset,\n\t\t\tsize,\n\t\t\tvalue,\n\t\t\tbyteSize\n\t\t});\n\t\treturn this;\n\t}\n\t#addElement(element) {\n\t\tassert(!this.#elementsByName.has(element.name), `Duplicate element name: ${element.name}`);\n\t\tconst expectedOffset = byteAlign(element.offset, element.alignment);\n\t\tassert(element.offset === expectedOffset, `Element alignment mismatch for ${element.name} with alignment ${element.alignment}. Expected: ${expectedOffset}, Found: ${element.offset}`);\n\t\tthis.#elementsByName.set(element.name, element);\n\t\tthis.#elements.push(element);\n\t\tif (!element.overload) this.#offset = element.offset + element.size;\n\t}\n\tbuild() {\n\t\treturn new BinaryFormat([...this.#elements]);\n\t}\n};\n/**\n* BinaryFormat represents the structure and layout of binary data.\n* It contains a collection of format elements that describe the fields,\n* their types, offsets, sizes, and byte alignment within the binary data.\n*\n* This class is typically created using BinaryFormatBuilder and is used\n* by BinaryDataBuilder and BinaryDataReader to write and read binary data\n* according to the defined format.\n*/\nvar BinaryFormat = class {\n\telements;\n\t#fieldsByName = /* @__PURE__ */ new Map();\n\t#offset;\n\tconstructor(elements) {\n\t\tthis.elements = elements;\n\t\tthis.#fieldsByName = new Map(elements.map((el) => [el.name, el]));\n\t\tthis.#offset = Math.max(...elements.map((el) => el.offset + el.size), 0);\n\t}\n\tget size() {\n\t\treturn this.#offset;\n\t}\n\tgetField(name) {\n\t\treturn this.#fieldsByName.get(name);\n\t}\n\ttoJSON() {\n\t\treturn this.elements.map(formatElementToJSON);\n\t}\n\ttoString() {\n\t\tconst nameWidth = Math.max(4, ...this.elements.map((el) => el.name.length), 4);\n\t\tconst offsetWidth = 8;\n\t\tconst sizeWidth = 6;\n\t\tconst typeWidth = Math.max(4, ...this.elements.map((el) => el.type.length), 4);\n\t\tconst lines = [];\n\t\taddHeaderLines();\n\t\tthis.elements.forEach(addElement);\n\t\treturn lines.join(\"\\n\");\n\t\tfunction addHeaderLines() {\n\t\t\tconst line = formatLine([\n\t\t\t\t\"name\",\n\t\t\t\t\"offset\",\n\t\t\t\t\"size\",\n\t\t\t\t\"type\",\n\t\t\t\t\"mask\",\n\t\t\t\t\"description\",\n\t\t\t\t\"value\"\n\t\t\t]);\n\t\t\tlines.push(\"Binary Format:\");\n\t\t\tlines.push(line);\n\t\t\tlines.push(\"-\".repeat(line.length));\n\t\t}\n\t\tfunction addElement(e) {\n\t\t\tlines.push(formatLine([\n\t\t\t\te.name,\n\t\t\t\te.offset.toString(),\n\t\t\t\te.size.toString(),\n\t\t\t\te.type,\n\t\t\t\te.byteSize.toString(2).padStart(4, \"0\"),\n\t\t\t\te.description,\n\t\t\t\te.value ? `${e.value}` : \"\"\n\t\t\t]));\n\t\t}\n\t\tfunction formatLine([name, offset, size, type, mask, description, value]) {\n\t\t\tname = name.padEnd(nameWidth, \" \");\n\t\t\toffset = offset.padStart(offsetWidth, \" \");\n\t\t\tsize = size.padStart(sizeWidth, \" \");\n\t\t\ttype = type.padEnd(typeWidth, \" \");\n\t\t\tvalue = value ? `(${value})` : \"\";\n\t\t\treturn `${name} ${offset} ${size} ${type} ${mask} ${description} ${value}`.trim();\n\t\t}\n\t}\n};\nvar BinaryDataBuilder = class {\n\t#dataElementMap = /* @__PURE__ */ new Map();\n\t#offset = 0;\n\t#endian;\n\t#useLE;\n\t#encoder = new TextEncoder();\n\t#dataByOffset = /* @__PURE__ */ new Map();\n\tformat;\n\tconstructor(format, endian = endianness()) {\n\t\tthis.format = format;\n\t\tthis.#offset = format.size;\n\t\tthis.#endian = endian;\n\t\tthis.#useLE = endian === \"LE\";\n\t\tthis.#dataElementMap = /* @__PURE__ */ new Map();\n\t\tthis.#populateDataElementMap();\n\t}\n\t#populateDataElementMap() {\n\t\tfor (const ref of this.format.elements) {\n\t\t\tconst { name, offset, size } = ref;\n\t\t\tlet data = this.#dataByOffset.get(offset);\n\t\t\tif (!data || data.byteLength < size) {\n\t\t\t\tdata = new Uint8Array(size);\n\t\t\t\tthis.#dataByOffset.set(offset, data);\n\t\t\t}\n\t\t\tif (ref.value) data.set(ref.value);\n\t\t\tconst de = {\n\t\t\t\tname,\n\t\t\t\toffset,\n\t\t\t\tsize,\n\t\t\t\tdata,\n\t\t\t\tref\n\t\t\t};\n\t\t\tthis.#dataElementMap.set(de.name, de);\n\t\t\tthis.#offset = Math.max(this.#offset, offset + size);\n\t\t}\n\t}\n\tsetString(name, value) {\n\t\tconst element = this.getDataElement(name);\n\t\tassert(element, `Field not found: ${name}`);\n\t\tconst formatElement = element.ref;\n\t\tassert(formatElement, `Field Format not found: ${name}`);\n\t\tassert(formatElement.byteSize === BytesSize.string, `Field is not a string: ${name}`);\n\t\tassert(this.#encoder.encodeInto(value, element.data).read === value.length, `String too long for field ${name}: ${value}`);\n\t\treturn this;\n\t}\n\tsetUint32(name, value) {\n\t\tconst element = this.getDataElement(name);\n\t\tassert(element, `Field not found: ${name}`);\n\t\tconst formatElement = element.ref;\n\t\tassert(formatElement, `Field Format not found: ${name}`);\n\t\tassert(formatElement.byteSize === BytesSize.uint32, `Field is not a uint32: ${name}`);\n\t\tconst view = new DataView(element.data.buffer, element.data.byteOffset, element.data.byteLength);\n\t\tconst useLittle = this.#endian === \"LE\";\n\t\tview.setUint32(0, value, useLittle);\n\t\treturn this;\n\t}\n\tsetUint16(name, value) {\n\t\tconst element = this.getDataElement(name);\n\t\tassert(element, `Field not found: ${name}`);\n\t\tconst formatElement = element.ref;\n\t\tassert(formatElement, `Field Format not found: ${name}`);\n\t\tassert(formatElement.byteSize === BytesSize.uint16, `Field is not a uint16: ${name}`);\n\t\tconst view = new DataView(element.data.buffer, element.data.byteOffset, element.data.byteLength);\n\t\tconst useLittle = this.#endian === \"LE\";\n\t\tview.setUint16(0, value, useLittle);\n\t\treturn this;\n\t}\n\tsetUint8(name, value) {\n\t\tconst element = this.getDataElement(name);\n\t\tassert(element, `Field not found: ${name}`);\n\t\tconst formatElement = element.ref;\n\t\tassert(formatElement, `Field Format not found: ${name}`);\n\t\tassert(formatElement.byteSize === BytesSize.uint8, `Field is not a uint8: ${name}`);\n\t\telement.data[0] = value;\n\t\treturn this;\n\t}\n\t/**\n\t* Adjust the offset so it lands on the alignment boundary.\n\t* 1 = byte align\n\t* 2 = 16bit align\n\t* 4 = 32bit align\n\t* 8 = 64bit align\n\t* @param alignment - the byte alignment\n\t*/\n\talignTo(alignment) {\n\t\tconst aMask = alignment - 1;\n\t\tthis.#offset = this.#offset + aMask & ~aMask;\n\t}\n\t/**\n\t* Append a data element to the binary data.\n\t* @param data - the data to add\n\t* @returns the DataElement added\n\t*/\n\taddDataElement(data, alignment) {\n\t\tthis.alignTo(alignment);\n\t\tconst offset = this.#offset;\n\t\tconst name = `data_${offset}`;\n\t\tconst size = data.byteLength;\n\t\tconst de = {\n\t\t\tname,\n\t\t\toffset,\n\t\t\tsize,\n\t\t\tdata\n\t\t};\n\t\tthis.#dataElementMap.set(de.name, de);\n\t\tthis.#offset = offset + size;\n\t\treturn de;\n\t}\n\t/**\n\t* Append the data and set the pointer to it.\n\t* The Uint32Array  will be converted to the proper endianness if necessary.\n\t* @param name - name of the pointer field\n\t* @param data - the data to add\n\t* @param alignment - the alignment for the data, default 4\n\t* @returns this\n\t*/\n\tsetPtrUint32Array(name, data, alignment = 4) {\n\t\treturn this.#setPtrData(name, convertUint32ArrayToUint8Array(data, this.#useLE), alignment);\n\t}\n\t/**\n\t* Append the data and set the pointer to it.\n\t* The Uint16Array  will be converted to the proper endianness if necessary.\n\t* @param name - name of the pointer field\n\t* @param data - the data to add\n\t* @param alignment - the alignment for the data, default 2\n\t* @returns this\n\t*/\n\tsetPtrUint16Array(name, data, alignment = 2) {\n\t\treturn this.#setPtrData(name, convertUint16ArrayToUint8Array(data, this.#useLE), alignment);\n\t}\n\t/**\n\t* Append the data and set the pointer to it.\n\t* @param name - name of the pointer field\n\t* @param data - the data to add\n\t* @param alignment - the alignment for the data, default 1\n\t* @returns this\n\t*/\n\tsetPtrUint8Array(name, data, alignment = 1) {\n\t\treturn this.#setPtrData(name, data, alignment);\n\t}\n\t/**\n\t* Append the string and set the pointer to it. It will be encoded as UTF-8.\n\t* Note: the alignment is 1. Use alignTo() if you need a different alignment.\n\t* @param name - name of the pointer field\n\t* @param str - the data to add\n\t* @returns this\n\t*/\n\tsetPtrString(name, str) {\n\t\treturn this.#setPtrData(name, this.#encoder.encode(str), 1);\n\t}\n\t#setPtrData(name, dataView, alignment) {\n\t\tconst element = this.getDataElement(name);\n\t\tassert(element, `Field not found: ${name}`);\n\t\tconst formatElement = element.ref;\n\t\tassert(formatElement, `Field Format not found: ${name}`);\n\t\tassert(formatElement.type === \"ptr+size\", `Field is not a pointer: ${name}`);\n\t\tassert(formatElement.byteSize === alignment, `Pointer byte size mismatch: ${name}`);\n\t\tconst data = new Uint8Array(dataView.buffer, dataView.byteOffset, dataView.byteLength);\n\t\tconst de = this.addDataElement(data, alignment);\n\t\tthis.#setPtr(element, de.offset, de.size);\n\t\treturn this;\n\t}\n\t#setPtr(element, dataOffset, dataLength) {\n\t\tassert(element.data.byteLength >= 8, `Pointer data too small: ${element.name}`);\n\t\tconst view = new DataView(element.data.buffer, element.data.byteOffset, element.data.byteLength);\n\t\tview.setUint32(0, dataOffset, this.#useLE);\n\t\tview.setUint32(4, dataLength, this.#useLE);\n\t}\n\tget offset() {\n\t\treturn this.#offset;\n\t}\n\tget endian() {\n\t\treturn this.#endian;\n\t}\n\tgetDataElement(name) {\n\t\treturn this.#dataElementMap.get(name);\n\t}\n\tbuild() {\n\t\tconst buffer = new Uint8Array(this.#offset);\n\t\tfor (const element of this.#dataElementMap.values()) buffer.set(element.data, element.offset);\n\t\treturn buffer;\n\t}\n};\nfunction convertUint32ArrayEndiannessInPlace(data) {\n\tconst view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\tconst byteLength = data.length * 4;\n\tfor (let i = 0; i < byteLength; i += 4) {\n\t\tconst v = view.getUint32(i, true);\n\t\tview.setUint32(i, v, false);\n\t}\n\treturn data;\n}\nfunction convertUint16ArrayEndiannessInPlace(data) {\n\tconst view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\tconst byteLength = data.length * 2;\n\tfor (let i = 0; i < byteLength; i += 2) {\n\t\tconst v = view.getUint16(i, true);\n\t\tview.setUint16(i, v, false);\n\t}\n\treturn data;\n}\nfunction convertUint32ArrayToUint8Array(data, useLittle, isLE = isLittleEndian) {\n\tif (isLE === useLittle) return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n\tconst target = new Uint32Array(data.length);\n\ttarget.set(data);\n\tconvertUint32ArrayEndiannessInPlace(target);\n\treturn new Uint8Array(target.buffer, target.byteOffset, target.byteLength);\n}\nfunction convertUint16ArrayToUint8Array(data, useLittle, isLE = isLittleEndian) {\n\tif (isLE === useLittle) return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n\tconst target = new Uint16Array(data.length);\n\ttarget.set(data);\n\tconvertUint16ArrayEndiannessInPlace(target);\n\treturn new Uint8Array(target.buffer, target.byteOffset, target.byteLength);\n}\nfunction rawNumberToUint32Array(value) {\n\treturn new Uint32Array([value]);\n}\nfunction rawNumberToUint16Array(value) {\n\treturn new Uint16Array([value]);\n}\nvar BinaryDataReader = class {\n\tdata;\n\tformat;\n\t#decoder = new TextDecoder();\n\t#useLE;\n\t/**\n\t* Binary Data Reader\n\t* @param data - the raw binary data\n\t* @param format - the expected format\n\t* @param endian - the endian of the data (can be changed later)\n\t*/\n\tconstructor(data, format, endian = endianness()) {\n\t\tthis.data = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n\t\tthis.format = format;\n\t\tthis.#useLE = endian === \"LE\";\n\t}\n\t/**\n\t* Get a string from the data.\n\t* It will decode the string as UTF-8 from the following field types: 'string', 'ptrString', 'ptrUint8Array'.\n\t* @param name - name of the string field\n\t* @returns string value\n\t*/\n\tgetString(name) {\n\t\tconst element = this.getDataElement(name);\n\t\tconst formatElement = element.ref;\n\t\tassert(formatElement.byteSize === BytesSize.string, `Field is not a string: ${name}`);\n\t\tif (formatElement.type === \"value\") return this.#decoder.decode(element.data);\n\t\tassert(formatElement.type === \"ptr+size\", `Field is not a string: ${name}`);\n\t\tconst strData = this.#getPtrData(element);\n\t\treturn this.#decoder.decode(strData);\n\t}\n\t/**\n\t* Get a Uint32 from the data.\n\t* @param name - name of the Uint32 field\n\t* @returns number value\n\t*/\n\tgetUint32(name) {\n\t\tconst element = this.getDataElement(name);\n\t\tconst formatElement = element.ref;\n\t\tassert(formatElement.type === \"value\" && formatElement.byteSize === BytesSize.uint32, `Field is not a uint32: ${name}`);\n\t\treturn new DataView(element.data.buffer, element.data.byteOffset, element.data.byteLength).getUint32(0, this.#useLE);\n\t}\n\t/**\n\t* Get a Uint16 from the data.\n\t* @param name - name of the Uint16 field\n\t* @returns number value\n\t*/\n\tgetUint16(name) {\n\t\tconst element = this.getDataElement(name);\n\t\tconst formatElement = element.ref;\n\t\tassert(formatElement.type === \"value\" && formatElement.byteSize === BytesSize.uint16, `Field is not a uint16: ${name}`);\n\t\treturn new DataView(element.data.buffer, element.data.byteOffset, element.data.byteLength).getUint16(0, this.#useLE);\n\t}\n\t/**\n\t* Read a field as Uint16 starting at the given byte offset.\n\t* @param name - name of field\n\t* @param byteOffset - offset of in bytes from the beginning of the field\n\t* @returns the value read.\n\t*/\n\tgetAsUint16(name, byteOffset = 0) {\n\t\tconst element = this.getDataElement(name);\n\t\treturn new DataView(element.data.buffer, element.data.byteOffset, element.data.byteLength).getUint16(byteOffset, this.#useLE);\n\t}\n\t/**\n\t* Get a Uint8 from the data.\n\t* @param name - name of the Uint8 field\n\t* @returns number value\n\t*/\n\tgetUint8(name) {\n\t\tconst element = this.getDataElement(name);\n\t\tconst formatElement = element.ref;\n\t\tassert(formatElement.type === \"value\" && formatElement.byteSize === BytesSize.uint8, `Field is not a uint8: ${name}`);\n\t\treturn element.data[0];\n\t}\n\t/**\n\t* Gets Uint32Array data from a pointer field.\n\t* Note: The returned Uint32Array may be a view of the underlying data.\n\t* If the endianness does not match, a copy will be made.\n\t* @param name - name of the field\n\t* @returns Uint32Array value\n\t*/\n\tgetPtrUint32Array(name) {\n\t\tconst element = this.getDataElement(name);\n\t\tconst ref = element.ref;\n\t\tassert(ref.type === \"ptr+size\" && ref.byteSize === BytesSize.uint32, `Field is not a ptrUint32Array: ${name}`);\n\t\tconst arrData = this.#getPtrData(element);\n\t\tconst rawData32 = new Uint32Array(arrData.buffer, arrData.byteOffset, arrData.byteLength / ref.byteSize);\n\t\tif (isLittleEndian === this.#useLE) return rawData32;\n\t\treturn convertUint32ArrayEndiannessInPlace(new Uint32Array(rawData32));\n\t}\n\t/**\n\t* Gets Uint16Array data from a pointer field.\n\t* Note: The returned Uint16Array may be a view of the underlying data.\n\t* If the endianness does not match, a copy will be made.\n\t* @param name - name of the field\n\t* @returns Uint16Array value\n\t*/\n\tgetPtrUint16Array(name) {\n\t\tconst element = this.getDataElement(name);\n\t\tconst ref = element.ref;\n\t\tassert(ref.type === \"ptr+size\" && ref.byteSize === BytesSize.uint16, `Field is not a ptrUint16Array: ${name}`);\n\t\tconst arrData = this.#getPtrData(element);\n\t\tconst rawData16 = new Uint16Array(arrData.buffer, arrData.byteOffset, arrData.byteLength / ref.byteSize);\n\t\tif (isLittleEndian === this.#useLE) return rawData16;\n\t\treturn convertUint16ArrayEndiannessInPlace(new Uint16Array(rawData16));\n\t}\n\t/**\n\t* Gets Uint8Array data from a pointer field.\n\t* Note: The returned Uint8Array is a view of the underlying data.\n\t* @param name - name of the field\n\t* @returns Uint8Array value\n\t*/\n\tgetPtrUint8Array(name) {\n\t\tconst element = this.getDataElement(name);\n\t\tassert(element.ref.type === \"ptr+size\", `Field is not a ptr+size: ${name}`);\n\t\treturn this.#getPtrData(element);\n\t}\n\t/**\n\t* Gets string data from a pointer field.\n\t* @param name - name of the field\n\t* @returns string value\n\t*/\n\tgetPtrString(name) {\n\t\tconst element = this.getDataElement(name);\n\t\tassert(element.ref.type === \"ptr+size\", `Field is not a ptr+size: ${name}`);\n\t\tconst strData = this.#getPtrData(element);\n\t\treturn this.#decoder.decode(strData);\n\t}\n\t#getPtrData(element) {\n\t\tconst formatElement = element.ref;\n\t\tassert(formatElement.type === \"ptr+size\", `Field is not a ptr+size: ${element.name} (${formatElement.type})`);\n\t\tconst view = new DataView(element.data.buffer, element.data.byteOffset, element.data.byteLength);\n\t\tconst offset = view.getUint32(0, this.#useLE);\n\t\tconst length = view.getUint32(4, this.#useLE);\n\t\treturn this.data.subarray(offset, offset + length);\n\t}\n\t/**\n\t* Get the Element information by name\n\t* @param name - name of the field\n\t* @returns DataElementWithRef\n\t*/\n\tgetDataElement(name) {\n\t\tconst element = this.format.getField(name);\n\t\tassert(element, `Field not found: ${name}`);\n\t\tconst data = this.data.subarray(element.offset, element.offset + element.size);\n\t\treturn {\n\t\t\tname: element.name,\n\t\t\toffset: element.offset,\n\t\t\tsize: element.size,\n\t\t\tdata,\n\t\t\tref: element\n\t\t};\n\t}\n\tset endian(endian) {\n\t\tthis.#useLE = endian === \"LE\";\n\t}\n\tget endian() {\n\t\treturn this.#useLE ? \"LE\" : \"BE\";\n\t}\n\treverseEndian() {\n\t\tthis.#useLE = !this.#useLE;\n\t}\n\t/**\n\t* Get the raw bytes for a field.\n\t* @param name - name of the field\n\t* @returns the bytes or undefined\n\t*/\n\tgetUint8Array(name) {\n\t\tconst element = this.getDataElement(name);\n\t\tif (!element) return void 0;\n\t\treturn element.data;\n\t}\n\t/**\n\t* Get the FormatElement for a field.\n\t* @param name - name of the field\n\t* @returns the element or undefined\n\t*/\n\tgetField(name) {\n\t\treturn this.format.getField(name);\n\t}\n};\nfunction formatElementToJSON(fe) {\n\tconst { value } = fe;\n\tconst v = value ? [...value] : void 0;\n\treturn {\n\t\t...fe,\n\t\tvalue: v\n\t};\n}\nfunction byteAlign(offset, alignment) {\n\tconst aMask = alignment - 1;\n\treturn offset + aMask & ~aMask;\n}\nfunction isByteAlignment(value) {\n\treturn value === 1 || value === 2 || value === 4 || value === 8;\n}\n//#endregion\n//#region src/lib/GTrie/GTrie.ts\nvar GTrieNode = class {\n\tchildren;\n\tvalue;\n\tconstructor(value, children) {\n\t\tthis.value = value;\n\t\tthis.children = children;\n\t}\n};\n/**\n* ### Generic Tries\n*\n* This is a Trie class that can contain any data. It is used in optimizing the dictionary and storing lookup data.\n* The performance is \"good enough\" for most uses, but may need to be optimized for large data sets.\n*\n* K - Key type\n* V - Value type\n*/\nvar GTrie = class GTrie {\n\troot;\n\tconstructor() {\n\t\tthis.root = new GTrieNode();\n\t}\n\t/**\n\t*\n\t* @param keys - the path to the child node\n\t* @param value - the value to set / insert\n\t* @return the previous value if one existed\n\t*/\n\tinsert(keys, value) {\n\t\tconst node = this.insertNode(keys);\n\t\tconst prev = node.value;\n\t\tnode.value = value;\n\t\treturn prev;\n\t}\n\t/**\n\t* Insert nodes for the given keys into the trie.\n\t* Existing nodes are reused.\n\t* @param keys\n\t* @returns the final node inserted or found\n\t*/\n\tinsertNode(keys) {\n\t\tlet currentNode = this.root;\n\t\tfor (const key of keys) {\n\t\t\tlet children = currentNode.children;\n\t\t\tif (!children) {\n\t\t\t\tchildren = /* @__PURE__ */ new Map();\n\t\t\t\tcurrentNode.children = children;\n\t\t\t}\n\t\t\tlet child = children.get(key);\n\t\t\tif (!child) {\n\t\t\t\tchild = new GTrieNode();\n\t\t\t\tchildren.set(key, child);\n\t\t\t}\n\t\t\tcurrentNode = child;\n\t\t}\n\t\treturn currentNode;\n\t}\n\tfindNode(keys) {\n\t\tlet currentNode = this.root;\n\t\tfor (const key of keys) {\n\t\t\tconst children = currentNode.children;\n\t\t\tif (!children) return;\n\t\t\tconst child = children.get(key);\n\t\t\tif (!child) return;\n\t\t\tcurrentNode = child;\n\t\t}\n\t\treturn currentNode;\n\t}\n\thas(keys) {\n\t\treturn this.findNode(keys)?.value !== void 0;\n\t}\n\thasNode(keys) {\n\t\treturn this.findNode(keys) !== void 0;\n\t}\n\tget(keys) {\n\t\tconst node = this.findNode(keys);\n\t\treturn node ? node.value : void 0;\n\t}\n\tstatic fromEntries(entries) {\n\t\tconst trie = new GTrie();\n\t\tfor (const [keys, value] of entries) trie.insert(keys, value);\n\t\treturn trie;\n\t}\n};\n//#endregion\n//#region ../cspell-performance-monitor/dist/index.js\nconst symbolCSpell = Symbol.for(\"cspell\");\nconst globalThisCSpell = globalThis;\nfunction _measurePerfStart(name, enabled) {\n\tif (!enabled) return;\n\tperformance.mark(name + \"-start\");\n}\nfunction _measurePerfEnd(name, enabled) {\n\tif (!enabled) return;\n\tperformance.mark(name + \"-end\");\n\tperformance.measure(name, name + \"-start\", name + \"-end\");\n}\n/**\n* Creates performance marks and measures the time taken between them.\n* @param name - name of the performance entry\n* @returns a function to stop the timer.\n*/\nfunction measurePerf(name) {\n\tconst enabled = isEnabledPerformanceMeasurements();\n\t_measurePerfStart(name, enabled);\n\treturn makeDisposableFunction(() => {\n\t\t_measurePerfEnd(name, enabled);\n\t});\n}\nfunction makeDisposableFunction(fn) {\n\tconst disposableFn = fn;\n\tdisposableFn[Symbol.dispose] = fn;\n\tdisposableFn[Symbol.asyncDispose] = () => (fn(), Promise.resolve());\n\treturn disposableFn;\n}\nfunction isEnabledPerformanceMeasurements() {\n\treturn !!globalThisCSpell[symbolCSpell]?.enablePerformanceMeasurements;\n}\n//#endregion\n//#region src/lib/StringTable/StringTable.ts\n/**\n* This is a set of strings stored in a compact form.\n*\n* Strings are stored as UTF-8 encoded bytes in a single contiguous buffer.\n* Each string is referenced by its starting index and length within the buffer.\n*\n* This design minimizes memory overhead by avoiding individual string objects,\n* allowing efficient storage and retrieval of a large number of strings.\n*\n* Strings are retrieved based on their index.\n*\n* The internal index table contains the offset and length of each string in the buffer.\n*\n*/\nvar StringTable = class {\n\t#index;\n\t#data;\n\t#strLenBits;\n\t#strLenMask;\n\t#decoder = new TextDecoder();\n\t/**\n\t*\n\t* @param index - the lookup index format: `offset|len` where the low bits are the length\n\t* @param utf8ByteData - the UTF-8 encoded byte data for all the strings\n\t* @param strLenBits - number of bits used to store the length of the string in the index entry\n\t*/\n\tconstructor(index, utf8ByteData, strLenBits) {\n\t\tthis.#index = index;\n\t\tthis.#data = utf8ByteData;\n\t\tthis.#strLenBits = strLenBits;\n\t\tthis.#strLenMask = (1 << strLenBits) - 1;\n\t}\n\tget index() {\n\t\treturn this.#index;\n\t}\n\tget charData() {\n\t\treturn this.#data;\n\t}\n\tget strLenBits() {\n\t\treturn this.#strLenBits;\n\t}\n\tget length() {\n\t\treturn this.#index.length;\n\t}\n\tgetStringBytes(idx) {\n\t\tif (idx < 0 || idx >= this.#index.length) return void 0;\n\t\treturn this.#getBytesByIndexValue(this.#index[idx]);\n\t}\n\tgetString(idx) {\n\t\tconst bytes = this.getStringBytes(idx);\n\t\tif (!bytes) return void 0;\n\t\treturn this.#decoder.decode(bytes);\n\t}\n\t#getBytesByIndexValue(value) {\n\t\tconst offset = value >>> this.#strLenBits;\n\t\tconst length = value & this.#strLenMask;\n\t\treturn this.#data.subarray(offset, offset + length);\n\t}\n\tdataByteLength() {\n\t\treturn this.#data.byteLength;\n\t}\n\tbitInfo() {\n\t\tconst strLenBits = this.strLenBits;\n\t\tconst offsetBits = Math.ceil(Math.log2(this.charData.length + 1));\n\t\treturn {\n\t\t\tstrLenBits,\n\t\t\toffsetBits,\n\t\t\tminIndexBits: strLenBits + offsetBits\n\t\t};\n\t}\n\tvalues() {\n\t\treturn [...this.#index].map((v) => this.#getBytesByIndexValue(v));\n\t}\n\ttoString() {\n\t\treturn [...this.#index].map((_, i) => this.getString(i) || \"\").join(\", \");\n\t}\n\ttoJSON() {\n\t\treturn {\n\t\t\tindex: [...this.#index],\n\t\t\tdata: [...this.#data],\n\t\t\tstrLenBits: this.#strLenBits\n\t\t};\n\t}\n};\nvar StringTableBuilder = class StringTableBuilder {\n\t#data = [];\n\t#encoder = new TextEncoder();\n\t#lookupTrie = new GTrie();\n\t#locked = false;\n\t#maxStrLen = 0;\n\taddStringBytes(bytes) {\n\t\tassert(!this.#locked, \"StringTableBuilder is locked and cannot be modified.\");\n\t\tconst found = this.#lookupTrie.get(bytes);\n\t\tif (found !== void 0) return found;\n\t\tconst idx = this.#data.push(bytes) - 1;\n\t\tthis.#lookupTrie.insert(bytes, idx);\n\t\tthis.#maxStrLen = Math.max(this.#maxStrLen, bytes.length);\n\t\treturn idx;\n\t}\n\taddString(str) {\n\t\tconst bytes = this.#encoder.encode(str);\n\t\treturn this.addStringBytes(bytes);\n\t}\n\tgetEntry(idx) {\n\t\treturn this.#data[idx];\n\t}\n\tget length() {\n\t\treturn this.#data.length;\n\t}\n\tbuild() {\n\t\tconst endPerf = measurePerf(\"StringTableBuilder.build\");\n\t\tconst table = this.#build();\n\t\tendPerf();\n\t\treturn table;\n\t}\n\t#build() {\n\t\tthis.#locked = true;\n\t\tif (!this.#data.length) return new StringTable([], new Uint8Array(0), 8);\n\t\tconst sortedBySize = this.#data.map((b, i) => ({\n\t\t\tb,\n\t\t\ti\n\t\t})).sort((a, b) => b.b.length - a.b.length);\n\t\tconst byteValues = [];\n\t\tconst strLenBits = Math.ceil(Math.log2(this.#maxStrLen + 1));\n\t\tconst strLenMask = (1 << strLenBits) - 1;\n\t\tconst index = new Array(this.#data.length);\n\t\tfor (const { b, i } of sortedBySize) {\n\t\t\tlet offset = findValues(b);\n\t\t\tif (offset < 0) offset = appendValues(b);\n\t\t\tconst length = b.length;\n\t\t\tassert(length <= strLenMask, `String length ${length} exceeds maximum of ${strLenMask}`);\n\t\t\tindex[i] = offset << strLenBits | length;\n\t\t}\n\t\treturn new StringTable(index, new Uint8Array(byteValues), strLenBits);\n\t\tfunction findValues(buf) {\n\t\t\tconst bufLen = buf.length;\n\t\t\tconst maxOffset = byteValues.length - bufLen;\n\t\t\tfor (let i = 0; i <= maxOffset; i++) {\n\t\t\t\tlet match = true;\n\t\t\t\tfor (let j = 0; j < bufLen; j++) if (byteValues[i + j] !== buf[j]) {\n\t\t\t\t\tmatch = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (match) return i;\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\t\tfunction appendValues(buf) {\n\t\t\tconst offset = byteValues.length;\n\t\t\tbyteValues.push(...buf);\n\t\t\treturn offset;\n\t\t}\n\t}\n\tstatic fromStringTable(table) {\n\t\tconst builder = new StringTableBuilder();\n\t\tconst values = table.values();\n\t\tconst len = values.length;\n\t\tfor (let i = 0; i < len; ++i) builder.addStringBytes(values[i]);\n\t\treturn builder;\n\t}\n};\n/**\n* The endian code used to identify endianness in the binary format.\n* We use the 16-bit value 0x5453 (corresponding to the characters 'S' (0x53) and 'T' (0x54)).\n* In little-endian representation, 0x5453 is stored as bytes 0x53 0x54 ('S', 'T').\n* In big-endian representation, 0x5453 is stored as bytes 0x54 0x53 ('T', 'S').\n*\n* The value stored should match the value retrieved, otherwise the endianness is incorrect.\n*/\nconst bomCode = 21587;\nfunction getStringTableBinaryFormat() {\n\treturn new BinaryFormatBuilder().addUint8(\"indexBits\", \"The number of bits needed for each index entry\", 32).addUint8(\"strLenBits\", \"The number of bits needed to store the max length of a string in the table.\", 8).addUint16(\"bom\", \"The Byte Order Mark.\", bomCode).addString(\"reserved\", \"Reserved for future use\", 4).addUint32ArrayPtr(\"index32\", \"String index array of 32 bit entries\").addUint16ArrayPtr(\"index16\", \"String index array of 16 bit entries\", \"index32\").addUint8ArrayPtr(\"index\", \"String index array of 8 bit entries\", \"index32\").addUint8ArrayPtr(\"data\", \"String byte data\").build();\n}\n/**\n* Encodes a StringTable into binary data so that it can be stored or transmitted.\n* @param table - the string table to encode\n* @param endian - the resulting endianness of the data.\n* @returns The encoded string table binary data.\n*/\nfunction encodeStringTableToBinary(table, endian) {\n\tconst strLenBits = table.strLenBits;\n\tconst minIndexBits = strLenBits + Math.ceil(Math.log2(table.charData.length + 1));\n\tconst indexBits = minIndexBits <= 16 ? 16 : 32;\n\tassert(minIndexBits <= indexBits, `Index bits ${indexBits} is too small for required bits ${minIndexBits}`);\n\tconst builder = new BinaryDataBuilder(getStringTableBinaryFormat(), endian);\n\tbuilder.setUint8(\"indexBits\", indexBits);\n\tbuilder.setUint8(\"strLenBits\", strLenBits);\n\tbuilder.setUint16(\"bom\", bomCode);\n\tif (indexBits === 16) builder.setPtrUint16Array(\"index16\", toU16Array(table.index));\n\telse builder.setPtrUint32Array(\"index32\", toU32Array(table.index));\n\tbuilder.setPtrUint8Array(\"data\", table.charData);\n\treturn builder.build();\n}\n/**\n* Decodes binary data into a StringTable.\n* @param data - the byte data of the string table.\n* @param endian - the endianness of the encoded data.\n* @returns The decoded StringTable.\n*/\nfunction decodeStringTableFromBinary(data, endian) {\n\tif (!data?.length) return new StringTable([], new Uint8Array(0), 8);\n\tconst reader = new BinaryDataReader(data, getStringTableBinaryFormat(), endian);\n\tconst indexBits = reader.getUint8(\"indexBits\");\n\tconst strLenBits = reader.getUint8(\"strLenBits\");\n\tconst bomStored = reader.getUint16(\"bom\");\n\tassert(!bomStored || bomStored === bomCode, \"Endian mismatch\");\n\treturn new StringTable(indexBits === 16 ? reader.getPtrUint16Array(\"index16\") : reader.getPtrUint32Array(\"index32\"), reader.getPtrUint8Array(\"data\"), strLenBits);\n}\nfunction toU16Array(data) {\n\tif (data instanceof Uint16Array) return data;\n\treturn new Uint16Array(data);\n}\nfunction toU32Array(data) {\n\tif (data instanceof Uint32Array) return data;\n\treturn new Uint32Array(data);\n}\n//#endregion\n//#region src/lib/utils/text.ts\n/**\n* Expand a line into a set of characters.\n*\n* Example:\n* - `a-c` -> `<a,b,c>`\n* - `ac-` -> `<a,c,->`\n* - `-abz` -> `<-,a,b,z>`\n* - `\\u0300-\\u0308` -> `<accents>`\n*\n* @param line - set of characters\n* @param rangeChar - the character to indicate ranges, set to empty to not have ranges.\n*/\nfunction expandCharacterSet(line, rangeChar = \"-\") {\n\tconst charSet = /* @__PURE__ */ new Set();\n\tlet mode = 0;\n\tlet prev = \"\";\n\tfor (const char of line) {\n\t\tif (mode) {\n\t\t\texpandRange(prev, char).forEach((a) => charSet.add(a));\n\t\t\tmode = 0;\n\t\t}\n\t\tif (char === rangeChar && prev) {\n\t\t\tmode = 1;\n\t\t\tcontinue;\n\t\t}\n\t\tcharSet.add(char);\n\t\tprev = char;\n\t}\n\tif (mode) charSet.add(rangeChar);\n\treturn charSet;\n}\n/**\n* Expands a range between two characters.\n* - `a <= b` -- `[a, b]`\n* - `a > b` -- `[]`\n* @param a - staring character\n* @param b - ending character\n* @returns array of unicode characters.\n*/\nfunction expandRange(a, b) {\n\tconst values = [];\n\tconst end = b.codePointAt(0);\n\tconst begin = a.codePointAt(0);\n\tif (!(begin && end)) return values;\n\tfor (let i = begin; i <= end; ++i) values.push(String.fromCodePoint(i));\n\treturn values;\n}\n/**\n* Tries to find the different cases for a letter.\n* It can generate multiple forms:\n* - `\u00DF` => `['\u00DF', 'SS', 'ss']`\n* - `a` => `['a', 'A']`\n* - `A` => `['A', 'z']`\n* - `\u00C5` => `['A', 'z']`\n* @param letter - the letter to generate upper and lower cases.\n* @param locale - the locale to use for changing case.\n* @returns the set of found cases.\n*/\nfunction caseForms(letter, locale) {\n\tconst forms = new Set([letter]);\n\tfunction tryCases(s) {\n\t\tforms.add(s.toLocaleLowerCase(locale));\n\t\tforms.add(s.toLocaleUpperCase(locale));\n\t}\n\ttryCases(letter);\n\t[...forms].forEach(tryCases);\n\treturn [...forms].filter((a) => !!a);\n}\n/**\n* Generate the different normalized forms of the letters.\n* @param letter - letter to normalize.\n* @returns combined set of possible forms.\n*/\nfunction accentForms(letter) {\n\treturn new Set([\n\t\tletter,\n\t\tletter.normalize(\"NFC\"),\n\t\tletter.normalize(\"NFD\")\n\t]);\n}\n/**\n* Remove all accents.\n* @param characters - unicode characters\n* @returns characters with accents removed (if it was possible)\n*/\nfunction stripAccents(characters) {\n\treturn characters.normalize(\"NFD\").replaceAll(/\\p{M}/gu, \"\");\n}\n/**\n* Remove all non accent characters from a string.\n* @param characters - characters with accents.\n* @returns - only the accents.\n*/\nfunction stripNonAccents(characters) {\n\treturn characters.normalize(\"NFD\").replaceAll(/[^\\p{M}]/gu, \"\");\n}\nfunction isValidUtf16Character(char) {\n\tconst len = char.length;\n\tconst code = char.charCodeAt(0) & 64512;\n\treturn len === 1 && (code & 63488) !== 55296 || len === 2 && (code & 64512) === 55296 && (char.charCodeAt(1) & 64512) === 56320;\n}\nfunction assertValidUtf16Character(char) {\n\tif (!isValidUtf16Character(char)) {\n\t\tconst len = char.length;\n\t\tconst codes = toCharCodes(char.slice(0, 2)).map((c) => \"0x\" + (\"0000\" + c.toString(16)).slice(-4));\n\t\tlet message;\n\t\tif (len === 1) message = `Invalid utf16 character, lone surrogate: ${codes[0]}`;\n\t\telse if (len === 2) message = `Invalid utf16 character, not a valid surrogate pair: [${codes.join(\", \")}]`;\n\t\telse message = `Invalid utf16 character, must be a single character, found: ${len}`;\n\t\tthrow new Error(message);\n\t}\n}\nfunction toCharCodes(s) {\n\tconst values = [];\n\tfor (let i = 0; i < s.length; ++i) values.push(s.charCodeAt(i));\n\treturn values;\n}\n//#endregion\n//#region src/lib/TrieBlob/Utf8.ts\n/**\n* Encode a CodePoint into a Big Endian utf8 value, up to 4 bytes.\n* These numbers sort into the correct order for utf8.\n*\n*            hightest byte           lowest byte   Code Point Range\n* - 1 byte:  00000000 00000000 00000000 0xxxxxxx - 0x0000_0000 - 0x0000_007f\n* - 2 bytes: 00000000 00000000 110xxxxx 10xxxxxx - 0x0000_0080 - 0x0000_07ff\n* - 3 bytes: 00000000 1110xxxx 10xxxxxx 10xxxxxx - 0x0000_0800 - 0x0000_ffff\n* - 4 bytes: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - 0x0001_0000 - 0x001f_ffff\n*\n* @param code - the code point to encode\n* @returns number containing the utf8 value.\n*/\nfunction encodeToUtf8_32(code) {\n\tif (code < 128) return code;\n\tif (code < 2048) return 49280 | (code & 1984) << 2 | code & 63;\n\tif (code < 65536) return 14712960 | (code & 61440) << 4 | (code & 4032) << 2 | code & 63;\n\treturn 4034953344 + ((code & 1835008) << 6 | (code & 258048) << 4 | (code & 4032) << 2 | code & 63);\n}\n/**\n* Encode a CodePoint into a Little Endian utf8 value, up to 4 bytes.\n*\n* These numbers DO NOT sort into the correct order for utf8.\n*\n*            hightest byte           lowest byte   Code Point Range\n* - 1 byte:  00000000 00000000 00000000 0xxxxxxx - 0x0000_0000 - 0x0000_007f\n* - 2 bytes: 00000000 00000000 10xxxxxx 110xxxxx - 0x0000_0080 - 0x0000_07ff\n* - 3 bytes: 00000000 10xxxxxx 10xxxxxx 1110xxxx - 0x0000_0800 - 0x0000_ffff\n* - 4 bytes: 10xxxxxx 10xxxxxx 10xxxxxx 11110xxx - 0x0001_0000 - 0x001f_ffff\n*\n* @param code - the code point to encode\n* @returns number containing the utf8 value.\n*/\nfunction encodeToUtf8_32Rev(code) {\n\tif (code < 128) return code;\n\tif (code < 2048) return 32960 | (code & 1984) >> 6 | (code & 63) << 8;\n\tif (code < 65536) return 8421600 | (code & 61440) >>> 12 | (code & 4032) << 2 | (code & 63) << 16;\n\treturn 2155905264 + ((code & 1835008) >>> 18 | (code & 258048) >>> 4 | (code & 4032) << 10 | (code & 63) << 24);\n}\n/**\n* Incrementally decodes a stream of UTF\u20118 bytes into Unicode code points.\n*\n* This class keeps a small amount of state (`remaining` and `value`) so that callers can\n* feed it one byte at a time via {@link Utf8Accumulator.decode}, and receive a complete\n* code point whenever enough continuation bytes have been seen. If a full code point has\n* not yet been assembled, `decode` returns `undefined`. On invalid byte sequences, the\n* accumulator is reset to a known-good state.\n*\n* The design is similar in spirit to {@link TextDecoderStream} (it copes with multi-byte\n* sequences and boundaries that may fall between input chunks), but it is implemented as a\n* lightweight, allocation-free helper object that can be cheaply cloned and reset. This\n* makes it suitable for performance\u2011sensitive code and for environments where\n* `TextDecoderStream` is not available or where creating full stream instances would be\n* unnecessarily expensive.\n*/\nvar Utf8Accumulator = class Utf8Accumulator {\n\t/**\n\t* Number of remaining continuation bytes expected for the current code point being decoded.\n\t*/\n\tremaining = 0;\n\t/**\n\t* Partially decoded code point value being accumulated.\n\t*/\n\tvalue = 0;\n\t/**\n\t* Decode a single utf8 byte\n\t* @param byte\n\t* @returns a CodePoint if a full code point has been decoded, undefined if more bytes are needed, or 0xfffd on error.\n\t*/\n\tdecode(byte) {\n\t\tlet remaining = this.remaining;\n\t\tif (byte & -256) return this.reset();\n\t\tif ((byte & 128) === 0) {\n\t\t\tif (remaining) return this.reset();\n\t\t\treturn byte;\n\t\t}\n\t\tif (remaining) {\n\t\t\tif ((byte & 192) !== 128) return this.reset();\n\t\t\tlet value = this.value;\n\t\t\tvalue = value << 6 | byte & 63;\n\t\t\tthis.value = value;\n\t\t\tremaining -= 1;\n\t\t\tthis.remaining = remaining;\n\t\t\treturn remaining ? void 0 : value;\n\t\t}\n\t\tif ((byte & 224) === 192) {\n\t\t\tthis.value = byte & 31;\n\t\t\tthis.remaining = 1;\n\t\t\treturn;\n\t\t}\n\t\tif ((byte & 240) === 224) {\n\t\t\tthis.value = byte & 15;\n\t\t\tthis.remaining = 2;\n\t\t\treturn;\n\t\t}\n\t\tif ((byte & 248) === 240) {\n\t\t\tthis.value = byte & 7;\n\t\t\tthis.remaining = 3;\n\t\t\treturn;\n\t\t}\n\t\treturn this.reset();\n\t}\n\tget codePoint() {\n\t\treturn this.remaining ? void 0 : this.value;\n\t}\n\tdecodeBytesToString(bytes) {\n\t\tlet value = \"\";\n\t\tconst len = bytes.length;\n\t\tfor (let i = 0; i < len; ++i) {\n\t\t\tconst code = this.decode(bytes[i]);\n\t\t\tif (code) value += String.fromCodePoint(code);\n\t\t}\n\t\treturn value;\n\t}\n\treset() {\n\t\tthis.remaining = 0;\n\t\tthis.value = 0;\n\t\treturn 65533;\n\t}\n\tclone(into = new Utf8Accumulator()) {\n\t\tinto.remaining = this.remaining;\n\t\tinto.value = this.value;\n\t\treturn into;\n\t}\n\tstatic isMultiByte(v) {\n\t\treturn (v & 128) !== 0;\n\t}\n\tstatic isSingleByte(v) {\n\t\treturn (v & 128) === 0;\n\t}\n\tstatic create() {\n\t\treturn new this();\n\t}\n};\nfunction encodeTextToUtf8_32Rev(offset) {\n\tconst text = offset.text;\n\tlet code = text.charCodeAt(offset.i) & 65535;\n\tcode = (code & 63488) === 55296 ? text.codePointAt(offset.i++) || 0 : code;\n\toffset.i++;\n\tif (code < 128) return code;\n\tif (code < 2048) return 32960 | (code & 1984) >> 6 | (code & 63) << 8;\n\tif (code < 65536) return 8421600 | (code & 61440) >>> 12 | (code & 4032) << 2 | (code & 63) << 16;\n\treturn 2155905264 + ((code & 1835008) >>> 18 | (code & 258048) >>> 4 | (code & 4032) << 10 | (code & 63) << 24);\n}\nfunction encodeTextToUtf8Into(text, into, offset = 0) {\n\tconst t = {\n\t\ttext,\n\t\ti: 0\n\t};\n\tlet i = offset;\n\tfor (; t.i < text.length;) {\n\t\tconst code = encodeTextToUtf8_32Rev(t);\n\t\tfor (let utf8_32Rev = code; utf8_32Rev !== 0; utf8_32Rev >>>= 8) into[i++] = utf8_32Rev & 255;\n\t}\n\treturn i - offset;\n}\nfunction encodeTextToUtf8(text) {\n\tconst into = new Array(text.length);\n\tencodeTextToUtf8Into(text, into);\n\treturn into;\n}\n//#endregion\n//#region src/lib/TrieBlob/CharIndex.ts\nObject.freeze([0]);\nvar CharIndex = class CharIndex {\n\t#charToUtf8SeqMap;\n\t#lastWord = \"\";\n\t#lastWordSeq = [];\n\t#multiByteChars;\n\tcharIndex;\n\tconstructor(charIndex = /* @__PURE__ */ new Set()) {\n\t\tthis.charIndex = charIndex;\n\t\tthis.#charToUtf8SeqMap = buildCharIndexSequenceMap(charIndex);\n\t\tthis.#multiByteChars = [...this.#charToUtf8SeqMap.values()].some((c) => c.length > 1);\n\t}\n\tgetCharUtf8Seq(c) {\n\t\tconst found = this.#charToUtf8SeqMap.get(c);\n\t\tif (found) return found;\n\t\tconst s = encodeTextToUtf8(c);\n\t\tthis.#charToUtf8SeqMap.set(c, s);\n\t\treturn s;\n\t}\n\twordToUtf8Seq(word) {\n\t\tif (this.#lastWord === word) return this.#lastWordSeq;\n\t\tconst seq = encodeTextToUtf8(word);\n\t\tthis.#lastWord = word;\n\t\tthis.#lastWordSeq = seq;\n\t\treturn seq;\n\t}\n\tindexContainsMultiByteChars() {\n\t\treturn this.#multiByteChars;\n\t}\n\tget size() {\n\t\treturn this.charIndex.size;\n\t}\n\ttoJSON() {\n\t\treturn { charIndex: [...this.charIndex].join(\"\") };\n\t}\n\tstatic fromJSON(json) {\n\t\treturn new CharIndex(new Set(json.charIndex));\n\t}\n\tstatic fromIterable(charIndex) {\n\t\tconst charSet = /* @__PURE__ */ new Set();\n\t\tfor (const s of charIndex) for (const c of s) charSet.add(c);\n\t\treturn new CharIndex(charSet);\n\t}\n};\nfunction buildCharIndexSequenceMap(charIndex) {\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const key of charIndex) map.set(key, encodeTextToUtf8(key));\n\treturn map;\n}\nvar CharIndexBuilder = class {\n\tcharIndex = /* @__PURE__ */ new Set();\n\tcharIndexMap = /* @__PURE__ */ new Map();\n\tcharIndexSeqMap = /* @__PURE__ */ new Map();\n\t#mapIdxToSeq = /* @__PURE__ */ new Map();\n\tconstructor() {\n\t\tthis.getUtf8Value(\"\");\n\t}\n\tgetUtf8Value(c) {\n\t\tconst found = this.charIndexMap.get(c);\n\t\tif (found !== void 0) return found;\n\t\tconst nc = c.normalize(\"NFC\");\n\t\tthis.charIndex.add(nc);\n\t\tconst utf8 = encodeToUtf8_32(nc.codePointAt(0) || 0);\n\t\tthis.charIndexMap.set(c, utf8);\n\t\tthis.charIndexMap.set(nc, utf8);\n\t\tthis.charIndexMap.set(c.normalize(\"NFD\"), utf8);\n\t\treturn utf8;\n\t}\n\tutf8ValueToUtf8Seq(idx) {\n\t\tconst found = this.#mapIdxToSeq.get(idx);\n\t\tif (found !== void 0) return found;\n\t\tconst seq = splitUtf8(idx);\n\t\tthis.#mapIdxToSeq.set(idx, seq);\n\t\treturn seq;\n\t}\n\tcharToUtf8Seq(c) {\n\t\tconst idx = this.getUtf8Value(c);\n\t\treturn this.utf8ValueToUtf8Seq(idx);\n\t}\n\twordToUtf8Seq(word) {\n\t\tconst seq = new Array(word.length);\n\t\tlet i = 0;\n\t\tfor (const c of word) {\n\t\t\tconst idx = this.getUtf8Value(c);\n\t\t\tconst cSep = this.utf8ValueToUtf8Seq(idx);\n\t\t\tif (typeof cSep === \"number\") {\n\t\t\t\tseq[i++] = cSep;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (const cIdx of cSep) seq[i++] = cIdx;\n\t\t}\n\t\tif (seq.length !== i) seq.length = i;\n\t\treturn seq;\n\t}\n\tget size() {\n\t\treturn this.charIndex.size;\n\t}\n\tbuild() {\n\t\treturn new CharIndex(this.charIndex);\n\t}\n};\nfunction splitUtf8(utf8) {\n\tutf8 = utf8 < 0 ? 4294967296 + utf8 : utf8;\n\tif (utf8 <= 255) return [utf8];\n\tif (utf8 <= 65535) return [utf8 >> 8 & 255, utf8 & 255];\n\tif (utf8 <= 16777215) return [\n\t\tutf8 >> 16 & 255,\n\t\tutf8 >> 8 & 255,\n\t\tutf8 & 255\n\t];\n\treturn [\n\t\tutf8 >> 24 & 255,\n\t\tutf8 >> 16 & 255,\n\t\tutf8 >> 8 & 255,\n\t\tutf8 & 255\n\t].filter((v) => v);\n}\n//#endregion\n//#region src/lib/TrieBlob/TrieBlobFormat.ts\nconst NodeHeaderPrefixMask = 1073741312;\n//#endregion\n//#region src/lib/TrieBlob/optimizeNodes.ts\nconst MAX_AUTO_ADD_TO_STRING_TABLE = 4;\n/**\n* Convert from a Trie to a DAWG by merging identical nodes.\n* @param nodes - the nodes to optimize. This array and the contents WILL BE CHANGED and used as a scratch space.\n* @returns the optimized nodes.\n*/\nfunction optimizeNodes(nodes) {\n\tconst endPerf = measurePerf(\"TrieBlob.optimizeNodes\");\n\t/** the has map to look up locked nodes. */\n\tconst nodeHashMap = /* @__PURE__ */ new Map();\n\tconst lockedNodes = /* @__PURE__ */ new WeakMap();\n\tconst eowNode = nodes[1];\n\tgetHashList(eowNode).push(eowNode);\n\tlockNode(eowNode, 1);\n\twalk(0);\n\tconst n = compactNodes(nodes);\n\tendPerf();\n\treturn n;\n\tfunction getHashList(node) {\n\t\tconst hash = xorNode(node);\n\t\tlet list = nodeHashMap.get(hash);\n\t\tif (list) return list;\n\t\tlist = [];\n\t\tnodeHashMap.set(hash, list);\n\t\treturn list;\n\t}\n\tfunction lockNode(node, index) {\n\t\tlockedNodes.set(node, index);\n\t\treturn index;\n\t}\n\tfunction findMatchingLockedNode(hash, node) {\n\t\tconst candidates = nodeHashMap.get(hash);\n\t\tif (!candidates) return void 0;\n\t\treturn findMatchingNode(node, candidates);\n\t}\n\tfunction registerNode(nodeIdx, node) {\n\t\tif (!nodeIdx) return nodeIdx;\n\t\tconst match = findMatchingLockedNode(xorNode(node), node);\n\t\tif (!match) {\n\t\t\tgetHashList(node).push(node);\n\t\t\treturn lockNode(node, nodeIdx);\n\t\t}\n\t\treturn lockNode(node, lockedNodes.get(match) || 0);\n\t}\n\tfunction walk(nodeIdx) {\n\t\tconst node = nodes[nodeIdx];\n\t\tif (lockedNodes.has(node)) return nodeIdx;\n\t\tconst count = node.length - 1;\n\t\tfor (let i = 1; i <= count; ++i) {\n\t\t\tconst entry = node[i];\n\t\t\tconst childIdx = entry >> 8;\n\t\t\tconst newChildIdx = walk(childIdx);\n\t\t\tif (newChildIdx !== childIdx) node[i] = entry & 255 | newChildIdx << 8;\n\t\t}\n\t\treturn registerNode(nodeIdx, node);\n\t}\n}\nfunction xorNode(a) {\n\tlet xor = 0;\n\tfor (let i = 0; i < a.length; ++i) xor ^= a[i];\n\treturn xor;\n}\nfunction findMatchingNode(node, candidates) {\n\tfor (let i = candidates.length - 1; i >= 0; --i) {\n\t\tconst candidate = candidates[i];\n\t\tif (compareNodes(node, candidate)) return candidate;\n\t}\n}\nfunction compareNodes(a, b) {\n\tif (a.length !== b.length) return false;\n\tlet diff = 0;\n\tfor (let i = 0; i < a.length && diff === 0; ++i) diff = a[i] - b[i];\n\treturn !diff;\n}\n/**\n* Walk the trie and remove any nodes that are not reachable.\n* @param nodes - the nodes to compact they will get modified.\n* @returns the compacted nodes.\n*/\nfunction compactNodes(nodes) {\n\tconst nodeMap = /* @__PURE__ */ new Map();\n\tconst compacted = [];\n\tnodeMap.set(0, 0);\n\tnodeMap.set(1, 1);\n\tcompacted.push(nodes[0], nodes[1]);\n\twalk(0);\n\treturn compacted;\n\tfunction walk(nodeIdx) {\n\t\tconst found = nodeMap.get(nodeIdx);\n\t\tif (found) return found;\n\t\tconst node = nodes[nodeIdx];\n\t\tconst count = node.length - 1;\n\t\tfor (let i = 1; i <= count; ++i) {\n\t\t\tconst entry = node[i];\n\t\t\tconst newChildIdx = walk(entry >> 8);\n\t\t\tnode[i] = entry & 255 | newChildIdx << 8;\n\t\t}\n\t\tif (!nodeIdx) return nodeIdx;\n\t\tconst newIndex = compacted.push(node) - 1;\n\t\tnodeMap.set(nodeIdx, newIndex);\n\t\treturn newIndex;\n\t}\n}\nfunction calculateByteSize(nodes) {\n\tlet count = 0;\n\tfor (let i = nodes.length - 1; i >= 0; --i) count += nodes[i].length;\n\treturn count * 4;\n}\nfunction copyNodes(nodes) {\n\tconst size = calculateByteSize(nodes);\n\tconst dst = Array(nodes.length);\n\tconst buffer = new ArrayBuffer(size);\n\tfor (let i = 0, offset = 0; i < nodes.length; ++i) {\n\t\tconst node = nodes[i];\n\t\tconst nodeCopy = new Uint32Array(buffer, offset, node.length);\n\t\tnodeCopy.set(node);\n\t\tdst[i] = nodeCopy;\n\t\toffset += nodeCopy.byteLength;\n\t}\n\treturn dst;\n}\nfunction copyNodesAndStringTable(src) {\n\treturn {\n\t\tnodes: copyNodes(src.nodes),\n\t\tstringTableBuilder: StringTableBuilder.fromStringTable(src.stringTable)\n\t};\n}\nfunction optimizeNodesWithStringTable(src) {\n\tconst endPerf = measurePerf(\"TrieBlob.optimizeNodesWithStringTable\");\n\tconst { nodes, stringTableBuilder: builder } = copyNodesAndStringTable(src);\n\tconst multipleNodeRefs = calcHasMultipleReferences(nodes);\n\tconst multiStringRefs = new Set([0]);\n\tif (!builder.length) builder.addString(\"\");\n\twalkNodes(nodes, 0, { after: processNode });\n\tconst r = {\n\t\tnodes: optimizeNodes(nodes),\n\t\tstringTable: builder.build()\n\t};\n\tendPerf();\n\treturn r;\n\t/**\n\t* If possible, replace the current node with a prefix node.\n\t* @param nodeIdx - node to process\n\t*/\n\tfunction processNode(nodeIdx) {\n\t\tconst node = nodes[nodeIdx];\n\t\tif (node.length !== 2) return;\n\t\tconst header = node[0];\n\t\tif ((header & 256) !== 0) return;\n\t\tif (header & 1073741312) return;\n\t\tconst childEntry = node[1];\n\t\tconst charByte = childEntry & 255;\n\t\tconst childIdx = childEntry >>> 8;\n\t\tif (multipleNodeRefs.has(childIdx)) return;\n\t\tconst childNode = nodes[childIdx];\n\t\tconst childHeader = childNode[0];\n\t\tconst childPrefixIdx = (childHeader & NodeHeaderPrefixMask) >>> 9;\n\t\tconst childBytes = builder.getEntry(childPrefixIdx) || [];\n\t\tif (!multiStringRefs.has(childPrefixIdx)) {\n\t\t\tmultiStringRefs.add(childPrefixIdx);\n\t\t\tif (childBytes.length >= MAX_AUTO_ADD_TO_STRING_TABLE) return;\n\t\t}\n\t\tconst prefixBytes = [charByte, ...childBytes];\n\t\tconst prefixIdx = builder.addStringBytes(prefixBytes);\n\t\tconst newNode = Uint32Array.from(childNode);\n\t\tnewNode[0] = prefixIdx << 9 | childHeader & -1073741313;\n\t\tnodes[nodeIdx] = newNode;\n\t}\n}\nfunction calcHasMultipleReferences(nodes) {\n\tconst seen = /* @__PURE__ */ new Set();\n\tconst multiple = /* @__PURE__ */ new Set();\n\twalkNodes(nodes, 0, { before: (nodeIdx) => {\n\t\tif (seen.has(nodeIdx)) {\n\t\t\tmultiple.add(nodeIdx);\n\t\t\treturn true;\n\t\t}\n\t\tseen.add(nodeIdx);\n\t\treturn false;\n\t} });\n\treturn multiple;\n}\nfunction walkNodes(nodes, nodeIdx, options) {\n\tconst after = options.after || (() => void 0);\n\tconst before = options.before || (() => void 0);\n\tfunction walk(nodeIdx) {\n\t\tif (before(nodeIdx)) return;\n\t\tconst node = nodes[nodeIdx];\n\t\tconst count = node.length - 1;\n\t\tfor (let i = 1; i <= count; ++i) walk(node[i] >> 8);\n\t\tafter(nodeIdx);\n\t}\n\twalk(nodeIdx);\n}\n//#endregion\n//#region src/lib/TrieBlob/resolveMap.ts\nfunction resolveMap(map, key, resolve) {\n\tconst r = map.get(key);\n\tif (r !== void 0) return r;\n\tconst v = resolve(key);\n\tmap.set(key, v);\n\treturn v;\n}\n//#endregion\n//#region src/lib/constants.ts\nconst COMPOUND_FIX = \"+\";\nconst OPTIONAL_COMPOUND_FIX = \"*\";\nconst CASE_INSENSITIVE_PREFIX = \"~\";\nconst FORBID_PREFIX = \"!\";\nconst defaultTrieInfo = Object.freeze({\n\tcompoundCharacter: \"+\",\n\tforbiddenWordPrefix: \"!\",\n\tstripCaseAndAccentsPrefix: \"~\",\n\tsuggestionPrefix: \":\"\n});\n//#endregion\n//#region src/lib/utils/mergeDefaults.ts\n/**\n* Creates a new object of type T based upon the field values from `value`.\n* n[k] = value[k] ?? default[k] where k must be a field in default.\n* Note: it will remove fields not in defaultValue!\n* @param value\n* @param defaultValue\n*/\nfunction mergeDefaults(value, defaultValue) {\n\tconst result = { ...defaultValue };\n\tif (value) {\n\t\tfor (const [k, v] of Object.entries(value)) if (k in result) result[k] = v ?? result[k];\n\t}\n\treturn result;\n}\n//#endregion\n//#region src/lib/utils/mergeOptionalWithDefaults.ts\nfunction mergeOptionalWithDefaults(...options) {\n\treturn options.reduce((acc, opt) => mergeDefaults(opt, acc), defaultTrieInfo);\n}\n//#endregion\n//#region src/lib/TrieBlob/prefix.ts\nfunction matchEntirePrefix(text, prefix) {\n\twhile (!prefix.done) {\n\t\tconst byte = prefix.cur();\n\t\tconst charVal = text.cur();\n\t\tif (text.done || byte !== charVal) return false;\n\t\tprefix.next();\n\t\ttext.next();\n\t}\n\treturn true;\n}\n//#endregion\n//#region src/lib/utils/rawData.ts\nfunction toUint8Array(data) {\n\treturn data instanceof Uint8Array ? data : new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n}\n//#endregion\n//#region src/lib/TrieBlob/TrieBlobEncoder.ts\nconst headerSig = \"TrieBlob\";\nconst version = \"00.01.00\";\nconst endianSig = 67305985;\nfunction getBinaryFormat() {\n\treturn new BinaryFormatBuilder().addString(\"sig\", \"Signature \\\"TrieBlob\\\"\", headerSig).addUint32(\"endian\", \"Endianness signature\", endianSig).addString(\"version\", \"Version string\", version).addUint32ArrayPtr(\"nodes\", \"Pointer to nodes array\").addString(\"reserved0\", \"Old Pointer to TrieInfo JSON string\", 8).addString(\"trieInfo\", \"Pointer to TrieInfo JSON string\", 16).addString(\"characteristics\", \"Available characteristic values\", 8).addUint8ArrayPtr(\"stringTable\", \"Pointer to String Table data\").addString(\"reserved\", \"Reserved space\", 64).build();\n}\nfunction encodeTrieBlobToBTrie(blob) {\n\tconst builder = new BinaryDataBuilder(getBinaryFormat());\n\tbuilder.setPtrUint32Array(\"nodes\", blob.nodes);\n\tbuilder.setString(\"trieInfo\", cvtTrieInfoToFlags(blob.info));\n\tbuilder.setString(\"characteristics\", cvtTrieCharacteristicsToFlags(blob.characteristics));\n\tif (blob.stringTable.length) {\n\t\tconst stringTableData = encodeStringTableToBinary(blob.stringTable, builder.endian);\n\t\tbuilder.setPtrUint8Array(\"stringTable\", stringTableData);\n\t}\n\treturn builder.build();\n}\nfunction decodeTrieBlobToBTrie(blob) {\n\tconst reader = new BinaryDataReader(blob, getBinaryFormat());\n\tif (reader.getString(\"sig\") !== headerSig) throw new ErrorDecodeTrieBlob(\"Invalid TrieBlob Header\");\n\tif (reader.getUint32(\"endian\") !== endianSig) {\n\t\treader.reverseEndian();\n\t\tassert(reader.getUint32(\"endian\") === endianSig, \"Invalid TrieBlob Header after endian conversion\");\n\t}\n\tconst fileVersion = reader.getString(\"version\");\n\tif (fileVersion !== version) {\n\t\tconsole.warn(`Warning: TrieBlob version mismatch. Expected: ${version}, Found: ${fileVersion}`);\n\t\tassert(fileVersion.startsWith(version.slice(0, 6)), \"Unsupported TrieBlob version\");\n\t}\n\tconst nodes = reader.getPtrUint32Array(\"nodes\");\n\tconst info = parseTrieInfoFlags(reader.getString(\"trieInfo\"));\n\tconst characteristics = parseTrieCharacteristics(reader.getString(\"characteristics\"));\n\treturn {\n\t\tnodes,\n\t\tstringTable: decodeStringTableFromBinary(reader.getPtrUint8Array(\"stringTable\"), reader.endian),\n\t\tinfo,\n\t\tcharacteristics\n\t};\n}\nvar ErrorDecodeTrieBlob = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t}\n};\nfunction isBTrieData(data) {\n\tconst buf = toUint8Array(data);\n\tif (buf.length < 8) return false;\n\tfor (let i = 0; i < 8; i++) if (buf[i] !== headerSig.codePointAt(i)) return false;\n\treturn true;\n}\n//#endregion\n//#region src/lib/TrieBlob/TrieBlobNodeRef.ts\nfunction trieBlobNodeRefToITrieNodeId(ref) {\n\treturn (BigInt(ref.nodeIdx) << 32n) + BigInt(ref.pfx);\n}\nfunction iTrieNodeIdToTrieBlobNodeRefParts(id) {\n\tassert(typeof id === \"bigint\", \"iTrieNodeIdToTrieBlobNodeRefParts: id must be a bigint\");\n\treturn {\n\t\tnodeIdx: Number(id >> 32n) & 2147483647,\n\t\tpfx: Number(id & 4294967295n)\n\t};\n}\n//#endregion\n//#region src/lib/TrieBlob/TrieBlobIRoot.ts\nconst EMPTY_KEYS = Object.freeze([]);\nconst EMPTY_NODES = Object.freeze([]);\nconst EMPTY_ENTRIES = Object.freeze([]);\nvar TrieBlobINode = class TrieBlobINode {\n\tid;\n\tnode;\n\teow;\n\t_keys;\n\t_hasChildren;\n\t_size;\n\t_nodesEntries;\n\t_entries;\n\t_values;\n\tcharToIdx;\n\ttrie;\n\tconstructor(trie, node) {\n\t\tthis.trie = trie;\n\t\tthis.node = node;\n\t\tthis.eow = trie.isEow(node);\n\t\tthis.id = trieBlobNodeRefToITrieNodeId(node);\n\t}\n\t/** get keys to children */\n\tkeys() {\n\t\tif (this._keys) return this._keys;\n\t\tif (!this.hasChildren) return EMPTY_KEYS;\n\t\tthis._keys = this.getNodesEntries().map(([key]) => key);\n\t\treturn this._keys;\n\t}\n\tvalues() {\n\t\tif (!this.hasChildren) return EMPTY_NODES;\n\t\tif (this._values) return this._values;\n\t\tthis._values = this.entries().map(([, value]) => value);\n\t\treturn this._values;\n\t}\n\tvalueAt(keyIdx) {\n\t\tif (this._values) return this._values[keyIdx];\n\t\treturn this.entryAt(keyIdx)[1];\n\t}\n\tentries() {\n\t\tif (this._entries) return this._entries;\n\t\tif (!this.hasChildren) return EMPTY_ENTRIES;\n\t\tconst entries = this.getNodesEntries();\n\t\tthis._entries = entries.map(([key, value]) => [key, new TrieBlobINode(this.trie, value)]);\n\t\treturn this._entries;\n\t}\n\tentryAt(keyIdx) {\n\t\tif (this._entries) return this._entries[keyIdx];\n\t\treturn this.entries()[keyIdx];\n\t}\n\t/** get child ITrieNode */\n\tget(char) {\n\t\treturn this.#getChildNode(char);\n\t}\n\thas(char) {\n\t\treturn this.trie.nodeGetChild(this.node, char) !== void 0;\n\t}\n\thasChildren() {\n\t\treturn this._hasChildren ??= this.trie.hasChildren(this.node);\n\t}\n\tchild(keyIdx) {\n\t\treturn this.valueAt(keyIdx);\n\t}\n\t#getChildNodeRef(char) {\n\t\treturn this.trie.nodeGetChild(this.node, char);\n\t}\n\t#getChildNode(char) {\n\t\tif (this.charToIdx) {\n\t\t\tconst keyIdx = this.charToIdx[char];\n\t\t\tif (keyIdx === void 0) return void 0;\n\t\t\treturn this.child(keyIdx);\n\t\t}\n\t\tconst idx = this.#getChildNodeRef(char);\n\t\tif (idx === void 0) return void 0;\n\t\treturn new TrieBlobINode(this.trie, idx);\n\t}\n\tgetNode(word) {\n\t\tconst n = this.trie.nodeFindNode(this.node, word);\n\t\treturn n === void 0 ? void 0 : new TrieBlobINode(this.trie, n);\n\t}\n\tfindExact(word) {\n\t\treturn this.trie.nodeFindExact(this.node, word);\n\t}\n\tgetNodesEntries() {\n\t\treturn this._nodesEntries ??= this.trie.getChildEntries(this.node);\n\t}\n\tget size() {\n\t\treturn this._size ??= this.getNodesEntries().length;\n\t}\n};\nvar TrieBlobIRoot = class extends TrieBlobINode {\n\tfind;\n\tisForbidden;\n\thasForbiddenWords;\n\thasCompoundWords;\n\thasNonStrictWords;\n\tinfo;\n\tconstructor(trie, nodeIdx) {\n\t\tsuper(trie, nodeIdx);\n\t\tthis.info = trie.info;\n\t\tthis.find = trie.find;\n\t\tthis.isForbidden = trie.isForbidden;\n\t\tthis.hasForbiddenWords = trie.hasForbiddenWords;\n\t\tthis.hasCompoundWords = trie.hasCompoundWords;\n\t\tthis.hasNonStrictWords = trie.hasNonStrictWords;\n\t}\n\tresolveId(id) {\n\t\treturn new TrieBlobINode(this.trie, this.trie.fromITrieNodeId(id));\n\t}\n\tget forbidPrefix() {\n\t\treturn this.info.forbiddenWordPrefix;\n\t}\n\tget compoundFix() {\n\t\treturn this.info.compoundCharacter;\n\t}\n\tget caseInsensitivePrefix() {\n\t\treturn this.info.stripCaseAndAccentsPrefix;\n\t}\n\tget suggestionPrefix() {\n\t\treturn this.info.suggestionPrefix;\n\t}\n};\n//#endregion\n//#region src/lib/TrieBlob/TypedArrayCursor.ts\nvar TypedArrayCursor = class {\n\tarray;\n\ti;\n\tdone;\n\tlength;\n\tconstructor(array, i = 0, done) {\n\t\tthis.array = array;\n\t\tthis.i = i;\n\t\tthis.length = array.length;\n\t\tthis.done = (done ?? (i >= this.length ? true : void 0)) || void 0;\n\t}\n\tcur() {\n\t\treturn this.done ? void 0 : this.array[this.i];\n\t}\n\tnext() {\n\t\tif (this.done) return void 0;\n\t\tconst i = ++this.i;\n\t\tif (i >= this.array.length) {\n\t\t\tthis.done = true;\n\t\t\treturn;\n\t\t}\n\t\treturn this.array[i];\n\t}\n};\nfunction createUint8ArrayCursor(array, i = 0) {\n\treturn new TypedArrayCursor(array, i);\n}\n//#endregion\n//#region src/lib/TrieBlob/Utf8Cursor.ts\nvar Utf8CursorImpl = class {\n\ttext;\n\ti;\n\tcode;\n\tdone;\n\tconstructor(text, i = 0) {\n\t\tthis.text = text;\n\t\tthis.i = i < 0 ? i = text.length : i;\n\t\tthis.code = 0;\n\t\tthis.done = i < 0 || i >= text.length ? true : void 0;\n\t\tthis.cur();\n\t}\n\tcur() {\n\t\tif (this.done) return 0;\n\t\tthis.code ||= encodeTextToUtf8_32Rev(this);\n\t\treturn this.code & 255;\n\t}\n\tnext() {\n\t\tif (this.done) return 0;\n\t\tthis.code >>>= 8;\n\t\tthis.code ||= encodeTextToUtf8_32Rev(this);\n\t\tthis.done = !this.code && this.i >= this.text.length;\n\t\treturn this.code & 255;\n\t}\n};\nfunction createTextToUtf8Cursor(text, offset = 0) {\n\treturn new Utf8CursorImpl(text, offset);\n}\n//#endregion\n//#region src/lib/TrieBlob/TrieBlob.ts\nvar TrieBlob = class TrieBlob {\n\tinfo;\n\t#forbidIdx;\n\t#compoundIdx;\n\t#nonStrictIdx;\n\t#suggestIdx;\n\t#size;\n\t#iTrieRoot;\n\t/** the nodes data in 8 bits */\n\t#nodes8;\n\t#stringTable;\n\t#beAdj = endianness() === \"BE\" ? 3 : 0;\n\t#rootRef;\n\twordToCharacters = (word) => [...word];\n\thasForbiddenWords;\n\thasCompoundWords;\n\thasNonStrictWords;\n\tnodes;\n\tNodeMaskNumChildren;\n\tNodeChildRefShift;\n\thasPreferredSuggestions;\n\tconstructor(nodes, stringTable, info) {\n\t\tthis.nodes = nodes;\n\t\tthis.#stringTable = stringTable;\n\t\ttrieBlobSort(nodes);\n\t\tthis.info = mergeOptionalWithDefaults(info);\n\t\tthis.#rootRef = this.toRef(0);\n\t\tthis.#nodes8 = new Uint8Array(nodes.buffer, nodes.byteOffset + this.#beAdj);\n\t\tthis.#forbidIdx = this.#findNode(this.#rootRef, this.info.forbiddenWordPrefix);\n\t\tthis.#compoundIdx = this.#findNode(this.#rootRef, this.info.compoundCharacter);\n\t\tthis.#nonStrictIdx = this.#findNode(this.#rootRef, this.info.stripCaseAndAccentsPrefix);\n\t\tthis.#suggestIdx = this.#findNode(this.#rootRef, this.info.suggestionPrefix);\n\t\tthis.hasForbiddenWords = !!this.#forbidIdx;\n\t\tthis.hasCompoundWords = !!this.#compoundIdx;\n\t\tthis.hasNonStrictWords = !!this.#nonStrictIdx;\n\t\tthis.NodeMaskNumChildren = 255;\n\t\tthis.NodeChildRefShift = 8;\n\t\tthis.hasPreferredSuggestions = !!this.#suggestIdx;\n\t}\n\thas(word) {\n\t\treturn this.#hasWord(this.rootRef, word);\n\t}\n\tisForbiddenWord(word) {\n\t\treturn !!this.#forbidIdx && this.#hasWord(this.#forbidIdx, word);\n\t}\n\t/**\n\t* Try to find the word in the trie. The word must be normalized.\n\t* If `strict` is `true` the case and accents must match.\n\t* Compound words are supported assuming that the compound character is in the trie.\n\t*\n\t* @param word - the word to find (normalized)\n\t* @param strict - if `true` the case and accents must match.\n\t*/\n\tfind(word, strict) {\n\t\tconst found = this.#hasWord(this.rootRef, word);\n\t\tif (found || !this.hasCompoundWords) {\n\t\t\tif (found) return {\n\t\t\t\tfound: word,\n\t\t\t\tcompoundUsed: false,\n\t\t\t\tcaseMatched: true,\n\t\t\t\tforbidden: void 0\n\t\t\t};\n\t\t\tif (strict || !this.#nonStrictIdx) return {\n\t\t\t\tfound: false,\n\t\t\t\tcompoundUsed: false,\n\t\t\t\tcaseMatched: false,\n\t\t\t\tforbidden: void 0\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tfound: this.#hasWord(this.#nonStrictIdx, word) && word,\n\t\t\t\tcompoundUsed: false,\n\t\t\t\tcaseMatched: false,\n\t\t\t\tforbidden: void 0\n\t\t\t};\n\t\t}\n\t}\n\tgetRoot() {\n\t\treturn this.#iTrieRoot ??= this._getRoot();\n\t}\n\t_getRoot() {\n\t\treturn new TrieBlobIRoot({\n\t\t\tinfo: this.info,\n\t\t\tnodes: this.nodes,\n\t\t\tnodeFindExact: this.#hasWord.bind(this),\n\t\t\tnodeGetChild: this.#findNode.bind(this),\n\t\t\tnodeFindNode: this.#findNode.bind(this),\n\t\t\tisEow: this.isRefEOW.bind(this),\n\t\t\tgetChildEntries: this.#getChildrenFromRef.bind(this),\n\t\t\thasChildren: this.hasChildren.bind(this),\n\t\t\tisForbidden: this.isForbiddenWord.bind(this),\n\t\t\tfindExact: this.has.bind(this),\n\t\t\tfind: this.find.bind(this),\n\t\t\tnodeToITrieNodeId: trieBlobNodeRefToITrieNodeId,\n\t\t\tfromITrieNodeId: iTrieNodeIdToTrieBlobNodeRefParts,\n\t\t\thasCompoundWords: this.hasCompoundWords,\n\t\t\thasForbiddenWords: this.hasForbiddenWords,\n\t\t\thasNonStrictWords: this.hasNonStrictWords,\n\t\t\thasPreferredSuggestions: this.hasPreferredSuggestions\n\t\t}, this.rootRef);\n\t}\n\tgetNode(prefix) {\n\t\treturn findNode$1(this.getRoot(), prefix);\n\t}\n\tget stringTable() {\n\t\treturn this.#stringTable;\n\t}\n\t/**\n\t* Check if the word is in the trie starting at the given node index.\n\t*/\n\t#hasWord(nodeRef, word) {\n\t\tconst nodeIdxFound = this.#findNode(nodeRef, word);\n\t\tif (!nodeIdxFound) return false;\n\t\treturn this.isRefEOW(nodeIdxFound);\n\t}\n\t/**\n\t* Find the node index for the given Utf8 character sequence.\n\t* @param nodeIdx - node index to start the search\n\t* @param seq - the byte sequence of the character to look for\n\t* @returns\n\t*/\n\t#findNode(nodeRef, text) {\n\t\tif (!nodeRef) return void 0;\n\t\tconst _nodes = this.nodes;\n\t\tconst _nodes8 = this.#nodes8;\n\t\tconst pfxShift = 9;\n\t\tlet { nodeIdx, pfx, prefix } = nodeRef;\n\t\tconst t = createTextToUtf8Cursor(text);\n\t\tfor (; !t.done; t.next()) {\n\t\t\tconst nodes = _nodes;\n\t\t\tconst nodes8 = _nodes8;\n\t\t\tconst node = nodes[nodeIdx];\n\t\t\tconst prefixIdx = node >>> pfxShift;\n\t\t\tprefix ||= prefixIdx ? this.#stringTable.getStringBytes(prefixIdx) : void 0;\n\t\t\tconst pfxCursor = prefix && createUint8ArrayCursor(prefix, pfx);\n\t\t\tif (pfxCursor && !matchEntirePrefix(t, pfxCursor)) return t.done ? {\n\t\t\t\tnodeIdx,\n\t\t\t\tpfx: pfxCursor.i,\n\t\t\t\tprefix\n\t\t\t} : void 0;\n\t\t\tprefix = void 0;\n\t\t\tpfx = 0;\n\t\t\tconst charVal = t.cur() & 255;\n\t\t\tconst count = node & 255;\n\t\t\tconst idx4 = nodeIdx << 2;\n\t\t\tif (count > 15) {\n\t\t\t\tconst pEnd = idx4 + (count << 2);\n\t\t\t\tlet i = idx4 + 4;\n\t\t\t\tlet j = pEnd;\n\t\t\t\twhile (j - i >= 4) {\n\t\t\t\t\tconst m = i + j >> 1 & -4;\n\t\t\t\t\tif (nodes8[m] < charVal) i = m + 4;\n\t\t\t\t\telse j = m;\n\t\t\t\t}\n\t\t\t\tif (i > pEnd || nodes8[i] !== charVal) return void 0;\n\t\t\t\tnodeIdx = nodes[i >> 2] >>> 8;\n\t\t\t} else {\n\t\t\t\tlet i = idx4 + count * 4;\n\t\t\t\tfor (; i > idx4; i -= 4) if (nodes8[i] === charVal) break;\n\t\t\t\tif (i <= idx4) return void 0;\n\t\t\t\tnodeIdx = nodes[i >> 2] >>> 8;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tnodeIdx,\n\t\t\tpfx,\n\t\t\tprefix\n\t\t};\n\t}\n\t/**\n\t* get an iterable for all the words in the dictionary.\n\t* @param prefix - optional prefix to filter the words returned. The words will be prefixed with this value.\n\t*/\n\t*words(prefix) {\n\t\tif (!prefix) {\n\t\t\tyield* this.#walkWords(this.rootRef);\n\t\t\treturn;\n\t\t}\n\t\tconst nodeIdx = this.#findNode(this.rootRef, prefix);\n\t\tif (!nodeIdx) return;\n\t\tfor (const suffix of this.#walkWords(nodeIdx)) yield prefix + suffix;\n\t}\n\t*#walkWords(rootRef) {\n\t\tconst NodeMaskNumChildren = 255;\n\t\tconst NodeMaskEOW = 256;\n\t\tconst NodeMaskChildCharIndex = 255;\n\t\tconst NodeChildRefShift = 8;\n\t\tconst nodeHeaderPrefixShift = 9;\n\t\tconst nodes = this.nodes;\n\t\tconst st = this.#stringTable;\n\t\tconst stack = [{\n\t\t\tnodeIdx: rootRef.nodeIdx,\n\t\t\tpfx: rootRef.pfx,\n\t\t\tpos: 0,\n\t\t\tword: \"\",\n\t\t\tacc: Utf8Accumulator.create()\n\t\t}];\n\t\tlet depth = 0;\n\t\twhile (depth >= 0) {\n\t\t\tconst s = stack[depth];\n\t\t\tif (!s.pos) applyPrefixString(s);\n\t\t\tconst { nodeIdx, pos, word, acc } = s;\n\t\t\tconst node = nodes[nodeIdx];\n\t\t\tif (!pos && node & NodeMaskEOW) yield word;\n\t\t\tif (pos >= (node & NodeMaskNumChildren)) {\n\t\t\t\t--depth;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst entry = nodes[nodeIdx + ++stack[depth].pos];\n\t\t\tconst nAcc = acc.clone();\n\t\t\tconst codePoint = nAcc.decode(entry & NodeMaskChildCharIndex);\n\t\t\tconst letter = codePoint && String.fromCodePoint(codePoint) || \"\";\n\t\t\t++depth;\n\t\t\tstack[depth] = {\n\t\t\t\tnodeIdx: entry >>> NodeChildRefShift,\n\t\t\t\tpos: 0,\n\t\t\t\tpfx: 0,\n\t\t\t\tword: word + letter,\n\t\t\t\tacc: nAcc\n\t\t\t};\n\t\t}\n\t\tfunction applyPrefixString(s) {\n\t\t\tconst prefixIdx = nodes[s.nodeIdx] >>> nodeHeaderPrefixShift;\n\t\t\tconst fullPrefix = prefixIdx ? st.getStringBytes(prefixIdx) : void 0;\n\t\t\tif (!fullPrefix || s.pfx >= fullPrefix.length) return;\n\t\t\tlet prefix = fullPrefix;\n\t\t\tif (s.pfx) prefix = prefix.subarray(s.pfx);\n\t\t\ts.word += s.acc.decodeBytesToString(prefix);\n\t\t\ts.pfx = fullPrefix.length;\n\t\t}\n\t}\n\tget size() {\n\t\tif (this.#size) return this.#size;\n\t\tconst NodeMaskNumChildren = 255;\n\t\tconst nodes = this.nodes;\n\t\tlet p = 0;\n\t\tlet count = 0;\n\t\twhile (p < nodes.length) {\n\t\t\t++count;\n\t\t\tp += (nodes[p] & NodeMaskNumChildren) + 1;\n\t\t}\n\t\tthis.#size = count;\n\t\treturn count;\n\t}\n\ttoJSON() {\n\t\treturn {\n\t\t\toptions: this.info,\n\t\t\tnodes: nodesToJson(this.nodes)\n\t\t};\n\t}\n\tencodeToBTrie() {\n\t\treturn this.encodeBin();\n\t}\n\tencodeBin() {\n\t\treturn encodeTrieBlobToBTrie({\n\t\t\tnodes: this.nodes,\n\t\t\tstringTable: this.stringTable,\n\t\t\tinfo: this.info,\n\t\t\tcharacteristics: this\n\t\t});\n\t}\n\tstatic decodeBin(blob) {\n\t\tconst info = decodeTrieBlobToBTrie(blob);\n\t\treturn new TrieBlob(info.nodes, info.stringTable, info.info);\n\t}\n\t/**\n\t* Walk the trie starting at the given reference at position 0 (or depth).\n\t* @param stack - the stack used while walking - updated\n\t* @param depth - that starting depth in the stack\n\t* @yields the depth in the stack. The stack will contain the current Reference.\n\t*/\n\t*#walk(stack, depth = 0) {\n\t\tconst MaskNumChildren = 255;\n\t\tconst NodeRefShift = 8;\n\t\tconst CharMask = 255;\n\t\tconst PrefixMask = NodeHeaderPrefixMask;\n\t\tconst PrefixShift = 9;\n\t\tconst nodes = this.nodes;\n\t\tstack[0] ||= {\n\t\t\tnodeIdx: 0,\n\t\t\tpfx: 0,\n\t\t\tpos: 0,\n\t\t\tprefix: void 0,\n\t\t\tbChar: 0\n\t\t};\n\t\twhile (depth >= 0) {\n\t\t\tlet s = stack[depth];\n\t\t\tconst { nodeIdx, pos, pfx, prefix } = s;\n\t\t\tif (!pos) {\n\t\t\t\tif (!(yield depth)) {\n\t\t\t\t\t--depth;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (prefix) {\n\t\t\t\tif (pos) {\n\t\t\t\t\t--depth;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ts.pos = 1;\n\t\t\t\t++depth;\n\t\t\t\tstack[depth] ||= {\n\t\t\t\t\tnodeIdx: 0,\n\t\t\t\t\tpfx: 0,\n\t\t\t\t\tpos: 0,\n\t\t\t\t\tprefix: void 0,\n\t\t\t\t\tbChar: 0\n\t\t\t\t};\n\t\t\t\ts = stack[depth];\n\t\t\t\ts.nodeIdx = nodeIdx;\n\t\t\t\ts.pfx = pfx + 1;\n\t\t\t\ts.pos = 0;\n\t\t\t\ts.prefix = s.pfx < prefix.length ? prefix : void 0;\n\t\t\t\ts.bChar = prefix[pfx];\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (pos >= (nodes[nodeIdx] & MaskNumChildren)) {\n\t\t\t\t--depth;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst entry = nodes[nodeIdx + ++s.pos];\n\t\t\tconst eNodeIdx = entry >>> NodeRefShift;\n\t\t\t++depth;\n\t\t\tstack[depth] ||= {\n\t\t\t\tnodeIdx: 0,\n\t\t\t\tpfx: 0,\n\t\t\t\tpos: 0,\n\t\t\t\tprefix: void 0,\n\t\t\t\tbChar: 0\n\t\t\t};\n\t\t\ts = stack[depth];\n\t\t\ts.nodeIdx = eNodeIdx;\n\t\t\ts.pfx = 0;\n\t\t\ts.pos = 0;\n\t\t\tconst pfxV = nodes[eNodeIdx] & PrefixMask;\n\t\t\ts.prefix = pfxV ? this.#stringTable.getStringBytes(pfxV >>> PrefixShift) : void 0;\n\t\t\ts.bChar = entry & CharMask;\n\t\t}\n\t}\n\tgetChildrenFromRef(ref) {\n\t\treturn this.#getChildrenFromRef(this.#cvtToRefPfx(ref));\n\t}\n\thasChildren(ref) {\n\t\tconst node = this.nodes[ref.nodeIdx];\n\t\tconst pfxV = node & NodeHeaderPrefixMask;\n\t\tconst has = (node & 255) !== 0;\n\t\tif (!pfxV) return has;\n\t\tif (isRefPfx(ref)) return ref.prefix ? true : has;\n\t\tref = this.#cvtToRefPfx(ref);\n\t\treturn ref.prefix ? true : has;\n\t}\n\t#getChildrenFromRef(ref) {\n\t\tconst accStack = [Utf8Accumulator.create()];\n\t\tconst stack = [{\n\t\t\t...ref,\n\t\t\tpos: 0,\n\t\t\tbChar: 0\n\t\t}];\n\t\tconst results = [];\n\t\tconst iterable = this.#walk(stack);\n\t\tlet deeper = false;\n\t\tfor (let next = iterable.next(true); !next.done; next = iterable.next(deeper)) {\n\t\t\tconst depth = next.value;\n\t\t\tif (depth <= 0) {\n\t\t\t\tif (!depth) {\n\t\t\t\t\tdeeper = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst s = stack[depth];\n\t\t\taccStack[depth] = accStack[depth - 1].clone(accStack[depth]);\n\t\t\tconst char = accStack[depth].decode(s.bChar);\n\t\t\tif (char) {\n\t\t\t\tdeeper = false;\n\t\t\t\tresults.push([String.fromCodePoint(char), {\n\t\t\t\t\tnodeIdx: s.nodeIdx,\n\t\t\t\t\tpfx: s.pfx,\n\t\t\t\t\tprefix: s.prefix\n\t\t\t\t}]);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdeeper = true;\n\t\t}\n\t\treturn results;\n\t}\n\t/**\n\t* Checks if a location is at an end-of-word node.\n\t* @param ref\n\t* @returns\n\t*/\n\tisRefEOW(ref) {\n\t\tif (ref.prefix && ref.pfx < ref.prefix.length) return false;\n\t\treturn !!(this.nodes[ref.nodeIdx] & 256);\n\t}\n\t#getNodePrefix(nodeIdx, pfx) {\n\t\tconst pfxV = this.nodes[nodeIdx] & NodeHeaderPrefixMask;\n\t\tconst prefix = pfxV ? this.#stringTable.getStringBytes(pfxV >>> 9) : void 0;\n\t\tif (!prefix) return void 0;\n\t\tif (pfx >= prefix.length) return void 0;\n\t\treturn prefix;\n\t}\n\t#cvtToRefPfx(ref) {\n\t\tif (isRefPfx(ref)) return ref;\n\t\tconst refPfx = ref;\n\t\trefPfx.prefix = this.#getNodePrefix(ref.nodeIdx, ref.pfx);\n\t\treturn refPfx;\n\t}\n\ttoRef(nodeIdx, pfx = 0) {\n\t\treturn this.#cvtToRefPfx({\n\t\t\tnodeIdx,\n\t\t\tpfx\n\t\t});\n\t}\n\tget rootRef() {\n\t\treturn this.#rootRef;\n\t}\n\tgetNodeDebugInfo(ref) {\n\t\tconst node = this.nodes[ref.nodeIdx];\n\t\tconst isEOW = !!(node & 256);\n\t\tconst count = node & 255;\n\t\tconst children = /* @__PURE__ */ new Map();\n\t\tfor (let i = 1; i <= count; ++i) {\n\t\t\tconst entry = this.nodes[ref.nodeIdx + i];\n\t\t\tconst c = entry & 255;\n\t\t\tconst idx = entry >>> 8;\n\t\t\tchildren.set(charToHex(c), numberToHex(idx) + \" \" + idx);\n\t\t}\n\t\treturn {\n\t\t\t...ref,\n\t\t\tprefix: ref.prefix ? [...ref.prefix].map(charToHex).join(\", \") : \"\",\n\t\t\tisEOW,\n\t\t\tcount,\n\t\t\tchildren\n\t\t};\n\t}\n\tstatic copyNodes(trie) {\n\t\treturn new Uint32Array(trie.nodes);\n\t}\n};\nfunction nodesToJson(nodes) {\n\tfunction nodeElement(offset) {\n\t\tconst node = nodes[offset];\n\t\tconst numChildren = node & 255;\n\t\tconst eow = !!(node & 256);\n\t\tconst children = [];\n\t\tfor (let i = 1; i <= numChildren; ++i) children.push({\n\t\t\tc: (\"00\" + (nodes[offset + i] & 255).toString(16)).slice(-2),\n\t\t\to: nodes[offset + i] >>> 8\n\t\t});\n\t\treturn {\n\t\t\tid: offset,\n\t\t\teow,\n\t\t\tn: offset + numChildren + 1,\n\t\t\tc: children\n\t\t};\n\t}\n\tconst elements = [];\n\tlet offset = 0;\n\twhile (offset < nodes.length) {\n\t\tconst e = nodeElement(offset);\n\t\telements.push(e);\n\t\toffset = e.n;\n\t}\n\treturn elements;\n}\n/**\n* Sorts the child nodes in the trie to ensure binary lookup works.\n* @param data\n*/\nfunction trieBlobSort(data) {\n\tconst MaskNumChildren = 255;\n\tconst MaskChildCharIndex = 255;\n\tconst limit = data.length;\n\tlet idx = 0;\n\tlet node = data[0];\n\tlet nc = node & MaskNumChildren;\n\tfor (; idx < limit; idx += nc + 1, node = data[idx], nc = node & MaskNumChildren) {\n\t\tif (!nc) continue;\n\t\tconst start = idx + 1;\n\t\tconst end = start + nc;\n\t\tlet last = 0;\n\t\tlet i = start;\n\t\tfor (; i < end; ++i) {\n\t\t\tconst cIdx = data[i] & MaskChildCharIndex;\n\t\t\tif (last >= cIdx) break;\n\t\t\tlast = cIdx;\n\t\t}\n\t\tif (i === end) continue;\n\t\tdata.slice(start, end).sort((a, b) => (a & MaskChildCharIndex) - (b & MaskChildCharIndex)).forEach((v, i) => data[start + i] = v);\n\t}\n}\nfunction numberToHex(n) {\n\tconst digits = n.toString(16).padStart(8, \"0\");\n\treturn \"0x\" + digits.slice(0, 4) + \"_\" + digits.slice(4);\n}\nfunction charToHex(c) {\n\treturn c.toString(16).padStart(2, \"0\") + \" \" + (c >= 32 && c <= 126 ? String.fromCodePoint(c) : \".\");\n}\nfunction isRefPfx(ref) {\n\treturn \"prefix\" in ref;\n}\n//#endregion\n//#region src/lib/TrieBlob/TrieBuilderUtils.ts\n/**\n* Sorts the nodes in place if possible.\n* @param nodes\n* @param mask\n* @returns\n*/\nfunction sortNodes(nodes, mask) {\n\tconst endPerf = measurePerf(\"TrieBlobBuilder.sortNodes\");\n\tfor (let i = 0; i < nodes.length; ++i) {\n\t\tconst node = nodes[i];\n\t\tif (node.length <= 2 || isSorted(node, mask, 1)) continue;\n\t\tsortSubArray(node, mask, 1);\n\t}\n\tendPerf();\n\treturn nodes;\n}\nfunction sortSubArray(node, mask, startAt) {\n\tconst compare = (a, b) => !a ? -1 : !b ? 1 : (a & mask) - (b & mask);\n\tif (node.subarray === void 0) {\n\t\tconst header = node[0];\n\t\tnode[0] = Number.MIN_SAFE_INTEGER;\n\t\tnode.sort(compare);\n\t\tnode[0] = header;\n\t\treturn;\n\t}\n\tnode.subarray(startAt).sort(compare);\n}\nfunction isSorted(node, mask, start, end) {\n\tif (node.length > 2) {\n\t\tconst limit = end ?? node.length;\n\t\tlet last = -1;\n\t\tfor (let j = start; j < limit; ++j) {\n\t\t\tconst n = node[j] & mask;\n\t\t\tif (n < last) return false;\n\t\t\tlast = n;\n\t\t}\n\t}\n\treturn true;\n}\nfunction toTrieBlob(nodes, stringTable, info) {\n\tconst endPerf = measurePerf(\"TrieBlob.toTrieBlob\");\n\tconst nodeMaskChildCharIndex = 255;\n\tconst nodeChildRefShift = 8;\n\tfunction calcNodeToIndex(nodes) {\n\t\tlet offset = 0;\n\t\tconst idx = Array(nodes.length + 1);\n\t\tfor (let i = 0; i < nodes.length; ++i) {\n\t\t\tidx[i] = offset;\n\t\t\toffset += nodes[i].length;\n\t\t}\n\t\tidx[nodes.length] = offset;\n\t\treturn idx;\n\t}\n\tconst nodeToIndex = calcNodeToIndex(nodes);\n\tconst nodeElementCount = nodeToIndex[nodeToIndex.length - 1];\n\tconst binNodes = new Uint32Array(nodeElementCount);\n\tconst lenShift = 0;\n\tconst refShift = 8;\n\tconst NodeHeaderMask = -256;\n\tlet offset = 0;\n\tfor (let i = 0; i < nodes.length; ++i) {\n\t\tconst node = nodes[i];\n\t\tbinNodes[offset++] = node.length - 1 << lenShift | node[0] & NodeHeaderMask;\n\t\tfor (let j = 1; j < node.length; ++j) {\n\t\t\tconst v = node[j];\n\t\t\tconst nodeRef = v >>> nodeChildRefShift;\n\t\t\tconst charIndex = v & nodeMaskChildCharIndex;\n\t\t\tbinNodes[offset++] = nodeToIndex[nodeRef] << refShift | charIndex;\n\t\t}\n\t}\n\tconst t = new TrieBlob(binNodes, stringTable, info);\n\tendPerf();\n\treturn t;\n}\n//#endregion\n//#region src/lib/TrieBlob/TrieBlobBuilder.ts\nconst AUTO_OPTIMIZE_NODE_COUNT = 0;\nvar TrieBlobBuilder = class TrieBlobBuilder {\n\tcharIndex = new CharIndexBuilder();\n\tnodes;\n\t_readonly = false;\n\tIdxEOW;\n\t_cursor;\n\t_cursorId = 0;\n\twordToCharacters = (word) => [...word];\n\t#infoBuilder;\n\tconstructor(options, characteristics) {\n\t\tthis.nodes = [[0], Object.freeze([256])];\n\t\tthis.IdxEOW = 1;\n\t\tthis.#infoBuilder = new TrieInfoBuilder(options, characteristics);\n\t}\n\tsetOptions(options) {\n\t\tthis.#infoBuilder.setInfo(options);\n\t\treturn this.#infoBuilder.getActiveInfo();\n\t}\n\tget options() {\n\t\treturn this.#infoBuilder.getActiveInfo();\n\t}\n\twordToUtf8Seq(word) {\n\t\treturn this.charIndex.wordToUtf8Seq(word);\n\t}\n\tletterToUtf8Seq(letter) {\n\t\treturn this.charIndex.charToUtf8Seq(letter);\n\t}\n\tinsert(word) {\n\t\tthis.#assertNotReadonly();\n\t\tif (typeof word === \"string\") return this.#insertWord(word);\n\t\treturn this.insertWords(word);\n\t}\n\tgetCursor() {\n\t\tthis.#assertNotReadonly();\n\t\tthis._cursor ??= this.createCursor(++this._cursorId);\n\t\treturn this._cursor;\n\t}\n\tcreateCursor(id) {\n\t\tconst endPerf = measurePerf(\"TrieBlobBuilder.cursor\");\n\t\tconst nodeChildRefShift = 8;\n\t\tconst NodeMaskEOW = 256;\n\t\tconst LetterMask = 255;\n\t\tconst refNodes = [0, 1];\n\t\tconst lookupCharCode = createCharUtf8_32RevLookup();\n\t\tlet disposed = false;\n\t\tconst dispose = () => {\n\t\t\tif (disposed) return;\n\t\t\tendPerf();\n\t\t\tdisposed = true;\n\t\t\tif (this._cursorId === id) this._cursor = void 0;\n\t\t};\n\t\tfunction childPos(node, letterIdx) {\n\t\t\tfor (let i = 1; i < node.length; ++i) if ((node[i] & LetterMask) === letterIdx) return i;\n\t\t\treturn 0;\n\t\t}\n\t\tassert(this.nodes.length === 2);\n\t\tconst eowNodeIndex = 1;\n\t\tconst eowShifted = eowNodeIndex << nodeChildRefShift;\n\t\tconst nodes = this.nodes;\n\t\tconst stack = [{\n\t\t\tnodeIdx: 0,\n\t\t\tpos: 0,\n\t\t\tpDepth: -1\n\t\t}];\n\t\tlet nodeIdx = 0;\n\t\tlet depth = 0;\n\t\t/**\n\t\t* Asserts that the cursor has not been disposed and is still valid.\n\t\t* There can be only one valid cursor per builder at a time.\n\t\t*/\n\t\tconst assertNotDisposed = () => {\n\t\t\tassert(!disposed, \"Cursor has been disposed\");\n\t\t\tassert(id === this._cursorId, \"Cursor is no longer valid\");\n\t\t};\n\t\t/**\n\t\t* A single character can result in multiple nodes being created\n\t\t* because it takes multiple bytes to represent a character.\n\t\t* @param char - character to insert.\n\t\t*/\n\t\tfunction insertChar(char) {\n\t\t\tassertNotDisposed();\n\t\t\tif (!nodes[nodeIdx]) refNodes.push(nodeIdx);\n\t\t\tconst pDepth = depth;\n\t\t\tfor (let encoded = lookupCharCode(char); encoded; encoded >>>= 8) insertCharByteCode(encoded & 255, pDepth);\n\t\t}\n\t\t/**\n\t\t* A single character can result in multiple nodes being created\n\t\t* because it takes multiple bytes to represent a character.\n\t\t* @param byte - partial character index.\n\t\t*/\n\t\tfunction insertCharByteCode(byte, pDepth) {\n\t\t\tif (nodes[nodeIdx] && Object.isFrozen(nodes[nodeIdx])) {\n\t\t\t\tnodeIdx = nodes.push([...nodes[nodeIdx]]) - 1;\n\t\t\t\tconst { pos, nodeIdx: pNodeIdx } = stack[depth];\n\t\t\t\tconst pNode = nodes[pNodeIdx];\n\t\t\t\tpNode[pos] = pNode[pos] & LetterMask | nodeIdx << nodeChildRefShift;\n\t\t\t}\n\t\t\tconst node = nodes[nodeIdx] || [0];\n\t\t\tnodes[nodeIdx] = node;\n\t\t\tconst hasIdx = childPos(node, byte);\n\t\t\tconst childIdx = hasIdx ? node[hasIdx] >>> nodeChildRefShift : nodes.length;\n\t\t\tconst pos = hasIdx || node.push(childIdx << nodeChildRefShift | byte) - 1;\n\t\t\t++depth;\n\t\t\tconst s = stack[depth];\n\t\t\tif (s) {\n\t\t\t\ts.nodeIdx = nodeIdx;\n\t\t\t\ts.pos = pos;\n\t\t\t\ts.pDepth = pDepth;\n\t\t\t} else stack[depth] = {\n\t\t\t\tnodeIdx,\n\t\t\t\tpos,\n\t\t\t\tpDepth\n\t\t\t};\n\t\t\tnodeIdx = childIdx;\n\t\t}\n\t\tfunction markEOW() {\n\t\t\tassertNotDisposed();\n\t\t\tif (nodeIdx === eowNodeIndex) return;\n\t\t\tconst node = nodes[nodeIdx];\n\t\t\tif (!node) {\n\t\t\t\tconst { pos, nodeIdx: pNodeIdx } = stack[depth];\n\t\t\t\tconst pNode = nodes[pNodeIdx];\n\t\t\t\tpNode[pos] = pNode[pos] & LetterMask | eowShifted;\n\t\t\t} else {\n\t\t\t\tnodes[nodeIdx] = node;\n\t\t\t\tnode[0] |= NodeMaskEOW;\n\t\t\t}\n\t\t\tnodeIdx = eowNodeIndex;\n\t\t}\n\t\tfunction reference(refId) {\n\t\t\tassertNotDisposed();\n\t\t\tconst refNodeIdx = refNodes[refId];\n\t\t\tassert(refNodeIdx !== void 0);\n\t\t\tassert(nodes[nodeIdx] === void 0);\n\t\t\tassert(nodes[refNodeIdx]);\n\t\t\tObject.freeze(nodes[refNodeIdx]);\n\t\t\tconst s = stack[depth];\n\t\t\tnodeIdx = s.nodeIdx;\n\t\t\tconst pos = s.pos;\n\t\t\tconst node = nodes[nodeIdx];\n\t\t\tnode[pos] = refNodeIdx << nodeChildRefShift | node[pos] & LetterMask;\n\t\t}\n\t\tfunction backStep(num) {\n\t\t\tassertNotDisposed();\n\t\t\tif (!num) return;\n\t\t\tassert(num <= depth && num > 0);\n\t\t\tfor (let n = num; n > 0; --n) depth = stack[depth].pDepth;\n\t\t\tnodeIdx = stack[depth + 1].nodeIdx;\n\t\t}\n\t\treturn {\n\t\t\tinsertChar,\n\t\t\tmarkEOW,\n\t\t\treference,\n\t\t\tbackStep,\n\t\t\tdispose,\n\t\t\t[Symbol.dispose]: dispose\n\t\t};\n\t}\n\t/**\n\t* Insert multiple words. Performance is (~10%) better if the words are sorted.\n\t* @param words - words to insert\n\t* @returns this\n\t*/\n\tinsertWords(words) {\n\t\tfor (const word of words) this.#insertWord(word);\n\t\treturn this;\n\t}\n\t#insertWord(word) {\n\t\tword = word.trim();\n\t\tif (!word) return this;\n\t\tthis.#infoBuilder.addWord(word);\n\t\tconst NodeMaskChildCharIndex = 255;\n\t\tconst nodeChildRefShift = 8;\n\t\tconst NodeMaskEOW = 256;\n\t\tconst IdxEOW = this.IdxEOW;\n\t\tconst nodes = this.nodes;\n\t\tlet nodeIdx = 0;\n\t\tconst wLen = word.length;\n\t\tconst bytes = [];\n\t\tfor (const t = {\n\t\t\ttext: word,\n\t\t\ti: 0\n\t\t}; t.i < wLen;) {\n\t\t\tconst isLastChar = t.i >= wLen - 1;\n\t\t\tfor (let utf8Code = encodeTextToUtf8_32Rev(t); utf8Code; utf8Code >>>= 8) {\n\t\t\t\tconst seq = utf8Code & 255;\n\t\t\t\tbytes.push(seq);\n\t\t\t\tconst node = nodes[nodeIdx];\n\t\t\t\tlet i = node.length - 1;\n\t\t\t\tfor (; i > 0; --i) if ((node[i] & NodeMaskChildCharIndex) === seq) break;\n\t\t\t\tconst isEow = isLastChar && utf8Code <= 255;\n\t\t\t\tif (i > 0) {\n\t\t\t\t\tnodeIdx = node[i] >>> nodeChildRefShift;\n\t\t\t\t\tif (nodeIdx === 1 && !isEow) {\n\t\t\t\t\t\tnodeIdx = this.nodes.push([NodeMaskEOW]) - 1;\n\t\t\t\t\t\tnode[i] = nodeIdx << nodeChildRefShift | seq;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tnodeIdx = isEow ? IdxEOW : this.nodes.push([0]) - 1;\n\t\t\t\tnode.push(nodeIdx << nodeChildRefShift | seq);\n\t\t\t}\n\t\t}\n\t\tif (nodeIdx > 1) {\n\t\t\tconst node = nodes[nodeIdx];\n\t\t\tnode[0] |= NodeMaskEOW;\n\t\t}\n\t\treturn this;\n\t}\n\thas(word) {\n\t\tconst NodeMaskChildCharIndex = 255;\n\t\tconst nodeChildRefShift = 8;\n\t\tconst NodeMaskEOW = 256;\n\t\tconst nodes = this.nodes;\n\t\tconst charIndexes = this.wordToUtf8Seq(word);\n\t\tconst len = charIndexes.length;\n\t\tlet nodeIdx = 0;\n\t\tlet node = nodes[nodeIdx];\n\t\tfor (let p = 0; p < len; ++p, node = nodes[nodeIdx]) {\n\t\t\tconst letterIdx = charIndexes[p];\n\t\t\tlet i = node.length - 1;\n\t\t\tfor (; i > 0; --i) if ((node[i] & NodeMaskChildCharIndex) === letterIdx) break;\n\t\t\tif (i < 1) return false;\n\t\t\tnodeIdx = node[i] >>> nodeChildRefShift;\n\t\t}\n\t\treturn !!(node[0] & NodeMaskEOW);\n\t}\n\tisReadonly() {\n\t\treturn this._readonly;\n\t}\n\tfreeze() {\n\t\tthis._readonly = true;\n\t\treturn this;\n\t}\n\tcopyNodes() {\n\t\treturn this.nodes.map((n) => [...n]);\n\t}\n\tbuild(buildOptions) {\n\t\tthis._cursor?.dispose?.();\n\t\tthis._readonly = true;\n\t\tthis.freeze();\n\t\tconst endPerf = measurePerf(\"TrieBlobBuilder.build\");\n\t\tconst { optimize, useStringTable } = buildOptions || {};\n\t\tconst info = this.#infoBuilder.build();\n\t\tconst bNodes = this.nodes;\n\t\tlet sortedNodes = sortNodes(bNodes, 255);\n\t\tif (optimize ?? sortNodes.length < AUTO_OPTIMIZE_NODE_COUNT) sortedNodes = optimizeNodes(sortedNodes);\n\t\tconst stringTable = new StringTableBuilder().build();\n\t\tconst r = useStringTable ? optimizeNodesWithStringTable({\n\t\t\tnodes: sortedNodes,\n\t\t\tstringTable\n\t\t}) : {\n\t\t\tnodes: sortedNodes,\n\t\t\tstringTable\n\t\t};\n\t\tconst data = toTrieBlob(r.nodes, r.stringTable, normalizeTrieInfo(info.info));\n\t\tendPerf();\n\t\treturn data;\n\t}\n\ttoJSON() {\n\t\treturn {\n\t\t\toptions: this.options,\n\t\t\tnodes: this.nodes\n\t\t};\n\t}\n\t#assertNotReadonly() {\n\t\tassert(!this.isReadonly(), \"FastTrieBlobBuilder is readonly\");\n\t}\n\tstatic fromWordList(words, options, buildOptions) {\n\t\treturn new TrieBlobBuilder(options).insert(words).build(buildOptions);\n\t}\n\t/**\n\t* Create a TrieBlob from a TrieRoot.\n\t*\n\t* This is equivalent to, but slightly faster because it avoids creating an ITrieNodes\n\t* ```ts\n\t* static fromTrieRoot(root: TrieRoot, optimize?: boolean): TrieBlob {\n\t*   return this.fromITrieRoot(trieRootToITrieRoot(root), optimize);\n\t* }\n\t* ```\n\t*\n\t* @param root - TrieRoot\n\t* @param buildOptions - optional build options\n\t* @returns TrieBlob\n\t*/\n\tstatic fromTrieRoot(root, buildOptions) {\n\t\tconst endPerf = measurePerf(\"TrieBlobBuilder.fromTrieRoot\");\n\t\tconst NodeCharIndexMask = 255;\n\t\tconst nodeChildRefShift = 8;\n\t\tconst NodeMaskEOW = 256;\n\t\tconst tf = new TrieBlobBuilder(void 0, root);\n\t\tconst IdxEOW = tf.IdxEOW;\n\t\tconst known = new Map([[root, 0]]);\n\t\tfunction resolveNode(n) {\n\t\t\tif (n.f && !n.c) return IdxEOW;\n\t\t\tconst node = [n.f ? NodeMaskEOW : 0];\n\t\t\treturn tf.nodes.push(node) - 1;\n\t\t}\n\t\tfunction walk(n) {\n\t\t\tconst found = known.get(n);\n\t\t\tif (found) return found;\n\t\t\tconst nodeIdx = resolveMap(known, n, resolveNode);\n\t\t\tconst node = tf.nodes[nodeIdx];\n\t\t\tif (!n.c) return nodeIdx;\n\t\t\tconst children = Object.entries(n.c);\n\t\t\tfor (let p = 0; p < children.length; ++p) {\n\t\t\t\tconst [char, childNode] = children[p];\n\t\t\t\taddCharToNode(node, char, childNode);\n\t\t\t}\n\t\t\treturn nodeIdx;\n\t\t}\n\t\tfunction resolveChild(node, charIndex) {\n\t\t\tlet i = 1;\n\t\t\tfor (; i < node.length && (node[i] & NodeCharIndexMask) !== charIndex; ++i);\n\t\t\treturn i;\n\t\t}\n\t\tfunction addCharToNode(node, char, n) {\n\t\t\tconst indexSeq = tf.letterToUtf8Seq(char);\n\t\t\tassertValidUtf16Character(char);\n\t\t\tfor (const idx of indexSeq.slice(0, -1)) {\n\t\t\t\tconst pos = resolveChild(node, idx);\n\t\t\t\tif (pos < node.length) node = tf.nodes[node[pos] >>> nodeChildRefShift];\n\t\t\t\telse {\n\t\t\t\t\tconst next = [0];\n\t\t\t\t\tconst nodeIdx = tf.nodes.push(next) - 1;\n\t\t\t\t\tnode[pos] = nodeIdx << nodeChildRefShift | idx;\n\t\t\t\t\tnode = next;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst letterIdx = indexSeq[indexSeq.length - 1];\n\t\t\tconst i = node.push(letterIdx) - 1;\n\t\t\tnode[i] = walk(n) << nodeChildRefShift | letterIdx;\n\t\t}\n\t\twalk(root);\n\t\tconst result = tf.build(buildOptions);\n\t\tendPerf();\n\t\treturn result;\n\t}\n\t/**\n\t* Create a TrieBlob from a TrieRoot.\n\t*\n\t* @param root - root node\n\t* @param buildOptions - optional build options\n\t* @returns TrieBlob\n\t*/\n\tstatic fromITrieRoot(root, buildOptions) {\n\t\tconst endPerf = measurePerf(\"TrieBlobBuilder.fromITrieRoot\");\n\t\tconst NodeCharIndexMask = 255;\n\t\tconst nodeChildRefShift = 8;\n\t\tconst NodeMaskEOW = 256;\n\t\tconst tf = new TrieBlobBuilder(void 0, root);\n\t\tconst IdxEOW = tf.IdxEOW;\n\t\tconst known = new Map([[root.id, 0]]);\n\t\tfunction resolveNode(n) {\n\t\t\tif (n.eow && !n.hasChildren()) return IdxEOW;\n\t\t\tconst node = [n.eow ? NodeMaskEOW : 0];\n\t\t\treturn tf.nodes.push(node) - 1;\n\t\t}\n\t\tfunction walk(n) {\n\t\t\tconst found = known.get(n.id);\n\t\t\tif (found) return found;\n\t\t\tconst nodeIdx = resolveMap(known, n.id, () => resolveNode(n));\n\t\t\tconst node = tf.nodes[nodeIdx];\n\t\t\tif (!n.hasChildren()) return nodeIdx;\n\t\t\tconst children = n.entries();\n\t\t\tfor (const [char, childNode] of children) addCharToNode(node, char, childNode);\n\t\t\treturn nodeIdx;\n\t\t}\n\t\tfunction resolveChild(node, charIndex) {\n\t\t\tlet i = 1;\n\t\t\tfor (; i < node.length && (node[i] & NodeCharIndexMask) !== charIndex; ++i);\n\t\t\treturn i;\n\t\t}\n\t\tfunction addCharToNode(node, char, n) {\n\t\t\tconst indexSeq = tf.letterToUtf8Seq(char);\n\t\t\tassertValidUtf16Character(char);\n\t\t\tfor (const idx of indexSeq.slice(0, -1)) {\n\t\t\t\tconst pos = resolveChild(node, idx);\n\t\t\t\tif (pos < node.length) node = tf.nodes[node[pos] >>> nodeChildRefShift];\n\t\t\t\telse {\n\t\t\t\t\tconst next = [0];\n\t\t\t\t\tconst nodeIdx = tf.nodes.push(next) - 1;\n\t\t\t\t\tnode[pos] = nodeIdx << nodeChildRefShift | idx;\n\t\t\t\t\tnode = next;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst letterIdx = indexSeq[indexSeq.length - 1];\n\t\t\tconst i = node.push(letterIdx) - 1;\n\t\t\tnode[i] = walk(n) << nodeChildRefShift | letterIdx;\n\t\t}\n\t\twalk(root);\n\t\tconst result = tf.build(buildOptions);\n\t\tendPerf();\n\t\treturn result;\n\t}\n};\nfunction createCharUtf8_32RevLookup(maxSize = 256) {\n\tlet size = 0;\n\tlet map = Object.create(null);\n\treturn (char) => {\n\t\tlet code = map[char];\n\t\tif (!code) {\n\t\t\tsize++;\n\t\t\tif (size >= maxSize) {\n\t\t\t\tsize = 1;\n\t\t\t\tmap = Object.create(null);\n\t\t\t}\n\t\t\tcode = encodeToUtf8_32Rev(char.codePointAt(0) || 0);\n\t\t\tmap[char] = code;\n\t\t}\n\t\treturn code;\n\t};\n}\n//#endregion\n//#region src/lib/utils/clean.ts\nfunction clean(t) {\n\tconst copy = { ...t };\n\tfor (const key of Object.keys(copy)) if (copy[key] === void 0) delete copy[key];\n\treturn copy;\n}\n//#endregion\n//#region src/lib/ITrie.ts\nconst defaultLegacyMinCompoundLength$1 = 3;\nconst cvtFindWordOptions = memorizeLastCall(_cvtFindWordOptions);\nfunction _cvtFindWordOptions(options) {\n\treturn createFindOptions$1({\n\t\tmatchCase: options?.caseSensitive,\n\t\tcheckForbidden: options?.checkForbidden,\n\t\tcompoundSeparator: options?.compoundSeparator\n\t});\n}\nvar ITrieImpl = class ITrieImpl {\n\t_info;\n\troot;\n\tcount;\n\tweightMap;\n\t#optionsCompound = this.createFindOptions({ compoundMode: \"compound\" });\n\t#findOptionsT = {\n\t\tcaseSensitive: true,\n\t\tcheckForbidden: true\n\t};\n\t#findOptionsF = {\n\t\tcaseSensitive: false,\n\t\tcheckForbidden: true\n\t};\n\thasForbiddenWords;\n\thasCompoundWords;\n\thasNonStrictWords;\n\tdata;\n\tconstructor(data) {\n\t\tthis.data = data;\n\t\tthis.root = data.getRoot();\n\t\tthis._info = mergeOptionalWithDefaults(data.info);\n\t\tthis.hasForbiddenWords = data.hasForbiddenWords;\n\t\tthis.hasCompoundWords = data.hasCompoundWords;\n\t\tthis.hasNonStrictWords = data.hasNonStrictWords;\n\t}\n\t/**\n\t* Number of words in the Trie, the first call to this method might be expensive.\n\t* Use `size` to get the number of nodes.\n\t*/\n\tnumWords() {\n\t\tthis.count ??= countWords$1(this.root);\n\t\treturn this.count;\n\t}\n\tisNumWordsKnown() {\n\t\treturn this.count !== void 0;\n\t}\n\tget size() {\n\t\treturn this.data.size;\n\t}\n\tget info() {\n\t\treturn this._info;\n\t}\n\t/**\n\t* @param text - text to find in the Trie\n\t*/\n\tfind(text) {\n\t\treturn findWordNode$1(this.data.getRoot(), text, this.#optionsCompound).node;\n\t}\n\t/**\n\t* A case sensitive search for the word.\n\t* @param word - the word to search for.\n\t* @param minLegacyCompoundLength - minimum length of legacy compounds to consider.\n\t* @returns true if the word is found and not forbidden.\n\t*/\n\thas(word, minLegacyCompoundLength) {\n\t\tif (minLegacyCompoundLength !== void 0) return this.#hasLegacy(word, minLegacyCompoundLength);\n\t\treturn this.hasWord(word, true);\n\t}\n\t#hasLegacy(word, minLegacyCompoundLength) {\n\t\tif (this.hasWord(word, false)) return true;\n\t\tif (minLegacyCompoundLength) {\n\t\t\tconst f = this.findWord(word, {\n\t\t\t\tuseLegacyWordCompounds: minLegacyCompoundLength,\n\t\t\t\tcaseSensitive: false,\n\t\t\t\tcheckForbidden: true\n\t\t\t});\n\t\t\treturn !!f.found && !f.forbidden;\n\t\t}\n\t\treturn false;\n\t}\n\t/**\n\t* Determine if a word is in the dictionary.\n\t* @param word - the exact word to search for - must be normalized.\n\t* @param caseSensitive - false means also searching a dictionary where the words were normalized to lower case and accents removed.\n\t* @returns true if the word was found and is not forbidden.\n\t*/\n\thasWord(word, caseSensitive) {\n\t\tconst options = caseSensitive ? this.#findOptionsT : this.#findOptionsF;\n\t\tconst r = this.findWord(word, options);\n\t\treturn !r.forbidden && !!r.found;\n\t}\n\tfindWord(word, options) {\n\t\tif (options?.useLegacyWordCompounds) {\n\t\t\tconst len = options.useLegacyWordCompounds !== true ? options.useLegacyWordCompounds : defaultLegacyMinCompoundLength$1;\n\t\t\tconst findOptions = this.createFindOptions({\n\t\t\t\tlegacyMinCompoundLength: len,\n\t\t\t\tmatchCase: options.caseSensitive || false,\n\t\t\t\tcompoundSeparator: void 0\n\t\t\t});\n\t\t\treturn findLegacyCompound$1(this.root, word, findOptions);\n\t\t}\n\t\treturn findWord$1(this.root, word, cvtFindWordOptions(options));\n\t}\n\t/**\n\t* Determine if a word is in the forbidden word list.\n\t* @param word the word to lookup.\n\t*/\n\tisForbiddenWord(word) {\n\t\treturn this.hasForbiddenWords && isForbiddenWord$1(this.root, word, this.info.forbiddenWordPrefix);\n\t}\n\t/**\n\t* Provides an ordered sequence of words with the prefix of text.\n\t*/\n\tcompleteWord(text) {\n\t\tconst n = this.find(text);\n\t\tconst compoundChar = this.info.compoundCharacter;\n\t\tconst subNodes = pipeSync(n ? iteratorTrieWords$1(n) : [], opFilterSync((w) => w[w.length - 1] !== compoundChar), opMapSync((suffix) => text + suffix));\n\t\treturn pipeSync(n && n.eow ? [text] : [], opAppendSync(subNodes));\n\t}\n\t/**\n\t* Checks to see if there are preferred suggestions for the given text.\n\t* @param text\n\t*/\n\twordHasPreferredSuggestions(text) {\n\t\treturn this.has(this.info.suggestionPrefix + text);\n\t}\n\t/**\n\t* Get preferred suggestions for the given text.\n\t* @param text - the exact word to search for.\n\t*/\n\tgetPreferredSuggestions(text) {\n\t\tconst prefix = text + this.info.suggestionPrefix;\n\t\treturn pipeSync(this.getAllPreferredSuggestions(prefix), opMapSync((s) => s.slice(prefix.length)));\n\t}\n\t/**\n\t* Get a list of all preferred suggestions in the trie.\n\t* They are returned in order and in the following format:\n\t* ```\n\t* <word1>:<suggestion1>\n\t* <word1>:<suggestion2>\n\t* <word2>:<suggestion1>\n\t* ```\n\t*\n\t* If `startingWith` is provided, only words that start with the prefix are returned.\n\t*\n\t* @param startingWith - optional prefix to filter the words returned.\n\t*/\n\tgetAllPreferredSuggestions(startingWith = \"\") {\n\t\tconst regexpSugIndex = /:[0-9a-f]{1,2}:/;\n\t\tconst sugPrefix = this.info.suggestionPrefix;\n\t\treturn pipeSync(this.data.words(sugPrefix + startingWith), opMapSync((result) => result.slice(1).replace(regexpSugIndex, \":\")), opFilterSync((w) => w.includes(\":\")));\n\t}\n\t/**\n\t* Checks to see if the trie contains preferred suggestions for any words.\n\t*/\n\tget hasPreferredSuggestions() {\n\t\treturn this.data.hasPreferredSuggestions;\n\t}\n\t/**\n\t* Suggest spellings for `text`.  The results are sorted by edit distance with changes near the beginning of a word having a greater impact.\n\t* @param text - the text to search for\n\t* @param maxNumSuggestions - the maximum number of suggestions to return.\n\t* @param compoundMethod - Use to control splitting words.\n\t* @param numChanges - the maximum number of changes allowed to text. This is an approximate value, since some changes cost less than others.\n\t*                      the lower the value, the faster results are returned. Values less than 4 are best.\n\t*/\n\tsuggest(text, options) {\n\t\treturn this.suggestWithCost(text, options).map((a) => a.word);\n\t}\n\t/**\n\t* Suggest spellings for `text`.  The results are sorted by edit distance with changes near the beginning of a word having a greater impact.\n\t* The results include the word and adjusted edit cost.  This is useful for merging results from multiple tries.\n\t*/\n\tsuggestWithCost(text, options) {\n\t\tconst sep = options.compoundSeparator;\n\t\tconst weightMap = options.weightMap || this.weightMap;\n\t\tconst adjWord = sep ? replaceAllFactory(sep, \"\") : (a) => a;\n\t\tconst optFilter = options.filter;\n\t\tconst filter = optFilter ? (word, cost) => {\n\t\t\tconst w = adjWord(word);\n\t\t\treturn !this.isForbiddenWord(w) && optFilter(w, cost);\n\t\t} : (word) => !this.isForbiddenWord(adjWord(word));\n\t\tconst opts = {\n\t\t\t...options,\n\t\t\tfilter,\n\t\t\tweightMap\n\t\t};\n\t\treturn suggestAStar(this.data, text, opts);\n\t}\n\t/**\n\t* genSuggestions will generate suggestions and send them to `collector`. `collector` is responsible for returning the max acceptable cost.\n\t* Costs are measured in weighted changes. A cost of 100 is the same as 1 edit. Some edits are considered cheaper.\n\t* Returning a MaxCost < 0 will effectively cause the search for suggestions to stop.\n\t*/\n\tgenSuggestions(collector, compoundMethod) {\n\t\tconst filter = (word) => !this.isForbiddenWord(word);\n\t\tconst options = createSuggestionOptions(clean({\n\t\t\tcompoundMethod,\n\t\t\t...collector.genSuggestionOptions\n\t\t}));\n\t\tconst suggestions = getSuggestionsAStar(this.data, collector.word, options);\n\t\tcollector.collect(suggestions, void 0, filter);\n\t}\n\t/**\n\t* Returns an iterator that can be used to get all words in the trie. For some dictionaries, this can result in millions of words.\n\t* Note: this will not compound words automatically.\n\t* @param prefix - optional prefix to filter the words returned. The words will be prefixed with this value.\n\t*/\n\twords(prefix) {\n\t\treturn this.data.words(prefix);\n\t}\n\t/**\n\t* Allows iteration over the entire tree.\n\t* On the returned Iterator, calling .next(goDeeper: boolean), allows for controlling the depth.\n\t*/\n\titerate() {\n\t\treturn walker$1(this.root);\n\t}\n\tstatic create(words, info) {\n\t\tconst builder = new TrieBlobBuilder(info);\n\t\tbuilder.insert(words);\n\t\treturn new ITrieImpl(builder.build());\n\t}\n\tcreateFindOptions(options) {\n\t\treturn createFindOptions$1(options);\n\t}\n};\n//#endregion\n//#region src/lib/buildITrie.ts\nfunction buildITrieFromWords(words, info = {}, buildOptions) {\n\tconst endPerf = measurePerf(\"buildITrieFromWords\");\n\ttry {\n\t\tconst builder = new TrieBlobBuilder(info);\n\t\tbuilder.insert(words);\n\t\treturn new ITrieImpl(builder.build(buildOptions));\n\t} finally {\n\t\tendPerf();\n\t}\n}\n//#endregion\n//#region src/lib/utils/isValidChar.ts\nfunction isValidChar(char) {\n\treturn isValidUtf16Character(char);\n}\nfunction assertIsValidChar(char, message) {\n\tif (!isValidChar(char)) assert(false, `${message} \"${char}\" ${formatCharCodes(char)}`);\n}\nfunction formatCharCodes(char) {\n\treturn char.split(\"\").map((c) => \"0x\" + c.charCodeAt(0).toString(16).padStart(4, \"0\").toUpperCase()).join(\":\");\n}\n//#endregion\n//#region src/lib/TrieNode/TrieNode.ts\nconst FLAG_WORD = 1;\n//#endregion\n//#region src/lib/TrieNode/trie-util.ts\nfunction insert(word, root = {}) {\n\tconst text = [...word];\n\tlet node = root;\n\tfor (let i = 0; i < text.length; ++i) {\n\t\tconst head = text[i];\n\t\tconst c = node.c || Object.create(null);\n\t\tnode.c = c;\n\t\tnode = c[head] || {};\n\t\tc[head] = node;\n\t}\n\tnode.f = (node.f || 0) | 1;\n\treturn root;\n}\nfunction isWordTerminationNode(node) {\n\treturn ((node.f || 0) & 1) === 1;\n}\n/**\n* Sorts the nodes in a trie in place.\n*/\nfunction orderTrie(node) {\n\tif (!node.c) return;\n\tconst nodes = Object.entries(node.c).sort(([a], [b]) => a < b ? -1 : 1);\n\tnode.c = Object.fromEntries(nodes);\n\tfor (const n of nodes) orderTrie(n[1]);\n}\n/**\n* Generator an iterator that will walk the Trie parent then children in a depth first fashion that preserves sorted order.\n*/\nfunction walk(node) {\n\treturn walker(node);\n}\nconst iterateTrie = walk;\n/**\n* Generate a Iterator that can walk a Trie and yield the words.\n*/\nfunction iteratorTrieWords(node) {\n\treturn walkerWords(node);\n}\nfunction createTrieRoot(options) {\n\treturn new CTrieRoot(options);\n}\nfunction createTrieRootFromList(words, options) {\n\tconst root = createTrieRoot(options);\n\tfor (const word of words) if (word.length) insert(word, root);\n\treturn root;\n}\nfunction has(node, word) {\n\tlet h = word.slice(0, 1);\n\tlet t = word.slice(1);\n\twhile (node.c && h in node.c) {\n\t\tnode = node.c[h];\n\t\th = t.slice(0, 1);\n\t\tt = t.slice(1);\n\t}\n\treturn !h.length && !!((node.f || 0) & 1);\n}\nfunction findNode(node, word) {\n\tfor (let i = 0; i < word.length; ++i) {\n\t\tconst n = node.c?.[word[i]];\n\t\tif (!n) return void 0;\n\t\tnode = n;\n\t}\n\treturn node;\n}\nfunction countNodes(root) {\n\tconst seen = /* @__PURE__ */ new Set();\n\tfunction walk(n) {\n\t\tif (seen.has(n)) return;\n\t\tseen.add(n);\n\t\tif (n.c) Object.values(n.c).forEach((n) => walk(n));\n\t}\n\twalk(root);\n\treturn seen.size;\n}\nfunction countWords(root) {\n\tconst visited = /* @__PURE__ */ new Map();\n\tfunction walk(n) {\n\t\tif (visited.has(n)) return visited.get(n);\n\t\tlet cnt = n.f ? 1 : 0;\n\t\tvisited.set(n, cnt);\n\t\tif (!n.c) return cnt;\n\t\tfor (const c of Object.values(n.c)) cnt += walk(c);\n\t\tvisited.set(n, cnt);\n\t\treturn cnt;\n\t}\n\treturn walk(root);\n}\nfunction checkCircular(root) {\n\tconst seen = /* @__PURE__ */ new Set();\n\tconst inStack = /* @__PURE__ */ new Set();\n\tfunction walk(n) {\n\t\tif (seen.has(n)) return {\n\t\t\tisCircular: false,\n\t\t\tallSeen: true\n\t\t};\n\t\tif (inStack.has(n)) {\n\t\t\tconst stack = [...inStack, n];\n\t\t\treturn {\n\t\t\t\tisCircular: true,\n\t\t\t\tallSeen: false,\n\t\t\t\tref: {\n\t\t\t\t\tstack,\n\t\t\t\t\tword: trieStackToWord(stack),\n\t\t\t\t\tpos: stack.indexOf(n)\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tinStack.add(n);\n\t\tlet r = {\n\t\t\tisCircular: false,\n\t\t\tallSeen: true\n\t\t};\n\t\tif (n.c) r = Object.values(n.c).reduce((acc, n) => {\n\t\t\tif (acc.isCircular) return acc;\n\t\t\tconst r = walk(n);\n\t\t\tr.allSeen = r.allSeen && acc.allSeen;\n\t\t\treturn r;\n\t\t}, r);\n\t\tif (r.allSeen) seen.add(n);\n\t\tinStack.delete(n);\n\t\treturn r;\n\t}\n\treturn walk(root);\n}\nfunction reverseMapTrieNode(node) {\n\treturn node.c && new Map(Object.entries(node.c).map(([c, n]) => [n, c]));\n}\nfunction trieStackToWord(stack) {\n\tlet word = \"\";\n\tlet lastMap = reverseMapTrieNode(stack[0]);\n\tfor (let i = 1; i < stack.length; ++i) {\n\t\tconst n = stack[i];\n\t\tconst char = lastMap?.get(n);\n\t\tif (char) word += char;\n\t\tlastMap = reverseMapTrieNode(n);\n\t}\n\treturn word;\n}\nfunction isCircular(root) {\n\treturn checkCircular(root).isCircular;\n}\nfunction trieNodeToRoot(node, options) {\n\treturn CTrieRoot.createFrom(node, options);\n}\nvar CTrieRoot = class CTrieRoot {\n\tc;\n\tcompoundCharacter;\n\tstripCaseAndAccentsPrefix;\n\tforbiddenWordPrefix;\n\tsuggestionPrefix;\n\tconstructor(options) {\n\t\tconst newOptions = mergeOptionalWithDefaults(options);\n\t\tthis.c = Object.create(null);\n\t\tthis.compoundCharacter = newOptions.compoundCharacter;\n\t\tthis.stripCaseAndAccentsPrefix = newOptions.stripCaseAndAccentsPrefix;\n\t\tthis.forbiddenWordPrefix = newOptions.forbiddenWordPrefix;\n\t\tthis.suggestionPrefix = newOptions.suggestionPrefix;\n\t}\n\tget hasForbiddenWords() {\n\t\treturn !!this.c[this.forbiddenWordPrefix];\n\t}\n\tget hasCompoundWords() {\n\t\treturn !!this.c[this.compoundCharacter];\n\t}\n\tget hasNonStrictWords() {\n\t\treturn !!this.c[this.stripCaseAndAccentsPrefix];\n\t}\n\tget hasPreferredSuggestions() {\n\t\treturn !!this.c[this.suggestionPrefix];\n\t}\n\tstatic createFrom(trie, options) {\n\t\tconst root = new CTrieRoot(options);\n\t\troot.c = trie.c || Object.create(null);\n\t\treturn root;\n\t}\n};\n//#endregion\n//#region src/lib/consolidate.ts\n/**\n* Consolidate to DAWG\n* @param root the root of the Trie tree\n*/\nfunction consolidate(root) {\n\tlet count = 0;\n\tconst signatures = /* @__PURE__ */ new Map();\n\tconst cached = /* @__PURE__ */ new Map();\n\tconst knownMap = /* @__PURE__ */ new Map();\n\tif (isCircular(root)) throw new Error(\"Trie is circular.\");\n\tfunction signature(n) {\n\t\treturn (n.f ? \"*\" : \"\") + (n.c ? JSON.stringify(Object.entries(n.c).map(([k, n]) => [k, cached.get(n)])) : \"\");\n\t}\n\tfunction findEow(n) {\n\t\tif (n.f && !n.c) return n;\n\t\tlet r;\n\t\t// istanbul ignore else\n\t\tif (n.c) for (const c of Object.values(n.c)) {\n\t\t\tr = findEow(c);\n\t\t\t// istanbul ignore else\n\t\t\tif (r) break;\n\t\t}\n\t\treturn r;\n\t}\n\tfunction compareMaps(a, b) {\n\t\tfor (const e of a) if (b[e[0]] !== e[1]) return false;\n\t\treturn a.length === b.size;\n\t}\n\tfunction deepCopy(n) {\n\t\tconst k = knownMap.get(n);\n\t\tif (k) return k;\n\t\tconst orig = n;\n\t\tif (n.c) {\n\t\t\tconst children = Object.entries(n.c).map((c) => [c[0], deepCopy(c[1])]);\n\t\t\tif (!compareMaps(children, n.c)) n = {\n\t\t\t\tf: n.f,\n\t\t\t\tc: Object.fromEntries(children)\n\t\t\t};\n\t\t}\n\t\tconst sig = signature(n);\n\t\tconst ref = signatures.get(sig);\n\t\tif (ref) {\n\t\t\tknownMap.set(orig, ref);\n\t\t\treturn ref;\n\t\t}\n\t\tObject.freeze(n);\n\t\tsignatures.set(sig, n);\n\t\tcached.set(n, count++);\n\t\tknownMap.set(orig, n);\n\t\treturn n;\n\t}\n\tfunction process(n) {\n\t\tif (cached.has(n)) return n;\n\t\tif (Object.isFrozen(n)) return knownMap.get(n) || deepCopy(n);\n\t\tif (n.c) {\n\t\t\tconst children = Object.entries(n.c).sort((a, b) => a[0] < b[0] ? -1 : 1).map(([k, n]) => [k, process(n)]);\n\t\t\tn.c = Object.fromEntries(children);\n\t\t}\n\t\tconst sig = signature(n);\n\t\tconst ref = signatures.get(sig);\n\t\tif (ref) return ref;\n\t\tsignatures.set(sig, n);\n\t\tcached.set(n, count++);\n\t\treturn n;\n\t}\n\tconst eow = findEow(root) || {\n\t\tf: 1,\n\t\tc: void 0\n\t};\n\tsignatures.set(signature(eow), eow);\n\tcached.set(eow, count++);\n\treturn trieNodeToRoot(process(root), root);\n}\n//#endregion\n//#region src/lib/TrieBlob/trieDataEncoder.ts\nfunction encodeITrieToBTrie(trie, buildOptions) {\n\treturn encodeTrieDataToBTrie(trie.data, buildOptions);\n}\nfunction encodeTrieDataToBTrie(data, buildOptions) {\n\tif (!(buildOptions?.optimize || buildOptions?.useStringTable) && data.encodeToBTrie) return data.encodeToBTrie();\n\treturn TrieBlobBuilder.fromITrieRoot(data.getRoot(), buildOptions).encodeToBTrie();\n}\nfunction decodeBTrie(data) {\n\treturn TrieBlob.decodeBin(data);\n}\n//#endregion\n//#region src/lib/TrieNode/find.ts\nconst _defaultFindOptions = {\n\tmatchCase: false,\n\tcompoundMode: \"compound\",\n\tforbidPrefix: \"!\",\n\tcompoundFix: \"+\",\n\tcaseInsensitivePrefix: \"~\",\n\tlegacyMinCompoundLength: 3,\n\tcompoundSeparator: void 0\n};\nconst knownCompoundModes = new Map([\n\t\"none\",\n\t\"compound\",\n\t\"legacy\"\n].map((a) => [a, a]));\n/**\n*\n* @param root Trie root node. root.c contains the compound root and forbidden root.\n* @param word A pre normalized word use `normalizeWord` or `normalizeWordToLowercase`\n* @param options\n*/\nfunction findWord(root, word, options) {\n\treturn _findWord(root, word, createFindOptions(options));\n}\n/**\n*\n* @param root Trie root node. root.c contains the compound root and forbidden root.\n* @param word A pre normalized word use `normalizeWord` or `normalizeWordToLowercase`\n* @param options\n*/\nfunction findWordNode(root, word, options) {\n\treturn _findWordNode(root, word, createFindOptions(options));\n}\n/**\n*\n* @param root Trie root node. root.c contains the compound root and forbidden root.\n* @param word A pre normalized word use `normalizeWord` or `normalizeWordToLowercase`\n* @param options\n*/\nfunction _findWord(root, word, options) {\n\tconst { node: _, ...result } = _findWordNode(root, word, options);\n\treturn result;\n}\n/**\n*\n* @param root Trie root node. root.c contains the compound root and forbidden root.\n* @param word A pre normalized word use `normalizeWord` or `normalizeWordToLowercase`\n* @param options\n*/\nfunction _findWordNode(root, word, options) {\n\tconst compoundMode = knownCompoundModes.get(options.compoundMode) || _defaultFindOptions.compoundMode;\n\tconst compoundPrefix = options.compoundMode === \"compound\" ? root.compoundCharacter ?? options.compoundFix : \"\";\n\tconst ignoreCasePrefix = options.matchCase ? \"\" : root.stripCaseAndAccentsPrefix ?? options.caseInsensitivePrefix;\n\tfunction __findCompound() {\n\t\tconst f = findCompoundWord(root, word, compoundPrefix, ignoreCasePrefix, options.compoundSeparator || \"\");\n\t\tconst result = { ...f };\n\t\tif (f.found !== false && f.compoundUsed) result.forbidden = isForbiddenWord(!f.caseMatched ? walk$1(root, options.caseInsensitivePrefix) : root, word, options.forbidPrefix);\n\t\treturn result;\n\t}\n\tfunction __findExact() {\n\t\tconst n = walk$1(root, word);\n\t\treturn {\n\t\t\tfound: isEndOfWordNode(n) && word,\n\t\t\tcompoundUsed: false,\n\t\t\tforbidden: isForbiddenWord(root, word, options.forbidPrefix),\n\t\t\tnode: n,\n\t\t\tcaseMatched: true\n\t\t};\n\t}\n\tswitch (compoundMode) {\n\t\tcase \"none\": return options.matchCase ? __findExact() : __findCompound();\n\t\tcase \"compound\": return __findCompound();\n\t\tcase \"legacy\": return findLegacyCompound(root, word, options);\n\t}\n}\nfunction findLegacyCompound(root, word, options) {\n\tconst roots = [root];\n\tif (!options.matchCase) roots.push(walk$1(root, options.caseInsensitivePrefix));\n\treturn findLegacyCompoundNode(roots, word, options.legacyMinCompoundLength, options.compoundSeparator);\n}\nfunction findCompoundNode(root, word, compoundCharacter, ignoreCasePrefix, compoundSeparator) {\n\tconst stack = [{\n\t\tn: root,\n\t\tcompoundPrefix: ignoreCasePrefix,\n\t\tcr: void 0,\n\t\tcaseMatched: true,\n\t\ts: \"\"\n\t}];\n\tconst compoundPrefix = compoundCharacter || ignoreCasePrefix;\n\tconst possibleCompoundPrefix = ignoreCasePrefix && compoundCharacter ? ignoreCasePrefix + compoundCharacter : \"\";\n\tconst nw = word.normalize();\n\tconst w = [...nw];\n\tfunction determineRoot(s) {\n\t\tconst prefix = s.compoundPrefix;\n\t\tlet r = root;\n\t\tlet i;\n\t\tfor (i = 0; i < prefix.length && r; ++i) r = r.c?.[prefix[i]];\n\t\tconst caseMatched = s.caseMatched && prefix[0] !== ignoreCasePrefix;\n\t\treturn {\n\t\t\tn: s.n,\n\t\t\tcompoundPrefix: prefix === compoundPrefix ? possibleCompoundPrefix : \"\",\n\t\t\tcr: r,\n\t\t\tcaseMatched,\n\t\t\ts: prefix.endsWith(compoundCharacter) ? compoundSeparator : \"\"\n\t\t};\n\t}\n\tlet compoundUsed = false;\n\tlet caseMatched = true;\n\tlet i = 0;\n\tlet node;\n\twhile (true) {\n\t\tconst s = stack[i];\n\t\tconst h = w[i++];\n\t\tconst c = (s.cr || s.n)?.c?.[h];\n\t\tif (c && i < word.length) {\n\t\t\tcaseMatched = s.caseMatched;\n\t\t\tstack[i] = {\n\t\t\t\tn: c,\n\t\t\t\tcompoundPrefix,\n\t\t\t\tcr: void 0,\n\t\t\t\tcaseMatched,\n\t\t\t\ts: \"\"\n\t\t\t};\n\t\t} else if (!c || !c.f) {\n\t\t\tnode = node || c;\n\t\t\twhile (--i > 0) {\n\t\t\t\tconst s = stack[i];\n\t\t\t\tif (!s.compoundPrefix || !s.n?.c) continue;\n\t\t\t\tif (compoundCharacter in s.n.c) break;\n\t\t\t}\n\t\t\tif (i >= 0 && stack[i].compoundPrefix) {\n\t\t\t\tcompoundUsed = i > 0;\n\t\t\t\tconst r = determineRoot(stack[i]);\n\t\t\t\tstack[i] = r;\n\t\t\t\tif (!r.cr) break;\n\t\t\t\tif (!i && !r.caseMatched && nw !== nw.toLowerCase()) break;\n\t\t\t} else break;\n\t\t} else {\n\t\t\tnode = c;\n\t\t\tcaseMatched = s.caseMatched;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfunction joinCompoundWord() {\n\t\treturn stack.map((s) => s.s).map((c, i) => c + w[i]).join(\"\");\n\t}\n\tconst f = i && i === word.length && word || false;\n\treturn {\n\t\tfound: f && (compoundSeparator ? joinCompoundWord() : f),\n\t\tcompoundUsed,\n\t\tnode,\n\t\tforbidden: void 0,\n\t\tcaseMatched\n\t};\n}\nfunction findCompoundWord(root, word, compoundCharacter, ignoreCasePrefix, compoundSeparator) {\n\tconst { found, compoundUsed, node, caseMatched } = findCompoundNode(root, word, compoundCharacter, ignoreCasePrefix, compoundSeparator);\n\tif (!node || !node.f) return {\n\t\tfound: false,\n\t\tcompoundUsed,\n\t\tnode,\n\t\tforbidden: void 0,\n\t\tcaseMatched\n\t};\n\treturn {\n\t\tfound,\n\t\tcompoundUsed,\n\t\tnode,\n\t\tforbidden: void 0,\n\t\tcaseMatched\n\t};\n}\nfunction findWordExact(root, word) {\n\treturn isEndOfWordNode(walk$1(root, word));\n}\nfunction isEndOfWordNode(n) {\n\treturn n?.f === 1;\n}\nfunction walk$1(root, word) {\n\tconst w = [...word];\n\tlet n = root;\n\tlet i = 0;\n\twhile (n && i < w.length) {\n\t\tconst h = w[i++];\n\t\tn = n.c?.[h];\n\t}\n\treturn n;\n}\nfunction findLegacyCompoundNode(roots, word, minCompoundLength, compoundSeparator) {\n\tconst root = roots[0];\n\tconst numRoots = roots.length;\n\tconst stack = [{\n\t\tn: root,\n\t\tusedRoots: 1,\n\t\tsubLength: 0,\n\t\tisCompound: false,\n\t\tcr: void 0,\n\t\tcaseMatched: true\n\t}];\n\tconst sep = compoundSeparator ?? \"+\";\n\tconst w = word;\n\tconst wLen = w.length;\n\tlet compoundUsed = false;\n\tlet caseMatched = true;\n\tlet i = 0;\n\tlet node;\n\twhile (true) {\n\t\tconst s = stack[i];\n\t\tconst h = w[i++];\n\t\tconst c = (s.cr || s.n)?.c?.[h];\n\t\tif (c && i < wLen) stack[i] = {\n\t\t\tn: c,\n\t\t\tusedRoots: 0,\n\t\t\tsubLength: s.subLength + 1,\n\t\t\tisCompound: s.isCompound,\n\t\t\tcr: void 0,\n\t\t\tcaseMatched: s.caseMatched\n\t\t};\n\t\telse if (!c || !c.f || c.f && s.subLength < minCompoundLength - 1) {\n\t\t\twhile (--i > 0) {\n\t\t\t\tconst s = stack[i];\n\t\t\t\tif (s.usedRoots < numRoots && s.n?.f && (s.subLength >= minCompoundLength || !s.subLength) && wLen - i >= minCompoundLength) break;\n\t\t\t}\n\t\t\tif (i > 0 || stack[i].usedRoots < numRoots) {\n\t\t\t\tcompoundUsed = i > 0;\n\t\t\t\tconst s = stack[i];\n\t\t\t\ts.cr = roots[s.usedRoots++];\n\t\t\t\ts.subLength = 0;\n\t\t\t\ts.isCompound = compoundUsed;\n\t\t\t\ts.caseMatched = s.caseMatched && s.usedRoots <= 1;\n\t\t\t} else break;\n\t\t} else {\n\t\t\tnode = c;\n\t\t\tcaseMatched = s.caseMatched;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfunction extractWord() {\n\t\tif (!word || i < word.length) return false;\n\t\tconst letters = [];\n\t\tlet subLen = 0;\n\t\tfor (let j = 0; j < i; ++j) {\n\t\t\tconst { subLength } = stack[j];\n\t\t\tif (subLength < subLen) letters.push(sep);\n\t\t\tletters.push(word[j]);\n\t\t\tsubLen = subLength;\n\t\t}\n\t\treturn letters.join(\"\");\n\t}\n\treturn {\n\t\tfound: extractWord(),\n\t\tcompoundUsed,\n\t\tnode,\n\t\tforbidden: void 0,\n\t\tcaseMatched\n\t};\n}\nfunction isForbiddenWord(root, word, forbiddenPrefix) {\n\treturn findWordExact(root?.c?.[forbiddenPrefix], word);\n}\nconst createFindOptions = memorizeLastCall(_createFindOptions);\nfunction _createFindOptions(options) {\n\treturn mergeDefaults(options, _defaultFindOptions);\n}\n//#endregion\n//#region src/lib/TrieNode/TrieNodeTrie.ts\nvar TrieNodeTrie = class TrieNodeTrie {\n\t_iTrieRoot;\n\tinfo;\n\t_size;\n\thasForbiddenWords;\n\thasCompoundWords;\n\thasNonStrictWords;\n\thasPreferredSuggestions;\n\troot;\n\tconstructor(root) {\n\t\tthis.root = root;\n\t\tthis.info = mergeOptionalWithDefaults(root);\n\t\tthis.hasForbiddenWords = root.hasForbiddenWords;\n\t\tthis.hasCompoundWords = root.hasCompoundWords;\n\t\tthis.hasNonStrictWords = root.hasNonStrictWords;\n\t\tthis.hasPreferredSuggestions = root.hasPreferredSuggestions;\n\t}\n\twordToCharacters = (word) => [...word];\n\tget iTrieRoot() {\n\t\treturn this._iTrieRoot || (this._iTrieRoot = trieRootToITrieRoot(this.root));\n\t}\n\tgetRoot() {\n\t\treturn this.iTrieRoot;\n\t}\n\tgetNode(prefix) {\n\t\treturn findNode$1(this.getRoot(), prefix);\n\t}\n\t*words(prefix) {\n\t\tif (!prefix) {\n\t\t\tyield* iteratorTrieWords$1(this.getRoot());\n\t\t\treturn;\n\t\t}\n\t\tconst node = this.getNode(prefix);\n\t\tif (!node) return;\n\t\tif (node.eow) yield prefix;\n\t\tfor (const suffix of iteratorTrieWords$1(node)) yield prefix + suffix;\n\t}\n\thas(word) {\n\t\treturn findWordExact(this.root, word);\n\t}\n\tisForbiddenWord(word) {\n\t\treturn findWordExact(this.root.c[this.root.forbiddenWordPrefix], word);\n\t}\n\tget size() {\n\t\treturn this._size ??= countNodes(this.root);\n\t}\n\tstatic createFromWords(words, options) {\n\t\treturn new TrieNodeTrie(createTrieRootFromList(words, options));\n\t}\n\tstatic createFromWordsAndConsolidate(words, options) {\n\t\treturn new TrieNodeTrie(consolidate(createTrieRootFromList(words, options)));\n\t}\n};\n//#endregion\n//#region ../../node_modules/.pnpm/gensequence@8.0.8/node_modules/gensequence/dist/util/util.js\nfunction* toIterableIterator$2(i) {\n\tyield* i;\n}\n//#endregion\n//#region ../../node_modules/.pnpm/gensequence@8.0.8/node_modules/gensequence/dist/operators/operatorsBase.js\n/**\n* Operators used by Sequence\n*/\nfunction* filter$1(i, fnFilter) {\n\tfor (const v of i) if (fnFilter(v)) yield v;\n}\nfunction* skip$1(i, n) {\n\tlet a = 0;\n\tfor (const t of i) {\n\t\tif (a >= n) yield t;\n\t\ta += 1;\n\t}\n}\nfunction* take$1(i, n) {\n\tlet a = 0;\n\tif (n) for (const t of i) {\n\t\tif (a >= n) break;\n\t\tyield t;\n\t\ta += 1;\n\t}\n}\n/**\n* Concat two iterables together\n*/\nfunction* concat$1(i, j) {\n\tyield* i;\n\tyield* j;\n}\nfunction* concatMap$1(i, fn) {\n\tfor (const t of i) yield* fn(t);\n}\n/**\n* Combine two iterables together using fnMap function.\n*/\nfunction* combine$1(i, j, fnMap) {\n\tconst jit = j[Symbol.iterator]();\n\tfor (const r of i) {\n\t\tconst s = jit.next().value;\n\t\tyield fnMap(r, s);\n\t}\n}\n/**\n* apply a mapping function to an Iterable.\n*/\nfunction map$1(i, fnMap) {\n\tfunction* fn(i, fnMap) {\n\t\tfor (const v of i) yield fnMap(v);\n\t}\n\treturn fn(i, fnMap);\n}\nfunction* scan$1(i, fnReduce, initValue) {\n\tlet index = 0;\n\tif (initValue === void 0) {\n\t\tindex = 1;\n\t\tconst iter = i[Symbol.iterator]();\n\t\tlet r = iter.next();\n\t\tif (!r.done) yield r.value;\n\t\tinitValue = r.value;\n\t\ti = makeIterable(iter);\n\t}\n\tlet prevValue = initValue;\n\tfor (const t of i) {\n\t\tconst nextValue = fnReduce(prevValue, t, index);\n\t\tyield nextValue;\n\t\tprevValue = nextValue;\n\t\tindex += 1;\n\t}\n}\nfunction all$1(i, fn) {\n\tfor (const t of i) if (!fn(t)) return false;\n\treturn true;\n}\nfunction any$1(i, fn) {\n\tfor (const t of i) if (fn(t)) return true;\n\treturn false;\n}\nfunction count$1(i) {\n\treturn reduce$1(i, (p) => p + 1, 0);\n}\nfunction first$1(i, fn, defaultValue) {\n\tfn = fn || (() => true);\n\tfor (const t of i) if (fn(t)) return t;\n\treturn defaultValue;\n}\nfunction forEach$1(i, fn) {\n\tlet index = 0;\n\tfor (const t of i) {\n\t\tfn(t, index);\n\t\tindex += 1;\n\t}\n}\nfunction max$1(i, selector = (t) => t) {\n\treturn reduce$1(i, (p, c) => selector(c) > selector(p) ? c : p, void 0);\n}\nfunction min$1(i, selector = (t) => t) {\n\treturn reduce$1(i, (p, c) => selector(c) < selector(p) ? c : p, void 0);\n}\nfunction reduce$1(i, fnReduce, initialValue) {\n\tconst iter = makeIterable(i[Symbol.iterator]());\n\tlet index = 0;\n\tif (initialValue === void 0) {\n\t\tindex = 1;\n\t\tinitialValue = iter.next().value;\n\t}\n\tlet prevValue = initialValue;\n\tfor (const t of iter) {\n\t\tprevValue = fnReduce(prevValue, t, index);\n\t\tindex += 1;\n\t}\n\treturn prevValue;\n}\nasync function reduceAsync$1(i, fnReduce, initialValue) {\n\tconst iter = makeIterable(i[Symbol.iterator]());\n\tlet index = 0;\n\tif (initialValue === void 0) {\n\t\tindex = 1;\n\t\tinitialValue = iter.next().value;\n\t}\n\tlet previousValue = await initialValue;\n\tfor (const p of iter) {\n\t\tconst t = await p;\n\t\tpreviousValue = await fnReduce(previousValue, t, index);\n\t\tindex += 1;\n\t}\n\treturn previousValue;\n}\n/**\n* Convert an Iterator into an IterableIterator\n*/\nfunction makeIterable(i) {\n\tfunction* fromIterator(i) {\n\t\tfor (let r = i.next(); !r.done; r = i.next()) yield r.value;\n\t}\n\tfunction* fromIterable(i) {\n\t\tyield* i;\n\t}\n\treturn isIterable(i) ? isIterableIterator(i) ? i : fromIterable(i) : fromIterator(i);\n}\nfunction isIterable(i) {\n\treturn !!i[Symbol.iterator];\n}\nfunction isIterableIterator(i) {\n\treturn typeof i.next == \"function\";\n}\n//#endregion\n//#region ../../node_modules/.pnpm/gensequence@8.0.8/node_modules/gensequence/dist/operators/operators.js\n/**\n* Operators used by Sequence\n*/\nfunction filter(fnFilter) {\n\treturn (i) => filter$1(i, fnFilter);\n}\nfunction skip(n) {\n\treturn (i) => skip$1(i, n);\n}\nfunction take(n) {\n\treturn (i) => take$1(i, n);\n}\n/**\n* Concat two iterables together\n*/\nfunction concat(j) {\n\treturn (i) => concat$1(i, j);\n}\nfunction concatMap(fn) {\n\treturn (i) => concatMap$1(i, fn);\n}\n/**\n* Combine two iterables together using fnMap function.\n*/\nfunction combine(fnMap, j) {\n\treturn (i) => combine$1(i, j, fnMap);\n}\n/**\n* apply a mapping function to an Iterable.\n*/\nfunction map(fnMap) {\n\treturn (i) => map$1(i, fnMap);\n}\nfunction scan(fnReduce, initValue) {\n\treturn (i) => scan$1(i, fnReduce, initValue);\n}\nfunction all(fn) {\n\treturn (i) => all$1(i, fn);\n}\nfunction any(fn) {\n\treturn (i) => any$1(i, fn);\n}\nfunction count() {\n\treturn (i) => count$1(i);\n}\nfunction first(fn, defaultValue) {\n\treturn (i) => first$1(i, fn, defaultValue);\n}\nfunction forEach(fn) {\n\treturn (i) => forEach$1(i, fn);\n}\nfunction max(selector) {\n\treturn (i) => max$1(i, selector);\n}\nfunction min(selector) {\n\treturn (i) => min$1(i, selector);\n}\nfunction reduce(fnReduce, initialValue) {\n\treturn (i) => reduce$1(i, fnReduce, initialValue);\n}\nfunction reduceAsync(fnReduceAsync, initialValue) {\n\treturn (i) => reduceAsync$1(i, fnReduceAsync, initialValue);\n}\nfunction pipe(...fns) {\n\treturn (i) => {\n\t\tfor (const fn of fns) i = fn ? fn(i) : i;\n\t\treturn i;\n\t};\n}\n//#endregion\n//#region ../../node_modules/.pnpm/gensequence@8.0.8/node_modules/gensequence/dist/ImplSequence.js\nvar ImplSequence = class ImplSequence {\n\ti;\n\t_iterator;\n\tconstructor(i) {\n\t\tthis.i = i;\n\t}\n\tget iter() {\n\t\treturn typeof this.i === \"function\" ? this.i() : this.i;\n\t}\n\tget iterator() {\n\t\tif (!this._iterator) this._iterator = this.iter[Symbol.iterator]();\n\t\treturn this._iterator;\n\t}\n\tinject(fn) {\n\t\tconst iter = this.i;\n\t\treturn () => fn(typeof iter === \"function\" ? iter() : iter);\n\t}\n\tchain(fn) {\n\t\treturn new ImplSequence(this.inject(fn));\n\t}\n\t[Symbol.iterator]() {\n\t\treturn this.iter[Symbol.iterator]();\n\t}\n\tnext() {\n\t\treturn this.iterator.next();\n\t}\n\tfilter(fnFilter) {\n\t\treturn this.chain(filter(fnFilter));\n\t}\n\tskip(n) {\n\t\treturn this.chain(skip(n));\n\t}\n\ttake(n) {\n\t\treturn this.chain(take(n));\n\t}\n\tconcat(j) {\n\t\treturn this.chain(concat(j));\n\t}\n\tconcatMap(fn) {\n\t\treturn this.chain(concatMap(fn));\n\t}\n\tcombine(fn, j) {\n\t\treturn this.chain(combine(fn, j));\n\t}\n\tmap(fn) {\n\t\treturn this.chain(map(fn));\n\t}\n\tscan(fnReduce, initValue) {\n\t\treturn this.chain(scan(fnReduce, initValue));\n\t}\n\tpipe(...fns) {\n\t\tif (!fns.length) return this;\n\t\treturn this.chain(pipe.apply(null, fns));\n\t}\n\tall(fnFilter) {\n\t\treturn all(fnFilter)(this.iter);\n\t}\n\tany(fnFilter) {\n\t\treturn any(fnFilter)(this.iter);\n\t}\n\tcount() {\n\t\treturn count()(this.iter);\n\t}\n\tfirst(fnFilter, defaultValue) {\n\t\treturn first(fnFilter, defaultValue)(this.iter);\n\t}\n\tforEach(fn) {\n\t\treturn forEach(fn)(this.iter);\n\t}\n\tmax(fnSelector) {\n\t\treturn max(fnSelector)(this.iter);\n\t}\n\tmin(fnSelector) {\n\t\treturn min(fnSelector)(this.iter);\n\t}\n\treduce(fnReduce, initValue) {\n\t\treturn reduce(fnReduce, initValue)(this.iter);\n\t}\n\treduceAsync(fnReduceAsync, initialValue) {\n\t\treturn reduceAsync(fnReduceAsync, initialValue)(this.iter);\n\t}\n\treduceToSequence(fnReduce, initialValue) {\n\t\treturn this.chain(reduce(fnReduce, initialValue));\n\t}\n\ttoArray() {\n\t\treturn [...this.iter];\n\t}\n\ttoIterable() {\n\t\treturn toIterableIterator$2(this.iter);\n\t}\n};\n//#endregion\n//#region ../../node_modules/.pnpm/gensequence@8.0.8/node_modules/gensequence/dist/GenSequence.js\nfunction genSequence(i) {\n\treturn new ImplSequence(i);\n}\n//#endregion\n//#region src/lib/convertToTrieRefNodes.ts\nconst MinReferenceCount = 3;\n/**\n* An iterator that will emit TrieRefNodes mostly in descending frequency\n* @param root Root of the Trie -- a DAWG is preferred to keep the number of duplicates down.\n*/\nfunction convertToTrieRefNodes(root) {\n\tconst eow = {\n\t\tf: 1,\n\t\tc: void 0\n\t};\n\tconst tallies = new Map([[eow, 0]]);\n\tlet count = 0;\n\tconst cached = /* @__PURE__ */ new Map();\n\tconst rollupTally = /* @__PURE__ */ new Map();\n\tfunction tally(n) {\n\t\tif (n.f && !n.c) {\n\t\t\ttallies.set(eow, (tallies.get(eow) || 0) + 1);\n\t\t\treturn;\n\t\t}\n\t\tconst t = tallies.get(n);\n\t\tif (t) {\n\t\t\ttallies.set(n, t + 1);\n\t\t\treturn;\n\t\t}\n\t\ttallies.set(n, 1);\n\t\tfor (const c of n.c && Object.values(n.c) || []) tally(c);\n\t}\n\tfunction rollup(n) {\n\t\tconst c = rollupTally.get(n);\n\t\tif (c) return c;\n\t\tif (!n.c) {\n\t\t\tconst sum = tallies.get(eow) || 0;\n\t\t\trollupTally.set(n, sum);\n\t\t\treturn sum;\n\t\t}\n\t\tconst sum = Object.values(n.c).reduce((acc, v) => acc + rollup(v), tallies.get(n) || 0);\n\t\trollupTally.set(n, sum);\n\t\treturn sum;\n\t}\n\tfunction* walkByTallies(tallies) {\n\t\tconst nodes = genSequence(tallies).filter((a) => a[1] >= MinReferenceCount);\n\t\tfor (const [n] of [...nodes].sort((a, b) => b[1] - a[1])) yield* walkByRollup(n);\n\t}\n\tfunction* walkByRollup(n) {\n\t\tif (cached.has(n)) return;\n\t\tif (n.f && !n.c) {\n\t\t\tcached.set(n, cached.get(eow));\n\t\t\treturn;\n\t\t}\n\t\tconst children = (n.c && Object.values(n.c) || []).sort((a, b) => (rollupTally.get(b) || 0) - (rollupTally.get(a) || 0));\n\t\tfor (const c of children) yield* walkByRollup(c);\n\t\tcached.set(n, count++);\n\t\tyield convert(n);\n\t}\n\tfunction convert(n) {\n\t\tconst { f, c } = n;\n\t\tconst r = c ? Object.entries(c).sort((a, b) => a[0] < b[0] ? -1 : 1).map(([s, n]) => [s, cached.get(n)]) : void 0;\n\t\treturn r ? f ? {\n\t\t\tf,\n\t\t\tr\n\t\t} : { r } : { f };\n\t}\n\tfunction* walk(root) {\n\t\tcached.set(eow, count++);\n\t\tyield convert(eow);\n\t\tyield* walkByTallies(tallies);\n\t\tyield* walkByRollup(root);\n\t}\n\ttally(root);\n\trollup(root);\n\treturn walk(root);\n}\n//#endregion\n//#region src/lib/io/importExportV1.ts\nconst EOW$2 = \"*\";\nfunction toReferences(node) {\n\treturn genSequence(convertToTrieRefNodes(node));\n}\nconst regExpEscapeChars = /([[\\]\\\\,:{}*])/g;\nconst regExTrailingComma = /,(\\}|\\n)/g;\nfunction escapeChar(char) {\n\treturn char.replaceAll(regExpEscapeChars, \"\\\\$1\");\n}\nfunction trieToExportString(node, base) {\n\tfunction* walk(node) {\n\t\tif (node.f) yield EOW$2;\n\t\tif (node.r) {\n\t\t\tconst refs = [...node.r].sort((a, b) => a[0] < b[0] ? -1 : 1);\n\t\t\tfor (const n of refs) {\n\t\t\t\tconst [c, r] = n;\n\t\t\t\tconst ref = r ? r.toString(base) : \"\";\n\t\t\t\tyield escapeChar(c) + ref + \",\";\n\t\t\t}\n\t\t}\n\t}\n\treturn genSequence(walk(node));\n}\nfunction generateHeader$3(base, comment) {\n\treturn genSequence([\n\t\t...[\n\t\t\t\"#!/usr/bin/env cspell-trie reader\",\n\t\t\t\"TrieXv1\",\n\t\t\t\"base=\" + base\n\t\t],\n\t\t...comment ? comment.split(\"\\n\").map((a) => \"# \" + a) : [],\n\t\t...[\"# Data:\"]\n\t]).map((a) => a + \"\\n\");\n}\n/**\n* Serialize a TrieNode.\n* Note: This is destructive.  The node will no longer be usable.\n* Even though it is possible to preserve the trie, dealing with very large tries can consume a lot of memory.\n* Considering this is the last step before exporting, it was decided to let this be destructive.\n*/\nfunction serializeTrie$4(root, options = 16) {\n\toptions = typeof options === \"number\" ? { base: options } : options;\n\tconst { base = 16, comment = \"\" } = options;\n\tconst radix = base > 36 ? 36 : base < 10 ? 10 : base;\n\tconst rows = toReferences(root).map((node) => {\n\t\treturn [...trieToExportString(node, radix), \"\\n\"].join(\"\").replaceAll(regExTrailingComma, \"$1\");\n\t});\n\treturn generateHeader$3(radix, comment).concat(rows);\n}\nfunction* toIterableIterator$1(iter) {\n\tyield* iter;\n}\nfunction importTrie$5(linesX) {\n\tlet radix = 16;\n\tconst comment = /^\\s*#/;\n\tconst iter = toIterableIterator$1(linesX);\n\tfunction parseHeaderRows(headerRows) {\n\t\tconst header = headerRows.slice(0, 2).join(\"\\n\");\n\t\tconst headerReg = /^TrieXv1\\nbase=(\\d+)$/;\n\t\t/* istanbul ignore if */\n\t\tif (!headerReg.test(header)) throw new Error(\"Unknown file format\");\n\t\tradix = Number.parseInt(header.replace(headerReg, \"$1\"), 10);\n\t}\n\tfunction readHeader(iter) {\n\t\tconst headerRows = [];\n\t\twhile (true) {\n\t\t\tconst next = iter.next();\n\t\t\tif (next.done) break;\n\t\t\tconst line = next.value.trim();\n\t\t\tif (!line || comment.test(line)) continue;\n\t\t\tif (line === \"*\") break;\n\t\t\theaderRows.push(line);\n\t\t}\n\t\tparseHeaderRows(headerRows);\n\t}\n\tconst regNotEscapedCommas = /(^|[^\\\\]),/g;\n\tconst regUnescapeCommas = /__COMMA__/g;\n\tconst regUnescape = /[\\\\](.)/g;\n\tconst flagsWord = { f: 1 };\n\tfunction splitLine(line) {\n\t\treturn line.replaceAll(regNotEscapedCommas, \"$1__COMMA__\").split(regUnescapeCommas).map((a) => a.replaceAll(regUnescape, \"$1\"));\n\t}\n\tfunction decodeLine(line, nodes) {\n\t\tconst isWord = line[0] === EOW$2;\n\t\tline = isWord ? line.slice(1) : line;\n\t\tconst flags = isWord ? flagsWord : {};\n\t\tconst children = splitLine(line).filter((a) => !!a).map((a) => [a[0], Number.parseInt(a.slice(1) || \"0\", radix)]).map(([k, i]) => [k, nodes[i]]);\n\t\treturn {\n\t\t\t...children.length ? { c: Object.fromEntries(children) } : {},\n\t\t\t...flags\n\t\t};\n\t}\n\treadHeader(iter);\n\treturn trieNodeToRoot(genSequence([\"*\"]).concat(iter).map((a) => a.replace(/\\r?\\n/, \"\")).filter((a) => !!a).reduce((acc, line) => {\n\t\tconst { lines, nodes } = acc;\n\t\tconst root = decodeLine(line, nodes);\n\t\tnodes[lines] = root;\n\t\treturn {\n\t\t\tlines: lines + 1,\n\t\t\troot,\n\t\t\tnodes\n\t\t};\n\t}, {\n\t\tlines: 0,\n\t\tnodes: [],\n\t\troot: {}\n\t}).root, {});\n}\n//#endregion\n//#region src/lib/io/importExportV2.ts\nconst EOW$1 = \"*\";\nconst DATA$3 = \"__DATA__\";\nfunction leaves(node) {\n\tfunction toRefNode(node, k) {\n\t\tconst refNode = node;\n\t\trefNode.s = refNode.s ?? k;\n\t\treturn refNode;\n\t}\n\tfunction* walk(node, k, p) {\n\t\tconst ref = toRefNode(node, k);\n\t\tif (!ref.c) yield {\n\t\t\tn: ref,\n\t\t\tp\n\t\t};\n\t\telse for (const n of Object.entries(ref.c)) yield* walk(n[1], n[0], ref);\n\t}\n\treturn genSequence(walk(node, \"\"));\n}\nfunction flattenToReferences(node) {\n\tfunction* walk() {\n\t\tlet iterations = 100;\n\t\tlet processed = 0;\n\t\tlet index = 0;\n\t\tdo {\n\t\t\tprocessed = 0;\n\t\t\tconst signatureMap = /* @__PURE__ */ new Map();\n\t\t\tfor (const leaf of leaves(node)) {\n\t\t\t\tconst h = signature(leaf.n);\n\t\t\t\tlet m = signatureMap.get(h);\n\t\t\t\tif (m === void 0) {\n\t\t\t\t\tyield leaf.n;\n\t\t\t\t\tm = index;\n\t\t\t\t\tsignatureMap.set(h, m);\n\t\t\t\t\tindex += 1;\n\t\t\t\t}\n\t\t\t\t/* istanbul ignore else */\n\t\t\t\tif (leaf.p && leaf.p.c) {\n\t\t\t\t\tleaf.p.r = leaf.p.r || [];\n\t\t\t\t\tleaf.p.r.push(m);\n\t\t\t\t\tdelete leaf.p.c[leaf.n.s];\n\t\t\t\t\tif (!Object.entries(leaf.p.c).length) delete leaf.p.c;\n\t\t\t\t}\n\t\t\t\tprocessed += 1;\n\t\t\t}\n\t\t\titerations -= 1;\n\t\t} while (processed && iterations && node.c);\n\t\tyield node;\n\t}\n\treturn genSequence(walk());\n}\nfunction signature(node) {\n\tconst flags = node.f ? EOW$1 : \"\";\n\tconst refs = node.r ? node.r.sort((a, b) => a - b).join(\",\") : \"\";\n\treturn node.s + flags + refs;\n}\nfunction toLine(node, base) {\n\tconst flags = node.f ? EOW$1 : \"\";\n\tconst refs = node.r ? node.r.sort((a, b) => a - b).map((r) => r.toString(base)).join(\",\") : \"\";\n\treturn node.s + flags + refs;\n}\nfunction generateHeader$2(base, comment) {\n\treturn genSequence([\n\t\t\"#!/usr/bin/env cspell-trie reader\",\n\t\t\"TrieXv2\",\n\t\t\"base=\" + base,\n\t\t...comment ? comment.split(\"\\n\").map((a) => \"# \" + a) : [],\n\t\t\"# Data:\",\n\t\tDATA$3\n\t]);\n}\n/**\n* Serialize a TrieNode.\n* Note: This is destructive.  The node will no longer be usable.\n* Even though it is possible to preserve the trie, dealing with very large tries can consume a lot of memory.\n* Considering this is the last step before exporting, it was decided to let this be destructive.\n*/\nfunction serializeTrie$3(root, options = 16) {\n\toptions = typeof options === \"number\" ? { base: options } : options;\n\tconst { base = 16, comment = \"\" } = options;\n\tconst radix = base > 36 ? 36 : base < 10 ? 10 : base;\n\tconst rows = flattenToReferences({\n\t\t...root,\n\t\ts: \"^\"\n\t}).map((n) => toLine(n, base));\n\treturn generateHeader$2(radix, comment).concat(rows).map((a) => a + \"\\n\");\n}\nfunction* toIterableIterator(iter) {\n\tyield* iter;\n}\nfunction importTrie$4(linesX) {\n\tlet radix = 16;\n\tconst comment = /^\\s*#/;\n\tconst iter = toIterableIterator(linesX);\n\tfunction parseHeaderRows(headerRows) {\n\t\tconst header = headerRows.slice(0, 2).join(\"\\n\");\n\t\tconst headerReg = /^TrieXv2\\nbase=(\\d+)$/;\n\t\t/* istanbul ignore if */\n\t\tif (!headerReg.test(header)) throw new Error(\"Unknown file format\");\n\t\tradix = Number.parseInt(header.replace(headerReg, \"$1\"), 10);\n\t}\n\tfunction readHeader(iter) {\n\t\tconst headerRows = [];\n\t\twhile (true) {\n\t\t\tconst next = iter.next();\n\t\t\tif (next.done) break;\n\t\t\tconst line = next.value.trim();\n\t\t\tif (!line || comment.test(line)) continue;\n\t\t\tif (line === \"__DATA__\") break;\n\t\t\theaderRows.push(line);\n\t\t}\n\t\tparseHeaderRows(headerRows);\n\t}\n\tfunction parseLine(line, base) {\n\t\tconst isWord = line[1] === EOW$1;\n\t\tconst refOffset = isWord ? 2 : 1;\n\t\tconst refs = line.slice(refOffset).split(\",\").filter((a) => !!a).map((r) => Number.parseInt(r, base));\n\t\treturn {\n\t\t\tletter: line[0],\n\t\t\tisWord,\n\t\t\trefs\n\t\t};\n\t}\n\tconst flagsWord = { f: 1 };\n\tfunction decodeLine(line, nodes) {\n\t\tconst { letter, isWord, refs } = parseLine(line, radix);\n\t\tconst flags = isWord ? flagsWord : {};\n\t\tconst children = refs.map((r) => nodes[r]).sort((a, b) => a.s < b.s ? -1 : 1).map((n) => [n.s, n]);\n\t\treturn {\n\t\t\ts: letter,\n\t\t\t...children.length ? { c: Object.fromEntries(children) } : {},\n\t\t\t...flags\n\t\t};\n\t}\n\treadHeader(iter);\n\treturn trieNodeToRoot(genSequence(iter).map((a) => a.replace(/\\r?\\n/, \"\")).filter((a) => !!a).reduce((acc, line) => {\n\t\tconst { nodes } = acc;\n\t\tconst root = decodeLine(line, nodes);\n\t\tnodes.push(root);\n\t\treturn {\n\t\t\troot,\n\t\t\tnodes\n\t\t};\n\t}, {\n\t\tnodes: [],\n\t\troot: {\n\t\t\ts: \"\",\n\t\t\tc: Object.create(null)\n\t\t}\n\t}).root, {});\n}\n//#endregion\n//#region src/lib/utils/bufferLines.ts\nfunction* buffer(iter, bufferSize) {\n\tconst buffer = [];\n\tfor (const s of iter) {\n\t\tbuffer.push(s);\n\t\tif (buffer.length >= bufferSize) {\n\t\t\tyield buffer;\n\t\t\tbuffer.length = 0;\n\t\t}\n\t}\n\tif (buffer.length) {\n\t\tyield buffer;\n\t\tbuffer.length = 0;\n\t}\n}\nfunction* bufferLines(iter, bufferSize, eol) {\n\tif (eol) for (const s of buffer(iter, bufferSize)) yield s.join(\"\") + eol;\n\telse for (const s of buffer(iter, bufferSize)) yield s.join(\"\");\n}\n//#endregion\n//#region src/lib/io/importExportV4.ts\n/**\n* Trie file format v4\n*\n* Trie format v4 is very similar to v3. The v4 reader can even read v3 files.\n* The motivation behind v4 is to reduce the cost of storing `.trie` files in git.\n* When a word is added in v3, nearly the entire file is changed due to the absolute\n* references. V4 adds an index sorted by the most frequently used reference to the least.\n* Because git diff is line based, it is important to add line breaks at logical points.\n* V3 added line breaks just to make sure the lines were not too long, V4 takes a different\n* approach. Line breaks are added at two distinct points. First, at the start of each two\n* letter prefix and second after approximately 50 words have been emitted.\n*\n* To improve readability and git diff, at the beginning of each two letter prefix,\n* a comment is emitted.\n*\n* Example:\n*\n* ```\n* /* ab *\u200B/\n* ```\n*/\nconst REF_INDEX_BEGIN = \"[\";\nconst REF_INDEX_END = \"]\";\nconst INLINE_DATA_COMMENT_LINE = \"/\";\nconst specialCharacters$1 = stringToCharSet$2([\n\t\"$\",\n\t\"<\",\n\t\"\\n\",\n\t\"#\",\n\t\"@\",\n\t\";\",\n\t\"\\\\\",\n\t\"\\r\",\n\tREF_INDEX_BEGIN,\n\tREF_INDEX_END,\n\tINLINE_DATA_COMMENT_LINE,\n\t...\"0123456789\",\n\t...\"`~!@#$%^&*()_-+=[]{};:'\\\"<>,./?\\\\|\"\n].join(\"\"));\nconst SPECIAL_CHARACTERS_MAP = [\n\t[\"\\n\", \"\\\\n\"],\n\t[\"\\r\", \"\\\\r\"],\n\t[\"\\\\\", \"\\\\\\\\\"]\n];\nconst specialCharacterMap$1 = stringToCharMap(SPECIAL_CHARACTERS_MAP);\nconst characterMap$1 = stringToCharMap(SPECIAL_CHARACTERS_MAP.map((a) => [a[1], a[0]]));\nconst specialPrefix$1 = stringToCharSet$2(\"~!\");\nconst WORDS_PER_LINE$1 = 20;\nconst DATA$2 = \"__DATA__\";\nfunction generateHeader$1(base, comment) {\n\treturn `\\\n#!/usr/bin/env cspell-trie reader\nTrieXv4\nbase=${base}\n${comment.split(\"\\n\").map((a) => \"# \" + a.trimEnd()).join(\"\\n\")}\n# Data:\n${DATA$2}\n`;\n}\n/**\n* Serialize a TrieRoot.\n*/\nfunction serializeTrie$2(root, options = 16) {\n\toptions = typeof options === \"number\" ? { base: options } : options;\n\tconst { base = 10, comment = \"\" } = options;\n\tconst radix = base > 36 ? 36 : base < 10 ? 10 : base;\n\tconst cache = /* @__PURE__ */ new Map();\n\tconst refMap = buildReferenceMap(root, base);\n\tconst nodeToIndexMap = new Map(refMap.refCounts.map(([node], index) => [node, index]));\n\tlet count = 0;\n\tconst backBuffer = {\n\t\tlast: \"\",\n\t\tcount: 0,\n\t\twords: 0,\n\t\teol: false\n\t};\n\tconst wordChars = [];\n\tfunction ref(n, idx) {\n\t\tconst r = idx === void 0 || n < idx ? \"#\" + n.toString(radix) : \"@\" + idx.toString(radix);\n\t\treturn radix === 10 ? r : r + \";\";\n\t}\n\tfunction escape(s) {\n\t\treturn s in specialCharacters$1 ? \"\\\\\" + (specialCharacterMap$1[s] || s) : s;\n\t}\n\tfunction* flush() {\n\t\twhile (backBuffer.count) {\n\t\t\tconst n = Math.min(9, backBuffer.count);\n\t\t\tyield n > 1 ? backBuffer.last + n : backBuffer.last;\n\t\t\tbackBuffer.last = \"<\";\n\t\t\tbackBuffer.count -= n;\n\t\t}\n\t\tif (backBuffer.eol) {\n\t\t\tyield \"\\n\";\n\t\t\tbackBuffer.eol = false;\n\t\t\tbackBuffer.words = 0;\n\t\t}\n\t}\n\tfunction* emit(s) {\n\t\tswitch (s) {\n\t\t\tcase \"$\":\n\t\t\t\tyield* flush();\n\t\t\t\tbackBuffer.last = \"$\";\n\t\t\t\tbackBuffer.count = 0;\n\t\t\t\tbackBuffer.words++;\n\t\t\t\tbreak;\n\t\t\tcase \"<\":\n\t\t\t\tbackBuffer.count++;\n\t\t\t\tbreak;\n\t\t\tcase \"\\n\":\n\t\t\t\tbackBuffer.eol = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (backBuffer.words >= WORDS_PER_LINE$1) backBuffer.eol = true;\n\t\t\t\tyield* flush();\n\t\t\t\tif (s.startsWith(\"#\") || s.startsWith(\"@\")) backBuffer.words++;\n\t\t\t\tyield s;\n\t\t}\n\t}\n\tconst comment_begin = `\n${INLINE_DATA_COMMENT_LINE}* `;\n\tconst comment_end = ` *${INLINE_DATA_COMMENT_LINE}\n`;\n\tfunction* walk(node, depth) {\n\t\tconst nodeNumber = cache.get(node);\n\t\tconst refIndex = nodeToIndexMap.get(node);\n\t\tif (nodeNumber !== void 0) {\n\t\t\tyield* emit(ref(nodeNumber, refIndex));\n\t\t\treturn;\n\t\t}\n\t\tif (node.c) {\n\t\t\tif (depth > 0 && depth <= 2) yield* emit(comment_begin + wordChars.slice(0, depth).map(escape).join(\"\") + comment_end);\n\t\t\tcache.set(node, count++);\n\t\t\tconst c = Object.entries(node.c).sort((a, b) => a[0] < b[0] ? -1 : 1);\n\t\t\tfor (const [s, n] of c) {\n\t\t\t\twordChars[depth] = s;\n\t\t\t\tyield* emit(escape(s));\n\t\t\t\tyield* walk(n, depth + 1);\n\t\t\t\tyield* emit(\"<\");\n\t\t\t\tif (depth === 0) yield* emit(\"\\n\");\n\t\t\t}\n\t\t}\n\t\tif (node.f) yield* emit(\"$\");\n\t\tif (depth === 2 || depth === 3 && wordChars[0] in specialPrefix$1) yield* emit(\"\\n\");\n\t}\n\tfunction* serialize(node) {\n\t\tyield* walk(node, 0);\n\t\tyield* flush();\n\t}\n\tconst lines = [...bufferLines(serialize(root), 1e3, \"\")];\n\tconst reference = \"[\\n\" + refMap.refCounts.map(([node]) => cache.get(node) || 0).map((n) => n.toString(radix)).join(\",\").replaceAll(/.{110,130}[,]/g, \"$&\\n\") + \"\\n]\\n\";\n\treturn pipeSync([generateHeader$1(radix, comment), reference], opAppendSync(lines));\n}\nfunction buildReferenceMap(root, base) {\n\tconst refCount = /* @__PURE__ */ new Map();\n\tlet nodeCount = 0;\n\tfunction walk(node) {\n\t\tconst ref = refCount.get(node);\n\t\tif (ref) {\n\t\t\tref.c++;\n\t\t\treturn;\n\t\t}\n\t\trefCount.set(node, {\n\t\t\tc: 1,\n\t\t\tn: nodeCount++\n\t\t});\n\t\tif (!node.c) return;\n\t\tfor (const child of Object.values(node.c)) walk(child);\n\t}\n\twalk(root);\n\tconst refCountAndNode = [...pipeSync(refCount, opFilterSync(([_, ref]) => ref.c >= 2))].sort((a, b) => b[1].c - a[1].c || a[1].n - b[1].n);\n\tlet adj = 0;\n\tconst baseLogScale = 1 / Math.log(base);\n\treturn { refCounts: refCountAndNode.filter(([_, ref], idx) => {\n\t\tconst i = idx - adj;\n\t\tconst charsIdx = Math.ceil(Math.log(i) * baseLogScale);\n\t\tconst charsNode = Math.ceil(Math.log(ref.n) * baseLogScale);\n\t\tconst keep = ref.c * (charsNode - charsIdx) - charsIdx > 0;\n\t\tadj += keep ? 0 : 1;\n\t\treturn keep;\n\t}).map(([n, ref]) => [n, ref.c]) };\n}\nfunction importTrie$3(linesX) {\n\tlinesX = typeof linesX === \"string\" ? linesX.split(/^/m) : linesX;\n\tlet radix = 10;\n\tconst comment = /^\\s*#/;\n\tconst iter = tapIterable(pipeSync(linesX, opConcatMapSync((a) => a.split(/^/m))));\n\tfunction parseHeaderRows(headerRows) {\n\t\tconst header = headerRows.slice(0, 2).join(\"\\n\");\n\t\tconst headerReg = /^TrieXv[34]\\nbase=(\\d+)$/;\n\t\t/* istanbul ignore if */\n\t\tif (!headerReg.test(header)) throw new Error(\"Unknown file format\");\n\t\tradix = Number.parseInt(header.replace(headerReg, \"$1\"), 10);\n\t}\n\tfunction readHeader(iter) {\n\t\tconst headerRows = [];\n\t\tfor (const value of iter) {\n\t\t\tconst line = value.trim();\n\t\t\tif (!line || comment.test(line)) continue;\n\t\t\tif (line === \"__DATA__\") break;\n\t\t\theaderRows.push(line);\n\t\t}\n\t\tparseHeaderRows(headerRows);\n\t}\n\treadHeader(iter);\n\treturn parseStream$1(radix, iter);\n}\nconst numbersSet = stringToCharSet$2(\"0123456789\");\nfunction parseStream$1(radix, iter) {\n\tconst eow = Object.freeze({ f: 1 });\n\tlet refIndex = [];\n\tconst root = trieNodeToRoot({}, {});\n\tfunction parseReference(acc, s) {\n\t\tconst isIndexRef = s === \"@\";\n\t\tlet ref = \"\";\n\t\tfunction parser(acc, s) {\n\t\t\tif (s === \";\" || radix === 10 && !(s in numbersSet)) {\n\t\t\t\tconst { root, nodes, stack } = acc;\n\t\t\t\tconst r = Number.parseInt(ref, radix);\n\t\t\t\tconst top = stack[stack.length - 1];\n\t\t\t\tconst p = stack[stack.length - 2].node;\n\t\t\t\tconst n = isIndexRef ? refIndex[r] : r;\n\t\t\t\tp.c && (p.c[top.s] = nodes[n]);\n\t\t\t\tconst rr = {\n\t\t\t\t\troot,\n\t\t\t\t\tnodes,\n\t\t\t\t\tstack,\n\t\t\t\t\tparser: void 0\n\t\t\t\t};\n\t\t\t\treturn s === \";\" ? rr : parserMain(rr, s);\n\t\t\t}\n\t\t\tref = ref + s;\n\t\t\treturn acc;\n\t\t}\n\t\tconst { nodes } = acc;\n\t\tnodes.pop();\n\t\treturn {\n\t\t\t...acc,\n\t\t\tnodes,\n\t\t\tparser\n\t\t};\n\t}\n\tfunction parseEscapeCharacter(acc, _) {\n\t\tlet prev = \"\";\n\t\tconst parser = function(acc, s) {\n\t\t\tif (prev) {\n\t\t\t\ts = characterMap$1[prev + s] || s;\n\t\t\t\treturn parseCharacter({\n\t\t\t\t\t...acc,\n\t\t\t\t\tparser: void 0\n\t\t\t\t}, s);\n\t\t\t}\n\t\t\tif (s === \"\\\\\") {\n\t\t\t\tprev = s;\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\treturn parseCharacter({\n\t\t\t\t...acc,\n\t\t\t\tparser: void 0\n\t\t\t}, s);\n\t\t};\n\t\treturn {\n\t\t\t...acc,\n\t\t\tparser\n\t\t};\n\t}\n\tfunction parseComment(acc, s) {\n\t\tconst endOfComment = s;\n\t\tlet isEscaped = false;\n\t\tfunction parser(acc, s) {\n\t\t\tif (isEscaped) {\n\t\t\t\tisEscaped = false;\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\tif (s === \"\\\\\") {\n\t\t\t\tisEscaped = true;\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\tif (s === endOfComment) return {\n\t\t\t\t...acc,\n\t\t\t\tparser: void 0\n\t\t\t};\n\t\t\treturn acc;\n\t\t}\n\t\treturn {\n\t\t\t...acc,\n\t\t\tparser\n\t\t};\n\t}\n\tfunction parseCharacter(acc, s) {\n\t\tconst parser = void 0;\n\t\tconst { root, nodes, stack } = acc;\n\t\tconst node = stack[stack.length - 1].node;\n\t\tconst c = node.c ?? Object.create(null);\n\t\tconst n = {\n\t\t\tf: void 0,\n\t\t\tc: void 0,\n\t\t\tn: nodes.length\n\t\t};\n\t\tc[s] = n;\n\t\tnode.c = c;\n\t\tstack.push({\n\t\t\tnode: n,\n\t\t\ts\n\t\t});\n\t\tnodes.push(n);\n\t\treturn {\n\t\t\troot,\n\t\t\tnodes,\n\t\t\tstack,\n\t\t\tparser\n\t\t};\n\t}\n\tfunction parseEOW(acc, _) {\n\t\tconst parser = parseBack;\n\t\tconst { root, nodes, stack } = acc;\n\t\tconst top = stack[stack.length - 1];\n\t\tconst node = top.node;\n\t\tnode.f = 1;\n\t\tif (!node.c) {\n\t\t\ttop.node = eow;\n\t\t\tconst p = stack[stack.length - 2].node;\n\t\t\tp.c && (p.c[top.s] = eow);\n\t\t\tnodes.pop();\n\t\t}\n\t\tstack.pop();\n\t\treturn {\n\t\t\troot,\n\t\t\tnodes,\n\t\t\tstack,\n\t\t\tparser\n\t\t};\n\t}\n\tconst charactersBack = stringToCharSet$2(\"<23456789\");\n\tfunction parseBack(acc, s) {\n\t\tif (!(s in charactersBack)) return parserMain({\n\t\t\t...acc,\n\t\t\tparser: void 0\n\t\t}, s);\n\t\tlet n = s === \"<\" ? 1 : Number.parseInt(s, 10) - 1;\n\t\tconst { stack } = acc;\n\t\twhile (n-- > 0) stack.pop();\n\t\treturn {\n\t\t\t...acc,\n\t\t\tparser: parseBack\n\t\t};\n\t}\n\tfunction parseIgnore(acc, _) {\n\t\treturn acc;\n\t}\n\tconst parsers = createStringLookupMap([\n\t\t[\"$\", parseEOW],\n\t\t[\"<\", parseBack],\n\t\t[\"#\", parseReference],\n\t\t[\"@\", parseReference],\n\t\t[\"\\\\\", parseEscapeCharacter],\n\t\t[\"\\n\", parseIgnore],\n\t\t[\"\\r\", parseIgnore],\n\t\t[INLINE_DATA_COMMENT_LINE, parseComment]\n\t]);\n\tfunction parserMain(acc, s) {\n\t\treturn (acc.parser ?? parsers[s] ?? parseCharacter)(acc, s);\n\t}\n\tconst charsetSpaces = stringToCharSet$2(\" \\r\\n\t\");\n\tfunction parseReferenceIndex(acc, s) {\n\t\tlet json = \"\";\n\t\tfunction parserStart(acc, s) {\n\t\t\tif (s === REF_INDEX_BEGIN) {\n\t\t\t\tjson = json + s;\n\t\t\t\treturn {\n\t\t\t\t\t...acc,\n\t\t\t\t\tparser\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (s in charsetSpaces) return acc;\n\t\t\treturn parserMain({\n\t\t\t\t...acc,\n\t\t\t\tparser: void 0\n\t\t\t}, s);\n\t\t}\n\t\tfunction parser(acc, s) {\n\t\t\tjson = json + s;\n\t\t\tif (s === REF_INDEX_END) {\n\t\t\t\trefIndex = json.replaceAll(/[\\s[\\]]/g, \"\").split(\",\").map((n) => Number.parseInt(n, radix));\n\t\t\t\treturn {\n\t\t\t\t\t...acc,\n\t\t\t\t\tparser: void 0\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn acc;\n\t\t}\n\t\treturn parserStart({\n\t\t\t...acc,\n\t\t\tparser: parserStart\n\t\t}, s);\n\t}\n\treduceSync(pipeSync(iter, opConcatMapSync((a) => [...a])), parserMain, {\n\t\tnodes: [root],\n\t\troot,\n\t\tstack: [{\n\t\t\tnode: root,\n\t\t\ts: \"\"\n\t\t}],\n\t\tparser: parseReferenceIndex\n\t});\n\treturn root;\n}\nfunction stringToCharSet$2(values) {\n\tconst set = Object.create(null);\n\tconst len = values.length;\n\tfor (let i = 0; i < len; ++i) set[values[i]] = true;\n\treturn set;\n}\nfunction stringToCharMap(values) {\n\treturn createStringLookupMap(values);\n}\nfunction createStringLookupMap(values) {\n\tconst map = Object.create(null);\n\tconst len = values.length;\n\tfor (let i = 0; i < len; ++i) map[values[i][0]] = values[i][1];\n\treturn map;\n}\n/**\n* Allows an iterable to be shared by multiple consumers.\n* Each consumer takes from the iterable.\n* @param iterable - the iterable to share\n*/\nfunction tapIterable(iterable) {\n\tlet lastValue;\n\tlet iter;\n\tfunction getNext() {\n\t\tif (lastValue && lastValue.done) return { ...lastValue };\n\t\titer = iter || iterable[Symbol.iterator]();\n\t\tlastValue = iter.next();\n\t\treturn lastValue;\n\t}\n\tfunction* iterableFn() {\n\t\tlet next;\n\t\twhile (!(next = getNext()).done) yield next.value;\n\t}\n\treturn { [Symbol.iterator]: iterableFn };\n}\n//#endregion\n//#region src/lib/TrieNode/TrieNodeBuilder.ts\nconst EOW = Object.freeze({\n\tf: 1,\n\tk: true\n});\nconst compare = new Intl.Collator().compare;\nvar TrieNodeBuilder = class {\n\t#cursor;\n\troot = createTrieRoot();\n\t#trieInfoBuilder = new TrieInfoBuilder(this.root);\n\tshouldSort = false;\n\tsuggestionPrefix = this.root.suggestionPrefix;\n\twordToCharacters = (word) => [...word];\n\tsetOptions(options) {\n\t\tconst opts = mergeOptionalWithDefaults(options, this.root);\n\t\tObject.assign(this.root, opts);\n\t\treturn opts;\n\t}\n\tbuild() {\n\t\treturn new TrieNodeTrie(this.root);\n\t}\n\tgetCursor() {\n\t\tthis.#cursor ??= this.createCursor();\n\t\treturn this.#cursor;\n\t}\n\tcreateCursor() {\n\t\tconst root = this.root;\n\t\tconst sug = this.suggestionPrefix;\n\t\tconst nodes = [root, EOW];\n\t\tconst eow = EOW;\n\t\tassert(Object.keys(root.c).length === 0, \"The Trie MUST be empty for cursors to work.\");\n\t\tconst stack = [{\n\t\t\tn: root,\n\t\t\tc: \"\"\n\t\t}];\n\t\tlet currNode = root;\n\t\tlet depth = 0;\n\t\tconst insertChar = (char) => {\n\t\t\tassertIsValidChar(char);\n\t\t\tif (!depth || char === sug) this.#trieInfoBuilder.addWord(char);\n\t\t\tif (currNode.k) {\n\t\t\t\tconst s = stack[depth];\n\t\t\t\tconst { k: _, c, ...copy } = currNode;\n\t\t\t\tcurrNode = s.n.c[s.c] = copy;\n\t\t\t\tif (c) currNode.c = Object.assign(Object.create(null), c);\n\t\t\t\tnodes.push(currNode);\n\t\t\t}\n\t\t\tconst c = currNode.c || Object.create(null);\n\t\t\tcurrNode.c = c;\n\t\t\tconst n = currNode;\n\t\t\tconst next = c[char] = c[char] || {};\n\t\t\tnodes.push(next);\n\t\t\t++depth;\n\t\t\tconst s = stack[depth];\n\t\t\tif (s) {\n\t\t\t\ts.n = n;\n\t\t\t\ts.c = char;\n\t\t\t} else stack.push({\n\t\t\t\tn,\n\t\t\t\tc: char\n\t\t\t});\n\t\t\tcurrNode = next;\n\t\t};\n\t\tconst markEOW = () => {\n\t\t\tif (!currNode.c) {\n\t\t\t\tconst s = stack[depth];\n\t\t\t\ts.n.c[s.c] = eow;\n\t\t\t\tif (nodes[nodes.length - 1] === currNode) nodes.pop();\n\t\t\t\tcurrNode = eow;\n\t\t\t} else currNode.f = 1;\n\t\t};\n\t\tconst reference = (nodeId) => {\n\t\t\tconst s = stack[depth];\n\t\t\ts.n.c[s.c] = nodes[nodeId];\n\t\t\tnodes.pop();\n\t\t};\n\t\tconst backStep = (num) => {\n\t\t\tif (!num) return;\n\t\t\tassert(num <= depth && num > 0);\n\t\t\tdepth -= num;\n\t\t\tcurrNode = stack[depth + 1].n;\n\t\t};\n\t\treturn {\n\t\t\tinsertChar,\n\t\t\tmarkEOW,\n\t\t\treference,\n\t\t\tbackStep\n\t\t};\n\t}\n\tsortChildren(node) {\n\t\tconst entries = Object.entries(node.c).sort((a, b) => compare(a[0], b[0]));\n\t\tnode.c = Object.fromEntries(entries);\n\t\tfor (const c of Object.values(node.c)) if (c.c) this.sortChildren(c);\n\t}\n\tsortNodes() {\n\t\tif (this.shouldSort) this.sortChildren(this.root);\n\t}\n};\n//#endregion\n//#region src/lib/io/importV3.ts\nconst characterMap = new Map([...new Map([\n\t[\"\\n\", \"\\\\n\"],\n\t[\"\\r\", \"\\\\r\"],\n\t[\"\\\\\", \"\\\\\\\\\"]\n])].map((a) => [a[1], a[0]]));\nconst DATA$1 = \"__DATA__\";\nfunction importTrieV3AsTrieRoot(srcLines) {\n\treturn importTrieV3WithBuilder(new TrieNodeBuilder(), srcLines);\n}\nfunction importTrieV3WithBuilder(builder, srcLines) {\n\tconst timerStart = measurePerf(\"importTrieV3\");\n\tconst dataLines = typeof srcLines === \"string\" ? srcLines.split(\"\\n\") : Array.isArray(srcLines) ? srcLines : [...srcLines];\n\tlet radix = 16;\n\tconst comment = /^\\s*#/;\n\tfunction parseHeaderRows(headerRows) {\n\t\tconst header = headerRows.slice(0, 2).join(\"\\n\");\n\t\tconst headerReg = /^TrieXv3\\nbase=(\\d+)$/;\n\t\t/* istanbul ignore if */\n\t\tif (!headerReg.test(header)) throw new Error(\"Unknown file format\");\n\t\tradix = Number.parseInt(header.replace(headerReg, \"$1\"), 10);\n\t}\n\tfunction findStartOfData(data) {\n\t\tfor (let i = 0; i < data.length; ++i) if (data[i].includes(DATA$1)) return i;\n\t\treturn -1;\n\t}\n\tfunction readHeader(data) {\n\t\tconst headerRows = [];\n\t\tfor (const hLine of data) {\n\t\t\tconst line = hLine.trim();\n\t\t\tif (!line || comment.test(line)) continue;\n\t\t\tif (line === DATA$1) break;\n\t\t\theaderRows.push(line);\n\t\t}\n\t\tparseHeaderRows(headerRows);\n\t}\n\tconst startOfData = findStartOfData(dataLines);\n\tif (startOfData < 0) throw new Error(\"Unknown file format\");\n\treadHeader(dataLines.slice(0, startOfData));\n\tlet node = {\n\t\tcursor: builder.getCursor(),\n\t\tparser: void 0\n\t};\n\tconst parser = parseStream(radix);\n\tconst timerParse = measurePerf(\"importTrieV3.parse\");\n\tfor (let i = startOfData + 1; i < dataLines.length; ++i) {\n\t\tconst line = dataLines[i];\n\t\tfor (const c of line) node = parser(node, c);\n\t}\n\ttimerParse();\n\ttimerStart();\n\treturn builder.build();\n}\nfunction parseStream(radix) {\n\tfunction parseReference(acc, _) {\n\t\tlet ref = \"\";\n\t\tfunction parser(acc, s) {\n\t\t\tif (s === \";\") {\n\t\t\t\tconst { cursor } = acc;\n\t\t\t\tconst r = Number.parseInt(ref, radix);\n\t\t\t\tcursor.reference(r + 1);\n\t\t\t\tacc.parser = void 0;\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\tref = ref + s;\n\t\t\treturn acc;\n\t\t}\n\t\tacc.parser = parser;\n\t\treturn acc;\n\t}\n\tfunction parseEscapeCharacter(acc, _) {\n\t\tlet prev = \"\";\n\t\tconst parser = function(acc, s) {\n\t\t\tif (prev) {\n\t\t\t\ts = characterMap.get(prev + s) || s;\n\t\t\t\tacc.parser = void 0;\n\t\t\t\treturn parseCharacter(acc, s);\n\t\t\t}\n\t\t\tif (s === \"\\\\\") {\n\t\t\t\tprev = s;\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\tacc.parser = void 0;\n\t\t\treturn parseCharacter(acc, s);\n\t\t};\n\t\tacc.parser = parser;\n\t\treturn acc;\n\t}\n\tfunction parseCharacter(acc, s) {\n\t\tacc.cursor.insertChar(s);\n\t\tacc.parser = void 0;\n\t\treturn acc;\n\t}\n\tfunction parseEOW(acc, _) {\n\t\tacc.parser = parseBack;\n\t\tacc.cursor.markEOW();\n\t\tacc.cursor.backStep(1);\n\t\treturn acc;\n\t}\n\tconst charactersBack = stringToCharSet$1(\"<23456789\");\n\tfunction parseBack(acc, s) {\n\t\tif (!(s in charactersBack)) {\n\t\t\tacc.parser = void 0;\n\t\t\treturn parserMain(acc, s);\n\t\t}\n\t\tconst n = s === \"<\" ? 1 : Number.parseInt(s, 10) - 1;\n\t\tacc.cursor.backStep(n);\n\t\tacc.parser = parseBack;\n\t\treturn acc;\n\t}\n\tfunction parseIgnore(acc, _) {\n\t\treturn acc;\n\t}\n\tconst parsers = new Map([\n\t\t[\"$\", parseEOW],\n\t\t[\"<\", parseBack],\n\t\t[\"#\", parseReference],\n\t\t[\"\\\\\", parseEscapeCharacter],\n\t\t[\"\\n\", parseIgnore],\n\t\t[\"\\r\", parseIgnore]\n\t]);\n\tfunction parserMain(acc, s) {\n\t\treturn (acc.parser ?? parsers.get(s) ?? parseCharacter)(acc, s);\n\t}\n\treturn parserMain;\n}\nfunction stringToCharSet$1(values) {\n\tconst set = Object.create(null);\n\tconst len = values.length;\n\tfor (let i = 0; i < len; ++i) set[values[i]] = true;\n\treturn set;\n}\n//#endregion\n//#region src/lib/io/importV3FastBlob.ts\nfunction importTrieV3AsTrieBlob(srcLines) {\n\treturn importTrieV3WithBuilder(new TrieBlobBuilder(), srcLines);\n}\n//#endregion\n//#region src/lib/io/decode.ts\nfunction decodeTrieData(raw) {\n\tif (typeof raw === \"string\") return decodeStringFormat(raw);\n\tconst data = toUint8Array(raw);\n\tif (isBTrieData(data)) return decodeBTrie(data);\n\treturn decodeStringFormat(new TextDecoder().decode(data));\n}\nfunction decodeStringFormat(data) {\n\treturn importTrie$2(data);\n}\nconst deserializers$1 = [\n\t(data) => new TrieNodeTrie(importTrie$5(data)),\n\t(data) => new TrieNodeTrie(importTrie$5(data)),\n\t(data) => new TrieNodeTrie(importTrie$4(data)),\n\t(data) => importTrieV3AsTrieBlob(data),\n\t(data) => new TrieNodeTrie(importTrie$3(data))\n];\nconst headerReg$1 = /^\\s*TrieXv(\\d+)/m;\nfunction importTrie$2(input) {\n\tconst lines = Array.isArray(input) ? input : typeof input === \"string\" ? input.split(\"\\n\") : [...input];\n\tfunction parseHeaderRows(headerRows) {\n\t\tfor (let i = 0; i < headerRows.length; ++i) {\n\t\t\tconst match = headerRows[i].match(headerReg$1);\n\t\t\tif (match) return Number.parseInt(match[1], 10);\n\t\t}\n\t\tthrow new Error(\"Unknown file format\");\n\t}\n\tfunction readHeader(iter) {\n\t\tconst headerRows = [];\n\t\tfor (const entry of iter) {\n\t\t\tconst line = entry.trim();\n\t\t\theaderRows.push(line);\n\t\t\tif (line === \"*\" || line === \"__DATA__\") break;\n\t\t}\n\t\treturn headerRows;\n\t}\n\tconst version = parseHeaderRows(readHeader(lines));\n\tconst method = deserializers$1[version];\n\tif (!method) throw new Error(`Unsupported version: ${version}`);\n\treturn method(lines);\n}\n//#endregion\n//#region src/lib/suggestions/suggest.ts\nconst baseCost = opCosts.baseCost;\nconst postSwapCost = opCosts.swapCost - baseCost;\nconst insertSpaceCost = -1;\nconst mapSubCost = opCosts.visuallySimilar;\nconst maxCostScale = opCosts.wordLengthCostFactor;\nconst discourageInsertCost = baseCost;\nconst setOfSeparators = new Set([\"+\", \" \"]);\nfunction suggest(root, word, options = {}) {\n\tconst opts = createSuggestionOptions(options);\n\tconst collector = suggestionCollector(word, clean(opts));\n\tcollector.collect(genSuggestions(root, word, {\n\t\t...opts,\n\t\t...collector.genSuggestionOptions\n\t}));\n\treturn collector.suggestions;\n}\nfunction* genSuggestions(root, word, options = {}) {\n\tconst roots = Array.isArray(root) ? root : [root];\n\tfor (const r of roots) yield* genCompoundableSuggestions(r, word, options);\n}\nfunction* genCompoundableSuggestions(root, word, options = {}) {\n\tconst { compoundMethod = CompoundWordsMethod.NONE, changeLimit, ignoreCase } = createSuggestionOptions(options);\n\tconst history = [];\n\tconst historyTags = /* @__PURE__ */ new Map();\n\tconst bc = baseCost;\n\tconst psc = postSwapCost;\n\tconst matrix = [[]];\n\tconst stack = [];\n\tconst x = \" \" + word;\n\tconst mx = x.length - 1;\n\tconst specialInsCosts = Object.assign(Object.create(null), {\n\t\t[\" \"]: insertSpaceCost,\n\t\t[\"+\"]: insertSpaceCost\n\t});\n\tconst specialSubCosts = Object.assign(Object.create(null), { \"-\": discourageInsertCost });\n\tlet stopNow = false;\n\tlet costLimit = bc * Math.min(word.length * maxCostScale, changeLimit);\n\tfunction updateCostLimit(maxCost) {\n\t\tswitch (typeof maxCost) {\n\t\t\tcase \"number\":\n\t\t\t\tcostLimit = maxCost;\n\t\t\t\tbreak;\n\t\t\tcase \"symbol\":\n\t\t\t\tstopNow = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tconst a = 0;\n\tlet b = 0;\n\tfor (let i = 0, c = 0; i <= mx && c <= costLimit; ++i) {\n\t\tc = i * baseCost;\n\t\tmatrix[0][i] = c;\n\t\tb = i;\n\t}\n\tstack[0] = {\n\t\ta,\n\t\tb\n\t};\n\tconst iWalk = hintedWalker(root, ignoreCase, word, compoundMethod, options.compoundSeparator);\n\tlet goDeeper = true;\n\tfor (let r = iWalk.next({ goDeeper }); !stopNow && !r.done; r = iWalk.next({ goDeeper })) {\n\t\tconst { text, node, depth } = r.value;\n\t\tlet { a, b } = stack[depth];\n\t\t/** Current character from word */\n\t\tconst w = text.slice(-1);\n\t\t/** Current character visual letter group */\n\t\tconst wG = visualLetterMaskMap[w] || 0;\n\t\tif (setOfSeparators.has(w)) {\n\t\t\tconst mxRange = matrix[depth].slice(a, b + 1);\n\t\t\tconst mxMin = Math.min(...mxRange);\n\t\t\tconst tag = [a, ...mxRange.map((c) => c - mxMin)].join(\",\");\n\t\t\tconst ht = historyTags.get(tag);\n\t\t\tif (ht && ht.m <= mxMin) {\n\t\t\t\tgoDeeper = false;\n\t\t\t\tconst { i, w, m } = ht;\n\t\t\t\tif (i >= history.length) continue;\n\t\t\t\tif (history[i].word.slice(0, w.length) !== w) continue;\n\t\t\t\tconst dc = mxMin - m;\n\t\t\t\tfor (let p = i; p < history.length; ++p) {\n\t\t\t\t\tconst { word, cost: hCost } = history[p];\n\t\t\t\t\tif (word.slice(0, w.length) !== w) break;\n\t\t\t\t\tconst cost = hCost + dc;\n\t\t\t\t\tif (cost <= costLimit) updateCostLimit(yield {\n\t\t\t\t\t\tword: text + word.slice(w.length),\n\t\t\t\t\t\tcost\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t} else historyTags.set(tag, {\n\t\t\t\tw: text,\n\t\t\t\ti: history.length,\n\t\t\t\tm: mxMin\n\t\t\t});\n\t\t}\n\t\t/** current depth */\n\t\tconst d = depth + 1;\n\t\tconst lastSugLetter = d > 1 ? text[d - 2] : \"\";\n\t\t/** standard cost */\n\t\tconst c = bc - d + (specialSubCosts[w] || 0);\n\t\t/** insert cost */\n\t\tconst ci = c + (specialInsCosts[w] || 0);\n\t\tmatrix[d] = matrix[d] || [];\n\t\tmatrix[d][a] = matrix[d - 1][a] + ci + d - a;\n\t\tlet lastLetter = x[a];\n\t\tlet min = matrix[d][a];\n\t\tlet i;\n\t\tfor (i = a + 1; i <= b; ++i) {\n\t\t\tconst curLetter = x[i];\n\t\t\t/** current group */\n\t\t\tconst cG = visualLetterMaskMap[curLetter] || 0;\n\t\t\tconst subCost = w === curLetter ? 0 : wG & cG ? mapSubCost : curLetter === lastSugLetter ? w === lastLetter ? psc : c : c;\n\t\t\tconst e = Math.min(matrix[d - 1][i - 1] + subCost, matrix[d - 1][i] + ci, matrix[d][i - 1] + c);\n\t\t\tmin = Math.min(min, e);\n\t\t\tmatrix[d][i] = e;\n\t\t\tlastLetter = curLetter;\n\t\t}\n\t\tconst { b: bb } = stack[d - 1];\n\t\twhile (b < mx) {\n\t\t\tb += 1;\n\t\t\ti = b;\n\t\t\tconst curLetter = x[i];\n\t\t\tconst cG = visualLetterMaskMap[curLetter] || 0;\n\t\t\tconst subCost = w === curLetter ? 0 : wG & cG ? mapSubCost : curLetter === lastSugLetter ? w === lastLetter ? psc : c : c;\n\t\t\tconst j = Math.min(bb, i - 1);\n\t\t\tconst e = Math.min(matrix[d - 1][j] + subCost, matrix[d][i - 1] + c);\n\t\t\tmin = Math.min(min, e);\n\t\t\tmatrix[d][i] = e;\n\t\t\tlastLetter = curLetter;\n\t\t\tif (e > costLimit) break;\n\t\t}\n\t\tfor (; b > a && matrix[d][b] > costLimit; b -= 1);\n\t\tfor (; a < b && matrix[d][a] > costLimit; a += 1);\n\t\tb = Math.min(b + 1, mx);\n\t\tstack[d] = {\n\t\t\ta,\n\t\t\tb\n\t\t};\n\t\tconst cost = matrix[d][b];\n\t\tif (node.f && isWordTerminationNode(node) && cost <= costLimit) {\n\t\t\tconst r = {\n\t\t\t\tword: text,\n\t\t\t\tcost\n\t\t\t};\n\t\t\thistory.push(r);\n\t\t\tupdateCostLimit(yield r);\n\t\t} else updateCostLimit(yield void 0);\n\t\tgoDeeper = min <= costLimit;\n\t}\n}\n//#endregion\n//#region src/lib/trie.ts\nconst defaultLegacyMinCompoundLength = 3;\nvar Trie = class Trie {\n\t_options;\n\t_findOptionsDefaults;\n\t_findOptionsExact;\n\tisLegacy;\n\thasForbidden;\n\troot;\n\tcount;\n\tconstructor(root, count) {\n\t\tthis.root = root;\n\t\tthis.count = count;\n\t\tthis._options = mergeOptionalWithDefaults(root);\n\t\tthis.isLegacy = this.calcIsLegacy();\n\t\tthis.hasForbidden = !!root.c[root.forbiddenWordPrefix];\n\t\tthis._findOptionsDefaults = {\n\t\t\tcaseInsensitivePrefix: this._options.stripCaseAndAccentsPrefix,\n\t\t\tcompoundFix: this._options.compoundCharacter,\n\t\t\tforbidPrefix: this._options.forbiddenWordPrefix\n\t\t};\n\t\tthis._findOptionsExact = this.createFindOptions({ compoundMode: \"none\" });\n\t}\n\t/**\n\t* Number of words in the Trie\n\t*/\n\tsize() {\n\t\tthis.count = this.count ?? countWords(this.root);\n\t\treturn this.count;\n\t}\n\tisSizeKnown() {\n\t\treturn this.count !== void 0;\n\t}\n\tget options() {\n\t\treturn this._options;\n\t}\n\t/**\n\t* @param text - text to find in the Trie\n\t* @param minCompoundLength - deprecated - allows words to be glued together\n\t*/\n\tfind(text, minCompoundLength = false) {\n\t\tconst minLength = !minCompoundLength ? void 0 : minCompoundLength === true ? defaultLegacyMinCompoundLength : minCompoundLength;\n\t\tconst options = this.createFindOptions({\n\t\t\tcompoundMode: minLength ? \"legacy\" : \"compound\",\n\t\t\tlegacyMinCompoundLength: minLength\n\t\t});\n\t\treturn findWordNode(this.root, text, options).node;\n\t}\n\t/**\n\t* A case sensitive search for the word.\n\t* @param word - the word to search for.\n\t* @param minLegacyCompoundLength - minimum length of legacy compounds to consider.\n\t* @returns true if the word is found and not forbidden.\n\t*/\n\thas(word, minLegacyCompoundLength) {\n\t\tif (minLegacyCompoundLength !== void 0) return this.#hasLegacy(word, minLegacyCompoundLength);\n\t\treturn this.hasWord(word, true);\n\t}\n\t#hasLegacy(word, minLegacyCompoundLength) {\n\t\tif (this.hasWord(word, false)) return true;\n\t\tif (minLegacyCompoundLength) return !!this.findWord(word, {\n\t\t\tuseLegacyWordCompounds: minLegacyCompoundLength,\n\t\t\tcaseSensitive: false\n\t\t}).found;\n\t\treturn false;\n\t}\n\t/**\n\t* Determine if a word is in the dictionary.\n\t* @param word - the exact word to search for - must be normalized.\n\t* @param caseSensitive - false means also searching a dictionary where the words were normalized to lower case and accents removed.\n\t* @returns true if the word was found and is not forbidden.\n\t*/\n\thasWord(word, caseSensitive) {\n\t\tconst f = this.findWord(word, { caseSensitive });\n\t\treturn !!f.found && !f.forbidden;\n\t}\n\tfindWord(word, options) {\n\t\tif (options?.useLegacyWordCompounds) {\n\t\t\tconst len = options.useLegacyWordCompounds !== true ? options.useLegacyWordCompounds : defaultLegacyMinCompoundLength;\n\t\t\tconst findOptions = this.createFindOptions({\n\t\t\t\tlegacyMinCompoundLength: len,\n\t\t\t\tmatchCase: options.caseSensitive,\n\t\t\t\tcompoundSeparator: void 0\n\t\t\t});\n\t\t\treturn findLegacyCompound(this.root, word, findOptions);\n\t\t}\n\t\tif (options?.compoundSeparator) return findWord(this.root, word, this.createFindOptions({\n\t\t\tmatchCase: options.caseSensitive,\n\t\t\tcompoundSeparator: options.compoundSeparator\n\t\t}));\n\t\tconst findOptions = this.createFindOptionsMatchCase(options?.caseSensitive);\n\t\treturn findWord(this.root, word, findOptions);\n\t}\n\t/**\n\t* Determine if a word is in the forbidden word list.\n\t* @param word the word to lookup.\n\t*/\n\tisForbiddenWord(word) {\n\t\treturn this.hasForbidden && isForbiddenWord(this.root, word, this.options.forbiddenWordPrefix);\n\t}\n\t/**\n\t* Provides an ordered sequence of words with the prefix of text.\n\t*/\n\tcompleteWord(text) {\n\t\tconst n = this.find(text);\n\t\tconst compoundChar = this.options.compoundCharacter;\n\t\tconst subNodes = pipeSync(iteratorTrieWords(n || {}), opFilterSync((w) => w[w.length - 1] !== compoundChar), opMapSync((suffix) => text + suffix));\n\t\treturn pipeSync(n && isWordTerminationNode(n) ? [text] : [], opAppendSync(subNodes));\n\t}\n\t/**\n\t* Suggest spellings for `text`.  The results are sorted by edit distance with changes near the beginning of a word having a greater impact.\n\t* @param text - the text to search for\n\t* @param maxNumSuggestions - the maximum number of suggestions to return.\n\t* @param compoundMethod - Use to control splitting words.\n\t* @param numChanges - the maximum number of changes allowed to text. This is an approximate value, since some changes cost less than others.\n\t*                      the lower the value, the faster results are returned. Values less than 4 are best.\n\t*/\n\tsuggest(text, options) {\n\t\treturn this.suggestWithCost(text, options).map((a) => a.word);\n\t}\n\t/**\n\t* Suggest spellings for `text`.  The results are sorted by edit distance with changes near the beginning of a word having a greater impact.\n\t* The results include the word and adjusted edit cost.  This is useful for merging results from multiple tries.\n\t*/\n\tsuggestWithCost(text, options) {\n\t\tconst sep = options.compoundSeparator;\n\t\tconst adjWord = sep ? replaceAllFactory(sep, \"\") : (a) => a;\n\t\tconst optFilter = options.filter;\n\t\tconst filter = optFilter ? (word, cost) => {\n\t\t\tconst w = adjWord(word);\n\t\t\treturn !this.isForbiddenWord(w) && optFilter(w, cost);\n\t\t} : (word) => !this.isForbiddenWord(adjWord(word));\n\t\tconst opts = {\n\t\t\t...options,\n\t\t\tfilter\n\t\t};\n\t\treturn suggest(this.root, text, opts);\n\t}\n\t/**\n\t* genSuggestions will generate suggestions and send them to `collector`. `collector` is responsible for returning the max acceptable cost.\n\t* Costs are measured in weighted changes. A cost of 100 is the same as 1 edit. Some edits are considered cheaper.\n\t* Returning a MaxCost < 0 will effectively cause the search for suggestions to stop.\n\t*/\n\tgenSuggestions(collector, compoundMethod) {\n\t\tconst filter = (word) => !this.isForbiddenWord(word);\n\t\tconst options = clean({\n\t\t\tcompoundMethod,\n\t\t\t...collector.genSuggestionOptions\n\t\t});\n\t\tconst suggestions = genSuggestions(this.root, collector.word, options);\n\t\tcollector.collect(suggestions, void 0, filter);\n\t}\n\t/**\n\t* Returns an iterator that can be used to get all words in the trie. For some dictionaries, this can result in millions of words.\n\t*/\n\t*words(prefix) {\n\t\tif (!prefix) {\n\t\t\tyield* iteratorTrieWords(this.root);\n\t\t\treturn;\n\t\t}\n\t\tconst node = this.find(prefix);\n\t\tif (!node) return;\n\t\tif (node.f) yield prefix;\n\t\tfor (const suffix of iteratorTrieWords(node)) yield prefix + suffix;\n\t}\n\t/**\n\t* Allows iteration over the entire tree.\n\t* On the returned Iterator, calling .next(goDeeper: boolean), allows for controlling the depth.\n\t*/\n\titerate() {\n\t\treturn walker(this.root);\n\t}\n\tinsert(word) {\n\t\tinsert(word, this.root);\n\t\treturn this;\n\t}\n\tcalcIsLegacy() {\n\t\tconst c = this.root.c;\n\t\treturn !(c && c[this._options.compoundCharacter] || c[this._options.stripCaseAndAccentsPrefix] || c[this._options.forbiddenWordPrefix]);\n\t}\n\tstatic create(words, options) {\n\t\tconst root = createTrieRootFromList(words, options);\n\t\torderTrie(root);\n\t\treturn new Trie(root, void 0);\n\t}\n\tcreateFindOptions(options = {}) {\n\t\treturn createFindOptions({\n\t\t\t...this._findOptionsDefaults,\n\t\t\t...options\n\t\t});\n\t}\n\tlastCreateFindOptionsMatchCaseMap = /* @__PURE__ */ new Map();\n\tcreateFindOptionsMatchCase(matchCase) {\n\t\tconst f = this.lastCreateFindOptionsMatchCaseMap.get(matchCase);\n\t\tif (f !== void 0) return f;\n\t\tconst findOptions = this.createFindOptions({ matchCase });\n\t\tthis.lastCreateFindOptionsMatchCaseMap.set(matchCase, findOptions);\n\t\treturn findOptions;\n\t}\n};\n//#endregion\n//#region src/lib/utils/secondChanceCache.ts\nvar SecondChanceCache = class {\n\tmap0 = /* @__PURE__ */ new Map();\n\tmap1 = /* @__PURE__ */ new Map();\n\tmaxL0Size;\n\tconstructor(maxL0Size) {\n\t\tthis.maxL0Size = maxL0Size;\n\t}\n\thas(key) {\n\t\tif (this.map0.has(key)) return true;\n\t\tif (this.map1.has(key)) {\n\t\t\tthis.set(key, this.get1(key));\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tget(key) {\n\t\treturn this.map0.get(key) ?? this.get1(key);\n\t}\n\tset(key, value) {\n\t\tif (this.map0.size >= this.maxL0Size && !this.map0.has(key)) {\n\t\t\tthis.map1 = this.map0;\n\t\t\tthis.map0 = /* @__PURE__ */ new Map();\n\t\t}\n\t\tthis.map0.set(key, value);\n\t\treturn this;\n\t}\n\tget size() {\n\t\treturn this.map0.size + this.map1.size;\n\t}\n\tget size0() {\n\t\treturn this.map0.size;\n\t}\n\tget size1() {\n\t\treturn this.map1.size;\n\t}\n\tclear() {\n\t\tthis.map0.clear();\n\t\tthis.map1.clear();\n\t\treturn this;\n\t}\n\tget1(key) {\n\t\tif (this.map1.has(key)) {\n\t\t\tconst v = this.map1.get(key);\n\t\t\tthis.map1.delete(key);\n\t\t\tthis.map0.set(key, v);\n\t\t\treturn v;\n\t\t}\n\t}\n\ttoArray() {\n\t\treturn [...this.map1, ...this.map0];\n\t}\n};\n//#endregion\n//#region src/lib/TrieBuilder.ts\n/**\n* Builds an optimized Trie from a Iterable<string>. It attempts to reduce the size of the trie\n* by finding common endings.\n* @param words Iterable set of words -- no processing is done on the words, they are inserted as is.\n* @param trieOptions options for the Trie\n*/\nfunction buildTrie(words, trieOptions) {\n\treturn new TrieBuilder(words, trieOptions).build();\n}\n/**\n* Builds a Trie from a Iterable<string>. NO attempt a reducing the size of the Trie is done.\n* @param words Iterable set of words -- no processing is done on the words, they are inserted as is.\n* @param trieOptions options for the Trie\n*/\nfunction buildTrieFast(words, trieOptions) {\n\treturn new Trie(createTrieRootFromList(words, trieOptions), void 0);\n}\nconst MAX_NUM_SIGS = 1e5;\nconst MAX_TRANSFORMS = 1e6;\nconst MAX_CACHE_SIZE = 1e6;\nvar TrieBuilder = class {\n\tcount = 0;\n\tsignatures = new SecondChanceCache(MAX_NUM_SIGS);\n\tcached = new SecondChanceCache(MAX_CACHE_SIZE);\n\ttransforms = new SecondChanceCache(MAX_TRANSFORMS);\n\t_eow;\n\t/** position 0 of lastPath is always the root */\n\tlastPath = [{\n\t\ts: \"\",\n\t\tn: {\n\t\t\tid: 0,\n\t\t\tf: void 0,\n\t\t\tc: void 0\n\t\t}\n\t}];\n\ttails = /* @__PURE__ */ new Map();\n\ttrieOptions;\n\tnumWords = 0;\n\t_debug_lastWordsInserted = [];\n\t_debug_mode = false;\n\tconstructor(words, trieOptions) {\n\t\tthis._eow = this.#createNodeFrozen(1);\n\t\tthis.tails.set(\"\", this._eow);\n\t\tthis.#canBeCached(this._eow);\n\t\tthis.signatures.set(this.#signature(this._eow), this._eow);\n\t\tthis.cached.set(this._eow, this._eow.id ?? ++this.count);\n\t\tthis.trieOptions = Object.freeze(mergeOptionalWithDefaults(trieOptions));\n\t\tif (words) this.insert(words);\n\t}\n\tget _root() {\n\t\treturn trieNodeToRoot(this.lastPath[0].n, this.trieOptions);\n\t}\n\t#signature(n) {\n\t\tconst isWord = n.f ? \"*\" : \"\";\n\t\tconst entries = n.c ? Object.entries(n.c) : void 0;\n\t\tconst c = entries ? entries.map(([k, n]) => [k, this.cached.get(n)]) : void 0;\n\t\treturn isWord + (c ? JSON.stringify(c) : \"\");\n\t}\n\t#canBeCached(n) {\n\t\tif (!n.c) return true;\n\t\tfor (const v of Object.values(n.c)) if (!this.cached.has(v)) return false;\n\t\treturn true;\n\t}\n\t#tryCacheFrozen(n) {\n\t\tassertFrozen(n);\n\t\tif (this.cached.has(n)) return n;\n\t\tthis.cached.set(n, n.id ?? ++this.count);\n\t\treturn n;\n\t}\n\t#freeze(n) {\n\t\tif (Object.isFrozen(n)) return n;\n\t\t// istanbul ignore else\n\t\tif (n.c) {\n\t\t\tconst c = Object.entries(n.c).sort((a, b) => a[0] < b[0] ? -1 : 1).map(([k, n]) => [k, this.#freeze(n)]);\n\t\t\tn.c = Object.fromEntries(c);\n\t\t\tObject.freeze(n.c);\n\t\t}\n\t\treturn Object.freeze(n);\n\t}\n\t#tryToCache(n) {\n\t\tif (!this.#canBeCached(n)) return n;\n\t\tconst sig = this.#signature(n);\n\t\tconst ref = this.signatures.get(sig);\n\t\tif (ref !== void 0) return this.#tryCacheFrozen(ref);\n\t\tthis.signatures.set(sig, this.#freeze(n));\n\t\treturn n;\n\t}\n\t#storeTransform(src, s, result) {\n\t\tif (!Object.isFrozen(result) || !Object.isFrozen(src)) return;\n\t\tthis.#logDebug(\"storeTransform\", () => ({\n\t\t\ts,\n\t\t\tsrc: this.#debNodeInfo(src),\n\t\t\tresult: this.#debNodeInfo(result)\n\t\t}));\n\t\tconst t = this.transforms.get(src) ?? /* @__PURE__ */ new Map();\n\t\tt.set(s, result);\n\t\tthis.transforms.set(src, t);\n\t}\n\t#addChild(node, head, child) {\n\t\tif (node.c?.[head] !== child) {\n\t\t\tlet c = node.c || Object.create(null);\n\t\t\tif (Object.isFrozen(c)) c = Object.assign(Object.create(null), c);\n\t\t\tc[head] = child;\n\t\t\tif (Object.isFrozen(node)) node = this.#createNode(node.f, c);\n\t\t\telse node.c = c;\n\t\t}\n\t\treturn Object.isFrozen(child) ? this.#tryToCache(node) : node;\n\t}\n\t#buildTail(s) {\n\t\tconst ss = s.join(\"\");\n\t\tconst v = this.tails.get(ss);\n\t\tif (v) return v;\n\t\tconst head = s[0];\n\t\tconst tail = s.slice(1);\n\t\tconst t = this.tails.get(tail.join(\"\"));\n\t\tconst c = t || this.#buildTail(tail);\n\t\tconst n = this.#addChild(this.#createNode(), head, c);\n\t\tif (!t) return n;\n\t\tconst cachedNode = this.#tryCacheFrozen(this.#freeze(n));\n\t\tthis.tails.set(ss, cachedNode);\n\t\treturn cachedNode;\n\t}\n\t#_insert(node, s, d) {\n\t\tthis.#logDebug(\"_insert\", () => ({\n\t\t\tn: this.#debNodeInfo(node),\n\t\t\ts,\n\t\t\td,\n\t\t\tw: this.lastPath.map((a) => a.s).join(\"\")\n\t\t}));\n\t\tconst orig = node;\n\t\tif (Object.isFrozen(node)) {\n\t\t\tconst n = this.transforms.get(node)?.get(s.join(\"\"));\n\t\t\tif (n) return this.#tryCacheFrozen(n);\n\t\t}\n\t\tif (!s.length) if (!node.c) return this._eow;\n\t\telse {\n\t\t\tnode = this.#copyIfFrozen(node);\n\t\t\tnode.f = this._eow.f;\n\t\t\treturn node;\n\t\t}\n\t\tconst head = s[0];\n\t\tconst tail = s.slice(1);\n\t\tconst cNode = node.c?.[head];\n\t\tconst child = cNode ? this.#_insert(cNode, tail, d + 1) : this.#buildTail(tail);\n\t\tnode = this.#addChild(node, head, child);\n\t\tthis.#storeTransform(orig, s.join(\"\"), node);\n\t\tthis.lastPath[d] = {\n\t\t\ts: head,\n\t\t\tn: child\n\t\t};\n\t\treturn node;\n\t}\n\tinsertWord(word) {\n\t\tthis.#logDebug(\"insertWord\", word);\n\t\tthis._debug_lastWordsInserted[this.numWords & 15] = word;\n\t\tthis.numWords++;\n\t\tconst chars = [...word];\n\t\tlet d = 1;\n\t\tfor (const s of chars) {\n\t\t\tif (this.lastPath[d]?.s !== s) break;\n\t\t\td++;\n\t\t}\n\t\tif (chars.length < d) d = chars.length;\n\t\tthis.lastPath.length = d;\n\t\td -= 1;\n\t\tconst { n } = this.lastPath[d];\n\t\tconst tail = chars.slice(d);\n\t\tthis.lastPath[d].n = this.#_insert(n, tail, d + 1);\n\t\twhile (d > 0) {\n\t\t\tconst { s, n } = this.lastPath[d];\n\t\t\td -= 1;\n\t\t\tconst parent = this.lastPath[d];\n\t\t\tconst pn = parent.n;\n\t\t\tparent.n = this.#addChild(pn, s, n);\n\t\t\tif (pn === parent.n) break;\n\t\t\tconst tail = chars.slice(d);\n\t\t\tthis.#storeTransform(pn, tail.join(\"\"), parent.n);\n\t\t}\n\t}\n\tinsert(words) {\n\t\tfor (const w of words) w && this.insertWord(w);\n\t}\n\t/**\n\t* Resets the builder\n\t*/\n\treset() {\n\t\tthis.lastPath = [{\n\t\t\ts: \"\",\n\t\t\tn: {\n\t\t\t\tid: 0,\n\t\t\t\tf: void 0,\n\t\t\t\tc: void 0\n\t\t\t}\n\t\t}];\n\t\tthis.cached.clear();\n\t\tthis.signatures.clear();\n\t\tthis.signatures.set(this.#signature(this._eow), this._eow);\n\t\tthis.count = 0;\n\t\tthis.cached.set(this._eow, this._eow.id ?? ++this.count);\n\t}\n\tbuild(consolidateSuffixes = false) {\n\t\tconst root = this._root;\n\t\tthis.reset();\n\t\tconst check = checkCircular(this._root);\n\t\tif (check.isCircular) {\n\t\t\tconst { word, pos } = check.ref;\n\t\t\tconsole.error(\"Circular Reference %o\", {\n\t\t\t\tword,\n\t\t\t\tpos\n\t\t\t});\n\t\t\tthrow new Error(\"Trie: Circular Reference\");\n\t\t}\n\t\treturn new Trie(consolidateSuffixes ? consolidate(root) : root);\n\t}\n\t#debNodeInfo(node) {\n\t\treturn {\n\t\t\tid: node.id ?? \"?\",\n\t\t\tcid: this.cached.get(node) ?? \"?\",\n\t\t\tf: node.f || 0,\n\t\t\tc: node.c ? Object.fromEntries(Object.entries(node.c).map(([k, n]) => [k, {\n\t\t\t\tid: n.id,\n\t\t\t\tr: this.cached.get(n)\n\t\t\t}])) : void 0,\n\t\t\tL: Object.isFrozen(node)\n\t\t};\n\t}\n\t#logDebug(methodName, contentOrFunction) {\n\t\tthis.#runDebug(() => {\n\t\t\tconst content = typeof contentOrFunction === \"function\" ? contentOrFunction() : contentOrFunction;\n\t\t\tconsole.warn(\"%s: %o\", methodName, content);\n\t\t});\n\t}\n\t#runDebug(method) {\n\t\tif (this._debug_mode) method();\n\t}\n\t#copyIfFrozen(n) {\n\t\tif (!Object.isFrozen(n)) return n;\n\t\tconst c = n.c ? Object.assign(Object.create(null), n.c) : void 0;\n\t\treturn this.#createNode(n.f, c);\n\t}\n\t#createNodeFrozen(f, c) {\n\t\treturn this.#freeze(this.#createNode(f, c));\n\t}\n\t#createNode(f, c) {\n\t\treturn {\n\t\t\tid: ++this.count,\n\t\t\tf,\n\t\t\tc\n\t\t};\n\t}\n};\nfunction assertFrozen(n) {\n\tif (!(\"id\" in n)) console.warn(\"%o\", n);\n\tif (!Object.isFrozen(n) || !(\"id\" in n)) throw new Error(\"Must be TrieNodeExFrozen\");\n}\n//#endregion\n//#region src/lib/utils/normalizeWord.ts\n/**\n* Normalize word unicode.\n* @param text - text to normalize\n* @returns returns a word normalized to `NFC`\n*/\nconst normalizeWord = (text) => text.normalize();\n/**\n* converts text to lower case and removes any accents.\n* @param text - text to convert\n* @returns lowercase word without accents\n* @deprecated true\n*/\nconst normalizeWordToLowercase = (text) => text.toLowerCase().normalize(\"NFD\").replaceAll(/\\p{M}/gu, \"\");\n/**\n* generate case insensitive forms of a word\n* @param text - text to convert\n* @returns the forms of the word.\n*/\nconst normalizeWordForCaseInsensitive = (text) => {\n\tconst t = text.toLowerCase();\n\treturn [t, t.normalize(\"NFD\").replaceAll(/\\p{M}/gu, \"\")];\n};\n//#endregion\n//#region src/lib/SimpleDictionaryParser.ts\nconst BATCH_SIZE = 0;\nconst _defaultOptions = {\n\tcommentCharacter: \"#\",\n\toptionalCompoundCharacter: \"*\",\n\tcompoundCharacter: \"+\",\n\tforbiddenPrefix: \"!\",\n\tcaseInsensitivePrefix: \"~\",\n\tkeepExactPrefix: \"=\",\n\tstripCaseAndAccents: true,\n\tstripCaseAndAccentsKeepDuplicate: false,\n\tstripCaseAndAccentsOnForbidden: false,\n\tsplit: false,\n\tsplitKeepBoth: false,\n\tsplitSeparator: /[\\s,;]/g,\n\tkeepOptionalCompoundCharacter: false,\n\tsuggestionPrefix: \":\",\n\tdisableSuggestionHandling: false,\n\tmakeWordsForbidden: false\n};\nObject.freeze(_defaultOptions);\nconst cSpellToolDirective = \"cspell-dictionary:\";\n/**\n* Normalizes a dictionary words based upon prefix / suffixes.\n* Case insensitive versions are also generated.\n* @param options - defines prefixes used when parsing lines.\n* @returns words that have been normalized.\n*/\nfunction createDictionaryLineParserMapper(options) {\n\tconst _options = options || _defaultOptions;\n\tconst { commentCharacter = _defaultOptions.commentCharacter, optionalCompoundCharacter: optionalCompound = _defaultOptions.optionalCompoundCharacter, compoundCharacter: compound = _defaultOptions.compoundCharacter, caseInsensitivePrefix: ignoreCase = _defaultOptions.caseInsensitivePrefix, forbiddenPrefix: forbidden = _defaultOptions.forbiddenPrefix, keepExactPrefix: keepCase = _defaultOptions.keepExactPrefix, splitSeparator = _defaultOptions.splitSeparator, splitKeepBoth = _defaultOptions.splitKeepBoth, stripCaseAndAccentsKeepDuplicate = _defaultOptions.stripCaseAndAccentsKeepDuplicate, stripCaseAndAccentsOnForbidden = _defaultOptions.stripCaseAndAccentsOnForbidden, keepOptionalCompoundCharacter = _defaultOptions.keepOptionalCompoundCharacter, makeWordsForbidden = _defaultOptions.makeWordsForbidden } = _options;\n\tlet { stripCaseAndAccents = !makeWordsForbidden && _defaultOptions.stripCaseAndAccents, split = _defaultOptions.split, suggestionPrefix = _defaultOptions.suggestionPrefix } = _options;\n\tconst disableSuggestionHandling = _options.disableSuggestionHandling || [\n\t\t\"\",\n\t\t\" \",\n\t\t\"\t\",\n\t\t\"\\0\"\n\t].includes(suggestionPrefix);\n\tif (disableSuggestionHandling) suggestionPrefix = \" \";\n\tfunction isString(line) {\n\t\treturn typeof line === \"string\";\n\t}\n\tfunction trim(line) {\n\t\treturn line.trim();\n\t}\n\tfunction removeComments(line) {\n\t\tconst idx = line.indexOf(commentCharacter);\n\t\tif (idx < 0) return line;\n\t\tconst idxDirective = line.indexOf(cSpellToolDirective, idx);\n\t\tif (idxDirective >= 0) {\n\t\t\tconst flags = line.slice(idxDirective).split(/[\\s,;]/g).map((s) => s.trim()).filter((a) => !!a);\n\t\t\tfor (const flag of flags) switch (flag) {\n\t\t\t\tcase \"split\":\n\t\t\t\t\tsplit = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"no-split\":\n\t\t\t\t\tsplit = false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"no-generate-alternatives\":\n\t\t\t\t\tstripCaseAndAccents = false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"generate-alternatives\":\n\t\t\t\t\tstripCaseAndAccents = true;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn line.slice(0, idx).trim();\n\t}\n\tfunction filterEmptyLines(line) {\n\t\treturn !!line;\n\t}\n\tfunction* mapOptionalPrefix(line) {\n\t\tif (line[0] === optionalCompound) {\n\t\t\tconst t = line.slice(1);\n\t\t\tyield t;\n\t\t\tyield compound + t;\n\t\t} else yield line;\n\t}\n\tfunction* mapOptionalSuffix(line) {\n\t\tif (line.slice(-1) === optionalCompound) {\n\t\t\tconst t = line.slice(0, -1);\n\t\t\tyield t;\n\t\t\tyield t + compound;\n\t\t} else yield line;\n\t}\n\tconst doNotNormalizePrefix = Object.create(null);\n\t[\n\t\tignoreCase,\n\t\tkeepCase,\n\t\t\"\\\"\"\n\t].forEach((prefix) => doNotNormalizePrefix[prefix] = true);\n\tif (!stripCaseAndAccentsOnForbidden) doNotNormalizePrefix[forbidden] = true;\n\tfunction removeDoublePrefix(w) {\n\t\treturn w.startsWith(ignoreCase + ignoreCase) ? w.slice(1) : w;\n\t}\n\tfunction stripKeepCasePrefixAndQuotes(word) {\n\t\tword = word.replaceAll(/\"(.*?)\"/g, \"$1\");\n\t\treturn word[0] === keepCase ? word.slice(1) : word;\n\t}\n\tfunction _normalize(word) {\n\t\treturn normalizeWord(stripKeepCasePrefixAndQuotes(word));\n\t}\n\tfunction* handleForbiddenPrefix(words) {\n\t\tif (!makeWordsForbidden) {\n\t\t\tyield* words;\n\t\t\treturn;\n\t\t}\n\t\tconst f = forbidden;\n\t\tconst ff = f + f;\n\t\tconst sug = suggestionPrefix;\n\t\tfor (const word of words) {\n\t\t\tif (word.startsWith(sug)) {\n\t\t\t\tyield word;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tyield (f + word).replaceAll(ff, \"\");\n\t\t}\n\t}\n\tfunction* mapNormalize(word) {\n\t\tconst nWord = _normalize(word);\n\t\tconst forms = /* @__PURE__ */ new Set();\n\t\tforms.add(nWord);\n\t\tif (stripCaseAndAccents && !(word[0] in doNotNormalizePrefix)) for (const n of normalizeWordForCaseInsensitive(nWord)) (stripCaseAndAccentsKeepDuplicate || n !== nWord) && forms.add(ignoreCase + n);\n\t\tyield* forms;\n\t}\n\tfunction* splitWords(lines) {\n\t\tfor (const line of lines) {\n\t\t\tif (split) {\n\t\t\t\tyield* splitLine(line.includes(\"\\\"\") ? line.replaceAll(/\".*?\"/g, (quoted) => \" \" + quoted.replaceAll(/(\\s)/g, \"\\\\$1\") + \" \") : line, splitSeparator).map((escaped) => escaped.replaceAll(\"\\\\\", \"\"));\n\t\t\t\tif (!splitKeepBoth) continue;\n\t\t\t}\n\t\t\tyield line;\n\t\t}\n\t}\n\tfunction* splitLines(paragraphs) {\n\t\tfor (const paragraph of paragraphs) yield* paragraph.split(\"\\n\");\n\t}\n\t/**\n\t* Handle suggestion lines.\n\t* `:` is the default suggestions prefix.\n\t*\n\t* The format can be:\n\t* - `:word:suggestion1` # word with a single preferred suggestion (note: it is only a suggestion.)\n\t* - `:word : suggestion1` # word with a single preferred suggestion (space will be removed).\n\t* - `:word:suggestion1,suggestion2` # word with multiple preferred suggestions\n\t* - `:word -> suggestion1, suggestion2` # word with multiple preferred suggestions (alternate format)\n\t* - `:word:suggestion1,suggestion2` # this is purely a suggestion entry.\n\t* - `!word:suggestion1,suggestion2` # forbidden word with suggestions.\n\t* - `word:suggestion1,suggestion2` # normal word with suggestions, the word is included in the dictionary.\n\t*\n\t* They are stored in the dictionary with the following format:\n\t*   `<prefix><word><suggestionPrefix><index><suggestionPrefix><suggestion>`\n\t*\n\t*\n\t* Example forbidden word with suggestions:\n\t* - `!word` the word itself\n\t* - `!word:0:first_suggestion` the word itself\n\t* - `!word:1:second_suggestion` the word itself\n\t* @param lines\n\t*/\n\tfunction* handleSuggestions(lines) {\n\t\tif (disableSuggestionHandling) {\n\t\t\tyield* lines;\n\t\t\treturn;\n\t\t}\n\t\tfor (const line of lines) yield* handleSuggestion(line);\n\t}\n\tconst r = /^\\s*(?<prefix>[!:~]*)(?<word>.*?)(?:->|:([0-9a-f]{1,2}:)?)(?<suggestions>.*)$/;\n\tconst suggestionSequence = /* @__PURE__ */ new Map();\n\tconst knownSuggestions = /* @__PURE__ */ new Set();\n\tfunction addSuggestion(word, suggestion) {\n\t\tconst p = suggestionPrefix;\n\t\tconst pp = p + p;\n\t\tconst n = suggestionSequence.get(word) || 0;\n\t\tconst k = word + pp + suggestion;\n\t\tif (knownSuggestions.has(k)) return;\n\t\tknownSuggestions.add(k);\n\t\tsuggestionSequence.set(word, n + 1);\n\t\treturn k.replace(pp, p + n.toString(16) + p);\n\t}\n\tfunction* handleSuggestion(line) {\n\t\tconst hasAltFormat = line.includes(\"->\");\n\t\tif (!line.includes(\":\") && !hasAltFormat) {\n\t\t\tyield line;\n\t\t\treturn;\n\t\t}\n\t\tconst m = line.match(r);\n\t\tif (!m || !m.groups) {\n\t\t\tyield line;\n\t\t\treturn;\n\t\t}\n\t\tconst prefix = m.groups[\"prefix\"] || \"\";\n\t\tconst word = (m.groups[\"word\"] || \"\").trim();\n\t\tconst suggestions = (m.groups[\"suggestions\"] || \"\").split(\",\").map((s) => s.trim()).filter((s) => !!s);\n\t\tif (!prefix.includes(\":\")) yield prefix + word;\n\t\tconst ww = \":\" + word;\n\t\tyield ww;\n\t\tfor (let i = 0; i < suggestions.length; i++) {\n\t\t\tconst sug = addSuggestion(ww, suggestions[i]);\n\t\t\tif (sug) yield sug;\n\t\t}\n\t}\n\tconst mapCompounds = keepOptionalCompoundCharacter ? [] : [opConcatMapSync(mapOptionalPrefix), opConcatMapSync(mapOptionalSuffix)];\n\tconst optionalOperators = [];\n\tif (options?.sortBatchSize) optionalOperators.push(createBatchAndSortLines(options.sortBatchSize));\n\treturn opCombineSync(opFilterSync(isString), splitLines, opMapSync(removeComments), splitWords, opMapSync(trim), opFilterSync(filterEmptyLines), handleSuggestions, ...mapCompounds, opConcatMapSync(mapNormalize), handleForbiddenPrefix, opMapSync(removeDoublePrefix), ...optionalOperators);\n}\n/**\n* Normalizes a dictionary words based upon prefix / suffixes.\n* Case insensitive versions are also generated.\n* @param lines - one word per line\n* @param _options - defines prefixes used when parsing lines.\n* @returns words that have been normalized.\n*/\nfunction parseDictionaryLines(lines, options) {\n\treturn createDictionaryLineParserMapper(options)(typeof lines === \"string\" ? [lines] : lines);\n}\nfunction parseLinesToDictionaryLegacy(lines, options) {\n\tconst dictLines = parseDictionaryLines(lines, mergeOptions(_defaultOptions, options, { disableSuggestionHandling: true }));\n\treturn buildTrieFast([...new Set(dictLines)].sort(), trieInfoFromOptions(options));\n}\nfunction parseDictionaryLegacy(text, options) {\n\treturn parseLinesToDictionaryLegacy(typeof text === \"string\" ? text.split(\"\\n\") : text, options);\n}\nfunction parseLinesToDictionary(lines, options) {\n\tconst endPerf = measurePerf(\"parseLinesToDictionary\");\n\tconst dictLines = parseDictionaryLines(lines, mergeOptions(_defaultOptions, options));\n\tconst words = [...new Set(dictLines)].sort();\n\tconst { optimize, useStringTable } = options || {};\n\tconst t = buildITrieFromWords(words, trieInfoFromOptions(options), {\n\t\toptimize,\n\t\tuseStringTable\n\t});\n\tendPerf();\n\treturn t;\n}\nfunction parseDictionary(text, options) {\n\treturn parseLinesToDictionary(typeof text === \"string\" ? text.split(\"\\n\") : text, options);\n}\nfunction trieInfoFromOptions(options) {\n\tconst info = extractTrieInfo(options);\n\tconst sugPrefix = info.suggestionPrefix ?? \":\";\n\tif (options?.disableSuggestionHandling || sugPrefix !== \":\") info.suggestionPrefix = \" \";\n\treturn info;\n}\nfunction mergeOptions(base, ...partials) {\n\tconst opt = { ...base };\n\tfor (const p of partials) {\n\t\tif (!p) continue;\n\t\tObject.assign(opt, p);\n\t}\n\treturn opt;\n}\nconst RegExpToEncode = /\\\\([\\s,;])/g;\nconst RegExpDecode = /<<(%[\\da-f]{2})>>/gi;\nfunction encodeLine(line) {\n\treturn line.replaceAll(RegExpToEncode, (_, v) => \"<<\" + encodeURIComponent(v) + \">>\");\n}\nfunction decodeLine(line) {\n\treturn line.replaceAll(RegExpDecode, (_, v) => \"\\\\\" + decodeURIComponent(v));\n}\nfunction splitLine(line, regExp) {\n\treturn encodeLine(line).split(regExp).map((line) => decodeLine(line));\n}\nfunction createBatchAndSortLines(batchSize = BATCH_SIZE) {\n\tif (batchSize <= 1) return (s) => s;\n\tfunction* batchAndSortLines(lines) {\n\t\tconst maxSize = batchSize;\n\t\tconst batch = Array(maxSize);\n\t\tlet i = 0;\n\t\tfor (const line of lines) {\n\t\t\tbatch[i++] = line;\n\t\t\tif (i >= maxSize) {\n\t\t\t\tbatch.sort();\n\t\t\t\tyield* batch;\n\t\t\t\ti = 0;\n\t\t\t}\n\t\t}\n\t\tbatch.length = i;\n\t\tbatch.sort();\n\t\tyield* batch;\n\t}\n\treturn batchAndSortLines;\n}\n//#endregion\n//#region src/lib/utils/decompress.ts\nasync function decompress(data, method = \"gzip\") {\n\tconst ds = new DecompressionStream(method);\n\tconst writer = ds.writable.getWriter();\n\tconst reader = ds.readable.getReader();\n\ttry {\n\t\tconst pWrite = writer.write(data).then(() => writer.close());\n\t\tconst chunks = [];\n\t\tlet size = 0;\n\t\twhile (true) {\n\t\t\tconst chunk = await reader.read();\n\t\t\tif (chunk.done) break;\n\t\t\tchunks.push(chunk.value);\n\t\t\tsize += chunk.value.length;\n\t\t}\n\t\tconst result = new Uint8Array(size);\n\t\tfor (let offset = 0, i = 0; i < chunks.length; i++) {\n\t\t\tresult.set(chunks[i], offset);\n\t\t\toffset += chunks[i].length;\n\t\t}\n\t\tawait pWrite;\n\t\treturn result;\n\t} finally {\n\t\treader.releaseLock();\n\t\twriter.releaseLock();\n\t}\n}\n//#endregion\n//#region src/lib/decodeTrie.ts\nfunction decodeTrie(raw) {\n\tconst endPerf = measurePerf(\"decodeTrie\");\n\tconst t = new ITrieImpl(decodeTrieData(raw));\n\tendPerf();\n\treturn t;\n}\nasync function decodeFile(file, options) {\n\tlet pathname = file.url.pathname;\n\tlet content = file.content;\n\tif (pathname.endsWith(\".gz\")) {\n\t\tpathname = pathname.slice(0, -3);\n\t\tif (typeof content !== \"string\") content = await decompress(content, \"gzip\");\n\t}\n\tif (pathname.endsWith(\".trie\") || pathname.endsWith(\".btrie\")) return decodeTrie(content);\n\treturn parseDictionary(typeof content === \"string\" ? content : new TextDecoder().decode(content), options);\n}\nasync function convertToBTrie(file, options) {\n\tconst bTrieData = encodeITrieToBTrie(await decodeFile(file, options), options);\n\tconst url = new URL(file.url);\n\turl.pathname = url.pathname.replaceAll(/\\.gz$/g, \"\");\n\turl.pathname = url.pathname.split(\".\").slice(0, -1).join(\".\") + \".btrie\";\n\treturn {\n\t\turl,\n\t\tcontent: bTrieData\n\t};\n}\n//#endregion\n//#region src/lib/io/importExportV3.ts\nconst specialCharacters = stringToCharSet([\n\t\"$\",\n\t\"<\",\n\t\"\\n\",\n\t\"#\",\n\t\";\",\n\t\"\\\\\",\n\t\"\\r\",\n\t\"0123456789\",\n\t\"`~!@#$%^&*()_-+=[]{};:'\\\"<>,./?\\\\|\"\n].join(\"\"));\nconst specialCharacterMap = new Map([\n\t[\"\\n\", \"\\\\n\"],\n\t[\"\\r\", \"\\\\r\"],\n\t[\"\\\\\", \"\\\\\\\\\"]\n]);\nconst specialPrefix = stringToCharSet(\"~!\");\nconst WORDS_PER_LINE = 20;\nconst DATA = \"__DATA__\";\nfunction generateHeader(base, comment) {\n\treturn [\n\t\t\"#!/usr/bin/env cspell-trie reader\",\n\t\t\"TrieXv3\",\n\t\t\"base=\" + base,\n\t\t...comment ? comment.split(\"\\n\").map((a) => \"# \" + a) : [],\n\t\t\"# Data:\",\n\t\tDATA\n\t].map((a) => a + \"\\n\");\n}\n/**\n* Serialize a TrieRoot.\n*/\nfunction serializeTrie$1(root, options = 16) {\n\toptions = typeof options === \"number\" ? {\n\t\tbase: options,\n\t\taddLineBreaksToImproveDiffs: false\n\t} : options;\n\tconst { base = 16, comment = \"\", addLineBreaksToImproveDiffs: addBreaks = true } = options;\n\tconst radix = base > 36 ? 36 : base < 10 ? 10 : base;\n\tconst cache = /* @__PURE__ */ new Map();\n\tconst cacheShouldRef = /* @__PURE__ */ new Map();\n\tlet count = 0;\n\tconst backBuffer = {\n\t\tlast: \"\",\n\t\tcount: 0,\n\t\twords: 0,\n\t\teol: false\n\t};\n\tconst optimizeSimpleReferences = options.optimizeSimpleReferences ?? false;\n\tconst wordChars = [];\n\tfunction ref(n) {\n\t\treturn \"#\" + n.toString(radix) + \";\";\n\t}\n\tfunction escape(s) {\n\t\treturn s in specialCharacters ? \"\\\\\" + (specialCharacterMap.get(s) || s) : s;\n\t}\n\tfunction* flush() {\n\t\twhile (backBuffer.count) {\n\t\t\tconst n = Math.min(9, backBuffer.count);\n\t\t\tyield n > 1 ? backBuffer.last + n : backBuffer.last;\n\t\t\tbackBuffer.last = \"<\";\n\t\t\tbackBuffer.count -= n;\n\t\t}\n\t\tif (backBuffer.eol) {\n\t\t\tyield \"\\n\";\n\t\t\tbackBuffer.eol = false;\n\t\t\tbackBuffer.words = 0;\n\t\t}\n\t}\n\tfunction* emit(s) {\n\t\tswitch (s) {\n\t\t\tcase \"$\":\n\t\t\t\tyield* flush();\n\t\t\t\tbackBuffer.last = \"$\";\n\t\t\t\tbackBuffer.count = 0;\n\t\t\t\tbackBuffer.words++;\n\t\t\t\tbreak;\n\t\t\tcase \"<\":\n\t\t\t\tbackBuffer.count++;\n\t\t\t\tbreak;\n\t\t\tcase \"\\n\":\n\t\t\t\tbackBuffer.eol = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (backBuffer.words >= WORDS_PER_LINE) backBuffer.eol = true;\n\t\t\t\tyield* flush();\n\t\t\t\tif (s.startsWith(\"#\")) backBuffer.words++;\n\t\t\t\tyield s;\n\t\t}\n\t}\n\tfunction* walk(node, depth) {\n\t\tconst r = cache.get(node);\n\t\tif (r !== void 0 && (!optimizeSimpleReferences || !shouldSimpleRef(node))) {\n\t\t\tyield* emit(ref(r));\n\t\t\treturn;\n\t\t}\n\t\tif (node.c) {\n\t\t\tif (addBreaks && depth > 0 && depth <= 2) yield* emit(\"\\n\");\n\t\t\tcache.set(node, count++);\n\t\t\tconst c = Object.entries(node.c).sort((a, b) => a[0] < b[0] ? -1 : 1);\n\t\t\tfor (const [s, n] of c) {\n\t\t\t\twordChars[depth] = s;\n\t\t\t\tyield* emit(escape(s));\n\t\t\t\tyield* walk(n, depth + 1);\n\t\t\t\tyield* emit(\"<\");\n\t\t\t\tif (depth === 0) yield* emit(\"\\n\");\n\t\t\t}\n\t\t}\n\t\tif (node.f) yield* emit(\"$\");\n\t\tif (addBreaks && (depth === 2 || depth === 3 && wordChars[0] in specialPrefix)) yield* emit(\"\\n\");\n\t}\n\tfunction* serialize(node) {\n\t\tyield* walk(node, 0);\n\t\tyield* flush();\n\t}\n\tfunction _calcShouldSimpleRef(node) {\n\t\tif (!node.c) return false;\n\t\tconst values = Object.values(node.c);\n\t\tif (values.length !== 1) return false;\n\t\tconst n = values[0];\n\t\treturn !!n.f && (!n.c || !Object.values(n.c).length);\n\t}\n\tfunction shouldSimpleRef(node) {\n\t\tconst r = cacheShouldRef.get(node);\n\t\tif (r !== void 0) return r;\n\t\tconst rr = _calcShouldSimpleRef(node);\n\t\tcacheShouldRef.set(node, rr);\n\t\treturn rr;\n\t}\n\treturn pipeSync(generateHeader(radix, comment), opAppendSync(bufferLines(serialize(root), 1200, \"\")));\n}\nfunction importTrie$1(srcLines) {\n\treturn importTrieV3AsTrieRoot(srcLines).root;\n}\nfunction stringToCharSet(values) {\n\tconst set = Object.create(null);\n\tconst len = values.length;\n\tfor (let i = 0; i < len; ++i) set[values[i]] = true;\n\treturn set;\n}\n//#endregion\n//#region src/lib/io/importExport.ts\nconst serializers = [\n\tserializeTrie$4,\n\tserializeTrie$4,\n\tserializeTrie$3,\n\tserializeTrie$1,\n\tserializeTrie$2\n];\nconst deserializers = [\n\timportTrie$5,\n\timportTrie$5,\n\timportTrie$4,\n\timportTrie$1,\n\timportTrie$3\n];\nconst DEFAULT_VERSION = 3;\n/**\n* Serialize a TrieNode.\n* Note: This is destructive.  The node will no longer be usable.\n* Even though it is possible to preserve the trie, dealing with very large tries can consume a lot of memory.\n* Considering this is the last step before exporting, it was decided to let this be destructive.\n*/\nfunction serializeTrie(root, options = 16) {\n\tconst version = typeof options !== \"number\" && options.version ? options.version : DEFAULT_VERSION;\n\tconst method = serializers[version];\n\tif (!method) throw new Error(`Unknown version: ${version}`);\n\treturn method(root, options);\n}\nconst headerReg = /^\\s*TrieXv(\\d+)/m;\nfunction importTrie(input) {\n\tconst lines = Array.isArray(input) ? input : typeof input === \"string\" ? input.split(\"\\n\") : [...input];\n\tfunction parseHeaderRows(headerRows) {\n\t\tfor (let i = 0; i < headerRows.length; ++i) {\n\t\t\tconst match = headerRows[i].match(headerReg);\n\t\t\tif (match) return Number.parseInt(match[1], 10);\n\t\t}\n\t\tthrow new Error(\"Unknown file format\");\n\t}\n\tfunction readHeader(iter) {\n\t\tconst headerRows = [];\n\t\tfor (const entry of iter) {\n\t\t\tconst line = entry.trim();\n\t\t\theaderRows.push(line);\n\t\t\tif (line === \"*\" || line === \"__DATA__\") break;\n\t\t}\n\t\treturn headerRows;\n\t}\n\tconst version = parseHeaderRows(readHeader(lines));\n\tconst method = deserializers[version];\n\tif (!method) throw new Error(`Unsupported version: ${version}`);\n\treturn method(lines);\n}\n//#endregion\n//#region src/lib/models/locale/knownLocales.ts\nconst codes = [\n\t[\"af\", \"Afrikaans\"],\n\t[\n\t\t\"af-NA\",\n\t\t\"Afrikaans\",\n\t\t\"Namibia\"\n\t],\n\t[\n\t\t\"af-ZA\",\n\t\t\"Afrikaans\",\n\t\t\"South Africa\"\n\t],\n\t[\"ak\", \"Akan\"],\n\t[\n\t\t\"ak-GH\",\n\t\t\"Akan\",\n\t\t\"Ghana\"\n\t],\n\t[\"am\", \"Amharic\"],\n\t[\n\t\t\"am-ET\",\n\t\t\"Amharic\",\n\t\t\"Ethiopia\"\n\t],\n\t[\"ar\", \"Arabic\"],\n\t[\"ar-1\", \"Arabic\"],\n\t[\n\t\t\"ar-AE\",\n\t\t\"Arabic\",\n\t\t\"United Arab Emirates\"\n\t],\n\t[\n\t\t\"ar-BH\",\n\t\t\"Arabic\",\n\t\t\"Bahrain\"\n\t],\n\t[\n\t\t\"ar-DJ\",\n\t\t\"Arabic\",\n\t\t\"Djibouti\"\n\t],\n\t[\n\t\t\"ar-DZ\",\n\t\t\"Arabic\",\n\t\t\"Algeria\"\n\t],\n\t[\n\t\t\"ar-EG\",\n\t\t\"Arabic\",\n\t\t\"Egypt\"\n\t],\n\t[\"ar-EH\", \"Arabic\"],\n\t[\n\t\t\"ar-ER\",\n\t\t\"Arabic\",\n\t\t\"Eritrea\"\n\t],\n\t[\n\t\t\"ar-IL\",\n\t\t\"Arabic\",\n\t\t\"Israel\"\n\t],\n\t[\n\t\t\"ar-IQ\",\n\t\t\"Arabic\",\n\t\t\"Iraq\"\n\t],\n\t[\n\t\t\"ar-JO\",\n\t\t\"Arabic\",\n\t\t\"Jordan\"\n\t],\n\t[\n\t\t\"ar-KM\",\n\t\t\"Arabic\",\n\t\t\"Comoros\"\n\t],\n\t[\n\t\t\"ar-KW\",\n\t\t\"Arabic\",\n\t\t\"Kuwait\"\n\t],\n\t[\n\t\t\"ar-LB\",\n\t\t\"Arabic\",\n\t\t\"Lebanon\"\n\t],\n\t[\n\t\t\"ar-LY\",\n\t\t\"Arabic\",\n\t\t\"Libya\"\n\t],\n\t[\n\t\t\"ar-MA\",\n\t\t\"Arabic\",\n\t\t\"Morocco\"\n\t],\n\t[\n\t\t\"ar-MR\",\n\t\t\"Arabic\",\n\t\t\"Mauritania\"\n\t],\n\t[\n\t\t\"ar-OM\",\n\t\t\"Arabic\",\n\t\t\"Oman\"\n\t],\n\t[\"ar-PS\", \"Arabic\"],\n\t[\n\t\t\"ar-QA\",\n\t\t\"Arabic\",\n\t\t\"Qatar\"\n\t],\n\t[\n\t\t\"ar-SA\",\n\t\t\"Arabic\",\n\t\t\"Saudi Arabia\"\n\t],\n\t[\n\t\t\"ar-SD\",\n\t\t\"Arabic\",\n\t\t\"Sudan\"\n\t],\n\t[\n\t\t\"ar-SO\",\n\t\t\"Arabic\",\n\t\t\"Somalia\"\n\t],\n\t[\"ar-SS\", \"Arabic\"],\n\t[\n\t\t\"ar-SY\",\n\t\t\"Arabic\",\n\t\t\"Syria\"\n\t],\n\t[\n\t\t\"ar-TD\",\n\t\t\"Arabic\",\n\t\t\"Chad\"\n\t],\n\t[\n\t\t\"ar-TN\",\n\t\t\"Arabic\",\n\t\t\"Tunisia\"\n\t],\n\t[\n\t\t\"ar-YE\",\n\t\t\"Arabic\",\n\t\t\"Yemen\"\n\t],\n\t[\"as\", \"Assamese\"],\n\t[\n\t\t\"as-IN\",\n\t\t\"Assamese\",\n\t\t\"India\"\n\t],\n\t[\"az\", \"Azerbaijani\"],\n\t[\n\t\t\"az-AZ\",\n\t\t\"Azerbaijani\",\n\t\t\"Azerbaijan\"\n\t],\n\t[\"be\", \"Belarusian\"],\n\t[\n\t\t\"be-BY\",\n\t\t\"Belarusian\",\n\t\t\"Belarus\"\n\t],\n\t[\"bg\", \"Bulgarian\"],\n\t[\n\t\t\"bg-BG\",\n\t\t\"Bulgarian\",\n\t\t\"Bulgaria\"\n\t],\n\t[\"bm\", \"Bambara\"],\n\t[\n\t\t\"bm-ML\",\n\t\t\"Bambara\",\n\t\t\"Mali\"\n\t],\n\t[\"bn\", \"Bengali\"],\n\t[\n\t\t\"bn-BD\",\n\t\t\"Bengali\",\n\t\t\"Bangladesh\"\n\t],\n\t[\n\t\t\"bn-IN\",\n\t\t\"Bengali\",\n\t\t\"India\"\n\t],\n\t[\"bo\", \"Tibetan\"],\n\t[\n\t\t\"bo-CN\",\n\t\t\"Tibetan\",\n\t\t\"China\"\n\t],\n\t[\n\t\t\"bo-IN\",\n\t\t\"Tibetan\",\n\t\t\"India\"\n\t],\n\t[\"br\", \"Breton\"],\n\t[\n\t\t\"br-FR\",\n\t\t\"Breton\",\n\t\t\"France\"\n\t],\n\t[\"bs\", \"Bosnian\"],\n\t[\n\t\t\"bs-BA\",\n\t\t\"Bosnian\",\n\t\t\"Bosnia and Herzegovina\"\n\t],\n\t[\"ca\", \"Catalan\"],\n\t[\n\t\t\"ca-AD\",\n\t\t\"Catalan\",\n\t\t\"Andorra\"\n\t],\n\t[\n\t\t\"ca-ES\",\n\t\t\"Catalan\",\n\t\t\"Spain\"\n\t],\n\t[\n\t\t\"ca-FR\",\n\t\t\"Catalan\",\n\t\t\"France\"\n\t],\n\t[\n\t\t\"ca-IT\",\n\t\t\"Catalan\",\n\t\t\"Italy\"\n\t],\n\t[\"ce\", \"Chechen\"],\n\t[\n\t\t\"ce-RU\",\n\t\t\"Chechen\",\n\t\t\"Russia\"\n\t],\n\t[\"cs\", \"Czech\"],\n\t[\n\t\t\"cs-CZ\",\n\t\t\"Czech\",\n\t\t\"Czech Republic\"\n\t],\n\t[\"cu\", \"Old Slavonic\"],\n\t[\n\t\t\"cu-RU\",\n\t\t\"Old Slavonic\",\n\t\t\"Russia\"\n\t],\n\t[\"cy\", \"Welsh\"],\n\t[\n\t\t\"cy-GB\",\n\t\t\"Welsh\",\n\t\t\"United Kingdom\"\n\t],\n\t[\"da\", \"Danish\"],\n\t[\n\t\t\"da-DK\",\n\t\t\"Danish\",\n\t\t\"Denmark\"\n\t],\n\t[\n\t\t\"da-GL\",\n\t\t\"Danish\",\n\t\t\"Greenland\"\n\t],\n\t[\"de\", \"German\"],\n\t[\n\t\t\"de-AT\",\n\t\t\"German\",\n\t\t\"Austria\"\n\t],\n\t[\n\t\t\"de-BE\",\n\t\t\"German\",\n\t\t\"Belgium\"\n\t],\n\t[\n\t\t\"de-CH\",\n\t\t\"German\",\n\t\t\"Switzerland\"\n\t],\n\t[\n\t\t\"de-DE\",\n\t\t\"German\",\n\t\t\"Germany\"\n\t],\n\t[\n\t\t\"de-IT\",\n\t\t\"German\",\n\t\t\"Italy\"\n\t],\n\t[\n\t\t\"de-LI\",\n\t\t\"German\",\n\t\t\"Liechtenstein\"\n\t],\n\t[\n\t\t\"de-LU\",\n\t\t\"German\",\n\t\t\"Luxembourg\"\n\t],\n\t[\"dz\", \"Dzongkha\"],\n\t[\n\t\t\"dz-BT\",\n\t\t\"Dzongkha\",\n\t\t\"Bhutan\"\n\t],\n\t[\"ee\", \"Ewe\"],\n\t[\n\t\t\"ee-GH\",\n\t\t\"Ewe\",\n\t\t\"Ghana\"\n\t],\n\t[\n\t\t\"ee-TG\",\n\t\t\"Ewe\",\n\t\t\"Togo\"\n\t],\n\t[\n\t\t\"el\",\n\t\t\"Greek\",\n\t\t\"Modern (1453-)\"\n\t],\n\t[\n\t\t\"el-CY\",\n\t\t\"Greek\",\n\t\t\"Cyprus\"\n\t],\n\t[\n\t\t\"el-GR\",\n\t\t\"Greek\",\n\t\t\"Greece\"\n\t],\n\t[\"en\", \"English\"],\n\t[\n\t\t\"en-AG\",\n\t\t\"English\",\n\t\t\"Antigua and Barbuda\"\n\t],\n\t[\n\t\t\"en-AI\",\n\t\t\"English\",\n\t\t\"Anguilla\"\n\t],\n\t[\n\t\t\"en-AS\",\n\t\t\"English\",\n\t\t\"American Samoa\"\n\t],\n\t[\n\t\t\"en-AT\",\n\t\t\"English\",\n\t\t\"Austria\"\n\t],\n\t[\n\t\t\"en-AU\",\n\t\t\"English\",\n\t\t\"Australia\"\n\t],\n\t[\n\t\t\"en-BB\",\n\t\t\"English\",\n\t\t\"Barbados\"\n\t],\n\t[\n\t\t\"en-BE\",\n\t\t\"English\",\n\t\t\"Belgium\"\n\t],\n\t[\n\t\t\"en-BI\",\n\t\t\"English\",\n\t\t\"Burundi\"\n\t],\n\t[\n\t\t\"en-BM\",\n\t\t\"English\",\n\t\t\"Bermuda\"\n\t],\n\t[\n\t\t\"en-BS\",\n\t\t\"English\",\n\t\t\"Bahamas\"\n\t],\n\t[\n\t\t\"en-BW\",\n\t\t\"English\",\n\t\t\"Botswana\"\n\t],\n\t[\n\t\t\"en-BZ\",\n\t\t\"English\",\n\t\t\"Belize\"\n\t],\n\t[\n\t\t\"en-CA\",\n\t\t\"English\",\n\t\t\"Canada\"\n\t],\n\t[\n\t\t\"en-CC\",\n\t\t\"English\",\n\t\t\"Cocos (Keeling) Islands\"\n\t],\n\t[\n\t\t\"en-CH\",\n\t\t\"English\",\n\t\t\"Switzerland\"\n\t],\n\t[\n\t\t\"en-CK\",\n\t\t\"English\",\n\t\t\"Cook Islands\"\n\t],\n\t[\n\t\t\"en-CM\",\n\t\t\"English\",\n\t\t\"Cameroon\"\n\t],\n\t[\n\t\t\"en-CX\",\n\t\t\"English\",\n\t\t\"Christmas Island\"\n\t],\n\t[\n\t\t\"en-CY\",\n\t\t\"English\",\n\t\t\"Cyprus\"\n\t],\n\t[\n\t\t\"en-DE\",\n\t\t\"English\",\n\t\t\"Germany\"\n\t],\n\t[\"en-DG\", \"English\"],\n\t[\n\t\t\"en-DK\",\n\t\t\"English\",\n\t\t\"Denmark\"\n\t],\n\t[\n\t\t\"en-DM\",\n\t\t\"English\",\n\t\t\"Dominica\"\n\t],\n\t[\n\t\t\"en-ER\",\n\t\t\"English\",\n\t\t\"Eritrea\"\n\t],\n\t[\n\t\t\"en-FI\",\n\t\t\"English\",\n\t\t\"Finland\"\n\t],\n\t[\n\t\t\"en-FJ\",\n\t\t\"English\",\n\t\t\"Fiji\"\n\t],\n\t[\n\t\t\"en-FK\",\n\t\t\"English\",\n\t\t\"Falkland Islands (Islas Malvinas)\"\n\t],\n\t[\n\t\t\"en-FM\",\n\t\t\"English\",\n\t\t\"Micronesia\"\n\t],\n\t[\n\t\t\"en-GB\",\n\t\t\"English\",\n\t\t\"United Kingdom\"\n\t],\n\t[\n\t\t\"en-GD\",\n\t\t\"English\",\n\t\t\"Grenada\"\n\t],\n\t[\n\t\t\"en-GG\",\n\t\t\"English\",\n\t\t\"Guernsey\"\n\t],\n\t[\n\t\t\"en-GH\",\n\t\t\"English\",\n\t\t\"Ghana\"\n\t],\n\t[\n\t\t\"en-GI\",\n\t\t\"English\",\n\t\t\"Gibraltar\"\n\t],\n\t[\n\t\t\"en-GM\",\n\t\t\"English\",\n\t\t\"Gambia\"\n\t],\n\t[\n\t\t\"en-GU\",\n\t\t\"English\",\n\t\t\"Guam\"\n\t],\n\t[\n\t\t\"en-GY\",\n\t\t\"English\",\n\t\t\"Guyana\"\n\t],\n\t[\n\t\t\"en-HK\",\n\t\t\"English\",\n\t\t\"Hong Kong\"\n\t],\n\t[\n\t\t\"en-IE\",\n\t\t\"English\",\n\t\t\"Ireland\"\n\t],\n\t[\n\t\t\"en-IL\",\n\t\t\"English\",\n\t\t\"Israel\"\n\t],\n\t[\n\t\t\"en-IM\",\n\t\t\"English\",\n\t\t\"Isle of Man\"\n\t],\n\t[\n\t\t\"en-IN\",\n\t\t\"English\",\n\t\t\"India\"\n\t],\n\t[\n\t\t\"en-IO\",\n\t\t\"English\",\n\t\t\"British Indian Ocean Territory\"\n\t],\n\t[\n\t\t\"en-JE\",\n\t\t\"English\",\n\t\t\"Jersey\"\n\t],\n\t[\n\t\t\"en-JM\",\n\t\t\"English\",\n\t\t\"Jamaica\"\n\t],\n\t[\n\t\t\"en-KE\",\n\t\t\"English\",\n\t\t\"Kenya\"\n\t],\n\t[\n\t\t\"en-KI\",\n\t\t\"English\",\n\t\t\"Kiribati\"\n\t],\n\t[\n\t\t\"en-KN\",\n\t\t\"English\",\n\t\t\"Saint Kitts and Nevis\"\n\t],\n\t[\n\t\t\"en-KY\",\n\t\t\"English\",\n\t\t\"Cayman Islands\"\n\t],\n\t[\n\t\t\"en-LC\",\n\t\t\"English\",\n\t\t\"Saint Lucia\"\n\t],\n\t[\n\t\t\"en-LR\",\n\t\t\"English\",\n\t\t\"Liberia\"\n\t],\n\t[\n\t\t\"en-LS\",\n\t\t\"English\",\n\t\t\"Lesotho\"\n\t],\n\t[\n\t\t\"en-MG\",\n\t\t\"English\",\n\t\t\"Madagascar\"\n\t],\n\t[\n\t\t\"en-MH\",\n\t\t\"English\",\n\t\t\"Marshall Islands\"\n\t],\n\t[\n\t\t\"en-MO\",\n\t\t\"English\",\n\t\t\"Macau\"\n\t],\n\t[\n\t\t\"en-MP\",\n\t\t\"English\",\n\t\t\"Northern Mariana Islands\"\n\t],\n\t[\n\t\t\"en-MS\",\n\t\t\"English\",\n\t\t\"Montserrat\"\n\t],\n\t[\n\t\t\"en-MT\",\n\t\t\"English\",\n\t\t\"Malta\"\n\t],\n\t[\n\t\t\"en-MU\",\n\t\t\"English\",\n\t\t\"Mauritius\"\n\t],\n\t[\n\t\t\"en-MW\",\n\t\t\"English\",\n\t\t\"Malawi\"\n\t],\n\t[\n\t\t\"en-MY\",\n\t\t\"English\",\n\t\t\"Malaysia\"\n\t],\n\t[\n\t\t\"en-NA\",\n\t\t\"English\",\n\t\t\"Namibia\"\n\t],\n\t[\n\t\t\"en-NF\",\n\t\t\"English\",\n\t\t\"Norfolk Island\"\n\t],\n\t[\n\t\t\"en-NG\",\n\t\t\"English\",\n\t\t\"Nigeria\"\n\t],\n\t[\n\t\t\"en-NL\",\n\t\t\"English\",\n\t\t\"Netherlands\"\n\t],\n\t[\n\t\t\"en-NR\",\n\t\t\"English\",\n\t\t\"Nauru\"\n\t],\n\t[\n\t\t\"en-NU\",\n\t\t\"English\",\n\t\t\"Niue\"\n\t],\n\t[\n\t\t\"en-NZ\",\n\t\t\"English\",\n\t\t\"New Zealand\"\n\t],\n\t[\n\t\t\"en-PG\",\n\t\t\"English\",\n\t\t\"Papua New Guinea\"\n\t],\n\t[\n\t\t\"en-PH\",\n\t\t\"English\",\n\t\t\"Philippines\"\n\t],\n\t[\n\t\t\"en-PK\",\n\t\t\"English\",\n\t\t\"Pakistan\"\n\t],\n\t[\n\t\t\"en-PN\",\n\t\t\"English\",\n\t\t\"Pitcairn Islands\"\n\t],\n\t[\n\t\t\"en-PR\",\n\t\t\"English\",\n\t\t\"Puerto Rico\"\n\t],\n\t[\n\t\t\"en-PW\",\n\t\t\"English\",\n\t\t\"Palau\"\n\t],\n\t[\n\t\t\"en-RW\",\n\t\t\"English\",\n\t\t\"Rwanda\"\n\t],\n\t[\n\t\t\"en-SB\",\n\t\t\"English\",\n\t\t\"Solomon Islands\"\n\t],\n\t[\n\t\t\"en-SC\",\n\t\t\"English\",\n\t\t\"Seychelles\"\n\t],\n\t[\n\t\t\"en-SD\",\n\t\t\"English\",\n\t\t\"Sudan\"\n\t],\n\t[\n\t\t\"en-SE\",\n\t\t\"English\",\n\t\t\"Sweden\"\n\t],\n\t[\n\t\t\"en-SG\",\n\t\t\"English\",\n\t\t\"Singapore\"\n\t],\n\t[\n\t\t\"en-SH\",\n\t\t\"English\",\n\t\t\"Saint Helena\"\n\t],\n\t[\n\t\t\"en-SI\",\n\t\t\"English\",\n\t\t\"Slovenia\"\n\t],\n\t[\n\t\t\"en-SL\",\n\t\t\"English\",\n\t\t\"Sierra Leone\"\n\t],\n\t[\"en-SS\", \"English\"],\n\t[\"en-SX\", \"English\"],\n\t[\n\t\t\"en-SZ\",\n\t\t\"English\",\n\t\t\"Swaziland\"\n\t],\n\t[\n\t\t\"en-TC\",\n\t\t\"English\",\n\t\t\"Turks and Caicos Islands\"\n\t],\n\t[\n\t\t\"en-TK\",\n\t\t\"English\",\n\t\t\"Tokelau\"\n\t],\n\t[\n\t\t\"en-TO\",\n\t\t\"English\",\n\t\t\"Tonga\"\n\t],\n\t[\n\t\t\"en-TT\",\n\t\t\"English\",\n\t\t\"Trinidad and Tobago\"\n\t],\n\t[\n\t\t\"en-TV\",\n\t\t\"English\",\n\t\t\"Tuvalu\"\n\t],\n\t[\n\t\t\"en-TZ\",\n\t\t\"English\",\n\t\t\"Tanzania\"\n\t],\n\t[\n\t\t\"en-UG\",\n\t\t\"English\",\n\t\t\"Uganda\"\n\t],\n\t[\n\t\t\"en-UM\",\n\t\t\"English\",\n\t\t\"Baker Island\"\n\t],\n\t[\n\t\t\"en-US\",\n\t\t\"English\",\n\t\t\"United States\"\n\t],\n\t[\n\t\t\"en-VC\",\n\t\t\"English\",\n\t\t\"Saint Vincent and the Grenadines\"\n\t],\n\t[\n\t\t\"en-VG\",\n\t\t\"English\",\n\t\t\"British Virgin Islands\"\n\t],\n\t[\n\t\t\"en-VI\",\n\t\t\"English\",\n\t\t\"U.S. Virgin Islands\"\n\t],\n\t[\n\t\t\"en-VU\",\n\t\t\"English\",\n\t\t\"Vanuatu\"\n\t],\n\t[\n\t\t\"en-WS\",\n\t\t\"English\",\n\t\t\"Samoa\"\n\t],\n\t[\n\t\t\"en-ZA\",\n\t\t\"English\",\n\t\t\"South Africa\"\n\t],\n\t[\n\t\t\"en-ZM\",\n\t\t\"English\",\n\t\t\"Zambia\"\n\t],\n\t[\n\t\t\"en-ZW\",\n\t\t\"English\",\n\t\t\"Zimbabwe\"\n\t],\n\t[\"eo\", \"Esperanto\"],\n\t[\"es\", \"Spanish\"],\n\t[\n\t\t\"es-AR\",\n\t\t\"Spanish\",\n\t\t\"Argentina\"\n\t],\n\t[\n\t\t\"es-BO\",\n\t\t\"Spanish\",\n\t\t\"Bolivia\"\n\t],\n\t[\n\t\t\"es-BR\",\n\t\t\"Spanish\",\n\t\t\"Brazil\"\n\t],\n\t[\n\t\t\"es-BZ\",\n\t\t\"Spanish\",\n\t\t\"Belize\"\n\t],\n\t[\n\t\t\"es-CL\",\n\t\t\"Spanish\",\n\t\t\"Chile\"\n\t],\n\t[\n\t\t\"es-CO\",\n\t\t\"Spanish\",\n\t\t\"Colombia\"\n\t],\n\t[\n\t\t\"es-CR\",\n\t\t\"Spanish\",\n\t\t\"Costa Rica\"\n\t],\n\t[\n\t\t\"es-CU\",\n\t\t\"Spanish\",\n\t\t\"Cuba\"\n\t],\n\t[\n\t\t\"es-DO\",\n\t\t\"Spanish\",\n\t\t\"Dominican Republic\"\n\t],\n\t[\"es-EA\", \"Spanish\"],\n\t[\n\t\t\"es-EC\",\n\t\t\"Spanish\",\n\t\t\"Ecuador\"\n\t],\n\t[\n\t\t\"es-ES\",\n\t\t\"Spanish\",\n\t\t\"Spain\"\n\t],\n\t[\n\t\t\"es-GQ\",\n\t\t\"Spanish\",\n\t\t\"Equatorial Guinea\"\n\t],\n\t[\n\t\t\"es-GT\",\n\t\t\"Spanish\",\n\t\t\"Guatemala\"\n\t],\n\t[\n\t\t\"es-HN\",\n\t\t\"Spanish\",\n\t\t\"Honduras\"\n\t],\n\t[\"es-IC\", \"Spanish\"],\n\t[\n\t\t\"es-MX\",\n\t\t\"Spanish\",\n\t\t\"Mexico\"\n\t],\n\t[\n\t\t\"es-NI\",\n\t\t\"Spanish\",\n\t\t\"Nicaragua\"\n\t],\n\t[\n\t\t\"es-PA\",\n\t\t\"Spanish\",\n\t\t\"Panama\"\n\t],\n\t[\n\t\t\"es-PE\",\n\t\t\"Spanish\",\n\t\t\"Peru\"\n\t],\n\t[\n\t\t\"es-PH\",\n\t\t\"Spanish\",\n\t\t\"Philippines\"\n\t],\n\t[\n\t\t\"es-PR\",\n\t\t\"Spanish\",\n\t\t\"Puerto Rico\"\n\t],\n\t[\n\t\t\"es-PY\",\n\t\t\"Spanish\",\n\t\t\"Paraguay\"\n\t],\n\t[\n\t\t\"es-SV\",\n\t\t\"Spanish\",\n\t\t\"El Salvador\"\n\t],\n\t[\n\t\t\"es-US\",\n\t\t\"Spanish\",\n\t\t\"United States\"\n\t],\n\t[\n\t\t\"es-UY\",\n\t\t\"Spanish\",\n\t\t\"Uruguay\"\n\t],\n\t[\n\t\t\"es-VE\",\n\t\t\"Spanish\",\n\t\t\"Venezuela\"\n\t],\n\t[\"et\", \"Estonian\"],\n\t[\n\t\t\"et-EE\",\n\t\t\"Estonian\",\n\t\t\"Estonia\"\n\t],\n\t[\"eu\", \"Basque\"],\n\t[\n\t\t\"eu-ES\",\n\t\t\"Basque\",\n\t\t\"Spain\"\n\t],\n\t[\"fa\", \"Persian\"],\n\t[\n\t\t\"fa-AF\",\n\t\t\"Persian\",\n\t\t\"Afghanistan\"\n\t],\n\t[\n\t\t\"fa-IR\",\n\t\t\"Persian\",\n\t\t\"Iran\"\n\t],\n\t[\"ff\", \"Fulah\"],\n\t[\n\t\t\"ff-CM\",\n\t\t\"Fulah\",\n\t\t\"Cameroon\"\n\t],\n\t[\n\t\t\"ff-GN\",\n\t\t\"Fulah\",\n\t\t\"Guinea\"\n\t],\n\t[\n\t\t\"ff-MR\",\n\t\t\"Fulah\",\n\t\t\"Mauritania\"\n\t],\n\t[\n\t\t\"ff-SN\",\n\t\t\"Fulah\",\n\t\t\"Senegal\"\n\t],\n\t[\"fi\", \"Finnish\"],\n\t[\n\t\t\"fi-FI\",\n\t\t\"Finnish\",\n\t\t\"Finland\"\n\t],\n\t[\"fo\", \"Faroese\"],\n\t[\n\t\t\"fo-DK\",\n\t\t\"Faroese\",\n\t\t\"Denmark\"\n\t],\n\t[\n\t\t\"fo-FO\",\n\t\t\"Faroese\",\n\t\t\"Faroe Islands\"\n\t],\n\t[\"fr\", \"French\"],\n\t[\n\t\t\"fr-BE\",\n\t\t\"French\",\n\t\t\"Belgium\"\n\t],\n\t[\n\t\t\"fr-BF\",\n\t\t\"French\",\n\t\t\"Burkina Faso\"\n\t],\n\t[\n\t\t\"fr-BI\",\n\t\t\"French\",\n\t\t\"Burundi\"\n\t],\n\t[\n\t\t\"fr-BJ\",\n\t\t\"French\",\n\t\t\"Benin\"\n\t],\n\t[\"fr-BL\", \"French\"],\n\t[\n\t\t\"fr-CA\",\n\t\t\"French\",\n\t\t\"Canada\"\n\t],\n\t[\n\t\t\"fr-CD\",\n\t\t\"French\",\n\t\t\"Congo\"\n\t],\n\t[\n\t\t\"fr-CF\",\n\t\t\"French\",\n\t\t\"Central African Republic\"\n\t],\n\t[\n\t\t\"fr-CG\",\n\t\t\"French\",\n\t\t\"Congo\"\n\t],\n\t[\n\t\t\"fr-CH\",\n\t\t\"French\",\n\t\t\"Switzerland\"\n\t],\n\t[\"fr-CI\", \"French, Cote d'Ivoire (Ivory Coast)\"],\n\t[\n\t\t\"fr-CM\",\n\t\t\"French\",\n\t\t\"Cameroon\"\n\t],\n\t[\n\t\t\"fr-DJ\",\n\t\t\"French\",\n\t\t\"Djibouti\"\n\t],\n\t[\n\t\t\"fr-DZ\",\n\t\t\"French\",\n\t\t\"Algeria\"\n\t],\n\t[\n\t\t\"fr-FR\",\n\t\t\"French\",\n\t\t\"France\"\n\t],\n\t[\n\t\t\"fr-GA\",\n\t\t\"French\",\n\t\t\"Gabon\"\n\t],\n\t[\n\t\t\"fr-GF\",\n\t\t\"French\",\n\t\t\"French Guiana\"\n\t],\n\t[\n\t\t\"fr-GN\",\n\t\t\"French\",\n\t\t\"Guinea\"\n\t],\n\t[\n\t\t\"fr-GP\",\n\t\t\"French\",\n\t\t\"Saint Barthelemy\"\n\t],\n\t[\n\t\t\"fr-GQ\",\n\t\t\"French\",\n\t\t\"Equatorial Guinea\"\n\t],\n\t[\n\t\t\"fr-HT\",\n\t\t\"French\",\n\t\t\"Haiti\"\n\t],\n\t[\n\t\t\"fr-KM\",\n\t\t\"French\",\n\t\t\"Comoros\"\n\t],\n\t[\n\t\t\"fr-LU\",\n\t\t\"French\",\n\t\t\"Luxembourg\"\n\t],\n\t[\n\t\t\"fr-MA\",\n\t\t\"French\",\n\t\t\"Morocco\"\n\t],\n\t[\n\t\t\"fr-MC\",\n\t\t\"French\",\n\t\t\"Monaco\"\n\t],\n\t[\"fr-MF\", \"French\"],\n\t[\n\t\t\"fr-MG\",\n\t\t\"French\",\n\t\t\"Madagascar\"\n\t],\n\t[\n\t\t\"fr-ML\",\n\t\t\"French\",\n\t\t\"Mali\"\n\t],\n\t[\n\t\t\"fr-MQ\",\n\t\t\"French\",\n\t\t\"Martinique\"\n\t],\n\t[\n\t\t\"fr-MR\",\n\t\t\"French\",\n\t\t\"Mauritania\"\n\t],\n\t[\n\t\t\"fr-MU\",\n\t\t\"French\",\n\t\t\"Mauritius\"\n\t],\n\t[\n\t\t\"fr-NC\",\n\t\t\"French\",\n\t\t\"New Caledonia\"\n\t],\n\t[\n\t\t\"fr-NE\",\n\t\t\"French\",\n\t\t\"Niger\"\n\t],\n\t[\n\t\t\"fr-PF\",\n\t\t\"French\",\n\t\t\"French Polynesia\"\n\t],\n\t[\n\t\t\"fr-PM\",\n\t\t\"French\",\n\t\t\"Saint Pierre and Miquelon\"\n\t],\n\t[\n\t\t\"fr-RE\",\n\t\t\"French\",\n\t\t\"Reunion\"\n\t],\n\t[\n\t\t\"fr-RW\",\n\t\t\"French\",\n\t\t\"Rwanda\"\n\t],\n\t[\n\t\t\"fr-SC\",\n\t\t\"French\",\n\t\t\"Seychelles\"\n\t],\n\t[\n\t\t\"fr-SN\",\n\t\t\"French\",\n\t\t\"Senegal\"\n\t],\n\t[\n\t\t\"fr-SY\",\n\t\t\"French\",\n\t\t\"Syria\"\n\t],\n\t[\n\t\t\"fr-TD\",\n\t\t\"French\",\n\t\t\"Chad\"\n\t],\n\t[\n\t\t\"fr-TG\",\n\t\t\"French\",\n\t\t\"Togo\"\n\t],\n\t[\n\t\t\"fr-TN\",\n\t\t\"French\",\n\t\t\"Tunisia\"\n\t],\n\t[\n\t\t\"fr-VU\",\n\t\t\"French\",\n\t\t\"Vanuatu\"\n\t],\n\t[\n\t\t\"fr-WF\",\n\t\t\"French\",\n\t\t\"Wallis and Futuna\"\n\t],\n\t[\n\t\t\"fr-YT\",\n\t\t\"French\",\n\t\t\"Mayotte\"\n\t],\n\t[\"fy\", \"Western Frisian\"],\n\t[\n\t\t\"fy-NL\",\n\t\t\"Western Frisian\",\n\t\t\"Netherlands\"\n\t],\n\t[\"ga\", \"Irish\"],\n\t[\n\t\t\"ga-IE\",\n\t\t\"Irish\",\n\t\t\"Ireland\"\n\t],\n\t[\"gd\", \"Gaelic\"],\n\t[\n\t\t\"gd-GB\",\n\t\t\"Gaelic\",\n\t\t\"United Kingdom\"\n\t],\n\t[\"gl\", \"Galician\"],\n\t[\n\t\t\"gl-ES\",\n\t\t\"Galician\",\n\t\t\"Spain\"\n\t],\n\t[\"gu\", \"Gujarati\"],\n\t[\n\t\t\"gu-IN\",\n\t\t\"Gujarati\",\n\t\t\"India\"\n\t],\n\t[\"gv\", \"Manx\"],\n\t[\n\t\t\"gv-IM\",\n\t\t\"Manx\",\n\t\t\"Isle of Man\"\n\t],\n\t[\"ha\", \"Hausa\"],\n\t[\n\t\t\"ha-GH\",\n\t\t\"Hausa\",\n\t\t\"Ghana\"\n\t],\n\t[\n\t\t\"ha-NE\",\n\t\t\"Hausa\",\n\t\t\"Niger\"\n\t],\n\t[\n\t\t\"ha-NG\",\n\t\t\"Hausa\",\n\t\t\"Nigeria\"\n\t],\n\t[\"he\", \"Hebrew\"],\n\t[\n\t\t\"he-IL\",\n\t\t\"Hebrew\",\n\t\t\"Israel\"\n\t],\n\t[\"hi\", \"Hindi\"],\n\t[\n\t\t\"hi-IN\",\n\t\t\"Hindi\",\n\t\t\"India\"\n\t],\n\t[\"hr\", \"Croatian\"],\n\t[\n\t\t\"hr-BA\",\n\t\t\"Croatian\",\n\t\t\"Bosnia and Herzegovina\"\n\t],\n\t[\n\t\t\"hr-HR\",\n\t\t\"Croatian\",\n\t\t\"Croatia\"\n\t],\n\t[\"hu\", \"Hungarian\"],\n\t[\n\t\t\"hu-HU\",\n\t\t\"Hungarian\",\n\t\t\"Hungary\"\n\t],\n\t[\"hy\", \"Armenian\"],\n\t[\n\t\t\"hy-AM\",\n\t\t\"Armenian\",\n\t\t\"Armenia\"\n\t],\n\t[\"id\", \"Indonesian\"],\n\t[\n\t\t\"id-ID\",\n\t\t\"Indonesian\",\n\t\t\"Indonesia\"\n\t],\n\t[\"ig\", \"Igbo\"],\n\t[\n\t\t\"ig-NG\",\n\t\t\"Igbo\",\n\t\t\"Nigeria\"\n\t],\n\t[\"ii\", \"Sichuan Yi\"],\n\t[\n\t\t\"ii-CN\",\n\t\t\"Sichuan Yi\",\n\t\t\"China\"\n\t],\n\t[\"is\", \"Icelandic\"],\n\t[\n\t\t\"is-IS\",\n\t\t\"Icelandic\",\n\t\t\"Iceland\"\n\t],\n\t[\"it\", \"Italian\"],\n\t[\n\t\t\"it-CH\",\n\t\t\"Italian\",\n\t\t\"Switzerland\"\n\t],\n\t[\n\t\t\"it-IT\",\n\t\t\"Italian\",\n\t\t\"Italy\"\n\t],\n\t[\n\t\t\"it-SM\",\n\t\t\"Italian\",\n\t\t\"San Marino\"\n\t],\n\t[\n\t\t\"it-VA\",\n\t\t\"Italian\",\n\t\t\"Vatican City\"\n\t],\n\t[\"ja\", \"Japanese\"],\n\t[\n\t\t\"ja-JP\",\n\t\t\"Japanese\",\n\t\t\"Japan\"\n\t],\n\t[\"ka\", \"Georgian\"],\n\t[\n\t\t\"ka-GE\",\n\t\t\"Georgian\",\n\t\t\"Georgia\"\n\t],\n\t[\"ki\", \"Kikuyu\"],\n\t[\n\t\t\"ki-KE\",\n\t\t\"Kikuyu\",\n\t\t\"Kenya\"\n\t],\n\t[\"kk\", \"Kazakh\"],\n\t[\n\t\t\"kk-KZ\",\n\t\t\"Kazakh\",\n\t\t\"Kazakhstan\"\n\t],\n\t[\"kl\", \"Kalaallisut\"],\n\t[\n\t\t\"kl-GL\",\n\t\t\"Kalaallisut\",\n\t\t\"Greenland\"\n\t],\n\t[\"km\", \"Central Khmer\"],\n\t[\n\t\t\"km-KH\",\n\t\t\"Central Khmer\",\n\t\t\"Cambodia\"\n\t],\n\t[\"kn\", \"Kannada\"],\n\t[\n\t\t\"kn-IN\",\n\t\t\"Kannada\",\n\t\t\"India\"\n\t],\n\t[\"ko\", \"Korean\"],\n\t[\n\t\t\"ko-KP\",\n\t\t\"Korean\",\n\t\t\"Korea\"\n\t],\n\t[\n\t\t\"ko-KR\",\n\t\t\"Korean\",\n\t\t\"Korea\"\n\t],\n\t[\"ks\", \"Kashmiri\"],\n\t[\n\t\t\"ks-IN\",\n\t\t\"Kashmiri\",\n\t\t\"India\"\n\t],\n\t[\"kw\", \"Cornish\"],\n\t[\n\t\t\"kw-GB\",\n\t\t\"Cornish\",\n\t\t\"United Kingdom\"\n\t],\n\t[\"ky\", \"Kirghiz\"],\n\t[\n\t\t\"ky-KG\",\n\t\t\"Kirghiz\",\n\t\t\"Kyrgyzstan\"\n\t],\n\t[\"lb\", \"Luxembourgish\"],\n\t[\n\t\t\"lb-LU\",\n\t\t\"Luxembourgish\",\n\t\t\"Luxembourg\"\n\t],\n\t[\"lg\", \"Ganda\"],\n\t[\n\t\t\"lg-UG\",\n\t\t\"Ganda\",\n\t\t\"Uganda\"\n\t],\n\t[\"ln\", \"Lingala\"],\n\t[\n\t\t\"ln-AO\",\n\t\t\"Lingala\",\n\t\t\"Angola\"\n\t],\n\t[\n\t\t\"ln-CD\",\n\t\t\"Lingala\",\n\t\t\"Congo\"\n\t],\n\t[\n\t\t\"ln-CF\",\n\t\t\"Lingala\",\n\t\t\"Central African Republic\"\n\t],\n\t[\n\t\t\"ln-CG\",\n\t\t\"Lingala\",\n\t\t\"Congo\"\n\t],\n\t[\"lo\", \"Lao\"],\n\t[\n\t\t\"lo-LA\",\n\t\t\"Lao\",\n\t\t\"Laos\"\n\t],\n\t[\"lt\", \"Lithuanian\"],\n\t[\n\t\t\"lt-LT\",\n\t\t\"Lithuanian\",\n\t\t\"Lithuania\"\n\t],\n\t[\"lu\", \"Luba-Katanga\"],\n\t[\n\t\t\"lu-CD\",\n\t\t\"Luba-Katanga\",\n\t\t\"Congo\"\n\t],\n\t[\"lv\", \"Latvian\"],\n\t[\n\t\t\"lv-LV\",\n\t\t\"Latvian\",\n\t\t\"Latvia\"\n\t],\n\t[\"mg\", \"Malagasy\"],\n\t[\n\t\t\"mg-MG\",\n\t\t\"Malagasy\",\n\t\t\"Madagascar\"\n\t],\n\t[\"mk\", \"Macedonian\"],\n\t[\n\t\t\"mk-MK\",\n\t\t\"Macedonian\",\n\t\t\"Macedonia\"\n\t],\n\t[\"ml\", \"Malayalam\"],\n\t[\n\t\t\"ml-IN\",\n\t\t\"Malayalam\",\n\t\t\"India\"\n\t],\n\t[\"mn\", \"Mongolian\"],\n\t[\n\t\t\"mn-MN\",\n\t\t\"Mongolian\",\n\t\t\"Mongolia\"\n\t],\n\t[\"mr\", \"Marathi\"],\n\t[\n\t\t\"mr-IN\",\n\t\t\"Marathi\",\n\t\t\"India\"\n\t],\n\t[\"ms\", \"Malay\"],\n\t[\n\t\t\"ms-BN\",\n\t\t\"Malay\",\n\t\t\"Brunei\"\n\t],\n\t[\n\t\t\"ms-MY\",\n\t\t\"Malay\",\n\t\t\"Malaysia\"\n\t],\n\t[\n\t\t\"ms-SG\",\n\t\t\"Malay\",\n\t\t\"Singapore\"\n\t],\n\t[\"mt\", \"Maltese\"],\n\t[\n\t\t\"mt-MT\",\n\t\t\"Maltese\",\n\t\t\"Malta\"\n\t],\n\t[\"my\", \"Burmese\"],\n\t[\n\t\t\"my-MM\",\n\t\t\"Burmese\",\n\t\t\"Myanmar (Burma)\"\n\t],\n\t[\"nb\", \"Bokm\u00E5l Norwegian\"],\n\t[\n\t\t\"nb-NO\",\n\t\t\"Bokm\u00E5l Norwegian\",\n\t\t\"Norway\"\n\t],\n\t[\n\t\t\"nb-SJ\",\n\t\t\"Bokm\u00E5l Norwegian\",\n\t\t\"Svalbard\"\n\t],\n\t[\"nd\", \"Ndebele, North\"],\n\t[\n\t\t\"nd-ZW\",\n\t\t\"Ndebele, North\",\n\t\t\"Zimbabwe\"\n\t],\n\t[\"ne\", \"Nepali\"],\n\t[\n\t\t\"ne-IN\",\n\t\t\"Nepali\",\n\t\t\"India\"\n\t],\n\t[\n\t\t\"ne-NP\",\n\t\t\"Nepali\",\n\t\t\"Nepal\"\n\t],\n\t[\"nl\", \"Dutch\"],\n\t[\n\t\t\"nl-AW\",\n\t\t\"Dutch\",\n\t\t\"Aruba\"\n\t],\n\t[\n\t\t\"nl-BE\",\n\t\t\"Dutch\",\n\t\t\"Belgium\"\n\t],\n\t[\"nl-BQ\", \"Dutch\"],\n\t[\"nl-CW\", \"Dutch\"],\n\t[\n\t\t\"nl-NL\",\n\t\t\"Dutch\",\n\t\t\"Netherlands\"\n\t],\n\t[\n\t\t\"nl-SR\",\n\t\t\"Dutch\",\n\t\t\"Suriname\"\n\t],\n\t[\"nl-SX\", \"Dutch\"],\n\t[\"nn\", \"Norwegian Nynorsk\"],\n\t[\n\t\t\"nn-NO\",\n\t\t\"Norwegian Nynorsk\",\n\t\t\"Norway\"\n\t],\n\t[\"om\", \"Oromo\"],\n\t[\n\t\t\"om-ET\",\n\t\t\"Oromo\",\n\t\t\"Ethiopia\"\n\t],\n\t[\n\t\t\"om-KE\",\n\t\t\"Oromo\",\n\t\t\"Kenya\"\n\t],\n\t[\"or\", \"Oriya\"],\n\t[\n\t\t\"or-IN\",\n\t\t\"Oriya\",\n\t\t\"India\"\n\t],\n\t[\"os\", \"Ossetian\"],\n\t[\n\t\t\"os-GE\",\n\t\t\"Ossetian\",\n\t\t\"Georgia\"\n\t],\n\t[\n\t\t\"os-RU\",\n\t\t\"Ossetian\",\n\t\t\"Russia\"\n\t],\n\t[\"pa\", \"Panjabi\"],\n\t[\n\t\t\"pa-IN\",\n\t\t\"Panjabi\",\n\t\t\"India\"\n\t],\n\t[\n\t\t\"pa-PK\",\n\t\t\"Panjabi\",\n\t\t\"Pakistan\"\n\t],\n\t[\"pl\", \"Polish\"],\n\t[\n\t\t\"pl-PL\",\n\t\t\"Polish\",\n\t\t\"Poland\"\n\t],\n\t[\"ps\", \"Pushto\"],\n\t[\n\t\t\"ps-AF\",\n\t\t\"Pushto\",\n\t\t\"Afghanistan\"\n\t],\n\t[\"pt\", \"Portuguese\"],\n\t[\n\t\t\"pt-AO\",\n\t\t\"Portuguese\",\n\t\t\"Angola\"\n\t],\n\t[\n\t\t\"pt-BR\",\n\t\t\"Portuguese\",\n\t\t\"Brazil\"\n\t],\n\t[\n\t\t\"pt-CH\",\n\t\t\"Portuguese\",\n\t\t\"Switzerland\"\n\t],\n\t[\n\t\t\"pt-CV\",\n\t\t\"Portuguese\",\n\t\t\"Cape Verde\"\n\t],\n\t[\n\t\t\"pt-GQ\",\n\t\t\"Portuguese\",\n\t\t\"Equatorial Guinea\"\n\t],\n\t[\n\t\t\"pt-GW\",\n\t\t\"Portuguese\",\n\t\t\"Guinea-Bissau\"\n\t],\n\t[\n\t\t\"pt-LU\",\n\t\t\"Portuguese\",\n\t\t\"Luxembourg\"\n\t],\n\t[\n\t\t\"pt-MO\",\n\t\t\"Portuguese\",\n\t\t\"Macau\"\n\t],\n\t[\n\t\t\"pt-MZ\",\n\t\t\"Portuguese\",\n\t\t\"Mozambique\"\n\t],\n\t[\n\t\t\"pt-PT\",\n\t\t\"Portuguese\",\n\t\t\"Portugal\"\n\t],\n\t[\n\t\t\"pt-ST\",\n\t\t\"Portuguese\",\n\t\t\"Sao Tome and Principe\"\n\t],\n\t[\n\t\t\"pt-TL\",\n\t\t\"Portuguese\",\n\t\t\"Timor-Leste (East Timor)\"\n\t],\n\t[\"qu\", \"Quechua\"],\n\t[\n\t\t\"qu-BO\",\n\t\t\"Quechua\",\n\t\t\"Bolivia\"\n\t],\n\t[\n\t\t\"qu-EC\",\n\t\t\"Quechua\",\n\t\t\"Ecuador\"\n\t],\n\t[\n\t\t\"qu-PE\",\n\t\t\"Quechua\",\n\t\t\"Peru\"\n\t],\n\t[\"rm\", \"Romansh\"],\n\t[\n\t\t\"rm-CH\",\n\t\t\"Romansh\",\n\t\t\"Switzerland\"\n\t],\n\t[\"rn\", \"Rundi\"],\n\t[\n\t\t\"rn-BI\",\n\t\t\"Rundi\",\n\t\t\"Burundi\"\n\t],\n\t[\"ro\", \"Romanian\"],\n\t[\n\t\t\"ro-MD\",\n\t\t\"Romanian\",\n\t\t\"Moldova\"\n\t],\n\t[\n\t\t\"ro-RO\",\n\t\t\"Romanian\",\n\t\t\"Romania\"\n\t],\n\t[\"ru\", \"Russian\"],\n\t[\n\t\t\"ru-BY\",\n\t\t\"Russian\",\n\t\t\"Belarus\"\n\t],\n\t[\n\t\t\"ru-KG\",\n\t\t\"Russian\",\n\t\t\"Kyrgyzstan\"\n\t],\n\t[\n\t\t\"ru-KZ\",\n\t\t\"Russian\",\n\t\t\"Kazakhstan\"\n\t],\n\t[\n\t\t\"ru-MD\",\n\t\t\"Russian\",\n\t\t\"Moldova\"\n\t],\n\t[\n\t\t\"ru-RU\",\n\t\t\"Russian\",\n\t\t\"Russia\"\n\t],\n\t[\n\t\t\"ru-UA\",\n\t\t\"Russian\",\n\t\t\"Ukraine\"\n\t],\n\t[\"rw\", \"Kinyarwanda\"],\n\t[\n\t\t\"rw-RW\",\n\t\t\"Kinyarwanda\",\n\t\t\"Rwanda\"\n\t],\n\t[\"se\", \"Northern Sami\"],\n\t[\n\t\t\"se-FI\",\n\t\t\"Northern Sami\",\n\t\t\"Finland\"\n\t],\n\t[\n\t\t\"se-NO\",\n\t\t\"Northern Sami\",\n\t\t\"Norway\"\n\t],\n\t[\n\t\t\"se-SE\",\n\t\t\"Northern Sami\",\n\t\t\"Sweden\"\n\t],\n\t[\"sg\", \"Sango\"],\n\t[\n\t\t\"sg-CF\",\n\t\t\"Sango\",\n\t\t\"Central African Republic\"\n\t],\n\t[\"si\", \"Sinhala\"],\n\t[\n\t\t\"si-LK\",\n\t\t\"Sinhala\",\n\t\t\"Sri Lanka\"\n\t],\n\t[\"sk\", \"Slovak\"],\n\t[\n\t\t\"sk-SK\",\n\t\t\"Slovak\",\n\t\t\"Slovakia\"\n\t],\n\t[\"sl\", \"Slovenian\"],\n\t[\n\t\t\"sl-SI\",\n\t\t\"Slovenian\",\n\t\t\"Slovenia\"\n\t],\n\t[\"sn\", \"Shona\"],\n\t[\n\t\t\"sn-ZW\",\n\t\t\"Shona\",\n\t\t\"Zimbabwe\"\n\t],\n\t[\"so\", \"Somali\"],\n\t[\n\t\t\"so-DJ\",\n\t\t\"Somali\",\n\t\t\"Djibouti\"\n\t],\n\t[\n\t\t\"so-ET\",\n\t\t\"Somali\",\n\t\t\"Ethiopia\"\n\t],\n\t[\n\t\t\"so-KE\",\n\t\t\"Somali\",\n\t\t\"Kenya\"\n\t],\n\t[\n\t\t\"so-SO\",\n\t\t\"Somali\",\n\t\t\"Somalia\"\n\t],\n\t[\"sq\", \"Albanian\"],\n\t[\n\t\t\"sq-AL\",\n\t\t\"Albanian\",\n\t\t\"Albania\"\n\t],\n\t[\n\t\t\"sq-MK\",\n\t\t\"Albanian\",\n\t\t\"Macedonia\"\n\t],\n\t[\"sq-XK\", \"Albanian\"],\n\t[\"sr\", \"Serbian\"],\n\t[\n\t\t\"sr-BA\",\n\t\t\"Serbian\",\n\t\t\"Bosnia and Herzegovina\"\n\t],\n\t[\n\t\t\"sr-ME\",\n\t\t\"Serbian\",\n\t\t\"Montenegro\"\n\t],\n\t[\n\t\t\"sr-RS\",\n\t\t\"Serbian\",\n\t\t\"Serbia\"\n\t],\n\t[\"sr-XK\", \"Serbian\"],\n\t[\"sv\", \"Swedish\"],\n\t[\n\t\t\"sv-AX\",\n\t\t\"Swedish\",\n\t\t\"Aland\"\n\t],\n\t[\n\t\t\"sv-FI\",\n\t\t\"Swedish\",\n\t\t\"Finland\"\n\t],\n\t[\n\t\t\"sv-SE\",\n\t\t\"Swedish\",\n\t\t\"Sweden\"\n\t],\n\t[\"sw\", \"Swahili\"],\n\t[\n\t\t\"sw-CD\",\n\t\t\"Swahili\",\n\t\t\"Congo\"\n\t],\n\t[\n\t\t\"sw-KE\",\n\t\t\"Swahili\",\n\t\t\"Kenya\"\n\t],\n\t[\n\t\t\"sw-TZ\",\n\t\t\"Swahili\",\n\t\t\"Tanzania\"\n\t],\n\t[\n\t\t\"sw-UG\",\n\t\t\"Swahili\",\n\t\t\"Uganda\"\n\t],\n\t[\"ta\", \"Tamil\"],\n\t[\n\t\t\"ta-IN\",\n\t\t\"Tamil\",\n\t\t\"India\"\n\t],\n\t[\n\t\t\"ta-LK\",\n\t\t\"Tamil\",\n\t\t\"Sri Lanka\"\n\t],\n\t[\n\t\t\"ta-MY\",\n\t\t\"Tamil\",\n\t\t\"Malaysia\"\n\t],\n\t[\n\t\t\"ta-SG\",\n\t\t\"Tamil\",\n\t\t\"Singapore\"\n\t],\n\t[\"te\", \"Telugu\"],\n\t[\n\t\t\"te-IN\",\n\t\t\"Telugu\",\n\t\t\"India\"\n\t],\n\t[\"th\", \"Thai\"],\n\t[\n\t\t\"th-TH\",\n\t\t\"Thai\",\n\t\t\"Thailand\"\n\t],\n\t[\"ti\", \"Tigrinya\"],\n\t[\n\t\t\"ti-ER\",\n\t\t\"Tigrinya\",\n\t\t\"Eritrea\"\n\t],\n\t[\n\t\t\"ti-ET\",\n\t\t\"Tigrinya\",\n\t\t\"Ethiopia\"\n\t],\n\t[\"tk\", \"Turkmen\"],\n\t[\n\t\t\"tk-TM\",\n\t\t\"Turkmen\",\n\t\t\"Turkmenistan\"\n\t],\n\t[\"to\", \"Tonga (Tonga Islands)\"],\n\t[\n\t\t\"to-TO\",\n\t\t\"Tonga (Tonga Islands)\",\n\t\t\"Tonga\"\n\t],\n\t[\"tr\", \"Turkish\"],\n\t[\n\t\t\"tr-CY\",\n\t\t\"Turkish\",\n\t\t\"Cyprus\"\n\t],\n\t[\n\t\t\"tr-TR\",\n\t\t\"Turkish\",\n\t\t\"Turkey\"\n\t],\n\t[\"ug\", \"Uighur\"],\n\t[\n\t\t\"ug-CN\",\n\t\t\"Uighur\",\n\t\t\"China\"\n\t],\n\t[\"uk\", \"Ukrainian\"],\n\t[\n\t\t\"uk-UA\",\n\t\t\"Ukrainian\",\n\t\t\"Ukraine\"\n\t],\n\t[\"ur\", \"Urdu\"],\n\t[\n\t\t\"ur-IN\",\n\t\t\"Urdu\",\n\t\t\"India\"\n\t],\n\t[\n\t\t\"ur-PK\",\n\t\t\"Urdu\",\n\t\t\"Pakistan\"\n\t],\n\t[\"uz\", \"Uzbek\"],\n\t[\n\t\t\"uz-AF\",\n\t\t\"Uzbek\",\n\t\t\"Afghanistan\"\n\t],\n\t[\n\t\t\"uz-UZ\",\n\t\t\"Uzbek\",\n\t\t\"Uzbekistan\"\n\t],\n\t[\"vi\", \"Vietnamese\"],\n\t[\n\t\t\"vi-VN\",\n\t\t\"Vietnamese\",\n\t\t\"Vietnam\"\n\t],\n\t[\"vo\", \"Volap\u00FCk\"],\n\t[\"yi\", \"Yiddish\"],\n\t[\"yi-1\", \"Yiddish\"],\n\t[\"yo\", \"Yoruba\"],\n\t[\n\t\t\"yo-BJ\",\n\t\t\"Yoruba\",\n\t\t\"Benin\"\n\t],\n\t[\n\t\t\"yo-NG\",\n\t\t\"Yoruba\",\n\t\t\"Nigeria\"\n\t],\n\t[\"zh\", \"Chinese\"],\n\t[\n\t\t\"zh-CN\",\n\t\t\"Chinese\",\n\t\t\"China\"\n\t],\n\t[\n\t\t\"zh-HK\",\n\t\t\"Chinese\",\n\t\t\"Hong Kong\"\n\t],\n\t[\n\t\t\"zh-MO\",\n\t\t\"Chinese\",\n\t\t\"Macau\"\n\t],\n\t[\n\t\t\"zh-SG\",\n\t\t\"Chinese\",\n\t\t\"Singapore\"\n\t],\n\t[\n\t\t\"zh-TW\",\n\t\t\"Chinese\",\n\t\t\"China\"\n\t],\n\t[\"zu\", \"Zulu\"],\n\t[\n\t\t\"zu-ZA\",\n\t\t\"Zulu\",\n\t\t\"South Africa\"\n\t]\n];\n//#endregion\n//#region src/lib/models/locale/locale.ts\nlet codesByLocale;\nvar Locale = class {\n\t_raw;\n\t_locale;\n\tconstructor(locale) {\n\t\tthis._raw = locale;\n\t\tthis._locale = normalizeLocale(locale);\n\t}\n\tget locale() {\n\t\treturn this._locale;\n\t}\n\tlocalInfo() {\n\t\treturn lookupLocaleInfo(this._locale);\n\t}\n\tisValid() {\n\t\treturn isStandardLocale(this._locale);\n\t}\n\ttoJSON() {\n\t\treturn this.locale;\n\t}\n\ttoString() {\n\t\treturn this.locale;\n\t}\n};\nconst regExTwoLetter = /^[a-z]{2}$/i;\nconst regExLocaleWithCountry = /^([a-z]{2})[_-]?([a-z]{2,3})$/i;\nconst regExValidLocale = /^([a-z]{2})(?:-([A-Z]{2,3}))?$/;\n/**\n* Attempt to normalize a locale.\n* @param locale a locale string\n*/\nfunction normalizeLocale(locale) {\n\tlocale = locale.trim();\n\tif (regExTwoLetter.test(locale)) return locale.toLowerCase();\n\tconst m = locale.match(regExLocaleWithCountry);\n\tif (!m) return locale;\n\treturn `${m[1].toLowerCase()}-${m[2].toUpperCase()}`;\n}\nfunction isStandardLocale(locale) {\n\treturn regExValidLocale.test(locale);\n}\nfunction lookupLocaleInfo(locale) {\n\tcodesByLocale = codesByLocale || buildLocaleLookup();\n\treturn codesByLocale.get(locale);\n}\nfunction buildLocaleLookup() {\n\tconst info = codes.map(([locale, language, country]) => ({\n\t\tlocale,\n\t\tlanguage,\n\t\tcountry\n\t}));\n\treturn new Map(info.map((i) => [i.locale, i]));\n}\nfunction createLocale(locale) {\n\treturn new Locale(locale);\n}\nfunction parseLocale(locales) {\n\tlocales = typeof locales === \"string\" ? locales.split(\",\") : locales;\n\treturn locales.map(createLocale);\n}\n//#endregion\n//#region src/lib/mappers/mapCosts.ts\nconst defaultEditCosts = {\n\taccentCosts: 1,\n\tbaseCost: 100,\n\tcapsCosts: 1,\n\tfirstLetterPenalty: 4,\n\tnonAlphabetCosts: 110\n};\nconst defaultHunspellCosts = {\n\t...defaultEditCosts,\n\tioConvertCost: 30,\n\tkeyboardCost: 99,\n\tmapCost: 25,\n\treplaceCosts: 75,\n\ttryCharCost: 100\n};\nfunction mapHunspellCosts(costs = {}) {\n\treturn {\n\t\t...defaultHunspellCosts,\n\t\t...cleanCopy(costs)\n\t};\n}\nfunction mapEditCosts(costs = {}) {\n\treturn {\n\t\t...defaultEditCosts,\n\t\t...cleanCopy(costs)\n\t};\n}\n//#endregion\n//#region src/lib/mappers/joinLetters.ts\n/**\n* Bring letters / strings together.\n* - `['a', 'b'] => 'ab'`\n* - `['a', 'bc'] => 'a(bc)'`\n* @param letters - letters to join\n*/\nfunction joinLetters(letters) {\n\treturn [...letters].map((a) => a.length > 1 || !a.length ? `(${a})` : a).join(\"\");\n}\n//#endregion\n//#region src/lib/mappers/mapToSuggestionCostDef.ts\nfunction parseAlphabet(cs, locale, editCost) {\n\tconst { cost, penalty } = cs;\n\tconst alphabet = joinLetters([...pipeSync([...pipeSync(expandCharacterSet(cs.characters), opMapSync((c) => caseForms(c, locale).sort()))], opFlattenSync(), opMapSync((letter) => accentForms(letter)), opFlattenSync(), opUniqueSync())].sort());\n\treturn [\n\t\tclean$1({\n\t\t\tmap: alphabet,\n\t\t\treplace: cost,\n\t\t\tinsDel: cost,\n\t\t\tswap: cost,\n\t\t\tpenalty\n\t\t}),\n\t\tparseAlphabetCaps(cs.characters, locale, editCost),\n\t\t...calcCostsForAccentedLetters(alphabet, locale, editCost)\n\t];\n}\nfunction parseAlphabetCaps(alphabet, locale, editCost) {\n\treturn {\n\t\tmap: [...pipeSync(expandCharacterSet(alphabet), opMapSync((c) => caseForms(c, locale).sort()))].map((a) => joinLetters(a)).join(\"|\"),\n\t\treplace: editCost.capsCosts\n\t};\n}\nfunction calcFirstCharacterReplaceDefs(alphabets, editCost) {\n\treturn alphabets.map((cs) => calcFirstCharacterReplace(cs, editCost));\n}\nfunction calcFirstCharacterReplace(cs, editCost) {\n\tconst mapOfFirstLetters = [...pipeSync(expandCharacterSet(cs.characters), opUniqueSync(), opMapSync((letter) => `(^${letter})`))].sort().join(\"\") + \"(^)\";\n\tconst penalty = editCost.firstLetterPenalty;\n\treturn {\n\t\tmap: mapOfFirstLetters,\n\t\treplace: cs.cost - penalty,\n\t\tpenalty: penalty * 2\n\t};\n}\nfunction parseAccents(cs, _editCost) {\n\tconst { cost, penalty } = cs;\n\tconst accents = joinLetters([...pipeSync(expandCharacterSet(cs.characters), opMapSync((char) => stripNonAccents(char)))]);\n\tif (!accents) return void 0;\n\treturn clean$1({\n\t\tmap: accents,\n\t\treplace: cost,\n\t\tinsDel: cost,\n\t\tpenalty\n\t});\n}\nfunction calcCostsForAccentedLetters(simpleMap, locale, costs) {\n\tconst charactersWithAccents = [...pipeSync(splitMap(simpleMap), opMapSync((char) => caseForms(char, locale)), opFlattenSync(), opMapSync((char) => [...accentForms(char)]), opFilterSync((forms) => forms.length > 1))];\n\tconst replaceAccentMap = [...pipeSync(charactersWithAccents, opMapSync((forms) => new Set([...forms, ...forms.map((char) => stripAccents(char))])), opMapSync((forms) => [...forms].sort()), opFilterSync((forms) => forms.length > 1), opMapSync(joinLetters), opUniqueSync())].join(\"|\");\n\tconst cost = costs.accentCosts;\n\tconst costToReplaceAccent = !replaceAccentMap ? [] : [{\n\t\tmap: replaceAccentMap,\n\t\treplace: cost\n\t}];\n\tconst normalizeMap = charactersWithAccents.map((a) => a.sort()).map(joinLetters).join(\"|\");\n\tconst costToNormalizeAccent = !normalizeMap ? [] : [{\n\t\tmap: normalizeMap,\n\t\treplace: 0\n\t}];\n\treturn [...costToReplaceAccent, ...costToNormalizeAccent];\n}\n/**\n* Splits a simple map string into its parts.\n* - `abc` => `a`, `b`, `c`\n* - `a(bc)` => `a`, `bc`\n* @param map - string of characters\n*/\nfunction* splitMap(map) {\n\tlet seq = \"\";\n\tlet mode = 0;\n\tfor (const char of map) {\n\t\tif (mode && char === \")\") {\n\t\t\tyield seq;\n\t\t\tmode = 0;\n\t\t\tcontinue;\n\t\t}\n\t\tif (mode) {\n\t\t\tseq += char;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"(\") {\n\t\t\tmode = 1;\n\t\t\tseq = \"\";\n\t\t\tcontinue;\n\t\t}\n\t\tyield char;\n\t}\n}\n//#endregion\n//#region src/lib/mappers/mapHunspellInformation.ts\nfunction hunspellInformationToSuggestionCostDef(hunInfo, locales) {\n\tconst costs = calcCosts(hunInfo.costs, locales);\n\tconst operations = [\n\t\taffKey,\n\t\taffKeyCaps,\n\t\taffMap,\n\t\taffMapAccents,\n\t\taffMapCaps,\n\t\taffNoTry,\n\t\taffRepConv,\n\t\taffTry,\n\t\taffTryAccents,\n\t\taffTryFirstCharacterReplace\n\t];\n\tfunction parseAff(aff, costs) {\n\t\tconst regSupportedAff = /^(?:MAP|KEY|TRY|NO-TRY|ICONV|OCONV|REP)\\s/;\n\t\tconst rejectAff = /^(?:MAP|KEY|TRY|ICONV|OCONV|REP)\\s+\\d+$/;\n\t\treturn [...pipeSync(aff.split(\"\\n\").map((a) => a.replace(/#.*/, \"\")).map((a) => a.trim()).filter((a) => regSupportedAff.test(a)).filter((a) => !rejectAff.test(a)), opMapSync((line) => pipeSync(operations, opMapSync((fn) => fn(line, costs)), opMapSync(asArrayOf), opFlattenSync())), opFlattenSync(), opFilterSync(isDefined$1))];\n\t}\n\treturn parseAff(hunInfo.aff, costs);\n}\nfunction calcCosts(costs = {}, locale) {\n\tconst useLocale = locale?.length ? locale.map((loc) => loc.locale) : void 0;\n\treturn {\n\t\t...mapHunspellCosts(costs),\n\t\tlocale: useLocale\n\t};\n}\nconst regExpMap = /^(?:MAP)\\s+(\\S+)$/;\nfunction affMap(line, costs) {\n\tconst m = line.match(regExpMap);\n\tif (!m) return void 0;\n\tconst map = m[1];\n\tconst cost = costs.mapCost;\n\treturn {\n\t\tmap,\n\t\treplace: cost,\n\t\tswap: cost\n\t};\n}\nconst regExpTry = /^(?:TRY)\\s+(\\S+)$/;\nfunction affTry(line, costs) {\n\tconst m = line.match(regExpTry);\n\tif (!m) return void 0;\n\tconst cost = costs.tryCharCost;\n\tconst characters = m[1];\n\treturn parseAlphabet({\n\t\tcharacters,\n\t\tcost\n\t}, costs.locale, costs);\n}\nfunction affTryFirstCharacterReplace(line, costs) {\n\tconst m = line.match(regExpTry);\n\tif (!m) return void 0;\n\tconst characters = m[1];\n\tconst cost = costs.tryCharCost;\n\treturn calcFirstCharacterReplace({\n\t\tcharacters,\n\t\tcost\n\t}, costs);\n}\nconst regExpNoTry = /^NO-TRY\\s+(\\S+)$/;\nfunction affNoTry(line, costs) {\n\tconst m = line.match(regExpNoTry);\n\tif (!m) return void 0;\n\treturn {\n\t\tmap: m[1],\n\t\tinsDel: Math.max(costs.nonAlphabetCosts - costs.tryCharCost, 0),\n\t\tpenalty: costs.nonAlphabetCosts + costs.tryCharCost\n\t};\n}\nconst regExpRepConv = /^(?:REP|(?:I|O)CONV)\\s+(\\S+)\\s+(\\S+)$/;\nfunction affRepConv(line, costs) {\n\tconst m = line.match(regExpRepConv);\n\tif (!m) return void 0;\n\tconst cost = line.startsWith(\"REP\") ? costs.replaceCosts : costs.ioConvertCost;\n\tconst from = m[1];\n\tlet into = m[2];\n\tinto = into.replace(/^0$/, \"\");\n\tif (from.startsWith(\"^\") && !into.startsWith(\"^\")) into = \"^\" + into;\n\tif (from.endsWith(\"$\") && !into.endsWith(\"$\")) into = into + \"$\";\n\treturn {\n\t\tmap: joinLetters([from, into]),\n\t\treplace: cost\n\t};\n}\nconst regExpKey = /^(?:KEY)\\s+(\\S+)$/;\nfunction affKey(line, costs) {\n\tconst m = line.match(regExpKey);\n\tif (!m) return void 0;\n\tconst kbd = m[1];\n\tconst pairs = [...splitMap(kbd)].map(reducer((p, v) => ({\n\t\ta: p.b,\n\t\tb: v\n\t}), {\n\t\ta: \"|\",\n\t\tb: \"|\"\n\t})).filter((ab) => ab.a !== \"|\" && ab.b !== \"|\").map(({ a, b }) => joinLetters([a, b]));\n\tconst pairsUpper = pairs.map((p) => p.toLocaleUpperCase(costs.locale));\n\tconst map = unique([...pairs, ...pairsUpper]).join(\"|\");\n\tconst cost = costs.keyboardCost;\n\treturn {\n\t\tmap,\n\t\treplace: cost,\n\t\tswap: cost\n\t};\n}\nfunction affKeyCaps(line, costs) {\n\tconst m = line.match(regExpKey);\n\tif (!m) return void 0;\n\treturn parseCaps(m[1], costs);\n}\nfunction affMapCaps(line, costs) {\n\tconst m = line.match(regExpMap);\n\tif (!m) return void 0;\n\treturn parseCaps(m[1], costs);\n}\nfunction affTryAccents(line, costs) {\n\tconst m = line.match(regExpTry);\n\tif (!m) return void 0;\n\treturn calcCostsForAccentedLetters(m[1], costs.locale, costs);\n}\nfunction affMapAccents(line, costs) {\n\tconst m = line.match(regExpMap);\n\tif (!m) return void 0;\n\treturn calcCostsForAccentedLetters(m[1], costs.locale, costs);\n}\nfunction parseCaps(value, costs) {\n\tconst locale = costs.locale;\n\tconst map = unique([...splitMap(value)].filter((a) => a !== \"|\").map((s) => caseForms(s, locale)).filter((forms) => forms.length > 1).map(joinLetters)).join(\"|\");\n\tconst cost = costs.capsCosts;\n\tif (!map) return void 0;\n\treturn {\n\t\tmap,\n\t\treplace: cost\n\t};\n}\nfunction reducer(fn, initialVal) {\n\tlet acc = initialVal;\n\treturn (val, i) => acc = fn(acc, val, i);\n}\nfunction asArrayOf(v) {\n\treturn Array.isArray(v) ? v : [v];\n}\n//#endregion\n//#region src/lib/mappers/mapDictionaryInfo.ts\nfunction mapDictionaryInformation(dictInfo) {\n\tconst _locale = dictInfo.locale;\n\tconst locale = _locale ? parseLocale(_locale).filter((loc) => loc.isValid()) : void 0;\n\tconst locales = locale?.map((loc) => loc.locale);\n\tconst costs = mapEditCosts(dictInfo.costs);\n\tconst defsEC = dictInfo.suggestionEditCosts || [];\n\tconst defsHI = dictInfo.hunspellInformation ? hunspellInformationToSuggestionCostDef(dictInfo.hunspellInformation, locale) : [];\n\treturn [\n\t\t...defsEC,\n\t\t...processAlphabet(dictInfo.alphabet, locales, costs),\n\t\t...processAccents(dictInfo.accents, costs),\n\t\t...defsHI\n\t];\n}\nfunction processAlphabet(alphabet, locale, editCost) {\n\tconst csAlphabet = toCharSets(alphabet, \"a-zA-Z\", editCost.baseCost);\n\treturn [...pipeSync(csAlphabet, opMapSync((cs) => parseAlphabet(cs, locale, editCost)), opFlattenSync()), ...calcFirstCharacterReplaceDefs(csAlphabet, editCost)];\n}\nfunction toCharSets(cs, defaultValue, cost, penalty) {\n\tcs = cs ?? defaultValue;\n\tif (!cs) return [];\n\tif (typeof cs === \"string\") cs = [{\n\t\tcharacters: cs,\n\t\tcost\n\t}];\n\tif (penalty !== void 0) cs.forEach((cs) => cs.penalty = penalty);\n\treturn cs;\n}\nfunction processAccents(accents, editCost) {\n\treturn toCharSets(accents, \"\u0300-\u0341\", editCost.accentCosts).map((cs) => parseAccents(cs, editCost)).filter(isDefined$1);\n}\nfunction mapDictionaryInformationToAdjustment(dictInfo) {\n\tif (!dictInfo.adjustments) return [];\n\treturn dictInfo.adjustments.map(mapAdjustment);\n}\nfunction mapAdjustment(adj) {\n\tconst { id, regexp, penalty } = adj;\n\treturn {\n\t\tid,\n\t\tregexp: new RegExp(regexp),\n\t\tpenalty\n\t};\n}\n//#endregion\n//#region src/lib/mappers/mapDictionaryInfoToWeightMap.ts\nconst defaultDefs = [{\n\tmap: \"1234567890-.\",\n\tinsDel: 1,\n\tpenalty: 200\n}];\nconst defaultAdjustments = [\n\t{\n\t\tid: \"compound-case-change\",\n\t\tregexp: /\\p{Ll}\u2219\\p{Lu}/gu,\n\t\tpenalty: 1e3\n\t},\n\t{\n\t\tid: \"short-compounds-1\",\n\t\tregexp: /^[^\u2219]{0,2}(?=\u2219)|\u2219[^\u2219]{0,2}(?=\u2219|$)/gm,\n\t\tpenalty: 100\n\t},\n\t{\n\t\tid: \"short-compounds-3\",\n\t\tregexp: /^[^\u2219]{3}(?=\u2219)|\u2219[^\u2219]{3}(?=\u2219|$)/gm,\n\t\tpenalty: 50\n\t}\n];\nfunction mapDictionaryInformationToWeightMap(dictInfo) {\n\tconst defs = [...mapDictionaryInformation(dictInfo), ...defaultDefs];\n\tconst adjustments = mapDictionaryInformationToAdjustment(dictInfo);\n\tconst map = createWeightMap(...defs);\n\taddAdjustment(map, ...defaultAdjustments, ...adjustments);\n\treturn map;\n}\n//#endregion\nexport { CASE_INSENSITIVE_PREFIX, COMPOUND_FIX, CompoundWordsMethod, FLAG_WORD, FORBID_PREFIX, GTrie, GTrieNode, JOIN_SEPARATOR, OPTIONAL_COMPOUND_FIX, Trie, TrieBuilder, WORD_SEPARATOR, buildITrieFromWords, buildTrie, buildTrieFast, consolidate, convertToBTrie, countNodes, countWords, createDictionaryLineParserMapper as createDictionaryLineParser, createTrieRoot, createTrieRootFromList, createWeightedMap, decodeFile, decodeTrie, defaultTrieInfo, defaultTrieInfo as defaultTrieOptions, editDistance, editDistanceWeighted, encodeITrieToBTrie, encodeTrieDataToBTrie, expandCharacterSet, findNode, has, hintedWalker, impersonateCollector, importTrie, insert, isCircular, isDefined, isWordTerminationNode, iterateTrie, iteratorTrieWords, mapDictionaryInformationToWeightMap, mergeDefaults, mergeOptionalWithDefaults, normalizeWord, normalizeWordForCaseInsensitive, normalizeWordToLowercase, orderTrie, parseDictionary, parseDictionaryLegacy, parseDictionaryLines, serializeTrie, suggestionCollector, trieNodeToRoot, walk, walker };\n\n//# sourceMappingURL=index.js.map", "const regExFirstUpper = /^\\p{Lu}\\p{M}?\\p{Ll}+$/u;\nconst regExAllUpper = /^(?:\\p{Lu}\\p{M}?)+$/u;\nconst regExAllLower = /^(?:\\p{Ll}\\p{M}?)+$/u;\nconst regExAccents = /\\p{M}/gu;\nexport function isUpperCase(word) {\n    return !!regExAllUpper.test(word);\n}\nexport function isLowerCase(word) {\n    return !!regExAllLower.test(word);\n}\nexport function isFirstCharacterUpper(word) {\n    return isUpperCase(word.slice(0, 1));\n}\nexport function isFirstCharacterLower(word) {\n    return isLowerCase(word.slice(0, 1));\n}\nexport function ucFirst(word) {\n    return word.slice(0, 1).toUpperCase() + word.slice(1);\n}\nexport function lcFirst(word) {\n    return word.slice(0, 1).toLowerCase() + word.slice(1);\n}\nexport function matchCase(example, word) {\n    if (regExFirstUpper.test(example)) {\n        return word.slice(0, 1).toUpperCase() + word.slice(1).toLowerCase();\n    }\n    if (regExAllLower.test(example)) {\n        return word.toLowerCase();\n    }\n    if (regExAllUpper.test(example)) {\n        return word.toUpperCase();\n    }\n    if (isFirstCharacterUpper(example)) {\n        return ucFirst(word);\n    }\n    if (isFirstCharacterLower(example)) {\n        return lcFirst(word);\n    }\n    return word;\n}\nexport function removeAccents(text) {\n    return text.normalize('NFD').replaceAll(regExAccents, '');\n}\nexport function removeUnboundAccents(text) {\n    return text.replaceAll(regExAccents, '');\n}\n//# sourceMappingURL=text.js.map", "import { mapDictionaryInformationToWeightMap } from 'cspell-trie-lib';\nimport { isUpperCase, removeUnboundAccents, ucFirst } from '../util/text.js';\nexport { impersonateCollector, suggestionCollector } from 'cspell-trie-lib';\nexport const defaultNumSuggestions = 10;\nfunction wordSearchFormsArray(word, isDictionaryCaseSensitive, ignoreCase) {\n    return [...wordSearchForms(word, isDictionaryCaseSensitive, ignoreCase)];\n}\nexport function wordSearchForms(word, isDictionaryCaseSensitive, ignoreCase) {\n    const forms = new Set();\n    word = word.normalize('NFC');\n    const wordLc = word.toLowerCase();\n    if (ignoreCase) {\n        if (isDictionaryCaseSensitive) {\n            forms.add(wordLc);\n        }\n        else {\n            forms.add(wordLc);\n            // Legacy remove any unbound accents\n            forms.add(removeUnboundAccents(wordLc));\n        }\n    }\n    else {\n        if (isDictionaryCaseSensitive) {\n            forms.add(word);\n            forms.add(wordLc);\n            // HOUSE -> House, house\n            if (isUpperCase(word)) {\n                forms.add(ucFirst(wordLc));\n            }\n        }\n        else {\n            forms.add(wordLc);\n            // Legacy remove any unbound accents\n            forms.add(removeUnboundAccents(wordLc));\n        }\n    }\n    return forms;\n}\nexport function wordSuggestFormsArray(word) {\n    return [...wordSuggestForms(word)];\n}\nexport function wordSuggestForms(word) {\n    word = word.normalize('NFC');\n    const forms = new Set([word]);\n    const wordLc = word.toLowerCase();\n    forms.add(wordLc);\n    return forms;\n}\nconst DEFAULT_HAS_OPTIONS = Object.freeze({});\nexport function hasOptionToSearchOption(opt) {\n    return canonicalSearchOptions(!opt ? DEFAULT_HAS_OPTIONS : opt);\n}\nconst canonicalSearchOptionsMap = new Map();\nconst knownCanonicalOptions = new WeakMap();\n/**\n * Find the canonical form for SearchOptions. Useful Maps and WeakMaps.\n * @param opt - options to normalize\n * @returns SearchOptions - the canonical form\n */\nexport function canonicalSearchOptions(opt) {\n    const known = knownCanonicalOptions.get(opt);\n    if (known)\n        return known;\n    const { ignoreCase, useCompounds } = opt;\n    const foundLevel1Map = canonicalSearchOptionsMap.get(ignoreCase);\n    const useLevel1Map = foundLevel1Map || new Map();\n    if (!foundLevel1Map) {\n        canonicalSearchOptionsMap.set(ignoreCase, useLevel1Map);\n    }\n    const foundCanOpts = useLevel1Map.get(useCompounds);\n    const canOpts = foundCanOpts || Object.freeze({ ignoreCase, useCompounds });\n    if (!foundCanOpts) {\n        useLevel1Map.set(useCompounds, canOpts);\n    }\n    knownCanonicalOptions.set(opt, canOpts);\n    return canOpts;\n}\nexport function createWeightMapFromDictionaryInformation(di) {\n    return di ? mapDictionaryInformationToWeightMap(di) : undefined;\n}\nexport const __testMethods__ = {\n    wordSearchForms,\n    wordSearchFormsArray,\n};\n//# sourceMappingURL=SpellingDictionaryMethods.js.map", "export function autoResolve(map, key, resolve) {\n    const found = map.get(key);\n    if (found !== undefined || map.has(key))\n        return found;\n    const value = resolve(key);\n    map.set(key, value);\n    return value;\n}\nexport class AutoResolveCache {\n    map = new Map();\n    get(k, resolve) {\n        return resolve ? autoResolve(this.map, k, resolve) : this.map.get(k);\n    }\n    has(k) {\n        return this.map.has(k);\n    }\n    set(k, v) {\n        this.map.set(k, v);\n        return this;\n    }\n}\nexport function createAutoResolveCache() {\n    return new AutoResolveCache();\n}\nexport function autoResolveWeak(map, key, resolve) {\n    const found = map.get(key);\n    if (found !== undefined || map.has(key))\n        return found;\n    const value = resolve(key);\n    map.set(key, value);\n    return value;\n}\nexport class AutoResolveWeakCache {\n    map = new WeakMap();\n    get(k, resolve) {\n        return resolve ? autoResolveWeak(this.map, k, resolve) : this.map.get(k);\n    }\n    has(k) {\n        return this.map.has(k);\n    }\n    set(k, v) {\n        this.map.set(k, v);\n        return this;\n    }\n}\nexport function createAutoResolveWeakCache() {\n    return new AutoResolveWeakCache();\n}\n//# sourceMappingURL=AutoResolve.js.map", "export function isDefined(v) {\n    return v !== undefined;\n}\n//# sourceMappingURL=util.js.map", "const { getOwnPropertyNames, getOwnPropertySymbols } = Object;\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst { hasOwnProperty } = Object.prototype;\n/**\n * Combine two comparators into a single comparators.\n */\nfunction combineComparators(comparatorA, comparatorB) {\n    return function isEqual(a, b, state) {\n        return comparatorA(a, b, state) && comparatorB(a, b, state);\n    };\n}\n/**\n * Wrap the provided `areItemsEqual` method to manage the circular state, allowing\n * for circular references to be safely included in the comparison without creating\n * stack overflows.\n */\nfunction createIsCircular(areItemsEqual) {\n    return function isCircular(a, b, state) {\n        if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n            return areItemsEqual(a, b, state);\n        }\n        const { cache } = state;\n        const cachedA = cache.get(a);\n        const cachedB = cache.get(b);\n        if (cachedA && cachedB) {\n            return cachedA === b && cachedB === a;\n        }\n        cache.set(a, b);\n        cache.set(b, a);\n        const result = areItemsEqual(a, b, state);\n        cache.delete(a);\n        cache.delete(b);\n        return result;\n    };\n}\n/**\n * Get the properties to strictly examine, which include both own properties that are\n * not enumerable and symbol properties.\n */\nfunction getStrictProperties(object) {\n    return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object));\n}\n/**\n * Whether the object contains the property passed as an own property.\n */\nconst hasOwn = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nObject.hasOwn || ((object, property) => hasOwnProperty.call(object, property));\n\nconst PREACT_VNODE = '__v';\nconst PREACT_OWNER = '__o';\nconst REACT_OWNER = '_owner';\nconst { getOwnPropertyDescriptor, keys } = Object;\n/**\n * Whether the values passed are equal based on a [SameValue](https://262.ecma-international.org/7.0/#sec-samevalue) basis.\n * Simplified, this maps to if the two values are referentially equal to one another (`a === b`) or both are `NaN`.\n *\n * @note\n * When available in the environment, this is just a re-export of the global\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) method.\n */\nconst sameValueEqual = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nObject.is\n    || function sameValueEqual(a, b) {\n        return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b;\n    };\n/**\n * Whether the values passed are equal based on a [SameValue](https://262.ecma-international.org/7.0/#sec-samevaluezero) basis.\n * Simplified, this maps to if the two values are referentially equal to one another (`a === b`), both are `NaN`, or both\n * are either positive or negative zero.\n */\nfunction sameValueZeroEqual(a, b) {\n    return a === b || (a !== a && b !== b);\n}\n/**\n * Whether the values passed are equal based on a\n * [Strict Equality Comparison](https://262.ecma-international.org/7.0/#sec-strict-equality-comparison) basis.\n * Simplified, this maps to if the two values are referentially equal to one another (`a === b`).\n *\n * @note\n * This is mainly available as a convenience function, such as being a default when a function to determine equality between\n * two objects is used.\n */\nfunction strictEqual(a, b) {\n    return a === b;\n}\n/**\n * Whether the array buffers are equal in value.\n */\nfunction areArrayBuffersEqual(a, b) {\n    return a.byteLength === b.byteLength && areTypedArraysEqual(new Uint8Array(a), new Uint8Array(b));\n}\n/**\n * Whether the arrays are equal in value.\n */\nfunction areArraysEqual(a, b, state) {\n    let index = a.length;\n    if (b.length !== index) {\n        return false;\n    }\n    while (index-- > 0) {\n        if (!state.equals(a[index], b[index], index, index, a, b, state)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the dataviews are equal in value.\n */\nfunction areDataViewsEqual(a, b) {\n    return (a.byteLength === b.byteLength\n        && areTypedArraysEqual(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)));\n}\n/**\n * Whether the dates passed are equal in value.\n */\nfunction areDatesEqual(a, b) {\n    return sameValueEqual(a.getTime(), b.getTime());\n}\n/**\n * Whether the errors passed are equal in value.\n */\nfunction areErrorsEqual(a, b) {\n    return a.name === b.name && a.message === b.message && a.cause === b.cause && a.stack === b.stack;\n}\n/**\n * Whether the `Map`s are equal in value.\n */\nfunction areMapsEqual(a, b, state) {\n    const size = a.size;\n    if (size !== b.size) {\n        return false;\n    }\n    if (!size) {\n        return true;\n    }\n    const matchedIndices = new Array(size);\n    const aIterable = a.entries();\n    let aResult;\n    let bResult;\n    let index = 0;\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    while ((aResult = aIterable.next())) {\n        if (aResult.done) {\n            break;\n        }\n        const bIterable = b.entries();\n        let hasMatch = false;\n        let matchIndex = 0;\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n        while ((bResult = bIterable.next())) {\n            if (bResult.done) {\n                break;\n            }\n            if (matchedIndices[matchIndex]) {\n                matchIndex++;\n                continue;\n            }\n            const aEntry = aResult.value;\n            const bEntry = bResult.value;\n            if (state.equals(aEntry[0], bEntry[0], index, matchIndex, a, b, state)\n                && state.equals(aEntry[1], bEntry[1], aEntry[0], bEntry[0], a, b, state)) {\n                hasMatch = matchedIndices[matchIndex] = true;\n                break;\n            }\n            matchIndex++;\n        }\n        if (!hasMatch) {\n            return false;\n        }\n        index++;\n    }\n    return true;\n}\n/**\n * Whether the objects are equal in value.\n */\nfunction areObjectsEqual(a, b, state) {\n    const properties = keys(a);\n    let index = properties.length;\n    if (keys(b).length !== index) {\n        return false;\n    }\n    // Decrementing `while` showed faster results than either incrementing or\n    // decrementing `for` loop and than an incrementing `while` loop. Declarative\n    // methods like `some` / `every` were not used to avoid incurring the garbage\n    // cost of anonymous callbacks.\n    while (index-- > 0) {\n        if (!isPropertyEqual(a, b, state, properties[index])) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the objects are equal in value with strict property checking.\n */\nfunction areObjectsEqualStrict(a, b, state) {\n    const properties = getStrictProperties(a);\n    let index = properties.length;\n    if (getStrictProperties(b).length !== index) {\n        return false;\n    }\n    let property;\n    let descriptorA;\n    let descriptorB;\n    // Decrementing `while` showed faster results than either incrementing or\n    // decrementing `for` loop and than an incrementing `while` loop. Declarative\n    // methods like `some` / `every` were not used to avoid incurring the garbage\n    // cost of anonymous callbacks.\n    while (index-- > 0) {\n        property = properties[index];\n        if (!isPropertyEqual(a, b, state, property)) {\n            return false;\n        }\n        descriptorA = getOwnPropertyDescriptor(a, property);\n        descriptorB = getOwnPropertyDescriptor(b, property);\n        if ((descriptorA || descriptorB)\n            && (!descriptorA\n                || !descriptorB\n                || descriptorA.configurable !== descriptorB.configurable\n                || descriptorA.enumerable !== descriptorB.enumerable\n                || descriptorA.writable !== descriptorB.writable)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the primitive wrappers passed are equal in value.\n */\nfunction arePrimitiveWrappersEqual(a, b) {\n    return sameValueEqual(a.valueOf(), b.valueOf());\n}\n/**\n * Whether the regexps passed are equal in value.\n */\nfunction areRegExpsEqual(a, b) {\n    return a.source === b.source && a.flags === b.flags;\n}\n/**\n * Whether the `Set`s are equal in value.\n */\nfunction areSetsEqual(a, b, state) {\n    const size = a.size;\n    if (size !== b.size) {\n        return false;\n    }\n    if (!size) {\n        return true;\n    }\n    const matchedIndices = new Array(size);\n    const aIterable = a.values();\n    let aResult;\n    let bResult;\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    while ((aResult = aIterable.next())) {\n        if (aResult.done) {\n            break;\n        }\n        const bIterable = b.values();\n        let hasMatch = false;\n        let matchIndex = 0;\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n        while ((bResult = bIterable.next())) {\n            if (bResult.done) {\n                break;\n            }\n            if (!matchedIndices[matchIndex]\n                && state.equals(aResult.value, bResult.value, aResult.value, bResult.value, a, b, state)) {\n                hasMatch = matchedIndices[matchIndex] = true;\n                break;\n            }\n            matchIndex++;\n        }\n        if (!hasMatch) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the TypedArray instances are equal in value.\n */\nfunction areTypedArraysEqual(a, b) {\n    let index = a.byteLength;\n    if (b.byteLength !== index || a.byteOffset !== b.byteOffset) {\n        return false;\n    }\n    while (index-- > 0) {\n        if (a[index] !== b[index]) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the URL instances are equal in value.\n */\nfunction areUrlsEqual(a, b) {\n    return (a.hostname === b.hostname\n        && a.pathname === b.pathname\n        && a.protocol === b.protocol\n        && a.port === b.port\n        && a.hash === b.hash\n        && a.username === b.username\n        && a.password === b.password);\n}\nfunction isPropertyEqual(a, b, state, property) {\n    if ((property === REACT_OWNER || property === PREACT_OWNER || property === PREACT_VNODE)\n        && (a.$$typeof || b.$$typeof)) {\n        return true;\n    }\n    return hasOwn(b, property) && state.equals(a[property], b[property], property, property, a, b, state);\n}\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Create a comparator method based on the type-specific equality comparators passed.\n */\nfunction createEqualityComparator(config) {\n    const supportedComparatorMap = createSupportedComparatorMap(config);\n    const { areArraysEqual, areDatesEqual, areFunctionsEqual, areMapsEqual, areNumbersEqual, areObjectsEqual, areRegExpsEqual, areSetsEqual, getUnsupportedCustomComparator, } = config;\n    /**\n     * compare the value of the two objects and return true if they are equivalent in values\n     */\n    return function comparator(a, b, state) {\n        // If the items are strictly equal, no need to do a value comparison.\n        if (a === b) {\n            return true;\n        }\n        // If either of the items are nullish and fail the strictly equal check\n        // above, then they must be unequal.\n        if (a == null || b == null) {\n            return false;\n        }\n        const type = typeof a;\n        if (type !== typeof b) {\n            return false;\n        }\n        if (type !== 'object') {\n            if (type === 'number' || type === 'bigint') {\n                return areNumbersEqual(a, b, state);\n            }\n            if (type === 'function') {\n                return areFunctionsEqual(a, b, state);\n            }\n            // If a primitive value that is not strictly equal, it must be unequal.\n            return false;\n        }\n        const constructor = a.constructor;\n        // Checks are listed in order of commonality of use-case:\n        //   1. Common complex object types (plain object, array)\n        //   2. Common data values (date, regexp)\n        //   3. Less-common complex object types (map, set)\n        //   4. Less-common data values (promise, primitive wrappers)\n        // Inherently this is both subjective and assumptive, however\n        // when reviewing comparable libraries in the wild this order\n        // appears to be generally consistent.\n        // Constructors should match, otherwise there is potential for false positives\n        // between class and subclass or custom object and POJO.\n        if (constructor !== b.constructor) {\n            return false;\n        }\n        // Try to fast-path equality checks for other complex object types in the\n        // same realm to avoid capturing the string tag. Strict equality is used\n        // instead of `instanceof` because it is more performant for the common\n        // use-case. If someone is creating a subclass from a native class, it will be\n        // handled with the string tag comparison.\n        if (constructor === Object) {\n            return areObjectsEqual(a, b, state);\n        }\n        if (constructor === Array) {\n            return areArraysEqual(a, b, state);\n        }\n        if (constructor === Date) {\n            return areDatesEqual(a, b, state);\n        }\n        if (constructor === RegExp) {\n            return areRegExpsEqual(a, b, state);\n        }\n        if (constructor === Map) {\n            return areMapsEqual(a, b, state);\n        }\n        if (constructor === Set) {\n            return areSetsEqual(a, b, state);\n        }\n        if (constructor === Promise) {\n            // Avoid tag checks for promise values, since we know if they are not referentially equal\n            // then they are not equal.\n            return false;\n        }\n        // `isArray()` works on subclasses and is cross-realm, so we can avoid capturing\n        // the string tag or doing an `instanceof` in edge cases.\n        if (Array.isArray(a)) {\n            return areArraysEqual(a, b, state);\n        }\n        // Since this is a custom object, capture the string tag to determining its type.\n        // This is reasonably performant in modern environments like v8 and SpiderMonkey.\n        const tag = toString.call(a);\n        const supportedComparator = supportedComparatorMap[tag];\n        if (supportedComparator) {\n            return supportedComparator(a, b, state);\n        }\n        const unsupportedCustomComparator = getUnsupportedCustomComparator && getUnsupportedCustomComparator(a, b, state, tag);\n        if (unsupportedCustomComparator) {\n            return unsupportedCustomComparator(a, b, state);\n        }\n        // If not matching any tags that require a specific type of comparison, then we hard-code false because\n        // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\n        //   - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\n        //     comparison that can be made.\n        //   - For types that can be introspected but do not have an objective definition of what\n        //     equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\n        // In all cases, these decisions should be reevaluated based on changes to the language and\n        // common development practices.\n        return false;\n    };\n}\n/**\n * Create the configuration object used for building comparators.\n */\nfunction createEqualityComparatorConfig({ circular, createCustomConfig, strict, }) {\n    let config = {\n        areArrayBuffersEqual,\n        areArraysEqual: strict ? areObjectsEqualStrict : areArraysEqual,\n        areDataViewsEqual,\n        areDatesEqual: areDatesEqual,\n        areErrorsEqual: areErrorsEqual,\n        areFunctionsEqual: strictEqual,\n        areMapsEqual: strict ? combineComparators(areMapsEqual, areObjectsEqualStrict) : areMapsEqual,\n        areNumbersEqual: sameValueEqual,\n        areObjectsEqual: strict ? areObjectsEqualStrict : areObjectsEqual,\n        arePrimitiveWrappersEqual: arePrimitiveWrappersEqual,\n        areRegExpsEqual: areRegExpsEqual,\n        areSetsEqual: strict ? combineComparators(areSetsEqual, areObjectsEqualStrict) : areSetsEqual,\n        areTypedArraysEqual: strict\n            ? combineComparators(areTypedArraysEqual, areObjectsEqualStrict)\n            : areTypedArraysEqual,\n        areUrlsEqual: areUrlsEqual,\n        getUnsupportedCustomComparator: undefined,\n    };\n    if (createCustomConfig) {\n        config = Object.assign({}, config, createCustomConfig(config));\n    }\n    if (circular) {\n        const areArraysEqual = createIsCircular(config.areArraysEqual);\n        const areMapsEqual = createIsCircular(config.areMapsEqual);\n        const areObjectsEqual = createIsCircular(config.areObjectsEqual);\n        const areSetsEqual = createIsCircular(config.areSetsEqual);\n        config = Object.assign({}, config, {\n            areArraysEqual,\n            areMapsEqual,\n            areObjectsEqual,\n            areSetsEqual,\n        });\n    }\n    return config;\n}\n/**\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\n * use inside the built comparator.\n */\nfunction createInternalEqualityComparator(compare) {\n    return function (a, b, _indexOrKeyA, _indexOrKeyB, _parentA, _parentB, state) {\n        return compare(a, b, state);\n    };\n}\n/**\n * Create the `isEqual` function used by the consuming application.\n */\nfunction createIsEqual({ circular, comparator, createState, equals, strict }) {\n    if (createState) {\n        return function isEqual(a, b) {\n            const { cache = circular ? new WeakMap() : undefined, meta } = createState();\n            return comparator(a, b, {\n                cache,\n                equals,\n                meta,\n                strict,\n            });\n        };\n    }\n    if (circular) {\n        return function isEqual(a, b) {\n            return comparator(a, b, {\n                cache: new WeakMap(),\n                equals,\n                meta: undefined,\n                strict,\n            });\n        };\n    }\n    const state = {\n        cache: undefined,\n        equals,\n        meta: undefined,\n        strict,\n    };\n    return function isEqual(a, b) {\n        return comparator(a, b, state);\n    };\n}\n/**\n * Create a map of `toString()` values to their respective handlers for `tag`-based lookups.\n */\nfunction createSupportedComparatorMap({ areArrayBuffersEqual, areArraysEqual, areDataViewsEqual, areDatesEqual, areErrorsEqual, areFunctionsEqual, areMapsEqual, areNumbersEqual, areObjectsEqual, arePrimitiveWrappersEqual, areRegExpsEqual, areSetsEqual, areTypedArraysEqual, areUrlsEqual, }) {\n    return {\n        '[object Arguments]': areObjectsEqual,\n        '[object Array]': areArraysEqual,\n        '[object ArrayBuffer]': areArrayBuffersEqual,\n        '[object AsyncGeneratorFunction]': areFunctionsEqual,\n        '[object BigInt]': areNumbersEqual,\n        '[object BigInt64Array]': areTypedArraysEqual,\n        '[object BigUint64Array]': areTypedArraysEqual,\n        '[object Boolean]': arePrimitiveWrappersEqual,\n        '[object DataView]': areDataViewsEqual,\n        '[object Date]': areDatesEqual,\n        // If an error tag, it should be tested explicitly. Like RegExp, the properties are not\n        // enumerable, and therefore will give false positives if tested like a standard object.\n        '[object Error]': areErrorsEqual,\n        '[object Float16Array]': areTypedArraysEqual,\n        '[object Float32Array]': areTypedArraysEqual,\n        '[object Float64Array]': areTypedArraysEqual,\n        '[object Function]': areFunctionsEqual,\n        '[object GeneratorFunction]': areFunctionsEqual,\n        '[object Int8Array]': areTypedArraysEqual,\n        '[object Int16Array]': areTypedArraysEqual,\n        '[object Int32Array]': areTypedArraysEqual,\n        '[object Map]': areMapsEqual,\n        '[object Number]': arePrimitiveWrappersEqual,\n        '[object Object]': (a, b, state) => \n        // The exception for value comparison is custom `Promise`-like class instances. These should\n        // be treated the same as standard `Promise` objects, which means strict equality, and if\n        // it reaches this point then that strict equality comparison has already failed.\n        typeof a.then !== 'function' && typeof b.then !== 'function' && areObjectsEqual(a, b, state),\n        // For RegExp, the properties are not enumerable, and therefore will give false positives if\n        // tested like a standard object.\n        '[object RegExp]': areRegExpsEqual,\n        '[object Set]': areSetsEqual,\n        '[object String]': arePrimitiveWrappersEqual,\n        '[object URL]': areUrlsEqual,\n        '[object Uint8Array]': areTypedArraysEqual,\n        '[object Uint8ClampedArray]': areTypedArraysEqual,\n        '[object Uint16Array]': areTypedArraysEqual,\n        '[object Uint32Array]': areTypedArraysEqual,\n    };\n}\n\n/**\n * Whether the items passed are deeply-equal in value.\n */\nconst deepEqual = createCustomEqual();\n/**\n * Whether the items passed are deeply-equal in value based on strict comparison.\n */\nconst strictDeepEqual = createCustomEqual({ strict: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references.\n */\nconst circularDeepEqual = createCustomEqual({ circular: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references,\n * based on strict comparison.\n */\nconst strictCircularDeepEqual = createCustomEqual({\n    circular: true,\n    strict: true,\n});\n/**\n * Whether the items passed are shallowly-equal in value.\n */\nconst shallowEqual = createCustomEqual({\n    createInternalComparator: () => sameValueEqual,\n});\n/**\n * Whether the items passed are shallowly-equal in value based on strict comparison\n */\nconst strictShallowEqual = createCustomEqual({\n    strict: true,\n    createInternalComparator: () => sameValueEqual,\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references.\n */\nconst circularShallowEqual = createCustomEqual({\n    circular: true,\n    createInternalComparator: () => sameValueEqual,\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references,\n * based on strict comparison.\n */\nconst strictCircularShallowEqual = createCustomEqual({\n    circular: true,\n    createInternalComparator: () => sameValueEqual,\n    strict: true,\n});\n/**\n * Create a custom equality comparison method.\n *\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\n * where the standard methods are not performant enough, but can also be used to provide\n * support for legacy environments that do not support expected features like\n * `RegExp.prototype.flags` out of the box.\n */\nfunction createCustomEqual(options = {}) {\n    const { circular = false, createInternalComparator: createCustomInternalComparator, createState, strict = false, } = options;\n    const config = createEqualityComparatorConfig(options);\n    const comparator = createEqualityComparator(config);\n    const equals = createCustomInternalComparator\n        ? createCustomInternalComparator(comparator)\n        : createInternalEqualityComparator(comparator);\n    return createIsEqual({ circular, comparator, createState, equals, strict });\n}\n\nexport { circularDeepEqual, circularShallowEqual, createCustomEqual, deepEqual, sameValueEqual, sameValueZeroEqual, shallowEqual, strictCircularDeepEqual, strictCircularShallowEqual, strictDeepEqual, strictEqual, strictShallowEqual };\n", "//#region src/performance.ts\nconst symbolCSpell = Symbol.for(\"cspell\");\nconst globalThisCSpell = globalThis;\nfunction measurePerfStart(name) {\n\t_measurePerfStart(name, isEnabledPerformanceMeasurements());\n}\nfunction measurePerfEnd(name) {\n\t_measurePerfEnd(name, isEnabledPerformanceMeasurements());\n}\nfunction _measurePerfStart(name, enabled) {\n\tif (!enabled) return;\n\tperformance.mark(name + \"-start\");\n}\nfunction _measurePerfEnd(name, enabled) {\n\tif (!enabled) return;\n\tperformance.mark(name + \"-end\");\n\tperformance.measure(name, name + \"-start\", name + \"-end\");\n}\n/**\n* Creates performance marks and measures the time taken between them.\n* @param name - name of the performance entry\n* @returns a function to stop the timer.\n*/\nfunction measurePerf(name) {\n\tconst enabled = isEnabledPerformanceMeasurements();\n\t_measurePerfStart(name, enabled);\n\treturn makeDisposableFunction(() => {\n\t\t_measurePerfEnd(name, enabled);\n\t});\n}\nfunction makeDisposableFunction(fn) {\n\tconst disposableFn = fn;\n\tdisposableFn[Symbol.dispose] = fn;\n\tdisposableFn[Symbol.asyncDispose] = () => (fn(), Promise.resolve());\n\treturn disposableFn;\n}\n/**\n* Enable or disable performance measurements.\n* @param enable - true to enable, false to disable. Default is true.\n*/\nfunction enablePerformanceMeasurements(enable = true) {\n\tglobalThisCSpell[symbolCSpell] ??= {};\n\tglobalThisCSpell[symbolCSpell].enablePerformanceMeasurements = enable;\n}\nfunction isEnabledPerformanceMeasurements() {\n\treturn !!globalThisCSpell[symbolCSpell]?.enablePerformanceMeasurements;\n}\n//#endregion\nexport { enablePerformanceMeasurements, measurePerf, measurePerfEnd, measurePerfStart };\n\n//# sourceMappingURL=index.js.map", "export class SimpleWeakCache {\n    size;\n    L0 = new WeakMap();\n    L1 = new WeakMap();\n    L2 = new WeakMap();\n    sizeL0 = 0;\n    constructor(size) {\n        this.size = size;\n    }\n    has(key) {\n        for (const c of this.caches()) {\n            if (c.has(key))\n                return true;\n        }\n        return false;\n    }\n    get(key) {\n        for (const c of this.caches()) {\n            const entry = c.get(key);\n            if (entry) {\n                if (c !== this.L0) {\n                    this._set(key, entry);\n                }\n                return entry.v;\n            }\n        }\n        return undefined;\n    }\n    set(key, value) {\n        this._set(key, { v: value });\n    }\n    _set(key, entry) {\n        if (this.L0.has(key)) {\n            this.L0.set(key, entry);\n            return this;\n        }\n        if (this.sizeL0 >= this.size) {\n            this.rotate();\n        }\n        this.sizeL0 += 1;\n        this.L0.set(key, entry);\n    }\n    caches() {\n        return [this.L0, this.L1, this.L2];\n    }\n    rotate() {\n        this.L2 = this.L1;\n        this.L1 = this.L0;\n        this.L0 = new WeakMap();\n        this.sizeL0 = 0;\n    }\n}\nexport class AutoWeakCache extends SimpleWeakCache {\n    factory;\n    constructor(factory, size) {\n        super(size);\n        this.factory = factory;\n    }\n    get(key) {\n        const v = super.get(key);\n        if (v !== undefined)\n            return v;\n        const val = this.factory(key);\n        this.set(key, val);\n        return val;\n    }\n}\n/**\n * This will cache between `size` and 3 x `size` items.\n * It has three stashes, L0, L1, and L2. Each can contain `size` items.\n * When L0 is full, its items are given to L1 and L1's are given to L2, and L2 is empties.\n *\n * The stashes are searched in order, L0...L2. If an item is found in L1, or L2, it is\n * promoted to L0.\n */\nexport class SimpleCache {\n    size;\n    L0 = new Map();\n    L1 = new Map();\n    L2 = new Map();\n    constructor(size) {\n        this.size = size;\n    }\n    has(key) {\n        for (const c of this.caches()) {\n            if (c.has(key))\n                return true;\n        }\n        return false;\n    }\n    get(key) {\n        for (const c of this.caches()) {\n            const entry = c.get(key);\n            if (entry) {\n                if (c !== this.L0) {\n                    this._set(key, entry);\n                }\n                return entry.v;\n            }\n        }\n        return undefined;\n    }\n    set(key, value) {\n        this._set(key, { v: value });\n    }\n    _set(key, entry) {\n        if (this.L0.has(key)) {\n            this.L0.set(key, entry);\n            return this;\n        }\n        if (this.L0.size >= this.size) {\n            this.rotate();\n        }\n        this.L0.set(key, entry);\n    }\n    caches() {\n        return [this.L0, this.L1, this.L2];\n    }\n    rotate() {\n        this.L2 = this.L1;\n        this.L1 = this.L0;\n        this.L0 = new Map();\n    }\n}\nexport class AutoCache extends SimpleCache {\n    factory;\n    constructor(factory, size) {\n        super(size);\n        this.factory = factory;\n    }\n    get(key) {\n        const v = super.get(key);\n        if (v !== undefined)\n            return v;\n        const val = this.factory(key);\n        this.set(key, val);\n        return val;\n    }\n}\n//# sourceMappingURL=simpleCache.js.map", "export const defaultOptions = Object.freeze({\n    weightMap: undefined,\n});\n//# sourceMappingURL=SpellingDictionary.js.map", "/**\n * Delete all `undefined` fields from an object.\n * @param src - object to be cleaned\n */\nexport function clean(src) {\n    const r = src;\n    for (const key of Object.keys(r)) {\n        if (r[key] === undefined) {\n            delete r[key];\n        }\n    }\n    return r;\n}\n//# sourceMappingURL=clean.js.map", "/**\n * Escape a string so it can be used as an exact match within a RegExp.\n * @param s - string to escape\n * @returns - the escaped string.\n */\nexport function escapeRegEx(s) {\n    return s.replaceAll(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replaceAll('-', '\\\\x2d');\n}\n//# sourceMappingURL=regexHelper.js.map", "import { expandCharacterSet } from 'cspell-trie-lib';\nimport { escapeRegEx } from './regexHelper.js';\nimport { isDefined } from './util.js';\nexport function createMapper(repMap, ignoreCharset) {\n    if (!repMap && !ignoreCharset)\n        return undefined;\n    repMap = repMap || [];\n    const charsetMap = charsetToRepMapRegEx(ignoreCharset);\n    if (charsetMap) {\n        repMap = [...repMap, ...charsetMap];\n    }\n    const filteredMap = repMap.filter(([match, _]) => !!match);\n    if (!filteredMap.length) {\n        return undefined;\n    }\n    const regEx = createMapperRegExp(repMap);\n    const values = repMap.filter(([match, _]) => !!match).map(([_, into]) => into);\n    function resolve(m, ...matches) {\n        const index = matches.findIndex((a) => !!a);\n        return 0 <= index && index < values.length ? values[index] : m;\n    }\n    function fn(s) {\n        return s.replace(regEx, resolve);\n    }\n    return {\n        test: regexpRemoveFlags(regEx, 'gm'),\n        fn,\n    };\n}\nfunction charsetToRepMapRegEx(charset, replaceWith = '') {\n    if (!charset)\n        return undefined;\n    return charset\n        .split('|')\n        .map((chars) => `[${chars.replaceAll(/[\\][\\\\]/g, '\\\\$&')}]`)\n        .map((map) => [map, replaceWith]);\n}\nfunction charsetToRepMap(charset, replaceWith = '') {\n    if (!charset)\n        return undefined;\n    return charset\n        .split('|')\n        .flatMap((chars) => [...expandCharacterSet(chars)])\n        .map((char) => [char, replaceWith]);\n}\nfunction expandReplaceMap(repMap) {\n    return repMap.flatMap(([from, replaceWith]) => from.split('|').map((w) => [w, replaceWith]));\n}\nfunction createMapperRegExp(repMap) {\n    const filteredMap = repMap.filter(([match, _]) => !!match);\n    if (!filteredMap.length) {\n        return /$^/;\n    }\n    const regExStr = filteredMap\n        .map(([from, _]) => from)\n        // make sure it compiles into a regex\n        .map((s) => {\n        try {\n            // fix up any nested ()\n            const r = /\\(/.test(s) ? s.replaceAll(/\\((?=.*\\))/g, '(?:').replaceAll('(?:?', '(?') : s;\n            new RegExp(r);\n            s = r;\n        }\n        catch {\n            return escapeRegEx(s);\n        }\n        return s;\n    })\n        .map((s) => `(${s})`)\n        .join('|');\n    const regEx = new RegExp(regExStr, 'g');\n    return regEx;\n}\nexport function createRepMapper(repMap, ignoreCharset) {\n    if (!repMap?.length && !ignoreCharset)\n        return undefined;\n    let tRepMap = repMap || [];\n    const charsetMap = charsetToRepMapRegEx(ignoreCharset);\n    if (charsetMap) {\n        tRepMap = [...tRepMap, ...charsetMap];\n    }\n    const regEx = createMapperRegExp(tRepMap);\n    const trie = createTrie(repMap, ignoreCharset);\n    // const root = createTrie(repMap, ignoreCharset);\n    return {\n        test: regexpRemoveFlags(regEx, 'gm'),\n        fn: (word) => {\n            const edits = calcAllEdits(trie, word);\n            return applyEdits(word, edits);\n        },\n    };\n}\nfunction applyEdits(word, edits) {\n    if (!edits.length)\n        return [word];\n    // Prepare\n    const letterEdits = [];\n    for (let i = 0; i < word.length; ++i) {\n        letterEdits[i] = { edits: [{ b: i, e: i + 1, r: word[i] }], suffixes: [] };\n    }\n    letterEdits[word.length] = { edits: [], suffixes: [''] };\n    // Add edits\n    for (const edit of edits) {\n        const le = letterEdits[edit.b];\n        le.edits.push(edit);\n    }\n    // Apply edits in reverse\n    for (let i = word.length - 1; i >= 0; --i) {\n        const le = letterEdits[i];\n        const sfx = le.suffixes;\n        for (const edit of le.edits) {\n            const pfx = edit.r;\n            const nSfx = letterEdits[edit.e].suffixes;\n            for (const s of nSfx) {\n                sfx.push(pfx + s);\n            }\n        }\n    }\n    const results = new Set(letterEdits[0].suffixes);\n    return [...results];\n}\nfunction calcAllEdits(root, word) {\n    const edits = [];\n    function walk(node, b, e) {\n        if (node.rep) {\n            node.rep.forEach((r) => edits.push({ b, e, r }));\n        }\n        if (e === word.length || !node.children)\n            return;\n        const n = node.children[word[e]];\n        if (!n)\n            return;\n        walk(n, b, e + 1);\n    }\n    for (let i = 0; i < word.length; ++i) {\n        walk(root, i, i);\n    }\n    return edits;\n}\nfunction createTrie(repMap, ignoreCharset) {\n    const combined = [repMap, charsetToRepMap(ignoreCharset)].filter(isDefined).flat();\n    const expanded = expandReplaceMap(combined);\n    const trieRoot = Object.create(null);\n    expanded.forEach(([match, replaceWith]) => addToTrie(trieRoot, match, replaceWith));\n    return trieRoot;\n}\nfunction addToTrie(node, match, replaceWith) {\n    while (match) {\n        const children = node.children || (node.children = Object.create(null));\n        const k = match[0];\n        const childNode = children[k] || (children[k] = Object.create(null));\n        node = childNode;\n        match = match.slice(1);\n    }\n    const s = new Set(node.rep || []);\n    s.add(replaceWith);\n    node.rep = [...s];\n}\nfunction regexpRemoveFlags(re, flagsToRemove) {\n    const toRemove = new Set(flagsToRemove);\n    const flags = [...re.flags].filter((f) => !toRemove.has(f)).join('');\n    return new RegExp(re.source, flags);\n}\nexport const __testing__ = {\n    charsetToRepMap: charsetToRepMapRegEx,\n    createMapperRegExp,\n    createTrie,\n    calcAllEdits,\n    applyEdits,\n};\n//# sourceMappingURL=repMap.js.map", "export const ignoreCase = true;\nexport const isForbiddenIgnoreCaseAndAccents = false;\n//# sourceMappingURL=defaults.js.map", "import { CompoundWordsMethod, decodeTrie, suggestionCollector } from 'cspell-trie-lib';\nimport { clean } from '../util/clean.js';\nimport { measurePerf } from '../util/performance.js';\nimport { createMapper, createRepMapper } from '../util/repMap.js';\nimport * as Defaults from './defaults.js';\nimport { createWeightMapFromDictionaryInformation, defaultNumSuggestions, hasOptionToSearchOption, impersonateCollector, wordSearchForms, wordSuggestForms, } from './SpellingDictionaryMethods.js';\nexport class SpellingDictionaryFromTrie {\n    trie;\n    name;\n    options;\n    source;\n    _size = 0;\n    knownWords = new Set();\n    unknownWords = new Set();\n    mapWord;\n    remapWord;\n    repMapper;\n    type = 'SpellingDictionaryFromTrie';\n    isDictionaryCaseSensitive;\n    containsNoSuggestWords;\n    #ignoreForbiddenWords = false;\n    #findWordOptionsCaseSensitive = { caseSensitive: true };\n    #findWordOptionsNotCaseSensitive = { caseSensitive: false };\n    weightMap;\n    constructor(trie, name, options, source = 'from trie', size) {\n        this.trie = trie;\n        this.name = name;\n        this.options = options;\n        this.source = source;\n        const mapWord = createMapper(options.repMap, options.dictionaryInformation?.ignore);\n        const repMapper = createRepMapper(options.repMap, options.dictionaryInformation?.ignore);\n        this.mapWord = mapWord?.fn;\n        this.remapWord = repMapper?.fn;\n        this.repMapper = repMapper;\n        this.isDictionaryCaseSensitive = options.caseSensitive ?? true;\n        this.containsNoSuggestWords = options.noSuggest || false;\n        this._size = size || 0;\n        this.weightMap = options.weightMap || createWeightMapFromDictionaryInformation(options.dictionaryInformation);\n        this.#ignoreForbiddenWords = !!options.ignoreForbiddenWords;\n        if (this.#ignoreForbiddenWords) {\n            this.#findWordOptionsCaseSensitive.checkForbidden = true;\n            this.#findWordOptionsNotCaseSensitive.checkForbidden = true;\n        }\n    }\n    get size() {\n        if (!this._size) {\n            // walk the trie and get the approximate size.\n            const i = this.trie.iterate();\n            // eslint-disable-next-line no-useless-assignment\n            let deeper = true;\n            let size = 0;\n            for (let r = i.next(); !r.done; r = i.next(deeper)) {\n                // count all nodes even though they are not words.\n                // because we are not going to all the leaves, this should give a good enough approximation.\n                size += 1;\n                deeper = r.value.text.length < 5;\n            }\n            this._size = size;\n        }\n        return this._size;\n    }\n    has(word, hasOptions) {\n        const { useCompounds, ignoreCase } = this.resolveOptions(hasOptions);\n        const r = this._find(word, useCompounds, ignoreCase, undefined);\n        return (r && !r.forbidden && !!r.found) || false;\n    }\n    find(word, hasOptions) {\n        const { useCompounds, ignoreCase } = this.resolveOptions(hasOptions);\n        const r = this._find(word, useCompounds, ignoreCase, hasOptions?.compoundSeparator);\n        const { forbidden = this.#isForbidden(word) } = r || {};\n        if (this.#ignoreForbiddenWords && forbidden) {\n            return undefined;\n        }\n        if (!r && !forbidden)\n            return undefined;\n        const { found = forbidden ? word : false } = r || {};\n        const noSuggest = found !== false && this.containsNoSuggestWords;\n        return { found, forbidden, noSuggest };\n    }\n    resolveOptions(hasOptions) {\n        const { useCompounds = this.options.useCompounds, ignoreCase = Defaults.ignoreCase } = hasOptionToSearchOption(hasOptions);\n        return { useCompounds, ignoreCase };\n    }\n    _find = (word, useCompounds, ignoreCase, compoundSeparator) => this.findAnyForm(word, useCompounds, ignoreCase, compoundSeparator);\n    findAnyForm(word, useCompounds, ignoreCase, compoundSeparator) {\n        const outerForms = outerWordForms(word, this.repMapper);\n        for (const form of outerForms) {\n            const r = this._findAnyForm(form, useCompounds, ignoreCase, compoundSeparator);\n            if (r)\n                return r;\n        }\n        return undefined;\n    }\n    _findAnyForm(mWord, useCompounds, ignoreCase, compoundSeparator) {\n        let opts = ignoreCase\n            ? this.#findWordOptionsNotCaseSensitive\n            : this.#findWordOptionsCaseSensitive;\n        if (compoundSeparator) {\n            opts = { ...opts, compoundSeparator };\n        }\n        const findResult = this.trie.findWord(mWord, opts);\n        if (findResult.found !== false) {\n            return findResult;\n        }\n        const forms = wordSearchForms(mWord, this.isDictionaryCaseSensitive, ignoreCase);\n        for (const w of forms) {\n            const findResult = this.trie.findWord(w, opts);\n            if (findResult.found !== false) {\n                return findResult;\n            }\n        }\n        if (useCompounds) {\n            const optsUseCompounds = { ...opts, useLegacyWordCompounds: useCompounds };\n            for (const w of forms) {\n                const findResult = this.trie.findWord(w, optsUseCompounds);\n                if (findResult.found !== false) {\n                    return findResult;\n                }\n            }\n        }\n        return undefined;\n    }\n    isNoSuggestWord(word, options) {\n        return this.containsNoSuggestWords ? this.has(word, options) : false;\n    }\n    isForbidden(word, _ignoreCaseAndAccents) {\n        return this.#ignoreForbiddenWords ? false : this.#isForbidden(word, _ignoreCaseAndAccents);\n    }\n    #isForbidden(word, _ignoreCaseAndAccents) {\n        return this.trie.isForbiddenWord(word);\n    }\n    suggest(word, suggestOptions = {}) {\n        return this._suggest(word, suggestOptions);\n    }\n    _suggest(word, suggestOptions) {\n        const { numSuggestions = defaultNumSuggestions, numChanges, includeTies, ignoreCase, timeout } = suggestOptions;\n        function filter(_word) {\n            return true;\n        }\n        const collector = suggestionCollector(word, clean({\n            numSuggestions,\n            filter,\n            changeLimit: numChanges,\n            includeTies,\n            ignoreCase,\n            timeout,\n            weightMap: this.weightMap,\n        }));\n        this.genSuggestions(collector, suggestOptions);\n        return collector.suggestions.map((r) => ({ ...r, word: r.word }));\n    }\n    genSuggestions(collector, suggestOptions) {\n        if (this.options.noSuggest)\n            return;\n        const _compoundMethod = suggestOptions.compoundMethod ??\n            (this.options.useCompounds ? CompoundWordsMethod.JOIN_WORDS : CompoundWordsMethod.NONE);\n        for (const w of wordSuggestForms(collector.word)) {\n            this.trie.genSuggestions(impersonateCollector(collector, w), _compoundMethod);\n        }\n    }\n    getPreferredSuggestions(word) {\n        if (!this.trie.hasPreferredSuggestions)\n            return [];\n        const sugs = [...this.trie.getPreferredSuggestions(word)];\n        return sugs.map((sug, i) => ({ word: sug, cost: i + 1, isPreferred: true }));\n    }\n    getErrors() {\n        return [];\n    }\n}\n/**\n * Create a dictionary from a trie file.\n * @param data - contents of a trie file.\n * @param name - name of dictionary\n * @param source - filename or uri\n * @param options - options.\n * @returns SpellingDictionary\n */\nexport function createSpellingDictionaryFromTrieFile(data, name, source, options) {\n    const endPerf = measurePerf('createSpellingDictionaryFromTrieFile');\n    const trie = decodeTrie(data);\n    const d = new SpellingDictionaryFromTrie(trie, name, options, source);\n    endPerf();\n    return d;\n}\n// eslint-disable-next-line no-control-regex\nconst isAsciiRange = /^[\\u0000-\\u007F]*$/;\nfunction* outerWordForms(word, repMapper) {\n    // Only generate the needed forms.\n    const sent = new Set();\n    let w = word;\n    const ww = w;\n    yield w;\n    // this function is called for every word lookup, so needs to be efficient.\n    // Check to see if it is a pure ascii word.\n    if (!isAsciiRange.test(w)) {\n        sent.add(w);\n        w = word.normalize('NFC');\n        if (w !== ww) {\n            yield w;\n            sent.add(w);\n        }\n        w = word.normalize('NFD');\n        if (w !== ww && !sent.has(w)) {\n            yield w;\n            sent.add(w);\n        }\n    }\n    if (!repMapper)\n        return;\n    const mapWord = repMapper.fn;\n    // nothing was added to the set, just do the map.\n    if (!sent.size) {\n        if (!repMapper.test.test(ww))\n            return;\n        for (const m of mapWord(ww)) {\n            if (m !== ww && !sent.has(m)) {\n                yield m;\n                sent.add(m);\n            }\n        }\n        return;\n    }\n    for (const f of sent) {\n        for (const m of mapWord(f)) {\n            if (m !== ww && !sent.has(m)) {\n                yield m;\n                sent.add(m);\n            }\n        }\n    }\n    return;\n}\nexport const __testing__ = { outerWordForms };\n//# sourceMappingURL=SpellingDictionaryFromTrie.js.map", "import { fileURLToPath } from 'node:url';\nimport { buildITrieFromWords, parseDictionaryLines } from 'cspell-trie-lib';\nimport { deepEqual } from 'fast-equals';\nimport { measurePerf } from '../util/performance.js';\nimport { AutoWeakCache, SimpleCache } from '../util/simpleCache.js';\nimport { defaultOptions } from './SpellingDictionary.js';\nimport { SpellingDictionaryFromTrie } from './SpellingDictionaryFromTrie.js';\nimport { createWeightMapFromDictionaryInformation } from './SpellingDictionaryMethods.js';\nconst cachedDictionaries = new AutoWeakCache(_createSpellingDictionary, 64);\nconst maxSetSize = 3;\nconst cachedParamsByWordList = new SimpleCache(64);\n/**\n * Create a SpellingDictionary\n * @param wordList - list of words\n * @param name - name of dictionary\n * @param source - filename or uri\n * @param options - dictionary options\n * @returns a Spelling Dictionary\n */\nexport function createSpellingDictionary(wordList, name, source, options, disableSuggestionsHandling) {\n    const params = [\n        wordList,\n        name,\n        source.toString(),\n        options,\n        disableSuggestionsHandling,\n    ];\n    if (!Array.isArray(wordList)) {\n        return _createSpellingDictionary(params);\n    }\n    const cached = cachedParamsByWordList.get(name) || new Set();\n    for (const cachedParams of cached) {\n        if (deepEqual(params, cachedParams)) {\n            return cachedDictionaries.get(cachedParams);\n        }\n    }\n    if (cached.size > maxSetSize)\n        cached.clear();\n    cached.add(params);\n    cachedParamsByWordList.set(name, cached);\n    return cachedDictionaries.get(params);\n}\nfunction _createSpellingDictionary(params) {\n    const n = ''; // ':' + params[1]; // Add name to perf name for easier debugging.\n    const endPerf = measurePerf('createSpellingDictionary' + n);\n    const [wordList, name, source, options, disableSuggestionHandling = false] = params;\n    // console.log(`createSpellingDictionary ${name} ${source}`);\n    const parseOptions = { stripCaseAndAccents: options?.supportNonStrictSearches ?? true, disableSuggestionHandling };\n    const words = parseDictionaryLines(wordList, parseOptions);\n    const trie = buildITrieFromWords(words);\n    const opts = { ...(options || defaultOptions) };\n    if (opts.weightMap === undefined && opts.dictionaryInformation) {\n        opts.weightMap = createWeightMapFromDictionaryInformation(opts.dictionaryInformation);\n    }\n    const d = new SpellingDictionaryFromTrie(trie, name, opts, source);\n    endPerf();\n    return d;\n}\nexport function createFailedToLoadDictionary(name, sourceUrl, error, options) {\n    const sourceHref = typeof sourceUrl === 'string' ? sourceUrl : sourceUrl.href;\n    const source = sourceHref.startsWith('file:') ? fileURLToPath(sourceUrl) : sourceHref;\n    options = options || {};\n    return {\n        name,\n        source,\n        type: 'error',\n        containsNoSuggestWords: false,\n        has: () => false,\n        find: () => undefined,\n        isNoSuggestWord: () => false,\n        isForbidden: () => false,\n        suggest: () => [],\n        mapWord: undefined,\n        genSuggestions: () => {\n            return;\n        },\n        size: 0,\n        options,\n        isDictionaryCaseSensitive: false,\n        getErrors: () => [error],\n    };\n}\n//# sourceMappingURL=createSpellingDictionary.js.map", "import { isAsyncIterable } from '../helpers/index.js';\n/**\n * Append values onto the end of an iterable.\n * @param iterablesToAppend - the iterables in the order to be appended.\n * @returns\n */\nexport function opAppendAsync(...iterablesToAppend) {\n    async function* fnAppend(iter) {\n        yield* iter;\n        for (const i of iterablesToAppend) {\n            yield* i;\n        }\n    }\n    return fnAppend;\n}\n/**\n * Append values onto the end of an iterable.\n * @param iterablesToAppend - the iterables in the order to be appended.\n * @returns\n */\nexport function opAppendSync(...iterablesToAppend) {\n    function* fnAppend(iter) {\n        yield* iter;\n        for (const i of iterablesToAppend) {\n            yield* i;\n        }\n    }\n    return fnAppend;\n}\nexport function opAppend(...iterablesToAppend) {\n    function _(i) {\n        return isAsyncIterable(i) ? opAppendAsync(...iterablesToAppend)(i) : opAppendSync(...iterablesToAppend)(i);\n    }\n    return _;\n}\n//# sourceMappingURL=append.js.map", "export function opCombineAsync(...fns) {\n    function combine(iter) {\n        for (const fn of fns) {\n            iter = fn(iter);\n        }\n        return iter;\n    }\n    return combine;\n}\nexport function opCombineSync(...fns) {\n    function combine(iter) {\n        for (const fn of fns) {\n            iter = fn(iter);\n        }\n        return iter;\n    }\n    return combine;\n}\n//# sourceMappingURL=combine.js.map", "import { toPipeFn } from '../helpers/util.js';\nexport function opConcatMapAsync(mapFn) {\n    async function* fn(iter) {\n        for await (const v of iter) {\n            yield* mapFn(v);\n        }\n    }\n    return fn;\n}\nexport function opConcatMapSync(mapFn) {\n    function fnConcatMapSync(iterable) {\n        function opConcatMapIterator() {\n            const iter = iterable[Symbol.iterator]();\n            let resultsIter = undefined;\n            function nextConcatMap() {\n                while (true) {\n                    if (resultsIter) {\n                        const { done, value } = resultsIter.next();\n                        if (!done) {\n                            return { value };\n                        }\n                        resultsIter = undefined;\n                    }\n                    const { done, value } = iter.next();\n                    if (done) {\n                        return { done, value: undefined };\n                    }\n                    resultsIter = mapFn(value)[Symbol.iterator]();\n                }\n            }\n            return {\n                next: nextConcatMap,\n            };\n        }\n        return {\n            [Symbol.iterator]: opConcatMapIterator,\n        };\n    }\n    return fnConcatMapSync;\n}\nexport function _opConcatMapSync(mapFn) {\n    function* fnConcatMapSync(iter) {\n        for (const v of iter) {\n            yield* mapFn(v);\n        }\n    }\n    return fnConcatMapSync;\n}\nexport const opConcatMap = (fn) => toPipeFn(opConcatMapSync(fn), opConcatMapAsync(fn));\n//# sourceMappingURL=concatMap.js.map", "import { isAsyncIterable } from '../helpers/util.js';\n// prettier-ignore\nexport function opFilterAsync(filterFn) {\n    async function* genFilter(iter) {\n        for await (const v of iter) {\n            const pass = await filterFn(v);\n            if (pass)\n                yield v;\n        }\n    }\n    return genFilter;\n}\nexport function opFilterSync(filterFn) {\n    function opFilterIterable(iterable) {\n        function opFilterIterator() {\n            const iter = iterable[Symbol.iterator]();\n            function nextOpFilter() {\n                while (true) {\n                    const { done, value } = iter.next();\n                    if (done)\n                        return { done, value: undefined };\n                    if (filterFn(value))\n                        return { value };\n                }\n            }\n            return {\n                next: nextOpFilter,\n            };\n        }\n        return {\n            [Symbol.iterator]: opFilterIterator,\n        };\n    }\n    return opFilterIterable;\n}\nexport function _opFilterSync(filterFn) {\n    function* genFilter(iter) {\n        for (const v of iter) {\n            if (filterFn(v))\n                yield v;\n        }\n    }\n    return genFilter;\n}\nexport function opFilter(fn) {\n    const asyncFn = opFilterAsync(fn);\n    const syncFn = opFilterSync(fn);\n    function _(i) {\n        return isAsyncIterable(i) ? asyncFn(i) : syncFn(i);\n    }\n    return _;\n}\n//# sourceMappingURL=filter.js.map", "import { toPipeFn } from '../helpers/util.js';\nexport function opMapAsync(mapFn) {\n    async function* genMap(iter) {\n        for await (const v of iter) {\n            yield mapFn(v);\n        }\n    }\n    return genMap;\n}\nexport function _opMapSync(mapFn) {\n    function* genMap(iter) {\n        for (const v of iter) {\n            yield mapFn(v);\n        }\n    }\n    return genMap;\n}\nexport function opMapSync(mapFn) {\n    function opMapIterable(iterable) {\n        function opMapIterator() {\n            const iter = iterable[Symbol.iterator]();\n            function nextOpMap() {\n                const { done, value } = iter.next();\n                if (done)\n                    return { done, value: undefined };\n                return { value: mapFn(value) };\n            }\n            return {\n                next: nextOpMap,\n            };\n        }\n        return {\n            [Symbol.iterator]: opMapIterator,\n        };\n    }\n    return opMapIterable;\n}\nexport const opMap = (fn) => toPipeFn(opMapSync(fn), opMapAsync(fn));\n//# sourceMappingURL=map.js.map", "import { toAsyncIterable } from './helpers/index.js';\nimport { opCombineAsync, opCombineSync } from './operators/index.js';\nexport function pipeAsync(i, ...fns) {\n    const iter = toAsyncIterable(i);\n    return opCombineAsync(...fns)(iter);\n}\nexport function pipeSync(i, ...fns) {\n    return opCombineSync(...fns)(i);\n}\n//# sourceMappingURL=pipe.js.map", "import { removeAccents } from './text.js';\nexport function* mapperNormalizeNFC(words) {\n    for (const word of words) {\n        yield word.normalize('NFC');\n    }\n}\nexport function* mapperRemoveCaseAndAccents(words) {\n    for (const word of words) {\n        const lc = word.toLowerCase();\n        yield lc;\n        const woAccents = removeAccents(lc);\n        if (lc !== woAccents)\n            yield woAccents;\n    }\n}\n//# sourceMappingURL=textMappers.js.map", "import { opConcatMap, opFilter, pipe } from '@cspell/cspell-pipe/sync';\nfunction normalizeTyposDefValue(value) {\n    if (!value)\n        return false;\n    if (typeof value === 'string')\n        return value;\n    const unique = [...new Set(value)];\n    return unique.length > 1 ? unique : unique.length === 1 ? unique[0] : false;\n}\nexport function mergeDefEntry(targetDef, key, value) {\n    const curValue = targetDef[key];\n    if (!curValue) {\n        targetDef[key] = normalizeTyposDefValue(value);\n        return targetDef;\n    }\n    if (!value)\n        return targetDef;\n    const newValue = Array.isArray(curValue) ? curValue : [curValue];\n    if (Array.isArray(value)) {\n        newValue.push(...value);\n    }\n    else {\n        newValue.push(value);\n    }\n    targetDef[key] = normalizeTyposDefValue(newValue);\n    return targetDef;\n}\n/**\n * Merge in place the entries `fromDef` into `targetDef`\n * @param targetDef - the target\n * @param fromDef - the source\n * @returns the target\n */\nexport function mergeDef(targetDef, fromDef) {\n    for (const key of Object.keys(fromDef)) {\n        mergeDefEntry(targetDef, key, fromDef[key]);\n    }\n    return targetDef;\n}\n/**\n * Append an entry to a TyposDef.\n * @param def - modified in place\n * @param entry- entry to add.\n * @returns def\n */\nexport function appendToDef(def, entry) {\n    if (!entry)\n        return def;\n    if (typeof entry === 'string') {\n        if (!def[entry]) {\n            def[entry] = false;\n        }\n        return def;\n    }\n    if (Array.isArray(entry)) {\n        const [key, ...sugs] = entry.map((s) => s.trim());\n        if (!key)\n            return def;\n        const s = sugs.map((s) => s.trim()).filter((s) => !!s);\n        return mergeDefEntry(def, key, s);\n    }\n    return mergeDef(def, entry);\n}\nexport function createTyposDef(entries) {\n    const def = Object.create(null);\n    if (!entries)\n        return def;\n    for (const [key, value] of entries) {\n        def[key] = isDefined(value) ? value : false;\n    }\n    return def;\n}\n/**\n * Extract all suggestions.\n * @param typosDef - the def\n * @returns the set of suggestions.\n */\nexport function extractAllSuggestions(typosDef) {\n    const allSugs = pipe(Object.values(typosDef), opFilter(hasSuggestions), opConcatMap((v) => (Array.isArray(v) ? v : [v])));\n    return new Set(allSugs);\n}\n/**\n * Extract all words that have been explicitly ignore because they contains the `ignorePrefix`.\n * @param typosDef - the def\n * @param ignorePrefix - prefix\n * @returns set of ignored words with the prefix removed.\n */\nexport function extractIgnoreValues(typosDef, ignorePrefix) {\n    const pfxLen = ignorePrefix.length;\n    return new Set(Object.keys(typosDef)\n        .filter((k) => k.startsWith(ignorePrefix))\n        .map((k) => k.slice(pfxLen)));\n}\nfunction isDefined(v) {\n    return v !== undefined && v !== null;\n}\nfunction isString(v) {\n    return typeof v === 'string';\n}\nfunction isArray(v) {\n    return Array.isArray(v);\n}\nfunction hasSuggestions(v) {\n    return isString(v) || isArray(v);\n}\nexport function assert(condition, message = 'Assert Failed') {\n    if (condition)\n        return;\n    throw new Error(message);\n}\n//# sourceMappingURL=util.js.map", "import { appendToDef, assert, createTyposDef } from './util.js';\nfunction assertString(v) {\n    assert(typeof v === 'string', 'A string was expected.');\n    return true;\n}\nconst suggestionsSeparator = /[,]/;\n// const typoSuggestionsSeparator = /:|->/;\nconst typoEntrySeparator = /[\\n;]/;\nconst inlineComment = /#.*/gm;\nconst sugFormatRegex = /^\\s*(?:[!~:])*(?<word>.*?)(?<separator>(->|:([0-9a-f]{1,2}:)?))(?<sugs>.*)$/;\nexport function isSuggestion(v) {\n    return sugFormatRegex.test(v);\n}\nexport function createTyposDefFromEntries(entries) {\n    const def = Object.create(null);\n    for (const entry of entries) {\n        appendToDef(def, entry);\n    }\n    return def;\n}\nfunction normalize(s) {\n    return s.normalize();\n}\nfunction trimAndFilter(lines) {\n    return lines\n        .map((s) => s.trim())\n        .filter((s) => !!s)\n        .map(normalize);\n}\nfunction cleanSugs(rawSugs) {\n    const sugs = trimAndFilter(rawSugs);\n    return sugs.length === 1 ? sugs[0] : sugs.length ? sugs : false;\n}\nfunction splitSuggestionsValue(value) {\n    return cleanSugs(value.split(suggestionsSeparator));\n}\nexport function sanitizeIntoTypoDef(dirtyDef) {\n    if (!dirtyDef || typeof dirtyDef !== 'object')\n        return undefined;\n    const def = createTyposDef();\n    for (const [rawKey, value] of Object.entries(dirtyDef)) {\n        const key = normalize(rawKey.trim());\n        if (!key)\n            continue;\n        if (typeof value === 'string') {\n            def[key] = splitSuggestionsValue(value);\n            continue;\n        }\n        if (Array.isArray(value)) {\n            const sugs = cleanSugs(value.filter(assertString));\n            def[key] = sugs;\n            continue;\n        }\n        assert(value === false, 'Unexpected suggestion type.');\n        def[key] = false;\n    }\n    return def;\n}\n/**\n * Parse Typos Entries\n *\n * Format:\n * - `word:suggestion`\n * - `word->suggestion`\n * - `word: first, second, third suggestions`\n *\n * Note:\n * ```plaintext\n * yellow:blue, green\n * ```\n * Is the same as multiple entries with the same key and different suggestions.\n * ```plaintext\n * yellow:blue\n * yellow:green\n * ```\n *\n * Used to process entries found in a `cspell.json` file.\n * @param entries - entries to process\n * @returns a TyposDef\n */\nexport function processEntriesToTyposDef(entries) {\n    const def = isIterable(entries) ? reduceToTyposDef(entries) : entries;\n    const result = sanitizeIntoTypoDef(def);\n    assert(result);\n    return result;\n}\nfunction reduceToTyposDef(entries) {\n    const def = createTyposDef();\n    for (const entry of entries) {\n        appendToDef(def, parseTyposLine(entry));\n    }\n    return def;\n}\n/**\n * Tries to parse an entry.\n * @param line - any valid TypoEntry.\n * @returns a valid TypoEntry\n */\nexport function parseTyposLine(line) {\n    if (!line)\n        return undefined;\n    if (typeof line === 'string') {\n        const def = createTyposDef();\n        for (const subEntry of splitIntoLines(line)) {\n            const [left, right] = splitEntry(subEntry);\n            const typo = left.trim();\n            if (!right)\n                return typo;\n            const sugs = splitSuggestionsValue(right);\n            def[typo] = sugs;\n        }\n        return def;\n    }\n    if (Array.isArray(line)) {\n        const [key, ...sugs] = line.filter(assertString).map((s) => s.trim());\n        if (!key)\n            return undefined;\n        return [key, ...sugs];\n    }\n    return sanitizeIntoTypoDef(line);\n}\n/**\n * Split text into multiple lines\n * @param content - text content\n * @returns\n */\nfunction splitIntoLines(content) {\n    return trimAndFilter(normalize(content).split(typoEntrySeparator));\n}\n/**\n * Split a typo entry into key and value\n * Entry format:\n * - `word:suggestion`\n * - `word->suggestion`\n * - `word: first, second, third suggestions`\n * - sequencing values are ignored, e.g.: `:0:`, `:1:`, `:a:`\n *   - `word:0:first`\n *   - `word:1:second`\n * @param line - the line of text\n * @returns\n */\nfunction splitEntry(line) {\n    // Remove any sequencing values like `:1:` or `:a:`\n    const m = line.match(sugFormatRegex);\n    if (!m?.groups) {\n        return [line.trim(), undefined];\n    }\n    return [m.groups.word.trim(), m.groups.sugs.trim()];\n}\nexport function parseTyposFile(content) {\n    const lines = splitIntoLines(content.replaceAll(inlineComment, ''));\n    return reduceToTyposDef(lines);\n}\nfunction isIterable(v) {\n    return Symbol.iterator in v;\n}\n//# sourceMappingURL=typosParser.js.map", "import { opAppend, pipe } from '@cspell/cspell-pipe/sync';\nimport { createAutoResolveWeakCache } from '../util/AutoResolve.js';\nimport { mapperRemoveCaseAndAccents } from '../util/textMappers.js';\nimport * as defaults from './defaults.js';\nimport { processEntriesToTyposDef } from './Typos/index.js';\nimport { extractAllSuggestions, extractIgnoreValues } from './Typos/util.js';\nclass TyposDictionaryImpl {\n    name;\n    source;\n    typosDef;\n    containsNoSuggestWords;\n    options = {};\n    type = 'typos';\n    size;\n    mapWord = undefined;\n    ignoreWords;\n    /**\n     * Note: ignoreWordsLower is only suggestions with the case and accents removed.\n     * The logic is that if someone explicity ignored an upper case version, it does not\n     * mean that the lower case version is ok.\n     */\n    suggestions;\n    suggestionsLower;\n    explicitIgnoreWords;\n    constructor(name, source, typosDef, ignoreList) {\n        this.name = name;\n        this.source = source;\n        this.typosDef = typosDef;\n        this.size = Object.keys(typosDef).length;\n        this.explicitIgnoreWords = extractIgnoreValues(typosDef, '!');\n        this.suggestions = extractAllSuggestions(typosDef);\n        this.ignoreWords = new Set(pipe(this.explicitIgnoreWords, opAppend(ignoreList || [])));\n        this.suggestionsLower = new Set(pipe(this.suggestions, mapperRemoveCaseAndAccents));\n        this.containsNoSuggestWords = this.ignoreWords.size > 0;\n    }\n    /**\n     * A Forbidden word list does not \"have\" valid words.\n     * Therefore it always returns false.\n     * @param _word - the word\n     * @param _options - options\n     * @returns always false\n     */\n    has(_word, _options) {\n        return false;\n    }\n    /** A more detailed search for a word, might take longer than `has` */\n    find(word, options) {\n        const result = this._findForms(word, options?.ignoreCase ?? defaults.ignoreCase);\n        if (result === false)\n            return undefined;\n        const { found, ignore } = result;\n        return { found, forbidden: !ignore, noSuggest: ignore };\n    }\n    _findForms(word, ignoreCaseAndAccents) {\n        const lcWord = word.toLowerCase();\n        if (this.ignoreWords.has(word)) {\n            return { found: word, ignore: true };\n        }\n        if (this.suggestions.has(word)) {\n            return false;\n        }\n        if (ignoreCaseAndAccents) {\n            if (this.suggestionsLower.has(lcWord)) {\n                return false;\n            }\n            if (this.ignoreWords.has(lcWord)) {\n                return { found: lcWord, ignore: true };\n            }\n        }\n        if (word in this.typosDef)\n            return { found: word, ignore: false };\n        if (lcWord in this.typosDef)\n            return { found: lcWord, ignore: false };\n        return false;\n    }\n    isForbidden(word, ignoreCaseAndAccents = defaults.isForbiddenIgnoreCaseAndAccents) {\n        const found = this._findForms(word, ignoreCaseAndAccents);\n        return found !== false && !found.ignore;\n    }\n    isNoSuggestWord(word, options) {\n        const result = this.find(word, options);\n        return result?.noSuggest ?? false;\n    }\n    /**\n     * Determine if the word can appear in a list of suggestions.\n     * @param word - word\n     * @param ignoreCaseAndAccents - ignore case.\n     * @returns true if a word is suggested, otherwise false.\n     */\n    isSuggestedWord(word, ignoreCaseAndAccents = defaults.isForbiddenIgnoreCaseAndAccents) {\n        if (this.suggestions.has(word))\n            return true;\n        const lcWord = word.toLowerCase();\n        return ignoreCaseAndAccents && (this.suggestions.has(lcWord) || this.suggestionsLower.has(lcWord));\n    }\n    suggest(word) {\n        return this.getPreferredSuggestions(word);\n    }\n    _suggest(word) {\n        if (this.ignoreWords.has(word))\n            return [];\n        if (!(word in this.typosDef))\n            return undefined;\n        const sug = this.typosDef[word];\n        const isPreferred = true;\n        if (!sug)\n            return [];\n        if (typeof sug === 'string') {\n            return [\n                {\n                    word: sug,\n                    cost: 1,\n                    isPreferred,\n                },\n            ];\n        }\n        return sug.map((word, index) => ({ word, cost: index + 1, isPreferred }));\n    }\n    genSuggestions(collector) {\n        const sugs = this.suggest(collector.word);\n        sugs.forEach((result) => collector.add(result));\n    }\n    getPreferredSuggestions(word) {\n        return this._suggest(word) || this._suggest(word.toLowerCase()) || [];\n    }\n    isDictionaryCaseSensitive = true;\n    getErrors() {\n        return [];\n    }\n}\nconst createCache = createAutoResolveWeakCache();\n/**\n * Create a dictionary where all words are to be forbidden.\n * @param entries - list of Typos Entries\n * @param name - name of dictionary\n * @param source - source\n * @returns\n */\nexport function createTyposDictionary(entries, name, source) {\n    return createCache.get(entries, () => {\n        const def = processEntriesToTyposDef(entries);\n        return new TyposDictionaryImpl(name, source, def);\n    });\n}\n//# sourceMappingURL=TyposDictionary.js.map", "import { parseDictionary, parseDictionaryLines } from 'cspell-trie-lib';\nimport { createAutoResolveWeakCache } from '../util/AutoResolve.js';\nimport * as Defaults from './defaults.js';\nimport { defaultOptions } from './SpellingDictionary.js';\nimport { SpellingDictionaryFromTrie } from './SpellingDictionaryFromTrie.js';\nimport { createTyposDictionary } from './TyposDictionary.js';\nexport class FlagWordsDictionaryTrie extends SpellingDictionaryFromTrie {\n    name;\n    source;\n    containsNoSuggestWords = false;\n    options = {};\n    constructor(trie, name, source) {\n        super(trie, name, defaultOptions, source);\n        this.name = name;\n        this.source = source;\n    }\n    /**\n     * A Forbidden word list does not \"have\" valid words.\n     * Therefore it always returns false.\n     * @param _word - the word\n     * @param _options - options\n     * @returns always false\n     */\n    has(_word, _options) {\n        return false;\n    }\n    find(word, hasOptions) {\n        const f = super.find(word, hasOptions);\n        if (!f || !f.forbidden)\n            return undefined;\n        return f;\n    }\n    suggest() {\n        return [];\n    }\n    genSuggestions() {\n        return;\n    }\n    isDictionaryCaseSensitive = true;\n    terms() {\n        return this.trie.words();\n    }\n}\nexport class FlagWordsDictionary {\n    name;\n    source;\n    dictTypos;\n    dictTrie;\n    containsNoSuggestWords = false;\n    options = {};\n    type = 'flag-words';\n    mapWord = undefined;\n    constructor(name, source, dictTypos, dictTrie) {\n        this.name = name;\n        this.source = source;\n        this.dictTypos = dictTypos;\n        this.dictTrie = dictTrie;\n    }\n    /**\n     * A Forbidden word list does not \"have\" valid words.\n     * Therefore it always returns false.\n     * @param word - the word\n     * @param options - options\n     * @returns always false\n     */\n    has(word, options) {\n        return this.dictTypos.has(word, options) || this.dictTrie?.has(word, options) || false;\n    }\n    /** A more detailed search for a word, might take longer than `has` */\n    find(word, options) {\n        const findTypos = this.dictTypos.find(word, options);\n        if (findTypos)\n            return findTypos;\n        const ignoreCase = options?.ignoreCase ?? Defaults.ignoreCase;\n        if (this.dictTypos.isSuggestedWord(word, ignoreCase))\n            return undefined;\n        return this.dictTrie?.find(word, options);\n    }\n    isForbidden(word, ignoreCaseAndAccents = Defaults.isForbiddenIgnoreCaseAndAccents) {\n        const findResult = this.find(word, { ignoreCase: ignoreCaseAndAccents });\n        return findResult?.forbidden || false;\n    }\n    isNoSuggestWord(word, options) {\n        return this.dictTrie?.isNoSuggestWord(word, options) || this.dictTypos.isNoSuggestWord(word, options);\n    }\n    suggest(word, suggestOptions = {}) {\n        return this.dictTypos.suggest(word, suggestOptions);\n    }\n    getPreferredSuggestions(word) {\n        return this.dictTypos.getPreferredSuggestions(word);\n    }\n    genSuggestions() {\n        return;\n    }\n    get size() {\n        return this.dictTypos.size + (this.dictTrie?.size || 0);\n    }\n    isDictionaryCaseSensitive = true;\n    getErrors() {\n        return [];\n    }\n    *terms() {\n        if (this.dictTrie) {\n            yield* this.dictTrie.terms();\n            return;\n        }\n        return;\n    }\n}\nconst createCache = createAutoResolveWeakCache();\n/**\n * Create a dictionary where all words are to be forbidden.\n * @param wordList - list of words\n * @param name\n * @param source\n * @param options\n * @returns SpellingDictionary\n */\nexport function createFlagWordsDictionary(wordList, name, source) {\n    return createCache.get(wordList, () => {\n        const testSpecialCharacters = /[~*+]/;\n        const { t: specialWords, f: typoWords } = bisect(parseDictionaryLines(wordList, { stripCaseAndAccents: false }), (line) => testSpecialCharacters.test(line));\n        const trie = parseDictionary(specialWords, { stripCaseAndAccents: false, makeWordsForbidden: true });\n        const trieDict = new FlagWordsDictionaryTrie(trie, name, source);\n        const typosDict = createTyposDictionary(typoWords, name, source);\n        if (!specialWords.size)\n            return typosDict;\n        return new FlagWordsDictionary(name, source, typosDict, trieDict);\n    });\n}\nfunction bisect(values, predicate) {\n    const t = new Set();\n    const f = new Set();\n    for (const v of values) {\n        if (predicate(v)) {\n            t.add(v);\n        }\n        else {\n            f.add(v);\n        }\n    }\n    return { t, f };\n}\n//# sourceMappingURL=FlagWordsDictionary.js.map", "import { opFilter, opMap, pipe } from '@cspell/cspell-pipe/sync';\nimport { parseDictionaryLines } from 'cspell-trie-lib';\nimport { createAutoResolveWeakCache } from '../util/AutoResolve.js';\nimport { createSpellingDictionary } from './createSpellingDictionary.js';\nimport * as Defaults from './defaults.js';\nconst NormalizeForm = 'NFC';\nclass IgnoreWordsDictionary {\n    name;\n    source;\n    dict;\n    dictNonStrict;\n    containsNoSuggestWords = true;\n    options = {};\n    type = 'ignore';\n    mapWord = undefined;\n    constructor(name, source, words) {\n        this.name = name;\n        this.source = source;\n        this.dict = new Set(words);\n        this.dictNonStrict = new Set(pipe(this.dict, opFilter((w) => w.startsWith('~')), opMap((w) => w.slice(1))));\n    }\n    /**\n     * A Forbidden word list does not \"have\" valid words.\n     * Therefore it always returns false.\n     * @param _word - the word\n     * @param _options - options\n     * @returns always false\n     */\n    has(word, options) {\n        const nWord = word.normalize(NormalizeForm);\n        if (this.dict.has(nWord))\n            return true;\n        const lcWord = nWord.toLowerCase();\n        if (this.dict.has(lcWord))\n            return true;\n        const ignoreCase = options?.ignoreCase ?? Defaults.ignoreCase;\n        return ignoreCase && (this.dictNonStrict.has(nWord) || this.dictNonStrict.has(lcWord));\n    }\n    /** A more detailed search for a word, might take longer than `has` */\n    find(word, options) {\n        const nWord = word.normalize(NormalizeForm);\n        if (this.dict.has(nWord))\n            return { found: nWord, forbidden: false, noSuggest: true };\n        const lcWord = nWord.toLowerCase();\n        if (this.dict.has(lcWord))\n            return { found: lcWord, forbidden: false, noSuggest: true };\n        const ignoreCase = options?.ignoreCase ?? Defaults.ignoreCase;\n        if (!ignoreCase)\n            return undefined;\n        if (this.dictNonStrict.has(nWord))\n            return { found: nWord, forbidden: false, noSuggest: true };\n        return (this.dictNonStrict.has(lcWord) && { found: lcWord, forbidden: false, noSuggest: true }) || undefined;\n    }\n    isForbidden(_word, _ignoreCase) {\n        return false;\n    }\n    isNoSuggestWord(word, options) {\n        return this.has(word, options);\n    }\n    suggest() {\n        return [];\n    }\n    genSuggestions() {\n        return;\n    }\n    get size() {\n        return this.dict.size;\n    }\n    isDictionaryCaseSensitive = true;\n    getErrors() {\n        return [];\n    }\n}\nconst createCache = createAutoResolveWeakCache();\n/**\n * Create a dictionary where all words are to be ignored.\n * Ignored words override forbidden words.\n * @param wordList - list of words\n * @param name - name of dictionary\n * @param source - dictionary source\n * @returns\n */\nexport function createIgnoreWordsDictionary(wordList, name, source, options) {\n    return createCache.get(wordList, () => {\n        const testSpecialCharacters = /[*+]/;\n        const parseOptions = { stripCaseAndAccents: options?.supportNonStrictSearches ?? true };\n        const words = [...parseDictionaryLines(wordList, parseOptions)].map((w) => w.normalize(NormalizeForm));\n        const hasSpecial = words.some((word) => testSpecialCharacters.test(word));\n        if (hasSpecial) {\n            return createSpellingDictionary(words, name, source, {\n                caseSensitive: true,\n                noSuggest: true,\n                weightMap: undefined,\n                supportNonStrictSearches: true,\n            });\n        }\n        return new IgnoreWordsDictionary(name, source, words);\n    });\n}\n//# sourceMappingURL=IgnoreWordsDictionary.js.map", "import { CASE_INSENSITIVE_PREFIX, CompoundWordsMethod } from 'cspell-trie-lib';\nimport { isDefined } from '../util/util.js';\nimport * as Defaults from './defaults.js';\nimport { defaultNumSuggestions, hasOptionToSearchOption, suggestionCollector } from './SpellingDictionaryMethods.js';\nclass SpellingDictionaryCollectionImpl {\n    dictionaries;\n    name;\n    options = { weightMap: undefined };\n    mapWord = undefined;\n    type = 'SpellingDictionaryCollection';\n    source;\n    isDictionaryCaseSensitive;\n    containsNoSuggestWords;\n    constructor(dictionaries, name, source) {\n        this.dictionaries = dictionaries;\n        this.name = name;\n        this.dictionaries = this.dictionaries.sort((a, b) => b.size - a.size);\n        this.source = source || dictionaries.map((d) => d.name).join(', ');\n        this.isDictionaryCaseSensitive = this.dictionaries.reduce((a, b) => a || b.isDictionaryCaseSensitive, false);\n        this.containsNoSuggestWords = this.dictionaries.reduce((a, b) => a || b.containsNoSuggestWords, false);\n    }\n    has(word, hasOptions) {\n        const options = hasOptionToSearchOption(hasOptions);\n        return !!isWordInAnyDictionary(this.dictionaries, word, options) && !this.isForbidden(word);\n    }\n    find(word, hasOptions) {\n        const options = hasOptionToSearchOption(hasOptions);\n        return findInAnyDictionary(this.dictionaries, word, options);\n    }\n    isNoSuggestWord(word, options) {\n        return this._isNoSuggestWord(word, options);\n    }\n    isForbidden(word, ignoreCaseAndAccents) {\n        const ignoreCase = ignoreCaseAndAccents ?? Defaults.isForbiddenIgnoreCaseAndAccents;\n        return !!this._isForbiddenInDict(word, ignoreCase) && !this.isNoSuggestWord(word, { ignoreCase });\n    }\n    suggest(word, suggestOptions = {}) {\n        return this._suggest(word, suggestOptions);\n    }\n    _suggest(word, suggestOptions) {\n        const { numSuggestions = defaultNumSuggestions, numChanges, ignoreCase, includeTies, timeout } = suggestOptions;\n        const prefixNoCase = CASE_INSENSITIVE_PREFIX;\n        const filter = (word, _cost) => {\n            return ((ignoreCase || word[0] !== prefixNoCase) &&\n                !this.isForbidden(word) &&\n                !this.isNoSuggestWord(word, suggestOptions));\n        };\n        const collectorOptions = {\n            numSuggestions,\n            filter,\n            changeLimit: numChanges,\n            includeTies,\n            ignoreCase,\n            timeout,\n        };\n        const collector = suggestionCollector(word, collectorOptions);\n        this.genSuggestions(collector, suggestOptions);\n        return collector.suggestions;\n    }\n    get size() {\n        return this.dictionaries.reduce((a, b) => a + b.size, 0);\n    }\n    getPreferredSuggestions(word) {\n        const sugs = this.dictionaries.flatMap((dict) => dict.getPreferredSuggestions?.(word)).filter(isDefined);\n        if (sugs.length <= 1)\n            return sugs;\n        const unique = new Set();\n        return sugs.filter((sug) => {\n            if (unique.has(sug.word))\n                return false;\n            unique.add(sug.word);\n            return true;\n        });\n    }\n    genSuggestions(collector, suggestOptions) {\n        const _suggestOptions = { ...suggestOptions };\n        const { compoundMethod = CompoundWordsMethod.SEPARATE_WORDS } = suggestOptions;\n        _suggestOptions.compoundMethod = this.options.useCompounds ? CompoundWordsMethod.JOIN_WORDS : compoundMethod;\n        this.dictionaries.forEach((dict) => dict.genSuggestions(collector, _suggestOptions));\n    }\n    getErrors() {\n        return this.dictionaries.reduce((errors, dict) => [...errors, ...(dict.getErrors?.() || [])], []);\n    }\n    _isForbiddenInDict(word, ignoreCase) {\n        return isWordForbiddenInAnyDictionary(this.dictionaries, word, ignoreCase);\n    }\n    _isNoSuggestWord = (word, options) => {\n        if (!this.containsNoSuggestWords)\n            return false;\n        return !!isNoSuggestWordInAnyDictionary(this.dictionaries, word, options || {});\n    };\n}\nexport function createCollection(dictionaries, name, source) {\n    return new SpellingDictionaryCollectionImpl(dictionaries, name, source);\n}\nfunction isWordInAnyDictionary(dicts, word, options) {\n    return dicts.find((dict) => dict.has(word, options));\n}\nfunction findInAnyDictionary(dicts, word, options) {\n    const found = dicts.map((dict) => dict.find(word, options)).filter(isDefined);\n    if (!found.length)\n        return undefined;\n    return found.reduce((a, b) => ({\n        found: a.forbidden ? a.found : b.forbidden ? b.found : a.found || b.found,\n        forbidden: a.forbidden || b.forbidden,\n        noSuggest: a.noSuggest || b.noSuggest,\n    }));\n}\nfunction isNoSuggestWordInAnyDictionary(dicts, word, options) {\n    return dicts.find((dict) => dict.isNoSuggestWord(word, options));\n}\nfunction isWordForbiddenInAnyDictionary(dicts, word, ignoreCase) {\n    return dicts.find((dict) => dict.isForbidden(word, ignoreCase));\n}\nexport function isSpellingDictionaryCollection(dict) {\n    return dict instanceof SpellingDictionaryCollectionImpl;\n}\nexport const __testing__ = {\n    isWordInAnyDictionary,\n    isWordForbiddenInAnyDictionary,\n};\n//# sourceMappingURL=SpellingDictionaryCollection.js.map", "import { pipe } from '@cspell/cspell-pipe/sync';\nimport { createAutoResolveWeakCache } from '../util/AutoResolve.js';\nimport { mapperRemoveCaseAndAccents } from '../util/textMappers.js';\nimport * as defaults from './defaults.js';\nimport { processEntriesToTyposDef } from './Typos/index.js';\nimport { extractAllSuggestions } from './Typos/util.js';\nclass SuggestDictionaryImpl {\n    name;\n    source;\n    typosDef;\n    containsNoSuggestWords = false;\n    options = {};\n    type = 'suggest';\n    size;\n    mapWord = undefined;\n    /**\n     * Note: ignoreWordsLower is only suggestions with the case and accents removed.\n     * The logic is that if someone explicity ignored an upper case version, it does not\n     * mean that the lower case version is ok.\n     */\n    suggestions;\n    suggestionsLower;\n    constructor(name, source, typosDef) {\n        this.name = name;\n        this.source = source;\n        this.typosDef = typosDef;\n        this.size = Object.keys(typosDef).length;\n        this.suggestions = extractAllSuggestions(typosDef);\n        this.suggestionsLower = new Set(pipe(this.suggestions, mapperRemoveCaseAndAccents));\n    }\n    /**\n     * A Forbidden word list does not \"have\" valid words.\n     * Therefore it always returns false.\n     * @param _word - the word\n     * @param _options - options\n     * @returns always false\n     */\n    has(_word, _options) {\n        return false;\n    }\n    /** A more detailed search for a word, might take longer than `has` */\n    find(_word, _options) {\n        return undefined;\n    }\n    isForbidden(_word, _ignoreCaseAndAccents) {\n        return false;\n    }\n    isNoSuggestWord(_word, _options) {\n        return false;\n    }\n    /**\n     * Determine if the word can appear in a list of suggestions.\n     * @param word - word\n     * @param ignoreCaseAndAccents - ignore case.\n     * @returns true if a word is suggested, otherwise false.\n     */\n    isSuggestedWord(word, ignoreCaseAndAccents = defaults.isForbiddenIgnoreCaseAndAccents) {\n        if (this.suggestions.has(word))\n            return true;\n        if (!ignoreCaseAndAccents)\n            return false;\n        const lcWord = word.toLowerCase();\n        return this.suggestions.has(lcWord) || this.suggestionsLower.has(lcWord);\n    }\n    suggest(word) {\n        return this.getPreferredSuggestions(word);\n    }\n    _suggest(word) {\n        if (!(word in this.typosDef))\n            return undefined;\n        const sug = this.typosDef[word];\n        const isPreferred = true;\n        if (!sug)\n            return [];\n        if (typeof sug === 'string') {\n            return [\n                {\n                    word: sug,\n                    cost: 1,\n                    isPreferred,\n                },\n            ];\n        }\n        return sug.map((word, index) => ({ word, cost: index + 1, isPreferred }));\n    }\n    getPreferredSuggestions(word) {\n        return this._suggest(word) || this._suggest(word.toLowerCase()) || [];\n    }\n    genSuggestions(collector) {\n        const sugs = this.suggest(collector.word);\n        sugs.forEach((result) => collector.add(result));\n    }\n    isDictionaryCaseSensitive = true;\n    getErrors() {\n        return [];\n    }\n}\nconst createCache = createAutoResolveWeakCache();\n/**\n * Create a dictionary where all words are to be forbidden.\n * @param entries - list of Typos Entries\n * @param name - name of dictionary\n * @param source - source\n * @returns\n */\nexport function createSuggestDictionary(entries, name, source) {\n    return createCache.get(entries, () => {\n        const def = processEntriesToTyposDef(entries);\n        return new SuggestDictionaryImpl(name, source, def);\n    });\n}\n//# sourceMappingURL=SuggestDictionary.js.map", "import { createAutoResolveWeakCache } from '../util/AutoResolve.js';\nimport { isDefined } from '../util/util.js';\nimport { createSpellingDictionary } from './createSpellingDictionary.js';\nimport { createFlagWordsDictionary } from './FlagWordsDictionary.js';\nimport { createIgnoreWordsDictionary } from './IgnoreWordsDictionary.js';\nimport { createCollection } from './SpellingDictionaryCollection.js';\nimport { createSuggestDictionary } from './SuggestDictionary.js';\nconst cache = createAutoResolveWeakCache();\nexport function createInlineSpellingDictionary(inlineDict, source) {\n    return cache.get(inlineDict, () => {\n        const { words, flagWords, ignoreWords, suggestWords, name, supportNonStrictSearches } = inlineDict;\n        const options = { supportNonStrictSearches };\n        const dictSources = [\n            words && createSpellingDictionary(words, name + '-words', source, inlineDict),\n            flagWords && createFlagWordsDictionary(flagWords, name + '-flag-words', source),\n            ignoreWords && createIgnoreWordsDictionary(ignoreWords, name + '-ignore-words', source, options),\n            suggestWords && createSuggestDictionary(suggestWords, name + '-suggest', source),\n        ].filter(isDefined);\n        return createCollection(dictSources, name, source);\n    });\n}\n//# sourceMappingURL=createInlineSpellingDictionary.js.map", "import assert from \"node:assert\";\nimport Path from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\n//#region src/url.mts\nconst isURLRegEx = /^(\\w[\\w-]{1,63}:\\/|data:|stdin:)/i;\n/**\n* Try to make a URL.\n* @param url\n* @param relativeTo - optional URL, if given, url will be parsed as relative.\n* @returns a URL\n*/\nfunction toURL(url, relativeTo) {\n\treturn normalizeWindowsUrl(url instanceof URL ? url : new URL(url, relativeTo));\n}\n/**\n* Try to determine the parent directory URL of the uri.\n* If it is not a hierarchical URL, then it will return the URL.\n* @param url - url to extract the dirname from.\n* @returns a URL\n*/\nfunction urlParent(url) {\n\turl = toURL(url);\n\tif (url.protocol === \"data:\") return url;\n\tconst hasTrailingSlash = url.pathname.endsWith(\"/\");\n\tif (!url.pathname.startsWith(\"/\")) {\n\t\tif (!url.pathname) return url;\n\t\tconst pathname = url.pathname.split(\"/\").slice(0, hasTrailingSlash ? -2 : -1).join(\"/\") + \"/\";\n\t\treturn new URL(url.protocol + (url.host ? \"//\" + url.host : \"\") + pathname + url.search + url.hash);\n\t}\n\treturn new URL(hasTrailingSlash ? \"..\" : \".\", url);\n}\n/**\n* Alias of {@link urlParent}\n* Try to determine the parent directory URL of the uri.\n* If it is not a hierarchical URL, then it will return the URL.\n* @param url - url to extract the dirname from.\n* @returns a URL\n*/\nconst urlDirname = urlParent;\n/**\n* return the basename (last portion of the URL pathname) of a path. It does NOT remove the trailing slash.\n* @param path - URL pathname to extract the basename from.\n*/\nfunction basenameOfUrlPathname(path) {\n\tconst adj = path.endsWith(\"/\") ? 2 : 0;\n\tconst idx = path.lastIndexOf(\"/\", path.length - adj);\n\treturn idx >= 0 ? path.slice(idx + 1) : path;\n}\nfunction isUrlLike(filename) {\n\treturn filename instanceof URL || isURLRegEx.test(filename);\n}\nfunction isNotUrlLike(filename) {\n\treturn !isUrlLike(filename);\n}\n/**\n* Check if `url` is a URL instance.\n* @returns\n*/\nfunction isURL(url) {\n\treturn url instanceof URL;\n}\n/**\n*\n* @param url - url to check\n* @param protocol - protocol to check against - e.g. 'file:', 'http:', 'https:'\n* @returns\n*/\nfunction hasProtocol(url, protocol) {\n\tprotocol = protocol.endsWith(\":\") ? protocol : protocol + \":\";\n\treturn typeof url === \"string\" ? url.startsWith(protocol) : url.protocol === protocol;\n}\n/**\n* Attempts to add a trailing slash to the URL pathname if it does not already have one.\n* Some If the pathname doesn't start with a `/`, a trailing slash is not added.\n* @param url - a URL\n* @returns\n*/\nfunction addTrailingSlash(url) {\n\tif (url.pathname.endsWith(\"/\")) return url;\n\tconst urlWithSlash = new URL(url.href);\n\turlWithSlash.pathname += \"/\";\n\treturn urlWithSlash;\n}\n/**\n* Calculate the relative path to go from `urlFrom` to `urlTo`.\n* The protocol is not evaluated. Only the `url.pathname` is used.\n* @param urlFrom\n* @param urlTo\n* @returns the relative path\n*/\nfunction urlRelative(urlFrom, urlTo) {\n\treturn urlToUrlRelative(toURL(urlFrom), toURL(urlTo));\n}\n/**\n* Calculate the relative path to go from `urlFrom` to `urlTo`.\n* The protocol is not evaluated. Only the `url.pathname` is used.\n* @param urlFrom\n* @param urlTo\n* @returns the relative path\n*/\nfunction urlToUrlRelative(urlFrom, urlTo) {\n\tlet pFrom = urlFrom.pathname;\n\tconst pTo = urlTo.pathname;\n\tif (pFrom === pTo) return \"\";\n\tpFrom = pFrom.endsWith(\"/\") ? pFrom : new URL(\"./\", urlFrom).pathname;\n\tif (pTo.startsWith(pFrom)) return decodeURIComponent(pTo.slice(pFrom.length));\n\tconst p0 = pFrom;\n\tconst p1 = pTo;\n\tif (p1.startsWith(p0)) return decodeURIComponent(p0 === p1 ? \"\" : p1.slice(p0.lastIndexOf(\"/\") + 1));\n\tconst p0Parts = p0.split(\"/\").slice(0, -1);\n\tconst p1Parts = p1.split(\"/\");\n\tlet i = 0;\n\tfor (; i < p0Parts.length && i < p1Parts.length - 1 && p0Parts[i] === p1Parts[i]; ++i);\n\tconst rel = \"../\".repeat(p0Parts.length - i) + p1Parts.slice(i).join(\"/\");\n\treturn decodeURIComponent(rel.length < p1.length ? rel : p1);\n}\nconst regExpWindowsPath = /^[\\\\/]([a-zA-Z]:[\\\\/])/;\nconst badUncLocalhostUrl = /^(\\/+[a-zA-Z])\\$/;\n/**\n* Ensure that a windows file url is correctly formatted with a capitol letter for the drive.\n*\n* @param url - URL to check.\n* @returns a new URL if modified or converted from a string.\n*/\nfunction normalizeWindowsUrl(url) {\n\turl = typeof url === \"string\" ? new URL(url) : url;\n\tif (url.protocol === \"file:\") {\n\t\tlet pathname = url.pathname.replaceAll(\"%3A\", \":\").replaceAll(\"%3a\", \":\").replaceAll(\"%24\", \"$\");\n\t\tif (!url.host) pathname = pathname.replace(badUncLocalhostUrl, \"$1:\");\n\t\tpathname = pathname.replace(regExpWindowsPath, (d) => d.toUpperCase());\n\t\tif (pathname !== url.pathname) {\n\t\t\turl = new URL(url);\n\t\t\turl.pathname = pathname;\n\t\t\treturn fixUncUrl(url);\n\t\t}\n\t}\n\treturn fixUncUrl(url);\n}\n/**\n* There is a bug is NodeJS that sometimes causes UNC paths converted to a URL to be prefixed with `file:////`.\n* @param url - URL to check.\n* @returns fixed URL if needed.\n*/\nfunction fixUncUrl(url) {\n\tif (url.href.startsWith(\"file:////\")) return new URL(url.href.replace(/^file:\\/{4}/, \"file://\"));\n\treturn url;\n}\n//#endregion\n//#region src/dataUrl.mts\nconst regMatchFilename = /filename=([^;,]*)/;\n/**\n* Try to determine the base name of a URL.\n* @param url\n* @returns the base name of a URL, including the trailing `/` if present.\n*/\nfunction urlBasename(url) {\n\tfunction guessDataUrlName(header) {\n\t\tconst filenameMatch = header.match(regMatchFilename);\n\t\tif (filenameMatch) return filenameMatch[1];\n\t\treturn header.split(\";\", 1)[0].replaceAll(/\\W/g, \".\");\n\t}\n\turl = toURL(url);\n\tif (url.protocol === \"data:\") return guessDataUrlName(url.pathname.split(\",\", 1)[0]);\n\treturn basenameOfUrlPathname(url.pathname);\n}\nfunction isDataURL(url) {\n\treturn hasProtocol(url, \"data:\");\n}\n//#endregion\n//#region src/fileUrl.mts\nconst isWindows = process.platform === \"win32\";\nconst windowsUrlPathRegExp = /^\\/[a-zA-Z]:\\//;\nfunction isWindowsPathnameWithDriveLatter(pathname) {\n\treturn windowsUrlPathRegExp.test(pathname);\n}\n/**\n* @param url - URL or string to check if it is a file URL.\n* @returns true if the URL is a file URL.\n*/\nfunction isFileURL(url) {\n\treturn hasProtocol(url, \"file:\");\n}\n/**\n* Convert a URL into a string. If it is a file URL, convert it to a path.\n* @param url - URL\n* @returns path or href\n*/\nfunction toFilePathOrHref(url) {\n\treturn isFileURL(url) && url.toString().startsWith(\"file:///\") ? toFilePath(url) : url.toString();\n}\nfunction toFilePath(url) {\n\ttry {\n\t\tif (isWindows) {\n\t\t\tconst u = new URL(url);\n\t\t\tif (!isWindowsPathnameWithDriveLatter(u.pathname)) {\n\t\t\t\tconst cwdUrl = pathToFileURL(process.cwd());\n\t\t\t\tif (cwdUrl.hostname) return fileURLToPath(new URL(u.pathname, cwdUrl));\n\t\t\t\tu.pathname = `/${cwdUrl.pathname.split(\"/\")[1]}${u.pathname}`;\n\t\t\t\treturn fileURLToPath(u);\n\t\t\t}\n\t\t}\n\t\treturn pathWindowsDriveLetterToUpper(fileURLToPath(url));\n\t} catch {\n\t\treturn url.toString();\n\t}\n}\nconst regExpWindowsPathDriveLetter = /^([a-zA-Z]):[\\\\/]/;\nfunction pathWindowsDriveLetterToUpper(absoluteFilePath) {\n\treturn absoluteFilePath.replace(regExpWindowsPathDriveLetter, (s) => s.toUpperCase());\n}\nconst regExpWindowsFileUrl = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n/**\n* Test if a url is a file url with a windows path. It does check for UNC paths.\n* @param url - the url\n* @returns true if the url is a file url with a windows path with a drive letter.\n*/\nfunction isWindowsFileUrl(url) {\n\treturn regExpWindowsFileUrl.test(url.toString());\n}\n//#endregion\n//#region src/FileUrlBuilder.mts\nconst isWindowsPathRegEx = regExpWindowsPathDriveLetter;\nconst isWindowsPathname = regExpWindowsPath;\nconst percentRegEx = /%/g;\nconst backslashRegEx = /\\\\/g;\nconst newlineRegEx = /\\n/g;\nconst carriageReturnRegEx = /\\r/g;\nconst tabRegEx = /\\t/g;\nconst questionRegex = /\\?/g;\nconst hashRegex = /#/g;\nconst ProtocolFile = \"file:\";\nvar FileUrlBuilder = class {\n\twindows;\n\tpath;\n\tcwd;\n\tconstructor(options = {}) {\n\t\tconst sep = options.path?.sep;\n\t\tthis.windows = options.windows ?? (sep ? sep === \"\\\\\" : void 0) ?? isWindows;\n\t\tthis.path = options.path ?? (this.windows ? Path.win32 : Path.posix);\n\t\tthis.cwd = options.cwd ?? this.pathToFileURL(this.path.resolve() + \"/\", this.rootFileURL());\n\t\tassert(this.path.sep === (this.windows ? \"\\\\\" : \"/\"), `Path separator should match OS type Windows: ${this.windows === true ? \"true\" : (this.windows ?? \"undefined\") || \"false\"}, sep: ${this.path.sep}, options: ` + JSON.stringify({\n\t\t\tisWindows,\n\t\t\tsep: `${sep}`,\n\t\t\twindows: options.windows,\n\t\t\tpathSep: options.path?.sep,\n\t\t\tn: options.path?.normalize(\"path/file.txt\"),\n\t\t\tcwd: options.cwd?.href,\n\t\t\twin32: this.path === Path.win32,\n\t\t\tposix: this.path === Path.posix,\n\t\t\t\"win32.normalize\": this.path.normalize === Path.win32.normalize,\n\t\t\t\"posix.normalize\": this.path.normalize === Path.posix.normalize\n\t\t}) + ``);\n\t}\n\t/**\n\t* Encode special characters in a file path to use in a URL.\n\t* @param filepath\n\t* @returns\n\t*/\n\tencodePathChars(filepath) {\n\t\tfilepath = filepath.replaceAll(percentRegEx, \"%25\");\n\t\tif (!this.windows && !isWindows && filepath.includes(\"\\\\\")) filepath = filepath.replaceAll(backslashRegEx, \"%5C\");\n\t\tfilepath = filepath.replaceAll(newlineRegEx, \"%0A\");\n\t\tfilepath = filepath.replaceAll(carriageReturnRegEx, \"%0D\");\n\t\tfilepath = filepath.replaceAll(tabRegEx, \"%09\");\n\t\treturn filepath;\n\t}\n\t/**\n\t* Normalize a file path for use in a URL.\n\t* ```js\n\t* const url = new URL(normalizeFilePathForUrl('path\\\\to\\\\file.txt'), 'file:///Users/user/');\n\t* // Result: file:///Users/user/path/to/file.txt\n\t* ```\n\t* @param filePath\n\t* @returns a normalized file path for use as a relative path in a URL.\n\t*/\n\tnormalizeFilePathForUrl(filePath) {\n\t\tfilePath = this.encodePathChars(filePath);\n\t\tfilePath = filePath.replaceAll(questionRegex, \"%3F\");\n\t\tfilePath = filePath.replaceAll(hashRegex, \"%23\");\n\t\treturn filePath.replaceAll(\"\\\\\", \"/\").replace(isWindowsPathRegEx, (drive) => `/${drive}`.toUpperCase());\n\t}\n\t/**\n\t* Try to make a file URL.\n\t* - if filenameOrUrl is already a URL, it is returned as is.\n\t* @param filenameOrUrl\n\t* @param relativeTo - optional URL, if given, filenameOrUrl will be parsed as relative.\n\t* @returns a URL\n\t*/\n\ttoFileURL(filenameOrUrl, relativeTo) {\n\t\treturn normalizeWindowsUrl(this.#toFileURL(filenameOrUrl, relativeTo));\n\t}\n\t/**\n\t* Try to make a file URL.\n\t* - if filenameOrUrl is already a URL, it is returned as is.\n\t* @param filenameOrUrl\n\t* @param relativeTo - optional URL, if given, filenameOrUrl will be parsed as relative.\n\t* @returns a URL\n\t*/\n\t#toFileURL(filenameOrUrl, relativeTo) {\n\t\tif (typeof filenameOrUrl !== \"string\") return filenameOrUrl;\n\t\tif (isUrlLike(filenameOrUrl)) return normalizeWindowsUrl(new URL(filenameOrUrl));\n\t\trelativeTo ??= this.cwd;\n\t\tisWindows && (filenameOrUrl = filenameOrUrl.replaceAll(\"\\\\\", \"/\"));\n\t\tif (this.isAbsolute(filenameOrUrl) && isFileURL(relativeTo)) {\n\t\t\tconst pathname = this.normalizeFilePathForUrl(filenameOrUrl);\n\t\t\tif (isWindowsFileUrl(relativeTo) && !isWindowsPathnameWithDriveLatter(pathname)) {\n\t\t\t\tconst relFilePrefix = relativeTo.toString().slice(0, 10);\n\t\t\t\treturn normalizeWindowsUrl(new URL(relFilePrefix + pathname));\n\t\t\t}\n\t\t\treturn normalizeWindowsUrl(new URL(\"file://\" + pathname));\n\t\t}\n\t\tif (isUrlLike(relativeTo)) {\n\t\t\tconst pathname = this.normalizeFilePathForUrl(filenameOrUrl);\n\t\t\treturn normalizeWindowsUrl(new URL(pathname, relativeTo));\n\t\t}\n\t\tconst appendSlash = filenameOrUrl.endsWith(\"/\") ? \"/\" : \"\";\n\t\tconst pathname = this.normalizeFilePathForUrl(this.path.resolve(relativeTo.toString(), filenameOrUrl)) + appendSlash;\n\t\treturn normalizeWindowsUrl(new URL(\"file://\" + pathname));\n\t}\n\t/**\n\t* Try to make a URL for a directory.\n\t* - if dirOrUrl is already a URL, a slash is appended to the pathname.\n\t* @param dirOrUrl - directory path to convert to a file URL.\n\t* @param relativeTo - optional URL, if given, filenameOrUrl will be parsed as relative.\n\t* @returns a URL\n\t*/\n\ttoFileDirURL(dirOrUrl, relativeTo) {\n\t\treturn addTrailingSlash(this.toFileURL(dirOrUrl, relativeTo));\n\t}\n\turlToFilePathOrHref(url) {\n\t\turl = this.toFileURL(url);\n\t\treturn this.#urlToFilePathOrHref(url);\n\t}\n\t#urlToFilePathOrHref(url) {\n\t\tif (url.protocol !== ProtocolFile || url.hostname) return url.href;\n\t\treturn pathWindowsDriveLetterToUpper((this.path === Path ? toFilePathOrHref(url) : decodeURIComponent(url.pathname.split(\"/\").join(this.path.sep))).replace(isWindowsPathname, \"$1\"));\n\t}\n\t/**\n\t* Calculate the relative path to go from `urlFrom` to `urlTo`.\n\t* The protocol is not evaluated. Only the `url.pathname` is used.\n\t* The result: `new URL(relative(urlFrom, urlTo), urlFrom).pathname === urlTo.pathname`\n\t* @param urlFrom\n\t* @param urlTo\n\t* @returns the relative path\n\t*/\n\trelative(urlFrom, urlTo) {\n\t\tif (urlFrom.protocol === urlTo.protocol && urlFrom.protocol === ProtocolFile) {\n\t\t\tif (urlFrom.href === urlTo.href) return \"\";\n\t\t\turlFrom = urlFrom.pathname.endsWith(\"/\") ? urlFrom : new URL(\"./\", urlFrom);\n\t\t\tconst fromPath = urlFrom.pathname;\n\t\t\tconst toPath = urlTo.pathname;\n\t\t\tif (toPath.startsWith(fromPath)) return decodeURIComponent(toPath.slice(fromPath.length));\n\t\t\tconst pFrom = this.#urlToFilePathOrHref(urlFrom);\n\t\t\tconst pTo = this.#urlToFilePathOrHref(urlTo);\n\t\t\tconst toIsDir = urlTo.pathname.endsWith(\"/\");\n\t\t\tlet pathname = this.normalizeFilePathForUrl(this.path.relative(pFrom, pTo));\n\t\t\tif (toIsDir && !pathname.endsWith(\"/\")) pathname += \"/\";\n\t\t\treturn decodeURIComponent(pathname);\n\t\t}\n\t\treturn decodeURIComponent(urlToUrlRelative(urlFrom, urlTo));\n\t}\n\t/**\n\t* Get the parent directory of a URL.\n\t* @param url\n\t*/\n\turlDirname(url) {\n\t\treturn urlParent(this.toFileURL(url));\n\t}\n\tpathToFileURL(pathname, relativeToURL) {\n\t\treturn new URL(this.normalizeFilePathForUrl(pathname), relativeToURL || this.cwd);\n\t}\n\trootFileURL(filePath) {\n\t\tconst path = this.path;\n\t\tconst p = path.parse(path.normalize(path.resolve(filePath ?? \".\")));\n\t\treturn new URL(this.normalizeFilePathForUrl(p.root), this.#getFsRootURL());\n\t}\n\t#getFsRootURL() {\n\t\tif (this.path === Path) return pathToFileURL(\"/\");\n\t\tconst p = this.path.resolve(\"/\");\n\t\treturn new URL(this.normalizeFilePathForUrl(p), \"file:///\");\n\t}\n\t/**\n\t* Determine if a filePath is absolute.\n\t*\n\t* @param filePath\n\t* @returns true if `URL` or `path.isAbsolute(filePath)`\n\t*/\n\tisAbsolute(filePath) {\n\t\treturn isUrlLike(filePath) || this.path.isAbsolute(filePath);\n\t}\n\tisUrlLike(url) {\n\t\treturn isUrlLike(url);\n\t}\n};\n//#endregion\n//#region src/defaultFileUrlBuilder.mts\nconst fileUrlBuilder = new FileUrlBuilder();\nfunction encodePathChars(filepath) {\n\treturn fileUrlBuilder.encodePathChars(filepath);\n}\n/**\n* Normalize a file path for use in a URL.\n* ```js\n* const url = new URL(normalizeFilePathForUrl('path\\\\to\\\\file.txt'), 'file:///Users/user/');\n* // Result: file:///Users/user/path/to/file.txt\n* ```\n* @param filePath\n* @returns a normalized file path for use as a relative path in a URL.\n*/\nfunction normalizeFilePathForUrl(filePath) {\n\treturn fileUrlBuilder.normalizeFilePathForUrl(filePath);\n}\n/**\n* Try to make a file URL.\n* - if filenameOrUrl is already a URL, it is returned as is.\n* -\n* @param filenameOrUrl\n* @param relativeTo - optional URL, if given, filenameOrUrl will be parsed as relative.\n* @returns a URL\n*/\nfunction toFileURL(filenameOrUrl, relativeTo) {\n\treturn fileUrlBuilder.toFileURL(filenameOrUrl, relativeTo);\n}\n/**\n* Converts a file path to a URL and adds a trailing slash.\n* @param dir - url to a directory\n* @returns a URL\n*/\nfunction toFileDirURL(dir) {\n\treturn fileUrlBuilder.toFileDirURL(dir);\n}\n//#endregion\nexport { FileUrlBuilder, addTrailingSlash, basenameOfUrlPathname, encodePathChars, fixUncUrl, hasProtocol, isDataURL, isFileURL, isNotUrlLike, isURL, isUrlLike, normalizeFilePathForUrl, normalizeWindowsUrl, toFileDirURL, toFilePathOrHref, toFileURL, toURL, urlBasename, urlDirname, urlParent, urlRelative };\n\n//# sourceMappingURL=index.js.map", "// alias for uniqueFilterFnGenerator\nexport const uniqueFn = uniqueFilterFnGenerator;\nexport function uniqueFilterFnGenerator(extractFn) {\n    const values = new Set();\n    const extractor = extractFn || ((a) => a);\n    return (v) => {\n        const vv = extractor(v);\n        const ret = !values.has(vv);\n        values.add(vv);\n        return ret;\n    };\n}\nexport function unique(src) {\n    return [...new Set(src)];\n}\n/**\n * Delete all `undefined` and `null` fields from an object.\n * @param src - object to be cleaned\n */\nexport function clean(src) {\n    const r = src;\n    for (const key of Object.keys(r)) {\n        if (r[key] === undefined || r[key] === null) {\n            delete r[key];\n        }\n    }\n    return r;\n}\nexport function scanMap(accFn, init) {\n    let acc = init;\n    let first = true;\n    return function (value) {\n        if (first && acc === undefined) {\n            first = false;\n            acc = value;\n            return acc;\n        }\n        acc = accFn(acc, value);\n        return acc;\n    };\n}\nexport function isDefined(v) {\n    return v !== undefined;\n}\nexport async function asyncIterableToArray(iter) {\n    const acc = [];\n    for await (const t of iter) {\n        acc.push(t);\n    }\n    return acc;\n}\n/**\n * Shallow is Equal test.\n * @param a - array of values\n * @param b - array of values\n * @returns true if the values of `a` are exactly equal to the values of `b`\n */\nexport function isArrayEqual(a, b) {\n    if (a === b)\n        return true;\n    let isMatch = a.length === b.length;\n    for (let i = 0; i < a.length && isMatch; ++i) {\n        isMatch = a[i] === b[i];\n    }\n    return isMatch;\n}\n/**\n * Determine if two sets intersect\n * @param a - first Set\n * @param b - second Set\n * @returns true iff any element of `a` is in `b`\n */\nexport function doSetsIntersect(a, b) {\n    function compare(a, b) {\n        for (const item of a) {\n            if (b.has(item))\n                return true;\n        }\n        return false;\n    }\n    return a.size <= b.size ? compare(a, b) : compare(b, a);\n}\nexport function isRecordEqual(a, b) {\n    if (a === b)\n        return true;\n    if (a === undefined || b === undefined)\n        return false;\n    for (const key of Object.keys(a)) {\n        if (a[key] !== b[key])\n            return false;\n    }\n    for (const key of Object.keys(b)) {\n        if (a[key] !== b[key])\n            return false;\n    }\n    return true;\n}\n//# sourceMappingURL=util.js.map", "import { isFileURL, isUrlLike, toFileURL, toURL, urlBasename, urlParent as urlDirname } from \"@cspell/url\";\nimport { Buffer } from \"node:buffer\";\nimport * as zlib from \"node:zlib\";\nimport { gunzipSync, gzip } from \"node:zlib\";\nimport { ServiceBus, createResponse, createResponseFail, isServiceResponseSuccess, requestFactory } from \"@cspell/cspell-service-bus\";\nimport * as fs from \"node:fs\";\nimport { promises, readFileSync, statSync } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\nimport { promisify } from \"node:util\";\nimport * as Stream from \"node:stream\";\nimport assert from \"node:assert\";\n//#region src/async/asyncIterable.ts\n/**\n* Reads an entire iterable and converts it into a promise.\n* @param asyncIterable the async iterable to wait for.\n*/\nasync function toArray(asyncIterable) {\n\tconst data = [];\n\tfor await (const item of asyncIterable) data.push(item);\n\treturn data;\n}\n//#endregion\n//#region src/common/CFileReference.ts\nvar CFileReference = class CFileReference {\n\turl;\n\tencoding;\n\tbaseFilename;\n\t/**\n\t* Use to ensure the nominal type separation between CFileReference and FileReference\n\t* See: https://github.com/microsoft/TypeScript/wiki/FAQ#when-and-why-are-classes-nominal\n\t*/\n\t_;\n\tgz;\n\tconstructor(url, encoding, baseFilename, gz) {\n\t\tthis.url = url;\n\t\tthis.encoding = encoding;\n\t\tthis.baseFilename = baseFilename;\n\t\tthis.gz = gz ?? (baseFilename?.endsWith(\".gz\") || void 0) ?? (url.pathname.endsWith(\".gz\") || void 0);\n\t}\n\tstatic isCFileReference(obj) {\n\t\treturn obj instanceof CFileReference;\n\t}\n\tstatic from(fileReference, encoding, baseFilename, gz) {\n\t\tif (CFileReference.isCFileReference(fileReference)) return fileReference;\n\t\tif (fileReference instanceof URL) return new CFileReference(fileReference, encoding, baseFilename, gz);\n\t\treturn new CFileReference(fileReference.url, fileReference.encoding, fileReference.baseFilename, fileReference.gz);\n\t}\n\ttoJson() {\n\t\treturn {\n\t\t\turl: this.url.href,\n\t\t\tencoding: this.encoding,\n\t\t\tbaseFilename: this.baseFilename,\n\t\t\tgz: this.gz\n\t\t};\n\t}\n};\n/**\n*\n* @param file - a URL, file path, or FileReference\n* @param encoding - optional encoding used to decode the file.\n* @param baseFilename - optional base filename used with data URLs.\n* @param gz - optional flag to indicate if the file is gzipped.\n* @returns a FileReference\n*/\nfunction toFileReference(file, encoding, baseFilename, gz) {\n\tconst fileReference = typeof file === \"string\" ? toFileURL(file) : file;\n\tif (fileReference instanceof URL) return new CFileReference(fileReference, encoding, baseFilename, gz);\n\treturn CFileReference.from(fileReference);\n}\nfunction isFileReference(ref) {\n\treturn CFileReference.isCFileReference(ref) || !(ref instanceof URL) && typeof ref !== \"string\";\n}\nfunction renameFileReference(ref, newUrl) {\n\treturn new CFileReference(newUrl, ref.encoding, ref.baseFilename, ref.gz);\n}\nfunction toFileResourceRequest(file, encoding, signal) {\n\tconst fileReference = typeof file === \"string\" ? toFileURL(file) : file;\n\tif (fileReference instanceof URL) return {\n\t\turl: fileReference,\n\t\tencoding,\n\t\tsignal\n\t};\n\treturn {\n\t\turl: fileReference.url,\n\t\tencoding: encoding ?? fileReference.encoding,\n\t\tsignal\n\t};\n}\n//#endregion\n//#region src/errors/errors.ts\nvar ErrorNotImplemented = class extends Error {\n\tmethod;\n\tconstructor(method, options) {\n\t\tsuper(`Method ${method} is not supported.`, options);\n\t\tthis.method = method;\n\t}\n};\nvar AssertionError = class extends Error {\n\tmessage;\n\tconstructor(message, options) {\n\t\tsuper(message, options);\n\t\tthis.message = message;\n\t}\n};\n//#endregion\n//#region src/errors/assert.ts\nfunction assert$1(value, message) {\n\tif (!value) throw new AssertionError(message ?? \"Assertion failed\");\n}\n//#endregion\n//#region src/common/arrayBuffers.ts\nfunction toUint8Array(data) {\n\tif (data instanceof Uint8Array) return data;\n\treturn new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n}\nfunction arrayBufferViewToBuffer(data) {\n\tif (data instanceof Buffer) return data;\n\treturn Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n}\nfunction copyArrayBufferView(data) {\n\treturn new Uint8Array(data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength));\n}\nfunction swap16(data) {\n\tarrayBufferViewToBuffer(data).swap16();\n\treturn data;\n}\nfunction swapBytes(data) {\n\treturn swap16(copyArrayBufferView(data));\n}\n//#endregion\n//#region src/common/encode-decode.ts\nconst BOM_BE = 65279;\nconst BOM_LE = 65534;\nconst decoderUTF8 = new TextDecoder(\"utf8\");\nconst decoderUTF16LE = new TextDecoder(\"utf-16le\");\nconst decoderUTF16BE = createTextDecoderUtf16BE();\nconst encoderUTF8 = new TextEncoder();\nfunction decodeUtf16LE(data) {\n\tconst buf = toUint8Array(data);\n\tconst bom = buf[0] << 8 | buf[1];\n\treturn decoderUTF16LE.decode(bom === BOM_LE ? buf.subarray(2) : buf);\n}\nfunction decodeUtf16BE(data) {\n\tconst buf = toUint8Array(data);\n\tconst bom = buf[0] << 8 | buf[1];\n\treturn decoderUTF16BE.decode(bom === BOM_BE ? buf.subarray(2) : buf);\n}\nfunction decodeToString(data, encoding) {\n\tif (isGZipped(data)) return decodeToString(decompressBuffer(data), encoding);\n\tconst buf = toUint8Array(data);\n\tconst bom = buf[0] << 8 | buf[1];\n\tif (bom === BOM_BE || buf[0] === 0 && buf[1] !== 0) return decodeUtf16BE(buf);\n\tif (bom === BOM_LE || buf[0] !== 0 && buf[1] === 0) return decodeUtf16LE(buf);\n\tif (!encoding) return decoderUTF8.decode(buf);\n\tswitch (encoding) {\n\t\tcase \"utf-16be\":\n\t\tcase \"utf16be\": return decodeUtf16BE(buf);\n\t\tcase \"utf-16le\":\n\t\tcase \"utf16le\": return decodeUtf16LE(buf);\n\t\tcase \"utf-8\":\n\t\tcase \"utf8\": return decoderUTF8.decode(buf);\n\t}\n\tthrow new UnsupportedEncodingError(encoding);\n}\nfunction decode(data, encoding) {\n\tswitch (encoding) {\n\t\tcase \"base64\":\n\t\tcase \"base64url\":\n\t\tcase \"hex\": return arrayBufferViewToBuffer(data).toString(encoding);\n\t}\n\treturn decodeToString(data, encoding);\n}\nfunction encodeString$1(str, encoding, bom) {\n\tswitch (encoding) {\n\t\tcase void 0:\n\t\tcase \"utf-8\":\n\t\tcase \"utf8\": return encoderUTF8.encode(str);\n\t\tcase \"utf-16be\":\n\t\tcase \"utf16be\": return encodeUtf16BE(str, bom);\n\t\tcase \"utf-16le\":\n\t\tcase \"utf16le\": return encodeUtf16LE(str, bom);\n\t}\n\treturn Buffer.from(str, encoding);\n}\nfunction encodeUtf16LE(str, bom = true) {\n\tconst buf = Buffer.from(str, \"utf16le\");\n\tif (bom) {\n\t\tconst target = Buffer.alloc(buf.length + 2);\n\t\ttarget.writeUint16LE(BOM_BE);\n\t\tbuf.copy(target, 2);\n\t\treturn target;\n\t}\n\treturn buf;\n}\nfunction encodeUtf16BE(str, bom = true) {\n\treturn swap16(encodeUtf16LE(str, bom));\n}\nfunction createTextDecoderUtf16BE() {\n\ttry {\n\t\treturn new TextDecoder(\"utf-16be\");\n\t} catch {\n\t\treturn {\n\t\t\tencoding: \"utf-16be\",\n\t\t\tfatal: false,\n\t\t\tignoreBOM: false,\n\t\t\tdecode: (input) => decoderUTF16LE.decode(swapBytes(input))\n\t\t};\n\t}\n}\nvar UnsupportedEncodingError = class extends Error {\n\tconstructor(encoding) {\n\t\tsuper(`Unsupported encoding: ${encoding}`);\n\t}\n};\nfunction isGZipped(data) {\n\tif (typeof data === \"string\") return false;\n\tconst buf = toUint8Array(data);\n\treturn buf[0] === 31 && buf[1] === 139;\n}\nfunction decompressBuffer(data) {\n\tif (!isGZipped(data)) return data;\n\treturn gunzipSync(arrayBufferViewToBuffer(data));\n}\nasync function decompress(data, method = \"gzip\") {\n\tconst ds = new DecompressionStream(method || \"deflate-raw\");\n\tconst writer = ds.writable.getWriter();\n\twriter.write(data);\n\twriter.close();\n\tconst reader = ds.readable.getReader();\n\tconst chunks = [];\n\tlet size = 0;\n\twhile (true) {\n\t\tconst chunk = await reader.read();\n\t\tif (chunk.done) break;\n\t\tchunks.push(chunk.value);\n\t\tsize += chunk.value.length;\n\t}\n\tconst result = new Uint8Array(size);\n\tfor (let offset = 0, i = 0; i < chunks.length; i++) {\n\t\tresult.set(chunks[i], offset);\n\t\toffset += chunks[i].length;\n\t}\n\treturn result;\n}\n//#endregion\n//#region src/common/CFileResource.ts\nvar CFileResource = class CFileResource {\n\tbaseFilename;\n\turl;\n\tcontent;\n\tencoding;\n\t#gz;\n\t#text;\n\t#data;\n\tconstructor(url, content, encoding, baseFilename, gz) {\n\t\tthis.url = url;\n\t\tthis.content = content;\n\t\tthis.encoding = encoding;\n\t\tthis.baseFilename = baseFilename ?? (url.protocol !== \"data:\" && url.pathname.split(\"/\").pop() || void 0);\n\t\tthis.#gz = gz;\n\t}\n\tget gz() {\n\t\tif (this.#gz !== void 0) return this.#gz;\n\t\tif (this.url.pathname.endsWith(\".gz\")) return true;\n\t\tif (typeof this.content === \"string\") return false;\n\t\treturn isGZipped(this.content);\n\t}\n\tgetText(encoding) {\n\t\tif (this.#text !== void 0) return this.#text;\n\t\tconst text = typeof this.content === \"string\" ? this.content : decode(this.content, encoding ?? this.encoding);\n\t\tthis.#text = text;\n\t\treturn text;\n\t}\n\tasync getBytes(unzip) {\n\t\tif (unzip !== false && this.#data !== void 0) return this.#data;\n\t\tif (typeof this.content === \"string\") {\n\t\t\tthis.#data = encodeString$1(this.content, this.encoding);\n\t\t\treturn this.#data;\n\t\t}\n\t\tif (unzip ?? isGZipped(this.content)) {\n\t\t\tthis.#data = await decompress(this.content, \"gzip\");\n\t\t\treturn this.#data;\n\t\t}\n\t\treturn this.content;\n\t}\n\ttoJson() {\n\t\treturn {\n\t\t\turl: this.url.href,\n\t\t\tcontent: this.getText(),\n\t\t\tencoding: this.encoding,\n\t\t\tbaseFilename: this.baseFilename,\n\t\t\tgz: this.gz\n\t\t};\n\t}\n\tstatic isCFileResource(obj) {\n\t\treturn obj instanceof CFileResource;\n\t}\n\tstatic from(urlOrFileResource, content, encoding, baseFilename, gz) {\n\t\tif (CFileResource.isCFileResource(urlOrFileResource)) {\n\t\t\tif (content) {\n\t\t\t\tconst { url, encoding, baseFilename, gz } = urlOrFileResource;\n\t\t\t\treturn new CFileResource(url, content, encoding, baseFilename, gz);\n\t\t\t}\n\t\t\treturn urlOrFileResource;\n\t\t}\n\t\tif (urlOrFileResource instanceof URL) {\n\t\t\tassert$1(content !== void 0);\n\t\t\treturn new CFileResource(urlOrFileResource, content, encoding, baseFilename, gz);\n\t\t}\n\t\tif (content !== void 0) {\n\t\t\tconst fileRef = urlOrFileResource;\n\t\t\treturn new CFileResource(fileRef.url, content, fileRef.encoding, fileRef.baseFilename, fileRef.gz);\n\t\t}\n\t\tassert$1(\"content\" in urlOrFileResource && urlOrFileResource.content !== void 0);\n\t\tconst fileResource = urlOrFileResource;\n\t\treturn new CFileResource(fileResource.url, fileResource.content, fileResource.encoding, fileResource.baseFilename, fileResource.gz);\n\t}\n};\nfunction fromFileResource(fileResource, encoding) {\n\treturn CFileResource.from(encoding ? {\n\t\t...fileResource,\n\t\tencoding\n\t} : fileResource);\n}\nfunction renameFileResource(fileResource, url) {\n\treturn CFileResource.from({\n\t\t...fileResource,\n\t\turl\n\t});\n}\n//#endregion\n//#region src/common/stat.ts\n/**\n* Compare two Stats to see if they have the same value.\n* @param left - Stats\n* @param right - Stats\n* @returns 0 - equal; 1 - left > right; -1 left < right\n*/\nfunction compareStats(left, right) {\n\tif (left === right) return 0;\n\tif (left.eTag || right.eTag) return left.eTag === right.eTag ? 0 : (left.eTag || \"\") < (right.eTag || \"\") ? -1 : 1;\n\tconst diff = left.size - right.size || left.mtimeMs - right.mtimeMs;\n\treturn diff < 0 ? -1 : diff > 0 ? 1 : 0;\n}\n//#endregion\n//#region src/common/urlOrReferenceToUrl.ts\nfunction urlOrReferenceToUrl(urlOrReference) {\n\treturn urlOrReference instanceof URL ? urlOrReference : urlOrReference.url;\n}\n//#endregion\n//#region src/CSpellIO.ts\nfunction toReadFileOptions(options) {\n\tif (!options) return options;\n\tif (typeof options === \"string\") return { encoding: options };\n\treturn options;\n}\n//#endregion\n//#region src/errors/error.ts\nfunction toError$1(e) {\n\tif (e instanceof Error) return e;\n\tif (typeof e === \"object\" && e && \"message\" in e && typeof e.message === \"string\") return new Error(e.message, { cause: e });\n\treturn new Error(e && e.toString());\n}\n//#endregion\n//#region src/models/Stats.ts\nlet FileType = /* @__PURE__ */ function(FileType) {\n\t/**\n\t* The file type is unknown.\n\t*/\n\tFileType[FileType[\"Unknown\"] = 0] = \"Unknown\";\n\t/**\n\t* A regular file.\n\t*/\n\tFileType[FileType[\"File\"] = 1] = \"File\";\n\t/**\n\t* A directory.\n\t*/\n\tFileType[FileType[\"Directory\"] = 2] = \"Directory\";\n\t/**\n\t* A symbolic link.\n\t*/\n\tFileType[FileType[\"SymbolicLink\"] = 64] = \"SymbolicLink\";\n\treturn FileType;\n}({});\n//#endregion\n//#region src/node/dataUrl.ts\n/**\n* Generates a string of the following format:\n*\n* `data:[mediaType][;charset=<encoding>[;base64],<data>`\n*\n* - `encoding` - defaults to `utf8` for text data\n* @param data\n* @param mediaType - The mediaType is a [MIME](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) type string\n* @param attributes - Additional attributes\n*/\nfunction encodeDataUrl(data, mediaType, attributes) {\n\tif (typeof data === \"string\") return encodeString(data, mediaType, attributes);\n\treturn `data:${mediaType}${encodeAttributes(attributes || [])};base64,${arrayBufferViewToBuffer(data).toString(\"base64url\")}`;\n}\nfunction toDataUrl(data, mediaType, attributes) {\n\treturn new URL(encodeDataUrl(data, mediaType, attributes));\n}\nfunction encodeString(data, mediaType, attributes) {\n\tmediaType = mediaType || \"text/plain\";\n\tattributes = attributes || [];\n\tconst asUrlComp = encodeURIComponent(data);\n\tconst asBase64 = Buffer.from(data).toString(\"base64url\");\n\tconst useBase64 = asBase64.length < asUrlComp.length - 7;\n\tconst encoded = useBase64 ? asBase64 : asUrlComp;\n\tconst attribMap = new Map([[\"charset\", \"utf-8\"], ...attributes]);\n\tattribMap.set(\"charset\", \"utf-8\");\n\tconst attribs = encodeAttributes(attribMap);\n\treturn `data:${mediaType}${attribs}${useBase64 ? \";base64\" : \"\"},${encoded}`;\n}\nfunction encodeAttributes(attributes) {\n\treturn [...attributes].map(([key, value]) => `;${key}=${encodeURIComponent(value)}`).join(\"\");\n}\nconst dataUrlRegExHead = /^data:(?<mediaType>[^;,]*)(?<attributes>(?:;[^=]+=[^;,]*)*)(?<base64>;base64)?$/;\nfunction decodeDataUrl(url) {\n\turl = url.toString();\n\tconst [head, encodedData] = url.split(\",\", 2);\n\tif (!head || encodedData === void 0) throw new Error(\"Not a data url\");\n\tconst match = head.match(dataUrlRegExHead);\n\tif (!match || !match.groups) throw new Error(\"Not a data url\");\n\tconst mediaType = match.groups[\"mediaType\"] || \"\";\n\tconst rawAttributes = (match.groups[\"attributes\"] || \"\").split(\";\").filter((a) => !!a).map((entry) => entry.split(\"=\", 2)).map(([key, value]) => [key, decodeURIComponent(value)]);\n\tconst attributes = new Map(rawAttributes);\n\tconst encoding = attributes.get(\"charset\");\n\treturn {\n\t\tmediaType,\n\t\tdata: !!match.groups[\"base64\"] ? Buffer.from(encodedData, \"base64url\") : Buffer.from(decodeURIComponent(encodedData)),\n\t\tencoding,\n\t\tattributes\n\t};\n}\nfunction guessMimeType(filename) {\n\tif (filename.endsWith(\".trie\")) return {\n\t\tmimeType: \"application/vnd.cspell.dictionary+trie\",\n\t\tencoding: \"utf-8\"\n\t};\n\tif (filename.endsWith(\".trie.gz\")) return { mimeType: \"application/vnd.cspell.dictionary+trie.gz\" };\n\tif (filename.endsWith(\".txt\")) return {\n\t\tmimeType: \"text/plain\",\n\t\tencoding: \"utf-8\"\n\t};\n\tif (filename.endsWith(\".txt.gz\")) return { mimeType: \"application/gzip\" };\n\tif (filename.endsWith(\".gz\")) return { mimeType: \"application/gzip\" };\n\tif (filename.endsWith(\".json\")) return {\n\t\tmimeType: \"application/json\",\n\t\tencoding: \"utf-8\"\n\t};\n\tif (filename.endsWith(\".yaml\") || filename.endsWith(\".yml\")) return {\n\t\tmimeType: \"application/x-yaml\",\n\t\tencoding: \"utf-8\"\n\t};\n}\n//#endregion\n//#region src/node/file/_fetch.ts\n/** alias of global.fetch, useful for mocking */\nconst _fetch = globalThis.fetch;\n//#endregion\n//#region src/node/file/FetchError.ts\nvar FetchUrlError = class FetchUrlError extends Error {\n\tcode;\n\tstatus;\n\turl;\n\tconstructor(message, code, status, url) {\n\t\tsuper(message);\n\t\tthis.code = code;\n\t\tthis.status = status;\n\t\tthis.url = url;\n\t\tthis.name = \"FetchUrlError\";\n\t}\n\tstatic create(url, status, message) {\n\t\tif (status === 404) return new FetchUrlError(message || \"URL not found.\", \"ENOENT\", status, url);\n\t\tif (status >= 400 && status < 500) return new FetchUrlError(message || \"Permission denied.\", \"EACCES\", status, url);\n\t\treturn new FetchUrlError(message || \"Fatal Error\", \"ECONNREFUSED\", status, url);\n\t}\n\tstatic fromError(url, e) {\n\t\tconst cause = getCause(e);\n\t\tif (cause) return new FetchUrlError(cause.message, cause.code, void 0, url);\n\t\tif (isNodeError(e)) return new FetchUrlError(e.message, e.code, void 0, url);\n\t\treturn new FetchUrlError(e.message, void 0, void 0, url);\n\t}\n};\nfunction isNodeError(e) {\n\tif (e instanceof Error && \"code\" in e && typeof e.code === \"string\") return true;\n\tif (e && typeof e === \"object\" && \"code\" in e && typeof e.code === \"string\") return true;\n\treturn false;\n}\nfunction isError(e) {\n\treturn e instanceof Error;\n}\nfunction isErrorWithOptionalCause(e) {\n\treturn isError(e) && (!(\"cause\" in e) || isNodeError(e.cause) || isNodeError(e));\n}\nfunction getCause(e) {\n\treturn isErrorWithOptionalCause(e) ? e.cause : void 0;\n}\nfunction toFetchUrlError(err, url) {\n\treturn err instanceof FetchUrlError ? err : FetchUrlError.fromError(url, toError(err));\n}\nfunction toError(err) {\n\treturn err instanceof Error ? err : new Error(\"Unknown Error\", { cause: err });\n}\n//#endregion\n//#region src/node/file/fetch.ts\nasync function fetchHead(request) {\n\tconst url = toURL$1(request);\n\ttry {\n\t\tconst r = await _fetch(url, { method: \"HEAD\" });\n\t\tif (!r.ok) throw FetchUrlError.create(url, r.status);\n\t\treturn r.headers;\n\t} catch (e) {\n\t\tthrow toFetchUrlError(e, url);\n\t}\n}\nasync function fetchURL(url, signal) {\n\ttry {\n\t\tconst response = await _fetch(signal ? new Request(url, { signal }) : url);\n\t\tif (!response.ok) throw FetchUrlError.create(url, response.status);\n\t\treturn await response.bytes();\n\t} catch (e) {\n\t\tthrow toFetchUrlError(e, url);\n\t}\n}\nfunction toURL$1(url) {\n\treturn typeof url === \"string\" ? new URL(url) : url;\n}\n//#endregion\n//#region src/node/file/stat.ts\nasync function getStatHttp(url) {\n\tconst headers = await fetchHead(url);\n\tconst eTag = headers.get(\"etag\") || void 0;\n\tconst guessSize = Number.parseInt(headers.get(\"content-length\") || \"0\", 10);\n\treturn {\n\t\tsize: eTag ? -1 : guessSize,\n\t\tmtimeMs: 0,\n\t\teTag\n\t};\n}\nconst RequestFsReadFile = requestFactory(\"fs:readFile\");\nconst RequestFsReadFileTextSync = requestFactory(\"fs:readFileSync\");\nconst RequestFsStat = requestFactory(\"fs:stat\");\nconst RequestFsStatSync = requestFactory(\"fs:statSync\");\nconst RequestFsWriteFile = requestFactory(\"fs:writeFile\");\nconst RequestZlibInflate = requestFactory(\"zlib:inflate\");\nconst RequestFsReadDirectory = requestFactory(\"fs:readDir\");\n//#endregion\n//#region src/handlers/node/file.ts\nconst isGzFileRegExp = /\\.gz($|[?#])/;\nfunction isGzFile(url) {\n\treturn isGzFileRegExp.test(typeof url === \"string\" ? url : url.pathname);\n}\nconst pGzip = promisify(gzip);\n/**\n* Handle Binary File Reads\n*/\nconst handleRequestFsReadFile = RequestFsReadFile.createRequestHandler(({ params }) => {\n\tconst baseFilename = urlBasename(params.url);\n\treturn createResponse(promises.readFile(fileURLToPath(params.url)).then((content) => CFileResource.from(params.url, content, params.encoding, baseFilename)));\n}, void 0, \"Node: Read Binary File.\");\n/**\n* Handle Binary File Sync Reads\n*/\nconst handleRequestFsReadFileSync = RequestFsReadFileTextSync.createRequestHandler(({ params }) => createResponse(CFileResource.from({\n\t...params,\n\tcontent: readFileSync(fileURLToPath(params.url))\n})), void 0, \"Node: Sync Read Binary File.\");\n/**\n* Handle Binary File Reads\n*/\nconst handleRequestFsReadDirectory = RequestFsReadDirectory.createRequestHandler(({ params }) => {\n\treturn createResponse(promises.readdir(fileURLToPath(params.url), { withFileTypes: true }).then((entries) => direntToDirEntries(params.url, entries)));\n}, void 0, \"Node: Read Directory.\");\n/**\n* Handle deflating gzip data\n*/\nconst handleRequestZlibInflate = RequestZlibInflate.createRequestHandler(({ params }) => createResponse(gunzipSync(arrayBufferViewToBuffer(params.data))), void 0, \"Node: gz deflate.\");\nconst supportedFetchProtocols = {\n\t\"http:\": true,\n\t\"https:\": true\n};\n/**\n* Handle fetching a file from http\n*/\nconst handleRequestFsReadFileHttp = RequestFsReadFile.createRequestHandler((req, next) => {\n\tconst { url, signal, encoding } = req.params;\n\tif (!(url.protocol in supportedFetchProtocols)) return next(req);\n\treturn createResponse(fetchURL(url, signal).then((content) => CFileResource.from({\n\t\turl,\n\t\tencoding,\n\t\tcontent\n\t})));\n}, void 0, \"Node: Read Http(s) file.\");\n/**\n* Handle decoding a data url\n*/\nconst handleRequestFsReadFileSyncData = RequestFsReadFileTextSync.createRequestHandler((req, next) => {\n\tconst { url, encoding } = req.params;\n\tif (url.protocol !== \"data:\") return next(req);\n\tconst data = decodeDataUrl(url);\n\treturn createResponse(CFileResource.from({\n\t\turl,\n\t\tcontent: data.data,\n\t\tencoding,\n\t\tbaseFilename: data.attributes.get(\"filename\")\n\t}));\n}, void 0, \"Node: Read data: urls.\");\n/**\n* Handle decoding a data url\n*/\nconst handleRequestFsReadFileData = RequestFsReadFile.createRequestHandler((req, next, dispatcher) => {\n\tconst { url } = req.params;\n\tif (url.protocol !== \"data:\") return next(req);\n\tconst res = dispatcher.dispatch(RequestFsReadFileTextSync.create(req.params));\n\tif (!isServiceResponseSuccess(res)) return res;\n\treturn createResponse(Promise.resolve(res.value));\n}, void 0, \"Node: Read data: urls.\");\n/**\n* Handle fs:stat\n*/\nconst handleRequestFsStat = RequestFsStat.createRequestHandler(({ params }) => createResponse(toPromiseStats(promises.stat(fileURLToPath(params.url)))), void 0, \"Node: fs.stat.\");\nfunction toStats(stat) {\n\treturn {\n\t\tsize: stat.size,\n\t\tmtimeMs: stat.mtimeMs,\n\t\tfileType: toFileType(stat)\n\t};\n}\nfunction toPromiseStats(pStat) {\n\treturn pStat.then(toStats);\n}\n/**\n* Handle fs:statSync\n*/\nconst handleRequestFsStatSync = RequestFsStatSync.createRequestHandler((req) => {\n\tconst { params } = req;\n\ttry {\n\t\treturn createResponse(statSync(fileURLToPath(params.url)));\n\t} catch (e) {\n\t\treturn createResponseFail(req, toError$1(e));\n\t}\n}, void 0, \"Node: fs.stat.\");\n/**\n* Handle deflating gzip data\n*/\nconst handleRequestFsStatHttp = RequestFsStat.createRequestHandler((req, next) => {\n\tconst { url } = req.params;\n\tif (!(url.protocol in supportedFetchProtocols)) return next(req);\n\treturn createResponse(getStatHttp(url));\n}, void 0, \"Node: http get stat\");\n/**\n* Handle fs:writeFile\n*/\nconst handleRequestFsWriteFile = RequestFsWriteFile.createRequestHandler(({ params }) => createResponse(writeFile(params, params.content)), void 0, \"Node: fs.writeFile\");\nasync function writeFile(fileRef, content) {\n\tconst gz = isGZipped(content);\n\tconst { url, encoding, baseFilename } = fileRef;\n\tconst resultRef = {\n\t\turl,\n\t\tencoding,\n\t\tbaseFilename,\n\t\tgz\n\t};\n\tawait promises.writeFile(fileURLToPath(fileRef.url), encodeContent(fileRef, content));\n\treturn resultRef;\n}\n/**\n* Handle fs:writeFile\n*/\nconst handleRequestFsWriteFileDataUrl = RequestFsWriteFile.createRequestHandler((req, next) => {\n\tconst fileResource = req.params;\n\tconst { url } = req.params;\n\tif (url.protocol !== \"data:\") return next(req);\n\tconst gz = isGZipped(fileResource.content);\n\tconst baseFilename = fileResource.baseFilename || \"file.txt\" + (gz ? \".gz\" : \"\");\n\tconst mt = guessMimeType(baseFilename);\n\tconst mediaType = mt?.mimeType || \"text/plain\";\n\tconst dataUrl = toDataUrl(fileResource.content, mediaType, [[\"filename\", baseFilename]]);\n\treturn createResponse(Promise.resolve({\n\t\turl: dataUrl,\n\t\tbaseFilename,\n\t\tgz,\n\t\tencoding: mt?.encoding\n\t}));\n}, void 0, \"Node: fs.writeFile DataUrl\");\n/**\n* Handle fs:writeFile compressed\n*/\nconst handleRequestFsWriteFileGz = RequestFsWriteFile.createRequestHandler((req, next, dispatcher) => {\n\tconst fileResource = req.params;\n\tif (!fileResource.gz && !isGzFile(fileResource.url) && (!fileResource.baseFilename || !isGzFile(fileResource.baseFilename))) return next(req);\n\tif (typeof fileResource.content !== \"string\" && isGZipped(fileResource.content)) return next(req);\n\treturn createResponse(compressAndChainWriteRequest(dispatcher, fileResource, fileResource.content));\n}, void 0, \"Node: fs.writeFile compressed\");\nasync function compressAndChainWriteRequest(dispatcher, fileRef, content) {\n\tconst buf = await pGzip(encodeContent(fileRef, content));\n\tconst res = dispatcher.dispatch(RequestFsWriteFile.create({\n\t\t...fileRef,\n\t\tcontent: buf\n\t}));\n\tassert$1(isServiceResponseSuccess(res));\n\treturn res.value;\n}\nfunction registerHandlers(serviceBus) {\n\t[\n\t\thandleRequestFsReadFile,\n\t\thandleRequestFsReadFileSync,\n\t\thandleRequestFsWriteFile,\n\t\thandleRequestFsWriteFileDataUrl,\n\t\thandleRequestFsWriteFileGz,\n\t\thandleRequestFsReadFileHttp,\n\t\thandleRequestFsReadFileData,\n\t\thandleRequestFsReadFileSyncData,\n\t\thandleRequestFsReadDirectory,\n\t\thandleRequestZlibInflate,\n\t\thandleRequestFsStatSync,\n\t\thandleRequestFsStat,\n\t\thandleRequestFsStatHttp\n\t].forEach((handler) => serviceBus.addHandler(handler));\n}\nfunction encodeContent(ref, content) {\n\tif (typeof content === \"string\") {\n\t\tif ([\n\t\t\tvoid 0,\n\t\t\t\"utf8\",\n\t\t\t\"utf-8\"\n\t\t].includes(ref.encoding)) return content;\n\t\treturn arrayBufferViewToBuffer(encodeString$1(content, ref.encoding));\n\t}\n\treturn arrayBufferViewToBuffer(content);\n}\nfunction mapperDirentToDirEntry(dir) {\n\treturn (dirent) => direntToDirEntry(dir, dirent);\n}\nfunction direntToDirEntries(dir, dirent) {\n\treturn dirent.map(mapperDirentToDirEntry(dir));\n}\nfunction direntToDirEntry(dir, dirent) {\n\treturn {\n\t\tname: dirent.name,\n\t\tdir,\n\t\tfileType: toFileType(dirent)\n\t};\n}\nfunction toFileType(statLike) {\n\tconst t = statLike.isFile() ? 1 : statLike.isDirectory() ? 2 : 0;\n\treturn statLike.isSymbolicLink() ? t | 64 : t;\n}\n//#endregion\n//#region src/CSpellIONode.ts\nlet defaultCSpellIONode = void 0;\nvar CSpellIONode = class {\n\tserviceBus;\n\tconstructor(serviceBus = new ServiceBus()) {\n\t\tthis.serviceBus = serviceBus;\n\t\tregisterHandlers(serviceBus);\n\t}\n\treadFile(urlOrFilename, options) {\n\t\tconst readOptions = toReadFileOptions(options);\n\t\tconst ref = toFileResourceRequest(urlOrFilename, readOptions?.encoding, readOptions?.signal);\n\t\tconst res = this.serviceBus.dispatch(RequestFsReadFile.create(ref));\n\t\tif (!isServiceResponseSuccess(res)) throw genError(res.error, \"readFile\");\n\t\treturn res.value;\n\t}\n\treadDirectory(urlOrFilename) {\n\t\tconst ref = toFileReference(urlOrFilename);\n\t\tconst res = this.serviceBus.dispatch(RequestFsReadDirectory.create(ref));\n\t\tif (!isServiceResponseSuccess(res)) throw genError(res.error, \"readDirectory\");\n\t\treturn res.value;\n\t}\n\treadFileSync(urlOrFilename, encoding) {\n\t\tconst ref = toFileReference(urlOrFilename, encoding);\n\t\tconst res = this.serviceBus.dispatch(RequestFsReadFileTextSync.create(ref));\n\t\tif (!isServiceResponseSuccess(res)) throw genError(res.error, \"readFileSync\");\n\t\treturn res.value;\n\t}\n\twriteFile(urlOrFilename, content) {\n\t\tconst ref = toFileReference(urlOrFilename);\n\t\tconst fileResource = CFileResource.from(ref, content);\n\t\tconst res = this.serviceBus.dispatch(RequestFsWriteFile.create(fileResource));\n\t\tif (!isServiceResponseSuccess(res)) throw genError(res.error, \"writeFile\");\n\t\treturn res.value;\n\t}\n\tgetStat(urlOrFilename) {\n\t\tconst ref = toFileReference(urlOrFilename);\n\t\tconst res = this.serviceBus.dispatch(RequestFsStat.create(ref));\n\t\tif (!isServiceResponseSuccess(res)) throw genError(res.error, \"getStat\");\n\t\treturn res.value;\n\t}\n\tgetStatSync(urlOrFilename) {\n\t\tconst ref = toFileReference(urlOrFilename);\n\t\tconst res = this.serviceBus.dispatch(RequestFsStatSync.create(ref));\n\t\tif (!isServiceResponseSuccess(res)) throw genError(res.error, \"getStatSync\");\n\t\treturn res.value;\n\t}\n\tcompareStats(left, right) {\n\t\treturn compareStats(left, right);\n\t}\n\ttoURL(urlOrFilename, relativeTo) {\n\t\tif (isFileReference(urlOrFilename)) return urlOrFilename.url;\n\t\treturn toURL(urlOrFilename, relativeTo);\n\t}\n\ttoFileURL(urlOrFilename, relativeTo) {\n\t\tif (isFileReference(urlOrFilename)) return urlOrFilename.url;\n\t\treturn toFileURL(urlOrFilename, relativeTo);\n\t}\n\turlBasename(urlOrFilename) {\n\t\treturn urlBasename(this.toURL(urlOrFilename));\n\t}\n\turlDirname(urlOrFilename) {\n\t\treturn urlDirname(this.toURL(urlOrFilename));\n\t}\n};\nfunction genError(err, alt) {\n\treturn err || new ErrorNotImplemented(alt);\n}\nfunction getDefaultCSpellIO() {\n\tif (defaultCSpellIONode) return defaultCSpellIONode;\n\tconst cspellIO = new CSpellIONode();\n\tdefaultCSpellIONode = cspellIO;\n\treturn cspellIO;\n}\n//#endregion\n//#region src/common/transformers.ts\nfunction encoderTransformer(iterable, encoding) {\n\treturn isAsyncIterable(iterable) ? encoderAsyncIterable(iterable, encoding) : encoderIterable(iterable, encoding);\n}\nfunction* encoderIterable(iterable, encoding) {\n\tlet useBom = true;\n\tfor (const chunk of iterable) {\n\t\tyield encodeString$1(chunk, encoding, useBom);\n\t\tuseBom = false;\n\t}\n}\nasync function* encoderAsyncIterable(iterable, encoding) {\n\tlet useBom = true;\n\tfor await (const chunk of iterable) {\n\t\tyield encodeString$1(chunk, encoding, useBom);\n\t\tuseBom = false;\n\t}\n}\nfunction isAsyncIterable(v) {\n\treturn v && typeof v === \"object\" && !!v[Symbol.asyncIterator];\n}\n//#endregion\n//#region src/node/file/fileWriter.ts\nconst pipeline = promisify(Stream.pipeline);\nfunction writeToFile(filename, data, encoding) {\n\treturn writeToFileIterable(filename, typeof data === \"string\" ? [data] : data, encoding);\n}\nfunction writeToFileIterable(filename, data, encoding) {\n\treturn pipeline(Stream.Readable.from(encoderTransformer(data, encoding)), /\\.gz$/.test(filename) ? zlib.createGzip() : new Stream.PassThrough(), fs.createWriteStream(filename));\n}\n//#endregion\n//#region src/file/file.ts\nasync function readFileText(filename, encoding) {\n\treturn (await getDefaultCSpellIO().readFile(filename, encoding)).getText();\n}\nfunction readFileTextSync(filename, encoding) {\n\treturn getDefaultCSpellIO().readFileSync(filename, encoding).getText();\n}\nasync function getStat(filenameOrUri) {\n\ttry {\n\t\treturn await getDefaultCSpellIO().getStat(filenameOrUri);\n\t} catch (e) {\n\t\treturn toError$1(e);\n\t}\n}\nfunction getStatSync(filenameOrUri) {\n\ttry {\n\t\treturn getDefaultCSpellIO().getStatSync(filenameOrUri);\n\t} catch (e) {\n\t\treturn toError$1(e);\n\t}\n}\n//#endregion\n//#region src/VirtualFS/constants.ts\nconst CSPELL_VFS_PROTOCOL = \"cspell-vfs:\";\n//#endregion\n//#region src/VirtualFS/findUpFromUrl.ts\nasync function findUpFromUrl(name, from, options) {\n\tconst { type: entryType = \"file\", stopAt, fs } = options;\n\tlet dir = new URL(\".\", from);\n\tconst root = new URL(\"/\", dir);\n\tconst predicate = makePredicate(fs, name, entryType);\n\tconst stopAtHrefs = new Set((Array.isArray(stopAt) ? stopAt : [stopAt || root]).map((p) => new URL(\".\", p).href));\n\tlet last = \"\";\n\twhile (dir.href !== last) {\n\t\tconst found = await predicate(dir);\n\t\tif (found !== void 0) return found;\n\t\tlast = dir.href;\n\t\tif (dir.href === root.href || stopAtHrefs.has(dir.href)) break;\n\t\tdir = new URL(\"..\", dir);\n\t}\n}\nfunction makePredicate(fs, name, entryType) {\n\tif (typeof name === \"function\") return name;\n\tconst checkStat = entryType === \"file\" || entryType === \"!file\" ? \"isFile\" : \"isDirectory\";\n\tconst checkValue = entryType.startsWith(\"!\") ? false : true;\n\tfunction checkName(dir, name) {\n\t\tconst f = new URL(name, dir);\n\t\treturn fs.stat(f).then((stats) => (stats.isUnknown() || stats[checkStat]() === checkValue) && f || void 0).catch(() => void 0);\n\t}\n\tif (!Array.isArray(name)) return (dir) => checkName(dir, name);\n\treturn async (dir) => {\n\t\tconst pending = name.map((n) => checkName(dir, n));\n\t\tfor (const p of pending) {\n\t\t\tconst found = await p;\n\t\t\tif (found) return found;\n\t\t}\n\t};\n}\n//#endregion\n//#region src/VirtualFS/CVFileSystem.ts\nvar CVFileSystem = class {\n\t#core;\n\treadFile;\n\twriteFile;\n\tstat;\n\treadDirectory;\n\tgetCapabilities;\n\tconstructor(core) {\n\t\tthis.#core = core;\n\t\tthis.readFile = this.#core.readFile.bind(this.#core);\n\t\tthis.writeFile = this.#core.writeFile.bind(this.#core);\n\t\tthis.stat = this.#core.stat.bind(this.#core);\n\t\tthis.readDirectory = this.#core.readDirectory.bind(this.#core);\n\t\tthis.getCapabilities = this.#core.getCapabilities.bind(this.#core);\n\t}\n\tget providerInfo() {\n\t\treturn this.#core.providerInfo;\n\t}\n\tget hasProvider() {\n\t\treturn this.#core.hasProvider;\n\t}\n\tfindUp(name, from, options = {}) {\n\t\treturn findUpFromUrl(name, from, {\n\t\t\t...options,\n\t\t\tfs: this.#core\n\t\t});\n\t}\n};\n//#endregion\n//#region src/VirtualFS/errors.ts\nvar VFSError = class extends Error {\n\turl;\n\tcode;\n\tconstructor(message, options) {\n\t\tsuper(message, { cause: options?.cause });\n\t\tthis.name = \"VFSError\";\n\t\tthis.url = options?.url instanceof URL ? options.url.href : options?.url;\n\t\tthis.code = options?.code;\n\t}\n};\nvar VFSNotSupported = class extends VFSError {\n\tconstructor(methodName, url) {\n\t\tsuper(`Method ${methodName} is not supported for ${url.href}`, { url });\n\t}\n};\nvar VFSNotFoundError = class extends VFSError {\n\tconstructor(url, options) {\n\t\tsuper(`Not found: ${url.href}`, {\n\t\t\t...options,\n\t\t\turl,\n\t\t\tcode: options?.code ?? \"ENOENT\"\n\t\t});\n\t}\n};\nvar VFSErrorUnsupportedRequest = class extends VFSError {\n\trequest;\n\tparameters;\n\tconstructor(request, url, parameters) {\n\t\tsuper(`Unsupported request: ${request}`, { url });\n\t\tthis.request = request;\n\t\tthis.parameters = parameters;\n\t}\n};\n//#endregion\n//#region src/VirtualFS/VFileSystem.ts\nlet FSCapabilityFlags = /* @__PURE__ */ function(FSCapabilityFlags) {\n\tFSCapabilityFlags[FSCapabilityFlags[\"None\"] = 0] = \"None\";\n\tFSCapabilityFlags[FSCapabilityFlags[\"Stat\"] = 1] = \"Stat\";\n\tFSCapabilityFlags[FSCapabilityFlags[\"Read\"] = 2] = \"Read\";\n\tFSCapabilityFlags[FSCapabilityFlags[\"Write\"] = 4] = \"Write\";\n\tFSCapabilityFlags[FSCapabilityFlags[\"ReadWrite\"] = 6] = \"ReadWrite\";\n\tFSCapabilityFlags[FSCapabilityFlags[\"ReadDir\"] = 8] = \"ReadDir\";\n\tFSCapabilityFlags[FSCapabilityFlags[\"WriteDir\"] = 16] = \"WriteDir\";\n\tFSCapabilityFlags[FSCapabilityFlags[\"ReadWriteDir\"] = 24] = \"ReadWriteDir\";\n\treturn FSCapabilityFlags;\n}({});\n//#endregion\n//#region src/VirtualFS/MemVfsProvider.ts\nvar MemFileSystemProvider = class {\n\tname;\n\tprotocol;\n\t#vfs;\n\t/**\n\t* @param name - the name of the provider, used for debugging and logging.\n\t* @param protocol - the protocol (end with a :), examples: `vfs:`, `cspell-vfs:`\n\t*/\n\tconstructor(name, protocol) {\n\t\tthis.name = name;\n\t\tthis.protocol = protocol;\n\t\tthis.#vfs = new MemVFileSystem(name, protocol);\n\t}\n\tgetFileSystem(url) {\n\t\tif (url.protocol !== this.protocol) return;\n\t\treturn this.#vfs;\n\t}\n\tget memFS() {\n\t\treturn this.#vfs;\n\t}\n\tdispose() {\n\t\tthis.#vfs.dispose();\n\t}\n\t[Symbol.dispose]() {\n\t\tthis.dispose();\n\t}\n};\nvar MemVFileSystem = class {\n\tname;\n\tprotocol;\n\tcapabilities = 7;\n\t#files = /* @__PURE__ */ new Map();\n\tconstructor(name, protocol) {\n\t\tthis.name = name;\n\t\tthis.protocol = protocol;\n\t\tthis.providerInfo = { name };\n\t\tthis.#files = /* @__PURE__ */ new Map();\n\t}\n\t/**\n\t* Read a file.\n\t* @param url - URL to read\n\t* @param options - options for reading the file.\n\t* @returns A FileResource, the content will not be decoded. Use `.getText()` to get the decoded text.\n\t*/\n\tasync readFile(url, _options) {\n\t\treturn this.#getEntryOrThrow(url).file;\n\t}\n\t/**\n\t* Write a file\n\t* @param file - the file to write\n\t*/\n\tasync writeFile(file) {\n\t\tconst stats = {\n\t\t\tsize: file.content.length,\n\t\t\tmtimeMs: performance.now(),\n\t\t\tfileType: 1\n\t\t};\n\t\tconst u = urlOrReferenceToUrl(file);\n\t\tthis.#files.set(u.href, {\n\t\t\tfile,\n\t\t\tstats\n\t\t});\n\t\treturn { url: file.url };\n\t}\n\t/**\n\t* Get the stats for a url.\n\t* @param url - Url to fetch stats for.\n\t*/\n\tstat(url) {\n\t\treturn this.#getEntryOrThrow(url).stats;\n\t}\n\t#getEntryOrThrow(url) {\n\t\tconst u = urlOrReferenceToUrl(url);\n\t\tconst found = this.#files.get(u.href);\n\t\tif (!found) throw new VFSNotFoundError(u);\n\t\treturn found;\n\t}\n\t/**\n\t* Read the directory entries for a url.\n\t* The url should end with `/` to indicate a directory.\n\t* @param url - the url to read the directory entries for.\n\t*/\n\tasync readDirectory(url) {\n\t\tthrow new VFSNotSupported(\"readDirectory\", url);\n\t}\n\t/**\n\t* Information about the provider.\n\t* It is up to the provider to define what information is available.\n\t*/\n\tproviderInfo;\n\tdispose() {\n\t\tthis.#files.clear();\n\t}\n\t[Symbol.dispose]() {\n\t\tthis.dispose();\n\t}\n};\n//#endregion\n//#region src/VirtualFS/capabilities.ts\nvar CFsCapabilities = class {\n\tflags;\n\tconstructor(flags) {\n\t\tthis.flags = flags;\n\t}\n\tget readFile() {\n\t\treturn !!(this.flags & 2);\n\t}\n\tget writeFile() {\n\t\treturn !!(this.flags & 4);\n\t}\n\tget readDirectory() {\n\t\treturn !!(this.flags & 8);\n\t}\n\tget writeDirectory() {\n\t\treturn !!(this.flags & 16);\n\t}\n\tget stat() {\n\t\treturn !!(this.flags & 1);\n\t}\n};\nfunction fsCapabilities(flags) {\n\treturn new CFsCapabilities(flags);\n}\n//#endregion\n//#region src/VirtualFS/CFileType.ts\nvar CFileType = class {\n\tfileType;\n\tconstructor(fileType) {\n\t\tthis.fileType = fileType;\n\t}\n\tisFile() {\n\t\treturn this.fileType === 1;\n\t}\n\tisDirectory() {\n\t\treturn this.fileType === 2;\n\t}\n\tisUnknown() {\n\t\treturn !this.fileType;\n\t}\n\tisSymbolicLink() {\n\t\treturn !!(this.fileType & 64);\n\t}\n};\n//#endregion\n//#region src/VirtualFS/CVfsStat.ts\nvar CVfsStat = class extends CFileType {\n\tstat;\n\tconstructor(stat) {\n\t\tsuper(stat.fileType || 0);\n\t\tthis.stat = stat;\n\t}\n\tget size() {\n\t\treturn this.stat.size;\n\t}\n\tget mtimeMs() {\n\t\treturn this.stat.mtimeMs;\n\t}\n\tget eTag() {\n\t\treturn this.stat.eTag;\n\t}\n};\n//#endregion\n//#region src/VirtualFS/WrappedProviderFs.ts\nfunction cspellIOToFsProvider(cspellIO) {\n\tconst capabilities = 15;\n\tconst capabilitiesHttp = 3;\n\tconst capMap = {\n\t\t\"file:\": capabilities,\n\t\t\"http:\": capabilitiesHttp,\n\t\t\"https:\": capabilitiesHttp\n\t};\n\tconst name = \"CSpellIO\";\n\tconst supportedProtocols = new Set([\n\t\t\"file:\",\n\t\t\"http:\",\n\t\t\"https:\"\n\t]);\n\tconst dispose = () => void 0;\n\tconst fs = {\n\t\tproviderInfo: { name },\n\t\tstat: (url) => cspellIO.getStat(url),\n\t\treadFile: (url, options) => cspellIO.readFile(url, options),\n\t\treadDirectory: (url) => cspellIO.readDirectory(url),\n\t\twriteFile: (file) => cspellIO.writeFile(file.url, file.content),\n\t\tdispose,\n\t\tcapabilities,\n\t\tgetCapabilities(url) {\n\t\t\treturn fsCapabilities(capMap[url.protocol] || 0);\n\t\t},\n\t\t[Symbol.dispose]: dispose\n\t};\n\treturn {\n\t\tname,\n\t\tgetFileSystem: (url, _next) => {\n\t\t\treturn supportedProtocols.has(url.protocol) ? fs : void 0;\n\t\t}\n\t};\n}\nfunction wrapError(e) {\n\tif (e instanceof VFSError) return e;\n\treturn e;\n}\nvar WrappedProviderFs = class WrappedProviderFs {\n\tfs;\n\teventLogger;\n\thasProvider;\n\tcapabilities;\n\tproviderInfo;\n\t_capabilities;\n\tconstructor(fs, eventLogger) {\n\t\tthis.fs = fs;\n\t\tthis.eventLogger = eventLogger;\n\t\tthis.hasProvider = !!fs;\n\t\tthis.capabilities = fs?.capabilities || 0;\n\t\tthis._capabilities = fsCapabilities(this.capabilities);\n\t\tthis.providerInfo = fs?.providerInfo || { name: \"unknown\" };\n\t}\n\tlogEvent(method, event, traceID, url, message) {\n\t\tthis.eventLogger({\n\t\t\tmethod,\n\t\t\tevent,\n\t\t\turl,\n\t\t\ttraceID,\n\t\t\tts: performance.now(),\n\t\t\tmessage\n\t\t});\n\t}\n\tgetCapabilities(url) {\n\t\tif (this.fs?.getCapabilities) return this.fs.getCapabilities(url);\n\t\treturn this._capabilities;\n\t}\n\tasync stat(urlRef) {\n\t\tconst traceID = performance.now();\n\t\tconst url = urlOrReferenceToUrl(urlRef);\n\t\tthis.logEvent(\"stat\", \"start\", traceID, url);\n\t\ttry {\n\t\t\tcheckCapabilityOrThrow(this.fs, this.capabilities, 1, \"stat\", url);\n\t\t\treturn new CVfsStat(await this.fs.stat(urlRef));\n\t\t} catch (e) {\n\t\t\tthis.logEvent(\"stat\", \"error\", traceID, url, e instanceof Error ? e.message : \"\");\n\t\t\tthrow wrapError(e);\n\t\t} finally {\n\t\t\tthis.logEvent(\"stat\", \"end\", traceID, url);\n\t\t}\n\t}\n\tasync readFile(urlRef, optionsOrEncoding) {\n\t\tconst traceID = performance.now();\n\t\tconst url = urlOrReferenceToUrl(urlRef);\n\t\tthis.logEvent(\"readFile\", \"start\", traceID, url);\n\t\ttry {\n\t\t\tcheckCapabilityOrThrow(this.fs, this.capabilities, 2, \"readFile\", url);\n\t\t\tconst readOptions = toOptions(optionsOrEncoding);\n\t\t\treturn fromFileResource(await this.fs.readFile(urlRef, readOptions), readOptions?.encoding);\n\t\t} catch (e) {\n\t\t\tthis.logEvent(\"readFile\", \"error\", traceID, url, e instanceof Error ? e.message : \"\");\n\t\t\tthrow wrapError(e);\n\t\t} finally {\n\t\t\tthis.logEvent(\"readFile\", \"end\", traceID, url);\n\t\t}\n\t}\n\tasync readDirectory(url) {\n\t\tconst traceID = performance.now();\n\t\tthis.logEvent(\"readDir\", \"start\", traceID, url);\n\t\ttry {\n\t\t\tcheckCapabilityOrThrow(this.fs, this.capabilities, 8, \"readDirectory\", url);\n\t\t\treturn (await this.fs.readDirectory(url)).map((e) => new CVfsDirEntry(e));\n\t\t} catch (e) {\n\t\t\tthis.logEvent(\"readDir\", \"error\", traceID, url, e instanceof Error ? e.message : \"\");\n\t\t\tthrow wrapError(e);\n\t\t} finally {\n\t\t\tthis.logEvent(\"readDir\", \"end\", traceID, url);\n\t\t}\n\t}\n\tasync writeFile(file) {\n\t\tconst traceID = performance.now();\n\t\tconst url = file.url;\n\t\tthis.logEvent(\"writeFile\", \"start\", traceID, url);\n\t\ttry {\n\t\t\tcheckCapabilityOrThrow(this.fs, this.capabilities, 4, \"writeFile\", file.url);\n\t\t\treturn await this.fs.writeFile(file);\n\t\t} catch (e) {\n\t\t\tthis.logEvent(\"writeFile\", \"error\", traceID, url, e instanceof Error ? e.message : \"\");\n\t\t\tthrow wrapError(e);\n\t\t} finally {\n\t\t\tthis.logEvent(\"writeFile\", \"end\", traceID, url);\n\t\t}\n\t}\n\tstatic disposeOf(fs) {\n\t\tfs instanceof WrappedProviderFs && fs.fs?.dispose();\n\t}\n};\nfunction checkCapabilityOrThrow(fs, capabilities, flag, name, url) {\n\tif (!(capabilities & flag) || !fs) throw new VFSErrorUnsupportedRequest(name, url);\n}\nvar CVfsDirEntry = class extends CFileType {\n\tentry;\n\t_url;\n\tconstructor(entry) {\n\t\tsuper(entry.fileType);\n\t\tthis.entry = entry;\n\t}\n\tget name() {\n\t\treturn this.entry.name;\n\t}\n\tget dir() {\n\t\treturn this.entry.dir;\n\t}\n\tget url() {\n\t\tif (this._url) return this._url;\n\t\tthis._url = new URL(this.entry.name, this.entry.dir);\n\t\treturn this._url;\n\t}\n\ttoJSON() {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tdir: this.dir,\n\t\t\tfileType: this.fileType\n\t\t};\n\t}\n};\n/**\n* Chop URL at node_modules to make it more readable in logs. If the URL contains `node_modules`, the\n* chopped URL will include the part before `node_modules`, followed by `\u2026`, and then the last 3 parts\n* of the URL. If the URL does not contain `node_modules`, the original URL href will be returned.\n* @param url - the URL to chop.\n* @returns string - the chopped URL, if the URL contains node_modules, otherwise the original URL href.\n*/\nfunction chopUrlAtNodeModules(url) {\n\tif (!url) return \"\";\n\tconst href = url.href;\n\tconst parts = href.split(\"/\");\n\tconst n = parts.indexOf(\"node_modules\");\n\tif (n > 0) {\n\t\tconst tail = parts.slice(n + 1);\n\t\tif (tail.length <= 3) return href;\n\t\treturn parts.slice(0, n + 1).join(\"/\") + \"/\u2026/\" + tail.slice(-3).join(\"/\");\n\t}\n\treturn href;\n}\nfunction rPad(str, len, ch = \" \") {\n\treturn str.padEnd(len, ch);\n}\nfunction toOptions(val) {\n\treturn typeof val === \"string\" ? { encoding: val } : val;\n}\n//#endregion\n//#region src/VirtualFS/CVirtualFS.ts\nvar CVirtualFS = class {\n\tproviders = /* @__PURE__ */ new Set();\n\tcachedFs = /* @__PURE__ */ new Map();\n\trevCacheFs = /* @__PURE__ */ new Map();\n\tfsc;\n\tfs;\n\tloggingEnabled = false;\n\tconstructor() {\n\t\tthis.fsc = fsPassThroughCore((url) => this._getFS(url));\n\t\tthis.fs = new CVFileSystem(this.fsc);\n\t}\n\tenableLogging(value) {\n\t\tthis.loggingEnabled = value ?? true;\n\t}\n\tlog = console.log;\n\tlogEvent = (event) => {\n\t\tif (this.loggingEnabled) {\n\t\t\tconst id = event.traceID.toFixed(13).replaceAll(/\\d{4}(?=\\d)/g, \"$&.\");\n\t\t\tconst msg = event.message ? `\\n\\t\\t${event.message}` : \"\";\n\t\t\tconst method = rPad(`${event.method}-${event.event}`, 16);\n\t\t\tthis.log(`${method} ID:${id} ts:${event.ts.toFixed(13)} ${chopUrlAtNodeModules(event.url)}${msg}`);\n\t\t}\n\t};\n\tregisterFileSystemProvider(...providers) {\n\t\tproviders.forEach((provider) => this.providers.add(provider));\n\t\tthis.reset();\n\t\tconst dispose = () => {\n\t\t\tfor (const provider of providers) {\n\t\t\t\tfor (const key of this.revCacheFs.get(provider) || []) this.cachedFs.delete(key);\n\t\t\t\tthis.providers.delete(provider);\n\t\t\t}\n\t\t\tthis.reset();\n\t\t};\n\t\treturn {\n\t\t\tdispose,\n\t\t\t[Symbol.dispose]: dispose\n\t\t};\n\t}\n\tgetFS(url) {\n\t\treturn new CVFileSystem(this._getFS(url));\n\t}\n\t_getFS(url) {\n\t\tconst key = `${url.protocol}${url.hostname}`;\n\t\tconst cached = this.cachedFs.get(key);\n\t\tif (cached) return cached;\n\t\tconst fnNext = (provider, next) => {\n\t\t\treturn (url) => {\n\t\t\t\tlet calledNext = false;\n\t\t\t\tconst fs = provider.getFileSystem(url, (_url) => {\n\t\t\t\t\tcalledNext = calledNext || url === _url;\n\t\t\t\t\treturn next(_url);\n\t\t\t\t});\n\t\t\t\tif (fs) {\n\t\t\t\t\tconst s = this.revCacheFs.get(provider) || /* @__PURE__ */ new Set();\n\t\t\t\t\ts.add(key);\n\t\t\t\t\tthis.revCacheFs.set(provider, s);\n\t\t\t\t\treturn fs;\n\t\t\t\t}\n\t\t\t\tif (!calledNext) return next(url);\n\t\t\t};\n\t\t};\n\t\tlet next = (_url) => void 0;\n\t\tfor (const provider of this.providers) next = fnNext(provider, next);\n\t\tconst fs = new WrappedProviderFs(next(url), this.logEvent);\n\t\tthis.cachedFs.set(key, fs);\n\t\treturn fs;\n\t}\n\treset() {\n\t\tthis.disposeOfCachedFs();\n\t}\n\tdisposeOfCachedFs() {\n\t\tfor (const [key, fs] of [...this.cachedFs].reverse()) {\n\t\t\ttry {\n\t\t\t\tWrappedProviderFs.disposeOf(fs);\n\t\t\t} catch {}\n\t\t\tthis.cachedFs.delete(key);\n\t\t}\n\t\tthis.cachedFs.clear();\n\t\tthis.revCacheFs.clear();\n\t}\n\tdispose() {\n\t\tthis.disposeOfCachedFs();\n\t\tconst providers = [...this.providers].reverse();\n\t\tfor (const provider of providers) try {\n\t\t\tprovider.dispose?.();\n\t\t} catch {}\n\t}\n\t[Symbol.dispose]() {\n\t\tthis.dispose();\n\t}\n};\nfunction fsPassThroughCore(fs) {\n\tfunction gfs(ur, name) {\n\t\tconst url = urlOrReferenceToUrl(ur);\n\t\tconst f = fs(url);\n\t\tif (!f.hasProvider) throw new VFSErrorUnsupportedRequest(name, url, ur instanceof URL ? void 0 : {\n\t\t\turl: ur.url.toString(),\n\t\t\tencoding: ur.encoding\n\t\t});\n\t\treturn f;\n\t}\n\treturn {\n\t\tproviderInfo: { name: \"default\" },\n\t\thasProvider: true,\n\t\tstat: async (url) => gfs(url, \"stat\").stat(url),\n\t\treadFile: async (url, options) => gfs(url, \"readFile\").readFile(url, options),\n\t\twriteFile: async (file) => gfs(file, \"writeFile\").writeFile(file),\n\t\treadDirectory: async (url) => gfs(url, \"readDirectory\").readDirectory(url).then((entries) => entries.map((e) => new CVfsDirEntry(e))),\n\t\tgetCapabilities: (url) => gfs(url, \"getCapabilities\").getCapabilities(url)\n\t};\n}\nfunction createVirtualFS(cspellIO) {\n\tconst cspell = cspellIO || getDefaultCSpellIO();\n\tconst vfs = new CVirtualFS();\n\tvfs.registerFileSystemProvider(cspellIOToFsProvider(cspell));\n\tvfs.registerFileSystemProvider(new MemFileSystemProvider(\"cspell-vfs:default\", CSPELL_VFS_PROTOCOL));\n\treturn vfs;\n}\nlet defaultVirtualFs = void 0;\nfunction getDefaultVirtualFs() {\n\tif (!defaultVirtualFs) defaultVirtualFs = createVirtualFS();\n\treturn defaultVirtualFs;\n}\n//#endregion\n//#region src/VirtualFS/redirectProvider.ts\nvar RedirectProvider = class {\n\tname;\n\tpublicRoot;\n\tprivateRoot;\n\toptions;\n\tconstructor(name, publicRoot, privateRoot, options = { capabilitiesMask: -1 }) {\n\t\tthis.name = name;\n\t\tthis.publicRoot = publicRoot;\n\t\tthis.privateRoot = privateRoot;\n\t\tthis.options = options;\n\t}\n\tgetFileSystem(url, next) {\n\t\tif (url.protocol !== this.publicRoot.protocol || url.host !== this.publicRoot.host) return;\n\t\tconst privateFs = next(this.privateRoot);\n\t\tif (!privateFs) return;\n\t\tconst shadowFS = next(url);\n\t\treturn remapFS(this.name, privateFs, shadowFS, this.publicRoot, this.privateRoot, this.options);\n\t}\n};\n/**\n* Create a provider that will redirect requests from the publicRoot to the privateRoot.\n* This is useful for creating a virtual file system that is a subset of another file system.\n*\n* Example:\n* ```ts\n* const vfs = createVirtualFS();\n* const provider = createRedirectProvider('test', new URL('file:///public/'), new URL('file:///private/'))\n* vfs.registerFileSystemProvider(provider);\n* // Read the content of `file:///private/file.txt`\n* const file = vfs.fs.readFile(new URL('file:///public/file.txt');\n* ```\n*\n* @param name - name of the provider\n* @param publicRoot - the root of the public file system.\n* @param privateRoot - the root of the private file system.\n* @param options - options for the provider.\n* @returns FileSystemProvider\n*/\nfunction createRedirectProvider(name, publicRoot, privateRoot, options) {\n\tassert(publicRoot.pathname.endsWith(\"/\"), \"publicRoot must end with a slash\");\n\tassert(privateRoot.pathname.endsWith(\"/\"), \"privateRoot must end with a slash\");\n\treturn new RedirectProvider(name, publicRoot, privateRoot, options);\n}\n/**\n* Create a Remapped file system that will redirect requests from the publicRoot to the privateRoot.\n* Requests that do not match the publicRoot will be passed to the shadowFs.\n* @param name - name of the provider\n* @param fs - the private file system\n* @param shadowFs - the file system that is obscured by the redirect.\n* @param publicRoot - the root of the public file system.\n* @param privateRoot - the root of the private file system.\n* @returns ProviderFileSystem\n*/\nfunction remapFS(name, fs, shadowFs, publicRoot, privateRoot, options) {\n\tconst { capabilitiesMask = -1, capabilities } = options;\n\tfunction mapToPrivate(url) {\n\t\tconst relativePath = url.pathname.slice(publicRoot.pathname.length);\n\t\treturn new URL(relativePath, privateRoot);\n\t}\n\tfunction mapToPublic(url) {\n\t\tconst relativePath = url.pathname.slice(privateRoot.pathname.length);\n\t\treturn new URL(relativePath, publicRoot);\n\t}\n\tconst mapFileReferenceToPrivate = (ref) => {\n\t\treturn renameFileReference(ref, mapToPrivate(ref.url));\n\t};\n\tconst mapFileReferenceToPublic = (ref) => {\n\t\treturn renameFileReference(ref, mapToPublic(ref.url));\n\t};\n\tconst mapUrlOrReferenceToPrivate = (urlOrRef) => {\n\t\treturn urlOrRef instanceof URL ? mapToPrivate(urlOrRef) : mapFileReferenceToPrivate(urlOrRef);\n\t};\n\tconst mapFileResourceToPublic = (res) => {\n\t\treturn renameFileResource(res, mapToPublic(res.url));\n\t};\n\tconst mapFileResourceToPrivate = (res) => {\n\t\treturn renameFileResource(res, mapToPrivate(res.url));\n\t};\n\tconst mapDirEntryToPublic = (de) => {\n\t\tconst dir = mapToPublic(de.dir);\n\t\treturn {\n\t\t\t...de,\n\t\t\tdir\n\t\t};\n\t};\n\tconst dispose = () => fs.dispose();\n\treturn fsPassThrough({\n\t\tstat: async (url) => {\n\t\t\tconst url2 = mapUrlOrReferenceToPrivate(url);\n\t\t\treturn await fs.stat(url2);\n\t\t},\n\t\treadFile: async (url, options) => {\n\t\t\tconst url2 = mapUrlOrReferenceToPrivate(url);\n\t\t\treturn mapFileResourceToPublic(await fs.readFile(url2, options));\n\t\t},\n\t\treadDirectory: async (url) => {\n\t\t\tconst url2 = mapToPrivate(url);\n\t\t\treturn (await fs.readDirectory(url2)).map(mapDirEntryToPublic);\n\t\t},\n\t\twriteFile: async (file) => {\n\t\t\tconst fileRef2 = mapFileResourceToPrivate(file);\n\t\t\treturn mapFileReferenceToPublic(await fs.writeFile(fileRef2));\n\t\t},\n\t\tproviderInfo: {\n\t\t\t...fs.providerInfo,\n\t\t\tname\n\t\t},\n\t\tcapabilities: capabilities ?? fs.capabilities & capabilitiesMask,\n\t\tdispose,\n\t\t[Symbol.dispose]: dispose\n\t}, shadowFs, publicRoot);\n}\nfunction fsPassThrough(fs, shadowFs, root) {\n\tfunction gfs(ur, name) {\n\t\tconst url = urlOrReferenceToUrl(ur);\n\t\tconst f = url.href.startsWith(root.href) ? fs : shadowFs;\n\t\tif (!f) throw new VFSErrorUnsupportedRequest(name, url, ur instanceof URL ? void 0 : {\n\t\t\turl: ur.url.toString(),\n\t\t\tencoding: ur.encoding\n\t\t});\n\t\treturn f;\n\t}\n\treturn {\n\t\tget providerInfo() {\n\t\t\treturn fs.providerInfo;\n\t\t},\n\t\tget capabilities() {\n\t\t\treturn fs.capabilities;\n\t\t},\n\t\tstat: async (url) => gfs(url, \"stat\").stat(url),\n\t\treadFile: async (url) => gfs(url, \"readFile\").readFile(url),\n\t\twriteFile: async (file) => gfs(file, \"writeFile\").writeFile(file),\n\t\treadDirectory: async (url) => gfs(url, \"readDirectory\").readDirectory(url),\n\t\tgetCapabilities(url) {\n\t\t\tconst f = gfs(url, \"getCapabilities\");\n\t\t\treturn f.getCapabilities ? f.getCapabilities(url) : fsCapabilities(f.capabilities);\n\t\t},\n\t\tdispose: () => {\n\t\t\tfs.dispose();\n\t\t\tshadowFs?.dispose();\n\t\t},\n\t\t[Symbol.dispose]() {\n\t\t\tthis.dispose();\n\t\t}\n\t};\n}\n//#endregion\nexport { CFileReference, CFileResource, CSPELL_VFS_PROTOCOL, CSpellIONode, FSCapabilityFlags, FileType as VFileType, toArray as asyncIterableToArray, compareStats, createRedirectProvider, fromFileResource as createTextFileResource, createVirtualFS, encodeDataUrl, getDefaultCSpellIO, getDefaultVirtualFs, getStat, getStatSync, isFileURL, isUrlLike, readFileText, readFileTextSync, renameFileReference, renameFileResource, toDataUrl, toFileURL, toURL, urlBasename, urlDirname, urlOrReferenceToUrl, writeToFile, writeToFileIterable, writeToFileIterable as writeToFileIterableP };\n\n//# sourceMappingURL=index.js.map", "class BaseServiceRequest {\n    type;\n    params;\n    __r;\n    constructor(type, params) {\n        this.type = type;\n        this.params = params;\n    }\n}\nexport class ServiceRequestCls extends BaseServiceRequest {\n    constructor(type, params) {\n        super(type, params);\n    }\n}\nexport function createResponse(value, _req) {\n    return { value };\n}\nexport function createResponseFail(_request, error) {\n    return { error };\n}\nexport function isServiceResponseSuccess(res) {\n    return 'value' in res && res.error === undefined;\n}\nexport function isServiceResponseFailure(res) {\n    return res.error !== undefined;\n}\nexport function isInstanceOfFn(constructor) {\n    return (t) => t instanceof constructor;\n}\nexport const __testing__ = {\n    BaseServiceRequest,\n};\n//# sourceMappingURL=request.js.map", "export function createRequestHandler(requestDef, fn, name, description) {\n    return createIsRequestHandler(requestDef.is, fn, name ?? requestDef.type, description);\n}\nexport function createIsRequestHandlerFn(isA, fn) {\n    return (dispatcher) => (next) => (request) => (isA(request) ? fn(request, next, dispatcher) : next(request));\n}\nexport function createIsRequestHandler(isA, fn, name, description) {\n    return {\n        fn: createIsRequestHandlerFn(isA, fn),\n        name,\n        description,\n    };\n}\n//# sourceMappingURL=createRequestHandler.js.map", "import { createRequestHandler } from './createRequestHandler.js';\nimport { ServiceRequestCls } from './request.js';\nexport function requestFactory(requestType) {\n    class RequestClass extends ServiceRequestCls {\n        static type = requestType;\n        constructor(params) {\n            super(requestType, params);\n        }\n        static is(req) {\n            return req instanceof RequestClass && req.type === requestType;\n        }\n        static create(params) {\n            return new RequestClass(params);\n        }\n        static createRequestHandler(fn, name, description) {\n            return createRequestHandler(RequestClass, fn, name, description);\n        }\n        static __request;\n    }\n    return RequestClass;\n}\n//# sourceMappingURL=requestFactory.js.map", "// cspell:ignore ings ning gimuy anrvtbf gimuxy\nexport const regExUpperSOrIng = /([\\p{Lu}\\p{M}]+(?:\\\\?['\u2019])?(?:s|ing|ies|es|ings|ed|ning))(?!\\p{Ll})/gu;\nexport const regExSplitWords = /(\\p{Ll}\\p{M}?)(\\p{Lu})/gu;\nexport const regExSplitWords2 = /(\\p{Lu}\\p{M}?)((\\p{Lu}\\p{M}?)\\p{Ll})/gu;\nexport const regExpCamelCaseWordBreaksWithEnglishSuffix = /(?<=\\p{Ll}\\p{M}?)(?=\\p{Lu})|(?<=\\p{Lu}\\p{M}?)(?=\\p{Lu}\\p{M}?\\p{Ll})(?!\\p{Lu}\\p{M}?(?:s|ing|ies|es|ings|ed|ning)(?!\\p{Ll}))/gu;\nexport const regExpCamelCaseWordBreaks_NOT_USED = /(?<=\\p{Ll}\\p{M}?)(?=\\p{Lu})|(?<=\\p{Lu}\\p{M}?)(?=\\p{Lu}\\p{M}?\\p{Ll})/gu;\nexport const regExpAllPossibleWordBreaks_NOT_USED = /(?<=\\p{Ll}\\p{M}?)(?=\\p{Lu})|(?<=\\p{Lu}\\p{M}?)(?=\\p{Lu}\\p{M}?\\p{Ll})|(?<=\\p{Lu}\\p{M}?\\p{Lu}\\p{M}?)(?=\\p{Ll})|(?<=\\p{L}\\p{M}?)(?=\\P{L})|(?<=\\P{L})(?=\\p{L})/gu;\nexport const regExWords = /\\p{L}\\p{M}?(?:(?:\\\\?['\u2019])?\\p{L}\\p{M}?)*/gu;\n// Words can be made of letters, numbers, period, underscore, dash, plus, and single quote\nexport const regExWordsAndDigits = /[\\p{L}\\w'\u2019`.+-](?:(?:\\\\(?=[']))?[\\p{L}\\p{M}\\w'\u2019`.+-])*/gu;\nexport const regExIgnoreCharacters = /[\\p{sc=Hiragana}\\p{sc=Han}\\p{sc=Katakana}\\u30A0-\\u30FF\\p{sc=Hangul}]/gu;\nexport const regExFirstUpper = /^\\p{Lu}\\p{M}?\\p{Ll}+$/u;\nexport const regExAllUpper = /^(?:\\p{Lu}\\p{M}?)+$/u;\nexport const regExAllLower = /^(?:\\p{Ll}\\p{M}?)+$/u;\nexport const regExPossibleWordBreaks = /[-+_\u2019'`.\\s]/g;\nexport const regExMatchRegExParts = /^\\s*\\/([\\s\\S]*?)\\/([gimuxy]*)\\s*$/;\nexport const regExAccents = /\\p{M}/gu;\nexport const regExEscapeCharacters = /(?<=\\\\)[anrvtbf]/gi;\n/** Matches against leading `'` or `{single letter}'` */\nexport const regExDanglingQuote = /(?<=(?:^|(?!\\p{M})\\P{L})(?:\\p{L}\\p{M}?)?)[']/gu;\n/** Match tailing endings after CAPS words */\nexport const regExTrailingEndings = /(?<=(?:\\p{Lu}\\p{M}?){2})['\u2019]?(?:s|d|ings?|ies|e[ds]?|ning|th|nth)(?!\\p{Ll})/gu;\nexport const regExNumericLiteral = /^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][-+]?\\d+)?$/;\nexport function stringToRegExp(pattern, defaultFlags = 'gimu', forceFlags = 'g') {\n    if (pattern instanceof RegExp) {\n        return pattern;\n    }\n    try {\n        const [, pat, flag] = [\n            ...(pattern.match(regExMatchRegExParts) || ['', pattern.trim(), defaultFlags]),\n            forceFlags,\n        ];\n        if (pat) {\n            const regPattern = flag.includes('x') ? removeVerboseFromRegExp(pat) : pat;\n            // Make sure the flags are unique.\n            const flags = [...new Set(forceFlags + flag)].join('').replaceAll(/[^gimuy]/g, '');\n            const regex = new RegExp(regPattern, flags);\n            return regex;\n        }\n    }\n    catch {\n        /* empty */\n    }\n    return undefined;\n}\nconst SPACES = {\n    ' ': true,\n    '\\n': true,\n    '\\r': true,\n    '\\t': true,\n};\n/**\n * Remove all whitespace and comments from a regexp string. The format follows Pythons Verbose.\n * Note: this is a best attempt. Special cases for comments: `#` and spaces should be proceeded with a `\\`\n *\n * All space must be proceeded by a `\\` or in a character class `[]`\n *\n * @param pattern - the pattern to clean\n */\nfunction removeVerboseFromRegExp(pattern) {\n    function escape(acc) {\n        const char = pattern[acc.idx];\n        if (char !== '\\\\')\n            return undefined;\n        const next = pattern[++acc.idx];\n        acc.idx++;\n        if (next === '#') {\n            acc.result += '#';\n            return acc;\n        }\n        if (!(next in SPACES)) {\n            acc.result += '\\\\' + next;\n            return acc;\n        }\n        acc.result += next;\n        if (next === '\\r' && pattern[acc.idx] === '\\n') {\n            acc.result += '\\n';\n            acc.idx++;\n        }\n        return acc;\n    }\n    function braces(acc) {\n        const char = pattern[acc.idx];\n        if (char !== '[')\n            return undefined;\n        acc.result += char;\n        acc.idx++;\n        let escCount = 0;\n        while (acc.idx < pattern.length) {\n            const char = pattern[acc.idx];\n            acc.result += char;\n            acc.idx++;\n            if (char === ']' && !(escCount & 1))\n                break;\n            escCount = char === '\\\\' ? escCount + 1 : 0;\n        }\n        return acc;\n    }\n    function spaces(acc) {\n        const char = pattern[acc.idx];\n        if (!(char in SPACES))\n            return undefined;\n        acc.idx++;\n        return acc;\n    }\n    function comments(acc) {\n        const char = pattern[acc.idx];\n        if (char !== '#')\n            return undefined;\n        while (acc.idx < pattern.length && pattern[acc.idx] !== '\\n') {\n            acc.idx++;\n        }\n        return acc;\n    }\n    function copy(acc) {\n        const char = pattern[acc.idx++];\n        acc.result += char;\n        return acc;\n    }\n    const reducers = [escape, braces, spaces, comments, copy];\n    const result = { idx: 0, result: '' };\n    while (result.idx < pattern.length) {\n        for (const r of reducers) {\n            if (r(result))\n                break;\n        }\n    }\n    return result.result;\n}\n//# sourceMappingURL=textRegex.js.map", "// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n  if (typeof path !== 'string') {\n    throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n  }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n  var res = '';\n  var lastSegmentLength = 0;\n  var lastSlash = -1;\n  var dots = 0;\n  var code;\n  for (var i = 0; i <= path.length; ++i) {\n    if (i < path.length)\n      code = path.charCodeAt(i);\n    else if (code === 47 /*/*/)\n      break;\n    else\n      code = 47 /*/*/;\n    if (code === 47 /*/*/) {\n      if (lastSlash === i - 1 || dots === 1) {\n        // NOOP\n      } else if (lastSlash !== i - 1 && dots === 2) {\n        if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n          if (res.length > 2) {\n            var lastSlashIndex = res.lastIndexOf('/');\n            if (lastSlashIndex !== res.length - 1) {\n              if (lastSlashIndex === -1) {\n                res = '';\n                lastSegmentLength = 0;\n              } else {\n                res = res.slice(0, lastSlashIndex);\n                lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n              }\n              lastSlash = i;\n              dots = 0;\n              continue;\n            }\n          } else if (res.length === 2 || res.length === 1) {\n            res = '';\n            lastSegmentLength = 0;\n            lastSlash = i;\n            dots = 0;\n            continue;\n          }\n        }\n        if (allowAboveRoot) {\n          if (res.length > 0)\n            res += '/..';\n          else\n            res = '..';\n          lastSegmentLength = 2;\n        }\n      } else {\n        if (res.length > 0)\n          res += '/' + path.slice(lastSlash + 1, i);\n        else\n          res = path.slice(lastSlash + 1, i);\n        lastSegmentLength = i - lastSlash - 1;\n      }\n      lastSlash = i;\n      dots = 0;\n    } else if (code === 46 /*.*/ && dots !== -1) {\n      ++dots;\n    } else {\n      dots = -1;\n    }\n  }\n  return res;\n}\n\nfunction _format(sep, pathObject) {\n  var dir = pathObject.dir || pathObject.root;\n  var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n  if (!dir) {\n    return base;\n  }\n  if (dir === pathObject.root) {\n    return dir + base;\n  }\n  return dir + sep + base;\n}\n\nvar posix = {\n  // path.resolve([from ...], to)\n  resolve: function resolve() {\n    var resolvedPath = '';\n    var resolvedAbsolute = false;\n    var cwd;\n\n    for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n      var path;\n      if (i >= 0)\n        path = arguments[i];\n      else {\n        if (cwd === undefined)\n          cwd = process.cwd();\n        path = cwd;\n      }\n\n      assertPath(path);\n\n      // Skip empty entries\n      if (path.length === 0) {\n        continue;\n      }\n\n      resolvedPath = path + '/' + resolvedPath;\n      resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n    }\n\n    // At this point the path should be resolved to a full absolute path, but\n    // handle relative paths to be safe (might happen when process.cwd() fails)\n\n    // Normalize the path\n    resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n    if (resolvedAbsolute) {\n      if (resolvedPath.length > 0)\n        return '/' + resolvedPath;\n      else\n        return '/';\n    } else if (resolvedPath.length > 0) {\n      return resolvedPath;\n    } else {\n      return '.';\n    }\n  },\n\n  normalize: function normalize(path) {\n    assertPath(path);\n\n    if (path.length === 0) return '.';\n\n    var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n    var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n    // Normalize the path\n    path = normalizeStringPosix(path, !isAbsolute);\n\n    if (path.length === 0 && !isAbsolute) path = '.';\n    if (path.length > 0 && trailingSeparator) path += '/';\n\n    if (isAbsolute) return '/' + path;\n    return path;\n  },\n\n  isAbsolute: function isAbsolute(path) {\n    assertPath(path);\n    return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n  },\n\n  join: function join() {\n    if (arguments.length === 0)\n      return '.';\n    var joined;\n    for (var i = 0; i < arguments.length; ++i) {\n      var arg = arguments[i];\n      assertPath(arg);\n      if (arg.length > 0) {\n        if (joined === undefined)\n          joined = arg;\n        else\n          joined += '/' + arg;\n      }\n    }\n    if (joined === undefined)\n      return '.';\n    return posix.normalize(joined);\n  },\n\n  relative: function relative(from, to) {\n    assertPath(from);\n    assertPath(to);\n\n    if (from === to) return '';\n\n    from = posix.resolve(from);\n    to = posix.resolve(to);\n\n    if (from === to) return '';\n\n    // Trim any leading backslashes\n    var fromStart = 1;\n    for (; fromStart < from.length; ++fromStart) {\n      if (from.charCodeAt(fromStart) !== 47 /*/*/)\n        break;\n    }\n    var fromEnd = from.length;\n    var fromLen = fromEnd - fromStart;\n\n    // Trim any leading backslashes\n    var toStart = 1;\n    for (; toStart < to.length; ++toStart) {\n      if (to.charCodeAt(toStart) !== 47 /*/*/)\n        break;\n    }\n    var toEnd = to.length;\n    var toLen = toEnd - toStart;\n\n    // Compare paths to find the longest common path from root\n    var length = fromLen < toLen ? fromLen : toLen;\n    var lastCommonSep = -1;\n    var i = 0;\n    for (; i <= length; ++i) {\n      if (i === length) {\n        if (toLen > length) {\n          if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n            // We get here if `from` is the exact base path for `to`.\n            // For example: from='/foo/bar'; to='/foo/bar/baz'\n            return to.slice(toStart + i + 1);\n          } else if (i === 0) {\n            // We get here if `from` is the root\n            // For example: from='/'; to='/foo'\n            return to.slice(toStart + i);\n          }\n        } else if (fromLen > length) {\n          if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n            // We get here if `to` is the exact base path for `from`.\n            // For example: from='/foo/bar/baz'; to='/foo/bar'\n            lastCommonSep = i;\n          } else if (i === 0) {\n            // We get here if `to` is the root.\n            // For example: from='/foo'; to='/'\n            lastCommonSep = 0;\n          }\n        }\n        break;\n      }\n      var fromCode = from.charCodeAt(fromStart + i);\n      var toCode = to.charCodeAt(toStart + i);\n      if (fromCode !== toCode)\n        break;\n      else if (fromCode === 47 /*/*/)\n        lastCommonSep = i;\n    }\n\n    var out = '';\n    // Generate the relative path based on the path difference between `to`\n    // and `from`\n    for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n      if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n        if (out.length === 0)\n          out += '..';\n        else\n          out += '/..';\n      }\n    }\n\n    // Lastly, append the rest of the destination (`to`) path that comes after\n    // the common path parts\n    if (out.length > 0)\n      return out + to.slice(toStart + lastCommonSep);\n    else {\n      toStart += lastCommonSep;\n      if (to.charCodeAt(toStart) === 47 /*/*/)\n        ++toStart;\n      return to.slice(toStart);\n    }\n  },\n\n  _makeLong: function _makeLong(path) {\n    return path;\n  },\n\n  dirname: function dirname(path) {\n    assertPath(path);\n    if (path.length === 0) return '.';\n    var code = path.charCodeAt(0);\n    var hasRoot = code === 47 /*/*/;\n    var end = -1;\n    var matchedSlash = true;\n    for (var i = path.length - 1; i >= 1; --i) {\n      code = path.charCodeAt(i);\n      if (code === 47 /*/*/) {\n          if (!matchedSlash) {\n            end = i;\n            break;\n          }\n        } else {\n        // We saw the first non-path separator\n        matchedSlash = false;\n      }\n    }\n\n    if (end === -1) return hasRoot ? '/' : '.';\n    if (hasRoot && end === 1) return '//';\n    return path.slice(0, end);\n  },\n\n  basename: function basename(path, ext) {\n    if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n    assertPath(path);\n\n    var start = 0;\n    var end = -1;\n    var matchedSlash = true;\n    var i;\n\n    if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n      if (ext.length === path.length && ext === path) return '';\n      var extIdx = ext.length - 1;\n      var firstNonSlashEnd = -1;\n      for (i = path.length - 1; i >= 0; --i) {\n        var code = path.charCodeAt(i);\n        if (code === 47 /*/*/) {\n            // If we reached a path separator that was not part of a set of path\n            // separators at the end of the string, stop now\n            if (!matchedSlash) {\n              start = i + 1;\n              break;\n            }\n          } else {\n          if (firstNonSlashEnd === -1) {\n            // We saw the first non-path separator, remember this index in case\n            // we need it if the extension ends up not matching\n            matchedSlash = false;\n            firstNonSlashEnd = i + 1;\n          }\n          if (extIdx >= 0) {\n            // Try to match the explicit extension\n            if (code === ext.charCodeAt(extIdx)) {\n              if (--extIdx === -1) {\n                // We matched the extension, so mark this as the end of our path\n                // component\n                end = i;\n              }\n            } else {\n              // Extension does not match, so our result is the entire path\n              // component\n              extIdx = -1;\n              end = firstNonSlashEnd;\n            }\n          }\n        }\n      }\n\n      if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n      return path.slice(start, end);\n    } else {\n      for (i = path.length - 1; i >= 0; --i) {\n        if (path.charCodeAt(i) === 47 /*/*/) {\n            // If we reached a path separator that was not part of a set of path\n            // separators at the end of the string, stop now\n            if (!matchedSlash) {\n              start = i + 1;\n              break;\n            }\n          } else if (end === -1) {\n          // We saw the first non-path separator, mark this as the end of our\n          // path component\n          matchedSlash = false;\n          end = i + 1;\n        }\n      }\n\n      if (end === -1) return '';\n      return path.slice(start, end);\n    }\n  },\n\n  extname: function extname(path) {\n    assertPath(path);\n    var startDot = -1;\n    var startPart = 0;\n    var end = -1;\n    var matchedSlash = true;\n    // Track the state of characters (if any) we see before our first dot and\n    // after any path separator we find\n    var preDotState = 0;\n    for (var i = path.length - 1; i >= 0; --i) {\n      var code = path.charCodeAt(i);\n      if (code === 47 /*/*/) {\n          // If we reached a path separator that was not part of a set of path\n          // separators at the end of the string, stop now\n          if (!matchedSlash) {\n            startPart = i + 1;\n            break;\n          }\n          continue;\n        }\n      if (end === -1) {\n        // We saw the first non-path separator, mark this as the end of our\n        // extension\n        matchedSlash = false;\n        end = i + 1;\n      }\n      if (code === 46 /*.*/) {\n          // If this is our first dot, mark it as the start of our extension\n          if (startDot === -1)\n            startDot = i;\n          else if (preDotState !== 1)\n            preDotState = 1;\n      } else if (startDot !== -1) {\n        // We saw a non-dot and non-path separator before our dot, so we should\n        // have a good chance at having a non-empty extension\n        preDotState = -1;\n      }\n    }\n\n    if (startDot === -1 || end === -1 ||\n        // We saw a non-dot character immediately before the dot\n        preDotState === 0 ||\n        // The (right-most) trimmed path component is exactly '..'\n        preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n      return '';\n    }\n    return path.slice(startDot, end);\n  },\n\n  format: function format(pathObject) {\n    if (pathObject === null || typeof pathObject !== 'object') {\n      throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n    }\n    return _format('/', pathObject);\n  },\n\n  parse: function parse(path) {\n    assertPath(path);\n\n    var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n    if (path.length === 0) return ret;\n    var code = path.charCodeAt(0);\n    var isAbsolute = code === 47 /*/*/;\n    var start;\n    if (isAbsolute) {\n      ret.root = '/';\n      start = 1;\n    } else {\n      start = 0;\n    }\n    var startDot = -1;\n    var startPart = 0;\n    var end = -1;\n    var matchedSlash = true;\n    var i = path.length - 1;\n\n    // Track the state of characters (if any) we see before our first dot and\n    // after any path separator we find\n    var preDotState = 0;\n\n    // Get non-dir info\n    for (; i >= start; --i) {\n      code = path.charCodeAt(i);\n      if (code === 47 /*/*/) {\n          // If we reached a path separator that was not part of a set of path\n          // separators at the end of the string, stop now\n          if (!matchedSlash) {\n            startPart = i + 1;\n            break;\n          }\n          continue;\n        }\n      if (end === -1) {\n        // We saw the first non-path separator, mark this as the end of our\n        // extension\n        matchedSlash = false;\n        end = i + 1;\n      }\n      if (code === 46 /*.*/) {\n          // If this is our first dot, mark it as the start of our extension\n          if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n        } else if (startDot !== -1) {\n        // We saw a non-dot and non-path separator before our dot, so we should\n        // have a good chance at having a non-empty extension\n        preDotState = -1;\n      }\n    }\n\n    if (startDot === -1 || end === -1 ||\n    // We saw a non-dot character immediately before the dot\n    preDotState === 0 ||\n    // The (right-most) trimmed path component is exactly '..'\n    preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n      if (end !== -1) {\n        if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n      }\n    } else {\n      if (startPart === 0 && isAbsolute) {\n        ret.name = path.slice(1, startDot);\n        ret.base = path.slice(1, end);\n      } else {\n        ret.name = path.slice(startPart, startDot);\n        ret.base = path.slice(startPart, end);\n      }\n      ret.ext = path.slice(startDot, end);\n    }\n\n    if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n    return ret;\n  },\n\n  sep: '/',\n  delimiter: ':',\n  win32: null,\n  posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n", "// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n", "// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};", "__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))", "// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\n\n// !!!!!\n// SEE https://github.com/microsoft/vscode/blob/master/src/vs/base/common/platform.ts\n// !!!!!\n\ndeclare const process: { platform: 'win32' };\ndeclare const navigator: { userAgent: string };\n\nexport let isWindows: boolean;\n\nif (typeof process === 'object') {\n\tisWindows = process.platform === 'win32';\n} else if (typeof navigator === 'object') {\n\tlet userAgent = navigator.userAgent;\n\tisWindows = userAgent.indexOf('Windows') >= 0;\n}\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\n\nimport { CharCode } from './charCode'\nimport { isWindows } from './platform';\n\nconst _schemePattern = /^\\w[\\w\\d+.-]*$/;\nconst _singleSlashStart = /^\\//;\nconst _doubleSlashStart = /^\\/\\//;\n\nfunction _validateUri(ret: URI, _strict?: boolean): void {\n\n\t// scheme, must be set\n\tif (!ret.scheme && _strict) {\n\t\tthrow new Error(`[UriError]: Scheme is missing: {scheme: \"\", authority: \"${ret.authority}\", path: \"${ret.path}\", query: \"${ret.query}\", fragment: \"${ret.fragment}\"}`);\n\t}\n\n\t// scheme, https://tools.ietf.org/html/rfc3986#section-3.1\n\t// ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\n\tif (ret.scheme && !_schemePattern.test(ret.scheme)) {\n\t\tthrow new Error('[UriError]: Scheme contains illegal characters.');\n\t}\n\n\t// path, http://tools.ietf.org/html/rfc3986#section-3.3\n\t// If a URI contains an authority component, then the path component\n\t// must either be empty or begin with a slash (\"/\") character.  If a URI\n\t// does not contain an authority component, then the path cannot begin\n\t// with two slash characters (\"//\").\n\tif (ret.path) {\n\t\tif (ret.authority) {\n\t\t\tif (!_singleSlashStart.test(ret.path)) {\n\t\t\t\tthrow new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character');\n\t\t\t}\n\t\t} else {\n\t\t\tif (_doubleSlashStart.test(ret.path)) {\n\t\t\t\tthrow new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")');\n\t\t\t}\n\t\t}\n\t}\n}\n\n// for a while we allowed uris *without* schemes and this is the migration\n// for them, e.g. an uri without scheme and without strict-mode warns and falls\n// back to the file-scheme. that should cause the least carnage and still be a\n// clear warning\nfunction _schemeFix(scheme: string, _strict: boolean): string {\n\tif (!scheme && !_strict) {\n\t\treturn 'file';\n\t}\n\treturn scheme;\n}\n\n// implements a bit of https://tools.ietf.org/html/rfc3986#section-5\nfunction _referenceResolution(scheme: string, path: string): string {\n\n\t// the slash-character is our 'default base' as we don't\n\t// support constructing URIs relative to other URIs. This\n\t// also means that we alter and potentially break paths.\n\t// see https://tools.ietf.org/html/rfc3986#section-5.1.4\n\tswitch (scheme) {\n\t\tcase 'https':\n\t\tcase 'http':\n\t\tcase 'file':\n\t\t\tif (!path) {\n\t\t\t\tpath = _slash;\n\t\t\t} else if (path[0] !== _slash) {\n\t\t\t\tpath = _slash + path;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn path;\n}\n\nconst _empty = '';\nconst _slash = '/';\nconst _regexp = /^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n\n/**\n * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986.\n * This class is a simple parser which creates the basic component parts\n * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation\n * and encoding.\n *\n * ```txt\n *       foo://example.com:8042/over/there?name=ferret#nose\n *       \\_/   \\______________/\\_________/ \\_________/ \\__/\n *        |           |            |            |        |\n *     scheme     authority       path        query   fragment\n *        |   _____________________|__\n *       / \\ /                        \\\n *       urn:example:animal:ferret:nose\n * ```\n */\nexport class URI implements UriComponents {\n\n\tstatic isUri(thing: any): thing is URI {\n\t\tif (thing instanceof URI) {\n\t\t\treturn true;\n\t\t}\n\t\tif (!thing) {\n\t\t\treturn false;\n\t\t}\n\t\treturn typeof (<URI>thing).authority === 'string'\n\t\t\t&& typeof (<URI>thing).fragment === 'string'\n\t\t\t&& typeof (<URI>thing).path === 'string'\n\t\t\t&& typeof (<URI>thing).query === 'string'\n\t\t\t&& typeof (<URI>thing).scheme === 'string'\n\t\t\t&& typeof (<URI>thing).fsPath === 'string'\n\t\t\t&& typeof (<URI>thing).with === 'function'\n\t\t\t&& typeof (<URI>thing).toString === 'function';\n\t}\n\n\t/**\n\t * scheme is the 'http' part of 'http://www.example.com/some/path?query#fragment'.\n\t * The part before the first colon.\n\t */\n\treadonly scheme: string;\n\n\t/**\n\t * authority is the 'www.example.com' part of 'http://www.example.com/some/path?query#fragment'.\n\t * The part between the first double slashes and the next slash.\n\t */\n\treadonly authority: string;\n\n\t/**\n\t * path is the '/some/path' part of 'http://www.example.com/some/path?query#fragment'.\n\t */\n\treadonly path: string;\n\n\t/**\n\t * query is the 'query' part of 'http://www.example.com/some/path?query#fragment'.\n\t */\n\treadonly query: string;\n\n\t/**\n\t * fragment is the 'fragment' part of 'http://www.example.com/some/path?query#fragment'.\n\t */\n\treadonly fragment: string;\n\n\t/**\n\t * @internal\n\t */\n\tprotected constructor(scheme: string, authority?: string, path?: string, query?: string, fragment?: string, _strict?: boolean);\n\n\t/**\n\t * @internal\n\t */\n\tprotected constructor(components: UriComponents);\n\n\t/**\n\t * @internal\n\t */\n\tprotected constructor(schemeOrData: string | UriComponents, authority?: string, path?: string, query?: string, fragment?: string, _strict: boolean = false) {\n\n\t\tif (typeof schemeOrData === 'object') {\n\t\t\tthis.scheme = schemeOrData.scheme || _empty;\n\t\t\tthis.authority = schemeOrData.authority || _empty;\n\t\t\tthis.path = schemeOrData.path || _empty;\n\t\t\tthis.query = schemeOrData.query || _empty;\n\t\t\tthis.fragment = schemeOrData.fragment || _empty;\n\t\t\t// no validation because it's this URI\n\t\t\t// that creates uri components.\n\t\t\t// _validateUri(this);\n\t\t} else {\n\t\t\tthis.scheme = _schemeFix(schemeOrData, _strict);\n\t\t\tthis.authority = authority || _empty;\n\t\t\tthis.path = _referenceResolution(this.scheme, path || _empty);\n\t\t\tthis.query = query || _empty;\n\t\t\tthis.fragment = fragment || _empty;\n\n\t\t\t_validateUri(this, _strict);\n\t\t}\n\t}\n\n\t// ---- filesystem path -----------------------\n\n\t/**\n\t * Returns a string representing the corresponding file system path of this URI.\n\t * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the\n\t * platform specific path separator.\n\t *\n\t * * Will *not* validate the path for invalid characters and semantics.\n\t * * Will *not* look at the scheme of this URI.\n\t * * The result shall *not* be used for display purposes but for accessing a file on disk.\n\t *\n\t *\n\t * The *difference* to `URI#path` is the use of the platform specific separator and the handling\n\t * of UNC paths. See the below sample of a file-uri with an authority (UNC path).\n\t *\n\t * ```ts\n\t\tconst u = URI.parse('file://server/c$/folder/file.txt')\n\t\tu.authority === 'server'\n\t\tu.path === '/shares/c$/file.txt'\n\t\tu.fsPath === '\\\\server\\c$\\folder\\file.txt'\n\t```\n\t *\n\t * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path,\n\t * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working\n\t * with URIs that represent files on disk (`file` scheme).\n\t */\n\tget fsPath(): string {\n\t\t// if (this.scheme !== 'file') {\n\t\t// \tconsole.warn(`[UriError] calling fsPath with scheme ${this.scheme}`);\n\t\t// }\n\t\treturn uriToFsPath(this, false);\n\t}\n\n\t// ---- modify to new -------------------------\n\n\twith(change: { scheme?: string; authority?: string | null; path?: string | null; query?: string | null; fragment?: string | null }): URI {\n\n\t\tif (!change) {\n\t\t\treturn this;\n\t\t}\n\n\t\tlet { scheme, authority, path, query, fragment } = change;\n\t\tif (scheme === undefined) {\n\t\t\tscheme = this.scheme;\n\t\t} else if (scheme === null) {\n\t\t\tscheme = _empty;\n\t\t}\n\t\tif (authority === undefined) {\n\t\t\tauthority = this.authority;\n\t\t} else if (authority === null) {\n\t\t\tauthority = _empty;\n\t\t}\n\t\tif (path === undefined) {\n\t\t\tpath = this.path;\n\t\t} else if (path === null) {\n\t\t\tpath = _empty;\n\t\t}\n\t\tif (query === undefined) {\n\t\t\tquery = this.query;\n\t\t} else if (query === null) {\n\t\t\tquery = _empty;\n\t\t}\n\t\tif (fragment === undefined) {\n\t\t\tfragment = this.fragment;\n\t\t} else if (fragment === null) {\n\t\t\tfragment = _empty;\n\t\t}\n\n\t\tif (scheme === this.scheme\n\t\t\t&& authority === this.authority\n\t\t\t&& path === this.path\n\t\t\t&& query === this.query\n\t\t\t&& fragment === this.fragment) {\n\n\t\t\treturn this;\n\t\t}\n\n\t\treturn new Uri(scheme, authority, path, query, fragment);\n\t}\n\n\t// ---- parse & validate ------------------------\n\n\t/**\n\t * Creates a new URI from a string, e.g. `http://www.example.com/some/path`,\n\t * `file:///usr/home`, or `scheme:with/path`.\n\t *\n\t * @param value A string which represents an URI (see `URI#toString`).\n\t */\n\tstatic parse(value: string, _strict: boolean = false): URI {\n\t\tconst match = _regexp.exec(value);\n\t\tif (!match) {\n\t\t\treturn new Uri(_empty, _empty, _empty, _empty, _empty);\n\t\t}\n\t\treturn new Uri(\n\t\t\tmatch[2] || _empty,\n\t\t\tpercentDecode(match[4] || _empty),\n\t\t\tpercentDecode(match[5] || _empty),\n\t\t\tpercentDecode(match[7] || _empty),\n\t\t\tpercentDecode(match[9] || _empty),\n\t\t\t_strict\n\t\t);\n\t}\n\n\t/**\n\t * Creates a new URI from a file system path, e.g. `c:\\my\\files`,\n\t * `/usr/home`, or `\\\\server\\share\\some\\path`.\n\t *\n\t * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument\n\t * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as**\n\t * `URI.parse('file://' + path)` because the path might contain characters that are\n\t * interpreted (# and ?). See the following sample:\n\t * ```ts\n\tconst good = URI.file('/coding/c#/project1');\n\tgood.scheme === 'file';\n\tgood.path === '/coding/c#/project1';\n\tgood.fragment === '';\n\tconst bad = URI.parse('file://' + '/coding/c#/project1');\n\tbad.scheme === 'file';\n\tbad.path === '/coding/c'; // path is now broken\n\tbad.fragment === '/project1';\n\t```\n\t *\n\t * @param path A file system path (see `URI#fsPath`)\n\t */\n\tstatic file(path: string): URI {\n\n\t\tlet authority = _empty;\n\n\t\t// normalize to fwd-slashes on windows,\n\t\t// on other systems bwd-slashes are valid\n\t\t// filename character, eg /f\\oo/ba\\r.txt\n\t\tif (isWindows) {\n\t\t\tpath = path.replace(/\\\\/g, _slash);\n\t\t}\n\n\t\t// check for authority as used in UNC shares\n\t\t// or use the path as given\n\t\tif (path[0] === _slash && path[1] === _slash) {\n\t\t\tconst idx = path.indexOf(_slash, 2);\n\t\t\tif (idx === -1) {\n\t\t\t\tauthority = path.substring(2);\n\t\t\t\tpath = _slash;\n\t\t\t} else {\n\t\t\t\tauthority = path.substring(2, idx);\n\t\t\t\tpath = path.substring(idx) || _slash;\n\t\t\t}\n\t\t}\n\n\t\treturn new Uri('file', authority, path, _empty, _empty);\n\t}\n\n\tstatic from(components: { scheme: string; authority?: string; path?: string; query?: string; fragment?: string }): URI {\n\t\tconst result = new Uri(\n\t\t\tcomponents.scheme,\n\t\t\tcomponents.authority,\n\t\t\tcomponents.path,\n\t\t\tcomponents.query,\n\t\t\tcomponents.fragment,\n\t\t);\n\t\t_validateUri(result, true);\n\t\treturn result;\n\t}\n\n\t// ---- printing/externalize ---------------------------\n\n\t/**\n\t * Creates a string representation for this URI. It's guaranteed that calling\n\t * `URI.parse` with the result of this function creates an URI which is equal\n\t * to this URI.\n\t *\n\t * * The result shall *not* be used for display purposes but for externalization or transport.\n\t * * The result will be encoded using the percentage encoding and encoding happens mostly\n\t * ignore the scheme-specific encoding rules.\n\t *\n\t * @param skipEncoding Do not encode the result, default is `false`\n\t */\n\ttoString(skipEncoding: boolean = false): string {\n\t\treturn _asFormatted(this, skipEncoding);\n\t}\n\n\ttoJSON(): UriComponents {\n\t\treturn this;\n\t}\n\n\tstatic revive(data: UriComponents | URI): URI;\n\tstatic revive(data: UriComponents | URI | undefined): URI | undefined;\n\tstatic revive(data: UriComponents | URI | null): URI | null;\n\tstatic revive(data: UriComponents | URI | undefined | null): URI | undefined | null;\n\tstatic revive(data: UriComponents | URI | undefined | null): URI | undefined | null {\n\t\tif (!data) {\n\t\t\treturn <any>data;\n\t\t} else if (data instanceof URI) {\n\t\t\treturn data;\n\t\t} else {\n\t\t\tconst result = new Uri(data);\n\t\t\tresult._formatted = (<UriState>data).external;\n\t\t\tresult._fsPath = (<UriState>data)._sep === _pathSepMarker ? (<UriState>data).fsPath : null;\n\t\t\treturn result;\n\t\t}\n\t}\n}\n\nexport interface UriComponents {\n\tscheme: string;\n\tauthority: string;\n\tpath: string;\n\tquery: string;\n\tfragment: string;\n}\n\ninterface UriState extends UriComponents {\n\t$mid: number;\n\texternal: string;\n\tfsPath: string;\n\t_sep: 1 | undefined;\n}\n\nconst _pathSepMarker = isWindows ? 1 : undefined;\n\n// This class exists so that URI is compatible with vscode.Uri (API).\nclass Uri extends URI {\n\n\t_formatted: string | null = null;\n\t_fsPath: string | null = null;\n\n\toverride get fsPath(): string {\n\t\tif (!this._fsPath) {\n\t\t\tthis._fsPath = uriToFsPath(this, false);\n\t\t}\n\t\treturn this._fsPath;\n\t}\n\n\toverride toString(skipEncoding: boolean = false): string {\n\t\tif (!skipEncoding) {\n\t\t\tif (!this._formatted) {\n\t\t\t\tthis._formatted = _asFormatted(this, false);\n\t\t\t}\n\t\t\treturn this._formatted;\n\t\t} else {\n\t\t\t// we don't cache that\n\t\t\treturn _asFormatted(this, true);\n\t\t}\n\t}\n\n\toverride toJSON(): UriComponents {\n\t\tconst res = <UriState>{\n\t\t\t$mid: 1\n\t\t};\n\t\t// cached state\n\t\tif (this._fsPath) {\n\t\t\tres.fsPath = this._fsPath;\n\t\t\tres._sep = _pathSepMarker;\n\t\t}\n\t\tif (this._formatted) {\n\t\t\tres.external = this._formatted;\n\t\t}\n\t\t// uri components\n\t\tif (this.path) {\n\t\t\tres.path = this.path;\n\t\t}\n\t\tif (this.scheme) {\n\t\t\tres.scheme = this.scheme;\n\t\t}\n\t\tif (this.authority) {\n\t\t\tres.authority = this.authority;\n\t\t}\n\t\tif (this.query) {\n\t\t\tres.query = this.query;\n\t\t}\n\t\tif (this.fragment) {\n\t\t\tres.fragment = this.fragment;\n\t\t}\n\t\treturn res;\n\t}\n}\n\n// reserved characters: https://tools.ietf.org/html/rfc3986#section-2.2\nconst encodeTable: { [ch: number]: string } = {\n\t[CharCode.Colon]: '%3A', // gen-delims\n\t[CharCode.Slash]: '%2F',\n\t[CharCode.QuestionMark]: '%3F',\n\t[CharCode.Hash]: '%23',\n\t[CharCode.OpenSquareBracket]: '%5B',\n\t[CharCode.CloseSquareBracket]: '%5D',\n\t[CharCode.AtSign]: '%40',\n\n\t[CharCode.ExclamationMark]: '%21', // sub-delims\n\t[CharCode.DollarSign]: '%24',\n\t[CharCode.Ampersand]: '%26',\n\t[CharCode.SingleQuote]: '%27',\n\t[CharCode.OpenParen]: '%28',\n\t[CharCode.CloseParen]: '%29',\n\t[CharCode.Asterisk]: '%2A',\n\t[CharCode.Plus]: '%2B',\n\t[CharCode.Comma]: '%2C',\n\t[CharCode.Semicolon]: '%3B',\n\t[CharCode.Equals]: '%3D',\n\n\t[CharCode.Space]: '%20',\n};\n\nfunction encodeURIComponentFast(uriComponent: string, isPath: boolean, isAuthority: boolean): string {\n\tlet res: string | undefined = undefined;\n\tlet nativeEncodePos = -1;\n\n\tfor (let pos = 0; pos < uriComponent.length; pos++) {\n\t\tconst code = uriComponent.charCodeAt(pos);\n\n\t\t// unreserved characters: https://tools.ietf.org/html/rfc3986#section-2.3\n\t\tif (\n\t\t\t(code >= CharCode.a && code <= CharCode.z)\n\t\t\t|| (code >= CharCode.A && code <= CharCode.Z)\n\t\t\t|| (code >= CharCode.Digit0 && code <= CharCode.Digit9)\n\t\t\t|| code === CharCode.Dash\n\t\t\t|| code === CharCode.Period\n\t\t\t|| code === CharCode.Underline\n\t\t\t|| code === CharCode.Tilde\n\t\t\t|| (isPath && code === CharCode.Slash)\n\t\t\t|| (isAuthority && code === CharCode.OpenSquareBracket)\n\t\t\t|| (isAuthority && code === CharCode.CloseSquareBracket)\n\t\t\t|| (isAuthority && code === CharCode.Colon)\n\t\t) {\n\t\t\t// check if we are delaying native encode\n\t\t\tif (nativeEncodePos !== -1) {\n\t\t\t\tres += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\n\t\t\t\tnativeEncodePos = -1;\n\t\t\t}\n\t\t\t// check if we write into a new string (by default we try to return the param)\n\t\t\tif (res !== undefined) {\n\t\t\t\tres += uriComponent.charAt(pos);\n\t\t\t}\n\n\t\t} else {\n\t\t\t// encoding needed, we need to allocate a new string\n\t\t\tif (res === undefined) {\n\t\t\t\tres = uriComponent.substr(0, pos);\n\t\t\t}\n\n\t\t\t// check with default table first\n\t\t\tconst escaped = encodeTable[code];\n\t\t\tif (escaped !== undefined) {\n\n\t\t\t\t// check if we are delaying native encode\n\t\t\t\tif (nativeEncodePos !== -1) {\n\t\t\t\t\tres += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\n\t\t\t\t\tnativeEncodePos = -1;\n\t\t\t\t}\n\n\t\t\t\t// append escaped variant to result\n\t\t\t\tres += escaped;\n\n\t\t\t} else if (nativeEncodePos === -1) {\n\t\t\t\t// use native encode only when needed\n\t\t\t\tnativeEncodePos = pos;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (nativeEncodePos !== -1) {\n\t\tres += encodeURIComponent(uriComponent.substring(nativeEncodePos));\n\t}\n\n\treturn res !== undefined ? res : uriComponent;\n}\n\nfunction encodeURIComponentMinimal(path: string): string {\n\tlet res: string | undefined = undefined;\n\tfor (let pos = 0; pos < path.length; pos++) {\n\t\tconst code = path.charCodeAt(pos);\n\t\tif (code === CharCode.Hash || code === CharCode.QuestionMark) {\n\t\t\tif (res === undefined) {\n\t\t\t\tres = path.substr(0, pos);\n\t\t\t}\n\t\t\tres += encodeTable[code];\n\t\t} else {\n\t\t\tif (res !== undefined) {\n\t\t\t\tres += path[pos];\n\t\t\t}\n\t\t}\n\t}\n\treturn res !== undefined ? res : path;\n}\n\n/**\n * Compute `fsPath` for the given uri\n */\nexport function uriToFsPath(uri: URI, keepDriveLetterCasing: boolean): string {\n\n\tlet value: string;\n\tif (uri.authority && uri.path.length > 1 && uri.scheme === 'file') {\n\t\t// unc path: file://shares/c$/far/boo\n\t\tvalue = `//${uri.authority}${uri.path}`;\n\t} else if (\n\t\turi.path.charCodeAt(0) === CharCode.Slash\n\t\t&& (uri.path.charCodeAt(1) >= CharCode.A && uri.path.charCodeAt(1) <= CharCode.Z || uri.path.charCodeAt(1) >= CharCode.a && uri.path.charCodeAt(1) <= CharCode.z)\n\t\t&& uri.path.charCodeAt(2) === CharCode.Colon\n\t) {\n\t\tif (!keepDriveLetterCasing) {\n\t\t\t// windows drive letter: file:///c:/far/boo\n\t\t\tvalue = uri.path[1].toLowerCase() + uri.path.substr(2);\n\t\t} else {\n\t\t\tvalue = uri.path.substr(1);\n\t\t}\n\t} else {\n\t\t// other path\n\t\tvalue = uri.path;\n\t}\n\tif (isWindows) {\n\t\tvalue = value.replace(/\\//g, '\\\\');\n\t}\n\treturn value;\n}\n\n/**\n * Create the external version of a uri\n */\nfunction _asFormatted(uri: URI, skipEncoding: boolean): string {\n\n\tconst encoder = !skipEncoding\n\t\t? encodeURIComponentFast\n\t\t: encodeURIComponentMinimal;\n\n\tlet res = '';\n\tlet { scheme, authority, path, query, fragment } = uri;\n\tif (scheme) {\n\t\tres += scheme;\n\t\tres += ':';\n\t}\n\tif (authority || scheme === 'file') {\n\t\tres += _slash;\n\t\tres += _slash;\n\t}\n\tif (authority) {\n\t\tlet idx = authority.indexOf('@');\n\t\tif (idx !== -1) {\n\t\t\t// <user>@<auth>\n\t\t\tconst userinfo = authority.substr(0, idx);\n\t\t\tauthority = authority.substr(idx + 1);\n\t\t\tidx = userinfo.lastIndexOf(':');\n\t\t\tif (idx === -1) {\n\t\t\t\tres += encoder(userinfo, false, false);\n\t\t\t} else {\n\t\t\t\t// <user>:<pass>@<auth>\n\t\t\t\tres += encoder(userinfo.substr(0, idx), false, false);\n\t\t\t\tres += ':';\n\t\t\t\tres += encoder(userinfo.substr(idx + 1), false, true);\n\t\t\t}\n\t\t\tres += '@';\n\t\t}\n\t\tauthority = authority.toLowerCase();\n\t\tidx = authority.lastIndexOf(':');\n\t\tif (idx === -1) {\n\t\t\tres += encoder(authority, false, true);\n\t\t} else {\n\t\t\t// <auth>:<port>\n\t\t\tres += encoder(authority.substr(0, idx), false, true);\n\t\t\tres += authority.substr(idx);\n\t\t}\n\t}\n\tif (path) {\n\t\t// lower-case windows drive letters in /C:/fff or C:/fff\n\t\tif (path.length >= 3 && path.charCodeAt(0) === CharCode.Slash && path.charCodeAt(2) === CharCode.Colon) {\n\t\t\tconst code = path.charCodeAt(1);\n\t\t\tif (code >= CharCode.A && code <= CharCode.Z) {\n\t\t\t\tpath = `/${String.fromCharCode(code + 32)}:${path.substr(3)}`; // \"/c:\".length === 3\n\t\t\t}\n\t\t} else if (path.length >= 2 && path.charCodeAt(1) === CharCode.Colon) {\n\t\t\tconst code = path.charCodeAt(0);\n\t\t\tif (code >= CharCode.A && code <= CharCode.Z) {\n\t\t\t\tpath = `${String.fromCharCode(code + 32)}:${path.substr(2)}`; // \"/c:\".length === 3\n\t\t\t}\n\t\t}\n\t\t// encode the rest of the path\n\t\tres += encoder(path, true, false);\n\t}\n\tif (query) {\n\t\tres += '?';\n\t\tres += encoder(query, false, false);\n\t}\n\tif (fragment) {\n\t\tres += '#';\n\t\tres += !skipEncoding ? encodeURIComponentFast(fragment, false, false) : fragment;\n\t}\n\treturn res;\n}\n\n// --- decode\n\nfunction decodeURIComponentGraceful(str: string): string {\n\ttry {\n\t\treturn decodeURIComponent(str);\n\t} catch {\n\t\tif (str.length > 3) {\n\t\t\treturn str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3));\n\t\t} else {\n\t\t\treturn str;\n\t\t}\n\t}\n}\n\nconst _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g;\n\nfunction percentDecode(str: string): string {\n\tif (!str.match(_rEncodedAsHex)) {\n\t\treturn str;\n\t}\n\treturn str.replace(_rEncodedAsHex, (match) => decodeURIComponentGraceful(match));\n}\n\n/**\n * Mapped-type that replaces all occurrences of URI with UriComponents\n */\nexport type UriDto<T> = { [K in keyof T]: T[K] extends URI\n\t? UriComponents\n\t: UriDto<T[K]> };\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n'use strict';\n\nimport { CharCode } from './charCode';\nimport { URI } from './uri';\nimport * as nodePath from 'path';\n\nconst posixPath = nodePath.posix || nodePath;\nconst slash = '/';\n\nexport namespace Utils {\n\n    /**\n     * Joins one or more input paths to the path of URI. \n     * '/' is used as the directory separation character. \n     * \n     * The resolved path will be normalized. That means:\n     *  - all '..' and '.' segments are resolved.\n     *  - multiple, sequential occurences of '/' are replaced by a single instance of '/'.\n     *  - trailing separators are preserved.\n     * \n     * @param uri The input URI.\n     * @param paths The paths to be joined with the path of URI.\n     * @returns A URI with the joined path. All other properties of the URI (scheme, authority, query, fragments, ...) will be taken from the input URI.\n     */\n    export function joinPath(uri: URI, ...paths: string[]): URI {\n        return uri.with({ path: posixPath.join(uri.path, ...paths) });\n    }\n\n\n    /**\n     * Resolves one or more paths against the path of a URI. \n     * '/' is used as the directory separation character. \n     * \n     * The resolved path will be normalized. That means:\n     *  - all '..' and '.' segments are resolved. \n     *  - multiple, sequential occurences of '/' are replaced by a single instance of '/'.\n     *  - trailing separators are removed.\n     * \n     * @param uri The input URI.\n     * @param paths The paths to resolve against the path of URI.\n     * @returns A URI with the resolved path. All other properties of the URI (scheme, authority, query, fragments, ...) will be taken from the input URI.\n     */\n    export function resolvePath(uri: URI, ...paths: string[]): URI {\n        let path = uri.path; \n        let slashAdded = false;\n        if (path[0] !== slash) {\n            path = slash + path; // make the path abstract: for posixPath.resolve the first segments has to be absolute or cwd is used.\n            slashAdded = true;\n        }\n        let resolvedPath = posixPath.resolve(path, ...paths);\n        if (slashAdded && resolvedPath[0] === slash && !uri.authority) {\n            resolvedPath = resolvedPath.substring(1);\n        }\n        return uri.with({ path: resolvedPath });\n    }\n\n    /**\n     * Returns a URI where the path is the directory name of the input uri, similar to the Unix dirname command. \n     * In the path, '/' is recognized as the directory separation character. Trailing directory separators are ignored.\n     * The orignal URI is returned if the URIs path is empty or does not contain any path segments.\n     * \n     * @param uri The input URI.\n     * @return The last segment of the URIs path.\n     */\n    export function dirname(uri: URI): URI {\n        if (uri.path.length === 0 || uri.path === slash) {\n            return uri;\n        }\n        let path = posixPath.dirname(uri.path);\n        if (path.length === 1 && path.charCodeAt(0) === CharCode.Period) {\n            path = '';\n        }\n        return uri.with({ path });\n    }\n\n    /**\n     * Returns the last segment of the path of a URI, similar to the Unix basename command. \n     * In the path, '/' is recognized as the directory separation character. Trailing directory separators are ignored.\n     * The empty string is returned if the URIs path is empty or does not contain any path segments.\n     * \n     * @param uri The input URI.\n     * @return The base name of the URIs path.\n     */\n    export function basename(uri: URI): string {\n        return posixPath.basename(uri.path);\n    }\n\n    /**\n     * Returns the extension name of the path of a URI, similar to the Unix extname command. \n     * In the path, '/' is recognized as the directory separation character. Trailing directory separators are ignored.\n     * The empty string is returned if the URIs path is empty or does not contain any path segments.\n     * \n     * @param uri The input URI.\n     * @return The extension name of the URIs path.\n     */\n    export function extname(uri: URI): string {\n        return posixPath.extname(uri.path);\n    }\n}", "import assert from 'node:assert';\nimport { toFileDirURL, toFilePathOrHref, toFileURL, toURL } from '@cspell/url';\nimport { isUrlLike } from 'cspell-io';\nimport { URI, Utils } from 'vscode-uri';\nconst STDIN_PROTOCOL = 'stdin:';\nexport function toUri(uriOrFile) {\n    if (UriImpl.isUri(uriOrFile))\n        return uriOrFile;\n    if (URI.isUri(uriOrFile))\n        return UriImpl.from(uriOrFile);\n    if (uriOrFile instanceof URL)\n        return UriImpl.parse(uriOrFile.toString());\n    if (isHRef(uriOrFile))\n        return UriImpl.parse(uriOrFile.href);\n    if (isUri(uriOrFile))\n        return UriImpl.from(uriOrFile);\n    if (isUrlLike(uriOrFile))\n        return UriImpl.parse(uriOrFile);\n    return UriImpl.file(normalizeDriveLetter(uriOrFile));\n}\nconst isWindows = process.platform === 'win32';\nconst hasDriveLetter = /^[a-zA-Z]:[\\\\/]/;\nconst rootUrl = toFileDirURL('/');\nexport function uriToFilePath(uri) {\n    let url = documentUriToURL(uri);\n    url = url.protocol === 'stdin:' ? new URL(url.pathname, rootUrl) : url;\n    return toFilePathOrHref(url);\n}\nexport function fromFilePath(file) {\n    return UriImpl.file(file);\n}\nexport function fromStdinFilePath(path) {\n    return UriImpl.stdin(path);\n}\nexport const file = fromFilePath;\nexport function parse(uri) {\n    return UriImpl.parse(uri);\n}\nexport function normalizeDriveLetter(path) {\n    return hasDriveLetter.test(path) ? path[0].toUpperCase() + path.slice(1) : path;\n}\nfunction isHRef(url) {\n    return (!!url && typeof url === 'object' && typeof url.href === 'string') || false;\n}\nexport function isUri(uri) {\n    if (!uri || typeof uri !== 'object')\n        return false;\n    if (UriImpl.isUri(uri))\n        return true;\n    if (URI.isUri(uri))\n        return true;\n    const u = uri;\n    return typeof u.path === 'string' && typeof u.scheme === 'string';\n}\nexport function basename(uri) {\n    return Utils.basename(URI.from(uri));\n}\nexport function dirname(uri) {\n    return UriImpl.from(Utils.dirname(URI.from(uri)));\n}\nexport function extname(uri) {\n    return Utils.extname(URI.from(uri));\n}\nexport function joinPath(uri, ...paths) {\n    return UriImpl.from(Utils.joinPath(URI.from(uri), ...paths));\n}\nexport function resolvePath(uri, ...paths) {\n    return UriImpl.from(Utils.resolvePath(URI.from(uri), ...paths));\n}\nexport function uriFrom(uri, ...parts) {\n    return UriImpl.from(uri, ...parts);\n}\nconst keys = ['scheme', 'authority', 'path', 'query', 'fragment'];\nclass UriImpl extends URI {\n    constructor(uri) {\n        super(uri.scheme, uri.authority, uri.path, uri.query, uri.fragment);\n    }\n    toString() {\n        // if (this.scheme !== 'stdin') return super.toString(true);\n        const path = encodeURI(this.path || '').replaceAll(/[#?]/g, (c) => `%${(c.codePointAt(0) || 0).toString(16)}`);\n        const base = `${this.scheme}://${this.authority || ''}${path}`;\n        const query = (this.query && `?${this.query}`) || '';\n        const fragment = (this.fragment && `#${this.fragment}`) || '';\n        const url = base + query + fragment;\n        return url;\n    }\n    toJSON() {\n        const { scheme, authority, path, query, fragment } = this;\n        return { scheme, authority, path, query, fragment };\n    }\n    with(change) {\n        const { scheme, authority, path, query, fragment } = this;\n        const u = { scheme, authority, path, query, fragment };\n        for (const key of keys) {\n            if (change[key] && typeof change[key] === 'string') {\n                u[key] = change[key];\n            }\n        }\n        return new UriImpl(u);\n    }\n    static isUri(uri) {\n        return uri instanceof UriImpl;\n    }\n    static from(uri, ...parts) {\n        let u = new UriImpl(uri);\n        for (const part of parts) {\n            u = u.with(part);\n        }\n        return u;\n    }\n    static parse(uri) {\n        if (uri.startsWith(STDIN_PROTOCOL)) {\n            return UriImpl.from(parseStdinUri(uri));\n        }\n        const u = URI.parse(uri);\n        return UriImpl.from(u);\n    }\n    static file(filename) {\n        if (!isWindows && hasDriveLetter.test(filename)) {\n            filename = '/' + filename.replaceAll('\\\\', '/');\n        }\n        const url = toFileURL(filename);\n        return UriImpl.parse(url.href);\n    }\n    static stdin(filePath = '') {\n        return UriImpl.from(UriImpl.file(filePath), { scheme: 'stdin' });\n    }\n}\nfunction normalizeFilePath(path) {\n    return normalizeDriveLetter(path.replaceAll('\\\\', '/'));\n}\nfunction parseStdinUri(uri) {\n    assert(uri.startsWith(STDIN_PROTOCOL));\n    const idxSlash = STDIN_PROTOCOL.length;\n    let idxSlashEnd = idxSlash;\n    for (; uri[idxSlashEnd] === '/'; ++idxSlashEnd) {\n        // empty\n    }\n    const pathStart = idxSlashEnd;\n    const iH = uri.indexOf('#', pathStart);\n    const idxHash = iH > 0 ? iH : uri.length;\n    const iQ = uri.indexOf('?', pathStart);\n    const idxQ = iQ > 0 && iQ < idxHash ? iQ : idxHash;\n    const pathEnd = idxQ;\n    const path = uri.slice(pathStart, pathEnd);\n    const query = idxQ < idxHash ? uri.slice(idxQ + 1, idxHash) : '';\n    const hash = uri.slice(idxHash + 1);\n    const pathPrefix = idxSlashEnd - idxSlash > 2 ? '/' : '';\n    return {\n        scheme: 'stdin',\n        path: pathPrefix + normalizeFilePath(decodeURI(path)),\n        query: decodeURI(query),\n        fragment: decodeURI(hash),\n    };\n}\nexport function documentUriToURL(uri) {\n    return toURL(uri instanceof URL ? uri : typeof uri === 'string' ? toFileURL(uri) : new URL(uriFrom(uri).toString()));\n}\nexport const __testing__ = {\n    UriImpl,\n    normalizeFilePath,\n};\n//# sourceMappingURL=Uri.js.map", "/**\n * Search for an item in a sorted array.\n * The value returned is either the position of the item or where it should be inserted.\n */\nexport function binarySearch(arr, item, leftOffset, rightOffset) {\n    let left = Math.max(leftOffset ?? 0, 0);\n    let right = Math.min(rightOffset ?? arr.length, arr.length);\n    while (left < right) {\n        const pos = (left + right) >> 1;\n        if (arr[pos] < item) {\n            left = pos + 1;\n        }\n        else {\n            right = pos;\n        }\n    }\n    return left;\n}\n//# sourceMappingURL=search.js.map", "import { opConcatMap, opMap, pipe } from '@cspell/cspell-pipe/sync';\nimport { binarySearch } from './search.js';\nimport { regExAccents, regExAllLower, regExAllUpper, regExFirstUpper, regExIgnoreCharacters, regExpCamelCaseWordBreaksWithEnglishSuffix, regExWords, regExWordsAndDigits, } from './textRegex.js';\nimport { toUri } from './Uri.js';\nimport { scanMap } from './util.js';\nexport { stringToRegExp } from './textRegex.js';\n// CSpell:ignore ings ning gimuy tsmerge\nexport function splitCamelCaseWordWithOffset(wo) {\n    return splitCamelCaseWord(wo.text).map(scanMap((last, text) => ({ text, offset: last.offset + last.text.length }), {\n        text: '',\n        offset: wo.offset,\n    }));\n}\n/**\n * Split camelCase words into an array of strings.\n */\nexport function splitCamelCaseWord(word) {\n    return splitWord(word, regExpCamelCaseWordBreaksWithEnglishSuffix);\n}\nexport function splitWordWithOffset(wo, regExpWordBreaks) {\n    return splitWord(wo.text, regExpWordBreaks).map(scanMap((last, text) => ({ text, offset: last.offset + last.text.length }), {\n        text: '',\n        offset: wo.offset,\n    }));\n}\n/**\n * Split camelCase words into an array of strings.\n */\nexport function splitWord(word, regExpWordBreaks) {\n    return word.split(new RegExp(regExpWordBreaks));\n}\n/**\n * This function lets you iterate over regular expression matches.\n */\nexport function match(reg, text) {\n    if (!text)\n        return [];\n    reg = reg.global ? new RegExp(reg) : new RegExp(reg.source, reg.flags + 'g');\n    return text.matchAll(reg);\n}\nexport function matchStringToTextOffset(reg, text) {\n    return matchToTextOffset(reg, { text, offset: 0 });\n}\nexport function matchToTextOffset(reg, t) {\n    const text = t.text;\n    const offset = t.offset;\n    // return opMap((m: RegExpExecArray) => ({ text: m[0], offset: offset + m.index }))(match(reg, text));\n    return pipe(match(reg, text), opMap((m) => ({ text: m[0], offset: offset + m.index })));\n}\nexport function* extractLinesOfText(text) {\n    let i = 0;\n    for (let j = text.indexOf('\\n', i); j >= 0; j = text.indexOf('\\n', i)) {\n        const end = j + 1;\n        yield { text: text.slice(i, end), offset: i };\n        i = end;\n    }\n    yield { text: text.slice(i, text.length), offset: i };\n}\n/**\n * Extract out whole words from a string of text.\n */\nexport function extractWordsFromText(text) {\n    return extractWordsFromTextOffset(textOffset(text));\n}\n/**\n * Extract out whole words from a string of text.\n */\nexport function extractWordsFromTextOffset(text) {\n    const reg = new RegExp(regExWords);\n    return matchToTextOffset(reg, cleanTextOffset(text));\n}\n/**\n * Remove Hiragana, Han, Katakana, Hangul characters from the text.\n * @param text\n * @returns the text with the characters removed.\n */\nexport function cleanText(text) {\n    regExIgnoreCharacters.lastIndex = 0;\n    if (!regExIgnoreCharacters.test(text))\n        return text;\n    regExIgnoreCharacters.lastIndex = 0;\n    text = text.replace(regExIgnoreCharacters, (match) => ' '.repeat(match.length));\n    return text;\n}\nexport function cleanTextOffset(text) {\n    // Do not make a new object if the text is already clean.\n    regExIgnoreCharacters.lastIndex = 0;\n    if (!regExIgnoreCharacters.test(text.text))\n        return text;\n    return {\n        text: cleanText(text.text),\n        offset: text.offset,\n    };\n}\n/**\n * Extract out whole words and words containing numbers from a string of text.\n */\nexport function extractPossibleWordsFromTextOffset(text) {\n    const reg = new RegExp(regExWordsAndDigits);\n    return matchToTextOffset(reg, text);\n}\nexport function extractWordsFromCode(text) {\n    return extractWordsFromCodeTextOffset(textOffset(text));\n}\nexport function extractWordsFromCodeTextOffset(textOffset) {\n    return pipe(extractWordsFromTextOffset(textOffset), opConcatMap(splitCamelCaseWordWithOffset));\n}\nexport function isUpperCase(word) {\n    return regExAllUpper.test(word);\n}\nexport function isLowerCase(word) {\n    return regExAllLower.test(word);\n}\nexport function isFirstCharacterUpper(word) {\n    return isUpperCase(word.slice(0, 1));\n}\nexport function isFirstCharacterLower(word) {\n    return isLowerCase(word.slice(0, 1));\n}\nexport function ucFirst(word) {\n    return word.slice(0, 1).toUpperCase() + word.slice(1);\n}\nexport function lcFirst(word) {\n    return word.slice(0, 1).toLowerCase() + word.slice(1);\n}\nexport function snakeToCamel(word) {\n    return word.split('_').map(ucFirst).join('');\n}\nexport function camelToSnake(word) {\n    return splitCamelCaseWord(word).join('_').toLowerCase();\n}\nexport function matchCase(example, word) {\n    if (regExFirstUpper.test(example)) {\n        return word.slice(0, 1).toUpperCase() + word.slice(1).toLowerCase();\n    }\n    if (regExAllLower.test(example)) {\n        return word.toLowerCase();\n    }\n    if (regExAllUpper.test(example)) {\n        return word.toUpperCase();\n    }\n    if (isFirstCharacterUpper(example)) {\n        return ucFirst(word);\n    }\n    if (isFirstCharacterLower(example)) {\n        return lcFirst(word);\n    }\n    return word;\n}\nexport function textOffset(text, offset = 0) {\n    return { text, offset };\n}\nexport function extractText(textOffset, startPos, endPos) {\n    const { text, offset: orig } = textOffset;\n    const a = Math.max(startPos - orig, 0);\n    const b = Math.max(endPos - orig, 0);\n    return text.slice(a, b);\n}\nexport function calculateTextDocumentOffsets(uri, doc, wordOffsets) {\n    const lines = [\n        -1,\n        ...pipe(match(/\\n/g, doc), opMap((a) => a.index)),\n        doc.length,\n    ];\n    let lastRow = -1;\n    let lastOffset = doc.length + 1;\n    let lastLineRow = -1;\n    let lastLine;\n    function findRowCol(offset) {\n        const row = binarySearch(lines, offset, offset >= lastOffset ? lastRow : undefined);\n        const col = offset - lines[Math.max(0, row - 1)];\n        lastOffset = offset;\n        lastRow = row;\n        return [row, col];\n    }\n    function extractLine(row) {\n        const offset = lines[row - 1] + 1;\n        const text = doc.slice(offset, lines[row] + 1);\n        return { text, offset };\n    }\n    function calcLine(row) {\n        const last = lastLineRow === row ? lastLine : undefined;\n        lastLineRow = row;\n        const r = last ?? extractLine(row);\n        lastLine = r;\n        return r;\n    }\n    const _uri = toUri(uri).toString();\n    return wordOffsets.map((wo) => {\n        const [row, col] = findRowCol(wo.offset);\n        return { ...wo, row, col, doc, uri: _uri, line: calcLine(row) };\n    });\n}\nexport function removeAccents(text) {\n    regExAccents.lastIndex = 0;\n    return text.normalize('NFD').replace(regExAccents, '');\n}\nexport const __testing__ = {\n    regExWords: regExWords,\n    regExWordsAndDigits: regExWordsAndDigits,\n};\n//# sourceMappingURL=text.js.map", "export { calculateTextDocumentOffsets, camelToSnake, cleanText, cleanTextOffset, extractLinesOfText, extractPossibleWordsFromTextOffset, extractText, extractWordsFromCode, extractWordsFromCodeTextOffset, extractWordsFromText, extractWordsFromTextOffset, isFirstCharacterLower, isFirstCharacterUpper, isLowerCase, isUpperCase, lcFirst, match, matchCase, matchStringToTextOffset, matchToTextOffset, removeAccents, snakeToCamel, splitCamelCaseWord, splitCamelCaseWordWithOffset, stringToRegExp, textOffset, ucFirst, } from './text.js';\n//# sourceMappingURL=textApi.js.map", "/**\n * @packageDocumentation\n * Synchronous cspell-backed spellchecking for projected comment prose.\n */\n\nimport type { UnknownRecord } from \"type-fest\";\n\nimport {\n    createIgnoreWordsDictionary,\n    createInlineSpellingDictionary,\n    createSpellingDictionary,\n    createCollection as createSpellingDictionaryCollection,\n    createSpellingDictionaryFromTrieFile,\n    type SpellingDictionary,\n    type SpellingDictionaryCollection,\n    type SpellingDictionaryOptions,\n    type SuggestOptions,\n} from \"cspell-dictionary\";\nimport {\n    type DictionaryDefinition,\n    type DictionaryDefinitionInline,\n    Text,\n} from \"cspell-lib\";\nimport JSON5 from \"json5\";\nimport { readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport * as path from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { gunzipSync } from \"node:zlib\";\nimport {\n    arrayJoin,\n    isDefined,\n    isEmpty,\n    objectHasIn,\n    setHas,\n    stringSplit,\n} from \"ts-extras\";\nimport { parse as parseYaml } from \"yaml\";\n\n/** Resource references imported by default for comment spellchecking. */\nexport const defaultSpellcheckCspellConfigImports = [\n    \"@cspell/dict-bash/cspell-ext.json\",\n    \"@cspell/dict-companies/cspell-ext.json\",\n    \"@cspell/dict-css/cspell-ext.json\",\n    \"@cspell/dict-en-au/cspell-ext.json\",\n    \"@cspell/dict-en-ca/cspell-ext.json\",\n    \"@cspell/dict-en-common-misspellings/cspell-ext.json\",\n    \"@cspell/dict-en-gb-ise/cspell-ext.json\",\n    \"@cspell/dict-en-gb-legacy/cspell-ext.json\",\n    \"@cspell/dict-en-gb/cspell-ext.json\",\n    \"@cspell/dict-en_us/cspell-ext.json\",\n    \"@cspell/dict-filetypes/cspell-ext.json\",\n    \"@cspell/dict-git/cspell-ext.json\",\n    \"@cspell/dict-html/cspell-ext.json\",\n    \"@cspell/dict-makefile/cspell-ext.json\",\n    \"@cspell/dict-mime-types/cspell-ext.json\",\n    \"@cspell/dict-mnemonics/cspell-ext.json\",\n    \"@cspell/dict-node/cspell-ext.json\",\n    \"@cspell/dict-npm/cspell-ext.json\",\n    \"@cspell/dict-people-names/cspell-ext.json\",\n    \"@cspell/dict-powershell/cspell-ext.json\",\n    \"@cspell/dict-public-licenses/cspell-ext.json\",\n    \"@cspell/dict-scientific-terms-us/cspell-ext.json\",\n    \"@cspell/dict-shell/cspell-ext.json\",\n    \"@cspell/dict-software-terms/cspell-ext.json\",\n    \"@cspell/dict-sql/cspell-ext.json\",\n    \"@cspell/dict-typescript/cspell-ext.json\",\n    \"@cspell/dict-win32/cspell-ext.json\",\n] as const;\n\n/** Result returned when constructing one spellcheck dictionary collection. */\nexport type SpellcheckCspellDictionaryCollectionResult = Readonly<{\n    collection: SpellingDictionaryCollection;\n    errors: readonly SpellcheckCspellResourceError[];\n}>;\n\n/** Options used to build one cspell-backed dictionary collection. */\nexport type SpellcheckCspellDictionaryOptions = Readonly<{\n    configImports?: readonly string[];\n    cwd: string;\n    ignoreWordFiles?: readonly string[];\n    ignoreWords?: readonly string[];\n    locale?: string;\n    useDefaultDictionaries?: boolean;\n}>;\n\n/** One issue produced by the synchronous cspell spellchecker. */\nexport type SpellcheckCspellIssue = Readonly<{\n    endOffset: number;\n    reason: string;\n    startOffset: number;\n}>;\n\n/** One cspell resource load problem. */\nexport type SpellcheckCspellResourceError = Readonly<{\n    message: string;\n    resource: string;\n}>;\n\n/** Options that control one projected-text spellcheck run. */\nexport type SpellcheckProjectedTextOptions = Readonly<{\n    ignoreDigits: boolean;\n    ignoreLiteral: boolean;\n    maxSuggestions: number;\n    normalizeApostrophes: boolean;\n}>;\n\n/** Cached base dictionary collection built from imported cspell configs. */\ntype CachedBaseDictionaryCollection = Readonly<{\n    collection: SpellingDictionaryCollection;\n    errors: readonly SpellcheckCspellResourceError[];\n}>;\n\n/** Internal subset of cspell config data that this rule understands. */\ntype CspellConfigResource = Readonly<UnknownRecord>;\n\n/** Internal shape for language-specific cspell config fragments. */\ntype CspellLanguageSetting = Readonly<UnknownRecord>;\n\n/** Dictionary definition paired with the directory it resolves relative to. */\ntype DictionaryDefinitionEntry = Readonly<{\n    baseDirectoryPath: string;\n    definition: DictionaryDefinition;\n}>;\n\n/** Mutable aggregate built while reading cspell config imports. */\ninterface MutableCollectedCspellConfig {\n    definitionsByName: Map<string, DictionaryDefinitionEntry>;\n    enabledDictionaryNames: Set<string>;\n    errors: SpellcheckCspellResourceError[];\n    flagWords: Set<string>;\n    ignoreWords: Set<string>;\n    suggestWords: Set<string>;\n    words: Set<string>;\n}\n\n/** Default locale used when selecting locale-aware cspell settings. */\nconst defaultSpellcheckLocale = \"en-US\";\n\n/** Default language id used when selecting language-aware cspell settings. */\nconst defaultSpellcheckLanguageId = \"markdown\";\n\n/** Default minimum word length applied by cspell validation. */\nconst defaultMinWordLength = 4;\n\n/** Default suggestion timeout used by cspell. */\nconst defaultSuggestionTimeoutMs = 500;\n\n/** Cached base collections reused across files with identical cspell imports. */\nconst cachedBaseDictionaryCollections = new Map<\n    string,\n    CachedBaseDictionaryCollection\n>();\n\n/** Check whether a dynamic value is a non-null object. */\nconst isRecord = (value: unknown): value is Readonly<UnknownRecord> =>\n    typeof value === \"object\" && value !== null;\n\n/** Check whether a dynamic value is a string array. */\nconst isStringArray = (value: unknown): value is readonly string[] =>\n    Array.isArray(value) && value.every((item) => typeof item === \"string\");\n\n/** Preserve an unknown boundary for values returned by loosely typed parsers. */\nconst toUnknown = (value: unknown): unknown => value;\n\n/** Parse JSON5 text and immediately treat the result as an unknown boundary. */\nfunction parseJson5Unknown(fileContent: string): unknown {\n    return JSON5.parse(fileContent);\n}\n\n/** Check whether a dynamic value is a usable dictionary definition. */\nconst isDictionaryDefinition = (\n    value: unknown\n): value is Readonly<DictionaryDefinition> =>\n    isRecord(value) && typeof Reflect.get(value, \"name\") === \"string\";\n\n/** Read one optional string field from a loose config record. */\nconst getOptionalStringField = (\n    record: Readonly<UnknownRecord>,\n    key: string\n): string | undefined => {\n    const value = Reflect.get(record, key);\n\n    return typeof value === \"string\" ? value : undefined;\n};\n\n/** Read one optional string-array field from a loose config record. */\nconst getOptionalStringArrayField = (\n    record: Readonly<UnknownRecord>,\n    key: string\n): readonly string[] | undefined => {\n    const value = Reflect.get(record, key);\n\n    return isStringArray(value) ? value : undefined;\n};\n\n/** Read one optional dictionary-definition array from a loose config record. */\nconst getOptionalDictionaryDefinitions = (\n    record: Readonly<UnknownRecord>\n): readonly DictionaryDefinition[] | undefined => {\n    const value = Reflect.get(record, \"dictionaryDefinitions\");\n\n    if (!Array.isArray(value)) {\n        return undefined;\n    }\n\n    const dictionaryDefinitions: DictionaryDefinition[] = [];\n\n    for (const item of value) {\n        if (isDictionaryDefinition(item)) {\n            dictionaryDefinitions.push(item);\n        }\n    }\n\n    return dictionaryDefinitions;\n};\n\n/** Read one optional language-settings array from a loose config record. */\nconst getOptionalLanguageSettings = (\n    record: Readonly<UnknownRecord>\n): readonly CspellLanguageSetting[] | undefined => {\n    const value = Reflect.get(record, \"languageSettings\");\n\n    if (!Array.isArray(value)) {\n        return undefined;\n    }\n\n    const languageSettings: CspellLanguageSetting[] = [];\n\n    for (const item of value) {\n        if (isRecord(item)) {\n            languageSettings.push(item);\n        }\n    }\n\n    return languageSettings;\n};\n\n/** Resolve modules relative to this package even in the bundled CJS build. */\nconst getRequireFromInternal = () => {\n    const packageJsonPath = path.resolve(process.cwd(), \"package.json\");\n    const packageJsonUrl = pathToFileURL(packageJsonPath);\n\n    return createRequire(packageJsonUrl.href);\n};\n\n/** Check whether a locale selector matches the target locale. */\nconst isLocaleMatch = (\n    selector: string | undefined,\n    locale: string\n): boolean => {\n    if (!isDefined(selector) || selector.trim().length === 0) {\n        return false;\n    }\n\n    const normalizedLocale = locale.toLowerCase();\n\n    return stringSplit(selector, \",\").some((segment) => {\n        const normalizedSegment = segment.trim().toLowerCase();\n\n        return (\n            normalizedSegment === \"*\" ||\n            normalizedSegment === normalizedLocale ||\n            normalizedLocale.startsWith(`${normalizedSegment}-`)\n        );\n    });\n};\n\n/** Check whether a language-id selector matches the target language id. */\nconst isLanguageIdMatch = (\n    selector: string | undefined,\n    languageId: string\n): boolean => {\n    if (!isDefined(selector) || selector.trim().length === 0) {\n        return false;\n    }\n\n    const normalizedLanguageId = languageId.toLowerCase();\n\n    return stringSplit(selector, \",\").some((segment) => {\n        const normalizedSegment = segment.trim().toLowerCase();\n\n        return (\n            normalizedSegment === \"*\" ||\n            normalizedSegment === normalizedLanguageId\n        );\n    });\n};\n\n/** Normalize one config import ref into an absolute file path. */\nconst resolveConfigImportPath = (importRef: string, cwd: string): string => {\n    const hasWindowsDrivePrefix =\n        importRef.length >= 3 &&\n        /^[A-Za-z]:/v.test(importRef.slice(0, 2)) &&\n        (importRef.at(2) === \"/\" || importRef.at(2) === \"\\\\\");\n\n    if (importRef.startsWith(\"file:\")) {\n        return fileURLToPath(importRef);\n    }\n\n    if (\n        importRef.startsWith(\".\") ||\n        importRef.startsWith(\"/\") ||\n        hasWindowsDrivePrefix\n    ) {\n        return path.resolve(cwd, importRef);\n    }\n\n    const requireFromInternal = getRequireFromInternal();\n\n    try {\n        return requireFromInternal.resolve(importRef, { paths: [cwd] });\n    } catch {\n        return requireFromInternal.resolve(importRef);\n    }\n};\n\n/** Normalize line endings to LF before line-based dictionary parsing. */\nconst normalizeLineEndings = (content: string): string =>\n    content.replaceAll(/\\r\\n?/gv, \"\\n\");\n\n/** Convert one text file into lines using cspell's own line splitting rules. */\nconst toLines = (content: string): readonly string[] =>\n    stringSplit(normalizeLineEndings(content), \"\\n\");\n\n/** Parse one JSON/JSONC/YAML cspell config resource. */\nconst parseCspellConfigResource = (\n    filePath: string,\n    fileContent: string\n): CspellConfigResource => {\n    const parsedValue: unknown = /\\.ya?ml$/iv.test(filePath)\n        ? parseYaml(fileContent)\n        : toUnknown(parseJson5Unknown(fileContent));\n\n    return isRecord(parsedValue) ? parsedValue : {};\n};\n\n/** Check whether a dictionary definition is inline. */\nconst isInlineDictionaryDefinition = (\n    definition: Readonly<DictionaryDefinition>\n): definition is Readonly<DictionaryDefinitionInline> =>\n    objectHasIn(definition, \"flagWords\") ||\n    objectHasIn(definition, \"ignoreWords\") ||\n    objectHasIn(definition, \"suggestWords\") ||\n    objectHasIn(definition, \"words\");\n\n/** Resolve the file-system path for one file-backed dictionary definition. */\nconst getDictionaryDefinitionPath = (\n    definition: Readonly<DictionaryDefinition>\n): string | undefined => {\n    const pathValue = Reflect.get(definition, \"path\");\n\n    if (typeof pathValue === \"string\") {\n        return pathValue;\n    }\n\n    const legacyFileValue = Reflect.get(definition, \"file\");\n\n    return typeof legacyFileValue === \"string\" ? legacyFileValue : undefined;\n};\n\n/** Build spelling-dictionary options from one cspell dictionary definition. */\nconst createDictionaryOptions = (\n    definition: Readonly<DictionaryDefinition>\n): SpellingDictionaryOptions => {\n    const options: SpellingDictionaryOptions = {};\n    const repMap = Reflect.get(definition, \"repMap\");\n    const ignoreForbiddenWords = Reflect.get(\n        definition,\n        \"ignoreForbiddenWords\"\n    );\n    const noSuggest = Reflect.get(definition, \"noSuggest\");\n    const supportNonStrictSearches = Reflect.get(\n        definition,\n        \"supportNonStrictSearches\"\n    );\n\n    if (Array.isArray(repMap)) {\n        options.repMap = repMap;\n    }\n\n    if (typeof ignoreForbiddenWords === \"boolean\") {\n        options.ignoreForbiddenWords = ignoreForbiddenWords;\n    }\n\n    if (typeof noSuggest === \"boolean\") {\n        options.noSuggest = noSuggest;\n    }\n\n    if (typeof supportNonStrictSearches === \"boolean\") {\n        options.supportNonStrictSearches = supportNonStrictSearches;\n    }\n\n    return options;\n};\n\n/** Convert one word-list file into the iterable expected by cspell loaders. */\nconst createWordListEntries = (\n    fileContent: string,\n    type: string | undefined\n): Iterable<string> => {\n    const lines = toLines(fileContent);\n\n    switch (type) {\n        case \"C\": {\n            return lines.flatMap(\n                (line) =>\n                    line\n                        .replaceAll(/#.*/gv, \"\")\n                        .match(/[\\w\\p{L}\\p{M}'`\u2019]+/gv) ?? []\n            );\n        }\n\n        case undefined: {\n            return lines;\n        }\n\n        case \"W\": {\n            return lines.flatMap(\n                (line) => line.replaceAll(/#.*/gv, \"\").match(/\\S+/gv) ?? []\n            );\n        }\n\n        default: {\n            return lines;\n        }\n    }\n};\n\n/** Build one cspell dictionary from one definition entry. */\nconst buildDictionaryFromDefinitionEntry = (\n    entry: Readonly<DictionaryDefinitionEntry>\n): SpellingDictionary => {\n    const { baseDirectoryPath, definition } = entry;\n\n    if (isInlineDictionaryDefinition(definition)) {\n        return createInlineSpellingDictionary(definition, baseDirectoryPath);\n    }\n\n    const definitionPath = getDictionaryDefinitionPath(definition);\n\n    if (!isDefined(definitionPath)) {\n        return createSpellingDictionary(\n            new Set<string>(),\n            definition.name,\n            baseDirectoryPath,\n            {\n                ...createDictionaryOptions(definition),\n                noSuggest: true,\n            }\n        );\n    }\n\n    const resolvedFilePath = path.resolve(baseDirectoryPath, definitionPath);\n    const dictionaryOptions = createDictionaryOptions(definition);\n    // eslint-disable-next-line n/no-sync, security/detect-non-literal-fs-filename -- Dictionaries must be loaded synchronously during rule initialization.\n    const compressedFileContent = readFileSync(resolvedFilePath);\n    const dictionaryFileContent = resolvedFilePath.endsWith(\".gz\")\n        ? // eslint-disable-next-line n/no-sync -- Dictionary data is loaded in-memory synchronously for ESLint rule execution.\n          gunzipSync(compressedFileContent)\n        : compressedFileContent;\n\n    if (/\\.b?trie(?:\\.gz)?$/iv.test(resolvedFilePath)) {\n        return createSpellingDictionaryFromTrieFile(\n            dictionaryFileContent,\n            definition.name,\n            resolvedFilePath,\n            dictionaryOptions\n        );\n    }\n\n    const textContent = dictionaryFileContent.toString(\"utf8\");\n    const dictionaryType = Reflect.get(definition, \"type\");\n    const wordListEntries = createWordListEntries(\n        textContent,\n        typeof dictionaryType === \"string\" ? dictionaryType : undefined\n    );\n\n    return createSpellingDictionary(\n        wordListEntries,\n        definition.name,\n        resolvedFilePath,\n        dictionaryOptions\n    );\n};\n\n/** Build one cspell dictionary from one accepted-words file path. */\nconst buildDictionaryFromWordFilePath = (\n    filePath: string,\n    cwd: string\n): SpellingDictionary =>\n    buildDictionaryFromDefinitionEntry({\n        baseDirectoryPath: cwd,\n        definition: {\n            name: filePath,\n            noSuggest: true,\n            path: filePath,\n        },\n    });\n\n/** Add all string values in one array into a set. */\nconst addStringsToSet = (\n    target: Set<string>,\n    values: readonly string[] | undefined\n): void => {\n    const strings = values ?? [];\n\n    for (const value of strings) {\n        if (value.trim().length > 0) {\n            target.add(value);\n        }\n    }\n};\n\n/** Collect matching language settings for the target locale and language id. */\nconst getMatchingLanguageSettings = (\n    resource: Readonly<CspellConfigResource>,\n    languageId: string,\n    locale: string\n): readonly CspellLanguageSetting[] =>\n    (getOptionalLanguageSettings(resource) ?? []).filter(\n        (languageSetting) =>\n            isLanguageIdMatch(\n                getOptionalStringField(languageSetting, \"languageId\"),\n                languageId\n            ) &&\n            isLocaleMatch(\n                getOptionalStringField(languageSetting, \"locale\"),\n                locale\n            )\n    );\n\n/** Collect dictionary and word data from one parsed cspell config resource. */\n/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types -- These helpers intentionally mutate the aggregate while collecting imported cspell config data. */\nconst collectConfigDataFromResource = (\n    aggregate: MutableCollectedCspellConfig,\n    resource: Readonly<CspellConfigResource>,\n    baseDirectoryPath: string,\n    languageId: string,\n    locale: string\n): void => {\n    const matchingLanguageSettings = getMatchingLanguageSettings(\n        resource,\n        languageId,\n        locale\n    );\n    const dictionaryDefinitions = [\n        ...(getOptionalDictionaryDefinitions(resource) ?? []),\n        ...matchingLanguageSettings.flatMap(\n            (languageSetting) =>\n                getOptionalDictionaryDefinitions(languageSetting) ?? []\n        ),\n    ];\n    const resourceDictionaryNames =\n        getOptionalStringArrayField(resource, \"dictionaries\") ?? [];\n    const languageSettingDictionaryNames = matchingLanguageSettings.flatMap(\n        (languageSetting) =>\n            getOptionalStringArrayField(languageSetting, \"dictionaries\") ?? []\n    );\n    // eslint-disable-next-line unicorn/prefer-iterator-concat -- Iterator.concat is not available in this package's runtime target.\n    const enabledDictionaryNames = new Set<string>([\n        ...resourceDictionaryNames,\n        ...languageSettingDictionaryNames,\n    ]);\n\n    for (const dictionaryDefinition of dictionaryDefinitions) {\n        aggregate.definitionsByName.set(dictionaryDefinition.name, {\n            baseDirectoryPath,\n            definition: dictionaryDefinition,\n        });\n    }\n\n    if (enabledDictionaryNames.size === 0) {\n        for (const dictionaryDefinition of dictionaryDefinitions) {\n            enabledDictionaryNames.add(dictionaryDefinition.name);\n        }\n    }\n\n    for (const dictionaryName of enabledDictionaryNames) {\n        aggregate.enabledDictionaryNames.add(dictionaryName);\n    }\n\n    addStringsToSet(\n        aggregate.words,\n        getOptionalStringArrayField(resource, \"words\")\n    );\n    addStringsToSet(\n        aggregate.ignoreWords,\n        getOptionalStringArrayField(resource, \"ignoreWords\")\n    );\n    addStringsToSet(\n        aggregate.flagWords,\n        getOptionalStringArrayField(resource, \"flagWords\")\n    );\n    addStringsToSet(\n        aggregate.suggestWords,\n        getOptionalStringArrayField(resource, \"suggestWords\")\n    );\n\n    for (const languageSetting of matchingLanguageSettings) {\n        addStringsToSet(\n            aggregate.words,\n            getOptionalStringArrayField(languageSetting, \"words\")\n        );\n        addStringsToSet(\n            aggregate.ignoreWords,\n            getOptionalStringArrayField(languageSetting, \"ignoreWords\")\n        );\n        addStringsToSet(\n            aggregate.flagWords,\n            getOptionalStringArrayField(languageSetting, \"flagWords\")\n        );\n        addStringsToSet(\n            aggregate.suggestWords,\n            getOptionalStringArrayField(languageSetting, \"suggestWords\")\n        );\n    }\n};\n\n/** Parse one resolved cspell config resource and report problems inline. */\nfunction tryParseCspellConfigResource(\n    aggregate: MutableCollectedCspellConfig,\n    resolvedImportPath: string\n): CspellConfigResource | undefined {\n    let parsedResource: CspellConfigResource | null = null;\n\n    try {\n        parsedResource = parseCspellConfigResource(\n            resolvedImportPath,\n            // eslint-disable-next-line n/no-sync, security/detect-non-literal-fs-filename -- Config imports are resolved dynamically and must be read synchronously in rule setup.\n            readFileSync(resolvedImportPath, \"utf8\")\n        );\n    } catch (error: unknown) {\n        aggregate.errors.push({\n            message:\n                error instanceof Error\n                    ? error.message\n                    : \"Unknown config parse problem.\",\n            resource: resolvedImportPath,\n        });\n    }\n\n    return parsedResource ?? undefined;\n}\n\n/** Resolve one cspell config import path and report problems inline. */\nfunction tryResolveConfigImportPath(\n    aggregate: MutableCollectedCspellConfig,\n    importRef: string,\n    cwd: string\n): string | undefined {\n    let resolvedImportPath: null | string = null;\n\n    try {\n        resolvedImportPath = resolveConfigImportPath(importRef, cwd);\n    } catch (error: unknown) {\n        aggregate.errors.push({\n            message:\n                error instanceof Error\n                    ? error.message\n                    : \"Unknown config resolution problem.\",\n            resource: importRef,\n        });\n    }\n\n    return resolvedImportPath ?? undefined;\n}\n\n/** Read one cspell config import and all of its nested imports synchronously. */\nconst collectConfigDataFromImport = (\n    aggregate: MutableCollectedCspellConfig,\n    importRef: string,\n    cwd: string,\n    seenFilePaths: Set<string>,\n    languageId: string,\n    locale: string\n): void => {\n    const resolvedImportPath = tryResolveConfigImportPath(\n        aggregate,\n        importRef,\n        cwd\n    );\n\n    if (!isDefined(resolvedImportPath)) {\n        return;\n    }\n\n    if (setHas(seenFilePaths, resolvedImportPath)) {\n        return;\n    }\n\n    seenFilePaths.add(resolvedImportPath);\n\n    const parsedResource = tryParseCspellConfigResource(\n        aggregate,\n        resolvedImportPath\n    );\n\n    if (!isDefined(parsedResource)) {\n        return;\n    }\n\n    const baseDirectoryPath = path.dirname(resolvedImportPath);\n    const nestedImportRefs =\n        getOptionalStringArrayField(parsedResource, \"import\") ?? [];\n\n    for (const nestedImportRef of nestedImportRefs) {\n        collectConfigDataFromImport(\n            aggregate,\n            nestedImportRef,\n            baseDirectoryPath,\n            seenFilePaths,\n            languageId,\n            locale\n        );\n    }\n\n    collectConfigDataFromResource(\n        aggregate,\n        parsedResource,\n        baseDirectoryPath,\n        languageId,\n        locale\n    );\n};\n/* eslint-enable @typescript-eslint/prefer-readonly-parameter-types -- These helpers intentionally mutate the aggregate while collecting imported cspell config data. */\n\n/** Create one empty mutable cspell config aggregate. */\nconst createEmptyCollectedConfig = (): MutableCollectedCspellConfig => ({\n    definitionsByName: new Map<string, DictionaryDefinitionEntry>(),\n    enabledDictionaryNames: new Set<string>(),\n    errors: [],\n    flagWords: new Set<string>(),\n    ignoreWords: new Set<string>(),\n    suggestWords: new Set<string>(),\n    words: new Set<string>(),\n});\n\n/** Build one inline special-purpose dictionary from collected config words. */\nconst createInlineSpecialDictionaries = (\n    aggregate: Readonly<MutableCollectedCspellConfig>\n): readonly SpellingDictionary[] => {\n    const dictionaries: SpellingDictionary[] = [];\n\n    if (aggregate.words.size > 0) {\n        dictionaries.push(\n            createInlineSpellingDictionary(\n                {\n                    name: \"spellcheck-comments-inline-words\",\n                    words: [...aggregate.words],\n                },\n                \"spellcheck-comments inline words\"\n            )\n        );\n    }\n\n    if (aggregate.ignoreWords.size > 0) {\n        dictionaries.push(\n            createInlineSpellingDictionary(\n                {\n                    ignoreWords: [...aggregate.ignoreWords],\n                    name: \"spellcheck-comments-inline-ignore-words\",\n                },\n                \"spellcheck-comments inline ignore words\"\n            )\n        );\n    }\n\n    if (aggregate.flagWords.size > 0) {\n        dictionaries.push(\n            createInlineSpellingDictionary(\n                {\n                    flagWords: [...aggregate.flagWords],\n                    name: \"spellcheck-comments-inline-flag-words\",\n                },\n                \"spellcheck-comments inline flag words\"\n            )\n        );\n    }\n\n    if (aggregate.suggestWords.size > 0) {\n        dictionaries.push(\n            createInlineSpellingDictionary(\n                {\n                    name: \"spellcheck-comments-inline-suggest-words\",\n                    suggestWords: [...aggregate.suggestWords],\n                },\n                \"spellcheck-comments inline suggest words\"\n            )\n        );\n    }\n\n    return dictionaries;\n};\n\n/** Create the cache key for one base imported cspell dictionary collection. */\nconst createBaseDictionaryCacheKey = (\n    configImports: readonly string[],\n    locale: string,\n    useDefaultDictionaries: boolean\n): string =>\n    JSON5.stringify({\n        configImports,\n        locale,\n        useDefaultDictionaries,\n    });\n\n/** Load and cache the base imported cspell dictionary collection. */\nconst loadBaseImportedDictionaryCollection = (\n    cwd: string,\n    configImports: readonly string[],\n    locale: string,\n    useDefaultDictionaries: boolean\n): CachedBaseDictionaryCollection => {\n    const cacheKey = createBaseDictionaryCacheKey(\n        configImports,\n        locale,\n        useDefaultDictionaries\n    );\n    const cachedCollection = cachedBaseDictionaryCollections.get(cacheKey);\n\n    if (isDefined(cachedCollection)) {\n        return cachedCollection;\n    }\n\n    const aggregate = createEmptyCollectedConfig();\n    const normalizedImportRefs = useDefaultDictionaries\n        ? [...defaultSpellcheckCspellConfigImports, ...configImports]\n        : [...configImports];\n    const seenFilePaths = new Set<string>();\n\n    const uniqueImportRefs = new Set(normalizedImportRefs);\n\n    for (const importRef of uniqueImportRefs) {\n        collectConfigDataFromImport(\n            aggregate,\n            importRef,\n            cwd,\n            seenFilePaths,\n            defaultSpellcheckLanguageId,\n            locale\n        );\n    }\n\n    const dictionaries: SpellingDictionary[] = [];\n\n    for (const enabledDictionaryName of aggregate.enabledDictionaryNames) {\n        const definitionEntry = aggregate.definitionsByName.get(\n            enabledDictionaryName\n        );\n\n        if (!isDefined(definitionEntry)) {\n            aggregate.errors.push({\n                message: \"Configured dictionary name was not defined.\",\n                resource: enabledDictionaryName,\n            });\n\n            continue;\n        }\n\n        try {\n            dictionaries.push(\n                buildDictionaryFromDefinitionEntry(definitionEntry)\n            );\n        } catch (error: unknown) {\n            aggregate.errors.push({\n                message:\n                    error instanceof Error\n                        ? error.message\n                        : \"Unknown dictionary build problem.\",\n                resource: enabledDictionaryName,\n            });\n        }\n    }\n\n    dictionaries.push(...createInlineSpecialDictionaries(aggregate));\n\n    const cachedEntry: CachedBaseDictionaryCollection = Object.freeze({\n        collection: createSpellingDictionaryCollection(\n            dictionaries,\n            \"spellcheck-comments imported cspell dictionaries\"\n        ),\n        errors: [...aggregate.errors],\n    });\n\n    cachedBaseDictionaryCollections.set(cacheKey, cachedEntry);\n\n    return cachedEntry;\n};\n\n/**\n * Build one cspell-backed dictionary collection for spellcheck-comments.\n *\n * @param options - Rule options that influence imported dictionaries.\n *\n * @returns The assembled collection plus any resource load problems.\n */\nexport const createSpellcheckCspellDictionaryCollection = (\n    options: Readonly<SpellcheckCspellDictionaryOptions>\n): SpellcheckCspellDictionaryCollectionResult => {\n    const locale = options.locale ?? defaultSpellcheckLocale;\n    const acceptedWords = new Set(options.ignoreWords);\n    const baseCollection = loadBaseImportedDictionaryCollection(\n        options.cwd,\n        options.configImports ?? [],\n        locale,\n        options.useDefaultDictionaries ?? true\n    );\n    const dictionaries = [...baseCollection.collection.dictionaries];\n    const errors = [...baseCollection.errors];\n\n    if (acceptedWords.size > 0) {\n        dictionaries.push(\n            createIgnoreWordsDictionary(\n                [...acceptedWords],\n                \"spellcheck-comments accepted words\",\n                \"spellcheck-comments options\"\n            )\n        );\n    }\n\n    const uniqueIgnoreWordFilePaths = new Set(options.ignoreWordFiles);\n\n    for (const ignoreWordFilePath of uniqueIgnoreWordFilePaths) {\n        try {\n            dictionaries.push(\n                buildDictionaryFromWordFilePath(ignoreWordFilePath, options.cwd)\n            );\n        } catch (error: unknown) {\n            errors.push({\n                message:\n                    error instanceof Error\n                        ? error.message\n                        : \"Unknown accepted-word file problem.\",\n                resource: ignoreWordFilePath,\n            });\n        }\n    }\n\n    return {\n        collection: createSpellingDictionaryCollection(\n            dictionaries,\n            \"spellcheck-comments cspell collection\"\n        ),\n        errors,\n    };\n};\n\n/** Check whether a word token should be skipped because it is quoted. */\nconst isQuotedLiteralWord = (\n    text: string,\n    startOffset: number,\n    endOffset: number\n): boolean => {\n    const previousCharacter = text[startOffset - 1];\n    const nextCharacter = text[endOffset];\n\n    return (\n        (previousCharacter === '\"' && nextCharacter === '\"') ||\n        (previousCharacter === \"'\" && nextCharacter === \"'\")\n    );\n};\n\n/** Normalize apostrophe-like characters without changing text length. */\nconst normalizeSpellcheckText = (text: string): string =>\n    text.replaceAll(/[`\u2019]/gv, \"'\");\n\n/** Format one cspell spellcheck problem into an ESLint-friendly message. */\nconst createProblemReason = (\n    word: string,\n    suggestions: readonly string[],\n    isForbiddenWord: boolean\n): string => {\n    if (isEmpty(suggestions)) {\n        return isForbiddenWord\n            ? `Possible misspelling \"${word}\".`\n            : `Unknown or misspelled word \"${word}\".`;\n    }\n\n    return isForbiddenWord\n        ? `Possible misspelling \"${word}\". Suggestions: ${arrayJoin(suggestions, \", \")}.`\n        : `Unknown or misspelled word \"${word}\". Suggestions: ${arrayJoin(suggestions, \", \")}.`;\n};\n\n/** Build cspell suggestion options for one spellcheck pass. */\nconst createSuggestOptions = (maxSuggestions: number): SuggestOptions => ({\n    ignoreCase: true,\n    includeTies: false,\n    numChanges: 3,\n    numSuggestions: maxSuggestions,\n    timeout: defaultSuggestionTimeoutMs,\n});\n\n/**\n * Spellcheck projected markdown text with the assembled cspell dictionaries.\n *\n * @param text - Projected markdown comment text.\n * @param collection - Prebuilt cspell dictionary collection.\n * @param options - Runtime spellcheck behavior.\n *\n * @returns Stable issue offsets and human-readable reasons.\n */\nexport const spellcheckProjectedTextWithCspell = (\n    text: string,\n    collection: Readonly<SpellingDictionaryCollection>,\n    options: Readonly<SpellcheckProjectedTextOptions>\n): readonly SpellcheckCspellIssue[] => {\n    const normalizedText = options.normalizeApostrophes\n        ? normalizeSpellcheckText(text)\n        : text;\n    const results: SpellcheckCspellIssue[] = [];\n    const suggestOptions = createSuggestOptions(options.maxSuggestions);\n\n    const wordOffsets = Text.extractWordsFromTextOffset(\n        Text.textOffset(normalizedText)\n    );\n\n    for (const wordOffset of wordOffsets) {\n        const word = wordOffset.text;\n        const startOffset = wordOffset.offset;\n        const endOffset = startOffset + word.length;\n\n        if (\n            word.length < defaultMinWordLength ||\n            (options.ignoreDigits && /\\d/v.test(word)) ||\n            (options.ignoreLiteral &&\n                isQuotedLiteralWord(normalizedText, startOffset, endOffset))\n        ) {\n            continue;\n        }\n\n        const isKnownWord = collection.has(word, { ignoreCase: true });\n        const isForbiddenWord = collection.isForbidden(word, true);\n\n        if (isKnownWord && !isForbiddenWord) {\n            continue;\n        }\n\n        const suggestions = [\n            ...new Set(\n                collection\n                    .suggest(word, suggestOptions)\n                    .map((suggestion) => suggestion.word)\n                    .filter(\n                        (suggestedWord) =>\n                            suggestedWord.localeCompare(word, undefined, {\n                                sensitivity: \"accent\",\n                            }) !== 0\n                    )\n            ),\n        ].slice(0, options.maxSuggestions);\n\n        results.push({\n            endOffset,\n            reason: createProblemReason(word, suggestions, isForbiddenWord),\n            startOffset,\n        });\n    }\n\n    return results;\n};\n", "/**\n * @packageDocumentation\n * Curated technical vocabulary accepted by the spellcheck comment rule.\n */\n\n/**\n * Common software-engineering terms that are valid in comments but noisy for a\n * plain English dictionary.\n */\nexport const defaultSpellcheckIgnoreWords = [\n    \"api\",\n    \"apis\",\n    \"async\",\n    \"autofix\",\n    \"autofixer\",\n    \"autofixers\",\n    \"changelog\",\n    \"changelogs\",\n    \"cli\",\n    \"codebase\",\n    \"config\",\n    \"configs\",\n    \"cwd\",\n    \"docusaurus\",\n    \"eslint\",\n    \"frontmatter\",\n    \"github\",\n    \"javascript\",\n    \"js\",\n    \"jsdoc\",\n    \"json\",\n    \"jsx\",\n    \"markdown\",\n    \"mdast\",\n    \"mdx\",\n    \"metadata\",\n    \"monorepo\",\n    \"nlcst\",\n    \"node\",\n    \"npm\",\n    \"parser\",\n    \"parsers\",\n    \"plugin\",\n    \"plugins\",\n    \"prettier\",\n    \"repo\",\n    \"repos\",\n    \"retext\",\n    \"runtime\",\n    \"stderr\",\n    \"stdout\",\n    \"ts\",\n    \"tsconfig\",\n    \"tsdoc\",\n    \"tsx\",\n    \"typescript\",\n    \"vfile\",\n    \"vitest\",\n    \"yaml\",\n] as const;\n", "/**\n * @packageDocumentation\n * ESLint rule that spellchecks source comments with cspell dictionaries.\n */\n\nimport type { TSESLint } from \"@typescript-eslint/utils\";\n\nimport { arrayJoin } from \"ts-extras\";\n\nimport {\n    createCommentLintText,\n    createCommentValueSourceLocation,\n    isIgnoredCommentText,\n} from \"../_internal/comment-prose.js\";\nimport { projectMarkdownCommentText } from \"../_internal/retext.js\";\nimport {\n    createSpellcheckCspellDictionaryCollection,\n    spellcheckProjectedTextWithCspell,\n} from \"../_internal/spellcheck-cspell.js\";\nimport { defaultSpellcheckIgnoreWords } from \"../_internal/spellcheck-default-words.js\";\n\n/** Message ids emitted by this rule. */\ntype MessageIds = \"dictionaryLoadFailed\" | \"problem\";\n\n/** Configurable rule options tuple. */\ntype Options = [SpellcheckCommentsOptions?];\n\n/** Extra docs metadata carried by this plugin's rules. */\ntype PluginDocs = Readonly<{\n    recommended: boolean;\n}>;\n\n/** Configurable spellcheck rule options. */\ntype SpellcheckCommentsOptions = Readonly<{\n    cspellConfigImports?: readonly string[];\n    ignoreDigits?: boolean;\n    ignoreLiteral?: boolean;\n    ignoreWordFiles?: readonly string[];\n    ignoreWords?: readonly string[];\n    maxSuggestions?: number;\n    normalizeApostrophes?: boolean;\n    useDefaultDictionaries?: boolean;\n}>;\n\n/** Default options for spellcheck-comments. */\nconst defaultSpellcheckCommentsOptions = {\n    cspellConfigImports: [],\n    ignoreDigits: true,\n    ignoreLiteral: true,\n    ignoreWordFiles: [],\n    ignoreWords: [],\n    maxSuggestions: 5,\n    normalizeApostrophes: true,\n    useDefaultDictionaries: true,\n} as const satisfies SpellcheckCommentsOptions;\n\n/** Merge built-in and user-provided spellcheck ignore words. */\nconst createSpellcheckIgnoreWords = (\n    options: Readonly<SpellcheckCommentsOptions>,\n    loadedIgnoreWords: readonly string[]\n): readonly string[] => {\n    const configuredIgnoreWords = options.ignoreWords ?? [];\n\n    return [\n        // eslint-disable-next-line unicorn/prefer-iterator-concat -- Iterator.concat is not available in this package's runtime target.\n        ...new Set([\n            ...defaultSpellcheckIgnoreWords,\n            ...loadedIgnoreWords,\n            ...configuredIgnoreWords,\n        ]),\n    ];\n};\n\n/** Format cspell resource load problems into one actionable ESLint report. */\nconst formatDictionaryLoadErrors = (\n    resourceErrors: readonly Readonly<{ message: string; resource: string }>[]\n): string =>\n    arrayJoin(\n        resourceErrors.map(\n            ({ message, resource }) => `${resource}: ${message}`\n        ),\n        \"; \"\n    );\n\n/** Create the runtime spellcheck-comments rule. */\nconst spellcheckCommentsRule: TSESLint.RuleModule<\n    MessageIds,\n    Options,\n    PluginDocs\n> = {\n    create(context) {\n        const sourceCode = context.sourceCode;\n        const [options = defaultSpellcheckCommentsOptions] = context.options;\n        const normalizedOptions = {\n            cspellConfigImports:\n                options.cspellConfigImports ??\n                defaultSpellcheckCommentsOptions.cspellConfigImports,\n            ignoreDigits:\n                options.ignoreDigits ??\n                defaultSpellcheckCommentsOptions.ignoreDigits,\n            ignoreLiteral:\n                options.ignoreLiteral ??\n                defaultSpellcheckCommentsOptions.ignoreLiteral,\n            ignoreWordFiles:\n                options.ignoreWordFiles ??\n                defaultSpellcheckCommentsOptions.ignoreWordFiles,\n            ignoreWords:\n                options.ignoreWords ??\n                defaultSpellcheckCommentsOptions.ignoreWords,\n            maxSuggestions:\n                options.maxSuggestions ??\n                defaultSpellcheckCommentsOptions.maxSuggestions,\n            normalizeApostrophes:\n                options.normalizeApostrophes ??\n                defaultSpellcheckCommentsOptions.normalizeApostrophes,\n            useDefaultDictionaries:\n                options.useDefaultDictionaries ??\n                defaultSpellcheckCommentsOptions.useDefaultDictionaries,\n        };\n        const ignoreWords = createSpellcheckIgnoreWords(normalizedOptions, []);\n        const spellcheckDictionaryCollection =\n            createSpellcheckCspellDictionaryCollection({\n                configImports: normalizedOptions.cspellConfigImports,\n                cwd: process.cwd(),\n                ignoreWordFiles: normalizedOptions.ignoreWordFiles,\n                ignoreWords,\n                useDefaultDictionaries:\n                    normalizedOptions.useDefaultDictionaries,\n            });\n\n        const spellcheckRuntimeOptions = {\n            ignoreDigits: normalizedOptions.ignoreDigits,\n            ignoreLiteral: normalizedOptions.ignoreLiteral,\n            maxSuggestions: normalizedOptions.maxSuggestions,\n            normalizeApostrophes: normalizedOptions.normalizeApostrophes,\n        };\n\n        const reportIssueLocation = (\n            comment: Parameters<typeof createCommentLintText>[0],\n            issue: Readonly<{ endOffset: number; startOffset: number }>\n        ) =>\n            createCommentValueSourceLocation(\n                comment,\n                sourceCode,\n                issue.startOffset,\n                issue.endOffset\n            );\n\n        const reportSpellcheckProblems = (\n            comment: Parameters<typeof createCommentLintText>[0],\n            lintText: string\n        ): void => {\n            const projectedLintText = projectMarkdownCommentText(lintText);\n\n            for (const issue of spellcheckProjectedTextWithCspell(\n                projectedLintText,\n                spellcheckDictionaryCollection.collection,\n                spellcheckRuntimeOptions\n            )) {\n                context.report({\n                    data: {\n                        reason: issue.reason,\n                    },\n                    loc: reportIssueLocation(comment, issue),\n                    messageId: \"problem\",\n                });\n            }\n        };\n\n        return {\n            Program(program) {\n                if (spellcheckDictionaryCollection.errors.length > 0) {\n                    context.report({\n                        data: {\n                            details: formatDictionaryLoadErrors(\n                                spellcheckDictionaryCollection.errors\n                            ),\n                        },\n                        messageId: \"dictionaryLoadFailed\",\n                        node: program,\n                    });\n                }\n\n                for (const comment of sourceCode.getAllComments()) {\n                    const trimmedCommentValue = comment.value.trim();\n\n                    if (isIgnoredCommentText(trimmedCommentValue)) {\n                        continue;\n                    }\n\n                    const lintText = createCommentLintText(comment);\n\n                    reportSpellcheckProblems(comment, lintText);\n                }\n            },\n        };\n    },\n    meta: {\n        defaultOptions: [defaultSpellcheckCommentsOptions],\n        deprecated: false,\n        docs: {\n            description:\n                \"enforce correct spelling in source comments with cspell dictionaries, curated technical vocabulary, and optional imported cspell configs.\",\n            frozen: false,\n            recommended: false,\n            url: \"https://nick2bad4u.github.io/eslint-plugin-write-good-comments-2/docs/rules/spellcheck-comments\",\n        },\n        messages: {\n            dictionaryLoadFailed:\n                \"Could not load spellcheck cspell resources: {{details}}\",\n            problem: \"{{reason}}\",\n        },\n        schema: [\n            {\n                additionalProperties: false,\n                description:\n                    \"Optional spellcheck controls for comment prose, including extra accepted technical vocabulary.\",\n                properties: {\n                    cspellConfigImports: {\n                        description:\n                            \"Additional cspell config resources to import, such as package dictionary configs or local cspell json/yaml files.\",\n                        items: {\n                            minLength: 1,\n                            type: \"string\",\n                        },\n                        type: \"array\",\n                        uniqueItems: true,\n                    },\n                    ignoreDigits: {\n                        description:\n                            \"Ignore words that include digits such as versioned identifiers.\",\n                        type: \"boolean\",\n                    },\n                    ignoreLiteral: {\n                        description:\n                            \"Ignore quoted literals such as 'teh' or \\\"cfg\\\".\",\n                        type: \"boolean\",\n                    },\n                    ignoreWordFiles: {\n                        description:\n                            \"Paths to cspell-style word-list files that should be accepted without spellcheck reports.\",\n                        items: {\n                            minLength: 1,\n                            type: \"string\",\n                        },\n                        type: \"array\",\n                        uniqueItems: true,\n                    },\n                    ignoreWords: {\n                        description:\n                            \"Additional domain-specific words to accept without spellcheck reports.\",\n                        items: {\n                            minLength: 1,\n                            type: \"string\",\n                        },\n                        type: \"array\",\n                        uniqueItems: true,\n                    },\n                    maxSuggestions: {\n                        description:\n                            \"Maximum number of candidate spellings to include in each report.\",\n                        minimum: 1,\n                        type: \"integer\",\n                    },\n                    normalizeApostrophes: {\n                        description:\n                            \"Normalize curly and straight apostrophes before spellchecking.\",\n                        type: \"boolean\",\n                    },\n                    useDefaultDictionaries: {\n                        description:\n                            \"Load the rule's built-in cspell dictionary imports for English and common coding terminology.\",\n                        type: \"boolean\",\n                    },\n                },\n                type: \"object\",\n            },\n        ],\n        type: \"suggestion\",\n    },\n};\n\nexport default spellcheckCommentsRule;\n", "/**\n * @packageDocumentation\n * ESLint rule that enforces descriptive task-marker comments.\n */\n\nimport type { TSESLint, TSESTree } from \"@typescript-eslint/utils\";\n\nimport { isDefined, setHas } from \"ts-extras\";\n\nimport {\n    createCommentLintText,\n    createCommentValueSourceLocation,\n    isIgnoredCommentText,\n} from \"../_internal/comment-prose.js\";\n\n/** Message ids emitted by this rule. */\ntype MessageIds = \"missingDescription\";\n\n/** Configurable rule options tuple. */\ntype Options = [TaskCommentFormatOptions?];\n\n/** Extra docs metadata carried by this plugin's rules. */\ntype PluginDocs = Readonly<{\n    recommended: boolean;\n}>;\n\n/** Configurable rule options. */\ntype TaskCommentFormatOptions = Readonly<{\n    minDescriptionLength?: number;\n    terms?: readonly string[];\n}>;\n\n/** Default task markers treated as task comments. */\nconst defaultTaskCommentTerms = [\n    \"FIXME\",\n    \"HACK\",\n    \"TODO\",\n    \"XXX\",\n] as const;\n\n/** Default minimum descriptive text length after task-comment metadata. */\nconst DEFAULT_MIN_DESCRIPTION_LENGTH = 8;\n\n/** Default options for task-comment-format. */\nconst defaultTaskCommentFormatOptions = {\n    minDescriptionLength: DEFAULT_MIN_DESCRIPTION_LENGTH,\n    terms: [...defaultTaskCommentTerms],\n} as const satisfies TaskCommentFormatOptions;\n\n/** Punctuation separators allowed between task-comment metadata and prose. */\nconst separatorPattern = /^(?::+|-+|\u2014+)\\s*/v;\n\n/** Identifier-like characters that can continue a task marker token. */\nconst identifierContinuationPattern = /^[\\p{L}\\p{N}_]/v;\n\n/** Handle characters commonly used in task-comment metadata. */\nconst taskCommentHandleCharacterPattern = /^[\\w\\-.]$/iv;\n\n/** Space characters that may trail metadata tokens. */\nconst spacePattern = /^\\s$/v;\n\n/** ASCII alphanumeric characters used in issue keys. */\nconst asciiAlphaNumericPattern = /^[\\da-z]$/iv;\n\n/** Decimal digits used in issue numbers. */\nconst digitPattern = /^\\d$/v;\n\n/**\n * Match a configured task marker at the start of a trimmed comment.\n *\n * @param text - Trimmed comment text.\n * @param normalizedTerms - Uppercased task markers to match.\n *\n * @returns The matched marker text, or `null` when no configured marker\n *   matches.\n */\nconst matchTaskCommentTerm = (\n    text: string,\n    normalizedTerms: readonly string[]\n): null | string => {\n    const uppercasedText = text.toUpperCase();\n\n    for (const normalizedTerm of normalizedTerms) {\n        if (!uppercasedText.startsWith(normalizedTerm)) {\n            continue;\n        }\n\n        const nextCharacter = text.slice(\n            normalizedTerm.length,\n            normalizedTerm.length + 1\n        );\n\n        if (\n            nextCharacter.length > 0 &&\n            identifierContinuationPattern.test(nextCharacter)\n        ) {\n            continue;\n        }\n\n        return text.slice(0, normalizedTerm.length);\n    }\n\n    return null;\n};\n\n/**\n * Extend a matched metadata token to include trailing spaces.\n *\n * @param text - Remaining task-comment text.\n * @param tokenLength - Length of the non-space metadata token.\n *\n * @returns Metadata token plus trailing spaces.\n */\nconst withTrailingWhitespace = (text: string, tokenLength: number): string => {\n    let endOffset = tokenLength;\n\n    while (endOffset < text.length) {\n        const character = text.slice(endOffset, endOffset + 1);\n\n        if (!spacePattern.test(character)) {\n            break;\n        }\n\n        endOffset += 1;\n    }\n\n    return text.slice(0, endOffset);\n};\n\n/**\n * Match parenthesized metadata such as `(nick)`.\n *\n * @param text - Remaining task-comment text.\n *\n * @returns The matched metadata token, or `null` when none is present.\n */\nconst matchParenthesizedMetadata = (text: string): null | string => {\n    if (!text.startsWith(\"(\")) {\n        return null;\n    }\n\n    const closingOffset = text.indexOf(\")\", 1);\n\n    if (closingOffset <= 1) {\n        return null;\n    }\n\n    const innerText = new Set(text.slice(1, closingOffset));\n\n    if (setHas(innerText, \"\\n\") || setHas(innerText, \"\\r\")) {\n        return null;\n    }\n\n    return withTrailingWhitespace(text, closingOffset + 1);\n};\n\n/**\n * Match bracketed metadata such as `[ABC-123]`.\n *\n * @param text - Remaining task-comment text.\n *\n * @returns The matched metadata token, or `null` when none is present.\n */\nconst matchBracketedMetadata = (text: string): null | string => {\n    if (!text.startsWith(\"[\")) {\n        return null;\n    }\n\n    const closingOffset = text.indexOf(\"]\", 1);\n\n    if (closingOffset <= 1) {\n        return null;\n    }\n\n    const innerText = new Set(text.slice(1, closingOffset));\n\n    if (setHas(innerText, \"\\n\") || setHas(innerText, \"\\r\")) {\n        return null;\n    }\n\n    return withTrailingWhitespace(text, closingOffset + 1);\n};\n\n/**\n * Match handle metadata such as `@nick`.\n *\n * @param text - Remaining task-comment text.\n *\n * @returns The matched metadata token, or `null` when none is present.\n */\nconst matchHandleMetadata = (text: string): null | string => {\n    if (!text.startsWith(\"@\")) {\n        return null;\n    }\n\n    let endOffset = 1;\n\n    while (endOffset < text.length) {\n        const character = text.slice(endOffset, endOffset + 1);\n\n        if (!taskCommentHandleCharacterPattern.test(character)) {\n            break;\n        }\n\n        endOffset += 1;\n    }\n\n    if (endOffset === 1) {\n        return null;\n    }\n\n    return withTrailingWhitespace(text, endOffset);\n};\n\n/**\n * Consume characters while they satisfy a predicate.\n *\n * @param text - Source text to scan.\n * @param startOffset - Zero-based start offset.\n * @param isConsumableCharacter - Predicate that decides whether scanning should\n *   continue.\n *\n * @returns Offset immediately after the consumed span.\n */\nconst consumeWhile = (\n    text: string,\n    startOffset: number,\n    isConsumableCharacter: (character: string) => boolean\n): number => {\n    let offset = startOffset;\n\n    while (offset < text.length) {\n        const character = text.slice(offset, offset + 1);\n\n        if (!isConsumableCharacter(character)) {\n            break;\n        }\n\n        offset += 1;\n    }\n\n    return offset;\n};\n\n/**\n * Match `#123` style issue metadata.\n *\n * @param text - Remaining task-comment text.\n *\n * @returns The matched metadata token, or `null` when none is present.\n */\nconst matchHashIssueMetadata = (text: string): null | string => {\n    if (!text.startsWith(\"#\")) {\n        return null;\n    }\n\n    const endOffset = consumeWhile(text, 1, (character) =>\n        digitPattern.test(character)\n    );\n\n    return endOffset > 1 ? withTrailingWhitespace(text, endOffset) : null;\n};\n\n/**\n * Match `ABC-123` style issue metadata.\n *\n * @param text - Remaining task-comment text.\n *\n * @returns The matched metadata token, or `null` when none is present.\n */\nconst matchDashedIssueMetadata = (text: string): null | string => {\n    const firstCharacter = text.slice(0, 1);\n\n    if (!/^[a-z]$/iv.test(firstCharacter)) {\n        return null;\n    }\n\n    const dashOffset = consumeWhile(text, 1, (character) => character !== \"-\");\n\n    if (\n        dashOffset >= text.length ||\n        text.slice(dashOffset, dashOffset + 1) !== \"-\"\n    ) {\n        return null;\n    }\n\n    const issuePrefix = text.slice(0, dashOffset);\n\n    for (const character of issuePrefix) {\n        if (!asciiAlphaNumericPattern.test(character)) {\n            return null;\n        }\n    }\n\n    const endOffset = consumeWhile(text, dashOffset + 1, (character) =>\n        digitPattern.test(character)\n    );\n\n    return endOffset > dashOffset + 1\n        ? withTrailingWhitespace(text, endOffset)\n        : null;\n};\n\n/**\n * Match issue metadata such as `#123` or `ABC-123`.\n *\n * @param text - Remaining task-comment text.\n *\n * @returns The matched metadata token, or `null` when none is present.\n */\nconst matchIssueMetadata = (text: string): null | string =>\n    matchHashIssueMetadata(text) ?? matchDashedIssueMetadata(text);\n\n/**\n * Match a leading metadata token at the start of task-comment remainder text.\n *\n * @param text - Remaining task-comment text.\n *\n * @returns The matched metadata token, or `null` when none is present.\n */\nconst matchLeadingMetadata = (text: string): null | string => {\n    const parenthesizedMetadata = matchParenthesizedMetadata(text);\n\n    if (parenthesizedMetadata !== null) {\n        return parenthesizedMetadata;\n    }\n\n    const bracketedMetadata = matchBracketedMetadata(text);\n\n    if (bracketedMetadata !== null) {\n        return bracketedMetadata;\n    }\n\n    const handleMetadata = matchHandleMetadata(text);\n\n    if (handleMetadata !== null) {\n        return handleMetadata;\n    }\n\n    const issueMetadata = matchIssueMetadata(text);\n\n    if (issueMetadata !== null) {\n        return issueMetadata;\n    }\n\n    return null;\n};\n\n/**\n * Strip optional metadata and punctuation from the start of a task comment.\n *\n * @param text - Remaining task-comment text after the leading term.\n *\n * @returns Remaining descriptive text.\n */\nconst stripTaskCommentPreamble = (text: string): string => {\n    let remainder = text.trimStart();\n\n    while (remainder.length > 0) {\n        const separatorMatch = separatorPattern.exec(remainder);\n\n        if (isDefined(separatorMatch?.[0])) {\n            remainder = remainder.slice(separatorMatch[0].length).trimStart();\n            continue;\n        }\n\n        const matchedMetadata = matchLeadingMetadata(remainder);\n\n        if (matchedMetadata === null) {\n            break;\n        }\n\n        remainder = remainder.slice(matchedMetadata.length).trimStart();\n    }\n\n    return remainder.trim();\n};\n\n/**\n * Determine whether the remaining task-comment text is descriptive enough.\n *\n * @param description - Comment text after stripping task markers + metadata.\n * @param minDescriptionLength - Minimum required description length.\n *\n * @returns `true` when the description contains meaningful prose.\n */\nconst hasMeaningfulDescription = (\n    description: string,\n    minDescriptionLength: number\n): boolean => {\n    const compactDescription = description.replaceAll(/\\s+/gv, \" \").trim();\n\n    return (\n        compactDescription.length >= minDescriptionLength &&\n        /[\\p{L}\\p{N}]/v.test(compactDescription)\n    );\n};\n\ntype TaskCommentAnalysisResult = Readonly<{\n    leadingWhitespaceOffset: number;\n    taskTerm: string;\n}>;\n\n/**\n * Analyze a comment and return report data when it lacks a meaningful task\n * description.\n *\n * @param lintText - Raw lint text for a single comment.\n * @param normalizedTerms - Normalized task comment terms.\n * @param minDescriptionLength - Minimum required descriptive text length.\n *\n * @returns Report data when the comment should be flagged, otherwise `null`.\n */\nconst analyzeTaskComment = (\n    lintText: string,\n    normalizedTerms: readonly string[],\n    minDescriptionLength: number\n): null | TaskCommentAnalysisResult => {\n    const trimmedLintText = lintText.trim();\n\n    if (isIgnoredCommentText(trimmedLintText)) {\n        return null;\n    }\n\n    const taskTerm = matchTaskCommentTerm(trimmedLintText, normalizedTerms);\n\n    if (taskTerm === null) {\n        return null;\n    }\n\n    const description = stripTaskCommentPreamble(\n        trimmedLintText.slice(taskTerm.length)\n    );\n\n    if (hasMeaningfulDescription(description, minDescriptionLength)) {\n        return null;\n    }\n\n    return {\n        leadingWhitespaceOffset: lintText.length - lintText.trimStart().length,\n        taskTerm,\n    };\n};\n\n/**\n * Report a task comment that does not contain descriptive text.\n *\n * @param context - ESLint rule context.\n * @param sourceCode - Source code for the current file.\n * @param comment - Comment node to report.\n * @param analysis - Precomputed report data for the comment.\n */\nconst reportTaskCommentWithoutDescription = (\n    context: Readonly<TSESLint.RuleContext<MessageIds, Options>>,\n    sourceCode: Readonly<TSESLint.SourceCode>,\n    comment: Readonly<TSESTree.Comment>,\n    analysis: TaskCommentAnalysisResult\n): void => {\n    context.report({\n        data: {\n            term: analysis.taskTerm.toUpperCase(),\n        },\n        loc: createCommentValueSourceLocation(\n            comment,\n            sourceCode,\n            analysis.leadingWhitespaceOffset,\n            analysis.leadingWhitespaceOffset + analysis.taskTerm.length\n        ),\n        messageId: \"missingDescription\",\n    });\n};\n\n/**\n * Create the runtime task-comment-format rule.\n */\nconst taskCommentFormatRule: TSESLint.RuleModule<\n    MessageIds,\n    Options,\n    PluginDocs\n> = {\n    create(context) {\n        const sourceCode = context.sourceCode;\n        const [\n            {\n                minDescriptionLength = DEFAULT_MIN_DESCRIPTION_LENGTH,\n                terms = defaultTaskCommentTerms,\n            } = defaultTaskCommentFormatOptions,\n        ] = context.options;\n        const normalizedTerms = (\n            terms.length > 0 ? terms : defaultTaskCommentTerms\n        ).map((term) => term.toUpperCase());\n\n        return {\n            Program() {\n                for (const comment of sourceCode.getAllComments()) {\n                    const lintText = createCommentLintText(comment);\n                    const analysis = analyzeTaskComment(\n                        lintText,\n                        normalizedTerms,\n                        minDescriptionLength\n                    );\n\n                    if (analysis === null) {\n                        continue;\n                    }\n\n                    reportTaskCommentWithoutDescription(\n                        context,\n                        sourceCode,\n                        comment,\n                        analysis\n                    );\n                }\n            },\n        };\n    },\n    meta: {\n        defaultOptions: [defaultTaskCommentFormatOptions],\n        deprecated: false,\n        docs: {\n            description:\n                \"enforce descriptive TODO-style task comments in source code.\",\n            frozen: false,\n            recommended: true,\n            url: \"https://nick2bad4u.github.io/eslint-plugin-write-good-comments-2/docs/rules/task-comment-format\",\n        },\n        messages: {\n            missingDescription:\n                \"{{term}} comments must include a descriptive task or reason after the marker.\",\n        },\n        schema: [\n            {\n                additionalProperties: false,\n                description:\n                    \"Optional task-comment markers and minimum description length.\",\n                properties: {\n                    minDescriptionLength: {\n                        description:\n                            \"Minimum number of non-whitespace characters required after stripping task metadata.\",\n                        minimum: 1,\n                        type: \"integer\",\n                    },\n                    terms: {\n                        description:\n                            \"Task-comment markers that should require a descriptive body.\",\n                        items: {\n                            minLength: 1,\n                            type: \"string\",\n                        },\n                        minItems: 1,\n                        type: \"array\",\n                        uniqueItems: true,\n                    },\n                },\n                type: \"object\",\n            },\n        ],\n        type: \"suggestion\",\n    },\n};\n\nexport default taskCommentFormatRule;\n", "/**\n * @packageDocumentation\n * Local typed facade for the untyped `write-good` package.\n */\n\nimport { safeCastTo } from \"ts-extras\";\nimport writeGoodModule from \"write-good\";\n\n/** Runtime contract exposed by the `write-good` package. */\nexport type WriteGood = (\n    text: string,\n    options?: WriteGoodOptions\n) => readonly WriteGoodSuggestion[];\n\n/** Options accepted by the underlying `write-good` package. */\nexport type WriteGoodOptions = Readonly<{\n    adverb?: boolean;\n    cliches?: boolean;\n    eprime?: boolean;\n    illusion?: boolean;\n    passive?: boolean;\n    so?: boolean;\n    thereIs?: boolean;\n    tooWordy?: boolean;\n    weasel?: boolean;\n    whitelist?: readonly string[];\n}>;\n\n/** Suggestion item returned by `write-good`. */\nexport type WriteGoodSuggestion = Readonly<{\n    index: number;\n    offset: number;\n    reason: string;\n}>;\n\n/** Typed wrapper around the upstream CommonJS export. */\nexport const writeGood: WriteGood = (text, options) =>\n    safeCastTo<readonly WriteGoodSuggestion[]>(writeGoodModule(text, options));\n", "/**\n * @packageDocumentation\n * ESLint rule that runs `write-good` against source comments.\n */\n\nimport type { TSESLint, TSESTree } from \"@typescript-eslint/utils\";\n\nimport {\n    createCommentLintText,\n    createCommentValueSourceLocation,\n    isIgnoredCommentText,\n} from \"../_internal/comment-prose.js\";\nimport {\n    writeGood,\n    type WriteGoodOptions,\n    type WriteGoodSuggestion,\n} from \"../_internal/write-good.js\";\n\n/** Message ids emitted by this rule. */\ntype MessageIds = \"suggestion\";\n\n/** Configurable rule options. */\ntype Options = [WriteGoodOptions?];\n\n/** Extra docs metadata carried by this plugin's rules. */\ntype PluginDocs = Readonly<{\n    recommended: boolean;\n}>;\n\n/** Default options for write-good-comments. */\nconst defaultWriteGoodCommentsOptions = {} as const satisfies WriteGoodOptions;\n\n/**\n * Convert a suggestion offset into an ESLint location.\n *\n * @param comment - Source comment token.\n * @param sourceCode - Source code utility object.\n * @param suggestion - Upstream write-good suggestion.\n *\n * @returns ESLint location for the suggestion span.\n */\nconst createSuggestionLocation = (\n    comment: Readonly<TSESTree.Comment>,\n    sourceCode: Readonly<TSESLint.SourceCode>,\n    suggestion: WriteGoodSuggestion\n): TSESLint.AST.SourceLocation =>\n    createCommentValueSourceLocation(\n        comment,\n        sourceCode,\n        suggestion.index,\n        suggestion.index + Math.max(suggestion.offset, 1)\n    );\n\n/**\n * Create the runtime write-good-comments rule.\n */\nconst writeGoodCommentsRule: TSESLint.RuleModule<\n    MessageIds,\n    Options,\n    PluginDocs\n> = {\n    create(context) {\n        const sourceCode = context.sourceCode;\n        const [options = defaultWriteGoodCommentsOptions] = context.options;\n\n        return {\n            Program() {\n                for (const comment of sourceCode.getAllComments()) {\n                    const lintText = createCommentLintText(comment);\n                    const trimmedLintText = lintText.trim();\n\n                    if (isIgnoredCommentText(trimmedLintText)) {\n                        continue;\n                    }\n\n                    const suggestions = writeGood(lintText, options);\n\n                    for (const suggestion of suggestions) {\n                        context.report({\n                            data: {\n                                reason: suggestion.reason.trim(),\n                            },\n                            loc: createSuggestionLocation(\n                                comment,\n                                sourceCode,\n                                suggestion\n                            ),\n                            messageId: \"suggestion\",\n                        });\n                    }\n                }\n            },\n        };\n    },\n    meta: {\n        defaultOptions: [defaultWriteGoodCommentsOptions],\n        deprecated: false,\n        docs: {\n            description:\n                \"enforce high-quality prose in source comments with write-good.\",\n            frozen: false,\n            recommended: true,\n            url: \"https://nick2bad4u.github.io/eslint-plugin-write-good-comments-2/docs/rules/write-good-comments\",\n        },\n        messages: {\n            suggestion: \"{{reason}}\",\n        },\n        schema: [\n            {\n                additionalProperties: false,\n                description:\n                    \"Optional write-good checks and whitelist terms for comment prose linting.\",\n                properties: {\n                    adverb: {\n                        description:\n                            \"Enable or disable adverb detection in comments.\",\n                        type: \"boolean\",\n                    },\n                    cliches: {\n                        description:\n                            \"Enable or disable cliche detection in comments.\",\n                        type: \"boolean\",\n                    },\n                    eprime: {\n                        description:\n                            \"Enable or disable e-prime detection in comments.\",\n                        type: \"boolean\",\n                    },\n                    illusion: {\n                        description:\n                            \"Enable or disable lexical-illusion detection in comments.\",\n                        type: \"boolean\",\n                    },\n                    passive: {\n                        description:\n                            \"Enable or disable passive-voice detection in comments.\",\n                        type: \"boolean\",\n                    },\n                    so: {\n                        description:\n                            \"Enable or disable leading-'so' detection in comments.\",\n                        type: \"boolean\",\n                    },\n                    thereIs: {\n                        description:\n                            \"Enable or disable 'there is' phrasing detection in comments.\",\n                        type: \"boolean\",\n                    },\n                    tooWordy: {\n                        description:\n                            \"Enable or disable overly wordy phrase detection in comments.\",\n                        type: \"boolean\",\n                    },\n                    weasel: {\n                        description:\n                            \"Enable or disable weasel-word detection in comments.\",\n                        type: \"boolean\",\n                    },\n                    whitelist: {\n                        description:\n                            \"Allow listed terms to pass without write-good reports.\",\n                        items: {\n                            description: \"One literal term to ignore.\",\n                            type: \"string\",\n                        },\n                        type: \"array\",\n                        uniqueItems: true,\n                    },\n                },\n                type: \"object\",\n            },\n        ],\n        type: \"suggestion\",\n    },\n};\n\nexport default writeGoodCommentsRule;\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,kEAAAA,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAS5D,QAAM,OAAO;AAAA,MACT,iBAAiB;AAAA,QACb;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,QACV;AAAA,MACJ;AAAA,MACA,yBAAyB;AAAA,QACrB;AAAA,QACA;AAAA,MACJ;AAAA,MACA,sBAAsB;AAAA,QAClB;AAAA,QACA;AAAA,MACJ;AAAA,MACA,mBAAmB;AAAA,QACf;AAAA,QACA;AAAA,MACJ;AAAA,MACA,iBAAiB;AAAA,QACb;AAAA,MACJ;AAAA,MACA,kBAAkB;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,MACA,gBAAgB;AAAA,QACZ;AAAA,MACJ;AAAA,MACA,gBAAgB;AAAA,QACZ;AAAA,MACJ;AAAA,MACA,gBAAgB;AAAA,QACZ;AAAA,QACA;AAAA,MACJ;AAAA,MACA,aAAa;AAAA,QACT;AAAA,QACA;AAAA,MACJ;AAAA,MACA,iBAAiB;AAAA,QACb;AAAA,MACJ;AAAA,MACA,WAAW;AAAA,QACP;AAAA,MACJ;AAAA,MACA,kBAAkB;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,iBAAiB;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,uBAAuB;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,mBAAmB;AAAA,QACf;AAAA,MACJ;AAAA,MACA,mBAAmB,CAAC;AAAA,MACpB,kBAAkB;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,MACA,gBAAgB,CAAC;AAAA,MACjB,0BAA0B;AAAA,QACtB;AAAA,MACJ;AAAA,MACA,4BAA4B;AAAA,QACxB;AAAA,MACJ;AAAA,MACA,sBAAsB;AAAA,QAClB;AAAA,QACA;AAAA,MACJ;AAAA,MACA,0BAA0B;AAAA,QACtB;AAAA,MACJ;AAAA,MACA,wBAAwB;AAAA,QACpB;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,iBAAiB;AAAA,QACb;AAAA,QACA;AAAA,MACJ;AAAA,MACA,qBAAqB;AAAA,QACjB;AAAA,MACJ;AAAA,MACA,gBAAgB;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,gBAAgB;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,qBAAqB;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,oBAAoB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,YAAY,CAAC;AAAA,MACb,aAAa;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,mBAAmB;AAAA,QACf;AAAA,QACA;AAAA,MACJ;AAAA,MACA,wBAAwB;AAAA,QACpB;AAAA,MACJ;AAAA,MACA,kBAAkB;AAAA,QACd;AAAA,MACJ;AAAA,MACA,0BAA0B;AAAA,QACtB;AAAA,MACJ;AAAA,MACA,iBAAiB;AAAA,QACb;AAAA,QACA;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,QACV;AAAA,QACA;AAAA,MACJ;AAAA,MACA,mBAAmB;AAAA,QACf;AAAA,MACJ;AAAA,MACA,oBAAoB,CAAC;AAAA,MACrB,YAAY;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,oBAAoB,CAAC;AAAA,MACrB,wBAAwB;AAAA,QACpB;AAAA,MACJ;AAAA,MACA,aAAa;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,eAAe,CAAC;AAAA,MAChB,qBAAqB;AAAA,QACjB;AAAA,QACA;AAAA,MACJ;AAAA,MACA,mBAAmB;AAAA,QACf;AAAA,QACA;AAAA,MACJ;AAAA,MACA,mBAAmB;AAAA,QACf;AAAA,QACA;AAAA,MACJ;AAAA,MACA,oBAAoB,CAAC;AAAA,MACrB,oBAAoB;AAAA,QAChB;AAAA,MACJ;AAAA,MACA,gBAAgB;AAAA,QACZ;AAAA,MACJ;AAAA,MACA,SAAS,CAAC;AAAA,MACV,kBAAkB;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,MACA,SAAS,CAAC;AAAA,MACV,mBAAmB;AAAA,QACf;AAAA,QACA;AAAA,MACJ;AAAA,MACA,kBAAkB;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,QACV;AAAA,QACA;AAAA,MACJ;AAAA,MACA,kBAAkB;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,MACA,eAAe;AAAA,QACX;AAAA,QACA;AAAA,MACJ;AAAA,MACA,kBAAkB;AAAA,QACd;AAAA,MACJ;AAAA,MACA,eAAe;AAAA,QACX;AAAA,MACJ;AAAA,MACA,mBAAmB,CAAC;AAAA,MACpB,SAAS;AAAA,QACL;AAAA,MACJ;AAAA,MACA,UAAU;AAAA,QACN;AAAA,QACA;AAAA,MACJ;AAAA,MACA,oBAAoB;AAAA,QAChB;AAAA,QACA;AAAA,MACJ;AAAA,MACA,aAAa;AAAA,QACT;AAAA,MACJ;AAAA,MACA,iBAAiB;AAAA,QACb;AAAA,MACJ;AAAA,MACA,oBAAoB;AAAA,QAChB;AAAA,MACJ;AAAA,MACA,eAAe;AAAA,QACX;AAAA,MACJ;AAAA,MACA,aAAa;AAAA,QACT;AAAA,MACJ;AAAA,MACA,OAAO,CAAC;AAAA,MACR,YAAY;AAAA,QACR;AAAA,QACA;AAAA,MACJ;AAAA,MACA,iBAAiB;AAAA,QACb;AAAA,QACA;AAAA,MACJ;AAAA,MACA,0BAA0B;AAAA,QACtB;AAAA,QACA;AAAA,MACJ;AAAA,MACA,iBAAiB,CAAC;AAAA,MAClB,iBAAiB;AAAA,QACb;AAAA,QACA;AAAA,MACJ;AAAA,MACA,gBAAgB,CAAC;AAAA,MACjB,gBAAgB;AAAA,QACZ;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,iBAAiB;AAAA,QACb;AAAA,MACJ;AAAA,MACA,kBAAkB;AAAA,QACd;AAAA,MACJ;AAAA,MACA,qBAAqB;AAAA,QACjB;AAAA,MACJ;AAAA,MACA,oBAAoB;AAAA,QAChB;AAAA,QACA;AAAA,MACJ;AAAA,MACA,gBAAgB;AAAA,QACZ;AAAA,QACA;AAAA,MACJ;AAAA,MACA,eAAe;AAAA,QACX;AAAA,QACA;AAAA,MACJ;AAAA,MACA,iBAAiB;AAAA,QACb;AAAA,MACJ;AAAA,IACJ;AAGA,QAAM,aAAa,OAAO,KAAK,IAAI;AAGnC,eAAW,QAAQ,YAAY;AAC3B,aAAO,OAAO,KAAK,IAAI,CAAC;AAAA,IAC5B;AACA,WAAO,OAAO,IAAI;AAYlB,QAAM,gBAAgB,oBAAI,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC;AAOD,aAAS,UAAU,KAAK;AACpB,aAAO,CAAC,cAAc,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM;AAAA,IACjD;AAOA,aAAS,QAAQC,OAAM;AACnB,aAAO,OAAO,KAAKA,KAAI,EAAE,OAAO,SAAS;AAAA,IAC7C;AASA,aAAS,UAAU,gBAAgB;AAC/B,YAAM;AAAA;AAAA;AAAA;AAAA,QAEC,OAAO,OAAO,CAAC,GAAG,IAAI;AAAA;AAE7B,iBAAW,QAAQ,OAAO,KAAK,cAAc,GAAG;AAC5C,YAAI,OAAO,UAAU,eAAe,KAAK,MAAM,IAAI,GAAG;AAClD,gBAAMC,QAAO,IAAI,IAAI,eAAe,IAAI,CAAC;AAEzC,qBAAW,OAAO,KAAK,IAAI,GAAG;AAC1B,YAAAA,MAAK,IAAI,GAAG;AAAA,UAChB;AAEA,eAAK,IAAI,IAAI,OAAO,OAAO,MAAM,KAAKA,KAAI,CAAC;AAAA,QAC/C,OAAO;AACH,eAAK,IAAI,IAAI,OAAO,OAAO,MAAM,KAAK,eAAe,IAAI,CAAC,CAAC;AAAA,QAC/D;AAAA,MACJ;AAEA,aAAO,OAAO,OAAO,IAAI;AAAA,IAC7B;AAEA,IAAAF,SAAQ,OAAO;AACf,IAAAA,SAAQ,UAAU;AAClB,IAAAA,SAAQ,YAAY;AAAA;AAAA;;;;;;;;ACtXb,aAAS,kBAAkB,cAAcG,OAAM;AAClD,YAAM;;QAA4CA,MAAK,MAAO,CAAC;;AAE/D,UAAI,QAAQ;AACZ,UAAI,QAAQ;AACZ,SAAG;AACC,gBAAQ;AACR,mBAAW,cAAc,MAAM,aAAa;AACxC,gBAAM;;YACF,WAAW,MAAM;;AAGrB,cAAI,MAAM,CAAC,KAAK,YAAY,WAAW,MAAM,CAAC,GAAG;AAC7C,oBAAQ;AACR,oBAAQ;AACR;UAChB;QACA;MACA,SAAa;AAET,aAAO;IACX;ACnBO,aAAS,aAAa,cAAc,YAAY;AACnD,UAAI,OAAO;AAEX,UAAI,QAAQ;AAEZ,UAAI,OAAO,eAAe,UAAU;AAChC,eAAO;MACf,OAAW;AACH,eAAO,WAAW;AAClB,gBAAQ,kBAAkB,OAAO,UAAU;MACnD;AAEI,aAAO,SAAS,MAAM;AAClB,cAAM,WAAW,MAAM,IAAI,IAAI,IAAI;AACnC,YAAI,YAAY,MAAM;AAClB,iBAAO;QACnB;AACQ,gBAAQ,MAAM;MACtB;AAEI,aAAO;IACX;ACRA,aAAS,OAAO,GAAG;AACf,aAAO,CAAC,UAAU,CAAC,EAAE,KAAK;IAC9B;AASA,aAAS,2BAA2B,OAAOC,QAAO;AAC9C,aAAO,MAAM,SAAS,gBAAgB,MAAM,UAAUA;IAC1D;AAOO,aAAS,aAAa,OAAO;AAChC,aAAO,2BAA2B,OAAO,IAAI;IACjD;AAOO,aAAS,aAAa,OAAO;AAChC,aAAO,2BAA2B,OAAO,GAAG;IAChD;AAOO,aAAS,iBAAiB,OAAO;AACpC,aAAO,2BAA2B,OAAO,GAAG;IAChD;AAOO,aAAS,aAAa,OAAO;AAChC,aAAO,2BAA2B,OAAO,GAAG;IAChD;AAOO,aAAS,oBAAoB,OAAO;AACvC,aAAO,2BAA2B,OAAO,GAAG;IAChD;AAOO,aAAS,oBAAoB,OAAO;AACvC,aAAO,2BAA2B,OAAO,GAAG;IAChD;AAOO,aAAS,sBAAsB,OAAO;AACzC,aAAO,2BAA2B,OAAO,GAAG;IAChD;AAOO,aAAS,sBAAsB,OAAO;AACzC,aAAO,2BAA2B,OAAO,GAAG;IAChD;AAOO,aAAS,oBAAoB,OAAO;AACvC,aAAO,2BAA2B,OAAO,GAAG;IAChD;AAOO,aAAS,oBAAoB,OAAO;AACvC,aAAO,2BAA2B,OAAO,GAAG;IAChD;AAOO,aAAS,eAAe,OAAO;AAClC,aAAO,CAAC,SAAS,QAAQ,SAAS,EAAE,SAAS,MAAM,IAAI;IAC3D;AAEY,QAAC,kBAAkB,OAAO,YAAY;AACtC,QAAC,kBAAkB,OAAO,YAAY;AACtC,QAAC,sBAAsB,OAAO,gBAAgB;AAC9C,QAAC,kBAAkB,OAAO,YAAY;AACtC,QAAC,yBAAyB,OAAO,mBAAmB;AACpD,QAAC,yBAAyB,OAAO,mBAAmB;AACpD,QAAC,2BAA2B,OAAO,qBAAqB;AACxD,QAAC,2BAA2B,OAAO,qBAAqB;AACxD,QAAC,yBAAyB,OAAO,mBAAmB;AACpD,QAAC,yBAAyB,OAAO,mBAAmB;AACpD,QAAC,oBAAoB,OAAO,cAAc;ACpItD,aAAS,wBAAwBD,OAAM,YAAY;AAC/C,aAAOA,MAAK;;QAEF,WAAW,cAAcA,MAAK,IAAI,mBAAmB;;;QAGrD,WAAW,cAAcA,OAAM,mBAAmB;;IAEhE;AAQO,aAAS,wBAAwBA,OAAM,YAAY;AACtD,YAAM;;QAAkCA,MAAM;;AAG9C,UAAI,QAAQ;AAEZ,UAAI,MAAM;AAEV,UAAIA,MAAK,SAAS,2BAA2B;AACzC,cAAM;;UACF,WAAW,eAAeA,MAAK,MAAM,YAAY;;AAGrD,gBAAQ,WAAW,IAAI;AACvB,cAAM,WAAW,IAAI;MAC7B,WACQ,WACC,OAAO,SAAS,cACb,OAAO,SAAS,sBAChB,OAAO,SAAS,uBACtB;AACE;QAAuC,OAAO,IAAK;AACnD,cAAM,wBAAwBA,OAAM,UAAU,EAAE,IAAI;MAC5D,OAAW;AACH;QAAuCA,MAAK,IAAK;AACjD,cAAM,wBAAwBA,OAAM,UAAU,EAAE,IAAI;MAC5D;AAEI,aAAO;QACH,OAAO,EAAE,GAAG,MAAK;QACjB,KAAK,EAAE,GAAG,IAAG;MACrB;IACA;ACjDA,QAAM,eACF,OAAO,eAAe,cAChB;;MAEF,OAAO,SAAS;;QAEd;;;QAEF,OAAO,WAAW;;UAEhB;YACA,OAAO,WAAW,cAClB,SACA,CAAA;;;AAEV,QAAM,eAAe,OAAO;MACxB,oBAAI,IAAI;QACJ;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;MACR,CAAK;IACL;AACA,QAAM,cAAc,IAAI;MACpB;QACI,MAAM;QACN,MAAM;QACN,MAAM,UAAU;QAChB,MAAM,UAAU;QAChB,MAAM,UAAU;QAChB,MAAM,UAAU;QAChB,MAAM,UAAU;QAChB,MAAM,UAAU;QAChB,MAAM,UAAU;QAChB,MAAM,UAAU;QAChB,MAAM,UAAU;QAChB,MAAM,UAAU;QAChB,MAAM,UAAU;QAChB,MAAM,UAAU;QAChB,MAAM,UAAU;QAChB,MAAM,UAAU;QAChB,MAAM,UAAU;QAChB,MAAM,UAAU;QAChB,MAAM,UAAU;QAChB,OAAO,WAAW,aAAa,SAAS;QACxC;QACA;QACA,KAAK;QACL;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA,IAAI,UAAU;QACd,IAAI,UAAU;QACd,IAAI,UAAU;QACd,IAAI,UAAU;QACd,IAAI,UAAU;QACd;QACI,OAAO,oBAAoB,IAAI,EAE9B,OAAO,CAAC,MAAM,MAAM,QAAQ,EAC5B,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAClB,OAAO,CAAC,MAAM,OAAO,MAAM,UAAU;QAC1C;QACA,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB;QACA,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO;QACP;QACA;QACA;QACA;QACA,IAAI,UAAU;QACd,IAAI,UAAU;QACd,IAAI,UAAU;QACd,IAAI,UAAU;QACd;QACA,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO,UAAU;QACjB,OAAO;QACP,OAAO;QACP;MACR,EAAM,OAAO,CAAC,MAAM,OAAO,MAAM,UAAU;IAC3C;AACA,QAAM,kBAAkB,oBAAI,IAAI;MAC5B,OAAO;MACP,OAAO;MACP,OAAO;IACX,CAAC;AAGD,QAAM,gBAAgB;MAClB,CAAC,KAAK,oBAAI,IAAI,CAAC,MAAM,CAAC,CAAC;MACvB;QACI;QACA,oBAAI,IAAI;UACJ;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QACZ,CAAS;MACT;MACI,CAAC,KAAK,oBAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B;AAOA,aAAS,sBAAsB,QAAQ,MAAM;AACzC,UAAI,IAAI;AACR,cAAQ,OAAO,MAAM,YAAY,OAAO,MAAM,eAAe,MAAM,MAAM;AACrE,cAAM,IAAI,OAAO,yBAAyB,GAAG,IAAI;AACjD,YAAI,GAAG;AACH,iBAAO;QACnB;AACQ,YAAI,OAAO,eAAe,CAAC;MACnC;AACI,aAAO;IACX;AAOA,aAAS,SAAS,QAAQ,MAAM;AAC5B,YAAM,IAAI,sBAAsB,QAAQ,IAAI;AAC5C,aAAO,KAAK,QAAQ,EAAE,OAAO;IACjC;AAQA,aAAS,iBAAiB,UAAU,cAAc;AAC9C,YAAM,YAAY,CAAA;AAElB,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,EAAE,GAAG;AACtC,cAAM,cAAc,SAAS,CAAC;AAE9B,YAAI,eAAe,MAAM;AACrB,oBAAU,SAAS,IAAI;QACnC,WAAmB,YAAY,SAAS,iBAAiB;AAC7C,gBAAM,WAAW,gBAAgB,YAAY,UAAU,YAAY;AACnE,cAAI,YAAY,MAAM;AAClB,mBAAO;UACvB;AACY,oBAAU,KAAK;UAAiC,SAAS,KAAM;QAC3E,OAAe;AACH,gBAAM,UAAU,gBAAgB,aAAa,YAAY;AACzD,cAAI,WAAW,MAAM;AACjB,mBAAO;UACvB;AACY,oBAAU,KAAK,QAAQ,KAAK;QACxC;MACA;AAEI,aAAO;IACX;AAOA,aAAS,gBAAgB,UAAU;AAC/B,aACI,YAAY,QACZ,SAAS,KAAK,WAAW,KACzB,aAAa,IAAI,SAAS,IAAI,KAC9B,SAAS,QAAQ;IAEzB;AAOA,aAAS,qBAAqB,UAAU;AACpC,UAAI,SAAS,KAAK,WAAW,GAAG;AAC5B,eAAO;MACf;AACI,YAAM,MAAM,SAAS,KAAK,CAAC;AAC3B,aAAO;QACH,IAAI,UACA,IAAI,SAAS,eACZ,IAAI,OAAO,SAAS,WAAW,mBAAmB,QAAQ;MACvE;IACA;AAOA,aAAS,mBAAmB,UAAU;AAClC,YAAM,OAAO,SAAS;AAEtB,YAAM,QAAQ,KAAK,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE;AACzC,YAAM,QAAQ,KAAK,OAAO,CAAC,MAAM,EAAE,WAAU,CAAE,EAAE;AACjD,UAAI,UAAU,KAAK,QAAQ,UAAU,KAAK,QAAQ;AAE9C,eAAO;MACf;AACI,aAAO;IACX;AAQA,aAAS,sBAAsB,UAAU,cAAc;AACnD,iBAAW,OAAO,SAAS,YAAY;AACnC,YAAIA;;UAAoC,IAAI;;AAC5C,eAAOA,SAAQA,MAAK,UAAUA,MAAK,OAAO,SAAS,oBAAoB;AACnE,UAAAA,QAAOA,MAAK;QACxB;AACQ,YAAI,CAACA,SAAQ,CAACA,MAAK,QAAQ;AACvB;QACZ;AACQ,YACKA,MAAK,OAAO,SAAS,0BAClBA,MAAK,OAAO,SAASA,SACxBA,MAAK,OAAO,SAAS,sBAClBA,MAAK,OAAO,aAAaA,OAC/B;AAEE,iBAAO;QACnB;AACQ,YACIA,MAAK,OAAO,SAAS,oBACrBA,MAAK,OAAO,WAAWA,SACvBA,MAAK,SAAS,oBAChB;AACE,gBAAM,aAAa,2BAA2BA,OAAM,YAAY;AAChE,cAAI,4BAA4B,UAAU,GAAG;AAEzC,mBAAO;UACvB;QACA;MACA;AACI,aAAO;AAOP,eAAS,4BAA4B,YAAY;AAC7C,YAAI,cAAc,QAAQ,WAAW,SAAS,MAAM;AAChD,iBAAO;QACnB;AACQ,cAAM,OAAO,WAAW;AACxB,eACI,SAAS,gBACT,SAAS,UACT,SAAS,SACT,SAAS,UACT,SAAS,aACT,SAAS,WACT,SAAS,UACT,SAAS,YACT,SAAS;MAErB;IACA;AAeA,QAAM,aAAa,OAAO,OAAO;MAC7B,gBAAgBA,OAAM,cAAc;AAChC,cAAM,WAAW,iBAAiBA,MAAK,UAAU,YAAY;AAC7D,eAAO,YAAY,OAAO,EAAE,OAAO,SAAQ,IAAK;MACxD;MAEI,qBAAqBA,OAAM,cAAc;AACrC,YAAIA,MAAK,aAAa,KAAK;AACvB,iBAAO,gBAAgBA,MAAK,OAAO,YAAY;QAC3D;AACQ,eAAO;MACf;;MAGI,iBAAiBA,OAAM,cAAc;AACjC,YAAIA,MAAK,aAAa,QAAQA,MAAK,aAAa,cAAc;AAE1D,iBAAO;QACnB;AAEQ,cAAM,OAAO,gBAAgBA,MAAK,MAAM,YAAY;AACpD,cAAM,QAAQ,gBAAgBA,MAAK,OAAO,YAAY;AACtD,YAAI,QAAQ,QAAQ,SAAS,MAAM;AAC/B,kBAAQA,MAAK,UAAQ;YACjB,KAAK;AACD,qBAAO,EAAE,OAAO,KAAK,SAAS,MAAM,MAAK;;YAC7C,KAAK;AACD,qBAAO,EAAE,OAAO,KAAK,SAAS,MAAM,MAAK;;YAC7C,KAAK;AACD,qBAAO,EAAE,OAAO,KAAK,UAAU,MAAM,MAAK;YAC9C,KAAK;AACD,qBAAO,EAAE,OAAO,KAAK,UAAU,MAAM,MAAK;YAC9C,KAAK;AACD,qBAAO;gBACH;;kBACwB,KAAK;kBACL,MAAM;;cACtD;YACgB,KAAK;AACD,qBAAO;gBACH;;kBACwB,KAAK;kBACL,MAAM;;cACtD;YACgB,KAAK;AACD,qBAAO;gBACH;;kBACwB,KAAK;kBACL,MAAM;;cACtD;YACgB,KAAK;AACD,qBAAO;gBACH;;kBACwB,KAAK;kBACL,MAAM;;cACtD;YACgB,KAAK;AACD,qBAAO;gBACH;;kBACwB,KAAK;kBACL,MAAM;;cACtD;YACgB,KAAK;AACD,qBAAO;gBACH;;kBACwB,KAAK;kBACL,MAAM;;cACtD;YACgB,KAAK;AACD,qBAAO;gBACH;;kBACwB,KAAK;kBACL,MAAM;;cACtD;YACgB,KAAK;AACD,qBAAO;gBACH;;kBACwB,KAAK;kBACL,MAAM;;cACtD;YACgB,KAAK;AACD,qBAAO;gBACH;;kBACwB,KAAK;kBACL,MAAM;;cACtD;YACgB,KAAK;AACD,qBAAO;gBACH;;kBACwB,KAAK;kBACL,MAAM;;cACtD;YACgB,KAAK;AACD,qBAAO;gBACH;;kBACwB,KAAK;kBACL,MAAM;;cACtD;YACgB,KAAK;AACD,qBAAO;gBACH;;kBACwB,KAAK;kBACL,MAAM;;cACtD;YACgB,KAAK;AACD,qBAAO;gBACH;;kBACwB,KAAK;kBACL,MAAM;;cACtD;YACgB,KAAK;AACD,qBAAO;gBACH;;kBACwB,KAAK;kBACL,MAAM;;cACtD;YACgB,KAAK;AACD,qBAAO;gBACH;;kBACwB,KAAK;kBACL,MAAM;;cACtD;YACgB,KAAK;AACD,qBAAO;gBACH;;kBACwB,KAAK;kBACL,MAAM;;cACtD;UAGA;QACA;AAEQ,eAAO;MACf;MAEI,eAAeA,OAAM,cAAc;AAC/B,cAAM,aAAaA,MAAK;AACxB,cAAM,OAAO,iBAAiBA,MAAK,WAAW,YAAY;AAE1D,YAAI,QAAQ,MAAM;AACd,cAAI,WAAW,SAAS,oBAAoB;AACxC,gBAAI,WAAW,SAAS,SAAS,qBAAqB;AAClD,qBAAO;YAC3B;AACgB,kBAAM,SAAS,gBAAgB,WAAW,QAAQ,YAAY;AAC9D,gBAAI,UAAU,MAAM;AAChB,kBACI,OAAO,SAAS,SACf,OAAO,YAAYA,MAAK,WAC3B;AACE,uBAAO,EAAE,OAAO,QAAW,UAAU,KAAI;cACjE;AACoB,oBAAM,WAAW;gBACb;gBACA;cACxB;AAEoB,kBAAI,YAAY,MAAM;AAClB,sBAAM;;kBAEE,OAAO;;AAEf,sBAAM;;kBACF,SAAS;;AAEb,oBAAI,YAAY,IAAI,SAAS,UAAU,CAAC,GAAG;AACvC,yBAAO;oBACH,OAAO,SAAS,UAAU,EAAE,GAAG,IAAI;kBACnE;gBACA;AACwB,oBAAI,gBAAgB,IAAI,SAAS,UAAU,CAAC,GAAG;AAC3C,yBAAO,EAAE,OAAO,KAAK,CAAC,EAAC;gBACnD;cACA;YACA;UACA,OAAmB;AACH,kBAAM,SAAS,gBAAgB,YAAY,YAAY;AACvD,gBAAI,UAAU,MAAM;AAChB,kBAAI,OAAO,SAAS,QAAQA,MAAK,UAAU;AACvC,uBAAO,EAAE,OAAO,QAAW,UAAU,KAAI;cACjE;AACoB,oBAAM;;gBACF,OAAO;;AAEX,kBAAI,YAAY,IAAI,IAAI,GAAG;AACvB,uBAAO,EAAE,OAAO,KAAK,GAAG,IAAI,EAAC;cACrD;AACoB,kBAAI,gBAAgB,IAAI,IAAI,GAAG;AAC3B,uBAAO,EAAE,OAAO,KAAK,CAAC,EAAC;cAC/C;YACA;UACA;QACA;AAEQ,eAAO;MACf;MAEI,sBAAsBA,OAAM,cAAc;AACtC,cAAM,OAAO,gBAAgBA,MAAK,MAAM,YAAY;AACpD,YAAI,QAAQ,MAAM;AACd,iBAAO,KAAK,QACN,gBAAgBA,MAAK,YAAY,YAAY,IAC7C,gBAAgBA,MAAK,WAAW,YAAY;QAC9D;AACQ,eAAO;MACf;MAEI,oBAAoBA,OAAM,cAAc;AACpC,eAAO,gBAAgBA,MAAK,YAAY,YAAY;MAC5D;MAEI,WAAWA,OAAM,cAAc;AAC3B,YAAI,gBAAgB,MAAM;AACtB,gBAAM,WAAW,aAAa,cAAcA,KAAI;AAEhD,cAAI,YAAY,MAAM;AAElB,gBAAI,gBAAgB,QAAQ,GAAG;AAC3B,qBAAO,EAAE,OAAO,aAAa,SAAS,IAAI,EAAC;YAC/D;AAGgB,gBAAI,qBAAqB,QAAQ,GAAG;AAChC,oBAAM,MAAM,SAAS,KAAK,CAAC;AAC3B;;gBAEI,IAAI,KAAK,GAAG,SAAS;gBACvB;AACE,sBAAM,OAAO;kBACT,IAAI,KAAK;kBACT;gBAC5B;AACwB,oBACI,QACA,OAAO,KAAK,UAAU,YACtB,KAAK,UAAU,MACjB;AACE,sBAAI,sBAAsB,UAAU,YAAY,GAAG;AAE/C,2BAAO;kBACvC;gBACA;AACwB,uBAAO;cAC/B;YACA;UACA;QACA;AACQ,eAAO;MACf;MAEI,QAAQA,OAAM;AACV,cAAM;;UAEEA;;AAGR,aACK,QAAQ,SAAS,QAAQ,QAAQ,UAAU,SAC5C,QAAQ,SAAS,MACnB;AAEE,iBAAO;QACnB;AACQ,eAAO,EAAE,OAAO,QAAQ,MAAK;MACrC;MAEI,kBAAkBA,OAAM,cAAc;AAClC,cAAM,OAAO,gBAAgBA,MAAK,MAAM,YAAY;AACpD,YAAI,QAAQ,MAAM;AACd,cACKA,MAAK,aAAa,QAAQ,QAAQ,KAAK,KAAK,MAAM,QAClDA,MAAK,aAAa,QAAQ,QAAQ,KAAK,KAAK,MAAM,SAClDA,MAAK,aAAa,QAAQ,KAAK,SAAS,MAC3C;AACE,mBAAO;UACvB;AAEY,gBAAM,QAAQ,gBAAgBA,MAAK,OAAO,YAAY;AACtD,cAAI,SAAS,MAAM;AACf,mBAAO;UACvB;QACA;AAEQ,eAAO;MACf;MAEI,iBAAiBA,OAAM,cAAc;AACjC,YAAIA,MAAK,SAAS,SAAS,qBAAqB;AAC5C,iBAAO;QACnB;AACQ,cAAM,SAAS,gBAAgBA,MAAK,QAAQ,YAAY;AACxD,YAAI,UAAU,MAAM;AAChB,cAAI,OAAO,SAAS,SAAS,OAAO,YAAYA,MAAK,WAAW;AAC5D,mBAAO,EAAE,OAAO,QAAW,UAAU,KAAI;UACzD;AACY,gBAAM,WAAW,2BAA2BA,OAAM,YAAY;AAE9D,cAAI,YAAY,MAAM;AAClB,gBACI,CAAC;;cAC0B,OAAO;;cACF,SAAS;YAC7D,GACkB;AACE,qBAAO;gBACH;;kBACI,OAAO;;oBACmB,SAAS;kBAAK;;cACpE;YACA;AAEgB,uBAAW,CAAC,SAAS,OAAO,KAAK,eAAe;AAC5C,kBACI,OAAO,iBAAiB,WACxB,QAAQ;;gBAA2B,SAAS;cAAK,GACnD;AACE,uBAAO;kBACH;;oBACI,OAAO;;sBACmB,SAAS;oBAAK;;gBACxE;cACA;YACA;UACA;QACA;AACQ,eAAO;MACf;MAEI,gBAAgBA,OAAM,cAAc;AAChC,cAAM,aAAa,gBAAgBA,MAAK,YAAY,YAAY;AAChE,YAAI,cAAc,MAAM;AACpB,iBAAO,EAAE,OAAO,WAAW,MAAK;QAC5C;AACQ,eAAO;MACf;MAEI,cAAcA,OAAM,cAAc;AAC9B,cAAM,SAAS,gBAAgBA,MAAK,QAAQ,YAAY;AACxD,cAAM,OAAO,iBAAiBA,MAAK,WAAW,YAAY;AAE1D,YAAI,UAAU,QAAQ,QAAQ,MAAM;AAChC,gBAAM;;YACF,OAAO;;AAEX,cAAI,YAAY,IAAI,IAAI,GAAG;AACvB,mBAAO,EAAE,OAAO,IAAI,KAAK,GAAG,IAAI,EAAC;UACjD;QACA;AAEQ,eAAO;MACf;MAEI,iBAAiBA,OAAM,cAAc;AAEjC,cAAM,SAAS,CAAA;AAEf,mBAAW,gBAAgBA,MAAK,YAAY;AACxC,cAAI,aAAa,SAAS,YAAY;AAClC,gBAAI,aAAa,SAAS,QAAQ;AAC9B,qBAAO;YAC3B;AACgB,kBAAM,MAAM;cACR;cACA;YACpB;AACgB,kBAAMC,SAAQ,gBAAgB,aAAa,OAAO,YAAY;AAC9D,gBAAI,OAAO,QAAQA,UAAS,MAAM;AAC9B,qBAAO;YAC3B;AACgB;;cAAmC,IAAI;YAAK,IAAKA,OAAM;UACvE,WACgB,aAAa,SAAS;UAEtB,aAAa,SAAS,8BACxB;AACE,kBAAM,WAAW;cACb,aAAa;cACb;YACpB;AACgB,gBAAI,YAAY,MAAM;AAClB,qBAAO;YAC3B;AACgB,mBAAO,OAAO,QAAQ,SAAS,KAAK;UACpD,OAAmB;AACH,mBAAO;UACvB;QACA;AAEQ,eAAO,EAAE,OAAO,OAAM;MAC9B;MAEI,mBAAmBD,OAAM,cAAc;AACnC,cAAM,OAAOA,MAAK,YAAYA,MAAK,YAAY,SAAS,CAAC;AACzD,eAAO,gBAAgB,MAAM,YAAY;MACjD;MAEI,yBAAyBA,OAAM,cAAc;AACzC,cAAM,MAAM,gBAAgBA,MAAK,KAAK,YAAY;AAClD,cAAM,cAAc;UAChBA,MAAK,MAAM;UACX;QACZ;AAEQ,YAAI,OAAO,QAAQ,eAAe,MAAM;AACpC,gBAAM;;YAA+C,IAAI;;AAEzD,gBAAM,UAAUA,MAAK,MAAM,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,MAAM;AAC3D,kBAAQ,MAAMA,MAAK,MAAM,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG;AAEtD,cAAI,SAAS,OAAO,KAAK;AACrB,mBAAO,EAAE,OAAO,KAAK,SAAS,GAAG,WAAW,EAAC;UAC7D;QACA;AAEQ,eAAO;MACf;MAEI,gBAAgBA,OAAM,cAAc;AAChC,cAAM,cAAc,iBAAiBA,MAAK,aAAa,YAAY;AACnE,YAAI,eAAe,MAAM;AACrB,cAAIC,SAAQD,MAAK,OAAO,CAAC,EAAE,MAAM;AACjC,mBAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,EAAE,GAAG;AACzC,YAAAC,UAAS,YAAY,CAAC;AACtB,YAAAA;YAAgCD,MAAK,OAAO,IAAI,CAAC,EAAE,MAAM;UACzE;AACY,iBAAO,EAAE,OAAAC,OAAK;QAC1B;AACQ,eAAO;MACf;MAEI,gBAAgBD,OAAM,cAAc;AAChC,YAAIA,MAAK,aAAa,UAAU;AAE5B,iBAAO;QACnB;AACQ,YAAIA,MAAK,aAAa,QAAQ;AAC1B,iBAAO,EAAE,OAAO,OAAS;QACrC;AAEQ,cAAM,MAAM,gBAAgBA,MAAK,UAAU,YAAY;AACvD,YAAI,OAAO,MAAM;AACb,kBAAQA,MAAK,UAAQ;YACjB,KAAK;AACD,qBAAO,EAAE,OAAO;cAAsB,IAAI,MAAO;YACrD,KAAK;AACD,qBAAO,EAAE,OAAO;cAAsB,IAAI,MAAO;;YACrD,KAAK;AACD,qBAAO,EAAE,OAAO,CAAC,IAAI,MAAK;YAC9B,KAAK;AACD,qBAAO,EAAE,OAAO;cAAsB,IAAI,MAAO;YACrD,KAAK;AACD,qBAAO,EAAE,OAAO,OAAO,IAAI,MAAK;UAGpD;QACA;AAEQ,eAAO;MACf;MACI,eAAeA,OAAM,cAAc;AAC/B,eAAO,gBAAgBA,MAAK,YAAY,YAAY;MAC5D;MACI,sBAAsBA,OAAM,cAAc;AACtC,eAAO,gBAAgBA,MAAK,YAAY,YAAY;MAC5D;MACI,gBAAgBA,OAAM,cAAc;AAChC,eAAO,gBAAgBA,MAAK,YAAY,YAAY;MAC5D;MACI,oBAAoBA,OAAM,cAAc;AACpC,eAAO,gBAAgBA,MAAK,YAAY,YAAY;MAC5D;MACI,0BAA0BA,OAAM,cAAc;AAC1C,eAAO,gBAAgBA,MAAK,YAAY,YAAY;MAC5D;IACA,CAAC;AAQD,aAAS,gBAAgBA,OAAM,cAAc;AACzC,UAAIA,SAAQ,QAAQ,OAAO,eAAe,KAAK,YAAYA,MAAK,IAAI,GAAG;AACnE;;UAA4C,WAAWA,MAAK,IAAI;;YAC/BA;YAC7B;UACZ;;MACA;AACI,aAAO;IACX;AAQA,aAAS,2BAA2BA,OAAM,cAAc;AACpD,YAAM,WAAWA,MAAK,SAAS,aAAaA,MAAK,MAAMA,MAAK;AAE5D,UAAIA,MAAK,UAAU;AACf,eAAO,gBAAgB,UAAU,YAAY;MACrD;AAEI,UAAI,SAAS,SAAS,cAAc;AAChC,eAAO,EAAE,OAAO,SAAS,KAAI;MACrC;AAEI,UAAI,SAAS,SAAS,WAAW;AAC7B;;UAA2C,SAAU;UAAQ;AACzD,iBAAO,EAAE;;YAAqC,SAAU;YAAM;QAC1E;AACQ,eAAO,EAAE,OAAO,OAAO,SAAS,KAAK,EAAC;MAC9C;AAEI,aAAO;IACX;AAQO,aAAS,eAAeA,OAAM,eAAe,MAAM;AACtD,UAAI;AACA,eAAO,gBAAgBA,OAAM,YAAY;MACjD,SAAa,QAAQ;AACb,eAAO;MACf;IACA;AC/4BO,aAAS,oBAAoBA,OAAM,eAAe,MAAM;AAE3D,UAAIA,SAAQA,MAAK,SAAS,aAAaA,MAAK,UAAU,MAAM;AACxD,cAAM;;UAEEA;;AAER,YAAI,QAAQ,OAAO;AACf,iBAAO,IAAI,QAAQ,MAAM,OAAO,IAAI,QAAQ,MAAM,KAAK;QACnE;AACQ,YAAI,QAAQ,QAAQ;AAChB,iBAAO,QAAQ;QAC3B;MACA;AAEI,YAAM,YAAY,eAAeA,OAAM,YAAY;AAEnD,UAAI,WAAW;AAEX,YAAI;AACA,iBAAO,OAAO,UAAU,KAAK;QACzC,QAAgB;QAEhB;MACA;AAEI,aAAO;IACX;AC1BO,aAAS,gBAAgBA,OAAM,cAAc;AAChD,cAAQA,MAAK,MAAI;QACb,KAAK;AACD,cAAIA,MAAK,UAAU;AACf,mBAAO,oBAAoBA,MAAK,UAAU,YAAY;UACtE;AACY,cAAIA,MAAK,SAAS,SAAS,qBAAqB;AAC5C,mBAAO;UACvB;AACY;;YAA2CA,MAAK,SAAU;;QAE9D,KAAK;QACL,KAAK;QACL,KAAK;AACD,cAAIA,MAAK,UAAU;AACf,mBAAO,oBAAoBA,MAAK,KAAK,YAAY;UACjE;AACY,cAAIA,MAAK,IAAI,SAAS,WAAW;AAC7B,mBAAO,OAAOA,MAAK,IAAI,KAAK;UAC5C;AACY,cAAIA,MAAK,IAAI,SAAS,qBAAqB;AACvC,mBAAO;UACvB;AACY;;YAA2CA,MAAK,IAAK;;MAIjE;AAEI,aAAO;IACX;AC7BO,aAAS,wBAAwBA,OAAM,YAAY;AACtD,YAAM;;QAAkCA,MAAM;;AAE9C,UAAI,CAAC,QAAQ;AACT,eAAO;MACf;AAEI,YAAM,SAAS,CAAA;AACf,YAAM,iBAAiB,OAAO,SAAS,cAAc,OAAO,UAAUA;AACtE,YAAM,gBACF,OAAO,SAAS,sBAAsB,OAAO,UAAUA;AAC3D,YAAM,qBACF,OAAO,SAAS,wBAAwB,OAAO,UAAUA;AAG7D,UAAI,iBAAiB,oBAAoB;AACrC,YAAI,OAAO,QAAQ;AACf,iBAAO,KAAK,QAAQ;QAChC;AACQ,YAAI,OAAO,IAAI,SAAS,qBAAqB;AACzC,iBAAO,KAAK,SAAS;QACjC;MACA;AACI,UAAIA,MAAK,OAAO;AACZ,eAAO,KAAK,OAAO;MAC3B;AACI,UAAIA,MAAK,WAAW;AAChB,eAAO,KAAK,WAAW;MAC/B;AAGI,UAAI,kBAAkB,eAAe;AACjC,YAAI,OAAO,SAAS,eAAe;AAC/B,iBAAO;QACnB;AACQ,YAAI,OAAO,SAAS,OAAO;AACvB,iBAAO,KAAK,QAAQ;QAChC,WAAmB,OAAO,SAAS,OAAO;AAC9B,iBAAO,KAAK,QAAQ;QAChC,OAAe;AACH,iBAAO,KAAK,QAAQ;QAChC;MACA,WAAe,oBAAoB;AAC3B,eAAO,KAAK,QAAQ;MAC5B,OAAW;AACH,YAAIA,MAAK,SAAS,2BAA2B;AACzC,iBAAO,KAAK,OAAO;QAC/B;AACQ,eAAO,KAAK,UAAU;MAC9B;AAGI,UAAI,kBAAkB,iBAAiB,oBAAoB;AACvD,YAAI,OAAO,IAAI,SAAS,qBAAqB;AACzC,iBAAO,KAAK,IAAI,OAAO,IAAI,IAAI,EAAE;QAC7C,OAAe;AACH,gBAAM,OAAO,gBAAgB,MAAM;AACnC,cAAI,MAAM;AACN,mBAAO,KAAK,IAAI,IAAI,GAAG;UACvC,WAAuB,YAAY;AACnB,kBAAM,UAAU,WAAW,QAAQ,OAAO,GAAG;AAC7C,gBAAI,CAAC,QAAQ,SAAS,IAAI,GAAG;AACzB,qBAAO,KAAK,IAAI,OAAO,GAAG;YAC9C;UACA;QACA;MACA,WAAe,MAAMA,KAAI,GAAG;AACpB,eAAO,KAAK,IAAIA,MAAK,GAAG,IAAI,GAAG;MACvC,WACQ,OAAO,SAAS,wBAChB,OAAO,MACP,OAAO,GAAG,SAAS,cACrB;AACE,eAAO,KAAK,IAAI,OAAO,GAAG,IAAI,GAAG;MACzC,YACS,OAAO,SAAS,0BACb,OAAO,SAAS,wBACpB,OAAO,QACP,OAAO,KAAK,SAAS,cACvB;AACE,eAAO,KAAK,IAAI,OAAO,KAAK,IAAI,GAAG;MAC3C,WACQ,OAAO,SAAS,8BAChB,OAAO,gBAAgBA,OACzB;AACE,eAAO,KAAK,WAAW;MAC/B;AAEI,aAAO,OAAO,KAAK,GAAG;IAC1B;AAMA,aAAS,MAAMA,OAAM;AACjB,aAAO;;QAC+DA,MAC7D;MACb;IACA;ACxGA,QAAM,0BAA0B,OAAO;MACnC,oBAAI,IAAI;QACJ;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;MACR,CAAK;IACL;AACA,QAAM,yBAAyB,OAAO,OAAO,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;AAO1E,aAAS,OAAO,GAAG;AACf,aAAO,MAAM,QAAQ,OAAO,MAAM,YAAY,OAAO,EAAE,SAAS;IACpE;AAEA,QAAM,UAAU,OAAO;MACnB,OAAO,OAAO,uBAAO,OAAO,IAAI,GAAG;;;;;;QAM/B,OAAOA,OAAM,SAAS,aAAa;AAC/B,gBAAM,EAAE,KAAI,IAAKA;AAEjB,cAAI;UAA4B,KAAM,IAAI,MAAO,YAAY;AACzD;;cAA2B,KAAM,IAAI;gBACjCA;gBACA;gBACA;cACpB;;UACA;AAEY,iBAAO,KAAK,eAAeA,OAAM,SAAS,WAAW;QACjE;;;;;;QAOQ,eAAeA,OAAM,SAAS,aAAa;AACvC,gBAAM,EAAE,KAAI,IAAKA;AAEjB;kBAAW;;YACP,YAAY,IAAI,KAAKE,kBAAAA,QAAQF,KAAI;YAClC;AACC,kBAAMC,SAAQD,MAAK,GAAG;AAEtB,gBAAI,MAAM,QAAQC,MAAK,GAAG;AACtB,yBAAW,WAAWA,QAAO;AACzB,oBACI,OAAO,OAAO,KACd,KAAK,OAAO,SAAS,SAAS,WAAW,GAC3C;AACE,yBAAO;gBACnC;cACA;YACA,WACoB,OAAOA,MAAK,KACZ,KAAK,OAAOA,QAAO,SAAS,WAAW,GACzC;AACE,qBAAO;YAC3B;UACA;AAEY,iBAAO;QACnB;QAEQ,0BAA0B;AACtB,iBAAO;QACnB;QACQ,uBAAuB;AACnB,iBAAO;QACnB;QACQ,kBAAkB;AACd,iBAAO;QACnB;;;;;;QAMQ,iBAAiBD,OAAM,SAAS,aAAa;AACzC,cACI,QAAQ,kCACR,wBAAwB,IAAIA,MAAK,QAAQ,MACxCA,MAAK,KAAK,SAAS,aAAaA,MAAK,MAAM,SAAS,YACvD;AACE,mBAAO;UACvB;AACY,iBAAO,KAAK,eAAeA,OAAM,SAAS,WAAW;QACjE;QACQ,iBAAiB;AACb,iBAAO;QACnB;QACQ,qBAAqB;AACjB,iBAAO;QACnB;QACQ,mBAAmB;AACf,iBAAO;QACnB;;;;;;QAMQ,iBAAiBA,OAAM,SAAS,aAAa;AACzC,cAAI,QAAQ,iBAAiB;AACzB,mBAAO;UACvB;AACY,cACI,QAAQ,kCACRA,MAAK,YACLA,MAAK,SAAS,SAAS,WACzB;AACE,mBAAO;UACvB;AACY,iBAAO,KAAK,eAAeA,OAAM,SAAS,WAAW;QACjE;;;;;;QAMQ,iBAAiBA,OAAM,SAAS,aAAa;AACzC,cACI,QAAQ,kCACRA,MAAK,YACLA,MAAK,IAAI,SAAS,WACpB;AACE,mBAAO;UACvB;AACY,iBAAO,KAAK,eAAeA,OAAM,SAAS,WAAW;QACjE;QACQ,gBAAgB;AACZ,iBAAO;QACnB;;;;;;QAMQ,SAASA,OAAM,SAAS,aAAa;AACjC,cACI,QAAQ,kCACRA,MAAK,YACLA,MAAK,IAAI,SAAS,WACpB;AACE,mBAAO;UACvB;AACY,iBAAO,KAAK,eAAeA,OAAM,SAAS,WAAW;QACjE;;;;;;QAMQ,mBAAmBA,OAAM,SAAS,aAAa;AAC3C,cACI,QAAQ,kCACRA,MAAK,YACLA,MAAK,IAAI,SAAS,WACpB;AACE,mBAAO;UACvB;AACY,iBAAO,KAAK,eAAeA,OAAM,SAAS,WAAW;QACjE;;;;;;QAMQ,gBAAgBA,OAAM,SAAS,aAAa;AACxC,cAAIA,MAAK,aAAa,UAAU;AAC5B,mBAAO;UACvB;AACY,cACI,QAAQ,kCACR,uBAAuB,IAAIA,MAAK,QAAQ,KACxCA,MAAK,SAAS,SAAS,WACzB;AACE,mBAAO;UACvB;AACY,iBAAO,KAAK,eAAeA,OAAM,SAAS,WAAW;QACjE;QACQ,mBAAmB;AACf,iBAAO;QACnB;QACQ,kBAAkB;AACd,iBAAO;QACnB;MACA,CAAK;IACL;AASO,aAAS,cAAcA,OAAM,YAAY,UAAU,CAAA,GAAI;AAC1D,YAAM,EAAE,kBAAkB,OAAO,iCAAiC,MAAK,IACnE;AACJ,aAAO,QAAQ;QACXA;QACA,EAAE,iBAAiB,+BAA8B;QACjD,WAAW,eAAeG,kBAAAA;MAClC;IACA;AC/NA,aAAS,qBAAqBH,OAAM,YAAY;AAC5C,YAAM;;QAAkCA,MAAM;;AAE9C,UAAI,CAAC,QAAQ;AACT,eAAO;MACf;AAEI,cAAQ,OAAO,MAAI;QACf,KAAK;QACL,KAAK;AACD,cAAI,OAAO,UAAU,WAAW,KAAK,OAAO,UAAU,CAAC,MAAMA,OAAM;AAC/D,mBAAO,WAAW;;cAEd,OAAO;;;cAIS,OACF,kBAGV,OAAO;cACX;YACpB;UACA;AACY,iBAAO;QAEX,KAAK;AACD,cAAI,OAAO,SAASA,OAAM;AACtB,mBAAO,WAAW;cACd,OAAO;cACP;YACpB;UACA;AACY,iBAAO;QAEX,KAAK;QACL,KAAK;AACD,cAAI,OAAO,SAASA,OAAM;AACtB,mBAAO,WAAW,cAAc,QAAQ,CAAC;UACzD;AACY,iBAAO;QAEX,KAAK;AACD,cAAI,OAAO,WAAWA,OAAM;AACxB,mBAAO,WAAW,cAAc,QAAQ,CAAC;UACzD;AACY,iBAAO;QAEX,KAAK;AACD,cAAI,OAAO,iBAAiBA,OAAM;AAC9B,mBAAO,WAAW,cAAc,QAAQ,CAAC;UACzD;AACY,iBAAO;QAEX,KAAK;AACD,cAAI,OAAO,WAAWA,OAAM;AACxB,mBAAO,WAAW,cAAc,QAAQ,CAAC;UACzD;AACY,iBAAO;QAEX;AACI,iBAAO;MACnB;IACA;AAsBO,aAAS,gBACZ,aACA,kBACA,oBACF;AAEE,UAAI,OAEAA,OAEA,YACA,gBACA;AACJ,UAAI,OAAO,gBAAgB,UAAU;AACjC,gBAAQ,cAAc;AACtB,QAAAA;QAAgC;AAChC;QAAwC;AACxC,YAAI,EAAE,SAAS,IAAI;AACf,gBAAM,IAAI,UAAU,uCAAuC;QACvE;MACA,OAAW;AACH,gBAAQ;AACR,QAAAA;QAAgC;AAChC;QAAwC;MAChD;AAEI,UACIA,SAAQ;MAERA,MAAK,UAAU;MAEdA,MAAK,OAAO,SAAS,iBAAiBA,MAAK,OAAO,UAAUA,OAC/D;AACE,eAAO;MACf;AAEI,uBAAiB,kBAAkBA;AACnC,SAAG;AACC,yBAAiB,WAAW,eAAe,cAAc;AACzD,0BAAkB,WAAW,cAAc,eAAe;MAClE,SACQ,kBAAkB,QAClB,mBAAmB,QACnB,oBAAoB,cAAc,KAClC,oBAAoB,eAAe;MAEnC,mBAAmB,qBAAqBA,OAAM,UAAU,KACxD,EAAE,QAAQ;AAGd,aAAO,UAAU;IACrB;ACpJA,QAAM,cAAc;AAGpB,QAAM,WAAW,oBAAI,QAAO;AAQ5B,aAAS,UAAU,KAAKI,QAAO;AAC3B,UAAI,UAAU;AACd,eAAS,IAAIA,SAAQ,GAAG,KAAK,KAAK,IAAI,WAAW,CAAC,MAAM,IAAM,EAAE,GAAG;AAC/D,kBAAU,CAAC;MACnB;AACI,aAAO;IACX;AASA,aAAS,SAAS,SAAS,KAAK,aAAa;AACzC,YAAM,SAAS,CAAA;AACf,UAAIA,SAAQ;AAOZ,eAAS,SAAS,KAAKC,QAAO;AAC1B,gBAAQ,KAAG;UACP,KAAK;AACD,mBAAO;UACX,KAAK;AACD,mBAAOA,OAAM,CAAC;UAClB,KAAK;AACD,mBAAO,IAAI,MAAM,GAAGA,OAAM,KAAK;UACnC,KAAK;AACD,mBAAO,IAAI,MAAMA,OAAM,QAAQA,OAAM,CAAC,EAAE,MAAM;UAClD,SAAS;AACL,kBAAM,IAAI,IAAI,MAAM,CAAC;AACrB,gBAAI,KAAKA,QAAO;AACZ,qBAAOA;;gBAA0B;cAAC;YACtD;AACgB,mBAAO;UACvB;QACA;MACA;AAEI,iBAAWA,UAAS,QAAQ,QAAQ,GAAG,GAAG;AACtC,eAAO,KAAK,IAAI,MAAMD,QAAOC,OAAM,KAAK,CAAC;AACzC,eAAO;UACH,YAAY,QAAQ,aAAa,CAAC,QAAQ,SAAS,KAAKA,MAAK,CAAC;QAC1E;AACQ,QAAAD,SAAQC,OAAM,QAAQA,OAAM,CAAC,EAAE;MACvC;AACI,aAAO,KAAK,IAAI,MAAMD,MAAK,CAAC;AAE5B,aAAO,OAAO,KAAK,EAAE;IACzB;AASA,aAAS,SAAS,SAAS,KAAKE,UAAS;AACrC,YAAM,SAAS,CAAA;AACf,UAAIF,SAAQ;AAEZ,iBAAWC,UAAS,QAAQ,QAAQ,GAAG,GAAG;AACtC,eAAO,KAAK,IAAI,MAAMD,QAAOC,OAAM,KAAK,CAAC;AACzC,eAAO;UACH;YACIC;cACI;;cAC6BD;cAE7BA,OAAM;cACNA,OAAM;YAC1B;UACA;QACA;AACQ,QAAAD,SAAQC,OAAM,QAAQA,OAAM,CAAC,EAAE;MACvC;AACI,aAAO,KAAK,IAAI,MAAMD,MAAK,CAAC;AAE5B,aAAO,OAAO,KAAK,EAAE;IACzB;AAKO,QAAM,iBAAN,MAAqB;;;;;;MAMxB,YAAY,SAAS,UAAU,CAAA,GAAI;AAC/B,cAAM,EAAE,UAAU,MAAK,IAAK;AAC5B,YAAI,EAAE,mBAAmB,SAAS;AAC9B,gBAAM,IAAI,UAAU,wCAAwC;QACxE;AACQ,YAAI,CAAC,QAAQ,MAAM,SAAS,GAAG,GAAG;AAC9B,gBAAM,IAAI,MAAM,qCAAqC;QACjE;AAEQ,iBAAS,IAAI,MAAM;UACf,SAAS,IAAI,OAAO,QAAQ,QAAQ,QAAQ,KAAK;UACjD,SAAS,QAAQ,OAAO;QACpC,CAAS;MACT;;;;;;MAOI,CAAC,QAAQ,KAAK;AACV,cAAM,EAAE,SAAS,QAAO;;UAC6B,SAAS,IAAI,IAAI;;AACtE,YAAIC,SAAQ;AACZ,YAAI,YAAY;AAEhB,gBAAQ,YAAY;AACpB,gBAAQA,SAAQ,QAAQ,KAAK,GAAG,MAAM,MAAM;AACxC,cAAI,WAAW,CAAC,UAAU,KAAKA,OAAM,KAAK,GAAG;AACzC,wBAAY,QAAQ;AACpB,kBAAMA;AACN,oBAAQ,YAAY;UACpC;QACA;MACA;;;;;;MAOI,KAAK,KAAK;AACN,cAAME,MAAK,KAAK,QAAQ,GAAG;AAC3B,cAAM,MAAMA,IAAG,KAAI;AACnB,eAAO,CAAC,IAAI;MACpB;;;;;;;MAQI,CAAC,OAAO,OAAO,EAAE,KAAK,UAAU;AAC5B,eAAO,OAAO,aAAa,aACrB,SAAS,MAAM,OAAO,GAAG,GAAG,QAAQ,IACpC,SAAS,MAAM,OAAO,GAAG,GAAG,OAAO,QAAQ,CAAC;MAC1D;IACA;ACpIA,QAAM,cAAc;AAOpB,aAAS,YAAYP,OAAM;AACvB,aACI,YAAY,KAAKA,MAAK,IAAI;MAEtBA,MACF,UAAU;IAEpB;AACA,QAAM;;MAEE,SAAS,KAAK,KAAK,OAAO,cAAc;;AAGpC,QAAC,OAAO,uBAAO,MAAM;AACrB,QAAC,OAAO,uBAAO,MAAM;AACrB,QAAC,YAAY,uBAAO,WAAW;AAC/B,QAAC,MAAM,uBAAO,KAAK;AAE/B,QAAM,cAAc,EAAE,SAAS,EAAE,CAAC,IAAI,GAAG,KAAI,EAAE;AAO/C,aAAS,iBAAiB,UAAU;AAChC,aACI,YAAY,QACZ,SAAS,KAAK,WAAW,KACzB,SAAS,WAAW,KAAK,CAAC,MAAM,EAAE,QAAO,CAAE;IAEnD;AAQA,aAAS,cAAcA,OAAM;AACzB,YAAM;;QAAsCA,MAAM;;AAElD,UAAI,QAAQ;AACR,gBAAQ,OAAO,MAAI;UACf,KAAK;AACD,mBAAO,OAAO,eAAeA,SAAQ,OAAO,cAAcA;UAC9D,KAAK;AACD,mBAAO;UACX,KAAK;AACD,mBACI,OAAO,YAAY,OAAO,YAAY,SAAS,CAAC,MAAMA;UAE9D,KAAK;AACD,mBAAO;UACX,KAAK;UACL,KAAK;UACL,KAAK;UACL,KAAK;UACL,KAAK;AACD,mBAAO;UAEX;AACI,mBAAO;QACvB;MACA;AACI,aAAO;IACX;AAKO,QAAM,mBAAN,MAAuB;;;;;;;;MAQ1B,YAAY,aAAa,UAAU,CAAA,GAAI;AACnC,cAAM;UACF,OAAO;UACP,oBAAoB,CAAC,UAAU,cAAc,QAAQ,QAAQ;QACzE,IAAY;AAEJ,aAAK,gBAAgB,CAAA;AAErB,aAAK,cAAc;AAEnB,aAAK,OAAO;AAEZ,aAAK,oBAAoB,kBAAkB,MAAM,CAAC;MAC1D;;;;;;;MAQI,CAAC,wBAAwB,UAAU;AAC/B,mBAAW,OAAO,OAAO,KAAK,QAAQ,GAAG;AACrC,gBAAM,eAAe,SAAS,GAAG;AACjC,gBAAMQ,QAAO,CAAC,GAAG;AACjB,gBAAM,WAAW,KAAK,YAAY,IAAI,IAAI,GAAG;AAE7C,cAAI,iBAAiB,QAAQ,GAAG;AAC5B;UAChB;AAEY,iBAAO,KAAK;;YACiB;YACzBA;YACA;YACA;UAChB;QACA;AAEQ,mBAAW,OAAO,KAAK,mBAAmB;AAEtC,gBAAMA,QAAO,CAAA;AACb,gBAAM,WAAW,KAAK,YAAY,IAAI,IAAI,GAAG;AAE7C,cAAI,iBAAiB,QAAQ,GAAG;AAC5B;UAChB;AAEY,iBAAO,KAAK;;YACiB;YACzBA;YACA;YACA;UAChB;QACA;MACA;;;;;;;MAQI,CAAC,qBAAqB,UAAU;AAC5B,mBAAW,EAAE,MAAAR,MAAI,KAAM,KAAK,wBAAwB,WAAW,GAAG;AAC9D,gBAAM,MAAM;;YACuBA,MAAM,UAAU,CAAC;UAChE;AACY,cAAI,OAAO,QAAQ,CAAC,IAAI,UAAU,GAAG,GAAG;AACpC;UAChB;AAEY,gBAAM,eAAe,SAAS,GAAG;AACjC,gBAAMQ,QAAO,CAAC,GAAG;AAEjB,cAAI,aAAa,IAAI,GAAG;AACpB,kBAAM;cACF,MAAAR;cACA,MAAAQ;cACA,MAAM;cACN,MAAM,aAAa,IAAI;YAC3C;UACA;AACY,iBAAO,KAAK;;YACuBR;YAC/BQ;YACA;UAChB;QACA;MACA;;;;;;;MAQI,CAAC,qBAAqB,UAAU;AAC5B,cAAM;;UAAsC,KAAK,YAAY;;AAE7D,mBAAWR,SAAQ,YAAY,MAAM;AACjC,cAAI,CAAC,YAAYA,KAAI,GAAG;AACpB;UAChB;AACY,gBAAM;;YAAkCA,MAAK,OAAO;;AAEpD,cAAI,CAAC,IAAI,UAAU,QAAQ,GAAG;AAC1B;UAChB;AACY,gBAAM,eAAe,SAAS,QAAQ;AACtC,gBAAMQ,QAAO,CAAC,QAAQ;AAEtB,cAAI,aAAa,IAAI,GAAG;AACpB,kBAAM;;cAEF;;gBAA+BR;;cAC/B,MAAAQ;cACA,MAAM;cACN,MAAM,aAAa,IAAI;YAC3C;UACA;AAEY,cAAIR,MAAK,SAAS,wBAAwB;AACtC,uBAAW,OAAO,OAAO,KAAK,YAAY,GAAG;AACzC,oBAAM,iBAAiB,aAAa,GAAG;AACvC,kBAAI,eAAe,IAAI,GAAG;AACtB,sBAAM;;kBAEF;;oBAA+BA;;kBAC/B,MAAMQ,MAAK,OAAO,GAAG;kBACrB,MAAM;kBACN,MAAM,eAAe,IAAI;gBACrD;cACA;YACA;UACA,OAAmB;AACH,uBAAW,aAAaR,MAAK,YAAY;AACrC,oBAAM,MAAM,IAAI,cAAc,GAAG;AACjC,oBAAMO,MAAK,KAAK;gBACZ;gBACAC;gBACA,MACM,eACA,KAAK,SAAS,WACd,EAAE,SAAS,cAAc,GAAG,aAAY,IACxC,EAAE,SAAS,aAAY;cACrD;AAEoB,kBAAI,KAAK;AACL,uBAAOD;cAC/B,OAA2B;AACH,2BAAW,UAAUA,KAAI;AACrB,yBAAO,OAAO,OAAO,KAAK,OAAO,aAAa;AAC9C,sBACI,OAAO,KAAK,UAAU,KACtB,OAAO,SAAS,MAClB;AACE,0BAAM;kBACtC;gBACA;cACA;YACA;UACA;QACA;MACA;;;;;;;;MASI,CAAC,0BAA0BP,OAAM,UAAU;AACvC,eAAO,KAAK,2BAA2BA,OAAM,CAAA,GAAI,QAAQ;MACjE;;;;;;;;;;;MAYI,CAAC,2BAA2B,UAAUQ,OAAM,UAAU,cAAc;AAChE,YAAI,KAAK,cAAc,SAAS,QAAQ,GAAG;AACvC;QACZ;AACQ,aAAK,cAAc,KAAK,QAAQ;AAChC,YAAI;AACA,qBAAW,aAAa,SAAS,YAAY;AACzC,gBAAI,CAAC,UAAU,OAAM,GAAI;AACrB;YACpB;AACgB,kBAAMR;;cACF,UAAU;;AAGd,gBAAI,gBAAgB,SAAS,IAAI,GAAG;AAChC,oBAAM,EAAE,MAAAA,OAAM,MAAAQ,OAAM,MAAM,MAAM,MAAM,SAAS,IAAI,EAAC;YACxE;AACgB,mBAAO,KAAK,2BAA2BR,OAAMQ,OAAM,QAAQ;UAC3E;QACA,UAAS;AACG,eAAK,cAAc,IAAG;QAClC;MACA;;;;;;;;;;;MAYI,CAAC,2BAA2B,UAAUA,OAAM,UAAU;AAClD,YAAIR,QAAO;AACX,eAAO,cAAcA,KAAI,GAAG;AACxB,UAAAA,QAAOA,MAAK;QACxB;AAEQ,cAAM;;UAAkCA,MAAM;;AAC9C,YAAI,CAAC,QAAQ;AACT;QACZ;AACQ,YAAI,OAAO,SAAS,oBAAoB;AACpC,cAAI,OAAO,WAAWA,OAAM;AACxB,kBAAM,MAAM,gBAAgB,MAAM;AAClC,gBAAI,OAAO,QAAQ,CAAC,IAAI,UAAU,GAAG,GAAG;AACpC;YACpB;AAEgB,YAAAQ,QAAOA,MAAK,OAAO,GAAG;AACtB,kBAAM,eAAe,SAAS,GAAG;AACjC,gBAAI,aAAa,IAAI,GAAG;AACpB,oBAAM;gBACF,MAAM;gBACN,MAAAA;gBACA,MAAM;gBACN,MAAM,aAAa,IAAI;cAC/C;YACA;AACgB,mBAAO,KAAK;cACR;cACAA;cACA;YACpB;UACA;AACY;QACZ;AACQ,YAAI,OAAO,SAAS,kBAAkB;AAClC,cAAI,OAAO,WAAWR,SAAQ,SAAS,IAAI,GAAG;AAC1C,kBAAM,EAAE,MAAM,QAAQ,MAAAQ,OAAM,MAAM,MAAM,MAAM,SAAS,IAAI,EAAC;UAC5E;AACY;QACZ;AACQ,YAAI,OAAO,SAAS,iBAAiB;AACjC,cAAI,OAAO,WAAWR,SAAQ,SAAS,SAAS,GAAG;AAC/C,kBAAM;cACF,MAAM;cACN,MAAAQ;cACA,MAAM;cACN,MAAM,SAAS,SAAS;YAC5C;UACA;AACY;QACZ;AACQ,YAAI,OAAO,SAAS,wBAAwB;AACxC,cAAI,OAAO,UAAUR,OAAM;AACvB,mBAAO,KAAK,sBAAsB,OAAO,MAAMQ,OAAM,QAAQ;AAC7D,mBAAO,KAAK,2BAA2B,QAAQA,OAAM,QAAQ;UAC7E;AACY;QACZ;AACQ,YAAI,OAAO,SAAS,qBAAqB;AACrC,cAAI,OAAO,UAAUR,OAAM;AACvB,mBAAO,KAAK,sBAAsB,OAAO,MAAMQ,OAAM,QAAQ;UAC7E;AACY;QACZ;AACQ,YAAI,OAAO,SAAS,sBAAsB;AACtC,cAAI,OAAO,SAASR,OAAM;AACtB,mBAAO,KAAK,sBAAsB,OAAO,IAAIQ,OAAM,QAAQ;UAC3E;QACA;MACA;;;;;;;;;;MAWI,CAAC,sBAAsB,aAAaA,OAAM,UAAU;AAChD,YAAI,YAAY,SAAS,cAAc;AACnC,gBAAM,WAAW,aAAa,KAAK,aAAa,WAAW;AAC3D,cAAI,YAAY,MAAM;AAClB,mBAAO,KAAK;cACR;cACAA;cACA;cACA;YACpB;UACA;AACY;QACZ;AACQ,YAAI,YAAY,SAAS,iBAAiB;AACtC,qBAAW,YAAY,YAAY,YAAY;AAC3C,kBAAM,MAAM;;cAC2B;YACvD;AAEgB,gBAAI,OAAO,QAAQ,CAAC,IAAI,UAAU,GAAG,GAAG;AACpC;YACpB;AAEgB,kBAAM,WAAWA,MAAK,OAAO,GAAG;AAChC,kBAAM,eAAe,SAAS,GAAG;AACjC,gBAAI,aAAa,IAAI,GAAG;AACpB,oBAAM;gBACF;;kBAA+B;;gBAC/B,MAAM;gBACN,MAAM;gBACN,MAAM,aAAa,IAAI;cAC/C;YACA;AACgB,mBAAO,KAAK;;cAC2B,SAAU;cAC7C;cACA;YACpB;UACA;AACY;QACZ;AACQ,YAAI,YAAY,SAAS,qBAAqB;AAC1C,iBAAO,KAAK,sBAAsB,YAAY,MAAMA,OAAM,QAAQ;QAC9E;MACA;;;;;;;;;;MAWI,CAAC,yBAAyB,eAAeA,OAAM,UAAU;AACrD,cAAM,OAAO,cAAc;AAE3B,YAAI,SAAS,qBAAqB,SAAS,0BAA0B;AACjE,gBAAM,MACF,SAAS,2BACH,YACA,cAAc,SAAS,SAAS,eAChC,cAAc,SAAS,OACvB,cAAc,SAAS;AACjC,cAAI,CAAC,IAAI,UAAU,GAAG,GAAG;AACrB;UAChB;AAEY,UAAAA,QAAOA,MAAK,OAAO,GAAG;AACtB,gBAAM,eAAe,SAAS,GAAG;AACjC,cAAI,aAAa,IAAI,GAAG;AACpB,kBAAM;cACF;;gBAA+B;;cAC/B,MAAAA;cACA,MAAM;cACN,MAAM,aAAa,IAAI;YAC3C;UACA;AACY,iBAAO,KAAK;;YAEJ,aAAa,KAAK,aAAa,cAAc,KAAK;YAEtDA;YACA;YACA;UAChB;AAEY;QACZ;AAEQ,YAAI,SAAS,4BAA4B;AACrC,iBAAO,KAAK;;YAEJ,aAAa,KAAK,aAAa,cAAc,KAAK;YAEtDA;YACA;YACA;UAChB;AACY;QACZ;AAEQ,YAAI,SAAS,mBAAmB;AAC5B,gBAAM,MACF,cAAc,MAAM,SAAS,eACvB,cAAc,MAAM,OACpB,cAAc,MAAM;AAC9B,cAAI,CAAC,IAAI,UAAU,GAAG,GAAG;AACrB;UAChB;AAEY,UAAAA,QAAOA,MAAK,OAAO,GAAG;AACtB,gBAAM,eAAe,SAAS,GAAG;AACjC,cAAI,aAAa,IAAI,GAAG;AACpB,kBAAM;cACF;;gBAA+B;;cAC/B,MAAAA;cACA,MAAM;cACN,MAAM,aAAa,IAAI;YAC3C;UACA;QACA;MACA;IACA;AAEA,qBAAiB,OAAO;AACxB,qBAAiB,OAAO;AACxB,qBAAiB,YAAY;AAC7B,qBAAiB,MAAM;AAQvB,aAAS,cAAc,MAAMJ,QAAO;AAChC,aAAO,EAAEA,WAAU,KAAK,SAAS;IACrC;ACnfA,QAAAA,SAAe;MACX;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxGA;AAAA,sFAAAK,UAAA;AAAA;AACA,QAAI,kBAAmBA,YAAQA,SAAK,oBAAqB,OAAO,UAAU,SAAS,GAAG,GAAG,GAAG,IAAI;AAC5F,UAAI,OAAO,OAAW,MAAK;AAC3B,UAAI,OAAO,OAAO,yBAAyB,GAAG,CAAC;AAC/C,UAAI,CAAC,SAAS,SAAS,OAAO,CAAC,EAAE,aAAa,KAAK,YAAY,KAAK,eAAe;AACjF,eAAO,EAAE,YAAY,MAAM,KAAK,WAAW;AAAE,iBAAO,EAAE,CAAC;AAAA,QAAG,EAAE;AAAA,MAC9D;AACA,aAAO,eAAe,GAAG,IAAI,IAAI;AAAA,IACrC,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI;AACxB,UAAI,OAAO,OAAW,MAAK;AAC3B,QAAE,EAAE,IAAI,EAAE,CAAC;AAAA,IACf;AACA,QAAI,qBAAsBA,YAAQA,SAAK,uBAAwB,OAAO,UAAU,SAAS,GAAG,GAAG;AAC3F,aAAO,eAAe,GAAG,WAAW,EAAE,YAAY,MAAM,OAAO,EAAE,CAAC;AAAA,IACtE,KAAK,SAAS,GAAG,GAAG;AAChB,QAAE,SAAS,IAAI;AAAA,IACnB;AACA,QAAI,eAAgBA,YAAQA,SAAK,gBAAkB,4BAAY;AAC3D,UAAI,UAAU,SAAS,GAAG;AACtB,kBAAU,OAAO,uBAAuB,SAAUC,IAAG;AACjD,cAAI,KAAK,CAAC;AACV,mBAAS,KAAKA,GAAG,KAAI,OAAO,UAAU,eAAe,KAAKA,IAAG,CAAC,EAAG,IAAG,GAAG,MAAM,IAAI;AACjF,iBAAO;AAAA,QACX;AACA,eAAO,QAAQ,CAAC;AAAA,MACpB;AACA,aAAO,SAAU,KAAK;AAClB,YAAI,OAAO,IAAI,WAAY,QAAO;AAClC,YAAI,SAAS,CAAC;AACd,YAAI,OAAO;AAAM,mBAAS,IAAI,QAAQ,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAK,KAAI,EAAE,CAAC,MAAM,UAAW,iBAAgB,QAAQ,KAAK,EAAE,CAAC,CAAC;AAAA;AAC/H,2BAAmB,QAAQ,GAAG;AAC9B,eAAO;AAAA,MACX;AAAA,IACJ,GAAG;AACH,WAAO,eAAeD,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,kBAAkBA,SAAQ,gBAAgBA,SAAQ,sBAAsBA,SAAQ,iBAAiBA,SAAQ,kBAAkBA,SAAQ,0BAA0BA,SAAQ,0BAA0B;AACvM,QAAM,cAAc,aAAa,sBAAyC;AAM1E,IAAAA,SAAQ,0BAA0B,YAAY;AAM9C,IAAAA,SAAQ,0BAA0B,YAAY;AAQ9C,IAAAA,SAAQ,kBAAkB,YAAY;AAYtC,IAAAA,SAAQ,iBAAiB,YAAY;AAOrC,IAAAA,SAAQ,sBAAsB,YAAY;AAwB1C,IAAAA,SAAQ,gBAAgB,YAAY;AACpC,IAAAA,SAAQ,kBAAkB,YAAY;AAAA;AAAA;;;ACpGtC;AAAA,wFAAAE,UAAA;AAAA;AACA,QAAI,kBAAmBA,YAAQA,SAAK,oBAAqB,OAAO,UAAU,SAAS,GAAG,GAAG,GAAG,IAAI;AAC5F,UAAI,OAAO,OAAW,MAAK;AAC3B,UAAI,OAAO,OAAO,yBAAyB,GAAG,CAAC;AAC/C,UAAI,CAAC,SAAS,SAAS,OAAO,CAAC,EAAE,aAAa,KAAK,YAAY,KAAK,eAAe;AACjF,eAAO,EAAE,YAAY,MAAM,KAAK,WAAW;AAAE,iBAAO,EAAE,CAAC;AAAA,QAAG,EAAE;AAAA,MAC9D;AACA,aAAO,eAAe,GAAG,IAAI,IAAI;AAAA,IACrC,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI;AACxB,UAAI,OAAO,OAAW,MAAK;AAC3B,QAAE,EAAE,IAAI,EAAE,CAAC;AAAA,IACf;AACA,QAAI,qBAAsBA,YAAQA,SAAK,uBAAwB,OAAO,UAAU,SAAS,GAAG,GAAG;AAC3F,aAAO,eAAe,GAAG,WAAW,EAAE,YAAY,MAAM,OAAO,EAAE,CAAC;AAAA,IACtE,KAAK,SAAS,GAAG,GAAG;AAChB,QAAE,SAAS,IAAI;AAAA,IACnB;AACA,QAAI,eAAgBA,YAAQA,SAAK,gBAAkB,4BAAY;AAC3D,UAAI,UAAU,SAAS,GAAG;AACtB,kBAAU,OAAO,uBAAuB,SAAUC,IAAG;AACjD,cAAI,KAAK,CAAC;AACV,mBAAS,KAAKA,GAAG,KAAI,OAAO,UAAU,eAAe,KAAKA,IAAG,CAAC,EAAG,IAAG,GAAG,MAAM,IAAI;AACjF,iBAAO;AAAA,QACX;AACA,eAAO,QAAQ,CAAC;AAAA,MACpB;AACA,aAAO,SAAU,KAAK;AAClB,YAAI,OAAO,IAAI,WAAY,QAAO;AAClC,YAAI,SAAS,CAAC;AACd,YAAI,OAAO;AAAM,mBAAS,IAAI,QAAQ,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAK,KAAI,EAAE,CAAC,MAAM,UAAW,iBAAgB,QAAQ,KAAK,EAAE,CAAC,CAAC;AAAA;AAC/H,2BAAmB,QAAQ,GAAG;AAC9B,eAAO;AAAA,MACX;AAAA,IACJ,GAAG;AACH,WAAO,eAAeD,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,iBAAiB;AACzB,QAAM,cAAc,aAAa,sBAAyC;AAO1E,IAAAA,SAAQ,iBAAiB,YAAY;AAAA;AAAA;;;AC3CrC;AAAA,oFAAAE,UAAA;AAAA;AACA,QAAI,kBAAmBA,YAAQA,SAAK,oBAAqB,OAAO,UAAU,SAAS,GAAG,GAAG,GAAG,IAAI;AAC5F,UAAI,OAAO,OAAW,MAAK;AAC3B,UAAI,OAAO,OAAO,yBAAyB,GAAG,CAAC;AAC/C,UAAI,CAAC,SAAS,SAAS,OAAO,CAAC,EAAE,aAAa,KAAK,YAAY,KAAK,eAAe;AACjF,eAAO,EAAE,YAAY,MAAM,KAAK,WAAW;AAAE,iBAAO,EAAE,CAAC;AAAA,QAAG,EAAE;AAAA,MAC9D;AACA,aAAO,eAAe,GAAG,IAAI,IAAI;AAAA,IACrC,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI;AACxB,UAAI,OAAO,OAAW,MAAK;AAC3B,QAAE,EAAE,IAAI,EAAE,CAAC;AAAA,IACf;AACA,QAAI,qBAAsBA,YAAQA,SAAK,uBAAwB,OAAO,UAAU,SAAS,GAAG,GAAG;AAC3F,aAAO,eAAe,GAAG,WAAW,EAAE,YAAY,MAAM,OAAO,EAAE,CAAC;AAAA,IACtE,KAAK,SAAS,GAAG,GAAG;AAChB,QAAE,SAAS,IAAI;AAAA,IACnB;AACA,QAAI,eAAgBA,YAAQA,SAAK,gBAAkB,4BAAY;AAC3D,UAAI,UAAU,SAAS,GAAG;AACtB,kBAAU,OAAO,uBAAuB,SAAUC,IAAG;AACjD,cAAI,KAAK,CAAC;AACV,mBAAS,KAAKA,GAAG,KAAI,OAAO,UAAU,eAAe,KAAKA,IAAG,CAAC,EAAG,IAAG,GAAG,MAAM,IAAI;AACjF,iBAAO;AAAA,QACX;AACA,eAAO,QAAQ,CAAC;AAAA,MACpB;AACA,aAAO,SAAU,KAAK;AAClB,YAAI,OAAO,IAAI,WAAY,QAAO;AAClC,YAAI,SAAS,CAAC;AACd,YAAI,OAAO;AAAM,mBAAS,IAAI,QAAQ,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAK,KAAI,EAAE,CAAC,MAAM,UAAW,iBAAgB,QAAQ,KAAK,EAAE,CAAC,CAAC;AAAA;AAC/H,2BAAmB,QAAQ,GAAG;AAC9B,eAAO;AAAA,MACX;AAAA,IACJ,GAAG;AACH,WAAO,eAAeD,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,sBAAsBA,SAAQ,mBAAmBA,SAAQ,yBAAyBA,SAAQ,sBAAsBA,SAAQ,2BAA2BA,SAAQ,wBAAwBA,SAAQ,yBAAyBA,SAAQ,sBAAsBA,SAAQ,oBAAoBA,SAAQ,iBAAiBA,SAAQ,kBAAkBA,SAAQ,eAAeA,SAAQ,kBAAkBA,SAAQ,eAAeA,SAAQ,yBAAyBA,SAAQ,sBAAsBA,SAAQ,2BAA2BA,SAAQ,wBAAwBA,SAAQ,yBAAyBA,SAAQ,sBAAsBA,SAAQ,kBAAkBA,SAAQ,eAAe;AACnoB,QAAM,cAAc,aAAa,sBAAyC;AAC1E,IAAAA,SAAQ,eAAe,YAAY;AACnC,IAAAA,SAAQ,kBAAkB,YAAY;AACtC,IAAAA,SAAQ,sBAAsB,YAAY;AAC1C,IAAAA,SAAQ,yBAAyB,YAAY;AAC7C,IAAAA,SAAQ,wBAAwB,YAAY;AAC5C,IAAAA,SAAQ,2BAA2B,YAAY;AAC/C,IAAAA,SAAQ,sBAAsB,YAAY;AAC1C,IAAAA,SAAQ,yBAAyB,YAAY;AAC7C,IAAAA,SAAQ,eAAe,YAAY;AACnC,IAAAA,SAAQ,kBAAkB,YAAY;AACtC,IAAAA,SAAQ,eAAe,YAAY;AACnC,IAAAA,SAAQ,kBAAkB,YAAY;AACtC,IAAAA,SAAQ,iBAAiB,YAAY;AACrC,IAAAA,SAAQ,oBAAoB,YAAY;AACxC,IAAAA,SAAQ,sBAAsB,YAAY;AAC1C,IAAAA,SAAQ,yBAAyB,YAAY;AAC7C,IAAAA,SAAQ,wBAAwB,YAAY;AAC5C,IAAAA,SAAQ,2BAA2B,YAAY;AAC/C,IAAAA,SAAQ,sBAAsB,YAAY;AAC1C,IAAAA,SAAQ,yBAAyB,YAAY;AAC7C,IAAAA,SAAQ,mBAAmB,YAAY;AACvC,IAAAA,SAAQ,sBAAsB,YAAY;AAAA;AAAA;;;AC1D1C;AAAA,0FAAAE,UAAA;AAAA;AACA,QAAI,kBAAmBA,YAAQA,SAAK,oBAAqB,OAAO,UAAU,SAAS,GAAG,GAAG,GAAG,IAAI;AAC5F,UAAI,OAAO,OAAW,MAAK;AAC3B,UAAI,OAAO,OAAO,yBAAyB,GAAG,CAAC;AAC/C,UAAI,CAAC,SAAS,SAAS,OAAO,CAAC,EAAE,aAAa,KAAK,YAAY,KAAK,eAAe;AACjF,eAAO,EAAE,YAAY,MAAM,KAAK,WAAW;AAAE,iBAAO,EAAE,CAAC;AAAA,QAAG,EAAE;AAAA,MAC9D;AACA,aAAO,eAAe,GAAG,IAAI,IAAI;AAAA,IACrC,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI;AACxB,UAAI,OAAO,OAAW,MAAK;AAC3B,QAAE,EAAE,IAAI,EAAE,CAAC;AAAA,IACf;AACA,QAAI,qBAAsBA,YAAQA,SAAK,uBAAwB,OAAO,UAAU,SAAS,GAAG,GAAG;AAC3F,aAAO,eAAe,GAAG,WAAW,EAAE,YAAY,MAAM,OAAO,EAAE,CAAC;AAAA,IACtE,KAAK,SAAS,GAAG,GAAG;AAChB,QAAE,SAAS,IAAI;AAAA,IACnB;AACA,QAAI,eAAgBA,YAAQA,SAAK,gBAAkB,4BAAY;AAC3D,UAAI,UAAU,SAAS,GAAG;AACtB,kBAAU,OAAO,uBAAuB,SAAUC,IAAG;AACjD,cAAI,KAAK,CAAC;AACV,mBAAS,KAAKA,GAAG,KAAI,OAAO,UAAU,eAAe,KAAKA,IAAG,CAAC,EAAG,IAAG,GAAG,MAAM,IAAI;AACjF,iBAAO;AAAA,QACX;AACA,eAAO,QAAQ,CAAC;AAAA,MACpB;AACA,aAAO,SAAU,KAAK;AAClB,YAAI,OAAO,IAAI,WAAY,QAAO;AAClC,YAAI,SAAS,CAAC;AACd,YAAI,OAAO;AAAM,mBAAS,IAAI,QAAQ,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAK,KAAI,EAAE,CAAC,MAAM,UAAW,iBAAgB,QAAQ,KAAK,EAAE,CAAC,CAAC;AAAA;AAC/H,2BAAmB,QAAQ,GAAG;AAC9B,eAAO;AAAA,MACX;AAAA,IACJ,GAAG;AACH,WAAO,eAAeD,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,mBAAmB;AAE3B,QAAM,cAAc,aAAa,sBAAyC;AAC1E,QAAM,uBAAuB,YAAY,iBAAiB;AAC1D,QAAM,uBAAuB,YAAY,iBAAiB;AAC1D,QAAM,4BAA4B,YAAY,iBAAiB;AAC/D,QAAM,sBAAsB,YAAY,iBAAiB;AAMzD,IAAAA,SAAQ,mBAAmB,YAAY;AAAA;AAAA;;;AC/CvC;AAAA,uFAAAE,UAAA;AAAA;AACA,QAAI,kBAAmBA,YAAQA,SAAK,oBAAqB,OAAO,UAAU,SAAS,GAAG,GAAG,GAAG,IAAI;AAC5F,UAAI,OAAO,OAAW,MAAK;AAC3B,UAAI,OAAO,OAAO,yBAAyB,GAAG,CAAC;AAC/C,UAAI,CAAC,SAAS,SAAS,OAAO,CAAC,EAAE,aAAa,KAAK,YAAY,KAAK,eAAe;AACjF,eAAO,EAAE,YAAY,MAAM,KAAK,WAAW;AAAE,iBAAO,EAAE,CAAC;AAAA,QAAG,EAAE;AAAA,MAC9D;AACA,aAAO,eAAe,GAAG,IAAI,IAAI;AAAA,IACrC,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI;AACxB,UAAI,OAAO,OAAW,MAAK;AAC3B,QAAE,EAAE,IAAI,EAAE,CAAC;AAAA,IACf;AACA,QAAI,qBAAsBA,YAAQA,SAAK,uBAAwB,OAAO,UAAU,SAAS,GAAG,GAAG;AAC3F,aAAO,eAAe,GAAG,WAAW,EAAE,YAAY,MAAM,OAAO,EAAE,CAAC;AAAA,IACtE,KAAK,SAAS,GAAG,GAAG;AAChB,QAAE,SAAS,IAAI;AAAA,IACnB;AACA,QAAI,eAAgBA,YAAQA,SAAK,gBAAkB,4BAAY;AAC3D,UAAI,UAAU,SAAS,GAAG;AACtB,kBAAU,OAAO,uBAAuB,SAAUC,IAAG;AACjD,cAAI,KAAK,CAAC;AACV,mBAAS,KAAKA,GAAG,KAAI,OAAO,UAAU,eAAe,KAAKA,IAAG,CAAC,EAAG,IAAG,GAAG,MAAM,IAAI;AACjF,iBAAO;AAAA,QACX;AACA,eAAO,QAAQ,CAAC;AAAA,MACpB;AACA,aAAO,SAAU,KAAK;AAClB,YAAI,OAAO,IAAI,WAAY,QAAO;AAClC,YAAI,SAAS,CAAC;AACd,YAAI,OAAO;AAAM,mBAAS,IAAI,QAAQ,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAK,KAAI,EAAE,CAAC,MAAM,UAAW,iBAAgB,QAAQ,KAAK,EAAE,CAAC,CAAC;AAAA;AAC/H,2BAAmB,QAAQ,GAAG;AAC9B,eAAO;AAAA,MACX;AAAA,IACJ,GAAG;AACH,WAAO,eAAeD,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,oBAAoBA,SAAQ,eAAe;AACnD,QAAM,cAAc,aAAa,sBAAyC;AAM1E,IAAAA,SAAQ,eAAe,YAAY;AAQnC,IAAAA,SAAQ,oBAAoB,YAAY;AAAA;AAAA;;;AClDxC,IAAAE,wBAAA;AAAA,+EAAAC,UAAA;AAAA;AACA,QAAI,kBAAmBA,YAAQA,SAAK,oBAAqB,OAAO,UAAU,SAAS,GAAG,GAAG,GAAG,IAAI;AAC5F,UAAI,OAAO,OAAW,MAAK;AAC3B,UAAI,OAAO,OAAO,yBAAyB,GAAG,CAAC;AAC/C,UAAI,CAAC,SAAS,SAAS,OAAO,CAAC,EAAE,aAAa,KAAK,YAAY,KAAK,eAAe;AACjF,eAAO,EAAE,YAAY,MAAM,KAAK,WAAW;AAAE,iBAAO,EAAE,CAAC;AAAA,QAAG,EAAE;AAAA,MAC9D;AACA,aAAO,eAAe,GAAG,IAAI,IAAI;AAAA,IACrC,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI;AACxB,UAAI,OAAO,OAAW,MAAK;AAC3B,QAAE,EAAE,IAAI,EAAE,CAAC;AAAA,IACf;AACA,QAAI,eAAgBA,YAAQA,SAAK,gBAAiB,SAAS,GAAGA,UAAS;AACnE,eAAS,KAAK,EAAG,KAAI,MAAM,aAAa,CAAC,OAAO,UAAU,eAAe,KAAKA,UAAS,CAAC,EAAG,iBAAgBA,UAAS,GAAG,CAAC;AAAA,IAC5H;AACA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,iBAAa,wBAA2BA,QAAO;AAC/C,iBAAa,0BAA6BA,QAAO;AACjD,iBAAa,sBAAyBA,QAAO;AAC7C,iBAAa,4BAA+BA,QAAO;AACnD,iBAAa,yBAA4BA,QAAO;AAAA;AAAA;;;ACpBhD;AAAA,oEAAAC,UAAA;AAAA;AACA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,iCAAiCA,SAAQ,8BAA8BA,SAAQ,6BAA6BA,SAAQ,gBAAgBA,SAAQ,eAAe;AACnK,QAAM,eAAe,CAAC,aAAa,CAACC,UAASA,OAAM,SAAS;AAC5D,IAAAD,SAAQ,eAAe;AACvB,QAAM,gBAAgB,CAAC,cAAc,CAACC,UAAS,CAAC,CAACA,SAAQ,UAAU,SAASA,MAAK,IAAI;AACrF,IAAAD,SAAQ,gBAAgB;AACxB,QAAM,6BAA6B,CAAC,UAAU,eAAe;AACzD,YAAM,UAAU,OAAO,QAAQ,UAAU;AACzC,aAAO,CAACC,UAASA,OAAM,SAAS,YAC5B,QAAQ,MAAM,CAAC,CAAC,KAAKC,MAAK,MAAMD,MAAK,GAAG,MAAMC,MAAK;AAAA,IAC3D;AACA,IAAAF,SAAQ,6BAA6B;AACrC,QAAM,8BAA8B,CAAC,WAAW,eAAe;AAC3D,YAAM,UAAU,OAAO,QAAQ,UAAU;AACzC,aAAO,CAAC,UAAU,OAAO,SAAS,aAC9B,QAAQ,MAAM,CAAC,CAAC,KAAKE,MAAK,MAAM,MAAM,GAAG,MAAMA,MAAK;AAAA,IAC5D;AACA,IAAAF,SAAQ,8BAA8B;AACtC,QAAM,iCAAiC,CAAC,WAAW,eAAe,CAAC,UAAU,EAAE,GAAGA,SAAQ,6BAA6B,WAAW,UAAU,EAAE,KAAK;AACnJ,IAAAA,SAAQ,iCAAiC;AAAA;AAAA;;;ACpBzC;AAAA,iEAAAG,UAAA;AAAA;AACA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,oBAAoB;AAC5B,IAAAA,SAAQ,oBAAoB;AAK5B,IAAAA,SAAQ,oBAAoB;AAI5B,aAAS,kBAAkB,MAAM,OAAO;AACpC,aAAO,KAAK,IAAI,IAAI,SAAS,MAAM,IAAI,MAAM;AAAA,IACjD;AAAA;AAAA;;;ACdA;AAAA,qEAAAC,UAAA;AAAA;AAUA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,kBAAkBA,SAAQ,iBAAiB;AACnD,QAAI;AACJ,KAAC,SAAUC,iBAAgB;AACvB,MAAAA,gBAAe,kBAAkB,IAAI;AACrC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,cAAc,IAAI;AACjC,MAAAA,gBAAe,yBAAyB,IAAI;AAC5C,MAAAA,gBAAe,sBAAsB,IAAI;AACzC,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,kBAAkB,IAAI;AACrC,MAAAA,gBAAe,gBAAgB,IAAI;AACnC,MAAAA,gBAAe,gBAAgB,IAAI;AACnC,MAAAA,gBAAe,gBAAgB,IAAI;AACnC,MAAAA,gBAAe,aAAa,IAAI;AAChC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,WAAW,IAAI;AAC9B,MAAAA,gBAAe,kBAAkB,IAAI;AACrC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,uBAAuB,IAAI;AAC1C,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,WAAW,IAAI;AAC9B,MAAAA,gBAAe,kBAAkB,IAAI;AACrC,MAAAA,gBAAe,gBAAgB,IAAI;AACnC,MAAAA,gBAAe,sBAAsB,IAAI;AACzC,MAAAA,gBAAe,0BAA0B,IAAI;AAC7C,MAAAA,gBAAe,wBAAwB,IAAI;AAC3C,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,qBAAqB,IAAI;AACxC,MAAAA,gBAAe,gBAAgB,IAAI;AACnC,MAAAA,gBAAe,gBAAgB,IAAI;AACnC,MAAAA,gBAAe,cAAc,IAAI;AACjC,MAAAA,gBAAe,qBAAqB,IAAI;AACxC,MAAAA,gBAAe,oBAAoB,IAAI;AACvC,MAAAA,gBAAe,YAAY,IAAI;AAC/B,MAAAA,gBAAe,aAAa,IAAI;AAChC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,wBAAwB,IAAI;AAC3C,MAAAA,gBAAe,kBAAkB,IAAI;AACrC,MAAAA,gBAAe,0BAA0B,IAAI;AAC7C,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,cAAc,IAAI;AACjC,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,oBAAoB,IAAI;AACvC,MAAAA,gBAAe,YAAY,IAAI;AAC/B,MAAAA,gBAAe,oBAAoB,IAAI;AACvC,MAAAA,gBAAe,wBAAwB,IAAI;AAC3C,MAAAA,gBAAe,aAAa,IAAI;AAChC,MAAAA,gBAAe,eAAe,IAAI;AAClC,MAAAA,gBAAe,qBAAqB,IAAI;AACxC,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,oBAAoB,IAAI;AACvC,MAAAA,gBAAe,oBAAoB,IAAI;AACvC,MAAAA,gBAAe,gBAAgB,IAAI;AACnC,MAAAA,gBAAe,SAAS,IAAI;AAC5B,MAAAA,gBAAe,kBAAkB,IAAI;AACrC,MAAAA,gBAAe,SAAS,IAAI;AAC5B,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,kBAAkB,IAAI;AACrC,MAAAA,gBAAe,cAAc,IAAI;AACjC,MAAAA,gBAAe,kBAAkB,IAAI;AACrC,MAAAA,gBAAe,eAAe,IAAI;AAClC,MAAAA,gBAAe,kBAAkB,IAAI;AACrC,MAAAA,gBAAe,eAAe,IAAI;AAClC,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,SAAS,IAAI;AAC5B,MAAAA,gBAAe,UAAU,IAAI;AAC7B,MAAAA,gBAAe,oBAAoB,IAAI;AACvC,MAAAA,gBAAe,aAAa,IAAI;AAChC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,oBAAoB,IAAI;AACvC,MAAAA,gBAAe,eAAe,IAAI;AAClC,MAAAA,gBAAe,aAAa,IAAI;AAChC,MAAAA,gBAAe,OAAO,IAAI;AAC1B,MAAAA,gBAAe,YAAY,IAAI;AAC/B,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,0BAA0B,IAAI;AAC7C,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,gBAAgB,IAAI;AACnC,MAAAA,gBAAe,gBAAgB,IAAI;AACnC,MAAAA,gBAAe,cAAc,IAAI;AACjC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,kBAAkB,IAAI;AACrC,MAAAA,gBAAe,qBAAqB,IAAI;AACxC,MAAAA,gBAAe,oBAAoB,IAAI;AACvC,MAAAA,gBAAe,gBAAgB,IAAI;AACnC,MAAAA,gBAAe,eAAe,IAAI;AAClC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,4BAA4B,IAAI;AAC/C,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,4BAA4B,IAAI;AAC/C,MAAAA,gBAAe,8BAA8B,IAAI;AACjD,MAAAA,gBAAe,cAAc,IAAI;AACjC,MAAAA,gBAAe,aAAa,IAAI;AAChC,MAAAA,gBAAe,gBAAgB,IAAI;AACnC,MAAAA,gBAAe,gBAAgB,IAAI;AACnC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,kBAAkB,IAAI;AACrC,MAAAA,gBAAe,4BAA4B,IAAI;AAC/C,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,iCAAiC,IAAI;AACpD,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,kBAAkB,IAAI;AACrC,MAAAA,gBAAe,+BAA+B,IAAI;AAClD,MAAAA,gBAAe,YAAY,IAAI;AAC/B,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,cAAc,IAAI;AACjC,MAAAA,gBAAe,oBAAoB,IAAI;AACvC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,2BAA2B,IAAI;AAC9C,MAAAA,gBAAe,gBAAgB,IAAI;AACnC,MAAAA,gBAAe,2BAA2B,IAAI;AAC9C,MAAAA,gBAAe,cAAc,IAAI;AACjC,MAAAA,gBAAe,qBAAqB,IAAI;AACxC,MAAAA,gBAAe,kBAAkB,IAAI;AACrC,MAAAA,gBAAe,aAAa,IAAI;AAChC,MAAAA,gBAAe,2BAA2B,IAAI;AAC9C,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,wBAAwB,IAAI;AAC3C,MAAAA,gBAAe,qBAAqB,IAAI;AACxC,MAAAA,gBAAe,oBAAoB,IAAI;AACvC,MAAAA,gBAAe,oBAAoB,IAAI;AACvC,MAAAA,gBAAe,eAAe,IAAI;AAClC,MAAAA,gBAAe,cAAc,IAAI;AACjC,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,eAAe,IAAI;AAClC,MAAAA,gBAAe,qBAAqB,IAAI;AACxC,MAAAA,gBAAe,oBAAoB,IAAI;AACvC,MAAAA,gBAAe,8BAA8B,IAAI;AACjD,MAAAA,gBAAe,gBAAgB,IAAI;AACnC,MAAAA,gBAAe,qBAAqB,IAAI;AACxC,MAAAA,gBAAe,eAAe,IAAI;AAClC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,gBAAgB,IAAI;AACnC,MAAAA,gBAAe,qBAAqB,IAAI;AACxC,MAAAA,gBAAe,kBAAkB,IAAI;AACrC,MAAAA,gBAAe,qBAAqB,IAAI;AACxC,MAAAA,gBAAe,oBAAoB,IAAI;AACvC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,mBAAmB,IAAI;AACtC,MAAAA,gBAAe,YAAY,IAAI;AAC/B,MAAAA,gBAAe,uBAAuB,IAAI;AAC1C,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,uBAAuB,IAAI;AAC1C,MAAAA,gBAAe,YAAY,IAAI;AAC/B,MAAAA,gBAAe,aAAa,IAAI;AAChC,MAAAA,gBAAe,wBAAwB,IAAI;AAC3C,MAAAA,gBAAe,kBAAkB,IAAI;AACrC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,eAAe,IAAI;AAClC,MAAAA,gBAAe,gBAAgB,IAAI;AACnC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,4BAA4B,IAAI;AAC/C,MAAAA,gBAAe,8BAA8B,IAAI;AACjD,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,aAAa,IAAI;AAChC,MAAAA,gBAAe,iBAAiB,IAAI;AACpC,MAAAA,gBAAe,oBAAoB,IAAI;AACvC,MAAAA,gBAAe,aAAa,IAAI;AAChC,MAAAA,gBAAe,kBAAkB,IAAI;AACrC,MAAAA,gBAAe,eAAe,IAAI;AAAA,IACtC,GAAG,mBAAmBD,SAAQ,iBAAiB,iBAAiB,CAAC,EAAE;AACnE,QAAIE;AACJ,KAAC,SAAUA,kBAAiB;AACxB,MAAAA,iBAAgB,SAAS,IAAI;AAC7B,MAAAA,iBAAgB,YAAY,IAAI;AAChC,MAAAA,iBAAgB,eAAe,IAAI;AACnC,MAAAA,iBAAgB,mBAAmB,IAAI;AACvC,MAAAA,iBAAgB,SAAS,IAAI;AAC7B,MAAAA,iBAAgB,SAAS,IAAI;AAC7B,MAAAA,iBAAgB,MAAM,IAAI;AAC1B,MAAAA,iBAAgB,SAAS,IAAI;AAC7B,MAAAA,iBAAgB,YAAY,IAAI;AAChC,MAAAA,iBAAgB,mBAAmB,IAAI;AACvC,MAAAA,iBAAgB,QAAQ,IAAI;AAC5B,MAAAA,iBAAgB,UAAU,IAAI;AAC9B,MAAAA,iBAAgB,OAAO,IAAI;AAC3B,MAAAA,iBAAgB,MAAM,IAAI;AAAA,IAC9B,GAAGA,qBAAoBF,SAAQ,kBAAkBE,mBAAkB,CAAC,EAAE;AAAA;AAAA;;;ACvMtE;AAAA,sDAAAC,UAAA;AAAA;AAKA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA;;;ACL5D;AAAA,iEAAAC,UAAA;AAAA;AACA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA;;;ACD5D;AAAA,4DAAAC,UAAA;AAAA;AACA,QAAI,kBAAmBA,YAAQA,SAAK,oBAAqB,OAAO,UAAU,SAAS,GAAG,GAAG,GAAG,IAAI;AAC5F,UAAI,OAAO,OAAW,MAAK;AAC3B,UAAI,OAAO,OAAO,yBAAyB,GAAG,CAAC;AAC/C,UAAI,CAAC,SAAS,SAAS,OAAO,CAAC,EAAE,aAAa,KAAK,YAAY,KAAK,eAAe;AACjF,eAAO,EAAE,YAAY,MAAM,KAAK,WAAW;AAAE,iBAAO,EAAE,CAAC;AAAA,QAAG,EAAE;AAAA,MAC9D;AACA,aAAO,eAAe,GAAG,IAAI,IAAI;AAAA,IACrC,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI;AACxB,UAAI,OAAO,OAAW,MAAK;AAC3B,QAAE,EAAE,IAAI,EAAE,CAAC;AAAA,IACf;AACA,QAAI,qBAAsBA,YAAQA,SAAK,uBAAwB,OAAO,UAAU,SAAS,GAAG,GAAG;AAC3F,aAAO,eAAe,GAAG,WAAW,EAAE,YAAY,MAAM,OAAO,EAAE,CAAC;AAAA,IACtE,KAAK,SAAS,GAAG,GAAG;AAChB,QAAE,SAAS,IAAI;AAAA,IACnB;AACA,QAAI,eAAgBA,YAAQA,SAAK,gBAAkB,4BAAY;AAC3D,UAAI,UAAU,SAAS,GAAG;AACtB,kBAAU,OAAO,uBAAuB,SAAUC,IAAG;AACjD,cAAI,KAAK,CAAC;AACV,mBAAS,KAAKA,GAAG,KAAI,OAAO,UAAU,eAAe,KAAKA,IAAG,CAAC,EAAG,IAAG,GAAG,MAAM,IAAI;AACjF,iBAAO;AAAA,QACX;AACA,eAAO,QAAQ,CAAC;AAAA,MACpB;AACA,aAAO,SAAU,KAAK;AAClB,YAAI,OAAO,IAAI,WAAY,QAAO;AAClC,YAAI,SAAS,CAAC;AACd,YAAI,OAAO;AAAM,mBAAS,IAAI,QAAQ,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAK,KAAI,EAAE,CAAC,MAAM,UAAW,iBAAgB,QAAQ,KAAK,EAAE,CAAC,CAAC;AAAA;AAC/H,2BAAmB,QAAQ,GAAG;AAC9B,eAAO;AAAA,MACX;AAAA,IACJ,GAAG;AACH,WAAO,eAAeD,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,WAAW;AACnB,IAAAA,SAAQ,WAAW,aAAa,kBAA+B;AAAA;AAAA;;;ACpC/D;AAAA,wDAAAE,UAAA;AAAA;AACA,QAAI,kBAAmBA,YAAQA,SAAK,oBAAqB,OAAO,UAAU,SAAS,GAAG,GAAG,GAAG,IAAI;AAC5F,UAAI,OAAO,OAAW,MAAK;AAC3B,UAAI,OAAO,OAAO,yBAAyB,GAAG,CAAC;AAC/C,UAAI,CAAC,SAAS,SAAS,OAAO,CAAC,EAAE,aAAa,KAAK,YAAY,KAAK,eAAe;AACjF,eAAO,EAAE,YAAY,MAAM,KAAK,WAAW;AAAE,iBAAO,EAAE,CAAC;AAAA,QAAG,EAAE;AAAA,MAC9D;AACA,aAAO,eAAe,GAAG,IAAI,IAAI;AAAA,IACrC,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI;AACxB,UAAI,OAAO,OAAW,MAAK;AAC3B,QAAE,EAAE,IAAI,EAAE,CAAC;AAAA,IACf;AACA,QAAI,eAAgBA,YAAQA,SAAK,gBAAiB,SAAS,GAAGA,UAAS;AACnE,eAAS,KAAK,EAAG,KAAI,MAAM,aAAa,CAAC,OAAO,UAAU,eAAe,KAAKA,UAAS,CAAC,EAAG,iBAAgBA,UAAS,GAAG,CAAC;AAAA,IAC5H;AACA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,kBAAkBA,SAAQ,iBAAiB;AACnD,QAAI,aAAa;AACjB,WAAO,eAAeA,UAAS,kBAAkB,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,WAAW;AAAA,IAAgB,EAAE,CAAC;AAC7H,WAAO,eAAeA,UAAS,mBAAmB,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,WAAW;AAAA,IAAiB,EAAE,CAAC;AAC/H,iBAAa,eAAkBA,QAAO;AACtC,iBAAa,0BAA6BA,QAAO;AACjD,iBAAa,qBAAwBA,QAAO;AAAA;AAAA;;;ACtB5C,IAAAC,qBAAA;AAAA,4DAAAC,UAAA;AAAA;AACA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,WAAWA,SAAQ,kBAAkBA,SAAQ,iBAAiB;AAGtE,QAAI,UAAU;AACd,WAAO,eAAeA,UAAS,kBAAkB,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAgB,EAAE,CAAC;AAC1H,WAAO,eAAeA,UAAS,mBAAmB,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAiB,EAAE,CAAC;AAC5H,WAAO,eAAeA,UAAS,YAAY,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAU,EAAE,CAAC;AAAA;AAAA;;;ACR9G,IAAAC,sBAAA;AAAA,uEAAAC,UAAA;AAAA;AACA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,SAASA,SAAQ,kBAAkBA,SAAQ,gBAAgBA,SAAQ,iBAAiBA,SAAQ,oBAAoBA,SAAQ,eAAeA,SAAQ,gBAAgBA,SAAQ,uBAAuBA,SAAQ,sBAAsBA,SAAQ,mBAAmBA,SAAQ,2BAA2BA,SAAQ,iBAAiBA,SAAQ,aAAaA,SAAQ,uBAAuBA,SAAQ,kBAAkBA,SAAQ,sBAAsBA,SAAQ,2BAA2BA,SAAQ,kCAAkCA,SAAQ,+BAA+BA,SAAQ,+BAA+BA,SAAQ,4BAA4B;AACtmB,IAAAA,SAAQ,WAAW;AACnB,QAAM,cAAc;AACpB,QAAM,YAAY;AAClB,IAAAA,SAAQ,6BAA6B,GAAG,UAAU,6BAA6B,YAAY,gBAAgB,YAAY,EAAE,OAAO,KAAK,CAAC;AACtI,IAAAA,SAAQ,gCAAgC,GAAG,UAAU,gCAAgC,YAAY,gBAAgB,YAAY,EAAE,OAAO,KAAK,CAAC;AAC5I,IAAAA,SAAQ,gCAAgC,GAAG,UAAU,6BAA6B,YAAY,gBAAgB,YAAY,EAAE,OAAO,IAAI,CAAC;AACxI,IAAAA,SAAQ,mCAAmC,GAAG,UAAU,gCAAgC,YAAY,gBAAgB,YAAY,EAAE,OAAO,IAAI,CAAC;AAI9I,IAAAA,SAAQ,4BAA4B,GAAG,UAAU;AAAA,MAA4B,YAAY,eAAe;AAAA;AAAA;AAAA,MAGxG,EAAE,UAAU,KAAK;AAAA,IAAC;AAIlB,IAAAA,SAAQ,uBAAuB,GAAG,UAAU,4BAA4B,YAAY,eAAe,mBAAmB,EAAE,UAAU,KAAK,CAAC;AAQxI,IAAAA,SAAQ,mBAAmB,GAAG,UAAU,eAAe;AAAA,MACnD,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,IAC/B,CAAC;AACD,IAAAA,SAAQ,wBAAwB,GAAG,UAAU,cAAc,YAAY,eAAe,kBAAkB;AACxG,QAAM,gBAAgB;AAAA,MAClB,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,IAC/B;AACA,IAAAA,SAAQ,cAAc,GAAG,UAAU,eAAe,aAAa;AAC/D,QAAM,oBAAoB;AAAA,MACtB,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,IAC/B;AACA,IAAAA,SAAQ,kBAAkB,GAAG,UAAU,eAAe,iBAAiB;AACvE,IAAAA,SAAQ,4BAA4B,GAAG,UAAU,eAAe;AAAA,MAC5D,GAAG;AAAA,MACH,GAAG;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,oBAAoB,GAAG,UAAU,cAAc,YAAY,eAAe,cAAc;AAChG,IAAAA,SAAQ,uBAAuB,GAAG,UAAU,cAAc,YAAY,eAAe,iBAAiB;AACtG,IAAAA,SAAQ,wBAAwB,GAAG,UAAU,eAAe;AAAA;AAAA,MAExD,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA;AAAA,MAE3B,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA;AAAA,MAE3B,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,IAC/B,CAAC;AAID,IAAAA,SAAQ,iBAAiB,GAAG,UAAU,4BAA4B,YAAY,eAAe,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAItI,aAAS,SAASC,OAAM;AACpB,aAAQ,CAAC,CAACA,UACLA,MAAK,SAAS,YAAY,eAAe,oBACtCA,MAAK,SAAS,YAAY,eAAe,aAC7CA,MAAK,SAAS;AAAA,IACtB;AACA,IAAAD,SAAQ,gBAAgB,GAAG,UAAU,cAAc,YAAY,eAAe,UAAU;AAIxF,IAAAA,SAAQ,qBAAqB,GAAG,UAAU,cAAc,YAAY,eAAe,eAAe;AAIlG,IAAAA,SAAQ,kBAAkB,GAAG,UAAU,6BAA6B,YAAY,gBAAgB,YAAY,EAAE,OAAO,QAAQ,CAAC;AAI9H,IAAAA,SAAQ,iBAAiB,GAAG,UAAU,6BAA6B,YAAY,gBAAgB,YAAY,EAAE,OAAO,OAAO,CAAC;AAI5H,IAAAA,SAAQ,mBAAmB,GAAG,UAAU,6BAA6B,YAAY,gBAAgB,SAAS,EAAE,OAAO,SAAS,CAAC;AAC7H,IAAAA,SAAQ,UAAU,GAAG,UAAU,eAAe;AAAA,MAC1C,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,MAC3B,YAAY,eAAe;AAAA,IAC/B,CAAC;AAAA;AAAA;;;AC3GD;AAAA,kEAAAE,UAAA;AAAA;AACA,QAAI,kBAAmBA,YAAQA,SAAK,oBAAqB,OAAO,UAAU,SAAS,GAAG,GAAG,GAAG,IAAI;AAC5F,UAAI,OAAO,OAAW,MAAK;AAC3B,UAAI,OAAO,OAAO,yBAAyB,GAAG,CAAC;AAC/C,UAAI,CAAC,SAAS,SAAS,OAAO,CAAC,EAAE,aAAa,KAAK,YAAY,KAAK,eAAe;AACjF,eAAO,EAAE,YAAY,MAAM,KAAK,WAAW;AAAE,iBAAO,EAAE,CAAC;AAAA,QAAG,EAAE;AAAA,MAC9D;AACA,aAAO,eAAe,GAAG,IAAI,IAAI;AAAA,IACrC,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI;AACxB,UAAI,OAAO,OAAW,MAAK;AAC3B,QAAE,EAAE,IAAI,EAAE,CAAC;AAAA,IACf;AACA,QAAI,eAAgBA,YAAQA,SAAK,gBAAiB,SAAS,GAAGA,UAAS;AACnE,eAAS,KAAK,EAAG,KAAI,MAAM,aAAa,CAAC,OAAO,UAAU,eAAe,KAAKA,UAAS,CAAC,EAAG,iBAAgBA,UAAS,GAAG,CAAC;AAAA,IAC5H;AACA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,iBAAa,yBAA2BA,QAAO;AAC/C,iBAAa,mBAAsBA,QAAO;AAC1C,iBAAa,gBAAmBA,QAAO;AACvC,iBAAa,uBAAyBA,QAAO;AAAA;AAAA;;;ACnB7C;AAAA,yEAAAC,UAAA;AAAA;AACA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,mBAAmB;AAC3B,IAAAA,SAAQ,YAAY;AAKpB,aAAS,iBAAiB,KAAK;AAC3B,aAAO,OAAO,QAAQ,YAAY,OAAO,QAAQ,CAAC,MAAM,QAAQ,GAAG;AAAA,IACvE;AAQA,aAAS,UAAUC,SAAQ,CAAC,GAAG,SAAS,CAAC,GAAG;AAExC,YAAMC,QAAO,oBAAI,IAAI,CAAC,GAAG,OAAO,KAAKD,MAAK,GAAG,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC;AACpE,aAAO,OAAO,YAAY,CAAC,GAAGC,KAAI,EAAE,IAAI,SAAO;AAC3C,cAAM,cAAc,OAAOD;AAC3B,cAAM,eAAe,OAAO;AAC5B,cAAM,aAAaA,OAAM,GAAG;AAC5B,cAAM,cAAc,OAAO,GAAG;AAC9B,YAAIE;AACJ,YAAI,eAAe,cAAc;AAC7B,cAAI,iBAAiB,UAAU,KAAK,iBAAiB,WAAW,GAAG;AAE/D,YAAAA,SAAQ,UAAU,YAAY,WAAW;AAAA,UAC7C,OACK;AAED,YAAAA,SAAQ;AAAA,UACZ;AAAA,QACJ,WACS,aAAa;AAClB,UAAAA,SAAQ;AAAA,QACZ,OACK;AACD,UAAAA,SAAQ;AAAA,QACZ;AACA,eAAO,CAAC,KAAKA,MAAK;AAAA,MACtB,CAAC,CAAC;AAAA,IACN;AAAA;AAAA;;;AC7CA;AAAA,4EAAAC,UAAA;AAAA;AACA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,eAAe;AACvB,QAAM,cAAc;AAQpB,aAAS,aAAaC,iBAAgB,aAAa;AAE/C,YAAM,UAAU,gBAAgBA,eAAc;AAC9C,UAAI,eAAe,MAAM;AACrB,eAAO;AAAA,MACX;AAGA,cAAQ,QAAQ,CAAC,KAAK,MAAM;AAExB,YAAI,YAAY,CAAC,MAAM,QAAW;AAC9B,gBAAM,UAAU,YAAY,CAAC;AAC7B,eAAK,GAAG,YAAY,kBAAkB,OAAO,MAAM,GAAG,YAAY,kBAAkB,GAAG,GAAG;AACtF,oBAAQ,CAAC,KAAK,GAAG,YAAY,WAAW,KAAK,OAAO;AAAA,UACxD,OACK;AACD,oBAAQ,CAAC,IAAI;AAAA,UACjB;AAAA,QACJ;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AAAA;AAAA;;;AChCA;AAAA,uFAAAC,UAAA;AAAA;AACA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,0BAA0B;AAClC,aAAS,wBAAwB,QAAQ;AACrC,aAAO,CAAC,CAAC,UAAU,2CAA2C,KAAK,MAAM;AAAA,IAC7E;AAAA;AAAA;;;ACLA;AAAA,iFAAAC,UAAA;AAAA;AACA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,oBAAoB;AAC5B,QAAM,4BAA4B;AAClC,QAAM,yCAAyC;AAC/C,QAAM,+BAA+B;AACrC,aAAS,kBAAkB,SAAS,kCAAkC,OAAO;AACzE,YAAM;AAAA;AAAA,QAEN,QAAQ,cAAc,QAAQ,gBAAgB,QAAQ,MAAM;AAAA;AAW5D,UAAI,QAAQ,WAAW,gBAAgB,yBAAyB,QAC5D,QAAQ,WAAW,eAAe,yBAAyB,MAAM;AACjE,mBAAW,MAAM;AAAA,MACrB;AAGA,UAAI,QAAQ,WAAW,eAAe,WAAW,QAC7C,CAAC,iCAAiC;AAClC,mBAAW,MAAM;AAAA,MACrB;AACA,aAAO,QAAQ,WAAW;AAAA,IAC9B;AAEA,aAAS,WAAW,QAAQ;AACxB,YAAM,WAAW;AAAA,QACb;AAAA,QACA,WAAW,UAAU,WAAW;AAAA,QAChC,EAAE,GAAG,0BAA0B,yBAAyB,MAAM,KAAK;AAAA,MACvE,EAAE,OAAO,OAAO;AAChB,YAAM,IAAI,MAAM,SAAS,KAAK,IAAI,CAAC;AAAA,IACvC;AAAA;AAAA;;;ACxCA;AAAA,kFAAAC,UAAA;AAAA;AACA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA;;;ACD5D;AAAA,0EAAAC,UAAA;AAAA;AACA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,oBAAoB;AAC5B,IAAAA,SAAQ,aAAa;AAIrB,IAAAA,SAAQ,oBAAoB;AAAA,MACxB,eAAe;AAAA,MACf,cAAc,CAAC,OAAO,UAAU,sBAAsB,KAAK,YAAY,KAAK;AAAA,IAChF;AAKA,aAAS,WAAWC,QAAO,SAAS;AAChC,UAAIA,UAAS,MAAM;AACf,cAAM,IAAI,MAAM,8BAA8B,OAAO,EAAE;AAAA,MAC3D;AACA,aAAOA;AAAA,IACX;AAAA;AAAA;;;ACpBA;AAAA,2EAAAC,UAAA;AAAA;AACA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,IAAAA,SAAQ,cAAc;AACtB,QAAM,iBAAiB;AAOvB,aAAS,YAAY,YAAY;AAG7B,aAAO,SAAS,gBAAgB,EAAE,MAAM,MAAM,GAAG,KAAK,GAAG;AACrD,cAAM,eAAe,WAAW;AAAA,UAC5B,MAAM;AAAA,YACF,GAAG;AAAA,YACH,MAAM;AAAA,cACF,GAAG,KAAK;AAAA,cACR,KAAK,WAAW,IAAI;AAAA,YACxB;AAAA,UACJ;AAAA,UACA;AAAA,UACA,GAAG;AAAA,QACP,CAAC;AACD,eAAO;AAAA,MACX;AAAA,IACJ;AACA,aAAS,WAAW;AAAA,MAAE,QAAAC;AAAA;AAAA;AAAA,MAGtB,gBAAAC;AAAA,MAAgB;AAAA,MAAM;AAAA,IAAM,GAAG;AAC3B,YAAM,yBAA0B,KAAK,kBACjCA,mBACA,CAAC;AACL,aAAO;AAAA,QACH,OAAO,SAAS;AACZ,gBAAM,sBAAsB,GAAG,eAAe,cAAc,wBAAwB,QAAQ,OAAO;AACnG,iBAAOD,QAAO,SAAS,kBAAkB;AAAA,QAC7C;AAAA,QACA,gBAAAC;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAOA,gBAAY,cAAc,SAAS,YAAY,MAAM;AACjD,aAAO,WAAW,IAAI;AAAA,IAC1B;AAAA;AAAA;;;ACrDA,IAAAC,wBAAA;AAAA,qEAAAC,UAAA;AAAA;AACA,QAAI,kBAAmBA,YAAQA,SAAK,oBAAqB,OAAO,UAAU,SAAS,GAAG,GAAG,GAAG,IAAI;AAC5F,UAAI,OAAO,OAAW,MAAK;AAC3B,UAAI,OAAO,OAAO,yBAAyB,GAAG,CAAC;AAC/C,UAAI,CAAC,SAAS,SAAS,OAAO,CAAC,EAAE,aAAa,KAAK,YAAY,KAAK,eAAe;AACjF,eAAO,EAAE,YAAY,MAAM,KAAK,WAAW;AAAE,iBAAO,EAAE,CAAC;AAAA,QAAG,EAAE;AAAA,MAC9D;AACA,aAAO,eAAe,GAAG,IAAI,IAAI;AAAA,IACrC,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI;AACxB,UAAI,OAAO,OAAW,MAAK;AAC3B,QAAE,EAAE,IAAI,EAAE,CAAC;AAAA,IACf;AACA,QAAI,eAAgBA,YAAQA,SAAK,gBAAiB,SAAS,GAAGA,UAAS;AACnE,eAAS,KAAK,EAAG,KAAI,MAAM,aAAa,CAAC,OAAO,UAAU,eAAe,KAAKA,UAAS,CAAC,EAAG,iBAAgBA,UAAS,GAAG,CAAC;AAAA,IAC5H;AACA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,iBAAa,wBAA2BA,QAAO;AAC/C,iBAAa,qBAAwBA,QAAO;AAC5C,iBAAa,6BAAgCA,QAAO;AACpD,iBAAa,8BAAiCA,QAAO;AACrD,iBAAa,sBAAyBA,QAAO;AAC7C,iBAAa,uBAA0BA,QAAO;AAAA;AAAA;;;ACrB9C;AAAA,8DAAAC,UAAA;AAAA;AAOA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA;;;ACP5D;AAAA,gEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA;;;ACF5D;AAAA,mEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA;;;ACF5D;AAAA,qCAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW;AAAA,MACX,QAAU;AAAA,MACV,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,KAAO;AAAA,QACL,QAAU;AAAA,MACZ;AAAA,MACA,MAAQ;AAAA,MACR,OAAS;AAAA,MACT,SAAW;AAAA,QACT,KAAK;AAAA,UACH,OAAS;AAAA,UACT,SAAW;AAAA,QACb;AAAA,QACA,YAAY;AAAA,UACV,OAAS;AAAA,UACT,SAAW;AAAA,QACb;AAAA,QACA,kBAAkB;AAAA,QAClB,0BAA0B;AAAA,UACxB,OAAS;AAAA,UACT,SAAW;AAAA,QACb;AAAA,QACA,WAAW;AAAA,UACT,OAAS;AAAA,QACX;AAAA,QACA,eAAe;AAAA,UACb,OAAS;AAAA,UACT,SAAW;AAAA,QACb;AAAA,MACF;AAAA,MACA,eAAiB;AAAA,QACf,KAAK;AAAA,UACH,wBAAwB;AAAA,YACtB;AAAA,UACF;AAAA,UACA,OAAS;AAAA,YACP;AAAA,UACF;AAAA,UACA,WAAa;AAAA,YACX;AAAA,UACF;AAAA,UACA,QAAU;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,2BAA2B;AAAA,QAC3B,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,qBAAqB;AAAA,QACrB,KAAO;AAAA,QACP,aAAa;AAAA,QACb,MAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,2BAA2B;AAAA,QAC3B,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,oBAAoB;AAAA,QACpB,mBAAmB;AAAA,QACnB,cAAc;AAAA,QACd,0BAA0B;AAAA,QAC1B,yBAAyB;AAAA,QACzB,2BAA2B;AAAA,QAC3B,gCAAgC;AAAA,QAChC,uBAAuB;AAAA,QACvB,mBAAmB;AAAA,QACnB,MAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,kBAAkB;AAAA,QAClB,yBAAyB;AAAA,QACzB,eAAe;AAAA,QACf,aAAa;AAAA,QACb,oBAAoB;AAAA,QACpB,aAAa;AAAA,QACb,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,kBAAkB;AAAA,QAClB,kBAAkB;AAAA,QAClB,kBAAkB;AAAA,MACpB;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV,cAAc;AAAA,MAChB;AAAA,MACA,eAAe;AAAA,QACb,oCAAoC;AAAA,UAClC;AAAA,UACA;AAAA,QACF;AAAA,QACA,oBAAoB;AAAA,UAClB;AAAA,UACA;AAAA,QACF;AAAA,QACA,kEAAkE;AAAA,QAClE,kBAAkB;AAAA,UAChB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,uBAAuB;AAAA,UACrB;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,iBAAiB;AAAA,MACnB;AAAA,MACA,OAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,MACd,SAAW;AAAA,MACX,UAAY;AAAA,MACZ,MAAQ;AAAA,MACR,cAAgB;AAAA,QACd,kCAAkC;AAAA,QAClC,6BAA6B;AAAA,QAC7B,wBAAwB;AAAA,QACxB,0BAA0B;AAAA,QAC1B,gBAAgB;AAAA,QAChB,sBAAsB;AAAA,QACtB,iBAAiB;AAAA,QACjB,kCAAkC;AAAA,QAClC,wBAAwB;AAAA,QACxB,iBAAiB;AAAA,QACjB,KAAO;AAAA,QACP,eAAe;AAAA,QACf,OAAS;AAAA,QACT,wBAAwB;AAAA,QACxB,gBAAgB;AAAA,QAChB,uBAAuB;AAAA,QACvB,QAAU;AAAA,QACV,SAAW;AAAA,QACX,SAAW;AAAA,QACX,mBAAmB;AAAA,QACnB,oBAAoB;AAAA,QACpB,WAAW;AAAA,QACX,eAAe;AAAA,QACf,QAAU;AAAA,QACV,aAAe;AAAA,QACf,WAAW;AAAA,QACX,yCAAyC;AAAA,QACzC,WAAa;AAAA,QACb,mBAAmB;AAAA,QACnB,YAAc;AAAA,MAChB;AAAA,MACA,iBAAmB;AAAA,QACjB,yBAAyB;AAAA,QACzB,eAAe;AAAA,QACf,qBAAqB;AAAA,QACrB,iCAAiC;AAAA,QACjC,oBAAoB;AAAA,QACpB,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,QAClB,eAAe;AAAA,QACf,6BAA6B;AAAA,QAC7B,gBAAgB;AAAA,QAChB,IAAM;AAAA,QACN,MAAQ;AAAA,QACR,SAAW;AAAA,QACX,eAAe;AAAA,QACf,WAAW;AAAA,QACX,SAAW;AAAA,QACX,KAAO;AAAA,QACP,QAAU;AAAA,QACV,wBAAwB;AAAA,QACxB,+BAA+B;AAAA,QAC/B,6BAA6B;AAAA,QAC7B,qBAAqB;AAAA,QACrB,kBAAkB;AAAA,QAClB,wBAAwB;AAAA,QACxB,QAAU;AAAA,QACV,SAAW;AAAA,QACX,eAAe;AAAA,QACf,MAAQ;AAAA,QACR,SAAW;AAAA,QACX,KAAO;AAAA,QACP,eAAe;AAAA,QACf,MAAQ;AAAA,QACR,MAAQ;AAAA,QACR,eAAe;AAAA,QACf,eAAe;AAAA,QACf,yBAAyB;AAAA,QACzB,qBAAqB;AAAA,QACrB,QAAU;AAAA,QACV,aAAe;AAAA,QACf,2BAA2B;AAAA,QAC3B,qBAAqB;AAAA,QACrB,oBAAoB;AAAA,QACpB,4BAA4B;AAAA,QAC5B,qBAAqB;AAAA,QACrB,OAAS;AAAA,QACT,gCAAgC;AAAA,QAChC,eAAe;AAAA,QACf,UAAY;AAAA,QACZ,UAAY;AAAA,QACZ,YAAc;AAAA,QACd,uBAAuB;AAAA,QACvB,QAAU;AAAA,QACV,SAAW;AAAA,QACX,OAAS;AAAA,QACT,YAAc;AAAA,QACd,SAAW;AAAA,QACX,eAAe;AAAA,QACf,QAAU;AAAA,MACZ;AAAA,MACA,kBAAoB;AAAA,QAClB,MAAQ;AAAA,MACV;AAAA,MACA,sBAAwB;AAAA,QACtB,MAAQ;AAAA,UACN,UAAY;AAAA,QACd;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,SAAW;AAAA,MACX,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA;AAAA;;;AC9OA;AAAA,6BAAAC,UAAAC,SAAA;AAIA,QAAI,IAAI;AACR,QAAI,IAAI,IAAI;AACZ,QAAI,IAAI,IAAI;AACZ,QAAI,IAAI,IAAI;AACZ,QAAI,IAAI,IAAI;AACZ,QAAI,IAAI,IAAI;AAgBZ,IAAAA,QAAO,UAAU,SAAU,KAAK,SAAS;AACvC,gBAAU,WAAW,CAAC;AACtB,UAAI,OAAO,OAAO;AAClB,UAAI,SAAS,YAAY,IAAI,SAAS,GAAG;AACvC,eAAOC,OAAM,GAAG;AAAA,MAClB,WAAW,SAAS,YAAY,SAAS,GAAG,GAAG;AAC7C,eAAO,QAAQ,OAAO,QAAQ,GAAG,IAAI,SAAS,GAAG;AAAA,MACnD;AACA,YAAM,IAAI;AAAA,QACR,0DACE,KAAK,UAAU,GAAG;AAAA,MACtB;AAAA,IACF;AAUA,aAASA,OAAM,KAAK;AAClB,YAAM,OAAO,GAAG;AAChB,UAAI,IAAI,SAAS,KAAK;AACpB;AAAA,MACF;AACA,UAAIC,SAAQ,mIAAmI;AAAA,QAC7I;AAAA,MACF;AACA,UAAI,CAACA,QAAO;AACV;AAAA,MACF;AACA,UAAI,IAAI,WAAWA,OAAM,CAAC,CAAC;AAC3B,UAAI,QAAQA,OAAM,CAAC,KAAK,MAAM,YAAY;AAC1C,cAAQ,MAAM;AAAA,QACZ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,IAAI;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,IAAI;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,IAAI;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,IAAI;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,IAAI;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,IAAI;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT;AACE,iBAAO;AAAA,MACX;AAAA,IACF;AAUA,aAAS,SAAS,IAAI;AACpB,UAAI,QAAQ,KAAK,IAAI,EAAE;AACvB,UAAI,SAAS,GAAG;AACd,eAAO,KAAK,MAAM,KAAK,CAAC,IAAI;AAAA,MAC9B;AACA,UAAI,SAAS,GAAG;AACd,eAAO,KAAK,MAAM,KAAK,CAAC,IAAI;AAAA,MAC9B;AACA,UAAI,SAAS,GAAG;AACd,eAAO,KAAK,MAAM,KAAK,CAAC,IAAI;AAAA,MAC9B;AACA,UAAI,SAAS,GAAG;AACd,eAAO,KAAK,MAAM,KAAK,CAAC,IAAI;AAAA,MAC9B;AACA,aAAO,KAAK;AAAA,IACd;AAUA,aAAS,QAAQ,IAAI;AACnB,UAAI,QAAQ,KAAK,IAAI,EAAE;AACvB,UAAI,SAAS,GAAG;AACd,eAAO,OAAO,IAAI,OAAO,GAAG,KAAK;AAAA,MACnC;AACA,UAAI,SAAS,GAAG;AACd,eAAO,OAAO,IAAI,OAAO,GAAG,MAAM;AAAA,MACpC;AACA,UAAI,SAAS,GAAG;AACd,eAAO,OAAO,IAAI,OAAO,GAAG,QAAQ;AAAA,MACtC;AACA,UAAI,SAAS,GAAG;AACd,eAAO,OAAO,IAAI,OAAO,GAAG,QAAQ;AAAA,MACtC;AACA,aAAO,KAAK;AAAA,IACd;AAMA,aAAS,OAAO,IAAI,OAAO,GAAG,MAAM;AAClC,UAAI,WAAW,SAAS,IAAI;AAC5B,aAAO,KAAK,MAAM,KAAK,CAAC,IAAI,MAAM,QAAQ,WAAW,MAAM;AAAA,IAC7D;AAAA;AAAA;;;ACjKA;AAAA,qCAAAC,UAAAC,SAAA;AAMA,aAAS,MAAM,KAAK;AACnB,kBAAY,QAAQ;AACpB,kBAAY,UAAU;AACtB,kBAAY,SAAS;AACrB,kBAAY,UAAUC;AACtB,kBAAY,SAAS;AACrB,kBAAY,UAAU;AACtB,kBAAY,WAAW;AACvB,kBAAY,UAAU;AAEtB,aAAO,KAAK,GAAG,EAAE,QAAQ,SAAO;AAC/B,oBAAY,GAAG,IAAI,IAAI,GAAG;AAAA,MAC3B,CAAC;AAMD,kBAAY,QAAQ,CAAC;AACrB,kBAAY,QAAQ,CAAC;AAOrB,kBAAY,aAAa,CAAC;AAQ1B,eAAS,YAAY,WAAW;AAC/B,YAAI,OAAO;AAEX,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAC1C,kBAAS,QAAQ,KAAK,OAAQ,UAAU,WAAW,CAAC;AACpD,kBAAQ;AAAA,QACT;AAEA,eAAO,YAAY,OAAO,KAAK,IAAI,IAAI,IAAI,YAAY,OAAO,MAAM;AAAA,MACrE;AACA,kBAAY,cAAc;AAS1B,eAAS,YAAY,WAAW;AAC/B,YAAI;AACJ,YAAI,iBAAiB;AACrB,YAAI;AACJ,YAAI;AAEJ,iBAASC,UAAS,MAAM;AAEvB,cAAI,CAACA,OAAM,SAAS;AACnB;AAAA,UACD;AAEA,gBAAMC,QAAOD;AAGb,gBAAM,OAAO,OAAO,oBAAI,KAAK,CAAC;AAC9B,gBAAM,KAAK,QAAQ,YAAY;AAC/B,UAAAC,MAAK,OAAO;AACZ,UAAAA,MAAK,OAAO;AACZ,UAAAA,MAAK,OAAO;AACZ,qBAAW;AAEX,eAAK,CAAC,IAAI,YAAY,OAAO,KAAK,CAAC,CAAC;AAEpC,cAAI,OAAO,KAAK,CAAC,MAAM,UAAU;AAEhC,iBAAK,QAAQ,IAAI;AAAA,UAClB;AAGA,cAAIC,SAAQ;AACZ,eAAK,CAAC,IAAI,KAAK,CAAC,EAAE,QAAQ,iBAAiB,CAACC,QAAO,WAAW;AAE7D,gBAAIA,WAAU,MAAM;AACnB,qBAAO;AAAA,YACR;AACA,YAAAD;AACA,kBAAME,aAAY,YAAY,WAAW,MAAM;AAC/C,gBAAI,OAAOA,eAAc,YAAY;AACpC,oBAAM,MAAM,KAAKF,MAAK;AACtB,cAAAC,SAAQC,WAAU,KAAKH,OAAM,GAAG;AAGhC,mBAAK,OAAOC,QAAO,CAAC;AACpB,cAAAA;AAAA,YACD;AACA,mBAAOC;AAAA,UACR,CAAC;AAGD,sBAAY,WAAW,KAAKF,OAAM,IAAI;AAEtC,gBAAM,QAAQA,MAAK,OAAO,YAAY;AACtC,gBAAM,MAAMA,OAAM,IAAI;AAAA,QACvB;AAEA,QAAAD,OAAM,YAAY;AAClB,QAAAA,OAAM,YAAY,YAAY,UAAU;AACxC,QAAAA,OAAM,QAAQ,YAAY,YAAY,SAAS;AAC/C,QAAAA,OAAM,SAASK;AACf,QAAAL,OAAM,UAAU,YAAY;AAE5B,eAAO,eAAeA,QAAO,WAAW;AAAA,UACvC,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,KAAK,MAAM;AACV,gBAAI,mBAAmB,MAAM;AAC5B,qBAAO;AAAA,YACR;AACA,gBAAI,oBAAoB,YAAY,YAAY;AAC/C,gCAAkB,YAAY;AAC9B,6BAAe,YAAY,QAAQ,SAAS;AAAA,YAC7C;AAEA,mBAAO;AAAA,UACR;AAAA,UACA,KAAK,OAAK;AACT,6BAAiB;AAAA,UAClB;AAAA,QACD,CAAC;AAGD,YAAI,OAAO,YAAY,SAAS,YAAY;AAC3C,sBAAY,KAAKA,MAAK;AAAA,QACvB;AAEA,eAAOA;AAAA,MACR;AAEA,eAASK,QAAO,WAAW,WAAW;AACrC,cAAM,WAAW,YAAY,KAAK,aAAa,OAAO,cAAc,cAAc,MAAM,aAAa,SAAS;AAC9G,iBAAS,MAAM,KAAK;AACpB,eAAO;AAAA,MACR;AASA,eAAS,OAAO,YAAY;AAC3B,oBAAY,KAAK,UAAU;AAC3B,oBAAY,aAAa;AAEzB,oBAAY,QAAQ,CAAC;AACrB,oBAAY,QAAQ,CAAC;AAErB,cAAM,SAAS,OAAO,eAAe,WAAW,aAAa,IAC3D,KAAK,EACL,QAAQ,QAAQ,GAAG,EACnB,MAAM,GAAG,EACT,OAAO,OAAO;AAEhB,mBAAW,MAAM,OAAO;AACvB,cAAI,GAAG,CAAC,MAAM,KAAK;AAClB,wBAAY,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC;AAAA,UACnC,OAAO;AACN,wBAAY,MAAM,KAAK,EAAE;AAAA,UAC1B;AAAA,QACD;AAAA,MACD;AAUA,eAAS,gBAAgBC,SAAQ,UAAU;AAC1C,YAAI,cAAc;AAClB,YAAI,gBAAgB;AACpB,YAAI,YAAY;AAChB,YAAI,aAAa;AAEjB,eAAO,cAAcA,QAAO,QAAQ;AACnC,cAAI,gBAAgB,SAAS,WAAW,SAAS,aAAa,MAAMA,QAAO,WAAW,KAAK,SAAS,aAAa,MAAM,MAAM;AAE5H,gBAAI,SAAS,aAAa,MAAM,KAAK;AACpC,0BAAY;AACZ,2BAAa;AACb;AAAA,YACD,OAAO;AACN;AACA;AAAA,YACD;AAAA,UACD,WAAW,cAAc,IAAI;AAE5B,4BAAgB,YAAY;AAC5B;AACA,0BAAc;AAAA,UACf,OAAO;AACN,mBAAO;AAAA,UACR;AAAA,QACD;AAGA,eAAO,gBAAgB,SAAS,UAAU,SAAS,aAAa,MAAM,KAAK;AAC1E;AAAA,QACD;AAEA,eAAO,kBAAkB,SAAS;AAAA,MACnC;AAQA,eAASP,WAAU;AAClB,cAAM,aAAa;AAAA,UAClB,GAAG,YAAY;AAAA,UACf,GAAG,YAAY,MAAM,IAAI,eAAa,MAAM,SAAS;AAAA,QACtD,EAAE,KAAK,GAAG;AACV,oBAAY,OAAO,EAAE;AACrB,eAAO;AAAA,MACR;AASA,eAAS,QAAQ,MAAM;AACtB,mBAAWQ,SAAQ,YAAY,OAAO;AACrC,cAAI,gBAAgB,MAAMA,KAAI,GAAG;AAChC,mBAAO;AAAA,UACR;AAAA,QACD;AAEA,mBAAW,MAAM,YAAY,OAAO;AACnC,cAAI,gBAAgB,MAAM,EAAE,GAAG;AAC9B,mBAAO;AAAA,UACR;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AASA,eAAS,OAAO,KAAK;AACpB,YAAI,eAAe,OAAO;AACzB,iBAAO,IAAI,SAAS,IAAI;AAAA,QACzB;AACA,eAAO;AAAA,MACR;AAMA,eAAS,UAAU;AAClB,gBAAQ,KAAK,uIAAuI;AAAA,MACrJ;AAEA,kBAAY,OAAO,YAAY,KAAK,CAAC;AAErC,aAAO;AAAA,IACR;AAEA,IAAAT,QAAO,UAAU;AAAA;AAAA;;;ACnSjB;AAAA,sCAAAU,UAAAC,SAAA;AAMA,IAAAD,SAAQ,aAAa;AACrB,IAAAA,SAAQ,OAAO;AACf,IAAAA,SAAQ,OAAO;AACf,IAAAA,SAAQ,YAAY;AACpB,IAAAA,SAAQ,UAAU,aAAa;AAC/B,IAAAA,SAAQ,UAAW,uBAAM;AACxB,UAAI,SAAS;AAEb,aAAO,MAAM;AACZ,YAAI,CAAC,QAAQ;AACZ,mBAAS;AACT,kBAAQ,KAAK,uIAAuI;AAAA,QACrJ;AAAA,MACD;AAAA,IACD,GAAG;AAMH,IAAAA,SAAQ,SAAS;AAAA,MAChB;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,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAWA,aAAS,YAAY;AAIpB,UAAI,OAAO,WAAW,eAAe,OAAO,YAAY,OAAO,QAAQ,SAAS,cAAc,OAAO,QAAQ,SAAS;AACrH,eAAO;AAAA,MACR;AAGA,UAAI,OAAO,cAAc,eAAe,UAAU,aAAa,UAAU,UAAU,YAAY,EAAE,MAAM,uBAAuB,GAAG;AAChI,eAAO;AAAA,MACR;AAEA,UAAI;AAKJ,aAAQ,OAAO,aAAa,eAAe,SAAS,mBAAmB,SAAS,gBAAgB,SAAS,SAAS,gBAAgB,MAAM;AAAA,MAEtI,OAAO,WAAW,eAAe,OAAO,YAAY,OAAO,QAAQ,WAAY,OAAO,QAAQ,aAAa,OAAO,QAAQ;AAAA;AAAA,MAG1H,OAAO,cAAc,eAAe,UAAU,cAAc,IAAI,UAAU,UAAU,YAAY,EAAE,MAAM,gBAAgB,MAAM,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK;AAAA,MAEpJ,OAAO,cAAc,eAAe,UAAU,aAAa,UAAU,UAAU,YAAY,EAAE,MAAM,oBAAoB;AAAA,IAC1H;AAQA,aAAS,WAAW,MAAM;AACzB,WAAK,CAAC,KAAK,KAAK,YAAY,OAAO,MAClC,KAAK,aACJ,KAAK,YAAY,QAAQ,OAC1B,KAAK,CAAC,KACL,KAAK,YAAY,QAAQ,OAC1B,MAAMC,QAAO,QAAQ,SAAS,KAAK,IAAI;AAExC,UAAI,CAAC,KAAK,WAAW;AACpB;AAAA,MACD;AAEA,YAAM,IAAI,YAAY,KAAK;AAC3B,WAAK,OAAO,GAAG,GAAG,GAAG,gBAAgB;AAKrC,UAAIC,SAAQ;AACZ,UAAI,QAAQ;AACZ,WAAK,CAAC,EAAE,QAAQ,eAAe,CAAAC,WAAS;AACvC,YAAIA,WAAU,MAAM;AACnB;AAAA,QACD;AACA,QAAAD;AACA,YAAIC,WAAU,MAAM;AAGnB,kBAAQD;AAAA,QACT;AAAA,MACD,CAAC;AAED,WAAK,OAAO,OAAO,GAAG,CAAC;AAAA,IACxB;AAUA,IAAAF,SAAQ,MAAM,QAAQ,SAAS,QAAQ,QAAQ,MAAM;AAAA,IAAC;AAQtD,aAAS,KAAK,YAAY;AACzB,UAAI;AACH,YAAI,YAAY;AACf,UAAAA,SAAQ,QAAQ,QAAQ,SAAS,UAAU;AAAA,QAC5C,OAAO;AACN,UAAAA,SAAQ,QAAQ,WAAW,OAAO;AAAA,QACnC;AAAA,MACD,SAAS,OAAO;AAAA,MAGhB;AAAA,IACD;AAQA,aAAS,OAAO;AACf,UAAI;AACJ,UAAI;AACH,YAAIA,SAAQ,QAAQ,QAAQ,OAAO,KAAKA,SAAQ,QAAQ,QAAQ,OAAO;AAAA,MACxE,SAAS,OAAO;AAAA,MAGhB;AAGA,UAAI,CAAC,KAAK,OAAO,YAAY,eAAe,SAAS,SAAS;AAC7D,YAAI,QAAQ,IAAI;AAAA,MACjB;AAEA,aAAO;AAAA,IACR;AAaA,aAAS,eAAe;AACvB,UAAI;AAGH,eAAO;AAAA,MACR,SAAS,OAAO;AAAA,MAGhB;AAAA,IACD;AAEA,IAAAC,QAAO,UAAU,iBAAoBD,QAAO;AAE5C,QAAM,EAAC,WAAU,IAAIC,QAAO;AAM5B,eAAW,IAAI,SAAU,GAAG;AAC3B,UAAI;AACH,eAAO,KAAK,UAAU,CAAC;AAAA,MACxB,SAAS,OAAO;AACf,eAAO,iCAAiC,MAAM;AAAA,MAC/C;AAAA,IACD;AAAA;AAAA;;;AC/QA;AAAA,mCAAAG,UAAAC,SAAA;AAAA;AAEA,IAAAA,QAAO,UAAU,CAAC,MAAM,OAAO,QAAQ,SAAS;AAC/C,YAAM,SAAS,KAAK,WAAW,GAAG,IAAI,KAAM,KAAK,WAAW,IAAI,MAAM;AACtE,YAAMC,YAAW,KAAK,QAAQ,SAAS,IAAI;AAC3C,YAAM,qBAAqB,KAAK,QAAQ,IAAI;AAC5C,aAAOA,cAAa,OAAO,uBAAuB,MAAMA,YAAW;AAAA,IACpE;AAAA;AAAA;;;ACPA;AAAA,yCAAAC,UAAAC,SAAA;AAAA;AACA,QAAM,KAAK,QAAQ,IAAI;AACvB,QAAM,MAAM,QAAQ,KAAK;AACzB,QAAM,UAAU;AAEhB,QAAM,EAAC,IAAG,IAAI;AAEd,QAAI;AACJ,QAAI,QAAQ,UAAU,KACrB,QAAQ,WAAW,KACnB,QAAQ,aAAa,KACrB,QAAQ,aAAa,GAAG;AACxB,mBAAa;AAAA,IACd,WAAW,QAAQ,OAAO,KACzB,QAAQ,QAAQ,KAChB,QAAQ,YAAY,KACpB,QAAQ,cAAc,GAAG;AACzB,mBAAa;AAAA,IACd;AAEA,QAAI,iBAAiB,KAAK;AACzB,UAAI,IAAI,gBAAgB,QAAQ;AAC/B,qBAAa;AAAA,MACd,WAAW,IAAI,gBAAgB,SAAS;AACvC,qBAAa;AAAA,MACd,OAAO;AACN,qBAAa,IAAI,YAAY,WAAW,IAAI,IAAI,KAAK,IAAI,SAAS,IAAI,aAAa,EAAE,GAAG,CAAC;AAAA,MAC1F;AAAA,IACD;AAEA,aAAS,eAAe,OAAO;AAC9B,UAAI,UAAU,GAAG;AAChB,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,QACN;AAAA,QACA,UAAU;AAAA,QACV,QAAQ,SAAS;AAAA,QACjB,QAAQ,SAAS;AAAA,MAClB;AAAA,IACD;AAEA,aAAS,cAAc,YAAY,aAAa;AAC/C,UAAI,eAAe,GAAG;AACrB,eAAO;AAAA,MACR;AAEA,UAAI,QAAQ,WAAW,KACtB,QAAQ,YAAY,KACpB,QAAQ,iBAAiB,GAAG;AAC5B,eAAO;AAAA,MACR;AAEA,UAAI,QAAQ,WAAW,GAAG;AACzB,eAAO;AAAA,MACR;AAEA,UAAI,cAAc,CAAC,eAAe,eAAe,QAAW;AAC3D,eAAO;AAAA,MACR;AAEA,YAAMC,OAAM,cAAc;AAE1B,UAAI,IAAI,SAAS,QAAQ;AACxB,eAAOA;AAAA,MACR;AAEA,UAAI,QAAQ,aAAa,SAAS;AAGjC,cAAM,YAAY,GAAG,QAAQ,EAAE,MAAM,GAAG;AACxC,YACC,OAAO,UAAU,CAAC,CAAC,KAAK,MACxB,OAAO,UAAU,CAAC,CAAC,KAAK,OACvB;AACD,iBAAO,OAAO,UAAU,CAAC,CAAC,KAAK,QAAQ,IAAI;AAAA,QAC5C;AAEA,eAAO;AAAA,MACR;AAEA,UAAI,QAAQ,KAAK;AAChB,YAAI,CAAC,UAAU,YAAY,YAAY,aAAa,kBAAkB,WAAW,EAAE,KAAK,UAAQ,QAAQ,GAAG,KAAK,IAAI,YAAY,YAAY;AAC3I,iBAAO;AAAA,QACR;AAEA,eAAOA;AAAA,MACR;AAEA,UAAI,sBAAsB,KAAK;AAC9B,eAAO,gCAAgC,KAAK,IAAI,gBAAgB,IAAI,IAAI;AAAA,MACzE;AAEA,UAAI,IAAI,cAAc,aAAa;AAClC,eAAO;AAAA,MACR;AAEA,UAAI,kBAAkB,KAAK;AAC1B,cAAMC,WAAU,UAAU,IAAI,wBAAwB,IAAI,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;AAE3E,gBAAQ,IAAI,cAAc;AAAA,UACzB,KAAK;AACJ,mBAAOA,YAAW,IAAI,IAAI;AAAA,UAC3B,KAAK;AACJ,mBAAO;AAAA,QAET;AAAA,MACD;AAEA,UAAI,iBAAiB,KAAK,IAAI,IAAI,GAAG;AACpC,eAAO;AAAA,MACR;AAEA,UAAI,8DAA8D,KAAK,IAAI,IAAI,GAAG;AACjF,eAAO;AAAA,MACR;AAEA,UAAI,eAAe,KAAK;AACvB,eAAO;AAAA,MACR;AAEA,aAAOD;AAAA,IACR;AAEA,aAAS,gBAAgB,QAAQ;AAChC,YAAM,QAAQ,cAAc,QAAQ,UAAU,OAAO,KAAK;AAC1D,aAAO,eAAe,KAAK;AAAA,IAC5B;AAEA,IAAAD,QAAO,UAAU;AAAA,MAChB,eAAe;AAAA,MACf,QAAQ,eAAe,cAAc,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC;AAAA,MACzD,QAAQ,eAAe,cAAc,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC;AAAA,IAC1D;AAAA;AAAA;;;ACtIA;AAAA,mCAAAG,UAAAC,SAAA;AAIA,QAAM,MAAM,QAAQ,KAAK;AACzB,QAAM,OAAO,QAAQ,MAAM;AAM3B,IAAAD,SAAQ,OAAO;AACf,IAAAA,SAAQ,MAAM;AACd,IAAAA,SAAQ,aAAa;AACrB,IAAAA,SAAQ,OAAO;AACf,IAAAA,SAAQ,OAAO;AACf,IAAAA,SAAQ,YAAY;AACpB,IAAAA,SAAQ,UAAU,KAAK;AAAA,MACtB,MAAM;AAAA,MAAC;AAAA,MACP;AAAA,IACD;AAMA,IAAAA,SAAQ,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAElC,QAAI;AAGH,YAAM,gBAAgB;AAEtB,UAAI,kBAAkB,cAAc,UAAU,eAAe,SAAS,GAAG;AACxE,QAAAA,SAAQ,SAAS;AAAA,UAChB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,IACD,SAAS,OAAO;AAAA,IAEhB;AAQA,IAAAA,SAAQ,cAAc,OAAO,KAAK,QAAQ,GAAG,EAAE,OAAO,SAAO;AAC5D,aAAO,WAAW,KAAK,GAAG;AAAA,IAC3B,CAAC,EAAE,OAAO,CAAC,KAAK,QAAQ;AAEvB,YAAM,OAAO,IACX,UAAU,CAAC,EACX,YAAY,EACZ,QAAQ,aAAa,CAAC,GAAG,MAAM;AAC/B,eAAO,EAAE,YAAY;AAAA,MACtB,CAAC;AAGF,UAAI,MAAM,QAAQ,IAAI,GAAG;AACzB,UAAI,2BAA2B,KAAK,GAAG,GAAG;AACzC,cAAM;AAAA,MACP,WAAW,6BAA6B,KAAK,GAAG,GAAG;AAClD,cAAM;AAAA,MACP,WAAW,QAAQ,QAAQ;AAC1B,cAAM;AAAA,MACP,OAAO;AACN,cAAM,OAAO,GAAG;AAAA,MACjB;AAEA,UAAI,IAAI,IAAI;AACZ,aAAO;AAAA,IACR,GAAG,CAAC,CAAC;AAML,aAAS,YAAY;AACpB,aAAO,YAAYA,SAAQ,cAC1B,QAAQA,SAAQ,YAAY,MAAM,IAClC,IAAI,OAAO,QAAQ,OAAO,EAAE;AAAA,IAC9B;AAQA,aAAS,WAAW,MAAM;AACzB,YAAM,EAAC,WAAW,MAAM,WAAAE,WAAS,IAAI;AAErC,UAAIA,YAAW;AACd,cAAM,IAAI,KAAK;AACf,cAAM,YAAY,YAAc,IAAI,IAAI,IAAI,SAAS;AACrD,cAAM,SAAS,KAAK,SAAS,MAAM,IAAI;AAEvC,aAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE,MAAM,IAAI,EAAE,KAAK,OAAO,MAAM;AACzD,aAAK,KAAK,YAAY,OAAOD,QAAO,QAAQ,SAAS,KAAK,IAAI,IAAI,SAAW;AAAA,MAC9E,OAAO;AACN,aAAK,CAAC,IAAI,QAAQ,IAAI,OAAO,MAAM,KAAK,CAAC;AAAA,MAC1C;AAAA,IACD;AAEA,aAAS,UAAU;AAClB,UAAID,SAAQ,YAAY,UAAU;AACjC,eAAO;AAAA,MACR;AACA,cAAO,oBAAI,KAAK,GAAE,YAAY,IAAI;AAAA,IACnC;AAMA,aAAS,OAAO,MAAM;AACrB,aAAO,QAAQ,OAAO,MAAM,KAAK,kBAAkBA,SAAQ,aAAa,GAAG,IAAI,IAAI,IAAI;AAAA,IACxF;AAQA,aAAS,KAAK,YAAY;AACzB,UAAI,YAAY;AACf,gBAAQ,IAAI,QAAQ;AAAA,MACrB,OAAO;AAGN,eAAO,QAAQ,IAAI;AAAA,MACpB;AAAA,IACD;AASA,aAAS,OAAO;AACf,aAAO,QAAQ,IAAI;AAAA,IACpB;AASA,aAAS,KAAKG,QAAO;AACpB,MAAAA,OAAM,cAAc,CAAC;AAErB,YAAMC,QAAO,OAAO,KAAKJ,SAAQ,WAAW;AAC5C,eAAS,IAAI,GAAG,IAAII,MAAK,QAAQ,KAAK;AACrC,QAAAD,OAAM,YAAYC,MAAK,CAAC,CAAC,IAAIJ,SAAQ,YAAYI,MAAK,CAAC,CAAC;AAAA,MACzD;AAAA,IACD;AAEA,IAAAH,QAAO,UAAU,iBAAoBD,QAAO;AAE5C,QAAM,EAAC,WAAU,IAAIC,QAAO;AAM5B,eAAW,IAAI,SAAU,GAAG;AAC3B,WAAK,YAAY,SAAS,KAAK;AAC/B,aAAO,KAAK,QAAQ,GAAG,KAAK,WAAW,EACrC,MAAM,IAAI,EACV,IAAI,SAAO,IAAI,KAAK,CAAC,EACrB,KAAK,GAAG;AAAA,IACX;AAMA,eAAW,IAAI,SAAU,GAAG;AAC3B,WAAK,YAAY,SAAS,KAAK;AAC/B,aAAO,KAAK,QAAQ,GAAG,KAAK,WAAW;AAAA,IACxC;AAAA;AAAA;;;ACtQA;AAAA,oCAAAI,UAAAC,SAAA;AAKA,QAAI,OAAO,YAAY,eAAe,QAAQ,SAAS,cAAc,QAAQ,YAAY,QAAQ,QAAQ,QAAQ;AAChH,MAAAA,QAAO,UAAU;AAAA,IAClB,OAAO;AACN,MAAAA,QAAO,UAAU;AAAA,IAClB;AAAA;AAAA;;;ACTA;AAAA,iEAAAC,UAAAC,SAAA;AAAA;AAMA,QAAMC,SAAQ,cAAiB,cAAc;AAiB7C,QAAM,qBAAN,MAAM,4BAA2B,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,MAKpC,YAAY,SAAS;AACpB,YAAI,YAAY,QAAQ;AAExB;AAAA,UACCA,OAAM,UACH,QAAQ,IAAI,CAAC,CAAC,QAAQ,IAAI,MAAM;AAChC,gBAAIC,SAAQ;AAEZ,mBAAO;AAAA,cACN;AAAA,cACA,MAAM;AACL,oBAAI,CAACA,QAAO;AACX,kBAAAD;AAAA,oBACC;AAAA,oBACA;AAAA,oBACA,EAAE;AAAA,kBACH;AACA,kBAAAC,SAAQ,KAAK;AAAA,gBACd;AACA,uBAAOA;AAAA,cACR;AAAA,YACD;AAAA,UACD,CAAC,IACA;AAAA,QACJ;AAGA,eAAO,eAAe,oBAAmB,WAAW,OAAO;AAAA,UAC1D,cAAc;AAAA,UACd,OAAO;AAAA,QACR,CAAC;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,IAAI,QAAQ;AACX,cAAM,OAAO,MAAM,IAAI,MAAM;AAE7B,eAAO,QAAQ,KAAK;AAAA,MACrB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,CAAC,SAAS;AACT,mBAAW,QAAQ,MAAM,OAAO,GAAG;AAClC,gBAAM,KAAK;AAAA,QACZ;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,CAAC,UAAU;AACV,mBAAW,CAAC,QAAQ,IAAI,KAAK,MAAM,QAAQ,GAAG;AAC7C,gBAAM,CAAC,QAAQ,KAAK,CAAC;AAAA,QACtB;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,QAAQ,YAAY,SAAS;AAC5B,mBAAW,CAAC,QAAQ,IAAI,KAAK,MAAM,QAAQ,GAAG;AAC7C,qBAAW,KAAK,SAAS,KAAK,GAAG,QAAQ,IAAI;AAAA,QAC9C;AAAA,MACD;AAAA,IACD;AAGA,WAAO,iBAAiB,mBAAmB,WAAW;AAAA,MACrD,OAAO,EAAE,cAAc,MAAM,OAAO,OAAO;AAAA,MAC3C,QAAQ,EAAE,cAAc,MAAM,OAAO,OAAO;AAAA,MAC5C,CAAC,OAAO,QAAQ,GAAG;AAAA,QAClB,cAAc;AAAA,QACd,UAAU;AAAA,QACV,OAAO,mBAAmB,UAAU;AAAA,MACrC;AAAA,IACD,CAAC;AAED,IAAAF,QAAO,UAAU,EAAE,mBAAmB;AAAA;AAAA;;;ACrHtC,IAAAG,+BAAA;AAAA,sFAAAC,UAAA;AAAA;AAaA,QAAM,OAAO;AAAA,MACZ,iBAAiB,CAAC,UAAU;AAAA,MAC5B,cAAc,CAAC,UAAU;AAAA,MACzB,yBAAyB,CAAC,UAAU,MAAM;AAAA,MAC1C,sBAAsB,CAAC,QAAQ,OAAO;AAAA,MACtC,mBAAmB,CAAC,QAAQ,OAAO;AAAA,MACnC,iBAAiB,CAAC,UAAU;AAAA,MAC5B,kBAAkB,CAAC,QAAQ,OAAO;AAAA,MAClC,gBAAgB,CAAC,MAAM;AAAA,MACvB,gBAAgB,CAAC,OAAO;AAAA,MACxB,gBAAgB,CAAC,UAAU,WAAW;AAAA,MACtC,aAAa,CAAC,SAAS,MAAM;AAAA,MAC7B,iBAAiB,CAAC,YAAY;AAAA,MAC9B,WAAW,CAAC,MAAM;AAAA,MAClB,kBAAkB,CAAC,MAAM,cAAc,MAAM;AAAA,MAC7C,iBAAiB,CAAC,MAAM,cAAc,MAAM;AAAA,MAC5C,uBAAuB,CAAC,QAAQ,cAAc,WAAW;AAAA,MACzD,mBAAmB,CAAC,OAAO;AAAA,MAC3B,mBAAmB,CAAC;AAAA,MACpB,kBAAkB,CAAC,QAAQ,MAAM;AAAA,MACjC,gBAAgB,CAAC;AAAA,MACjB,0BAA0B,CAAC,UAAU;AAAA,MACrC,4BAA4B,CAAC,UAAU;AAAA,MACvC,sBAAsB,CAAC,YAAY,UAAU,YAAY;AAAA,MACzD,0BAA0B,CAAC,aAAa;AAAA,MACxC,wBAAwB;AAAA,QACvB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,MACA,iBAAiB,CAAC,SAAS,UAAU;AAAA,MACrC,qBAAqB,CAAC,YAAY;AAAA,MAClC,gBAAgB,CAAC,QAAQ,SAAS,MAAM;AAAA,MACxC,gBAAgB,CAAC,QAAQ,SAAS,MAAM;AAAA,MACxC,cAAc,CAAC,QAAQ,QAAQ,UAAU,MAAM;AAAA,MAC/C,qBAAqB,CAAC,MAAM,UAAU,MAAM;AAAA,MAC5C,oBAAoB,CAAC,MAAM,UAAU,MAAM;AAAA,MAC3C,YAAY,CAAC;AAAA,MACb,aAAa,CAAC,QAAQ,cAAc,WAAW;AAAA,MAC/C,iBAAiB,CAAC,OAAO,OAAO;AAAA,MAChC,mBAAmB,CAAC,cAAc,UAAU,YAAY;AAAA,MACxD,wBAAwB,CAAC,OAAO;AAAA,MAChC,kBAAkB,CAAC,UAAU,SAAS;AAAA,MACtC,0BAA0B,CAAC,OAAO;AAAA,MAClC,iBAAiB,CAAC,YAAY,OAAO;AAAA,MACrC,cAAc,CAAC,QAAQ,OAAO;AAAA,MAC9B,mBAAmB,CAAC,MAAM;AAAA,MAC1B,oBAAoB,CAAC;AAAA,MACrB,YAAY,CAAC,kBAAkB,YAAY,gBAAgB;AAAA,MAC3D,oBAAoB,CAAC;AAAA,MACrB,wBAAwB,CAAC,YAAY;AAAA,MACrC,aAAa,CAAC,mBAAmB,YAAY,iBAAiB;AAAA,MAC9D,eAAe,CAAC;AAAA,MAChB,qBAAqB,CAAC,UAAU,UAAU;AAAA,MAC1C,mBAAmB,CAAC,aAAa,MAAM;AAAA,MACvC,mBAAmB,CAAC,QAAQ,YAAY;AAAA,MACxC,oBAAoB,CAAC;AAAA,MACrB,oBAAoB,CAAC,UAAU;AAAA,MAC/B,gBAAgB,CAAC,YAAY;AAAA,MAC7B,SAAS,CAAC;AAAA,MACV,kBAAkB,CAAC,SAAS,MAAM;AAAA,MAClC,SAAS,CAAC;AAAA,MACV,mBAAmB,CAAC,QAAQ,OAAO;AAAA,MACnC,kBAAkB,CAAC,UAAU,UAAU;AAAA,MACvC,cAAc,CAAC,QAAQ,UAAU;AAAA,MACjC,kBAAkB,CAAC,OAAO,OAAO;AAAA,MACjC,eAAe,CAAC,UAAU,WAAW;AAAA,MACrC,kBAAkB,CAAC,YAAY;AAAA,MAC/B,eAAe,CAAC,YAAY;AAAA,MAC5B,mBAAmB,CAAC;AAAA,MACpB,SAAS,CAAC,MAAM;AAAA,MAChB,UAAU,CAAC,OAAO,OAAO;AAAA,MACzB,oBAAoB,CAAC,OAAO,OAAO;AAAA,MACnC,aAAa,CAAC,UAAU;AAAA,MACxB,iBAAiB,CAAC,UAAU;AAAA,MAC5B,oBAAoB,CAAC,aAAa;AAAA,MAClC,eAAe,CAAC,UAAU;AAAA,MAC1B,aAAa,CAAC,MAAM;AAAA,MACpB,OAAO,CAAC;AAAA,MACR,YAAY,CAAC,QAAQ,YAAY;AAAA,MACjC,iBAAiB,CAAC,gBAAgB,OAAO;AAAA,MACzC,0BAA0B,CAAC,OAAO,OAAO;AAAA,MACzC,iBAAiB,CAAC;AAAA,MAClB,iBAAiB,CAAC,UAAU,aAAa;AAAA,MACzC,gBAAgB,CAAC;AAAA,MACjB,gBAAgB,CAAC,UAAU;AAAA,MAC3B,cAAc,CAAC,SAAS,WAAW,WAAW;AAAA,MAC9C,iBAAiB,CAAC,UAAU;AAAA,MAC5B,kBAAkB,CAAC,UAAU;AAAA,MAC7B,qBAAqB,CAAC,cAAc;AAAA,MACpC,oBAAoB,CAAC,MAAM,MAAM;AAAA,MACjC,gBAAgB,CAAC,QAAQ,MAAM;AAAA,MAC/B,eAAe,CAAC,UAAU,MAAM;AAAA,MAChC,iBAAiB,CAAC,UAAU;AAAA,IAC7B;AAGA,QAAM,aAAa,OAAO,KAAK,IAAI;AAGnC,eAAW,QAAQ,YAAY;AAC9B,aAAO,OAAO,KAAK,IAAI,CAAC;AAAA,IACzB;AACA,WAAO,OAAO,IAAI;AAYlB,QAAM,gBAAgB,oBAAI,IAAI;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAOD,aAAS,UAAU,KAAK;AACvB,aAAO,CAAC,cAAc,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM;AAAA,IAC9C;AAUA,aAAS,QAAQC,OAAM;AACtB,aAAO,OAAO,KAAKA,KAAI,EAAE,OAAO,SAAS;AAAA,IAC1C;AAQA,aAAS,UAAU,gBAAgB;AAClC,YAAM;AAAA;AAAA,QAEJ,OAAO,OAAO,CAAC,GAAG,IAAI;AAAA;AAExB,iBAAW,QAAQ,OAAO,KAAK,cAAc,GAAG;AAC/C,YAAI,OAAO,OAAO,MAAM,IAAI,GAAG;AAC9B,gBAAMC,QAAO,IAAI,IAAI,eAAe,IAAI,CAAC;AAEzC,qBAAW,OAAO,KAAK,IAAI,GAAG;AAC7B,YAAAA,MAAK,IAAI,GAAG;AAAA,UACb;AAEA,eAAK,IAAI,IAAI,OAAO,OAAO,MAAM,KAAKA,KAAI,CAAC;AAAA,QAC5C,OAAO;AACN,eAAK,IAAI,IAAI,OAAO,OAAO,MAAM,KAAK,eAAe,IAAI,CAAC,CAAC;AAAA,QAC5D;AAAA,MACD;AAEA,aAAO,OAAO,OAAO,IAAI;AAAA,IAC1B;AAEA,IAAAF,SAAQ,OAAO;AACf,IAAAA,SAAQ,UAAU;AAClB,IAAAA,SAAQ,YAAY;AAAA;AAAA;;;AC1LpB;AAAA,oCAAAG,UAAAC,SAAA;AAwBA,KAAC,WAAY;AACT;AAEA,eAAS,aAAaC,OAAM;AACxB,YAAIA,SAAQ,MAAM;AAAE,iBAAO;AAAA,QAAO;AAClC,gBAAQA,MAAK,MAAM;AAAA,UACf,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAO;AAAA,QACf;AACA,eAAO;AAAA,MACX;AAEA,eAAS,qBAAqBA,OAAM;AAChC,YAAIA,SAAQ,MAAM;AAAE,iBAAO;AAAA,QAAO;AAClC,gBAAQA,MAAK,MAAM;AAAA,UACf,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAO;AAAA,QACf;AACA,eAAO;AAAA,MACX;AAEA,eAAS,YAAYA,OAAM;AACvB,YAAIA,SAAQ,MAAM;AAAE,iBAAO;AAAA,QAAO;AAClC,gBAAQA,MAAK,MAAM;AAAA,UACf,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAO;AAAA,QACf;AACA,eAAO;AAAA,MACX;AAEA,eAAS,gBAAgBA,OAAM;AAC7B,eAAO,YAAYA,KAAI,KAAKA,SAAQ,QAAQA,MAAK,SAAS;AAAA,MAC5D;AAEA,eAAS,kBAAkBA,OAAM;AAC7B,gBAAQA,MAAK,MAAM;AAAA,UACnB,KAAK;AACD,gBAAIA,MAAK,aAAa,MAAM;AACxB,qBAAOA,MAAK;AAAA,YAChB;AACA,mBAAOA,MAAK;AAAA,UAEhB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAOA,MAAK;AAAA,QAChB;AACA,eAAO;AAAA,MACX;AAEA,eAAS,yBAAyBA,OAAM;AACpC,YAAI;AAEJ,YAAIA,MAAK,SAAS,eAAe;AAC7B,iBAAO;AAAA,QACX;AACA,YAAIA,MAAK,aAAa,MAAM;AACxB,iBAAO;AAAA,QACX;AACA,kBAAUA,MAAK;AACf,WAAG;AACC,cAAI,QAAQ,SAAS,eAAe;AAChC,gBAAI,QAAQ,aAAa,MAAO;AAC5B,qBAAO;AAAA,YACX;AAAA,UACJ;AACA,oBAAU,kBAAkB,OAAO;AAAA,QACvC,SAAS;AAET,eAAO;AAAA,MACX;AAEA,MAAAD,QAAO,UAAU;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,MACJ;AAAA,IACJ,GAAE;AAAA;AAAA;;;AC9IF;AAAA,qCAAAE,UAAAC,SAAA;AAyBA,KAAC,WAAY;AACT;AAEA,UAAI,UAAU,UAAU,uBAAuB,kBAAkB,iBAAiB;AAGlF,iBAAW;AAAA;AAAA,QAEP,yBAAyB;AAAA;AAAA,QAEzB,wBAAwB;AAAA,MAC5B;AAEA,iBAAW;AAAA;AAAA,QAEP,yBAAyB;AAAA;AAAA,QAEzB,wBAAwB;AAAA,MAC5B;AAEA,eAAS,eAAeC,KAAI;AACxB,eAAO,MAAQA,OAAMA,OAAM;AAAA,MAC/B;AAEA,eAAS,WAAWA,KAAI;AACpB,eAAO,MAAQA,OAAMA,OAAM;AAAA,QACvB,MAAQA,OAAMA,OAAM;AAAA,QACpB,MAAQA,OAAMA,OAAM;AAAA,MAC5B;AAEA,eAAS,aAAaA,KAAI;AACtB,eAAOA,OAAM,MAAQA,OAAM;AAAA,MAC/B;AAIA,8BAAwB;AAAA,QACpB;AAAA,QACA;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAChF;AAAA,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,MACJ;AAEA,eAAS,aAAaA,KAAI;AACtB,eAAOA,QAAO,MAAQA,QAAO,KAAQA,QAAO,MAAQA,QAAO,MAAQA,QAAO,OACtEA,OAAM,QAAU,sBAAsB,QAAQA,GAAE,KAAK;AAAA,MAC7D;AAIA,eAAS,iBAAiBA,KAAI;AAC1B,eAAOA,QAAO,MAAQA,QAAO,MAAQA,QAAO,QAAUA,QAAO;AAAA,MACjE;AAIA,eAAS,cAAc,IAAI;AACvB,YAAI,MAAM,OAAQ;AAAE,iBAAO,OAAO,aAAa,EAAE;AAAA,QAAG;AACpD,YAAI,MAAM,OAAO,aAAa,KAAK,OAAO,KAAK,SAAW,IAAK,IAAI,KAAM;AACzE,YAAI,MAAM,OAAO,cAAe,KAAK,SAAW,OAAS,KAAM;AAC/D,eAAO,MAAM;AAAA,MACjB;AAEA,yBAAmB,IAAI,MAAM,GAAI;AACjC,WAAI,KAAK,GAAG,KAAK,KAAM,EAAE,IAAI;AACzB,yBAAiB,EAAE,IACf,MAAM,MAAQ,MAAM;AAAA,QACpB,MAAM,MAAQ,MAAM;AAAA,QACpB,OAAO,MAAQ,OAAO;AAAA,MAC9B;AAEA,wBAAkB,IAAI,MAAM,GAAI;AAChC,WAAI,KAAK,GAAG,KAAK,KAAM,EAAE,IAAI;AACzB,wBAAgB,EAAE,IACd,MAAM,MAAQ,MAAM;AAAA,QACpB,MAAM,MAAQ,MAAM;AAAA,QACpB,MAAM,MAAQ,MAAM;AAAA,QACpB,OAAO,MAAQ,OAAO;AAAA,MAC9B;AAEA,eAAS,qBAAqBA,KAAI;AAC9B,eAAOA,MAAK,MAAO,iBAAiBA,GAAE,IAAI,SAAS,wBAAwB,KAAK,cAAcA,GAAE,CAAC;AAAA,MACrG;AAEA,eAAS,oBAAoBA,KAAI;AAC7B,eAAOA,MAAK,MAAO,gBAAgBA,GAAE,IAAI,SAAS,uBAAuB,KAAK,cAAcA,GAAE,CAAC;AAAA,MACnG;AAEA,eAAS,qBAAqBA,KAAI;AAC9B,eAAOA,MAAK,MAAO,iBAAiBA,GAAE,IAAI,SAAS,wBAAwB,KAAK,cAAcA,GAAE,CAAC;AAAA,MACrG;AAEA,eAAS,oBAAoBA,KAAI;AAC7B,eAAOA,MAAK,MAAO,gBAAgBA,GAAE,IAAI,SAAS,uBAAuB,KAAK,cAAcA,GAAE,CAAC;AAAA,MACnG;AAEA,MAAAD,QAAO,UAAU;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ,GAAE;AAAA;AAAA;;;ACrIF;AAAA,wCAAAE,UAAAC,SAAA;AAwBA,KAAC,WAAY;AACT;AAEA,UAAIC,QAAO;AAEX,eAAS,4BAA4B,IAAI;AACrC,gBAAQ,IAAI;AAAA,UACZ,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAO;AAAA,UACX;AACI,mBAAO;AAAA,QACX;AAAA,MACJ;AAEA,eAAS,aAAa,IAAI,QAAQ;AAE9B,YAAI,CAAC,UAAU,OAAO,SAAS;AAC3B,iBAAO;AAAA,QACX;AACA,eAAO,aAAa,IAAI,MAAM;AAAA,MAClC;AAEA,eAAS,aAAa,IAAI,QAAQ;AAC9B,YAAI,UAAU,4BAA4B,EAAE,GAAG;AAC3C,iBAAO;AAAA,QACX;AAEA,gBAAQ,GAAG,QAAQ;AAAA,UACnB,KAAK;AACD,mBAAQ,OAAO,QAAU,OAAO,QAAU,OAAO;AAAA,UACrD,KAAK;AACD,mBAAQ,OAAO,SAAW,OAAO,SAAW,OAAO,SAAW,OAAO;AAAA,UACzE,KAAK;AACD,mBAAQ,OAAO,UAAY,OAAO,UAAY,OAAO,UAChD,OAAO,UAAY,OAAO,UAAY,OAAO;AAAA,UACtD,KAAK;AACD,mBAAQ,OAAO,WAAa,OAAO,WAAa,OAAO,WAClD,OAAO,WAAa,OAAO,WAAa,OAAO,WAC/C,OAAO,WAAa,OAAO;AAAA,UACpC,KAAK;AACD,mBAAQ,OAAO,YAAc,OAAO,YAAc,OAAO,YACpD,OAAO,YAAc,OAAO,YAAc,OAAO;AAAA,UAC1D,KAAK;AACD,mBAAQ,OAAO,aAAe,OAAO,aAAe,OAAO;AAAA,UAC/D,KAAK;AACD,mBAAQ,OAAO,cAAgB,OAAO,cAAgB,OAAO;AAAA,UACjE,KAAK;AACD,mBAAQ,OAAO;AAAA,UACnB;AACI,mBAAO;AAAA,QACX;AAAA,MACJ;AAEA,eAAS,kBAAkB,IAAI,QAAQ;AACnC,eAAO,OAAO,UAAU,OAAO,UAAU,OAAO,WAAW,aAAa,IAAI,MAAM;AAAA,MACtF;AAEA,eAAS,kBAAkB,IAAI,QAAQ;AACnC,eAAO,OAAO,UAAU,OAAO,UAAU,OAAO,WAAW,aAAa,IAAI,MAAM;AAAA,MACtF;AAEA,eAAS,iBAAiB,IAAI;AAC1B,eAAO,OAAO,UAAU,OAAO;AAAA,MACnC;AAEA,eAAS,oBAAoB,IAAI;AAC7B,YAAI,GAAG,IAAI;AAEX,YAAI,GAAG,WAAW,GAAG;AAAE,iBAAO;AAAA,QAAO;AAErC,aAAK,GAAG,WAAW,CAAC;AACpB,YAAI,CAACA,MAAK,qBAAqB,EAAE,GAAG;AAChC,iBAAO;AAAA,QACX;AAEA,aAAK,IAAI,GAAG,KAAK,GAAG,QAAQ,IAAI,IAAI,EAAE,GAAG;AACrC,eAAK,GAAG,WAAW,CAAC;AACpB,cAAI,CAACA,MAAK,oBAAoB,EAAE,GAAG;AAC/B,mBAAO;AAAA,UACX;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AAEA,eAAS,YAAY,MAAMC,QAAO;AAC9B,gBAAQ,OAAO,SAAU,QAASA,SAAQ,SAAU;AAAA,MACxD;AAEA,eAAS,oBAAoB,IAAI;AAC7B,YAAI,GAAG,IAAI,IAAI,OAAO;AAEtB,YAAI,GAAG,WAAW,GAAG;AAAE,iBAAO;AAAA,QAAO;AAErC,gBAAQD,MAAK;AACb,aAAK,IAAI,GAAG,KAAK,GAAG,QAAQ,IAAI,IAAI,EAAE,GAAG;AACrC,eAAK,GAAG,WAAW,CAAC;AACpB,cAAI,SAAU,MAAM,MAAM,OAAQ;AAC9B,cAAE;AACF,gBAAI,KAAK,IAAI;AAAE,qBAAO;AAAA,YAAO;AAC7B,oBAAQ,GAAG,WAAW,CAAC;AACvB,gBAAI,EAAE,SAAU,SAAS,SAAS,QAAS;AACvC,qBAAO;AAAA,YACX;AACA,iBAAK,YAAY,IAAI,KAAK;AAAA,UAC9B;AACA,cAAI,CAAC,MAAM,EAAE,GAAG;AACZ,mBAAO;AAAA,UACX;AACA,kBAAQA,MAAK;AAAA,QACjB;AACA,eAAO;AAAA,MACX;AAEA,eAAS,gBAAgB,IAAI,QAAQ;AACjC,eAAO,oBAAoB,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM;AAAA,MACnE;AAEA,eAAS,gBAAgB,IAAI,QAAQ;AACjC,eAAO,oBAAoB,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM;AAAA,MACnE;AAEA,MAAAD,QAAO,UAAU;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ,GAAE;AAAA;AAAA;;;ACnKF;AAAA,sCAAAG,UAAA;AAyBA,KAAC,WAAY;AACT;AAEA,MAAAA,SAAQ,MAAM;AACd,MAAAA,SAAQ,OAAO;AACf,MAAAA,SAAQ,UAAU;AAAA,IACtB,GAAE;AAAA;AAAA;;;AC/BF;AAAA,qCAAAC,UAAAC,SAAA;AAAA,KAAC,SAAUC,SAAQ,SAAS;AAC1B,aAAOF,aAAY,YAAY,OAAOC,YAAW,cAAc,QAAQD,QAAO,IAC9E,OAAO,WAAW,cAAc,OAAO,MAAM,OAAO,CAAC,SAAS,GAAG,OAAO,KACvEE,UAAS,OAAO,eAAe,cAAc,aAAaA,WAAU,MAAM,QAAQA,QAAO,QAAQ,CAAC,CAAC;AAAA,IACtG,GAAGF,WAAO,SAAUA,UAAS;AAAE;AAG7B,UAAI,wBAAwB,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,IAAI,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,MAAM,GAAG,GAAG,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,GAAG,QAAQ,GAAG;AAGlrC,UAAI,6BAA6B,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,KAAK,MAAM,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,MAAM,IAAI,IAAI,IAAI,KAAK,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAA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CN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,KAAK;AAAA,MACL,OAAO;AAAA,MACP,KAAK;AAAA,MACL,SAAS;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,KAAK;AAAA,MACL,SAAS;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,OAAO;AAAA,MACP,KAAK;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,KAAK;AAAA,MACL,KAAK;AAAA,MACL,IAAI;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA;AAAA;;;AC9PA;AAAA,oCAAAC,UAAAC,SAAA;AAAA;AAEA,QAAM,gBAAgB;AAEtB,QAAM,YAAY;AAClB,QAAM,gBAAgB;AAGtB,QAAM,cAAc,oBAAI,QAAQ;AAGhC,aAAS,aAAa,OAAO;AAC3B,cAAQ,MAAM,OAAO,SAAS;AAC9B,UAAI,WAAW,YAAY,IAAI,KAAK;AACpC,UAAI,CAAC,UAAU;AACb,cAAM,KAAK,MAAM;AACjB,cAAM,aAAa,MAAM;AACzB,cAAM,YAAY,MAAM;AACxB,cAAM,UAAU,IAAI,WAAW,QAAQ,KAAK;AAC5C,cAAM,UAAU,IAAI,WAAW,SAAS,KAAK;AAC7C,cAAM,UAAU,IAAI,WAAW,kBAAkB,MAAM,IAAI;AAC3D,cAAM,cAAc;AAAA,UAClB;AAAA,UACA;AAAA,UACA;AAAA,QACF;AACA,cAAM,WAAW;AAAA,UACf,SAAS,IAAI,UAAU,SAAS;AAAA,UAChC,SAAS,IAAI,UAAU,WAAW,EAAC,YAAY,KAAI,CAAC;AAAA,UACpD,aAAa,IAAI,UAAU,eAAe,EAAC,YAAY,KAAI,CAAC;AAAA,UAC5D,WAAW,IAAI,UAAU,WAAW;AAAA,QACtC;AAEA,iBAAS,YAAY,gBAAgB,WAAW;AAC9C,eAAK,QAAQ,KAAK,OAAO;AACzB,eAAK,QAAQ,KAAK,OAAO;AACzB,eAAK,cAAc;AAAA,QACrB;AACA,iBAAS,UAAU,gBAAgB,SAAS,UAAU;AACpD,cAAI,MAAM,KAAK,QAAQ,IAAI;AAC3B,cAAI,QAAQ,WAAW,aAAa,GAAG,SAAS,QAAQ,SAAS;AAC/D,iBAAK,QAAQ,IAAI;AACjB,iBAAK,cAAc,KAAK,WAAW,MAAM;AAAA,UAC3C,OAAO;AACL,iBAAK,cAAc;AAAA,UACrB;AAAA,QACF;AAEA,mBAAW,EAAE,aAA0B,SAAmB;AAC1D,oBAAY,IAAI,OAAO,QAAQ;AAAA,MACjC;AAEA,aAAO;AAAA,IACT;AAIA,aAAS,oBAAoB,QAAQ;AACnC,UAAI,CAAC;AACH,eAAO;AAET,UAAI,OAAO,SAAS;AAClB,eAAO,OAAO;AAEhB,UAAI,OAAO,SAAS;AAClB,eAAO,OAAO,UAAU,OAAO,MAAM,OAAO,KAAK;AAEnD,UAAI,OAAO,SAAS;AAClB,eAAO,oBAAoB,OAAO,MAAM,IAAI,MAC5C,oBAAoB,OAAO,QAAQ;AAAA,IACvC;AAEA,IAAAA,QAAO,UAAU,SAAS,SAAS;AACjC,gBAAU,WAAW,CAAC;AACtB,aAAO,SAAS,QAAQ;AACtB,eAAOC,QAAO;AAAA,UACZ,iBAAiB,QAAQ,oBAAoB;AAAA,UAC7C,wBAAwB,CAAC,CAAC,QAAQ;AAAA,QACpC,GAAG,MAAM;AAAA,MACX;AAAA,IACF;AAIA,WAAO,eAAeD,QAAO,SAAS,YAAY;AAAA,MAChD,KAAK,SAAS,eAAe;AAC3B,eAAO,aAAa,eAAgB,EAAE;AAAA,MACxC;AAAA,MACA,cAAc;AAAA,MACd,YAAY;AAAA,IACd,CAAC;AAED,aAASC,QAAO,SAAS,QAAQ;AAC/B,YAAM,QAAQ,OAAO,SAAS;AAC9B,YAAM,WAAW,aAAa,KAAK;AACnC,YAAM,KAAK,MAAM;AACjB,YAAM,MAAM,SAAS;AACrB,YAAM,cAAc,MAAM;AAC1B,YAAM,UAAU,SAAS,YAAY;AACrC,YAAM,UAAU,SAAS,YAAY;AACrC,YAAM,UAAU,SAAS,YAAY;AACrC,YAAM,YAAY,MAAM;AACxB,YAAM,oBAAoB,MAAM;AAChC,YAAM,mBAAmB,MAAM;AAE/B,aAAO,cAAc,OAAO;AAAA;AAAA,QAE1B,WAAW,WAAW;AACpB,iBAAO;AAAA,QACT;AAAA;AAAA,QAGA,gBAAgB;AACd,cAAI,MAAM,IAAI,aAAa,KAAK;AAChC,qBAAS;AACP,gBAAI,KAAK,OAAO,KAAK,MAAM;AACzB,mBAAK,MAAM,KAAK,OAAO,2BAA2B;AACpD,gBAAI,KAAK,KAAK,MAAM,WAAW,KAAK,GAAG;AAEvC,oBAAQ,IAAI;AAAA,cACZ,KAAK;AAAA;AAAA,cACL,KAAK;AACH,oBAAI,KAAK,QAAQ,KAAK,OAAO;AAC3B,sBAAI,OAAO,MAAM,KAAK,aAAa;AACjC,sBAAE,KAAK;AACP,2BAAO,KAAK,YAAY,IAAI,WAAW;AAAA,kBACzC;AACA,yBAAO,KAAK,iBAAiB,EAAE;AAAA,gBACjC;AACA,uBAAO,KAAK,MAAM,MAAM,YAAY,KAAK,GAAG;AAC5C,uBAAO,KAAK,YAAY,IAAI,SAAS,GAAG;AAAA,cAE1C,KAAK;AACH,uBAAO,KAAK,MAAM,MAAM,YAAY,KAAK,GAAG;AAC5C,uBAAO,KAAK,eAAe;AAC3B,6BAAa,KAAK;AAClB;AAAA,cAEF,KAAK;AAAA;AAAA,cACL,KAAK;AACH,qBAAK;AAAA,kBACH,KAAK;AAAA,kBACL,uBAAuB,KAAK,MAAM,KAAK,GAAG,IAAI,uBAC3C,OAAO,KAAK,SAAS,cAAc,aAAmB,KAAK,MAAM,KAAK,GAAG,IAAI;AAAA,gBAClF;AAAA,cAEF;AACE,oBAAI,UAAU,EAAE,GAAG;AACjB,yBAAO,KAAK,MAAM,MAAM,YAAY,KAAK,GAAG;AAC5C,yBAAO,KAAK,gBAAgB,IAAI;AAChC,+BAAa,KAAK;AAAA,gBACpB,OAAO;AACL,oBAAE,KAAK;AAAA,gBACT;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QAEA,gBAAgB,eAAe;AAC7B,cAAI,KAAK,KAAK,MAAM,WAAW,KAAK,GAAG;AACvC,cAAI;AACJ,YAAE,KAAK;AACP,cAAI,OAAO,MAAM,KAAK,MAAM,WAAW,KAAK,GAAG,MAAM,IAAI;AACvD,cAAE,KAAK;AACP,kBAAM,gBAAgB,OAAO;AAAA,UAC/B,OAAO;AACL,kBAAM,OAAO,aAAa,EAAE;AAAA,UAC9B;AACA,cAAI,KAAK,QAAQ,WAAW;AAC1B,cAAE,KAAK;AACP,iBAAK,YAAY,KAAK;AAAA,UACxB;AAEA,iBAAO;AAAA,QACT;AAAA,QAEA,eAAe,OAAO;AACpB,cAAI,MAAM,IAAI,aAAa,EAAE,KAAK;AAClC,qBAAS;AACP,gBAAI,KAAK,OAAO,KAAK,MAAM;AACzB,mBAAK,MAAM,KAAK,OAAO,8BAA8B;AACvD,gBAAI,KAAK,KAAK,MAAM,WAAW,KAAK,GAAG;AACvC,gBAAI,OAAO,MAAO;AAClB,gBAAI,OAAO,IAAI;AACb,qBAAO,KAAK,MAAM,MAAM,YAAY,KAAK,GAAG;AAC5C,qBAAO,KAAK,eAAe;AAC3B,2BAAa,KAAK;AAAA,YACpB,WAAW,UAAU,EAAE,GAAG;AACxB,qBAAO,KAAK,MAAM,MAAM,YAAY,KAAK,GAAG;AAC5C,qBAAO,KAAK,gBAAgB,KAAK;AACjC,2BAAa,KAAK;AAAA,YACpB,OAAO;AACL,gBAAE,KAAK;AAAA,YACT;AAAA,UACF;AACA,iBAAO,KAAK,MAAM,MAAM,YAAY,KAAK,KAAK;AAC9C,iBAAO,KAAK,YAAY,GAAG,QAAQ,GAAG;AAAA,QACxC;AAAA,QAEA,iBAAiB;AACf,cAAI,MAAM,IAAIC,SAAQ,GAAG;AACzB,cAAI,KAAK,KAAK,MAAM,KAAK,GAAG;AAC5B,cAAI,OAAO;AACT,iBAAK,MAAM,KAAK,KAAK,qCAAqC;AAC5D,cAAI,WAAW,EAAE,KAAK;AACtB,iBAAO,KAAK,MAAM,KAAK,MAAM,UAAUA,WAAU,IAAI;AACnD,iBAAK,KAAK,MAAM,KAAK,KAAK;AAC1B,gBAAI,OAAO,KAAK;AACd,kBAAI,IAAI,CAAC,MAAM,KAAK;AAClB,oBAAI,IAAI,CAAC,MAAM,KAAK;AAClB,wBAAM,IAAI,OAAO,CAAC;AAClB,sBAAI,UAAU,KAAK,GAAG;AACpB,6BAAS,OAAO,aAAa,SAAS,KAAK,EAAE,CAAC;AAAA,gBAClD,OAAO;AACL,wBAAM,IAAI,OAAO,CAAC;AAClB,sBAAI,cAAc,KAAK,GAAG;AACxB,6BAAS,OAAO,aAAa,SAAS,KAAK,EAAE,CAAC;AAAA,gBAClD;AAAA,cACF,OAAO;AACL,yBAAS,cAAc,GAAG;AAAA,cAC5B;AACA;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,QAAQ;AACX,iBAAK,MAAM;AACX,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QASA,eAAe;AACb,cAAI,IAAI,QAAQ,KAAK;AACrB,aAAG;AACD,iBAAK,KAAK,MAAM,WAAW,EAAE,KAAK,GAAG;AAAA,UACvC,SAAS,iBAAiB,EAAE,KAAK,OAAO;AACxC,iBAAO,KAAK,YAAY,IAAI,SAAS,KAAK,MAAM,MAAM,OAAO,KAAK,GAAG,CAAC;AAAA,QACxE;AAAA;AAAA,QAIA,sBAAsB;AACpB,cAAIC,QAAO,KAAK,UAAU;AAC1B,cAAI,KAAK,SAAS,IAAI;AACpB,YAAAA,MAAK,OAAO,KAAK;AAAA,mBACV,KAAK,KAAK;AACjB,YAAAA,MAAK,OAAO,KAAK,KAAK;AAAA;AAEtB,iBAAK,WAAW;AAClB,eAAK,KAAK;AACV,iBAAO,KAAK,WAAWA,OAAM,eAAe;AAAA,QAC9C;AAAA;AAAA,QAIA,0BAA0B;AACxB,cAAI,WAAW,KAAK,OAAO,WAAW,KAAK;AAC3C,cAAI,OAAO,KAAK,oBAAoB;AACpC,cAAI,CAAC,QAAQ,mBAAmB,CAAC,KAAK,IAAI,GAAG,KAAK,EAAG,QAAO;AAC5D,cAAIA,QAAO,KAAK,YAAY,UAAU,QAAQ;AAC9C,UAAAA,MAAK,YAAY;AACjB,UAAAA,MAAK,OAAO,KAAK,oBAAoB;AACrC,iBAAO,KAAK,WAAWA,OAAM,mBAAmB;AAAA,QAClD;AAAA;AAAA;AAAA,QAKA,uBAAuB;AACrB,cAAI,KAAK,SAAS,IAAI,UAAW,QAAO;AACxC,cAAI,WAAW,KAAK,OAAO,WAAW,KAAK;AAC3C,cAAIA,QAAO,KAAK,wBAAwB;AACxC,cAAI,KAAK,SAAS,GAAG,OAAOA,MAAK,SAAS,uBAAuB,CAAC,QAAQ,wBAAwB;AAChG,iBAAK,WAAW;AAAA,UAClB;AACA,iBAAO,KAAK,IAAI,GAAG,GAAG,GAAG;AACvB,gBAAI,UAAU,KAAK,YAAY,UAAU,QAAQ;AACjD,oBAAQ,SAASA;AACjB,oBAAQ,WAAW,KAAK,oBAAoB;AAC5C,YAAAA,QAAO,KAAK,WAAW,SAAS,qBAAqB;AAAA,UACvD;AACA,iBAAOA;AAAA,QACT;AAAA;AAAA,QAIA,0BAA0B;AACxB,kBAAQ,KAAK,MAAM;AAAA,YACnB,KAAK,GAAG;AACN,kBAAIA,QAAO,KAAK,6BAA6B;AAC7C,kBAAIA,MAAK,WAAW,SAAS;AAC3B,qBAAK,MAAMA,MAAK,OAAO,6DAA6D;AACtF,qBAAOA;AAAA,YAET,KAAK,IAAI;AAAA,YACT,KAAK,GAAG;AACN,qBAAO,KAAK,cAAc;AAAA,YAE5B;AACE,mBAAK,MAAM,KAAK,OAAO,+DAA+D;AAAA,UACxF;AAAA,QACF;AAAA;AAAA;AAAA;AAAA,QAMA,2BAA2B;AACzB,cAAIA,QAAO,KAAK,YAAY,KAAK,YAAY,KAAK,aAAa;AAC/D,iBAAO,KAAK,aAAaA,OAAM,sBAAsB,KAAK,OAAO,KAAK,QAAQ;AAAA,QAChF;AAAA;AAAA,QAIA,+BAA+B;AAC7B,cAAIA,QAAO,KAAK,UAAU;AAC1B,eAAK,KAAK;AACV,UAAAA,MAAK,aAAa,KAAK,SAAS,GAAG,SAC/B,KAAK,yBAAyB,IAC9B,KAAK,gBAAgB;AACzB,eAAK,OAAO,GAAG,MAAM;AACrB,iBAAO,KAAK,WAAWA,OAAM,wBAAwB;AAAA,QACvD;AAAA;AAAA,QAIA,qBAAqB;AACnB,cAAIA,QAAO,KAAK,UAAU;AAC1B,cAAI,KAAK,IAAI,GAAG,MAAM,GAAG;AACvB,iBAAK,OAAO,GAAG,QAAQ;AACvB,YAAAA,MAAK,WAAW,KAAK,iBAAiB;AACtC,iBAAK,OAAO,GAAG,MAAM;AACrB,mBAAO,KAAK,WAAWA,OAAM,oBAAoB;AAAA,UACnD;AACA,UAAAA,MAAK,OAAO,KAAK,wBAAwB;AACzC,UAAAA,MAAK,QAAQ,KAAK,IAAI,GAAG,EAAE,IAAI,KAAK,wBAAwB,IAAI;AAChE,iBAAO,KAAK,WAAWA,OAAM,cAAc;AAAA,QAC7C;AAAA;AAAA,QAIA,0BAA0B,UAAU,UAAU;AAC5C,cAAIA,QAAO,KAAK,YAAY,UAAU,QAAQ;AAC9C,UAAAA,MAAK,aAAa,CAAC;AACnB,cAAI,WAAW,KAAK,qBAAqB;AACzC,cAAI,SAAU,CAAAA,MAAK,OAAO;AAC1B,iBAAO,KAAK,SAAS,GAAG,SAAS,KAAK,SAAS,IAAI;AACjD,YAAAA,MAAK,WAAW,KAAK,KAAK,mBAAmB,CAAC;AAChD,UAAAA,MAAK,cAAc,KAAK,IAAI,GAAG,KAAK;AACpC,eAAK,OAAO,IAAI,SAAS;AACzB,iBAAO,KAAK,WAAWA,OAAM,WAAW,sBAAsB,oBAAoB;AAAA,QACpF;AAAA;AAAA,QAIA,0BAA0B,UAAU,UAAU;AAC5C,cAAIA,QAAO,KAAK,YAAY,UAAU,QAAQ;AAC9C,cAAI,WAAW,KAAK,qBAAqB;AACzC,cAAI,SAAU,CAAAA,MAAK,OAAO;AAC1B,eAAK,OAAO,IAAI,SAAS;AACzB,iBAAO,KAAK,WAAWA,OAAM,WAAW,sBAAsB,oBAAoB;AAAA,QACpF;AAAA;AAAA;AAAA,QAKA,mBAAmB,UAAU,UAAU;AACrC,cAAIA,QAAO,KAAK,YAAY,UAAU,QAAQ;AAC9C,cAAI,WAAW,CAAC;AAChB,cAAI,iBAAiB,KAAK,0BAA0B,UAAU,QAAQ;AACtE,cAAI,iBAAiB;AAErB,cAAI,CAAC,eAAe,aAAa;AAC/B,qBAAU,YAAS;AACjB,sBAAQ,KAAK,MAAM;AAAA,gBACnB,KAAK,IAAI;AACP,6BAAW,KAAK;AAAO,6BAAW,KAAK;AACvC,uBAAK,KAAK;AACV,sBAAI,KAAK,IAAI,GAAG,KAAK,GAAG;AACtB,qCAAiB,KAAK,0BAA0B,UAAU,QAAQ;AAClE,0BAAM;AAAA,kBACR;AACA,2BAAS,KAAK,KAAK,mBAAmB,UAAU,QAAQ,CAAC;AACzD;AAAA,gBAEF,KAAK,IAAI;AACP,2BAAS,KAAK,KAAK,cAAc,CAAC;AAClC;AAAA,gBAEF,KAAK,GAAG;AACN,2BAAS,KAAK,KAAK,6BAA6B,CAAC;AACjD;AAAA,gBAEF;AACE,uBAAK,WAAW;AAAA,cAClB;AAAA,YACF;AACA,gBAAI,oBAAoB,eAAe,IAAI,MAAM,oBAAoB,eAAe,IAAI,GAAG;AACzF,mBAAK;AAAA,gBACH,eAAe;AAAA,gBACf,iDAAiD,oBAAoB,eAAe,IAAI,IAAI;AAAA,cAAG;AAAA,YACnG;AAAA,UACF;AACA,cAAI,oBAAoB,eAAe,OAAO,YAAY;AAE1D,UAAAA,MAAK,YAAY,iBAAiB,IAAI;AACtC,UAAAA,MAAK,YAAY,iBAAiB,IAAI;AACtC,UAAAA,MAAK,WAAW;AAChB,cAAI,KAAK,SAAS,GAAG,cAAc,KAAK,UAAU,KAAK;AACrD,iBAAK,MAAM,KAAK,OAAO,2DAA2D;AAAA,UACpF;AACA,iBAAO,KAAK,WAAWA,OAAM,QAAQ,iBAAiB;AAAA,QACxD;AAAA;AAAA,QAIA,gBAAgB;AACd,cAAIA,QAAO,KAAK,aAAa,KAAK,KAAK;AACvC,UAAAA,MAAK,OAAO;AACZ,iBAAOA;AAAA,QACT;AAAA;AAAA,QAIA,mBAAmB;AACjB,cAAI,WAAW,KAAK,OAAO,WAAW,KAAK;AAC3C,eAAK,KAAK;AACV,iBAAO,KAAK,mBAAmB,UAAU,QAAQ;AAAA,QACnD;AAAA,QAEA,cAAc,wBAAwB;AACpC,cAAI,KAAK,SAAS,IAAI;AACpB,mBAAO,KAAK,cAAc;AAAA,mBACnB,KAAK,SAAS,IAAI;AACzB,mBAAO,KAAK,iBAAiB;AAAA;AAE7B,mBAAO,MAAM,cAAc,sBAAsB;AAAA,QACrD;AAAA,QAEA,UAAUC,OAAM;AACd,cAAI,UAAU,KAAK,WAAW;AAE9B,cAAI,YAAY,QAAS,QAAO,KAAK,cAAc;AAEnD,cAAI,YAAY,WAAW,YAAY,SAAS;AAC9C,gBAAI,kBAAkBA,KAAI,EAAG,QAAO,KAAK,aAAa;AAEtD,gBAAIA,SAAQ,IAAI;AACd,gBAAE,KAAK;AACP,qBAAO,KAAK,YAAY,IAAI,SAAS;AAAA,YACvC;AAEA,iBAAKA,UAAS,MAAMA,UAAS,OAAO,WAAW;AAC7C,qBAAO,KAAK,eAAeA,KAAI;AAAA,UACnC;AAEA,cAAIA,UAAS,MAAM,KAAK,eAAe,KAAK,MAAM,WAAW,KAAK,MAAM,CAAC,MAAM,IAAI;AACjF,cAAE,KAAK;AACP,mBAAO,KAAK,YAAY,IAAI,WAAW;AAAA,UACzC;AACA,iBAAO,MAAM,UAAUA,KAAI;AAAA,QAC7B;AAAA,QAEA,cAAc,UAAU;AACtB,cAAI,KAAK,QAAQ,GAAG,QAAQ;AAC1B,gBAAI,aAAa,KAAK,WAAW;AACjC,gBAAI,cAAc,QAAS,MAAK,QAAQ,KAAK,YAAY,MAAM;AAAA,qBACtD,cAAc,QAAS,MAAK,QAAQ,KAAK,YAAY,MAAM;AAAA,gBAC/D,OAAM,cAAc,QAAQ;AACjC,iBAAK,cAAc;AAAA,UACrB,WAAW,KAAK,SAAS,GAAG,SAAS,aAAa,IAAI,aAAa;AACjE,iBAAK,QAAQ,UAAU;AACvB,iBAAK,QAAQ,KAAK,OAAO;AACzB,iBAAK,cAAc;AAAA,UACrB,OAAO;AACL,mBAAO,MAAM,cAAc,QAAQ;AAAA,UACrC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACveA,IAAAC,+BAAA;AAAA,sFAAAC,UAAA;AAAA;AAaA,QAAM,OAAO;AAAA,MACZ,iBAAiB,CAAC,UAAU;AAAA,MAC5B,cAAc,CAAC,UAAU;AAAA,MACzB,yBAAyB,CAAC,UAAU,MAAM;AAAA,MAC1C,sBAAsB,CAAC,QAAQ,OAAO;AAAA,MACtC,mBAAmB,CAAC,QAAQ,OAAO;AAAA,MACnC,iBAAiB,CAAC,UAAU;AAAA,MAC5B,kBAAkB,CAAC,QAAQ,OAAO;AAAA,MAClC,gBAAgB,CAAC,MAAM;AAAA,MACvB,gBAAgB,CAAC,OAAO;AAAA,MACxB,gBAAgB,CAAC,UAAU,WAAW;AAAA,MACtC,aAAa,CAAC,SAAS,MAAM;AAAA,MAC7B,iBAAiB,CAAC,YAAY;AAAA,MAC9B,WAAW,CAAC,MAAM;AAAA,MAClB,kBAAkB,CAAC,MAAM,cAAc,MAAM;AAAA,MAC7C,iBAAiB,CAAC,MAAM,cAAc,MAAM;AAAA,MAC5C,uBAAuB,CAAC,QAAQ,cAAc,WAAW;AAAA,MACzD,mBAAmB,CAAC,OAAO;AAAA,MAC3B,mBAAmB,CAAC;AAAA,MACpB,kBAAkB,CAAC,QAAQ,MAAM;AAAA,MACjC,gBAAgB,CAAC;AAAA,MACjB,0BAA0B,CAAC,UAAU;AAAA,MACrC,4BAA4B,CAAC,UAAU;AAAA,MACvC,sBAAsB,CAAC,YAAY,UAAU,YAAY;AAAA,MACzD,0BAA0B,CAAC,aAAa;AAAA,MACxC,wBAAwB;AAAA,QACvB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,MACA,iBAAiB,CAAC,SAAS,UAAU;AAAA,MACrC,qBAAqB,CAAC,YAAY;AAAA,MAClC,gBAAgB,CAAC,QAAQ,SAAS,MAAM;AAAA,MACxC,gBAAgB,CAAC,QAAQ,SAAS,MAAM;AAAA,MACxC,cAAc,CAAC,QAAQ,QAAQ,UAAU,MAAM;AAAA,MAC/C,qBAAqB,CAAC,MAAM,UAAU,MAAM;AAAA,MAC5C,oBAAoB,CAAC,MAAM,UAAU,MAAM;AAAA,MAC3C,YAAY,CAAC;AAAA,MACb,aAAa,CAAC,QAAQ,cAAc,WAAW;AAAA,MAC/C,iBAAiB,CAAC,OAAO,OAAO;AAAA,MAChC,mBAAmB,CAAC,cAAc,UAAU,YAAY;AAAA,MACxD,wBAAwB,CAAC,OAAO;AAAA,MAChC,kBAAkB,CAAC,UAAU,SAAS;AAAA,MACtC,0BAA0B,CAAC,OAAO;AAAA,MAClC,iBAAiB,CAAC,YAAY,OAAO;AAAA,MACrC,cAAc,CAAC,QAAQ,OAAO;AAAA,MAC9B,mBAAmB,CAAC,MAAM;AAAA,MAC1B,oBAAoB,CAAC;AAAA,MACrB,YAAY,CAAC,kBAAkB,YAAY,gBAAgB;AAAA,MAC3D,oBAAoB,CAAC;AAAA,MACrB,wBAAwB,CAAC,YAAY;AAAA,MACrC,aAAa,CAAC,mBAAmB,YAAY,iBAAiB;AAAA,MAC9D,eAAe,CAAC;AAAA,MAChB,qBAAqB,CAAC,UAAU,UAAU;AAAA,MAC1C,mBAAmB,CAAC,aAAa,MAAM;AAAA,MACvC,mBAAmB,CAAC,QAAQ,YAAY;AAAA,MACxC,oBAAoB,CAAC;AAAA,MACrB,oBAAoB,CAAC,UAAU;AAAA,MAC/B,gBAAgB,CAAC,YAAY;AAAA,MAC7B,SAAS,CAAC;AAAA,MACV,kBAAkB,CAAC,SAAS,MAAM;AAAA,MAClC,SAAS,CAAC;AAAA,MACV,mBAAmB,CAAC,QAAQ,OAAO;AAAA,MACnC,kBAAkB,CAAC,UAAU,UAAU;AAAA,MACvC,cAAc,CAAC,QAAQ,UAAU;AAAA,MACjC,kBAAkB,CAAC,OAAO,OAAO;AAAA,MACjC,eAAe,CAAC,UAAU,WAAW;AAAA,MACrC,kBAAkB,CAAC,YAAY;AAAA,MAC/B,eAAe,CAAC,YAAY;AAAA,MAC5B,mBAAmB,CAAC;AAAA,MACpB,SAAS,CAAC,MAAM;AAAA,MAChB,UAAU,CAAC,OAAO,OAAO;AAAA,MACzB,oBAAoB,CAAC,OAAO,OAAO;AAAA,MACnC,aAAa,CAAC,UAAU;AAAA,MACxB,iBAAiB,CAAC,UAAU;AAAA,MAC5B,oBAAoB,CAAC,aAAa;AAAA,MAClC,eAAe,CAAC,UAAU;AAAA,MAC1B,aAAa,CAAC,MAAM;AAAA,MACpB,OAAO,CAAC;AAAA,MACR,YAAY,CAAC,QAAQ,YAAY;AAAA,MACjC,iBAAiB,CAAC,gBAAgB,OAAO;AAAA,MACzC,0BAA0B,CAAC,OAAO,OAAO;AAAA,MACzC,iBAAiB,CAAC;AAAA,MAClB,iBAAiB,CAAC,UAAU,aAAa;AAAA,MACzC,gBAAgB,CAAC;AAAA,MACjB,gBAAgB,CAAC,UAAU;AAAA,MAC3B,cAAc,CAAC,SAAS,WAAW,WAAW;AAAA,MAC9C,iBAAiB,CAAC,UAAU;AAAA,MAC5B,kBAAkB,CAAC,UAAU;AAAA,MAC7B,qBAAqB,CAAC,cAAc;AAAA,MACpC,oBAAoB,CAAC,MAAM,MAAM;AAAA,MACjC,gBAAgB,CAAC,QAAQ,MAAM;AAAA,MAC/B,eAAe,CAAC,UAAU,MAAM;AAAA,MAChC,iBAAiB,CAAC,UAAU;AAAA,IAC7B;AAGA,QAAM,aAAa,OAAO,KAAK,IAAI;AAGnC,eAAW,QAAQ,YAAY;AAC9B,aAAO,OAAO,KAAK,IAAI,CAAC;AAAA,IACzB;AACA,WAAO,OAAO,IAAI;AAYlB,QAAM,gBAAgB,oBAAI,IAAI;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAOD,aAAS,UAAU,KAAK;AACvB,aAAO,CAAC,cAAc,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM;AAAA,IAC9C;AAUA,aAAS,QAAQC,OAAM;AACtB,aAAO,OAAO,KAAKA,KAAI,EAAE,OAAO,SAAS;AAAA,IAC1C;AAQA,aAAS,UAAU,gBAAgB;AAClC,YAAM;AAAA;AAAA,QAEJ,OAAO,OAAO,CAAC,GAAG,IAAI;AAAA;AAExB,iBAAW,QAAQ,OAAO,KAAK,cAAc,GAAG;AAC/C,YAAI,OAAO,OAAO,MAAM,IAAI,GAAG;AAC9B,gBAAMC,QAAO,IAAI,IAAI,eAAe,IAAI,CAAC;AAEzC,qBAAW,OAAO,KAAK,IAAI,GAAG;AAC7B,YAAAA,MAAK,IAAI,GAAG;AAAA,UACb;AAEA,eAAK,IAAI,IAAI,OAAO,OAAO,MAAM,KAAKA,KAAI,CAAC;AAAA,QAC5C,OAAO;AACN,eAAK,IAAI,IAAI,OAAO,OAAO,MAAM,KAAK,eAAe,IAAI,CAAC,CAAC;AAAA,QAC5D;AAAA,MACD;AAEA,aAAO,OAAO,OAAO,IAAI;AAAA,IAC1B;AAEA,IAAAF,SAAQ,OAAO;AACf,IAAAA,SAAQ,UAAU;AAClB,IAAAA,SAAQ,YAAY;AAAA;AAAA;;;AC1LpB;AAAA,wCAAAG,UAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAI,MAAM;AACV,QAAI,oBAAoB;AAExB,aAAS,yBAAyB,GAAG;AACpC,UAAI,IAAI,uBAAO,OAAO,IAAI;AAC1B,UAAI,GAAG;AACN,eAAO,KAAK,CAAC,EAAE,QAAQ,SAAU,GAAG;AACnC,cAAI,MAAM,WAAW;AACpB,gBAAI,IAAI,OAAO,yBAAyB,GAAG,CAAC;AAC5C,mBAAO,eAAe,GAAG,GAAG,EAAE,MAAM,IAAI;AAAA,cACvC,YAAY;AAAA,cACZ,KAAK,WAAY;AAAE,uBAAO,EAAE,CAAC;AAAA,cAAG;AAAA,YACjC,CAAC;AAAA,UACF;AAAA,QACD,CAAC;AAAA,MACF;AACA,QAAE,UAAU;AACZ,aAAO,OAAO,OAAO,CAAC;AAAA,IACvB;AAEA,QAAI,mBAAgC,yCAAyB,KAAK;AA0ClE,QAAM,QAAQ;AAAA,MACb,SAAS;AAAA,MACT,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,mBAAmB;AAAA,MACnB,SAAS;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,mBAAmB;AAAA,MACnB,UAAU;AAAA,MACV,eAAe;AAAA,MACf,SAAS;AAAA,IACV;AASA,aAAS,oBAAoB,QAAQC,OAAM;AAC1C,YAAM,aAAa,OAAO,CAAC,GAC1B;AAAA;AAAA,QAEE,OAAO,GAAG,EAAE;AAAA;AAIf,YAAM,QAAQ;AAAA,QACb,MAAM,MAAM;AAAA,QACZ,OAAOA,MAAK,MAAM,WAAW,OAAO,kBAAkB,GAAG;AAAA,MAC1D;AAEA,UAAI,WAAW,KAAK;AACnB,cAAM,MAAM;AAAA,UACX,OAAO,WAAW,IAAI;AAAA,UACtB,KAAK,kBAAkB,IAAI;AAAA,QAC5B;AAAA,MACD;AAEA,UAAI,WAAW,OAAO;AACrB,cAAM,QAAQ,WAAW,MAAM,CAAC;AAChC,cAAM,MAAM,kBAAkB,MAAM,CAAC;AACrC,cAAM,QAAQ,CAAC,MAAM,OAAO,MAAM,GAAG;AAAA,MACtC;AAEA,aAAO;AAAA,IACR;AAMA,QAAM,kBAAN,MAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOrB,YAAY,eAAeA,OAAM;AAIhC,aAAK,iBAAiB;AAItB,aAAK,UAAU,CAAC;AAGhB,aAAK,cAAc;AAGnB,aAAK,QAAQA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,UAAU,OAAO,OAAO;AACvB,cAAM,OAAO,MAAM,MAClB,KAAK,KAAK,gBAKV;AAAA;AAAA,UAA2C;AAAA,WAC3C;AAAA;AAAA,UAAwC;AAAA;AAEzC,YAAI,SAAS,GAAG,MAAM;AACrB,mBAAS,OAAO,MAAM;AAGtB,cAAI,WAAW,SAAS,MAAM,UAAU,UAAU;AACjD,qBAAS,OAAO,MAAM;AAAA,UACvB;AAEA,cACC,MAAM,cAAc,KACpB,WAAW,UACV,MAAM,UAAU,WAAW,MAAM,UAAU,QAC3C;AACD,qBAAS,OAAO,MAAM;AAAA,UACvB;AAAA,QACD,WAAW,SAAS,GAAG,WAAW;AACjC,mBAAS,OAAO,MAAM;AAAA,QACvB,WACC,SAAS,GAAG,QACZ,SAAS,GAAG,SACZ,SAAS,GAAG,UACZ,SAAS,GAAG,UACZ,SAAS,GAAG,UACZ,SAAS,GAAG,UACZ,SAAS,GAAG,OACZ,SAAS,GAAG,YACZ,SAAS,GAAG,SACZ,SAAS,GAAG,YACZ,SAAS,GAAG,YACZ,SAAS,GAAG,YACZ,SAAS,GAAG,SACZ,SAAS,GAAG,eACZ,SAAS,GAAG,UACZ,SAAS,GAAG,YACZ,SAAS,GAAG,aACZ,SAAS,GAAG,UACZ,SAAS,GAAG,eACX,WAAW,QAAQ,KAAK,SAAS,CAAC,KAAK,WACvC,cAAc,QAAQ,KAAK,UAC3B;AACD,mBAAS,OAAO,MAAM;AACtB,mBAAS,QAAQ,KAAK,MAAM,MAAM,MAAM,OAAO,MAAM,GAAG;AAAA,QACzD,WAAW,SAAS,GAAG,SAAS;AAC/B,mBAAS,OAAO,MAAM;AAAA,QACvB,WAAW,KAAK,UAAU,aAAa,SAAS,GAAG,mBAAmB;AACrE,mBAAS,OAAO,MAAM;AAAA,QACvB,WAAW,KAAK,SAAS;AACxB,cAAI,KAAK,YAAY,UAAU,KAAK,YAAY,SAAS;AACxD,qBAAS,OAAO,MAAM;AAAA,UACvB,WAAW,KAAK,YAAY,QAAQ;AACnC,qBAAS,OAAO,MAAM;AAAA,UACvB,OAAO;AACN,qBAAS,OAAO,MAAM;AAAA,UACvB;AAAA,QACD,WAAW,SAAS,GAAG,KAAK;AAC3B,mBAAS,OAAO,MAAM;AACtB,mBAAS,QAAQ,KAAK,MAAM,MAAM,MAAM,OAAO,MAAM,GAAG;AAAA,QACzD,WAAW,SAAS,GAAG,QAAQ;AAC9B,cAAI,MAAM,mBAAmB;AAC5B,kBAAM,oBAAoB;AAC1B,qBAAS,OAAO,MAAM;AAAA,UACvB,OAAO;AACN,qBAAS,OAAO,MAAM;AAAA,UACvB;AAEA,mBAAS,QAAQ,KAAK,MAAM,MAAM,MAAM,OAAO,MAAM,GAAG;AAAA,QACzD,WAAW,SAAS,GAAG,QAAQ;AAC9B,mBAAS,OAAO,MAAM;AACtB,gBAAMC;AAAA;AAAA,YACL,WAAW,SAAS,MAAM;AAAA;AAG3B,mBAAS,QAAQ;AAAA,YAChB,OAAOA,OAAM;AAAA,YACb,SAASA,OAAM;AAAA,UAChB;AACA,mBAAS,QAAQ,IAAIA,OAAM,OAAO,IAAIA,OAAM,KAAK;AAAA,QAClD;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,QAAQ,OAAO,OAAO;AACrB,cAAM,KAAK,KAAK,gBACf,SAAS,MAAM,QACf,iBAAiB,KAAK;AAQvB,cAAM,0BAA0B,MAAM;AACrC,iBAAO,KAAK,oBAAoB,KAAK,SAAS,KAAK,KAAK,CAAC;AACzD,eAAK,UAAU,CAAC;AAAA,QACjB;AAEA,YAAI,MAAM,SAAS,GAAG,KAAK;AAE1B,cAAI,KAAK,aAAa;AACrB,mBAAO,KAAK,KAAK,UAAU,KAAK,aAAa,KAAK,CAAC;AAAA,UACpD;AAEA;AAAA,QACD;AAEA,YAAI,MAAM,SAAS,GAAG,WAAW;AAEhC,cAAI,KAAK,aAAa;AACrB,mBAAO,KAAK,KAAK,UAAU,KAAK,aAAa,KAAK,CAAC;AACnD,iBAAK,cAAc;AAAA,UACpB;AAEA,yBAAe,KAAK,KAAK;AAGzB,cAAI,eAAe,SAAS,GAAG;AAC9B,oCAAwB;AAAA,UACzB;AAEA;AAAA,QACD;AACA,YAAI,MAAM,SAAS,GAAG,cAAc;AACnC,yBAAe,KAAK,KAAK;AACzB,kCAAwB;AACxB;AAAA,QACD;AACA,YAAI,MAAM,SAAS,GAAG,QAAQ;AAE7B,cAAI,KAAK,aAAa;AACrB,mBAAO,KAAK,KAAK,UAAU,KAAK,aAAa,KAAK,CAAC;AAAA,UACpD;AAGA,eAAK,cAAc;AACnB;AAAA,QACD;AACA,YAAI,MAAM,SAAS,GAAG,YAAY,MAAM,SAAS,GAAG,iBAAiB;AACpE,cAAI,KAAK,aAAa;AACrB,2BAAe,KAAK,KAAK,WAAW;AACpC,iBAAK,cAAc;AAAA,UACpB;AAEA,yBAAe,KAAK,KAAK;AACzB;AAAA,QACD;AAEA,YAAI,KAAK,aAAa;AACrB,iBAAO,KAAK,KAAK,UAAU,KAAK,aAAa,KAAK,CAAC;AACnD,eAAK,cAAc;AAAA,QACpB;AAEA,eAAO,KAAK,KAAK,UAAU,OAAO,KAAK,CAAC;AAAA,MACzC;AAAA,IACD;AAeA,QAAM;AAAA;AAAA,MAA2C;AAAA,QAChD;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QACA;AAAA;AAAA,QACA;AAAA;AAAA,QACA;AAAA;AAAA,QACA;AAAA;AAAA,QACA;AAAA;AAAA,QACA;AAAA;AAAA,QACA;AAAA;AAAA,QACA;AAAA;AAAA,QACA;AAAA;AAAA,QACA;AAAA;AAAA,QACA;AAAA;AAAA,MACD;AAAA;AAMA,QAAM;AAAA;AAAA;AAAA,MAGJ,mBAAmB,GAAG,EAAE;AAAA;AAQ1B,aAAS,uBAAuB;AAC/B,aAAO;AAAA,IACR;AAMA,aAAS,2BAA2B;AACnC,aAAO,CAAC,GAAG,kBAAkB;AAAA,IAC9B;AAQA,aAAS,qBAAqB,cAAc,GAAG;AAC9C,UAAIC,WACH,gBAAgB,WAAW,qBAAqB,IAAI;AAErD,UAAI,OAAOA,aAAY,UAAU;AAChC,cAAM,IAAI;AAAA,UACT,oEAAoE,OAAO,WAAW;AAAA,QACvF;AAAA,MACD;AAIA,UAAIA,YAAW,MAAM;AACpB,QAAAA,YAAW;AAAA,MACZ;AAEA,UACC,CAAC,mBAAmB;AAAA;AAAA,QAElBA;AAAA,MACF,GACC;AACD,cAAM,IAAI,MAAM,sBAAsB;AAAA,MACvC;AAEA;AAAA;AAAA,QAA6CA;AAAA;AAAA,IAC9C;AAQA,aAAS,oBAAoB,aAAa,UAAU;AACnD,UACC,eAAe,YACf,eAAe,YACf,eAAe,YACd;AACD,eAAO;AAAA,MACR;AAEA,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACtC;AA4BA,aAAS,iBAAiB,SAAS;AAClC,YAAM,cAAc,qBAAqB,QAAQ,WAAW;AAC5D,YAAM,aAAa,oBAAoB,QAAQ,UAAU;AACzD,YAAM,SAAS,QAAQ,UAAU;AACjC,YAAM,YAAY,QAAQ,QAAQ;AAElC,UAAI,gBAAgB,KAAK,QAAQ,eAAe;AAE/C,cAAM,IAAI;AAAA,UACT;AAAA,QACD;AAAA,MACD;AACA,UACC,OAAO,QAAQ,kBAAkB,eACjC,OAAO,QAAQ,kBAAkB,WAChC;AACD,cAAM,IAAI;AAAA,UACT;AAAA,QACD;AAAA,MACD;AACA,YAAM,gBACL,gBAAgB,IAAI,QAAQ,iBAAiB,UAAU;AACxD,YAAM,eAAe,QAAQ,gBAAgB,CAAC;AAC9C,YAAM,6BACL,QAAQ,eAAe,cAAc,QAAQ,aAAa,YAAY;AAEvE,UAAI,eAAe,YAAY,cAAc,GAAG;AAC/C,cAAM,IAAI;AAAA,UACT;AAAA,QACD;AAAA,MACD;AAEA,aAAO,OAAO,OAAO,CAAC,GAAG,SAAS;AAAA,QACjC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAAA,IACF;AA+DA,QAAM,QAAQ,uBAAO,yBAAyB;AAC9C,QAAM,sBAAsB,uBAAO,4BAA4B;AAc/D,aAAS,oCACR,OACAC,OACA,OACA,KACA,UACA,QACAH,OACC;AAED,UAAI;AAEJ,UAAI,OAAO;AACV,eAAO;AAAA,MACR,WAAWA,MAAK,MAAM,OAAO,QAAQ,CAAC,MAAM,MAAM;AACjD,eAAO;AAAA,MACR,OAAO;AACN,eAAO;AAAA,MACR;AAeA,YAAM,UAAU;AAAA,QACf;AAAA,QACA,OAAOG;AAAA,MACR;AAEA,UAAI,OAAO,UAAU,UAAU;AAC9B,gBAAQ,QAAQ;AAChB,gBAAQ,MAAM;AACd,gBAAQ,QAAQ,CAAC,OAAO,GAAG;AAAA,MAC5B;AAEA,UAAI,OAAO,aAAa,UAAU;AACjC,gBAAQ,MAAM;AAAA,UACb,OAAO;AAAA,UACP,KAAK;AAAA,QACN;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAGA,QAAI,SAAS,MAAM;AAOlB,aAAO,YAAU;AAChB,cAAM;AAAA;AAAA,UACL,OAAO,OAAO,CAAC,GAAG,OAAO,MAAM,QAAQ;AAAA;AAGxC,YAAI,OAAO,UAAU;AACpB,iBAAO,OAAO,UAAU,OAAO,SAAS,QAAQ;AAAA,QACjD;AAEA,eAAO,MAAM,eAAe,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,UAKlC,YAAY,MAAMH,OAAM;AACvB,gBAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC9C,qBAAO,CAAC;AAAA,YACT;AACA,gBAAI,OAAOA,UAAS,YAAY,EAAEA,iBAAgB,SAAS;AAC1D,cAAAA,QAAO,OAAOA,KAAI;AAAA,YACnB;AAGA,kBAAM,qBAAqB,KAAK;AAChC,kBAAM,UAAU,iBAAiB,IAAI;AACrC,kBAAM,eAAe,QAAQ,gBAAgB,CAAC;AAC9C,kBAAM,kBACL,QAAQ,WAAW,OAChB,IAAI;AAAA,cACJ;AAAA;AAAA,cAGAA;AAAA,YACD,IACC;AAWJ,kBAAM,QAAQ;AAAA,cACb,oBACC,sBAAsB,QAAQ;AAAA,cAC/B,QAAQ,kBAAkB,CAAC,IAAI;AAAA,cAC/B,UAAU,QAAQ,YAAY,OAAO,CAAC,IAAI;AAAA,cAC1C,eACC,aAAa,kBAAkB,QAC/B,QAAQ,eAAe;AAAA,cACxB,aAAa,QAAQ;AAAA,cACrB,mBAAmB;AAAA,cACnB,WAAW;AAAA,cACX,kBAAkB,CAAC;AAAA,YACpB;AAGA;AAAA,cACC;AAAA;AAAA,gBAEC,aAAa,QAAQ;AAAA,gBACrB,YAAY,QAAQ;AAAA,gBACpB,QAAQ,QAAQ;AAAA,gBAChB,WAAW,QAAQ;AAAA,gBACnB,eAAe,QAAQ;AAAA;AAAA,gBAGvB,4BACC,QAAQ;AAAA;AAAA,gBAGT,QAAQ,OAAO;AACd,sBAAI,iBAAiB;AAEpB,oCAAgB;AAAA,sBACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAOC;AAAA,oBACF;AAAA,kBACD;AACA,sBAAI,MAAM,SAAS,SAAS,KAAK;AAChC,0BAAM,YAAY;AAAA,kBACnB;AAAA,gBACD;AAAA;AAAA,gBAGA,UAAU,OAAOG,OAAM,OAAO,KAAK,UAAU,QAAQ;AACpD,sBAAI,MAAM,UAAU;AACnB,0BAAM,UACL;AAAA,sBACC;AAAA,sBACAA;AAAA,sBACA;AAAA,sBACA;AAAA,sBACA;AAAA,sBACA;AAAA;AAAA;AAAA,sBAIAH;AAAA,oBACD;AAED,0BAAM,SAAS,KAAK,OAAO;AAAA,kBAC5B;AAAA,gBACD;AAAA,cACD;AAAA;AAAA;AAAA,cAGAA;AAAA,YACD;AAMA,iBAAK,KAAK,IAAI;AAAA,UACf;AAAA;AAAA;AAAA;AAAA;AAAA,UAMA,WAAW;AACV,eAAG;AACF,mBAAK,KAAK;AAAA,YACX,SAAS,KAAK,SAAS,SAAS;AAGhC,iBAAK,KAAK;AAEV,kBAAM,QAAQ,KAAK,KAAK;AACxB,kBAAM;AAAA;AAAA,cAAuC,MAAM;AAAA;AAEnD,gBAAI,MAAM,UAAU;AACnB,qBAAO,WAAW,MAAM;AAAA,YACzB;AAEA,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,WAAWI,OAAM,MAAM;AACtB,kBAAM,SAAS,MAAM,WAAWA,OAAM,IAAI;AAE1C,mBAAO,KAAK,mBAAmB,EAAE,MAAM;AAAA,UACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUA,aAAaA,OAAM,MAAM,KAAK,KAAK;AAClC,kBAAM,SAAS,MAAM,aAAaA,OAAM,MAAM,KAAK,GAAG;AAEtD,mBAAO,KAAK,mBAAmB,EAAE,MAAM;AAAA,UACxC;AAAA;AAAA;AAAA;AAAA;AAAA,UAMA,QAAQ;AACP,kBAAM,QAAQ,KAAK,KAAK;AACxB,kBAAM,OAAO,MAAM,MAAM;AAEzB,kBAAM;AAAA;AAAA,cAA6C;AAAA;AAGnD,oBAAQ,aAAa,MAAM;AAE3B,gBAAI,MAAM,UAAU;AACnB,sBAAQ,WAAW,MAAM;AAAA,YAC1B;AACA,gBAAI,MAAM,QAAQ;AACjB,sBAAQ,SAAS,MAAM;AAAA,YACxB;AAeA,iBAAK,KAAK,EAAE,iBAAiB,QAAQ,qBAAmB;AACvD,oBAAM,cAAc;AACpB,oBAAM,YAAY,gBAAgB,OAAO,IAAI;AAE7C,8BAAgB,SAAS;AACzB,8BAAgB,OAAO;AAEvB,kBAAI,gBAAgB,OAAO;AAC1B,gCAAgB,MAAM,CAAC,KAAK;AAC5B,gCAAgB,MAAM,CAAC,KAAK;AAAA,cAC7B;AAEA,kBAAI,gBAAgB,KAAK;AACxB,gCAAgB,IAAI,MAAM,UAAU;AACpC,gCAAgB,IAAI,IAAI,UAAU;AAAA,cACnC;AAAA,YACD,CAAC;AAED,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,cAAcA,OAAM;AACnB,gBAAI,KAAK,KAAK,EAAE,eAAe;AAC9B,mBAAK,SAAS;AAAA,YACf;AACA,mBAAO,MAAM,cAAcA,KAAI;AAAA,UAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASA,MAAM,KAAK,SAAS;AACnB,kBAAM,MAAM,OAAO,MAAM,YAAY,KAAK,OAAO,GAAG;AACpD,kBAAM;AAAA;AAAA,cACL,IAAI,YAAY,OAAO;AAAA;AAGxB,gBAAI,QAAQ;AACZ,gBAAI,aAAa,IAAI;AACrB,gBAAI,SAAS,IAAI,SAAS;AAC1B,kBAAM;AAAA,UACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASA,iBAAiB,KAAK,SAAS;AAC9B,iBAAK,MAAM,KAAK,OAAO;AAAA,UACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,WAAW,KAAK;AACf,gBAAI,UAAU;AAEd,gBAAI,QAAQ,QAAQ,QAAQ,QAAQ;AACnC,mBAAK,MAAM;AAEX,kBAAI,KAAK,QAAQ,WAAW;AAC3B,uBAAO,KAAK,MAAM,KAAK,WAAW;AACjC,uBAAK,YACJ,KAAK,MAAM;AAAA,oBACV;AAAA,oBACA,KAAK,YAAY;AAAA,kBAClB,IAAI;AACL,oBAAE,KAAK;AAAA,gBACR;AAAA,cACD;AAEA,mBAAK,UAAU;AAAA,YAChB;AAEA,gBAAI,KAAK,MAAM,KAAK,OAAO;AAC1B,yBAAW,IAAI,KAAK,MAAM,MAAM,KAAK,OAAO,KAAK,GAAG,CAAC;AAAA,YACtD;AAEA,iBAAK,MAAM,KAAK,OAAO,OAAO;AAAA,UAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWA,eAAe,OAAO;AACrB,kBAAM,SAAS,MAAM,eAAe,KAAK;AAEzC,gBAAI,KAAK,SAAS,SAAS,QAAQ;AAClC,mBAAK,KAAK,EAAE,oBAAoB;AAAA,YACjC;AACA,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,CAAC,mBAAmB,EAAE,QAAQ;AAG7B,gBAAI,OAAO,SAAS,mBAAmB;AAEtC,mBAAK,KAAK,EAAE,iBAAiB;AAAA;AAAA,gBAE3B;AAAA,cACF;AAAA,YACD;AAEA,gBACC,OAAO,KAAK,SAAS,UAAU,KAC/B,EAAE,eAAe,SAChB;AAKD,cAAC,OAAQ,YAAY;AAAA,YACtB;AAEA,mBAAO;AAAA,UACR;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAoIA,QAAM,UAAU;AAAA;AAAA,MAEf,UAAU;AAAA;AAAA,MAGV,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,MAMN,IAAI,UAAU;AACb,YAAI,KAAK,aAAa,MAAM;AAC3B,gBAAM;AAAA;AAAA,YAA8C,OAAO;AAAA;AAE3D,eAAK;AAAA;AAAA;AAAA;AAAA,UAKH,iBAAiB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAKlB;AAAA,UACN;AAAA,QAGH;AACA,eAAO,KAAK;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,IAAI,MAAM;AACT,YAAI,KAAK,SAAS,MAAM;AACvB,gBAAM;AAAA;AAAA,YAA8C,OAAO;AAAA;AAC3D,gBAAM,aAAa,IAAI;AAEvB,eAAK;AAAA;AAAA;AAAA;AAAA,UAKH,iBAAiB,OAAO;AAAA,YACvB;AAAA;AAAA,YAGC;AAAA,UACF;AAAA,QAGH;AACA,eAAO,KAAK;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,IAAI,SAAS;AACZ,cAAM,SAAS;AAAA,UACd,WAAW,QAAQ,gBAAgB,QAAQ,aAAa;AAAA,QACzD;AAEA,eAAO,SAAS,KAAK,MAAM,KAAK;AAAA,MACjC;AAAA,IACD;AAcA,aAAS,SAASJ,OAAM,SAAS;AAChC,YAAM,SAAS,QAAQ,IAAI,OAAO;AAGlC,UAAI,CAAC,WAAW,QAAQ,WAAW,MAAM;AACxC,kBAAU,OAAO,OAAO,CAAC,GAAG,SAAS,EAAE,QAAQ,KAAK,CAAC;AAAA,MACtD;AAEA;AAAA;AAAA,QAAoC,IAAI,OAAO,SAASA,KAAI,EAAE,SAAS;AAAA;AAAA,IACxE;AAaA,aAASK,OAAML,OAAM,SAAS;AAC7B,YAAM,SAAS,QAAQ,IAAI,OAAO;AAElC,aAAO,IAAI,OAAO,SAASA,KAAI,EAAE,MAAM;AAAA,IACxC;AAOA,QAAME,WAAU;AAChB,QAAM,OAAO;AAGb,QAAM,SAA0B,4BAAY;AAC3C,UAAI,KAEH,QAAQ,CAAC;AAEV,UAAI,OAAO,OAAO,WAAW,YAAY;AACxC,gBAAQ,uBAAO,OAAO,IAAI;AAAA,MAC3B;AAEA,WAAK,OAAO,kBAAkB,MAAM;AACnC,YAAI,OAAO,OAAO,kBAAkB,MAAM,GAAG,GAAG;AAC/C,gBAAM,GAAG,IAAI;AAAA,QACd;AAAA,MACD;AAEA,UAAI,OAAO,OAAO,WAAW,YAAY;AACxC,eAAO,OAAO,KAAK;AAAA,MACpB;AAEA,aAAO;AAAA,IACR,GAAG;AAEH,QAAM,oBAAoC,qCAAqB;AAE/D,QAAM,wBAAwC,yCAAyB;AAEvE,WAAO,eAAeH,UAAS,eAAe;AAAA,MAC7C,YAAY;AAAA,MACZ,KAAK,WAAY;AAAE,eAAO,kBAAkB;AAAA,MAAM;AAAA,IACnD,CAAC;AACD,IAAAA,SAAQ,SAAS;AACjB,IAAAA,SAAQ,oBAAoB;AAC5B,IAAAA,SAAQ,OAAO;AACf,IAAAA,SAAQ,QAAQM;AAChB,IAAAN,SAAQ,wBAAwB;AAChC,IAAAA,SAAQ,WAAW;AACnB,IAAAA,SAAQ,UAAUG;AAAA;AAAA;;;ACnwClB;AAAA,+CAAAI,UAAAC,SAAA;AAAA;AAEA,IAAAA,QAAO,UAAU,CAAAC,YAAU;AAC1B,UAAI,OAAOA,YAAW,UAAU;AAC/B,cAAM,IAAI,UAAU,mBAAmB;AAAA,MACxC;AAIA,aAAOA,QACL,QAAQ,uBAAuB,MAAM,EACrC,QAAQ,MAAM,OAAO;AAAA,IACxB;AAAA;AAAA;;;ACZA,IAAAC,qBAAA;AAAA,gDAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,uBACL;AACD,QAAM,mBAAmB;AACzB,QAAM,iBAAiB;AAOvB,aAAS,+BAA+B;AACvC,aAAO,IAAI,OAAO,iBAAiB,QAAQ,IAAI;AAAA,IAChD;AAEA,IAAAA,QAAO,UAAU;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA;AAAA;;;AC7BA;AAAA,wCAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAAA,MAChB,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,SAAS;AAAA,IACV;AAEA,QAAM,MAAM;AAAA,MACX,OAAO;AAAA,MACP,SAAS;AAAA,MACT,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,WAAW;AAAA,MACX,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,UAAU;AAAA,MACV,OAAO;AAAA,MACP,eAAe;AAAA,MACf,MAAM;AAAA,MACN,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,sBAAsB;AAAA,MACtB,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,WAAW;AAAA,MACX,UAAU;AAAA,MACV,UAAU;AAAA,MACV,SAAS;AAAA,IACV;AAEA,QAAM,MAAM;AAAA,MACX,GAAG;AAAA,MACH,MAAM;AAAA,IACP;AAEA,QAAM,SAAS;AAAA,MACd,GAAG;AAAA,MACH,aAAa;AAAA,MACb,UAAU;AAAA,MACV,cAAc;AAAA,MACd,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,MAAM;AAAA,MACN,KAAK;AAAA,MACL,SAAS;AAAA,MACT,OAAO;AAAA,MACP,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,mBAAmB;AAAA,MACnB,SAAS;AAAA,MACT,SAAS;AAAA,IACV;AAGA,QAAM,SAAS;AAAA,MACd,GAAG;AAAA,IACJ;AAEA,QAAM,SAAS;AAAA,MACd,GAAG;AAAA,MACH,SAAS;AAAA,MACT,mBAAmB;AAAA,IACpB;AAGA,QAAM,SAAS;AAAA,MACd,GAAG;AAAA,IACJ;AAGA,QAAM,SAAS;AAAA,MACd,GAAG;AAAA,IACJ;AAEA,QAAM,SAAS;AAAA,MACd,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,YAAY;AAAA,IACb;AAEA,QAAM,SAAS;AAAA,MACd,GAAG;AAAA,MACH,gBAAgB;AAAA,MAChB,sBAAsB;AAAA,MACtB,SAAS;AAAA,IACV;AAEA,QAAM,SAAS;AAAA,MACd,GAAG;AAAA,IACJ;AAEA,QAAM,SAAS;AAAA,MACd,GAAG;AAAA,IACJ;AAEA,QAAM,SAAS;AAAA,MACd,GAAG;AAAA,IACJ;AAEA,QAAM,SAAS;AAAA,MACd,GAAG;AAAA,MACH,cAAc;AAAA,MACd,UAAU;AAAA,IACX;AAEA,QAAM,SAAS;AAAA,MACd,GAAG;AAAA,MACH,sBAAsB;AAAA,MACtB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,UAAU;AAAA,IACX;AAMA,IAAAA,QAAO,UAAU;AAAA,MAChB;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,IACD;AAAA;AAAA;;;ACzKA;AAAA,6CAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,sBAAsB;AAE5B,IAAAA,QAAO,UAAU;AAAA,MAChB;AAAA,IACD;AAAA;AAAA;;;ACfA,IAAAC,qBAAA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,EAAE,MAAM,kBAAkB,IAAI;AACpC,QAAM,UAAU;AAChB,QAAM,SAAS;AACf,QAAM,eAAe;AACrB,QAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AACJ,QAAM,UAAU;AAChB,QAAM,EAAE,oBAAoB,IAAI;AAahC,QAAM,qBACL;AACD,QAAM,iBAAiB;AACvB,QAAM,gCACL;AACD,QAAM,2BAA2B;AACjC,QAAM,2BAA2B;AACjC,QAAM,iBAAiB;AAEvB,QAAM,0BACL;AACD,QAAM,2BAA2B;AACjC,QAAM,aAAa,oBAAI,IAAI,CAAC,QAAQ,MAAM,MAAM,UAAU,QAAQ,CAAC;AAGnE,QAAM,yBAAyB,oBAAI,IAAI;AAAA,MACtC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AACD,QAAM,4BAA4B,oBAAI,IAAI;AAAA,MACzC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAED,QAAM,0BAA0B;AAGhC,QAAM,4CACL;AAED,QAAM,+BAA+B,oBAAI,IAAI,CAAC,OAAO,OAAO,KAAK,CAAC;AAMlE,QAAM,qBAAqB,QAAQ,KAAK,mBAAmB,EAAE;AAU7D,aAAS,qBAAqB,WAAWC,QAAO,YAAY;AAC3D,YAAM,aAAa,UAAU;AAO7B,YAAM,+BACLA,WAAU,KAAK,WAAWA,SAAQ,CAAC,EAAE,eAAe;AAErD,aACC,cACA,UAAU,SAAS,SACnB,UAAU,QAAQ,KAClB;AAAA,IAEF;AAOA,aAAS,oBAAoB,GAAG;AAC/B,aAAO,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,kBAAkB;AAAA,IACxC;AAOA,aAAS,iBAAiBC,OAAM;AAC/B,aAAOA,MAAK,MAAM,oBAAoBA,MAAK,GAAG,IAAI;AAAA,IACnD;AAOA,aAAS,iBAAiBA,OAAM;AAC/B,eACK,cAAcA,OAClB,aACA,cAAc,YAAY,QACzB;AACD,YAAI,mBAAmB,KAAK,YAAY,IAAI,GAAG;AAC9C,iBAAO;AAAA,QACR;AAAA,MACD;AACA,aAAO;AAAA,IACR;AAYA,aAAS,WAAWA,OAAM;AACzB,aAAO,QAAQA,SAAQ,mBAAmB,KAAKA,MAAK,IAAI,CAAC;AAAA,IAC1D;AAcA,aAAS,OAAOA,OAAM;AACrB,aAAO,QAAQA,SAAQ,eAAe,KAAKA,MAAK,IAAI,CAAC;AAAA,IACtD;AAOA,aAAS,SAASA,OAAM;AACvB,eACK,cAAcA,OAClB,eAAe,CAAC,WAAW,WAAW,GACtC,cAAc,YAAY,QACzB;AACD,YAAI,OAAO,WAAW,GAAG;AACxB,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAOA,aAAS,cAAcA,OAAM;AAQ5B,aACCA,MAAK,SAAS,aACdA,MAAK,UAAU,QACf,CAACA,MAAK,SACN,CAACA,MAAK;AAAA,IAER;AAQA,aAAS,kBAAkBA,OAAM;AAChC,aACC,cAAcA,KAAI,KACjBA,MAAK,SAAS,gBAAgBA,MAAK,SAAS,eAC5CA,MAAK,SAAS,qBAAqBA,MAAK,aAAa;AAAA,IAExD;AAOA,aAAS,SAASA,OAAM;AACvB,aAAOA,MAAK,OAAO,SAAS,oBAAoBA,MAAK,OAAO,WAAWA;AAAA,IACxE;AAWA,aAAS,qBAAqBA,OAAM;AACnC,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AACJ,cAAIA,MAAK,UAAU,MAAM;AACxB,gBAAI,cAAcA,KAAI,GAAG;AACxB,qBAAO,OAAOA,MAAK,KAAK;AAAA,YACzB;AACA,gBAAIA,MAAK,OAAO;AACf,qBAAO,IAAIA,MAAK,MAAM,OAAO,IAAIA,MAAK,MAAM,KAAK;AAAA,YAClD;AACA,gBAAIA,MAAK,QAAQ;AAChB,qBAAOA,MAAK;AAAA,YACb;AAAA,UAGD,OAAO;AACN,mBAAO,OAAOA,MAAK,KAAK;AAAA,UACzB;AACA;AAAA,QACD,KAAK;AACJ,cAAIA,MAAK,YAAY,WAAW,KAAKA,MAAK,OAAO,WAAW,GAAG;AAC9D,mBAAOA,MAAK,OAAO,CAAC,EAAE,MAAM;AAAA,UAC7B;AACA;AAAA,MAGF;AAEA,aAAO;AAAA,IACR;AAgCA,aAAS,sBAAsBA,OAAM;AACpC,UAAI;AAEJ,cAAQA,SAAQA,MAAK,MAAM;AAAA,QAC1B,KAAK;AACJ,iBAAO,sBAAsBA,MAAK,UAAU;AAAA,QAE7C,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,iBAAOA,MAAK;AACZ;AAAA,QAED,KAAK;AACJ,iBAAOA,MAAK;AACZ;AAAA,MAGF;AAEA,UAAI,MAAM;AACT,YAAI,KAAK,SAAS,gBAAgB,CAACA,MAAK,UAAU;AACjD,iBAAO,KAAK;AAAA,QACb;AAEA,eAAO,qBAAqB,IAAI;AAAA,MACjC;AAEA,aAAO;AAAA,IACR;AAOA,aAAS,oBAAoBA,OAAM;AAClC,aAAOA,SAAQA,MAAK,SAAS,oBAAoBA,MAAK,aAAaA;AAAA,IACpE;AAQA,aAAS,UAAU,QAAQ,UAAU;AACpC,aAAO,OAAO,aAAa,WACxB,WAAW,WACX,SAAS,KAAK,MAAM;AAAA,IACxB;AAQA,aAAS,aAAaA,OAAM,MAAM;AACjC,aAAOA,MAAK,SAAS,gBAAgB,UAAUA,MAAK,MAAM,IAAI;AAAA,IAC/D;AAWA,aAAS,uBAAuBA,OAAM,YAAY,cAAc;AAC/D,YAAM,YAAY,oBAAoBA,KAAI;AAE1C,UAAI,UAAU,SAAS,oBAAoB;AAC1C,eAAO;AAAA,MACR;AAEA,UAAI,cAAc,CAAC,aAAa,UAAU,QAAQ,UAAU,GAAG;AAC9D,eAAO;AAAA,MACR;AAEA,UAAI,cAAc;AACjB,cAAM,qBAAqB,sBAAsB,SAAS;AAE1D,YACC,OAAO,uBAAuB,YAC9B,CAAC,UAAU,oBAAoB,YAAY,GAC1C;AACD,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,kBAAkB,MAAM,OAAO;AAEvC,UAAI,KAAK,SAAS,MAAM,OAAO;AAC9B,eAAO;AAAA,UACN,KAAK,SACL,MAAM,SACN,KAAK,MAAM,YAAY,MAAM,MAAM,WACnC,KAAK,MAAM,UAAU,MAAM,MAAM;AAAA,QAClC;AAAA,MACD;AAGA,UAAI,KAAK,UAAU,MAAM,QAAQ;AAChC,eAAO,KAAK,WAAW,MAAM;AAAA,MAC9B;AAEA,aAAO,KAAK,UAAU,MAAM;AAAA,IAC7B;AAaA,aAAS,gBAAgB,MAAM,OAAO,2BAA2B,OAAO;AACvE,UAAI,KAAK,SAAS,MAAM,MAAM;AAE7B,YAAI,KAAK,SAAS,mBAAmB;AACpC,iBAAO;AAAA,YACN,KAAK;AAAA,YACL;AAAA,YACA;AAAA,UACD;AAAA,QACD;AACA,YAAI,MAAM,SAAS,mBAAmB;AACrC,iBAAO;AAAA,YACN;AAAA,YACA,MAAM;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAEA,cAAQ,KAAK,MAAM;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QAER,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO,KAAK,SAAS,MAAM;AAAA,QAC5B,KAAK;AACJ,iBAAO,kBAAkB,MAAM,KAAK;AAAA,QAErC,KAAK;AACJ,iBAAO;AAAA,YACN,KAAK;AAAA,YACL,MAAM;AAAA,YACN;AAAA,UACD;AAAA,QAED,KAAK,oBAAoB;AACxB,cAAI,CAAC,0BAA0B;AAC9B,kBAAM,QAAQ,sBAAsB,IAAI;AAGxC,gBAAI,UAAU,MAAM;AACnB,qBACC;AAAA,gBACC,KAAK;AAAA,gBACL,MAAM;AAAA,gBACN;AAAA,cACD,KAAK,UAAU,sBAAsB,KAAK;AAAA,YAE5C;AAAA,UACD;AAOA,iBACC,KAAK,aAAa,MAAM,YACxB;AAAA,YACC,KAAK;AAAA,YACL,MAAM;AAAA,YACN;AAAA,UACD,KACA;AAAA,YACC,KAAK;AAAA,YACL,MAAM;AAAA,YACN;AAAA,UACD;AAAA,QAEF;AAAA,QAEA;AACC,iBAAO;AAAA,MACT;AAAA,IACD;AAOA,aAAS,eAAeA,OAAM;AAC7B,aAAO,uBAAuBA,OAAM,WAAW,OAAO;AAAA,IACvD;AAOA,aAAS,kBAAkBA,OAAM;AAChC,aAAO,uBAAuBA,OAAM,0BAA0B,MAAM;AAAA,IACrE;AAOA,aAAS,uBAAuBA,OAAM;AACrC,aAAO,uBAAuBA,OAAM,SAAS,WAAW;AAAA,IACzD;AAOA,aAAS,wBAAwBA,OAAM;AACtC,aAAO,uBAAuBA,OAAM,MAAM,6BAA6B;AAAA,IACxE;AAOA,aAAS,OAAO,GAAG;AAClB,aAAO,WAAS,CAAC,EAAE,KAAK;AAAA,IACzB;AASA,aAAS,gBAAgB,YAAYA,OAAM;AAC1C,YAAM,gBAAgB,WAAW,eAAeA,KAAI,GACnD,YAAY,WAAW,cAAcA,KAAI;AAE1C,aACC,QAAQ,iBAAiB,SAAS,KAClC,cAAc,UAAU,OACxB,cAAc,MAAM,CAAC,KAAKA,MAAK,MAAM,CAAC,KACtC,UAAU,UAAU,OACpB,UAAU,MAAM,CAAC,KAAKA,MAAK,MAAM,CAAC;AAAA,IAEpC;AAOA,aAAS,UAAU,OAAO;AACzB,aAAO,MAAM,UAAU,OAAO,MAAM,SAAS;AAAA,IAC9C;AAOA,aAAS,aAAa,OAAO;AAC5B,aAAO,MAAM,UAAU,QAAQ,MAAM,SAAS;AAAA,IAC/C;AAOA,aAAS,aAAa,OAAO;AAC5B,aAAO,MAAM,UAAU,OAAO,MAAM,SAAS;AAAA,IAC9C;AAOA,aAAS,WAAW,OAAO;AAC1B,aAAO,MAAM,UAAU,OAAO,MAAM,SAAS;AAAA,IAC9C;AAOA,aAAS,mBAAmB,OAAO;AAClC,aAAO,MAAM,UAAU,QAAQ,MAAM,SAAS;AAAA,IAC/C;AAOA,aAAS,iBAAiB,OAAO;AAChC,aAAO,MAAM,UAAU,OAAO,MAAM,SAAS;AAAA,IAC9C;AAOA,aAAS,aAAa,OAAO;AAC5B,aAAO,MAAM,UAAU,OAAO,MAAM,SAAS;AAAA,IAC9C;AAOA,aAAS,oBAAoB,OAAO;AACnC,aAAO,MAAM,UAAU,OAAO,MAAM,SAAS;AAAA,IAC9C;AAOA,aAAS,oBAAoB,OAAO;AACnC,aAAO,MAAM,UAAU,OAAO,MAAM,SAAS;AAAA,IAC9C;AAOA,aAAS,sBAAsB,OAAO;AACrC,aAAO,MAAM,UAAU,OAAO,MAAM,SAAS;AAAA,IAC9C;AAOA,aAAS,sBAAsB,OAAO;AACrC,aAAO,MAAM,UAAU,OAAO,MAAM,SAAS;AAAA,IAC9C;AAOA,aAAS,oBAAoB,OAAO;AACnC,aAAO,MAAM,UAAU,OAAO,MAAM,SAAS;AAAA,IAC9C;AAOA,aAAS,oBAAoB,OAAO;AACnC,aAAO,MAAM,UAAU,OAAO,MAAM,SAAS;AAAA,IAC9C;AAOA,aAAS,eAAe,OAAO;AAC9B,aACC,MAAM,SAAS,UACf,MAAM,SAAS,WACf,MAAM,SAAS;AAAA,IAEjB;AAOA,aAAS,eAAe,OAAO;AAC9B,aAAO,MAAM,SAAS;AAAA,IACvB;AAQA,aAAS,oBAAoBA,OAAM;AAClC,aACCA,MAAK,SAAS,8BACdA,MAAK,SAAS,4BACdA,MAAK,SAAS;AAAA,IAEhB;AASA,aAAS,iBAAiBA,OAAM,YAAY;AAC3C,YAAM,cAAc,WAAW,eAAeA,OAAM;AAAA,QACnD,iBAAiB;AAAA,MAClB,CAAC;AAED,UACC,eACA,YAAY,SAAS,WACrB,YAAY,MAAM,OAAO,CAAC,MAAM,OAChCA,MAAK,IAAI,MAAM,OAAO,YAAY,IAAI,IAAI,QAAQ,GACjD;AACD,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,IACR;AASA,aAAS,gBAAgBA,OAAM,YAAY;AAC1C,UAAI,SAASA,MAAK;AAElB,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,YACN,oBAAoB,MAAM,IAAI,SAASA;AAAA,YACvC;AAAA,UACD;AAAA,QAED,KAAK;AACJ,iBAAO,iBAAiB,OAAO,QAAQ,UAAU;AAAA,QAElD,KAAK;AAAA,QACL,KAAK;AACJ,cACC,OAAO,SAAS,oBAChB,OAAO,SAAS,iBACf;AACD,mBACC,CAAC,WAAW,kBAAkB,MAAM,EAAE,UACtC,CAAC,YAAY,KAAK,OAAO,IAAI,KAC7B,OAAO,SAAS,sBAChB,OAAO,SAAS,YACf;AACD,uBAAS,OAAO;AAEhB,kBAAI,CAAC,QAAQ;AACZ;AAAA,cACD;AAAA,YACD;AAEA,gBACC,UACA,OAAO,SAAS,yBAChB,OAAO,SAAS,WACf;AACD,qBAAO,iBAAiB,QAAQ,UAAU;AAAA,YAC3C;AAAA,UACD;AAEA,iBAAO,iBAAiBA,OAAM,UAAU;AAAA;AAAA,QAGzC;AACC,iBAAO;AAAA,MACT;AAAA,IACD;AAQA,aAAS,gBAAgBA,OAAM,YAAY;AAC1C,YAAM,eAAe,gBAAgBA,OAAM,UAAU;AAErD,UAAI,gBAAgB,eAAe,KAAK,aAAa,KAAK,GAAG;AAC5D,eAAO;AAAA,MACR;AAMA,aAAO,WACL,kBAAkBA,KAAI,EACtB,KAAK,aAAW,eAAe,KAAK,QAAQ,KAAK,CAAC;AAAA,IACrD;AAQA,aAAS,wBAAwBA,OAAM,YAAY;AAElD,UAAIA,MAAK,SAAS,6BAA6BA,MAAK,OAAO,WAAW,GAAG;AACxE,cAAM,WAAW,WAAW,cAAcA,MAAK,OAAO,CAAC,CAAC;AACxD,cAAM,kBAAkB,WAAW,eAAe,QAAQ;AAE1D,eAAO,oBAAoB,eAAe,IACvC,kBACA;AAAA,MACJ;AAGA,aAAOA,MAAK,KACT,WAAW,cAAcA,MAAK,IAAI,mBAAmB,IACrD,WAAW,cAAcA,OAAM,mBAAmB;AAAA,IACtD;AASA,aAAS,YAAY,MAAM,OAAO,YAAY;AAC7C,YAAM,UAAU,WAAW,UAAU,IAAI;AACzC,YAAM,UAAU,WAAW,UAAU,KAAK;AAE1C,UAAI,QAAQ,WAAW,QAAQ,QAAQ;AACtC,eAAO;AAAA,MACR;AACA,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,EAAE,GAAG;AACxC,YACC,QAAQ,CAAC,EAAE,SAAS,QAAQ,CAAC,EAAE,QAC/B,QAAQ,CAAC,EAAE,UAAU,QAAQ,CAAC,EAAE,OAC/B;AACD,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAcA,aAAS,oBAAoBA,OAAM;AAClC,aACCA,MAAK,SAAS,wBACbA,MAAK,aAAa,QAAQA,MAAK,aAAa;AAAA,IAE/C;AAaA,aAAS,qBAAqBA,OAAM;AACnC,aAAOA,MAAK,SAAS,uBAAuBA,MAAK,aAAa;AAAA,IAC/D;AAQA,aAAS,qCAAqC,MAAM,OAAO;AAC1D,aACE,oBAAoB,IAAI,KAAK,qBAAqB,KAAK,KACvD,qBAAqB,IAAI,KAAK,oBAAoB,KAAK;AAAA,IAE1D;AAOA,aAAS,4BAA4B,UAAU;AAC9C,aAAO,6BAA6B,IAAI,QAAQ;AAAA,IACjD;AAQA,aAAS,wBAAwBA,OAAM,YAAY;AAClD,UAAIA,MAAK,MAAM;AACd,eAAO,WAAW,cAAcA,MAAK,MAAM,YAAY;AAAA,MACxD;AACA,aAAO,WAAW,cAAcA,OAAM,CAAC;AAAA,IACxC;AAYA,aAAS,oBAAoBA,OAAM;AAClC,UAAIA,MAAK,SAAS,cAAc;AAC/B,eAAOA,MAAK;AAAA,MACb;AAGA,aAAOA,MAAK;AAAA,IACb;AAQA,aAAS,gBAAgBA,OAAM;AAC9B,UAAIA,MAAK,UAAU,MAAM;AAOxB,YAAIA,MAAK,QAAQ,QAAQ;AACxB,iBAAO;AAAA,QACR;AAGA,YAAI,OAAOA,MAAK,UAAU,UAAU;AACnC,iBAAO;AAAA,QACR;AAEA,eAAO;AAAA,MACR;AAEA,aAAO,CAAC,CAACA,MAAK;AAAA,IACf;AAQA,aAAS,kBAAkBA,OAAM,UAAU;AAC1C,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AACJ,iBACE,aAAa,QAAQ,gBAAgBA,KAAI,MAAM,QAC/C,aAAa,QAAQ,gBAAgBA,KAAI,MAAM;AAAA,QAGlD,KAAK;AACJ,iBAAO,aAAa,QAAQA,MAAK,aAAa;AAAA,QAE/C,KAAK;AAKJ,iBACC,aAAaA,MAAK,aACjB,kBAAkBA,MAAK,MAAM,QAAQ,KACrC,kBAAkBA,MAAK,OAAO,QAAQ;AAAA,QAGzC,KAAK;AACJ,iBACC,CAAC,OAAO,KAAK,EAAE,SAASA,MAAK,QAAQ,KACrC,aAAaA,MAAK,SAAS,MAAM,GAAG,EAAE,KACtC,kBAAkBA,MAAK,OAAO,QAAQ;AAAA,MAIzC;AACA,aAAO;AAAA,IACR;AAQA,aAAS,4BAA4B,OAAOA,OAAM;AACjD,YAAM,YAAY,MAAM,WAAW,KAAK,SAAO,IAAI,eAAeA,KAAI;AAEtE,aAAO;AAAA,QACN,aACA,UAAU,YACV,UAAU,SAAS,MAAM,SAAS,YAClC,UAAU,SAAS,KAAK,WAAW;AAAA,MACpC;AAAA,IACD;AAaA,aAAS,WAAW,OAAOA,OAAM,mBAAmB;AAEnD,UAAI,CAACA,OAAM;AACV,eAAO;AAAA,MACR;AACA,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QACR,KAAK;AAAA,QACL,KAAK;AAeJ,iBAAO;AAAA,QACR,KAAK;AACJ,iBACE,qBACAA,MAAK,OAAO,KAAK,WAAS,MAAM,MAAM,OAAO,MAAM,KACpDA,MAAK,YAAY,MAAM,SAAO,WAAW,OAAO,KAAK,KAAK,CAAC;AAAA,QAG7D,KAAK,mBAAmB;AACvB,cAAI,CAAC,mBAAmB;AACvB,mBAAOA,MAAK,SAAS;AAAA,cAAM,aAC1B,WAAW,OAAO,SAAS,KAAK;AAAA,YACjC;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AAAA,QAEA,KAAK;AACJ,cACCA,MAAK,aAAa,UACjBA,MAAK,aAAa,YAAY,mBAC9B;AACD,mBAAO;AAAA,UACR;AAEA,cAAIA,MAAK,aAAa,KAAK;AAC1B,mBAAO,WAAW,OAAOA,MAAK,UAAU,IAAI;AAAA,UAC7C;AAEA,iBAAO,WAAW,OAAOA,MAAK,UAAU,KAAK;AAAA,QAE9C,KAAK;AACJ,iBACC,WAAW,OAAOA,MAAK,MAAM,KAAK,KAClC,WAAW,OAAOA,MAAK,OAAO,KAAK,KACnCA,MAAK,aAAa;AAAA,QAGpB,KAAK,qBAAqB;AACzB,gBAAM,iBAAiB;AAAA,YACtB;AAAA,YACAA,MAAK;AAAA,YACL;AAAA,UACD;AACA,gBAAM,kBAAkB;AAAA,YACvB;AAAA,YACAA,MAAK;AAAA,YACL;AAAA,UACD;AACA,gBAAM,qBACL,kBAAkB,kBAAkBA,MAAK,MAAMA,MAAK,QAAQ;AAC7D,gBAAM,sBACL,qBACA,mBACA,kBAAkBA,MAAK,OAAOA,MAAK,QAAQ;AAE5C,iBACE,kBAAkB,mBACnB,sBACA;AAAA,QAEF;AAAA,QACA,KAAK;AACJ,iBAAO;AAAA,QACR,KAAK;AACJ,cAAIA,MAAK,aAAa,KAAK;AAC1B,mBAAO,WAAW,OAAOA,MAAK,OAAO,iBAAiB;AAAA,UACvD;AAEA,cAAI,CAAC,OAAO,KAAK,EAAE,SAASA,MAAK,QAAQ,KAAK,mBAAmB;AAChE,mBAAO;AAAA,cACNA,MAAK;AAAA,cACLA,MAAK,SAAS,MAAM,GAAG,EAAE;AAAA,YAC1B;AAAA,UACD;AAEA,iBAAO;AAAA,QAER,KAAK;AACJ,iBAAO;AAAA,YACN;AAAA,YACAA,MAAK,YAAY,GAAG,EAAE;AAAA,YACtB;AAAA,UACD;AAAA,QACD,KAAK;AACJ,iBAAO,WAAW,OAAOA,MAAK,UAAU,iBAAiB;AAAA,QAC1D,KAAK;AACJ,cACCA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS,WACpB;AACD,gBACCA,MAAK,UAAU,WAAW,KAC1B,WAAW,OAAOA,MAAK,UAAU,CAAC,GAAG,IAAI,GACxC;AACD,qBAAO,4BAA4B,OAAOA,MAAK,MAAM;AAAA,YACtD;AAAA,UACD;AACA,iBAAO;AAAA,QACR,KAAK;AACJ,iBACCA,MAAK,SAAS,eACd,4BAA4B,OAAOA,KAAI;AAAA,MAI1C;AACA,aAAO;AAAA,IACR;AAWA,aAAS,8BAA8BA,OAAM;AAC5C,UAAIA,MAAK,SAAS,uBAAuB;AACxC,eAAO;AAAA,MACR;AACA,YAAM,SAASA,MAAK;AAEpB,aACC,OAAO,SAAS,aAChB,OAAO,SAAS,mBACf,OAAO,SAAS,oBAAoB,WAAW,OAAO,MAAM;AAAA,IAE/D;AAOA,aAAS,YAAYA,OAAM;AAC1B,aACCA,MAAK,SAAS,yBACd,OAAOA,MAAK,cAAc;AAAA,IAE5B;AAOA,aAAS,6BAA6BA,OAAM;AAC3C,YAAM,QAAQA,MAAK,MAAM,CAAC;AAC1B,UAAI,WAAWA;AAEf,cAAQ,WAAW,SAAS,WAAW,SAAS,MAAM,CAAC,MAAM,OAAO;AACnE,YAAI,SAAS,SAAS,uBAAuB;AAC5C,iBAAO;AAAA,QACR;AAAA,MACD;AACA,aAAO;AAAA,IACR;AAWA,aAAS,iCAAiC,OAAO;AAChD,aACE,MAAM,SAAS,iBACd,MAAM,UAAU,OAAO,MAAM,UAAU;AAAA,OAEvC,MAAM,SAAS,gBAAgB,MAAM,SAAS,eAC9C,MAAM,UAAU,QAAQ,MAAM,UAAU;AAAA,IAE5C;AAWA,QAAI;AAEJ;AAwDC,UAAS,WAAT,SAAkBA,OAAM;AACvB,iBAAS,WAAWA,WAAU;AAC7B,gBAAM,EAAE,OAAO,IAAI;AACnB,cAAI,CAAC,QAAQ;AACZ;AAAA,UACD;AACA,cACC,mBAAmB,IAAI,OAAO,IAAI,KAClC,aAAa,OAAO,gBACnB;AACD,mBAAO;AAAA,UACR;AACA,qBAAW;AAAA,QACZ;AACA,eAAO;AAAA,MACR;AAtEA,YAAM,oBAAoB,oBAAI,IAAI,CAAC,kBAAkB,mBAAmB,CAAC;AAGzE,YAAM,eAAe,oBAAI,IAAI;AAAA,QAC5B;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAED,YAAM,wBAAwB,oBAAI,IAAI,CAAC,cAAc,SAAS,CAAC;AAG/D,YAAM,wBAAwB;AAAA,QAC7B,WAAW;AAAA,QACX,OAAO;AAAA,QACP,UAAU;AAAA,QACV,UAAU;AAAA,QACV,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,MACR;AAMA,YAAM,cAAc,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAK,MAAM,MAAM,IAAI,CAAC;AAM7D,YAAM,aAAa,oBAAI,IAAI;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAED,YAAM,qBAAqB,oBAAI,IAAI;AAAA,QAClC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAwBD,gCAA0B,SAAU,YAAYA,OAAM;AACrD,cAAM,YAAY,WAAW,eAAeA,KAAI;AAEhD,YACC,CAAC,aACA,UAAU,SAAS,gBACnB,YAAY,IAAI,UAAU,KAAK,GAC/B;AACD,iBAAO;AAAA,QACR;AAEA,cAAM,WAAW,WAAW,oBAAoB,UAAU,MAAM,CAAC,CAAC;AAGlE;AAAA;AAAA,UAEE,SAAS,OAAO,SAAS,wBACzB,SAAS,OAAO,QAAQ;AAAA,UAExB,SAAS,SAAS,wBAClB,sBAAsB,SAAS;AAAA,UAC/B;AACD,iBAAO;AAAA,QACR;AAEA,YACC,SAAS,SAAS,uBAClB,SAAS,OAAO,SAAS,+BACzB,SAAS,OAAO,QAAQ,SAAS,+BACjC,mBAAmB,IAAI,SAAS,IAAI,KACpC,SAAS,QAAQ,GAChB;AACD,iBAAO;AAAA,QACR;AAEA,YAAI,oBAAoB,SAAS,GAAG;AACnC,iBAAO,CAAC,WAAW,IAAI,SAAS,IAAI;AAAA,QACrC;AAEA,YAAI,oBAAoB,SAAS,GAAG;AACnC,iBACE,SAAS,SAAS,oBAClB,SAAS,OAAO,SAAS,wBACzB,SAAS,OAAO,OAAO,SAAS,sBAChC,SAAS,SAAS,eAClB,SAAS,OAAO,SAAS,qBAC1B,SAAS,SAAS;AAAA,QAEpB;AAEA,YAAI,sBAAsB,IAAI,UAAU,IAAI,GAAG;AAC9C,cACC,SAAS,OAAO,SAAS,wBACzB,CAAC,SAAS,OAAO,MAChB;AACD,mBAAO;AAAA,UACR;AACA,cAAI,kBAAkB,IAAI,SAAS,OAAO,IAAI,GAAG;AAChD,mBAAO;AAAA,UACR;AAEA,gBAAM,UAAU,UAAU;AAC1B,gBAAM,WAAW,sBAAsB,OAAO;AAE9C,iBAAO,SAAS,SAAS;AAAA,QAC1B;AAEA,YAAI,UAAU,SAAS,UAAU;AAChC,iBAAO,CAAC,aAAa,IAAI,SAAS,OAAO,IAAI;AAAA,QAC9C;AAEA,eAAO;AAAA,MACR;AAAA,IACD;AAOA,aAAS,qBAAqBA,OAAM;AACnC,YAAM,EAAE,OAAO,IAAIA;AAGnB,UAAI,OAAO,SAAS,qBAAqB,OAAO,QAAQA,OAAM;AAC7D,eAAO;AAAA,MACR;AAGA,UACC,OAAO,SAAS,cAChB,CAAC,OAAO,aACP,OAAO,QAAQA,SACd,OAAO,UAAUA,SAAQ,OAAO,aAAa,CAAC,OAAO,WACvD,OAAO,OAAO,SAAS,oBACtB;AACD,cAAM,mBAAmB,OAAO;AAChC,cAAM,yBAAyB,iBAAiB;AAEhD,YACC,uBAAuB,SAAS,sBAChC,uBAAuB,YAAY,kBAClC;AACD,iBAAO;AAAA,QACR;AAGA,YACC,uBAAuB,SAAS,cAChC,uBAAuB,UAAU,kBAChC;AACD,iBAAO,qBAAqB,uBAAuB,GAAG;AAAA,QACvD;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAMA,IAAAF,QAAO,UAAU;AAAA,MAChB;AAAA,MACA;AAAA,MACA,mBAAmB;AAAA,MACnB,iBAAiB;AAAA,MACjB;AAAA,MACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,kBAAkB,MAAM,OAAO;AAC9B,eAAO,KAAK,IAAI,IAAI,SAAS,MAAM,IAAI,MAAM;AAAA,MAC9C;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,wBAAwB,OAAO,mBAAmB;AAAA,MAClD,0BAA0B,OAAO,qBAAqB;AAAA,MACtD,wBAAwB,OAAO,mBAAmB;AAAA,MAClD,iBAAiB,OAAO,YAAY;AAAA,MACpC,iBAAiB,OAAO,YAAY;AAAA,MACpC,eAAe,OAAO,UAAU;AAAA,MAChC,uBAAuB,OAAO,kBAAkB;AAAA,MAChD,wBAAwB,OAAO,mBAAmB;AAAA,MAClD,0BAA0B,OAAO,qBAAqB;AAAA,MACtD,wBAAwB,OAAO,mBAAmB;AAAA,MAClD,qBAAqB,OAAO,gBAAgB;AAAA,MAC5C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,gBAAgBE,OAAM;AACrB,eACEA,MAAK,SAAS,aAAa,OAAOA,MAAK,UAAU,YAClDA,MAAK,SAAS;AAAA,MAEhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAeA,qBAAqBA,OAAM;AAC1B,eAAO,qBAAqB,KAAKA,MAAK,IAAI;AAAA,MAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,uBAAuB,YAAY;AAClC,eAAO,WAAW,OAAO,oBAAoB;AAAA,MAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,eAAe,KAAK,WAAW;AAC9B,eAAO,IAAI,CAAC,MAAM,aAAa,IAAI,GAAG,EAAE,MAAM;AAAA,MAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,mBAAmBA,OAAM;AACxB,cAAM,UAAUA,MAAK,MAAM,KAAK;AAEhC,eACEA,MAAK,SAAS,UAAU,QAAQ,WAAW,SAAS,KACpDA,MAAK,SAAS,WAAW,yBAAyB,KAAK,OAAO;AAAA,MAEjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,sBAAsB,QAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQlC,kBAAkB,WAAW,MAAM;AAClC,YAAI,QAAQ;AAEZ,eAAO,OAAO;AACb,gBAAM,WAAW,MAAM,IAAI,IAAI,IAAI;AAEnC,cAAI,UAAU;AACb,mBAAO;AAAA,UACR;AAEA,kBAAQ,MAAM;AAAA,QACf;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MA8BA,qBAAqBA,OAAM,YAAY,EAAE,mBAAmB,KAAK,IAAI,CAAC,GAAG;AAMxE,YACCA,MAAK,OAAO,SAAS,wBACrBA,MAAK,OAAO,UAAUA,OACrB;AACD,iBAAO;AAAA,QACR;AAGA,YAAIA,MAAK,SAAS,eAAe;AAChC,iBAAO;AAAA,QACR;AAGA,aACEA,MAAK,SAAS,yBACdA,MAAK,SAAS,yBACfA,MAAK,OAAO;AAAA,UACX,WAAS,MAAM,SAAS,gBAAgB,MAAM,SAAS;AAAA,QACxD,GACC;AACD,iBAAO;AAAA,QACR;AAEA,YACE,oBAAoB,iBAAiBA,KAAI,KAC1C,gBAAgBA,OAAM,UAAU,GAC/B;AACD,iBAAO;AAAA,QACR;AACA,cAAM,cAAcA,MAAK,OAAO;AAChC,YAAI,cAAcA;AAElB,eAAO,aAAa;AACnB,gBAAM,SAAS,YAAY;AAE3B,kBAAQ,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,YAKpB,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACJ,4BAAc;AACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAaD,KAAK,mBAAmB;AACvB,oBAAM,OAAO,iBAAiB,MAAM;AAEpC,kBAAI,SAAS,QAAQ,CAAC,SAAS,IAAI,GAAG;AACrC,uBAAO;AAAA,cACR;AACA,4BAAc,KAAK;AACnB;AAAA,YACD;AAAA,YACA,KAAK;AACJ,kBAAI,gBAAgB,OAAO,QAAQ,CAAC,SAAS,MAAM,GAAG;AACrD,uBAAO;AAAA,cACR;AACA,4BAAc,OAAO;AACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAaD,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO,OAAO,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YASzB,KAAK;AAAA,YACL,KAAK;AACJ,kBAAI,OAAO,KAAK,SAAS,oBAAoB;AAC5C,uBAAO;AAAA,cACR;AACA,kBACC,oBACA,eACA,OAAO,KAAK,SAAS,gBACrB,oBAAoB,OAAO,KAAK,IAAI,GACnC;AACD,uBAAO;AAAA,cACR;AACA,qBAAO;AAAA;AAAA;AAAA;AAAA;AAAA,YAMR,KAAK;AACJ,qBAAO,EACN,oBACA,eACA,OAAO,SAAS,eAChB,OAAO,GAAG,SAAS,gBACnB,oBAAoB,OAAO,GAAG,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YASpC,KAAK;AACJ,kBACC,OAAO,WAAW,eAClB;AAAA,gBACC;AAAA,gBACA;AAAA,gBACA;AAAA,cACD,GACC;AACD,sBAAM,kBACL,OAAO,OAAO,SAAS,oBACpB,OAAO,SACP;AAEJ,uBAAO,EACN,SAAS,eAAe,KACxB,gBAAgB,OAAO,UAAU,UAAU,KAC3C,CAAC;AAAA,kBACA,gBAAgB,OAAO,UAAU,CAAC;AAAA,gBACnC;AAAA,cAEF;AACA,qBAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQR,KAAK;AACJ,kBAAI,eAAe,OAAO,MAAM,GAAG;AAClC,uBACC,OAAO,UAAU,WAAW,KAC5B,OAAO,UAAU,CAAC,MAAM,eACxB,kBAAkB,OAAO,UAAU,CAAC,CAAC;AAAA,cAEvC;AACA,kBACC,kBAAkB,OAAO,MAAM,KAC/B,uBAAuB,OAAO,MAAM,GACnC;AACD,uBACC,OAAO,UAAU,WAAW,KAC5B,OAAO,UAAU,CAAC,MAAM,eACxB,kBAAkB,OAAO,UAAU,CAAC,CAAC;AAAA,cAEvC;AACA,kBAAI,wBAAwB,OAAO,MAAM,GAAG;AAC3C,uBACC,OAAO,UAAU,WAAW,KAC5B,OAAO,UAAU,CAAC,MAAM,eACxB,kBAAkB,OAAO,UAAU,CAAC,CAAC;AAAA,cAEvC;AACA,qBAAO;AAAA;AAAA,YAGR;AACC,qBAAO;AAAA,UACT;AAAA,QACD;AAGA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,cAAcA,OAAM;AACnB,gBAAQA,MAAK,MAAM;AAAA,UAClB,KAAK;AACJ,mBAAO;AAAA,UAER,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACJ,mBAAO;AAAA,UAER,KAAK;AACJ,mBAAO;AAAA,UAER,KAAK;AACJ,oBAAQA,MAAK,UAAU;AAAA,cACtB,KAAK;AAAA,cACL,KAAK;AACJ,uBAAO;AAAA,cACR,KAAK;AACJ,uBAAO;AAAA,YAGT;AAAA;AAAA,UAID,KAAK;AACJ,oBAAQA,MAAK,UAAU;AAAA,cACtB,KAAK;AACJ,uBAAO;AAAA,cACR,KAAK;AACJ,uBAAO;AAAA,cACR,KAAK;AACJ,uBAAO;AAAA,cACR,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACJ,uBAAO;AAAA,cACR,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACJ,uBAAO;AAAA,cACR,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACJ,uBAAO;AAAA,cACR,KAAK;AAAA,cACL,KAAK;AACJ,uBAAO;AAAA,cACR,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACJ,uBAAO;AAAA,cACR,KAAK;AACJ,uBAAO;AAAA,YAGT;AAAA;AAAA,UAID,KAAK;AAAA,UACL,KAAK;AACJ,mBAAO;AAAA,UAER,KAAK;AACJ,mBAAO;AAAA,UAER,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACJ,mBAAO;AAAA,UAER,KAAK;AACJ,mBAAO;AAAA,UAER;AACC,gBAAIA,MAAK,QAAQ,mBAAmB;AACnC,qBAAO;AAAA,YACR;AAOA,mBAAO;AAAA,QACT;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,aAAaA,OAAM;AAClB,eAAO;AAAA,UACNA,SAAQA,MAAK,SAAS,oBAAoBA,MAAK,KAAK,WAAW;AAAA,QAChE;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,gBAAgBA,OAAM;AACrB,eAAO,WAAWA,KAAI,KAAKF,QAAO,QAAQ,aAAaE,MAAK,IAAI;AAAA,MACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,qBAAqBA,OAAM;AAC1B,cAAM,aAAa,CAAC;AAGpB,YACCA,MAAK,SAAS,aACdA,MAAK,SAAS,yBACdA,MAAK,SAAS;AAAA;AAAA;AAAA;AAAA,QAKbA,MAAK,SAAS,6BACdA,MAAK,KAAK,SAAS,kBACnB;AACD,gBAAM,aACLA,MAAK,SAAS,YAAYA,MAAK,OAAOA,MAAK,KAAK;AAEjD,qBAAW,aAAa,YAAY;AACnC,gBACC,UAAU,SAAS,yBACnB,UAAU,WAAW,SAAS,WAC7B;AACD,yBAAW,KAAK,SAAS;AAAA,YAC1B,OAAO;AACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgCA,iBAAiBA,OAAM;AACtB,eACCA,MAAK,SAAS,aACd,OAAOA,MAAK,UAAU,YACtB,wBAAwB,KAAKA,MAAK,GAAG;AAAA,MAEvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,6BAA6B,OAAO;AACnC,eACC,MAAM,SAAS,aACf,wBAAwB,KAAK,MAAM,KAAK;AAAA,MAE1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MA4DA,wBAAwBA,OAAM;AAC7B,cAAM,SAASA,MAAK;AACpB,cAAM,SAAS,CAAC;AAEhB,YACC,OAAO,SAAS,sBAChB,OAAO,SAAS,wBAChBA,MAAK,SAAS,yBACdA,MAAK,SAAS,qBACb;AAED,cAAI,OAAO,QAAQ;AAClB,mBAAO,KAAK,QAAQ;AAAA,UACrB;AACA,cAAI,CAAC,OAAO,YAAY,OAAO,KAAK,SAAS,qBAAqB;AACjE,mBAAO,KAAK,SAAS;AAAA,UACtB;AAAA,QACD;AACA,YAAIA,MAAK,OAAO;AACf,iBAAO,KAAK,OAAO;AAAA,QACpB;AACA,YAAIA,MAAK,WAAW;AACnB,iBAAO,KAAK,WAAW;AAAA,QACxB;AAEA,YAAI,OAAO,SAAS,cAAc,OAAO,SAAS,oBAAoB;AACrE,cAAI,OAAO,SAAS,eAAe;AAClC,mBAAO;AAAA,UACR;AACA,cAAI,OAAO,SAAS,OAAO;AAC1B,mBAAO,KAAK,QAAQ;AAAA,UACrB,WAAW,OAAO,SAAS,OAAO;AACjC,mBAAO,KAAK,QAAQ;AAAA,UACrB,OAAO;AACN,mBAAO,KAAK,QAAQ;AAAA,UACrB;AAAA,QACD,WAAWA,MAAK,SAAS,qBAAqB;AAC7C,cAAIA,MAAK,SAAS,OAAO;AACxB,mBAAO,KAAK,QAAQ;AAAA,UACrB,WAAWA,MAAK,SAAS,OAAO;AAC/B,mBAAO,KAAK,QAAQ;AAAA,UACrB,OAAO;AACN,mBAAO,KAAK,QAAQ;AAAA,UACrB;AAAA,QACD,WAAW,OAAO,SAAS,sBAAsB;AAChD,iBAAO,KAAK,QAAQ;AAAA,QACrB,OAAO;AACN,cAAIA,MAAK,SAAS,2BAA2B;AAC5C,mBAAO,KAAK,OAAO;AAAA,UACpB;AACA,iBAAO,KAAK,UAAU;AAAA,QACvB;AAEA,YACC,OAAO,SAAS,cAChB,OAAO,SAAS,sBAChB,OAAO,SAAS,sBACf;AACD,cAAI,CAAC,OAAO,YAAY,OAAO,IAAI,SAAS,qBAAqB;AAChE,mBAAO,KAAK,IAAI,OAAO,IAAI,IAAI,EAAE;AAAA,UAClC,OAAO;AACN,kBAAM,OAAO,sBAAsB,MAAM;AAEzC,gBAAI,SAAS,MAAM;AAClB,qBAAO,KAAK,IAAI,IAAI,GAAG;AAAA,YACxB,WAAWA,MAAK,IAAI;AACnB,qBAAO,KAAK,IAAIA,MAAK,GAAG,IAAI,GAAG;AAAA,YAChC;AAAA,UACD;AAAA,QACD,WAAWA,MAAK,SAAS,qBAAqB;AAC7C,iBAAO,KAAK,IAAI,sBAAsBA,KAAI,CAAC,GAAG;AAAA,QAC/C,WAAWA,MAAK,IAAI;AACnB,iBAAO,KAAK,IAAIA,MAAK,GAAG,IAAI,GAAG;AAAA,QAChC;AAEA,eAAO,OAAO,KAAK,GAAG;AAAA,MACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAmGA,mBAAmBA,OAAM,YAAY;AACpC,cAAM,SAASA,MAAK;AACpB,YAAI;AACJ,YAAI;AAEJ,YACC,OAAO,SAAS,cAChB,OAAO,SAAS,sBAChB,OAAO,SAAS,wBAChB,OAAO,SAAS,yBAChB,OAAO,SAAS,qBACf;AACD,kBAAQ,OAAO,IAAI;AACnB,gBAAM,wBAAwBA,OAAM,UAAU,EAAE,IAAI;AAAA,QACrD,WAAWA,MAAK,SAAS,2BAA2B;AACnD,gBAAM,aAAa,WAAW;AAAA,YAC7BA,MAAK;AAAA,YACL;AAAA,UACD;AAEA,kBAAQ,WAAW,IAAI;AACvB,gBAAM,WAAW,IAAI;AAAA,QACtB,OAAO;AACN,kBAAQA,MAAK,IAAI;AACjB,gBAAM,wBAAwBA,OAAM,UAAU,EAAE,IAAI;AAAA,QACrD;AAEA,eAAO;AAAA,UACN,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK;AAAA,UAC9B,KAAK,OAAO,OAAO,CAAC,GAAG,GAAG;AAAA,QAC3B;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MA8CA,gBAAgB,YAAY,EAAE,MAAM,OAAO,GAAG;AAC7C,YAAI,SAAS,WAAW,MAAM,OAAO,CAAC,EAAE,QAAQ;AAC/C,iBAAO;AAAA,YACN;AAAA,YACA,QAAQ,SAAS;AAAA,UAClB;AAAA,QACD;AAEA,YAAI,OAAO,WAAW,MAAM,QAAQ;AACnC,iBAAO;AAAA,YACN,MAAM,OAAO;AAAA,YACb,QAAQ;AAAA,UACT;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,qBAAqB,YAAYA,OAAM;AACtC,YAAI,YAAY,WAAW,cAAcA,KAAI;AAC7C,YAAI,aAAa,WAAW,aAAaA,KAAI;AAE7C,eACC,WAAW,eAAe,SAAS,KACnC,WAAW,eAAe,SAAS,EAAE,SAAS,gBAC9C,WAAW,eAAe,SAAS,EAAE,UAAU,OAC/C,WAAW,cAAc,UAAU,KACnC,WAAW,cAAc,UAAU,EAAE,SAAS,gBAC9C,WAAW,cAAc,UAAU,EAAE,UAAU,KAC9C;AACD,sBAAY,WAAW,eAAe,SAAS;AAC/C,uBAAa,WAAW,cAAc,UAAU;AAAA,QACjD;AAEA,eAAO,WACL,QAAQ,EACR,MAAM,UAAU,MAAM,CAAC,GAAG,WAAW,MAAM,CAAC,CAAC;AAAA,MAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,aAAaA,OAAM;AAClB,gBAAQA,MAAK,MAAM;AAAA,UAClB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACJ,mBAAO;AAAA;AAAA,UAER,KAAK;AACJ,gBAAI,CAAC,KAAK,KAAK,EAAE,SAASA,MAAK,QAAQ,GAAG;AACzC,qBAAOF,QAAO,QAAQ,aAAaE,MAAK,KAAK;AAAA,YAC9C;AAEA,gBAAI,CAAC,OAAO,KAAK,EAAE,SAASA,MAAK,QAAQ,GAAG;AAC3C,qBACCF,QAAO,QAAQ,aAAaE,MAAK,IAAI,KACrCF,QAAO,QAAQ,aAAaE,MAAK,KAAK;AAAA,YAExC;AAOA,mBAAO;AAAA,UAER,KAAK,sBAAsB;AAC1B,kBAAM,QAAQA,MAAK;AAEnB,mBACC,MAAM,WAAW,KACjBF,QAAO,QAAQ,aAAa,MAAM,GAAG,EAAE,CAAC;AAAA,UAE1C;AAAA,UAEA,KAAK;AAOJ,gBAAIE,MAAK,aAAa,MAAM;AAC3B,qBAAOF,QAAO,QAAQ,aAAaE,MAAK,KAAK;AAAA,YAC9C;AAEA,mBACCF,QAAO,QAAQ,aAAaE,MAAK,IAAI,KACrCF,QAAO,QAAQ,aAAaE,MAAK,KAAK;AAAA,UAGxC,KAAK;AACJ,mBACCF,QAAO,QAAQ,aAAaE,MAAK,UAAU,KAC3CF,QAAO,QAAQ,aAAaE,MAAK,SAAS;AAAA,UAG5C;AACC,mBAAO;AAAA,QACT;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,iBAAiBA,OAAM;AACtB,eACCA,MAAK,SAAS,cACb,OAAOA,MAAK,UAAU,YAAY,QAAQA,MAAK,MAAM;AAAA,MAExD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,oBAAoB,WAAW,YAAY;AAC1C,cAAM,gBAAgB;AAAA,UACrB,aAAa,OAAO;AAAA,UACpB,SAAS;AAAA,UACT,OAAO;AAAA,QACR;AAEA,YAAI;AAEJ,YAAI,OAAO,cAAc,UAAU;AAClC,cAAI;AAEJ,cAAI;AACH,qBAAS,OAAO,SAAS,WAAW,aAAa;AAAA,UAClD,QAAQ;AACP,mBAAO;AAAA,UACR;AAEA,gBAAM,WAAW,OAAO;AAExB,sBAAY,OAAO,GAAG,EAAE;AACxB,cAAI,SAAS,QAAQ;AACpB,kBAAM,cAAc,SAAS,GAAG,EAAE;AAElC,gBAAI,CAAC,aAAa,YAAY,MAAM,CAAC,IAAI,UAAU,MAAM,CAAC,GAAG;AAC5D,0BAAY;AAAA,YACb;AAAA,UACD;AAAA,QACD,OAAO;AACN,sBAAY;AAAA,QACb;AAQA,YAAI,UAAU,SAAS,aAAa,UAAU,SAAS,YAAY;AAClE,iBAAO;AAAA,QACR;AAEA,YAAI;AAEJ,YAAI,OAAO,eAAe,UAAU;AACnC,cAAI;AAEJ,cAAI;AACH,qBAAS,OAAO,SAAS,YAAY,aAAa;AAAA,UACnD,QAAQ;AACP,mBAAO;AAAA,UACR;AAEA,gBAAM,WAAW,OAAO;AAExB,uBAAa,OAAO,CAAC;AACrB,cAAI,SAAS,QAAQ;AACpB,kBAAM,eAAe,SAAS,CAAC;AAE/B,gBACC,CAAC,cACD,aAAa,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,GACzC;AACD,2BAAa;AAAA,YACd;AAAA,UACD;AAAA,QACD,OAAO;AACN,uBAAa;AAAA,QACd;AAEA,YACC,UAAU,SAAS,gBACnB,WAAW,SAAS,cACnB;AACD,cACC,UAAU,SAAS,gBACnB,WAAW,SAAS,cACnB;AACD,kBAAM,cAAc,oBAAI,IAAI,CAAC,KAAK,IAAI,CAAC;AACvC,kBAAM,eAAe,oBAAI,IAAI,CAAC,KAAK,IAAI,CAAC;AAExC,mBAAO,EACL,YAAY,IAAI,UAAU,KAAK,KAC/B,YAAY,IAAI,WAAW,KAAK,KAChC,aAAa,IAAI,UAAU,KAAK,KAChC,aAAa,IAAI,WAAW,KAAK;AAAA,UAEpC;AACA,cAAI,UAAU,SAAS,gBAAgB,UAAU,UAAU,KAAK;AAC/D,mBAAO,CAAC,CAAC,SAAS,QAAQ,mBAAmB,EAAE;AAAA,cAC9C,WAAW;AAAA,YACZ;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AAEA,YACC,UAAU,SAAS,YACnB,WAAW,SAAS,YACpB,UAAU,SAAS,cACnB,WAAW,SAAS,YACnB;AACD,iBAAO;AAAA,QACR;AAEA,YACC,UAAU,SAAS,aACnB,WAAW,SAAS,aACpB,WAAW,MAAM,WAAW,GAAG,GAC9B;AACD,iBAAO;AAAA,QACR;AAEA,YACC,UAAU,SAAS,WACnB,WAAW,SAAS,WACpB,WAAW,SAAS,QACnB;AACD,iBAAO;AAAA,QACR;AAEA,YAAI,WAAW,SAAS,qBAAqB;AAC5C,iBAAO;AAAA,QACR;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,wCAAwC,YAAY,SAAS,MAAM;AAClE,cAAM,cAAc,IAAI;AAAA,UACvB,SAAS,aAAa,IAAI,CAAC;AAAA,UAC3B;AAAA,QACD;AAGA,oBAAY,YAAY,QAAQ,MAAM,QAAQ,QAAQ,IAAI;AAG1D,cAAMC,SAAQ,YAAY,KAAK,QAAQ,KAAK;AAG5C,cAAM,QAAQ,WAAW;AAAA,UACxB,QAAQ,MAAM,CAAC,IAAI,KAAK,UAAUA,SAAQA,OAAM,QAAQ,IAAI;AAAA,QAC7D;AACA,cAAM,MAAM;AAAA,UACX,MAAM,MAAM;AAAA,UACZ,QAAQ,MAAM,UAAUA,SAAQ,KAAK,SAAS;AAAA,QAC/C;AAEA,eAAO,EAAE,OAAO,IAAI;AAAA,MACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAcA,wCAAwC,WAAW;AAClD,eAAO,0CAA0C,KAAK,SAAS;AAAA,MAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,wBAAwBD,OAAM;AAC7B,eAAOA,MAAK,SAAS,qBAAqBA,MAAK,YAAY,WAAW;AAAA,MACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MA+BA,mBAAmBA,OAAM,YAAY;AAOpC,iBAAS,qBAAqB,aAAa;AAC1C,cAAI,YAAY,SAAS,uBAAuB;AAC/C,mBAAO,0BAA0B,IAAI,YAAY,IAAI;AAAA,UACtD;AAEA,iBACC,YAAY,SAAS,yBACrB,YAAY,SAAS;AAAA,QAEvB;AAOA,iBAAS,mBAAmB,OAAO;AAClC,iBAAO,MAAM,UAAU,UAAU,MAAM,SAAS;AAAA,QACjD;AAOA,iBAAS,wBAAwB,aAAa;AAC7C,gBAAM,YAAY,WAAW,cAAc,WAAW;AAEtD,iBAAO,QAAQ,SAAS,KAAK,mBAAmB,SAAS;AAAA,QAC1D;AAoDA,iBAAS,YAAY,aAAa;AACjC,kBAAQ,YAAY,MAAM;AAAA,YACzB,KAAK;AACJ,kBAAI,CAAC,YAAY,WAAW;AAC3B,uBAAO;AAAA,cACR;AACA,qBAAO,YAAY,YAAY,SAAS;AAAA,YACzC,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO,YAAY,YAAY,IAAI;AAAA,YACpC;AACC,qBAAO;AAAA,UACT;AAAA,QACD;AAEA,cAAM,YAAYA,MAAK,KAAK,CAAC;AAE7B,eACC,qBAAqB,SAAS,KAC7B,YAAY,SAAS,KAAK,wBAAwBA,KAAI;AAAA,MAEzD;AAAA,MAEA;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,IACD;AAAA;AAAA;;;AC/zFA;AAAA,oDAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AA8BjB,aAAS,mBAAmB,MAAM,OAAO;AACxC,UAAI,KAAK,WAAW,MAAM,QAAQ;AACjC,eAAO;AAAA,MACR;AAEA,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACrC,cAAM,YAAY,KAAK,CAAC,GACvB,aAAa,MAAM,CAAC;AAErB,YACC,UAAU,SAAS,WAAW,QAC9B,UAAU,UAAU,WAAW,OAC9B;AACD,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,aAAa,MAAM,OAAO;AAClC,UAAI,OAAO,SAAS,YAAY,OAAO,UAAU,UAAU;AAE1D,eAAO,SAAS;AAAA,MACjB;AACA,UAAI,MAAM,QAAQ,IAAI,KAAK,MAAM,QAAQ,KAAK,GAAG;AAEhD,eAAO,mBAAmB,MAAM,KAAK;AAAA,MACtC;AAEA,aAAO;AAAA,IACR;AAOA,aAAS,eAAeC,OAAM;AAC7B,aAAOA,MAAK,SAAS,SAASA,MAAK,SAAS;AAAA,IAC7C;AAUA,aAAS,uBAAuBA,OAAMC,QAAO,QAAQ,UAAU;AAC9D,YAAM,SAASD,MAAK;AAEpB,aACC,OAAO,SAAS,oBAChB,SAAS,uBAAuB,OAAO,QAAQ,QAAQ,QAAQ,KAC/D,OAAO,UAAUC,MAAK,MAAMD;AAAA,IAE9B;AAOA,aAAS,qBAAqBA,OAAM;AAEnC,UACC,uBAAuBA,OAAM,GAAG,UAAU,gBAAgB,KAC1D,uBAAuBA,OAAM,GAAG,WAAW,gBAAgB,GAC1D;AACD,eAAO;AAAA,MACR;AAMA,YAAM,cAAcA,MAAK,OAAO;AAEhC,aACC,YAAY,SAAS,uBACpB,uBAAuB,aAAa,GAAG,UAAU,QAAQ,KACzD;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IAEH;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,mBAAmB;AAAA,YACnB,wBAAwB;AAAA,YACxB,eAAe;AAAA,YACf,eAAe;AAAA,UAChB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,eAAe;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,cACA,eAAe;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,cACA,wBAAwB;AAAA,gBACvB,MAAM;AAAA,cACP;AAAA,cACA,mBAAmB;AAAA,gBAClB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,mCACC;AAAA,UACD,mCACC;AAAA,UACD,8BACC;AAAA,UACD,8BACC;AAAA,UACD,sBAAsB;AAAA,UACtB,sBAAsB;AAAA,UACtB,qBAAqB;AAAA,UACrB,qBAAqB;AAAA,QACtB;AAAA,MACD;AAAA,MACA,OAAO,SAAS;AACf,cAAM;AAAA,UACL;AAAA,YACC,eAAe;AAAA,YACf,eAAe;AAAA,YACf;AAAA,YACA;AAAA,UACD;AAAA,QACD,IAAI,QAAQ;AACZ,cAAM,aAAa,QAAQ;AAS3B,iBAAS,OAAOC,OAAM,aAAa;AAClC,cAAIA,MAAK,SAAS,YAAY;AAC7B,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW,GAAG,WAAW;AAAA,cACzB,KAAK,SAAS,mBAAmBA,MAAK,OAAO,UAAU;AAAA,cACvD,MAAM;AAAA,gBACL,MAAM,SAAS,wBAAwBA,MAAK,KAAK;AAAA,cAClD;AAAA,YACD,CAAC;AAAA,UACF,WAAWA,MAAK,SAAS,oBAAoB;AAC5C,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW,GAAG,WAAW;AAAA,cACzB,KAAK,SAAS,mBAAmBA,MAAK,OAAO,UAAU;AAAA,cACvD,MAAM;AAAA,gBACL,MAAM,SAAS,wBAAwBA,MAAK,KAAK;AAAA,cAClD;AAAA,YACD,CAAC;AAAA,UACF,WAAWA,MAAK,SAAS,qBAAqB;AAC7C,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW,GAAG,WAAW;AAAA,cACzB,KAAK,SAAS,mBAAmBA,OAAM,UAAU;AAAA,cACjD,MAAM;AAAA,gBACL,MAAM,SAAS,wBAAwBA,KAAI;AAAA,cAC5C;AAAA,YACD,CAAC;AAAA,UACF,OAAO;AACN,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW,GAAG,WAAW;AAAA,YAC1B,CAAC;AAAA,UACF;AAAA,QACD;AASA,iBAAS,WAAW,OAAO,aAAa;AACvC,qBAAWA,SAAQ,OAAO;AACzB,mBAAOA,OAAM,WAAW;AAAA,UACzB;AAAA,QACD;AAQA,iBAAS,UAAU,OAAO;AACzB,gBAAM,YAAY,CAAC;AACnB,cAAI,QAAQ;AAEZ,mBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACtC,kBAAMA,QAAO,MAAM,CAAC;AAEpB,gBAAI,eAAeA,KAAI,GAAG;AAEzB,oBAAM,OAAO,SAAS,sBAAsBA,KAAI;AAChD,oBAAM,MACL,SAAS,OAAO,OAAO,WAAW,UAAUA,MAAK,GAAG;AAGrD,uBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAC1C,sBAAM,WAAW,UAAU,CAAC;AAE5B,oBAAI,aAAa,SAAS,KAAK,GAAG,GAAG;AACpC,2BAAS,QAAQ;AAAA,oBAChB,GAAIA,MAAK,SAAS,QAAQ,CAACA,KAAI,IAAI,CAAC;AAAA,kBACrC;AACA,2BAAS,QAAQ;AAAA,oBAChB,GAAIA,MAAK,SAAS,QAAQ,CAACA,KAAI,IAAI,CAAC;AAAA,kBACrC;AACA,0BAAQ;AACR;AAAA,gBACD;AAAA,cACD;AACA,kBAAI,CAAC,OAAO;AACX,0BAAU,KAAK;AAAA,kBACd;AAAA,kBACA,SAASA,MAAK,SAAS,QAAQ,CAACA,KAAI,IAAI,CAAC;AAAA,kBACzC,SAASA,MAAK,SAAS,QAAQ,CAACA,KAAI,IAAI,CAAC;AAAA,gBAC1C,CAAC;AAAA,cACF;AACA,sBAAQ;AAAA,YACT;AAAA,UACD;AAEA,qBAAW,EAAE,SAAS,QAAQ,KAAK,WAAW;AAC7C,gBAAI,sBAAsB,QAAQ,UAAU,CAAC,QAAQ,QAAQ;AAC5D,yBAAW,SAAS,eAAe;AAAA,YACpC;AACA,gBAAI,sBAAsB,QAAQ,UAAU,CAAC,QAAQ,QAAQ;AAC5D,yBAAW,SAAS,eAAe;AAAA,YACpC;AAAA,UACD;AAAA,QACD;AAQA,iBAAS,mBAAmBA,OAAM;AACjC,oBAAUA,MAAK,WAAW,OAAO,OAAK,EAAE,SAAS,UAAU,CAAC;AAAA,QAC7D;AAQA,iBAAS,wBAAwBA,OAAM;AACtC,gBAAM,eAAe,IAAI;AAAA,YACxBA,MAAK,WACH;AAAA,cACA,OACC,EAAE,SAAS,cACX,EAAE,SAAS,UACX,CAAC,EAAE;AAAA,YACL,EACC,IAAI,CAAC,EAAE,IAAI,MAAM,IAAI,IAAI;AAAA,UAC5B;AAEA,gBAAM,YAAY,aAAa,IAAI,KAAK;AACxC,gBAAM,YAAY,aAAa,IAAI,KAAK;AAExC,cAAI,sBAAsB,aAAa,CAAC,WAAW;AAClD,mBAAOA,OAAM,eAAe;AAAA,UAC7B;AACA,cAAI,sBAAsB,aAAa,CAAC,WAAW;AAClD,mBAAOA,OAAM,eAAe;AAAA,UAC7B;AAAA,QACD;AAQA,iBAAS,sBAAsBA,OAAM;AACpC,6BAAmBA,KAAI;AACvB,cAAI,qBAAqBA,KAAI,GAAG;AAC/B,oCAAwBA,KAAI;AAAA,UAC7B;AAAA,QACD;AAQA,iBAAS,eAAeA,OAAM;AAC7B,gBAAM,oBAAoBA,MAAK,KAAK;AAAA,YACnC,OAAK,EAAE,SAAS;AAAA,UACjB;AAEA,oBAAU,kBAAkB,OAAO,OAAK,EAAE,MAAM,CAAC;AACjD,oBAAU,kBAAkB,OAAO,OAAK,CAAC,EAAE,MAAM,CAAC;AAAA,QACnD;AAQA,iBAAS,UAAUA,OAAM;AACxB,gBAAM,UACLA,MAAK,SAAS,kBAAkBA,MAAK,UAAUA,MAAK;AACrD,gBAAM,oBAAoB,QAAQ;AAAA,YACjC,OAAK,EAAE,SAAS;AAAA,UACjB;AAEA,oBAAU,iBAAiB;AAAA,QAC5B;AAEA,cAAM,YAAY,CAAC;AAEnB,YAAI,sBAAsB,oBAAoB;AAC7C,oBAAU,mBAAmB;AAC7B,cAAI,wBAAwB;AAC3B,sBAAU,YAAY;AAAA,UACvB;AACA,cAAI,mBAAmB;AACtB,sBAAU,gCAAgC,IAAI;AAAA,UAC/C;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA;;;ACnaA;AAAA,2DAAAE,UAAAC,SAAA;AAAA;AAQA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM,CAAC,UAAU,SAAS,YAAY;AAAA,cACvC;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,WAAW;AAAA,oBACV,MAAM;AAAA,kBACP;AAAA,kBACA,UAAU;AAAA,oBACT,MAAM,CAAC,WAAW,MAAM;AAAA,oBACxB,SAAS;AAAA,kBACV;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,4BACC;AAAA,UACD,4BACC;AAAA,UACD,yBAAyB;AAAA,UACzB,yBAAyB;AAAA,QAC1B;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAW3B,iBAAS,qBAAqB,QAAQ;AACrC,cAAI,aAAa;AACjB,cAAI,YAAY;AAChB,cAAI;AAEJ,cAAI,QAAQ;AACX,gBAAI,WAAW,cAAc;AAC5B,2BAAa;AACb,yBAAW,OAAO;AAAA,YACnB,WAAW,WAAW,YAAY,OAAO,aAAa,GAAG;AACxD,yBAAW;AAAA,YACZ,WAAW,WAAW,SAAS;AAC9B,yBAAW,OAAO;AAAA,YACnB,OAAO;AACN,0BAAY,QAAQ,OAAO,SAAS;AACpC,yBAAW,OAAO,YAAY,OAAO;AAAA,YACtC;AAAA,UACD,OAAO;AACN,yBAAa;AACb,wBAAY;AACZ,uBAAW,OAAO;AAAA,UACnB;AAEA,iBAAO,EAAE,YAAY,WAAW,SAAS;AAAA,QAC1C;AAOA,iBAAS,iBAAiB,SAAS;AAClC,gBAAMC,SAAQ,qBAAqB,OAAO;AAE1C,iBAAO,EAAE,iBAAiBA,QAAO,cAAcA,OAAM;AAAA,QACtD;AAQA,iBAAS,2BAA2BC,OAAM,OAAO;AAChD,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK,MAAM;AAAA,YACX,WAAW;AAAA,YACX,IAAI,OAAO;AACV,oBAAM,YAAY,WAAW,cAAc,OAAO;AAAA,gBACjD,iBAAiB;AAAA,cAClB,CAAC;AAED,kBAAI,SAAS,eAAe,SAAS,GAAG;AACvC,uBAAO;AAAA,cACR;AAEA,qBAAO,MAAM,YAAY;AAAA,gBACxB,MAAM,MAAM,CAAC;AAAA,gBACb,UAAU,MAAM,CAAC;AAAA,cAClB,CAAC;AAAA,YACF;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,wBAAwBA,OAAM,OAAO;AAC7C,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK,MAAM;AAAA,YACX,WAAW;AAAA,YACX,IAAI,OAAO;AACV,oBAAM,gBAAgB,WAAW,eAAe,OAAO;AAAA,gBACtD,iBAAiB;AAAA,cAClB,CAAC;AAED,kBAAI,SAAS,eAAe,aAAa,GAAG;AAC3C,uBAAO;AAAA,cACR;AAEA,qBAAO,MAAM,YAAY;AAAA,gBACxB,cAAc,MAAM,CAAC;AAAA,gBACrB,MAAM,MAAM,CAAC;AAAA,cACd,CAAC;AAAA,YACF;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,iCAAiCA,OAAM,OAAO;AACtD,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK,MAAM;AAAA,YACX,WAAW;AAAA,YACX,IAAI,OAAO;AACV,qBAAO,MAAM,gBAAgB,OAAO,IAAI;AAAA,YACzC;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,8BAA8BA,OAAM,OAAO;AACnD,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK,MAAM;AAAA,YACX,WAAW;AAAA,YACX,IAAI,OAAO;AACV,qBAAO,MAAM,iBAAiB,OAAO,IAAI;AAAA,YAC1C;AAAA,UACD,CAAC;AAAA,QACF;AAOA,iBAAS,MAAMA,OAAM;AACpB,gBAAM,WAAWA,MAAK;AACtB,gBAAM,oBAAoB,iBAAiB,QAAQ,QAAQ,CAAC,CAAC;AAC7D,gBAAM,UAAU,kBAAkBA,MAAK,IAAI;AAC3C,gBAAM,cAAc,WAAW,cAAcA,KAAI;AACjD,gBAAM,eAAe,WAAW,aAAaA,KAAI;AACjD,gBAAM,kBAAkB,WAAW,cAAc,aAAa;AAAA,YAC7D,iBAAiB;AAAA,UAClB,CAAC;AACD,gBAAM,iBAAiB,WAAW,eAAe,cAAc;AAAA,YAC9D,iBAAiB;AAAA,UAClB,CAAC;AACD,gBAAMC,SAAQ,WAAW,cAAc,WAAW;AAClD,gBAAM,OAAO,WAAW,eAAe,YAAY;AAEnD,gBAAM,kBACL,SAAS,UAAU,QAAQ,YAC1B,QAAQ,aACR,SAAS,SAAS,KAClB,gBAAgB,IAAI,MAAM,SACzB,eAAe,IAAI,IAAI,QACxB,SAAS,WAAW,KACpB,gBAAgB,SAAS,WACzB,gBAAgB,IAAI,MAAM,SACzB,eAAe,IAAI,IAAI,QACxB,oBAAoB,kBACpB,QAAQ,cACR,YAAY,IAAI,IAAI,SAASA,OAAM,IAAI,MAAM;AAW/C,cAAI,iBAAiB;AACpB,gBAAI,SAAS,kBAAkB,aAAaA,MAAK,GAAG;AACnD,+CAAiCD,OAAM,WAAW;AAAA,YACnD;AACA,gBAAI,SAAS,kBAAkB,MAAM,YAAY,GAAG;AACnD,4CAA8BA,OAAM,YAAY;AAAA,YACjD;AAAA,UACD,OAAO;AACN,gBAAI,CAAC,SAAS,kBAAkB,aAAaC,MAAK,GAAG;AACpD,yCAA2BD,OAAM,WAAW;AAAA,YAC7C;AACA,gBAAI,CAAC,SAAS,kBAAkB,MAAM,YAAY,GAAG;AACpD,sCAAwBA,OAAM,YAAY;AAAA,YAC3C;AAAA,UACD;AAAA,QACD;AAMA,eAAO;AAAA,UACN,cAAc;AAAA,UACd,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClSA;AAAA,2DAAAE,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,OAAO;AAAA,UACzB;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,aAAa;AAAA,gBACZ,MAAM;AAAA,cACP;AAAA,cACA,iBAAiB;AAAA,gBAChB,MAAM;AAAA,cACP;AAAA,cACA,gBAAgB;AAAA,gBACf,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,sBACC;AAAA,UACD,uBACC;AAAA,UACD,mBAAmB;AAAA,UACnB,oBAAoB;AAAA,QACrB;AAAA,MACD;AAAA,MACA,OAAO,SAAS;AACf,cAAM,SAAS,QAAQ,QAAQ,CAAC,MAAM,UACrC,aAAa,QAAQ;AAStB,iBAAS,YAAY,QAAQ;AAC5B,iBAAO,QAAQ,QAAQ,CAAC,IACrB,QAAQ,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC,SAChC;AAAA,QACJ;AAEA,cAAM,UAAU;AAAA,UACf;AAAA,UACA,wBAAwB,YAAY,aAAa;AAAA,UACjD,0BAA0B,YAAY,iBAAiB;AAAA,UACvD,yBAAyB,YAAY,gBAAgB;AAAA,QACtD;AAYA,iBAAS,uBAAuBC,OAAM,OAAO;AAC5C,gBAAM,YAAY,WAAW,cAAc,KAAK;AAEhD,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK,EAAE,OAAO,MAAM,IAAI,KAAK,KAAK,UAAU,IAAI,MAAM;AAAA,YACtD,WAAW;AAAA,YACX,MAAM;AAAA,cACL,YAAY,MAAM;AAAA,YACnB;AAAA,YACA,IAAI,OAAO;AACV,qBAAO,MAAM,YAAY;AAAA,gBACxB,MAAM,MAAM,CAAC;AAAA,gBACb,UAAU,MAAM,CAAC;AAAA,cAClB,CAAC;AAAA,YACF;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,oBAAoBA,OAAM,OAAO;AACzC,gBAAM,gBAAgB,WAAW,eAAe,KAAK;AAErD,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK,EAAE,OAAO,cAAc,IAAI,KAAK,KAAK,MAAM,IAAI,MAAM;AAAA,YAC1D,WAAW;AAAA,YACX,MAAM;AAAA,cACL,YAAY,MAAM;AAAA,YACnB;AAAA,YACA,IAAI,OAAO;AACV,qBAAO,MAAM,YAAY;AAAA,gBACxB,cAAc,MAAM,CAAC;AAAA,gBACrB,MAAM,MAAM,CAAC;AAAA,cACd,CAAC;AAAA,YACF;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,6BAA6BA,OAAM,OAAO;AAClD,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK,MAAM;AAAA,YACX,WAAW;AAAA,YACX,MAAM;AAAA,cACL,YAAY,MAAM;AAAA,YACnB;AAAA,YACA,IAAI,OAAO;AACV,qBAAO,MAAM,gBAAgB,OAAO,GAAG;AAAA,YACxC;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,0BAA0BA,OAAM,OAAO;AAC/C,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK,MAAM;AAAA,YACX,WAAW;AAAA,YACX,MAAM;AAAA,cACL,YAAY,MAAM;AAAA,YACnB;AAAA,YACA,IAAI,OAAO;AACV,qBAAO,MAAM,iBAAiB,OAAO,GAAG;AAAA,YACzC;AAAA,UACD,CAAC;AAAA,QACF;AAOA,iBAAS,aAAaA,OAAM;AAC3B,iBACCA,UACCA,MAAK,SAAS,sBACdA,MAAK,SAAS;AAAA,QAEjB;AAOA,iBAAS,YAAYA,OAAM;AAC1B,iBACCA,UACCA,MAAK,SAAS,qBACdA,MAAK,SAAS;AAAA,QAEjB;AAOA,iBAAS,qBAAqBA,OAAM;AACnC,cAAI,QAAQ,UAAUA,MAAK,SAAS,WAAW,GAAG;AACjD;AAAA,UACD;AAEA,gBAAMC,SAAQ,WAAW,cAAcD,KAAI,GAC1C,SAAS,WAAW,cAAcA,OAAM,CAAC,GACzC,OAAOA,MAAK,iBACT,WAAW,eAAeA,MAAK,cAAc,IAC7C,WAAW,aAAaA,KAAI,GAC/B,cAAc,WAAW,eAAe,IAAI,GAC5C,eAAeA,MAAK,SAAS,CAAC,GAC9B,cAAcA,MAAK,SAAS,GAAG,EAAE;AAElC,gBAAM,6BACJ,QAAQ,4BACR,aAAa,YAAY,KACzB,QAAQ,2BACR,YAAY,YAAY,KACxB,QAAQ,0BAA0BA,MAAK,SAAS,WAAW,IACzD,CAAC,QAAQ,SACT,QAAQ;AAEZ,gBAAM,6BACJ,QAAQ,4BACR,aAAa,WAAW,KACxB,QAAQ,2BAA2B,YAAY,WAAW,KAC1D,QAAQ,0BAA0BA,MAAK,SAAS,WAAW,IACzD,CAAC,QAAQ,SACT,QAAQ;AAEZ,cAAI,SAAS,kBAAkBC,QAAO,MAAM,GAAG;AAC9C,gBACC,8BACA,CAAC,WAAW,eAAeA,QAAO,MAAM,GACvC;AACD,2CAA6BD,OAAMC,MAAK;AAAA,YACzC;AACA,gBACC,CAAC,8BACD,WAAW,eAAeA,QAAO,MAAM,GACtC;AACD,qCAAuBD,OAAMC,MAAK;AAAA,YACnC;AAAA,UACD;AAEA,cACCA,WAAU,eACV,SAAS,kBAAkB,aAAa,IAAI,GAC3C;AACD,gBACC,8BACA,CAAC,WAAW,eAAe,aAAa,IAAI,GAC3C;AACD,wCAA0BD,OAAM,IAAI;AAAA,YACrC;AACA,gBACC,CAAC,8BACD,WAAW,eAAe,aAAa,IAAI,GAC1C;AACD,kCAAoBA,OAAM,IAAI;AAAA,YAC/B;AAAA,UACD;AAAA,QACD;AAMA,eAAO;AAAA,UACN,cAAc;AAAA,UACd,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5SA;AAAA,2DAAAE,UAAAC,SAAA;AAAA;AAWA,aAAS,sBAAsB,UAAU;AACxC,iBAAW,WAAW,UAAU;AAC/B,YAAI,QAAQ,WAAW;AACtB,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAEA,IAAAA,QAAO,UAAU,EAAE,sBAAsB;AAAA;AAAA;;;ACrBzC;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AACjB,QAAM,EAAE,sBAAsB,IAAI;AAMlC,QAAM,mBAAmB;AACzB,QAAM,iBACL;AASD,aAAS,eAAeC,OAAM;AAC7B,aAAO,SAAS,uBAAuBA,OAAM,MAAM,cAAc;AAAA,IAClE;AAQA,aAAS,eAAe,iBAAiB;AACxC,UAAI,CAAC,QAAQ,aAAa,MAAM,SAAS,EAAE,SAAS,eAAe,GAAG;AACrE,eAAO,SAAS,OAAO,eAAe;AAAA,MACvC;AACA,aAAO,mBAAmB,OAAO,eAAe;AAAA,IACjD;AAWA,aAAS,mBAAmBA,OAAM;AAEjC,UAAIA,MAAK,WAAW;AACnB,eAAO;AAAA,MACR;AACA,UAAI,cAAcA;AAElB,aAAO,aAAa;AACnB,cAAM,SAAS,YAAY;AAE3B,gBAAQ,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,UAKpB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACJ,0BAAc;AACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUD,KAAK,mBAAmB;AACvB,kBAAM,OAAO,SAAS,iBAAiB,MAAM;AAE7C,gBAAI,SAAS,QAAQ,CAAC,SAAS,SAAS,IAAI,GAAG;AAC9C,qBAAO;AAAA,YACR;AACA,0BAAc,KAAK;AACnB;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,KAAK;AACJ,gBAAI,CAACA,MAAK,OAAO;AAChB,kBAAI,SAAS,kBAAkB,OAAO,MAAM,GAAG;AAC9C,oBACC,OAAO,UAAU,UAAU,KAC3B,OAAO,UAAU,CAAC,MAAM,aACvB;AACD,yBAAO;AAAA,gBACR;AAAA,cACD;AACA,kBAAI,eAAe,OAAO,MAAM,GAAG;AAClC,oBACC,OAAO,UAAU,UAAU,KAC3B,OAAO,UAAU,CAAC,MAAM,aACvB;AACD,yBAAO,SAAS;AAAA,oBACf,OAAO;AAAA,kBACR;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AACA,gBAAI,SAAS,uBAAuB,OAAO,MAAM,GAAG;AACnD,kBACC,OAAO,UAAU,UAAU,KAC3B,OAAO,UAAU,CAAC,MAAM,aACvB;AACD,uBAAO;AAAA,cACR;AAAA,YACD;AACA,mBAAO;AAAA;AAAA,UAGR;AACC,mBAAO;AAAA,QACT;AAAA,MACD;AAGA,aAAO;AAAA,IACR;AAOA,aAAS,iBAAiBA,OAAM;AAC/B,aAAOA,MAAK,SAAS,qBAAqBA,MAAK,aAAa;AAAA,IAC7D;AASA,aAAS,iBAAiB,YAAYA,OAAM,OAAO;AAClD,YAAM;AAAA;AAAA,QAEL,SAAS,cAAcA,KAAI,IAC1B,SAAS,cAAc;AAAA,UACtB,MAAM;AAAA,UACN,UAAU;AAAA,QACX,CAAC;AAAA,QAEF,CAAC,SAAS,gBAAgB,YAAYA,KAAI;AAAA;AAG3C,YAAM,qBAAqB,WAAW;AAAA,QACrCA;AAAA,QACAA,MAAK,OAAO,SAAS,4BAClB,SAAS;AAAA;AAAA,UAEV,WAAS,MAAM,SAAS,aAAa,MAAM,UAAU;AAAA;AAAA,MACxD;AAEA,YAAM,aAAa,WAAW,cAAc,kBAAkB;AAE9D,YAAM;AAAA;AAAA,QAEL,mBAAmB,UAAU;AAAA,QAE7B,mBAAmB,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC;AAAA;AAEnD,aAAO;AAAA,QACN,MAAM;AAAA,UACL;AAAA,UACA,GAAG,eAAe,MAAM,EAAE,QAAQ,iBAAiB,MAAM,EAAE;AAAA,QAC5D;AAAA,QACA,MAAM,gBAAgBA,OAAM,iBAAiB,MAAM,EAAE;AAAA,MACtD;AAAA,IACD;AASA,aAAS,eAAe,YAAYA,OAAM,OAAO;AAChD,YAAM,aAAa,WAAW;AAAA,QAC7BA,MAAK;AAAA,QACL,SAAS;AAAA,MACV;AACA,YAAM,aAAa,WAAW,cAAc,UAAU;AACtD,YAAM,YAAY,WAAW,aAAaA,KAAI;AAE9C,aAAO;AAAA,QACN,MAAM,iBAAiB,YAAY,GAAG;AAAA,QACtC,MAAM,gBAAgB,WAAW,GAAG;AAAA,MACrC;AAAA,IACD;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,eAAe;AAAA,YACf,cAAc;AAAA,YACd,WAAW;AAAA,UACZ;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,gBAAgB;AAAA,QAEhB,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,eAAe;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,cACA,cAAc;AAAA,gBACb,MAAM;AAAA,cACP;AAAA,cACA,WAAW;AAAA,gBACV,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,eACC;AAAA,UACD,gBACC;AAAA,UACD,qBACC;AAAA,UACD,uBACC;AAAA,UACD,YAAY;AAAA,UACZ,aAAa;AAAA,QACd;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,OAAO,IAAI,QAAQ;AAC1B,cAAM,aAAa,QAAQ;AAE3B,YAAI,WAAW;AAAA,UACd,iBAAiB;AAAA,UACjB,OAAO;AAAA,UACP,UAAU;AAAA,UACV,WAAW;AAAA,UACX,aAAa;AAAA,UACb,MAAM;AAAA,QACP;AAWA,iBAAS,iBAAiBC,OAAM;AAC/B,cAAI,CAAC,SAAS,aAAa;AAC1B;AAAA,UACD;AAEA,gBAAM,wBAAwB,EAAE,WAAW,IAAI,SAAS,CAAC,EAAE;AAE3D,cAAI,SAAS,oBAAoB,WAAW;AAC3C,gBACC,QAAQ,gBACRA,MAAK,SAAS,6BACdA,MAAK,YACJ;AACD,kBAAI,QAAQ,WAAW;AACtB,oBAAI,iBAAiBA,MAAK,IAAI,GAAG;AAChC;AAAA,gBACD;AAEA,sCAAsB,YACrB;AACD,sCAAsB,UAAU;AAAA,kBAC/B;AAAA,oBACC,WAAW;AAAA,oBACX,IAAI,OAAO;AACV,6BAAO;AAAA,wBACN;AAAA,wBACAA;AAAA,wBACA;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD;AAAA,kBACA;AAAA,oBACC,WAAW;AAAA,oBACX,IAAI,OAAO;AACV,6BAAO;AAAA,wBACN;AAAA,wBACAA,MAAK;AAAA,wBACL;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAAA,cACD,OAAO;AACN,sCAAsB,YACrB;AACD,sCAAsB,UAAU;AAAA,kBAC/B;AAAA,oBACC,WAAW;AAAA,oBACX,IAAI,OAAO;AACV,6BAAO;AAAA,wBACN;AAAA,wBACAA;AAAA,wBACA;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD,OAAO;AACN,gBACCA,MAAK,KAAK,SAAS,oBACnB,sBAAsB,SAAS,eAAe,GAC7C;AACD,oCAAsB,YAAY,SAAS,YACxC,kBACA;AAAA,YACJ;AAAA,UACD;AAEA,cAAI,sBAAsB,WAAW;AACpC,kBAAM,OAAO,SAAS,wBAAwBA,KAAI;AAElD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,SAAS,mBAAmBA,OAAM,UAAU;AAAA,cACjD,WAAW,sBAAsB;AAAA,cACjC,MAAM;AAAA,gBACL;AAAA,gBACA,iBAAiB;AAAA,kBAChB,SAAS;AAAA,gBACV;AAAA,cACD;AAAA,cACA,SACC,sBAAsB,QAAQ,WAAW,IACtC,sBAAsB,UACtB;AAAA,YACL,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA;AAAA,UAEN,gBAAgB,UAAUA,OAAM;AAC/B,gBAAI,aAAa;AAEjB,gBAAI,iBAAiB,KAAKA,MAAK,IAAI,GAAG;AACrC,2BAAa,mBAAmBA,KAAI;AAAA,YACrC;AAEA,uBAAW;AAAA,cACV,iBAAiB;AAAA,cACjB,OAAO;AAAA,cACP;AAAA,cACA,WAAW;AAAA,cACX,aAAa,CAAC,CAAC;AAAA,cACf,MAAAA;AAAA,cACA,iBAAiB,oBAAI,IAAI;AAAA,YAC1B;AAAA,UACD;AAAA;AAAA,UAGA,gBAAgB;AACf,uBAAW,SAAS;AAAA,UACrB;AAAA,UAEA,kCAAkC,SAAS;AAC1C,qBAAS,gBAAgB,IAAI,OAAO;AAAA,UACrC;AAAA,UAEA,gCAAgC,SAAS;AACxC,qBAAS,gBAAgB,OAAO,OAAO;AAAA,UACxC;AAAA,UAEA,uBAAuB,SAAS;AAC/B,qBAAS,gBAAgB,IAAI,OAAO;AAAA,UACrC;AAAA,UAEA,qBAAqB,SAAS;AAC7B,qBAAS,gBAAgB,OAAO,OAAO;AAAA,UACxC;AAAA;AAAA,UAGA,gBAAgBA,OAAM;AACrB,gBAAI,CAAC,SAAS,aAAa;AAC1B;AAAA,YACD;AAEA,qBAAS,YAAY;AAErB,kBAAM,wBAAwB,EAAE,WAAW,IAAI,SAAS,CAAC,EAAE;AAE3D,gBAAI,SAAS,oBAAoB,WAAW;AAE3C,kBAAI,QAAQ,gBAAgBA,MAAK,UAAU;AAC1C,oBAAI,QAAQ,WAAW;AACtB,sBAAI,iBAAiBA,MAAK,QAAQ,GAAG;AACpC;AAAA,kBACD;AAEA,wCAAsB,YACrB;AACD,wCAAsB,UAAU;AAAA,oBAC/B;AAAA,sBACC,WAAW;AAAA,sBACX,IAAI,OAAO;AACV,+BAAO;AAAA,0BACN;AAAA,0BACAA,MAAK;AAAA,0BACL;AAAA,wBACD;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD,OAAO;AACN,wCAAsB,YACrB;AAAA,gBACF;AAAA,cACD;AAAA,YACD,OAAO;AAEN,kBAAI,CAAC,QAAQ,iBAAiB,CAACA,MAAK,UAAU;AAC7C,sCAAsB,YAAY;AAAA,cACnC;AAAA,YACD;AAEA,gBAAI,sBAAsB,WAAW;AACpC,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW,sBAAsB;AAAA,gBACjC,MAAM;AAAA,kBACL,MAAM,SAAS;AAAA,oBACd,SAAS;AAAA,kBACV;AAAA,kBACA,iBAAiB;AAAA,oBAChB,SAAS;AAAA,kBACV;AAAA,gBACD;AAAA,gBACA,SACC,sBAAsB,QAAQ,WAAW,IACtC,sBAAsB,UACtB;AAAA,cACL,CAAC;AAAA,YACF;AAAA,UACD;AAAA;AAAA,UAGA,2BAA2B;AAAA,UAC3B,gCAAgC;AAAA,QACjC;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/eA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAQA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP,aAAa;AAAA,YACZ,aAAa;AAAA,cACZ,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,UAAU,SAAS,YAAY;AAAA,gBACvC;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,WAAW;AAAA,sBACV,MAAM;AAAA,oBACP;AAAA,oBACA,UAAU;AAAA,sBACT,MAAM,CAAC,WAAW,MAAM;AAAA,sBACxB,SAAS;AAAA,oBACV;AAAA,kBACD;AAAA,kBACA,sBAAsB;AAAA,gBACvB;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UACA,MAAM;AAAA,UACN,OAAO;AAAA,YACN;AAAA,cACC,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM;AAAA,gBACP;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,iBAAiB;AAAA,sBAChB,MAAM;AAAA,oBACP;AAAA,oBACA,cAAc;AAAA,sBACb,MAAM;AAAA,oBACP;AAAA,kBACD;AAAA,kBACA,sBAAsB;AAAA,kBACtB,eAAe;AAAA,gBAChB;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,qBAAqB;AAAA,UACrB,kBAAkB;AAAA,QACnB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAW3B,iBAAS,qBAAqB,gBAAgB;AAC7C,cAAI,aAAa;AACjB,cAAI,YAAY;AAChB,cAAI;AAEJ,gBAAM,SAAS,kBAAkB;AAEjC,cAAI,CAAC,UAAU,WAAW,YAAY,OAAO,aAAa,GAAG;AAC5D,uBAAW;AAAA,UACZ,WAAW,WAAW,SAAS;AAC9B,uBAAW,OAAO;AAAA,UACnB,WAAW,WAAW,cAAc;AACnC,yBAAa;AACb,uBAAW,OAAO;AAAA,UACnB,OAAO;AACN,wBAAY,QAAQ,OAAO,SAAS;AACpC,uBAAW,OAAO,YAAY,OAAO;AAAA,UACtC;AAEA,iBAAO,EAAE,YAAY,WAAW,SAAS;AAAA,QAC1C;AAOA,iBAAS,iBAAiB,SAAS;AAClC,cAAI,YAAY,QAAQ,mBAAmB,QAAQ,eAAe;AACjE,gBAAI,mBAAmB;AAEvB,gBAAI,QAAQ,iBAAiB;AAC5B,kCAAoB;AAAA,gBACnB,QAAQ;AAAA,cACT;AAAA,YACD;AAEA,gBAAI,QAAQ,cAAc;AACzB,+BAAiB,qBAAqB,QAAQ,YAAY;AAAA,YAC3D;AAEA,mBAAO;AAAA,cACN,iBAAiB;AAAA,cACjB,cAAc;AAAA,YACf;AAAA,UACD;AAEA,gBAAMC,SAAQ,qBAAqB,OAAO;AAE1C,iBAAO,EAAE,iBAAiBA,QAAO,cAAcA,OAAM;AAAA,QACtD;AAOA,iBAAS,kBAAkB,OAAO;AACjC,gBAAM,cAAc,WAAW,eAAe,OAAO;AAAA,YACpD,iBAAiB;AAAA,UAClB,CAAC;AAED,kBAAQ,OAAO;AAAA,YACd,KAAK;AAAA,cACJ,OAAO,YAAY,IAAI;AAAA,cACvB,KAAK,MAAM,IAAI;AAAA,YAChB;AAAA,YACA,WAAW;AAAA,YACX,IAAI,OAAO;AACV,kBAAI,SAAS,eAAe,WAAW,GAAG;AACzC,uBAAO;AAAA,cACR;AAEA,kBAAI,CAAC,SAAS,kBAAkB,aAAa,KAAK,GAAG;AACpD,uBAAO,MAAM;AAAA,kBACZ,CAAC,YAAY,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;AAAA,kBACrC;AAAA,gBACD;AAAA,cACD;AAgBA,oBAAM,kBAAkB,WAAW;AAAA,gBAClC;AAAA,gBACA,EAAE,iBAAiB,KAAK;AAAA,cACzB;AAEA,kBAAI,SAAS,eAAe,eAAe,GAAG;AAC7C,uBAAO;AAAA,cACR;AAEA,qBAAO,MAAM;AAAA,gBACZ,CAAC,gBAAgB,MAAM,CAAC,GAAG,YAAY,MAAM,CAAC,CAAC;AAAA,gBAC/C;AAAA,cACD;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAOA,iBAAS,wBAAwB,OAAO;AACvC,gBAAM,cAAc,WAAW,eAAe,OAAO;AAAA,YACpD,iBAAiB;AAAA,UAClB,CAAC;AAED,kBAAQ,OAAO;AAAA,YACd,KAAK;AAAA,cACJ,OAAO,YAAY,IAAI;AAAA,cACvB,KAAK,MAAM,IAAI;AAAA,YAChB;AAAA,YACA,WAAW;AAAA,YACX,IAAI,OAAO;AACV,qBAAO,MAAM;AAAA,gBACZ,CAAC,YAAY,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;AAAA,gBACrC;AAAA,cACD;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAOA,iBAAS,MAAMC,OAAM;AACpB,gBAAM,WAAWA,MAAK;AACtB,gBAAM,oBAAoB,iBAAiB,QAAQ,QAAQ,CAAC,CAAC;AAC7D,gBAAM,UAAU,kBAAkBA,MAAK,IAAI;AAE3C,cAAI,CAAC,SAAS;AACb;AAAA,UACD;AAEA,cAAI,eAAe;AAcnB,cAAI,QAAQ,WAAW;AACtB,2BAAe,SACb,OAAO,aAAW,YAAY,IAAI,EAClC;AAAA,cACA,aACC,QAAQ,IAAI,MAAM,SAAS,QAAQ,IAAI,IAAI;AAAA,YAC7C;AAAA,UACF;AAEA,cAAI,kBAAkB;AAEtB,mBAAS,IAAI,GAAG,IAAIA,MAAK,SAAS,QAAQ,KAAK;AAC9C,kBAAM,UAAUA,MAAK,SAAS,CAAC;AAE/B,kBAAM,kBAAkB,SAAS,IAAI,CAAC;AAEtC,gBAAI,MAAM,KAAK,YAAY,QAAQ,oBAAoB,MAAM;AAC5D;AAAA,YACD;AAEA,kBAAM,aAAa,WAAW;AAAA,cAC7B;AAAA,cACA;AAAA,cACA,SAAS;AAAA,YACV;AACA,kBAAM,6BACL,WAAW,eAAe,UAAU;AACrC,kBAAM,6BACL,WAAW,cAAc,UAAU;AAEpC,gBACC,CAAC,SAAS;AAAA,cACT;AAAA,cACA;AAAA,YACD,GACC;AACD;AAAA,YACD;AAAA,UACD;AAEA,gBAAM,kBACL,SAAS,UAAU,QAAQ,YAC1B,QAAQ,aAAa,gBACrB,QAAQ,cACR,kBAAkB,KAClB,kBAAkBA,MAAK,SAAS;AAElC,mBAAS,QAAQ,CAAC,SAAS,MAAM;AAChC,kBAAM,kBAAkB,SAAS,IAAI,CAAC;AAEtC,gBAAI,MAAM,KAAK,YAAY,QAAQ,oBAAoB,MAAM;AAC5D;AAAA,YACD;AAEA,kBAAM,aAAa,WAAW;AAAA,cAC7B;AAAA,cACA;AAAA,cACA,SAAS;AAAA,YACV;AACA,kBAAM,6BACL,WAAW,eAAe,UAAU;AACrC,kBAAM,6BACL,WAAW,cAAc,UAAU;AAEpC,gBAAI,iBAAiB;AACpB,kBACC,SAAS;AAAA,gBACR;AAAA,gBACA;AAAA,cACD,GACC;AACD,wCAAwB,0BAA0B;AAAA,cACnD;AAAA,YACD,OAAO;AACN,kBACC,CAAC,SAAS;AAAA,gBACT;AAAA,gBACA;AAAA,cACD,GACC;AACD,kCAAkB,0BAA0B;AAAA,cAC7C;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAMA,eAAO;AAAA,UACN,cAAc;AAAA,UACd,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrXA;AAAA,sDAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,WAAW;AAAA,QAE5B,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP,OAAO;AAAA,YACN;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,UAAU,OAAO;AAAA,gBACzB;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,WAAW;AAAA,gBACnB;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,+BAA+B;AAAA,sBAC9B,MAAM;AAAA,oBACP;AAAA,kBACD;AAAA,kBACA,sBAAsB;AAAA,gBACvB;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,UACD;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QAET,UAAU;AAAA,UACT,sBACC;AAAA,UACD,sBACC;AAAA,UACD,uBACC;AAAA,UACD,uBACC;AAAA,UACD,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,UAAU,QAAQ;AACxB,cAAM,SAAS,QAAQ,CAAC,MAAM;AAC9B,cAAM,WAAW,QAAQ,CAAC,MAAM;AAChC,cAAM,QAAQ,QAAQ,CAAC,MAAM;AAC7B,cAAM,gCACL,QAAQ,CAAC,KAAK,QAAQ,CAAC,EAAE;AAC1B,cAAM,aAAa,QAAQ;AAC3B,YAAI,WAAW;AAOf,iBAAS,cAAc,OAAO;AAC7B,iBACC,SACA,MAAM,SAAS,gBACf,aAAa,KAAK,MAAM,KAAK;AAAA,QAE/B;AAOA,iBAAS,iBAAiBC,OAAM;AAC/B,cAAI,cAAcA;AAElB,iBAAO,CAAC,SAAS,gBAAgB,YAAY,WAAW,GAAG;AAC1D,0BAAc,YAAY;AAAA,UAC3B;AACA,iBAAO,WAAW,cAAc,WAAW;AAAA,QAC5C;AAOA,iBAAS,2BAA2BA,OAAM;AACzC,cAAIA,SAAQA,MAAK,QAAQ;AACxB,gBACCA,MAAK,OAAO,SAAS,kBACrBA,MAAK,OAAO,SAASA,OACpB;AACD,qBAAO;AAAA,YACR;AACA,mBAAO,2BAA2BA,MAAK,MAAM;AAAA,UAC9C;AACA,iBAAO;AAAA,QACR;AAOA,iBAAS,SAASA,OAAM;AACvB,gBAAM,YAAYA,MAAK;AAEvB,cAAI,UAAU,SAAS,kBAAkB;AACxC,kBAAM,YAAY,UAAU;AAE5B,gBAAI,UAAU,WAAW,KAAK,CAAC,OAAO;AACrC;AAAA,YACD;AAEA,gBACC,YACA,iCACA,UAAU,CAAC,EAAE,SAAS,qBACtB,UAAU,CAAC,EAAE,YACb,UAAU,CAAC,EAAE,SAAS,SAAS,oBAC9B;AACD;AAAA,YACD;AAEA,gBACC,SACC,YAAY,UAAU,CAAC,EAAE,SAAS,mBAClC;AACD,kBAAI;AAEJ,kBAAI,UAAU,WAAW,GAAG;AAC3B,4BAAY;AAAA,cACb,WACC,UAAU,SAAS,KACnB,UAAU,CAAC,EAAE,SAAS,mBACrB;AACD,4BAAY;AAAA,cACb,WAAW,UAAU,CAAC,EAAE,aAAa,MAAM;AAC1C,4BAAY;AAAA,cACb,WACC,SAAS;AAAA,gBACR,WAAW,cAAc,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;AAAA,cACnD,GACC;AACD,4BAAY;AAAA,cACb,OAAO;AACN,4BAAY;AAAA,cACb;AAEA,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK,UAAU;AAAA,gBACf;AAAA,gBACA,IAAI,OAAO;AACV,wBAAM,QAAQ,CAAC;AAEf,sBACC,UAAU,WAAW,KACrB,UAAU,CAAC,EAAE,SAAS,qBACtB,CAAC,UAAU,CAAC,EAAE,YACd;AAAA,oBACC,WAAW,cAAc,SAAS;AAAA,kBACnC,GACC;AACD,2BAAO;AAAA,kBACR;AAEA,wBAAM,eACL,WAAW,cAAc,SAAS;AACnC,wBAAM,eACL,WAAW,aAAa,SAAS;AAClC,wBAAM,kBAAkB,WAAW;AAAA,oBAClC,UAAU,CAAC;AAAA,oBACX;AAAA,kBACD;AACA,wBAAM,iBAAiB,WAAW;AAAA,oBACjC,UAAU,CAAC;AAAA,kBACZ;AACA,wBAAM,gBACL,WAAW;AAAA,oBACV;AAAA,oBACA;AAAA,kBACD,KACA,WAAW;AAAA,oBACV;AAAA,oBACA;AAAA,kBACD;AAMD,sBAAI,eAAe;AAClB,0BAAM;AAAA,sBACL,MAAM,OAAO,YAAY;AAAA,sBACzB,MAAM,OAAO,YAAY;AAAA,sBACzB,MAAM;AAAA,wBACL,WAAW,cAAc,YAAY;AAAA,sBACtC;AAAA;AAAA,oBACD;AAAA,kBACD,OAAO;AACN,0BAAM;AAAA,sBACL,MAAM,YAAY;AAAA,wBACjB,aAAa,MAAM,CAAC;AAAA,wBACpB,gBAAgB,MAAM,CAAC;AAAA,sBACxB,CAAC;AAAA,sBACD,MAAM,YAAY;AAAA,wBACjB,eAAe,MAAM,CAAC;AAAA,wBACtB,aAAa,MAAM,CAAC;AAAA,sBACrB,CAAC;AAAA,oBACF;AAAA,kBACD;AAMA,sBACC,SAAS,oBAAoB,eAAe,KAC5C,UAAU,CAAC,EAAE,SAAS,SACrB,wBACA,SAAS,iBACT,2BAA2BA,KAAI,GAC/B;AACD,wBACC,CAAC,SAAS;AAAA,sBACT;AAAA,sBACA,UAAU,CAAC,EAAE;AAAA,oBACd,GACC;AACD,4BAAM;AAAA,wBACL,MAAM;AAAA,0BACL;AAAA,0BACA;AAAA,wBACD;AAAA,wBACA,MAAM;AAAA,0BACL;AAAA,0BACA;AAAA,wBACD;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD;AAMA,sBAAI,SAAS,iBAAiB,cAAc,GAAG;AAC9C,0BAAM,KAAK,MAAM,OAAO,cAAc,CAAC;AAAA,kBACxC;AAEA,yBAAO;AAAA,gBACR;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD,OAAO;AACN,gBACC,UACC,YACA,iCACA,UAAU,SAAS,oBACnB;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK,UAAU;AAAA,gBACf,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,wBAAM,QAAQ,CAAC;AACf,wBAAM,aAAa,WAAW;AAAA,oBAC7B;AAAA,oBACA,SAAS;AAAA,kBACV;AACA,wBAAM;AAAA,oBACL;AAAA,oBACA;AAAA,kBACD,IAAI,WAAW,eAAe,YAAY;AAAA,oBACzC,OAAO;AAAA,kBACR,CAAC;AACD,wBAAM,YAAY,WAAW,aAAaA,KAAI;AAE9C,sBAAI,6BAA6B;AAEjC,sBACC,SAAS;AAAA,oBACR;AAAA,kBACD,KACA,SAAS;AAAA,oBACR;AAAA,kBACD,GACC;AACD,0BAAM,YACL,WAAW;AAAA,sBACV,sBAAsB,MAAM,CAAC;AAAA,oBAC9B;AAED,wBAAI,UAAU,SAAS,oBAAoB;AAC1C,mDAA6B;AAAA,oBAC9B;AAAA,kBACD;AAGA,sBAAI,4BAA4B;AAC/B,0BAAM,oBAAoB;AAC1B,0BAAM,oBAAoB;AAE1B,wBACC,SAAS;AAAA,sBACR;AAAA,sBACA;AAAA,oBACD,GACC;AACD,4BAAM;AAAA,wBACL,MAAM;AAAA,0BACL;AAAA,0BACA;AAAA,wBACD;AAAA,sBACD;AAAA,oBACD,OAAO;AAEN,4BAAM;AAAA,wBACL,MAAM;AAAA,0BACL;AAAA,0BACA;AAAA,wBACD;AAAA,wBACA,MAAM;AAAA,0BACL;AAAA,0BACA;AAAA,wBACD;AAAA,sBACD;AAAA,oBACD;AAGA,0BAAM;AAAA,sBACL,MAAM;AAAA,wBACL;AAAA,0BACC;AAAA,wBACD;AAAA,sBACD;AAAA,oBACD;AACA,0BAAM;AAAA,sBACL,MAAM,gBAAgB,WAAW,GAAG;AAAA,oBACrC;AAAA,kBACD,OAAO;AACN,0BAAM;AAAA,sBACL,MAAM;AAAA,wBACL;AAAA,wBACA;AAAA,sBACD;AAAA,oBACD;AACA,0BAAM;AAAA,sBACL,MAAM,gBAAgB,WAAW,GAAG;AAAA,oBACrC;AAAA,kBACD;AAEA,yBAAO;AAAA,gBACR;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,oCAAoC;AACnC,gBAAI,OAAO;AAEX,mBAAO,MAAM;AACZ,mBAAK,gBAAgB;AACrB,qBAAO,KAAK;AAAA,YACb;AAAA,UACD;AAAA,UACA,0BAA0B;AACzB,uBAAW;AAAA,cACV,OAAO;AAAA,cACP,eAAe;AAAA,YAChB;AAAA,UACD;AAAA,UACA,+BAA+BA,OAAM;AACpC,qBAASA,KAAI;AACb,uBAAW,SAAS;AAAA,UACrB;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACjaA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAWjB,aAAS,aAAaC,OAAM;AAC3B,aAAOA,MAAK,KAAK,SAAS;AAAA,IAC3B;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,WAAW;AAAA,UAC7B;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,qBAAqB;AAAA,gBACpB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,kBACC;AAAA,UACD,gBACC;AAAA,UAED,wBACC;AAAA,UACD,qBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,WAAW,QAAQ,QAAQ,CAAC,MAAM;AACxC,cAAM,sBACL,YACA,QAAQ,QAAQ,CAAC,KACjB,QAAQ,QAAQ,CAAC,EAAE,wBAAwB;AAE5C,cAAM,aAAa,QAAQ;AAQ3B,iBAAS,yBAAyBC,OAAM;AACvC,gBAAM,oBAAoB,WAAW,eAAeA,MAAK,OAAO,CAAC,CAAC;AAElE,cACC,qBACA,SAAS,oBAAoB,iBAAiB,KAC9CA,MAAK,MAAM,CAAC,KAAK,kBAAkB,MAAM,CAAC,GACzC;AACD,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AAQA,iBAAS,wBAAwBA,OAAM;AACtC,iBAAO,WAAW;AAAA,YACjBA,MAAK,OAAO,CAAC;AAAA,YACb,SAAS;AAAA,UACV;AAAA,QACD;AASA,iBAAS,4BAA4BA,OAAM,cAAc;AACxD,iBAAO,WAAW;AAAA,YACjB;AAAA,YACA,wBAAwBA,KAAI;AAAA,UAC7B;AAAA,QACD;AAWA,iBAAS,sCAAsCA,OAAM,cAAc;AAClE,gBAAM,gBAAgBA,MAAK,QAAQ,IAAI;AAEvC,iBACC,WAAW,cAAcA,OAAM,EAAE,MAAM,cAAc,CAAC,MACtD;AAAA,QAEF;AAEA,eAAO;AAAA,UACN,2CAA2CA,OAAM;AAChD,kBAAM,mBACL,CAAC,YAAa,uBAAuB,aAAaA,KAAI;AACvD,kBAAM,eAAe,yBAAyBA,KAAI;AAClD,kBAAM,YAAY,iBAAiB;AACnC,kBAAM,CAAC,KAAK,IAAIA,MAAK;AAErB,gBAAI,oBAAoB,CAAC,WAAW;AACnC,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW,sBACR,wBACA;AAAA,gBACH,KAAK,MAAM;AAAA,gBACX,CAAC,IAAI,OAAO;AACX,wBAAM,MAAM,iBAAiB,OAAO,GAAG;AACvC,wBAAM,MAAM,gBAAgB,OAAO,GAAG;AAAA,gBACvC;AAAA,cACD,CAAC;AAAA,YACF;AAEA,gBACC,CAAC,oBACD,aACA,MAAM,SAAS,gBACf,CAAC,MAAM,kBACP,CAACA,MAAK,cACN,CAAC,4BAA4BA,OAAM,YAAY,KAC/C,CAAC,sCAAsCA,OAAM,YAAY,GACxD;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW,sBACR,2BACA;AAAA,gBACH,KAAK,MAAM;AAAA,gBACX,CAAC,IAAI,OAAO;AACX,wBAAM,0BACL,WAAW,eAAe,YAAY;AACvC,wBAAM,eAAe,wBAAwBA,KAAI;AAEjD,sBACC,2BACA,wBAAwB,MAAM,CAAC,MAC9B,aAAa,MAAM,CAAC,KACrB,CAAC,SAAS;AAAA,oBACT;AAAA,oBACA,WAAW,cAAc,KAAK;AAAA,kBAC/B,GACC;AACD,0BAAM,MAAM,iBAAiB,cAAc,GAAG;AAAA,kBAC/C;AAGA,wBAAM,MAAM,YAAY;AAAA,oBACvB,aAAa,MAAM,CAAC;AAAA,oBACpB,MAAM,MAAM,CAAC;AAAA,kBACd,CAAC;AACD,wBAAM,MAAM,YAAY;AAAA,oBACvB,MAAM,MAAM,CAAC;AAAA,oBACb,aAAa,MAAM,CAAC;AAAA,kBACrB,CAAC;AAAA,gBACF;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5OA;AAAA,mDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,OAAO;AAAA,gBACN,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,gBAAgB;AAAA,UAChB,kBAAkB;AAAA,UAElB,eAAe;AAAA,UACf,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAEf,cAAM,OAAO,OAAO,OAAO,CAAC,GAAG,QAAQ,QAAQ,CAAC,CAAC;AAEjD,aAAK,SAAS,KAAK,WAAW;AAC9B,aAAK,QAAQ,KAAK,UAAU;AAE5B,cAAM,aAAa,QAAQ;AAO3B,iBAAS,UAAUC,OAAM;AACxB,gBAAM,QAAQ,WAAW;AAAA,YACxBA,MAAK;AAAA,YACL,SAAS;AAAA,UACV;AAEA,iBAAO;AAAA,YACN,QAAQ,WAAW,eAAe,KAAK;AAAA,YACvC;AAAA,YACA,OAAO,WAAW,cAAc,KAAK;AAAA,UACtC;AAAA,QACD;AAOA,iBAAS,YAAY,QAAQ;AAC5B,gBAAM,SAAS,OAAO,MAAM,MAAM,CAAC,IAAI,OAAO,OAAO,MAAM,CAAC;AAC5D,gBAAM,QAAQ,OAAO,MAAM,MAAM,CAAC,IAAI,OAAO,MAAM,MAAM,CAAC;AAE1D,iBAAO,EAAE,QAAQ,MAAM;AAAA,QACxB;AASA,iBAAS,OAAOA,OAAM;AACrB,gBAAM,SAAS,UAAUA,KAAI;AAC7B,gBAAM,aAAa,YAAY,MAAM;AAErC,cAAI,KAAK,QAAQ;AAEhB,gBAAI,WAAW,WAAW,GAAG;AAC5B,sBAAQ,OAAO;AAAA,gBACd,MAAM,OAAO;AAAA,gBACb,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,yBAAO,MAAM,iBAAiB,OAAO,OAAO,GAAG;AAAA,gBAChD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD,OAAO;AAEN,gBAAI,WAAW,SAAS,GAAG;AAC1B,sBAAQ,OAAO;AAAA,gBACd,MAAM,OAAO;AAAA,gBACb,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,yBAAO,MAAM,YAAY;AAAA,oBACxB,OAAO,OAAO,MAAM,CAAC;AAAA,oBACrB,OAAO,MAAM,MAAM,CAAC;AAAA,kBACrB,CAAC;AAAA,gBACF;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAEA,cAAI,KAAK,OAAO;AAEf,gBAAI,WAAW,UAAU,GAAG;AAC3B,sBAAQ,OAAO;AAAA,gBACd,MAAM,OAAO;AAAA,gBACb,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,yBAAO,MAAM,gBAAgB,OAAO,OAAO,GAAG;AAAA,gBAC/C;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD,OAAO;AAEN,gBAAI,WAAW,QAAQ,GAAG;AACzB,sBAAQ,OAAO;AAAA,gBACd,MAAM,OAAO;AAAA,gBACb,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,yBAAO,MAAM,YAAY;AAAA,oBACxB,OAAO,MAAM,MAAM,CAAC;AAAA,oBACpB,OAAO,MAAM,MAAM,CAAC;AAAA,kBACrB,CAAC;AAAA,gBACF;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,yBAAyB;AAAA,QAC1B;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC3LA;AAAA,sDAAAC,UAAAC,SAAA;AAAA;AAkBA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,YAAI,QAAQ,CAAC;AACb,cAAM,aAAa,QAAQ;AAO3B,iBAAS,WAAWC,OAAM;AACzB,gBAAM,KAAKA,MAAK,KAAK;AAAA,QACtB;AAMA,iBAAS,YAAY;AACpB,gBAAM,IAAI;AAAA,QACX;AAQA,iBAAS,OAAO,WAAWC,aAAY;AACtC,gBAAM,aAAa,UAAU;AAC7B,gBAAM,qBAAqBA,YAAW,KAAK,IAAI;AAE/C,kBAAQ,OAAO;AAAA,YACd,MAAM;AAAA,YACN,WAAW;AAAA,YACX,MAAM;AAAA,cACL,MAAM,WAAW;AAAA,cACjB,gBAAgB,mBAAmB;AAAA,cACnC,kBAAkB,mBAAmB,SAAS;AAAA,YAC/C;AAAA,UACD,CAAC;AAAA,QACF;AAOA,iBAAS,kBAAkBD,OAAM;AAChC,cAAIA,MAAK,SAAS,OAAO;AACxB;AAAA,UACD;AAGA,gBAAM,aAAa,MAAM,GAAG,EAAE;AAQ9B,mBAAS,iBAAiB,WAAW;AACpC,kBAAM,UAAU,UAAU,WAAW;AAErC,mBAAO,QAAQ,CAAC,IAAI,WAAW,CAAC,KAAK,QAAQ,CAAC,IAAI,WAAW,CAAC;AAAA,UAC/D;AAGA,gBAAM,YAAY,WAAW,qBAAqBA,KAAI;AAEtD,mBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,EAAE,GAAG;AAE1C,sBAAU,CAAC,EAAE,WAAW,OAAO,gBAAgB,EAAE;AAAA,cAAQ,SACxD;AAAA,gBACC;AAAA,gBACA,UAAU,CAAC,EAAE,KAAK,KAAK,SAAO,IAAI,WAAWA,KAAI;AAAA,cAClD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,QAAQA,OAAM;AACb,oBAAQ,CAACA,MAAK,KAAK;AAAA,UACpB;AAAA;AAAA,UAGA,gBAAgB;AAAA,UAChB,uBAAuB;AAAA,UACvB,cAAc;AAAA,UACd,qBAAqB;AAAA,UACrB,gBAAgB;AAAA,UAChB,uBAAuB;AAAA,UACvB,gBAAgB;AAAA,UAChB,uBAAuB;AAAA,UACvB,iBAAiB;AAAA,UACjB,wBAAwB;AAAA,UACxB,aAAa;AAAA,UACb,oBAAoB;AAAA,UACpB,aAAa;AAAA,UACb,oBAAoB;AAAA;AAAA,UAGpB,qBAAqB;AAAA,QACtB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/IA;AAAA,mDAAAE,UAAAC,SAAA;AAAA;AAQA,QAAM,OAAO;AAOb,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ,CAAC,EAAE,MAAM,CAAC,UAAU,OAAO,EAAE,CAAC;AAAA,QAEtC,UAAU;AAAA,UACT,SAAS;AAAA,UACT,OAAO;AAAA,QACR;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,SAAS,QAAQ,QAAQ,CAAC,MAAM,SACrC,YAAY,SAAS,YAAY,SACjC,aAAa,QAAQ;AAOtB,iBAAS,aAAaC,OAAM;AAC3B,cAAIA,MAAK,SAAS,mBAAmB;AACpC,gBAAIA,MAAK,MAAM,SAAS,GAAG;AAC1B,qBAAO,WAAW,eAAeA,MAAK,MAAM,CAAC,CAAC;AAAA,YAC/C;AACA,mBAAO,WAAW,aAAaA,OAAM,CAAC;AAAA,UACvC;AAEA,cAAIA,MAAK,SAAS,eAAe;AAChC,mBAAO,WAAW,cAAcA,OAAM,EAAE,MAAM,EAAE,CAAC;AAAA,UAClD;AAGA,iBAAO,WAAW,cAAcA,KAAI;AAAA,QACrC;AAaA,iBAAS,QAAQ,MAAM,OAAO;AAC7B,iBACC,CAAC,KAAK,kBAAkB,MAAM,KAAK,KACnC,WAAW,eAAe,MAAM,KAAK,MAAM;AAAA,QAE7C;AAOA,iBAAS,yBAAyBA,OAAM;AAEvC,gBAAM,YAAY,aAAaA,KAAI;AACnC,gBAAM,aAAa,WAAW,aAAaA,KAAI;AAC/C,gBAAM,aAAa,WAAW,cAAc,WAAW;AAAA,YACtD,iBAAiB;AAAA,UAClB,CAAC;AACD,gBAAM,YAAY,WAAW,eAAe,YAAY;AAAA,YACvD,iBAAiB;AAAA,UAClB,CAAC;AAGD,cACC,UAAU,SAAS,gBACnB,UAAU,UAAU,OACpB,WAAW,SAAS,gBACpB,WAAW,UAAU,OACrB,eAAe,YACd;AACD;AAAA,UACD;AAGA,cAAI,CAAC,UAAU,WAAW,SAAS,QAAQ;AAC1C;AAAA,UACD;AAGA,cAAI,CAAC,QAAQ,WAAW,UAAU,GAAG;AACpC,gBAAI,MAAM,UAAU;AAEpB,gBAAI,cAAc,SAAS;AAC1B,oBAAM;AAAA,gBACL,OAAO,UAAU,IAAI;AAAA,gBACrB,KAAK,WAAW,IAAI;AAAA,cACrB;AAAA,YACD;AAEA,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA;AAAA,cACA;AAAA,cACA,MAAM;AAAA,gBACL,UAAU;AAAA,gBACV,OAAO,UAAU;AAAA,cAClB;AAAA,cACA,IAAI,OAAO;AACV,oBAAI,QAAQ;AACX,yBAAO,MAAM,iBAAiB,YAAY,GAAG;AAAA,gBAC9C;AAEA,uBAAO,MAAM,YAAY;AAAA,kBACxB,UAAU,MAAM,CAAC;AAAA,kBACjB,WAAW,MAAM,CAAC;AAAA,gBACnB,CAAC;AAAA,cACF;AAAA,YACD,CAAC;AAAA,UACF;AACA,cAAI,CAAC,QAAQ,WAAW,UAAU,GAAG;AACpC,gBAAI,MAAM,WAAW;AAErB,gBAAI,cAAc,SAAS;AAC1B,oBAAM;AAAA,gBACL,OAAO,UAAU,IAAI;AAAA,gBACrB,KAAK,WAAW,IAAI;AAAA,cACrB;AAAA,YACD;AACA,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA;AAAA,cACA;AAAA,cACA,MAAM;AAAA,gBACL,UAAU;AAAA,gBACV,OAAO,WAAW;AAAA,cACnB;AAAA,cACA,IAAI,OAAO;AACV,oBAAI,QAAQ;AACX,yBAAO,MAAM,gBAAgB,WAAW,GAAG;AAAA,gBAC5C;AAEA,uBAAO,MAAM,YAAY;AAAA,kBACxB,UAAU,MAAM,CAAC;AAAA,kBACjB,WAAW,MAAM,CAAC;AAAA,gBACnB,CAAC;AAAA,cACF;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,gBAAgB;AAAA,UAChB,aAAa;AAAA,UACb,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzMA;AAAA,iDAAAC,UAAAC,SAAA;AAAA;AAQA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,QAAQ,cAAc,QAAQ;AAAA,UACtC;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,iBAAiB;AAAA,gBAChB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QAET,UAAU;AAAA,UACT,cACC;AAAA,UACD,cACC;AAAA,UACD,eACC;AAAA,UACD,eACC;AAAA,UACD,iBACC;AAAA,UACD,eACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,QAAQ,QAAQ,QAAQ,CAAC,KAAK,QACnC,SAAS,QAAQ,QAAQ,CAAC,KAAK,CAAC,GAChC,aAAa,QAAQ;AAYtB,iBAAS,qBAAqB,YAAY,aAAa;AACtD,gBAAM,YAAY,CAAC,WAAW,MAAM,CAAC,GAAG,YAAY,MAAM,CAAC,CAAC;AAC5D,gBAAM,cAAc,WAAW,KAAK;AAAA,YACnC,UAAU,CAAC;AAAA,YACX,UAAU,CAAC;AAAA,UACZ;AAGA,cAAI,YAAY,KAAK,GAAG;AACvB,mBAAO;AAAA,UACR;AACA,iBAAO,WAAS,MAAM,iBAAiB,WAAW,GAAG;AAAA,QACtD;AAQA,iBAAS,kBAAkB,cAAc,cAAc;AACtD,gBAAM,0BACL,WAAW,eAAe,YAAY;AACvC,gBAAM,yBACL,WAAW,cAAc,YAAY;AACtC,gBAAM,0BACL,WAAW,eAAe,YAAY;AACvC,gBAAM,sBACL,OAAO,mBACP,SAAS,kBAAkB,cAAc,YAAY;AAEtD,cACC,UAAU,YACV,CAAC,SAAS;AAAA,YACT;AAAA,YACA;AAAA,UACD,GACC;AACD,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,KAAK;AAAA,gBACJ;AAAA,gBACA;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAEA,cACC,UAAU,YACV,SAAS;AAAA,YACR;AAAA,YACA;AAAA,UACD,KACA,CAAC,qBACA;AACD,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,KAAK,WAAS,MAAM,iBAAiB,cAAc,IAAI;AAAA,YACxD,CAAC;AAAA,UACF;AAEA,cACC,SAAS;AAAA,YACR;AAAA,YACA;AAAA,UACD,KACA,2BAA2B,gBAC3B,CAAC,qBACA;AACD,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,KAAK,WAAS,MAAM,gBAAgB,cAAc,IAAI;AAAA,YACvD,CAAC;AAAA,UACF;AAEA,cACC,4BAA4B,gBAC5B,CAAC,uBACD,SAAS;AAAA,YACR;AAAA,YACA;AAAA,UACD,GACC;AACD,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,KAAK,WAAS,MAAM,iBAAiB,cAAc,IAAI;AAAA,YACxD,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,2BAA2B,YAAY;AAC/C,gBAAM,eAAe,WAAW,cAAc,UAAU;AAExD,cACC,UAAU,UACV,CAAC,SAAS,kBAAkB,YAAY,YAAY,GACnD;AACD,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,KAAK,qBAAqB,YAAY,YAAY;AAAA,YACnD,CAAC;AAAA,UACF;AAEA,cACC,UAAU,UACV,SAAS,kBAAkB,YAAY,YAAY,GAClD;AACD,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,KAAK,WAAS,MAAM,gBAAgB,YAAY,IAAI;AAAA,YACrD,CAAC;AAAA,UACF;AAAA,QACD;AAMA,eAAO;AAAA,UACN,eAAeC,OAAM;AACpB,gBAAI,CAAC,SAAS,uBAAuB,IAAIA,MAAK,OAAO,IAAI,GAAG;AAC3D;AAAA,gBACC,WAAW,cAAcA,KAAI;AAAA,gBAC7B,WAAW,aAAaA,KAAI;AAAA,cAC7B;AAAA,YACD;AAAA,UACD;AAAA,UACA,YAAYA,OAAM;AACjB;AAAA,cACC,WAAW,cAAcA,OAAM,EAAE,MAAM,EAAE,CAAC;AAAA;AAAA,cAC1C,WAAW,aAAaA,KAAI;AAAA,YAC7B;AAAA,UACD;AAAA,UACA,UAAUA,OAAM;AACf;AAAA,cACC,WAAW,cAAcA,KAAI;AAAA,cAC7B,WAAW,aAAaA,KAAI;AAAA,YAC7B;AAAA,UACD;AAAA,UACA,gBAAgBA,OAAM;AACrB,kBAAM,eAAe,WAAW,aAAaA,KAAI;AACjD,kBAAM,eAAe,WAAW;AAAA,cAC/BA,MAAK,MAAM,SAASA,MAAK,MAAM,CAAC,IAAI;AAAA,YACrC;AAEA,8BAAkB,cAAc,YAAY;AAAA,UAC7C;AAAA,UACA,YAAYA,OAAM;AACjB,gBACCA,MAAK,WAAW,SAAS,oBACzBA,MAAK,WACJ;AAED;AAAA,gBACC,WAAW,aAAaA,MAAK,UAAU;AAAA,cACxC;AAAA,YACD;AAAA,UACD;AAAA,UACA,aAAaA,OAAM;AAElB,uCAA2B,WAAW,aAAaA,MAAK,KAAK,CAAC;AAE9D,gBAAIA,MAAK,WAAWA,MAAK,WAAW;AAEnC;AAAA,gBACC,WAAW,aAAaA,MAAK,QAAQ,IAAI;AAAA,cAC1C;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrRA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,OAAO,EAAE,MAAM,SAAS;AAAA,UACzB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,YAAY,QAAQ,QAAQ,CAAC,KAAK,CAAC,YAAY,MAAM,MAAM,GAChE,aAAa,QAAQ;AAYtB,iBAAS,wBAAwBC,OAAM,OAAO;AAC7C,cAAI,CAACA,MAAK,QAAQ;AACjB,mBAAO;AAAA,UACR;AACA,cAAI,CAAC,MAAM,SAASA,MAAK,OAAO,IAAI,GAAG;AACtC,mBAAO,wBAAwBA,MAAK,QAAQ,KAAK;AAAA,UAClD;AACA,iBAAOA,MAAK;AAAA,QACb;AAOA,iBAAS,wBAAwBA,OAAM;AACtC,cAAIA,MAAK,SAAS,cAAc;AAC/B,mBAAO;AAAA,UACR;AAEA,cAAIA,MAAK,SAAS,oBAAoB;AACrC,gBAAIA,MAAK,OAAO,SAAS,cAAc;AACtC,qBAAO;AAAA,YACR;AACA,gBAAIA,MAAK,OAAO,SAAS,oBAAoB;AAC5C,qBAAO,wBAAwBA,MAAK,MAAM;AAAA,YAC3C;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAOA,iBAAS,WAAWA,OAAM;AACzB,iBACC,wBAAwBA,MAAK,MAAM,KACnC,UAAU,SAAS,WAAW,QAAQA,MAAK,MAAM,CAAC;AAAA,QAEpD;AAQA,iBAAS,qBAAqBA,OAAM,YAAY;AAE/C,cAAI,CAAC,cAAc,WAAW,SAAS,uBAAuB;AAC7D,mBAAO;AAAA,UACR;AAGA,cAAI,WAAW,eAAeA,OAAM;AACnC,mBAAO;AAAA,UACR;AAGA,cACC,WAAW,WAAW,SAAS,sBAC/B,WAAW,WAAW,SAAS,qBAC9B;AACD,gBAAI,WAAW,WAAW,UAAUA,OAAM;AACzC,qBAAO;AAAA,YACR;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAMA,eAAO;AAAA,UACN,eAAeA,OAAM;AAEpB,gBAAI,CAAC,WAAWA,KAAI,GAAG;AACtB;AAAA,YACD;AAGA,kBAAM,eACL,wBAAwBA,OAAM;AAAA,cAC7B;AAAA,cACA;AAAA,cACA;AAAA,YACD,CAAC,KAAK,CAAC;AAGR,gBAAI,aAAa,SAAS,mBAAmB;AAC5C;AAAA,YACD;AAGA,gBAAI,aAAa,SAAS,2BAA2B;AACpD;AAAA,YACD;AAGA,gBAAI,aAAa,SAAS,kBAAkB;AAE3C,oBAAM,WAAW,aAAa,KAAK,GAAG,EAAE;AAGxC,kBAAI,qBAAqBA,OAAM,QAAQ,GAAG;AACzC,sBAAM,aAAa,aAAa,OAAO;AAGvC,oBACC,eAAe,wBACf,eAAe,yBACf,eAAe,2BACd;AACD;AAAA,gBACD;AAAA,cACD;AAGA,kBAAI,SAAS,SAAS,mBAAmB;AAExC,oBACC,qBAAqBA,OAAM,aAAa,KAAK,GAAG,EAAE,CAAC,GAClD;AACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAGA,gBACC,wBAAwBA,OAAM;AAAA,cAC7B;AAAA,cACA;AAAA,cACA;AAAA,YACD,CAAC,GACA;AACD,sBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,gBAAgB,CAAC;AAAA,YACpD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACvNA;AAAA,+CAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,OAAO,CAAC;AAAA,YACR,qBAAqB;AAAA,YACrB,eAAe;AAAA,YACf,eAAe;AAAA,YACf,YAAY;AAAA,UACb;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,qBAAqB;AAAA,gBACpB,MAAM;AAAA,cACP;AAAA,cACA,eAAe;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,cACA,eAAe;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,cACA,YAAY;AAAA,gBACX,MAAM,CAAC,UAAU,OAAO;AAAA,cACzB;AAAA,cACA,OAAO;AAAA,gBACN,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,gBACA,UAAU;AAAA,gBACV,aAAa;AAAA,cACd;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,cAAc;AAAA,UACd,qBAAqB;AAAA,QACtB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM;AAAA,UACL;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD,IAAI,QAAQ;AACZ,cAAM,aAAa,QAAQ;AAO3B,cAAM,WAAW,oBAAI,IAAI;AAQzB,iBAAS,cAAc,MAAM;AAC5B,gBAAM,WAAW,KAAK,QAAQ,aAAa,EAAE;AAG7C,iBACC,SAAS,SAAS,GAAG,KAAK,aAAa,SAAS,YAAY;AAAA,QAE9D;AAQA,iBAAS,UAAU,MAAM;AACxB,iBAAO,MAAM;AAAA,YACZ,WAAS,SAAS,SAAS,KAAK,MAAM,IAAI,OAAO,OAAO,GAAG,CAAC;AAAA,UAC7D;AAAA,QACD;AAQA,iBAAS,WAAW,MAAM;AACzB,iBAAO,CAAC,cAAc,IAAI,KAAK,UAAU,IAAI;AAAA,QAC9C;AAQA,iBAAS,mBAAmBC,OAAM;AACjC,gBAAM,SAASA,MAAK;AAEpB,kBAAQ,OAAO,MAAM;AAAA,YACpB,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO,OAAO,SAASA;AAAA,YAExB,KAAK;AACJ,qBACC,OAAO,OAAO,SAAS,mBACvB,OAAO,UAAUA;AAAA,YAEnB,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO;AAAA,YAER;AACC,qBAAO;AAAA,UACT;AAAA,QACD;AASA,iBAAS,qBAAqBA,OAAM;AACnC,gBAAM,YAAYA,MAAK;AACvB,gBAAM,YACLA,MAAK,OAAO,SAAS,sBAAsBA,MAAK,SAASA;AAC1D,gBAAM,SAAS,UAAU;AAEzB,kBAAQ,OAAO,MAAM;AAAA,YACpB,KAAK;AACJ,sBACE,OAAO,OAAO,SAAS,mBACvB,OAAO,OAAO,SAAS,uBACxB,OAAO,UAAU,aACjB,CAAC,OAAO,YACR,OAAO,IAAI,SAAS,gBACpB,OAAO,IAAI,SAAS;AAAA,YAGtB,KAAK;AACJ,qBACC,OAAO,UAAUA,SACjB,SAAS,oBAAoB,OAAO,QAAQ,MAC3C;AAAA,YAGH;AACC,qBAAO;AAAA,UACT;AAAA,QACD;AAQA,iBAAS,OAAOA,OAAM;AACrB,cAAI,SAAS,IAAIA,MAAK,MAAM,CAAC,CAAC,GAAG;AAChC;AAAA,UACD;AACA,mBAAS,IAAIA,MAAK,MAAM,CAAC,CAAC;AAG1B,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WACCA,MAAK,SAAS,sBACX,wBACA;AAAA,YACJ,MAAM,EAAE,MAAMA,MAAK,KAAK;AAAA,UACzB,CAAC;AAAA,QACF;AAOA,iBAAS,kBAAkBA,OAAM;AAKhC,cACCA,MAAK,OAAO,SAAS,oBACrBA,MAAK,OAAO,SAAS,iBACpB;AACD;AAAA,UACD;AAOA,cACCA,MAAK,OAAO,SAAS,uBACrBA,MAAK,OAAO,UAAUA,OACrB;AACD;AAAA,UACD;AAMA,cAAI,uBAAuB,qBAAqBA,KAAI,GAAG;AACtD;AAAA,UACD;AAKA,cAAI,SAAS,qBAAqBA,KAAI,GAAG;AACxC;AAAA,UACD;AAEA,iBAAOA,KAAI;AAAA,QACZ;AAEA,eAAO;AAAA;AAAA,UAEN,QAAQA,OAAM;AACb,kBAAM,QAAQ,WAAW,SAASA,KAAI;AAEtC,gBAAI,CAAC,eAAe;AAEnB,yBAAW,YAAY,MAAM,WAAW;AACvC,oBACC,SAAS,YAAY,SAAS,KAC9B,WAAW,SAAS,IAAI,GACvB;AACD;AAAA,gBACD;AACA,2BAAW,aAAa,SAAS,YAAY;AAK5C,oCAAkB,UAAU,UAAU;AAAA,gBACvC;AAAA,cACD;AAAA,YACD;AAGA,uBAAW,aAAa,MAAM,SAAS;AACtC,oBAAM,KAAK,UAAU;AAErB,kBACC,WAAW,GAAG,IAAI,KAClB,SAAS,qBAAqB,EAAE,GAC/B;AACD;AAAA,cACD;AAMA,gCAAkB,EAAE;AAAA,YACrB;AAAA,UACD;AAAA;AAAA,UAGA,CAAC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD,CAAC,EAAEA,OAAM;AACR,uBAAW,YAAY,WAAW,qBAAqBA,KAAI,GAAG;AAC7D,kBAAI,WAAW,SAAS,IAAI,GAAG;AAC9B;AAAA,cACD;AACA,oBAAM,KAAK,SAAS,YAAY,CAAC;AAGjC,kBAAI,EAAE,uBAAuB,qBAAqB,EAAE,IAAI;AACvD,uBAAO,EAAE;AAAA,cACV;AAMA,yBAAW,aAAa,SAAS,YAAY;AAC5C,oBAAI,UAAU,MAAM;AACnB;AAAA,gBACD;AACA,kCAAkB,UAAU,UAAU;AAAA,cACvC;AAAA,YACD;AAAA,UACD;AAAA;AAAA,UAGA,CAAC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD,CAAC,EAAEA,OAAM;AACR,gBACC,eAAe,WACf,SAAS,qBAAqBA,KAAI,KAClC,WAAWA,MAAK,IAAI,GACnB;AACD;AAAA,YACD;AACA,mBAAOA,KAAI;AAAA,UACZ;AAAA,UACA,yDAAyDA,OAAM;AAC9D,gBACC,eAAe,WACf,CAAC,mBAAmBA,MAAK,MAAM;AAAA,YAC/B,WAAWA,MAAK,IAAI,GACnB;AACD;AAAA,YACD;AACA,mBAAOA,KAAI;AAAA,UACZ;AAAA;AAAA,UAGA,kBAAkBA,OAAM;AACvB,uBAAW,YAAY,WAAW,qBAAqBA,KAAI,GAAG;AAC7D,kBAAI,WAAW,SAAS,IAAI,GAAG;AAC9B;AAAA,cACD;AACA,oBAAM,KAAK,SAAS,YAAY,CAAC;AAGjC,kBAAI,EAAE,iBAAiB,qBAAqB,EAAE,IAAI;AACjD,uBAAO,EAAE;AAAA,cACV;AAMA,yBAAW,aAAa,SAAS,YAAY;AAC5C,kCAAkB,UAAU,UAAU;AAAA,cACvC;AAAA,YACD;AAAA,UACD;AAAA;AAAA,UAGA,CAAC;AAAA,YACA;AAAA,YACA;AAAA,UACD,CAAC,EAAEA,OAAM;AACR,gBAAI,WAAWA,MAAK,IAAI,GAAG;AAC1B;AAAA,YACD;AACA,mBAAOA,KAAI;AAAA,UACZ;AAAA;AAAA,UAGA,CAAC;AAAA,YACA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMA;AAAA,YACA;AAAA,UACD,CAAC,EAAEA,OAAM;AACR,gBAAI,WAAWA,MAAK,IAAI,GAAG;AAC1B;AAAA,YACD;AACA,mBAAOA,KAAI;AAAA,UACZ;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACraA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAMjB,QAAM,yBAAyB,SAAS;AAAxC,QACC,aAAa;AADd,QAEC,YAAY;AAFb,QAGC,iBAAiB;AAOlB,QAAM,cAAc;AAAA,MACnB,MAAM;AAAA,MACN,YAAY;AAAA,QACX,eAAe;AAAA,UACd,MAAM;AAAA,QACP;AAAA,QACA,sBAAsB;AAAA,UACrB,MAAM;AAAA,QACP;AAAA,QACA,2BAA2B;AAAA,UAC1B,MAAM;AAAA,QACP;AAAA,MACD;AAAA,MACA,sBAAsB;AAAA,IACvB;AACA,QAAM,WAAW;AAAA,MAChB,eAAe;AAAA,MACf,sBAAsB;AAAA,MACtB,2BAA2B;AAAA,IAC5B;AAeA,aAAS,qBAAqB,YAAY,OAAO;AAChD,aAAO,OAAO,OAAO,CAAC,GAAG,UAAU,WAAW,KAAK,KAAK,UAAU;AAAA,IACnE;AAQA,aAAS,wBAAwB,aAAa,CAAC,GAAG;AACjD,aAAO;AAAA,QACN,MAAM,qBAAqB,YAAY,MAAM;AAAA,QAC7C,OAAO,qBAAqB,YAAY,OAAO;AAAA,MAChD;AAAA,IACD;AAUA,aAAS,8BAA8B,mBAAmB;AACzD,aAAO,KAAK,iBAAiB,EAAE,QAAQ,SAAO;AAC7C,cAAM,mBAAmB,kBAAkB,GAAG,EAAE;AAEhD,YAAI,kBAAkB;AACrB,gBAAM,SAAS,OAAO,WAAW,gBAAgB,KAAK,GAAG;AAEzD,4BAAkB,GAAG,EAAE,sBAAsB;AAAA,QAC9C;AAAA,MACD,CAAC;AAAA,IACF;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP,EAAE,MAAM,CAAC,UAAU,OAAO,EAAE;AAAA,UAC5B;AAAA,YACC,OAAO;AAAA,cACN;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,MAAM;AAAA,kBACN,OAAO;AAAA,gBACR;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,QAAQ;AAAA,QAEzB,UAAU;AAAA,UACT,4BACC;AAAA,UACD,4BACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ,QAAQ,CAAC,GACnC,oBAAoB,wBAAwB,QAAQ,QAAQ,CAAC,CAAC,GAC9D,aAAa,QAAQ;AAEtB,sCAA8B,iBAAiB;AAsB/C,iBAAS,gBAAgB,SAAS;AACjC,gBAAM,gBAAgB,WAAW,eAAe,SAAS;AAAA,YACvD,iBAAiB;AAAA,UAClB,CAAC,GACD,YAAY,WAAW,cAAc,SAAS;AAAA,YAC7C,iBAAiB;AAAA,UAClB,CAAC;AAEF,iBAAO;AAAA,YACN,iBACA,aACA,QAAQ,IAAI,MAAM,SAAS,cAAc,IAAI,IAAI,QACjD,QAAQ,IAAI,IAAI,SAAS,UAAU,IAAI,MAAM;AAAA,UAC9C;AAAA,QACD;AAOA,iBAAS,qBAAqB,SAAS;AACtC,gBAAM,yBAAyB,WAAW,eAAe,SAAS;AAAA,YACjE,iBAAiB;AAAA,UAClB,CAAC;AAED,iBAAO;AAAA,YACN,0BACA,CAAC,SAAS,MAAM,EAAE,SAAS,uBAAuB,IAAI;AAAA,UACvD;AAAA,QACD;AAQA,iBAAS,eAAe,SAAS,SAAS;AAEzC,cAAI,uBAAuB,KAAK,QAAQ,KAAK,GAAG;AAC/C,mBAAO;AAAA,UACR;AAGA,gBAAM,0BAA0B,QAAQ,MAAM,QAAQ,QAAQ,EAAE;AAEhE,cACC,QAAQ,uBACR,QAAQ,oBAAoB,KAAK,uBAAuB,GACvD;AACD,mBAAO;AAAA,UACR;AAGA,cAAI,QAAQ,wBAAwB,gBAAgB,OAAO,GAAG;AAC7D,mBAAO;AAAA,UACR;AAGA,cACC,QAAQ,6BACR,qBAAqB,OAAO,GAC3B;AACD,mBAAO;AAAA,UACR;AAGA,cAAI,UAAU,KAAK,uBAAuB,GAAG;AAC5C,mBAAO;AAAA,UACR;AAGA,gBAAM,uBAAuB,wBAAwB;AAAA,YACpD;AAAA,YACA;AAAA,UACD;AAEA,cAAI,qBAAqB,WAAW,GAAG;AACtC,mBAAO;AAAA,UACR;AAGA,gBAAM,CAAC,aAAa,IAAI;AAExB,cAAI,CAAC,eAAe,KAAK,aAAa,GAAG;AACxC,mBAAO;AAAA,UACR;AAGA,gBAAM,cACJ,kBAAkB,cAAc,kBAAkB,GACnD,cACC,kBAAkB,cAAc,kBAAkB;AAEpD,cAAI,eAAe,YAAY,aAAa;AAC3C,mBAAO;AAAA,UACR;AACA,cAAI,eAAe,WAAW,aAAa;AAC1C,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AAOA,iBAAS,eAAe,SAAS;AAChC,gBAAM,UAAU,kBAAkB,QAAQ,IAAI,GAC7C,eAAe,eAAe,SAAS,OAAO;AAE/C,cAAI,CAAC,cAAc;AAClB,kBAAM,YACL,eAAe,WACZ,+BACA;AAEJ,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA;AAAA,cACN,KAAK,QAAQ;AAAA,cACb;AAAA,cACA,IAAI,OAAO;AACV,sBAAMC,SAAQ,QAAQ,MAAM,MAAM,cAAc;AAChD,sBAAM,OAAOA,OAAM,CAAC;AAGpB,sBAAM,YAAY,QAAQ,MAAM,CAAC,IAAIA,OAAM,QAAQ;AAEnD,uBAAO,MAAM;AAAA,kBACZ,CAAC,WAAW,YAAY,KAAK,MAAM;AAAA,kBACnC,eAAe,WACZ,KAAK,kBAAkB,IACvB,KAAK,kBAAkB;AAAA,gBAC3B;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAMA,eAAO;AAAA,UACN,UAAU;AACT,kBAAM,WAAW,WAAW,eAAe;AAE3C,qBACE,OAAO,WAAS,MAAM,SAAS,SAAS,EACxC,QAAQ,cAAc;AAAA,UACzB;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACtUA;AAAA,4DAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,uBAAuB;AAAA,YACvB,eAAe,CAAC;AAAA,YAChB,uBAAuB;AAAA,UACxB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,eAAe;AAAA,gBACd,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,cACD;AAAA,cACA,uBAAuB;AAAA,gBACtB,MAAM;AAAA,cACP;AAAA,cACA,uBAAuB;AAAA,gBACtB,MAAM;AAAA,cACP;AAAA,cACA,6BAA6B;AAAA,gBAC5B,MAAM,CAAC,OAAO,eAAe;AAAA,cAC9B;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,aAAa;AAAA,QACd;AAAA,MACD;AAAA,MACA,OAAO,SAAS;AACf,cAAM,CAAC,OAAO,IAAI,QAAQ;AAC1B,cAAM;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QACD,IAAI;AACJ,cAAM,gBAAgB,IAAI,IAAI,QAAQ,aAAa;AAEnD,cAAM,QAAQ,CAAC;AAMf,iBAAS,cAAc;AACtB,gBAAM,KAAK,KAAK;AAAA,QACjB;AAMA,iBAAS,aAAa;AACrB,iBAAO,MAAM,IAAI;AAAA,QAClB;AAQA,iBAAS,gBAAgB;AACxB,sBAAY;AAAA,QACb;AAQA,iBAAS,iBAAiBC,OAAM;AAC/B,kBAAQA,MAAK,MAAM;AAAA,YAClB,KAAK;AACJ,qBAAO,CAACA,MAAK,UAAUA,MAAK,SAAS;AAAA,YACtC,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO,CAACA,MAAK,UAAU;AAAA,YACxB;AACC,qBAAO;AAAA,UACT;AAAA,QACD;AAQA,iBAAS,cAAcA,OAAM;AAC5B,gBAAM,YAAYA,MAAK,OAAO;AAC9B,iBACC,WAAW,SAAS,sBACpB,UAAU,YAAY,SAAS;AAAA,QAEjC;AAQA,iBAAS,yBAAyBA,OAAM;AACvC,cAAI,iBAAiBA,KAAI,GAAG;AAC3B,gBAAIA,MAAK,UAAU;AAClB,qBAAO;AAAA,YACR;AAEA,gBAAI,yBAAyBA,MAAK,UAAU;AAC3C,qBAAO;AAAA,YACR;AAEA,gBAAI,6BAA6B;AAChC,oBAAM,uBAAuB,cAAcA,KAAI;AAC/C,kBAAI,sBAAsB;AACzB,oBACC,gCAAgC,SAC/B,gCAAgC,mBAChCA,MAAK,IAAI,SAAS,wBACjB,CAACA,MAAK,iBACNA,MAAK,kBAAkB,WACxB;AACD,yBAAO;AAAA,gBACR;AAAA,cACD;AAAA,YACD;AAEA,kBAAM,eACLA,MAAK,IAAI,SAAS,sBAAsB,MAAM;AAC/C,kBAAM,OACLA,MAAK,IAAI,SAAS,YACf,SAAS,qBAAqBA,MAAK,GAAG,IACtCA,MAAK,IAAI,QAAQ;AAErB,mBAAO,CAAC,cAAc,IAAI,eAAe,IAAI;AAAA,UAC9C;AACA,iBAAO;AAAA,QACR;AAUA,iBAAS,aAAaA,OAAM;AAC3B,gBAAM,iBAAiB,WAAW;AAElC,cAAI,yBAAyBA,MAAK,MAAM,KAAK,CAAC,gBAAgB;AAC7D,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,SAAS,mBAAmBA,OAAM,QAAQ,UAAU;AAAA,cACzD,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,MAAM,SAAS,wBAAwBA,KAAI;AAAA,cAC5C;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,eAAe;AACvB,cAAI,MAAM,QAAQ;AACjB,kBAAM,MAAM,SAAS,CAAC,IAAI;AAAA,UAC3B;AAAA,QACD;AAEA,eAAO;AAAA,UACN,qBAAqB;AAAA,UACrB,4BAA4B;AAAA,UAC5B,oBAAoB;AAAA,UACpB,2BAA2B;AAAA;AAAA;AAAA;AAAA,UAK3B,iCAAiC;AAAA,UACjC,yBAAyB;AAAA,UACzB,mCAAmC;AAAA,UACnC,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQ3B,aAAa;AAAA,UACb,oBAAoB;AAAA,UAEpB,gBAAgB;AAAA,UAChB,OAAO;AAAA,UACP,GAAI,yBAAyB;AAAA,YAC5B,oDACC;AAAA,YACD,yDACC;AAAA,YACD,sDACC;AAAA,YACD,2DACC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxPA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAMjB,QAAM,kBAAkB,OAAO,OAAO;AAAA,MACrC,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,WAAW;AAAA,IACZ,CAAC;AAQD,aAAS,uBAAuB,UAAU;AACzC,aAAO,EACN,SAAS,SAAS,iBAClB,SAAS,SAAS,kBAClB,SAAS,SAAS;AAAA,IAEpB;AAQA,aAAS,iBAAiB,aAAa,aAAa;AACnD,UAAI,OAAO,gBAAgB,UAAU;AACpC,eAAO;AAAA,UACN,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,SAAS;AAAA,UACT,SAAS;AAAA,UACT,WAAW,cAAc,OAAO,WAAW;AAAA,QAC5C;AAAA,MACD;AACA,UAAI,OAAO,gBAAgB,YAAY,gBAAgB,MAAM;AAC5D,eAAO;AAAA,UACN,QAAQ,YAAY,UAAU,gBAAgB;AAAA,UAC9C,SAAS,YAAY,WAAW,gBAAgB;AAAA,UAChD,SAAS,YAAY,WAAW,gBAAgB;AAAA,UAChD,SAAS,YAAY,WAAW,gBAAgB;AAAA,UAChD,WAAW,YAAY,aAAa,gBAAgB;AAAA,QACrD;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP,aAAa;AAAA,YACZ,OAAO;AAAA,cACN,MAAM;AAAA,gBACL;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AAAA,YACA,iBAAiB;AAAA,cAChB,MAAM;AAAA,gBACL;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UACA,MAAM;AAAA,UACN,OAAO;AAAA,YACN;AAAA,cACC,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM;AAAA,gBACP;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,QAAQ;AAAA,sBACP,MAAM;AAAA,oBACP;AAAA,oBACA,SAAS;AAAA,sBACR,MAAM;AAAA,oBACP;AAAA,oBACA,SAAS;AAAA,sBACR,MAAM;AAAA,oBACP;AAAA,oBACA,SAAS;AAAA,sBACR,MAAM;AAAA,oBACP;AAAA,oBACA,WAAW;AAAA,sBACV,MAAM;AAAA,oBACP;AAAA,kBACD;AAAA,kBACA,sBAAsB;AAAA,gBACvB;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UACA,iBAAiB;AAAA,QAClB;AAAA,QAEA,UAAU;AAAA,UACT,YAAY;AAAA,UACZ,SAAS;AAAA,QACV;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,UAAU;AAAA,UACf,QAAQ,QAAQ,CAAC;AAAA,UACjB,QAAQ,gBAAgB;AAAA,QACzB;AAEA,cAAM,aAAa,QAAQ;AAO3B,iBAAS,YAAYC,OAAM;AAM1B,mBAAS,KAAK,OAAO;AACpB,mBAAO,MAAM,GAAG,EAAE;AAAA,UACnB;AAEA,kBAAQA,MAAK,MAAM;AAAA,YAClB,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO,KAAKA,MAAK,UAAU;AAAA,YAC5B,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO,KAAKA,MAAK,QAAQ;AAAA,YAC1B,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO,KAAKA,MAAK,UAAU;AAAA,YAC5B,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO,KAAKA,MAAK,MAAM;AAAA,YACxB,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO,KAAKA,MAAK,SAAS;AAAA,YAC3B;AACC,qBAAO;AAAA,UACT;AAAA,QACD;AAUA,iBAAS,iBAAiBA,OAAM,UAAU;AACzC,kBAAQA,MAAK,MAAM;AAAA,YAClB,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO,WAAW,aAAaA,OAAM,CAAC;AAAA,YACvC,SAAS;AACR,oBAAM,YAAY,WAAW,cAAc,QAAQ;AAEnD,kBAAI,SAAS,aAAa,SAAS,GAAG;AACrC,uBAAO;AAAA,cACR;AACA,qBAAO,WAAW,aAAa,QAAQ;AAAA,YACxC;AAAA,UACD;AAAA,QACD;AASA,iBAAS,YAAYA,OAAM;AAC1B,gBAAM,WAAW,YAAYA,KAAI;AAEjC,cAAI,CAAC,UAAU;AACd,mBAAO;AAAA,UACR;AAEA,gBAAM,mBAAmB,iBAAiBA,OAAM,QAAQ;AACxD,gBAAM,YAAY,WAAW,cAAc,gBAAgB;AAE3D,iBAAO,UAAU,IAAI,IAAI,SAAS,iBAAiB,IAAI,IAAI;AAAA,QAC5D;AASA,iBAAS,oBAAoBA,OAAM;AAClC,gBAAM,WAAW,YAAYA,KAAI;AAEjC,cACC,CAAC,YACAA,MAAK,SAAS,uBACd,SAAS,SAAS,mBAClB;AACD;AAAA,UACD;AAEA,gBAAM,gBAAgB,iBAAiBA,OAAM,QAAQ;AAErD,cAAI,SAAS,aAAa,aAAa,GAAG;AACzC,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,KAAK,cAAc;AAAA,cACnB,WAAW;AAAA,cACX,CAAC,IAAI,OAAO;AACX,sBAAM,MAAM,OAAO,aAAa;AAShC,sBAAM,MAAM;AAAA,kBACX,WAAW,eAAe,aAAa;AAAA,kBACvC;AAAA,gBACD;AACA,sBAAM,MAAM;AAAA,kBACX,WAAW,cAAc,aAAa;AAAA,kBACtC;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAaA,iBAAS,mBAAmBA,OAAM;AACjC,gBAAM,WAAW,YAAYA,KAAI;AAEjC,cACC,CAAC,YACAA,MAAK,SAAS,uBACd,SAAS,SAAS,mBAClB;AACD;AAAA,UACD;AACA,cAAI,CAAC,uBAAuB,QAAQ,GAAG;AACtC,gCAAoBA,KAAI;AACxB;AAAA,UACD;AAEA,gBAAM,gBAAgB,iBAAiBA,OAAM,QAAQ;AAErD,cAAI,cAAc,UAAU,KAAK;AAChC,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,KAAK;AAAA,gBACJ,OAAO,cAAc,IAAI;AAAA,gBACzB,KAAK,SAAS;AAAA,kBACb;AAAA,kBACA,cAAc,IAAI;AAAA,gBACnB;AAAA,cACD;AAAA,cACA,WAAW;AAAA,cACX,CAAC,IAAI,OAAO;AACX,sBAAM,MAAM,gBAAgB,eAAe,GAAG;AAS9C,sBAAM,MAAM,iBAAiB,eAAe,EAAE;AAC9C,sBAAM,MAAM;AAAA,kBACX,WAAW,cAAc,aAAa;AAAA,kBACtC;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAWA,iBAAS,8BAA8BA,OAAM;AAC5C,cAAI,YAAYA,KAAI,GAAG;AACtB,+BAAmBA,KAAI;AAAA,UACxB,OAAO;AACN,gCAAoBA,KAAI;AAAA,UACzB;AAAA,QACD;AAWA,iBAAS,8BAA8BA,OAAM;AAC5C,cAAI,CAAC,YAAYA,KAAI,GAAG;AACvB,gCAAoBA,KAAI;AAAA,UACzB;AAAA,QACD;AAEA,cAAM,YAAY;AAAA,UACjB,QAAQ;AAAA,UACR,oBAAoB;AAAA,UACpB,kBAAkB;AAAA,UAClB,OAAO;AAAA,UACP,SAAS;AAAA,UAAC;AAAA,QACX;AAEA,eAAO;AAAA,UACN,kBAAkB,UAAU,QAAQ,OAAO;AAAA,UAC3C,eAAe,UAAU,QAAQ,OAAO;AAAA,UAExC,iBAAiB,UAAU,QAAQ,MAAM;AAAA,UACzC,cAAc,UAAU,QAAQ,MAAM;AAAA,UAEtC,mBAAmB,UAAU,QAAQ,OAAO;AAAA,UAE5C,wBAAwB,UAAU,QAAQ,OAAO;AAAA,UAEjD,qBAAqB,UAAU,QAAQ,SAAS;AAAA,UAChD,oBAAoB,UAAU,QAAQ,SAAS;AAAA,UAC/C,yBAAyB,UAAU,QAAQ,SAAS;AAAA,UACpD,gBAAgB,UAAU,QAAQ,SAAS;AAAA,UAC3C,eAAe,UAAU,QAAQ,SAAS;AAAA,QAC3C;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACvaA;AAAA,mDAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,OAAO;AAAA,gBACN,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,SAAS;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,oBAAoB,WAAW;AAErC,cAAM,UAAU;AAAA,UACf,QAAQ,QAAQ,QAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC,EAAE,SAAS;AAAA,UACzD,OAAO,QAAQ,QAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC,EAAE,QAAQ;AAAA,QACxD;AAOA,cAAM,sBAAsB,CAAC;AAU7B,iBAAS,OAAOC,OAAM,KAAK,WAAW;AACrC,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,IAAI,OAAO;AACV,kBAAI,QAAQ,GAAG,GAAG;AACjB,oBAAI,QAAQ,UAAU;AACrB,yBAAO,MAAM,iBAAiBA,OAAM,GAAG;AAAA,gBACxC;AACA,uBAAO,MAAM,gBAAgBA,OAAM,GAAG;AAAA,cACvC;AACA,kBAAI,OAAO;AACX,oBAAM,UAAU;AAEhB,kBAAI,QAAQ,UAAU;AACrB,wBAAQ,UAAU,MAAM,CAAC;AACzB,sBAAMA,MAAK,MAAM,CAAC;AAAA,cACnB,OAAO;AACN,wBAAQA,MAAK,MAAM,CAAC;AACpB,sBAAM,UAAU,MAAM,CAAC;AAAA,cACxB;AAEA,qBAAO,MAAM,iBAAiB,CAAC,OAAO,GAAG,GAAG,OAAO;AAAA,YACpD;AAAA,YACA,WAAW,QAAQ,GAAG,IAAI,YAAY;AAAA,YACtC,MAAM;AAAA,cACL;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAOA,iBAAS,4BAA4BA,OAAM;AAC1C,cAAI,gBAAgB,WAAW,cAAcA,KAAI;AAEjD,UAAAA,MAAK,SAAS,QAAQ,aAAW;AAChC,gBAAI;AAEJ,gBAAI,YAAY,MAAM;AACrB,sBAAQ,WAAW,cAAc,aAAa;AAE9C,kBAAI,SAAS,aAAa,KAAK,GAAG;AACjC,oCAAoB,KAAK,KAAK;AAAA,cAC/B;AAAA,YACD,OAAO;AACN,sBAAQ,WAAW,cAAc,OAAO;AAAA,YACzC;AAEA,4BAAgB;AAAA,UACjB,CAAC;AAAA,QACF;AAMA,eAAO;AAAA,UACN,iBAAiB;AAChB,8BAAkB,QAAQ,CAAC,OAAO,MAAM;AACvC,kBAAI,CAAC,SAAS,aAAa,KAAK,GAAG;AAClC;AAAA,cACD;AAEA,oBAAM,gBAAgB,kBAAkB,IAAI,CAAC;AAC7C,oBAAM,YAAY,kBAAkB,IAAI,CAAC;AAEzC,kBACC,iBACA,CAAC,SAAS,aAAa,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAYpC,CAAC,oBAAoB,SAAS,KAAK,KACnC,SAAS,kBAAkB,eAAe,KAAK,KAC/C,QAAQ,WACP,WAAW,eAAe,eAAe,KAAK,GAC9C;AACD,uBAAO,OAAO,UAAU,aAAa;AAAA,cACtC;AAEA,kBACC,aACA,CAAC,SAAS,aAAa,SAAS;AAAA,cAChC,CAAC,SAAS,oBAAoB,SAAS;AAAA,cACvC,CAAC,SAAS,sBAAsB,SAAS;AAAA,cACzC,CAAC,SAAS,oBAAoB,SAAS;AAAA,cACvC,EAAE,CAAC,QAAQ,SAAS,UAAU,SAAS;AAAA,cACvC,SAAS,kBAAkB,OAAO,SAAS,KAC3C,QAAQ,UACP,WAAW,eAAe,OAAO,SAAS,GAC1C;AACD,uBAAO,OAAO,SAAS,SAAS;AAAA,cACjC;AAAA,YACD,CAAC;AAAA,UACF;AAAA,UACA,iBAAiB;AAAA,UACjB,cAAc;AAAA,QACf;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5MA;AAAA,iDAAAC,UAAAC,SAAA;AAAA;AAQA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,SAAS,MAAM;AAAA,UACvB;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,YAAY;AAAA,gBACX,MAAM;AAAA,gBACN,sBAAsB;AAAA,kBACrB,MAAM;AAAA,gBACP;AAAA,cACD;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,mCACC;AAAA,UACD,oBAAoB;AAAA,UACpB,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,QAAQ,QAAQ,QAAQ,CAAC,KAAK,QACnC,aAAa,QAAQ;AACtB,cAAM,aAAa;AAAA,UAClB,cAAc;AAAA,UACd,yBAAyB;AAAA,UACzB,gBAAgB;AAAA,UAChB,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,UACpB,mBAAmB;AAAA,UACnB,eAAe;AAAA,UACf,eAAe;AAAA,QAChB;AAEA,YACC,QAAQ,QAAQ,WAAW,KAC3B,OAAO,OAAO,QAAQ,QAAQ,CAAC,GAAG,YAAY,GAC7C;AACD,gBAAMC,QAAO,OAAO,KAAK,QAAQ,QAAQ,CAAC,EAAE,UAAU;AAEtD,mBAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AACrC,uBAAWA,MAAK,CAAC,CAAC,IAAI,QAAQ,QAAQ,CAAC,EAAE,WAAWA,MAAK,CAAC,CAAC;AAAA,UAC5D;AAAA,QACD;AAaA,iBAAS,gBAAgB,WAAWC,OAAM;AACzC,kBAAQ,WAAW;AAAA,YAClB,KAAK;AACJ,qBAAO,IAAIA,MAAK,QAAQ,SAAS,mBAAmB,EAAE,CAAC;AAAA,YAExD,KAAK;AACJ,qBAAO,GAAGA,KAAI;AAAA,YAEf,KAAK;AACJ,qBAAO,IAAIA,KAAI;AAAA,YAEhB;AACC,qBAAO;AAAA,UACT;AAAA,QACD;AAWA,iBAAS,iBACR,WACA,mBACA,YACA,kBACC;AACD,gBAAMA,QACL,WAAW,KAAK;AAAA,YACf,kBAAkB,MAAM,CAAC;AAAA,YACzB,WAAW,MAAM,CAAC;AAAA,UACnB,IACA,WAAW,KAAK;AAAA,YACf,WAAW,MAAM,CAAC;AAAA,YAClB,iBAAiB,MAAM,CAAC;AAAA,UACzB;AACD,gBAAM,QAAQ;AAAA,YACb,kBAAkB,MAAM,CAAC;AAAA,YACzB,iBAAiB,MAAM,CAAC;AAAA,UACzB;AAEA,iBAAO,SAAU,OAAO;AACvB,mBAAO,MAAM;AAAA,cACZ;AAAA,cACA,gBAAgB,WAAWA,KAAI;AAAA,YAChC;AAAA,UACD;AAAA,QACD;AAWA,iBAAS,yBACR,mBACA,YACA,kBACA,YACC;AAED,cACC,SAAS,kBAAkB,YAAY,gBAAgB,KACvD,SAAS,kBAAkB,mBAAmB,UAAU,GACvD;AAAA,UAEF,WACC,CAAC,SAAS,kBAAkB,YAAY,gBAAgB,KACxD,CAAC,SAAS,kBAAkB,mBAAmB,UAAU,GACxD;AACD,kBAAM,UAAU,WAAW,iBAAiB,UAAU,EAAE,CAAC;AACzD,kBAAM,YACL,WACA,QAAQ,SAAS,WACjB,SAAS,kBAAkB,YAAY,OAAO,IAC3C,QACA;AAGJ,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,KAAK,WAAW;AAAA,cAChB,WAAW;AAAA,cACX,KAAK;AAAA,gBACJ;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF,WACC,UAAU,WACV,CAAC,SAAS,kBAAkB,YAAY,gBAAgB,GACvD;AACD,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,KAAK,WAAW;AAAA,cAChB,WAAW;AAAA,cACX,KAAK;AAAA,gBACJ;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF,WACC,UAAU,UACV,SAAS,kBAAkB,YAAY,gBAAgB,GACtD;AACD,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,KAAK,WAAW;AAAA,cAChB,WAAW;AAAA,cACX,KAAK;AAAA,gBACJ;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AASA,iBAAS,cAAcC,OAAM,UAAU;AACtC,gBAAM,QAAQA,MAAK,QAAQ,GAC1B,eACCA,MAAK,SAAS,qBACdA,MAAK,SAAS;AAEhB,cAAI,MAAM,SAAS,KAAK,cAAc;AAErC,gBAAI,oBAAoB,WAAW,cAAcA,KAAI;AAErD,kBAAM,QAAQ,UAAQ;AACrB,oBAAM,aAAa,OACf,WAAW,eAAe,IAAI,IAC9B,mBACH,mBAAmB,OAChB,WAAW,cAAc,IAAI,IAC7B,WAAW,cAAc,UAAU,GACtC,aAAa,QAAQ;AAgBtB,kBAAI,SAAS,aAAa,UAAU,GAAG;AACtC;AAAA,kBACC;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAEA,kBAAI,MAAM;AACT,sBAAM,iBAAiB,WAAW;AAAA,kBACjC;AAAA,kBACA,SAAS;AAAA,gBACV;AAEA,oCAAoB,iBACjB,WAAW,eAAe,cAAc,IACxC,WAAW,IAAI,OAAO,GAAG,EAAE;AAAA,cAC/B,OAAO;AACN,oCAAoB;AAAA,cACrB;AAAA,YACD,CAAC;AAQD,gBAAI,cAAc;AACjB,oBAAM,YAAY,WAAW,aAAaA,KAAI,GAC7C,kBAAkB,WAAW,eAAe,SAAS;AAEtD,kBAAI,SAAS,aAAa,eAAe,GAAG;AAC3C;AAAA,kBACC,WAAW,eAAe,eAAe;AAAA,kBACzC;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAMA,cAAM,QAAQ,CAAC;AAEf,YAAI,CAAC,WAAW,qBAAqB;AACpC,gBAAM,sBAAsB,SAAUA,OAAM;AAC3C,0BAAcA,OAAM,cAAc;AAAA,UACnC;AAAA,QACD;AACA,YAAI,CAAC,WAAW,kBAAkB;AACjC,gBAAM,mBAAmB,SAAUA,OAAM;AACxC,0BAAcA,OAAM,YAAY;AAAA,UACjC;AAAA,QACD;AACA,YAAI,CAAC,WAAW,eAAe;AAC9B,gBAAM,gBAAgB,SAAUA,OAAM;AACrC,0BAAcA,OAAM,YAAY;AAAA,UACjC;AAAA,QACD;AACA,YAAI,CAAC,WAAW,iBAAiB;AAChC,gBAAM,kBAAkB,SAAUA,OAAM;AACvC,0BAAcA,OAAM,UAAU;AAAA,UAC/B;AAAA,QACD;AACA,YAAI,CAAC,WAAW,cAAc;AAC7B,gBAAM,eAAe,SAAUA,OAAM;AACpC,0BAAcA,OAAM,UAAU;AAAA,UAC/B;AAAA,QACD;AACA,YAAI,CAAC,WAAW,qBAAqB;AACpC,gBAAM,sBAAsB,SAAUA,OAAM;AAC3C,0BAAcA,OAAM,QAAQ;AAAA,UAC7B;AAAA,QACD;AACA,YAAI,CAAC,WAAW,oBAAoB;AACnC,gBAAM,qBAAqB,SAAUA,OAAM;AAC1C,0BAAcA,OAAM,QAAQ;AAAA,UAC7B;AAAA,QACD;AACA,YAAI,CAAC,WAAW,yBAAyB;AACxC,gBAAM,0BAA0B,SAAUA,OAAM;AAC/C,0BAAcA,OAAM,QAAQ;AAAA,UAC7B;AAAA,QACD;AACA,YAAI,CAAC,WAAW,gBAAgB;AAC/B,gBAAM,iBAAiB,SAAUA,OAAM;AACtC,0BAAcA,OAAM,WAAW;AAAA,UAChC;AAAA,QACD;AACA,YAAI,CAAC,WAAW,mBAAmB;AAClC,gBAAM,oBAAoB,SAAUA,OAAM;AACzC,0BAAcA,OAAM,YAAY;AAAA,UACjC;AAAA,QACD;AACA,YAAI,CAAC,WAAW,eAAe;AAC9B,gBAAM,gBAAgB,SAAUA,OAAM;AACrC,0BAAcA,OAAM,WAAW;AAAA,UAChC;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA;;;ACtYA;AAAA,mDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,cAAc;AAGpB,QAAI;AAWJ,aAAS,eAAeC,SAAQ;AAC/B,UAAIA,QAAO,UAAU,GAAG;AACvB,eAAOA,QAAO,YAAY;AAAA,MAC3B;AACA,aAAOA,QAAO,CAAC,EAAE,YAAY,IAAIA,QAAO,MAAM,CAAC;AAAA,IAChD;AAOA,aAAS,iBAAiBC,QAAO;AAChC,UAAI,YAAY,KAAKA,MAAK,GAAG;AAC5B,eAAOA,OAAM;AAAA,MACd;AAEA,oBAAc,IAAI,KAAK,UAAU,OAAO;AACxC,UAAI,gBAAgB;AAGpB,iBAAW,UAAU,UAAU,QAAQA,MAAK,GAAG;AAC9C;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAEA,IAAAF,QAAO,UAAU;AAAA,MAChB;AAAA,MACA;AAAA,IACD;AAAA;AAAA;;;ACzDA;AAAA,gDAAAG,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AACjB,QAAM,EAAE,eAAe,IAAI;AAM3B,QAAM,oBAAoB;AAG1B,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,iBAAiB;AAAA,QAElC,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,SAAS;AAAA,oBACR,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,kBACA,KAAK;AAAA,oBACJ,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,kBACA,SAAS;AAAA,oBACR,MAAM,CAAC,WAAW,UAAU;AAAA,kBAC7B;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,SACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,SAAS,QAAQ,QAAQ,CAAC;AAChC,YAAI,YAAY;AAChB,YAAI,UAAU;AAEd,YAAI,OAAO,WAAW,UAAU;AAC/B,cACC,OAAO,OAAO,QAAQ,SAAS,KAC/B,OAAO,OAAO,QAAQ,KAAK,GAC1B;AACD,wBAAY,OAAO,WAAW,OAAO;AAAA,UACtC;AAEA,cAAI,OAAO,OAAO,QAAQ,SAAS,GAAG;AACrC,sBAAU,OAAO;AAAA,UAClB;AAAA,QACD,WAAW,OAAO,WAAW,UAAU;AACtC,sBAAY;AAAA,QACb;AAEA,cAAM,yBAAyB,YAAY;AAO3C,cAAM,eAAe,CAAC;AAOtB,iBAAS,qBAAqB;AAC7B,uBAAa,aAAa,SAAS,CAAC;AAAA,QACrC;AAMA,eAAO;AAAA,UACN,kBAAkB;AAEjB,yBAAa,KAAK,CAAC;AAAA,UACpB;AAAA;AAAA,UAGA,aAAa;AAAA,UACb,uBAAuB;AAAA,UACvB,mBAAmB;AAAA,UACnB,cAAc;AAAA,UACd,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,UAChB,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,kBAAkB;AAAA,UAClB,mBAAmB;AAAA;AAAA,UAGnB,oBAAoB,MACnB,0BAA0B,mBAAmB;AAAA,UAC9C,iBAAiB,MAChB,0BAA0B,mBAAmB;AAAA;AAAA,UAG9C,qBAAqBC,OAAM;AAC1B,gBAAI,SAAS,4BAA4BA,MAAK,QAAQ,GAAG;AACxD,iCAAmB;AAAA,YACpB;AAAA,UACD;AAAA,UAEA,iBAAiBA,OAAM;AACtB,gBAAIA,MAAK,aAAa,MAAM;AAC3B,iCAAmB;AAAA,YACpB;AAAA,UACD;AAAA,UAEA,eAAeA,OAAM;AACpB,gBAAIA,MAAK,aAAa,MAAM;AAC3B,iCAAmB;AAAA,YACpB;AAAA,UACD;AAAA,UAEA,cAAc,UAAUA,OAAM;AAC7B,kBAAM,aAAa,aAAa,IAAI;AAQpC,gBACC,SAAS,WAAW,cACpB,SAAS,WAAW,6BACpB,SAAS,WAAW,sBACnB;AACD;AAAA,YACD;AAEA,gBAAI,aAAa,WAAW;AAC3B,kBAAI;AACJ,kBAAI,MAAMA,MAAK;AAEf,kBAAI,SAAS,WAAW,2BAA2B;AAClD,uBAAO;AAAA,cACR,WAAW,SAAS,WAAW,sBAAsB;AACpD,uBAAO;AACP,sBAAM,WAAW,cAAcA,KAAI,EAAE;AAAA,cACtC,OAAO;AACN,uBAAO,SAAS,wBAAwBA,KAAI;AAC5C,sBAAM,SAAS,mBAAmBA,OAAM,UAAU;AAAA,cACnD;AAEA,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL,MAAM,eAAe,IAAI;AAAA,kBACzB;AAAA,kBACA,KAAK;AAAA,gBACN;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxMA;AAAA,+DAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,OAAO;AAAA,UACzB;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,wBAAwB;AAAA,gBACvB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,uBACC;AAAA,UACD,sBACC;AAAA,UAED,oBAAoB;AAAA,UACpB,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,2BAA2B,QAAQ,QAAQ,CAAC,MAAM;AACxD,cAAM,yBACL,CAAC,QAAQ,QAAQ,CAAC,KAAK,QAAQ,QAAQ,CAAC,EAAE;AAa3C,iBAAS,uBAAuBC,OAAM,OAAO,YAAY;AACxD,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK,EAAE,OAAO,MAAM,IAAI,KAAK,KAAK,WAAW,IAAI,MAAM;AAAA,YACvD,WAAW;AAAA,YACX,MAAM;AAAA,cACL,YAAY,MAAM;AAAA,YACnB;AAAA,YACA,IAAI,OAAO;AACV,qBAAO,MAAM,YAAY;AAAA,gBACxB,MAAM,MAAM,CAAC;AAAA,gBACb,WAAW,MAAM,CAAC;AAAA,cACnB,CAAC;AAAA,YACF;AAAA,UACD,CAAC;AAAA,QACF;AASA,iBAAS,oBAAoBA,OAAM,OAAO,aAAa;AACtD,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK,EAAE,OAAO,YAAY,IAAI,KAAK,KAAK,MAAM,IAAI,MAAM;AAAA,YACxD,WAAW;AAAA,YACX,MAAM;AAAA,cACL,YAAY,MAAM;AAAA,YACnB;AAAA,YACA,IAAI,OAAO;AACV,qBAAO,MAAM,YAAY;AAAA,gBACxB,YAAY,MAAM,CAAC;AAAA,gBACnB,MAAM,MAAM,CAAC;AAAA,cACd,CAAC;AAAA,YACF;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,6BAA6BA,OAAM,OAAO;AAClD,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK,MAAM;AAAA,YACX,WAAW;AAAA,YACX,MAAM;AAAA,cACL,YAAY,MAAM;AAAA,YACnB;AAAA,YACA,IAAI,OAAO;AACV,qBAAO,MAAM,gBAAgB,OAAO,GAAG;AAAA,YACxC;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,0BAA0BA,OAAM,OAAO;AAC/C,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK,MAAM;AAAA,YACX,WAAW;AAAA,YACX,MAAM;AAAA,cACL,YAAY,MAAM;AAAA,YACnB;AAAA,YACA,IAAI,OAAO;AACV,qBAAO,MAAM,iBAAiB,OAAO,GAAG;AAAA,YACzC;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,aAAa,cAAc;AACnC,iBAAO,SAAUA,OAAM;AACtB,gBAAI,CAACA,MAAK,UAAU;AACnB;AAAA,YACD;AAEA,kBAAM,WAAWA,MAAK,YAAY;AAElC,kBAAM,SAAS,WAAW;AAAA,cACxB;AAAA,cACA,SAAS;AAAA,YACV,GACAC,SAAQ,WAAW,cAAc,QAAQ;AAAA,cACxC,iBAAiB;AAAA,YAClB,CAAC,GACD,QAAQ,WAAW;AAAA,cAClB;AAAA,cACA,SAAS;AAAA,YACV,GACA,OAAO,WAAW,eAAe,OAAO;AAAA,cACvC,iBAAiB;AAAA,YAClB,CAAC;AAEF,gBAAI,SAAS,kBAAkB,QAAQA,MAAK,GAAG;AAC9C,kBAAI,0BAA0B;AAC7B,oBACC,CAAC,WAAW,eAAe,QAAQA,MAAK,KACxC,SAAS,kBAAkB,QAAQA,MAAK,GACvC;AACD,+CAA6BD,OAAM,MAAM;AAAA,gBAC1C;AAAA,cACD,OAAO;AACN,oBAAI,WAAW,eAAe,QAAQC,MAAK,GAAG;AAC7C,yCAAuBD,OAAM,QAAQC,MAAK;AAAA,gBAC3C;AAAA,cACD;AAAA,YACD;AAEA,gBAAI,SAAS,kBAAkB,MAAM,KAAK,GAAG;AAC5C,kBAAI,0BAA0B;AAC7B,oBACC,CAAC,WAAW,eAAe,MAAM,KAAK,KACtC,SAAS,kBAAkB,MAAM,KAAK,GACrC;AACD,4CAA0BD,OAAM,KAAK;AAAA,gBACtC;AAAA,cACD,OAAO;AACN,oBAAI,WAAW,eAAe,MAAM,KAAK,GAAG;AAC3C,sCAAoBA,OAAM,OAAO,IAAI;AAAA,gBACtC;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAMA,cAAM,YAAY;AAAA,UACjB,UAAU,aAAa,KAAK;AAAA,UAC5B,kBAAkB,aAAa,UAAU;AAAA,QAC1C;AAEA,YAAI,wBAAwB;AAC3B,oBAAU,mBAAmB,UAAU,qBACtC,UAAU;AAAA,QACZ;AAEA,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA;;;AC1PA;AAAA,uDAAAE,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AACjB,QAAM,EAAE,eAAe,IAAI;AAC3B,QAAM,EAAE,sBAAsB,IAAI;AAWlC,aAAS,mBAAmBC,OAAM;AACjC,aACCA,MAAK,SAAS,wBACdA,MAAK,UACLA,MAAK,OAAO,SAAS,sBACrBA,MAAK,OAAO,SAAS;AAAA,IAEvB;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,6BAA6B;AAAA,gBAC5B,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,EAAE,6BAA6B,MAAM,CAAC;AAAA,QAEvD,UAAU;AAAA,UACT,eAAe;AAAA,UACf,oBAAoB;AAAA,UACpB,uBAAuB;AAAA,QACxB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,4BAA4B,CAAC,IAAI,QAAQ;AAClD,YAAI,WAAW;AAQf,iBAAS,iBAAiBC,OAAM;AAC/B,cAAI,KAAK;AAMT,cACC,CAAC,SAAS,kBACV,CAAC,sBAAsB,SAAS,eAAe,KAC/C,SAAS,iBAAiBA,KAAI,KAC9B,mBAAmBA,KAAI,GACtB;AACD;AAAA,UACD;AAGA,cAAIA,MAAK,SAAS,WAAW;AAE5B,kBAAM,EAAE,MAAM,GAAG,QAAQ,EAAE;AAC3B,mBAAO;AAAA,UACR,WAAWA,MAAK,SAAS,2BAA2B;AAEnD,kBAAM,QAAQ,WAAW;AAAA,cACxBA,MAAK;AAAA,cACL,SAAS;AAAA,YACV,EAAE;AAAA,UACH,WACCA,MAAK,OAAO,SAAS,sBACpBA,MAAK,OAAO,SAAS,cAAcA,MAAK,OAAO,QAC/C;AAED,kBAAMA,MAAK,OAAO,IAAI;AAAA,UACvB,OAAO;AAEN,mBAAOA,MAAK,MAAM,QAAQ,WAAW,cAAcA,KAAI,GAAG;AAAA,UAC3D;AAEA,cAAI,CAAC,MAAM;AACV,mBAAO,SAAS,wBAAwBA,KAAI;AAAA,UAC7C;AAGA,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA;AAAA,YACA,WAAW;AAAA,YACX,MAAM,EAAE,KAAK;AAAA,UACd,CAAC;AAAA,QACF;AAEA,eAAO;AAAA;AAAA,UAEN,gBAAgB,UAAUA,OAAM;AAC/B,uBAAW;AAAA,cACV,OAAO;AAAA,cACP;AAAA,cACA,WAAW;AAAA,cACX,gBAAgB;AAAA,cAChB,WAAW;AAAA,cACX,MAAAA;AAAA,cACA,iBAAiB,oBAAI,IAAI;AAAA,YAC1B;AAAA,UACD;AAAA,UACA,gBAAgB;AACf,uBAAW,SAAS;AAAA,UACrB;AAAA,UAEA,kCAAkC,SAAS;AAC1C,qBAAS,gBAAgB,IAAI,OAAO;AAAA,UACrC;AAAA,UAEA,gCAAgC,SAAS;AACxC,qBAAS,gBAAgB,OAAO,OAAO;AAAA,UACxC;AAAA,UAEA,uBAAuB,SAAS;AAC/B,qBAAS,gBAAgB,IAAI,OAAO;AAAA,UACrC;AAAA,UAEA,qBAAqB,SAAS;AAC7B,qBAAS,gBAAgB,OAAO,OAAO;AAAA,UACxC;AAAA;AAAA,UAGA,gBAAgBA,OAAM;AACrB,kBAAM,WAAWA,MAAK;AACtB,gBAAI,iBAAiB,QAAQ,QAAQ;AAErC,gBAAI,+BAA+B,gBAAgB;AAClD,+BACC,CAAC,SAAS,aAAa,UAAU,WAAW,KAC5C,SAAS,aAAa;AAAA,YACxB;AAEA,gBAAI,CAAC,SAAS,WAAW;AACxB,uBAAS,YAAY;AACrB,uBAAS,iBAAiB;AAC1B,uBAAS,YAAY,iBAClB,uBACA;AACH,uBAAS,OAAO;AAAA,gBACf,MACC,SAAS,KAAK,SAAS,YACpB,YACA;AAAA,kBACA,SAAS;AAAA,oBACR,SAAS;AAAA,kBACV;AAAA,gBACD;AAAA,cACJ;AAAA,YACD,WAAW,SAAS,mBAAmB,gBAAgB;AACtD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW,SAAS;AAAA,gBACpB,MAAM,SAAS;AAAA,cAChB,CAAC;AAAA,YACF;AAAA,UACD;AAAA;AAAA,UAGA,gBAAgB;AAAA,UAChB,4BAA4B;AAAA,UAC5B,2BAA2B;AAAA,UAC3B,gCAAgC;AAAA,QACjC;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC9MA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAWA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,YACN,MAAM;AAAA,YACN,WAAW;AAAA,UACZ;AAAA,UACA,aAAa;AAAA,QACd;AAAA,QAEA,gBAAgB,CAAC,MAAM;AAAA,QAEvB,UAAU;AAAA,UACT,wBACC;AAAA,UACD,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,UAAU,QAAQ;AACxB,cAAM,aAAa,QAAQ;AAS3B,iBAAS,oBAAoBC,OAAM,MAAM;AACxC,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW;AAAA,YACX,MAAM,EAAE,KAAK;AAAA,UACd,CAAC;AAAA,QACF;AAUA,iBAAS,gBAAgBA,OAAM,MAAMC,QAAO;AAC3C,gBAAM,SAASA,OAAM,SAAS;AAE9B,cAAI,QAAQ,SAAS,IAAI,GAAG;AAC3B,gBAAI,CAAC,UAAWD,MAAK,YAAYA,MAAK,aAAa,KAAM;AACxD,kCAAoBA,OAAM,IAAI;AAAA,YAC/B;AAAA,UACD,WAAW,QAAQ;AAClB,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM,EAAE,KAAK;AAAA,YACd,CAAC;AAAA,UACF;AAAA,QACD;AAUA,iBAAS,iBAAiB,OAAO,OAAO;AACvC,gBAAM,WAAW,MAAM,IAAI,IAAI,KAAK;AAEpC,cAAI,CAAC,UAAU;AACd;AAAA,UACD;AAEA,cACC,SAAS,KAAK;AAAA,YACb,SACC,IAAI,KAAK,SAAS,wBAClB,IAAI,KAAK,SAAS;AAAA,UACpB,GACC;AACD;AAAA,UACD;AAMA,cACC,CAAC,SAAS,WAAW,KAAK,eAAa;AACtC,kBAAM,QAAQ,UAAU;AAExB,mBACC,UAAU,SAAS,SACnB,SACA,MAAM,SAAS,oBACf,MAAM,OAAO,aAAa;AAAA,UAE5B,CAAC,GACA;AACD,qBAAS,KACP,IAAI,SAAO,IAAI,IAAI,EACnB,QAAQ,CAAAA,UAAQ;AAChB,kCAAoBA,OAAM,KAAK;AAAA,YAChC,CAAC;AAAA,UACH;AAAA,QACD;AAOA,iBAAS,kBAAkBA,OAAM;AAChC,gBAAM,QAAQ,WAAW,SAASA,KAAI;AAGtC,gBAAM,aACLA,MAAK,SAAS,aAAaA,MAAK,eAAe,WAC5C,MAAM,YAAY,CAAC,IACnB;AAEJ,kBAAQ,QAAQ,WAAS;AACxB,6BAAiB,OAAO,KAAK;AAE7B,gBAAI,YAAY;AACf,+BAAiB,OAAO,UAAU;AAAA,YACnC;AAAA,UACD,CAAC;AAAA,QACF;AAEA,eAAO;AAAA,UACN,gBAAgB;AAAA,UAChB,2BAA2B;AAAA,UAC3B,4BAA4B;AAAA,UAE5B,mBAAmBA,OAAM;AACxB,kBAAM,KAAKA,MAAK;AAChB,kBAAM,kBACL,GAAG,SAAS,kBAAkB,GAAG,SAAS;AAE3C,gBAAIA,MAAK,SAAS,QAAQ,CAAC,iBAAiB;AAC3C,8BAAgBA,OAAM,GAAG,MAAMA,MAAK,IAAI;AAAA,YACzC;AAAA,UACD;AAAA,UAEA,qBAAqBA,OAAM;AAC1B,gBAAIA,MAAK,KAAK,SAAS,cAAc;AACpC,8BAAgBA,OAAMA,MAAK,KAAK,MAAMA,MAAK,KAAK;AAAA,YACjD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClLA;AAAA,uDAAAE,UAAAC,SAAA;AAAA;AAkBA,aAAS,sBAAsBC,OAAM;AACpC,aACCA,MAAK,SAAS,wBACdA,MAAK,OAAO,SAAS,sBACrBA,MAAK,OAAO,SAAS;AAAA,IAEvB;AAOA,aAAS,sBAAsBA,OAAM;AACpC,UAAI,CAACA,OAAM;AACV,eAAO;AAAA,MACR;AAEA,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QAER,KAAK;AACJ,iBAAOA,MAAK,SAAS;AAAA,QAEtB,KAAK;AACJ,cAAI,CAAC,KAAK,KAAK,EAAE,SAASA,MAAK,QAAQ,GAAG;AACzC,mBAAO,sBAAsBA,MAAK,KAAK;AAAA,UACxC;AAEA,cAAI,CAAC,OAAO,KAAK,EAAE,SAASA,MAAK,QAAQ,GAAG;AAC3C,mBACC,sBAAsBA,MAAK,IAAI,KAC/B,sBAAsBA,MAAK,KAAK;AAAA,UAElC;AAOA,iBAAO;AAAA,QAER,KAAK;AAOJ,cAAIA,MAAK,aAAa,MAAM;AAC3B,mBAAO,sBAAsBA,MAAK,KAAK;AAAA,UACxC;AAEA,iBACC,sBAAsBA,MAAK,IAAI,KAC/B,sBAAsBA,MAAK,KAAK;AAAA,QAGlC,KAAK;AACJ,iBACC,sBAAsBA,MAAK,SAAS,KACpC,sBAAsBA,MAAK,UAAU;AAAA,QAGvC,KAAK,sBAAsB;AAC1B,gBAAM,iBAAiBA,MAAK,YAAY,GAAG,EAAE;AAE7C,iBAAO,sBAAsB,cAAc;AAAA,QAC5C;AAAA,QAEA;AACC,iBAAO;AAAA,MACT;AAAA,IACD;AAKA,QAAM,cAAN,MAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKjB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMrB,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMpB,aAAa,CAAC;AAAA,IACf;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,aAAa;AAAA,UACb,YAAY;AAAA,UAEZ,WAAW;AAAA,UACX,UACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAUf,YAAI,WAAW;AAKf,cAAM,aAAa,uBAAO,OAAO,IAAI;AAOrC,iBAAS,mBAAmB,SAAS;AACpC,iBACC,QAAQ,aAAa,WAAW,QAAQ,EAAE,EAAE;AAAA,QAE9C;AAOA,iBAAS,mBAAmB,SAAS;AACpC,iBAAO,CAAC,CAAC,WAAW,QAAQ,EAAE;AAAA,QAC/B;AAOA,iBAAS,oBAAoB,SAAS;AACrC,iBACC,QAAQ,aAAa,WAAW,QAAQ,EAAE,EAAE;AAAA,QAE9C;AAEA,eAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAON,gBAAgB,UAAUC,OAAM;AAC/B,gBAAI,sBAAsBA,KAAI,GAAG;AAEhC,oBAAM,YAAYA,MAAK,OAAO,OAAO;AACrC,oBAAM,aAAa,UAAU;AAE7B,yBAAW;AAAA,gBACV,OAAO;AAAA,gBACP,eAAe;AAAA,gBACf,YAAY,QAAQ,UAAU;AAAA,gBAC9B,oBAAoB,sBAAsB,UAAU;AAAA,gBACpD;AAAA,gBACA,iBAAiB,oBAAI,IAAI;AAAA,cAC1B;AAAA,YACD,OAAO;AACN,yBAAW;AAAA,gBACV,OAAO;AAAA,gBACP,eAAe;AAAA,gBACf,YAAY;AAAA,gBACZ,oBAAoB;AAAA,gBACpB;AAAA,gBACA,iBAAiB,oBAAI,IAAI;AAAA,cAC1B;AAAA,YACD;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASA,cAAc,UAAUA,OAAM;AAC7B,kBAAM,aAAa,SAAS;AAG5B,uBAAW,SAAS;AAEpB,gBAAI,CAAC,YAAY;AAChB;AAAA,YACD;AAGA,kBAAM,mBAAmB,SAAS;AAClC,kBAAM,qBACL,iBAAiB,MAAM,mBAAmB;AAC3C,kBAAM,oBACL,iBAAiB,KAAK,kBAAkB;AAEzC,gBAAI,CAAC,oBAAoB;AACxB,sBAAQ,OAAO;AAAA,gBACd,WAAW,oBACR,gBACA;AAAA,gBACH,MAAMA,MAAK;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,uBAAuB,SAASA,OAAM;AACrC,qBAAS,gBAAgB,IAAI,OAAO;AAEpC,gBAAI,EAAE,SAAS,iBAAiB,SAAS,aAAa;AACrD;AAAA,YACD;AAGA,kBAAM,OAAQ,WAAW,QAAQ,EAAE,IAAI,IAAI,YAAY;AAEvD,kBAAM,mBACL,QAAQ,aAAa,OAAO,kBAAkB;AAG/C,gBAAI,iBAAiB,SAAS,GAAG;AAChC,mBAAK,oBACJ,iBAAiB,KAAK,kBAAkB;AACzC,mBAAK,qBACJ,iBAAiB,MAAM,mBAAmB;AAAA,YAC5C;AASA,gBACCA,MAAK,UACLA,MAAK,OAAO,SAAS,kBACrBA,MAAK,OAAO,WAAWA,OACtB;AACD,mBAAK,qBAAqB;AAAA,YAC3B;AAAA,UACD;AAAA,UAEA,kCAAkC,SAAS;AAC1C,qBAAS,gBAAgB,IAAI,OAAO;AAAA,UACrC;AAAA,UAEA,gCAAgC,SAAS;AACxC,qBAAS,gBAAgB,OAAO,OAAO;AAAA,UACxC;AAAA,UAEA,qBAAqB,SAAS;AAC7B,qBAAS,gBAAgB,OAAO,OAAO;AAAA,UACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWA,sBAAsB,aAAa,WAAW;AAC7C,gBAAI,EAAE,SAAS,iBAAiB,SAAS,aAAa;AACrD;AAAA,YACD;AAEA,qBAAS,SAAS;AAAA,cACjB,EAAE,OAAO,WAAW,MAAM,YAAY;AAAA,cACtC,CAAC,SAAS,eAAe;AACxB,sBAAM,OAAO,WAAW,QAAQ,EAAE;AAGlC,oBAAI,CAAC,MAAM;AACV,6BAAW,KAAK;AAChB;AAAA,gBACD;AAEA,sBAAM,mBACL,QAAQ,aAAa,OAAO,kBAAkB;AAC/C,sBAAM,4BACL,iBAAiB,KAAK,kBAAkB;AACzC,sBAAM,6BACL,iBAAiB,MAAM,mBAAmB;AAE3C,qBAAK,sBAAsB;AAC3B,qBAAK,uBAAuB;AAG5B,oBAAI,2BAA2B;AAC9B,wBAAM,QAAQ,KAAK;AAEnB,uBAAK,aAAa,CAAC;AAEnB,2BAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;AACtC,0BAAMA,QAAO,MAAM,CAAC;AAEpB,4BAAQ,OAAO;AAAA,sBACd,WAAW;AAAA,sBACX,MAAAA;AAAA,oBACD,CAAC;AAAA,kBACF;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,sBAAsBA,OAAM;AAC3B,gBAAI,EAAE,SAAS,iBAAiB,SAAS,aAAa;AACrD;AAAA,YACD;AAGA,gBAAIA,MAAK,OAAO,SAAS,SAAS;AACjC;AAAA,YACD;AAGA,kBAAM,WAAW,SAAS;AAC1B,gBAAI,YAAY;AAChB,gBAAI,OAAO;AAEX,uBAAW,WAAW,UAAU;AAC/B,kBAAI,QAAQ,WAAW;AACtB,uBAAO,WAAW,QAAQ,EAAE;AAE5B,4BAAY,aAAa,KAAK;AAC9B,qBAAK,oBAAoB,KAAK,qBAAqB;AAAA,cACpD;AAAA,YACD;AAEA,gBAAI,MAAM;AACT,kBAAI,WAAW;AACd,wBAAQ,OAAO;AAAA,kBACd,WAAW;AAAA,kBACX,MAAAA;AAAA,gBACD,CAAC;AAAA,cACF,WAAW,CAAC,SAAS,oBAAoB;AACxC,wBAAQ,OAAO;AAAA,kBACd,WAAW;AAAA,kBACX,MAAAA;AAAA,gBACD,CAAC;AAAA,cACF,OAAO;AACN,qBAAK,WAAW,KAAKA,KAAI;AAAA,cAC1B;AAAA,YACD;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,gBAAgBA,OAAM;AACrB,gBAAI,EAAE,SAAS,iBAAiB,SAAS,aAAa;AACrD;AAAA,YACD;AAGA,gBAAI,CAACA,MAAK,UAAU;AACnB;AAAA,YACD;AAGA,kBAAM,WAAW,SAAS;AAE1B,uBAAW,WAAW,UAAU;AAC/B,kBAAI,QAAQ,WAAW;AACtB,sBAAM,OAAO,WAAW,QAAQ,EAAE;AAElC,qBAAK,oBAAoB,KAAK,qBAAqB;AAAA,cACpD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpcA;AAAA,2CAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP,OAAO;AAAA,YACN;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,KAAK;AAAA,gBACb;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,SAAS,cAAc,eAAe;AAAA,gBAC9C;AAAA,gBACA;AAAA,kBACC,MAAM,CAAC,YAAY;AAAA,gBACpB;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,UACD;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,KAAK;AAAA,QAEtB,SAAS;AAAA,QAET,UAAU;AAAA,UACT,mBAAmB;AAAA,UACnB,4BACC;AAAA,UACD,sBAAsB;AAAA,UACtB,+BACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,YAAY,QAAQ,QAAQ,CAAC,MAAM;AACzC,cAAM,YAAY,QAAQ,QAAQ,CAAC,MAAM;AACzC,cAAM,cAAc,QAAQ,QAAQ,CAAC,MAAM;AAC3C,cAAM,aAAa,QAAQ,QAAQ,CAAC,MAAM;AAE1C,cAAM,aAAa,QAAQ;AAY3B,iBAAS,oBAAoBC,OAAM;AAClC,gBAAM,SAAS,WAAW,eAAeA,KAAI;AAC7C,gBAAM,OAAO,WAAW,aAAaA,KAAI;AACzC,gBAAM,yBAAyB,SAAS,iBAAiB,IAAI,IAC1D,WAAW,eAAe,IAAI,IAC9B;AAEH,iBACC,OAAO,IAAI,MAAM,SAAS,uBAAuB,IAAI,IAAI;AAAA,QAE3D;AAQA,iBAAS,WAAWA,OAAM;AACzB,cAAIA,MAAK,SAAS,kBAAkB;AACnC,mBAAO;AAAA,UACR;AAEA,gBAAMC,SAAQ,WAAW,cAAcD,KAAI;AAC3C,gBAAM,OAAO,WAAW,aAAaA,KAAI;AACzC,gBAAM,yBAAyB,SAAS,iBAAiB,IAAI,IAC1D,WAAW,eAAe,IAAI,IAC9B;AAEH,iBAAOC,OAAM,IAAI,MAAM,SAAS,uBAAuB,IAAI,IAAI;AAAA,QAChE;AAOA,iBAAS,eAAe,gBAAgB;AACvC,gBAAM,cAAc,WAAW,eAAe,cAAc;AAC5D,gBAAM,aAAa,WAAW,cAAc,cAAc;AAC1D,gBAAM,gBAAgB,WAAW;AAAA,YAChC,YAAY,MAAM,CAAC;AAAA,UACpB;AAEA,cAAI,SAAS,iBAAiB,WAAW,GAAG;AAE3C,mBAAO;AAAA,UACR;AAEA,cAAI,CAAC,YAAY;AAEhB,mBAAO;AAAA,UACR;AAEA,cACC,cAAc,SAAS,oBACvB,cAAc,OAAO,SAAS,wBAC9B,cAAc,OAAO,SAAS,2BAC7B;AAMD,mBAAO;AAAA,UACR;AAEA,cAAI,YAAY,IAAI,IAAI,SAAS,WAAW,IAAI,MAAM,MAAM;AAE3D,mBAAO;AAAA,UACR;AAEA,cAAI,aAAa,KAAK,WAAW,KAAK,GAAG;AAExC,mBAAO;AAAA,UACR;AAEA,cACC,YAAY,SAAS,iBACpB,YAAY,UAAU,QAAQ,YAAY,UAAU,OACpD;AAED,mBAAO;AAAA,UACR;AAGA,iBAAO;AAAA,QACR;AAgBA,iBAAS,aAAaD,OAAM,MAAM,MAAM,MAAM;AAC7C,gBAAM,WAAW,KAAK,SAAS;AAC/B,cAAI,WAAW;AAEf,cACC,aACC,KAAK,KAAK,WAAW,KACrB,SAAS,mBAAmB,MAAM,UAAU,IAC5C;AACD,uBAAW;AAAA,UACZ,WAAW,WAAW;AACrB,uBAAW;AAAA,UACZ,WAAW,WAAW;AACrB,gBAAI,CAAC,oBAAoB,IAAI,GAAG;AAC/B,yBAAW;AAAA,YACZ;AAAA,UAGD,WAAW,aAAa;AACvB,gBAAI,UAAU;AACb,oBAAM,YAAY,KAAK,KAAK,CAAC;AAC7B,oBAAM,yBACL,WAAW,kBAAkB,SAAS;AAEvC,yBACC,CAAC,WAAW,SAAS,KACrB,uBAAuB,SAAS;AAAA,YAClC,OAAO;AACN,yBAAW,CAAC,WAAW,IAAI;AAAA,YAC5B;AAAA,UACD,OAAO;AAEN,uBAAW;AAAA,UACZ;AAEA,iBAAO;AAAA,YACN,QAAQ;AAAA,YACR;AAAA,YACA,QAAQ;AACP,kBACC,KAAK,aAAa,QAClB,KAAK,aAAa,KAAK,QACtB;AACD,oBAAI,KAAK,UAAU;AAClB,0BAAQ,OAAO;AAAA,oBACd,MAAAA;AAAA,oBACA,KAAK,KAAK;AAAA,oBACV,WACC,QAAQ,KAAK,YACV,+BACA;AAAA,oBACJ,MAAM;AAAA,sBACL;AAAA,oBACD;AAAA,oBACA,KAAK,WACJ,MAAM;AAAA,sBACL;AAAA,sBACA,IAAI,WAAW,QAAQ,IAAI,CAAC;AAAA,oBAC7B;AAAA,kBACF,CAAC;AAAA,gBACF,OAAO;AACN,0BAAQ,OAAO;AAAA,oBACd,MAAAA;AAAA,oBACA,KAAK,KAAK;AAAA,oBACV,WACC,QAAQ,KAAK,YACV,kCACA;AAAA,oBACJ,MAAM;AAAA,sBACL;AAAA,oBACD;AAAA,oBACA,IAAI,OAAO;AAKV,4BAAM,sBACLA,MAAK,SAAS,sBACd,WAAW,eAAe,IAAI,EAC5B,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,KAC3B,CAAC,SAAS;AAAA,wBACT;AAAA,wBACA,WAAW,cAAc,MAAM;AAAA,0BAC9B,MAAM;AAAA,wBACP,CAAC;AAAA,sBACF;AAED,4BAAM,iBACL,WAAW,cAAc,IAAI;AAC9B,4BAAM,iBACL,WAAW,aAAa,IAAI;AAC7B,4BAAM,mBACL,WAAW;AAAA,wBACV;AAAA,sBACD;AAED,0BAAI,eAAe,cAAc,GAAG;AAKnC,+BAAO;AAAA,sBACR;AAEA,4BAAM,oBACL,WACE,QAAQ,EACR;AAAA,wBACA,eAAe,MAAM,CAAC;AAAA,wBACtB,iBAAiB,MAAM,CAAC;AAAA,sBACzB,IACD,WAAW,QAAQ,gBAAgB,IACnC,WACE,QAAQ,EACR;AAAA,wBACA,iBAAiB,MAAM,CAAC;AAAA,wBACxB,eAAe,MAAM,CAAC;AAAA,sBACvB;AAEF,6BAAO,MAAM;AAAA,wBACZ;AAAA,yBACC,sBAAsB,MAAM,MAC5B;AAAA,sBACF;AAAA,oBACD;AAAA,kBACD,CAAC;AAAA,gBACF;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAQA,iBAAS,gBAAgBA,OAAM;AAC9B,gBAAM,iBAAiB,CAAC;AAExB,mBACK,cAAcA,OAClB,aACA,cAAc,YAAY,WACzB;AACD,2BAAe;AAAA,cACd,aAAa,aAAa,YAAY,YAAY,MAAM;AAAA,gBACvD,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AACA,gBACC,YAAY,aACZ,YAAY,UAAU,SAAS,eAC9B;AACD,6BAAe;AAAA,gBACd;AAAA,kBACC;AAAA,kBACA,YAAY;AAAA,kBACZ;AAAA,gBACD;AAAA,cACD;AACA;AAAA,YACD;AAAA,UACD;AAEA,cAAI,YAAY;AAMf,kBAAM,WAAW,eAAe,KAAK,mBAAiB;AACrD,kBAAI,cAAc,aAAa,MAAM;AACpC,uBAAO,cAAc;AAAA,cACtB;AACA,qBAAO,cAAc;AAAA,YACtB,CAAC;AAED,2BAAe,QAAQ,mBAAiB;AACvC,4BAAc,WAAW;AAAA,YAC1B,CAAC;AAAA,UACF;AAEA,iBAAO;AAAA,QACR;AAMA,eAAO;AAAA,UACN,YAAYA,OAAM;AACjB,kBAAM,SAASA,MAAK;AACpB,kBAAM,WACL,OAAO,SAAS,iBAAiB,OAAO,cAAcA;AAEvD,gBAAI,CAAC,UAAU;AAEd,8BAAgBA,KAAI,EAAE,QAAQ,mBAAiB;AAC9C,8BAAc,MAAM;AAAA,cACrB,CAAC;AAAA,YACF;AAAA,UAGD;AAAA,UAEA,eAAeA,OAAM;AACpB,yBAAaA,OAAMA,MAAK,MAAM,SAAS;AAAA,cACtC,WAAW;AAAA,YACZ,CAAC,EAAE,MAAM;AAAA,UACV;AAAA,UAEA,iBAAiBA,OAAM;AACtB,yBAAaA,OAAMA,MAAK,MAAM,IAAI,EAAE,MAAM;AAAA,UAC3C;AAAA,UAEA,aAAaA,OAAM;AAClB,yBAAaA,OAAMA,MAAK,MAAM,OAAO;AAAA,cACpC,WAAW;AAAA,YACZ,CAAC,EAAE,MAAM;AAAA,UACV;AAAA,UAEA,eAAeA,OAAM;AACpB,yBAAaA,OAAMA,MAAK,MAAM,QAAQ,EAAE,MAAM;AAAA,UAC/C;AAAA,UAEA,eAAeA,OAAM;AACpB,yBAAaA,OAAMA,MAAK,MAAM,QAAQ,EAAE,MAAM;AAAA,UAC/C;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxaA;AAAA,kDAAAE,UAAAC,SAAA;AAAA;AAMA,QAAM,0BAA0B;AAOhC,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,CAAC,CAAC;AAAA,QAEnB,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,gBAAgB;AAAA,gBACf,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,oBAAoB;AAAA,QACrB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,OAAO,IAAI,QAAQ;AAC1B,cAAM,iBAAiB,QAAQ,iBAC5B,IAAI,OAAO,QAAQ,gBAAgB,GAAG,IACtC;AAEH,cAAM,aAAa,QAAQ;AAW3B,iBAAS,KAAK,YAAY;AACzB,iBAAO,WAAW,GAAG,EAAE;AAAA,QACxB;AAMA,eAAO;AAAA,UACN,gBAAgBC,OAAM;AACrB,gBAAI,CAACA,MAAK,MAAM,QAAQ;AAKvB;AAAA,YACD;AAEA,kBAAM,aAAaA,MAAK,MAAM,KAAK,OAAK,EAAE,SAAS,IAAI;AAEvD,gBAAI,CAAC,YAAY;AAChB,kBAAI;AAEJ,oBAAM,WAAW,KAAKA,MAAK,KAAK;AAChC,oBAAM,WAAW,WAAW,iBAAiB,QAAQ;AAErD,kBAAI,SAAS,QAAQ;AACpB,0BAAU,KAAK,QAAQ;AAAA,cACxB;AAEA,kBACC,CAAC,WACD,CAAC,eAAe,KAAK,QAAQ,MAAM,KAAK,CAAC,GACxC;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,gBACZ,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACtGA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,SAAS;AAAA,QACV;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,gBAAgBC,OAAM;AACrB,kBAAM,QAAQA,MAAK,OAClB,iBAAiB,MAAM,UAAU,OAAK,EAAE,SAAS,IAAI;AAEtD,gBACC,mBAAmB,MACnB,mBAAmB,MAAM,SAAS,GACjC;AACD,oBAAM,gBAAgB,MAAM,cAAc;AAE1C,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClDA;AAAA,wDAAAC,UAAAC,SAAA;AAAA;AAYA,aAAS,oBAAoBC,OAAM;AAClC,aAAO,EACNA,MAAK,SAAS,uBACdA,MAAK,SAAS,iBACdA,MAAK;AAAA,IAEP;AAGA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,cAAc;AAAA,QACf;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAMf,iBAAS,eAAeC,OAAM;AAC7B,cAAI,2BAA2B;AAE/B,mBAAS,IAAIA,MAAK,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG;AACpD,kBAAM,UAAUA,MAAK,OAAO,CAAC;AAC7B,kBAAM,QACL,QAAQ,SAAS,wBACd,QAAQ,YACR;AAEJ,gBAAI,oBAAoB,KAAK,GAAG;AAC/B,yCAA2B;AAC3B;AAAA,YACD;AAEA,gBAAI,0BAA0B;AAC7B,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,UACpB,yBAAyB;AAAA,QAC1B;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5EA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAQA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,UAAU;AAAA,UAC5B;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QAET,UAAU;AAAA,UACT,wBACC;AAAA,UACD,2BACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,SAAS,QAAQ,QAAQ,CAAC;AAGhC,cAAM,WAAW,WAAW,YAAY,CAAC;AAEzC,cAAM,aAAa,QAAQ;AAO3B,iBAAS,iBAAiBC,OAAM;AAC/B,gBAAM,WAAWA,MAAK;AACtB,gBAAM,WAAW,WAAW,eAAe,QAAQ;AAEnD,cAAI,UAAU;AAEb,kBAAM,iBAAiB,WAAW,eAAe,QAAQ;AAEzD,gBAAI,CAAC,SAAS,kBAAkB,gBAAgB,QAAQ,GAAG;AAC1D,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK,SAAS;AAAA,gBACd,WAAW;AAAA,gBACX,CAAC,IAAI,OAAO;AACX,sBACC,SAAS,MAAM,WAAW,GAAG,KAC7B,SAAS;AAAA,oBACR;AAAA,kBACD,GACC;AACD,0BAAM,MAAM;AAAA,sBACX;AAAA,sBACA,IAAI,SAAS,KAAK;AAAA,oBACnB;AAAA,kBACD,OAAO;AACN,0BAAM,MAAM;AAAA,sBACX;AAAA,sBACA,SAAS;AAAA,oBACV;AAAA,kBACD;AACA,wBAAM,MAAM,OAAO,QAAQ;AAAA,gBAC5B;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD,WAAW,CAAC,SAAS,kBAAkB,UAAU,QAAQ,GAAG;AAC3D,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,SAAS;AAAA,cACd,WAAW;AAAA,cACX,CAAC,IAAI,OAAO;AACX,sBAAM,MAAM,OAAO,QAAQ;AAC3B,sBAAM,MAAM,iBAAiB,UAAU,SAAS,KAAK;AAAA,cACtD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,UAAUA,OAAM;AACxB,cAAI,CAACA,MAAK,UAAU;AACnB,6BAAiBA,KAAI;AAAA,UACtB;AAAA,QACD;AAEA,eAAO;AAAA,UACN,kBAAkB;AAAA,QACnB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzIA;AAAA,oDAAAC,UAAAC,SAAA;AAAA;AAMA,IAAAA,QAAO,UAAU;AAAA,MAChB;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,IACD;AAAA;AAAA;;;AClEA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AACjB,QAAM,WAAW;AAMjB,QAAM,kBAAkB;AAGxB,QAAM,sBAAsB,oBAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAGzD,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,eAAe;AAAA,YACf,cAAc;AAAA,UACf;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,eAAe;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,cACA,cAAc;AAAA,gBACb,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QAET,UAAU;AAAA,UACT,QAAQ;AAAA,UACR,aAAa;AAAA,QACd;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,OAAO,IAAI,QAAQ;AAC1B,cAAM,gBAAgB,QAAQ;AAC9B,cAAM,aAAa,QAAQ;AAE3B,YAAI;AAEJ,YAAI,QAAQ,cAAc;AACzB,yBAAe,IAAI,OAAO,QAAQ,cAAc,GAAG;AAAA,QACpD;AAQA,iBAAS,sBAAsBC,OAAMC,QAAO;AAC3C,cACC,gBAAgB,KAAKA,MAAK,MACzB,iBAAiB,CAAC,SAAS,SAAS,OAAOA,MAAK,CAAC,MAClD,EAAE,gBAAgB,aAAa,KAAKA,MAAK,IACxC;AACD,kBAAM,iBACLD,MAAK,SAAS,SAAS,YACpB,KAAK,UAAUC,MAAK,IACpB,KAAKA,MAAK;AAEd,oBAAQ,OAAO;AAAA,cACd,MAAMD,MAAK;AAAA,cACX,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,KAAK;AAAA,cACN;AAAA,cACA,CAAC,IAAI,OAAO;AACX,sBAAM,cAAc,WAAW;AAAA,kBAC9BA,MAAK;AAAA,kBACL,SAAS;AAAA,gBACV;AACA,sBAAM,eAAe,WAAW,aAAaA,KAAI;AACjD,sBAAM,YAAY,WAAW,cAAcA,KAAI;AAG/C,oBACC,WAAW;AAAA,kBACV;AAAA,kBACA;AAAA,gBACD,GACC;AACD;AAAA,gBACD;AAGA,oBAAI,CAACA,MAAK,UAAU;AACnB,wBAAM,MAAM;AAAA,oBACX;AAAA,oBACA,SAAS,iBAAiBA,MAAK,MAAM,IAClC,OACA;AAAA,kBACJ;AAAA,gBACD;AACA,sBAAM,MAAM;AAAA,kBACX,CAAC,YAAY,MAAM,CAAC,GAAG,aAAa,MAAM,CAAC,CAAC;AAAA,kBAC5C,OAAOC,MAAK;AAAA,gBACb;AAGA,oBACC,aACA,aAAa,MAAM,CAAC,MAAM,UAAU,MAAM,CAAC,KAC3C,CAAC,SAAS;AAAA,kBACT,OAAOA,MAAK;AAAA,kBACZ;AAAA,gBACD,GACC;AACD,wBAAM,MAAM,gBAAgBD,OAAM,GAAG;AAAA,gBACtC;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,iBAAiBA,OAAM;AACtB,gBACCA,MAAK,YACLA,MAAK,SAAS,SAAS,cACtB,oBAAoB,IAAI,OAAOA,MAAK,SAAS,KAAK,KAClD,SAAS,cAAcA,MAAK,QAAQ,IACpC;AACD,oCAAsBA,OAAMA,MAAK,SAAS,KAAK;AAAA,YAChD;AACA,gBACCA,MAAK,YACL,SAAS,wBAAwBA,MAAK,QAAQ,GAC7C;AACD;AAAA,gBACCA;AAAA,gBACAA,MAAK,SAAS,OAAO,CAAC,EAAE,MAAM;AAAA,cAC/B;AAAA,YACD;AACA,gBACC,CAAC,iBACD,CAACA,MAAK,YACNA,MAAK,SAAS,SAAS,gBACvB,SAAS,SAAS,OAAOA,MAAK,SAAS,IAAI,CAAC,GAC3C;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAMA,MAAK;AAAA,gBACX,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL,KAAKA,MAAK,SAAS;AAAA,gBACpB;AAAA,gBACA,CAAC,IAAI,OAAO;AACX,wBAAM,WAAW,WAAW;AAAA,oBAC3BA,MAAK;AAAA,kBACN;AAGA,sBACCA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS,SACrB,CAACA,MAAK,UACL;AACD;AAAA,kBACD;AAGA,sBACC,WAAW;AAAA,oBACV;AAAA,oBACAA,MAAK;AAAA,kBACN,GACC;AACD;AAAA,kBACD;AAGA,sBAAI,CAACA,MAAK,UAAU;AACnB,0BAAM,MAAM,OAAO,QAAQ;AAAA,kBAC5B;AACA,wBAAM,MAAM;AAAA,oBACXA,MAAK;AAAA,oBACL,KAAKA,MAAK,SAAS,IAAI;AAAA,kBACxB;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACvNA;AAAA,8CAAAE,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,SAAS,QAAQ,SAAS;AAAA,UAC5C;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,SAAS;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MACA,OAAO,SAAS;AAKf,eAAO;AAAA,UACN,SAAS,SAAS,YAAYC,OAAM;AACnC,kBAAM,aAAa,QAAQ,YAC1B,MAAM,WAAW,QAAQ,GACzB,WAAW,WAAW,MAAM,GAAG,EAAE,GACjC,WAAW;AAAA,cACV,QAAQ,SAAS;AAAA,cACjB,MAAM,WAAW,MAAM;AAAA,YACxB,GACA,KAAK,MACL,OAAO,KAAK,EAAE,IACd,kBAAkB,IAAI,SAAS,EAAE;AAMlC,gBAAI,CAAC,IAAI,QAAQ;AAChB;AAAA,YACD;AAEA,gBAAI,OAAO,QAAQ,QAAQ,CAAC,KAAK,UAChC,aAAa;AAEd,gBAAI,SAAS,QAAQ;AAEpB,qBAAO;AAAA,YACR;AACA,gBAAI,SAAS,WAAW;AAEvB,qBAAO;AACP,2BAAa;AAAA,YACd;AACA,gBAAI,SAAS,YAAY,CAAC,iBAAiB;AAE1C,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK;AAAA,gBACL,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,yBAAO,MAAM;AAAA,oBACZ,CAAC,GAAG,IAAI,MAAM;AAAA,oBACd,aAAa,OAAO;AAAA,kBACrB;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF,WAAW,SAAS,WAAW,iBAAiB;AAC/C,oBAAM,iBAAiB,WAAW,MAAM,GAAG,EAAE;AAG7C,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK;AAAA,kBACJ,OAAO;AAAA,oBACN,MAAM,WAAW,MAAM,SAAS;AAAA,oBAChC,QAAQ,eAAe;AAAA,kBACxB;AAAA,kBACA,KAAK,EAAE,MAAM,WAAW,MAAM,QAAQ,QAAQ,EAAE;AAAA,gBACjD;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,wBAAM,YAAY,gBACjBC,SAAQ,UAAU,KAAK,WAAW,IAAI,GACtC,QAAQA,OAAM,OACd,MAAM,WAAW,KAAK;AAEvB,yBAAO,MAAM,iBAAiB,CAAC,OAAO,GAAG,GAAG,EAAE;AAAA,gBAC/C;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACtIA;AAAA,4CAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QACN,gBAAgB;AAAA,QAEhB,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP,OAAO;AAAA,YACN;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,QAAQ;AAAA,gBAChB;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,MAAM;AAAA,sBACL,MAAM,CAAC,UAAU,SAAS,QAAQ;AAAA,oBACnC;AAAA,kBACD;AAAA,kBACA,sBAAsB;AAAA,gBACvB;AAAA,cACD;AAAA,cACA,iBAAiB;AAAA,YAClB;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,SAAS,YAAY;AAAA,gBAC7B;AAAA,cACD;AAAA,cACA,iBAAiB;AAAA,YAClB;AAAA,UACD;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,QAAQ;AAAA,QAEzB,SAAS;AAAA,QAET,UAAU;AAAA,UACT,YACC;AAAA,UACD,iBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,SAAS,QAAQ,QAAQ,CAAC;AAChC,cAAM,UAAU,QAAQ,QAAQ,CAAC,KAAK,CAAC;AACvC,cAAM,aAAa,QAAQ;AAE3B,cAAM,aACL,WAAW,WAAW,QAAQ,QAAQ,WAAW;AAClD,cAAM,qBAAqB,eAAe;AAC1C,cAAM,4BAA4B,eAAe;AAOjD,iBAAS,SAASC,OAAM;AACvB,iBACCA,MAAK,SAAS,qBAAqBA,MAAK,aAAa;AAAA,QAEvD;AAQA,iBAAS,eAAeA,OAAM;AAC7B,iBAAO,SAASA,MAAK,IAAI,KAAK,SAASA,MAAK,KAAK;AAAA,QAClD;AAQA,iBAAS,uBAAuBA,OAAM;AACrC,iBACCA,MAAK,KAAK,SAAS,aACnBA,MAAK,MAAM,SAAS,aACpB,OAAOA,MAAK,KAAK,UAAU,OAAOA,MAAK,MAAM;AAAA,QAE/C;AAQA,iBAAS,YAAYA,OAAM;AAC1B,iBACC,SAAS,cAAcA,MAAK,KAAK,KACjC,SAAS,cAAcA,MAAK,IAAI;AAAA,QAElC;AASA,iBAAS,OAAOA,OAAM,kBAAkB;AACvC,gBAAM,gBAAgB,WAAW;AAAA,YAChCA,MAAK;AAAA,YACLA,MAAK;AAAA,YACL,WAAS,MAAM,UAAUA,MAAK;AAAA,UAC/B;AAEA,gBAAM,qBAAqB;AAAA,YAC1B,MAAAA;AAAA,YACA,KAAK,cAAc;AAAA,YACnB,WAAW;AAAA,YACX,MAAM,EAAE,kBAAkB,gBAAgBA,MAAK,SAAS;AAAA,UACzD;AAEA,cAAI,eAAeA,KAAI,KAAK,uBAAuBA,KAAI,GAAG;AACzD,oBAAQ,OAAO;AAAA,cACd,GAAG;AAAA,cACH,IAAI,OAAO;AACV,uBAAO,MAAM;AAAA,kBACZ;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF,OAAO;AACN,oBAAQ,OAAO;AAAA,cACd,GAAG;AAAA,cACH,SAAS;AAAA,gBACR;AAAA,kBACC,WAAW;AAAA,kBACX,MAAM;AAAA,oBACL;AAAA,oBACA,gBAAgBA,MAAK;AAAA,kBACtB;AAAA,kBACA,KAAK,WACJ,MAAM;AAAA,oBACL;AAAA,oBACA;AAAA,kBACD;AAAA,gBACF;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,iBAAiBA,OAAM;AACtB,kBAAM,SAAS,YAAYA,KAAI;AAE/B,gBAAIA,MAAK,aAAa,QAAQA,MAAK,aAAa,MAAM;AACrD,kBAAI,6BAA6B,QAAQ;AACxC,uBAAOA,OAAMA,MAAK,SAAS,MAAM,GAAG,EAAE,CAAC;AAAA,cACxC;AACA;AAAA,YACD;AAEA,gBACC,WAAW,YACV,eAAeA,KAAI,KACnB,uBAAuBA,KAAI,KAC3B,SACA;AACD;AAAA,YACD;AAEA,gBAAI,CAAC,sBAAsB,QAAQ;AAClC;AAAA,YACD;AAEA,mBAAOA,OAAM,GAAGA,MAAK,QAAQ,GAAG;AAAA,UACjC;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnNA;AAAA,mDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,EAAE,eAAe,IAAI;AAO3B,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QACT,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,oBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,EAAE,WAAW,IAAI;AAOvB,iBAAS,OAAOC,OAAM;AACrB,kBAAQ,OAAO;AAAA,YACd,KAAK;AAAA,cACJ,OAAOA,MAAK,IAAI;AAAA,cAChB,KAAK,WAAW,eAAeA,MAAK,IAAI,EAAE,IAAI;AAAA,YAC/C;AAAA,YACA,WAAW;AAAA,UACZ,CAAC;AAAA,QACF;AAQA,iBAAS,kBAAkB,QAAQ,KAAK;AACvC,gBAAM,cAAc;AAAA,YACnB,OAAO;AAAA,YACP,WAAW,SAAS,MAAM;AAAA,UAC3B;AAEA,cACC,eACA,CAAC,UAAU,WAAW,QAAQ,EAAE;AAAA,YAC/B,OAAO,YAAY;AAAA,UACpB,GACC;AACD,kBAAM,OAAO,KAAK,KAAK,OAAO,YAAY,KAAK,CAAC,KAAK;AAErD,mBAAO,MAAM;AAAA,UACd;AACA,iBAAO;AAAA,QACR;AAQA,iBAAS,mBAAmB,QAAQ,SAAS;AAC5C,cACC,OAAO,SAAS,SAAS,gBACzB,OAAO,SAAS,SAAS,SACxB;AACD,gBAAI,OAAO,aAAa,MAAM;AAC7B,qBAAO;AAAA,YACR;AACA,gBAAI,OAAO,aAAa,MAAM;AAC7B,qBAAO;AAAA,YACR;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AAQA,iBAAS,uBAAuB,QAAQ,SAAS;AAChD,cAAI,OAAO,KAAK,SAAS,SAAS;AACjC,gBAAI,OAAO,aAAa,MAAM;AAC7B,qBAAO,kBAAkB,QAAQ,CAAC;AAAA,YACnC;AACA,gBAAI,OAAO,aAAa,MAAM;AAC7B,qBAAO,kBAAkB,QAAQ,EAAE;AAAA,YACpC;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AAOA,iBAAS,wBAAwBA,OAAM,SAAS;AAC/C,cAAIA,MAAK,SAAS,sBAAsB;AACvC,mBAAOA,MAAK,YAAY;AAAA,cAAQ,UAC/B,wBAAwB,MAAM,OAAO;AAAA,YACtC;AAAA,UACD;AACA,cACCA,MAAK,SAAS,sBACdA,MAAK,SAAS,SAAS,gBACvBA,MAAK,SAAS,SAAS,SACtB;AACD,mBAAO,CAACA,KAAI;AAAA,UACb;AACA,cACCA,MAAK,SAAS,0BACdA,MAAK,KAAK,SAAS,gBACnBA,MAAK,KAAK,SAAS,SAClB;AACD,mBAAO,CAACA,KAAI;AAAA,UACb;AACA,iBAAO,CAAC;AAAA,QACT;AAQA,iBAAS,2BAA2B,MAAM,SAAS;AAClD,cAAI,KAAK,SAAS,oBAAoB;AACrC,mBAAO,mBAAmB,MAAM,OAAO;AAAA,UACxC;AACA,cAAI,KAAK,SAAS,wBAAwB;AACzC,mBAAO,uBAAuB,MAAM,OAAO;AAAA,UAC5C;AACA,iBAAO;AAAA,QACR;AAEA,eAAO;AAAA,UACN,aAAaA,OAAM;AAClB,gBACCA,MAAK,QACLA,MAAK,KAAK,SAAS,sBACnBA,MAAK,QACJ;AACD,yBAAW,mBAAmB,CAAC,QAAQ,OAAO,GAAG;AAChD,oBAAIA,MAAK,KAAK,eAAe,EAAE,SAAS,cAAc;AACrD;AAAA,gBACD;AAEA,sBAAM,UAAUA,MAAK,KAAK,eAAe,EAAE;AAC3C,sBAAM,WAAWA,MAAK,KAAK;AAC3B,sBAAM,SAASA,MAAK;AAEpB,oBAAI;AAEJ,oBAAI,aAAa,OAAO,aAAa,MAAM;AAC1C,mCACC,oBAAoB,SAAS,KAAK;AAAA,gBACpC,WAAW,aAAa,OAAO,aAAa,MAAM;AACjD,mCACC,oBAAoB,SAAS,IAAI;AAAA,gBACnC,OAAO;AACN;AAAA,gBACD;AAEA,sBAAM,sBAAsB;AAAA,kBAC3B;AAAA,kBACA;AAAA,gBACD;AAEA,oBACC,oBAAoB,WAAW,KAC/B;AAAA,kBACC,oBAAoB,CAAC;AAAA,kBACrB;AAAA,gBACD,MAAM,gBACL;AACD,yBAAOA,KAAI;AAAA,gBACZ;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnNA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP,OAAO;AAAA,YACN;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,OAAO;AAAA,gBACf;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,QAAQ;AAAA,gBAChB;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,eAAe;AAAA,sBACd,MAAM;AAAA,oBACP;AAAA,kBACD;AAAA,kBACA,sBAAsB;AAAA,gBACvB;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,UACD;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,sBACC;AAAA,UACD,mBACC;AAAA,UACD,SAAS;AAAA,QACV;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,QAAQ,QAAQ,QAAQ,CAAC,MAAM;AACrC,cAAM,gBACL,CAAC,SAAS,QAAQ,QAAQ,CAAC,KAAK,QAAQ,QAAQ,CAAC,EAAE;AACpD,cAAM,aAAa,QAAQ;AAC3B,cAAMC,QAAO,WAAW,QAAQ;AAUhC,iBAAS,aAAaC,OAAM,WAAW,YAAY;AAClD,gBAAM,oBAAoBD,MACxB,MAAM,UAAU,MAAM,CAAC,GAAG,WAAW,MAAM,CAAC,CAAC,EAC7C,QAAQ,iBAAiB,EAAE;AAC7B,gBAAM,gBAAgB,MAAM,KAAK,iBAAiB;AAClD,gBAAM,aACL,iBACA,SAAS,kBAAkB,KAAK,iBAAiB;AA0BlD,cAAI,SAAS,eAAe;AAC3B,oBAAQ,OAAO;AAAA,cACd,MAAAC;AAAA,cACA,KAAK;AAAA,gBACJ,OAAO,UAAU,IAAI;AAAA,gBACrB,KAAK;AAAA,kBACJ,MAAM,WAAW,IAAI,MAAM;AAAA,kBAC3B,QAAQ,WAAW,IAAI,MAAM,SAAS;AAAA,gBACvC;AAAA,cACD;AAAA,cACA,WAAW;AAAA,cACX,IAAI,OAAO;AAEV,oBACC,WAAW;AAAA,kBACV;AAAA,kBACA;AAAA,gBACD,GACC;AACD,yBAAO;AAAA,gBACR;AAGA,oBAAIA,MAAK,UAAU;AAClB,yBAAO,MAAM;AAAA,oBACZ,CAAC,UAAU,MAAM,CAAC,GAAG,WAAW,MAAM,CAAC,CAAC;AAAA,oBACxC;AAAA,kBACD;AAAA,gBACD;AAMA,oBAAI,YAAY;AACf,yBAAO;AAAA,gBACR;AACA,uBAAO,MAAM,YAAY;AAAA,kBACxB,UAAU,MAAM,CAAC;AAAA,kBACjB,WAAW,MAAM,CAAC;AAAA,gBACnB,CAAC;AAAA,cACF;AAAA,YACD,CAAC;AAAA,UACF,WAAW,CAAC,SAAS,CAAC,eAAe;AACpC,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK;AAAA,gBACJ,OAAO;AAAA,kBACN,MAAM,UAAU,IAAI,IAAI;AAAA,kBACxB,QAAQ,UAAU,IAAI,IAAI,SAAS;AAAA,gBACpC;AAAA,gBACA,KAAK,WAAW,IAAI;AAAA,cACrB;AAAA,cACA,WAAW;AAAA,cACX,IAAI,OAAO;AACV,oBAAIA,MAAK,UAAU;AAClB,yBAAO;AAAA,gBACR;AACA,uBAAO,MAAM,iBAAiB,YAAY,GAAG;AAAA,cAC9C;AAAA,YACD,CAAC;AAAA,UACF,WAAW,CAAC,SAAS,CAAC,iBAAiB,YAAY;AAClD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK;AAAA,gBACJ,OAAO,UAAU,IAAI;AAAA,gBACrB,KAAK,WAAW,IAAI;AAAA,cACrB;AAAA,cACA,WAAW;AAAA,cACX,IAAI,OAAO;AAMV,oBAAI,CAACA,MAAK,UAAU;AACnB,yBAAO;AAAA,gBACR;AAGA,oBACC,WAAW;AAAA,kBACV;AAAA,kBACA;AAAA,gBACD,GACC;AACD,yBAAO;AAAA,gBACR;AAEA,sBAAM,QAAQ,CAAC,UAAU,MAAM,CAAC,GAAG,WAAW,MAAM,CAAC,CAAC;AACtD,sBAAM,UAAU,WAAW,cAAc,SAAS;AAElD,oBAAI,QAAQ,MAAM,CAAC,MAAM,UAAU,MAAM,CAAC,GAAG;AAC5C,yBAAO,MAAM,iBAAiB,OAAO,KAAK;AAAA,gBAC3C;AACA,oBAAI,QAAQ,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,GAAG;AAC7C,yBAAO,MAAM,iBAAiB,OAAO,KAAK;AAAA,gBAC3C;AACA,uBAAO,MAAM,iBAAiB,OAAO,MAAM;AAAA,cAC5C;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,gCAAgCA,OAAM;AACrC,kBAAM,YAAY,WAAW,aAAaA,KAAI;AAC9C,kBAAM,kBAAkB,WAAW,aAAaA,MAAK,MAAM;AAC3D,kBAAM,aAAa,WAAW;AAAA,cAC7B;AAAA,cACA;AAAA,cACA,SAAS;AAAA,YACV;AACA,kBAAM,YACL,cACA,WAAW;AAAA,cACV;AAAA,cACA,SAAS;AAAA,YACV;AAGD,gBAAI,EAAE,cAAc,WAAW,MAAM,CAAC,IAAIA,MAAK,MAAM,CAAC,IAAI;AACzD;AAAA,YACD;AAEA,yBAAaA,OAAM,WAAW,UAAU;AAAA,UACzC;AAAA,UAEA,iBAAiBA,OAAM;AACtB,kBAAM,YAAY,WAAW,cAAcA,KAAI;AAC/C,kBAAM,aAAa,WAAW,cAAc,SAAS;AAErD,yBAAaA,OAAM,WAAW,UAAU;AAAA,UACzC;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxRA;AAAA,wDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AACjB,QAAM,UAAU;AAWhB,aAAS,gBAAgB,SAAS;AACjC,UACC,QAAQ,SAAS,sBACjB,QAAQ,OAAO,SAAS,gBACxB,QAAQ,OAAO,SAAS,UACvB;AAED,YACC,QAAQ,SAAS,SAAS,gBAC1B,QAAQ,SAAS,SAAS,WACzB;AACD,iBAAO;AAAA,QACR;AAGA,YACC,QAAQ,SAAS,SAAS,aAC1B,QAAQ,SAAS,UAAU,WAC1B;AACD,iBAAO;AAAA,QACR;AAAA,MACD;AACA,aAAO;AAAA,IACR;AAQA,aAAS,aAAa,MAAM,aAAa;AACxC,UAAI,eAAe,MAAM;AACxB,eAAO,QAAQ,QAAQ,gBAAgB,IAAI;AAAA,MAC5C;AACA,aAAO,QAAQ,QAAQ,gBAAgB,IAAI;AAAA,IAC5C;AAMA,QAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,OAAO,EAAE;AAClD,QAAM,gBAAgB;AAAA,MACrB,MAAM;AAAA,MACN,YAAY;AAAA,QACX,4BAA4B;AAAA,UAC3B,MAAM;AAAA,QACP;AAAA,QACA,8BAA8B;AAAA,UAC7B,MAAM;AAAA,QACP;AAAA,MACD;AAAA,MACA,sBAAsB;AAAA,IACvB;AAGA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP,OAAO;AAAA,YACN;AAAA,cACC,MAAM;AAAA,cACN,iBAAiB;AAAA,cACjB,OAAO,CAAC,eAAe,aAAa;AAAA,YACrC;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,iBAAiB;AAAA,cACjB,OAAO,CAAC,aAAa;AAAA,YACtB;AAAA,UACD;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,QAAQ;AAAA,QAEzB,UAAU;AAAA,UACT,eACC;AAAA,UACD,eACC;AAAA,UACD,kBACC;AAAA,UACD,kBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,WACJ,OAAO,QAAQ,QAAQ,CAAC,MAAM,WAC5B,QAAQ,QAAQ,CAAC,IACjB,QAAQ,QAAQ,CAAC,MAAM,CAAC;AAC5B,cAAM,cACL,OAAO,QAAQ,QAAQ,CAAC,MAAM,WAC3B,QAAQ,QAAQ,CAAC,IACjB;AACJ,cAAM,6BAA6B,QAAQ;AAC3C,cAAM,uBAAuB,QAAQ;AACrC,cAAM,cAAc,QAAQ,gBAAgB;AAS5C,iBAAS,eAAe,SAAS,UAAUC,OAAM;AAChD,cAAI,CAACA,OAAM;AACV,mBAAO;AAAA,UACR;AACA,iBACCA,MAAK,SAAS,oBACd,SAAS,uBAAuBA,MAAK,QAAQ,SAAS,QAAQ;AAAA,QAEhE;AAQA,iBAAS,WAAW,GAAG,GAAG;AACzB,iBACE,gBAAgB,YAAY,MAAM,KAClC,gBAAgB,WAAW,MAAM;AAAA,QAEpC;AAUA,iBAAS,OAAOA,OAAM,MAAM,UAAU,QAAQ;AAC7C,cAAI;AAEJ,cAAI,gBAAgB,YAAY,QAAQ;AACvC,wBAAY;AAAA,UACb,WAAW,gBAAgB,UAAU;AACpC,wBAAY;AAAA,UACb,WAAW,QAAQ;AAClB,wBAAY;AAAA,UACb,OAAO;AACN,wBAAY;AAAA,UACb;AACA,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA;AAAA,YACA,MAAM;AAAA,cACL;AAAA,cACA;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAOA,iBAAS,gBAAgBA,OAAM;AAC9B,iBAAOA,MAAK,SAAS,aAAa,OAAOA,MAAK,UAAU;AAAA,QACzD;AAMA,eAAO;AAAA,UACN,mBAAmBA,OAAM;AACxB,gBACC,CAACA,MAAK,QACNA,MAAK,KAAK,SAAS,wBACnBA,MAAK,GAAG,SAAS,cAChB;AACD;AAAA,YACD;AACA,gBACCA,MAAK,KAAK,MACV,WAAWA,MAAK,GAAG,MAAMA,MAAK,KAAK,GAAG,IAAI,GACzC;AACD,qBAAOA,OAAMA,MAAK,GAAG,MAAMA,MAAK,KAAK,GAAG,MAAM,KAAK;AAAA,YACpD;AAAA,UACD;AAAA,UAEA,qBAAqBA,OAAM;AAC1B,gBACCA,MAAK,MAAM,SAAS,wBACnBA,MAAK,KAAK,YACVA,MAAK,KAAK,SAAS,SAAS,aAC5B,CAAC,wBAAwB,gBAAgBA,MAAK,IAAI,KAClDA,MAAK,KAAK,SAAS,gBACnBA,MAAK,KAAK,SAAS,oBACnB;AACD;AAAA,YACD;AAEA,kBAAM,SAASA,MAAK,KAAK,SAAS;AAClC,kBAAM,OAAO,SACV,SAAS,sBAAsBA,MAAK,IAAI,IACxCA,MAAK,KAAK;AAEb,gBACCA,MAAK,MAAM,MACX,QACA,aAAa,IAAI,KACjB,WAAW,MAAMA,MAAK,MAAM,GAAG,IAAI,GAClC;AACD,qBAAOA,OAAM,MAAMA,MAAK,MAAM,GAAG,MAAM,MAAM;AAAA,YAC9C;AAAA,UACD;AAAA,UAEA,sCAAsCA,OAAM;AAC3C,gBACC,EAAEA,MAAK,MAAM,SAAS,wBAAwBA,MAAK,MAAM,KACxD;AACD;AAAA,YACD;AAEA,gBAAIA,MAAK,IAAI,SAAS,gBAAgB,CAACA,MAAK,UAAU;AACrD,oBAAM,eAAeA,MAAK,MAAM,GAAG;AACnC,kBAAI,eAAeA,MAAK,IAAI;AAE5B,kBACC,8BACA,iBAAiB,WACjBA,MAAK,OAAO,SAAS,oBACpB;AACD,oBACC;AAAA,kBACC;AAAA,kBACA;AAAA,kBACAA,MAAK,OAAO;AAAA,gBACb,KACA;AAAA,kBACC;AAAA,kBACA;AAAA,kBACAA,MAAK,OAAO;AAAA,gBACb,GACC;AACD,wBAAM,WAAWA,MAAK,OAAO,OAAO,UAAU,CAAC;AAE/C,sBACC,gBAAgB,QAAQ,KACxB,WAAW,SAAS,OAAO,YAAY,GACtC;AACD;AAAA,sBACCA;AAAA,sBACA,SAAS;AAAA,sBACT;AAAA,sBACA;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD,WACC;AAAA,kBACC;AAAA,kBACA;AAAA,kBACAA,MAAK,OAAO,OAAO,OAAO;AAAA,gBAC3B,GACC;AACD,iCAAeA,MAAK,OAAO,OAAO,IAAI;AACtC,sBACC,CAACA,MAAK,OAAO,OAAO,YACpB,WAAW,cAAc,YAAY,GACpC;AACD,2BAAOA,OAAM,cAAc,cAAc,IAAI;AAAA,kBAC9C;AAAA,gBACD,WACC;AAAA,kBACC;AAAA,kBACA;AAAA,kBACAA,MAAK,OAAO,OAAO,OAAO;AAAA,gBAC3B,GACC;AACD,iCAAeA,MAAK,OAAO,OAAO,IAAI;AACtC,sBACC,CAACA,MAAK,OAAO,OAAO,YACpB,WAAW,cAAc,YAAY,GACpC;AACD,2BAAOA,OAAM,cAAc,cAAc,IAAI;AAAA,kBAC9C;AAAA,gBACD,WAAW,WAAW,cAAc,YAAY,GAAG;AAClD,yBAAOA,OAAM,cAAc,cAAc,IAAI;AAAA,gBAC9C;AAAA,cACD,WAAW,WAAW,cAAc,YAAY,GAAG;AAClD,uBAAOA,OAAM,cAAc,cAAc,IAAI;AAAA,cAC9C;AACA;AAAA,YACD;AAEA,gBACC,gBAAgBA,MAAK,GAAG,KACxB,aAAaA,MAAK,IAAI,OAAO,WAAW,KACxC,WAAWA,MAAK,IAAI,OAAOA,MAAK,MAAM,GAAG,IAAI,GAC5C;AACD,qBAAOA,OAAMA,MAAK,IAAI,OAAOA,MAAK,MAAM,GAAG,MAAM,IAAI;AAAA,YACtD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnVA;AAAA,gDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAiBjB,aAAS,eAAe,UAAU;AACjC,aAAO,YAAY,SAAS,KAAK,CAAC,EAAE,SAAS;AAAA,IAC9C;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAAA,QAE7B,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP,aAAa;AAAA,YACZ,OAAO;AAAA,cACN,MAAM,CAAC,UAAU,aAAa,OAAO;AAAA,YACtC;AAAA,UACD;AAAA,UACA,MAAM;AAAA,UACN,OAAO;AAAA,YACN;AAAA,cACC,MAAM;AAAA,YACP;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,YAAY;AAAA,gBACX,YAAY;AAAA,kBACX,MAAM;AAAA,gBACP;AAAA,cACD;AAAA,cACA,sBAAsB;AAAA,YACvB;AAAA,UACD;AAAA,UACA,iBAAiB;AAAA,QAClB;AAAA,QAEA,UAAU;AAAA,UACT,SAAS;AAAA,UACT,OAAO;AAAA,QACR;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAO3B,iBAAS,iBAAiBC,OAAM;AAC/B,cAAIA,MAAK,aAAa,QAAQ,QAAQ,CAAC,EAAE,YAAY;AACpD,mBAAO,QAAQ,QAAQ,CAAC,EAAE;AAAA,UAC3B;AAEA,iBAAO,QAAQ,QAAQ,CAAC;AAAA,QACzB;AAQA,iBAAS,sBAAsBA,OAAM;AACpC,gBAAM,SAASA,MAAK;AAEpB,iBACC,OAAO,SAAS,sBACf,OAAO,SAAS,eACf,OAAO,UACP,OAAO,SAAS,SAChB,OAAO,SAAS;AAAA,QAEpB;AAQA,iBAAS,gBAAgBA,OAAM;AAC9B,gBAAM,SAASA,MAAK;AAEpB,iBACC,sBAAsBA,KAAI,KACzB,OAAO,SAAS,wBAChB,OAAO,GAAG,SAAS,gBACnB,OAAO,SAASA,SAChB,OAAO,SAAS,cAAc,OAAO,UAAUA,SAC/C,OAAO,SAAS,wBAChB,OAAO,UAAUA,SACjB,OAAO,SAAS,0BAChB,OAAO,KAAK,SAAS,gBACrB,OAAO,UAAUA,SACjB,OAAO,SAAS,uBAChB,OAAO,KAAK,SAAS,gBACrB,OAAO,UAAUA;AAAA,QAEpB;AAOA,iBAAS,gCAAgCA,OAAM;AAC9C,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW;AAAA,YACX,KAAK,SAAS,mBAAmBA,OAAM,UAAU;AAAA,YACjD,MAAM,EAAE,MAAM,SAAS,wBAAwBA,KAAI,EAAE;AAAA,UACtD,CAAC;AAAA,QACF;AAOA,iBAAS,8BAA8BA,OAAM;AAC5C,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW;AAAA,YACX,KAAK,SAAS,mBAAmBA,OAAM,UAAU;AAAA,YACjD,MAAM,EAAE,MAAM,SAAS,wBAAwBA,KAAI,EAAE;AAAA,UACtD,CAAC;AAAA,QACF;AAOA,iBAAS,eAAeA,OAAM;AAE7B,gBAAM,UAAU,WAAW,qBAAqBA,KAAI,EAAE,CAAC;AAEvD,cAAI,eAAe,OAAO,KAAK,QAAQ,WAAW,SAAS,GAAG;AAC7D;AAAA,UACD;AAEA,gBAAM,UAAU,QAAQA,MAAK,MAAMA,MAAK,GAAG,IAAI;AAC/C,gBAAM,SAAS,iBAAiBA,KAAI;AAEpC,cAAI,WAAW,SAAS;AACvB,gBAAI,WAAWA,MAAK,SAAS,uBAAuB;AACnD,4CAA8BA,KAAI;AAAA,YACnC;AAAA,UACD,WAAW,WAAW,aAAa;AAClC,gBAAI,CAAC,WAAW,CAAC,gBAAgBA,KAAI,GAAG;AACvC,8CAAgCA,KAAI;AAAA,YACrC;AAAA,UACD,OAAO;AACN,gBAAI,CAAC,WAAW,CAAC,sBAAsBA,KAAI,GAAG;AAC7C,8CAAgCA,KAAI;AAAA,YACrC;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,2BAA2B;AAAA,UAC3B,kDAAkD;AAAA,QACnD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC3MA;AAAA,gDAAAC,UAAAC,SAAA;AAAA;AAWA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,UACA;AAAA,YACC,qBAAqB;AAAA,YACrB,qBAAqB;AAAA,YACrB,WAAW,CAAC;AAAA,UACb;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,eAAe,YAAY;AAAA,UACnC;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,qBAAqB;AAAA,gBACpB,MAAM;AAAA,cACP;AAAA,cACA,qBAAqB;AAAA,gBACpB,MAAM;AAAA,cACP;AAAA,cACA,WAAW;AAAA,gBACV,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,cAAc;AAAA,oBACb,MAAM,CAAC,eAAe,cAAc,QAAQ;AAAA,kBAC7C;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,YAAY;AAAA,UACZ,aAAa;AAAA,QACd;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,OAAO,EAAE,qBAAqB,qBAAqB,UAAU,CAAC,IACpE,QAAQ;AACT,cAAM,sBAAsB,UAAU;AACtC,cAAM,EAAE,cAAc,oBAAoB,IAAI;AAC9C,cAAM,QAAQ,CAAC;AAOf,iBAAS,qBAAqBC,OAAM;AACnC,gBAAM,eAAeA,MAAK,GAAG;AAE7B,cAAIA,MAAK,OAAO,SAAS,0BAA0B;AAClD,mBAAOA,MAAK,OAAO,OAAO,KAAK;AAAA,cAC9B,YACC,OAAO,SAAS,4BAChB,OAAO,aAAa,SAAS,uBAC7B,OAAO,YAAY,GAAG,SAAS;AAAA,YACjC;AAAA,UACD;AAEA,cAAIA,MAAK,OAAO,SAAS,cAAc;AACtC,mBAAOA,MAAK,OAAO,OAAO,MAAM;AAAA,cAAK,gBACpC,WAAW,WAAW;AAAA,gBACrB,YACC,OAAO,SAAS,uBAChB,OAAO,GAAG,SAAS;AAAA,cACrB;AAAA,YACD;AAAA,UACD;AAEA,iBACC,MAAM,QAAQA,MAAK,OAAO,IAAI,KAC9BA,MAAK,OAAO,KAAK;AAAA,YAChB,YACC,OAAO,SAAS,uBAChB,OAAO,GAAG,SAAS;AAAA,UACrB;AAAA,QAEF;AAEA,cAAM,eAAe;AAAA,UACpB,oBAAoBA,OAAM;AACzB,kBAAM,KAAK,KAAK;AAEhB,gBACC,CAAC,uBACDA,MAAK,OAAO,SAAS,+BACpB,OAAO,wBAAwB,eAC/BA,MAAK,OAAO,SAAS,6BACtB,CAAC,qBAAqBA,KAAI,GACzB;AACD,sBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,aAAa,CAAC;AAAA,YACjD;AAEA,gBACCA,MAAK,OAAO,SAAS,4BACrB,wBAAwB,gBACxB,CAAC,qBAAqBA,KAAI,GACzB;AACD,sBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,aAAa,CAAC;AAAA,YACjD;AAAA,UACD;AAAA,UACA,6BAA6B;AAC5B,kBAAM,IAAI;AAAA,UACX;AAAA,UAEA,mBAAmBA,OAAM;AACxB,kBAAM,KAAK,KAAK;AAEhB,gBACC,uBACAA,MAAK,OAAO,SAAS,yBACpB,OAAO,wBAAwB,eAC/BA,MAAK,OAAO,OAAO,OAAO,SACzB,6BACF,EAAE,uBAAuBA,MAAK,OAAO,GAAG,iBACvC;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAMA,MAAK;AAAA,gBACX,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAEA,gBACCA,MAAK,OAAO,SAAS,wBACrBA,MAAK,OAAO,OAAO,OAAO,SACzB,4BACD,wBAAwB,iBACxB,EAAE,uBAAuBA,MAAK,OAAO,GAAG,iBACvC;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAMA,MAAK;AAAA,gBACX,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,UACA,4BAA4B;AAC3B,kBAAM,IAAI;AAAA,UACX;AAAA,UAEA,0BAA0B;AACzB,gBAAI,MAAM,SAAS,GAAG;AACrB,oBAAM,MAAM,SAAS,CAAC,IAAI;AAAA,YAC3B;AAAA,UACD;AAAA,QACD;AAEA,YAAI,CAAC,qBAAqB;AACzB,uBAAa,0BAA0B,WAAY;AAClD,kBAAM,KAAK,KAAK;AAAA,UACjB;AAEA,uBAAa,8BAA8B,IAAI,SAAUA,OAAM;AAC9D,kBAAM,qBAAqB,MAAM,IAAI;AAErC,gBACC,CAAC,sBACDA,MAAK,OAAO,SAAS,sBACpB;AACD,kBACC,wBACC,OAAO,wBAAwB,eAC/BA,MAAK,OAAO,OAAO,OAAO,SACzB,6BACF,EAAE,uBAAuBA,MAAK,OAAO,GAAG,iBACvC;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAMA,MAAK;AAAA,kBACX,WAAW;AAAA,gBACZ,CAAC;AAAA,cACF;AAEA,kBACCA,MAAK,OAAO,OAAO,OAAO,SACzB,4BACD,wBAAwB,iBACxB,EAAE,uBAAuBA,MAAK,OAAO,GAAG,iBACvC;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAMA,MAAK;AAAA,kBACX,WAAW;AAAA,gBACZ,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA;;;AC3NA;AAAA,oEAAAC,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,SAAS,YAAY;AAAA,UACvC;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,qBAAqB;AAAA,UACrB,kBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,cAAM,WAAW;AAAA,UAChB,YAAY;AAAA,YACX,WAAW;AAAA,YACX,OAAO,CAAC,WAAW,iBAClB,UAAU,IAAI,IAAI,SAAS,aAAa,IAAI,MAAM;AAAA,YACnD,WAAW,CAAC,OAAO,gBAAgB,WAClC,MAAM;AAAA,cACL,CAAC,YAAY,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;AAAA,cACrC;AAAA,YACD;AAAA,UACF;AAAA,UACA,SAAS;AAAA,YACR,WAAW;AAAA,YACX,OAAO,CAAC,WAAW,iBAClB,UAAU,IAAI,IAAI,SAAS,aAAa,IAAI,MAAM;AAAA,YACnD,WAAW,CAAC,OAAO,gBAAgB,WAClC,MAAM;AAAA,cACL,CAAC,YAAY,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;AAAA,cACrC;AAAA,YACD;AAAA,UACF;AAAA,QACD;AASA,iBAAS,eAAeC,OAAM,SAAS;AACtC,mBAAS,IAAI,GAAG,IAAIA,MAAK,UAAU,QAAQ,KAAK;AAC/C,kBAAM,eAAe,WAAW;AAAA,cAC/BA,MAAK,UAAU,IAAI,CAAC;AAAA,YACrB;AACA,kBAAM,kBAAkB,WAAW;AAAA,cAClCA,MAAK,UAAU,CAAC;AAAA,YACjB;AAEA,gBAAI,QAAQ,MAAM,cAAc,eAAe,GAAG;AACjD,oBAAM,cAAc,WAAW;AAAA,gBAC9B;AAAA,gBACA,EAAE,iBAAiB,KAAK;AAAA,cACzB;AAEA,oBAAM,uBAAuB,YAAY,SAAS;AAElD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK;AAAA,kBACJ,OAAO,YAAY,IAAI;AAAA,kBACvB,KAAK,gBAAgB,IAAI;AAAA,gBAC1B;AAAA,gBACA,WAAW,QAAQ;AAAA,gBACnB,KAAK,uBACF,OACA,QAAQ,UAAU,iBAAiB,WAAW;AAAA,cAClD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAQA,iBAAS,MAAMA,OAAM;AACpB,cAAIA,MAAK,UAAU,SAAS,GAAG;AAC9B;AAAA,UACD;AAEA,gBAAM,SAAS,QAAQ,QAAQ,CAAC,KAAK;AAErC,cAAI,WAAW,SAAS;AACvB,2BAAeA,OAAM,SAAS,UAAU;AAAA,UACzC,WAAW,WAAW,UAAU;AAC/B,2BAAeA,OAAM,SAAS,OAAO;AAAA,UACtC,WAAW,WAAW,cAAc;AACnC,kBAAM,gBAAgB,WAAW;AAAA,cAChCA,MAAK,UAAU,CAAC;AAAA,YACjB;AACA,kBAAM,iBAAiB,WAAW;AAAA,cACjCA,MAAK,UAAU,CAAC;AAAA,YACjB;AAEA,gBACC,cAAc,IAAI,IAAI,SAAS,eAAe,IAAI,MAAM,MACvD;AACD,6BAAeA,OAAM,SAAS,UAAU;AAAA,YACzC,OAAO;AACN,6BAAeA,OAAM,SAAS,OAAO;AAAA,YACtC;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,gBAAgB;AAAA,UAChB,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrKA;AAAA,4DAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,kBACL;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,UAAU;AAAA,oBACT,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,gBAAgB;AAAA,UAChB,eAAe;AAAA,UACf,iBAAiB;AAAA,UACjB,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,YAAY,QAAQ,QAAQ,CAAC,KAAK;AACxC,cAAM,kBAAkB,cAAc;AACtC,cAAM,2BAA2B,cAAc;AAC/C,cAAM,mBAAmB,cAAc;AACvC,YAAI;AAEJ,YAAI,OAAO,cAAc,UAAU;AAClC,qBAAW,UAAU;AAAA,QACtB,WAAW,cAAc,UAAU;AAClC,qBAAW;AAAA,QACZ,WAAW,cAAc,SAAS;AACjC,qBAAW;AAAA,QACZ,OAAO;AACN,qBAAW;AAAA,QACZ;AAYA,iBAAS,mBAAmB,UAAU,gBAAgB;AACrD,cAAI,4BAA4B,SAAS,WAAW,GAAG;AACtD,mBAAO;AAAA,UACR;AACA,cAAI,mBAAmB,0BAA0B;AAChD,mBAAO,SAAS;AAAA,cACf,CAAC,SAASC,WACTA,WAAU,SAAS,SAAS,KAC5B,QAAQ,IAAI,IAAI,SACf,SAASA,SAAQ,CAAC,EAAE,IAAI,MAAM;AAAA,YACjC;AAAA,UACD;AACA,cAAI,kBAAkB;AACrB,mBAAO;AAAA,UACR;AACA,iBAAO,SAAS,UAAU;AAAA,QAC3B;AAQA,iBAAS,eAAe,QAAQ,UAAU;AACzC,gBAAM,YAAY,OAAO;AACzB,gBAAM,aAAa,OAAO;AAC1B,gBAAM,sBAAsB,WAAW,cAAc,SAAS;AAC9D,gBAAM,wBAAwB,WAAW,eAAe,UAAU;AAClE,gBAAM,iBAAiB,CAAC,SAAS;AAAA,YAChC;AAAA,YACA;AAAA,UACD;AACA,gBAAM,kBAAkB,CAAC,SAAS;AAAA,YACjC;AAAA,YACA;AAAA,UACD;AACA,gBAAM,gBAAgB,mBAAmB,UAAU,cAAc;AAEjE,cAAI,kBAAkB,CAAC,eAAe;AACrC,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,IAAI,OAAO;AACV,uBAAO,WACL,QAAQ,EACR;AAAA,kBACA,UAAU,MAAM,CAAC;AAAA,kBACjB,oBAAoB,MAAM,CAAC;AAAA,gBAC5B,EACC,KAAK;AAAA;AAAA,kBAEL;AAAA,oBACC,MAAM,YAAY;AAAA,kBAClB,UAAU,MAAM,CAAC;AAAA,kBACjB,oBAAoB,MAAM,CAAC;AAAA,gBAC5B,CAAC;AAAA,cACJ;AAAA,YACD,CAAC;AAAA,UACF,WAAW,CAAC,kBAAkB,eAAe;AAC5C,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,KAAK,WAAS,MAAM,gBAAgB,WAAW,IAAI;AAAA,YACpD,CAAC;AAAA,UACF;AAEA,cAAI,mBAAmB,CAAC,eAAe;AACtC,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,IAAI,OAAO;AACV,uBAAO,WACL,QAAQ,EACR;AAAA,kBACA,sBAAsB,MAAM,CAAC;AAAA,kBAC7B,WAAW,MAAM,CAAC;AAAA,gBACnB,EACC,KAAK;AAAA;AAAA,kBAEL;AAAA,oBACC,MAAM,YAAY;AAAA,kBAClB,sBAAsB,MAAM,CAAC;AAAA,kBAC7B,WAAW,MAAM,CAAC;AAAA,gBACnB,CAAC;AAAA,cACJ;AAAA,YACD,CAAC;AAAA,UACF,WAAW,CAAC,mBAAmB,eAAe;AAC7C,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,KAAK,WAAS,MAAM,iBAAiB,YAAY,IAAI;AAAA,YACtD,CAAC;AAAA,UACF;AAAA,QACD;AAQA,iBAAS,kBAAkB,QAAQ,UAAU;AAC5C,gBAAM,YAAY,OAAO;AACzB,gBAAM,sBAAsB,WAAW,cAAc,SAAS;AAC9D,gBAAM,iBAAiB,CAAC,SAAS;AAAA,YAChC;AAAA,YACA;AAAA,UACD;AACA,gBAAM,gBAAgB,mBAAmB,UAAU,cAAc;AAEjE,mBAAS,IAAI,GAAG,KAAK,SAAS,SAAS,GAAG,KAAK;AAC9C,kBAAM,iBAAiB,SAAS,CAAC;AACjC,kBAAM,cAAc,SAAS,IAAI,CAAC;AAClC,kBAAM,aACL,eAAe,IAAI,IAAI,SAAS,YAAY,IAAI,MAAM;AAEvD,gBAAI,CAAC,cAAc,eAAe;AACjC,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,KAAK,WAAS,MAAM,iBAAiB,aAAa,IAAI;AAAA,cACvD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAUA,iBAAS,eAAeC,OAAM;AAC7B,kBAAQA,MAAK,MAAM;AAAA,YAClB,KAAK;AACJ,kBACC,CAACA,MAAK,UAAU,UAChB,EACC,SAAS;AAAA,gBACR,WAAW,aAAaA,OAAM,EAAE,MAAM,EAAE,CAAC;AAAA,cAC1C,KACA,SAAS;AAAA,gBACR,WAAW,aAAaA,KAAI;AAAA,cAC7B,KACAA,MAAK,OAAO,MAAM,CAAC,IAAIA,MAAK,MAAM,CAAC,IAEnC;AAED,uBAAO;AAAA,cACR;AAAA;AAAA,YAID,KAAK;AACJ,qBAAO;AAAA,gBACN,WAAW,WAAW;AAAA,kBACrBA,MAAK;AAAA,kBACL,SAAS;AAAA,gBACV;AAAA,gBACA,YAAY,WAAW,aAAaA,KAAI;AAAA,cACzC;AAAA,YAED,KAAK;AAAA,YACL,KAAK,sBAAsB;AAC1B,oBAAM,YAAY,WAAW;AAAA,gBAC5BA;AAAA,gBACA,SAAS;AAAA,cACV;AACA,oBAAM,aAAaA,MAAK,OAAO,SAC5B,WAAW;AAAA,gBACXA,MAAK,OAAO,GAAG,EAAE;AAAA,gBACjB,SAAS;AAAA,cACV,IACC,WAAW,cAAc,SAAS;AAErC,qBAAO,EAAE,WAAW,WAAW;AAAA,YAChC;AAAA,YAEA,KAAK,2BAA2B;AAC/B,oBAAM,aAAa,WAAW,cAAcA,OAAM;AAAA,gBACjD,MAAMA,MAAK,QAAQ,IAAI;AAAA,cACxB,CAAC;AAED,kBAAI,CAAC,SAAS,oBAAoB,UAAU,GAAG;AAE9C,uBAAO;AAAA,cACR;AAEA,oBAAM,aAAaA,MAAK,OAAO,SAC5B,WAAW;AAAA,gBACXA,MAAK,OAAO,GAAG,EAAE;AAAA,gBACjB,SAAS;AAAA,cACV,IACC,WAAW,cAAc,UAAU;AAEtC,qBAAO;AAAA,gBACN,WAAW;AAAA,gBACX;AAAA,cACD;AAAA,YACD;AAAA,YAEA,KAAK,oBAAoB;AACxB,oBAAM,YAAY,WAAW,cAAcA,OAAM,CAAC;AAClD,oBAAM,aAAa,WAAW,aAAaA,KAAI;AAE/C,qBAAO,EAAE,WAAW,WAAW;AAAA,YAChC;AAAA,YAEA;AACC,oBAAM,IAAI;AAAA,gBACT,6BAA6BA,MAAK,IAAI;AAAA,cACvC;AAAA,UACF;AAAA,QACD;AAMA,eAAO;AAAA,UACN,CAAC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD,CAAC,EAAEA,OAAM;AACR,kBAAM,SAAS,eAAeA,KAAI;AAClC,gBAAI;AAEJ,gBAAIA,MAAK,SAAS,oBAAoB;AACrC,uBAAS,CAACA,MAAK,MAAM;AAAA,YACtB,WAAW,SAAS,WAAWA,KAAI,GAAG;AACrC,uBAASA,MAAK;AAAA,YACf,OAAO;AACN,uBAASA,MAAK;AAAA,YACf;AAEA,gBAAI,QAAQ;AACX,6BAAe,QAAQ,MAAM;AAE7B,kBAAI,0BAA0B;AAC7B,kCAAkB,QAAQ,MAAM;AAAA,cACjC;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/WA;AAAA,4DAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,kBAAkB;AAAA,MACvB,OAAO;AAAA,QACN;AAAA,UACC,MAAM,CAAC,UAAU,SAAS,QAAQ,SAAS;AAAA,QAC5C;AAAA,QACA;AAAA,UACC,MAAM;AAAA,UACN,YAAY;AAAA,YACX,QAAQ,EAAE,MAAM,UAAU;AAAA,YAC1B,OAAO,EAAE,MAAM,UAAU;AAAA,UAC1B;AAAA,UACA,sBAAsB;AAAA,QACvB;AAAA,MACD;AAAA,IACD;AAGA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM,CAAC,UAAU,SAAS,QAAQ,SAAS;AAAA,cAC5C;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,QAAQ,EAAE,MAAM,UAAU;AAAA,kBAC1B,OAAO,EAAE,MAAM,UAAU;AAAA,kBACzB,OAAO;AAAA,kBACP,WAAW;AAAA,kBACX,QAAQ;AAAA,gBACT;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,eAAe;AAAA,UACf,cAAc;AAAA,UACd,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,oBAAoB;AAAA,UACzB,QAAQ,EAAE,QAAQ,MAAM,OAAO,MAAM;AAAA,UACrC,OAAO,EAAE,QAAQ,OAAO,OAAO,KAAK;AAAA,UACpC,MAAM,EAAE,QAAQ,MAAM,OAAO,KAAK;AAAA,UAClC,SAAS,EAAE,QAAQ,OAAO,OAAO,MAAM;AAAA,QACxC;AAQA,iBAAS,mBAAmB,QAAQ,UAAU;AAC7C,cAAI,CAAC,QAAQ;AACZ,mBAAO;AAAA,UACR;AAEA,iBAAO,OAAO,WAAW,WACtB,kBAAkB,MAAM,IACxB,OAAO,OAAO,CAAC,GAAG,UAAU,MAAM;AAAA,QACtC;AAEA,cAAM,SAAS,SAAU,QAAQ;AAChC,gBAAM,WAAW;AAAA,YAChB;AAAA,YACA,kBAAkB;AAAA,UACnB;AAEA,iBAAO;AAAA,YACN,OAAO,mBAAmB,OAAO,OAAO,QAAQ;AAAA,YAChD,WAAW,mBAAmB,OAAO,WAAW,QAAQ;AAAA,YACxD,QAAQ,mBAAmB,OAAO,QAAQ,QAAQ;AAAA,UACnD;AAAA,QACD,GAAG,QAAQ,QAAQ,CAAC,KAAK,CAAC,CAAC;AAE3B,cAAM,aAAa,QAAQ;AAO3B,iBAAS,YAAY,OAAO;AAC3B,iBAAO,MAAM,UAAU,OAAO,MAAM,SAAS;AAAA,QAC9C;AAOA,iBAAS,aAAaC,OAAM;AAC3B,iBAAO,WAAW;AAAA,YACjBA,MAAK,OAAO,UAAUA,MAAK,OAAO,SAAS,qBACxCA,MAAK,SACLA;AAAA,YACH;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,WAAW,KAAK;AACxB,iBAAO,IAAI,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AAAA,QAC1C;AAYA,iBAAS,aAAa,MAAM,MAAM,WAAW,YAAY;AACxD,cACC,CAAC,EAAE,WAAW,MAAM,CAAC,IAAI,UAAU,MAAM,CAAC,OAC1C,MAAM,IAAI,EAAE,IAAI,GACf;AACD,kBAAM,QAAQ,UAAU,UAAU;AAClC,kBAAM,gBAAgB,MAAM,IAAI,EAAE,IAAI;AACtC,kBAAMA,QAAO,QAAQ,YAAY;AACjC,kBAAM,YAAY,GAAG,gBAAgB,YAAY,YAAY,GAAG,WAAW,IAAI,CAAC;AAEhF,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA;AAAA,cACA,IAAI,OAAO;AACV,oBAAI,eAAe;AAClB,sBAAI,OAAO;AACV,2BAAO,MAAM,gBAAgBA,OAAM,GAAG;AAAA,kBACvC;AACA,yBAAO,MAAM,iBAAiBA,OAAM,GAAG;AAAA,gBACxC;AACA,uBAAO,MAAM,YAAY;AAAA,kBACxB,UAAU,MAAM,CAAC;AAAA,kBACjB,WAAW,MAAM,CAAC;AAAA,gBACnB,CAAC;AAAA,cACF;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,cAAcA,OAAM;AAC5B,cAAI,CAACA,MAAK,WAAW;AACpB;AAAA,UACD;AAEA,gBAAM,YAAY,aAAaA,KAAI;AACnC,gBAAM,YAAY,WAAW,eAAe,SAAS;AACrD,gBAAM,YAAY,WAAW,cAAc,SAAS;AAEpD,cAAI,OAAO;AAEX,cACCA,MAAK,OAAO,SAAS,sBACpBA,MAAK,OAAO,SAAS,cAAcA,MAAK,OAAO,QAC/C;AACD,mBAAO;AAAA,UACR,WAAW,CAACA,MAAK,IAAI;AACpB,mBAAO;AAAA,UACR;AAGA,cACC,EACC,SAAS,YACT,cAAc,WAAW,cAAcA,MAAK,MAAM,IAElD;AACD,yBAAa,MAAM,UAAU,WAAW,SAAS;AAAA,UAClD;AAEA,uBAAa,MAAM,SAAS,WAAW,SAAS;AAAA,QACjD;AAEA,eAAO;AAAA,UACN,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,QACrB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrPA;AAAA,mDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AACjB,QAAM,EAAE,sBAAsB,IAAI;AAMlC,QAAM,mBAAmB;AAOzB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,eAAe;AAAA,UAChB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,eAAe;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,UAAU;AAAA,UACV,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,cAAc,CAAC,IAAI,QAAQ;AACpC,cAAM,aAAa,QAAQ;AAE3B,YAAI,WAAW;AAAA,UACd,OAAO;AAAA,UACP,UAAU;AAAA,UACV,WAAW;AAAA,UACX,aAAa;AAAA,UACb,MAAM;AAAA,UACN,iBAAiB,CAAC;AAAA,QACnB;AAWA,iBAAS,iBAAiBC,OAAM;AAC/B,cACC,SAAS,eACT,sBAAsB,SAAS,eAAe,GAC7C;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,SAAS,mBAAmBA,OAAM,UAAU;AAAA,cACjD,WAAW,SAAS,YACjB,mBACA;AAAA,cACH,MAAM;AAAA,gBACL,MAAM,SAAS,wBAAwB,SAAS,IAAI;AAAA,cACrD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,SAASA,OAAM;AACvB,gBAAM,SAASA,MAAK;AAEpB,cACC,iBAAiB,KAAKA,MAAK,IAAI,KAC/BA,MAAK,KAAK,SAAS,kBAClB;AACD,gBAAI,OAAO,SAAS,OAAO;AAC1B,qBAAO;AAAA,YACR;AACA,gBACC,OAAO,SAAS,cAChB,SAAS,sBAAsB,MAAM,MAAM,SAC3C,OAAO,OAAO,SAAS,oBACtB;AAED,kBAAI,OAAO,OAAO,OAAO,SAAS,kBAAkB;AACnD,sBAAM,WAAW,OAAO,OAAO,OAAO;AAEtC,oBACC,SAAS;AAAA,kBACR;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD,KACA,SAAS;AAAA,kBACR;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD,GACC;AACD,yBAAO;AAAA,gBACR;AAAA,cACD;AAGA,kBACC,OAAO,OAAO,OAAO,SAAS,cAC9B,OAAO,OAAO,OAAO,OAAO,SAC3B,sBACD,OAAO,OAAO,OAAO,OAAO,OAAO,SAClC,kBACA;AACD,sBAAM,WACL,OAAO,OAAO,OAAO,OAAO,OAAO;AAEpC,uBACC,SAAS;AAAA,kBACR;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD,KACA,SAAS;AAAA,kBACR;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cAEF;AAAA,YACD;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AACA,eAAO;AAAA;AAAA,UAEN,gBAAgB,UAAUA,OAAM;AAC/B,uBAAW;AAAA,cACV,OAAO;AAAA,cACP;AAAA,cACA,WAAW;AAAA,cACX,aAAa,SAASA,KAAI;AAAA,cAC1B,MAAAA;AAAA,cACA,iBAAiB,oBAAI,IAAI;AAAA,YAC1B;AAAA,UACD;AAAA;AAAA,UAGA,gBAAgB;AACf,uBAAW,SAAS;AAAA,UACrB;AAAA,UACA,kCAAkC,SAAS;AAC1C,qBAAS,gBAAgB,IAAI,OAAO;AAAA,UACrC;AAAA,UAEA,gCAAgC,SAAS;AACxC,qBAAS,gBAAgB,OAAO,OAAO;AAAA,UACxC;AAAA,UAEA,uBAAuB,SAAS;AAC/B,qBAAS,gBAAgB,IAAI,OAAO;AAAA,UACrC;AAAA,UAEA,qBAAqB,SAAS;AAC7B,qBAAS,gBAAgB,OAAO,OAAO;AAAA,UACxC;AAAA;AAAA,UAGA,gBAAgBA,OAAM;AACrB,gBAAI,SAAS,aAAa;AACzB,uBAAS,YAAY;AAGrB,kBAAI,CAAC,iBAAiB,CAACA,MAAK,UAAU;AACrC,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM;AAAA,oBACL,MAAM,SAAS;AAAA,sBACd,SAAS;AAAA,oBACV;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA;AAAA,UAGA,2BAA2B;AAAA,UAC3B,gCAAgC;AAAA,QACjC;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnOA;AAAA,oDAAAC,UAAAC,SAAA;AAAA;AAQA,QAAM,qBAAqB,oBAAI,IAAI;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAQD,aAAS,cAAc,OAAOC,OAAM;AACnC,YAAM,aAAa,MAAM,WAAW;AAAA,QACnC,eACC,UAAU,WAAW,MAAM,CAAC,MAAMA,MAAK,MAAM,CAAC,KAC9C,UAAU,WAAW,MAAM,CAAC,MAAMA,MAAK,MAAM,CAAC;AAAA,MAChD;AAEA,UAAI,WAAW,WAAW,GAAG;AAC5B,eAAO,WAAW,CAAC;AAAA,MACpB;AAGA,aAAO;AAAA,IACR;AAQA,aAAS,WAAW,OAAOA,OAAM;AAChC,YAAM,YAAY,cAAc,OAAOA,KAAI;AAE3C,aACC,aAAa,UAAU,YAAY,UAAU,SAAS,KAAK,SAAS;AAAA,IAEtE;AAGA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,eAAeC,OAAM;AACpB,kBAAM,eAAe,WAAW,SAASA,KAAI;AAE7C,gBACCA,MAAK,OAAO,SAAS,aACrB,CAAC,WAAW,cAAcA,MAAK,MAAM,GACpC;AACD,oBAAM,gBAAgB,WACpB,aAAaA,KAAI,EACjB,MAAM,YAAU,mBAAmB,IAAI,OAAO,IAAI,CAAC;AAErD,kBAAI,CAAC,eAAe;AACnB,wBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,aAAa,CAAC;AAAA,cACjD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpHA;AAAA,4DAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AA8BjB,aAAS,mBAAmB,MAAM,OAAO;AACxC,UAAI,KAAK,WAAW,MAAM,QAAQ;AACjC,eAAO;AAAA,MACR;AAEA,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACrC,cAAM,YAAY,KAAK,CAAC,GACvB,aAAa,MAAM,CAAC;AAErB,YACC,UAAU,SAAS,WAAW,QAC9B,UAAU,UAAU,WAAW,OAC9B;AACD,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,aAAa,MAAM,OAAO;AAClC,UAAI,OAAO,SAAS,YAAY,OAAO,UAAU,UAAU;AAE1D,eAAO,SAAS;AAAA,MACjB;AACA,UAAI,MAAM,QAAQ,IAAI,KAAK,MAAM,QAAQ,KAAK,GAAG;AAEhD,eAAO,mBAAmB,MAAM,KAAK;AAAA,MACtC;AAEA,aAAO;AAAA,IACR;AAOA,aAAS,eAAeC,OAAM;AAC7B,aAAOA,MAAK,SAAS,SAASA,MAAK,SAAS;AAAA,IAC7C;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,UACA;AAAA,YACC,mBAAmB;AAAA,UACpB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP,EAAE,MAAM,CAAC,YAAY,gBAAgB,cAAc,EAAE;AAAA,UACrD;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,mBAAmB;AAAA,gBAClB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,YACC;AAAA,UACD,cACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAACE,QAAO,EAAE,kBAAkB,CAAC,IAAI,QAAQ;AAC/C,cAAM,EAAE,WAAW,IAAI;AAUvB,iBAAS,OAAO,WAAW,YAAY,YAAY;AAClD,kBAAQ,OAAO;AAAA,YACd,MAAM;AAAA,YACN;AAAA,YACA,KAAK,SAAS;AAAA,cACb,WAAW,SAAS,sBACjB,WAAW,QACX;AAAA,cACH;AAAA,YACD;AAAA,YACA,MAAM;AAAA,cACL,YAAY,SAAS;AAAA,gBACpB,WAAW,SAAS,sBACjB,WAAW,QACX;AAAA,cACJ;AAAA,cACA,YAAY,SAAS;AAAA,gBACpB,WAAW,SAAS,sBACjB,WAAW,QACX;AAAA,cACJ;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AASA,iBAAS,UAAU,OAAO,aAAa;AACtC,gBAAM,YAAY,CAAC;AACnB,cAAI,QAAQ;AAEZ,mBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACtC,kBAAMD,QAAO,MAAM,CAAC;AAEpB,gBAAI,YAAYA,KAAI,KAAK,eAAeA,KAAI,GAAG;AAE9C,oBAAM,OAAO,SAAS,sBAAsBA,KAAI;AAChD,oBAAM,MACL,SAAS,OAAO,OAAO,WAAW,UAAUA,MAAK,GAAG;AAGrD,uBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAC1C,sBAAM,WAAW,UAAU,CAAC;AAE5B,oBAAI,aAAa,SAAS,KAAK,GAAG,GAAG;AACpC,2BAAS,QAAQ;AAAA,oBAChB,GAAIA,MAAK,SAAS,QAAQ,CAACA,KAAI,IAAI,CAAC;AAAA,kBACrC;AACA,2BAAS,QAAQ;AAAA,oBAChB,GAAIA,MAAK,SAAS,QAAQ,CAACA,KAAI,IAAI,CAAC;AAAA,kBACrC;AACA,0BAAQ;AACR;AAAA,gBACD;AAAA,cACD;AACA,kBAAI,CAAC,OAAO;AACX,0BAAU,KAAK;AAAA,kBACd;AAAA,kBACA,SAASA,MAAK,SAAS,QAAQ,CAACA,KAAI,IAAI,CAAC;AAAA,kBACzC,SAASA,MAAK,SAAS,QAAQ,CAACA,KAAI,IAAI,CAAC;AAAA,gBAC1C,CAAC;AAAA,cACF;AACA,sBAAQ;AAAA,YACT;AAAA,UACD;AAEA,qBAAW,EAAE,SAAS,QAAQ,KAAK,WAAW;AAE7C,gBAAI,QAAQ,WAAW,KAAK,QAAQ,WAAW,GAAG;AACjD,oBAAM,CAAC,MAAM,IAAI,SAChB,CAAC,MAAM,IAAI,SACX,cAAc,MAAM,QAAQ,MAAM,GAClC,cAAc,MAAM,QAAQ,MAAM,GAClC,aACC,cAAc,cAAc,SAAS,QACtC,aACC,cAAc,cAAc,SAAS;AAEvC,kBAAI,KAAK,IAAI,cAAc,WAAW,IAAI,GAAG;AAC5C,uBAAO,cAAc,YAAY,UAAU;AAAA,cAC5C,WACEC,WAAU,kBACV,cAAc,eACdA,WAAU,kBAAkB,cAAc,aAC1C;AACD,uBAAO,gBAAgB,YAAY,UAAU;AAAA,cAC9C;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,iBAAiBD,OAAM;AACtB,sBAAUA,MAAK,YAAY,OAAK,EAAE,SAAS,UAAU;AAAA,UACtD;AAAA,UACA,UAAUA,OAAM;AACf;AAAA,cACCA,MAAK;AAAA,cACL,OAAK,EAAE,SAAS,sBAAsB,CAAC,EAAE;AAAA,YAC1C;AACA;AAAA,cACCA,MAAK;AAAA,cACL,OAAK,EAAE,SAAS,sBAAsB,EAAE;AAAA,YACzC;AAAA,UACD;AAAA,UACA,iCAAiCA,OAAM;AACtC,gBAAI,mBAAmB;AACtB;AAAA,gBACCA,MAAK,SAAS,kBACXA,MAAK,UACLA,MAAK;AAAA,gBACR,OAAK,EAAE,SAAS;AAAA,cACjB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC3QA;AAAA,kDAAAE,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,UAAU;AAAA,UACT,MAAM;AAAA,QACP;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,eAAeC,OAAM;AACpB,kBAAM,OAAOA,MAAK;AAGlB,gBAAI,KAAK,SAAS,kBAAkB;AACnC;AAAA,YACD;AAGA,gBAAI,KAAK,SAAS,eAAe;AAChC;AAAA,YACD;AAGA,gBAAI,KAAK,SAAS,oBAAoB,KAAK,KAAK,WAAW,GAAG;AAC7D;AAAA,YACD;AAGA,gBACC,KAAK,SAAS,oBACd,KAAK,KAAK,WAAW,KACrB,KAAK,KAAK,CAAC,EAAE,SAAS,eACrB;AACD;AAAA,YACD;AAGA,gBACC,KAAK,SAAS,oBACd,KAAK,KAAK,UAAU,KACpB,KAAK,KAAK,CAAC,EAAE,SAAS,eACrB;AACD,oBAAM,IAAI,KAAK,KAAK,CAAC;AAGrB,kBAAI,EAAE,WAAW,SAAS,qBAAqB;AAC9C;AAAA,cACD;AAGA,kBACC,EAAE,WAAW,SAAS,oBACtB,EAAE,WAAW,KAAK,WAAW,KAC7B,EAAE,WAAW,KAAK,CAAC,EAAE,SAAS,qBAC7B;AACD;AAAA,cACD;AAAA,YACD;AAEA,oBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,OAAO,CAAC;AAAA,UAC3C;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpFA;AAAA,yDAAAC,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,UACP;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,UAAU;AAAA,QACX;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,gBAAgB,QAAQ,QAAQ,CAAC,KAAK;AAC5C,cAAM,aAAa,QAAQ;AAO3B,iBAAS,UAAU,eAAe;AACjC,gBAAM,YAAY,cAAc,CAAC;AAEjC,iBAAO,cAAc;AAAA,QACtB;AAOA,iBAAS,2BAA2B,MAAM;AACzC,cAAI,UAAU,aAAa,GAAG;AAC7B,kBAAM,SAAS,IAAI,OAAO,eAAe,GAAG;AAE5C,mBAAO,OAAO,KAAK,IAAI;AAAA,UACxB;AACA,iBAAO,SAAS;AAAA,QACjB;AAOA,iBAAS,cAAc,OAAO;AAC7B,iBAAO,MAAM,UAAU;AAAA,YACtB,cACC,SAAS,KAAK,CAAC,KAAK,SAAS,KAAK,CAAC,EAAE,SAAS;AAAA,UAChD;AAAA,QACD;AAOA,iBAAS,cAAcC,OAAM;AAC5B,gBAAM,QAAQ,WAAW,SAASA,KAAI,GACrC,aAAa,cAAc,KAAK,GAChC,iBAAiB,WAAW,CAAC;AAE9B,cACC,kBACA,2BAA2B,eAAe,IAAI,GAC7C;AACD,gBAAI,eAAe,WAAW,WAAW,GAAG;AAC3C,sBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,WAAW,CAAC;AAAA,YAC/C;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,UACpB,yBAAyB;AAAA,QAC1B;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzHA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAkBA,aAAS,mBAAmBC,OAAM;AACjC,YAAM,SAASA,MAAK;AAEpB;AAAA;AAAA,QAEE,OAAO,SAAS,0BAA0B,OAAO,SAASA;AAAA,QAE3D,OAAO,SAAS,kBAChB,OAAO,SAAS,iBACf,OAAO,SAAS,cAChB,OAAO,UAAUA,SACjB,OAAO,OAAO,SAAS,mBACvB,OAAO,SAAS,uBAAuB,OAAO,SAASA;AAAA;AAAA,IAE1D;AAWA,aAAS,gBAAgBA,OAAM;AAC9B,YAAM,SAASA,MAAK;AAEpB,aACE,OAAO,SAAS,qBAChB,OAAO,aAAa,OAAO,SAC3B,OAAO,aAAaA,SACpB,OAAO,SAAS,qBAChB,OAAO,OAAO;AAAA,MACd,OAAO,UAAU,OAAO,YACxB,OAAO,UAAUA;AAAA,IAEpB;AAUA,aAAS,yBAAyBA,OAAM;AACvC,YAAM,SAASA,MAAK;AAEpB,aACC,CAAC,OAAO,YACR,OAAO,SAAS,cAChB,OAAO,OAAO,SAAS,mBACvB,OAAO,UAAUA,SACjB,OAAO,QAAQA;AAAA,IAEjB;AAOA,aAAS,8BAA8BA,OAAM;AAC5C,YAAM,SAASA,MAAK;AAEpB,aACC,OAAO,SAAS,cAChB,OAAO,OAAO,SAAS,sBACvB,OAAO;AAAA,IAET;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,YACN,MAAM;AAAA,UACP;AAAA,UACA,aAAa;AAAA,QACd;AAAA,QACA,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,WAAW,IAAI,IAAI,QAAQ,OAAO;AACxC,cAAM,gBAAgB,oBAAI,IAAI;AAC9B,cAAM,aAAa,QAAQ;AAE3B,YAAI;AAQJ,iBAAS,aAAa,MAAM;AAC3B,iBAAO,SAAS,IAAI,IAAI;AAAA,QACzB;AAQA,iBAAS,4BAA4BC,OAAM;AAC1C,gBAAM,WAAW,YAAY,IAAI,IAAIA,MAAK,IAAI;AAE9C,iBACC,YACA,SAAS,KAAK,WAAW,KACzB,SAAS,WAAW,KAAK,SAAO,IAAI,eAAeA,KAAI;AAAA,QAEzD;AAOA,iBAAS,YAAYA,OAAM;AAC1B,gBAAM,SAASA,MAAK;AAOpB,cACC,OAAO,SAAS,sBAChB,OAAO,aAAaA,SACpB,CAAC,OAAO,UACP;AACD,mBAAO,mBAAmB,MAAM;AAAA,UACjC;AAEA,iBACC,OAAO,SAAS,oBAChB,OAAO,SAAS,mBAChB,CAAC,gBAAgBA,KAAI,KACrB,CAAC,yBAAyBA,KAAI,KAC9B,EACC,4BAA4BA,KAAI,KAChC,CAAC,8BAA8BA,KAAI;AAAA,QAGtC;AAQA,iBAAS,OAAOA,OAAM;AAUrB,cAAI,CAAC,cAAc,IAAIA,MAAK,MAAM,SAAS,CAAC,GAAG;AAC9C,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,MAAMA,MAAK;AAAA,cACZ;AAAA,YACD,CAAC;AACD,0BAAc,IAAIA,MAAK,MAAM,SAAS,CAAC;AAAA,UACxC;AAAA,QACD;AAEA,eAAO;AAAA,UACN,QAAQA,OAAM;AACb,0BAAc,WAAW,SAASA,KAAI;AAAA,UACvC;AAAA,UAEA,WAAWA,OAAM;AAChB,gBAAI,aAAaA,MAAK,IAAI,KAAK,YAAYA,KAAI,GAAG;AACjD,qBAAOA,KAAI;AAAA,YACZ;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AChPA;AAAA,iDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAWjB,aAAS,mBAAmBC,OAAM;AACjC,YAAM,SAASA,MAAK;AAEpB;AAAA;AAAA,QAEE,OAAO,SAAS,0BAA0B,OAAO,SAASA;AAAA,QAE3D,OAAO,SAAS,kBAChB,OAAO,SAAS,iBACf,OAAO,SAAS,cAChB,OAAO,UAAUA,SACjB,OAAO,OAAO,SAAS,mBACvB,OAAO,SAAS,uBAAuB,OAAO,SAASA;AAAA;AAAA,IAE1D;AAWA,aAAS,gBAAgBA,OAAM;AAC9B,YAAM,SAASA,MAAK;AAEpB,aACE,OAAO,SAAS,qBAChB,OAAO,aAAa,OAAO,SAC3B,OAAO,aAAaA,SACpB,OAAO,SAAS,qBAChB,OAAO,OAAO;AAAA,MACd,OAAO,UAAU,OAAO,YACxB,OAAO,UAAUA;AAAA,IAEpB;AAUA,aAAS,8BAA8BA,OAAM;AAC5C,YAAM,SAASA,MAAK;AAEpB,aACC,CAAC,OAAO,YACR,OAAO,SAAS,cAChB,OAAO,OAAO,SAAS,mBACvB,OAAO,QAAQA;AAAA,IAEjB;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC;AAAA,QAEjB,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,YACN,MAAM;AAAA,UACP;AAAA,UACA,aAAa;AAAA,QACd;AAAA,QACA,UAAU;AAAA,UACT,YAAY;AAAA,UACZ,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,WAAW,IAAI,IAAI,QAAQ,OAAO;AACxC,cAAM,gBAAgB,oBAAI,IAAI;AAC9B,cAAM,aAAa,QAAQ;AAE3B,YAAI;AAQJ,iBAAS,aAAa,MAAM;AAC3B,iBAAO,SAAS,IAAI,IAAI;AAAA,QACzB;AAQA,iBAAS,4BAA4BC,OAAM;AAC1C,gBAAM,WAAW,YAAY,IAAI,IAAIA,MAAK,IAAI;AAE9C,iBACC,YACA,SAAS,KAAK,WAAW,KACzB,SAAS,WAAW,KAAK,SAAO,IAAI,eAAeA,KAAI;AAAA,QAEzD;AAOA,iBAAS,YAAYA,OAAM;AAE1B,cAAI,SAAS,qBAAqBA,KAAI,GAAG;AACxC,mBAAO;AAAA,UACR;AAEA,gBAAM,SAASA,MAAK;AAOpB,cACC,OAAO,SAAS,sBAChB,OAAO,aAAaA,SACpB,CAAC,OAAO,UACP;AACD,mBAAO,mBAAmB,MAAM;AAAA,UACjC;AAEA,iBACC,OAAO,SAAS,oBAChB,OAAO,SAAS,mBAChB,CAAC,gBAAgBA,KAAI,KACrB,CAAC,8BAA8BA,KAAI,KACnC,CAAC,4BAA4BA,KAAI;AAAA,QAEnC;AAQA,iBAAS,OAAOA,OAAM;AAUrB,cAAI,CAAC,cAAc,IAAIA,MAAK,MAAM,SAAS,CAAC,GAAG;AAC9C,kBAAM,YAAYA,MAAK,SAAS;AAEhC,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW,YAAY,sBAAsB;AAAA,cAC7C,MAAM;AAAA,gBACL,MAAMA,MAAK;AAAA,cACZ;AAAA,YACD,CAAC;AACD,0BAAc,IAAIA,MAAK,MAAM,SAAS,CAAC;AAAA,UACxC;AAAA,QACD;AAEA,eAAO;AAAA,UACN,QAAQA,OAAM;AACb,0BAAc,WAAW,SAASA,KAAI;AAAA,UACvC;AAAA,UAEA,CAAC,CAAC,cAAc,mBAAmB,CAAC,EAAEA,OAAM;AAC3C,gBAAI,aAAaA,MAAK,IAAI,KAAK,YAAYA,KAAI,GAAG;AACjD,qBAAOA,KAAI;AAAA,YACZ;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC9NA;AAAA,+CAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,EAAE,iBAAiB,IAAI;AAC7B,QAAM;AAAA,MACL;AAAA,MACA;AAAA,IACD,IAAI;AAOJ,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,mBAAmB,CAAC;AAAA,YACpB,YAAY,CAAC;AAAA,YACb,KAAK;AAAA,YACL,YAAY;AAAA,UACb;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,KAAK;AAAA,gBACJ,MAAM;AAAA,cACP;AAAA,cACA,KAAK;AAAA,gBACJ,MAAM;AAAA,cACP;AAAA,cACA,YAAY;AAAA,gBACX,MAAM;AAAA,gBACN,aAAa;AAAA,gBACb,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,cACD;AAAA,cACA,mBAAmB;AAAA,gBAClB,MAAM;AAAA,gBACN,aAAa;AAAA,gBACb,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,cACD;AAAA,cACA,YAAY;AAAA,gBACX,MAAM,CAAC,UAAU,OAAO;AAAA,cACzB;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,UAAU;AAAA,UACV,iBACC;AAAA,UACD,SAAS;AAAA,UACT,gBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,OAAO,IAAI,QAAQ;AAC1B,cAAM,EAAE,KAAK,YAAY,UAAU,KAAK,UAAU,IAAI;AACtD,cAAM,aAAa,QAAQ,eAAe;AAC1C,cAAM,aAAa,IAAI,IAAI,QAAQ,UAAU;AAC7C,cAAM,oBAAoB,QAAQ,kBAAkB;AAAA,UACnD,aAAW,IAAI,OAAO,SAAS,GAAG;AAAA,QACnC;AACA,cAAM,gBAAgB,oBAAI,IAAI;AAQ9B,iBAAS,wBAAwB,MAAM;AACtC,iBAAO,kBAAkB,KAAK,aAAW,QAAQ,KAAK,IAAI,CAAC;AAAA,QAC5D;AAEA,cAAM,wBAAwB;AAAA,UAC7B,kBACC,cACA,SAAU,QAAQ;AACjB,mBACC,CAAC,OAAO;AAAA,aAEN,OAAO,OAAO,SAAS,UACxB,OAAO,OAAO,SAAS;AAAA,YAEtB,OAAO,OAAO,SAAS,cACvB,OAAO,OAAO,UAAU,UACxB,OAAO,OAAO,OAAO,SAAS,mBAC9B,OAAO,OAAO,OAAO,OAAO,SAC3B,OAAO,OAAO;AAAA,UAEnB;AAAA,UACD,kBAAkB,QAAQC,OAAM;AAC/B,mBAAO,OAAO,SAASA;AAAA,UACxB;AAAA,UACA,mBAAmB,QAAQA,OAAM;AAChC,mBAAO,OAAO,OAAOA;AAAA,UACtB;AAAA,UACA,SAAS,QAAQA,OAAM;AACtB,gBAAI,OAAO,OAAO,SAAS,iBAAiB;AAC3C,oBAAM,oBACL,OAAO,MAAM,SAAS,OAAO,IAAI;AAElC,qBACE,CAAC,qBAAqB,OAAO,UAAUA,SACvC,qBAAqB,OAAO,QAAQA,SAAQ;AAAA,YAE/C;AACA,mBACC,cACA,CAAC,qBAAqBA,KAAI,KAC1B,CAAC,OAAO,YACR,OAAO,IAAI,SAASA,MAAK;AAAA,UAE3B;AAAA,UACA,gBAAgB,QAAQA,OAAM;AAC7B,mBACC,OAAO,UAAUA,SACjB,oBAAoB,OAAO,QAAQ,MAClC,oBAAoB,OAAO,KAAK;AAAA,UAEnC;AAAA,UACA,wBAAwB;AAAA,UACxB,0BAA0B;AAAA,UAC1B,aAAa;AAAA,UACb,oBAAoB;AAAA,UACpB,yBAAyB;AAAA,UACzB,kBAAkB;AAAA,UAClB,qBAAqB;AAAA,UACrB,kBAAkB;AAAA,UAClB,oBAAoB;AAAA,UACpB,aAAa;AAAA,UACb,cAAc;AAAA,QACf;AAEA,eAAO;AAAA,UACN,CAAC,CAAC,cAAc,mBAAmB,CAAC,EAAEA,OAAM;AAC3C,kBAAM,OAAOA,MAAK;AAClB,kBAAM,SAASA,MAAK;AAEpB,kBAAM,aAAa,iBAAiB,IAAI;AAExC,kBAAM,UAAU,aAAa;AAC7B,kBAAM,SAAS,aAAa;AAE5B,gBACC,EAAE,WAAW,WACb,WAAW,IAAI,IAAI,KACnB,wBAAwB,IAAI,GAC3B;AACD;AAAA,YACD;AAEA,kBAAM,oBAAoB,sBAAsB,OAAO,IAAI;AAW3D,gBACC,qBACA,CAAC,cAAc,IAAIA,MAAK,MAAM,SAAS,CAAC,MACvC,sBAAsB,QACtB,kBAAkB,QAAQA,KAAI,IAC9B;AACD,4BAAc,IAAIA,MAAK,MAAM,SAAS,CAAC;AAEvC,kBAAI,YAAY,UAAU,aAAa;AAEvC,kBAAIA,MAAK,SAAS,qBAAqB;AACtC,6BAAa;AAAA,cACd;AAEA,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA;AAAA,gBACA,MAAM,EAAE,MAAM,KAAK,WAAW,KAAK,UAAU;AAAA,cAC9C,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxNA;AAAA,8CAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,UACA;AAAA,YACC,aAAa;AAAA,YACb,qBAAqB;AAAA,YACrB,kBAAkB;AAAA,YAClB,YAAY;AAAA,UACb;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,UACP;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,YAAY;AAAA,gBACX,MAAM;AAAA,cACP;AAAA,cACA,aAAa;AAAA,gBACZ,MAAM;AAAA,cACP;AAAA,cACA,kBAAkB;AAAA,gBACjB,MAAM;AAAA,cACP;AAAA,cACA,qBAAqB;AAAA,gBACpB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,UACC;AAAA,UACD,iBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAIf,cAAM;AAAA,UACL;AAAA,UACA;AAAA,YACC,aAAa;AAAA,YACb;AAAA,YACA;AAAA,YACA,YAAY;AAAA,UACb;AAAA,QACD,IAAI,QAAQ;AACZ,cAAM,SAAS,IAAI,OAAO,SAAS,GAAG;AAEtC,cAAM,aAAa,QAAQ;AAC3B,YAAI;AAOJ,cAAM,gBAAgB,oBAAI,IAAI;AAC9B,cAAM,uBAAuB,oBAAI,IAAI;AAAA,UACpC;AAAA,UACA;AAAA,QACD,CAAC;AACD,cAAM,oBAAoB,oBAAI,IAAI;AAAA,UACjC;AAAA,UACA;AAAA,QACD,CAAC;AACD,cAAM,eAAe,oBAAI,IAAI;AAAA,UAC5B;AAAA,UACA;AAAA,UACA;AAAA,QACD,CAAC;AAQD,iBAAS,4BAA4BC,OAAM;AAC1C,gBAAM,WAAW,YAAY,IAAI,IAAIA,MAAK,IAAI;AAE9C,iBACC,YACA,SAAS,KAAK,WAAW,KACzB,SAAS,WAAW,KAAK,SAAO,IAAI,eAAeA,KAAI;AAAA,QAEzD;AAQA,iBAAS,UAAU,MAAM;AACxB,iBAAO,CAAC,OAAO,KAAK,IAAI;AAAA,QACzB;AAQA,iBAAS,sBAAsBA,OAAM;AACpC,cAAI,EAAE,OAAO,IAAIA;AAEjB,iBAAO,QAAQ;AACd,gBAAI,OAAO,SAAS,iBAAiB;AACpC,qBAAO;AAAA,YACR;AAEA,qBAAS,OAAO;AAAA,UACjB;AAEA,iBAAO;AAAA,QACR;AASA,iBAAS,aAAa,iBAAiB,MAAM;AAC5C,kBACE,CAAC,oBACD,kBAAkB,IAAI,gBAAgB,IAAI,MAC3C,CAAC,qBAAqB,IAAI,gBAAgB,IAAI,KAC9C,UAAU,IAAI;AAAA,QAEhB;AAQA,iBAAS,OAAOA,OAAM;AAUrB,cAAI,CAAC,cAAc,IAAIA,MAAK,MAAM,SAAS,CAAC,GAAG;AAC9C,kBAAM,YACLA,MAAK,SAAS,sBACX,oBACA;AAEJ,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA;AAAA,cACA,MAAM;AAAA,gBACL,MAAMA,MAAK;AAAA,gBACX;AAAA,cACD;AAAA,YACD,CAAC;AACD,0BAAc,IAAIA,MAAK,MAAM,SAAS,CAAC;AAAA,UACxC;AAAA,QACD;AAEA,eAAO;AAAA,UACN,QAAQA,OAAM;AACb,0BAAc,WAAW,SAASA,KAAI;AAAA,UACvC;AAAA,UAEA,WAAWA,OAAM;AAChB,kBAAM,OAAOA,MAAK,MACjB,SAASA,MAAK,QACd,kBACC,OAAO,SAAS,qBACb,OAAO,SACP;AAEL,gBACC,4BAA4BA,KAAI,KAChC,SAAS,qBAAqBA,KAAI,GACjC;AACD;AAAA,YACD;AAEA,gBAAI,OAAO,SAAS,oBAAoB;AACvC,kBAAI,CAAC,iBAAiB;AACrB;AAAA,cACD;AAGA,kBACC,OAAO,OAAO,SAAS,gBACvB,OAAO,OAAO,SAAS,MACtB;AACD,oBAAI,UAAU,IAAI,GAAG;AACpB,yBAAOA,KAAI;AAAA,gBACZ;AAAA,cAGD,WACC,gBAAgB,SAAS,0BACzB,gBAAgB,KAAK,SAAS,sBAC9B,gBAAgB,KAAK,SAAS,SAASA,MAAK,MAC3C;AACD,oBAAI,UAAU,IAAI,GAAG;AACpB,yBAAOA,KAAI;AAAA,gBACZ;AAAA,cAGD,WACC,gBAAgB,SAAS,0BACzB,gBAAgB,MAAM,SAAS,oBAC9B;AACD,oBAAI,UAAU,IAAI,GAAG;AACpB,yBAAOA,KAAI;AAAA,gBACZ;AAAA,cACD;AAAA,YAGD,WACC,OAAO,SAAS,cAChB,OAAO,OAAO,SAAS,sBACvB,OAAO,QAAQA,SACf,CAAC,OAAO,UACP;AACD,kBAAI,mBAAmB,UAAU,IAAI,GAAG;AACvC,uBAAOA,KAAI;AAAA,cACZ;AAAA,YAOD,WACC,OAAO,SAAS,cAChB,OAAO,SAAS,qBACf;AACD,kBACC,OAAO,UACP,OAAO,OAAO,SAAS,iBACtB;AACD,oBACC,CAAC,uBACD,OAAO,aACP,OAAO,MAAM,QACb,UAAU,IAAI,GACb;AACD,yBAAOA,KAAI;AAAA,gBACZ;AAEA,sBAAM,2BACL,OAAO,IAAI,SAAS,OAAO,MAAM;AAGlC,oBAAI,CAAC,4BAA4B,OAAO,QAAQA,OAAM;AACrD;AAAA,gBACD;AAEA,sBAAM,iBACL,OAAO,MAAM,QAAQ,UAAU,IAAI;AAGpC,oBACC,kBACA,EAAE,4BAA4B,sBAC7B;AACD,yBAAOA,KAAI;AAAA,gBACZ;AAAA,cACD;AAGA,kBACE,CAAC,mBAAmB,CAAC,OAAO,YAC5B,uBAAuB,sBAAsBA,KAAI,GACjD;AACD;AAAA,cACD;AAGA,kBACC,OAAO,UAAUA,SACjB,aAAa,iBAAiB,IAAI,GACjC;AACD,uBAAOA,KAAI;AAAA,cACZ;AAAA,YAGD,WAAW,aAAa,IAAI,OAAO,IAAI,GAAG;AAEzC,kBACC,OAAO,SACP,OAAO,MAAM,SAASA,MAAK,QAC3B,UAAU,IAAI,GACb;AACD,uBAAOA,KAAI;AAAA,cACZ;AAAA,YACD,WAAW,OAAO,SAAS,sBAAsB;AAChD,kBAAI,oBAAoB,UAAU,IAAI,GAAG;AACxC,uBAAOA,KAAI;AAAA,cACZ;AAAA,YAGD,WAAW,aAAa,iBAAiB,IAAI,GAAG;AAC/C,qBAAOA,KAAI;AAAA,YACZ;AAAA,UACD;AAAA,UAEA,kBAAkBA,OAAM;AACvB,kBAAM,eAAeA,MAAK,OAAO,SAAS;AAE1C,gBAAI,gBAAgB,CAAC,kBAAkB;AACtC;AAAA,YACD;AAEA,gBAAI,UAAUA,MAAK,IAAI,GAAG;AACzB,qBAAOA,KAAI;AAAA,YACZ;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1WA;AAAA,8DAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,EAAE,gBAAgB,uBAAuB,IAAI;AAMnD,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,OAAO;AAAA,UACzB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,UAAU;AAAA,UACV,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,SAAS,QAAQ,QAAQ,CAAC,KAAK;AAOrC,iBAAS,mBAAmBC,OAAM;AACjC,cAAIA,MAAK,KAAK,SAAS,kBAAkB;AACxC;AAAA,UACD;AAEA,gBAAM,aAAa,WAAW;AAAA,YAC7BA,MAAK;AAAA,YACL;AAAA,UACD;AACA,gBAAM,mBAAmB,WAAW,cAAc,UAAU;AAE5D,cACC,WAAW,IAAI,IAAI,SAAS,iBAAiB,IAAI,MAAM,QACvD,WAAW,SACV;AACD,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,KAAK,WACJ,MAAM,iBAAiB,kBAAkB,IAAI;AAAA,YAC/C,CAAC;AAAA,UACF,WACC,WAAW,IAAI,IAAI,SAAS,iBAAiB,IAAI,MAAM,QACvD,WAAW,UACV;AACD,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,IAAI,OAAO;AACV,oBACC,WAAW;AAAA,kBACV;AAAA,kBACA;AAAA,kBACA;AAAA,oBACC,iBAAiB;AAAA,oBACjB,QAAQ;AAAA,kBACT;AAAA,gBACD,GACC;AACD,yBAAO;AAAA,gBACR;AAEA,uBAAO,MAAM;AAAA,kBACZ,CAAC,WAAW,MAAM,CAAC,GAAG,iBAAiB,MAAM,CAAC,CAAC;AAAA,kBAC/C;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAKA,eAAO;AAAA,UACN,yBAAyB,CAAAA,UAAQ,mBAAmBA,KAAI;AAAA,QACzD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5HA;AAAA,4CAAAC,UAAAC,SAAA;AAAA;AAeA,QAAM,WAAW;AAMjB,QAAM,cAAc,oBAAI,IAAI;AAAA,MAC3B;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,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,IACD,CAAC;AAoBD,QAAM,WAAN,MAAe;AAAA;AAAA;AAAA;AAAA;AAAA,MAKd,YAAY,QAAQ;AAEnB,aAAK,UAAU,MAAM,SAAS,CAAC;AAAA,MAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,OAAO,KAAKC,QAAO;AAClB,aAAK,QAAQ,GAAG,IAAIA;AAAA,MACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,iBAAiB,KAAK;AACrB,cAAM,SAAS,KAAK;AAEpB,iBAASC,SAAQ,KAAKA,UAAS,GAAGA,UAAS;AAC1C,gBAAMD,SAAQ,OAAOC,MAAK;AAE1B,cAAID,QAAO;AACV,mBAAOA;AAAA,UACR;AAAA,QACD;AACA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,YAAY,OAAO,KAAK;AACvB,aAAK,QAAQ,KAAK,QAAQ,OAAO,GAAG;AAAA,MACrC;AAAA,IACD;AAKA,QAAM,YAAN,MAAgB;AAAA;AAAA;AAAA;AAAA,MAIf,YAAY,YAAY;AACvB,aAAK,aAAa;AAClB,aAAK,0BAA0B,oBAAI,IAAI;AACvC,cAAM,SAAS,WAAW;AAE1B,iBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACvC,gBAAM,QAAQ,OAAO,CAAC;AAEtB,cAAI,CAAC,KAAK,wBAAwB,IAAI,MAAM,IAAI,MAAM,IAAI,GAAG;AAC5D,iBAAK,wBAAwB,IAAI,MAAM,IAAI,MAAM,MAAM,KAAK;AAAA,UAC7D;AACA,cACC,CAAC,KAAK,wBAAwB,IAAI,MAAM,IAAI,IAAI,IAAI,KACpD,WAAW,KACT;AAAA,YACA,MAAM,MAAM,CAAC,IAAI,MAAM,IAAI,IAAI;AAAA,YAC/B,MAAM,MAAM,CAAC;AAAA,UACd,EACC,KAAK,GACN;AACD,iBAAK,wBAAwB,IAAI,MAAM,IAAI,IAAI,MAAM,KAAK;AAAA,UAC3D;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,oBAAoB,OAAO;AAC1B,eAAO,KAAK,wBAAwB,IAAI,MAAM,IAAI,MAAM,IAAI;AAAA,MAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,mBAAmB,OAAO;AACzB,eAAO,KAAK,oBAAoB,KAAK,MAAM;AAAA,MAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,eAAe,OAAO;AACrB,eAAO,KAAK,WAAW,KAAK;AAAA,UAC3B,MAAM,MAAM,CAAC,IAAI,MAAM,IAAI,MAAM;AAAA,UACjC,MAAM,MAAM,CAAC;AAAA,QACd;AAAA,MACD;AAAA,IACD;AAKA,QAAM,gBAAN,MAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOnB,YAAY,WAAW,YAAY,YAAY,UAAU;AACxD,aAAK,aAAa;AAClB,aAAK,cAAc;AACnB,aAAK,cAAc;AAEnB,aAAK,YAAY,IAAI,SAAS,QAAQ;AACtC,aAAK,UAAU,OAAO,GAAG,EAAE,QAAQ,GAAG,MAAM,MAAM,OAAO,MAAM,CAAC;AAEhE,aAAK,qBAAqB,oBAAI,QAAQ;AACtC,aAAK,sBAAsB,oBAAI,QAAQ;AACvC,aAAK,iBAAiB,oBAAI,QAAQ;AAAA,MACnC;AAAA,MAEA,qBAAqB,OAAO;AAC3B,eAAO,KAAK,UAAU,iBAAiB,MAAM,MAAM,CAAC,CAAC;AAAA,MACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,cAAc,WAAW,aAAa;AAQrC,aAAK,mBAAmB,IAAI,aAAa,SAAS;AAAA,MACnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MA0DA,iBAAiB,OAAO,WAAW,QAAQ;AAC1C,eAAO,KAAK,kBAAkB,MAAM,OAAO,WAAW,MAAM;AAAA,MAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MA2BA,kBAAkB,OAAO,WAAW,QAAQ,OAAO;AAelD,cAAM,qBAAqB,EAAE,QAAQ,MAAM,WAAW,MAAM;AAE5D,cAAM,uBAAuB,KAAK,UAAU,iBAAiB,MAAM,CAAC,CAAC;AAErE,cAAM,qBACL,aACA,UAAU,MAAM,CAAC,KAAK,MAAM,CAAC,KAC7B,UAAU,MAAM,CAAC,KAAK,MAAM,CAAC;AAC9B,cAAM,sBACL,sBAAsB,KAAK,qBAAqB,SAAS;AAG1D,aAAK,UAAU,YAAY,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;AAGjD,aAAK,UAAU,OAAO,MAAM,CAAC,GAAG,kBAAkB;AAMlD,YAAI,oBAAoB;AACvB,eAAK,UAAU,OAAO,UAAU,MAAM,CAAC,GAAG,mBAAmB;AAC7D,eAAK,UAAU,OAAO,UAAU,MAAM,CAAC,GAAG,kBAAkB;AAAA,QAC7D;AAMA,aAAK,UAAU,OAAO,MAAM,CAAC,GAAG,oBAAoB;AAAA,MACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,iBAAiB,OAAO;AACvB,YAAI,CAAC,KAAK,oBAAoB,IAAI,KAAK,GAAG;AACzC,cAAI,KAAK,eAAe,IAAI,KAAK,GAAG;AAKnC,iBAAK,oBAAoB;AAAA,cACxB;AAAA,cACA,KAAK,WAAW,eAAe,KAAK;AAAA,YACrC;AAAA,UACD,WAAW,KAAK,mBAAmB,IAAI,KAAK,GAAG;AAC9C,kBAAM,aAAa,KAAK,mBAAmB,IAAI,KAAK;AAEpD,iBAAK,oBAAoB;AAAA,cACxB;AAAA;AAAA,cAGA,KAAK;AAAA,gBACJ,KAAK,WAAW,oBAAoB,UAAU;AAAA,cAC/C;AAAA,cAEC,KAAK,YAAY;AAAA,gBAChB,WAAW,IAAI,MAAM,SACpB,KAAK,WAAW,oBAAoB,UAAU,EAC5C,IAAI,MAAM;AAAA,cACd;AAAA,YACF;AAAA,UACD,OAAO;AACN,kBAAM,aAAa,KAAK,qBAAqB,KAAK;AAClD,kBAAM,SACL,WAAW,QACX,WAAW,KAAK,IAAI,MAAM,SAAS,MAAM,IAAI,MAAM,QACnD,CAAC,WAAW,KAAK,MAAM,KAAK,KAC5B,CAAC,WAAW,QACT,IACA,WAAW,SAAS,KAAK;AAE7B,iBAAK,oBAAoB;AAAA,cACxB;AAAA,eACC,WAAW,OACT,KAAK,iBAAiB,WAAW,IAAI,IACrC,MAAM,KAAK,YAAY,OAAO,MAAM;AAAA,YACxC;AAAA,UACD;AAAA,QACD;AACA,eAAO,KAAK,oBAAoB,IAAI,KAAK;AAAA,MAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,YAAY,OAAO;AAClB,YAAI,KAAK,WAAW,mBAAmB,KAAK,GAAG;AAC9C,eAAK,eAAe,IAAI,KAAK;AAAA,QAC9B;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,mBAAmB,OAAO;AACzB,eAAO,KAAK,qBAAqB,KAAK,EAAE;AAAA,MACzC;AAAA,IACD;AAEA,QAAM,sBAAsB;AAAA,MAC3B,OAAO;AAAA,QACN;AAAA,UACC,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,QACA;AAAA,UACC,MAAM,CAAC,SAAS,KAAK;AAAA,QACtB;AAAA,MACD;AAAA,IACD;AAGA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM,CAAC,KAAK;AAAA,cACb;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,UACD;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,YAAY;AAAA,gBACX,MAAM;AAAA,gBACN,SAAS;AAAA,gBACT,SAAS;AAAA,cACV;AAAA,cACA,oBAAoB;AAAA,gBACnB,OAAO;AAAA,kBACN;AAAA,kBACA;AAAA,oBACC,MAAM;AAAA,oBACN,YAAY;AAAA,sBACX,KAAK;AAAA,sBACL,KAAK;AAAA,sBACL,OAAO;AAAA,oBACR;AAAA,oBACA,sBAAsB;AAAA,kBACvB;AAAA,gBACD;AAAA,cACD;AAAA,cACA,eAAe;AAAA,gBACd,OAAO;AAAA,kBACN;AAAA,oBACC,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,kBACA;AAAA,oBACC,MAAM,CAAC,KAAK;AAAA,kBACb;AAAA,gBACD;AAAA,cACD;AAAA,cACA,kBAAkB;AAAA,gBACjB,OAAO;AAAA,kBACN;AAAA,oBACC,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,kBACA;AAAA,oBACC,MAAM,CAAC,KAAK;AAAA,kBACb;AAAA,gBACD;AAAA,cACD;AAAA,cACA,qBAAqB;AAAA,gBACpB,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,YAAY;AAAA,kBACZ,MAAM;AAAA,oBACL,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,cACA,oBAAoB;AAAA,gBACnB,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,YAAY;AAAA,kBACZ,MAAM;AAAA,oBACL,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,cACA,aAAa;AAAA,gBACZ,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,MAAM;AAAA,oBACL,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,cACA,gBAAgB;AAAA,gBACf,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,WAAW;AAAA,gBACZ;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,cACA,iBAAiB;AAAA,cACjB,kBAAkB;AAAA,cAClB,mBAAmB;AAAA,cACnB,wBAAwB;AAAA,gBACvB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,0BAA0B;AAAA,gBACzB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,cAAc;AAAA,gBACb,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,kBACN,KAAK;AAAA,oBACJ,SAAS;AAAA,kBACV;AAAA,gBACD;AAAA,cACD;AAAA,cACA,gBAAgB;AAAA,gBACf,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,kBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,0BAA0B;AAChC,cAAM,2BAA2B;AACjC,cAAM,+BAA+B;AAErC,YAAI,aAAa;AACjB,YAAI,aAAa;AACjB,cAAM,UAAU;AAAA,UACf,YAAY;AAAA,UACZ,oBAAoB;AAAA,YACnB,KAAK;AAAA,YACL,KAAK;AAAA,YACL,OAAO;AAAA,UACR;AAAA,UACA,eAAe;AAAA,UACf,qBAAqB;AAAA,YACpB,YAAY;AAAA,YACZ,MAAM;AAAA,UACP;AAAA,UACA,oBAAoB;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM;AAAA,UACP;AAAA,UACA,aAAa;AAAA,YACZ,MAAM;AAAA,UACP;AAAA,UACA,gBAAgB;AAAA,YACf,WAAW;AAAA,UACZ;AAAA,UACA,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,UACjB,kBAAkB;AAAA,UAClB,mBAAmB;AAAA,UACnB,wBAAwB;AAAA,UACxB,cAAc,CAAC;AAAA,UACf,gBAAgB;AAAA,QACjB;AAEA,YAAI,QAAQ,QAAQ,QAAQ;AAC3B,cAAI,QAAQ,QAAQ,CAAC,MAAM,OAAO;AACjC,yBAAa;AACb,yBAAa;AAAA,UACd,OAAO;AACN,yBAAa,QAAQ,QAAQ,CAAC;AAC9B,yBAAa;AAAA,UACd;AAEA,cAAI,QAAQ,QAAQ,CAAC,GAAG;AACvB,mBAAO,OAAO,SAAS,QAAQ,QAAQ,CAAC,CAAC;AAEzC,gBACC,OAAO,QAAQ,uBAAuB,YACtC,QAAQ,uBAAuB,SAC9B;AACD,sBAAQ,qBAAqB;AAAA,gBAC5B,KAAK,QAAQ;AAAA,gBACb,KAAK,QAAQ;AAAA,gBACb,OAAO,QAAQ;AAAA,cAChB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,cAAM,aAAa,QAAQ;AAC3B,cAAM,YAAY,IAAI,UAAU,UAAU;AAC1C,cAAM,UAAU,IAAI;AAAA,UACnB;AAAA,UACA;AAAA,UACA,eAAe,UAAU,MAAM;AAAA,UAC/B,WAAW,KAAK;AAAA,QACjB;AACA,cAAM,kBAAkB,oBAAI,QAAQ;AASpC,iBAAS,uBACR,gBACA,cACA,YACC;AACD,gBAAM,oBAAoB,GAAG,cAAc,IAAI,UAAU,GAAG,mBAAmB,IAAI,KAAK,GAAG;AAC3F,gBAAM,kBAAkB,QAAQ,iBAAiB,IAAI,KAAK,GAAG;AAC7D,gBAAM,gBAAgB,MAAM,eAAe,IAAI,KAAK,GAAG;AACvD,cAAI;AAEJ,cAAI,eAAe,GAAG;AAKrB,6BACC,eAAe,UACZ,eACA,GAAG,YAAY,IAAI,eAAe;AAAA,UACvC,WAAW,aAAa,GAAG;AAC1B,6BACC,eAAe,QACZ,aACA,GAAG,UAAU,IAAI,aAAa;AAAA,UACnC,OAAO;AACN,6BAAiB;AAAA,UAClB;AACA,iBAAO;AAAA,YACN,UAAU;AAAA,YACV,QAAQ;AAAA,UACT;AAAA,QACD;AAQA,iBAAS,OAAO,OAAO,cAAc;AACpC,gBAAM,eAAe,MAAM,KAAK,UAAU,eAAe,KAAK,CAAC;AAC/D,gBAAM,YAAY,aAAa,OAAO,UAAQ,SAAS,GAAG,EAAE;AAC5D,gBAAM,UAAU,aAAa,OAAO,UAAQ,SAAS,GAAI,EAAE;AAE3D,kBAAQ,OAAO;AAAA,YACd,MAAM;AAAA,YACN,WAAW;AAAA,YACX,MAAM;AAAA,cACL,aAAa;AAAA,cACb;AAAA,cACA;AAAA,YACD;AAAA,YACA,KAAK;AAAA,cACJ,OAAO,EAAE,MAAM,MAAM,IAAI,MAAM,MAAM,QAAQ,EAAE;AAAA,cAC/C,KAAK;AAAA,gBACJ,MAAM,MAAM,IAAI,MAAM;AAAA,gBACtB,QAAQ,MAAM,IAAI,MAAM;AAAA,cACzB;AAAA,YACD;AAAA,YACA,IAAI,OAAO;AACV,oBAAM,QAAQ;AAAA,gBACb,MAAM,MAAM,CAAC,IAAI,MAAM,IAAI,MAAM;AAAA,gBACjC,MAAM,MAAM,CAAC;AAAA,cACd;AACA,oBAAM,UAAU;AAEhB,qBAAO,MAAM,iBAAiB,OAAO,OAAO;AAAA,YAC7C;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,oBAAoB,OAAO,eAAe;AAClD,gBAAM,cAAc,UAAU,eAAe,KAAK;AAElD,iBACC,gBAAgB;AAAA,UAEf,YAAY,SAAS,GAAG,KAAK,YAAY,SAAS,GAAI;AAAA,QAEzD;AAOA,iBAAS,YAAYG,OAAM;AAI1B,cACC,CAACA,MAAK,UACNA,MAAK,OAAO,SAAS,oBACrBA,MAAK,OAAO,WAAWA,OACtB;AACD,mBAAO;AAAA,UACR;AAOA,cAAI,YAAYA,MAAK,UAAUA,MAAK,OAAO;AAE3C,iBACE,UAAU,SAAS,qBACnB,CAAC,KAAK,KAAK,KAAK,GAAG,EAAE,SAAS,UAAU,QAAQ,KACjD,UAAU,SAAS,0BACnB,UAAU,SAAS,uBACnB,UAAU,SAAS,wBACnB,UAAU,SAAS,sBAClB;AACD,wBAAY,UAAU;AAAA,UACvB;AAEA,kBACE,UAAU,SAAS,yBACnB,UAAU,SAAS,0BACpB,UAAU,OAAO,SAAS;AAAA,QAE5B;AAQA,iBAAS,wBAAwBC,SAAQ;AACxC,gBAAM,qBAAqBA,QAAO,MAAM,OAAO,EAAE,CAAC;AAClD,gBAAM,mBAAmB,mBAAmB;AAAA,YAC3C,SAAS,6BAA6B;AAAA,UACvC;AAEA,iBAAO,qBAAqB,OAAO,IAAI,iBAAiB;AAAA,QACzD;AAUA,iBAAS,qBAAqB,UAAU,YAAY,UAAU,QAAQ;AAMrE,mBAAS,cAAc,SAAS;AAC/B,gBAAI,QAAQ,WAAW,eAAe,OAAO;AAE7C,mBACC,SAAS,oBAAoB,KAAK,KAClC,UAAU,YACT;AACD,sBAAQ,WAAW,eAAe,KAAK;AAAA,YACxC;AACA,mBAAO,WAAW,cAAc,KAAK;AAAA,UACtC;AAGA,kBAAQ;AAAA,YACP,CAAC,WAAW,MAAM,CAAC,GAAG,SAAS,MAAM,CAAC,CAAC;AAAA,YACvC;AAAA,YACA,OAAO,WAAW,WAAW,SAAS;AAAA,UACvC;AACA,kBAAQ,iBAAiB,UAAU,YAAY,CAAC;AAGhD,cAAI,WAAW,WAAW,SAAS,UAAU,CAAC,SAAS,CAAC,GAAG;AAC1D;AAAA,UACD;AACA,mBAAS,QAAQ,CAAC,SAASF,WAAU;AACpC,gBAAI,CAAC,SAAS;AAEb;AAAA,YACD;AACA,gBAAI,WAAW,OAAO;AAErB,sBAAQ,YAAY,cAAc,OAAO,CAAC;AAAA,YAC3C;AAGA,gBAAIA,WAAU,GAAG;AAChB;AAAA,YACD;AACA,gBACC,WAAW,WACX,UAAU,mBAAmB,cAAc,OAAO,CAAC,GAClD;AACD,sBAAQ;AAAA,gBACP,cAAc,SAAS,CAAC,CAAC;AAAA,gBACzB,cAAc,OAAO;AAAA,cACtB;AAAA,YACD,OAAO;AACN,oBAAM,kBAAkB,SAASA,SAAQ,CAAC;AAC1C,oBAAM,8BACL,mBAAmB,cAAc,eAAe;AACjD,oBAAM,2BACL,mBACA,WAAW,aAAa,eAAe;AAExC,kBACC,mBACA,yBAAyB,IAAI,IAAI,OAChC;AAAA,gBACC,yBAAyB;AAAA,cAC1B,IACA,WAAW,IAAI,IAAI,MACnB;AACD,wBAAQ;AAAA,kBACP,CAAC,gBAAgB,MAAM,CAAC,GAAG,QAAQ,MAAM,CAAC,CAAC;AAAA,kBAC3C;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,uBAAuBC,OAAM;AACrC,cAAIA,MAAK,SAAS,kBAAkB;AACnC,kBAAM,kBAAkB,WAAW;AAAA,cAClCA;AAAA,cACA,SAAS;AAAA,YACV;AAEA,gBAAI,iBAAiB,WAAW,cAAcA,KAAI;AAClD,gBAAI,gBAAgB,WAAW,aAAaA,KAAI;AAEhD,mBACC,SAAS;AAAA,cACR,WAAW,eAAe,cAAc;AAAA,YACzC,KACA,SAAS;AAAA,cACR,WAAW,cAAc,aAAa;AAAA,YACvC,GACC;AACD,+BAAiB,WAAW,eAAe,cAAc;AACzD,8BAAgB,WAAW,cAAc,aAAa;AAAA,YACvD;AAEA,oBAAQ;AAAA,cACP,CAAC,eAAe,MAAM,CAAC,GAAG,cAAc,MAAM,CAAC,CAAC;AAAA,cAChD;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,sBAAsBA,OAAM;AACpC,cAAI;AAEJ,cAAIA,MAAK,UAAU,QAAQ;AAC1B,2BAAe,WAAW;AAAA,cACzBA,MAAK;AAAA,cACLA,MAAK,UAAU,CAAC;AAAA,cAChB,SAAS;AAAA,YACV;AAAA,UACD,OAAO;AACN,2BAAe,WAAW,aAAaA,OAAM,CAAC;AAAA,UAC/C;AACA,gBAAM,eAAe,WAAW,aAAaA,KAAI;AAEjD,0BAAgB,IAAI,YAAY;AAChC,0BAAgB,IAAI,YAAY;AAMhC,cAAIA,MAAK,UAAU;AAClB,kBAAM,WAAW,WAAW;AAAA,cAC3BA,MAAK;AAAA,cACL,SAAS;AAAA,YACV;AACA,kBAAM,mBAAmB,WAAW;AAAA,cACnCA,MAAK;AAAA,cACL;AAAA,cACA,EAAE,QAAQ,SAAS,oBAAoB;AAAA,YACxC,EAAE;AACF,kBAAM,qBAAqB,mBACxB,WAAW,eAAeA,MAAK,QAAQ;AAAA,cACvC,MAAM,mBAAmB;AAAA,YAC1B,CAAC,IACA,WAAW,cAAcA,MAAK,MAAM;AACvC,kBAAM,oBAAoB,WAAW,eAAe,QAAQ;AAC5D,kBAAM,aACL,kBAAkB,IAAI,IAAI,SAC1B,aAAa,IAAI,MAAM,OACpB,oBACA;AAEJ,oBAAQ,iBAAiB,UAAU,YAAY,CAAC;AAAA,UACjD;AAEA,gBAAM,mBACLA,MAAK,OAAO,SAAS,6BAClB,WAAW,cAAcA,MAAK,OAAO,KAAK,IAC1C;AACJ,gBAAM,cAAc,WAAW,eAAe,gBAAgB;AAE9D,kBAAQ,iBAAiB,cAAc,aAAa,CAAC;AAErD;AAAA,YACCA,MAAK;AAAA,YACL;AAAA,YACA;AAAA,YACA,QAAQ,eAAe;AAAA,UACxB;AAAA,QACD;AAOA,iBAAS,gBAAgB,QAAQ;AAChC,gBAAM,aAAa,CAAC;AACpB,gBAAM,aAAa,CAAC;AAEpB,mBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACvC,kBAAM,YAAY,OAAO,CAAC;AAE1B,gBAAI,SAAS,oBAAoB,SAAS,GAAG;AAC5C,yBAAW,KAAK,SAAS;AAAA,YAC1B,WAAW,SAAS,oBAAoB,SAAS,GAAG;AACnD,yBAAW,KAAK;AAAA,gBACf,MAAM,WAAW,IAAI;AAAA,gBACrB,OAAO;AAAA,cACR,CAAC;AAAA,YACF;AAAA,UACD;AAEA,mBAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,KAAK;AAChD,kBAAM,YAAY,WAAW,CAAC,EAAE;AAChC,kBAAM,aAAa,WAAW,CAAC,EAAE;AAGjC,gBACC,CAAC,gBAAgB,IAAI,SAAS,KAC9B,CAAC,gBAAgB,IAAI,UAAU,GAC9B;AACD,oBAAM,sBAAsB,IAAI;AAAA,gBAC/B,WAAW,iBAAiB,WAAW,UAAU;AAAA,cAClD;AAEA,kCAAoB,QAAQ,WAAS;AACpC,oBACC,CAAC,oBAAoB;AAAA,kBACpB,QAAQ,mBAAmB,KAAK;AAAA,gBACjC,GACC;AACD,0BAAQ,iBAAiB,OAAO,WAAW,CAAC;AAAA,gBAC7C;AAAA,cACD,CAAC;AAAA,YACF;AAEA,oBAAQ,iBAAiB,YAAY,WAAW,CAAC;AAAA,UAClD;AAAA,QACD;AAQA,iBAAS,WAAWA,OAAM;AACzB,gBAAM,oBAAoB,IAAI;AAAA,YAC7B,WAAW,UAAUA,OAAM,EAAE,iBAAiB,KAAK,CAAC;AAAA,UACrD;AAEA,4BAAkB,QAAQ,WAAS;AAClC,gBAAI,CAAC,kBAAkB,IAAI,QAAQ,mBAAmB,KAAK,CAAC,GAAG;AAC9D,oBAAM,mBACL,UAAU,oBAAoB,KAAK;AAEpC,kBAAI,UAAU,kBAAkB;AAC/B,wBAAQ,YAAY,KAAK;AAAA,cAC1B,OAAO;AACN,wBAAQ,iBAAiB,OAAO,kBAAkB,CAAC;AAAA,cACpD;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,yBAAyB,OAAO,UAAU;AAClD,cAAIA,QAAO;AAEX,iBACCA,MAAK,UACL,CAACA,MAAK,OAAO,KAAK,SAAS,WAAW,KACtC,CAACA,MAAK,OAAO,KAAK,SAAS,aAAa,GACvC;AACD,YAAAA,QAAOA,MAAK;AAAA,UACb;AACA,UAAAA,QAAOA,MAAK;AAEZ,iBAAO,CAACA,SAAQA,MAAK,IAAI,MAAM,SAAS,MAAM,IAAI,MAAM;AAAA,QACzD;AAUA,iBAAS,qBAAqB,YAAY,aAAa;AACtD,gBAAM,iBAAiB,WAAW,IAAI,IAAI;AAC1C,gBAAM,kBAAkB,YAAY,IAAI,MAAM;AAE9C,cACC,mBAAmB,mBACnB,mBAAmB,kBAAkB,GACpC;AACD,mBAAO;AAAA,UACR;AAEA,mBACK,OAAO,iBAAiB,GAC5B,OAAO,iBACP,EAAE,MACD;AACD,gBAAI,CAAC,UAAU,wBAAwB,IAAI,IAAI,GAAG;AACjD,qBAAO;AAAA,YACR;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAEA,cAAM,yBAAyB,oBAAI,IAAI;AAEvC,cAAM,sBAAsB;AAAA,UAC3B,gCAAgCA,OAAM;AACrC,kBAAM,iBAAiB,WAAW,cAAcA,KAAI;AACpD,kBAAM,iBAAiB,WAAW;AAAA,cACjC,CAAC,GAAGA,MAAK,QAAQ,EAAE,QAAQ,EAAE,KAAK,OAAK,CAAC,KAAK;AAAA,cAC7C,SAAS;AAAA,YACV;AAEA;AAAA,cACCA,MAAK;AAAA,cACL;AAAA,cACA;AAAA,cACA,QAAQ;AAAA,YACT;AAAA,UACD;AAAA,UAEA,kCAAkCA,OAAM;AACvC,kBAAM,eAAe,WAAW,cAAcA,KAAI;AAClD,kBAAM,eAAe,WAAW;AAAA,cAC/BA,MAAK,WAAW,SACbA,MAAK,WAAW,GAAG,EAAE,IACrB;AAAA,cACH,SAAS;AAAA,YACV;AAEA;AAAA,cACCA,MAAK;AAAA,cACL;AAAA,cACA;AAAA,cACA,QAAQ;AAAA,YACT;AAAA,UACD;AAAA,UAEA,wBAAwBA,OAAM;AAC7B,kBAAM,oBAAoB,WAAW,cAAcA,OAAM;AAAA,cACxD,MAAMA,MAAK,QAAQ,IAAI;AAAA,YACxB,CAAC;AAED,gBAAI,SAAS,oBAAoB,iBAAiB,GAAG;AACpD,oBAAM,eAAe;AACrB,oBAAM,eAAe,WAAW;AAAA,gBAC/BA,MAAK;AAAA,gBACL,SAAS;AAAA,cACV;AAEA,8BAAgB,IAAI,YAAY;AAChC,8BAAgB,IAAI,YAAY;AAChC;AAAA,gBACCA,MAAK;AAAA,gBACL;AAAA,gBACA;AAAA,gBACA,QAAQ,mBAAmB;AAAA,cAC5B;AAAA,YACD;AAEA,mCAAuBA,MAAK,IAAI;AAAA,UACjC;AAAA,UAEA,qBAAqBA,OAAM;AAC1B,kBAAM,WAAW,WAAW;AAAA,cAC3BA,MAAK;AAAA,cACLA,MAAK;AAAA,cACL,WAAS,MAAM,UAAUA,MAAK;AAAA,YAC/B;AAEA,oBAAQ;AAAA,cACP,CAAC,SAAS,MAAM,CAAC,GAAGA,MAAK,MAAM,CAAC,CAAC;AAAA,cACjC,WAAW,aAAaA,MAAK,IAAI;AAAA,cACjC;AAAA,YACD;AACA,oBAAQ,YAAY,QAAQ;AAC5B,oBAAQ,YAAY,WAAW,cAAc,QAAQ,CAAC;AAAA,UACvD;AAAA,UAEA,sCAAsCA,OAAM;AAC3C,kBAAM,WAAW,WAAW;AAAA,cAC3BA,MAAK;AAAA,cACLA,MAAK;AAAA,cACL,WAAS,MAAM,UAAUA,MAAK;AAAA,YAC/B;AAQA,kBAAM,qBAAqB,WAAW,cAAc,QAAQ;AAE5D,oBAAQ,YAAY,QAAQ;AAC5B,oBAAQ,YAAY,kBAAkB;AACtC,oBAAQ,iBAAiB,oBAAoB,UAAU,CAAC;AAAA,UACzD;AAAA,UAEA,4BAA4BA,OAAM;AACjC,gBAAI;AAEJ,gBAAIA,MAAK,UAAU,YAAYA,MAAK,MAAM,GAAG;AAC5C,iCAAmB,QAAQ;AAAA,YAC5B,WACCA,MAAK,WACJA,MAAK,OAAO,SAAS,wBACrBA,MAAK,OAAO,SAAS,4BACrB;AACD,iCAAmB,QAAQ,mBAAmB;AAAA,YAC/C,WACCA,MAAK,UACLA,MAAK,OAAO,SAAS,uBACpB;AACD,iCAAmB,QAAQ,oBAAoB;AAAA,YAChD,OAAO;AACN,iCAAmB;AAAA,YACpB;AAMA,gBAAI,CAAC,SAAS,uBAAuB,IAAIA,MAAK,OAAO,IAAI,GAAG;AAC3D,sBAAQ;AAAA,gBACP,WAAW,cAAcA,KAAI;AAAA,gBAC7B,WAAW,cAAcA,MAAK,MAAM;AAAA,gBACpC;AAAA,cACD;AAAA,YACD;AAEA;AAAA,cACCA,MAAK;AAAA,cACL,WAAW,cAAcA,KAAI;AAAA,cAC7B,WAAW,aAAaA,KAAI;AAAA,cAC5B;AAAA,YACD;AAAA,UACD;AAAA,UAEA,gBAAgB;AAAA,UAEhB,4DAA4DA,OAAM;AACjE,kBAAM,aAAa,WAAW,cAAcA,KAAI;AAChD,kBAAM,eAAe,WAAW;AAAA,cAC/BA,MAAK;AAAA,cACL,SAAS;AAAA,YACV;AAEA,oBAAQ;AAAA,cACP,CAAC,aAAa,MAAM,CAAC,GAAGA,MAAK,KAAK,MAAM,CAAC,CAAC;AAAA,cAC1C;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,UAEA,sBAAsBA,OAAM;AAC3B,kBAAM,aAAa,WAAW,cAAcA,KAAI;AAOhD,gBACC,CAAC,QAAQ,0BACT,CAAC,SAAS,kBAAkBA,MAAK,MAAMA,MAAK,UAAU,KACtD,yBAAyB,YAAYA,KAAI,GACxC;AACD,oBAAM,oBAAoB,WAAW;AAAA,gBACpCA,MAAK;AAAA,gBACLA,MAAK;AAAA,gBACL,WACC,MAAM,SAAS,gBAAgB,MAAM,UAAU;AAAA,cACjD;AACA,oBAAM,aAAa,WAAW;AAAA,gBAC7BA,MAAK;AAAA,gBACLA,MAAK;AAAA,gBACL,WACC,MAAM,SAAS,gBAAgB,MAAM,UAAU;AAAA,cACjD;AAEA,oBAAM,uBACL,WAAW,cAAc,iBAAiB;AAC3C,oBAAM,sBACL,WAAW,eAAe,UAAU;AACrC,oBAAM,sBACL,WAAW,cAAc,UAAU;AAEpC,sBAAQ,iBAAiB,mBAAmB,YAAY,CAAC;AACzD,sBAAQ,iBAAiB,YAAY,YAAY,CAAC;AAElD,sBAAQ;AAAA,gBACP;AAAA,gBACA;AAAA,gBACA,qBAAqB,SAAS,gBAC7B,QAAQ,2BACN,IACA;AAAA,cACJ;AAYA,kBACC,oBAAoB,IAAI,IAAI,SAC5B,oBAAoB,IAAI,MAAM,MAC7B;AACD,wBAAQ;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD,OAAO;AAUN,wBAAQ;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA,oBAAoB,SAAS,gBAC5B,QAAQ,2BACN,IACA;AAAA,gBACJ;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UAEA,mFACC,CAAAA,UAAQ,uBAAuBA,MAAK,IAAI;AAAA,UAEzC,uBAAuBA,OAAM;AAC5B,gBAAIA,MAAK,gBAAgB,MAAM;AAC9B,oBAAM,eAAe,WAAW;AAAA,gBAC/BA;AAAA,gBACA,SAAS;AAAA,cACV;AAGA;AAAA,gBACCA,MAAK;AAAA,gBACL,WAAW,cAAcA,OAAM,EAAE,MAAM,EAAE,CAAC;AAAA,gBAC1C;AAAA,gBACA;AAAA,cACD;AAEA,kBAAIA,MAAK,QAAQ;AAEhB,wBAAQ;AAAA,kBACP,CAAC,aAAa,MAAM,CAAC,GAAGA,MAAK,MAAM,CAAC,CAAC;AAAA,kBACrC,WAAW,cAAcA,KAAI;AAAA,kBAC7B;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UAEA,aAAaA,OAAM;AAClB,kBAAM,kBAAkB,WAAW,cAAcA,OAAM,CAAC;AAExD,gBAAIA,MAAK,MAAM;AACd,sBAAQ;AAAA,gBACPA,MAAK,KAAK;AAAA,gBACV;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AACA,gBAAIA,MAAK,MAAM;AACd,sBAAQ;AAAA,gBACPA,MAAK,KAAK;AAAA,gBACV;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AACA,gBAAIA,MAAK,QAAQ;AAChB,sBAAQ;AAAA,gBACPA,MAAK,OAAO;AAAA,gBACZ;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AACA,mCAAuBA,MAAK,IAAI;AAAA,UACjC;AAAA,UAEA,0CAA0CA,OAAM;AAC/C,kBAAM,eAAe,WAAW,eAAeA,MAAK,IAAI;AACxD,kBAAM,eAAe,WAAW;AAAA,cAC/BA,MAAK,OAAO,SAASA,MAAK,OAAO,CAAC,IAAI;AAAA,YACvC;AAEA,4BAAgB,IAAI,YAAY;AAChC,4BAAgB,IAAI,YAAY;AAChC;AAAA,cACCA,MAAK;AAAA,cACL;AAAA,cACA;AAAA,cACA,QAAQA,MAAK,IAAI,EAAE;AAAA,YACpB;AAAA,UACD;AAAA,UAEA,YAAYA,OAAM;AACjB,mCAAuBA,MAAK,UAAU;AACtC,gBAAIA,MAAK,WAAW;AACnB,qCAAuBA,MAAK,SAAS;AAAA,YACtC;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWA,4HACCA,OACC;AACD,gBAAI;AAEJ,gBAAIA,MAAK,SAAS,eAAe;AAChC,6BAAe,CAACA,MAAK,UAAU;AAC/B,kBAAIA,MAAK,WAAW;AACnB,6BAAa,KAAKA,MAAK,SAAS;AAAA,cACjC;AAAA,YACD,OAAO;AACN,6BAAe,CAACA,MAAK,IAAI;AAAA,YAC1B;AAEA,uBAAW,eAAe,cAAc;AACvC,oBAAM,YAAY,WAAW,aAAa,WAAW;AAErD,kBAAI,SAAS,iBAAiB,SAAS,GAAG;AACzC,sBAAM,kBACL,WAAW,eAAe,SAAS;AACpC,sBAAM,iBACL,WAAW,cAAc,SAAS;AAGnC,oBACC,CAAC,SAAS;AAAA,kBACT;AAAA,kBACA;AAAA,gBACD,KACA,kBACA,SAAS;AAAA,kBACR;AAAA,kBACA;AAAA,gBACD,GACC;AACD,0BAAQ;AAAA,oBACP;AAAA,oBACA,WAAW,cAAcA,KAAI;AAAA,oBAC7B;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UAEA,kBAAkBA,OAAM;AACvB,gBACCA,MAAK,WAAW;AAAA,cACf,eAAa,UAAU,SAAS;AAAA,YACjC,GACC;AACD,oBAAM,eAAe,WAAW;AAAA,gBAC/BA;AAAA,gBACA,SAAS;AAAA,cACV;AACA,oBAAM,eAAe,WAAW;AAAA,gBAC/BA;AAAA,gBACA,SAAS;AAAA,cACV;AAEA;AAAA,gBACCA,MAAK,WAAW;AAAA,kBACf,eAAa,UAAU,SAAS;AAAA,gBACjC;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,QAAQ;AAAA,cACT;AAAA,YACD;AAEA,kBAAM,YAAY,WAAW;AAAA,cAC5BA;AAAA,cACA,WACC,MAAM,SAAS,gBAAgB,MAAM,UAAU;AAAA,YACjD;AACA,kBAAM,cAAc,WAAW;AAAA,cAC9BA;AAAA,cACA,WAAS,MAAM,SAAS;AAAA,YACzB;AACA,kBAAM,YAAY,WAAW;AAAA,cAC5BA;AAAA,cACA,WAAS,MAAM,SAAS,gBAAgB,MAAM,UAAU;AAAA,YACzD;AAEA,gBAAI,WAAW;AACd,oBAAM,MACL,aAAa,UAAU,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,IACpDA,MAAK,MAAM,CAAC,IACZ,YAAY,MAAM,CAAC;AAEvB,sBAAQ;AAAA,gBACP,CAAC,UAAU,MAAM,CAAC,GAAG,GAAG;AAAA,gBACxB,WAAW,cAAcA,KAAI;AAAA,gBAC7B;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UAEA,iBAAiBA,OAAM;AACtB,kBAAM,eAAe,WAAW,cAAcA,OAAM,CAAC;AACrD,kBAAM,eAAe,WAAW,aAAaA,KAAI;AAEjD,4BAAgB,IAAI,YAAY;AAChC,4BAAgB,IAAI,YAAY;AAChC,oBAAQ;AAAA,cACP;AAAA,cACA,WAAW,eAAe,YAAY;AAAA,cACtC;AAAA,YACD;AAEA;AAAA,cACC,CAACA,MAAK,MAAM;AAAA,cACZ;AAAA,cACA;AAAA,cACA,QAAQ,eAAe;AAAA,YACxB;AAAA,UACD;AAAA,UAEA,sDAAsDA,OAAM;AAC3D,kBAAM,SACLA,MAAK,SAAS,iBAAiBA,MAAK,OAAOA,MAAK;AACjD,kBAAM,sBAAsB,WAAW;AAAA,cACtC;AAAA,cACAA,MAAK;AAAA,cACL,SAAS;AAAA,YACV;AACA,kBAAM,uBACL,WAAW,cAAc,mBAAmB;AAE7C,kBAAM,mBAAmB,WAAW;AAAA,cACnC;AAAA,cACAA,MAAK;AAAA,cACL,EAAE,QAAQ,SAAS,oBAAoB;AAAA,YACxC,EAAE;AACF,kBAAM,mBAAmB,mBACtB,WAAW,eAAe,QAAQ;AAAA,cAClC,MAAM,mBAAmB;AAAA,YAC1B,CAAC,IACA,WAAW,cAAc,MAAM;AAClC,kBAAM,kBACL,WAAW,eAAe,mBAAmB;AAC9C,kBAAM,qBAAqBA,MAAK,WAC7B,sBACA;AAEH,gBAAIA,MAAK,UAAU;AAElB,sBAAQ;AAAA,gBACP,WAAW,aAAaA,KAAI;AAAA,gBAC5B;AAAA,gBACA;AAAA,cACD;AACA,sBAAQ;AAAA,gBACPA,MAAK,SAAS;AAAA,gBACd;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AAWA,kBAAM,aACL,gBAAgB,IAAI,IAAI,SACxB,mBAAmB,IAAI,MAAM,OAC1B,kBACA;AAEJ,gBAAI,OAAO,QAAQ,qBAAqB,UAAU;AAEjD,sBAAQ;AAAA,gBACP;AAAA,gBACA;AAAA,gBACA,QAAQ;AAAA,cACT;AAMA,sBAAQ;AAAA,gBACP;AAAA,gBACAA,MAAK,WAAW,sBAAsB;AAAA,gBACtC,QAAQ;AAAA,cACT;AAAA,YACD,OAAO;AAEN,sBAAQ,YAAY,mBAAmB;AACvC,sBAAQ,YAAY,oBAAoB;AAGxC,sBAAQ;AAAA,gBACP;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AACA,sBAAQ;AAAA,gBACP;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UAEA,cAAcA,OAAM;AAEnB,gBACCA,MAAK,UAAU,SAAS,KACvB,SAAS;AAAA,cACT,WAAW,aAAaA,KAAI;AAAA,YAC7B,KACC,SAAS;AAAA,cACR,WAAW,aAAaA,OAAM,CAAC;AAAA,YAChC,GACA;AACD,oCAAsBA,KAAI;AAAA,YAC3B;AAAA,UACD;AAAA,UAEA,SAASA,OAAM;AACd,gBAAI,CAACA,MAAK,aAAa,CAACA,MAAK,UAAUA,MAAK,SAAS,QAAQ;AAC5D,oBAAM,QAAQ,WAAW;AAAA,gBACxBA,MAAK;AAAA,gBACLA,MAAK;AAAA,gBACL,SAAS;AAAA,cACV;AAEA,sBAAQ,YAAY,WAAW,cAAc,KAAK,CAAC;AAAA,YACpD;AAAA,UACD;AAAA,UAEA,mBAAmBA,OAAM;AACxB,kBAAM,aAAa,WAAW,cAAcA,KAAI;AAChD,kBAAM,sBAAsB,WAAW,aAAaA,KAAI;AACxD,gBAAI;AAGJ,gBAAIA,MAAK,UAAU;AAClB,oBAAM,gBAAgB,WAAW;AAAA,gBAChCA,MAAK;AAAA,gBACL,SAAS;AAAA,cACV;AACA,oBAAM,gBAAiB,eACtB,WAAW;AAAA,gBACVA,MAAK;AAAA,gBACL,SAAS;AAAA,cACV;AACD,oBAAM,WAAW;AAAA,gBAChB,cAAc,MAAM,CAAC;AAAA,gBACrB,cAAc,MAAM,CAAC;AAAA,cACtB;AAEA,kBAAI,kBAAkB,YAAY;AACjC,wBAAQ,iBAAiB,eAAe,YAAY,CAAC;AAAA,cACtD;AACA,sBAAQ,kBAAkB,UAAU,eAAe,CAAC;AACpD,sBAAQ,iBAAiB,eAAe,eAAe,CAAC;AAAA,YACzD,OAAO;AACN,oBAAM,UAAW,eAAe,WAAW;AAAA,gBAC1CA,MAAK;AAAA,cACN;AAEA,kBAAI,YAAY,YAAY;AAC3B,wBAAQ,iBAAiB,SAAS,YAAY,CAAC;AAAA,cAChD;AAAA,YACD;AAGA,gBAAIA,MAAK,OAAO;AACf,oBAAM,UAAU,WAAW;AAAA,gBAC1BA,MAAK;AAAA,gBACL,SAAS;AAAA,cACV;AACA,oBAAM,aAAa,WAAW,cAAc,OAAO;AAEnD,sBAAQ,iBAAiB,SAAS,cAAc,CAAC;AACjD,sBAAQ,iBAAiB,YAAY,SAAS,CAAC;AAC/C,kBAAI,SAAS,iBAAiB,mBAAmB,GAAG;AACnD,wBAAQ;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,YACD,WAAW,SAAS,iBAAiB,mBAAmB,GAAG;AAC1D,sBAAQ;AAAA,gBACP;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UAEA,YAAYA,OAAM;AACjB,kBAAM,eAAe,WAAW,cAAcA,OAAM;AAAA,cACnD,MAAM;AAAA,YACP,CAAC;AACD,kBAAM,eAAe,WAAW,aAAaA,KAAI;AAEjD;AAAA,cACCA,MAAK;AAAA,cACL;AAAA,cACA;AAAA,cACA,QAAQ,YAAY;AAAA,YACrB;AAAA,UACD;AAAA,UAEA,gBAAgBA,OAAM;AACrB,kBAAM,eAAe,WAAW;AAAA,cAC/BA,MAAK;AAAA,cACL,SAAS;AAAA,YACV;AACA,kBAAM,eAAe,WAAW,aAAaA,KAAI;AAEjD,oBAAQ;AAAA,cACP,CAAC,aAAa,MAAM,CAAC,GAAG,aAAa,MAAM,CAAC,CAAC;AAAA,cAC7C;AAAA,cACA,QAAQ;AAAA,YACT;AAEA,gBAAIA,MAAK,MAAM,QAAQ;AACtB,yBACE,iBAAiBA,MAAK,MAAM,GAAG,EAAE,GAAG,cAAc;AAAA,gBAClD,iBAAiB;AAAA,gBACjB,QAAQ,SAAS;AAAA,cAClB,CAAC,EACA,QAAQ,WAAS,QAAQ,YAAY,KAAK,CAAC;AAAA,YAC9C;AAAA,UACD;AAAA,UAEA,WAAWA,OAAM;AAChB,gBACC,EACCA,MAAK,WAAW,WAAW,KAC3BA,MAAK,WAAW,CAAC,EAAE,SAAS,mBAE5B;AACD,oBAAM,cAAc,WAAW,cAAcA,KAAI;AACjD,oBAAM,wBACL,WAAW,cAAcA,KAAI;AAE9B,sBAAQ;AAAA,gBACP,CAAC,YAAY,MAAM,CAAC,GAAG,sBAAsB,MAAM,CAAC,CAAC;AAAA,gBACrD;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UAEA,gBAAgBA,OAAM;AACrB,YAAAA,MAAK,YAAY,QAAQ,CAAC,YAAYD,WAAU;AAC/C,oBAAM,gBAAgBC,MAAK,OAAOD,MAAK;AACvC,oBAAM,YAAYC,MAAK,OAAOD,SAAQ,CAAC;AACvC,oBAAM,mBACL,cAAc,IAAI,MAAM,SACxB,cAAc,IAAI,IAAI,OACnB,WAAW,cAAc,aAAa,IACtC;AAEJ,sBAAQ;AAAA,gBACP,CAAC,cAAc,MAAM,CAAC,GAAG,UAAU,MAAM,CAAC,CAAC;AAAA,gBAC3C;AAAA,gBACA;AAAA,cACD;AACA,sBAAQ;AAAA,gBACP,WAAW,cAAc,SAAS;AAAA,gBAClC;AAAA,gBACA;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,UAEA,oBAAoBC,OAAM;AACzB,gBAAI,iBAAiB,OAAO;AAAA,cAC3B,QAAQ;AAAA,cACRA,MAAK;AAAA,YACN,IACG,QAAQ,mBAAmBA,MAAK,IAAI,IACpC;AAEH,kBAAM,aAAa,WAAW,cAAcA,KAAI,GAC/C,YAAY,WAAW,aAAaA,KAAI;AAEzC,gBAAI,QAAQ,mBAAmBA,MAAK,IAAI,MAAM,SAAS;AACtD,kBAAIA,MAAK,aAAa,SAAS,GAAG;AACjC;AAAA,kBACCA,MAAK;AAAA,kBACL;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AACA;AAAA,cACD;AAEA,+BAAiB;AAAA,YAClB;AAEA,gBACCA,MAAK,aAAa,GAAG,EAAE,EAAE,IAAI,MAAM,OACnCA,MAAK,IAAI,MAAM,MACd;AAoBD,sBAAQ;AAAA,gBACPA,MAAK;AAAA,gBACL;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD,OAAO;AACN,sBAAQ;AAAA,gBACPA,MAAK;AAAA,gBACL;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AAEA,gBAAI,SAAS,iBAAiB,SAAS,GAAG;AACzC,sBAAQ,YAAY,SAAS;AAAA,YAC9B;AAAA,UACD;AAAA,UAEA,mBAAmBA,OAAM;AACxB,gBAAIA,MAAK,MAAM;AACd,oBAAM,gBAAgB,WAAW;AAAA,gBAChCA,MAAK;AAAA,gBACL,SAAS;AAAA,cACV;AACA,oBAAM,qBACL,WAAW,cAAc,aAAa;AAEvC,sBAAQ,YAAY,aAAa;AACjC,sBAAQ,YAAY,kBAAkB;AACtC,sBAAQ;AAAA,gBACP,CAAC,mBAAmB,MAAM,CAAC,GAAGA,MAAK,MAAM,CAAC,CAAC;AAAA,gBAC3C;AAAA,gBACA;AAAA,cACD;AACA,sBAAQ;AAAA,gBACP;AAAA,gBACA,WAAW,aAAaA,MAAK,EAAE;AAAA,gBAC/B;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UAEA,sBAAsBA,OAAM;AAC3B,kBAAM,cAAc,WAAW;AAAA,cAC9BA,MAAK;AAAA,cACLA,MAAK;AAAA,cACL,WAAS,MAAM,SAAS,gBAAgB,MAAM,UAAU;AAAA,YACzD;AAEA,oBAAQ;AAAA,cACP,CAAC,YAAY,MAAM,CAAC,GAAGA,MAAK,MAAM,MAAM,CAAC,CAAC;AAAA,cAC1C,WAAW,cAAcA,MAAK,IAAI;AAAA,cAClC;AAAA,YACD;AAAA,UACD;AAAA,UAEA,WAAWA,OAAM;AAChB,gBAAIA,MAAK,gBAAgB;AACxB;AAAA,gBACCA,MAAK;AAAA,gBACL,WAAW,cAAcA,MAAK,cAAc;AAAA,gBAC5C,WAAW,cAAcA,MAAK,cAAc;AAAA,gBAC5C;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UAEA,kBAAkBA,OAAM;AACvB,kBAAM,aAAa,WAAW,cAAcA,KAAI;AAChD,gBAAI;AAEJ,gBAAIA,MAAK,aAAa;AACrB,6BAAe,WAAW,aAAaA,OAAM,EAAE,MAAM,EAAE,CAAC;AACxD,sBAAQ;AAAA,gBACP,WAAW,aAAaA,KAAI;AAAA,gBAC5B;AAAA,gBACA;AAAA,cACD;AAAA,YACD,OAAO;AACN,6BAAe,WAAW,aAAaA,KAAI;AAAA,YAC5C;AACA,oBAAQ;AAAA,cACPA,MAAK,KAAK;AAAA,cACV,WAAW,cAAcA,KAAI;AAAA,YAC9B;AACA;AAAA,cACCA,MAAK;AAAA,cACL;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,UAEA,kBAAkBA,OAAM;AACvB,kBAAM,aAAa,WAAW,cAAcA,KAAI;AAEhD,oBAAQ,kBAAkBA,MAAK,KAAK,OAAO,YAAY,CAAC;AAAA,UACzD;AAAA,UAEA,YAAYA,OAAM;AACjB,kBAAM,oBAAoB,WAAW;AAAA,cACpCA,MAAK;AAAA,YACN;AACA,kBAAM,oBAAoB,WAAW;AAAA,cACpCA,MAAK;AAAA,YACN;AAEA;AAAA,cACCA,MAAK;AAAA,cACL;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,UAEA,mBAAmBA,OAAM;AACxB,kBAAM,aAAa,WAAW,cAAcA,KAAI;AAChD,kBAAM,eAAe,WAAW,aAAaA,KAAI;AAEjD,oBAAQ,kBAAkBA,MAAK,OAAO,YAAY,CAAC;AACnD,oBAAQ,cAAc,YAAY,YAAY;AAAA,UAC/C;AAAA,UAEA,mBAAmBA,OAAM;AACxB,kBAAM,aAAa,WAAW,cAAcA,KAAI;AAChD,kBAAM,aAAa,WAAW,aAAaA,OAAM,EAAE,MAAM,EAAE,CAAC;AAC5D,kBAAM,eAAe,WAAW,aAAaA,KAAI;AACjD,kBAAM,eAAe,SAAS;AAAA,cAC7B;AAAA,cACA;AAAA,YACD,IACG,aACA;AAEH,oBAAQ,kBAAkBA,MAAK,OAAO,YAAY,CAAC;AACnD,oBAAQ,cAAc,YAAY,YAAY;AAAA,UAC/C;AAAA,UAEA,uBAAuBA,OAAM;AAC5B,kBAAM,eAAe,WAAW,cAAcA,KAAI;AAClD,kBAAM,eAAe,WAAW,aAAaA,KAAI;AAEjD,oBAAQ;AAAA,cACP,CAAC,aAAa,MAAM,CAAC,GAAG,aAAa,MAAM,CAAC,CAAC;AAAA,cAC7C;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,UAEA,mBAAmBA,OAAM;AACxB,kBAAM,eAAe,WAAW,cAAcA,KAAI;AAClD,kBAAM,eAAe,WAAW,aAAaA,KAAI;AAEjD,oBAAQ;AAAA,cACP,CAAC,aAAa,MAAM,CAAC,GAAG,aAAa,MAAM,CAAC,CAAC;AAAA,cAC7C;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,UAEA,IAAIA,OAAM;AACT,kBAAM,aAAa,WAAW,cAAcA,KAAI;AAGhD,gBAAI,cAAc,CAAC,uBAAuB,IAAI,UAAU,GAAG;AAC1D,sBAAQ,kBAAkBA,MAAK,OAAO,YAAY,CAAC;AAAA,YACpD;AAAA,UACD;AAAA,QACD;AAEA,cAAM,oBAAoB,CAAC;AAQ3B,cAAM,kBAAkB,CAAC;AAEzB,mBAAW,CAAC,UAAU,QAAQ,KAAK,OAAO;AAAA,UACzC;AAAA,QACD,GAAG;AAiBF,0BAAgB,QAAQ,IAAI,CAAAA,UAC3B,kBAAkB,KAAK,EAAE,UAAU,MAAAA,MAAK,CAAC;AAAA,QAC3C;AAGA,cAAM,eAAe,oBAAI,IAAI;AAO7B,iBAAS,kBAAkBA,OAAM;AAChC,uBAAa,IAAIA,KAAI;AACrB,iCAAuB,IAAI,WAAW,cAAcA,KAAI,CAAC;AAAA,QAC1D;AAEA,cAAM,uBAAuB,QAAQ,aAAa;AAAA,UACjD,CAAC,WAAW,oBACX,OAAO,OAAO,WAAW;AAAA,YACxB,CAAC,eAAe,GAAG;AAAA,UACpB,CAAC;AAAA,UACF,CAAC;AAAA,QACF;AAUA,eAAO,OAAO,OAAO,iBAAiB,sBAAsB;AAAA,UAC3D,SAASA,OAAM;AAEd,gBAAI,CAAC,YAAY,IAAIA,MAAK,IAAI,GAAG;AAChC,gCAAkBA,KAAI;AAAA,YACvB;AAAA,UACD;AAAA,UACA,iBAAiB;AAEhB,gBAAI,QAAQ,gBAAgB;AAC3B,yBACE,eAAe,EACf,QAAQ,aAAW,QAAQ,YAAY,OAAO,CAAC;AAAA,YAClD;AAGA,qBAAS,IAAI,GAAG,IAAI,kBAAkB,QAAQ,KAAK;AAClD,oBAAM,WAAW,kBAAkB,CAAC;AAEpC,kBAAI,CAAC,aAAa,IAAI,SAAS,IAAI,GAAG;AACrC,yBAAS,SAAS,SAAS,IAAI;AAAA,cAChC;AAAA,YACD;AAGA,yBAAa,QAAQ,UAAU;AAE/B,4BAAgB,WAAW,IAAI,MAAM;AAMrC,kBAAM,kBAAkB,oBAAI,QAAQ;AAEpC,qBAAS,IAAI,GAAG,IAAI,WAAW,IAAI,SAAS,QAAQ,KAAK;AACxD,oBAAM,UAAU,WAAW,IAAI,SAAS,CAAC;AAEzC,oBAAM,uBAAuB,WAAW;AAAA,gBACvC;AAAA,gBACA,EAAE,iBAAiB,KAAK;AAAA,cACzB;AACA,oBAAM,WAAW,gBAAgB,IAAI,oBAAoB,IACtD,gBAAgB,IAAI,oBAAoB,IACxC;AAEH,8BAAgB,IAAI,SAAS,QAAQ;AAAA,YACtC;AAEA,qBAAS,IAAI,GAAG,IAAI,WAAW,MAAM,SAAS,GAAG,KAAK;AACrD,kBAAI,CAAC,UAAU,wBAAwB,IAAI,CAAC,GAAG;AAE9C;AAAA,cACD;AAEA,oBAAM,mBACL,UAAU,wBAAwB,IAAI,CAAC;AAExC,kBAAI,iBAAiB,IAAI,MAAM,SAAS,GAAG;AAE1C;AAAA,cACD;AAEA,kBAAI,SAAS,eAAe,gBAAgB,GAAG;AAC9C,sBAAM,cACL,gBAAgB,IAAI,gBAAgB;AACrC,sBAAM,aAAa,cAChB,WAAW,cAAc,WAAW,IACpC,WAAW,IAAI,OAAO,CAAC;AAC1B,sBAAM,qBACL,eACA,CAAC;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AACD,sBAAM,oBACL,cACA,CAAC,qBAAqB,kBAAkB,UAAU;AASnD,oBACC,cACA,SAAS,iBAAiB,UAAU,KACpC,CAAC,SAAS;AAAA,kBACT;AAAA,kBACA;AAAA,gBACD,GACC;AACD,0BAAQ;AAAA,oBACP;AAAA,oBACA;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD;AAGA,oBACE,sBACA;AAAA,kBACC;AAAA,kBACA,QAAQ,iBAAiB,WAAW;AAAA,gBACrC,KACA,qBACA;AAAA,kBACC;AAAA,kBACA,QAAQ,iBAAiB,UAAU;AAAA,gBACpC,GACA;AACD;AAAA,gBACD;AAAA,cACD;AAGA,kBACC;AAAA,gBACC;AAAA,gBACA,QAAQ,iBAAiB,gBAAgB;AAAA,cAC1C,GACC;AACD;AAAA,cACD;AAGA;AAAA,gBACC;AAAA,gBACA,QAAQ,iBAAiB,gBAAgB;AAAA,cAC1C;AAAA,YACD;AAAA,UACD;AAAA,QACD,CAAC;AAAA,MACF;AAAA,IACD;AAAA;AAAA;;;AC7xEA;AAAA,mDAAAE,UAAAC,SAAA;AAAA;AAeA,QAAM,WAAW;AAQjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM,CAAC,KAAK;AAAA,cACb;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,UACD;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,YAAY;AAAA,gBACX,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,oBAAoB;AAAA,gBACnB,OAAO;AAAA,kBACN;AAAA,oBACC,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,kBACA;AAAA,oBACC,MAAM;AAAA,oBACN,YAAY;AAAA,sBACX,KAAK;AAAA,wBACJ,MAAM;AAAA,wBACN,SAAS;AAAA,sBACV;AAAA,sBACA,KAAK;AAAA,wBACJ,MAAM;AAAA,wBACN,SAAS;AAAA,sBACV;AAAA,sBACA,OAAO;AAAA,wBACN,MAAM;AAAA,wBACN,SAAS;AAAA,sBACV;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,cACA,eAAe;AAAA,gBACd,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,kBAAkB;AAAA,gBACjB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,qBAAqB;AAAA,gBACpB,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,YAAY;AAAA,oBACX,OAAO;AAAA,sBACN;AAAA,wBACC,MAAM;AAAA,wBACN,SAAS;AAAA,sBACV;AAAA,sBACA;AAAA,wBACC,MAAM,CAAC,OAAO;AAAA,sBACf;AAAA,oBACD;AAAA,kBACD;AAAA,kBACA,MAAM;AAAA,oBACL,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,gBACD;AAAA,cACD;AAAA,cACA,oBAAoB;AAAA,gBACnB,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,YAAY;AAAA,oBACX,OAAO;AAAA,sBACN;AAAA,wBACC,MAAM;AAAA,wBACN,SAAS;AAAA,sBACV;AAAA,sBACA;AAAA,wBACC,MAAM,CAAC,OAAO;AAAA,sBACf;AAAA,oBACD;AAAA,kBACD;AAAA,kBACA,MAAM;AAAA,oBACL,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,gBACD;AAAA,cACD;AAAA,cACA,gBAAgB;AAAA,gBACf,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,YAAY;AAAA,oBACX,OAAO;AAAA,sBACN;AAAA,wBACC,MAAM;AAAA,wBACN,SAAS;AAAA,sBACV;AAAA,sBACA;AAAA,wBACC,MAAM,CAAC,OAAO;AAAA,sBACf;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,cACA,iBAAiB;AAAA,gBAChB,OAAO;AAAA,kBACN;AAAA,oBACC,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,kBACA;AAAA,oBACC,MAAM,CAAC,OAAO;AAAA,kBACf;AAAA,gBACD;AAAA,cACD;AAAA,cACA,kBAAkB;AAAA,gBACjB,OAAO;AAAA,kBACN;AAAA,oBACC,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,kBACA;AAAA,oBACC,MAAM,CAAC,OAAO;AAAA,kBACf;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,UACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,0BAA0B;AAChC,cAAM,2BAA2B;AACjC,cAAM,+BAA+B;AAErC,YAAI,aAAa;AACjB,YAAI,aAAa;AACjB,cAAM,UAAU;AAAA,UACf,YAAY;AAAA,UACZ,oBAAoB;AAAA,YACnB,KAAK;AAAA,YACL,KAAK;AAAA,YACL,OAAO;AAAA,UACR;AAAA,UACA,eAAe;AAAA,UACf,qBAAqB;AAAA,YACpB,YAAY;AAAA,YACZ,MAAM;AAAA,UACP;AAAA,UACA,oBAAoB;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM;AAAA,UACP;AAAA,UACA,gBAAgB;AAAA,YACf,WAAW;AAAA,UACZ;AAAA,UACA,iBAAiB;AAAA,UACjB,kBAAkB;AAAA,QACnB;AAEA,cAAM,aAAa,QAAQ;AAE3B,YAAI,QAAQ,QAAQ,QAAQ;AAC3B,cAAI,QAAQ,QAAQ,CAAC,MAAM,OAAO;AACjC,yBAAa;AACb,yBAAa;AAAA,UACd,WACC,OAAO,QAAQ,QAAQ,CAAC,MAAM,UAC7B;AACD,yBAAa,QAAQ,QAAQ,CAAC;AAC9B,yBAAa;AAAA,UACd;AAEA,cAAI,QAAQ,QAAQ,CAAC,GAAG;AACvB,kBAAM,OAAO,QAAQ,QAAQ,CAAC;AAE9B,oBAAQ,aAAa,KAAK,cAAc;AACxC,kBAAM,0BAA0B,KAAK;AAErC,gBAAI,OAAO,4BAA4B,UAAU;AAChD,sBAAQ,qBAAqB;AAAA,gBAC5B,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,OAAO;AAAA,cACR;AAAA,YACD,WAAW,OAAO,4BAA4B,UAAU;AACvD,qBAAO;AAAA,gBACN,QAAQ;AAAA,gBACR;AAAA,cACD;AAAA,YACD;AAEA,gBAAI,OAAO,KAAK,kBAAkB,UAAU;AAC3C,sBAAQ,gBAAgB,KAAK;AAAA,YAC9B;AAEA,gBAAI,OAAO,KAAK,qBAAqB,UAAU;AAC9C,sBAAQ,mBAAmB,KAAK;AAAA,YACjC;AAEA,gBAAI,OAAO,KAAK,wBAAwB,UAAU;AACjD,qBAAO;AAAA,gBACN,QAAQ;AAAA,gBACR,KAAK;AAAA,cACN;AAAA,YACD;AAEA,gBAAI,OAAO,KAAK,uBAAuB,UAAU;AAChD,qBAAO;AAAA,gBACN,QAAQ;AAAA,gBACR,KAAK;AAAA,cACN;AAAA,YACD;AAEA,gBAAI,OAAO,KAAK,mBAAmB,UAAU;AAC5C,qBAAO,OAAO,QAAQ,gBAAgB,KAAK,cAAc;AAAA,YAC1D;AAEA,gBACC,OAAO,KAAK,oBAAoB,YAChC,OAAO,KAAK,oBAAoB,UAC/B;AACD,sBAAQ,kBAAkB,KAAK;AAAA,YAChC;AAEA,gBACC,OAAO,KAAK,qBAAqB,YACjC,OAAO,KAAK,qBAAqB,UAChC;AACD,sBAAQ,mBAAmB,KAAK;AAAA,YACjC;AAAA,UACD;AAAA,QACD;AAEA,cAAM,kBAAkB,CAAC;AASzB,iBAAS,uBACR,gBACA,cACA,YACC;AACD,gBAAM,oBAAoB,GAAG,cAAc,IAAI,UAAU,GAAG,mBAAmB,IAAI,KAAK,GAAG;AAC3F,gBAAM,kBAAkB,QAAQ,iBAAiB,IAAI,KAAK,GAAG;AAC7D,gBAAM,gBAAgB,MAAM,eAAe,IAAI,KAAK,GAAG;AACvD,cAAI;AAEJ,cAAI,eAAe,KAAK,aAAa,GAAG;AACvC,6BAAiB,GAAG,YAAY,IAAI,eAAe,QAAQ,UAAU,IAAI,aAAa;AAAA,UACvF,WAAW,eAAe,GAAG;AAK5B,6BACC,eAAe,UACZ,eACA,GAAG,YAAY,IAAI,eAAe;AAAA,UACvC,WAAW,aAAa,GAAG;AAC1B,6BACC,eAAe,QACZ,aACA,GAAG,UAAU,IAAI,aAAa;AAAA,UACnC,OAAO;AACN,6BAAiB;AAAA,UAClB;AACA,iBAAO;AAAA,YACN,UAAU;AAAA,YACV,QAAQ;AAAA,UACT;AAAA,QACD;AAYA,iBAAS,OACRC,OACA,QACA,cACA,YACA,KACA,iBACC;AACD,cAAI,gBAAgB,YAAY;AAE/B;AAAA,UACD;AAEA,gBAAM,iBAAiB,eAAe,UAAU,MAAM,KAAM;AAAA,YAC3D;AAAA,UACD;AAEA,gBAAM,YAAY,kBACf;AAAA,YACAA,MAAK,MAAM,CAAC,IAAIA,MAAK,IAAI,IAAI;AAAA,YAC7BA,MAAK,MAAM,CAAC,IACXA,MAAK,IAAI,IAAI,SACb,eACA;AAAA,UACF,IACC;AAAA,YACAA,MAAK,MAAM,CAAC,IAAIA,MAAK,IAAI,MAAM;AAAA,YAC/BA,MAAK,MAAM,CAAC,IACXA,MAAK,IAAI,MAAM,SACf,eACA;AAAA,UACF;AAEF,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA;AAAA,YACA,WAAW;AAAA,YACX,MAAM,uBAAuB,QAAQ,cAAc,UAAU;AAAA,YAC7D,KAAK,WAAS,MAAM,iBAAiB,WAAW,aAAa;AAAA,UAC9D,CAAC;AAAA,QACF;AAUA,iBAAS,cAAcA,OAAM,YAAY;AACxC,gBAAM,QAAQ,aACX,WAAW,aAAaA,KAAI,IAC5B,WAAW,cAAcA,KAAI;AAChC,gBAAM,qBAAqB,WACzB,QAAQ,OAAO,MAAM,IAAI,MAAM,MAAM,EACrC,MAAM,EAAE;AACV,gBAAM,cAAc,mBAAmB;AAAA,YACtC;AAAA,YACA,mBAAmB;AAAA,cAClB,UAAQ,SAAS,OAAO,SAAS;AAAA,YAClC;AAAA,UACD;AACA,gBAAM,SAAS,YAAY,OAAO,UAAQ,SAAS,GAAG,EAAE;AACxD,gBAAM,OAAO,YAAY,OAAO,UAAQ,SAAS,GAAI,EAAE;AAEvD,iBAAO;AAAA,YACN,OAAO;AAAA,YACP,KAAK;AAAA,YACL,UAAU,eAAe,UAAU,SAAS;AAAA,YAC5C,SAAS,eAAe,UAAU,OAAO;AAAA,UAC1C;AAAA,QACD;AAQA,iBAAS,kBAAkBA,OAAM,eAAe;AAC/C,gBAAM,aACJ,kBAAkB,OACf,WAAW,aAAaA,OAAM,CAAC,IAC/B,WAAW,eAAeA,KAAI,GAClC,YACC,kBAAkB,OACfA,MAAK,IAAI,IAAI,OACbA,MAAK,IAAI,MAAM,MACnB,UAAU,aAAa,WAAW,IAAI,IAAI,OAAO;AAElD,iBAAO,cAAc;AAAA,QACtB;AAQA,iBAAS,gBAAgBA,OAAM,cAAc;AAC5C,gBAAM,eAAe,cAAcA,OAAM,KAAK;AAE9C,cACCA,MAAK,SAAS,qBACdA,MAAK,SAAS,uBACb,aAAa,aAAa,gBAC1B,aAAa,YAAY,MAC1B,kBAAkBA,KAAI,GACrB;AACD;AAAA,cACCA;AAAA,cACA;AAAA,cACA,aAAa;AAAA,cACb,aAAa;AAAA,YACd;AAAA,UACD;AAEA,cAAIA,MAAK,SAAS,iBAAiBA,MAAK,WAAW;AAClD,kBAAM,YAAY,WAAW,eAAeA,MAAK,SAAS;AAE1D,4BAAgB,WAAW,YAAY;AAEvC,gBAAI,CAAC,kBAAkBA,MAAK,SAAS,GAAG;AACvC,8BAAgBA,MAAK,WAAW,YAAY;AAAA,YAC7C;AAAA,UACD;AAEA,cAAIA,MAAK,SAAS,kBAAkBA,MAAK,SAAS;AACjD,kBAAM,aAAa,WAAW,cAAcA,MAAK,OAAO;AAExD,4BAAgB,YAAY,YAAY;AAAA,UACzC;AAEA,cAAIA,MAAK,SAAS,kBAAkBA,MAAK,WAAW;AACnD,kBAAM,eAAe,WAAW,eAAeA,MAAK,SAAS;AAE7D,4BAAgB,cAAc,YAAY;AAAA,UAC3C;AAEA,cAAIA,MAAK,SAAS,oBAAoB;AACrC,kBAAM,aAAa,WAAW,cAAcA,MAAK,IAAI;AAErD,4BAAgB,YAAY,YAAY;AAAA,UACzC;AAAA,QACD;AAQA,iBAAS,iBAAiB,OAAOC,SAAQ;AACxC,gBAAM,QAAQ,CAAAD,UAAQ,gBAAgBA,OAAMC,OAAM,CAAC;AAAA,QACpD;AAQA,iBAAS,wBAAwBD,OAAM,gBAAgB;AACtD,gBAAM,YAAY,WAAW,aAAaA,KAAI;AAC9C,gBAAM,YAAY,cAAc,WAAW,IAAI;AAE/C,eACE,UAAU,aAAa,kBACvB,UAAU,YAAY,MACvB,kBAAkBA,OAAM,IAAI,GAC3B;AACD;AAAA,cACCA;AAAA,cACA;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,cACV;AAAA,gBACC,MAAM,UAAU,IAAI,MAAM;AAAA,gBAC1B,QAAQ,UAAU,IAAI,MAAM;AAAA,cAC7B;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,QACD;AASA,iBAAS,mCAAmCA,OAAM,iBAAiB;AAKlE,gBAAM,YAAY,WAAW;AAAA,YAC5BA;AAAA,YACA,SAAS;AAAA,UACV;AACA,gBAAM,+BAA+B,WACnC,QAAQ,WAAW,UAAU,IAAI,MAAM,MAAM,EAC7C,MAAM,GAAG,EAAE;AAEb,cAAI,6BAA6B,KAAK,GAAG;AAExC;AAAA,UACD;AAEA,gBAAM,YAAY,cAAc,WAAW,IAAI;AAE/C,cAAI,UAAU,aAAa,iBAAiB;AAC3C;AAAA,cACCA;AAAA,cACA;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,cACV;AAAA,gBACC,MAAM,UAAU,IAAI,MAAM;AAAA,gBAC1B,QAAQ,UAAU,IAAI,MAAM;AAAA,cAC7B;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAQA,iBAAS,yBAAyBA,OAAM,iBAAiB;AACxD,gBAAM,cAAc,cAAcA,OAAM,KAAK;AAE7C,eACE,YAAY,aAAa,mBACzB,YAAY,YAAY,MACzB,kBAAkBA,KAAI,GACrB;AACD;AAAA,cACCA;AAAA,cACA;AAAA,cACA,YAAY;AAAA,cACZ,YAAY;AAAA,cACZ;AAAA,gBACC,MAAMA,MAAK,IAAI,MAAM;AAAA,gBACrB,QAAQA,MAAK,IAAI,MAAM;AAAA,cACxB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAUA,iBAAS,oBAAoBA,OAAM,MAAM,YAAY;AACpD,cAAI,SAASA,MAAK;AAClB,gBAAM,YAAY,IAAI,IAAI,cAAc,CAAC,SAAS,CAAC;AAEnD,iBACC,OAAO,SAAS,QAChB,CAAC,UAAU,IAAI,OAAO,IAAI,KAC1B,OAAO,SAAS,WACf;AACD,qBAAS,OAAO;AAAA,UACjB;AAEA,iBAAO,OAAO,SAAS,OAAO,SAAS;AAAA,QACxC;AAQA,iBAAS,0BAA0BA,OAAM;AACxC,iBAAO,oBAAoBA,OAAM,oBAAoB;AAAA,QACtD;AASA,iBAAS,iBAAiBA,OAAM,SAAS;AACxC,iBACC,WACA,QAAQ,OAAO,IAAI,MAAM,SAASA,MAAK,IAAI,MAAM,QACjD,QAAQ,OAAO,aAAa,SAAS;AAAA,QAEvC;AAQA,iBAAS,+BAA+BA,OAAM;AAC7C,gBAAM,SAASA,MAAK;AAEpB,cAAI,OAAO,UAAU,UAAU,KAAK,OAAO,UAAU,CAAC,MAAMA,OAAM;AACjE,mBACC,OAAO,UAAU,CAAC,EAAE,IAAI,IAAI,OAC5B,OAAO,UAAU,CAAC,EAAE,IAAI,MAAM;AAAA,UAEhC;AAEA,iBAAO;AAAA,QACR;AAOA,iBAAS,YAAYA,OAAM;AAC1B,gBAAM,SAASA,MAAK;AACpB,cAAI,OAAO,OAAO;AAKlB,cAAI,OAAO,SAAS,oBAAoB,OAAO,WAAWA,OAAM;AAC/D,mBAAO;AAAA,UACR;AAKA,iBACE,KAAK,SAAS,sBACb,KAAK,aAAa,OAClB,KAAK,aAAa,OAClB,KAAK,aAAa,OAClB,KAAK,aAAa,QACpB,KAAK,SAAS,0BACd,KAAK,SAAS,uBACd,KAAK,SAAS,wBACd,KAAK,SAAS,sBACb;AACD,mBAAO,KAAK;AAAA,UACb;AAEA,kBACE,KAAK,SAAS,yBACd,KAAK,SAAS,0BACf,KAAK,UACL,KAAK,OAAO,SAAS;AAAA,QAEvB;AAOA,iBAAS,2BAA2BA,OAAM;AAczC,gBAAM,aAAaA,MAAK;AACxB,cAAIC;AAEJ,cACC,WAAW,WACV,WAAW,OAAO,SAAS,cAC3B,WAAW,OAAO,SAAS,oBAC3B;AAED,YAAAA,UAAS,cAAc,YAAY,KAAK,EAAE;AAAA,UAC3C,OAAO;AAEN,YAAAA,UAAS,cAAc,UAAU,EAAE;AAAA,UACpC;AAEA,cAAI,WAAW,OAAO,SAAS,kBAAkB;AAChD,kBAAM,eAAe,WAAW;AAEhC,gBACC,WAAW,SAAS,wBACpB,WAAW,SAAS,2BACnB;AACD,kBACC,gBACA,aAAa,IAAI,MAAM,OAAOD,MAAK,IAAI,MAAM,MAC5C;AACD,gBAAAC,UAAS,cAAc,YAAY,EAAE;AAAA,cACtC;AAAA,YACD,OAAO;AACN,kBACC,+BAA+B,UAAU,KACzC,aAAa,OAAO,IAAI,MAAM,SAC7B,aAAa,OAAO,IAAI,IAAI,QAC7B,CAAC,kBAAkB,UAAU,GAC5B;AACD,gBAAAA,UAAS,cAAc,YAAY,EAAE;AAAA,cACtC;AAAA,YACD;AAAA,UACD;AAMA,cAAI,iBAAiB;AAErB,cAAI,QAAQ,kBAAkB,QAAQ,YAAY,UAAU,GAAG;AAC9D,6BAAiB,QAAQ,gBAAgB;AAAA,UAC1C,WAAW,WAAW,SAAS,sBAAsB;AACpD,6BAAiB,QAAQ,mBAAmB,OAAO;AAAA,UACpD,WAAW,WAAW,SAAS,uBAAuB;AACrD,6BAAiB,QAAQ,oBAAoB,OAAO;AAAA,UACrD;AACA,UAAAA,WAAU;AAGV,gBAAM,gBAAgB,0BAA0BD,KAAI;AAEpD,cAAI,iBAAiB,iBAAiBA,OAAM,aAAa,GAAG;AAC3D,YAAAC,WACC,aACA,QAAQ,mBAAmB,cAAc,OAAO,IAAI;AAAA,UACtD;AAEA,cAAID,MAAK,KAAK,SAAS,GAAG;AACzB,6BAAiBA,MAAK,MAAMC,OAAM;AAAA,UACnC;AAEA,kCAAwBD,OAAMC,UAAS,cAAc;AAAA,QACtD;AAOA,iBAAS,iBAAiBD,OAAM;AAC/B,gBAAM,YAAY,WAAW,aAAaA,KAAI,GAC7C,YAAYA,MAAK,IAAI,MAAM,MAC3B,UAAU,UAAU,IAAI,IAAI;AAE7B,iBAAO,cAAc;AAAA,QACtB;AAOA,iBAAS,gCAAgCA,OAAM;AAE9C,cAAI,iBAAiBA,KAAI,GAAG;AAC3B;AAAA,UACD;AAEA,cAAI,WACHA,MAAK,SAAS,oBACXA,MAAK,WACLA,MAAK;AAGT,qBAAW,SAAS,OAAO,UAAQ,SAAS,IAAI;AAEhD,cAAI;AACJ,cAAI;AACJ,gBAAM,gBAAgB,0BAA0BA,KAAI;AAGpD,cAAI,kBAAkBA,KAAI,GAAG;AAC5B,kBAAM,SAASA,MAAK;AAEpB,yBAAa,cAAc,MAAM,EAAE;AACnC,gBACC,CAAC,iBACD,cAAc,IAAI,MAAM,SAASA,MAAK,IAAI,MAAM,MAC/C;AACD,kBACC,OAAO,SAAS,wBAChB,kBAAkB,cAAc,OAAO,aAAa,CAAC,GACpD;AACD,oBACC,OAAO,SAAS,wBAChB,cAAc,IAAI,MAAM,SACvB,OAAO,IAAI,MAAM,MACjB;AACD,gCACC,aACA,QAAQ,mBACP,cAAc,OAAO,IACtB;AAAA,gBACF,WACC,OAAO,SAAS,sBAChB,OAAO,SAAS,mBACf;AACD,wBAAM,iBACLA,MAAK,OAAO,SAAS,qBAClBA,MAAK,OAAO,aACZA,MAAK,OAAO;AAEhB,sBACC,eAAe,CAAC,KAChB,eAAe,CAAC,EAAE,IAAI,MAAM,SAC3B,OAAO,IAAI,MAAM,QAClB,eAAe,CAAC,EAAE,IAAI,IAAI,SACzB,OAAO,IAAI,MAAM,MACjB;AAAA,kBAWF,WACC,OAAO,QAAQ,OAAO,IAAI,MAAM,UAC/B;AACD,kCAAc,QAAQ,OAAO,IAAI,IAAI;AAAA,kBACtC,OAAO;AACN,iCAAa,eAAe,CAAC,EAAE,IAAI,MAAM;AAAA,kBAC1C;AAAA,gBACD,WACC,OAAO,SAAS,oBAChB,OAAO,SAAS,iBACf;AACD,sBACC,OAAO,QAAQ,eAAe,cAC9B,UACC;AACD,kCACC,QAAQ,eAAe,YACvB;AAAA,kBACF,WACC,QAAQ,eAAe,cAAc,SACpC;AACD,wBAAI,OAAO,UAAU,SAASA,KAAI,GAAG;AACpC,mCACC,OAAO,UAAU,CAAC,EAAE,IAAI,MAAM;AAAA,oBAChC;AAAA,kBACD,OAAO;AACN,kCAAc;AAAA,kBACf;AAAA,gBACD,WACC,OAAO,SAAS,uBAChB,OAAO,SAAS,2BACf;AACD,gCAAc;AAAA,gBACf;AAAA,cACD;AAAA,YACD;AAEA,qCAAyBA,OAAM,UAAU;AAAA,UAC1C,OAAO;AACN,yBAAa,cAAcA,KAAI,EAAE;AAAA,UAClC;AAEA,cAAI,QAAQA,MAAK,IAAI,MAAM,SAAS;AACnC,6BAAiB,SAAS,SACvB,SAAS,CAAC,EAAE,IAAI,MAAM,SACtB;AAAA,UACJ,OAAO;AACN,6BAAiB,aAAa,aAAa,QAAQA,MAAK,IAAI;AAAA,UAC7D;AAMA,cAAI,iBAAiBA,OAAM,aAAa,GAAG;AAC1C,8BACC,aACA,QAAQ,mBAAmB,cAAc,OAAO,IAAI;AAAA,UACtD;AAEA,2BAAiB,UAAU,cAAc;AAEzC,cAAI,SAAS,SAAS,GAAG;AAExB,gBAAI,SAAS,GAAG,EAAE,EAAE,IAAI,IAAI,SAASA,MAAK,IAAI,IAAI,MAAM;AACvD;AAAA,YACD;AAAA,UACD;AAEA;AAAA,YACCA;AAAA,YACA,cACE,iBAAiBA,OAAM,aAAa,IAClC,QAAQ,mBACR,cAAc,OAAO,IACtB,IAAI,aACH;AAAA,UACL;AAAA,QACD;AAOA,iBAAS,gBAAgBA,OAAM;AAC9B,iBACCA,MAAK,SAAS,oBACdA,MAAK,SAAS,eACbA,MAAK,QAAQA,MAAK,KAAK,SAAS,oBAChCA,MAAK,cAAcA,MAAK,WAAW,SAAS;AAAA,QAE/C;AAOA,iBAAS,sBAAsBA,OAAM;AAEpC,cAAI,iBAAiBA,KAAI,GAAG;AAC3B;AAAA,UACD;AAEA,cACCA,MAAK,WACJA,MAAK,OAAO,SAAS,wBACrBA,MAAK,OAAO,SAAS,yBACrBA,MAAK,OAAO,SAAS,4BACrB;AACD,uCAA2BA,KAAI;AAC/B;AAAA,UACD;AAEA,cAAIC;AACJ,cAAI;AAMJ,gBAAM,2BAA2B;AAAA,YAChC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAEA,cACCD,MAAK,UACL,yBAAyB,SAASA,MAAK,OAAO,IAAI,KAClD,gBAAgBA,KAAI,GACnB;AACD,YAAAC,UAAS,cAAcD,MAAK,MAAM,EAAE;AAAA,UACrC,WAAWA,MAAK,UAAUA,MAAK,OAAO,SAAS,eAAe;AAC7D,YAAAC,UAAS,cAAcD,MAAK,OAAO,MAAM,EAAE;AAAA,UAC5C,OAAO;AACN,YAAAC,UAAS,cAAcD,KAAI,EAAE;AAAA,UAC9B;AAEA,cACCA,MAAK,SAAS,iBACdA,MAAK,WAAW,SAAS,kBACxB;AACD,2BAAe,CAACA,MAAK,UAAU;AAAA,UAChC,WAAW,MAAM,QAAQA,MAAK,IAAI,GAAG;AACpC,2BAAeA,MAAK;AAAA,UACrB,OAAO;AACN,2BAAe,CAACA,MAAK,IAAI;AAAA,UAC1B;AAEA,cAAI,aAAa,SAAS,GAAG;AAC5B,6BAAiB,cAAcC,UAAS,UAAU;AAAA,UACnD;AAEA,cAAID,MAAK,SAAS,kBAAkB;AACnC,oCAAwBA,OAAMC,OAAM;AAAA,UACrC;AAAA,QACD;AAQA,iBAAS,sBAAsBD,OAAM;AACpC,iBAAOA,MAAK,aAAa,OAAO,CAAC,iBAAiB,SAAS;AAC1D,kBAAM,WAAW,gBAAgB,GAAG,EAAE;AAEtC,gBACE,KAAK,IAAI,MAAM,SAASA,MAAK,IAAI,MAAM,QACvC,CAAC,YACD,YACA,SAAS,IAAI,MAAM,SAAS,KAAK,IAAI,MAAM,MAC3C;AACD,8BAAgB,KAAK,IAAI;AAAA,YAC1B;AAEA,mBAAO;AAAA,UACR,GAAG,CAAC,CAAC;AAAA,QACN;AAOA,iBAAS,kCAAkCA,OAAM;AAChD,gBAAM,WAAW,sBAAsBA,KAAI;AAC3C,gBAAM,aAAa,cAAcA,KAAI,EAAE;AACvC,gBAAM,cAAc,SAAS,GAAG,EAAE;AAElC,gBAAM,iBACL,aAAa,aAAa,QAAQ,mBAAmBA,MAAK,IAAI;AAE/D,2BAAiB,UAAU,cAAc;AAGzC,cACC,WAAW,aAAaA,KAAI,EAAE,IAAI,IAAI,QACtC,YAAY,IAAI,IAAI,MACnB;AACD;AAAA,UACD;AAEA,gBAAM,yBACL,WAAW,eAAe,WAAW;AAEtC,cAAI,uBAAuB,UAAU,KAAK;AAEzC;AAAA,cACCA;AAAA,cACA,cAAc,sBAAsB,EAAE;AAAA,YACvC;AAAA,UACD,OAAO;AACN,oCAAwBA,OAAM,iBAAiB,UAAU;AAAA,UAC1D;AAAA,QACD;AAQA,iBAAS,eAAeA,OAAM;AAC7B,cAAIA,MAAK,KAAK,SAAS,kBAAkB;AACxC,kCAAsBA,KAAI;AAAA,UAC3B;AAAA,QACD;AAQA,iBAAS,mBAAmBA,OAAM,sBAAsB;AACvD,gBAAM,aACLA,MAAK,SAAS,oBAAoBA,QAAOA,MAAK;AAC/C,gBAAM,eACL,OAAO,yBAAyB,cAC7B,cAAc,UAAU,EAAE,WAC1B;AACJ,cAAI;AAEJ,cAAI,gBAAgB,WAAW,IAAI,MAAM,IAAI,GAAG;AAC/C,mBAAO,gBAAgB,WAAW,IAAI,MAAM,IAAI;AAAA,UACjD;AAEA,cAAI,WAAW,MAAM,SAAS,KAAK,QAAQ,eAAe,GAAG;AAC5D,yBAAa;AAAA,UACd,OAAO;AACN,yBAAa,eAAe,aAAa,QAAQ;AAAA,UAClD;AAEA,0BAAgB,WAAW,IAAI,MAAM,IAAI,IAAI;AAC7C,iBAAO;AAAA,QACR;AAOA,iBAAS,uBAAuBA,OAAM;AACrC,gBAAM,QAAQ;AAEd,gBAAM,2BAA2B,WAC/B,QAAQA,KAAI,EACZ,QAAQ,WAAW,QAAQA,MAAK,QAAQ,GAAG,EAAE;AAE/C,iBAAO,MAAM,KAAK,wBAAwB;AAAA,QAC3C;AAEA,eAAO;AAAA,UACN,QAAQA,OAAM;AACb,gBAAIA,MAAK,KAAK,SAAS,GAAG;AAEzB,+BAAiBA,MAAK,MAAM,cAAcA,KAAI,EAAE,QAAQ;AAAA,YACzD;AAAA,UACD;AAAA,UAEA,WAAW;AAAA,UAEX,gBAAgB;AAAA,UAEhB,gBAAgB;AAAA,UAEhB,cAAc;AAAA,UAEd,gBAAgB;AAAA,UAEhB,gBAAgB;AAAA,UAEhB,kBAAkB;AAAA,UAElB,YAAYA,OAAM;AACjB,gBACCA,MAAK,WAAW,SAAS,oBACzBA,MAAK,WAAW,IAAI,MAAM,OAAOA,MAAK,IAAI,MAAM,MAC/C;AACD,oCAAsBA,KAAI;AAAA,YAC3B;AAAA,UACD;AAAA,UAEA,oBAAoBA,OAAM;AACzB,gBACCA,MAAK,aAAa,GAAG,EAAE,EAAE,IAAI,MAAM,OACnCA,MAAK,aAAa,CAAC,EAAE,IAAI,MAAM,MAC9B;AACD,gDAAkCA,KAAI;AAAA,YACvC;AAAA,UACD;AAAA,UAEA,iBAAiBA,OAAM;AACtB,4CAAgCA,KAAI;AAAA,UACrC;AAAA,UAEA,gBAAgBA,OAAM;AACrB,4CAAgCA,KAAI;AAAA,UACrC;AAAA,UAEA,iBAAiBA,OAAM;AACtB,gBAAI,OAAO,QAAQ,qBAAqB,aAAa;AACpD;AAAA,YACD;AAEA,gBAAI,iBAAiBA,KAAI,GAAG;AAC3B;AAAA,YACD;AAQA,gBACC,oBAAoBA,OAAM,sBAAsB;AAAA,cAC/C;AAAA,cACA;AAAA,YACD,CAAC,GACA;AACD;AAAA,YACD;AAEA,gBACC,oBAAoBA,OAAM,wBAAwB;AAAA,cACjD;AAAA,YACD,CAAC,GACA;AACD;AAAA,YACD;AAEA,kBAAM,iBACL,cAAcA,KAAI,EAAE,WACpB,aAAa,QAAQ;AAEtB,kBAAM,aAAa,CAACA,MAAK,QAAQ;AAEjC,kBAAM,MAAM,WAAW,eAAeA,MAAK,QAAQ;AAEnD,gBAAI,IAAI,SAAS,gBAAgB,IAAI,UAAU,KAAK;AACnD,yBAAW,KAAK,GAAG;AAAA,YACpB;AAEA,6BAAiB,YAAY,cAAc;AAAA,UAC5C;AAAA,UAEA,gBAAgBA,OAAM;AAErB,kBAAM,eAAe,cAAcA,KAAI,EAAE;AACzC,kBAAM,aAAa,mBAAmBA,OAAM,YAAY;AAExD,6BAAiBA,MAAK,OAAO,UAAU;AAEvC,oCAAwBA,OAAM,YAAY;AAAA,UAC3C;AAAA,UAEA,WAAWA,OAAM;AAEhB,gBAAI,iBAAiBA,KAAI,GAAG;AAC3B;AAAA,YACD;AACA,kBAAM,aAAa,mBAAmBA,KAAI;AAE1C,6BAAiBA,MAAK,YAAY,aAAa,UAAU;AAAA,UAC1D;AAAA,UAEA,oBAAoBA,OAAM;AACzB,gBAAI,iBAAiBA,KAAI,GAAG;AAC3B;AAAA,YACD;AACA,gBACC,QAAQ,oBAAoB,eAAe,WAC3CA,MAAK,OAAO,QACX;AACD;AAAA,gBACCA,MAAK,OAAO,MAAM,CAAC;AAAA,gBACnBA,MAAK,OAAO,CAAC,EAAE,IAAI,MAAM;AAAA,cAC1B;AAAA,YACD,WAAW,QAAQ,oBAAoB,eAAe,MAAM;AAC3D;AAAA,gBACCA,MAAK;AAAA,gBACL,cAAcA,KAAI,EAAE,WACnB,aAAa,QAAQ,oBAAoB;AAAA,cAC3C;AAAA,YACD;AAAA,UACD;AAAA,UAEA,mBAAmBA,OAAM;AACxB,gBAAI,iBAAiBA,KAAI,GAAG;AAC3B;AAAA,YACD;AACA,gBACC,QAAQ,mBAAmB,eAAe,WAC1CA,MAAK,OAAO,QACX;AACD;AAAA,gBACCA,MAAK,OAAO,MAAM,CAAC;AAAA,gBACnBA,MAAK,OAAO,CAAC,EAAE,IAAI,MAAM;AAAA,cAC1B;AAAA,YACD,WAAW,QAAQ,mBAAmB,eAAe,MAAM;AAC1D;AAAA,gBACCA,MAAK;AAAA,gBACL,cAAcA,KAAI,EAAE,WACnB,aAAa,QAAQ,mBAAmB;AAAA,cAC1C;AAAA,YACD;AAAA,UACD;AAAA,UAEA,gBAAgBA,OAAM;AACrB,gBAAI,iBAAiBA,KAAI,GAAG;AAC3B;AAAA,YACD;AAEA,kBAAM,kBAAkB,cAAcA,KAAI,EAAE;AAG5C,gBAAI,uBAAuBA,KAAI,GAAG;AACjC,iDAAmCA,OAAM,eAAe;AAAA,YACzD,OAAO;AACN,8BAAgBA,OAAM,eAAe;AAAA,YACtC;AAAA,UACD;AAAA,UAEA,eAAeA,OAAM;AACpB,gBAAI,iBAAiBA,KAAI,GAAG;AAC3B;AAAA,YACD;AACA,gBACC,QAAQ,eAAe,cAAc,WACrCA,MAAK,UAAU,QACd;AACD;AAAA,gBACCA,MAAK,UAAU,MAAM,CAAC;AAAA,gBACtBA,MAAK,UAAU,CAAC,EAAE,IAAI,MAAM;AAAA,cAC7B;AAAA,YACD,WAAW,QAAQ,eAAe,cAAc,MAAM;AACrD;AAAA,gBACCA,MAAK;AAAA,gBACL,cAAcA,KAAI,EAAE,WACnB,aAAa,QAAQ,eAAe;AAAA,cACtC;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACx1CA;AAAA,uDAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,oBAAoB,oBAAI,IAAI,CAAC,SAAS,SAAS,aAAa,CAAC;AAOnE,aAAS,UAAU,OAAO;AACzB,aACC,MAAM,SAAS,oBACf,MAAM,SAAS,oBACf,MAAM,SAAS;AAAA,IAEjB;AAOA,aAAS,cAAcC,OAAM;AAC5B,YAAM,cAAcA,MAAK;AACzB,YAAM,QAAQ,YAAY;AAE1B,UAAI,UAAU,KAAK,GAAG;AACrB,YAAI,MAAM,SAAS,gBAAgB;AAClC,iBAAO,MAAM,SAAS;AAAA,QACvB;AACA,eAAO,MAAM,SAAS;AAAA,MACvB;AACA,aAAO,QAAQA,MAAK,IAAI;AAAA,IACzB;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP,OAAO;AAAA,YACN;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,QAAQ;AAAA,gBAChB;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,OAAO;AAAA,gBACf;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,mBAAmB;AAAA,sBAClB,MAAM;AAAA,oBACP;AAAA,kBACD;AAAA,kBACA,sBAAsB;AAAA,gBACvB;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,UACD;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,QAAQ;AAAA,QAEzB,UAAU;AAAA,UACT,aACC;AAAA,UACD,gBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,OAAO,QAAQ,QAAQ,CAAC;AAC9B,cAAM,SAAS,QAAQ,QAAQ,CAAC,KAAK,CAAC;AAGtC,YAAI,0BAA0B;AAM9B,eAAO;AAAA,UACN,oBAAoBC,OAAM;AACzB,gBAAIA,MAAK,SAAS;AACjB,wCAA0B;AAAA,YAC3B;AAAA,UACD;AAAA,UAEA,2BAA2BA,OAAM;AAChC,gBAAIA,MAAK,SAAS;AACjB,wCAA0B;AAAA,YAC3B;AAAA,UACD;AAAA,UAEA,2BAA2BA,OAAM;AAChC,kBAAM,OAAOA,MAAK,MACjB,eAAeA,MAAK;AAErB,gBAAIA,MAAK,WAAW,yBAAyB;AAC5C;AAAA,YACD;AAEA,qBAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,EAAE,GAAG;AAC7C,oBAAM,cAAc,aAAa,CAAC,GACjC,KAAK,YAAY,IACjB,cAAc,cAAc,WAAW,GACvC,mBACC,OAAO,qBAAqB,UAAUA,MAAK,MAAM;AACnD,kBAAI,YAAY;AAEhB,kBAAI,SAAS,YAAY,CAAC,aAAa;AACtC,4BAAY;AAAA,cACb,WACC,SAAS,WACT,CAAC,kBAAkB,IAAI,IAAI,KAC3B,eACA,CAAC,kBACA;AACD,4BAAY;AAAA,cACb;AAEA,kBAAI,GAAG,SAAS,gBAAgB,WAAW;AAC1C,wBAAQ,OAAO;AAAA,kBACd,MAAM;AAAA,kBACN;AAAA,kBACA,MAAM;AAAA,oBACL,QAAQ,GAAG;AAAA,kBACZ;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1KA;AAAA,gDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAMjB,QAAM,iBAAiB;AAAA,MACtB,iBAAiB;AAAA,QAChB,OAAO;AAAA,QACP,aAAa;AAAA,QACb,QAAQ,KAAK;AACZ,iBAAO,IAAI,QAAQ,OAAO,GAAG;AAAA,QAC9B;AAAA,MACD;AAAA,MACA,iBAAiB;AAAA,QAChB,OAAO;AAAA,QACP,aAAa;AAAA,QACb,QAAQ,KAAK;AACZ,iBAAO,IAAI,QAAQ,OAAO,GAAG;AAAA,QAC9B;AAAA,MACD;AAAA,IACD;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,iBAAiB,eAAe;AAAA,UACxC;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,cAAc,QAAQ,QAAQ,CAAC,KAAK,iBACzC,UAAU,eAAe,WAAW;AAQrC,iBAAS,mBAAmBC,OAAM;AACjC,iBACCA,MAAK,MAAM,SAAS,QAAQ,KAAK,KACjC,SAAS,eAAeA,MAAK,KAAK,QAAQ,KAAK;AAAA,QAEjD;AAEA,eAAO;AAAA,UACN,aAAaA,OAAM;AAClB,kBAAM,iBAAiBA,MAAK;AAE5B,gBACC,kBACA,SAAS,gBAAgB,cAAc,KACvC,CAAC,mBAAmB,cAAc,GACjC;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL,aAAa,QAAQ;AAAA,gBACtB;AAAA,gBACA,IAAI,OAAO;AACV,yBAAO,MAAM;AAAA,oBACZ;AAAA,oBACA,QAAQ,QAAQ,eAAe,GAAG;AAAA,kBACnC;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/HA;AAAA,iDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AACjB,QAAM,EAAE,iBAAiB,IAAI;AAQ7B,aAAS,uBAAuB,KAAK;AACpC,aAAO,SAAS,kBAAkB,KAAK,GAAG;AAAA,IAC3C;AAOA,aAAS,KAAK,KAAK;AAClB,aAAO,IAAI,GAAG,EAAE;AAAA,IACjB;AAOA,aAAS,aAAaC,OAAM;AAC3B,aAAOA,MAAK,IAAI,IAAI,SAASA,MAAK,IAAI,MAAM;AAAA,IAC7C;AAOA,aAAS,uBAAuB,YAAY;AAC3C,YAAM,CAAC,SAAS,IAAI,YACnB,WAAW,KAAK,UAAU;AAE3B,aAAO,UAAU,IAAI,MAAM,SAAS,SAAS,IAAI,IAAI;AAAA,IACtD;AAQA,aAAS,mBAAmB,WAAW,aAAa;AACnD,gBAAU,OAAO,YAAY,QAAQ;AAGrC,UAAI,OAAO,YAAY,gBAAgB,aAAa;AACnD,kBAAU,cAAc,CAAC,YAAY;AAAA,MACtC,OAAO;AACN,kBAAU,cAAc;AAAA,MACzB;AAGA,UAAI,OAAO,YAAY,eAAe,aAAa;AAClD,kBAAU,aAAa,CAAC,YAAY;AAAA,MACrC,OAAO;AACN,kBAAU,aAAa;AAAA,MACxB;AAGA,UAAI,OAAO,YAAY,UAAU,aAAa;AAC7C,YAAI,OAAO,YAAY,UAAU,UAAU;AAC1C,oBAAU,QAAQ,YAAY;AAAA,QAC/B,OAAO;AAEN,oBAAU,QAAQ;AAAA,YACjB,IAAI,YAAY;AAAA,YAChB,MAAM,UAAU;AAAA,YAChB,aAAa,UAAU;AAAA,YACvB,YAAY,UAAU;AAAA,UACvB;AAAA,QACD;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,YAAY,WAAW,aAAa;AAC5C,UAAI,OAAO,YAAY,UAAU,UAAU;AAE1C,kBAAU,QAAQ,mBAAmB,CAAC,GAAG,YAAY,KAAK;AAC1D,kBAAU,MAAM,KAAK,YAAY,MAAM,MAAM;AAC7C,kBAAU,MAAM,OAAO,YAAY,MAAM,QAAQ;AAEjD,kBAAU,YAAY;AAAA,UACrB,CAAC;AAAA,UACD,YAAY,aAAa;AAAA,QAC1B;AACA,kBAAU,aAAa;AAAA,UACtB,CAAC;AAAA,UACD,YAAY,cAAc;AAAA,QAC3B;AAAA,MACD,OAAO;AAEN,kBAAU,YAAY;AAAA,UACrB,CAAC;AAAA,UACD,YAAY,aAAa;AAAA,QAC1B;AACA,kBAAU,aAAa;AAAA,UACtB,CAAC;AAAA,UACD,YAAY,cAAc;AAAA,QAC3B;AAGA,YAAI,UAAU,UAAU,OAAO;AAC9B,oBAAU,QAAQ;AAAA,YACjB,IAAI,UAAU,UAAU,MAAM;AAAA,YAC9B,MACC,UAAU,UAAU,MAAM,QAAQ,UAAU,UAAU;AAAA,YACvD,aAAa,UAAU,UAAU,MAAM;AAAA,YACvC,YAAY,UAAU,UAAU,MAAM;AAAA,UACvC;AAAA,QACD;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,OAAO;AAAA,oBACN,OAAO;AAAA,sBACN;AAAA,wBACC,MAAM,CAAC,SAAS,OAAO;AAAA,sBACxB;AAAA,sBACA;AAAA,wBACC,MAAM;AAAA,wBACN,YAAY;AAAA,0BACX,MAAM;AAAA,4BACL,MAAM,CAAC,UAAU,SAAS;AAAA,0BAC3B;AAAA,0BACA,IAAI;AAAA,4BACH,MAAM,CAAC,SAAS,OAAO;AAAA,0BACxB;AAAA,0BACA,aAAa;AAAA,4BACZ,MAAM;AAAA,0BACP;AAAA,0BACA,YAAY;AAAA,4BACX,MAAM;AAAA,0BACP;AAAA,wBACD;AAAA,wBACA,sBAAsB;AAAA,sBACvB;AAAA,oBACD;AAAA,kBACD;AAAA,kBACA,MAAM;AAAA,oBACL,MAAM,CAAC,UAAU,SAAS;AAAA,kBAC3B;AAAA,kBACA,aAAa;AAAA,oBACZ,MAAM;AAAA,kBACP;AAAA,kBACA,YAAY;AAAA,oBACX,MAAM;AAAA,kBACP;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,YAAY;AAAA,oBACX,MAAM;AAAA,oBACN,YAAY;AAAA,sBACX,MAAM;AAAA,wBACL,MAAM,CAAC,UAAU,SAAS;AAAA,sBAC3B;AAAA,sBACA,aAAa;AAAA,wBACZ,MAAM;AAAA,sBACP;AAAA,sBACA,YAAY;AAAA,wBACX,MAAM;AAAA,sBACP;AAAA,oBACD;AAAA,oBACA,sBAAsB;AAAA,kBACvB;AAAA,kBACA,WAAW;AAAA,oBACV,MAAM;AAAA,oBACN,YAAY;AAAA,sBACX,OAAO;AAAA,wBACN,OAAO;AAAA,0BACN;AAAA,4BACC,MAAM,CAAC,SAAS,OAAO;AAAA,0BACxB;AAAA,0BACA;AAAA,4BACC,MAAM;AAAA,4BACN,YAAY;AAAA,8BACX,MAAM;AAAA,gCACL,MAAM;AAAA,kCACL;AAAA,kCACA;AAAA,gCACD;AAAA,8BACD;AAAA,8BACA,IAAI;AAAA,gCACH,MAAM;AAAA,kCACL;AAAA,kCACA;AAAA,gCACD;AAAA,8BACD;AAAA,8BACA,aAAa;AAAA,gCACZ,MAAM;AAAA,8BACP;AAAA,8BACA,YAAY;AAAA,gCACX,MAAM;AAAA,8BACP;AAAA,4BACD;AAAA,4BACA,sBAAsB;AAAA,0BACvB;AAAA,wBACD;AAAA,sBACD;AAAA,sBACA,MAAM;AAAA,wBACL,MAAM,CAAC,UAAU,SAAS;AAAA,sBAC3B;AAAA,sBACA,aAAa;AAAA,wBACZ,MAAM;AAAA,sBACP;AAAA,sBACA,YAAY;AAAA,wBACX,MAAM;AAAA,sBACP;AAAA,oBACD;AAAA,oBACA,sBAAsB;AAAA,kBACvB;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,YAAY;AAAA,oBACX,MAAM;AAAA,oBACN,YAAY;AAAA,sBACX,MAAM;AAAA,wBACL,MAAM,CAAC,UAAU,SAAS;AAAA,sBAC3B;AAAA,sBACA,aAAa;AAAA,wBACZ,MAAM;AAAA,sBACP;AAAA,sBACA,YAAY;AAAA,wBACX,MAAM;AAAA,sBACP;AAAA,oBACD;AAAA,oBACA,sBAAsB;AAAA,kBACvB;AAAA,kBACA,WAAW;AAAA,oBACV,MAAM;AAAA,oBACN,YAAY;AAAA,sBACX,MAAM;AAAA,wBACL,MAAM,CAAC,UAAU,SAAS;AAAA,sBAC3B;AAAA,sBACA,aAAa;AAAA,wBACZ,MAAM;AAAA,sBACP;AAAA,sBACA,YAAY;AAAA,wBACX,MAAM;AAAA,sBACP;AAAA,oBACD;AAAA,oBACA,sBAAsB;AAAA,kBACvB;AAAA,kBACA,OAAO;AAAA,oBACN,MAAM;AAAA,oBACN,YAAY;AAAA,sBACX,MAAM;AAAA,wBACL,MAAM,CAAC,UAAU,SAAS;AAAA,sBAC3B;AAAA,sBACA,IAAI;AAAA,wBACH,MAAM,CAAC,SAAS,OAAO;AAAA,sBACxB;AAAA,sBACA,aAAa;AAAA,wBACZ,MAAM;AAAA,sBACP;AAAA,sBACA,YAAY;AAAA,wBACX,MAAM;AAAA,sBACP;AAAA,oBACD;AAAA,oBACA,sBAAsB;AAAA,kBACvB;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,UAAU;AAAA,UACV,YACC;AAAA,UACD,YAAY;AAAA,UACZ,cACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AASf,cAAM,UAAU,QAAQ,QAAQ,CAAC,KAAK,CAAC,GACtC,cAAc,YAAY,CAAC,GAAG,OAAO,GACrC,mBAAmB,YAAY,WAC/B,oBAAoB,YAAY,YAChC,mBAAmB,YAAY,SAAS;AAEzC,cAAM,aAAa,QAAQ;AAO3B,iBAAS,mBAAmB,UAAU;AACrC,iBAAO,EAEL,SAAS,UACT,SAAS,aACT,SAAS,SAAS,UAClB,SAAS,SAAS;AAAA,QAGrB;AAQA,iBAAS,aAAaC,OAAM;AAC3B,iBAAO,WAAW,cAAcA,OAAM,SAAS,YAAY;AAAA,QAC5D;AAQA,iBAAS,wBAAwBA,OAAM;AACtC,gBAAM,aAAa,aAAaA,KAAI;AAEpC,iBAAO,WAAW,eAAe,UAAU;AAAA,QAC5C;AAQA,iBAAS,wBAAwBA,OAAM;AACtC,gBAAM,aAAa,aAAaA,KAAI;AAEpC,iBAAO,WAAW,cAAc,UAAU;AAAA,QAC3C;AAQA,iBAAS,uBAAuB,YAAY,WAAW;AACtD,gBAAM,eAAe,WAAW,IAAI,MAAM,MACzC,2BACC,mBAAmB,SAAS,IACzB,wBAAwB,UAAU,GAAG,IACrC,WACF,IAAI,MAAM;AAEb,cAAI,0BAA0B,gBAAgB,GAAG;AAChD,mBAAO;AAAA,UACR;AAOA,gBAAM,kBAAkB,WAAW,kBAAkB,SAAS;AAE9D,cACC,gBAAgB,UAChB,gBAAgB,CAAC,EAAE,IAAI,MAAM,OAAO,gBAAgB,KACpD,0BAA0B,KAAK,eAAe,EAAE,IAAI,IAAI,QACvD,GACA;AACD,qBAAS,IAAI,GAAG,IAAI,gBAAgB,QAAQ,KAAK;AAChD,kBACC,gBAAgB,CAAC,EAAE,IAAI,MAAM,OAC5B,gBAAgB,IAAI,CAAC,EAAE,IAAI,IAAI,OAChC,GACC;AACD,uBAAO;AAAA,cACR;AAAA,YACD;AACA,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AAOA,iBAAS,OAAO,UAAU;AACzB,gBAAM,MAAM,SAAS;AAErB,cAAI,SAAS,UAAU;AACtB,mBAAO,WAAW,QAAQ,EAAE,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC;AAAA,UAC7D;AACA,iBAAO,SAAS,sBAAsB,QAAQ;AAAA,QAC/C;AAYA,iBAAS,OAAO,UAAU,MAAM,YAAY,UAAU,MAAM;AAC3D,gBAAM,OAAO,WAAW,SAAS;AAEjC,eACG,QAAQ,SAAS,YACjB,OAAO,KAAK,SAAS,aACrB,OAAO,KAAK,CAAC,YAAY,SAAS,cACpC,EAAE,YAAY,uBAAuB,UAAU,IAC9C;AACD,kBAAM,YAAY,aAAa,SAAS,GAAG,GAC1C,mBAAmB,WAAW,eAAe,WAAW;AAAA,cACvD,iBAAiB;AAAA,YAClB,CAAC,GACD,kBAAkB,WAAW,cAAc,WAAW;AAAA,cACrD,iBAAiB;AAAA,YAClB,CAAC,GACD,YAAY,SAAS,OACrB,UAAU,OAAO,GACjB,UAAU,KAAK,IAAI,IAAI,GACvB,SAAS,MAAM,UAAU,CAAC,EAAE,KAAK,GAAG;AAErC,kBAAM,WAAW,YACd,iBAAiB,IAAI,MACrB,UAAU,IAAI;AACjB,kBAAM,SAAS,YACZ,UAAU,IAAI,QACd,gBAAgB,IAAI;AACvB,kBAAM,aAAa,YAChB,iBAAiB,MACjB,gBAAgB;AACnB,kBAAM,MAAM,UACT,EAAE,OAAO,UAAU,KAAK,OAAO,IAC/B;AAEH,gBAAI;AAEJ,gBAAI,SAAS;AACZ,kBAAI;AAGJ,kBAAI,WAAW;AACd,wBAAQ;AAAA,kBACP,iBAAiB,MAAM,CAAC;AAAA,kBACxB,iBAAiB,MAAM,CAAC,IAAI;AAAA,gBAC7B;AAAA,cACD,OAAO;AACN,wBAAQ;AAAA,kBACP,gBAAgB,MAAM,CAAC,IAAI;AAAA,kBAC3B,gBAAgB,MAAM,CAAC;AAAA,gBACxB;AAAA,cACD;AACA,oBAAM,SAAU,OAAO;AACtB,uBAAO,MAAM,YAAY,KAAK;AAAA,cAC/B;AAAA,YACD,OAAO;AAEN,kBAAI,WAAW;AACd,sBAAM,SAAU,OAAO;AACtB,yBAAO,MAAM;AAAA,oBACZ;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD;AAAA,cACD,OAAO;AACN,sBAAM,SAAU,OAAO;AACtB,yBAAO,MAAM;AAAA,oBACZ;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAEA,gBAAI;AAEJ,gBAAI,SAAS;AACZ,0BAAY,SAAS,QAAQ,aAAa;AAAA,YAC3C,OAAO;AACN,0BAAY,SAAS,QAAQ,eAAe;AAAA,YAC7C;AAEA,oBAAQ,OAAO;AAAA,cACd,MAAM,SAAS,IAAI;AAAA,cACnB;AAAA,cACA;AAAA,cACA,MAAM;AAAA,gBACL,UAAU,SAAS,WAAW,cAAc;AAAA,gBAC5C,KAAK,OAAO,QAAQ;AAAA,cACrB;AAAA,cACA;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAQA,iBAAS,YAAY,UAAU;AAC9B,gBAAM,aAAa,WAAW,cAAc,QAAQ;AACpD,gBAAM,WAAW,wBAAwB,SAAS,GAAG;AAErD,iBAAO;AAAA,YACN,WACE,QAAQ,EACR,MAAM,WAAW,MAAM,CAAC,GAAG,SAAS,MAAM,CAAC,CAAC;AAAA,UAC/C;AAAA,QACD;AAOA,iBAAS,sBAAsB,UAAU;AACxC,gBAAM,aAAa,eAAe;AAAA,YACjC,WACE,QAAQ,EACR,MAAM,SAAS,IAAI,MAAM,CAAC,GAAG,SAAS,MAAM,MAAM,CAAC,CAAC;AAAA,UACvD;AAEA,cAAI,YAAY;AACf,mBAAO;AAAA,cACN,aAAa,WAAW,CAAC;AAAA,cACzB,YAAY,WAAW,CAAC;AAAA,YACzB;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AAOA,iBAAS,aAAaA,OAAM;AAC3B,cAAIA,MAAK,WAAW,WAAW,GAAG;AACjC,mBAAO,CAACA,MAAK,UAAU;AAAA,UACxB;AAEA,iBAAOA,MAAK,WAAW;AAAA,YACtB,CAAC,QAAQ,aAAa;AACrB,oBAAM,eAAe,KAAK,MAAM,GAC/B,OAAO,KAAK,YAAY;AAEzB,kBAAI,CAAC,QAAQ,uBAAuB,MAAM,QAAQ,GAAG;AACpD,6BAAa,KAAK,QAAQ;AAAA,cAC3B,OAAO;AACN,uBAAO,KAAK,CAAC,QAAQ,CAAC;AAAA,cACvB;AAEA,qBAAO;AAAA,YACR;AAAA,YACA,CAAC,CAAC,CAAC;AAAA,UACJ;AAAA,QACD;AAOA,iBAAS,qBAAqB,YAAY;AACzC,gBAAM,SAAS,WAAW,QACzB,SAAS,WAAW,IAAI,WAAW,GACnC,QAAQ,iBAAiB;AAC1B,cAAI,cAAc,KAAK,IAAI,GAAG,MAAM,GACnC,aACA,YACA;AAED,cAAI,oBAAoB,SAAS,GAAG;AAEnC,0BAAc,iBAAiB;AAC/B,yBAAa,iBAAiB;AAC9B,mBAAO,iBAAiB;AAAA,UACzB,OAAO;AACN,0BAAc,iBAAiB;AAC/B,yBAAa,iBAAiB;AAC9B,mBAAO,iBAAiB;AAAA,UACzB;AAGA,yBAAe,UAAU,UAAU,cAAc;AAEjD,mBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAChC,kBAAM,WAAW,WAAW,CAAC;AAC7B,kBAAM,aAAa,sBAAsB,QAAQ;AAEjD,gBAAI,YAAY;AAEf,oBAAM,QAAQ,OAAO,CAAC;AAEtB,kBAAI,UAAU,SAAS;AACtB;AAAA,kBACC;AAAA,kBACA;AAAA,kBACA,WAAW;AAAA,kBACX;AAAA,kBACA;AAAA,gBACD;AACA;AAAA,kBACC;AAAA,kBACA;AAAA,kBACA,WAAW;AAAA,kBACX,cAAc;AAAA,kBACd;AAAA,gBACD;AAAA,cACD,OAAO;AAEN;AAAA,kBACC;AAAA,kBACA;AAAA,kBACA,WAAW;AAAA,kBACX,cAAc;AAAA,kBACd;AAAA,gBACD;AACA;AAAA,kBACC;AAAA,kBACA;AAAA,kBACA,WAAW;AAAA,kBACX;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAQA,iBAAS,cAAcA,OAAM,aAAa;AACzC,gBAAM,SAAS,sBAAsBA,KAAI;AAEzC,cAAI,QAAQ;AAEX;AAAA,cACCA;AAAA,cACA;AAAA,cACA,OAAO;AAAA,cACP,YAAY;AAAA,cACZ,YAAY;AAAA,YACb;AACA;AAAA,cACCA;AAAA,cACA;AAAA,cACA,OAAO;AAAA,cACP,YAAY;AAAA,cACZ,YAAY;AAAA,YACb;AAAA,UACD;AAAA,QACD;AAQA,iBAAS,kBAAkB,YAAY,aAAa;AACnD,gBAAM,SAAS,WAAW;AAE1B,mBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAChC,0BAAc,WAAW,CAAC,GAAG,WAAW;AAAA,UACzC;AAAA,QACD;AAOA,iBAAS,gBAAgBA,OAAM;AAC9B,uBAAaA,KAAI,EAAE,QAAQ,WAAS;AACnC,kBAAM,aAAa,MAAM,OAAO,kBAAkB;AAElD,gBACC,WAAW,SAAS,KACpB,uBAAuB,UAAU,GAChC;AACD,gCAAkB,YAAY,gBAAgB;AAAA,YAC/C,OAAO;AACN,mCAAqB,UAAU;AAAA,YAChC;AAAA,UACD,CAAC;AAAA,QACF;AAMA,YAAI,kBAAkB;AAGrB,iBAAO;AAAA,YACN,iBAAiBA,OAAM;AACtB,kBAAI,aAAaA,KAAI,GAAG;AACvB;AAAA,kBACCA,MAAK,WAAW,OAAO,kBAAkB;AAAA,kBACzC;AAAA,gBACD;AAAA,cACD,OAAO;AACN,gCAAgBA,KAAI;AAAA,cACrB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAGA,eAAO;AAAA,UACN,SAASA,OAAM;AACd;AAAA,cACCA;AAAA,cACA,aAAaA,MAAK,MAAM,IACrB,oBACA;AAAA,YACJ;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrzBA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAAjB,QACC,WAAW;AAMZ,QAAM,aAAa;AACnB,QAAM,aAAa;AACnB,QAAM,eAAe;AACrB,QAAM,eAAe;AACrB,QAAM,sBAAsB;AAC5B,QAAM,uBAAuB;AAC7B,QAAM,aACL;AACD,QAAM,OAAO,SAAS,OAAO;AAAA,MAC5B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAGD,KAAC,WAAY;AACZ,WAAK,KAAK;AACV,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,GAAG;AACrC,YAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,GAAG;AAC5B,gBAAM,IAAI;AAAA,YACT,8CAA8C,KAAK,CAAC,CAAC;AAAA,UACtD;AAAA,QACD;AAAA,MACD;AAAA,IACD,GAAG;AAWH,aAAS,sBAAsB,OAAO;AACrC,aAAO,MAAM,SAAS,cAAc,oBAAoB,KAAK,MAAM,KAAK;AAAA,IACzE;AAOA,aAAS,uBAAuB,OAAO;AACtC,aAAO,MAAM,SAAS,cAAc,qBAAqB,KAAK,MAAM,KAAK;AAAA,IAC1E;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,QAAQ,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,cACzC,OAAO,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,cACxC,WAAW;AAAA,gBACV,MAAM;AAAA,gBACN,YAAY,KAAK,OAAO,CAAC,MAAM,QAAQ;AACtC,uBAAK,GAAG,IAAI;AAAA,oBACX,MAAM;AAAA,oBACN,YAAY;AAAA,sBACX,QAAQ,EAAE,MAAM,UAAU;AAAA,sBAC1B,OAAO,EAAE,MAAM,UAAU;AAAA,oBAC1B;AAAA,oBACA,sBAAsB;AAAA,kBACvB;AACA,yBAAO;AAAA,gBACR,GAAG,CAAC,CAAC;AAAA,gBACL,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,gBAAgB;AAAA,UAChB,eAAe;AAAA,UACf,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,cAAM,iBAAiB,oBAAI,QAAQ;AAQnC,iBAAS,kBAAkB,OAAO,SAAS;AAC1C,gBAAM,YAAY,WAAW,eAAe,KAAK;AAEjD,cACC,cACC,WAAW,KAAK,UAAU,IAAI,KAC9B,QAAQ,KAAK,UAAU,KAAK,MAC7B,CAAC,sBAAsB,SAAS,KAChC,CAAC,eAAe,IAAI,SAAS,KAC7B,SAAS,kBAAkB,WAAW,KAAK,KAC3C,CAAC,WAAW,eAAe,WAAW,KAAK,GAC1C;AACD,oBAAQ,OAAO;AAAA,cACd,KAAK,MAAM;AAAA,cACX,WAAW;AAAA,cACX,MAAM;AAAA,cACN,IAAI,OAAO;AACV,uBAAO,MAAM,iBAAiB,OAAO,GAAG;AAAA,cACzC;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAQA,iBAAS,oBAAoB,OAAO,SAAS;AAC5C,gBAAM,YAAY,WAAW,eAAe,KAAK;AAEjD,cACC,cACC,WAAW,KAAK,UAAU,IAAI,KAC9B,QAAQ,KAAK,UAAU,KAAK,MAC7B,CAAC,sBAAsB,SAAS,KAChC,CAAC,eAAe,IAAI,SAAS,KAC7B,SAAS,kBAAkB,WAAW,KAAK,KAC3C,WAAW,eAAe,WAAW,KAAK,GACzC;AACD,oBAAQ,OAAO;AAAA,cACd,KAAK,EAAE,OAAO,UAAU,IAAI,KAAK,KAAK,MAAM,IAAI,MAAM;AAAA,cACtD,WAAW;AAAA,cACX,MAAM;AAAA,cACN,IAAI,OAAO;AACV,uBAAO,MAAM,YAAY;AAAA,kBACxB,UAAU,MAAM,CAAC;AAAA,kBACjB,MAAM,MAAM,CAAC;AAAA,gBACd,CAAC;AAAA,cACF;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAQA,iBAAS,iBAAiB,OAAO,SAAS;AACzC,gBAAM,YAAY,WAAW,cAAc,KAAK;AAEhD,cACC,cACC,WAAW,KAAK,UAAU,IAAI,KAC9B,QAAQ,KAAK,UAAU,KAAK,MAC7B,CAAC,uBAAuB,SAAS,KACjC,CAAC,eAAe,IAAI,SAAS,KAC7B,SAAS,kBAAkB,OAAO,SAAS,KAC3C,CAAC,WAAW,eAAe,OAAO,SAAS,GAC1C;AACD,oBAAQ,OAAO;AAAA,cACd,KAAK,MAAM;AAAA,cACX,WAAW;AAAA,cACX,MAAM;AAAA,cACN,IAAI,OAAO;AACV,uBAAO,MAAM,gBAAgB,OAAO,GAAG;AAAA,cACxC;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAQA,iBAAS,mBAAmB,OAAO,SAAS;AAC3C,gBAAM,YAAY,WAAW,cAAc,KAAK;AAEhD,cACC,cACC,WAAW,KAAK,UAAU,IAAI,KAC9B,QAAQ,KAAK,UAAU,KAAK,MAC7B,CAAC,uBAAuB,SAAS,KACjC,CAAC,eAAe,IAAI,SAAS,KAC7B,SAAS,kBAAkB,OAAO,SAAS,KAC3C,WAAW,eAAe,OAAO,SAAS,GACzC;AACD,oBAAQ,OAAO;AAAA,cACd,KAAK,EAAE,OAAO,MAAM,IAAI,KAAK,KAAK,UAAU,IAAI,MAAM;AAAA,cACtD,WAAW;AAAA,cACX,MAAM;AAAA,cACN,IAAI,OAAO;AACV,uBAAO,MAAM,YAAY;AAAA,kBACxB,MAAM,MAAM,CAAC;AAAA,kBACb,UAAU,MAAM,CAAC;AAAA,gBAClB,CAAC;AAAA,cACF;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AASA,iBAAS,aAAa,UAAU,CAAC,GAAG;AACnC,gBAAM,SAAS,QAAQ,WAAW;AAClC,gBAAM,QAAQ,QAAQ,UAAU;AAChC,gBAAM,eAAe;AAAA,YACpB,QAAQ,SAAS,oBAAoB;AAAA,YACrC,OAAO,QAAQ,mBAAmB;AAAA,UACnC;AACA,gBAAM,YAAa,WAAW,QAAQ,aAAc,CAAC;AACrD,gBAAM,OAAO,uBAAO,OAAO,IAAI;AAE/B,mBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,GAAG;AACrC,kBAAM,MAAM,KAAK,CAAC;AAClB,kBAAM,WAAW,UAAU,GAAG;AAE9B,gBAAI,UAAU;AACb,oBAAM,aACL,YAAY,WAAW,SAAS,SAAS;AAC1C,oBAAM,YACL,WAAW,WAAW,SAAS,QAAQ;AAExC,mBAAK,GAAG,IAAI;AAAA,gBACX,QAAQ,aACL,oBACA;AAAA,gBACH,OAAO,YACJ,mBACA;AAAA,cACJ;AAAA,YACD,OAAO;AACN,mBAAK,GAAG,IAAI;AAAA,YACb;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAEA,cAAM,iBAAiB,aAAa,QAAQ,QAAQ,CAAC,CAAC;AAUtD,iBAAS,mBAAmB,OAAO,SAAS;AAC3C,yBAAe,MAAM,KAAK,EAAE,OAAO,OAAO,WAAW,UAAU;AAAA,QAChE;AAUA,iBAAS,kBAAkB,OAAO,SAAS;AAC1C,yBAAe,MAAM,KAAK,EAAE,MAAM,OAAO,WAAW,UAAU;AAAA,QAC/D;AAOA,iBAAS,mBAAmB,OAAO;AAClC,6BAAmB,KAAK;AACxB,4BAAkB,KAAK;AAAA,QACxB;AAQA,iBAAS,6BAA6BC,OAAM;AAC3C,gBAAM,aAAaA,SAAQ,WAAW,cAAcA,KAAI;AAExD,cAAI,cAAc,WAAW,SAAS,WAAW;AAChD,+BAAmB,UAAU;AAAA,UAC9B;AAAA,QACD;AAWA,iBAAS,6BAA6BA,OAAM;AAC3C,gBAAM,aAAaA,SAAQ,WAAW,cAAcA,KAAI;AAExD,cAAI,cAAc,WAAW,SAAS,WAAW;AAChD,+BAAmB,UAAU;AAAA,UAC9B;AAAA,QACD;AAQA,iBAAS,8BAA8BA,OAAM;AAC5C,cAAIA,OAAM;AACT,kBAAM,QAAQ,WAAW;AAAA,cACxBA;AAAA,cACA,SAAS;AAAA,YACV;AAEA,+BAAmB,KAAK;AAAA,UACzB;AAAA,QACD;AAQA,iBAAS,wBAAwBA,OAAM;AACtC,gBAAM,aAAaA,SAAQ,WAAW,cAAcA,KAAI;AAExD,cACC,eACE,WAAW,SAAS,aACrB,WAAW,UAAU,cACrB,WAAW,UAAU,UACrB;AACD,+BAAmB,UAAU;AAAA,UAC9B;AAAA,QACD;AAQA,iBAAS,qBAAqBA,OAAM;AACnC,uCAA6BA,KAAI;AACjC,wCAA8BA,MAAK,UAAU;AAAA,QAC9C;AAQA,iBAAS,2BAA2BA,OAAM;AACzC,uCAA6BA,KAAI;AACjC,wCAA8BA,MAAK,SAAS;AAAA,QAC7C;AAQA,iBAAS,4BAA4BA,OAAM;AAC1C,uCAA6BA,KAAI;AACjC,uCAA6BA,MAAK,OAAO;AACzC,wCAA8BA,MAAK,SAAS;AAAA,QAC7C;AAQA,iBAAS,gCAAgCA,OAAM;AAC9C,uCAA6BA,KAAI;AACjC,wCAA8BA,MAAK,IAAI;AAAA,QACxC;AAQA,iBAAS,8BAA8BA,OAAM;AAC5C,uCAA6BA,KAAI;AAEjC,gBAAM,UAAU,WAAW;AAAA,YAC1BA,MAAK;AAAA,YACL,SAAS;AAAA,UACV;AACA,gBAAM,gBAAgB,WAAW,eAAe,OAAO;AAEvD,cAAI,cAAc,SAAS,qBAAqB;AAC/C,+BAAmB,OAAO;AAAA,UAC3B;AAEA,4BAAkB,OAAO;AAAA,QAC1B;AAQA,iBAAS,8BAA8BA,OAAM;AAC5C,cAAIA,MAAK,OAAO;AACf,+BAAmB,WAAW,cAAcA,OAAM,CAAC,CAAC;AACpD,8BAAkB,WAAW,cAAcA,OAAM,CAAC,CAAC;AAAA,UACpD,OAAO;AACN,yCAA6BA,KAAI;AAAA,UAClC;AAEA,gBAAM,UAAU,WAAW;AAAA,YAC1BA,MAAK;AAAA,YACL,SAAS;AAAA,UACV;AACA,gBAAM,gBAAgB,WAAW,eAAe,OAAO;AAEvD,cAAI,cAAc,SAAS,qBAAqB;AAC/C,+BAAmB,OAAO;AAAA,UAC3B;AAEA,4BAAkB,OAAO;AAAA,QAC1B;AAaA,iBAAS,iCAAiCA,OAAM;AAC/C,gBAAM,aAAa,WAAW,cAAcA,KAAI;AAEhD,6BAAmB,YAAY,YAAY;AAC3C,4BAAkB,YAAY,YAAY;AAE1C,cAAIA,MAAK,SAAS,4BAA4B;AAC7C,+BAAmB,WAAW,cAAc,UAAU,CAAC;AAAA,UACxD;AAEA,cAAIA,MAAK,SAAS,0BAA0BA,MAAK,UAAU;AAC1D,kBAAM,UAAU,WAAW,eAAeA,MAAK,QAAQ;AAEvD,+BAAmB,SAAS,YAAY;AACxC,8BAAkB,SAAS,YAAY;AAAA,UACxC;AAEA,cAAIA,MAAK,QAAQ;AAChB,kBAAM,YAAY,WAAW,eAAeA,MAAK,MAAM;AAEvD,+BAAmB,WAAW,YAAY;AAC1C,8BAAkB,WAAW,YAAY;AAAA,UAC1C;AAAA,QACD;AAQA,iBAAS,+BAA+BA,OAAM;AAC7C,cAAIA,MAAK,SAAS,MAAM,CAAC,MAAMA,MAAK,MAAM,MAAM,CAAC,GAAG;AACnD,kBAAM,UAAU,WAAW,eAAeA,MAAK,KAAK;AAEpD,+BAAmB,SAAS,YAAY;AAAA,UACzC;AAAA,QACD;AAQA,iBAAS,+BAA+BA,OAAM;AAC7C,cAAIA,MAAK,MAAM,MAAM,CAAC,MAAMA,MAAK,SAAS,MAAM,CAAC,GAAG;AACnD,kBAAM,UAAU,WAAW,eAAeA,MAAK,QAAQ;AAEvD,+BAAmB,SAAS,YAAY;AACxC,8BAAkB,SAAS,YAAY;AAAA,UACxC;AAAA,QACD;AAQA,iBAAS,wCAAwCA,OAAM;AACtD,gBAAM,UAAU,WAAW,cAAcA,OAAM,CAAC;AAEhD,6BAAmB,SAAS,YAAY;AAAA,QACzC;AASA,iBAAS,wBAAwBA,OAAM;AACtC,cAAIA,MAAK,QAAQ;AAChB,yCAA6BA,KAAI;AAAA,UAClC;AACA,cACCA,MAAK,SAAS,SACdA,MAAK,SAAS,UACZA,MAAK,UAAUA,MAAK,SAAS,uBAC9BA,MAAK,MAAM,OACX;AACD,kBAAM,QAAQ,WAAW,eAAeA,MAAK,KAAK,SAAO;AACxD,sBAAQ,IAAI,OAAO;AAAA,gBAClB,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AACJ,yBAAO;AAAA,gBACR;AACC,yBAAO;AAAA,cACT;AAAA,YACD,CAAC;AAED,gBAAI,CAAC,OAAO;AACX,oBAAM,IAAI;AAAA,gBACT;AAAA,cACD;AAAA,YACD;AAEA,+BAAmB,KAAK;AAAA,UACzB;AAAA,QACD;AAQA,iBAAS,+BAA+BA,OAAM;AAC7C,6BAAmB,WAAW,cAAcA,KAAI,CAAC;AAAA,QAClD;AAEA,eAAO;AAAA;AAAA,UAEN,mBAAmB;AAAA,UACnB,eAAe;AAAA;AAAA,UAGf,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,UACnB,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,cAAc;AAAA;AAAA,UAGd,aAAa;AAAA,UACb,iBAAiB;AAAA,UACjB,YAAY;AAAA;AAAA,UAGZ,kBAAkB;AAAA,UAClB,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,gBAAgB;AAAA;AAAA,UAGhB,kBAAkB;AAAA,UAClB,wBAAwB;AAAA,UACxB,0BAA0B;AAAA,UAC1B,sBAAsB;AAAA,UACtB,qBAAqB;AAAA,UACrB,mBAAmB;AAAA,UACnB,qBAAqB;AAAA;AAAA,UAGrB,yBAAyB;AAAA,UACzB,iBAAiB;AAAA,UACjB,iBAAiB;AAAA,UACjB,oBAAoB;AAAA,UACpB,eAAe;AAAA,UACf,OAAO;AAAA,UACP,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,iBAAiB;AAAA;AAAA,UAGjB,iBAAiB;AAAA,UACjB,iBAAiB;AAAA,UACjB,0BAA0B;AAAA,UAC1B,kBAAkB;AAAA,UAClB,oBAAoB;AAAA,UACpB,aAAa;AAAA,UACb,UAAU;AAAA;AAAA,UAGV,iCAAiCA,OAAM;AACtC,kBAAM,gBAAgB,WAAW;AAAA,cAChCA,MAAK;AAAA,cACL,SAAS;AAAA,YACV;AAEA,2BAAe,IAAI,aAAa;AAAA,UACjC;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5rBA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM,CAAC,SAAS,QAAQ;AAAA,cACzB;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,UAAU;AAAA,oBACT,MAAM,CAAC,SAAS,QAAQ;AAAA,kBACzB;AAAA,kBACA,eAAe;AAAA,oBACd,MAAM;AAAA,kBACP;AAAA,kBACA,sBAAsB;AAAA,oBACrB,MAAM;AAAA,kBACP;AAAA,kBACA,4BAA4B;AAAA,oBAC3B,MAAM;AAAA,kBACP;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,OAAO;AAAA,UACP,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,UAAU,QAAQ,QAAQ,CAAC;AAEjC,YAAI,OACH,eACA,6BAA6B;AAE9B,YAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAC5C,kBAAQ,CAAC,WAAW,YAAY;AAAA,QACjC,OAAO;AACN,kBAAQ,CAAC,QAAQ,YAAY,QAAQ,aAAa;AAClD,0BAAgB,QAAQ;AAExB,cAAI,OAAO,OAAO,SAAS,4BAA4B,GAAG;AACzD,yCAA6B,QAAQ;AAAA,UACtC,OAAO;AACN,yCACC,QAAQ,yBAAyB;AAAA,UACnC;AAAA,QACD;AAEA,cAAM,sBAAsB,SAAS;AACrC,cAAM,oBAAoB;AAC1B,cAAM,qBAAqB,IAAI,OAAO,eAAe,GAAG;AACxD,cAAM,aAAa,QAAQ;AAM3B,eAAO;AAAA,UACN,UAAU;AACT,kBAAM,WAAW,WAAW,eAAe;AAE3C,qBACE,OAAO,WAAS,MAAM,SAAS,MAAM,EACrC,QAAQ,CAAAC,UAAQ;AAChB,kBACC,+BACC,oBAAoB,KAAKA,MAAK,KAAK,KACnC,kBAAkB,KAAKA,MAAK,KAAK,IACjC;AACD;AAAA,cACD;AAEA,kBACC,iBACA,mBAAmB,KAAKA,MAAK,KAAK,GACjC;AACD;AAAA,cACD;AAEA,oBAAMC,YAAW,WAAW,eAAeD,OAAM;AAAA,gBAChD,iBAAiB;AAAA,cAClB,CAAC;AACD,oBAAM,eACLC,aACAA,UAAS,IAAI,IAAI,SAASD,MAAK,IAAI,MAAM;AAE1C,kBAAI,OAAO;AACV,oBAAI,cAAc;AACjB,0BAAQ,OAAO;AAAA,oBACd,MAAAA;AAAA,oBACA,WAAW;AAAA,kBACZ,CAAC;AAAA,gBACF;AAAA,cACD,OAAO;AACN,oBAAI,CAAC,cAAc;AAClB,0BAAQ,OAAO;AAAA,oBACd,MAAAA;AAAA,oBACA,WAAW;AAAA,kBACZ,CAAC;AAAA,gBACF;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACH;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5JA;AAAA,qDAAAE,UAAAC,SAAA;AAAA;AAoBA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,QAAQ,SAAS;AAAA,UACzB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,YAAY;AAAA,UACZ,cAAc;AAAA,QACf;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAa3B,iBAAS,UAAU,OAAOC,OAAM;AAC/B,iBAAO,SAAU,OAAO;AACvB,mBAAO,MAAM,iBAAiB,OAAOA,KAAI;AAAA,UAC1C;AAAA,QACD;AAMA,eAAO;AAAA,UACN,SAAS,SAAS,uBAAuBC,OAAM;AAC9C,kBAAM,iBAAiB,QAAQ,QAAQ,CAAC,KAAK,QAC5C,aAAa,mBAAmB,QAChC,kBAAkB,aAAa,OAAO,QACtC,SAAS,WAAW,QAAQ,GAC5B,UAAU,SAAS,6BAA6B;AACjD,gBAAIC;AAEJ,gBAAI,IAAI;AAER,oBAAQA,SAAQ,QAAQ,KAAK,MAAM,OAAO,MAAM;AAC/C;AACA,kBAAIA,OAAM,CAAC,MAAM,iBAAiB;AACjC;AAAA,cACD;AAEA,oBAAMC,SAAQD,OAAM;AACpB,oBAAM,QAAQ,CAACC,QAAOA,SAAQD,OAAM,CAAC,EAAE,MAAM;AAE7C,sBAAQ,OAAO;AAAA,gBACd,MAAAD;AAAA,gBACA,KAAK;AAAA,kBACJ,OAAO;AAAA,oBACN,MAAM;AAAA,oBACN,QAAQ,WAAW,MAAM,IAAI,CAAC,EAAE;AAAA,kBACjC;AAAA,kBACA,KAAK;AAAA,oBACJ,MAAM,IAAI;AAAA,oBACV,QAAQ;AAAA,kBACT;AAAA,gBACD;AAAA,gBACA,WAAW,aAAa,eAAe;AAAA,gBACvC,KAAK,UAAU,OAAO,eAAe;AAAA,cACtC,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACtIA;AAAA,0DAAAG,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAWjB,aAAS,iBAAiB,OAAO;AAChC,YAAM,aAAa,MACjB,IAAI,CAAC,MAAM,OAAO;AAAA,QAClB,MAAM,KAAK,KAAK;AAAA,QAChB,KAAK,IAAI;AAAA,MACV,EAAE,EACD,OAAO,UAAQ,CAAC,KAAK,IAAI,EACzB,IAAI,UAAQ,KAAK,GAAG;AAEtB,aAAO;AAAA,IACR;AAOA,aAAS,mBAAmB,UAAU;AACrC,YAAM,QAAQ,CAAC;AAEf,eAAS,QAAQ,WAAS;AACzB,cAAM,QAAQ,MAAM,IAAI,MAAM;AAC9B,cAAM,MAAM,MAAM,IAAI,IAAI;AAE1B,cAAM,KAAK,OAAO,GAAG;AAAA,MACtB,CAAC;AACD,aAAO;AAAA,IACR;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,oBAAoB;AAAA,gBACnB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,mBAAmB;AAAA,gBAClB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,mBAAmB;AAAA,gBAClB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,kBAAkB;AAAA,gBACjB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,iBAAiB;AAAA,gBAChB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,eAAe;AAAA,gBACd,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,iBAAiB;AAAA,gBAChB,MAAM;AAAA,cACP;AAAA,cACA,eAAe;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,cACA,kBAAkB;AAAA,gBACjB,MAAM;AAAA,cACP;AAAA,cACA,gBAAgB;AAAA,gBACf,MAAM;AAAA,cACP;AAAA,cACA,iBAAiB;AAAA,gBAChB,MAAM;AAAA,cACP;AAAA,cACA,eAAe;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,cACA,eAAe;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,cACA,4BAA4B;AAAA,gBAC3B,MAAM;AAAA,cACP;AAAA,cACA,sBAAsB;AAAA,gBACrB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,OAAO;AAAA,UACP,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,UAAU,OAAO,OAAO,CAAC,GAAG,QAAQ,QAAQ,CAAC,CAAC;AACpD,cAAM,gBAAgB,QAAQ;AAC9B,cAAM,sBAAsB,SAAS;AACrC,cAAM,qBAAqB,IAAI,OAAO,eAAe,GAAG;AACxD,cAAM,6BACL,QAAQ,+BAA+B;AAExC,gBAAQ,qBACP,OAAO,QAAQ,uBAAuB,cACnC,QAAQ,qBACR;AAEJ,cAAM,aAAa,QAAQ;AAE3B,cAAM,QAAQ,WAAW,OACxB,WAAW,MAAM,SAAS,GAC1B,WAAW,WAAW,eAAe,GACrC,eAAe,mBAAmB,QAAQ,GAC1C,aAAa,iBAAiB,KAAK,GACnC,uBAAuB,IAAI,IAAI,aAAa,OAAO,UAAU,CAAC;AAO/D,iBAAS,kBAAkB,OAAO;AACjC,cAAI,eAAe;AAEnB,aAAG;AACF,2BAAe,WAAW,eAAe,cAAc;AAAA,cACtD,iBAAiB;AAAA,YAClB,CAAC;AAAA,UACF,SAAS,gBAAgB,SAAS,eAAe,YAAY;AAE7D,cACC,gBACA,SAAS,kBAAkB,cAAc,KAAK,GAC7C;AACD,mBAAO;AAAA,UACR;AAEA,yBAAe;AACf,aAAG;AACF,2BAAe,WAAW,cAAc,cAAc;AAAA,cACrD,iBAAiB;AAAA,YAClB,CAAC;AAAA,UACF,SAAS,gBAAgB,SAAS,eAAe,YAAY;AAE7D,cACC,gBACA,SAAS,kBAAkB,OAAO,YAAY,GAC7C;AACD,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AAQA,iBAAS,iBAAiB,QAAQ,UAAU;AAC3C,iBACC,OAAO,SAAS,YACf,OAAO,QAAQ,OAAO,KAAK,SAAS,YACpC,OAAO,cAAc,OAAO,WAAW,SAAS;AAAA,QAEnD;AAOA,iBAAS,qBAAqB,OAAO;AACpC,gBAAMC,QAAO,WAAW,oBAAoB,MAAM,MAAM,CAAC,CAAC;AAqB1D,cAAIA,SAAQA,MAAK,SAAS,eAAe;AACxC,kBAAM,eAAe,WAAW,cAAcA,OAAM;AAAA,cACnD,MAAM;AAAA,YACP,CAAC;AAED,mBAAO,MAAM,MAAM,CAAC,KAAK,aAAa,MAAM,CAAC,IAAIA,QAAO;AAAA,UACzD;AAEA,iBAAOA;AAAA,QACR;AAQA,iBAAS,uBAAuB,OAAO,UAAU;AAChD,gBAAM,SAAS,qBAAqB,KAAK;AAEzC,cAAI,UAAU,iBAAiB,QAAQ,QAAQ,GAAG;AACjD,gBAAI,yBAAyB;AAE7B,gBAAI,OAAO,SAAS,eAAe;AAClC,uCAAyB,WAAW,cAAc,QAAQ;AAAA,gBACzD,MAAM;AAAA,cACP,CAAC;AAAA,YACF,WAAW,OAAO,SAAS,mBAAmB;AAC7C,uCAAyB,WAAW;AAAA,gBACnC,OAAO;AAAA,gBACP;AAAA,kBACC,QAAQ,SAAS;AAAA,gBAClB;AAAA,cACD;AAAA,YACD;AAEA,mBACC,MAAM,IAAI,MAAM,OACf,uBAAuB,IAAI,MAAM,SAClC;AAAA,UAEF;AAEA,iBAAO;AAAA,QACR;AAQA,iBAAS,qBAAqB,OAAO,UAAU;AAC9C,gBAAM,SAAS,qBAAqB,KAAK;AAEzC,iBACC,CAAC,CAAC,UACF,iBAAiB,QAAQ,QAAQ,KACjC,OAAO,IAAI,IAAI,OAAO,MAAM,IAAI,IAAI,SAAS;AAAA,QAE/C;AAOA,iBAAS,sBAAsB,OAAO;AACrC,iBACC,uBAAuB,OAAO,WAAW,KACzC,uBAAuB,OAAO,gBAAgB,KAC9C,uBAAuB,OAAO,aAAa,KAC3C,uBAAuB,OAAO,YAAY,KAC1C,uBAAuB,OAAO,iBAAiB;AAAA,QAEjD;AAOA,iBAAS,oBAAoB,OAAO;AACnC,iBACC,qBAAqB,OAAO,WAAW,KACvC,qBAAqB,OAAO,gBAAgB,KAC5C,qBAAqB,OAAO,aAAa,KACzC,qBAAqB,OAAO,YAAY,KACxC,qBAAqB,OAAO,iBAAiB;AAAA,QAE/C;AAOA,iBAAS,sBAAsB,OAAO;AACrC,iBAAO,uBAAuB,OAAO,WAAW;AAAA,QACjD;AAOA,iBAAS,oBAAoB,OAAO;AACnC,iBAAO,qBAAqB,OAAO,WAAW;AAAA,QAC/C;AAOA,iBAAS,uBAAuB,OAAO;AACtC,iBACC,uBAAuB,OAAO,kBAAkB,KAChD,uBAAuB,OAAO,eAAe;AAAA,QAE/C;AAOA,iBAAS,qBAAqB,OAAO;AACpC,iBACC,qBAAqB,OAAO,kBAAkB,KAC9C,qBAAqB,OAAO,eAAe;AAAA,QAE7C;AAOA,iBAAS,sBAAsB,OAAO;AACrC,iBACC,uBAAuB,OAAO,iBAAiB,KAC/C,uBAAuB,OAAO,cAAc;AAAA,QAE9C;AAOA,iBAAS,oBAAoB,OAAO;AACnC,iBACC,qBAAqB,OAAO,iBAAiB,KAC7C,qBAAqB,OAAO,cAAc;AAAA,QAE5C;AAUA,iBAAS,kBAAkB,OAAO,MAAM;AACvC,cACC,8BACA,oBAAoB,KAAK,MAAM,KAAK,GACnC;AACD;AAAA,UACD;AAEA,cAAI,iBAAiB,mBAAmB,KAAK,MAAM,KAAK,GAAG;AAC1D;AAAA,UACD;AAEA,cAAI,QAAQ,KAAK,OAChB,SAAS,KAAK;AAEf,gBAAM,cAAc,MAAM,IAAI,MAAM,OAAO,GAC1C,cAAc,MAAM,IAAI,IAAI,OAAO,GACnC,oBAAoB,kBAAkB,KAAK;AAE5C,gBAAM,oBACJ,QAAQ,mBACR,sBAAsB,KAAK,KAC3B,EACC,QAAQ,oBAAoB,SAC5B,sBAAsB,KAAK,IAE7B,kBACC,QAAQ,iBACR,oBAAoB,KAAK,KACzB,EACC,QAAQ,kBAAkB,SAC1B,oBAAoB,KAAK,IAE3B,oBACC,QAAQ,mBAAmB,sBAAsB,KAAK,GACvD,kBACC,QAAQ,iBAAiB,oBAAoB,KAAK,GACnD,qBACC,QAAQ,oBAAoB,uBAAuB,KAAK,GACzD,mBACC,QAAQ,kBAAkB,qBAAqB,KAAK,GACrD,oBACC,QAAQ,mBAAmB,sBAAsB,KAAK,GACvD,kBACC,QAAQ,iBAAiB,oBAAoB,KAAK;AAEpD,gBAAM,wBACL,qBACA,qBACA,sBACA;AACD,gBAAM,sBACL,mBACA,mBACA,oBACA;AAGD,cAAI,cAAc,GAAG;AACpB,qBAAS;AAAA,UACV;AACA,cAAI,eAAe,UAAU;AAC5B,oBAAQ;AAAA,UACT;AAGA,cAAI,mBAAmB;AACtB;AAAA,UACD;AAEA,gBAAM,yBAAyB,WAAW,eAAe,OAAO;AAAA,YAC/D,iBAAiB;AAAA,UAClB,CAAC;AACD,gBAAM,qBAAqB,WAAW,cAAc,OAAO;AAAA,YAC1D,iBAAiB;AAAA,UAClB,CAAC;AAGD,cACC,CAAC,yBACD,UACA,CAAC,qBAAqB,IAAI,WAAW,KACrC,EACC,SAAS,eAAe,sBAAsB,KAC9C,SAAS,kBAAkB,wBAAwB,KAAK,IAExD;AACD,kBAAM,YAAY,MAAM,MAAM,CAAC,IAAI,MAAM,IAAI,MAAM;AACnD,kBAAM,QAAQ,CAAC,WAAW,SAAS;AAEnC,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,IAAI,OAAO;AACV,uBAAO,MAAM,sBAAsB,OAAO,IAAI;AAAA,cAC/C;AAAA,YACD,CAAC;AAAA,UACF;AAGA,cACC,CAAC,uBACD,SACA,CAAC,qBAAqB,IAAI,WAAW,KACrC,EACC,SAAS,eAAe,kBAAkB,KAC1C,SAAS,kBAAkB,OAAO,kBAAkB,IAEpD;AACD,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,IAAI,OAAO;AACV,uBAAO,MAAM,gBAAgB,OAAO,IAAI;AAAA,cACzC;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAMA,eAAO;AAAA,UACN,UAAU;AACT,qBAAS,QAAQ,WAAS;AACzB,kBAAI,MAAM,SAAS,QAAQ;AAC1B,oBACC,QAAQ,qBACR,QAAQ,kBACP;AACD,oCAAkB,OAAO;AAAA,oBACxB,OAAO,QAAQ;AAAA,oBACf,QAAQ,QAAQ;AAAA,kBACjB,CAAC;AAAA,gBACF;AAAA,cACD,WAAW,MAAM,SAAS,SAAS;AAClC,oBACC,QAAQ,sBACR,QAAQ,mBACP;AACD,oCAAkB,OAAO;AAAA,oBACxB,OAAO,QAAQ;AAAA,oBACf,QAAQ,QAAQ;AAAA,kBACjB,CAAC;AAAA,gBACF;AAAA,cACD,WAAW,MAAM,SAAS,WAAW;AACpC,oBAAI,QAAQ,sBAAsB;AACjC,oCAAkB,OAAO;AAAA,oBACxB,OAAO,QAAQ;AAAA,oBACf,QAAQ;AAAA,kBACT,CAAC;AAAA,gBACF;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpkBA;AAAA,4DAAAC,UAAAC,SAAA;AAAA;AAQA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM,CAAC,UAAU,OAAO;AAAA,cACzB;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,QAAQ;AAAA,oBACP,MAAM,CAAC,UAAU,OAAO;AAAA,kBACzB;AAAA,kBACA,OAAO;AAAA,oBACN,MAAM,CAAC,UAAU,OAAO;AAAA,kBACzB;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,gBACtB,eAAe;AAAA,cAChB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QACT,UAAU;AAAA,UACT,UAAU;AAAA,UACV,YACC;AAAA,QACF;AAAA,QACA,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SAAS;AAAA,cACT,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,SAAS,QAAQ,QAAQ,CAAC,KAAK;AACrC,cAAM,mBACL,OAAO,WAAW,WAAW,SAAS,OAAO;AAC9C,cAAM,kBACL,OAAO,WAAW,WAAW,SAAS,OAAO;AAW9C,iBAAS,iBAAiBC,OAAM;AAC/B,gBAAM,cAAc,WAAW,eAAeA,OAAM;AAAA,YACnD,iBAAiB;AAAA,UAClB,CAAC;AACD,gBAAM,kBAAkB,cAAc,YAAY,IAAI,IAAI,OAAO;AAEjE,iBAAOA,MAAK,IAAI,MAAM,OAAO,mBAAmB;AAAA,QACjD;AASA,iBAAS,mBAAmBA,OAAM;AACjC,gBAAM,YAAY,WAAW,aAAaA,KAAI;AAC9C,gBAAM,oBAAoB,WAAW,eAAe,SAAS;AAE7D,iBAAO,SAAS,iBAAiB,SAAS,KACzC,UAAU,IAAI,MAAM,OAAO,kBAAkB,IAAI,IAAI,OACnD,oBACA;AAAA,QACJ;AAOA,iBAAS,gBAAgBA,OAAM;AAC9B,gBAAM,YAAY,mBAAmBA,KAAI;AACzC,gBAAM,aAAa,WAAW,cAAc,WAAW;AAAA,YACtD,iBAAiB;AAAA,UAClB,CAAC;AAED,iBAAO,WAAW,IAAI,MAAM,OAAO,UAAU,IAAI,IAAI,QAAQ;AAAA,QAC9D;AASA,iBAAS,YAAYA,OAAM,UAAU,UAAU;AAC9C,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW,WAAW,aAAa;AAAA,YACnC,MAAM;AAAA,cACL,OAAOA,MAAK,WAAW;AAAA,cACvB;AAAA,YACD;AAAA,YACA,IAAI,OAAO;AACV,oBAAM,YAAY,mBAAmBA,KAAI;AAEzC,kBAAI,UAAU;AACb,uBAAO,aAAa,WACjB,MAAM,iBAAiBA,OAAM,IAAI,IACjC,MAAM,gBAAgB,WAAW,IAAI;AAAA,cACzC;AACA,qBAAO,MAAM;AAAA,gBACZ,aAAa,WACV,CAACA,MAAK,MAAM,CAAC,IAAI,GAAGA,MAAK,MAAM,CAAC,CAAC,IACjC,CAAC,UAAU,MAAM,CAAC,GAAG,UAAU,MAAM,CAAC,IAAI,CAAC;AAAA,cAC/C;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAOA,iBAAS,gBAAgBA,OAAM;AAC9B,gBAAM,aAAa,SAAS,qBAAqBA,KAAI;AAErD,cAAI,CAAC,WAAW,QAAQ;AACvB;AAAA,UACD;AAEA,gBAAM,iBAAiB,WAAW,CAAC;AACnC,gBAAM,kBACL,WAAW,kBAAkB,cAAc;AAO5C,cAAI,gBAAgB,QAAQ;AAC3B,gBACC,qBAAqB,YACrB,CAAC,iBAAiB,cAAc,GAC/B;AACD,0BAAY,gBAAgB,UAAU,IAAI;AAAA,YAC3C;AAEA,gBACC,qBAAqB,WACrB,iBAAiB,cAAc,GAC9B;AACD,0BAAY,gBAAgB,UAAU,KAAK;AAAA,YAC5C;AAAA,UACD,WACCA,MAAK,SAAS,aACd,qBAAqB,WACrB,CAAC,gBAAgB,UACjB,iBAAiB,cAAc,GAC9B;AACD,wBAAY,gBAAgB,UAAU,KAAK;AAAA,UAC5C;AAEA,gBAAM,gBAAgB,WAAW,GAAG,EAAE;AACtC,gBAAM,aACLA,MAAK,SAAS,YAAYA,MAAK,OAAOA,MAAK,KAAK;AAOjD,cACC,kBAAkB,WAAW,GAAG,EAAE,KAClC,CAAC,cAAc,kBACd;AACD;AAAA,UACD;AAEA,cACC,oBAAoB,YACpB,CAAC,gBAAgB,aAAa,GAC7B;AACD,wBAAY,eAAe,SAAS,IAAI;AAAA,UACzC;AAEA,cAAI,oBAAoB,WAAW,gBAAgB,aAAa,GAAG;AAClE,wBAAY,eAAe,SAAS,KAAK;AAAA,UAC1C;AAAA,QACD;AAMA,eAAO;AAAA,UACN,SAAS;AAAA,UACT,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,UACpB,yBAAyB;AAAA,QAC1B;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxPA;AAAA,iEAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAWjB,QAAM,mBAAmB;AAAA,MACxB,KAAK,EAAE,MAAM,MAAM,KAAK;AAAA,MACxB,OAAO,EAAE,MAAM,CAAAC,UAAQA,MAAK,SAAS,qBAAqB;AAAA,MAC1D,QAAQ,EAAE,MAAM,CAAAA,UAAQA,MAAK,SAAS,mBAAmB;AAAA,IAC1D;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,SAAS;AAAA,oBACR,MAAM;AAAA,oBACN,OAAO;AAAA,sBACN,MAAM;AAAA,sBACN,YAAY;AAAA,wBACX,WAAW;AAAA,0BACV,MAAM,CAAC,UAAU,OAAO;AAAA,wBACzB;AAAA,wBACA,MAAM;AAAA,0BACL,MAAM,CAAC,UAAU,SAAS,GAAG;AAAA,wBAC9B;AAAA,wBACA,MAAM;AAAA,0BACL,MAAM,CAAC,UAAU,SAAS,GAAG;AAAA,wBAC9B;AAAA,sBACD;AAAA,sBACA,sBAAsB;AAAA,sBACtB,UAAU,CAAC,aAAa,QAAQ,MAAM;AAAA,oBACvC;AAAA,oBACA,UAAU;AAAA,kBACX;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,gBACtB,UAAU,CAAC,SAAS;AAAA,cACrB;AAAA,cACA;AAAA,gBACC,MAAM,CAAC,UAAU,OAAO;AAAA,cACzB;AAAA,YACD;AAAA,UACD;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,uBAAuB;AAAA,gBACtB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,OAAO;AAAA,UACP,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,UAAU,CAAC;AAEjB,gBAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC,KAAK;AACnC,gBAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC,KAAK,EAAE,uBAAuB,MAAM;AAElE,cAAM,gBACL,OAAO,QAAQ,CAAC,MAAM,WACnB,QAAQ,CAAC,EAAE,UACX,CAAC,EAAE,WAAW,QAAQ,CAAC,GAAG,MAAM,KAAK,MAAM,IAAI,CAAC;AACpD,cAAM,aAAa,QAAQ;AA+B3B,iBAAS,kBAAkB,SAAS,UAAU;AAC7C,gBAAM,YAAY,WAAW,aAAa,OAAO;AACjD,gBAAM,YAAY,WAAW,eAAe,SAAS;AACrD,gBAAM,YAAY,WAAW,cAAc,QAAQ;AAEnD,gBAAM,uBACL,SAAS,iBAAiB,SAAS,KACnC,CAAC,SAAS,kBAAkB,WAAW,SAAS,KAChD,SAAS,kBAAkB,WAAW,SAAS;AAEhD,iBAAO,uBACJ,EAAE,SAAS,WAAW,WAAW,UAAU,IAC3C,EAAE,SAAS,WAAW,WAAW,UAAU;AAAA,QAC/C;AASA,iBAAS,8BACR,eACA,gBACA,SACC;AACD,gBAAM,QAAQ,WAAW,cAAc,eAAe;AAAA,YACrD,iBAAiB;AAAA,UAClB,CAAC;AAED,cACC,UAAU,kBACV,MAAM,IAAI,MAAM,OAAO,cAAc,IAAI,IAAI,QAAQ,SACpD;AACD,mBAAO;AAAA,cACN;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AASA,iBAAS,gCACR,gBACA,eACA,SACC;AACD,gBAAM,SAAS,WAAW,eAAe,gBAAgB;AAAA,YACxD,iBAAiB;AAAA,UAClB,CAAC;AAED,cACC,WAAW,iBACX,eAAe,IAAI,MAAM,OAAO,OAAO,IAAI,IAAI,QAAQ,SACtD;AACD,mBAAO;AAAA,cACN;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AAQA,iBAAS,yBAAyB,QAAQ,OAAO;AAChD,iBACC,WAAW,iBAAiB,QAAQ,OAAO;AAAA,YAC1C,iBAAiB;AAAA,UAClB,CAAC,EAAE,WAAW;AAAA,QAEhB;AASA,iBAASE,OAAMD,OAAM,MAAM;AAC1B,iBAAO,iBAAiB,IAAI,EAAE,KAAKA,KAAI;AAAA,QACxC;AASA,iBAAS,eAAe,UAAU,UAAU;AAC3C,mBAAS,IAAI,cAAc,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG;AACnD,kBAAME,aAAY,cAAc,CAAC;AACjC,kBAAM,UACLD,OAAM,UAAUC,WAAU,IAAI,KAC9BD,OAAM,UAAUC,WAAU,IAAI;AAE/B,gBAAI,SAAS;AACZ,qBAAOA,WAAU;AAAA,YAClB;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AAEA,eAAO;AAAA,UACN,UAAUF,OAAM;AACf,kBAAM,OAAOA,MAAK;AAElB,qBAAS,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,KAAK;AACzC,oBAAM,WAAW,WAAW,cAAc,KAAK,CAAC,CAAC;AACjD,oBAAM,EAAE,SAAS,UAAU,IAAI;AAAA,gBAC9B,KAAK,CAAC;AAAA,gBACN,KAAK,IAAI,CAAC;AAAA,cACX;AACA,oBAAM,UAAU,CAAC,SAAS;AAAA,gBACzB;AAAA,gBACA;AAAA,cACD;AACA,oBAAMG,QAAO,CAAC,WAAW,QAAQ,CAAC,EAAE;AACpC,oBAAM,gBAAgB;AAAA,gBACrB;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AACA,oBAAM,eAAe;AAAA,gBACpB;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AACA,oBAAM,WACL,aAAa,IAAI,MAAM,OACtB,cAAc,IAAI,IAAI,OACvB;AACD,oBAAM,oBAAoB;AAAA,gBACzB;AAAA,gBACA;AAAA,cACD;AACA,oBAAM,mBAAmB;AAAA,gBACxB;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AACA,oBAAM,cAAc,eAAe,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AAEvD,kBAAI,gBAAgB,WAAW,UAAU;AACxC,wBAAQ,OAAO;AAAA,kBACd,MAAM,KAAK,IAAI,CAAC;AAAA,kBAChB,WAAW;AAAA,kBAEX,IAAI,OAAO;AACV,wBAAI,mBAAmB;AACtB,6BAAO;AAAA,oBACR;AACA,2BAAO,MAAM;AAAA,sBACZ;AAAA,wBACC,cAAc,MAAM,CAAC;AAAA,wBACrB,aAAa,MAAM,CAAC;AAAA,sBACrB;AAAA,sBACA;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF,WAAW,gBAAgB,YAAY,CAACA,SAAQ,CAAC,UAAU;AAC1D,wBAAQ,OAAO;AAAA,kBACd,MAAM,KAAK,IAAI,CAAC;AAAA,kBAChB,WAAW;AAAA,kBAEX,IAAI,OAAO;AACV,wBAAI,mBAAmB;AACtB,6BAAO;AAAA,oBACR;AACA,2BAAO,MAAM;AAAA,sBACZ;AAAA,sBACA;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrWA;AAAA,kEAAAC,UAAAC,SAAA;AAAA;AASA,QAAM,WAAW;AAMjB,QAAM,YAAY,oBAAI,IAAI,CAAC,cAAc,SAAS,gBAAgB,CAAC;AAQnE,aAAS,YAAY,YAAY,OAAO;AACvC,UAAI,WAAW,SAAS,gBAAgB,WAAW,SAAS,aAAa;AACxE,eAAO,SAAS,4BAA4B,OAAO,UAAU;AAAA,MAC9D;AAEA,aACC,WAAW,SAAS,qBACpB,WAAW,aAAa,UACxB,WAAW,SAAS,SAAS,aAC7B,WAAW,SAAS,UAAU;AAAA,IAEhC;AAOA,aAAS,YAAY,YAAY;AAChC,aACE,WAAW,SAAS,gBAAgB,WAAW,SAAS,eACzD,WAAW,SAAS;AAAA,IAEtB;AASA,aAAS,4BAA4B,YAAY,OAAO;AACvD,UACC,WAAW,SAAS,sBACpB,WAAW,aAAa,MACvB;AACD,eAAO;AAAA,MACR;AAEA,YAAM,YAAY,YAAY,WAAW,IAAI,IAAI,SAAS;AAC1D,YAAM,UAAU,cAAc,SAAS,UAAU;AAEjD,aACC,YAAY,WAAW,SAAS,CAAC,MAChC,SAAS,cAAc,WAAW,OAAO,CAAC,KAC1C,YAAY,WAAW,OAAO,GAAG,KAAK;AAAA,IAEzC;AAOA,aAAS,mBAAmB,YAAY;AACvC,aACC,WAAW,SAAS,uBACpB,WAAW,aAAa,QACxB,WAAW,KAAK,SAAS,sBACzB,WAAW,KAAK,aAAa,SAC7B,WAAW,MAAM,SAAS,sBAC1B,WAAW,MAAM,aAAa;AAAA,IAEhC;AASA,aAAS,4BAA4B,YAAY,OAAO;AACvD,UAAI,CAAC,mBAAmB,UAAU,GAAG;AACpC,eAAO;AAAA,MACR;AACA,YAAM,gBAAgB,YAAY,WAAW,KAAK,IAAI,IAAI,SAAS;AACnE,YAAM,cAAc,kBAAkB,SAAS,UAAU;AACzD,YAAM,iBAAiB,YAAY,WAAW,MAAM,IAAI,IACrD,SACA;AACH,YAAM,eAAe,mBAAmB,SAAS,UAAU;AAE3D,aACC,SAAS;AAAA,QACR,WAAW,KAAK,aAAa;AAAA,QAC7B,WAAW,MAAM,cAAc;AAAA,MAChC,MACE,SAAS,cAAc,WAAW,KAAK,WAAW,CAAC,KACpD,YAAY,WAAW,MAAM,YAAY,GAAG,KAAK,KAChD,YAAY,WAAW,KAAK,WAAW,GAAG,KAAK,KAC/C,SAAS,cAAc,WAAW,MAAM,YAAY,CAAC;AAAA,IAEzD;AAQA,aAAS,cAAc,YAAY,OAAO;AACzC,aACC,WAAW,SAAS,oBACpB,WAAW,OAAO,SAAS,aAC3B,WAAW,UAAU,WAAW,KAChC,SAAS,4BAA4B,OAAO,WAAW,MAAM;AAAA,IAE/D;AAWA,aAAS,aAAa,YAAY,OAAO;AACxC,YAAM,YACL,WAAW,SAAS,qBAAqB,WAAW,aAAa;AAClE,YAAMC,QAAO,YAAY,WAAW,WAAW;AAE/C,cAAQ,MAAM;AAAA,QACb,KAAK,YAAYA,KAAI;AACpB,iBAAO,EAAE,WAAWA,OAAM,UAAU,YAAY,OAAO,KAAK;AAAA,QAC7D,MAAKA,MAAK,SAAS,qBAClBA,MAAK,aAAa,OAClB,YAAYA,MAAK,QAAQ;AACzB,iBAAO,EAAE,WAAWA,MAAK,UAAU,UAAU,KAAK;AAAA,QACnD,MAAK,cAAcA,OAAM,KAAK,KAAK,YAAYA,MAAK,UAAU,CAAC,CAAC;AAC/D,iBAAO;AAAA,YACN,WAAWA,MAAK,UAAU,CAAC;AAAA,YAC3B,UAAU,YAAY,OAAO;AAAA,UAC9B;AAAA,QACD,KAAK,4BAA4B,YAAY,KAAK;AACjD,iBAAO;AAAA,YACN,WAAW,YAAY,WAAW,IAAI,IACnC,WAAW,OACX,WAAW;AAAA,YACd,UAAU;AAAA,UACX;AAAA,QACD,KAAK,4BAA4B,YAAY,KAAK;AACjD,iBAAO;AAAA,YACN,WAAW,YAAY,WAAW,KAAK,IAAI,IACxC,WAAW,KAAK,OAChB,WAAW,KAAK;AAAA,YACnB,UAAU;AAAA,UACX;AAAA,QACD;AACC,iBAAO;AAAA,MACT;AAAA,IACD;AAOA,aAAS,kBAAkBC,OAAM;AAChC,UAAIA,MAAK,SAAS,WAAW;AAC5B,eAAO;AAAA,MACR;AAEA,aAAOA,MAAK,OAAO,SAAS,mBAAmBA,MAAK,OAAO,SAASA,QACjE,OACA,kBAAkBA,MAAK,MAAM;AAAA,IACjC;AAQA,aAAS,mBAAmB,YAAYA,OAAM;AAC7C,UAAI,OAAOA,MAAK;AAEhB,aACC,KAAK,SAAS,uBACd,KAAK,aAAaA,MAAK,UACtB;AACD,YAAI,SAAS,gBAAgB,YAAY,IAAI,GAAG;AAK/C,iBAAO;AAAA,QACR;AACA,eAAO,KAAK;AAAA,MACb;AACA,aAAO;AAAA,IACR;AAMA,IAAAF,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,YACN;AAAA,cACC,OAAO;AAAA,gBACN,EAAE,OAAO,SAAS;AAAA,gBAClB;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,wBAAwB;AAAA,sBACvB,MAAM;AAAA,oBACP;AAAA,kBACD;AAAA,kBACA,sBAAsB;AAAA,gBACvB;AAAA,cACD;AAAA,cACA,UAAU;AAAA;AAAA,cACV,UAAU;AAAA,YACX;AAAA,YACA;AAAA,cACC,OAAO,CAAC,EAAE,OAAO,QAAQ,CAAC;AAAA,cAC1B,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,UACD;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,QAAQ;AAAA,QAEzB,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,UAAU;AAAA,UACT,YACC;AAAA,UACD,oBACC;AAAA,UACD,SACC;AAAA,UACD,gBACC;AAAA,UACD,IAAI;AAAA,UACJ,WACC;AAAA,UACD,YACC;AAAA,UACD,UACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,OAAO,QAAQ,QAAQ,CAAC;AAC9B,cAAM,UACL,SAAS,YACT,QAAQ,QAAQ,SAAS,KACzB,QAAQ,QAAQ,CAAC,EAAE;AACpB,cAAM,aAAa,QAAQ;AAC3B,cAAM,WAAW,WAAW,SAAS,WAAW,GAAG,EAAE;AAOrD,iBAAS,eAAeE,OAAM;AAC7B,iBACCA,MAAK,SAAS,iBACb,YAAY,CAAC,kBAAkBA,KAAI;AAAA,QAEtC;AAOA,iBAAS,uBAAuBA,OAAM;AACrC,cAAI,CAAC,YAAY,kBAAkBA,KAAI,GAAG;AACzC,mBAAOA,MAAK,SAAS;AAAA,UACtB;AAEA,iBACCA,MAAK,SAAS,sBACd,UAAU,IAAIA,MAAK,OAAO,IAAI,MAC7B,CAACA,MAAK,YACLA,MAAK,SAAS,SAAS,sBACvBA,MAAK,SAAS,SAAS;AAAA,QAE3B;AASA,iBAAS,uBAAuB,YAAY,YAAY,eAAe;AACtE,cAAI,eAAe;AAClB,mBAAO;AAAA,cACN,GAAG;AAAA,cACH,KAAK,WAAW;AAAA,YACjB;AAAA,UACD;AAEA,iBAAO;AAAA,YACN,GAAG;AAAA,YACH,SAAS,CAAC,UAAU;AAAA,UACrB;AAAA,QACD;AAOA,iBAAS,iBAAiBA,OAAM;AAC/B,iBAAO,WAAW;AAAA,YACjBA,MAAK;AAAA,YACLA,MAAK;AAAA,YACL,WAAS,MAAM,UAAUA,MAAK;AAAA,UAC/B;AAAA,QACD;AAEA,YAAI,SAAS,SAAS;AACrB,iBAAO;AAAA;AAAA,YAEN,qBAAqB,YAAY;AAChC,kBACC,CAAC,SAAS;AAAA,gBACT,WAAW;AAAA,cACZ,GACC;AACD;AAAA,cACD;AAEA,oBAAM,aAAa;AAAA,gBAClB,WAAW;AAAA,gBACX,MAAM;AAAA,gBACN,MAAM,EAAE,UAAU,WAAW,SAAS;AAAA,cACvC;AACA,oBAAM,aAAa;AAAA,gBAClB,WAAW;AAAA,gBACX,CAAC,IAAI,WAAW;AACf,sBACC,WAAW,kBAAkB,UAAU,EACrC,SAAS,GACV;AACD;AAAA,kBACD;AAEA,wBAAM,gBAAgB,iBAAiB,UAAU;AAGjD,wBAAM,UAAU,YAAY,eAAe,GAAG;AAE9C,wBAAM,iBAAiB,WAAW;AAAA,oBACjC,WAAW;AAAA,kBACZ;AACA,wBAAM,WAAW,WAAW,SAAS,MAAM,GAAG,EAAE;AAGhD,wBAAM,UAAU;AAAA,oBACf;AAAA,oBACA,IAAI,cAAc,IAAI,QAAQ;AAAA,kBAC/B;AAEA,wBAAM,aACL,SAAS,cAAc,WAAW,KAAK,KACvC,SAAS,cAAc;AAAA,oBACtB,MAAM;AAAA,oBACN;AAAA,kBACD,CAAC;AAGF,wBAAM,QACL,WAAW,aAAa,SACxB,SAAS,oBAAoB,WAAW,KAAK;AAE9C,sBACC,CAAC,SAAS;AAAA,oBACT;AAAA,oBACA,WAAW;AAAA,kBACZ,MACC,cAAc,QACd;AAED,0BAAM,UAAU;AAAA,sBACf,WAAW;AAAA,sBACX;AAAA,oBACD;AACA,0BAAM,UAAU;AAAA,sBACf,WAAW;AAAA,sBACX;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAEA,sBAAQ;AAAA,gBACP;AAAA,kBACC;AAAA,kBACA;AAAA,kBACA,eAAe,WAAW,IAAI;AAAA,gBAC/B;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA;AAAA,UAEN,qEACC,YACC;AACD,kBAAM,cAAc;AAAA,cACnB;AAAA,cACA,WAAW;AAAA,YACZ;AAEA,gBAAI,CAAC,SAAS,gBAAgB,WAAW,MAAM,WAAW,GAAG;AAC5D;AAAA,YACD;AAEA,kBAAM,aAAa;AAAA,cAClB,WAAW;AAAA,cACX,MAAM;AAAA,cACN,MAAM,EAAE,UAAU,GAAG,WAAW,MAAM,QAAQ,IAAI;AAAA,YACnD;AACA,kBAAM,aAAa;AAAA,cAClB,WAAW;AAAA,cACX,MAAM,EAAE,UAAU,GAAG,WAAW,MAAM,QAAQ,IAAI;AAAA,cAClD,CAAC,IAAI,WAAW;AACf,oBACC,WAAW,kBAAkB,UAAU,EAAE,SAAS,GACjD;AACD;AAAA,gBACD;AAGA,sBAAM,0BACL,iBAAiB,UAAU;AAG5B,sBAAM,UAAU;AAAA,kBACf;AAAA,kBACA,WAAW,MAAM;AAAA,gBAClB;AAGA,sBAAM,uBAAuB;AAAA,kBAC5B,YAAY;AAAA,gBACb;AACA,sBAAM,yBACL,WAAW,cAAc,oBAAoB;AAE9C,sBAAM,UAAU,YAAY;AAAA,kBAC3B,YAAY,OAAO,MAAM,CAAC;AAAA,kBAC1B,uBAAuB,MAAM,CAAC;AAAA,gBAC/B,CAAC;AAAA,cACF;AAAA,YACD;AAEA,oBAAQ;AAAA,cACP;AAAA,gBACC;AAAA,gBACA;AAAA,gBACA,eAAe,WAAW,IAAI;AAAA,cAC/B;AAAA,YACD;AAAA,UACD;AAAA;AAAA,UAGA,2EACC,SACC;AAED,gBACC,YAAY,QAAQ,IAAI,KACxB,SAAS,gBAAgB,QAAQ,MAAM,QAAQ,MAAM,IAAI,GACxD;AACD,oBAAM,aAAa;AAAA,gBAClB,WAAW;AAAA,gBACX,MAAM;AAAA,gBACN,MAAM,EAAE,UAAU,GAAG,QAAQ,QAAQ,IAAI;AAAA,cAC1C;AACA,oBAAM,aAAa;AAAA,gBAClB,WAAW;AAAA,gBACX,MAAM,EAAE,UAAU,GAAG,QAAQ,QAAQ,IAAI;AAAA,gBACzC,CAAC,IAAI,WAAW;AACf,sBACC,WAAW,kBAAkB,OAAO,EAAE,SAAS,GAC9C;AACD;AAAA,kBACD;AAEA,wBAAM,mBAAmB,SAAS;AAAA,oBACjC,QAAQ;AAAA,kBACT;AACA,wBAAM,2BACL,QAAQ,OAAO,SAAS,0BACvB,qBAAqB,MACrB,SAAS,cAAc;AAAA,oBACtB,MAAM;AAAA,kBACP,CAAC,IAAI;AAEP,sBACC,CAAC,SAAS;AAAA,oBACT;AAAA,oBACA;AAAA,kBACD,KACA,0BACC;AACD,0BAAM,UAAU,iBAAiB,SAAS,GAAG;AAC7C,0BAAM,UAAU,gBAAgB,SAAS,GAAG;AAAA,kBAC7C;AAGA,wBAAM,UAAU,YAAY;AAAA,oBAC3B,QAAQ,MAAM,CAAC;AAAA,oBACf,QAAQ,MAAM,MAAM,CAAC;AAAA,kBACtB,CAAC;AAGD,wBAAM,UAAU,YAAY;AAAA,oBAC3B,QAAQ,MAAM,MAAM,CAAC;AAAA,oBACrB,QAAQ,MAAM,CAAC;AAAA,kBAChB,CAAC;AAED,wBAAM,gBAAgB;AAAA,oBACrB,QAAQ;AAAA,kBACT;AAEA,wBAAM,UAAU;AAAA,oBACf;AAAA,oBACA,QAAQ;AAAA,kBACT;AAAA,gBACD;AAAA,cACD;AACA,oBAAM,MACL,eAAe,QAAQ,IAAI,KAC3B,uBAAuB,QAAQ,IAAI;AAEpC,sBAAQ;AAAA,gBACP,uBAAuB,YAAY,YAAY,GAAG;AAAA,cACnD;AAAA,YACD;AAAA,UACD;AAAA;AAAA,UAGA,8BAA8B,QAAQ;AACrC,gBAAI,CAAC,SAAS;AACb;AAAA,YACD;AAEA,kBAAM,UAAU,OAAO,WAAW,SAAS;AAE3C,gBAAI,WAAW,OAAO,WAAW,KAAK,WAAW,GAAG;AACnD;AAAA,YACD;AAEA,kBAAM,OAAO,UACV,OAAO,WAAW,KAAK,CAAC,IACxB,OAAO;AACV,kBAAM,QAAQ,WAAW,SAAS,MAAM;AACxC,kBAAM,YAAY,aAAa,OAAO,MAAM,KAAK;AAEjD,gBACC,KAAK,SAAS,yBACd,KAAK,WAAW,SAAS,0BACzB,KAAK,WAAW,aAAa,OAC7B,cAAc,QACd,SAAS;AAAA,cACR,UAAU;AAAA,cACV,KAAK,WAAW;AAAA,YACjB,GACC;AACD,oBAAM,aAAa;AAAA,gBAClB,WAAW;AAAA,gBACX,MAAM;AAAA,gBACN,MAAM,EAAE,UAAU,GAAG,UAAU,QAAQ,IAAI;AAAA,cAC5C;AACA,oBAAM,aAAa;AAAA,gBAClB,WAAW;AAAA,gBACX,MAAM,EAAE,UAAU,GAAG,UAAU,QAAQ,IAAI;AAAA,gBAC3C,CAAC,IAAI,WAAW;AACf,sBACC,WAAW,kBAAkB,MAAM,EAAE,SAAS,GAC7C;AACD;AAAA,kBACD;AAEA,wBAAM,iBACL,WAAW,cAAc,IAAI;AAC9B,wBAAM,YAAY,WAAW,eAAe,MAAM;AAElD,sBACC,cAAc,QACd,UAAU,UAAU,OACpB,UAAU,UAAU,OACpB,eAAe,SAAS,gBACxB,eAAe,SAAS,WACvB;AAED;AAAA,kBACD;AAEA,wBAAM,gBAAgB;AAAA,oBACrB,KAAK;AAAA,kBACN;AAEA,wBAAM,UAAU;AAAA,oBACf;AAAA,oBACA,UAAU;AAAA,kBACX;AAEA,wBAAM,UAAU,YAAY;AAAA,oBAC3B,OAAO,MAAM,CAAC;AAAA,oBACd,KAAK,MAAM,CAAC;AAAA,kBACb,CAAC;AAED,wBAAM,UAAU,YAAY;AAAA,oBAC3B,KAAK,MAAM,CAAC;AAAA,oBACZ,OAAO,MAAM,CAAC;AAAA,kBACf,CAAC;AAED,wBAAM,YAAY,WAAW;AAAA,oBAC5B,KAAK;AAAA,kBACN;AAEA,sBACC,WACA,cAAc,QACd,UAAU,UAAU,KACnB;AACD,0BAAM,UAAU,gBAAgB,QAAQ,GAAG;AAAA,kBAC5C;AAAA,gBACD;AAAA,cACD;AACA,oBAAM,gBACL,eAAe,UAAU,SAAS,KACjC,OAAO,KAAK,SAAS,uBACrB,uBAAuB,UAAU,SAAS;AAE5C,sBAAQ;AAAA,gBACP;AAAA,kBACC;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClrBA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAeA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,mBAAmB;AAAA,oBAClB,MAAM;AAAA,kBACP;AAAA,kBACA,KAAK;AAAA,oBACJ,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,CAAC;AAAA,QAElB,UAAU;AAAA,UACT,iBACC;AAAA,QACF;AAAA,MACD;AAAA,MACA,OAAO,SAAS;AACf,cAAM,SAAS,QAAQ,QAAQ,CAAC;AAChC,cAAM,CAAC,mBAAmBC,IAAG,IAC5B,OAAO,WAAW,WACf,CAAC,OAAO,MAAM,IACd,CAAC,OAAO,mBAAmB,OAAO,OAAO,CAAC;AAE9C,YAAI,aAAa;AAEjB,eAAO;AAAA,UACN,UAAU;AACT,yBAAa;AAAA,UACd;AAAA,UACA,eAAeC,OAAM;AACpB,gBAAI,aAAaD,MAAK;AACrB,sBAAQ,OAAO;AAAA,gBACd,MAAAC;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL;AAAA,kBACA,KAAAD;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,UACA,mBAAmB;AAClB;AAAA,UACD;AAAA,UACA,kBAAkB;AACjB,gBAAI,CAAC,mBAAmB;AACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC3FA;AAAA,+CAAAE,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,SAAS;AAAA,oBACR,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,kBACA,KAAK;AAAA,oBACJ,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,CAAC;AAAA,QAElB,UAAU;AAAA,UACT,WACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAM3B,cAAM,gBAAgB,CAAC,GACtB,SAAS,QAAQ,QAAQ,CAAC;AAC3B,YAAI,WAAW;AAEf,YACC,OAAO,WAAW,aACjB,OAAO,OAAO,QAAQ,SAAS,KAAK,OAAO,OAAO,QAAQ,KAAK,IAC/D;AACD,qBAAW,OAAO,WAAW,OAAO;AAAA,QACrC;AACA,YAAI,OAAO,WAAW,UAAU;AAC/B,qBAAW;AAAA,QACZ;AAOA,iBAAS,gBAAgB;AACxB,wBAAc,KAAK,CAAC;AAAA,QACrB;AAOA,iBAAS,cAAc;AACtB,wBAAc,IAAI;AAAA,QACnB;AAQA,iBAAS,UAAUC,OAAM;AACxB,gBAAM,MAAM,EAAE,cAAc,cAAc,SAAS,CAAC;AAEpD,cAAI,MAAM,UAAU;AACnB,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,WAAW,cAAcA,KAAI,EAAE;AAAA,cACpC,WAAW;AAAA,cACX,MAAM,EAAE,OAAO,KAAK,SAAS;AAAA,YAC9B,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,WAAW;AACnB,wBAAc,cAAc,SAAS,CAAC;AAAA,QACvC;AAOA,iBAAS,SAASA,OAAM;AACvB,iBACCA,MAAK,OAAO,SAAS,iBACrBA,MAAK,OAAO,cAAcA;AAAA,QAE5B;AAMA,eAAO;AAAA,UACN,SAAS;AAAA,UACT,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,UACpB,yBAAyB;AAAA,UACzB,aAAa;AAAA,UAEb,YAAYA,OAAM;AACjB,gBAAI,CAAC,SAASA,KAAI,GAAG;AACpB,wBAAUA,KAAI;AAAA,YACf;AAAA,UACD;AAAA,UACA,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,kBAAkB;AAAA,UAClB,gBAAgB;AAAA,UAChB,eAAe;AAAA,UACf,cAAc;AAAA,UACd,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,UAEhB,mBAAmBA,OAAM;AACxB,gBAAI,CAAC,SAASA,KAAI,GAAG;AACpB,uBAAS;AAAA,YACV;AAAA,UACD;AAAA,UACA,wBAAwB;AAAA,UACxB,qBAAqB;AAAA,UACrB,yBAAyB;AAAA,UACzB,uBAAuB;AAAA,UACvB,sBAAsB;AAAA,UACtB,qBAAqB;AAAA,UACrB,uBAAuB;AAAA,UACvB,uBAAuB;AAAA,UAEvB,4BAA4B;AAAA,UAC5B,2BAA2B;AAAA,UAC3B,gCAAgC;AAAA,UAChC,oBAAoB;AAAA,UACpB,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpLA;AAAA,6CAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,iBAAiB;AAAA,MACtB,MAAM;AAAA,MACN,YAAY;AAAA,QACX,MAAM;AAAA,UACL,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,QACA,UAAU;AAAA,UACT,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,QACA,UAAU;AAAA,UACT,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,QACA,eAAe;AAAA,UACd,MAAM;AAAA,QACP;AAAA,QACA,gBAAgB;AAAA,UACf,MAAM;AAAA,QACP;AAAA,QACA,eAAe;AAAA,UACd,MAAM;AAAA,QACP;AAAA,QACA,YAAY;AAAA,UACX,MAAM;AAAA,QACP;AAAA,QACA,wBAAwB;AAAA,UACvB,MAAM;AAAA,QACP;AAAA,QACA,sBAAsB;AAAA,UACrB,MAAM;AAAA,QACP;AAAA,QACA,wBAAwB;AAAA,UACvB,MAAM;AAAA,QACP;AAAA,MACD;AAAA,MACA,sBAAsB;AAAA,IACvB;AAEA,QAAM,4BAA4B;AAAA,MACjC,OAAO;AAAA,QACN;AAAA,QACA;AAAA,UACC,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,MACD;AAAA,IACD;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,KAAK;AAAA,UACL,YACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AASf,cAAM,aAAa;AAEnB,cAAM,aAAa,QAAQ;AAU3B,iBAAS,kBAAkB,MAAMC,WAAU;AAC1C,cAAI,sBAAsB;AAE1B,eAAK,QAAQ,QAAQ,CAACC,QAAO,WAAW;AACvC,kBAAM,cAAc,SAAS,qBAC5B,wBAAwBD,YACrB,cAAcA,YACd,GACH,aAAaA,YAAW;AAEzB,mCAAuB,aAAa;AAAA,UACrC,CAAC;AACD,iBAAO,MAAM,KAAK,IAAI,EAAE,SAAS;AAAA,QAClC;AAGA,cAAM,UAAU,OAAO,OAAO,CAAC,GAAG,QAAQ,QAAQ,GAAG,EAAE,CAAC;AAGxD,YAAI,OAAO,QAAQ,QAAQ,CAAC,MAAM,UAAU;AAC3C,kBAAQ,OAAO,QAAQ,QAAQ,CAAC;AAAA,QACjC;AAGA,YAAI,OAAO,QAAQ,QAAQ,CAAC,MAAM,UAAU;AAC3C,kBAAQ,WAAW,QAAQ,QAAQ,CAAC;AAAA,QACrC;AAEA,cAAM,YAAY,OAAO,QAAQ,SAAS,WAAW,QAAQ,OAAO,IACnE,WACC,OAAO,QAAQ,aAAa,WAAW,QAAQ,WAAW,GAC3D,iBAAiB,CAAC,CAAC,QAAQ,gBAC3B,gBAAgB,CAAC,CAAC,QAAQ,eAC1B,yBAAyB,CAAC,CAAC,QAAQ,wBACnC,uBAAuB,CAAC,CAAC,QAAQ,sBACjC,yBACC,CAAC,CAAC,QAAQ,0BAA0B,CAAC,CAAC,QAAQ,gBAC/C,aAAa,CAAC,CAAC,QAAQ,YACvB,mBAAmB,QAAQ;AAC5B,YAAI,gBAAgB,QAAQ,iBAAiB;AAE7C,YAAI,eAAe;AAClB,0BAAgB,IAAI,OAAO,eAAe,GAAG;AAAA,QAC9C;AAcA,iBAAS,kBAAkB,MAAM,YAAY,SAAS;AACrD,iBACC,WACA,QAAQ,IAAI,MAAM,SAAS,cAC3B,cAAc,QAAQ,IAAI,IAAI,SAC7B,QAAQ,IAAI,IAAI,OAAO,cACvB,QAAQ,IAAI,IAAI,WAAW,KAAK;AAAA,QAEnC;AASA,iBAAS,kBAAkB,MAAM,YAAY,SAAS;AACrD,gBAAM,QAAQ,QAAQ,IAAI,OACzB,MAAM,QAAQ,IAAI,KAClB,qBAAqB,CAAC,KACpB,MAAM,GAAG,QAAQ,IAAI,MAAM,MAAM,EACjC,KAAK;AAER,iBACC,YACC,MAAM,OAAO,cACZ,MAAM,SAAS,cAAc,wBAC9B,IAAI,OAAO,cACV,IAAI,SAAS,cAAc,IAAI,WAAW,KAAK;AAAA,QAEnD;AAOA,iBAAS,0CAA0CE,OAAM;AACxD,cACC,CAACA,SACD,CAACA,MAAK,UACNA,MAAK,SAAS,wBACdA,MAAK,OAAO,SAAS,0BACpB;AACD,mBAAO;AAAA,UACR;AAEA,gBAAM,SAASA,MAAK;AAEpB,iBAAO,OAAO,IAAI,MAAM,SAAS,OAAO,IAAI,IAAI;AAAA,QACjD;AASA,iBAAS,qBAAqB,MAAM,SAAS;AAE5C,iBAAO,KAAK,MAAM,GAAG,QAAQ,IAAI,MAAM,MAAM,EAAE,QAAQ,SAAS,EAAE;AAAA,QACnE;AAUA,iBAAS,mBAAmB,QAAQ,KAAKC,QAAO;AAC/C,cAAI,CAAC,MAAM,QAAQ,OAAO,GAAG,CAAC,GAAG;AAChC,mBAAO,GAAG,IAAI,CAAC;AAAA,UAChB;AACA,iBAAO,GAAG,EAAE,KAAKA,MAAK;AAAA,QACvB;AAMA,iBAAS,gBAAgB;AACxB,iBAAO,WAAW,IAAI,OAAO;AAAA,YAC5B,WACC,MAAM,SAAS,YACd,MAAM,SAAS,aACf,WAAW,oBAAoB,MAAM,MAAM,CAAC,IAAI,CAAC,EAC/C,SAAS;AAAA,UACd;AAAA,QACD;AAMA,iBAAS,yBAAyB;AACjC,iBAAO,WAAW,IAAI,OAAO;AAAA,YAC5B,WAAS,MAAM,SAAS;AAAA,UACzB;AAAA,QACD;AAMA,iBAAS,uBAAuB;AAC/B,iBAAO,WAAW,IAAI,OAAO;AAAA,YAC5B,WAAS,MAAM,SAAS;AAAA,UACzB;AAAA,QACD;AAQA,iBAAS,uBAAuB,KAAK;AACpC,gBAAM,MAAM,CAAC;AAEb,mBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACpC,kBAAMD,QAAO,IAAI,CAAC;AAElB,qBAAS,IAAIA,MAAK,IAAI,MAAM,MAAM,KAAKA,MAAK,IAAI,IAAI,MAAM,EAAE,GAAG;AAC9D,iCAAmB,KAAK,GAAGA,KAAI;AAAA,YAChC;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AAQA,iBAAS,iBAAiB;AACzB,gBAAM,WAAW,CAAC;AAElB,qBAAW,eAAe,EAAE,QAAQ,iBAAe;AAClD,kBAAM,iBAAiB,WAAW;AAAA,cACjC,YAAY,MAAM,CAAC;AAAA,YACpB;AAEA,gBAAI,0CAA0C,cAAc,GAAG;AAE9D,kBAAI,SAAS,GAAG,EAAE,MAAM,eAAe,QAAQ;AAC9C,yBAAS,KAAK,eAAe,MAAM;AAAA,cACpC;AAAA,YACD,OAAO;AACN,uBAAS,KAAK,WAAW;AAAA,YAC1B;AAAA,UACD,CAAC;AAED,iBAAO;AAAA,QACR;AAQA,iBAAS,yBAAyBA,OAAM;AAEvC,gBAAM,QAAQ,WAAW,OAExB,WACC,kBAAkB,oBAAoB,yBACnC,eAAe,IACf,CAAC;AAGN,cAAI,gBAAgB;AAEpB,gBAAM,UAAU,cAAc;AAC9B,gBAAM,gBAAgB,uBAAuB,OAAO;AAEpD,gBAAM,mBAAmB,uBAAuB;AAChD,gBAAM,yBACL,uBAAuB,gBAAgB;AAExC,gBAAM,iBAAiB,qBAAqB;AAC5C,gBAAM,uBAAuB,uBAAuB,cAAc;AAElE,gBAAM,QAAQ,CAAC,MAAM,MAAM;AAE1B,kBAAM,aAAa,IAAI;AAMvB,gBAAI,gBAAgB;AACpB,gBAAI;AAMJ,gBAAI,gBAAgB,SAAS,QAAQ;AACpC,kBAAI;AAGJ,iBAAG;AACF,0BAAU,SAAS,EAAE,aAAa;AAAA,cACnC,SAAS,WAAW,QAAQ,IAAI,MAAM,QAAQ;AAG9C,wBAAU,SAAS,EAAE,aAAa;AAElC,kBAAI,kBAAkB,MAAM,YAAY,OAAO,GAAG;AACjD,gCAAgB;AAChB,gCAAgB;AAAA,cACjB,WACC,0BACA,kBAAkB,MAAM,YAAY,OAAO,GAC1C;AACD,gCAAgB,qBAAqB,MAAM,OAAO;AAGlD,oBAAI,YAAY;AAEhB,uBACC;AAAA,kBACC;AAAA,kBACA;AAAA,kBACA,SAAS,EAAE,SAAS;AAAA,gBACrB,GACC;AACD,kCAAgB;AAAA,oBACf;AAAA,oBACA,SAAS,SAAS;AAAA,kBACnB;AAAA,gBACD;AAAA,cACD,OAAO;AACN,gCAAgB;AAAA,cACjB;AAAA,YACD,OAAO;AACN,8BAAgB;AAAA,YACjB;AACA,gBACE,iBAAiB,cAAc,KAAK,aAAa,KACjD,cAAc,WAAW,KAAK,aAAa,KAC3C,iBAAiB,cAAc,UAAU,KACzC,0BACA,uBAAuB,UAAU,KACjC,wBAAwB,qBAAqB,UAAU,GACvD;AAED;AAAA,YACD;AAEA,kBAAM,aAAa,kBAAkB,eAAe,QAAQ;AAC5D,kBAAM,uBAAuB,iBAAiB;AAE9C,gBAAI,iBAAiB,gBAAgB;AACpC;AAAA,YACD;AAEA,kBAAM,MAAM;AAAA,cACX,OAAO;AAAA,gBACN,MAAM;AAAA,gBACN,QAAQ;AAAA,cACT;AAAA,cACA,KAAK;AAAA,gBACJ,MAAM;AAAA,gBACN,QAAQ,cAAc;AAAA,cACvB;AAAA,YACD;AAEA,gBAAI,sBAAsB;AACzB,kBAAI,aAAa,kBAAkB;AAClC,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM;AAAA,oBACL;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD,WAAW,aAAa,WAAW;AAClC,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL;AAAA,kBACA;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD,CAAC;AAAA,QACF;AAMA,eAAO;AAAA,UACN,SAAS;AAAA,QACV;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AChfA;AAAA,+CAAAE,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAYjB,aAAS,MAAM,OAAO,KAAK;AAC1B,aAAO,CAAC,GAAG,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,OAAK,IAAI,KAAK;AAAA,IACzD;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,KAAK;AAAA,oBACJ,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,kBACA,cAAc;AAAA,oBACb,MAAM;AAAA,kBACP;AAAA,kBACA,gBAAgB;AAAA,oBACf,MAAM;AAAA,kBACP;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,GAAG;AAAA,QAEpB,UAAU;AAAA,UACT,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,SAAS,QAAQ,QAAQ,CAAC;AAChC,YAAIC,OAAM;AAEV,YAAI,OAAO,WAAW,YAAY,OAAO,OAAO,QAAQ,KAAK,GAAG;AAC/D,UAAAA,OAAM,OAAO;AAAA,QACd,WAAW,OAAO,WAAW,UAAU;AACtC,UAAAA,OAAM;AAAA,QACP;AAEA,cAAM,eAAe,UAAU,OAAO;AACtC,cAAM,iBAAiB,UAAU,OAAO;AAExC,cAAM,aAAa,QAAQ;AAO3B,iBAAS,kBAAkB,OAAO;AACjC,iBAAO,UAAU,MAAM,SAAS,WAAW,MAAM,SAAS;AAAA,QAC3D;AAOA,iBAAS,oBAAoB,SAAS;AACrC,cAAI,QAAQ,QAAQ,IAAI,MAAM;AAC9B,cAAI,MAAM,QAAQ,IAAI,IAAI;AAE1B,cAAI;AAEJ,kBAAQ;AACR,aAAG;AACF,oBAAQ,WAAW,eAAe,OAAO;AAAA,cACxC,iBAAiB;AAAA,YAClB,CAAC;AAAA,UACF,SAAS,kBAAkB,KAAK;AAEhC,cAAI,SAAS,SAAS,kBAAkB,OAAO,OAAO,GAAG;AACxD,qBAAS;AAAA,UACV;AAEA,kBAAQ;AACR,aAAG;AACF,oBAAQ,WAAW,cAAc,OAAO;AAAA,cACvC,iBAAiB;AAAA,YAClB,CAAC;AAAA,UACF,SAAS,kBAAkB,KAAK;AAEhC,cAAI,SAAS,SAAS,kBAAkB,SAAS,KAAK,GAAG;AACxD,mBAAO;AAAA,UACR;AAEA,cAAI,SAAS,KAAK;AACjB,mBAAO,MAAM,OAAO,MAAM,CAAC;AAAA,UAC5B;AACA,iBAAO,CAAC;AAAA,QACT;AAEA,eAAO;AAAA,UACN,iBAAiB;AAChB,gBAAI,QAAQ,WAAW,MAAM,IAAI,CAACC,OAAM,OAAO;AAAA,cAC9C,YAAY,IAAI;AAAA,cAChB,MAAAA;AAAA,YACD,EAAE;AAMF,gBAAI,MAAM,SAAS,KAAK,MAAM,GAAG,EAAE,EAAE,SAAS,IAAI;AACjD,oBAAM,IAAI;AAAA,YACX;AAEA,gBAAI,gBAAgB;AACnB,sBAAQ,MAAM,OAAO,OAAK,EAAE,KAAK,KAAK,MAAM,EAAE;AAAA,YAC/C;AAEA,gBAAI,cAAc;AACjB,oBAAM,WAAW,WAAW,eAAe;AAE3C,oBAAM,eAAe,IAAI;AAAA,gBACxB,SAAS,QAAQ,mBAAmB;AAAA,cACrC;AAEA,sBAAQ,MAAM,OAAO,OAAK,CAAC,aAAa,IAAI,EAAE,UAAU,CAAC;AAAA,YAC1D;AAEA,gBAAI,MAAM,SAASD,MAAK;AACvB,oBAAM,MAAM;AAAA,gBACX,OAAO;AAAA,kBACN,MAAM,MAAMA,IAAG,EAAE;AAAA,kBACjB,QAAQ;AAAA,gBACT;AAAA,gBACA,KAAK;AAAA,kBACJ,MAAM,WAAW,MAAM;AAAA,kBACvB,QAAQ,WAAW,MAAM,GAAG,EAAE,EAAE;AAAA,gBACjC;AAAA,cACD;AAEA,sBAAQ,OAAO;AAAA,gBACd;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL,KAAAA;AAAA,kBACA,QAAQ,MAAM;AAAA,gBACf;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/LA;AAAA,4DAAAE,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AACjB,QAAM,EAAE,eAAe,IAAI;AAM3B,QAAM,iBAAiB;AAAA,MACtB,MAAM;AAAA,MACN,YAAY;AAAA,QACX,KAAK;AAAA,UACJ,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,QACA,cAAc;AAAA,UACb,MAAM;AAAA,QACP;AAAA,QACA,gBAAgB;AAAA,UACf,MAAM;AAAA,QACP;AAAA,QACA,OAAO;AAAA,UACN,MAAM;AAAA,QACP;AAAA,MACD;AAAA,MACA,sBAAsB;AAAA,IACvB;AAEA,QAAM,4BAA4B;AAAA,MACjC,OAAO;AAAA,QACN;AAAA,QACA;AAAA,UACC,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,MACD;AAAA,IACD;AAOA,aAAS,sBAAsB,UAAU;AACxC,YAAMC,OAAM,oBAAI,IAAI;AAEpB,eAAS,QAAQ,aAAW;AAC3B,iBAAS,IAAI,QAAQ,IAAI,MAAM,MAAM,KAAK,QAAQ,IAAI,IAAI,MAAM,KAAK;AACpE,UAAAA,KAAI,IAAI,GAAG,OAAO;AAAA,QACnB;AAAA,MACD,CAAC;AACD,aAAOA;AAAA,IACR;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC,yBAAyB;AAAA,QAElC,gBAAgB,CAAC,EAAE;AAAA,QAEnB,UAAU;AAAA,UACT,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,QAAQ,WAAW;AAEzB,cAAM,SAAS,QAAQ,QAAQ,CAAC;AAChC,YAAI,WAAW;AACf,YAAI,eAAe;AACnB,YAAI,iBAAiB;AACrB,YAAI,QAAQ;AAEZ,YAAI,OAAO,WAAW,UAAU;AAC/B,qBAAW,OAAO,OAAO,QAAQ,WAAW,OAAO,MAAM;AACzD,yBAAe,CAAC,CAAC,OAAO;AACxB,2BAAiB,CAAC,CAAC,OAAO;AAC1B,kBAAQ,CAAC,CAAC,OAAO;AAAA,QAClB,WAAW,OAAO,WAAW,UAAU;AACtC,qBAAW;AAAA,QACZ;AAEA,cAAM,qBAAqB;AAAA,UAC1B,WAAW,eAAe;AAAA,QAC3B;AAaA,iBAAS,kBAAkB,MAAM,YAAY,SAAS;AACrD,gBAAM,QAAQ,QAAQ,IAAI,OACzB,MAAM,QAAQ,IAAI,KAClB,qBACC,MAAM,SAAS,cACf,CAAC,KAAK,MAAM,GAAG,MAAM,MAAM,EAAE,KAAK,GACnC,oBACC,IAAI,SAAS,cAAc,CAAC,KAAK,MAAM,IAAI,MAAM,EAAE,KAAK;AAE1D,iBACC,YACC,MAAM,OAAO,cAAc,wBAC3B,IAAI,OAAO,cAAc;AAAA,QAE5B;AAOA,iBAAS,OAAOE,OAAM;AACrB,kBACEA,MAAK,SAAS,wBACdA,MAAK,SAAS,8BACfA,MAAK,UACLA,MAAK,OAAO,SAAS,oBACrBA,MAAK,OAAO,WAAWA;AAAA,QAEzB;AAOA,iBAAS,WAAWA,OAAM;AACzB,cAAI,CAACA,MAAK,QAAQ;AACjB,mBAAO;AAAA,UACR;AACA,cAAIA,UAASA,MAAK,OAAO,OAAO;AAC/B,mBAAO;AAAA,UACR;AACA,cAAIA,MAAK,OAAO,SAAS,oBAAoB;AAC5C,mBAAO;AAAA,UACR;AACA,cAAIA,MAAK,OAAO,SAAS,YAAY;AACpC,mBACCA,MAAK,OAAO,WAAW,QACvBA,MAAK,OAAO,SAAS,SACrBA,MAAK,OAAO,SAAS;AAAA,UAEvB;AACA,iBAAO;AAAA,QACR;AAQA,iBAAS,gBAAgB,UAAU;AAClC,gBAAMA,QAAO,WAAW,QAAQ,IAAI,SAAS,SAAS;AAEtD,cAAI,CAAC,SAAS,OAAOA,KAAI,GAAG;AAC3B;AAAA,UACD;AACA,cAAI,YAAY;AAEhB,mBAAS,IAAIA,MAAK,IAAI,MAAM,OAAO,GAAG,IAAIA,MAAK,IAAI,IAAI,MAAM,EAAE,GAAG;AACjE,kBAAM,OAAO,MAAM,CAAC;AAEpB,gBAAI,cAAc;AACjB,kBACC,mBAAmB,IAAI,IAAI,CAAC,KAC5B;AAAA,gBACC;AAAA,gBACA,IAAI;AAAA,gBACJ,mBAAmB,IAAI,IAAI,CAAC;AAAA,cAC7B,GACC;AACD;AAAA,cACD;AAAA,YACD;AAEA,gBAAI,gBAAgB;AACnB,kBAAI,KAAK,MAAM,QAAQ,GAAG;AACzB;AAAA,cACD;AAAA,YACD;AAEA;AAAA,UACD;AAEA,cAAI,YAAY,UAAU;AACzB,kBAAM,OAAO;AAAA,cACZ,SAAS,wBAAwB,QAAQ;AAAA,YAC1C;AAEA,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,SAAS,mBAAmB,UAAU,UAAU;AAAA,cACrD,WAAW;AAAA,cACX,MAAM,EAAE,MAAM,WAAW,SAAS;AAAA,YACnC,CAAC;AAAA,UACF;AAAA,QACD;AAMA,eAAO;AAAA,UACN,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,UACpB,yBAAyB;AAAA,QAC1B;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACjPA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,SAAS;AAAA,oBACR,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,kBACA,KAAK;AAAA,oBACJ,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,EAAE;AAAA,QAEnB,UAAU;AAAA,UACT,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAK3B,cAAM,SAAS,QAAQ,QAAQ,CAAC;AAChC,YAAI,YAAY;AAEhB,YACC,OAAO,WAAW,aACjB,OAAO,OAAO,QAAQ,SAAS,KAAK,OAAO,OAAO,QAAQ,KAAK,IAC/D;AACD,sBAAY,OAAO,WAAW,OAAO;AAAA,QACtC,WAAW,OAAO,WAAW,UAAU;AACtC,sBAAY;AAAA,QACb;AAMA,cAAM,gBAAgB,CAAC;AAQvB,iBAAS,cAAcC,OAAM;AAC5B,gBAAM,SAASA,MAAK;AAEpB,cAAI,OAAO,SAAS,kBAAkB;AACrC,0BAAc,KAAKA,KAAI;AAAA,UACxB;AAEA,cAAI,cAAc,SAAS,WAAW;AACrC,kBAAM,OAAO,EAAE,KAAK,cAAc,QAAQ,KAAK,UAAU;AAEzD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,SAAS,mBAAmBA,OAAM,UAAU;AAAA,cACjD,WAAW;AAAA,cACX,MAAM;AAAA,YACP,CAAC;AAAA,UACF;AAAA,QACD;AAQA,iBAAS,SAASA,OAAM;AACvB,cAAI,cAAc,GAAG,EAAE,MAAMA,OAAM;AAClC,0BAAc,IAAI;AAAA,UACnB;AAAA,QACD;AAMA,eAAO;AAAA,UACN,yBAAyB;AAAA,UACzB,gCAAgC;AAAA,UAEhC,oBAAoB;AAAA,UACpB,2BAA2B;AAAA,QAC5B;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrIA;AAAA,gDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AACjB,QAAM,EAAE,eAAe,IAAI;AAO3B,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,SAAS;AAAA,oBACR,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,kBACA,KAAK;AAAA,oBACJ,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,kBACA,eAAe;AAAA,oBACd,MAAM;AAAA,oBACN,aACC;AAAA,kBACF;AAAA,kBACA,WAAW;AAAA,oBACV,MAAM,CAAC,SAAS,eAAe,QAAQ;AAAA,oBACvC,aACC;AAAA,kBACF;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,gBACtB,KAAK,EAAE,UAAU,CAAC,iBAAiB,WAAW,EAAE;AAAA,cACjD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,CAAC;AAAA,QAElB,UAAU;AAAA,UACT,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,SAAS,QAAQ,QAAQ,CAAC;AAChC,YAAI,YAAY;AAChB,YAAI,YAAY;AAEhB,YAAI,OAAO,WAAW,UAAU;AAC/B,cACC,OAAO,OAAO,QAAQ,SAAS,KAC/B,OAAO,OAAO,QAAQ,KAAK,GAC1B;AACD,wBAAY,OAAO,WAAW,OAAO;AAAA,UACtC;AAEA,sBAAY,OAAO;AACnB,cAAI,CAAC,aAAa,OAAO,OAAO,QAAQ,eAAe,GAAG;AACzD,wBAAY,OAAO,gBAAgB,WAAW;AAAA,UAC/C;AACA,wBAAc;AAAA,QACf;AACA,YAAI,OAAO,WAAW,UAAU;AAC/B,sBAAY;AAAA,QACb;AAQA,iBAAS,cAAcC,OAAM;AAC5B,gBAAM,YACLA,MAAK,OAAO,SAAS,KACrBA,MAAK,OAAO,CAAC,EAAE,SAAS,gBACxBA,MAAK,OAAO,CAAC,EAAE,SAAS,SACrBA,MAAK,OAAO,CAAC,IACb;AAEJ,cAAI,sBAAsBA,MAAK,OAAO;AACtC,cAAI,WAAW;AACd,gBAAI,cAAc,SAAS;AAC1B,oCAAsBA,MAAK,OAAO,SAAS;AAAA,YAC5C,WACC,cAAc,iBACd,UAAU,gBAAgB,eAAe,SACxC,iBACA;AACD,oCAAsBA,MAAK,OAAO,SAAS;AAAA,YAC5C;AAAA,UACD;AAEA,cAAI,sBAAsB,WAAW;AACpC,oBAAQ,OAAO;AAAA,cACd,KAAK,SAAS,mBAAmBA,OAAM,UAAU;AAAA,cACjD,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,MAAM;AAAA,kBACL,SAAS,wBAAwBA,KAAI;AAAA,gBACtC;AAAA,gBACA,OAAO;AAAA,gBACP,KAAK;AAAA,cACN;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,qBAAqB;AAAA,UACrB,yBAAyB;AAAA,UACzB,oBAAoB;AAAA,UACpB,mBAAmB;AAAA,UACnB,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrJA;AAAA,oDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AACjB,QAAM,EAAE,eAAe,IAAI;AAO3B,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,SAAS;AAAA,oBACR,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,kBACA,KAAK;AAAA,oBACJ,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,yBAAyB;AAAA,gBACxB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,EAAE;AAAA,QAEnB,UAAU;AAAA,UACT,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAKf,cAAM,gBAAgB,CAAC,GACtB,SAAS,QAAQ,QAAQ,CAAC,GAC1B,0BACE,QAAQ,QAAQ,CAAC,KACjB,QAAQ,QAAQ,CAAC,EAAE,2BACpB,OACD,oBAAoB,CAAC;AACtB,YAAI,gBAAgB;AAEpB,YACC,OAAO,WAAW,aACjB,OAAO,OAAO,QAAQ,SAAS,KAAK,OAAO,OAAO,QAAQ,KAAK,IAC/D;AACD,0BAAgB,OAAO,WAAW,OAAO;AAAA,QAC1C,WAAW,OAAO,WAAW,UAAU;AACtC,0BAAgB;AAAA,QACjB;AAUA,iBAAS,0BAA0BC,OAAMC,QAAOC,MAAK;AACpD,cAAID,SAAQC,MAAK;AAChB,kBAAM,OAAO;AAAA,cACZ,SAAS,wBAAwBF,KAAI;AAAA,YACtC;AAEA,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,SAAS,mBAAmBA,OAAM,QAAQ,UAAU;AAAA,cACzD,WAAW;AAAA,cACX,MAAM,EAAE,MAAM,OAAAC,QAAO,KAAAC,KAAI;AAAA,YAC1B,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,gBAAgB;AACxB,wBAAc,KAAK,CAAC;AAAA,QACrB;AAQA,iBAAS,YAAYF,OAAM;AAC1B,gBAAMC,SAAQ,cAAc,IAAI;AAMhC,cAAID,MAAK,SAAS,eAAe;AAChC;AAAA,UACD;AAEA,cAAI,2BAA2B,cAAc,WAAW,GAAG;AAC1D,8BAAkB,KAAK,EAAE,MAAAA,OAAM,OAAAC,OAAM,CAAC;AAAA,UACvC,OAAO;AACN,sCAA0BD,OAAMC,QAAO,aAAa;AAAA,UACrD;AAAA,QACD;AAQA,iBAAS,gBAAgBD,OAAM;AAC9B,wBAAc,cAAc,SAAS,CAAC,KAAKA,MAAK,KAAK;AAAA,QACtD;AAMA,eAAO;AAAA,UACN,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,UACpB,yBAAyB;AAAA,UACzB,aAAa;AAAA,UAEb,gBAAgB;AAAA,UAEhB,4BAA4B;AAAA,UAC5B,2BAA2B;AAAA,UAC3B,gCAAgC;AAAA,UAChC,oBAAoB;AAAA,UAEpB,iBAAiB;AAChB,gBAAI,kBAAkB,WAAW,GAAG;AACnC;AAAA,YACD;AAEA,8BAAkB,QAAQ,aAAW;AACpC,oBAAMC,SAAQ,QAAQ;AACtB,oBAAMD,QAAO,QAAQ;AAErB,wCAA0BA,OAAMC,QAAO,aAAa;AAAA,YACrD,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/LA;AAAA,6DAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,KAAK;AAAA,gBACJ,MAAM;AAAA,gBACN,SAAS;AAAA,gBACT,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ,YAC1B,UAAU,QAAQ,QAAQ,CAAC,KAAK,CAAC,GACjC,uBACC,OAAO,QAAQ,QAAQ,cAAc,QAAQ,MAAM;AAErD,YAAI,oBAAoB,GACvB,+BAA+B,GAC/B;AAMD,cAAM,uBACL;AAMD,iBAAS,oCAAoC;AAC5C,cAAI,qBAAqB;AACxB,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,MAAM;AAAA,gBACL;AAAA,gBACA;AAAA,gBACA,YACC,iCAAiC,IAC9B,cACA;AAAA,cACL;AAAA,YACD,CAAC;AAAA,UACF;AACA,gCAAsB;AAAA,QACvB;AAOA,iBAAS,mBAAmBC,OAAM;AACjC,iBAAO,WAAW,aAAaA,OAAM,SAAS,mBAAmB;AAAA,QAClE;AAQA,iBAAS,eAAeA,OAAM;AAC7B,gBAAM,OAAOA,MAAK,IAAI,MAAM;AAO5B,cACC,qBAAqB,KAAKA,MAAK,OAAO,IAAI,KAC1CA,MAAK,OAAO,cAAcA,OACzB;AACD;AAAA,UACD;AAGA,cAAI,SAAS,mBAAmB;AAC/B,4CAAgC;AAAA,UACjC,OAAO;AACN,8CAAkC;AAClC,2CAA+B;AAC/B,gCAAoB;AAAA,UACrB;AAGA,cAAI,iCAAiC,uBAAuB,GAAG;AAC9D,kCAAsB,uBAAuBA;AAAA,UAC9C;AAAA,QACD;AAOA,iBAAS,eAAeA,OAAM;AAC7B,gBAAM,OAAO,mBAAmBA,KAAI,EAAE,IAAI,IAAI;AAG9C,cAAI,SAAS,mBAAmB;AAC/B,8CAAkC;AAClC,2CAA+B;AAC/B,gCAAoB;AAAA,UACrB;AAAA,QACD;AAMA,eAAO;AAAA,UACN,gBAAgB;AAAA,UAChB,kBAAkB;AAAA,UAClB,mBAAmB;AAAA,UACnB,mBAAmB;AAAA,UACnB,kBAAkB;AAAA,UAClB,qBAAqB;AAAA,UACrB,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,qBAAqB;AAAA,UACrB,aAAa;AAAA,UACb,mBAAmB;AAAA,UACnB,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,UACjB,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,qBAAqB;AAAA,UACrB,gBAAgB;AAAA,UAChB,eAAe;AAAA,UACf,wBAAwB;AAAA,UACxB,0BAA0B;AAAA,UAC1B,sBAAsB;AAAA,UAEtB,uBAAuB;AAAA,UACvB,yBAAyB;AAAA,UACzB,0BAA0B;AAAA,UAC1B,0BAA0B;AAAA,UAC1B,yBAAyB;AAAA,UACzB,4BAA4B;AAAA,UAC5B,uBAAuB;AAAA,UACvB,uBAAuB;AAAA,UACvB,qBAAqB;AAAA,UACrB,4BAA4B;AAAA,UAC5B,oBAAoB;AAAA,UACpB,0BAA0B;AAAA,UAC1B,yBAAyB;AAAA,UACzB,wBAAwB;AAAA,UACxB,wBAAwB;AAAA,UACxB,uBAAuB;AAAA,UACvB,qBAAqB;AAAA,UACrB,4BAA4B;AAAA,UAC5B,uBAAuB;AAAA,UACvB,sBAAsB;AAAA,UACtB,+BAA+B;AAAA,UAC/B,iCAAiC;AAAA,UACjC,6BAA6B;AAAA,UAC7B,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/NA;AAAA,6DAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QACT,QAAQ;AAAA,UACP,OAAO;AAAA,YACN;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,iBAAiB,YAAY;AAAA,gBACrC;AAAA,cACD;AAAA,cACA,iBAAiB;AAAA,YAClB;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,gBAAgB;AAAA,gBACxB;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,YAAY;AAAA,sBACX,MAAM;AAAA,oBACP;AAAA,kBACD;AAAA,kBACA,sBAAsB;AAAA,gBACvB;AAAA,cACD;AAAA,cACA,iBAAiB;AAAA,YAClB;AAAA,UACD;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,eACC;AAAA,UACD,mBACC;AAAA,UACD,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,WACC;AAAA,UACD,eACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,SAAS,QAAQ,QAAQ,CAAC,KAAK;AACrC,cAAM,SAAS,QAAQ,QAAQ,CAAC,KAAK,CAAC;AACtC,cAAM,aAAa,CAAC,CAAC,OAAO;AAW5B,iBAAS,qBAAqB,MAAM;AACnC,iBAAO,UAAU,KAAK,IAAI;AAAA,QAC3B;AAOA,iBAAS,sBAAsB,CAAC,YAAY,GAAG;AAC9C,cAAI,aAAa,SAAS,SAAS;AAClC,mBAAO;AAAA,UACR;AAEA,gBAAM,QAAQ,aAAa,MAAM,MAAM,SAAS,iBAAiB;AAGjE,iBACC,MAAM,SAAS,KACf,MAAM;AAAA,YAAM,CAAC,MAAM,OACjB,MAAM,KAAK,MAAM,MAAM,SAAS,IAC9B,WACA,WACD,KAAK,IAAI;AAAA,UACZ;AAAA,QAEF;AAOA,iBAAS,eAAe,CAAC,YAAY,GAAG;AACvC,cAAI,aAAa,SAAS,SAAS;AAClC,mBAAO;AAAA,UACR;AAEA,gBAAM,QAAQ,aAAa,MAAM,MAAM,SAAS,iBAAiB;AAEjE,iBACC,WAAW,KAAK,MAAM,CAAC,CAAC,KACxB,MAAM,MAAM,GAAG,EAAE,EAAE,MAAM,UAAQ,SAAS,KAAK,IAAI,CAAC,KACpD,SAAS,KAAK,MAAM,GAAG,EAAE,CAAC;AAAA,QAE5B;AAOA,iBAAS,4BAA4B,cAAc;AAClD,gBAAM,2BAA2B,aAC/B,IAAI,CAAC,EAAE,OAAAC,OAAM,MAAMA,MAAK,EACxB,OAAO,UAAQ,KAAK,KAAK,EAAE,MAAM,EACjC,MAAM,UAAQ,KAAK,WAAW,GAAG,CAAC;AAEpC,iBAAO,aAAa;AAAA,YAAI,CAAC,EAAE,OAAAA,OAAM,MAChC,2BAA2BA,OAAM,QAAQ,OAAO,EAAE,IAAIA;AAAA,UACvD;AAAA,QACD;AAOA,iBAAS,2BAA2B,SAAS;AAC5C,gBAAM,QAAQ,QAAQ,MACpB,MAAM,SAAS,iBAAiB,EAChC;AAAA,YACA,CAAC,MAAM,GAAG,aACT,EAAE,MAAM,KAAK,MAAM,SAAS,SAAS;AAAA,UACvC,EACC,IAAI,UAAQ,KAAK,QAAQ,UAAU,EAAE,CAAC;AACxC,gBAAM,2BAA2B,MAC/B,IAAI,UAAQ,KAAK,QAAQ,UAAU,EAAE,CAAC,EACtC,OAAO,UAAQ,KAAK,KAAK,EAAE,MAAM,EACjC,MAAM,UAAQ,KAAK,WAAW,GAAG,CAAC;AAEpC,iBAAO,MAAM;AAAA,YAAI,UAChB,KAAK;AAAA,cACJ,2BAA2B,aAAa;AAAA,cACxC;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,wBAAwB,SAAS;AACzC,gBAAM,QAAQ,QAAQ,MACpB,MAAM,SAAS,iBAAiB,EAChC,IAAI,UAAQ,KAAK,QAAQ,UAAU,EAAE,CAAC;AACxC,gBAAM,oBAAoB,GAAG,WAAW,KAAK,MAAM,QAAQ,MAAM,CAAC,IAAI,QAAQ,IAAI,MAAM,QAAQ,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjH,cAAI,SAAS;AAMb,qBAAW,CAAC,GAAG,IAAI,KAAK,MAAM,QAAQ,GAAG;AACxC,gBAAI,CAAC,KAAK,KAAK,EAAE,UAAU,MAAM,GAAG;AACnC;AAAA,YACD;AAEA,kBAAM,CAAC,EAAE,UAAU,IAAI,KAAK,MAAM,eAAe;AAEjD,gBAAI,WAAW,SAAS,kBAAkB,QAAQ;AACjD,oBAAM,YAAY,kBAAkB;AAAA,gBACnC,WAAW,SAAS,kBAAkB;AAAA,cACvC;AAEA,kBAAI,UAAU,SAAS,OAAO,QAAQ;AACrC,yBAAS;AAAA,cACV;AAAA,YACD;AAAA,UACD;AAEA,iBAAO,MAAM,IAAI,UAAQ;AACxB,kBAAMC,SAAQ,KAAK,MAAM,mBAAmB;AAC5C,kBAAM,CAAC,EAAE,YAAY,YAAY,IAAIA;AAErC,gBAAI,WAAW,SAAS,kBAAkB,QAAQ;AACjD,qBAAO,GAAG,WAAW,MAAM,kBAAkB,UAAU,OAAO,SAAS,WAAW,OAAO,CAAC,GAAG,YAAY;AAAA,YAC1G;AAEA,gBAAI,WAAW,SAAS,kBAAkB,QAAQ;AACjD,qBAAO,GAAG,WAAW,MAAM,kBAAkB,MAAM,CAAC,GAAG,YAAY;AAAA,YACpE;AAEA,mBAAO;AAAA,UACR,CAAC;AAAA,QACF;AAOA,iBAAS,gBAAgB,cAAc;AACtC,gBAAM,CAAC,YAAY,IAAI;AAEvB,cAAI,aAAa,SAAS,QAAQ;AACjC,mBAAO,4BAA4B,YAAY;AAAA,UAChD;AAEA,cAAI,sBAAsB,YAAY,GAAG;AACxC,mBAAO,2BAA2B,YAAY;AAAA,UAC/C;AAEA,iBAAO,wBAAwB,YAAY;AAAA,QAC5C;AAOA,iBAAS,iBAAiB,SAAS;AAClC,iBAAO,WAAW,KAAK;AAAA,YACtB,QAAQ,MAAM,CAAC,IAAI,QAAQ,IAAI,MAAM;AAAA,YACrC,QAAQ,MAAM,CAAC;AAAA,UAChB;AAAA,QACD;AAQA,iBAAS,sBAAsB,cAAc,kBAAkB;AAC9D,gBAAM,gBAAgB,iBAAiB,YAAY;AAEnD,iBAAO;AAAA,EAAO,iBAAiB,IAAI,UAAQ,GAAG,aAAa,MAAM,IAAI,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA,EAAK,aAAa;AAAA,QACtG;AAQA,iBAAS,uBAAuB,cAAc,kBAAkB;AAC/D,iBAAO,iBACL,IAAI,UAAQ,MAAM,IAAI,EAAE,EACxB,KAAK;AAAA,EAAK,iBAAiB,YAAY,CAAC,EAAE;AAAA,QAC7C;AAQA,iBAAS,eAAe,cAAc,kBAAkB;AACvD,iBAAO,MAAM,iBAAiB,KAAK;AAAA,EAAK,iBAAiB,YAAY,CAAC,KAAK,CAAC;AAAA,QAC7E;AAQA,cAAM,uBAAuB;AAAA,UAC5B,gBAAgB,cAAc;AAC7B,kBAAM,CAAC,YAAY,IAAI;AACvB,kBAAM,eAAe,gBAAgB,YAAY;AAEjD,gBAAI,aAAa,KAAK,CAAAD,WAASA,OAAM,SAAS,IAAI,CAAC,GAAG;AACrD;AAAA,YACD;AAEA,gBAAI,aAAa,SAAS,GAAG;AAC5B,sBAAQ,OAAO;AAAA,gBACd,KAAK;AAAA,kBACJ,OAAO,aAAa,IAAI;AAAA,kBACxB,KAAK,aAAa,GAAG,EAAE,EAAE,IAAI;AAAA,gBAC9B;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,wBAAM,QAAQ;AAAA,oBACb,aAAa,MAAM,CAAC;AAAA,oBACpB,aAAa,GAAG,EAAE,EAAE,MAAM,CAAC;AAAA,kBAC5B;AAEA,yBAAO,aAAa;AAAA,oBAAK,CAAAA,WACxBA,OAAM,WAAW,GAAG;AAAA,kBACrB,IACG,OACA,MAAM;AAAA,oBACN;AAAA,oBACA;AAAA,sBACC;AAAA,sBACA;AAAA,oBACD;AAAA,kBACD;AAAA,gBACH;AAAA,cACD,CAAC;AAAA,YACF,OAAO;AACN,oBAAM,QAAQ,aAAa,MAAM;AAAA,gBAChC,SAAS;AAAA,cACV;AACA,oBAAM,4BACL,iBAAiB,YAAY;AAC9B,oBAAM,qBAAqB,GAAG,yBAAyB;AAEvD,kBAAI,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,GAAG;AAChC,sBAAM,QAAQ,aAAa,MAAM,WAAW,GAAG,IAC5C,aAAa,MAAM,CAAC,IAAI,IACxB,aAAa,MAAM,CAAC;AAEvB,wBAAQ,OAAO;AAAA,kBACd,KAAK;AAAA,oBACJ,OAAO,aAAa,IAAI;AAAA,oBACxB,KAAK;AAAA,sBACJ,MAAM,aAAa,IAAI,MAAM;AAAA,sBAC7B,QAAQ,aAAa,IAAI,MAAM,SAAS;AAAA,oBACzC;AAAA,kBACD;AAAA,kBACA,WAAW;AAAA,kBACX,KAAK,WACJ,MAAM;AAAA,oBACL,CAAC,OAAO,QAAQ,CAAC;AAAA,oBACjB;AAAA,EAAK,kBAAkB;AAAA,kBACxB;AAAA,gBACF,CAAC;AAAA,cACF;AAEA,kBAAI,CAAC,SAAS,KAAK,MAAM,GAAG,EAAE,CAAC,GAAG;AACjC,wBAAQ,OAAO;AAAA,kBACd,KAAK;AAAA,oBACJ,OAAO;AAAA,sBACN,MAAM,aAAa,IAAI,IAAI;AAAA,sBAC3B,QAAQ,aAAa,IAAI,IAAI,SAAS;AAAA,oBACvC;AAAA,oBACA,KAAK,aAAa,IAAI;AAAA,kBACvB;AAAA,kBACA,WAAW;AAAA,kBACX,KAAK,WACJ,MAAM;AAAA,oBACL;AAAA,sBACC,aAAa,MAAM,CAAC,IAAI;AAAA,sBACxB,aAAa,MAAM,CAAC;AAAA,oBACrB;AAAA,oBACA;AAAA,EAAK,kBAAkB;AAAA,kBACxB;AAAA,gBACF,CAAC;AAAA,cACF;AAEA,uBACK,aAAa,aAAa,IAAI,MAAM,OAAO,GAC/C,cAAc,aAAa,IAAI,IAAI,MACnC,cACC;AACD,sBAAM,WAAW,WAAW,MAAM,aAAa,CAAC;AAChD,sBAAM,YAAY,qBAAqB,QAAQ,IAC5C,cACA;AAEH,oBAAI,CAAC,SAAS,WAAW,kBAAkB,GAAG;AAC7C,0BAAQ,OAAO;AAAA,oBACd,KAAK;AAAA,sBACJ,OAAO,EAAE,MAAM,YAAY,QAAQ,EAAE;AAAA,sBACrC,KAAK;AAAA,wBACJ,MAAM;AAAA,wBACN,QAAQ,SAAS;AAAA,sBAClB;AAAA,oBACD;AAAA,oBACA,WAAW;AAAA,oBACX,IAAI,OAAO;AACV,4BAAM,iBACL,WAAW,gBAAgB;AAAA,wBAC1B,MAAM;AAAA,wBACN,QAAQ;AAAA,sBACT,CAAC;AAEF,0BAAI,cAAc,aAAa;AAC9B,8BAAM,CAAC,EAAEE,qBAAoB,EAAE,IAC9B,SAAS,MAAM,WAAW,KAAK,CAAC;AACjC,8BAAMC,yBACL,iBACAD,mBAAkB;AAEnB,+BAAO,MAAM;AAAA,0BACZ;AAAA,4BACC;AAAA,4BACAC;AAAA,0BACD;AAAA,0BACA;AAAA,wBACD;AAAA,sBACD;AAEA,4BAAM,CAAC,EAAE,oBAAoB,EAAE,IAC9B,SAAS,MAAM,SAAS,KAAK,CAAC;AAC/B,4BAAM,wBACL,iBACA,kBAAkB;AACnB,0BAAI;AAEJ,iCAAW,CAACC,MAAK,IAAI,KAAK,MAAM,QAAQ,GAAG;AAC1C,4BAAI,CAAC,OAAO,KAAK,IAAI,GAAG;AACvB;AAAA,wBACD;AAEA,8BAAM,sBACL,WAAW,MACV,aAAa,IAAI,MAAM,OACtB,IACAA,IACF;AACD,8BAAM;AAAA,0BACL;AAAA,0BACA,SAAS;AAAA,0BACT,gBAAgB;AAAA,wBACjB,IACC,oBAAoB;AAAA,0BACnB;AAAA,wBACD,KAAK,CAAC;AAEP,iCAAS,GAAG,kBAAkB,MAAM,OAAO,MAAM,CAAC,GAAG,aAAa;AAElE,4BACC,UAAU,KAAK,QAAQ,KACvB,OAAO,WAAW,GACjB;AACD,oCAAU;AAAA,wBACX;AACA;AAAA,sBACD;AAEA,6BAAO,MAAM;AAAA,wBACZ,CAAC,gBAAgB,qBAAqB;AAAA,wBACtC,GAAG,kBAAkB,GAAG,MAAM;AAAA,sBAC/B;AAAA,oBACD;AAAA,kBACD,CAAC;AAAA,gBACF;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UACA,iBAAiB,cAAc;AAC9B,kBAAM,CAAC,YAAY,IAAI;AAEvB,kBAAM,UAAU,eAAe,YAAY;AAE3C,gBAAI,aAAa,SAAS,WAAY,CAAC,cAAc,SAAU;AAC9D;AAAA,YACD;AAEA,gBAAI,eAAe,gBAAgB,YAAY;AAE/C,gBAAI,SAAS;AACZ,6BAAe,aAAa;AAAA,gBAC3B;AAAA,gBACA,aAAa,SAAS;AAAA,cACvB;AAAA,YACD;AAEA,kBAAM,aAAa,WAAW,cAAc,cAAc;AAAA,cACzD,iBAAiB;AAAA,YAClB,CAAC;AAED,gBACC,cACA,aAAa,IAAI,IAAI,SAAS,WAAW,IAAI,MAAM,MAClD;AACD;AAAA,YACD;AAEA,oBAAQ,OAAO;AAAA,cACd,KAAK;AAAA,gBACJ,OAAO,aAAa,IAAI;AAAA,gBACxB,KAAK;AAAA,kBACJ,MAAM,aAAa,IAAI,MAAM;AAAA,kBAC7B,QAAQ,aAAa,IAAI,MAAM,SAAS;AAAA,gBACzC;AAAA,cACD;AAAA,cACA,WAAW;AAAA,cACX,IAAI,OAAO;AACV,uBAAO,MAAM;AAAA,kBACZ;AAAA,kBACA,uBAAuB,cAAc,YAAY;AAAA,gBAClD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,UACA,aAAa,cAAc;AAC1B,gBAAI,eAAe,YAAY,GAAG;AACjC;AAAA,YACD;AAEA,kBAAM,CAAC,YAAY,IAAI;AACvB,kBAAM,eAAe,gBAAgB,YAAY;AAGjD,gBACC,aAAa,SAAS,UACtB,aAAa,SAAS,KACtB,CAAC,aAAa,KAAK,CAAAJ,WAASA,OAAM,SAAS,IAAI,CAAC,GAC/C;AACD,sBAAQ,OAAO;AAAA,gBACd,KAAK;AAAA,kBACJ,OAAO,aAAa,IAAI;AAAA,kBACxB,KAAK,aAAa,GAAG,EAAE,EAAE,IAAI;AAAA,gBAC9B;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,yBAAO,MAAM;AAAA,oBACZ;AAAA,sBACC,aAAa,MAAM,CAAC;AAAA,sBACpB,aAAa,GAAG,EAAE,EAAE,MAAM,CAAC;AAAA,oBAC5B;AAAA,oBACA,eAAe,cAAc,YAAY;AAAA,kBAC1C;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAGA,gBAAI,sBAAsB,YAAY,GAAG;AACxC,sBAAQ,OAAO;AAAA,gBACd,KAAK;AAAA,kBACJ,OAAO,aAAa,IAAI;AAAA,kBACxB,KAAK;AAAA,oBACJ,MAAM,aAAa,IAAI,MAAM;AAAA,oBAC7B,QAAQ,aAAa,IAAI,MAAM,SAAS;AAAA,kBACzC;AAAA,gBACD;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,yBAAO,MAAM;AAAA,oBACZ;AAAA,oBACA,eAAe,cAAc,YAAY;AAAA,kBAC1C;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAMA,eAAO;AAAA,UACN,UAAU;AACT,mBAAO,WACL,eAAe,EACf,OAAO,aAAW,QAAQ,SAAS,SAAS,EAC5C;AAAA,cACA,aACC,CAAC,SAAS,wBAAwB;AAAA,gBACjC,QAAQ;AAAA,cACT;AAAA,YACF,EACC,OAAO,aAAW;AAClB,oBAAM,cAAc,WAAW,eAAe,SAAS;AAAA,gBACtD,iBAAiB;AAAA,cAClB,CAAC;AAED,qBACC,CAAC,eACD,YAAY,IAAI,IAAI,OAAO,QAAQ,IAAI,MAAM;AAAA,YAE/C,CAAC,EACA,OAAO,CAAC,eAAe,SAASK,QAAO,gBAAgB;AACvD,oBAAM,cAAc,WAAW,eAAe,SAAS;AAAA,gBACtD,iBAAiB;AAAA,cAClB,CAAC;AAED,kBACC,QAAQ,SAAS,UACjBA,UACA,YAAYA,SAAQ,CAAC,EAAE,SAAS,UAChC,eACA,YAAY,IAAI,IAAI,SACnB,QAAQ,IAAI,MAAM,OAAO,KAC1B,gBAAgB,YAAYA,SAAQ,CAAC,GACpC;AACD,8BAAc,GAAG,EAAE,EAAE,KAAK,OAAO;AAAA,cAClC,OAAO;AACN,8BAAc,KAAK,CAAC,OAAO,CAAC;AAAA,cAC7B;AAEA,qBAAO;AAAA,YACR,GAAG,CAAC,CAAC,EACJ;AAAA,cACA,kBACC,EACC,aAAa,WAAW,KACxB,aAAa,CAAC,EAAE,IAAI,MAAM,SACzB,aAAa,CAAC,EAAE,IAAI,IAAI;AAAA,YAE5B,EACC,QAAQ,qBAAqB,MAAM,CAAC;AAAA,UACvC;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC3oBA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAQA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,oBAAoB,OAAO;AAAA,UAC7C;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,kBACC;AAAA,UACD,iBACC;AAAA,UACD,oBACC;AAAA,UACD,mBACC;AAAA,QACF;AAAA,QAEA,SAAS;AAAA,MACV;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,SAAS,QAAQ,QAAQ,CAAC;AAChC,cAAM,YAAY,WAAW;AAC7B,cAAM,kBAAkB,WAAW;AAMnC,eAAO;AAAA,UACN,sBAAsBC,OAAM;AAC3B,kBAAM,gBAAgB,WAAW;AAAA,cAChCA,MAAK;AAAA,cACL,SAAS;AAAA,YACV;AACA,kBAAM,aAAa,WAAW;AAAA,cAC7BA,MAAK;AAAA,cACL,SAAS;AAAA,YACV;AAEA,kBAAM,mBAAmB,WAAW,cAAcA,KAAI;AACtD,kBAAM,kBACL,WAAW,eAAe,aAAa;AACxC,kBAAM,yBACL,WAAW,cAAc,aAAa;AACvC,kBAAM,wBACL,WAAW,eAAe,UAAU;AACrC,kBAAM,wBACL,WAAW,cAAc,UAAU;AAEpC,kBAAM,iCACL,SAAS;AAAA,cACR;AAAA,cACA;AAAA,YACD;AACD,kBAAM,sCACL,SAAS;AAAA,cACR;AAAA,cACA;AAAA,YACD;AAED,kBAAM,cAAc,CAAC,CAAC,WAAW,kBAAkBA,KAAI,EAAE;AAEzD,gBAAI,CAAC,WAAW;AACf,kBAAI,CAAC,gCAAgC;AACpC,wBAAQ,OAAO;AAAA,kBACd,MAAMA,MAAK;AAAA,kBACX,KAAK;AAAA,oBACJ,OAAO,iBAAiB,IAAI;AAAA,oBAC5B,KAAK,gBAAgB,IAAI;AAAA,kBAC1B;AAAA,kBACA,WAAW;AAAA,kBACX,IAAI,OAAO;AACV,wBAAI,aAAa;AAChB,6BAAO;AAAA,oBACR;AACA,0BAAM,SAAS,CAAC;AAChB,0BAAM,+BACL,SAAS;AAAA,sBACR;AAAA,sBACA;AAAA,oBACD;AACD,0BAAM,+BACL,SAAS;AAAA,sBACR;AAAA,sBACA;AAAA,oBACD;AAED,wBAAI,CAAC,8BAA8B;AAClC,6BAAO;AAAA,wBACN,MAAM,YAAY;AAAA,0BACjB,gBAAgB,MAAM,CAAC;AAAA,0BACvB,cAAc,MAAM,CAAC;AAAA,wBACtB,CAAC;AAAA,sBACF;AAAA,oBACD;AACA,wBAAI,CAAC,8BAA8B;AAClC,6BAAO;AAAA,wBACN,MAAM,YAAY;AAAA,0BACjB,cAAc,MAAM,CAAC;AAAA,0BACrB,uBAAuB,MAAM,CAAC;AAAA,wBAC/B,CAAC;AAAA,sBACF;AAAA,oBACD;AAEA,2BAAO;AAAA,kBACR;AAAA,gBACD,CAAC;AAAA,cACF;AAEA,kBAAI,CAAC,qCAAqC;AACzC,wBAAQ,OAAO;AAAA,kBACd,MAAMA,MAAK;AAAA,kBACX,KAAK;AAAA,oBACJ,OAAO,uBAAuB,IAAI;AAAA,oBAClC,KAAK,sBAAsB,IAAI;AAAA,kBAChC;AAAA,kBACA,WAAW;AAAA,kBACX,IAAI,OAAO;AACV,wBAAI,aAAa;AAChB,6BAAO;AAAA,oBACR;AACA,0BAAM,SAAS,CAAC;AAChB,0BAAM,4BACL,SAAS;AAAA,sBACR;AAAA,sBACA;AAAA,oBACD;AACD,0BAAM,2BACL,SAAS;AAAA,sBACR;AAAA,sBACA;AAAA,oBACD;AAED,wBAAI,CAAC,2BAA2B;AAC/B,6BAAO;AAAA,wBACN,MAAM,YAAY;AAAA,0BACjB,sBAAsB,MAAM,CAAC;AAAA,0BAC7B,WAAW,MAAM,CAAC;AAAA,wBACnB,CAAC;AAAA,sBACF;AAAA,oBACD;AACA,wBAAI,CAAC,0BAA0B;AAC9B,6BAAO;AAAA,wBACN,MAAM,YAAY;AAAA,0BACjB,WAAW,MAAM,CAAC;AAAA,0BAClB,sBAAsB,MAAM,CAAC;AAAA,wBAC9B,CAAC;AAAA,sBACF;AAAA,oBACD;AAEA,2BAAO;AAAA,kBACR;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD,OAAO;AACN,kBACC,mBACAA,MAAK,IAAI,MAAM,SAASA,MAAK,IAAI,IAAI,MACpC;AACD;AAAA,cACD;AAEA,kBAAI,gCAAgC;AACnC,wBAAQ,OAAO;AAAA,kBACd,MAAMA,MAAK;AAAA,kBACX,KAAK;AAAA,oBACJ,OAAO,iBAAiB,IAAI;AAAA,oBAC5B,KAAK,gBAAgB,IAAI;AAAA,kBAC1B;AAAA,kBACA,WAAW;AAAA,kBACX,KAAK,WACJ,cACG,OACA,MAAM;AAAA,oBACN;AAAA,sBACC,gBAAgB,MAAM,CAAC;AAAA,sBACvB,cAAc,MAAM,CAAC;AAAA,oBACtB;AAAA,oBACA;AAAA,kBACD;AAAA,gBACJ,CAAC;AAAA,cACF;AAEA,kBAAI,qCAAqC;AACxC,wBAAQ,OAAO;AAAA,kBACd,MAAMA,MAAK;AAAA,kBACX,KAAK;AAAA,oBACJ,OAAO,uBAAuB,IAAI;AAAA,oBAClC,KAAK,sBAAsB,IAAI;AAAA,kBAChC;AAAA,kBACA,WAAW;AAAA,kBACX,KAAK,WACJ,cACG,OACA,MAAM;AAAA,oBACN;AAAA,sBACC,sBAAsB,MAAM,CAAC;AAAA,sBAC7B,WAAW,MAAM,CAAC;AAAA,oBACnB;AAAA,oBACA;AAAA,kBACD;AAAA,gBACJ,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AChQA;AAAA,6CAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAMjB,QAAM,eAAe;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAQA,aAAS,OAAOC,MAAK,KAAK;AACzB,MAAAA,KAAI,GAAG,IAAI;AACX,aAAOA;AAAA,IACR;AAOA,aAAS,4BAA4B,QAAQ;AAC5C,YAAM,qBAAqB,MAAM;AAAA,QAChC,oBAAI,IAAI,CAAC,GAAG,OAAO,oBAAoB,GAAG,YAAY,CAAC;AAAA,MACxD;AAEA,aAAO,mBAAmB,OAAO,QAAQ,CAAC,CAAC;AAAA,IAC5C;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,UAAU;AAAA,gBACT,MAAM;AAAA,cACP;AAAA,cACA,UAAU;AAAA,gBACT,MAAM;AAAA,cACP;AAAA,cACA,oBAAoB;AAAA,gBACnB,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,cACD;AAAA,cACA,0BAA0B;AAAA,gBACzB,MAAM;AAAA,cACP;AAAA,cACA,oBAAoB;AAAA,gBACnB,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,cACD;AAAA,cACA,0BAA0B;AAAA,gBACzB,MAAM;AAAA,cACP;AAAA,cACA,YAAY;AAAA,gBACX,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,gBAAgB;AAAA,UACf;AAAA,YACC,UAAU;AAAA,YACV,oBAAoB;AAAA,YACpB,UAAU;AAAA,YACV,oBAAoB,CAAC;AAAA,YACrB,YAAY;AAAA,UACb;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,OAAO;AAAA,UACP,OAAO;AAAA,QACR;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,MAAM,IAAI,QAAQ;AACzB,cAAM,iBAAiB,CAAC,OAAO;AAE/B,cAAM,qBAAqB,OAAO,mBAAmB,OAAO,QAAQ,CAAC,CAAC;AACtE,cAAM,2BAA2B,OAAO,2BACrC,IAAI,OAAO,OAAO,0BAA0B,GAAG,IAC/C;AAEH,cAAM,qBAAqB,4BAA4B,MAAM;AAC7D,cAAM,2BAA2B,OAAO,2BACrC,IAAI,OAAO,OAAO,0BAA0B,GAAG,IAC/C;AAEH,cAAM,YAAY,CAAC;AAEnB,cAAM,aAAa,QAAQ;AAW3B,iBAAS,0BAA0BE,OAAM;AACxC,iBAAOA,MAAK,OAAO,SAAS,eACzBA,MAAK,OAAO,OACZ,SAAS,sBAAsBA,MAAK,MAAM,KAAK;AAAA,QACnD;AAQA,iBAAS,OAAO,KAAK;AACpB,gBAAM,YAAY,IAAI,OAAO,CAAC;AAE9B,gBAAM,iBAAiB,UAAU,YAAY;AAC7C,gBAAM,iBAAiB,UAAU,YAAY;AAE7C,cAAI,mBAAmB,gBAAgB;AAEtC,mBAAO;AAAA,UACR;AACA,cAAI,cAAc,gBAAgB;AACjC,mBAAO;AAAA,UACR;AACA,iBAAO;AAAA,QACR;AAUA,iBAAS,aAAa,YAAYA,OAAM,YAAY,SAAS;AAC5D,gBAAM,aAAa,WAAW,QAAQA,MAAK,MAAM;AAEjD,cAAI,WAAW,UAAU,KAAK,WAAW,UAAU,GAAG;AACrD,mBAAO;AAAA,UACR;AAEA,cAAI,WAAW,QAAQ,KAAK,UAAU,GAAG;AACxC,mBAAO;AAAA,UACR;AAEA,gBAAM,SAAS,SAAS,oBAAoBA,MAAK,MAAM;AAEvD,cAAI,eAAe,SAAS,OAAO,SAAS,oBAAoB;AAE/D,mBACC,OAAO,OAAO,SAAS,gBACvB,OAAO,OAAO,SAAS;AAAA,UAEzB;AAEA,iBAAO,kBAAkB,OAAO,SAAS;AAAA,QAC1C;AAQA,iBAAS,OAAOA,OAAM,WAAW;AAChC,cAAI,SAAS,SAAS,oBAAoBA,MAAK,MAAM;AAErD,cAAI,OAAO,SAAS,oBAAoB;AACvC,qBAAS,OAAO;AAAA,UACjB;AAEA,kBAAQ,OAAO,EAAE,MAAAA,OAAM,KAAK,OAAO,KAAK,UAAU,CAAC;AAAA,QACpD;AAMA,YAAI,OAAO,UAAU;AACpB,oBAAU,gBAAgB,SAAUA,OAAM;AACzC,kBAAM,kBAAkB,0BAA0BA,KAAI;AAEtD,gBAAI,iBAAiB;AACpB,oBAAM,iBAAiB,OAAO,eAAe;AAC7C,oBAAM,YACL,mBAAmB,WACnB;AAAA,gBACC;AAAA,gBACAA;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAED,kBAAI,CAAC,WAAW;AACf,uBAAOA,OAAM,OAAO;AAAA,cACrB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,YAAI,OAAO,UAAU;AACpB,oBAAU,iBAAiB,SAAUA,OAAM;AAC1C,kBAAM,aAAa,0BAA0BA,KAAI;AAEjD,gBAAI,YAAY;AACf,oBAAM,iBAAiB,OAAO,UAAU;AACxC,oBAAM,YACL,mBAAmB,WACnB;AAAA,gBACC;AAAA,gBACAA;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAED,kBAAI,CAAC,WAAW;AACf,uBAAOA,OAAM,OAAO;AAAA,cACrB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA;;;ACpRA;AAAA,gDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAWjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QACT,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,OAAO;AAAA,UACzB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,SAAS;AAAA,UACT,aACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,UAAU,QAAQ;AACxB,cAAM,SAAS,QAAQ,CAAC,MAAM;AAE9B,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,cAAcC,OAAM;AACnB,gBAAIA,MAAK,UAAU,WAAW,GAAG;AAChC;AAAA,YACD;AAEA,kBAAM,YAAY,WAAW,aAAaA,KAAI;AAC9C,kBAAM,eACL,aAAa,SAAS,oBAAoB,SAAS;AAGpD,kBAAM,YACL,gBACA,SAAS;AAAA,cACR,WAAW,eAAe,SAAS;AAAA,YACpC,KACAA,MAAK,OAAO,MAAM,CAAC,IAAIA,MAAK,MAAM,CAAC;AAEpC,gBAAI,QAAQ;AACX,kBAAI,CAAC,WAAW;AACf,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,KAAK,WAAS,MAAM,gBAAgBA,OAAM,IAAI;AAAA,gBAC/C,CAAC;AAAA,cACF;AAAA,YACD,OAAO;AACN,kBAAI,WAAW;AACd,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,KAAK,WAAS;AAAA,oBACb,MAAM;AAAA,sBACL,WAAW,eAAe,SAAS;AAAA,oBACpC;AAAA,oBACA,MAAM,OAAO,SAAS;AAAA,oBACtB,MAAM,iBAAiBA,OAAM,GAAG;AAAA,oBAChC,MAAM,gBAAgBA,OAAM,GAAG;AAAA,kBAChC;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACvHA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QACA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,SAAS,QAAQ;AAAA,UACzB;AAAA,QACD;AAAA,QACA,SAAS;AAAA,QACT,UAAU;AAAA,UACT,UAAU;AAAA,UACV,YAAY;AAAA,QACb;AAAA,QAEA,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SAAS;AAAA,cACT,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAG3B,cAAM,OAAO,QAAQ,QAAQ,CAAC,MAAM,UAAU,UAAU;AAGxD,cAAM,iBAAiB,WACrB,eAAe,EACf,OAAO,CAAC,QAAQ,UAAU;AAC1B,iBAAO,MAAM,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI,IAAI;AAC7C,iBAAO;AAAA,QACR,GAAG,CAAC,CAAC;AAsBN,iBAAS,aAAaC,OAAM;AAC3B,gBAAM,YAAY,WAAW,aAAaA,KAAI;AAE9C,cAAI,UAAU,SAAS,gBAAgB,UAAU,UAAU,KAAK;AAC/D,kBAAM,YAAY,WAAW,eAAe,SAAS;AAErD,gBAAI,UAAU,IAAI,IAAI,SAAS,UAAU,IAAI,MAAM,MAAM;AACxD,qBAAO;AAAA,YACR;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAQA,iBAAS,MAAM,SAAS;AACvB,iBACC,YAAY,SAAS,YAAY,SAAS,YAAY;AAAA,QAExD;AAQA,iBAAS,mBAAmB,SAAS;AACpC,iBACC,YAAY,kBACZ,YAAY,oBACZ,YAAY;AAAA,QAEd;AAQA,iBAAS,kBAAkB,UAAU;AACpC,iBACC,aAAa,4BACb,aAAa,qBACb,aAAa,8BACb,aAAa;AAAA,QAEf;AAQA,iBAAS,WAAWA,OAAM;AACzB,gBAAM,QAAQ,WAAW,cAAcA,KAAI;AAE3C,iBACC,CAAC,SAAU,MAAM,SAAS,gBAAgB,MAAM,UAAU;AAAA,QAE5D;AAOA,iBAAS,0BAA0B,kBAAkB;AACpD,gBAAM,oBAAoB,eAAe,gBAAgB;AAEzD,iBAAO,eAAe,oBAAoB,CAAC,IACxC,0BAA0B,oBAAoB,CAAC,IAC/C;AAAA,QACJ;AAQA,iBAAS,yBAAyB,OAAO,kBAAkB;AAC1D,iBACC,MAAM,IAAI,MAAM,OAChB,0BAA0B,gBAAgB,IAAI;AAAA,QAEhD;AAUA,iBAAS,kBAAkBA,OAAM;AAKhC,gBAAM,YAAY,aAAaA,KAAI,GAKlC,YACC,cAAc,WAAW,aAAaA,KAAI,IACvC,WAAW,cAAcA,KAAI,IAC7B,WAAW,aAAaA,KAAI,GAChC,cAAc,UAAU,IAAI,IAAI,OAAO;AAGxC,cAAI,CAAC,WAAW;AACf;AAAA,UACD;AAGA,cAAI,mBAAmBA,MAAK,OAAO,IAAI,GAAG;AACzC;AAAA,UACD;AAGA,cAAI,kBAAkBA,MAAK,OAAO,IAAI,GAAG;AACxC;AAAA,UACD;AAMA,cAAI,UAAU,SAAS,aAAa,MAAM,UAAU,KAAK,GAAG;AAC3D;AAAA,UACD;AAGA,cAAI,WAAWA,KAAI,GAAG;AACrB;AAAA,UACD;AAGA,gBAAM,kBAAkB,UAAU,IAAI,MAAM,OAAO;AACnD,gBAAM,qBACL,OAAO,eAAe,WAAW,MAAM;AAExC,cAAI,SAAS,WAAW,mBAAmB,CAAC,oBAAoB;AAC/D,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,IAAI,OAAO;AACV,sBAAM,eAAe,WACnB,QAAQ,EACR,MAAM,UAAU,MAAM,CAAC,GAAG,UAAU,MAAM,CAAC,CAAC,EAC5C,MAAM,SAAS,iBAAiB;AAElC,uBAAO,MAAM;AAAA,kBACZ,CAAC,UAAU,MAAM,CAAC,GAAG,UAAU,MAAM,CAAC,CAAC;AAAA,kBACvC,GAAG,aAAa,MAAM,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC;AAAA,EAAK,aAAa,GAAG,EAAE,CAAC;AAAA,gBAC9D;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAGA,cACC,SAAS,aACR,CAAC,mBACA,sBACA,CAAC,yBAAyB,WAAW,WAAW,IACjD;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,IAAI,OAAO;AACV,qBACE,kBACE,0BAA0B,WAAW,IACrC,UAAU,IAAI,IAAI,UACrB,UAAU,IAAI,MAAM,MACnB;AACD,yBAAO,MAAM,iBAAiB,WAAW,MAAM;AAAA,gBAChD;AAEA,uBAAO,MAAM;AAAA,kBACZ;AAAA,oBACC,UAAU,MAAM,CAAC,IAAI,UAAU,IAAI,MAAM;AAAA,oBACzC,UAAU,MAAM,CAAC;AAAA,kBAClB;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAMA,eAAO;AAAA,UACN,qBAAqB;AAAA,QACtB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClTA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QACT,QAAQ,CAAC;AAAA,QACT,UAAU;AAAA,UACT,UAAU;AAAA,QACX;AAAA,QAEA,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SAAS;AAAA,cACT,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAa3B,iBAAS,mBAAmBC,OAAM,YAAY;AAC7C,gBAAM,cAAc,WAAW,eAAeA,KAAI;AAElD,iBAAO,WAAW,SAAS,YAAY,KAAK;AAAA,QAC7C;AAQA,iBAAS,YAAYA,OAAM;AAC1B,gBAAM,aAAaA,MAAK,OAAO;AAE/B,cAAIA,MAAK,OAAO,MAAM;AACrB,mBAAO,MAAM,QAAQA,MAAK,OAAO,IAAI,IAClCA,MAAK,OAAO,KAAK,CAAC,MAAMA,QACxBA,MAAK,OAAO,SAASA;AAAA,UACzB;AAEA,cAAI,eAAe,eAAe;AACjC,mBAAO,mBAAmBA,OAAM,CAAC,QAAQ,GAAG,CAAC;AAAA,UAC9C;AACA,cAAI,eAAe,oBAAoB;AACtC,mBAAO,mBAAmBA,OAAM,CAAC,IAAI,CAAC;AAAA,UACvC;AACA,cAAI,eAAe,cAAc;AAChC,mBAAO,mBAAmBA,OAAM,CAAC,GAAG,CAAC;AAAA,UACtC;AACA,iBAAO,mBAAmBA,OAAM,CAAC,GAAG,CAAC;AAAA,QACtC;AASA,iBAAS,iBAAiBA,OAAM,oBAAoB;AACnD,gBAAM,WAAW,WAAW,kBAAkBA,KAAI;AAClD,cAAI,mBAAmB;AAEvB,cAAI,CAAC,SAAS,QAAQ;AACrB,mBAAO;AAAA,UACR;AAEA,mBAAS,QAAQ,aAAW;AAC3B;AAEA,gBAAI,QAAQ,SAAS,SAAS;AAC7B,kCACC,QAAQ,IAAI,IAAI,OAAO,QAAQ,IAAI,MAAM;AAAA,YAC3C;AAGA,gBAAI,QAAQ,IAAI,MAAM,SAAS,oBAAoB;AAClD;AAAA,YACD;AAEA,gBAAI,QAAQ,IAAI,IAAI,SAASA,MAAK,IAAI,MAAM,MAAM;AACjD;AAAA,YACD;AAAA,UACD,CAAC;AAED,iBAAO;AAAA,QACR;AAQA,iBAAS,2BAA2BA,OAAM;AACzC,gBAAM,cAAc,WAAW,eAAeA,KAAI;AAClD,cAAI;AAUJ,cAAI,aAAa;AAChB,iCAAqB,YAAY,IAAI,IAAI;AAAA,UAC1C,OAAO;AACN,iCAAqB;AAAA,UACtB;AAEA,iBAAO;AAAA,QACR;AAQA,iBAAS,iBAAiBA,OAAM;AAC/B,gBAAM,cAAcA,MAAK,IAAI,MAAM;AACnC,gBAAM,qBAAqB,2BAA2BA,KAAI;AAC1D,gBAAM,eAAe,iBAAiBA,OAAM,kBAAkB;AAE9D,iBAAO,cAAc,qBAAqB,eAAe;AAAA,QAC1D;AAYA,iBAAS,OAAOA,OAAM;AACrB,gBAAM,kBAAkB,WAAW,kBAAkBA,KAAI;AACzD,gBAAM,qBAAqB,gBAAgB,GAAG,EAAE;AAChD,gBAAM,cAAc,WAAW,eAAeA,KAAI;AAElD,cAAI,gBAAgB,WAAW,GAAG;AACjC,mBAAO;AAAA,UACR;AAWA,cACC,mBAAmB,IAAI,IAAI,SAAS,YAAY,IAAI,IAAI,QACxD,mBAAmB,IAAI,IAAI,SAASA,MAAK,IAAI,MAAM,MAClD;AACD,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AAMA,eAAO;AAAA,UACN,gBAAgBA,OAAM;AACrB,gBAAI,CAAC,YAAYA,KAAI,KAAK,CAAC,iBAAiBA,KAAI,GAAG;AAClD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,sBAAI,OAAOA,KAAI,GAAG;AACjB,0BAAM,cACL,WAAW,eAAeA,KAAI;AAC/B,0BAAM,WACLA,MAAK,IAAI,MAAM,SACf,YAAY,IAAI,IAAI,OACjB,SACA;AAEJ,2BAAO,MAAM,iBAAiBA,OAAM,QAAQ;AAAA,kBAC7C;AACA,yBAAO;AAAA,gBACR;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACjPA;AAAA,8DAAAC,UAAAC,SAAA;AAAA;AASA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,sBAAsB;AAAA,gBACrB,MAAM;AAAA,gBACN,SAAS;AAAA,gBACT,SAAS;AAAA,gBACT,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,UAAU;AAAA,QACX;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,UAAU,QAAQ,QAAQ,CAAC,KAAK,CAAC,GACtC,uBAAuB,QAAQ,wBAAwB;AAExD,cAAM,aAAa,QAAQ;AAS3B,iBAAS,UAAUC,OAAM;AACxB,cAAIA,MAAK,UAAU;AAClB,gBAAIA,MAAK,UAAU;AAClB,qBAAO;AAAA,YACR;AACA,mBAAO;AAAA,UACR;AACA,cAAIA,MAAK,UAAU;AAClB,mBAAO;AAAA,UACR;AACA,iBAAO;AAAA,QACR;AAQA,iBAAS,gBAAgBA,OAAM;AAC9B,gBAAM,SAAS,UAAUA,KAAI;AAC7B,gBAAM,QAAQ,WACZ,QAAQA,MAAK,QAAQ,EACrB,MAAM,SAAS,iBAAiB;AAClC,gBAAM,SAASA,MAAK,YAAY,MAAM,WAAW,IAAI,MAAM;AAE3D,iBAAO,SAAS,MAAM,CAAC,IAAI;AAAA,QAC5B;AAEA,eAAO;AAAA,UACN,sBAAsBA,OAAM;AAC3B,kBAAM,SAAS,SAAS,oBAAoBA,MAAK,MAAM;AAEvD,gBAAI,OAAO,SAAS,oBAAoB;AACvC;AAAA,YACD;AAEA,gBAAI,SAAS,SAAS,oBAAoB,OAAO,MAAM;AACvD,gBAAI,QAAQ;AAEZ,mBAAO,UAAU,OAAO,QAAQ;AAC/B,uBAAS;AACT,uBAAS,SAAS;AAAA,gBACjB,SAAS,oBAAoB,OAAO,MAAM,EAAE;AAAA,cAC7C;AAAA,YACD;AAEA,gBACC,QAAQ,wBACR,SAAS,kBAAkB,OAAO,QAAQ,OAAO,QAAQ,GACxD;AACD,oBAAM,wBAAwB,WAAW;AAAA,gBACxC,OAAO;AAAA,gBACP,SAAS;AAAA,cACV;AAEA,sBAAQ,OAAO;AAAA,gBACd,MAAM,OAAO;AAAA,gBACb,KAAK;AAAA,kBACJ,OAAO,sBAAsB,IAAI;AAAA,kBACjC,KAAK,OAAO,IAAI;AAAA,gBACjB;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL,QAAQ,gBAAgB,MAAM;AAAA,gBAC/B;AAAA,gBACA,IAAI,OAAO;AACV,yBAAO,MAAM;AAAA,oBACZ;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC9JA;AAAA,8CAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM;AAAA,MACL,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,IACD,IAAI;AAWJ,aAAS,uBAAuB,MAAM;AACrC,aAAO,8BAA8B,KAAK,IAAI;AAAA,IAC/C;AAQA,aAAS,cAAc,OAAOC,OAAM;AACnC,YAAM,aAAa,MAAM,WAAW;AAAA,QACnC,eACC,UAAU,WAAW,MAAM,CAAC,MAAMA,MAAK,MAAM,CAAC,KAC9C,UAAU,WAAW,MAAM,CAAC,MAAMA,MAAK,MAAM,CAAC;AAAA,MAChD;AAEA,UAAI,WAAW,WAAW,GAAG;AAC5B,eAAO,WAAW,CAAC;AAAA,MACpB;AACA,aAAO;AAAA,IACR;AAQA,aAAS,WAAW,OAAOA,OAAM;AAChC,YAAM,YAAY,cAAc,OAAOA,KAAI;AAE3C,aACC,aAAa,UAAU,YAAY,UAAU,SAAS,KAAK,SAAS;AAAA,IAEtE;AAQA,aAAS,oCAAoC,OAAOA,OAAM;AACzD,UAAI,MAAM,SAAS,YAAYA,MAAK,SAAS,kBAAkB;AAC9D,eAAO;AAAA,MACR;AACA,UACCA,MAAK,SAAS,iBACbA,MAAK,SAAS,YACbA,MAAK,SAAS,gBACd,kBAAkB,OAAO,YAAY,IACtC;AACD,eAAO,CAAC,WAAW,OAAOA,KAAI;AAAA,MAC/B;AAEA,aAAO;AAAA,IACR;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,eAAeC,OAAM;AACpB,kBAAM,SAAS,oBAAoBA,MAAK,MAAM,GAC7C,eAAe,WAAW,SAASA,KAAI;AAGxC,gBAAI,OAAO,SAAS,cAAc;AACjC,oBAAM,OAAO,OAAO;AAEpB,kBACC,CAAC,WAAW,cAAc,MAAM,KAChC,uBAAuB,OAAO,IAAI,GACjC;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM,EAAE,KAAK;AAAA,gBACd,CAAC;AAAA,cACF;AAAA,YACD,WACC,OAAO,SAAS,sBAChB;AAAA,cACC;AAAA,cACA,OAAO;AAAA,YACR,GACC;AACD,oBAAM,OAAO,gBAAgB,MAAM;AAEnC,kBAAI,uBAAuB,IAAI,GAAG;AACjC,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM,EAAE,KAAK;AAAA,gBACd,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpJA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AAOJ,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,gBAAgB;AAAA,QAEhB,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,eAAe;AAAA,UACf,YAAY;AAAA,UACZ,0BACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAO3B,iBAAS,8BAA8BC,OAAM;AAC5C,gBAAM,aAAa,WAAW,cAAcA,KAAI;AAChD,gBAAM,YAAY,WAAW,aAAaA,KAAI;AAE9C,cAAI,oBAAoB,WAAW,aAAaA,MAAK,MAAM;AAE3D,iBACC,sBAAsB,aACtB,CAAC,oBAAoB,iBAAiB,GACrC;AACD,gCAAoB,WAAW,cAAc,iBAAiB;AAAA,UAC/D;AAEA,iBAAO,WAAW;AAAA,YACjB;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,iBAAiBA,OAAM;AAC/B,gBAAM,YAAY,WAAW,aAAaA,KAAI;AAE9C,cAAI,CAAC,oBAAoB,SAAS,GAAG;AACpC,mBAAO;AAAA,UACR;AAEA,cAAI,aAAaA,MAAK;AAEtB,aAAG;AACF,yBAAa,WAAW,cAAc,UAAU;AAChD,gBAAI,CAAC,cAAc,eAAe,WAAW;AAC5C,qBAAO;AAAA,YACR;AAAA,UACD,SAAS,CAAC,oBAAoB,UAAU;AAExC,iBAAO,WAAW,KAAK;AAAA,YACtB,WAAW,MAAM,CAAC;AAAA,YAClB,UAAU,MAAM,CAAC;AAAA,UAClB;AAAA,QACD;AAQA,iBAAS,MAAMA,OAAM;AACpB,cACCA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS,WACrBA,MAAK,iBACJA,MAAK,UAAU,WAAW,KAC1BA,MAAK,UAAU,CAAC,EAAE,SAAS,iBAC3B;AACD;AAAA,UACD;AAEA,gBAAM,WAAW;AAAA,YAChB,WAAW,SAASA,KAAI;AAAA,YACxB;AAAA,UACD;AAMA,cAAI,YAAY,SAAS,YAAY,WAAW,GAAG;AAClD,kBAAM,WAAW,iBAAiBA,KAAI;AACtC,gBAAI;AACJ,gBAAI;AAEJ,kBAAM,iBAAiBA,MAAK,UAAU;AAAA,cACrC,CAACC,QAAO,QACP,IAAI,SAAS,kBAAkBA,SAAQ,IAAIA;AAAA,cAC5C;AAAA,YACD;AAEA,kBAAM,gBACLD,MAAK,YACJA,MAAK,UAAU,SAAS,KAAK,iBAAiB,KAC/C,8BAA8BA,KAAI;AAQnC,gBACC,6BAA6BA,KAAI,KACjC,wBAAwB,YAAYA,KAAI,GACvC;AACD,wBAAU,KAAK,QAAQ;AACvB,0BAAY;AAAA,YACb,OAAO;AACN,wBAAU,IAAI,QAAQ;AACtB,0BAAY;AAAA,YACb;AAEA,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,IAAI,OAAO;AACV,oBAAI,eAAe;AAClB,yBAAO;AAAA,gBACR;AAEA,uBAAO,MAAM,YAAYA,OAAM,OAAO;AAAA,cACvC;AAAA,cACA,SAAS;AAAA,gBACR;AAAA,kBACC;AAAA,kBACA,IAAI,OAAO;AACV,wBAAI,eAAe;AAClB,6BAAO,MAAM,YAAYA,OAAM,OAAO;AAAA,oBACvC;AAEA,2BAAO;AAAA,kBACR;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,gBAAgB;AAAA,UAChB,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACjMA;AAAA,+DAAAE,UAAAC,SAAA;AAAA;AAWA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QACT,QAAQ,CAAC;AAAA,QACT,UAAU;AAAA,UACT,OAAO;AAAA,QACR;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,+DACCC,OACC;AACD,gBAAI,CAAC,WAAW,kBAAkBA,MAAK,MAAM,GAAG;AAC/C;AAAA,YACD;AAEA,oBAAQ,OAAO;AAAA,cACd,MAAM,WAAW;AAAA,gBAChBA,MAAK,UAAU,CAAC;AAAA,gBAChB,WAAS,MAAM,UAAU;AAAA,cAC1B;AAAA,cACA,WAAW;AAAA,YACZ,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClDA;AAAA,sDAAAC,UAAAC,SAAA;AAAA;AAWA,aAAS,WAAWC,OAAM;AACzB,YAAM,IAAIA,MAAK;AAEf,aACC,MAAM,yBACN,MAAM,wBACN,MAAM;AAAA;AAAA;AAAA;AAAA,MAKL,MAAM,oBAAoBA,MAAK,UAAU;AAAA,IAE5C;AAQA,aAAS,SAASA,OAAM,QAAQ;AAC/B,cAAQ,OAAO,MAAM;AAAA,QACpB,KAAK;AACJ,iBACCA,UAAS,OAAO,QAChBA,UAAS,OAAO,UAChBA,UAAS,OAAO;AAAA,QAGlB,KAAK;AAAA,QACL,KAAK;AACJ,iBACCA,UAAS,OAAO,QACfA,UAAS,OAAO,QAAQA,MAAK,SAAS;AAAA,QAGzC,KAAK;AAAA,QACL,KAAK;AACJ,iBAAOA,UAAS,OAAO,QAAQA,UAAS,OAAO;AAAA,QAEhD;AACC,iBAAO;AAAA,MACT;AAAA,IACD;AAGA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MACA,OAAO,SAAS;AAMf,iBAAS,SAAS,WAAW;AAC5B,cACC,UAAU,SAAS,yBACnB,UAAU,SAAS,eAClB;AACD;AAAA,UACD;AAEA,cAAI,UAAU,SAAS,oBAAoB,CAAC,UAAU,OAAO;AAC5D;AAAA,UACD;AAEA,cAAIC,QAAO;AACX,cAAI,SAASA,MAAK;AAElB,iBAAO,UAAU,CAAC,WAAW,MAAM,GAAG;AACrC,gBAAI,SAASA,OAAM,MAAM,GAAG;AAC3B,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,cACZ,CAAC;AACD;AAAA,YACD;AACA,YAAAA,QAAO;AACP,qBAAS,OAAO;AAAA,UACjB;AAAA,QACD;AAEA,eAAO;AAAA,UACN,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,qBAAqB;AAAA,QACtB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClHA;AAAA,gDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,oBAAoB;AAAA,MACzB;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,IACD;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,OAAO,CAAC;AAAA,YACR,WAAW;AAAA,UACZ;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,OAAO;AAAA,gBACN,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,gBACA,aAAa;AAAA,cACd;AAAA,cACA,WAAW;AAAA,gBACV,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,OAAO,SAAS,UAAU,CAAC,IAAI,QAAQ;AAOhD,iBAAS,OAAOC,OAAM;AACrB,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW;AAAA,YACX,MAAM,EAAE,UAAUA,MAAK,SAAS;AAAA,UACjC,CAAC;AAAA,QACF;AAOA,iBAAS,mBAAmBA,OAAM;AACjC,iBAAO,kBAAkB,SAASA,MAAK,QAAQ;AAAA,QAChD;AAOA,iBAAS,gBAAgBA,OAAM;AAC9B,iBAAO,QAAQ,SAASA,MAAK,QAAQ;AAAA,QACtC;AAOA,iBAAS,YAAYA,OAAM;AAC1B,iBACC,aACAA,MAAK,aAAa,OAClBA,MAAK,SACLA,MAAK,MAAM,SAAS,aACpBA,MAAK,MAAM,UAAU;AAAA,QAEvB;AAOA,iBAAS,4BAA4BA,OAAM;AAC1C,cACC,mBAAmBA,KAAI,KACvB,CAAC,gBAAgBA,KAAI,KACrB,CAAC,YAAYA,KAAI,GAChB;AACD,mBAAOA,KAAI;AAAA,UACZ;AAAA,QACD;AAEA,eAAO;AAAA,UACN,sBAAsB;AAAA,UACtB,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AChJA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAKf,eAAO;AAAA,UACN,4EACCC,OACC;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,MACCA,MAAK,SAAS,mBACX,aACA;AAAA,cACL;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzEA;AAAA,+CAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,iBAAiBC,OAAM;AACtB,kBAAM,aAAaA,MAAK,OAAO,MAC9B,eAAeA,MAAK,SAAS;AAE9B,gBACC,eAAe,eACf,CAACA,MAAK,YACN,gBACA,aAAa,MAAM,cAAc,GAChC;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM,EAAE,MAAM,aAAa;AAAA,cAC5B,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnDA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAWA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,gBAAgB;AAAA,QAEhB,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,aAAa;AAAA,UACb,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAMf,iBAAS,qBAAqBC,OAAM;AACnC,kBAAQA,MAAK,MAAM;AAAA,YAClB,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO;AAAA,YACR,KAAK;AACJ,qBAAOA,MAAK,SAAS;AAAA,YACtB;AACC,qBAAO;AAAA,UACT;AAAA,QACD;AAEA,eAAO;AAAA,UACN,WAAWA,OAAM;AAChB,qBAAS,IAAI,GAAG,IAAIA,MAAK,WAAW,QAAQ,KAAK;AAChD,oBAAM,YAAYA,MAAK,WAAW,CAAC;AAEnC,kBAAI,qBAAqB,SAAS,GAAG;AACpC,wBAAQ,OAAO;AAAA,kBACd,MAAM;AAAA,kBACN,WAAW;AAAA,kBACX,SAAS;AAAA,oBACR;AAAA,sBACC,WAAW;AAAA,sBACX,KAAK,WAAS;AAAA,wBACb,MAAM;AAAA,0BACLA,MAAK,WAAW,CAAC;AAAA,0BACjB;AAAA,wBACD;AAAA,wBACA,MAAM;AAAA,0BACLA,MAAK,WAAW,GAAG,EAAE;AAAA,0BACrB;AAAA,wBACD;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/EA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,SACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAY3B,iBAAS,iBAAiB,OAAO,MAAM;AACtC,iBAAO,SAAS,kBAAkB,OAAO,IAAI,MAAM;AAAA,QACpD;AAMA,eAAO;AAAA,UACN,2BAA2BC,OAAM;AAChC,gBAAI,QAAQ,WAAW,SAASA,KAAI;AAMpC,gBAAI,MAAM,UAAUA,OAAM;AACzB,sBAAQ,MAAM;AAAA,YACf;AAEA,gBAAI,iBAAiB,OAAOA,MAAK,MAAM,IAAI,GAAG;AAC7C,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM,EAAE,MAAMA,MAAK,MAAM,KAAK;AAAA,cAC/B,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/FA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,OAAO;AAAA,QACR;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAO3B,iBAAS,cAAc,UAAU;AAChC,mBACE,uBAAuB,SAAS,UAAU,EAC1C,QAAQ,eAAa;AACrB,oBAAQ,OAAO;AAAA,cACd,MAAM,UAAU;AAAA,cAChB,WAAW;AAAA,cACX,MAAM,EAAE,MAAM,UAAU,WAAW,KAAK;AAAA,YACzC,CAAC;AAAA,UACF,CAAC;AAAA,QACH;AAOA,iBAAS,cAAcC,OAAM;AAC5B,qBAAW,qBAAqBA,KAAI,EAAE,QAAQ,aAAa;AAAA,QAC5D;AAEA,eAAO;AAAA,UACN,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACjEA;AAAA,yDAAAC,UAAAC,SAAA;AAAA;AAWA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QACT,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAUf,iBAAS,UAAUC,OAAM;AACxB,iBACCA,MAAK,SAAS,qBACdA,MAAK,aAAa,OAClBA,MAAK,SAAS,SAAS,aACvBA,MAAK,SAAS,UAAU;AAAA,QAE1B;AACA,cAAM,qBAAqB,oBAAI,IAAI;AAAA,UAClC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,CAAC;AAED,eAAO;AAAA,UACN,iBAAiBA,OAAM;AACtB,gBAAI,mBAAmB,IAAIA,MAAK,QAAQ,GAAG;AAC1C,kBAAI,UAAUA,MAAK,IAAI,KAAK,UAAUA,MAAK,KAAK,GAAG;AAClD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM,EAAE,UAAUA,MAAK,SAAS;AAAA,gBACjC,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzEA;AAAA,oDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAMjB,QAAM,8BAA8B,oBAAI,IAAI;AAAA,MAC3C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAED,QAAM,oBAAoB;AAAA,MACzB,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,aAAa;AAAA,MACb,gBAAgB;AAAA,IACjB;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,eAAe;AAAA,QAEhC,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,iBAAiB,QAAQ;AAAA,UACjC;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,YAAY;AAAA;AAAA,UAGZ,SACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,cAAc,IAAI,QAAQ;AACjC,cAAM,aAAa,QAAQ;AAO3B,iBAAS,4BAA4BC,OAAM;AAC1C,iBACCA,MAAK,UACL,4BAA4B,IAAIA,MAAK,OAAO,IAAI,KAChDA,UAASA,MAAK,OAAO;AAAA,QAEvB;AAOA,iBAAS,wBAAwBA,OAAM;AACtC,cAAI,kBAAkBA;AAEtB,aAAG;AACF,gBAAI,4BAA4B,eAAe,GAAG;AACjD,qBAAO,gBAAgB;AAAA,YACxB;AAAA,UACD,UACE,kBAAkB,gBAAgB,WACnC,CAAC,SAAS,WAAW,eAAe;AAGrC,iBAAO;AAAA,QACR;AAOA,iBAAS,qBAAqBA,OAAM;AACnC,gBAAM,gBAAgB,WAAW,eAAeA,OAAM,CAAC,GACtD,YAAY,WAAW,cAAcA,OAAM,CAAC;AAE7C,iBACC,SAAS,gBAAgB,YAAYA,KAAI,KACzC,iBACA,SAAS,oBAAoB,aAAa,KAC1C,cAAc,MAAM,CAAC,KAAKA,MAAK,MAAM,CAAC,KACtC,SAAS,oBAAoB,SAAS,KACtC,UAAU,MAAM,CAAC,KAAKA,MAAK,MAAM,CAAC;AAAA,QAEpC;AAOA,iBAAS,cAAcA,OAAM;AAC5B,cACCA,MAAK,QACLA,MAAK,KAAK,SAAS,2BAClBA,MAAK,SAAS,iBACZ,CAAC,SAAS,gBAAgB,YAAYA,MAAK,IAAI,IAC/C,CAAC,qBAAqBA,MAAK,IAAI,IACjC;AACD,oBAAQ,OAAO;AAAA,cACd,MAAMA,MAAK;AAAA,cACX,WAAW;AAAA,YACZ,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,2BAA2BA,OAAM;AACzC,gBAAM,WAAW,wBAAwBA,KAAI;AAE7C,cAAI,UAAU;AACb,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,MAAM,kBAAkB,SAAS,IAAI,KAAK,SAAS;AAAA,cACpD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,YAAI,mBAAmB,UAAU;AAChC,iBAAO;AAAA,YACN,sBAAsB;AAAA,UACvB;AAAA,QACD;AAEA,eAAO;AAAA,UACN,kBAAkB;AAAA,UAClB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,uBAAuB;AAAA,QACxB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC9KA;AAAA,wDAAAC,UAAAC,SAAA;AAAA;AASA,QAAM,WAAW;AAWjB,aAAS,cAAcC,OAAM;AAC5B,aAAOA,SAAQA,MAAK,SAAS;AAAA,IAC9B;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,aAAa,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,cAC9C,oBAAoB,EAAE,MAAM,WAAW,SAAS,MAAM;AAAA,YACvD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,WACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,SAAS,QAAQ,QAAQ,CAAC,KAAK,CAAC;AACtC,cAAM,cAAc,OAAO,eAAe,OAAO,gBAAgB;AACjE,cAAM,qBAAqB,OAAO;AAClC,cAAM,aAAa,QAAQ;AAO3B,iBAAS,eAAeC,OAAM;AAC7B,gBAAM,OAAOA,MAAK;AAElB,cACC,cAAc,IAAI,KAClB,EAAE,eAAe,SAAS,gBAAgB,YAAY,IAAI,MAC1D,EACC,sBACA,EACCA,MAAK,OAAO,WAAW,KACvBA,MAAK,OAAO,CAAC,EAAE,SAAS,gBAGzB;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,IAAI,OAAO;AAEV,uBACC,eACA,MAAM;AAAA,kBACLA,MAAK;AAAA,kBACL,IAAI,WAAW,QAAQA,MAAK,IAAI,CAAC;AAAA,gBAClC;AAAA,cAEF;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,yBAAyB;AAAA,QAC1B;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC9HA;AAAA,gDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAajB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,CAAC,CAAC;AAAA,QAEnB,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,OAAO;AAAA,gBACN,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,gBACA,UAAU;AAAA,gBACV,aAAa;AAAA,cACd;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,gBAAgB;AAAA,QAEhB,UAAU;AAAA,UACT,YAAY;AAAA,UACZ,SACC;AAAA,UACD,eAAe;AAAA,UACf,kBAAkB;AAAA,QACnB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,OAAO,UAAU,CAAC,EAAE,CAAC,IAAI,QAAQ;AAC1C,cAAM,aAAa,QAAQ;AAO3B,iBAAS,UAAU,WAAW;AAC7B,gBAAM,KAAK,UAAU;AAErB,iBAAO,MAAM,GAAG,SAAS;AAAA,QAC1B;AAQA,iBAAS,UAAUC,OAAM;AACxB,gBAAM,eAAe,SAAS,sBAAsBA,KAAI;AAExD,iBAAO,gBAAgB,QAAQ,SAAS,YAAY;AAAA,QACrD;AASA,iBAAS,4BAA4B,WAAW;AAC/C,gBAAMA,QAAO,UAAU;AACvB,gBAAM,SAASA,MAAK;AAEpB,iBACC,OAAO,SAAS,sBAChB,OAAO,WAAWA,SAClB,CAAC,UAAU,MAAM;AAAA,QAEnB;AAiBA,iBAAS,eAAeA,OAAM;AAC7B,gBAAM,qBAAqB;AAC3B,gBAAM,qBAAqB;AAE3B,gBAAM,cAAc,WAAW,eAAeA,KAAI;AAClD,gBAAM,aAAa,WAAW,cAAcA,KAAI;AAEhD,iBACC,QAAQ,UAAU,KAClB,mBAAmB,KAAK,WAAW,KAAK,KACxC,WAAW,UAAU,QACrB,WAAW,UAAU,QACrB,QAAQ,WAAW,KACnB,CAAC,mBAAmB,KAAK,YAAY,KAAK;AAAA,QAE5C;AAkBA,iBAAS,sBAAsBA,OAAM;AACpC,iBACCA,MAAK,OAAO,SAAS,oBACrBA,MAAK,OAAO,WAAWA,SACvBA,MAAK,OAAO,OAAO,SAAS,yBAC5B,SAAS,uBAAuB;AAAA,YAC/BA,MAAK,OAAO,OAAO,OAAO;AAAA,UAC3B,KACA,CAAC,eAAeA,MAAK,OAAO,MAAM;AAAA,QAEpC;AAOA,iBAAS,OAAO,WAAW;AAC1B,gBAAMA,QAAO,UAAU,WAAW;AAElC,gBAAM,UAAU,CAAC;AAEjB,cAAI,sBAAsBA,KAAI,GAAG;AAChC,kBAAM,aAAa;AAAA,cAClB,IAAI,OAAO;AACV,uBAAO,MAAM,OAAOA,MAAK,OAAO,MAAM;AAAA,cACvC;AAAA,YACD;AAEA,gBAAIA,MAAK,UAAU;AAClB,yBAAW,YAAY;AAAA,YACxB,OAAO;AACN,yBAAW,YAAY;AACvB,yBAAW,OAAO,EAAE,cAAcA,MAAK,SAAS,KAAK;AAAA,YACtD;AACA,oBAAQ,KAAK,UAAU;AAAA,UACxB;AACA,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAKA,MAAK;AAAA,YACV,WAAW,QAAQ,SAAS,YAAY;AAAA,YACxC,MAAM,EAAE,SAAS,QAAQ,KAAK,IAAI,EAAE;AAAA,YACpC;AAAA,UACD,CAAC;AAAA,QACF;AAEA,eAAO;AAAA,UACN,eAAeA,OAAM;AACpB,kBAAM,QAAQ,WAAW,SAASA,KAAI;AACtC,kBAAM,aAAa,SAAS,kBAAkB,OAAO,SAAS;AAC9D,kBAAM,WAAW,cAAc,WAAW,KAAK,SAAS;AAOxD,kBAAM,aAAa,aAChB,WAAW,aACX,MAAM,QAAQ,OAAO,SAAS;AAEjC,gBAAI,CAAC,UAAU;AACd,yBACE,OAAO,2BAA2B,EAClC,QAAQ,MAAM;AAAA,YACjB;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClOA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAMjB,QAAM,oBAAoB,oBAAI,IAAI,CAAC,SAAS,SAAS,aAAa,CAAC;AAOnE,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,OAAO;AAAA,QACR;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAO3B,iBAAS,cAAc,UAAU;AAChC,mBACE,uBAAuB,SAAS,UAAU,EAC1C,QAAQ,eAAa;AACrB,oBAAQ,OAAO;AAAA,cACd,MAAM,UAAU;AAAA,cAChB,WAAW;AAAA,cACX,MAAM,EAAE,MAAM,UAAU,WAAW,KAAK;AAAA,YACzC,CAAC;AAAA,UACF,CAAC;AAAA,QACH;AAEA,eAAO;AAAA,UACN,oBAAoBC,OAAM;AACzB,gBAAI,kBAAkB,IAAIA,MAAK,IAAI,GAAG;AACrC,yBACE,qBAAqBA,KAAI,EACzB,QAAQ,aAAa;AAAA,YACxB;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxEA;AAAA,mEAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AAEJ,QAAM,qCAAqC,oBAAI,IAAI;AAAA,MAClD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAeD,aAAS,kBAAkB,OAAOC,OAAM;AACvC,aACC,cAAcA,KAAI,KACjBA,MAAK,SAAS,gBACdA,MAAK,SAAS,eACd,4BAA4B,OAAOA,KAAI,KACvCA,MAAK,SAAS,qBAAqBA,MAAK,aAAa;AAAA,IAExD;AAYA,aAAS,uBAAuB,OAAOA,OAAM,YAAY;AACxD,UAAI,cAAc,kBAAkB,OAAOA,KAAI,GAAG;AACjD,eAAO;AAAA,MACR;AAEA,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QACR,KAAK,kBAAkB;AACtB,cAAIA,MAAK,OAAO,SAAS,cAAc;AACtC,mBAAO;AAAA,UACR;AACA,gBAAM,eAAeA,MAAK,OAAO;AAEjC,kBACE,iBAAiB,aACjB,iBAAiB,YACjB,iBAAiB,aAClB,4BAA4B,OAAOA,MAAK,MAAM;AAAA,QAEhD;AAAA,QACA,KAAK,qBAAqB;AACzB,iBACCA,MAAK,aAAa,QAClB,uBAAuB,OAAOA,MAAK,OAAO,IAAI;AAAA,QAEhD;AAAA,QACA,KAAK;AACJ,cAAIA,MAAK,aAAa,KAAK;AAC1B,mBAAO,uBAAuB,OAAOA,MAAK,OAAO,UAAU;AAAA,UAC5D;AAMA,cAAI,4BAA4BA,MAAK,QAAQ,GAAG;AAC/C,mBAAO;AAAA,UACR;AAQA,iBAAO;AAAA,QACR,KAAK;AAUJ,iBAAO;AAAA,QACR,KAAK,sBAAsB;AAC1B,gBAAM,OAAOA,MAAK,YAAY,GAAG,EAAE;AAEnC,iBAAO,uBAAuB,OAAO,MAAM,UAAU;AAAA,QACtD;AAAA,QACA,KAAK;AACJ,iBACCA,MAAK,SAAS,eACd,4BAA4B,OAAOA,KAAI;AAAA,QAEzC,KAAK;AAAA;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QACR;AACC,iBAAO;AAAA,MACT;AAAA,IACD;AAYA,aAAS,gBAAgB,OAAOA,OAAM;AACrC,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AACJ,iBAAO,OAAOA,MAAK,UAAU;AAAA,QAC9B,KAAK;AACJ,iBACCA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS,aACrB,4BAA4B,OAAOA,MAAK,MAAM,MAC7CA,MAAK,UAAU,WAAW,KAC1B,WAAW,OAAOA,MAAK,UAAU,CAAC,GAAG,IAAI;AAAA,QAE5C,KAAK;AACJ,iBACCA,MAAK,aAAa,OAAO,WAAW,OAAOA,MAAK,UAAU,IAAI;AAAA,QAEhE;AACC,iBAAO;AAAA,MACT;AAAA,IACD;AAcA,aAAS,kCAAkC,OAAOA,OAAM;AACvD,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAeJ,iBAAO;AAAA,QACR,KAAK,mBAAmB;AACvB,gBAAM,oBAAoBA,MAAK,SAAS;AAAA,YACvC;AAAA;AAAA,cAEC,MAAM,QAAQ,EAAE,SAAS;AAAA;AAAA,UAC3B;AAQA,iBAAOA,MAAK,SAAS,WAAW,KAAK,kBAAkB,SAAS;AAAA,QACjE;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QACR,KAAK;AACJ,cACCA,MAAK,aAAa;AAAA,UAClBA,MAAK,aAAa,UACjB;AACD,mBAAO;AAAA,UACR;AACA,cAAIA,MAAK,aAAa,KAAK;AAC1B,mBAAO,WAAW,OAAOA,MAAK,UAAU,IAAI;AAAA,UAC7C;AAQA,iBAAO;AAAA,QACR,KAAK;AACJ,iBAAO;AAAA,QACR,KAAK,kBAAkB;AACtB,cACCA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS,aACrB,4BAA4B,OAAOA,MAAK,MAAM,GAC7C;AACD,mBACCA,MAAK,UAAU,WAAW,KAC1B,WAAW,OAAOA,MAAK,UAAU,CAAC,GAAG,IAAI;AAAA,UAE3C;AACA,iBAAO;AAAA,QACR;AAAA,QACA,KAAK;AACJ,iBAAO;AAAA,QACR,KAAK;AACJ,iBACCA,MAAK,SAAS,eACd,4BAA4B,OAAOA,KAAI;AAAA,QAEzC,KAAK;AAMJ,iBAAOA,MAAK,YAAY,WAAW;AAAA,QACpC,KAAK;AACJ,cAAIA,MAAK,aAAa,KAAK;AAC1B,mBAAO,kCAAkC,OAAOA,MAAK,KAAK;AAAA,UAC3D;AAUA,iBAAO;AAAA,QACR,KAAK,sBAAsB;AAC1B,gBAAM,OAAOA,MAAK,YAAY,GAAG,EAAE;AAEnC,iBAAO,kCAAkC,OAAO,IAAI;AAAA,QACrD;AAAA,QACA,KAAK;AAAA;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QACR;AACC,iBAAO;AAAA,MACT;AAAA,IACD;AAWA,aAAS,mCAAmC,OAAOA,OAAM;AACxD,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QACR,KAAK;AACJ,iBAAO,mCAAmC,IAAIA,MAAK,QAAQ;AAAA,QAC5D,KAAK,mBAAmB;AACvB,cAAIA,MAAK,aAAa,UAAU;AAC/B,mBAAO;AAAA,UACR;AACA,cAAIA,MAAK,aAAa,KAAK;AAC1B,mBAAO,WAAW,OAAOA,MAAK,UAAU,IAAI;AAAA,UAC7C;AAMA,iBAAO;AAAA,QACR;AAAA,QACA,KAAK,sBAAsB;AAC1B,gBAAM,OAAOA,MAAK,YAAY,GAAG,EAAE;AAEnC,iBAAO,mCAAmC,OAAO,IAAI;AAAA,QACtD;AAAA,QACA,KAAK;AACJ,iBACCA,MAAK,SAAS,eACd,4BAA4B,OAAOA,KAAI;AAAA,QAEzC,KAAK;AACJ,cAAIA,MAAK,aAAa,KAAK;AAC1B,mBAAO,mCAAmC,OAAOA,MAAK,KAAK;AAAA,UAC5D;AAMA,cAAI,4BAA4BA,MAAK,QAAQ,GAAG;AAC/C,mBAAO;AAAA,UACR;AAMA,iBAAO;AAAA,QACR,KAAK,kBAAkB;AACtB,cAAIA,MAAK,OAAO,SAAS,cAAc;AACtC,mBAAO;AAAA,UACR;AACA,gBAAM,eAAeA,MAAK,OAAO;AAEjC,eACE,iBAAiB,YAAY,iBAAiB,aAC/C,4BAA4B,OAAOA,MAAK,MAAM,GAC7C;AACD,mBAAO;AAAA,UACR;AACA,cACC,iBAAiB,aACjB,4BAA4B,OAAOA,MAAK,MAAM,GAC7C;AACD,mBACCA,MAAK,UAAU,WAAW,KAC1B,WAAW,OAAOA,MAAK,UAAU,CAAC,GAAG,IAAI;AAAA,UAE3C;AACA,iBAAO;AAAA,QACR;AAAA,QACA,KAAK;AAAA;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QACR;AACC,iBAAO;AAAA,MACT;AAAA,IACD;AAQA,aAAS,YAAY,OAAOA,OAAM;AACjC,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QACR,KAAK,iBAAiB;AACrB,cAAIA,MAAK,OAAO,SAAS,cAAc;AACtC,mBAAO;AAAA,UACR;AAUA,iBACC,OAAO,OAAO,oBAAoBA,MAAK,OAAO,IAAI,KAClD,4BAA4B,OAAOA,MAAK,MAAM;AAAA,QAEhD;AAAA,QACA,KAAK;AAEJ,iBAAO,OAAOA,MAAK,UAAU;AAAA,QAC9B,KAAK,sBAAsB;AAC1B,gBAAM,OAAOA,MAAK,YAAY,GAAG,EAAE;AAEnC,iBAAO,YAAY,OAAO,IAAI;AAAA,QAC/B;AAAA,QACA,KAAK;AACJ,cAAIA,MAAK,aAAa,KAAK;AAC1B,mBAAO,YAAY,OAAOA,MAAK,KAAK;AAAA,UACrC;AACA,iBAAO;AAAA,QACR,KAAK;AACJ,iBACC,YAAY,OAAOA,MAAK,UAAU,KAClC,YAAY,OAAOA,MAAK,SAAS;AAAA,QAEnC,KAAK;AAAA;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QACR;AACC,iBAAO;AAAA,MACT;AAAA,IACD;AAUA,aAAS,oCAAoC,OAAO,GAAG,GAAG,UAAU;AACnE,UAAI,aAAa,QAAQ,aAAa,MAAM;AAC3C,YACE,kBAAkB,OAAO,CAAC,KAC1B,uBAAuB,OAAO,GAAG,KAAK,KACtC,gBAAgB,OAAO,CAAC,KACxB,kCAAkC,OAAO,CAAC,GAC1C;AACD,iBAAO;AAAA,QACR;AAAA,MACD,WAAW,aAAa,SAAS,aAAa,OAAO;AACpD,YACE,kBAAkB,OAAO,CAAC,KAC1B,uBAAuB,OAAO,GAAG,KAAK,KACtC,gBAAgB,OAAO,CAAC,KACxB,mCAAmC,OAAO,CAAC,GAC3C;AACD,iBAAO;AAAA,QACR;AAAA,MACD;AACA,aAAO;AAAA,IACR;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QACA,QAAQ,CAAC;AAAA,QACT,UAAU;AAAA,UACT,uBACC;AAAA,UACD,sBACC;AAAA,UACD,WACC;AAAA,UACD,eACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,kBAAkBC,OAAM;AACvB,kBAAM,EAAE,UAAU,KAAK,IAAIA;AAC3B,kBAAM,QAAQ,WAAW,SAASA,KAAI;AAEtC,iBACE,aAAa,QAAQ,aAAa,SACnC,WAAW,OAAO,MAAM,IAAI,GAC3B;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,MAAM,EAAE,UAAU,cAAc,SAAS;AAAA,cAC1C,CAAC;AAAA,YACF,WACC,aAAa,QACb,uBAAuB,OAAO,MAAM,KAAK,GACxC;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,MAAM,EAAE,UAAU,eAAe,SAAS;AAAA,cAC3C,CAAC;AAAA,YACF;AAAA,UACD;AAAA,UACA,iBAAiBA,OAAM;AACtB,kBAAM,QAAQ,WAAW,SAASA,KAAI;AACtC,kBAAM,EAAE,OAAO,MAAM,SAAS,IAAIA;AAClC,kBAAM,uBACL;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACD;AACD,kBAAM,sBAAsB;AAAA,cAC3B;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAEA,gBAAI,sBAAsB;AACzB,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,MAAM,EAAE,UAAU,WAAW,OAAO;AAAA,cACrC,CAAC;AAAA,YACF,WAAW,qBAAqB;AAC/B,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,MAAM,EAAE,UAAU,WAAW,QAAQ;AAAA,cACtC,CAAC;AAAA,YACF,WAAW,aAAa,SAAS,aAAa,OAAO;AACpD,kBAAI,YAAY,OAAO,IAAI,GAAG;AAC7B,wBAAQ,OAAO,EAAE,MAAM,MAAM,WAAW,YAAY,CAAC;AAAA,cACtD,WAAW,YAAY,OAAO,KAAK,GAAG;AACrC,wBAAQ,OAAO,EAAE,MAAM,OAAO,WAAW,YAAY,CAAC;AAAA,cACvD;AAAA,YACD,WAAW,aAAa,QAAQ,aAAa,MAAM;AAMlD,kBAAI,YAAY,OAAO,IAAI,KAAK,YAAY,OAAO,KAAK,GAAG;AAC1D,wBAAQ,OAAO;AAAA,kBACd,MAAM;AAAA,kBACN,WAAW;AAAA,gBACZ,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAUD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1lBA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,EAAE,WAAW,IAAI;AAWvB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,EAAE,YAAY,qBAAqB,CAAC;AAAA,QAErD,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,YAAY;AAAA,gBACX,MAAM;AAAA,kBACL;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,eAAe,CAAC;AACtB,cAAM,aAAa,QAAQ;AAC3B,YAAI,CAAC,EAAE,WAAW,CAAC,IAAI,QAAQ;AAE/B,YAAI,eAAe,MAAM;AACxB,uBAAa;AAAA,QACd,WAAW,eAAe,OAAO;AAChC,uBAAa;AAAA,QACd;AAEA,YAAI,sBAAsB,oBAAI,IAAI;AAYlC,iBAAS,2BAA2BC,OAAM;AACzC,cACCA,MAAK,QACL,WAAW,WAAW,SAASA,KAAI,GAAGA,MAAK,MAAM,IAAI,GACpD;AACD,gCAAoB,IAAIA,KAAI;AAAA,UAC7B;AAAA,QACD;AAQA,iBAAS,gCAAgCA,OAAM;AAC9C,cAAI,oBAAoB,IAAIA,KAAI,GAAG;AAClC,gCAAoB,OAAOA,KAAI;AAC/B,oBAAQ,OAAO,EAAE,MAAMA,MAAK,MAAM,WAAW,aAAa,CAAC;AAAA,UAC5D;AAAA,QACD;AAQA,iBAAS,iBAAiBA,OAAM;AAC/B,cACCA,MAAK,QACL,WAAW,WAAW,SAASA,KAAI,GAAGA,MAAK,MAAM,IAAI,GACpD;AACD,oBAAQ,OAAO,EAAE,MAAMA,MAAK,MAAM,WAAW,aAAa,CAAC;AAAA,UAC5D;AAAA,QACD;AAQA,iBAAS,gBAAgB;AACxB,uBAAa,KAAK,mBAAmB;AACrC,gCAAsB,oBAAI,IAAI;AAAA,QAC/B;AAOA,iBAAS,eAAe;AACvB,gCAAsB,aAAa,IAAI;AAAA,QACxC;AAQA,iBAAS,UAAUA,OAAM;AACxB,cAAI,eAAe,SAAS,eAAe,sBAAsB;AAChE,uCAA2BA,KAAI;AAAA,UAChC;AAAA,QACD;AAMA,eAAO;AAAA,UACN,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,eAAeA,OAAM;AACpB,gBACCA,MAAK,KAAK,SAAS,aACnBA,MAAK,KAAK,UAAU,QACpB,eAAe,sBACd;AACD;AAAA,YACD;AAEA,sBAAUA,KAAI;AAAA,UACf;AAAA,UACA,uBAAuB;AAAA,UACvB,kBAAkB;AAAA,UAClB,yBAAyB;AAAA,UACzB,cAAc;AAAA,UACd,wBAAwB,CAAAA,UAAQ,UAAUA,MAAK,MAAM;AAAA,UACrD,qBAAqB;AAAA,UACrB,qBAAqB;AAAA,UACrB,4BAA4B;AAAA,UAC5B,oBAAoB;AAAA,UACpB,2BAA2B;AAAA,UAC3B,iBAAiB,MAAM,oBAAoB,MAAM;AAAA,QAClD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AChLA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,SAAS;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,QAAQ,CAAC;AAEf,eAAO;AAAA,UACN,gBAAgB,GAAGC,OAAM;AACxB,kBAAM,KAAKA,KAAI;AAAA,UAChB;AAAA,UACA,gBAAgB;AACf,kBAAM,IAAI;AAAA,UACX;AAAA,UACA,gBAAgBA,OAAM;AACrB,kBAAM,OAAO,MAAM,GAAG,EAAE;AAExB,gBAAI,CAAC,KAAK,QAAQ;AACjB;AAAA,YACD;AAEA,gBACC,KAAK,OAAO,SAAS,sBACrB,KAAK,OAAO,SAAS,iBACrBA,MAAK,UACJ;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC7DA;AAAA,iDAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,kBAAkBC,OAAM;AACvB,oBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,aAAa,CAAC;AAAA,UACjD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;;;;;;;;ACxBO,QAAM,oBAAoB;ACTjC,QAAI,qBAA2C;AAC/C,QAAI,wBAA8C;AAE5C,aAAU,UAAU,IAAU;AAChC,UAAI,KAAK;AAAM,eAAO;AACtB,UAAI,KAAK;AAAM,eAAO;AACtB,UAAI,KAAK;AAAM,eAAO;AACtB,UAAI,KAAK;AAAM,eAAO;AACtB,aAAO,eAAe,EAAE;IAC5B;AAEM,aAAU,aAAa,IAAU;AACnC,UAAI,KAAK;AAAM,eAAO;AACtB,UAAI,KAAK;AAAM,eAAO;AACtB,UAAI,KAAK;AAAM,eAAO;AACtB,UAAI,KAAK;AAAM,eAAO;AACtB,UAAI,OAAO;AAAM,eAAO;AACxB,UAAI,KAAK;AAAM,eAAO;AACtB,UAAI,KAAK;AAAM,eAAO;AACtB,aAAO,eAAe,EAAE,KAAK,kBAAkB,EAAE;IACrD;AAEA,aAAS,eAAe,IAAU;AAC9B,aAAO,UACH,IACA,uBAAkB,QAAlB,uBAAkB,SAAlB,qBAAuB,qBAAqB,uBAAsB,CAAG;IAE7E;AAEA,aAAS,kBAAkB,IAAU;AACjC,aAAO,UACH,IACA,0BAAqB,QAArB,0BAAqB,SAArB,wBACK,wBAAwB,0BAAyB,CAAG;IAEjE;AAEA,aAAS,yBAAsB;AAC3B,aAAO,cACH,k7FAAk7F;IAE17F;AAEA,aAAS,4BAAyB;AAC9B,aAAO,cACH,ytDAAytD;IAEjuD;AAEA,aAAS,UAAU,IAAY,QAAgB;AAC3C,UAAI,IAAI,GACJ,IAAK,OAAO,SAAS,IAAK,GAC1B,IAAI,GACJC,OAAM,GACNC,OAAM;AACV,aAAO,IAAI,GAAG;AACV,aAAM,IAAI,KAAK,IAAK;AACpB,QAAAD,OAAM,OAAO,IAAI,CAAC;AAClB,QAAAC,OAAM,OAAO,IAAI,IAAI,CAAC;AACtB,YAAI,KAAKD,MAAK;AACV,cAAI;QACP,WAAU,KAAKC,MAAK;AACjB,cAAI,IAAI;QACX,OAAM;AACH,iBAAO;QACV;MACJ;AACD,aAAO;IACX;AAEA,aAAS,cAAc,MAAY;AAC/B,UAAI,OAAO;AACX,aAAO,KAAK,MAAM,GAAG,EAAE,IAAI,CAAC,MAAO,QAAQ,SAAS,GAAG,EAAE,IAAI,CAAE;IACnE;AC3EA,QAAM,UAAN,MAAa;MAqCT,YACI,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAAe;AAEf,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,WAAW;;MAGpB,IAAW,SAAM;;AACb,gBACI,KAAA,KAAK,cAAQ,QAAA,OAAA,SAAA,KAAK,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,MAAM,GAAG,CAAC;;MAI1E,IAAW,SAAM;;AACb,gBACI,KAAA,KAAK,cAAQ,QAAA,OAAA,SAAA,KAAK,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,MAAM,GAAG,CAAC;;MAI1E,IAAW,SAAM;;AACb,gBACI,KAAA,KAAK,cAAQ,QAAA,OAAA,SAAA,KAAK,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,MAAM,GAAG,CAAC;;MAI1E,IAAW,SAAM;;AACb,gBACI,KAAA,KAAK,cAAQ,QAAA,OAAA,SAAA,KAAK,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,MAAM,GAAG,CAAC;;MAI1E,IAAW,SAAM;;AACb,gBACI,KAAA,KAAK,cAAQ,QAAA,OAAA,SAAA,KAAK,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,MAAM,GAAG,CAAC;;MAI1E,IAAW,SAAM;;AACb,gBACI,KAAA,KAAK,cAAQ,QAAA,OAAA,SAAA,KAAK,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,MAAM,GAAG,CAAC;;MAI1E,IAAW,SAAM;;AACb,gBACI,KAAA,KAAK,cAAQ,QAAA,OAAA,SAAA,KAAK,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,MAAM,GAAG,CAAC;;MAI1E,IAAW,SAAM;;AACb,gBACI,KAAA,KAAK,cAAQ,QAAA,OAAA,SAAA,KAAK,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,MAAM,GAAG,CAAC;;MAI1E,IAAW,SAAM;;AACb,gBACI,KAAA,KAAK,cAAQ,QAAA,OAAA,SAAA,KAAK,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,MAAM,GAAG,CAAC;;IAG7E;AAED,QAAM,YAAY,oBAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC;AACpD,QAAM,YAAY,oBAAI,IAAI,CAAC,UAAU,qBAAqB,MAAM,KAAK,CAAC;AACtE,QAAM,cAAc,IAAI,QACpB,spBACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EAAE;AAEN,QAAM,cAAc,IAAI,QACpB,88DACA,kHACA,yEACA,yEACA,oEACA,+NACA,IACA,IACA,EAAE;AAEN,QAAM,kBAAkB,IAAI,QACxB,+9BACA,yBACA,IACA,kCACA,IACA,IACA,IACA,IACA,EAAE;AAEN,QAAM,2BAA2B,IAAI,QACjC,IACA,IACA,IACA,IACA,IACA,IACA,iJACA,IACA,EAAE;aAGU,uBACZC,UACA,MACAC,QAAa;AAEb,UAAI,UAAU,IAAI,IAAI,GAAG;AACrB,eAAOD,YAAW,QAAQ,YAAY,OAAO,IAAIC,MAAK;MACzD;AACD,UAAI,UAAU,IAAI,IAAI,GAAG;AACrB,eACKD,YAAW,QAAQ,YAAY,OAAO,IAAIC,MAAK,KAC/CD,YAAW,QAAQ,YAAY,OAAO,IAAIC,MAAK,KAC/CD,YAAW,QAAQ,YAAY,OAAO,IAAIC,MAAK,KAC/CD,YAAW,QAAQ,YAAY,OAAO,IAAIC,MAAK,KAC/CD,YAAW,QAAQ,YAAY,OAAO,IAAIC,MAAK,KAC/CD,YAAW,QAAQ,YAAY,OAAO,IAAIC,MAAK;MAEvD;AACD,aAAO;IACX;AAEgB,aAAA,2BACZD,UACAC,QAAa;AAEb,aACKD,YAAW,QAAQ,gBAAgB,OAAO,IAAIC,MAAK,KACnDD,YAAW,QAAQ,gBAAgB,OAAO,IAAIC,MAAK,KACnDD,YAAW,QAAQ,gBAAgB,OAAO,IAAIC,MAAK;IAE5D;AAEgB,aAAA,mCACZD,UACAC,QAAa;AAEb,aAAOD,YAAW,QAAQ,yBAAyB,OAAO,IAAIC,MAAK;IACvE;AChMO,QAAM,YAAY;AAClB,QAAM,uBAAuB;AAC7B,QAAM,YAAY;AAClB,QAAM,kBAAkB;AACxB,QAAM,YAAY;AAClB,QAAM,kBAAkB;AACxB,QAAM,mBAAmB;AACzB,QAAM,cAAc;AACpB,QAAM,cAAc;AACpB,QAAM,eAAe;AACrB,QAAM,YAAY;AAClB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,WAAW;AACjB,QAAM,YAAY;AAClB,QAAM,QAAQ;AACd,QAAM,eAAe;AACrB,QAAM,YAAY;AAClB,QAAM,UAAU;AAChB,QAAM,aAAa;AACnB,QAAM,YAAY;AAClB,QAAM,cAAc;AACpB,QAAM,aAAa;AACnB,QAAM,QAAQ;AACd,QAAM,YAAY;AAClB,QAAM,iBAAiB;AACvB,QAAM,cAAc;AACpB,QAAM,oBAAoB;AAC1B,QAAM,gBAAgB;AACtB,QAAM,gBAAgB;AACtB,QAAM,yBAAyB;AAC/B,QAAM,yBAAyB;AAC/B,QAAM,yBAAyB;AAC/B,QAAM,yBAAyB;AAC/B,QAAM,yBAAyB;AAC/B,QAAM,yBAAyB;AAC/B,QAAM,yBAAyB;AAC/B,QAAM,yBAAyB;AAC/B,QAAM,WAAW;AACjB,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,uBAAuB;AAC7B,QAAM,sBAAsB;AAC5B,QAAM,kBAAkB;AACxB,QAAM,uBAAuB;AAC7B,QAAM,oBAAoB;AAC1B,QAAM,eAAe;AACrB,QAAM,qBAAqB;AAC3B,QAAM,gBAAgB;AACtB,QAAM,sBAAsB;AAC5B,QAAM,QAAQ;AACd,QAAM,wBAAwB;AAC9B,QAAM,oBAAoB;AAC1B,QAAM,iBAAiB;AACvB,QAAM,sBAAsB;AAE5B,QAAM,iBAAiB;AACvB,QAAM,iBAAiB;AAExB,aAAU,cAAcC,OAAY;AACtC,aACKA,SAAQ,0BAA0BA,SAAQ,0BAC1CA,SAAQ,wBAAwBA,SAAQ;IAEjD;AAEM,aAAU,eAAeA,OAAY;AACvC,aAAOA,SAAQ,cAAcA,SAAQ;IACzC;AAEM,aAAU,aAAaA,OAAY;AACrC,aAAOA,SAAQ,cAAcA,SAAQ;IACzC;AAEM,aAAU,WAAWA,OAAY;AACnC,aACKA,SAAQ,cAAcA,SAAQ,cAC9BA,SAAQ,0BAA0BA,SAAQ,0BAC1CA,SAAQ,wBAAwBA,SAAQ;IAEjD;AAEM,aAAU,iBAAiBA,OAAY;AACzC,aACIA,UAAS,aACTA,UAAS,mBACTA,UAAS,kBACTA,UAAS;IAEjB;AAEM,aAAU,eAAeA,OAAY;AACvC,aAAOA,SAAQ,kBAAkBA,SAAQ;IAC7C;AAEM,aAAU,WAAWA,OAAY;AACnC,UAAIA,SAAQ,wBAAwBA,SAAQ,sBAAsB;AAC9D,eAAOA,QAAO,uBAAuB;MACxC;AACD,UAAIA,SAAQ,0BAA0BA,SAAQ,wBAAwB;AAClE,eAAOA,QAAO,yBAAyB;MAC1C;AACD,aAAOA,QAAO;IAClB;AAEM,aAAU,gBAAgBA,OAAY;AACxC,aAAOA,SAAQ,SAAUA,SAAQ;IACrC;AAEM,aAAU,iBAAiBA,OAAY;AACzC,aAAOA,SAAQ,SAAUA,SAAQ;IACrC;AAEgB,aAAA,qBAAqB,MAAcC,QAAa;AAC5D,cAAQ,OAAO,SAAU,QAASA,SAAQ,SAAU;IACxD;QCxGa,gCAAuB;MAApC,cAAA;AACqB,aAAA,YAAY,oBAAI,IAAG;;MAE7B,QAAK;AACR,aAAK,UAAU,MAAK;;MAGjB,UAAO;AACV,eAAO,CAAC,KAAK,UAAU;;MAGpB,aAAa,MAAY;AAC5B,eAAO,KAAK,UAAU,IAAI,IAAI;;MAG3B,WAAW,MAAY;AAC1B,eAAO,KAAK,aAAa,IAAI;;MAG1B,WAAW,MAAY;AAC1B,aAAK,UAAU,IAAI,IAAI;;MAIpB,mBAAgB;;MAKhB,mBAAgB;;MAKhB,mBAAgB;;IAG1B;AAMD,QAAM,WAAN,MAAM,UAAQ;MAGV,YAAmB,QAAyBC,OAAqB;AAE7D,aAAK,SAAS;AAEd,aAAK,OAAOA,UAAI,QAAJA,UAAA,SAAAA,QAAQ;;MAOjB,cAAc,OAAe;;AAChC,YAAI,KAAK,SAAS,MAAM,QAAQ,SAAS,OAAO;AAC5C,iBAAO;QACV;AACD,YAAI,MAAM,UAAU,KAAK,cAAc,MAAM,MAAM,GAAG;AAClD,iBAAO;QACV;AACD,gBAAO,MAAA,KAAA,KAAK,YAAM,QAAA,OAAA,SAAA,SAAA,GAAE,cAAc,KAAK,OAAK,QAAA,OAAA,SAAA,KAAA;;MAGzC,QAAK;AACR,eAAO,IAAI,UAAS,MAAM,IAAI;;MAG3B,UAAO;AACV,eAAO,IAAI,UAAS,KAAK,QAAQ,KAAK,IAAI;;IAEjD;QAEY,gCAAuB;MAApC,cAAA;AACY,aAAQ,WAAG,IAAI,SAAS,MAAM,IAAI;AACzB,aAAA,aAAa,oBAAI,IAAG;;MAE9B,QAAK;AACR,aAAK,WAAW,IAAI,SAAS,MAAM,IAAI;AACvC,aAAK,WAAW,MAAK;;MAGlB,UAAO;AACV,eAAO,CAAC,KAAK,WAAW;;MAGrB,mBAAgB;AACnB,aAAK,WAAW,KAAK,SAAS,MAAK;;MAGhC,iBAAiBC,QAAa;AACjC,YAAIA,WAAU,GAAG;AACb;QACH;AACD,aAAK,WAAW,KAAK,SAAS,QAAO;;MAGlC,mBAAgB;AACnB,aAAK,WAAW,KAAK,SAAS;;MAG3B,aAAa,MAAY;AAC5B,eAAO,KAAK,WAAW,IAAI,IAAI;;MAG5B,WAAW,MAAY;AAC1B,cAAM,WAAW,KAAK,WAAW,IAAI,IAAI;AACzC,YAAI,CAAC,UAAU;AACX,iBAAO;QACV;AACD,mBAAW,UAAU,UAAU;AAC3B,cAAI,CAAC,OAAO,cAAc,KAAK,QAAQ,GAAG;AACtC,mBAAO;UACV;QACJ;AACD,eAAO;;MAGJ,WAAW,MAAY;AAC1B,cAAM,WAAW,KAAK,WAAW,IAAI,IAAI;AACzC,YAAI,UAAU;AACV,mBAAS,KAAK,KAAK,QAAQ;AAC3B;QACH;AACD,aAAK,WAAW,IAAI,MAAM,CAAC,KAAK,QAAQ,CAAC;;IAEhD;ACtKD,QAAM,aAAa;MACf,GAAG,GAAW,KAAa,GAAS;AAChC,eAAO,IAAI,MAAM,EAAE,WAAW,CAAC,IAAI;;MAEvC,MAAM,GAAS;AACX,eAAO;;;AAGf,QAAM,cAAc;MAChB,GAAG,GAAW,KAAa,GAAS;AAChC,eAAO,IAAI,MAAM,EAAE,YAAY,CAAC,IAAK;;MAEzC,MAAM,GAAS;AACX,eAAO,IAAI,QAAS,IAAI;;;QAInB,eAAM;MAAnB,cAAA;AACY,aAAK,QAAG;AAER,aAAE,KAAG;AAEL,aAAE,KAAG;AAEL,aAAI,OAAG;AAEP,aAAI,OAAG;AAEP,aAAG,MAAG;AAEN,aAAI,OAAG;AAEP,aAAG,MAAG;AAEN,aAAI,OAAG;AAEP,aAAG,MAAG;AAEN,aAAI,OAAG;;MAEf,IAAW,SAAM;AACb,eAAO,KAAK;;MAGhB,IAAW,QAAK;AACZ,eAAO,KAAK;;MAGhB,IAAW,mBAAgB;AACvB,eAAO,KAAK;;MAGhB,IAAW,gBAAa;AACpB,eAAO,KAAK;;MAGhB,IAAW,iBAAc;AACrB,eAAO,KAAK;;MAGhB,IAAW,iBAAc;AACrB,eAAO,KAAK;;MAGT,MACH,QACA,OACA,KACA,OAAc;AAEd,aAAK,QAAQ,QAAQ,cAAc;AACnC,aAAK,KAAK;AACV,aAAK,OAAO;AACZ,aAAK,OAAO,KAAK;;MAGd,OAAOA,QAAa;AACvB,cAAM,OAAO,KAAK;AAClB,aAAK,KAAKA;AACV,aAAK,OAAO,KAAK,GAAG,KAAK,IAAI,KAAK,MAAMA,MAAK;AAC7C,aAAK,MAAM,KAAK,MAAM,KAAK,IAAI;AAC/B,aAAK,OAAO,KAAK,GAAG,KAAK,IAAI,KAAK,MAAMA,SAAQ,KAAK,GAAG;AACxD,aAAK,MAAM,KAAK,MAAM,KAAK,IAAI;AAC/B,aAAK,OAAO,KAAK,GAAG,KAAK,IAAI,KAAK,MAAMA,SAAQ,KAAK,MAAM,KAAK,GAAG;AACnE,aAAK,MAAM,KAAK,MAAM,KAAK,IAAI;AAC/B,aAAK,OAAO,KAAK,GACb,KAAK,IACL,KAAK,MACLA,SAAQ,KAAK,MAAM,KAAK,MAAM,KAAK,GAAG;;MAIvC,UAAO;AACV,YAAI,KAAK,SAAS,IAAI;AAClB,gBAAM,OAAO,KAAK;AAClB,eAAK,MAAM,KAAK;AAChB,eAAK,OAAO,KAAK;AACjB,eAAK,MAAM,KAAK;AAChB,eAAK,OAAO,KAAK;AACjB,eAAK,MAAM,KAAK,MAAM,KAAK,IAAI;AAC/B,eAAK,OAAO,KAAK;AACjB,eAAK,MAAM,KAAK,MAAM,KAAK,IAAI;AAC/B,eAAK,OAAO,KAAK,GACb,KAAK,IACL,KAAK,MACL,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,GAAG;QAE/C;;MAGE,IAAI,IAAU;AACjB,YAAI,KAAK,SAAS,IAAI;AAClB,eAAK,QAAO;AACZ,iBAAO;QACV;AACD,eAAO;;MAGJ,KAAK,KAAa,KAAW;AAChC,YAAI,KAAK,SAAS,OAAO,KAAK,SAAS,KAAK;AACxC,eAAK,QAAO;AACZ,eAAK,QAAO;AACZ,iBAAO;QACV;AACD,eAAO;;MAGJ,KAAK,KAAa,KAAa,KAAW;AAC7C,YAAI,KAAK,SAAS,OAAO,KAAK,SAAS,OAAO,KAAK,SAAS,KAAK;AAC7D,eAAK,QAAO;AACZ,eAAK,QAAO;AACZ,eAAK,QAAO;AACZ,iBAAO;QACV;AACD,eAAO;;IAEd;ACtIK,QAAO,oBAAP,cAAiC,YAAW;MAG9C,YAAmB,SAAiBA,QAAa;AAC7C,cAAM,OAAO;AACb,aAAK,QAAQA;;IAEpB;AAEK,aAAU,qBACZ,QACA,OACAA,QACA,SAAe;AAEf,UAAI,SAAS;AACb,UAAI,OAAO,SAAS,WAAW;AAC3B,cAAM,UAAU,OAAO,OAAO,MAAM,OAAO,OAAO,OAAO,GAAG;AAC5D,YAAI,SAAS;AACT,mBAAS,KAAK,OAAO;QACxB;MACJ,WAAU,OAAO,SAAS,WAAW;AAClC,cAAM,UAAU,OAAO,OAAO,MAAM,OAAO,OAAO,OAAO,GAAG;AAC5D,cAAM,YAAY,GAAG,MAAM,UAAU,MAAM,EAAE,GACzC,MAAM,cAAc,MAAM,EAC9B;AACA,iBAAS,MAAM,OAAO,IAAI,SAAS;MACtC;AAED,aAAO,IAAI,kBACP,6BAA6B,MAAM,KAAK,OAAO,IAC/CA,MAAK;IAEb;AC2DA,QAAM,mBAAmB,oBAAI,IAAI;MAC7B;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACH,CAAA;AAED,QAAM,iDAAiD,oBAAI,IAAI;MAC3D;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACH,CAAA;AAED,QAAM,6BAA6B,oBAAI,IAAI;MACvC;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACH,CAAA;AAED,QAAM,gCAAgC,oBAAI,IAAI;MAC1C;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACH,CAAA;AAED,QAAM,yBAAyB;MAC3B,QAAQ;MACR,YAAY;MACZ,WAAW;MACX,SAAS;MACT,QAAQ;MACR,QAAQ;MACR,YAAY;MACZ,aAAa;;AAEjB,QAAM,yBACF,OAAO,YACH,OAAO,QAAQ,sBAAsB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAMtE,aAAS,kBAAkB,IAAU;AAEjC,aAAO,iBAAiB,IAAI,EAAE;IAClC;AAEA,aAAS,4CAA4C,IAAU;AAE3D,aAAO,+CAA+C,IAAI,EAAE;IAChE;AAEA,aAAS,0BAA0B,IAAU;AAEzC,aAAO,2BAA2B,IAAI,EAAE;IAC5C;AAEA,aAAS,6BAA6B,IAAU;AAE5C,aAAO,8BAA8B,IAAI,EAAE;IAC/C;AAUA,aAAS,sBAAsB,IAAU;AACrC,aAAO,UAAU,EAAE,KAAK,OAAO,eAAe,OAAO;IACzD;AAWA,aAAS,qBAAqB,IAAU;AACpC,aACI,aAAa,EAAE,KACf,OAAO,eACP,OAAO,yBACP,OAAO;IAEf;AAEA,aAAS,+BAA+B,IAAU;AAC9C,aAAO,cAAc,EAAE,KAAK,OAAO;IACvC;AAEA,aAAS,gCAAgC,IAAU;AAC/C,aAAO,+BAA+B,EAAE,KAAK,eAAe,EAAE;IAClE;AAQA,aAAS,4BAA4B,IAAU;AAC3C,aACI,OAAO,wBACP,OAAO,wBACP,OAAO;IAEf;QAgca,wBAAe;MAkCxB,YAAmB,SAAiC;AA/BnC,aAAA,UAAU,IAAI,OAAM;AAE7B,aAAY,eAAG;AAEf,aAAgB,mBAAG;AAEnB,aAAM,SAAG;AAET,aAAa,gBAAG;AAEhB,aAAA,aAAa;UACjB,KAAK;UACL,KAAK,OAAO;;AAGR,aAAa,gBAAG;AAEhB,aAA4B,+BAAG;AAE/B,aAAmB,sBAAG;AAItB,aAAA,sBAAsB,oBAAI,IAAG;AAE7B,aAAO,UAAwC;AAOnD,aAAK,WAAW,YAAO,QAAP,YAAA,SAAA,UAAW,CAAA;AAC3B,aAAK,mBACD,KAAK,eAAe,OACd,IAAI,wBAAuB,IAC3B,IAAI,wBAAuB;;MASlC,gBACH,QACA,QAAQ,GACR,MAAc,OAAO,QAAM;AAE3B,aAAK,UAAU,EAAE,QAAQ,OAAO,KAAK,MAAM,UAAS;AACpD,aAAK,mBAAmB,KAAK,eAAe,KAAK,SAAS;AAC1D,aAAK,MAAM,QAAQ,OAAO,GAAG;AAE7B,aAAK,eAAe,KAAK;AACzB,YAAI,KAAK,IAAI,OAAO,KAAK,KAAK,cAAa,KAAM,KAAK,IAAI,OAAO,GAAG;AAChE,gBAAM,YAAY,KAAK;AACvB,gBAAM,UAAU,OAAO,SAAS,KAAK,SAAS;AAC9C,gBAAM,cAAc,OAAO,SAAS,KAAK,SAAS;AAClD,eAAK,sBAAsB,QAAQ,WAAW,GAAG;AACjD,eAAK,wBAAwB,QAAQ,QAAQ,GAAG,YAAY,GAAG;YAC3D;YACA;UACH,CAAA;QACJ,WAAU,SAAS,KAAK;AACrB,eAAK,MAAM,OAAO;QACrB,OAAM;AACH,gBAAM,IAAI,OAAO,cAAc,KAAK,gBAAgB;AACpD,eAAK,MAAM,yBAAyB,CAAC,GAAG;QAC3C;AACD,aAAK,eAAe,OAAO,GAAG;;MAS3B,cACH,QACA,QAAQ,GACR,MAAc,OAAO,QAAM;AAE3B,aAAK,UAAU,EAAE,QAAQ,OAAO,KAAK,MAAM,QAAO;AAClD,aAAK,sBAAsB,QAAQ,OAAO,GAAG;;MAiC1C,gBACH,QACA,QAAQ,GACR,MAAc,OAAO,QACrB,eAMkB,QAAS;AAE3B,aAAK,UAAU,EAAE,QAAQ,OAAO,KAAK,MAAM,UAAS;AACpD,aAAK,wBAAwB,QAAQ,OAAO,KAAK,YAAY;;MAGzD,wBACJ,QACA,QAAQ,GACR,MAAc,OAAO,QACrB,eAMkB,QAAS;AAE3B,cAAM,OAAO,KAAK,wBAAwB,cAAc,GAAG;AAE3D,aAAK,eAAe,KAAK;AACzB,aAAK,SAAS,KAAK;AACnB,aAAK,mBAAmB,KAAK;AAC7B,aAAK,MAAM,QAAQ,OAAO,GAAG;AAC7B,aAAK,eAAc;AAEnB,YACI,CAAC,KAAK,UACN,KAAK,eAAe,QACpB,CAAC,KAAK,iBAAiB,QAAO,GAChC;AACE,eAAK,SAAS;AACd,eAAK,OAAO,KAAK;AACjB,eAAK,eAAc;QACtB;;MAGG,sBACJ,QACA,OACA,KAAW;AAEX,cAAM,QAAQ,KAAK,WAAW,QAAQ,OAAO,GAAG;AAChD,aAAK,cAAc,OAAO,KAAK,KAAK;;MAGhC,wBACJ,cAOA,WAAiB;AAMjB,YAAI,UAAU;AACd,YAAI,cAAc;AAClB,YAAI,gBAAgB,KAAK,eAAe,MAAM;AAC1C,cAAI,OAAO,iBAAiB,UAAU;AAClC,sBAAU,QAAQ,aAAa,OAAO;AACtC,gBAAI,KAAK,eAAe,MAAM;AAC1B,4BAAc,QAAQ,aAAa,WAAW;YACjD;UACJ,OAAM;AAEH,sBAAU;UACb;QACJ;AAED,YAAI,WAAW,aAAa;AAGxB,eAAK,MAAM,oCAAoC;YAC3C,OAAO,YAAY;YACnB;YACA;UACH,CAAA;QACJ;AAED,cAAM,cAAc,WAAW;AAC/B,cAAM,QACD,WAAW,KAAK,eAAe,QAChC,eAGA,QAAQ,KAAK,SAAS,UAAU,KAAK,eAAe,IAAI;AAC5D,cAAM,kBAAkB;AAExB,eAAO,EAAE,aAAa,OAAO,gBAAe;;MAIhD,IAAY,SAAM;AACd,eAAO,QAAQ,KAAK,SAAS,MAAM,KAAK,KAAK;;MAGjD,IAAY,cAAW;;AACnB,gBAAO,KAAA,KAAK,SAAS,iBAAW,QAAA,OAAA,SAAA,KAAI;;MAGhC,eAAe,OAAa;AAChC,YAAI,KAAK,SAAS,gBAAgB;AAC9B,eAAK,SAAS,eAAe,KAAK;QACrC;;MAGG,eAAe,OAAe,KAAW;AAC7C,YAAI,KAAK,SAAS,gBAAgB;AAC9B,eAAK,SAAS,eAAe,OAAO,GAAG;QAC1C;;MAGG,cACJ,OACA,KACA,OASC;AAED,YAAI,KAAK,SAAS,eAAe;AAC7B,eAAK,SAAS,cAAc,OAAO,KAAK,KAAK;QAChD;AAED,YAAI,KAAK,SAAS,SAAS;AACvB,eAAK,SAAS,QACV,OACA,KACA,MAAM,QACN,MAAM,YACN,MAAM,WACN,MAAM,SACN,MAAM,QACN,MAAM,QACN,MAAM,UAAU;QAEvB;;MAGG,eAAe,OAAa;AAChC,YAAI,KAAK,SAAS,gBAAgB;AAC9B,eAAK,SAAS,eAAe,KAAK;QACrC;;MAGG,eAAe,OAAe,KAAW;AAC7C,YAAI,KAAK,SAAS,gBAAgB;AAC9B,eAAK,SAAS,eAAe,OAAO,GAAG;QAC1C;;MAGG,mBAAmB,OAAa;AACpC,YAAI,KAAK,SAAS,oBAAoB;AAClC,eAAK,SAAS,mBAAmB,KAAK;QACzC;;MAGG,mBAAmB,OAAe,KAAW;AACjD,YAAI,KAAK,SAAS,oBAAoB;AAClC,eAAK,SAAS,mBAAmB,OAAO,GAAG;QAC9C;;MAGG,mBAAmB,OAAeA,QAAa;AACnD,YAAI,KAAK,SAAS,oBAAoB;AAClC,eAAK,SAAS,mBAAmB,OAAOA,MAAK;QAChD;;MAGG,mBACJ,OACA,KACAA,QAAa;AAEb,YAAI,KAAK,SAAS,oBAAoB;AAClC,eAAK,SAAS,mBAAmB,OAAO,KAAKA,MAAK;QACrD;;MAGG,aAAa,OAAa;AAC9B,YAAI,KAAK,SAAS,cAAc;AAC5B,eAAK,SAAS,aAAa,KAAK;QACnC;;MAGG,aAAa,OAAe,KAAW;AAC3C,YAAI,KAAK,SAAS,cAAc;AAC5B,eAAK,SAAS,aAAa,OAAO,GAAG;QACxC;;MAGG,iBAAiB,OAAa;AAClC,YAAI,KAAK,SAAS,kBAAkB;AAChC,eAAK,SAAS,iBAAiB,KAAK;QACvC;;MAGG,iBAAiB,OAAe,KAAW;AAC/C,YAAI,KAAK,SAAS,kBAAkB;AAChC,eAAK,SAAS,iBAAiB,OAAO,GAAG;QAC5C;;MAGG,eACJ,OACA,KACA,OAAmE;AAEnE,YAAI,KAAK,SAAS,gBAAgB;AAC9B,eAAK,SAAS,eAAe,OAAO,KAAK,KAAK;QACjD;;MAGG,kBACJ,OACA,KACA,OAAmE;AAEnE,YAAI,KAAK,SAAS,mBAAmB;AACjC,eAAK,SAAS,kBAAkB,OAAO,KAAK,KAAK;QACpD;;MAGG,sBAAsB,OAAe,MAAmB;AAC5D,YAAI,KAAK,SAAS,uBAAuB;AACrC,eAAK,SAAS,sBAAsB,OAAO,IAAI;QAClD;;MAGG,sBACJ,OACA,KACA,MAAmB;AAEnB,YAAI,KAAK,SAAS,uBAAuB;AACrC,eAAK,SAAS,sBAAsB,OAAO,KAAK,IAAI;QACvD;;MAGG,aACJ,OACA,KACAP,MACAC,MACA,QAAe;AAEf,YAAI,KAAK,SAAS,cAAc;AAC5B,eAAK,SAAS,aAAa,OAAO,KAAKD,MAAKC,MAAK,MAAM;QAC1D;;MAGG,2BACJ,OACA,MACA,QAAe;AAEf,YAAI,KAAK,SAAS,4BAA4B;AAC1C,eAAK,SAAS,2BAA2B,OAAO,MAAM,MAAM;QAC/D;;MAGG,2BACJ,OACA,KACA,MACA,QAAe;AAEf,YAAI,KAAK,SAAS,4BAA4B;AAC1C,eAAK,SAAS,2BAA2B,OAAO,KAAK,MAAM,MAAM;QACpE;;MAGG,gBACJ,OACA,KACA,MAAqB;AAErB,YAAI,KAAK,SAAS,iBAAiB;AAC/B,eAAK,SAAS,gBAAgB,OAAO,KAAK,IAAI;QACjD;;MAGG,wBACJ,OACA,KACA,MACA,QAAe;AAEf,YAAI,KAAK,SAAS,yBAAyB;AACvC,eAAK,SAAS,wBAAwB,OAAO,KAAK,MAAM,MAAM;QACjE;;MAGG,kBAAkB,OAAe,KAAa,MAAW;AAC7D,YAAI,KAAK,SAAS,mBAAmB;AACjC,eAAK,SAAS,kBAAkB,OAAO,KAAK,IAAI;QACnD;;MAGG,qBACJ,OACA,KACA,MACA,QAAe;AAEf,YAAI,KAAK,SAAS,sBAAsB;AACpC,eAAK,SAAS,qBAAqB,OAAO,KAAK,MAAM,MAAM;QAC9D;;MAGG,8BACJ,OACA,KACA,MACA,KACAE,QACA,QACA,SAAgB;AAEhB,YAAI,KAAK,SAAS,+BAA+B;AAC7C,eAAK,SAAS,8BACV,OACA,KACA,MACA,KACAA,QACA,QACA,OAAO;QAEd;;MAGG,YAAY,OAAe,KAAaA,QAAa;AACzD,YAAI,KAAK,SAAS,aAAa;AAC3B,eAAK,SAAS,YAAY,OAAO,KAAKA,MAAK;QAC9C;;MAGG,gBACJ,OACA,KACA,KAAoB;AAEpB,YAAI,KAAK,SAAS,iBAAiB;AAC/B,eAAK,SAAS,gBAAgB,OAAO,KAAK,GAAG;QAChD;;MAGG,sBACJ,OACA,QACA,aAAoB;AAEpB,YAAI,KAAK,SAAS,uBAAuB;AACrC,eAAK,SAAS,sBAAsB,OAAO,QAAQ,WAAW;QACjE;;MAGG,sBACJ,OACA,KACA,QAAe;AAEf,YAAI,KAAK,SAAS,uBAAuB;AACrC,eAAK,SAAS,sBAAsB,OAAO,KAAK,MAAM;QACzD;;MAGG,sBACJ,OACA,KACAH,MACAC,MAAW;AAEX,YAAI,KAAK,SAAS,uBAAuB;AACrC,eAAK,SAAS,sBAAsB,OAAO,KAAKD,MAAKC,IAAG;QAC3D;;MAGG,oBAAoB,OAAe,KAAW;AAClD,YAAI,KAAK,SAAS,qBAAqB;AACnC,eAAK,SAAS,oBAAoB,OAAO,GAAG;QAC/C;;MAGG,mBAAmB,OAAe,KAAW;AACjD,YAAI,KAAK,SAAS,oBAAoB;AAClC,eAAK,SAAS,mBAAmB,OAAO,GAAG;QAC9C;;MAGG,8BAA8B,OAAa;AAC/C,YAAI,KAAK,SAAS,+BAA+B;AAC7C,eAAK,SAAS,8BAA8B,KAAK;QACpD;;MAGG,8BAA8B,OAAe,KAAW;AAC5D,YAAI,KAAK,SAAS,+BAA+B;AAC7C,eAAK,SAAS,8BAA8B,OAAO,GAAG;QACzD;;MAGG,yBAAyB,OAAeM,QAAa;AACzD,YAAI,KAAK,SAAS,0BAA0B;AACxC,eAAK,SAAS,yBAAyB,OAAOA,MAAK;QACtD;;MAGG,yBACJ,OACA,KACAA,QAAa;AAEb,YAAI,KAAK,SAAS,0BAA0B;AACxC,eAAK,SAAS,yBAAyB,OAAO,KAAKA,MAAK;QAC3D;;MAOL,IAAY,QAAK;AACb,eAAO,KAAK,QAAQ;;MAGxB,IAAY,mBAAgB;AACxB,eAAO,KAAK,QAAQ;;MAGxB,IAAY,gBAAa;AACrB,eAAO,KAAK,QAAQ;;MAGxB,IAAY,iBAAc;AACtB,eAAO,KAAK,QAAQ;;MAGxB,IAAY,iBAAc;AACtB,eAAO,KAAK,QAAQ;;MAGhB,MAAM,QAAgB,OAAe,KAAW;AACpD,aAAK,QAAQ,MAAM,QAAQ,OAAO,KAAK,KAAK,YAAY;;MAGpD,OAAOA,QAAa;AACxB,aAAK,QAAQ,OAAOA,MAAK;;MAGrB,UAAO;AACX,aAAK,QAAQ,QAAO;;MAGhB,IAAI,IAAU;AAClB,eAAO,KAAK,QAAQ,IAAI,EAAE;;MAGtB,KAAK,KAAa,KAAW;AACjC,eAAO,KAAK,QAAQ,KAAK,KAAK,GAAG;;MAG7B,KAAK,KAAa,KAAa,KAAW;AAC9C,eAAO,KAAK,QAAQ,KAAK,KAAK,KAAK,GAAG;;MAKlC,MACJ,SACA,SAAsE;;AAEtE,cAAM,qBACF,KAAK,SACL;UACI,UACI,KAAA,YAAO,QAAP,YAAO,SAAA,SAAP,QAAS,aAAO,QAAA,OAAA,SAAA,KACf,KAAK,gBAAgB,CAAC,KAAK;UAChC,cAAa,KAAA,YAAO,QAAP,YAAO,SAAA,SAAP,QAAS,iBAAW,QAAA,OAAA,SAAA,KAAI,KAAK;QAC7C,IACD,KAAA,YAAA,QAAA,YAAO,SAAA,SAAP,QAAS,WAAK,QAAA,OAAA,SAAA,KAAI,KAAK,OACvB,OAAO;;MAKP,gBAAa;AACjB,cAAM,QAAQ,KAAK;AACnB,YAAI,UAAU;AACd,YAAI,UAAU;AAEd,mBAAS;AACL,gBAAM,KAAK,KAAK;AAChB,cAAI,OAAO,MAAM,iBAAiB,EAAE,GAAG;AACnC,kBAAM,OAAO,UAAU,oBAAoB;AAC3C,iBAAK,MAAM,gBAAgB,IAAI,EAAE;UACpC;AACD,cAAI,SAAS;AACT,sBAAU;UACb,WAAU,OAAO,iBAAiB;AAC/B,sBAAU;UACb,WAAU,OAAO,qBAAqB;AACnC,sBAAU;UACb,WAAU,OAAO,sBAAsB;AACpC,sBAAU;UACb,WACI,OAAO,WAAW,CAAC,WACnB,OAAO,YAAY,KAAK,UAAU,OACrC;AACE;UACH;AACD,eAAK,QAAO;QACf;AAED,eAAO,KAAK,UAAU;;MAUlB,iBAAc;AAClB,cAAM,QAAQ,KAAK;AACnB,aAAK,sBAAsB,KAAK,qBAAoB;AACpD,aAAK,iBAAiB,MAAK;AAC3B,aAAK,oBAAoB,MAAK;AAE9B,aAAK,eAAe,KAAK;AACzB,aAAK,mBAAkB;AAEvB,cAAM,KAAK,KAAK;AAChB,YAAI,KAAK,qBAAqB,IAAI;AAC9B,cAAI,OAAO,mBAAmB;AAC1B,iBAAK,MAAM,eAAe;UAC7B;AACD,cAAI,OAAO,iBAAiB;AACxB,iBAAK,MAAM,sBAAsB;UACpC;AACD,cAAI,OAAO,wBAAwB,OAAO,qBAAqB;AAC3D,iBAAK,MAAM,0BAA0B;UACxC;AACD,gBAAM,IAAI,OAAO,cAAc,EAAE;AACjC,eAAK,MAAM,yBAAyB,CAAC,GAAG;QAC3C;AACD,mBAAW,QAAQ,KAAK,qBAAqB;AACzC,cAAI,CAAC,KAAK,iBAAiB,aAAa,IAAI,GAAG;AAC3C,iBAAK,MAAM,kCAAkC;UAChD;QACJ;AACD,aAAK,eAAe,OAAO,KAAK,KAAK;;MAOjC,uBAAoB;AACxB,cAAM,QAAQ,KAAK;AACnB,YAAI,UAAU;AACd,YAAI,UAAU;AACd,YAAIC,SAAQ;AACZ,YAAI,KAAK;AAET,gBAAQ,KAAK,KAAK,sBAAsB,IAAI;AACxC,cAAI,SAAS;AACT,sBAAU;UACb,WAAU,OAAO,iBAAiB;AAC/B,sBAAU;UACb,WAAU,OAAO,qBAAqB;AACnC,sBAAU;UACb,WAAU,OAAO,sBAAsB;AACpC,sBAAU;UACb,WACG,OAAO,oBACP,CAAC,YACA,KAAK,kBAAkB,iBACnB,KAAK,mBAAmB,kBACrB,KAAK,mBAAmB,eACxB,KAAK,mBAAmB,mBAClC;AACE,YAAAA,UAAS;UACZ;AACD,eAAK,QAAO;QACf;AAED,aAAK,OAAO,KAAK;AACjB,eAAOA;;MAWH,qBAAkB;AACtB,cAAM,QAAQ,KAAK;AACnB,YAAI,IAAI;AAER,aAAK,iBAAiB,iBAAgB;AACtC,aAAK,mBAAmB,KAAK;AAC7B,WAAG;AACC,eAAK,mBAAmB,GAAG;QAC9B,SAAQ,KAAK,IAAI,aAAa;AAE/B,YAAI,KAAK,kBAAkB,IAAI,GAAG;AAC9B,eAAK,MAAM,mBAAmB;QACjC;AACD,YAAI,KAAK,IAAI,kBAAkB,GAAG;AAC9B,eAAK,MAAM,0BAA0B;QACxC;AACD,aAAK,mBAAmB,OAAO,KAAK,KAAK;AACzC,aAAK,iBAAiB,iBAAgB;;MAWlC,mBAAmB,GAAS;AAChC,cAAM,QAAQ,KAAK;AAEnB,aAAK,iBAAiB,iBAAiB,CAAC;AACxC,aAAK,mBAAmB,OAAO,CAAC;AAChC,eAAO,KAAK,qBAAqB,MAAM,KAAK,YAAW,GAAI;QAE1D;AACD,aAAK,mBAAmB,OAAO,KAAK,OAAO,CAAC;;MAoBxC,cAAW;AACf,YAAI,KAAK,gBAAgB,KAAK,QAAQ;AAClC,iBACI,KAAK,iBAAgB,KACpB,KAAK,YAAW,KAAM,KAAK,0BAAyB;QAE5D;AACD,eACK,KAAK,iBAAgB,MACjB,CAAC,KAAK,gCACH,KAAK,0BAAyB,MACrC,KAAK,oBAAmB,KAAM,KAAK,0BAAyB;;MAI7D,4BAAyB;AAC7B,aAAK,kBAAiB;AACtB,eAAO;;MA0BH,mBAAgB;AACpB,cAAM,QAAQ,KAAK;AACnB,aAAK,+BAA+B;AAGpC,YAAI,KAAK,IAAI,iBAAiB,GAAG;AAC7B,eAAK,gBAAgB,OAAO,KAAK,OAAO,OAAO;AAC/C,iBAAO;QACV;AACD,YAAI,KAAK,IAAI,WAAW,GAAG;AACvB,eAAK,gBAAgB,OAAO,KAAK,OAAO,KAAK;AAC7C,iBAAO;QACV;AACD,YAAI,KAAK,KAAK,iBAAiB,sBAAsB,GAAG;AACpD,eAAK,wBAAwB,OAAO,KAAK,OAAO,QAAQ,IAAI;AAC5D,iBAAO;QACV;AACD,YAAI,KAAK,KAAK,iBAAiB,oBAAoB,GAAG;AAClD,eAAK,wBAAwB,OAAO,KAAK,OAAO,QAAQ,KAAK;AAC7D,iBAAO;QACV;AAGD,YAAI,KAAK,KAAK,kBAAkB,aAAa,GAAG;AAC5C,gBAAM,aACF,KAAK,eAAe,QAAQ,KAAK,IAAI,cAAc;AACvD,cAAI,SAAS;AACb,cACI,KAAK,IAAI,WAAW,MACnB,SAAS,KAAK,IAAI,gBAAgB,IACrC;AACE,kBAAM,OAAO,aAAa,eAAe;AACzC,iBAAK,2BAA2B,OAAO,MAAM,MAAM;AACnD,iBAAK,mBAAkB;AACvB,gBAAI,CAAC,KAAK,IAAI,iBAAiB,GAAG;AAC9B,mBAAK,MAAM,oBAAoB;YAClC;AACD,iBAAK,+BAA+B,CAAC,cAAc,CAAC,KAAK;AACzD,iBAAK,2BAA2B,OAAO,KAAK,OAAO,MAAM,MAAM;AAC/D,mBAAO;UACV;AACD,eAAK,OAAO,KAAK;QACpB;AAED,eAAO;;MAoBH,kBAAkB,YAAY,OAAK;AACvC,cAAM,QAAQ,KAAK;AACnB,YAAIR,OAAM;AACV,YAAIC,OAAM;AACV,YAAI,SAAS;AAGb,YAAI,KAAK,IAAI,QAAQ,GAAG;AACpB,UAAAD,OAAM;AACN,UAAAC,OAAM,OAAO;QAChB,WAAU,KAAK,IAAI,SAAS,GAAG;AAC5B,UAAAD,OAAM;AACN,UAAAC,OAAM,OAAO;QAChB,WAAU,KAAK,IAAI,aAAa,GAAG;AAChC,UAAAD,OAAM;AACN,UAAAC,OAAM;QACT,WAAU,KAAK,oBAAoB,SAAS,GAAG;AAC3C,WAAC,EAAE,KAAAD,MAAK,KAAAC,KAAG,IAAK,KAAK;QACzB,OAAM;AACH,iBAAO;QACV;AAGD,iBAAS,CAAC,KAAK,IAAI,aAAa;AAEhC,YAAI,CAAC,WAAW;AACZ,eAAK,aAAa,OAAO,KAAK,OAAOD,MAAKC,MAAK,MAAM;QACxD;AACD,eAAO;;MAcH,oBAAoB,SAAgB;AACxC,cAAM,QAAQ,KAAK;AACnB,YAAI,KAAK,IAAI,kBAAkB,GAAG;AAC9B,cAAI,KAAK,iBAAgB,GAAI;AACzB,kBAAMD,OAAM,KAAK;AACjB,gBAAIC,OAAMD;AACV,gBAAI,KAAK,IAAI,KAAK,GAAG;AACjB,cAAAC,OAAM,KAAK,iBAAgB,IACrB,KAAK,gBACL,OAAO;YAChB;AACD,gBAAI,KAAK,IAAI,mBAAmB,GAAG;AAC/B,kBAAI,CAAC,WAAWA,OAAMD,MAAK;AACvB,qBAAK,MAAM,uCAAuC;cACrD;AACD,mBAAK,aAAa,EAAE,KAAAA,MAAK,KAAAC,KAAG;AAC5B,qBAAO;YACV;UACJ;AACD,cAAI,CAAC,YAAY,KAAK,gBAAgB,KAAK,SAAS;AAChD,iBAAK,MAAM,uBAAuB;UACrC;AACD,eAAK,OAAO,KAAK;QACpB;AACD,eAAO;;MAiBH,cAAW;AACf,eACI,KAAK,wBAAuB,KAC5B,KAAK,WAAU,KACf,KAAK,gCAA+B,KACpC,QAAQ,KAAK,sBAAqB,CAAE,KACpC,KAAK,sBAAqB,KAC1B,KAAK,wBAAuB;;MAW5B,aAAU;AACd,YAAI,KAAK,IAAI,SAAS,GAAG;AACrB,eAAK,kBAAkB,KAAK,QAAQ,GAAG,KAAK,OAAO,KAAK;AACxD,iBAAO;QACV;AACD,eAAO;;MAUH,kCAA+B;AACnC,cAAM,QAAQ,KAAK;AACnB,YAAI,KAAK,IAAI,eAAe,GAAG;AAC3B,cAAI,KAAK,kBAAiB,GAAI;AAC1B,mBAAO;UACV;AACD,eAAK,OAAO,KAAK;QACpB;AACD,eAAO;;MAcH,0BAAuB;AAC3B,cAAM,QAAQ,KAAK;AACnB,YAAI,KAAK,KAAK,kBAAkB,aAAa,GAAG;AAC5C,eAAK,aAAa,KAAK;AACvB,cAAI,KAAK,eAAe,MAAM;AAC1B,iBAAK,iBAAgB;UACxB;AAED,cAAI,CAAC,KAAK,IAAI,KAAK,GAAG;AAClB,iBAAK,OAAO,QAAQ,CAAC;AACrB,iBAAK,MAAM,eAAe;UAC7B;AACD,eAAK,mBAAkB;AACvB,cAAI,CAAC,KAAK,IAAI,iBAAiB,GAAG;AAC9B,iBAAK,MAAM,oBAAoB;UAClC;AACD,eAAK,aAAa,OAAO,KAAK,KAAK;AACnC,iBAAO;QACV;AACD,eAAO;;MAUH,mBAAgB;AACpB,cAAM,QAAQ,KAAK;AACnB,cAAM,kBAAkB,KAAK,aAAY;AACzC,cAAM,kBAAkB,KAAK;AAC7B,cAAM,YAAY,KAAK,IAAI,YAAY;AACvC,YAAI,CAAC,mBAAmB,CAAC,WAAW;AAChC,iBAAO;QACV;AACD,aAAK,iBAAiB,KAAK;AAC3B,cAAM,eAAe,KAAK,eAAe,OAAO,eAAe;AAC/D,aAAK,eAAe,OAAO,iBAAiB,YAAY;AAExD,YAAI,WAAW;AACX,gBAAM,iBAAiB,KAAK;AAC5B,cACI,CAAC,KAAK,aAAY,KAClB,CAAC,mBACD,KAAK,qBAAqB,OAC5B;AACE,iBAAK,MAAM,qBAAqB;UACnC;AACD,gBAAM,YAAY,KAAK,eAAe,gBAAgB,KAAK,KAAK;AAChE,qBAAW,CAAC,QAAQ,KAAK,OAAO,QAAQ,SAAS,EAAE,OAC/C,CAAC,CAAA,EAAG,MAAM,MAAM,MAAM,GACgB;AACtC,gBAAI,aAAa,QAAQ,GAAG;AACxB,mBAAK,MACD,oBAAoB,OAAO,cACvB,uBAAuB,QAAQ,CAAC,CACnC,GAAG;YAEX;UACJ;AACD,eAAK,kBAAkB,gBAAgB,KAAK,OAAO,SAAS;QAC/D;AAED,aAAK,iBAAiB,OAAO,KAAK,KAAK;AACvC,eAAO;;MAUH,wBAAqB;AACzB,cAAM,QAAQ,KAAK;AACnB,YAAI,KAAK,IAAI,gBAAgB,GAAG;AAC5B,cAAI,OAAsB;AAC1B,cAAI,KAAK,eAAe,MAAM;AAC1B,gBAAI,KAAK,sBAAqB,GAAI;AAC9B,qBAAO,KAAK;YACf,WAAU,KAAK,qBAAqB,eAAe;AAEhD,mBAAK,OAAO,KAAK;AACjB,qBAAO;YACV;UACJ,WAAU,KAAK,qBAAqB,eAAe;AAEhD,iBAAK,OAAO,KAAK;AACjB,mBAAO;UACV;AAED,eAAK,sBAAsB,OAAO,IAAI;AACtC,eAAK,mBAAkB;AACvB,cAAI,CAAC,KAAK,IAAI,iBAAiB,GAAG;AAC9B,iBAAK,MAAM,oBAAoB;UAClC;AACD,eAAK,sBAAsB,OAAO,KAAK,OAAO,IAAI;AAElD,iBAAO;QACV;AACD,eAAO;;MAoBH,sBAAmB;AACvB,eACI,KAAK,WAAU,KACf,KAAK,gCAA+B,KACpC,KAAK,iCAAgC,KACrC,QAAQ,KAAK,sBAAqB,CAAE,KACpC,KAAK,sBAAqB,KAC1B,KAAK,wBAAuB,KAC5B,KAAK,+BAA8B,KACnC,KAAK,gCAA+B;;MAWpC,mCAAgC;AACpC,cAAM,QAAQ,KAAK;AACnB,YACI,KAAK,qBAAqB,mBAC1B,KAAK,kBAAkB,sBACzB;AACE,eAAK,gBAAgB,KAAK;AAC1B,eAAK,QAAO;AACZ,eAAK,YAAY,OAAO,KAAK,OAAO,eAAe;AACnD,iBAAO;QACV;AACD,eAAO;;MAcH,iCAA8B;AAClC,YAAI,KAAK,oBAAmC,IAAI,GAAG;AAC/C,eAAK,MAAM,mBAAmB;QACjC;AACD,eAAO;;MAYH,0BAAuB;AAC3B,cAAM,QAAQ,KAAK;AACnB,cAAM,KAAK,KAAK;AAChB,YAAI,OAAO,MAAM,CAAC,kBAAkB,EAAE,GAAG;AACrC,eAAK,QAAO;AACZ,eAAK,YAAY,OAAO,KAAK,OAAO,EAAE;AACtC,iBAAO;QACV;AACD,eAAO;;MAYH,kCAA+B;AACnC,cAAM,QAAQ,KAAK;AACnB,cAAM,KAAK,KAAK;AAChB,YACI,OAAO,MACP,OAAO,qBACP,OAAO,eACP,OAAO,mBACP,OAAO,aACP,OAAO,YACP,OAAO,aACP,OAAO,iBACP,OAAO,oBACP,OAAO,qBACP,OAAO,uBACP,OAAO,eACT;AACE,eAAK,QAAO;AACZ,eAAK,YAAY,OAAO,KAAK,OAAO,EAAE;AACtC,iBAAO;QACV;AACD,eAAO;;MAaH,wBAAqB;AACzB,cAAM,QAAQ,KAAK;AACnB,YAAI,KAAK,IAAI,aAAa,GAAG;AACzB,cAAI,KAAK,aAAY,GAAI;AACrB,gBAAI,CAAC,KAAK,iBAAiB,WAAW,KAAK,aAAa,GAAG;AACvD,mBAAK,iBAAiB,WAAW,KAAK,aAAa;AACnD,qBAAO;YACV;AACD,iBAAK,MAAM,8BAA8B;UAC5C;AAED,eAAK,OAAO,KAAK;QACpB;AACD,eAAO;;MAkBH,oBAAiB;AACrB,YACI,KAAK,qBAAoB,KACzB,KAAK,4BAA2B,KAChC,KAAK,uBAAsB,KAC1B,KAAK,UAAU,KAAK,kBAAiB,GACxC;AACE,iBAAO;QACV;AACD,YAAI,KAAK,UAAU,KAAK,cAAc;AAClC,eAAK,MAAM,gBAAgB;QAC9B;AACD,eAAO;;MAYH,uBAAoB;AACxB,cAAM,QAAQ,KAAK;AACnB,YAAI,KAAK,iBAAgB,GAAI;AACzB,gBAAM,IAAI,KAAK;AACf,cAAI,KAAK,KAAK,qBAAqB;AAC/B,iBAAK,gBAAgB,QAAQ,GAAG,KAAK,OAAO,CAAC;AAC7C,mBAAO;UACV;AACD,cAAI,KAAK,UAAU,KAAK,cAAc;AAClC,iBAAK,MAAM,gBAAgB;UAC9B;AACD,eAAK,OAAO,KAAK;QACpB;AACD,eAAO;;MAsBH,8BAA2B;;AAC/B,cAAM,QAAQ,KAAK;AAEnB,YAAI,KAAK,IAAI,oBAAoB,GAAG;AAChC,eAAK,gBAAgB;AACrB,eAAK,qBAAqB,QAAQ,GAAG,KAAK,OAAO,SAAS,KAAK;AAM/D,iBAAO,CAAA;QACV;AACD,YAAI,KAAK,IAAI,sBAAsB,GAAG;AAClC,eAAK,gBAAgB;AACrB,eAAK,qBAAqB,QAAQ,GAAG,KAAK,OAAO,SAAS,IAAI;AAM9D,iBAAO,CAAA;QACV;AACD,YAAI,KAAK,IAAI,oBAAoB,GAAG;AAChC,eAAK,gBAAgB;AACrB,eAAK,qBAAqB,QAAQ,GAAG,KAAK,OAAO,SAAS,KAAK;AAM/D,iBAAO,CAAA;QACV;AACD,YAAI,KAAK,IAAI,sBAAsB,GAAG;AAClC,eAAK,gBAAgB;AACrB,eAAK,qBAAqB,QAAQ,GAAG,KAAK,OAAO,SAAS,IAAI;AAM9D,iBAAO,CAAA;QACV;AACD,YAAI,KAAK,IAAI,oBAAoB,GAAG;AAChC,eAAK,gBAAgB;AACrB,eAAK,qBAAqB,QAAQ,GAAG,KAAK,OAAO,QAAQ,KAAK;AAM9D,iBAAO,CAAA;QACV;AACD,YAAI,KAAK,IAAI,sBAAsB,GAAG;AAClC,eAAK,gBAAgB;AACrB,eAAK,qBAAqB,QAAQ,GAAG,KAAK,OAAO,QAAQ,IAAI;AAM7D,iBAAO,CAAA;QACV;AAED,YAAI,SAAS;AACb,YACI,KAAK,gBACL,KAAK,eAAe,SACnB,KAAK,IAAI,oBAAoB,MACzB,SAAS,KAAK,IAAI,sBAAsB,KAC/C;AACE,eAAK,gBAAgB;AACrB,cAAI,SACA;AACJ,cACI,KAAK,IAAI,kBAAkB,MAC1B,SAAS,KAAK,kCAAiC,MAChD,KAAK,IAAI,mBAAmB,GAC9B;AACE,gBAAI,UAAU,OAAO,SAAS;AAC1B,mBAAK,MAAM,uBAAuB;YACrC;AAED,iBAAK,8BACD,QAAQ,GACR,KAAK,OACL,YACA,OAAO,KACP,OAAO,OACP,SACA,KAAA,OAAO,aAAW,QAAA,OAAA,SAAA,KAAA,KAAK;AAgB3B,mBAAO,EAAE,mBAAmB,OAAO,QAAO;UAC7C;AACD,eAAK,MAAM,uBAAuB;QACrC;AAED,eAAO;;MAkBH,yBAAsB;AAC1B,cAAM,QAAQ,KAAK;AACnB,YACI,KAAK,iBAAgB,KACrB,KAAK,kBAAiB,KACtB,KAAK,QAAO,KACZ,KAAK,qBAAoB,KACzB,KAAK,+BAA8B,KAClC,CAAC,KAAK,UACH,CAAC,KAAK,gBACN,KAAK,6BAA4B,KACrC,KAAK,kBAAiB,GACxB;AACE,eAAK,YAAY,QAAQ,GAAG,KAAK,OAAO,KAAK,aAAa;AAC1D,iBAAO;QACV;AACD,eAAO;;MAUH,oBAAiB;AACrB,cAAM,QAAQ,KAAK;AACnB,YAAI,KAAK,IAAI,oBAAoB,GAAG;AAChC,cAAI,KAAK,aAAY,GAAI;AACrB,kBAAM,YAAY,KAAK;AACvB,iBAAK,oBAAoB,IAAI,SAAS;AACtC,iBAAK,gBAAgB,QAAQ,GAAG,KAAK,OAAO,SAAS;AACrD,mBAAO;UACV;AACD,eAAK,MAAM,yBAAyB;QACvC;AACD,eAAO;;MAaH,wBAAqB;AACzB,cAAM,QAAQ,KAAK;AACnB,YAAI,KAAK,IAAI,mBAAmB,GAAG;AAC/B,gBAAM,SAAS,KAAK,IAAI,iBAAiB;AACzC,eAAK,sBAAsB,OAAO,QAAQ,KAAK,gBAAgB;AAC/D,gBAAM,SAAS,KAAK,qBAAoB;AACxC,cAAI,CAAC,KAAK,IAAI,oBAAoB,GAAG;AACjC,gBAAI,KAAK,qBAAqB,IAAI;AAC9B,mBAAK,MAAM,8BAA8B;YAC5C;AACD,iBAAK,MAAM,sCAAsC;UACpD;AACD,cAAI,UAAU,OAAO,mBAAmB;AACpC,iBAAK,MAAM,6CAA6C;UAC3D;AAED,eAAK,sBAAsB,OAAO,KAAK,OAAO,MAAM;AAQpD,iBAAO;QACV;AACD,eAAO;;MAoBH,uBAAoB;AACxB,YAAI,KAAK,kBAAkB;AACvB,cAAI,KAAK,qBAAqB,sBAAsB;AAOhD,mBAAO,CAAA;UACV;AACD,gBAAM,SAAS,KAAK,0BAAyB;AAK7C,iBAAO;QACV;AACD,cAAM,SAAS,KAAK,UAAU,KAAK;AACnC,mBAAS;AAEL,gBAAM,aAAa,KAAK;AACxB,cAAI,CAAC,KAAK,iBAAgB,GAAI;AAC1B;UACH;AACD,gBAAMD,OAAM,KAAK;AAGjB,cAAI,CAAC,KAAK,IAAI,YAAY,GAAG;AACzB;UACH;AACD,eAAK,YAAY,KAAK,QAAQ,GAAG,KAAK,OAAO,YAAY;AAGzD,cAAI,CAAC,KAAK,iBAAgB,GAAI;AAC1B;UACH;AACD,gBAAMC,OAAM,KAAK;AAGjB,cAAID,SAAQ,MAAMC,SAAQ,IAAI;AAC1B,gBAAI,QAAQ;AACR,mBAAK,MAAM,yBAAyB;YACvC;AACD;UACH;AACD,cAAID,OAAMC,MAAK;AACX,iBAAK,MAAM,uCAAuC;UACrD;AAED,eAAK,sBAAsB,YAAY,KAAK,OAAOD,MAAKC,IAAG;QAC9D;AAMD,eAAO,CAAA;;MAkBH,mBAAgB;AACpB,cAAM,QAAQ,KAAK;AACnB,cAAM,KAAK,KAAK;AAEhB,YACI,OAAO,MACP,OAAO,mBACP,OAAO,sBACT;AACE,eAAK,QAAO;AACZ,eAAK,gBAAgB;AACrB,eAAK,YAAY,OAAO,KAAK,OAAO,KAAK,aAAa;AACtD,iBAAO;QACV;AAED,YAAI,KAAK,IAAI,eAAe,GAAG;AAC3B,cAAI,KAAK,mBAAkB,GAAI;AAC3B,mBAAO;UACV;AACD,cACI,CAAC,KAAK,UACN,KAAK,qBAAqB,sBAC5B;AACE,iBAAK,gBAAgB;AACrB,iBAAK,YAAY,OAAO,KAAK,OAAO,KAAK,aAAa;AACtD,mBAAO;UACV;AACD,cAAI,KAAK,UAAU,KAAK,cAAc;AAClC,iBAAK,MAAM,gBAAgB;UAC9B;AACD,eAAK,OAAO,KAAK;QACpB;AAED,eAAO;;MAoBH,qBAAkB;AACtB,cAAM,QAAQ,KAAK;AAGnB,YAAI,KAAK,IAAI,oBAAoB,GAAG;AAChC,eAAK,gBAAgB;AACrB,eAAK,YAAY,QAAQ,GAAG,KAAK,OAAO,KAAK,aAAa;AAC1D,iBAAO;QACV;AAGD,YAAI,KAAK,gBAAgB,KAAK,IAAI,YAAY,GAAG;AAC7C,eAAK,gBAAgB;AACrB,eAAK,YAAY,QAAQ,GAAG,KAAK,OAAO,KAAK,aAAa;AAC1D,iBAAO;QACV;AAGD,YAAI,KAAK;AACT,YACI,CAAC,KAAK,UACN,CAAC,KAAK,gBACN,KAAK,qBAAqB,yBACzB,eAAgB,KAAK,KAAK,aAAa,KAAM,OAAO,WACvD;AACE,eAAK,QAAO;AACZ,eAAK,QAAO;AACZ,eAAK,gBAAgB,KAAK;AAC1B,eAAK,YAAY,QAAQ,GAAG,KAAK,OAAO,KAAK,aAAa;AAC1D,iBAAO;QACV;AAED,eACI,QAAQ,KAAK,4BAA2B,CAAE,KAC1C,KAAK,uBAAsB;;MAsB3B,4BAAyB;AAC7B,cAAM,QAAQ,KAAK;AACnB,YAAI,oBAAyC;AAC7C,YAAI,SAA0C;AAC9C,YAAI,KAAK,yBAAwB,GAAI;AACjC,cAAI,KAAK,iCAAiC,KAAK,GAAG;AAE9C,iBAAK,uBAAuB,CAAA,CAAE;AAC9B,mBAAO,CAAA;UACV;AAOD,8BAAoB;QACvB,WAAW,SAAS,KAAK,uBAAsB,GAAK;AACjD,8BAAoB,OAAO;QAC9B,OAAM;AACH,gBAAM,KAAK,KAAK;AAChB,cAAI,OAAO,iBAAiB;AAExB,iBAAK,QAAO;AACZ,iBAAK,MAAM,gBAAgB;UAC9B;AACD,cACI,OAAO,KAAK,iBACZ,4CAA4C,EAAE,GAChD;AAEE,iBAAK,MAAM,0CAA0C;UACxD;AACD,eAAK,MAAM,sCAAsC;QACpD;AAED,YAAI,KAAK,KAAK,WAAW,SAAS,GAAG;AAEjC,iBACI,KAAK,qBAAqB,cACzB,SAAS,KAAK,uBAAsB,IACvC;AACE,iBAAK,oBAAoB,OAAO,KAAK,KAAK;AAC1C,gBAAI,CAAC,OAAO,mBAAmB;AAC3B,kCAAoB;YACvB;AACD,gBAAI,KAAK,KAAK,WAAW,SAAS,GAAG;AACjC;YACH;AAaD,mBAAO,EAAE,kBAAiB;UAC7B;AAED,eAAK,MAAM,sCAAsC;QACpD;AACD,YAAI,KAAK,KAAK,cAAc,YAAY,GAAG;AAEvC,iBAAO,KAAK,uBAAsB,GAAI;AAClC,iBAAK,mBAAmB,OAAO,KAAK,KAAK;AACzC,gBAAI,KAAK,KAAK,cAAc,YAAY,GAAG;AACvC;YACH;AAQD,mBAAO,EAAE,kBAAiB;UAC7B;AACD,eAAK,MAAM,sCAAsC;QACpD;AAED,eAAO,KAAK,uBAAuB,EAAE,kBAAiB,CAAE;;MAYpD,uBACJ,YAAoC;AAGpC,YAAI,oBAAoB,WAAW;AACnC,mBAAS;AACL,gBAAM,QAAQ,KAAK;AACnB,cAAI,KAAK,yBAAwB,GAAI;AACjC,iBAAK,iCAAiC,KAAK;AAC3C;UACH;AACD,gBAAM,SAAS,KAAK,uBAAsB;AAC1C,cAAI,QAAQ;AACR,gBAAI,OAAO,mBAAmB;AAC1B,kCAAoB;YACvB;AACD;UACH;AACD;QACH;AAYD,eAAO,EAAE,kBAAiB;;MActB,iCAAiC,OAAa;AAClD,cAAM,eAAe,KAAK;AAC1B,cAAMD,OAAM,KAAK;AACjB,YAAI,KAAK,IAAI,YAAY,GAAG;AACxB,cAAI,KAAK,yBAAwB,GAAI;AACjC,kBAAMC,OAAM,KAAK;AAGjB,gBAAID,SAAQ,MAAMC,SAAQ,IAAI;AAC1B,mBAAK,MAAM,yBAAyB;YACvC;AACD,gBAAID,OAAMC,MAAK;AACX,mBAAK,MAAM,uCAAuC;YACrD;AACD,iBAAK,sBAAsB,OAAO,KAAK,OAAOD,MAAKC,IAAG;AACtD,mBAAO;UACV;AACD,eAAK,OAAO,YAAY;QAC3B;AACD,eAAO;;MAcH,yBAAsB;AAC1B,YAAI,SAA0C;AAC9C,YAAK,SAAS,KAAK,mBAAkB,GAAK;AAItC,iBAAO;QACV;AACD,YAAK,SAAS,KAAK,8BAA6B,GAAK;AAIjD,iBAAO;QACV;AACD,YAAI,KAAK,yBAAwB,GAAI;AAKjC,iBAAO,CAAA;QACV;AACD,eAAO;;MAaH,qBAAkB;AACtB,cAAM,QAAQ,KAAK;AACnB,YAAI,KAAK,IAAI,mBAAmB,GAAG;AAC/B,gBAAM,SAAS,KAAK,IAAI,iBAAiB;AACzC,eAAK,sBAAsB,OAAO,QAAQ,IAAI;AAC9C,gBAAM,SAAS,KAAK,qBAAoB;AACxC,cAAI,CAAC,KAAK,IAAI,oBAAoB,GAAG;AACjC,iBAAK,MAAM,8BAA8B;UAC5C;AACD,cAAI,UAAU,OAAO,mBAAmB;AACpC,iBAAK,MAAM,6CAA6C;UAC3D;AACD,eAAK,sBAAsB,OAAO,KAAK,OAAO,MAAM;AAQpD,iBAAO;QACV;AACD,YAAI,KAAK,IAAI,eAAe,GAAG;AAC3B,gBAAM,SAAS,KAAK,4BAA2B;AAC/C,cAAI,QAAQ;AAIR,mBAAO;UACV;AACD,eAAK,OAAO,KAAK;QACpB;AACD,eAAO;;MAcH,gCAA6B;AACjC,cAAM,QAAQ,KAAK;AACnB,YACI,KAAK,KAAK,iBAAiB,sBAAsB,kBAAkB,GACrE;AACE,eAAK,8BAA8B,KAAK;AAExC,cAAI,IAAI;AACR,cAAI,oBAAoB;AACxB,aAAG;AACC,gBAAI,KAAK,mBAAmB,GAAG,EAAE,mBAAmB;AAChD,kCAAoB;YACvB;UACJ,SAAQ,KAAK,IAAI,aAAa;AAE/B,cAAI,KAAK,IAAI,mBAAmB,GAAG;AAC/B,iBAAK,8BAA8B,OAAO,KAAK,KAAK;AAUpD,mBAAO,EAAE,kBAAiB;UAC7B;AACD,eAAK,MAAM,uCAAuC;QACrD;AACD,eAAO;;MAaH,mBAAmB,GAAS;AAChC,cAAM,QAAQ,KAAK;AAEnB,YAAIO,SAAQ;AACZ,aAAK,yBAAyB,OAAO,CAAC;AACtC,eACI,KAAK,qBAAqB,MAC1B,KAAK,yBAAwB,GAC/B;AACE,UAAAA;QACH;AACD,aAAK,yBAAyB,OAAO,KAAK,OAAO,CAAC;AAUlD,eAAO,EAAE,mBAAmBA,WAAU,EAAC;;MAenC,2BAAwB;AAC5B,cAAM,QAAQ,KAAK;AACnB,cAAM,KAAK,KAAK;AAChB,YAEI,OAAO,KAAK,iBACZ,CAAC,4CAA4C,EAAE,GACjD;AACE,cAAI,OAAO,MAAM,CAAC,0BAA0B,EAAE,GAAG;AAC7C,iBAAK,gBAAgB;AACrB,iBAAK,QAAO;AACZ,iBAAK,YAAY,OAAO,KAAK,OAAO,KAAK,aAAa;AACtD,mBAAO;UACV;QACJ;AACD,YAAI,KAAK,IAAI,eAAe,GAAG;AAC3B,cAAI,KAAK,uBAAsB,GAAI;AAC/B,mBAAO;UACV;AACD,cAAI,6BAA6B,KAAK,gBAAgB,GAAG;AACrD,iBAAK,gBAAgB,KAAK;AAC1B,iBAAK,QAAO;AACZ,iBAAK,YAAY,OAAO,KAAK,OAAO,KAAK,aAAa;AACtD,mBAAO;UACV;AACD,cAAI,KAAK,IAAI,oBAAoB,GAAG;AAChC,iBAAK,gBAAgB;AACrB,iBAAK,YAAY,OAAO,KAAK,OAAO,KAAK,aAAa;AACtD,mBAAO;UACV;AACD,eAAK,OAAO,KAAK;QACpB;AACD,eAAO;;MAYH,eAAY;AAChB,YAAI,KAAK,IAAI,cAAc,GAAG;AAC1B,cAAI,KAAK,wBAAuB,KAAM,KAAK,IAAI,iBAAiB,GAAG;AAC/D,mBAAO;UACV;AACD,eAAK,MAAM,4BAA4B;QAC1C;AACD,eAAO;;MAcH,0BAAuB;AAC3B,YAAI,KAAK,yBAAwB,GAAI;AACjC,eAAK,gBAAgB,OAAO,cAAc,KAAK,aAAa;AAC5D,iBAAO,KAAK,wBAAuB,GAAI;AACnC,iBAAK,iBAAiB,OAAO,cAAc,KAAK,aAAa;UAChE;AACD,iBAAO;QACV;AACD,eAAO;;MAiBH,2BAAwB;AAC5B,cAAM,QAAQ,KAAK;AACnB,cAAM,aAAa,CAAC,KAAK,gBAAgB,KAAK,eAAe;AAC7D,YAAI,KAAK,KAAK;AACd,aAAK,QAAO;AAEZ,YACI,OAAO,mBACP,KAAK,+BAA+B,UAAU,GAChD;AACE,eAAK,KAAK;QACb,WACG,cACA,gBAAgB,EAAE,KAClB,iBAAiB,KAAK,gBAAgB,GACxC;AACE,eAAK,qBAAqB,IAAI,KAAK,gBAAgB;AACnD,eAAK,QAAO;QACf;AAED,YAAI,sBAAsB,EAAE,GAAG;AAC3B,eAAK,gBAAgB;AACrB,iBAAO;QACV;AAED,YAAI,KAAK,UAAU,OAAO;AACtB,eAAK,OAAO,KAAK;QACpB;AACD,eAAO;;MAeH,0BAAuB;AAC3B,cAAM,QAAQ,KAAK;AACnB,cAAM,aAAa,CAAC,KAAK,gBAAgB,KAAK,eAAe;AAC7D,YAAI,KAAK,KAAK;AACd,aAAK,QAAO;AAEZ,YACI,OAAO,mBACP,KAAK,+BAA+B,UAAU,GAChD;AACE,eAAK,KAAK;QACb,WACG,cACA,gBAAgB,EAAE,KAClB,iBAAiB,KAAK,gBAAgB,GACxC;AACE,eAAK,qBAAqB,IAAI,KAAK,gBAAgB;AACnD,eAAK,QAAO;QACf;AAED,YAAI,qBAAqB,EAAE,GAAG;AAC1B,eAAK,gBAAgB;AACrB,iBAAO;QACV;AAED,YAAI,KAAK,UAAU,OAAO;AACtB,eAAK,OAAO,KAAK;QACpB;AACD,eAAO;;MAWH,oBAAiB;AACrB,cAAM,QAAQ,KAAK;AACnB,YAAI,KAAK,IAAI,oBAAoB,GAAG;AAChC,cAAI,KAAK,iBAAgB,GAAI;AACzB,mBAAO;UACV;AACD,eAAK,OAAO,KAAK;QACpB;AACD,eAAO;;MAWH,UAAO;AACX,YACI,KAAK,qBAAqB,cAC1B,CAAC,eAAe,KAAK,aAAa,GACpC;AACE,eAAK,gBAAgB;AACrB,eAAK,QAAO;AACZ,iBAAO;QACV;AACD,eAAO;;MAaH,mBAAgB;AACpB,YAAI,KAAK,IAAI,oBAAoB,GAAG;AAChC,eAAK,gBAAgB;AACrB,iBAAO;QACV;AACD,YAAI,KAAK,IAAI,oBAAoB,GAAG;AAChC,eAAK,gBAAgB;AACrB,iBAAO;QACV;AACD,YAAI,KAAK,IAAI,oBAAoB,GAAG;AAChC,eAAK,gBAAgB;AACrB,iBAAO;QACV;AACD,YAAI,KAAK,IAAI,oBAAoB,GAAG;AAChC,eAAK,gBAAgB;AACrB,iBAAO;QACV;AACD,YAAI,KAAK,IAAI,oBAAoB,GAAG;AAChC,eAAK,gBAAgB;AACrB,iBAAO;QACV;AACD,eAAO;;MAcH,mBAAgB;AACpB,cAAM,KAAK,KAAK;AAChB,YAAI,cAAc,EAAE,GAAG;AACnB,eAAK,QAAO;AACZ,eAAK,gBAAgB,KAAK;AAC1B,iBAAO;QACV;AACD,eAAO;;MAkBH,+BAA+B,aAAa,OAAK;AACrD,cAAM,QAAQ,KAAK;AACnB,cAAM,QAAQ,cAAc,KAAK;AAEjC,YAAI,KAAK,IAAI,oBAAoB,GAAG;AAChC,cACK,SAAS,KAAK,oCAAmC,KAClD,KAAK,kBAAkB,CAAC,KACvB,SAAS,KAAK,gCAA+B,GAChD;AACE,mBAAO;UACV;AACD,cAAI,KAAK,UAAU,OAAO;AACtB,iBAAK,MAAM,wBAAwB;UACtC;AACD,eAAK,OAAO,KAAK;QACpB;AAED,eAAO;;MAWH,sCAAmC;AACvC,cAAM,QAAQ,KAAK;AAEnB,YAAI,KAAK,kBAAkB,CAAC,GAAG;AAC3B,gBAAM,OAAO,KAAK;AAClB,cACI,gBAAgB,IAAI,KACpB,KAAK,IAAI,eAAe,KACxB,KAAK,IAAI,oBAAoB,KAC7B,KAAK,kBAAkB,CAAC,GAC1B;AACE,kBAAMH,SAAQ,KAAK;AACnB,gBAAI,iBAAiBA,MAAK,GAAG;AACzB,mBAAK,gBAAgB,qBAAqB,MAAMA,MAAK;AACrD,qBAAO;YACV;UACJ;AAED,eAAK,OAAO,KAAK;QACpB;AAED,eAAO;;MAWH,kCAA+B;AACnC,cAAM,QAAQ,KAAK;AAEnB,YACI,KAAK,IAAI,kBAAkB,KAC3B,KAAK,aAAY,KACjB,KAAK,IAAI,mBAAmB,KAC5B,eAAe,KAAK,aAAa,GACnC;AACE,iBAAO;QACV;AAED,aAAK,OAAO,KAAK;AACjB,eAAO;;MAmBH,oBAAiB;AACrB,cAAM,KAAK,KAAK;AAChB,YAAI,KAAK,sBAAsB,EAAE,GAAG;AAChC,eAAK,gBAAgB;AACrB,eAAK,QAAO;AACZ,iBAAO;QACV;AACD,eAAO;;MAGH,sBAAsB,IAAU;AACpC,YAAI,OAAO,IAAI;AACX,iBAAO;QACV;AACD,YAAI,KAAK,cAAc;AACnB,iBAAO,kBAAkB,EAAE,KAAK,OAAO;QAC1C;AACD,YAAI,KAAK,QAAQ;AACb,iBAAO,CAAC,aAAa,EAAE;QAC1B;AACD,YAAI,KAAK,QAAQ;AACb,iBAAO,EAAE,OAAO,wBAAwB,OAAO;QAClD;AACD,eAAO,OAAO;;MAaV,mBAAgB;AACpB,aAAK,gBAAgB;AACrB,YAAI,KAAK,KAAK;AACd,YAAI,MAAM,aAAa,MAAM,YAAY;AACrC,aAAG;AACC,iBAAK,gBAAgB,KAAK,KAAK,iBAAiB,KAAK;AACrD,iBAAK,QAAO;oBAEX,KAAK,KAAK,qBAAqB,cAChC,MAAM;AAEV,iBAAO;QACV;AACD,eAAO;;MAeH,oCAAiC;AACrC,cAAM,QAAQ,KAAK;AAGnB,YAAI,KAAK,uBAAsB,KAAM,KAAK,IAAI,WAAW,GAAG;AACxD,gBAAM,MAAM,KAAK;AACjB,cAAI,KAAK,wBAAuB,GAAI;AAChC,kBAAMF,SAAQ,KAAK;AACnB,gBAAI,uBAAuB,KAAK,aAAa,KAAKA,MAAK,GAAG;AACtD,qBAAO;gBACH;gBACA,OAAOA,UAAS;;YAEvB;AACD,iBAAK,MAAM,uBAAuB;UACrC;QACJ;AACD,aAAK,OAAO,KAAK;AAGjB,YAAI,KAAK,kCAAiC,GAAI;AAC1C,gBAAM,cAAc,KAAK;AACzB,cACI,uBACI,KAAK,aACL,oBACA,WAAW,GAEjB;AACE,mBAAO;cACH,KAAK;cACL,OAAO,eAAe;;UAE7B;AACD,cAAI,2BAA2B,KAAK,aAAa,WAAW,GAAG;AAC3D,mBAAO;cACH,KAAK;cACL,OAAO;;UAEd;AACD,cACI,KAAK,oBACL,mCACI,KAAK,aACL,WAAW,GAEjB;AACE,mBAAO;cACH,KAAK;cACL,OAAO;cACP,SAAS;;UAEhB;AACD,eAAK,MAAM,uBAAuB;QACrC;AACD,eAAO;;MAaH,yBAAsB;AAC1B,aAAK,gBAAgB;AACrB,eAAO,+BAA+B,KAAK,gBAAgB,GAAG;AAC1D,eAAK,iBAAiB,OAAO,cAAc,KAAK,gBAAgB;AAChE,eAAK,QAAO;QACf;AACD,eAAO,KAAK,kBAAkB;;MAa1B,0BAAuB;AAC3B,aAAK,gBAAgB;AACrB,eAAO,gCAAgC,KAAK,gBAAgB,GAAG;AAC3D,eAAK,iBAAiB,OAAO,cAAc,KAAK,gBAAgB;AAChE,eAAK,QAAO;QACf;AACD,eAAO,KAAK,kBAAkB;;MAa1B,oCAAiC;AACrC,eAAO,KAAK,wBAAuB;;MAc/B,uBAAoB;AACxB,cAAM,QAAQ,KAAK;AACnB,YAAI,KAAK,IAAI,oBAAoB,GAAG;AAChC,cAAI,KAAK,kBAAkB,CAAC,GAAG;AAC3B,mBAAO;UACV;AACD,cAAI,KAAK,gBAAgB,KAAK,QAAQ;AAClC,iBAAK,MAAM,gBAAgB;UAC9B;AACD,eAAK,OAAO,KAAK;QACpB;AACD,eAAO;;MAeH,mBAAgB;AACpB,cAAM,QAAQ,KAAK;AAEnB,aAAK,gBAAgB;AACrB,eAAO,eAAe,KAAK,gBAAgB,GAAG;AAC1C,eAAK,gBACD,KAAK,KAAK,gBAAgB,WAAW,KAAK,gBAAgB;AAC9D,eAAK,QAAO;QACf;AAED,eAAO,KAAK,UAAU;;MAelB,eAAY;AAChB,cAAM,QAAQ,KAAK;AACnB,aAAK,gBAAgB;AACrB,eAAO,WAAW,KAAK,gBAAgB,GAAG;AACtC,eAAK,gBACD,KAAK,KAAK,gBAAgB,WAAW,KAAK,gBAAgB;AAC9D,eAAK,QAAO;QACf;AACD,eAAO,KAAK,UAAU;;MAqBlB,+BAA4B;AAChC,YAAI,KAAK,cAAa,GAAI;AACtB,gBAAM,KAAK,KAAK;AAChB,cAAI,KAAK,cAAa,GAAI;AACtB,kBAAM,KAAK,KAAK;AAChB,gBAAI,MAAM,KAAK,KAAK,cAAa,GAAI;AACjC,mBAAK,gBAAgB,KAAK,KAAK,KAAK,IAAI,KAAK;YAChD,OAAM;AACH,mBAAK,gBAAgB,KAAK,IAAI;YACjC;UACJ,OAAM;AACH,iBAAK,gBAAgB;UACxB;AACD,iBAAO;QACV;AACD,eAAO;;MAYH,gBAAa;AACjB,cAAM,KAAK,KAAK;AAChB,YAAI,aAAa,EAAE,GAAG;AAClB,eAAK,QAAO;AACZ,eAAK,gBAAgB,KAAK;AAC1B,iBAAO;QACV;AACD,aAAK,gBAAgB;AACrB,eAAO;;MAaH,kBAAkB,QAAc;AACpC,cAAM,QAAQ,KAAK;AACnB,aAAK,gBAAgB;AACrB,iBAAS,IAAI,GAAG,IAAI,QAAQ,EAAE,GAAG;AAC7B,gBAAM,KAAK,KAAK;AAChB,cAAI,CAAC,WAAW,EAAE,GAAG;AACjB,iBAAK,OAAO,KAAK;AACjB,mBAAO;UACV;AACD,eAAK,gBAAgB,KAAK,KAAK,gBAAgB,WAAW,EAAE;AAC5D,eAAK,QAAO;QACf;AACD,eAAO;;MAYH,eAAY;AAChB,YAAI,MAAM;AACV,eAAO,4BAA4B,KAAK,gBAAgB,GAAG;AACvD,eAAK,QAAO;AACZ,gBAAM;QACT;AACD,eAAO;;MAQH,eAAe,OAAe,KAAW;AAC7C,cAAM,EAAE,YAAAM,aAAY,WAAW,OAAM,IAAK,KAAK,WAC3C,KAAK,QAAQ,QACb,OACA,GAAG;AAGP,eAAO,EAAE,YAAAA,aAAY,WAAW,OAAM;;MAQlC,WACJ,QACA,OACA,KAAW;AAEX,cAAM,QAAQ;UACV,QAAQ;UACR,YAAY;UACZ,WAAW;UACX,SAAS;UACT,QAAQ;UACR,QAAQ;UACR,YAAY;UACZ,aAAa;;AAGjB,cAAM,aAAa,oBAAI,IAAG;AAC1B,mBAAW,IAAI,oBAAoB;AACnC,mBAAW,IAAI,oBAAoB;AACnC,mBAAW,IAAI,oBAAoB;AACnC,YAAI,KAAK,eAAe,MAAM;AAC1B,qBAAW,IAAI,oBAAoB;AACnC,qBAAW,IAAI,oBAAoB;AACnC,cAAI,KAAK,eAAe,MAAM;AAC1B,uBAAW,IAAI,oBAAoB;AACnC,gBAAI,KAAK,eAAe,MAAM;AAC1B,yBAAW,IAAI,oBAAoB;AACnC,kBAAI,KAAK,eAAe,MAAM;AAC1B,2BAAW,IAAI,oBAAoB;cACtC;YACJ;UACJ;QACJ;AAED,iBAAS,IAAI,OAAO,IAAI,KAAK,EAAE,GAAG;AAC9B,gBAAM,OAAO,OAAO,WAAW,CAAC;AAChC,cAAI,WAAW,IAAI,IAAI,GAAG;AACtB,kBAAM,OAAO,uBAAuB,IAAI;AACxC,gBAAI,MAAM,IAAI,GAAG;AACb,mBAAK,MAAM,oBAAoB,OAAO,CAAC,CAAC,KAAK;gBACzC,OAAO;cACV,CAAA;YACJ;AACD,kBAAM,IAAI,IAAI;UACjB,OAAM;AACH,iBAAK,MAAM,iBAAiB,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,MAAK,CAAE;UAC7D;QACJ;AACD,eAAO;;IAEd;ACt+GD,QAAM,gBAAyB,CAAA;AAC/B,QAAM,cAAqB,CAAA;AAC3B,QAAM,wBAAwC,CAAA;AAE9C,aAAS,kBACLC,OAAsC;AAEtC,aACIA,MAAK,SAAS,eACdA,MAAK,SAAS,kBACdA,MAAK,SAAS,oBACdA,MAAK,SAAS,8BACdA,MAAK,SAAS;IAEtB;AAEA,QAAM,oBAAN,MAAuB;MAoBnB,YAAmB,SAA8B;;AAfzC,aAAK,QAAmB;AAExB,aAAA,uBAAuB,oBAAI,IAAG;AAK9B,aAAM,SAAU;AAEhB,aAAe,kBAAoB,CAAA;AAEnC,aAAgB,mBAAqB,CAAA;AAEtC,aAAM,SAAG;AAGZ,aAAK,SAAS,QAAQ,YAAA,QAAA,YAAA,SAAA,SAAA,QAAS,MAAM;AACrC,aAAK,eAAc,KAAA,YAAO,QAAP,YAAO,SAAA,SAAP,QAAS,iBAAW,QAAA,OAAA,SAAA,KAAI;;MAG/C,IAAW,UAAO;AACd,YAAI,KAAK,MAAM,SAAS,WAAW;AAC/B,gBAAM,IAAI,MAAM,cAAc;QACjC;AACD,eAAO,KAAK;;MAGhB,IAAW,QAAK;AACZ,YAAI,KAAK,OAAO,SAAS,SAAS;AAC9B,gBAAM,IAAI,MAAM,cAAc;QACjC;AACD,eAAO,KAAK;;MAGT,cACH,OACA,KACA,EACI,QAAAC,SACA,YAAAF,aACA,WACA,SACA,QACA,QACA,YACA,YAAW,GAUd;AAED,aAAK,SAAS;UACV,MAAM;UACN,QAAQ;UACR;UACA;UACA,KAAK,KAAK,OAAO,MAAM,OAAO,GAAG;UACjC,QAAAE;UACA,YAAAF;UACA;UACA;UACA;UACA;UACA;UACA;;;MAID,eAAe,OAAa;AAC/B,aAAK,QAAQ;UACT,MAAM;UACN,QAAQ;UACR;UACA,KAAK;UACL,KAAK;UACL,cAAc,CAAA;;AAElB,aAAK,gBAAgB,SAAS;AAC9B,aAAK,iBAAiB,SAAS;;MAG5B,eAAe,OAAe,KAAW;AAC5C,aAAK,MAAM,MAAM;AACjB,aAAK,MAAM,MAAM,KAAK,OAAO,MAAM,OAAO,GAAG;AAE7C,mBAAW,aAAa,KAAK,iBAAiB;AAC1C,gBAAM,MAAM,UAAU;AACtB,gBAAM,SACF,OAAO,QAAQ,WACT,CAAC,KAAK,iBAAiB,MAAM,CAAC,CAAC,IAC/B,KAAK,iBAAiB,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG;AAC5D,cAAI,OAAO,WAAW,GAAG;AACrB,kBAAM,QAAQ,OAAO,CAAC;AACtB,sBAAU,YAAY;AACtB,sBAAU,WAAW;UACxB,OAAM;AACH,sBAAU,YAAY;AACtB,sBAAU,WAAW;UACxB;AACD,qBAAW,SAAS,QAAQ;AACxB,kBAAM,WAAW,KAAK,SAAS;UAClC;QACJ;;MAGE,mBAAmB,OAAa;AACnC,cAAM,SAAS,KAAK;AACpB,YACI,OAAO,SAAS,eAChB,OAAO,SAAS,oBAChB,OAAO,SAAS,WAChB,OAAO,SAAS,WAClB;AACE,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,aAAK,QAAQ;UACT,MAAM;UACN;UACA;UACA,KAAK;UACL,KAAK;UACL,UAAU,CAAA;;AAEd,eAAO,aAAa,KAAK,KAAK,KAAK;;MAGhC,mBAAmB,OAAe,KAAW;AAChD,cAAMC,QAAO,KAAK;AAClB,YAAIA,MAAK,SAAS,eAAe;AAC7B,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,QAAAA,MAAK,MAAM;AACX,QAAAA,MAAK,MAAM,KAAK,OAAO,MAAM,OAAO,GAAG;AACvC,aAAK,QAAQA,MAAK;;MAGf,aAAa,OAAa;AAC7B,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,eAAe;AAC/B,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,cAAM,QAAe;UACjB,MAAM;UACN;UACA;UACA,KAAK;UACL,KAAK;UACL,WAAW;UACX,cAAc,CAAA;;AAGlB,aAAK,QAAQ;AACb,eAAO,SAAS,KAAK,KAAK,KAAK;;MAG5B,aAAa,OAAe,KAAW;AAC1C,cAAMA,QAAO,KAAK;AAClB,YAAIA,MAAK,SAAS,WAAWA,MAAK,OAAO,SAAS,eAAe;AAC7D,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,QAAAA,MAAK,MAAM;AACX,QAAAA,MAAK,MAAM,KAAK,OAAO,MAAM,OAAO,GAAG;AACvC,aAAK,QAAQA,MAAK;;MAGf,iBAAiB,OAAa;AACjC,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,SAAS;AACzB,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,aAAK,QAAQ;UACT,MAAM;UACN;UACA;UACA,KAAK;UACL,KAAK;UACL,KAAK;UACL,QAAQ;;AAEZ,eAAO,YAAY,KAAK;;MAGrB,iBAAiB,OAAe,KAAW;AAC9C,cAAMA,QAAO,KAAK;AAClB,YAAIA,MAAK,SAAS,eAAeA,MAAK,OAAO,SAAS,SAAS;AAC3D,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,QAAAA,MAAK,MAAM;AACX,QAAAA,MAAK,MAAM,KAAK,OAAO,MAAM,OAAO,GAAG;AACvC,aAAK,QAAQA,MAAK;;MAGf,eACH,OACA,KACA,EACI,YAAAD,aACA,WACA,OAAM,GACqD;AAE/D,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,aAAa;AAC7B,gBAAM,IAAI,MAAM,cAAc;QACjC;AACD,eAAO,MAAM;UACT,MAAM;UACN;UACA;UACA;UACA,KAAK,KAAK,OAAO,MAAM,OAAO,GAAG;UACjC,YAAAA;UACA;UACA;;;MAID,kBACH,OACA,KACA,EACI,YAAAA,aACA,WACA,OAAM,GACqD;AAE/D,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,aAAa;AAC7B,gBAAM,IAAI,MAAM,cAAc;QACjC;AACD,eAAO,SAAS;UACZ,MAAM;UACN;UACA;UACA;UACA,KAAK,KAAK,OAAO,MAAM,OAAO,GAAG;UACjC,YAAAA;UACA;UACA;;;MAID,sBAAsB,OAAe,MAAmB;AAC3D,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,eAAe;AAC/B,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,aAAK,QAAQ;UACT,MAAM;UACN;UACA;UACA,KAAK;UACL,KAAK;UACL;UACA,cAAc,CAAA;UACd,YAAY,CAAA;;AAEhB,eAAO,SAAS,KAAK,KAAK,KAAK;AAC/B,aAAK,iBAAiB,KAAK,KAAK,KAAK;;MAGlC,sBAAsB,OAAe,KAAW;AACnD,cAAMC,QAAO,KAAK;AAClB,YACIA,MAAK,SAAS,oBACdA,MAAK,OAAO,SAAS,eACvB;AACE,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,QAAAA,MAAK,MAAM;AACX,QAAAA,MAAK,MAAM,KAAK,OAAO,MAAM,OAAO,GAAG;AACvC,aAAK,QAAQA,MAAK;;MAGf,aACH,OACA,KACAV,MACAC,MACA,QAAe;AAEf,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,eAAe;AAC/B,gBAAM,IAAI,MAAM,cAAc;QACjC;AAGD,cAAM,UAAU,OAAO,SAAS,IAAG;AACnC,YACI,WAAW,QACX,QAAQ,SAAS,gBAChB,QAAQ,SAAS,eAAe,QAAQ,SAAS,aACpD;AACE,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,cAAMS,QAAmB;UACrB,MAAM;UACN;UACA,OAAO,QAAQ;UACf;UACA,KAAK,KAAK,OAAO,MAAM,QAAQ,OAAO,GAAG;UACzC,KAAAV;UACA,KAAAC;UACA;UACA;;AAEJ,eAAO,SAAS,KAAKS,KAAI;AACzB,gBAAQ,SAASA;;MAGd,2BACH,OACA,MACA,QAAe;AAEf,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,eAAe;AAC/B,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,cAAMA,QAA6B,KAAK,QAAQ;UAC5C,MAAM;UACN;UACA;UACA,KAAK;UACL,KAAK;UACL;UACA;UACA,cAAc,CAAA;QACjB;AACD,eAAO,SAAS,KAAKA,KAAI;;MAGtB,2BAA2B,OAAe,KAAW;AACxD,cAAMA,QAAO,KAAK;AAClB,YAAIA,MAAK,SAAS,eAAeA,MAAK,OAAO,SAAS,eAAe;AACjE,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,QAAAA,MAAK,MAAM;AACX,QAAAA,MAAK,MAAM,KAAK,OAAO,MAAM,OAAO,GAAG;AACvC,aAAK,QAAQA,MAAK;;MAGf,gBACH,OACA,KACA,MAAqB;AAErB,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,eAAe;AAC/B,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,eAAO,SAAS,KAAK;UACjB,MAAM;UACN;UACA;UACA;UACA,KAAK,KAAK,OAAO,MAAM,OAAO,GAAG;UACjC;QACH,CAAA;;MAGE,wBACH,OACA,KACA,MACA,QAAe;AAEf,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,eAAe;AAC/B,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,eAAO,SAAS,KAAK;UACjB,MAAM;UACN;UACA;UACA;UACA,KAAK,KAAK,OAAO,MAAM,OAAO,GAAG;UACjC;UACA;QACH,CAAA;;MAGE,kBAAkB,OAAe,KAAa,MAAW;AAC5D,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,eAAe;AAC/B,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,eAAO,SAAS,KAAK;UACjB,MAAM;UACN;UACA;UACA;UACA,KAAK,KAAK,OAAO,MAAM,OAAO,GAAG;UACjC;QACH,CAAA;;MAGE,qBACH,OACA,KACA,MACA,QAAe;AAEf,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,iBAAiB,OAAO,SAAS,kBAAkB;AACnE,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,eAAO,SAAS,KAAK;UACjB,MAAM;UACN;UACA;UACA;UACA,KAAK,KAAK,OAAO,MAAM,OAAO,GAAG;UACjC;UACA;QACH,CAAA;;MAGE,8BACH,OACA,KACA,MACA,KACAP,QACA,QACA,SAAgB;AAEhB,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,iBAAiB,OAAO,SAAS,kBAAkB;AACnE,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,cAAMG,QAAO;UACT,MAAM;UACN,QAAQ;UACR;UACA;UACA,KAAK,KAAK,OAAO,MAAM,OAAO,GAAG;UACjC;UACA,SAAS;UACT;;AAGJ,YAAI,SAAS;AACT,cACK,OAAO,SAAS,oBAAoB,CAAC,OAAO,eAC7C,UACAH,WAAU,MACZ;AACE,kBAAM,IAAI,MAAM,cAAc;UACjC;AAED,iBAAO,SAAS,KAAI,OAAA,OAAA,OAAA,OAAA,CAAA,GAAMG,KAAI,GAAA,EAAE,QAAQ,SAAS,OAAAH,QAAO,OAAM,CAAA,CAAA;QACjE,OAAM;AACH,iBAAO,SAAS,KAAI,OAAA,OAAA,OAAA,OAAA,CAAA,GAAMG,KAAI,GAAA,EAAE,QAAQ,SAAS,OAAAH,QAAO,OAAM,CAAA,CAAA;QACjE;;MAGE,YAAY,OAAe,KAAaA,QAAa;AACxD,cAAM,SAAS,KAAK;AACpB,YACI,OAAO,SAAS,iBAChB,OAAO,SAAS,oBAChB,OAAO,SAAS,qBAClB;AACE,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,eAAO,SAAS,KAAK;UACjB,MAAM;UACN;UACA;UACA;UACA,KAAK,KAAK,OAAO,MAAM,OAAO,GAAG;UACjC,OAAAA;QACH,CAAA;;MAGE,gBACH,OACA,KACA,KAAoB;AAEpB,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,eAAe;AAC/B,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,cAAMO,QAAsB;UACxB,MAAM;UACN;UACA;UACA;UACA,KAAK,KAAK,OAAO,MAAM,OAAO,GAAG;UACjC;UACA,WAAW;UACX,UAAU;;AAEd,eAAO,SAAS,KAAKA,KAAI;AACzB,aAAK,gBAAgB,KAAKA,KAAI;;MAG3B,sBACH,OACA,QACA,aAAoB;AAEpB,cAAM,SAAS,KAAK;AACpB,cAAMJ,QAAO;UACT,MAAM;UACN;UACA;UACA,KAAK;UACL,KAAK;UACL;UACA;UACA,UAAU,CAAA;;AAEd,YAAI,OAAO,SAAS,eAAe;AAC/B,gBAAMI,QACC,OAAA,OAAA,OAAA,OAAA,CAAA,GAAAJ,KAAI,GACP,EAAA,OAAM,CAAA;AAEV,eAAK,QAAQI;AACb,iBAAO,SAAS,KAAKA,KAAI;QAC5B,WACG,OAAO,SAAS,oBAChB,OAAO,eACP,aACF;AACE,gBAAMA,QAAI,OAAA,OAAA,OAAA,OAAA,CAAA,GACHJ,KAAI,GAAA;YACP;YACA;UAAW,CAAA;AAEf,eAAK,QAAQI;AACb,iBAAO,SAAS,KAAKA,KAAI;QAC5B,OAAM;AACH,gBAAM,IAAI,MAAM,cAAc;QACjC;;MAGE,sBAAsB,OAAe,KAAW;AACnD,cAAMA,QAAO,KAAK;AAClB,YACIA,MAAK,SAAS,oBACbA,MAAK,OAAO,SAAS,iBAClBA,MAAK,OAAO,SAAS,kBAC3B;AACE,gBAAM,IAAI,MAAM,cAAc;QACjC;AACD,cAAM,SAASA,MAAK;AAEpB,QAAAA,MAAK,MAAM;AACX,QAAAA,MAAK,MAAM,KAAK,OAAO,MAAM,OAAO,GAAG;AACvC,aAAK,QAAQ;AAEb,cAAM,aAAa,KAAK,qBAAqB,IAAIA,KAAI;AACrD,YAAI,CAAC,YAAY;AACb;QACH;AACD,YAAIA,MAAK,SAAS,SAAS,GAAG;AAC1B,gBAAM,IAAI,MAAM,cAAc;QACjC;AACD,aAAK,qBAAqB,OAAOA,KAAI;AAGrC,cAAM,UAAoC;UACtC,MAAM;UACN;UACA,OAAOA,MAAK;UACZ,KAAKA,MAAK;UACV,KAAKA,MAAK;UACV,QAAQA,MAAK;UACb;;AAEJ,mBAAW,SAAS;AACpB,YAAIA,UAAS,OAAO,SAAS,IAAG,GAAI;AAChC,gBAAM,IAAI,MAAM,cAAc;QACjC;AACD,eAAO,SAAS,KAAK,OAAO;;MAGzB,sBAAsB,OAAe,KAAW;AACnD,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,kBAAkB;AAClC,gBAAM,IAAI,MAAM,cAAc;QACjC;AAGD,cAAM,WAAW,OAAO;AACxB,cAAMT,OAAM,SAAS,IAAG;AACxB,YAAI,CAACA,QAAOA,KAAI,SAAS,aAAa;AAClC,gBAAM,IAAI,MAAM,cAAc;QACjC;AACD,YAAI,CAAC,OAAO,aAAa;AACrB,gBAAM,SAAS,SAAS,IAAG;AAC3B,cACI,CAAC,UACD,OAAO,SAAS,eAChB,OAAO,UAAU,cACnB;AACE,kBAAM,IAAI,MAAM,cAAc;UACjC;QACJ;AACD,cAAMD,OAAM,SAAS,IAAG;AACxB,YAAI,CAACA,QAAOA,KAAI,SAAS,aAAa;AAClC,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,cAAMU,QAA4B;UAC9B,MAAM;UACN;UACA;UACA;UACA,KAAK,KAAK,OAAO,MAAM,OAAO,GAAG;UACjC,KAAAV;UACA,KAAAC;;AAEJ,QAAAD,KAAI,SAASU;AACb,QAAAT,KAAI,SAASS;AACb,iBAAS,KAAKA,KAAI;;MAGf,oBAAoB,OAAe,KAAW;;AACjD,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,oBAAoB,CAAC,OAAO,aAAa;AACzD,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,cAAM,QAAQ,OAAO,SAAS,IAAG;AACjC,cAAM,QACF,KAAA,KAAK,qBAAqB,IAAI,MAAM,OAAC,QAAA,OAAA,SAAA,KAAI,OAAO,SAAS,IAAG;AAChE,YACI,CAAC,QACD,CAAC,SACD,KAAK,SAAS,sBACb,KAAK,SAAS,uBAAuB,CAAC,kBAAkB,IAAI,KAC7D,CAAC,kBAAkB,KAAK,GAC1B;AACE,gBAAM,IAAI,MAAM,cAAc;QACjC;AACD,cAAMA,QAA0B;UAC5B,MAAM;UACN;UAGA;UACA;UACA,KAAK,KAAK,OAAO,MAAM,OAAO,GAAG;UACjC;UACA;;AAEJ,aAAK,SAASA;AACd,cAAM,SAASA;AACf,aAAK,qBAAqB,IAAI,QAAQA,KAAI;;MAGvC,mBAAmB,OAAe,KAAW;;AAChD,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,oBAAoB,CAAC,OAAO,aAAa;AACzD,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,cAAM,QAAQ,OAAO,SAAS,IAAG;AACjC,cAAM,QACF,KAAA,KAAK,qBAAqB,IAAI,MAAM,OAAC,QAAA,OAAA,SAAA,KAAI,OAAO,SAAS,IAAG;AAChE,YACI,CAAC,QACD,CAAC,SACD,KAAK,SAAS,uBACb,KAAK,SAAS,sBAAsB,CAAC,kBAAkB,IAAI,KAC5D,CAAC,kBAAkB,KAAK,GAC1B;AACE,gBAAM,IAAI,MAAM,cAAc;QACjC;AACD,cAAMA,QAAyB;UAC3B,MAAM;UACN;UAGA;UACA;UACA,KAAK,KAAK,OAAO,MAAM,OAAO,GAAG;UACjC;UACA;;AAEJ,aAAK,SAASA;AACd,cAAM,SAASA;AACf,aAAK,qBAAqB,IAAI,QAAQA,KAAI;;MAGvC,8BAA8B,OAAa;AAC9C,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,oBAAoB,CAAC,OAAO,aAAa;AACzD,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,aAAK,QAAQ;UACT,MAAM;UACN;UACA;UACA,KAAK;UACL,KAAK;UACL,cAAc,CAAA;;AAElB,eAAO,SAAS,KAAK,KAAK,KAAK;;MAG5B,8BAA8B,OAAe,KAAW;AAC3D,cAAMA,QAAO,KAAK;AAClB,YACIA,MAAK,SAAS,4BACdA,MAAK,OAAO,SAAS,kBACvB;AACE,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,QAAAA,MAAK,MAAM;AACX,QAAAA,MAAK,MAAM,KAAK,OAAO,MAAM,OAAO,GAAG;AACvC,aAAK,QAAQA,MAAK;;MAGf,yBAAyB,OAAa;AACzC,cAAM,SAAS,KAAK;AACpB,YAAI,OAAO,SAAS,0BAA0B;AAC1C,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,aAAK,QAAQ;UACT,MAAM;UACN;UACA;UACA,KAAK;UACL,KAAK;UACL,UAAU,CAAA;;AAEd,eAAO,aAAa,KAAK,KAAK,KAAK;;MAGhC,yBAAyB,OAAe,KAAW;AACtD,cAAMA,QAAO,KAAK;AAClB,YAAIA,MAAK,SAAS,qBAAqB;AACnC,gBAAM,IAAI,MAAM,cAAc;QACjC;AAED,QAAAA,MAAK,MAAM;AACX,QAAAA,MAAK,MAAM,KAAK,OAAO,MAAM,OAAO,GAAG;AACvC,aAAK,QAAQA,MAAK;;IAEzB;QA2BY,qBAAY;MASrB,YAAmB,SAA8B;AAC7C,aAAK,SAAS,IAAI,kBAAkB,OAAO;AAC3C,aAAK,aAAa,IAAI,gBAAgB,KAAK,MAAM;;MAU9C,aACH,QACA,QAAQ,GACR,MAAc,OAAO,QAAM;AAE3B,aAAK,OAAO,SAAS;AACrB,aAAK,WAAW,gBAAgB,QAAQ,OAAO,GAAG;AAClD,cAAM,UAAU,KAAK,OAAO;AAC5B,cAAM,QAAQ,KAAK,OAAO;AAC1B,cAAM,UAAyB;UAC3B,MAAM;UACN,QAAQ;UACR;UACA;UACA,KAAK;UACL;UACA;;AAEJ,gBAAQ,SAAS;AACjB,cAAM,SAAS;AACf,eAAO;;MAUJ,WACH,QACA,QAAQ,GACR,MAAc,OAAO,QAAM;AAE3B,aAAK,OAAO,SAAS;AACrB,aAAK,WAAW,cAAc,QAAQ,OAAO,GAAG;AAChD,eAAO,KAAK,OAAO;;MAoChB,aACH,QACA,QAAQ,GACR,MAAc,OAAO,QACrB,eAMkB,QAAS;AAE3B,aAAK,OAAO,SAAS;AACrB,aAAK,WAAW,gBACZ,QACA,OACA,KACA,YAAqB;AAEzB,eAAO,KAAK,OAAO;;IAE1B;QCj7BY,sBAAa;MAOtB,YAAmB,UAAgC;AAC/C,aAAK,YAAY;;MAQd,MAAMA,OAAU;AACnB,gBAAQA,MAAK,MAAI;UACb,KAAK;AACD,iBAAK,iBAAiBA,KAAI;AAC1B;UACJ,KAAK;AACD,iBAAK,eAAeA,KAAI;AACxB;UACJ,KAAK;AACD,iBAAK,mBAAmBA,KAAI;AAC5B;UACJ,KAAK;AACD,iBAAK,oBAAoBA,KAAI;AAC7B;UACJ,KAAK;AACD,iBAAK,eAAeA,KAAI;AACxB;UACJ,KAAK;AACD,iBAAK,oBAAoBA,KAAI;AAC7B;UACJ,KAAK;AACD,iBAAK,yBAAyBA,KAAI;AAClC;UACJ,KAAK;AACD,iBAAK,kBAAkBA,KAAI;AAC3B;UACJ,KAAK;AACD,iBAAK,uBAAuBA,KAAI;AAChC;UACJ,KAAK;AACD,iBAAK,4BAA4BA,KAAI;AACrC;UACJ,KAAK;AACD,iBAAK,sBAAsBA,KAAI;AAC/B;UACJ,KAAK;AACD,iBAAK,8BAA8BA,KAAI;AACvC;UACJ,KAAK;AACD,iBAAK,WAAWA,KAAI;AACpB;UACJ,KAAK;AACD,iBAAK,WAAWA,KAAI;AACpB;UACJ,KAAK;AACD,iBAAK,eAAeA,KAAI;AACxB;UACJ,KAAK;AACD,iBAAK,mBAAmBA,KAAI;AAC5B;UACJ,KAAK;AACD,iBAAK,aAAaA,KAAI;AACtB;UACJ,KAAK;AACD,iBAAK,gBAAgBA,KAAI;AACzB;UACJ,KAAK;AACD,iBAAK,mBAAmBA,KAAI;AAC5B;UACJ,KAAK;AACD,iBAAK,uBAAuBA,KAAI;AAChC;UACJ;AACI,kBAAM,IAAI,MACN,iBAAkBA,MAA4B,IAAI,EAAE;QAE/D;;MAGG,iBAAiBA,OAAiB;AACtC,YAAI,KAAK,UAAU,oBAAoB;AACnC,eAAK,UAAU,mBAAmBA,KAAI;QACzC;AACD,QAAAA,MAAK,SAAS,QAAQ,KAAK,OAAO,IAAI;AACtC,YAAI,KAAK,UAAU,oBAAoB;AACnC,eAAK,UAAU,mBAAmBA,KAAI;QACzC;;MAGG,eAAeA,OAAe;AAClC,YAAI,KAAK,UAAU,kBAAkB;AACjC,eAAK,UAAU,iBAAiBA,KAAI;QACvC;AACD,YAAIA,MAAK,SAAS,eAAeA,MAAK,SAAS,cAAc;AACzD,UAAAA,MAAK,aAAa,QAAQ,KAAK,OAAO,IAAI;QAC7C;AACD,YAAI,KAAK,UAAU,kBAAkB;AACjC,eAAK,UAAU,iBAAiBA,KAAI;QACvC;;MAGG,mBAAmBA,OAAmB;AAC1C,YAAI,KAAK,UAAU,sBAAsB;AACrC,eAAK,UAAU,qBAAqBA,KAAI;QAC3C;AACD,YAAI,KAAK,UAAU,sBAAsB;AACrC,eAAK,UAAU,qBAAqBA,KAAI;QAC3C;;MAGG,oBAAoBA,OAAoB;AAC5C,YAAI,KAAK,UAAU,uBAAuB;AACtC,eAAK,UAAU,sBAAsBA,KAAI;QAC5C;AACD,QAAAA,MAAK,aAAa,QAAQ,KAAK,OAAO,IAAI;AAC1C,YAAI,KAAK,UAAU,uBAAuB;AACtC,eAAK,UAAU,sBAAsBA,KAAI;QAC5C;;MAGG,eAAeA,OAAe;AAClC,YAAI,KAAK,UAAU,kBAAkB;AACjC,eAAK,UAAU,iBAAiBA,KAAI;QACvC;AACD,YAAI,KAAK,UAAU,kBAAkB;AACjC,eAAK,UAAU,iBAAiBA,KAAI;QACvC;;MAGG,oBAAoBA,OAAoB;AAC5C,YAAI,KAAK,UAAU,uBAAuB;AACtC,eAAK,UAAU,sBAAsBA,KAAI;QAC5C;AACD,QAAAA,MAAK,SAAS,QAAQ,KAAK,OAAO,IAAI;AACtC,YAAI,KAAK,UAAU,uBAAuB;AACtC,eAAK,UAAU,sBAAsBA,KAAI;QAC5C;;MAGG,yBAAyBA,OAAyB;AACtD,YAAI,KAAK,UAAU,4BAA4B;AAC3C,eAAK,UAAU,2BAA2BA,KAAI;QACjD;AACD,aAAK,eAAeA,MAAK,GAAG;AAC5B,aAAK,eAAeA,MAAK,GAAG;AAC5B,YAAI,KAAK,UAAU,4BAA4B;AAC3C,eAAK,UAAU,2BAA2BA,KAAI;QACjD;;MAGG,kBAAkBA,OAAkB;AACxC,YAAI,KAAK,UAAU,qBAAqB;AACpC,eAAK,UAAU,oBAAoBA,KAAI;QAC1C;AACD,YAAI,KAAK,UAAU,qBAAqB;AACpC,eAAK,UAAU,oBAAoBA,KAAI;QAC1C;;MAGG,uBAAuBA,OAAuB;AAClD,YAAI,KAAK,UAAU,0BAA0B;AACzC,eAAK,UAAU,yBAAyBA,KAAI;QAC/C;AACD,aAAK,MAAMA,MAAK,IAAI;AACpB,aAAK,MAAMA,MAAK,KAAK;AACrB,YAAI,KAAK,UAAU,0BAA0B;AACzC,eAAK,UAAU,yBAAyBA,KAAI;QAC/C;;MAGG,4BAA4BA,OAA4B;AAC5D,YAAI,KAAK,UAAU,+BAA+B;AAC9C,eAAK,UAAU,8BAA8BA,KAAI;QACpD;AACD,QAAAA,MAAK,aAAa,QAAQ,KAAK,OAAO,IAAI;AAC1C,YAAI,KAAK,UAAU,+BAA+B;AAC9C,eAAK,UAAU,8BAA8BA,KAAI;QACpD;;MAGG,sBAAsBA,OAAsB;AAChD,YAAI,KAAK,UAAU,yBAAyB;AACxC,eAAK,UAAU,wBAAwBA,KAAI;QAC9C;AACD,aAAK,MAAMA,MAAK,IAAI;AACpB,aAAK,MAAMA,MAAK,KAAK;AACrB,YAAI,KAAK,UAAU,yBAAyB;AACxC,eAAK,UAAU,wBAAwBA,KAAI;QAC9C;;MAGG,8BACJA,OAA8B;AAE9B,YAAI,KAAK,UAAU,iCAAiC;AAChD,eAAK,UAAU,gCAAgCA,KAAI;QACtD;AACD,aAAK,MAAMA,MAAK,UAAU;AAC1B,YAAI,KAAK,UAAU,iCAAiC;AAChD,eAAK,UAAU,gCAAgCA,KAAI;QACtD;;MAGG,WAAWA,OAAW;AAC1B,YAAI,KAAK,UAAU,cAAc;AAC7B,eAAK,UAAU,aAAaA,KAAI;QACnC;AACD,YAAI,KAAK,UAAU,cAAc;AAC7B,eAAK,UAAU,aAAaA,KAAI;QACnC;;MAGG,WAAWA,OAAW;AAC1B,YAAI,KAAK,UAAU,cAAc;AAC7B,eAAK,UAAU,aAAaA,KAAI;QACnC;AACD,YAAIA,MAAK,WAAW;AAChB,eAAK,MAAMA,MAAK,SAAS;QAC5B;AACD,QAAAA,MAAK,aAAa,QAAQ,KAAK,OAAO,IAAI;AAC1C,YAAI,KAAK,UAAU,cAAc;AAC7B,eAAK,UAAU,aAAaA,KAAI;QACnC;;MAGG,eAAeA,OAAe;AAClC,YAAI,KAAK,UAAU,kBAAkB;AACjC,eAAK,UAAU,iBAAiBA,KAAI;QACvC;AACD,YAAIA,MAAK,KAAK;AACV,eAAK,MAAMA,MAAK,GAAG;QACtB;AACD,YAAIA,MAAK,QAAQ;AACb,eAAK,MAAMA,MAAK,MAAM;QACzB;AACD,YAAI,KAAK,UAAU,kBAAkB;AACjC,eAAK,UAAU,iBAAiBA,KAAI;QACvC;;MAGG,mBAAmBA,OAAmB;AAC1C,YAAI,KAAK,UAAU,sBAAsB;AACrC,eAAK,UAAU,qBAAqBA,KAAI;QAC3C;AACD,YAAI,KAAK,UAAU,sBAAsB;AACrC,eAAK,UAAU,qBAAqBA,KAAI;QAC3C;;MAGG,aAAaA,OAAa;AAC9B,YAAI,KAAK,UAAU,gBAAgB;AAC/B,eAAK,UAAU,eAAeA,KAAI;QACrC;AACD,QAAAA,MAAK,aAAa,QAAQ,KAAK,OAAO,IAAI;AAC1C,YAAI,KAAK,UAAU,gBAAgB;AAC/B,eAAK,UAAU,eAAeA,KAAI;QACrC;;MAGG,gBAAgBA,OAAgB;AACpC,YAAI,KAAK,UAAU,mBAAmB;AAClC,eAAK,UAAU,kBAAkBA,KAAI;QACxC;AACD,aAAK,MAAMA,MAAK,OAAO;AACvB,YAAI,KAAK,UAAU,mBAAmB;AAClC,eAAK,UAAU,kBAAkBA,KAAI;QACxC;;MAGG,mBAAmBA,OAAmB;AAC1C,YAAI,KAAK,UAAU,sBAAsB;AACrC,eAAK,UAAU,qBAAqBA,KAAI;QAC3C;AACD,aAAK,aAAaA,MAAK,OAAO;AAC9B,aAAK,WAAWA,MAAK,KAAK;AAC1B,YAAI,KAAK,UAAU,sBAAsB;AACrC,eAAK,UAAU,qBAAqBA,KAAI;QAC3C;;MAGG,uBAAuBA,OAAuB;AAClD,YAAI,KAAK,UAAU,0BAA0B;AACzC,eAAK,UAAU,yBAAyBA,KAAI;QAC/C;AACD,QAAAA,MAAK,SAAS,QAAQ,KAAK,OAAO,IAAI;AACtC,YAAI,KAAK,UAAU,0BAA0B;AACzC,eAAK,UAAU,yBAAyBA,KAAI;QAC/C;;IAER;ACpTe,aAAA,mBACZ,QACA,SAA8B;AAE9B,aAAO,IAAI,aAAa,OAAO,EAAE,aAAa,OAAO,MAAM,CAAC;IAChE;AAOgB,aAAA,sBACZ,QACA,SAAiC;AAEjC,UAAI,gBAAgB,OAAO,EAAE,gBAAgB,MAAM;IACvD;AAEgB,aAAA,eACZA,OACA,UAAgC;AAEhC,UAAI,cAAc,QAAQ,EAAE,MAAMA,KAAI;IAC1C;;;;;;;;;;;;ACtCA;AAAA,sDAAAE,UAAAC,SAAA;AAAA;AAOA,QAAM,kBAAkB,kBAAqC;AAC7D,QAAM,YAAY,IAAK,MAAM;AAAA,MAC5B,cAAc;AACb,aAAK,UAAU;AACf,aAAK,gBAAgB,CAAC;AACtB,aAAK,aAAa,IAAI,gBAAgB,IAAI;AAAA,MAC3C;AAAA,MAEA,iBAAiB;AAUhB,aAAK,gBAAgB,CAAC;AAAA,MACvB;AAAA,MAEA,YAAY,OAAO,KAAK,IAAI;AAC3B,YACC,MAAM,KACN,MAAM,OACL,KAAK,QAAQ,YAAY,KAAK,MAAM,MACpC,KAAK,QAAQ,MAAM,OAAO,GAAG,EAAE,WAAW,KAAK,KAC/C,KAAK,QAAQ,MAAM,OAAO,GAAG,EAAE,WAAW,KAAK,IAC/C;AACD,eAAK,cAAc,KAAK,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;AAAA,QAChE;AAAA,MACD;AAAA,MAEA,oBAAoB,WAAW,OAAO;AACrC,cAAM,QAAQ,OAAO,UAAU,YAAY,MAAM,SAAS,GAAG;AAC7D,cAAM,QAAQ,OAAO,UAAU,YAAY,MAAM,SAAS,GAAG;AAE7D,aAAK,gBAAgB,CAAC;AACtB,aAAK,UAAU;AAEf,YAAI;AACH,eAAK,WAAW,gBAAgB,WAAW,QAAQ,QAAQ;AAAA,YAC1D,SAAS;AAAA,YACT,aAAa;AAAA,UACd,CAAC;AAAA,QACF,QAAQ;AAAA,QAER;AACA,eAAO,KAAK;AAAA,MACb;AAAA,IACD,EAAG;AAOH,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AASf,iBAAS,UAAUC,OAAM;AACxB,cAAIA,MAAK,OAAO;AACf,mBAAOA,MAAK;AAAA,UACb;AACA,cACC,OAAOA,MAAK,UAAU,aACrBA,MAAK,OAAO,SAAS,mBACrBA,MAAK,OAAO,SAAS,qBACtBA,MAAK,OAAO,OAAO,SAAS,gBAC5BA,MAAK,OAAO,OAAO,SAAS,YAC5BA,MAAK,OAAO,UAAU,CAAC,MAAMA,OAC5B;AACD,kBAAM,UAAUA,MAAK;AACrB,kBAAM,QACLA,MAAK,OAAO,UAAU,SAAS,KAC/BA,MAAK,OAAO,UAAU,CAAC,EAAE,SAAS,aAClC,OAAOA,MAAK,OAAO,UAAU,CAAC,EAAE,UAAU,WACvCA,MAAK,OAAO,UAAU,CAAC,EAAE,QACzB;AAEJ,mBAAO,EAAE,SAAS,MAAM;AAAA,UACzB;AAEA,iBAAO;AAAA,QACR;AAEA,eAAO;AAAA,UACN,QAAQA,OAAM;AACb,kBAAM,SAAS,UAAUA,KAAI;AAE7B,gBAAI,QAAQ;AACX,oBAAM,EAAE,SAAS,MAAM,IAAI;AAC3B,oBAAM,oBAAoB,UAAU;AAAA,gBACnC;AAAA,gBACA;AAAA,cACD;AAEA,kBAAI,kBAAkB,SAAS,GAAG;AACjC,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM;AAAA,oBACL,cAAc,kBAAkB,KAAK,IAAI;AAAA,kBAC1C;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC7IA;AAAA,iDAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QACT,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,kBAAkBC,OAAM;AACvB,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,YACZ,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxCA;AAAA,mDAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,gBAAgBC,OAAM;AACrB,gBACCA,MAAK,aAAa,YAClBA,MAAK,SAAS,SAAS,cACtB;AACD,sBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,aAAa,CAAC;AAAA,YACjD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzCA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,QAAQC,OAAM;AACb,kBAAM,QAAQ,WAAW,cAAcA,KAAI;AAE3C,gBACC,MAAM,SAAS,uBACf,MAAM,MAAM,CAAC,MAAM,KAClB;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,yBAAO,MAAM;AAAA,oBACZ,CAAC,MAAM,MAAM,CAAC,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;AAAA,oBACvC;AAAA,kBACD;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC3DA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAajB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAW3B,iBAAS,YAAY,KAAK;AACzB,iBAAO,IAAI,SAAS;AAAA,QACrB;AAQA,iBAAS,YAAYC,OAAM;AAC1B,gBAAM,YAAY,WAAW,qBAAqBA,KAAI;AAEtD,mBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,EAAE,GAAG;AAC1C,kBAAM,WAAW,UAAU,CAAC;AAG5B,kBAAM,OAAO,SAAS,KAAK,OAAO,WAAW;AAC7C,kBAAM,MAAM;AAAA,cACX,OAAO,SAAS,wBAAwBA,OAAM,UAAU,EACtD,IAAI;AAAA,cACN,KAAK,WAAW,eAAeA,MAAK,IAAI,EAAE,IAAI;AAAA,YAC/C;AAEA,gBAAI,KAAK,UAAU,GAAG;AACrB,sBAAQ,OAAO;AAAA,gBACd;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM,EAAE,MAAM,SAAS,KAAK;AAAA,cAC7B,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAMA,eAAO;AAAA,UACN,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,QACrB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACjGA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,YAAI,QAAQ,CAAC;AAWb,iBAAS,SAAS,MAAM,UAAU;AACjC,gBAAM,WAAW,MAAM,GAAG,EAAE;AAC5B,gBAAM,MAAM,IAAI,IAAI;AAEpB,cAAI,CAAC,SAAS,GAAG,GAAG;AACnB,qBAAS,GAAG,IAAI;AAAA,cACf,WAAW,EAAE,MAAM,OAAO,KAAK,OAAO,KAAK,MAAM;AAAA,cACjD,QAAQ,EAAE,MAAM,OAAO,KAAK,OAAO,KAAK,MAAM;AAAA,YAC/C;AAAA,UACD;AAEA,iBAAO,SAAS,GAAG,EAAE,WAAW,WAAW,WAAW;AAAA,QACvD;AAEA,eAAO;AAAA;AAAA,UAEN,UAAU;AACT,oBAAQ,CAAC;AAAA,UACV;AAAA;AAAA,UAGA,YAAY;AACX,kBAAM,KAAK,uBAAO,OAAO,IAAI,CAAC;AAAA,UAC/B;AAAA;AAAA,UAGA,mBAAmB;AAClB,kBAAM,IAAI;AAAA,UACX;AAAA;AAAA,UAGA,uCAAuCC,OAAM;AAC5C,gBACCA,MAAK,SACLA,MAAK,MAAM,SAAS,iCACnB;AACD;AAAA,YACD;AAEA,kBAAM,OAAO,SAAS,sBAAsBA,KAAI;AAChD,kBAAM,OACLA,MAAK,SAAS,qBAAqBA,MAAK,OAAO;AAEhD,gBAAI,SAAS,QAAQ,SAAS,eAAe;AAC5C;AAAA,YACD;AAEA,kBAAM,QAAQ,SAAS,MAAMA,MAAK,MAAM;AACxC,gBAAI;AAEJ,gBAAI,SAAS,OAAO;AACnB,4BAAc,MAAM,QAAQ,MAAM;AAClC,oBAAM,MAAM;AAAA,YACb,WAAW,SAAS,OAAO;AAC1B,4BAAc,MAAM,QAAQ,MAAM;AAClC,oBAAM,MAAM;AAAA,YACb,OAAO;AACN,4BAAc,MAAM,QAAQ,MAAM,OAAO,MAAM;AAC/C,oBAAM,OAAO;AAAA,YACd;AAEA,gBAAI,aAAa;AAChB,sBAAQ,OAAO;AAAA,gBACd,KAAKA,MAAK,IAAI;AAAA,gBACd,WAAW;AAAA,gBACX,MAAM,EAAE,KAAK;AAAA,cACd,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnHA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAajB,aAAS,qBAAqB,YAAY,MAAM,MAAM;AACrD,aAAO,KAAK,MAAM,OAAK,KAAK,KAAK,OAAK,WAAW,GAAG,CAAC,CAAC,CAAC;AAAA,IACxD;AAQA,aAAS,uBAAuB,UAAUC,OAAM;AAC/C,UAAIA,MAAK,SAAS,uBAAuBA,MAAK,aAAa,UAAU;AACpE,eAAO;AAAA,UACN,GAAG,uBAAuB,UAAUA,MAAK,IAAI;AAAA,UAC7C,GAAG,uBAAuB,UAAUA,MAAK,KAAK;AAAA,QAC/C;AAAA,MACD;AACA,aAAO,CAACA,KAAI;AAAA,IACb;AAEA,QAAM,YAAY,uBAAuB,KAAK,MAAM,IAAI;AACxD,QAAM,aAAa,uBAAuB,KAAK,MAAM,IAAI;AAOzD,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAS3B,iBAAS,MAAM,GAAG,GAAG;AACpB,cAAI,EAAE,SAAS,EAAE,MAAM;AACtB,mBAAO;AAAA,UACR;AAEA,cACC,EAAE,SAAS,wBACV,EAAE,aAAa,QAAQ,EAAE,aAAa,SACvC,EAAE,aAAa,EAAE,UAChB;AACD,mBACE,MAAM,EAAE,MAAM,EAAE,IAAI,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,KAC/C,MAAM,EAAE,MAAM,EAAE,KAAK,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI;AAAA,UAElD;AAEA,iBAAO,SAAS,YAAY,GAAG,GAAG,UAAU;AAAA,QAC7C;AAEA,cAAM,WAAW,qBAAqB,KAAK,MAAM,KAAK;AAEtD,eAAO;AAAA,UACN,YAAYC,OAAM;AACjB,kBAAM,OAAOA,MAAK,MACjB,oBACC,KAAK,SAAS,uBACd,KAAK,aAAa,OACf,CAAC,MAAM,GAAG,WAAW,IAAI,CAAC,IAC1B,CAAC,IAAI;AACV,gBAAI,UAAUA,OACb,cAAc,kBAAkB;AAAA,cAAI,OACnC,UAAU,CAAC,EAAE,IAAI,UAAU;AAAA,YAC5B;AAED,mBACC,QAAQ,UACR,QAAQ,OAAO,SAAS,iBACxB,QAAQ,OAAO,cAAc,SAC5B;AACD,wBAAU,QAAQ;AAElB,oBAAM,oBAAoB,UAAU,QAAQ,IAAI,EAAE;AAAA,gBACjD;AAAA,cACD;AAEA,4BAAc,YAAY;AAAA,gBAAI,gBAC7B,WAAW;AAAA,kBACV,eACC,CAAC,kBAAkB;AAAA,oBAAK,sBACvB,SAAS,kBAAkB,SAAS;AAAA,kBACrC;AAAA,gBACF;AAAA,cACD;AAEA,kBACC,YAAY,KAAK,gBAAc,WAAW,WAAW,CAAC,GACrD;AACD,wBAAQ,OAAO,EAAE,MAAM,MAAM,WAAW,aAAa,CAAC;AACtD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AChJA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAMjB,QAAM,WAAW;AACjB,QAAM,WAAW;AAKjB,QAAM,aAAN,MAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKhB,YAAY,OAAOC,OAAM;AACxB,aAAK,QAAQ;AACb,aAAK,OAAOA;AACZ,aAAK,aAAa,oBAAI,IAAI;AAAA,MAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,gBAAgBA,OAAM;AACrB,cAAM,OAAO,SAAS,sBAAsBA,KAAI;AAEhD,YAAI,CAAC,KAAK,WAAW,IAAI,IAAI,GAAG;AAC/B,eAAK,WAAW,IAAI,MAAM,EAAE,KAAK,OAAO,KAAK,MAAM,CAAC;AAAA,QACrD;AACA,eAAO,KAAK,WAAW,IAAI,IAAI;AAAA,MAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,kBAAkBA,OAAM;AACvB,cAAM,QAAQ,KAAK,gBAAgBA,KAAI;AAEvC,eACE,SAAS,KAAKA,MAAK,IAAI,KAAK,MAAM,OAClC,SAAS,KAAKA,MAAK,IAAI,KAAK,MAAM;AAAA,MAErC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,eAAeA,OAAM;AACpB,cAAM,QAAQ,KAAK,gBAAgBA,KAAI;AAEvC,YAAI,SAAS,KAAKA,MAAK,IAAI,GAAG;AAC7B,gBAAM,MAAM;AAAA,QACb;AACA,YAAI,SAAS,KAAKA,MAAK,IAAI,GAAG;AAC7B,gBAAM,MAAM;AAAA,QACb;AAAA,MACD;AAAA,IACD;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,YAAI,OAAO;AAEX,eAAO;AAAA,UACN,iBAAiBC,OAAM;AACtB,mBAAO,IAAI,WAAW,MAAMA,KAAI;AAAA,UACjC;AAAA,UACA,0BAA0B;AACzB,mBAAO,KAAK;AAAA,UACb;AAAA,UAEA,SAASA,OAAM;AACd,kBAAM,OAAO,SAAS,sBAAsBA,KAAI;AAGhD,gBAAIA,MAAK,OAAO,SAAS,oBAAoB;AAC5C;AAAA,YACD;AAGA,gBAAI,SAAS,MAAM;AAClB;AAAA,YACD;AAgBA,gBACC,SAAS,eACTA,MAAK,SAAS,UACd,CAACA,MAAK,YACN,CAACA,MAAK,aACN,CAACA,MAAK,QACL;AACD;AAAA,YACD;AAGA,gBAAI,KAAK,kBAAkBA,KAAI,GAAG;AACjC,sBAAQ,OAAO;AAAA,gBACd,MAAM,KAAK;AAAA,gBACX,KAAKA,MAAK,IAAI;AAAA,gBACd,WAAW;AAAA,gBACX,MAAM,EAAE,KAAK;AAAA,cACd,CAAC;AAAA,YACF;AAGA,iBAAK,eAAeA,KAAI;AAAA,UACzB;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpKA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAQ3B,iBAAS,MAAM,GAAG,GAAG;AACpB,cAAI,EAAE,SAAS,EAAE,MAAM;AACtB,mBAAO;AAAA,UACR;AAEA,iBAAO,SAAS,YAAY,GAAG,GAAG,UAAU;AAAA,QAC7C;AACA,eAAO;AAAA,UACN,gBAAgBC,OAAM;AACrB,kBAAM,gBAAgB,CAAC;AAEvB,uBAAW,cAAcA,MAAK,OAAO;AACpC,kBAAI,WAAW,MAAM;AACpB,sBAAM,OAAO,WAAW;AAExB,oBACC,cAAc;AAAA,kBAAK,kBAClB,MAAM,cAAc,IAAI;AAAA,gBACzB,GACC;AACD,0BAAQ,OAAO;AAAA,oBACd,MAAM;AAAA,oBACN,WAAW;AAAA,kBACZ,CAAC;AAAA,gBACF,OAAO;AACN,gCAAc,KAAK,IAAI;AAAA,gBACxB;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC7EA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,cAAc,CAAC,mBAAmB,iBAAiB;AACzD,QAAM,kBAAkB;AAAA,MACvB;AAAA,MACA;AAAA,IACD;AAYA,aAAS,wBAAwB,kBAAkB,MAAM;AACxD,YAAM,eAAe,SAAS,UAAU,cAAc;AAEtD,aAAO,aAAa,SAAS,gBAAgB;AAAA,IAC9C;AAOA,aAAS,oBAAoBC,OAAM;AAClC,UAAIA,MAAK,cAAcA,MAAK,WAAW,SAAS,GAAG;AAClD,cAAM,iBAAiBA,MAAK;AAC5B,cAAMC,SAAQ,eAAe;AAAA,UAC5B,CAAC,EAAE,KAAK,MACP,wBAAwB,MAAM,OAAO,KACrC,wBAAwB,MAAM,WAAW;AAAA,QAC3C;AACA,cAAM,IAAIA,SAAQ,KAAKA,SAAQ;AAE/B,eAAO,eAAe,CAAC,EAAE;AAAA,MAC1B;AACA,UAAID,MAAK,SAAS,wBAAwB;AACzC,YAAIA,MAAK,UAAU;AAClB,iBAAO;AAAA,QACR;AACA,eAAO;AAAA,MACR;AACA,aAAO;AAAA,IACR;AAQA,aAAS,0BAA0B,OAAO,OAAO;AAChD,YAAM,oBAAoB,oBAAoB,KAAK;AACnD,YAAM,oBAAoB,oBAAoB,KAAK;AAEnD,WACE,MAAM,eAAe,UAAU,MAAM,eAAe,YACpD,MAAM,eAAe,UAAU,MAAM,eAAe,SACpD;AACD,cAAM,aAAa,sBAAsB;AACzC,cAAM,aAAa,sBAAsB;AACzC,cAAM,WAAW,wBAAwB,mBAAmB,OAAO;AACnE,cAAM,WAAW,wBAAwB,mBAAmB,OAAO;AAEnE,YAAK,cAAc,YAAc,cAAc,UAAW;AACzD,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,UACE,sBAAsB,eACtB,sBAAsB,eACtB,sBAAsB,sBACtB,sBAAsB,eACtB,sBAAsB,sBACtB,sBAAsB,aACtB;AACD,eAAO;AAAA,MACR;AACA,UACE,wBAAwB,mBAAmB,WAAW,KACtD,wBAAwB,mBAAmB,OAAO,KAClD,wBAAwB,mBAAmB,WAAW,KACtD,wBAAwB,mBAAmB,OAAO,GAClD;AACD,eAAO;AAAA,MACR;AACA,aAAO;AAAA,IACR;AASA,aAAS,yBACRA,OACA,eACA,0BACC;AACD,UAAI,IAAI;AAER,aAAO,IAAI,cAAc,QAAQ;AAChC,cAAM,eAAe,cAAc,CAAC;AAEpC,YAAI,0BAA0B;AAC7B,gBAAM,aACLA,MAAK,eAAe,UAAUA,MAAK,eAAe;AACnD,gBAAM,iBACL,aAAa,eAAe,UAC5B,aAAa,eAAe;AAE7B,cAAI,eAAe,gBAAgB;AAClC;AACA;AAAA,UACD;AAAA,QACD;AAEA,YAAI,0BAA0BA,OAAM,YAAY,GAAG;AAClD,iBAAO;AAAA,QACR;AACA;AAAA,MACD;AACA,aAAO;AAAA,IACR;AAQA,aAAS,0BAA0B,OAAO,MAAM;AAC/C,aAAO,MACL,OAAO,CAAC,EAAE,gBAAgB,MAAM,oBAAoB,IAAI,EACxD,IAAI,CAAC,EAAE,MAAAA,MAAK,MAAMA,KAAI;AAAA,IACzB;AAOA,aAAS,UAAUA,OAAM;AACxB,UAAIA,SAAQA,MAAK,UAAUA,MAAK,OAAO,OAAO;AAC7C,eAAOA,MAAK,OAAO,MAAM,KAAK;AAAA,MAC/B;AACA,aAAO;AAAA,IACR;AAYA,aAAS,eACR,SACAA,OACA,SACA,iBACA,gBACA,0BACC;AACD,YAAMD,UAAS,UAAUC,KAAI;AAE7B,UAAI,QAAQ,IAAID,OAAM,GAAG;AACxB,cAAM,gBAAgB,QAAQ,IAAIA,OAAM;AACxC,cAAM,cAAc,CAAC;AACrB,cAAM,cAAc,0BAA0B,eAAe,QAAQ;AACrE,YAAI;AAEJ,YAAI,gBAAgB;AACnB,wBAAc,0BAA0B,eAAe,QAAQ;AAAA,QAChE;AACA,YAAI,oBAAoB,UAAU;AACjC,cACC;AAAA,YACCC;AAAA,YACA;AAAA,YACA;AAAA,UACD,GACC;AACD,wBAAY,KAAK,QAAQ;AAAA,UAC1B;AACA,cAAI,gBAAgB;AACnB,gBACC;AAAA,cACCA;AAAA,cACA;AAAA,cACA;AAAA,YACD,GACC;AACD,0BAAY,KAAK,UAAU;AAAA,YAC5B;AAAA,UACD;AAAA,QACD,WAAW,oBAAoB,UAAU;AACxC,cACC;AAAA,YACCA;AAAA,YACA;AAAA,YACA;AAAA,UACD,GACC;AACD,wBAAY,KAAK,QAAQ;AAAA,UAC1B;AACA,cACC;AAAA,YACCA;AAAA,YACA;AAAA,YACA;AAAA,UACD,GACC;AACD,wBAAY,KAAK,UAAU;AAAA,UAC5B;AAAA,QACD;AACA,oBAAY;AAAA,UAAQ,eACnB,QAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA;AAAA,YACA,MAAM;AAAA,cACL,QAAAD;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAAA,MACD;AAAA,IACD;AAgBA,aAAS,qBACR,SACA,SACA,iBACA,gBACA,0BACC;AACD,aAAO,SAAUC,OAAM;AACtB,cAAMD,UAAS,UAAUC,KAAI;AAE7B,YAAID,SAAQ;AACX;AAAA,YACC;AAAA,YACAC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AACA,gBAAM,cAAc,EAAE,MAAAA,OAAM,gBAAgB;AAC5C,cAAI,QAAQ,CAAC,WAAW;AAExB,cAAI,QAAQ,IAAID,OAAM,GAAG;AACxB,kBAAM,gBAAgB,QAAQ,IAAIA,OAAM;AAExC,oBAAQ,CAAC,GAAG,eAAe,WAAW;AAAA,UACvC;AACA,kBAAQ,IAAIA,SAAQ,KAAK;AAAA,QAC1B;AAAA,MACD;AAAA,IACD;AAGA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,gBAAgB;AAAA,YAChB,0BAA0B;AAAA,UAC3B;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,gBAAgB;AAAA,gBACf,MAAM;AAAA,cACP;AAAA,cACA,0BAA0B;AAAA,gBACzB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,UAAU;AAAA,QACX;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,gBAAgB,yBAAyB,CAAC,IAAI,QAAQ;AAC/D,cAAM,UAAU,oBAAI,IAAI;AACxB,cAAM,WAAW;AAAA,UAChB,mBAAmB;AAAA,YAClB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAEA,YAAI,gBAAgB;AACnB,mBAAS,yBAAyB;AAAA,YACjC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AACA,mBAAS,uBAAuB;AAAA,YAC/B;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AACA,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA;;;AC9WA;AAAA,uDAAAG,UAAAC,SAAA;AAAA;AAkBA,QAAM,WAAW;AAWjB,QAAM,aAAN,MAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMhB,YAAY,OAAO,YAAY;AAC9B,aAAK,QAAQ;AACb,aAAK,aAAa;AAClB,aAAK,gBAAgB;AAAA,MACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,YAAY,OAAO;AAClB,aAAK,gBAAgB;AACrB,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,wBAAwBC,OAAM;AAC7B,cAAM,eAAe,SAAS,iBAAiBA,KAAI;AAEnD,eAAO,KAAK;AAAA,UACX,eAAe,aAAa,QAAQ,KAAK,WAAW,IAAI;AAAA,QACzD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,wBAAwB,aAAa;AACpC,cAAM,cACL,KAAK,WAAW,eAAe,WAAW,KAAK;AAChD,cAAM,aACL,KAAK,WAAW,cAAc,WAAW,KAAK;AAE/C,eAAO,KAAK,YAAY,CAAC,YAAY,MAAM,CAAC,GAAG,WAAW,MAAM,CAAC,CAAC,CAAC;AAAA,MACpE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,iBAAiB,OAAOC,OAAM;AAC7B,YAAI;AAEJ,YAAI,KAAK,eAAe;AACvB,wBAAc;AAAA,YACb,KAAK,IAAI,KAAK,cAAc,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,YACxC,KAAK,IAAI,KAAK,cAAc,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,UACzC;AAAA,QACD,OAAO;AACN,wBAAc;AAAA,QACf;AAEA,eAAO,KAAK,MAAM;AAAA,UACjB;AAAA,UACA,KAAK,WAAW,KAAK,MAAM,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC,IAClDA,QACA,KAAK,WAAW,KAAK,MAAM,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC;AAAA,QACrD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,OAAO,aAAa;AACnB,eAAO,KAAK,iBAAiB,YAAY,OAAO,EAAE;AAAA,MACnD;AAAA,IACD;AAEA,IAAAF,QAAO,UAAU;AAAA;AAAA;;;AC5HjB;AAAA,oDAAAG,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AACjB,QAAM,aAAa;AAanB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,EAAE,aAAa,KAAK,CAAC;AAAA,QAEtC,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,aAAa;AAAA,gBACZ,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,YAAY,CAAC,IAAI,QAAQ;AAClC,cAAM,aAAa,QAAQ;AAiB3B,iBAAS,gBAAgB,OAAO,OAAO;AACtC,cAAI,MAAM,WAAW,GAAG;AACvB,mBAAO;AAAA,UACR;AAEA,gBAAM,gBAAgB,MAAM;AAS5B,gBAAM,oBAAoB,MAAM,UAAU;AAAA,YACzC,CAAC,EAAE,KAAK,MAAM,KAAK,SAAS;AAAA,UAC7B;AAEA,cAAI,kBAAkB,KAAK,CAAC,EAAE,KAAK,MAAM,MAAM,SAAS,IAAI,CAAC,GAAG;AAC/D,mBAAO;AAAA,UACR;AAGA,cAAI,UAAU,iBAAiB,MAAM,MAAM,SAAS,SAAS;AAC5D,gBACC,MAAM,MAAM,UAAU;AAAA,cAAK,CAAC,EAAE,KAAK,MAClC,MAAM,SAAS,IAAI;AAAA,YACpB,GACC;AACD,qBAAO;AAAA,YACR;AAAA,UACD;AAOA,gBAAM,wBAAwB,MAAM,UAAU;AAAA,YAC7C,CAAC,EAAE,MAAM,WAAW,MACnB,KAAK,WAAW,KAAK,WAAW,SAAS;AAAA,UAC3C;AAEA,cACC,sBAAsB,KAAK,CAAC,EAAE,KAAK,MAAM,MAAM,SAAS,IAAI,CAAC,GAC5D;AACD,mBAAO;AAAA,UACR;AAMA,cAAI,MAAM,QAAQ,KAAK,OAAK,MAAM,SAAS,EAAE,WAAW,IAAI,CAAC,GAAG;AAC/D,mBAAO;AAAA,UACR;AASA,cAAI,UAAU,eAAe;AAC5B,kBAAM,iBAAiB,MAAM,MAAM;AACnC,kBAAM,mBAAmB,cAAc,UAAU;AAAA,cAChD,CAAC,EAAE,KAAK,MAAM,MAAM,SAAS,IAAI;AAAA,YAClC;AAEA,gBACC,iBAAiB;AAAA,cAAK,OACrB,EAAE,KAAK;AAAA,gBACN,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAClB,eAAe,CAAC,KAAK,MAAM,CAAC,KAC5B,MAAM,CAAC,KAAK,eAAe,CAAC;AAAA,cAC9B;AAAA,YACD,GACC;AACD,qBAAO;AAAA,YACR;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAQA,iBAAS,yBAAyBC,OAAM,OAAO;AAC9C,cAAIA,MAAK,SAAS,uBAAuB;AAExC,mBAAO;AAAA,UACR;AAEA,cAAIA,MAAK,SAAS,kBAAkB;AACnC,mBAAO;AAAA,UACR;AAEA,gBAAM,iBAAiB,MAAM,YAAY;AAAA,YACxC,CAAC,EAAE,MAAM,MAAM,UAAUA;AAAA,UAC1B;AAEA,cAAI,CAAC,gBAAgB;AAEpB,mBAAO;AAAA,UACR;AAOA,gBAAM,eAAe,eAAe,UAAU;AAAA,YAC7C,CAAC,EAAE,KAAK,MAAM;AAAA,UACf;AAEA,iBAAO,gBAAgB,cAAc,KAAK;AAAA,QAC3C;AAOA,iBAAS,cAAc,UAAU;AAChC,gBAAM,eAAe,WAAW,SAAS,SAAS,MAAM;AAExD,kBAAQ,OAAO;AAAA,YACd,MAAM;AAAA,YACN,WAAW;AAAA,YACX,IAAI,OAAO;AACV,kBAAI,CAAC,yBAAyB,UAAU,YAAY,GAAG;AACtD,uBAAO;AAAA,cACR;AAEA,oBAAM,aAAa,WAAW,cAAc,QAAQ;AACpD,oBAAM,YAAY,WAAW,eAAe,UAAU;AACtD,oBAAM,SAAS,WAAW,QAAQ,QAAQ;AAC1C,oBAAM,cAAc,WAAW,eAAe,SAAS;AACvD,kBAAI,aAAa;AAEjB,kBACC,WAAW,SAAS,gBACpB,WAAW,UAAU,KACpB;AACD,wCACC,WAAW,cAAc,UAAU;AAAA,cACrC,OAAO;AACN,wCAAwB;AAAA,cACzB;AAQA,oBAAM,qBACL,SAAS,OAAO,WAAW,SAAS,oBACpC,YAAY,UAAU;AACvB,oBAAM,kBAAkB,aAAa;AAAA,gBACpC,sBAAsB;AAAA,cACvB;AAEA,kBAAI,sBAAsB,iBAAiB;AAC1C,uBAAO;AAAA,cACR;AAEA,oBAAM,WAAW,WAAW,aAAa,QAAQ;AACjD,oBAAM,uBACL,WAAW,eAAe,QAAQ;AAEnC,kBAAI,qBAAqB,UAAU,KAAK;AACvC,sBAAM,YAAY,WAAW,cAAc,QAAQ;AAEnD,sBAAM,kBACL,aAAa,aAAa,KAAK,UAAU,KAAK;AAC/C,sBAAM,sBACL,aACA,UAAU,IAAI,MAAM,SACnB,qBAAqB,IAAI,MAAM;AAQjC,oBACC,mBACC,uBAAuB,UAAU,UAAU,KAC3C;AACD,yBAAO;AAAA,gBACR;AAAA,cACD;AAEA,kBACC,WAAW,SAAS,gBACpB,WAAW,UAAU,KACpB;AACD,8BAAc,OAAO,MAAM,GAAG,EAAE;AAAA,cACjC,OAAO;AACN,8BAAc;AAAA,cACf;AASA,qBAAO,IAAI,WAAW,OAAO,UAAU,EACrC,wBAAwB,QAAQ,EAChC;AAAA,gBACA,CAAC,UAAU,MAAM,CAAC,GAAG,SAAS,MAAM,CAAC,CAAC;AAAA,gBACtC;AAAA,cACD;AAAA,YACF;AAAA,UACD,CAAC;AAAA,QACF;AAOA,iBAAS,eAAeA,OAAM;AAC7B,iBAAOA,MAAK,SAAS;AAAA,QACtB;AASA,iBAAS,eAAeA,OAAM;AAC7B,cAAIA,MAAK,SAAS,kBAAkB;AACnC,kBAAM,OAAOA,MAAK,MACjB,gBAAgB,KAAK,GAAG,EAAE;AAE3B,mBAAO,iBAAiB,eAAe,aAAa;AAAA,UACrD;AACA,iBAAO,eAAeA,KAAI;AAAA,QAC3B;AAQA,iBAAS,QAAQA,OAAM;AACtB,iBAAOA,MAAK,aAAaA,MAAK;AAAA,QAC/B;AASA,iBAAS,WAAWA,OAAM;AACzB,iBACCA,MAAK,SAAS,iBACd,QAAQA,KAAI,KACZ,eAAeA,MAAK,SAAS,KAC7B,eAAeA,MAAK,UAAU;AAAA,QAEhC;AASA,iBAAS,mBAAmBA,OAAM;AACjC,iBAAO,eAAeA,KAAI,KAAK,WAAWA,KAAI;AAAA,QAC/C;AAOA,iBAAS,cAAcA,OAAM;AAC5B,cAAIA,MAAK,SAAS,kBAAkB;AAEnC,mBAAOA,MAAK,KAAK,KAAK,kBAAkB;AAAA,UACzC;AAMA,iBAAO,mBAAmBA,KAAI;AAAA,QAC/B;AAQA,iBAAS,mBAAmBA,OAAM;AACjC,gBAAM,SAASA,MAAK;AAMpB,cAAI,CAAC,SAAS,uBAAuB,IAAI,OAAO,IAAI,GAAG;AACtD;AAAA,UACD;AAEA,gBAAM,cAAc,CAAC;AACrB,cAAI;AAEJ,mBACK,cAAcA,OAClB,YAAY,SAAS,eACrB,cAAc,YAAY,WACzB;AACD,gBAAI,CAAC,YAAY,WAAW;AAC3B;AAAA,YACD;AACA,wBAAY,KAAK,YAAY,UAAU;AACvC,wBAAY,YAAY;AAAA,UACzB;AAEA,cAAI,YAAY,MAAM,aAAa,GAAG;AACrC,0BAAc,SAAS;AAAA,UACxB;AAAA,QACD;AAQA,iBAAS,gBAAgBA,OAAM;AAC9B,gBAAM,SAASA,MAAK;AAMpB,cAAI,CAAC,SAAS,uBAAuB,IAAI,OAAO,IAAI,GAAG;AACtD;AAAA,UACD;AAEA,gBAAM,YAAYA,MAAK;AAEvB,cAAI,aAAa,cAAcA,MAAK,UAAU,GAAG;AAChD,0BAAc,SAAS;AAAA,UACxB;AAAA,QACD;AAMA,eAAO;AAAA,UACN,oBAAoB,cACjB,qBACA;AAAA,QACJ;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACvcA;AAAA,8CAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,gBAAgB;AAAA,QAChB,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,iBAAiB;AAAA,UAClB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,iBAAiB;AAAA,gBAChB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,YAAY;AAAA,UACZ,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,gBAAgB,CAAC,IAAI,QAAQ;AACtC,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,eAAeC,OAAM;AAEpB,gBAAIA,MAAK,KAAK,WAAW,GAAG;AAC3B;AAAA,YACD;AAGA,gBAAI,SAAS,WAAWA,MAAK,MAAM,GAAG;AACrC;AAAA,YACD;AAEA,gBAAI,mBAAmBA,MAAK,OAAO,SAAS,eAAe;AAC1D;AAAA,YACD;AAGA,gBAAI,WAAW,kBAAkBA,KAAI,EAAE,SAAS,GAAG;AAClD;AAAA,YACD;AAEA,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM,EAAE,MAAM,QAAQ;AAAA,cACtB,SAAS;AAAA,gBACR;AAAA,kBACC,WAAW;AAAA,kBACX,MAAM,EAAE,MAAM,QAAQ;AAAA,kBACtB,IAAI,OAAO;AACV,0BAAM,QAAQ;AAAA,sBACbA,MAAK,MAAM,CAAC,IAAI;AAAA,sBAChBA,MAAK,MAAM,CAAC,IAAI;AAAA,oBACjB;AAEA,2BAAO,MAAM;AAAA,sBACZ;AAAA,sBACA;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,UAEA,gBAAgBA,OAAM;AACrB,gBACC,OAAOA,MAAK,UAAU,eACtBA,MAAK,MAAM,WAAW,GACrB;AACD,oBAAM,eAAe,WAAW;AAAA,gBAC/BA,MAAK;AAAA,gBACL,SAAS;AAAA,cACV;AAEA,oBAAM,eAAe,WAAW,aAAaA,KAAI;AAEjD,kBACC,WAAW;AAAA,gBACV;AAAA,gBACA;AAAA,cACD,GACC;AACD;AAAA,cACD;AAEA,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK;AAAA,kBACJ,OAAO,aAAa,IAAI;AAAA,kBACxB,KAAK,aAAa,IAAI;AAAA,gBACvB;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM,EAAE,MAAM,SAAS;AAAA,gBACvB,SAAS;AAAA,kBACR;AAAA,oBACC,WAAW;AAAA,oBACX,MAAM,EAAE,MAAM,SAAS;AAAA,oBACvB,IAAI,OAAO;AACV,4BAAM,QAAQ;AAAA,wBACb,aAAa,MAAM,CAAC;AAAA,wBACpB,aAAa,MAAM,CAAC;AAAA,sBACrB;AAEA,6BAAO,MAAM;AAAA,wBACZ;AAAA,wBACA;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxJA;AAAA,8DAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,EAAE,cAAc,eAAe,IAAI;AAMzC,QAAM,SAAS,IAAI,aAAa;AAChC,QAAM,mBAAmB;AAOzB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,iBAAiBC,OAAM;AACtB,kBAAM,EAAE,SAAS,MAAM,IAAIA,MAAK;AAEhC,gBAAI,CAAC,iBAAiB,KAAK,OAAO,GAAG;AACpC;AAAA,YACD;AAEA,gBAAI;AAEJ,gBAAI;AACH,0BAAY,OAAO;AAAA,gBAClB;AAAA,gBACA;AAAA,gBACA,QAAQ;AAAA,gBACR;AAAA,kBACC,SAAS,MAAM,SAAS,GAAG;AAAA,kBAC3B,aAAa,MAAM,SAAS,GAAG;AAAA,gBAChC;AAAA,cACD;AAAA,YACD,QAAQ;AAEP;AAAA,YACD;AAEA,2BAAe,WAAW;AAAA,cACzB,sBAAsB,gBAAgB;AACrC,oBACC,CAAC,eAAe,UAChB,eAAe,SAAS,WAAW,GAClC;AACD,0BAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,aAAa,CAAC;AAAA,gBACjD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClFA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAMjB,QAAM,gBAAgB,OAAO,OAAO;AAAA,MACnC;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,IACD,CAAC;AAYD,aAAS,QAAQC,OAAM;AACtB,YAAM,SAASA,MAAK;AACpB,UAAI;AAEJ,UAAIA,MAAK,SAAS,2BAA2B;AAC5C,eAAO;AAAA,MACR;AAGA,UAAI,OAAO,SAAS,YAAY;AAC/B,YAAI,OAAO,SAAS,OAAO;AAC1B,iBAAO;AAAA,QACR;AACA,YAAI,OAAO,SAAS,OAAO;AAC1B,iBAAO;AAAA,QACR;AACA,eAAO,OAAO,SAAS,YAAY;AAAA,MACpC,WAAW,OAAO,SAAS,oBAAoB;AAC9C,YAAI,OAAO,SAAS,OAAO;AAC1B,iBAAO;AAAA,QACR;AACA,YAAI,OAAO,SAAS,OAAO;AAC1B,iBAAO;AAAA,QACR;AACA,YAAI,OAAO,SAAS,eAAe;AAClC,iBAAO;AAAA,QACR;AACA,eAAO;AAAA,MACR,OAAO;AACN,eAAO;AAAA,MACR;AAGA,UAAI;AAEJ,UAAIA,MAAK,WAAW;AACnB,iBAAS;AAAA,MACV,WAAWA,MAAK,OAAO;AACtB,iBAAS;AAAA,MACV,OAAO;AACN,eAAO;AAAA,MACR;AACA,aAAO,SAAS,KAAK,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC;AAAA,IACrD;AAOA,aAAS,iCAAiCA,OAAM;AAC/C,aAAOA,MAAK,OAAO,KAAK,WAAS,MAAM,SAAS,qBAAqB;AAAA,IACtE;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,gBAAgB;AAAA,QAChB,MAAM;AAAA,QAEN,gBAAgB,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;AAAA,QAE9B,MAAM;AAAA,UACL,aAAa;AAAA,UACb,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,OAAO;AAAA,gBACN,MAAM;AAAA,gBACN,OAAO,EAAE,MAAM,cAAc;AAAA,gBAC7B,aAAa;AAAA,cACd;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,YAAY;AAAA,UACZ,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,MAAM,CAAC,IAAI,QAAQ;AAC5B,cAAM,aAAa,QAAQ;AAO3B,iBAAS,uBAAuBC,OAAM;AACrC,gBAAM,OAAO,QAAQA,KAAI;AAEzB,cAAI,MAAM,SAAS,IAAI,GAAG;AACzB,mBAAO;AAAA,UACR;AAEA,cAAI,SAAS,gBAAgB;AAC5B,gBACEA,MAAK,OAAO,kBAAkB,aAC9B,MAAM,SAAS,qBAAqB,KACpCA,MAAK,OAAO,kBAAkB,eAC9B,MAAM,SAAS,uBAAuB,KACvC,iCAAiCA,KAAI,GACpC;AACD,qBAAO;AAAA,YACR;AAAA,UACD;AAEA,cAAI,2BAA2B,KAAK,IAAI,GAAG;AAC1C,gBACEA,MAAK,OAAO,YAAY,UACxB,MAAM,SAAS,oBAAoB,KACnCA,MAAK,OAAO,YAAY,MAAM,SAAS,iBAAiB,GACxD;AACD,qBAAO;AAAA,YACR;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAaA,iBAAS,cAAcA,OAAM;AAC5B,gBAAM,OAAO,SAAS,wBAAwBA,KAAI;AAClD,gBAAM,gBAAgB,WAAW,UAAUA,MAAK,MAAM;AAAA,YACrD,iBAAiB;AAAA,YACjB,QAAQ,SAAS;AAAA,UAClB,CAAC;AAED,cACC,CAAC,uBAAuBA,KAAI,KAC5BA,MAAK,KAAK,SAAS,oBACnBA,MAAK,KAAK,KAAK,WAAW,KAC1B,cAAc,WAAW,GACxB;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAKA,MAAK,KAAK;AAAA,cACf,WAAW;AAAA,cACX,MAAM,EAAE,KAAK;AAAA,cACb,SAAS;AAAA,gBACR;AAAA,kBACC,WAAW;AAAA,kBACX,MAAM,EAAE,KAAK;AAAA,kBACb,IAAI,OAAO;AACV,0BAAM,QAAQ;AAAA,sBACbA,MAAK,KAAK,MAAM,CAAC,IAAI;AAAA,sBACrBA,MAAK,KAAK,MAAM,CAAC,IAAI;AAAA,oBACtB;AAEA,2BAAO,MAAM;AAAA,sBACZ;AAAA,sBACA;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,yBAAyB;AAAA,UACzB,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,QACrB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1OA;AAAA,sDAAAC,UAAAC,SAAA;AAAA;AAMA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,iCAAiC;AAAA,UAClC;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,iCAAiC;AAAA,gBAChC,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,gCAAgC,CAAC,IAAI,QAAQ;AAEtD,eAAO;AAAA,UACN,cAAcC,OAAM;AACnB,gBAAIA,MAAK,WAAW,SAAS,GAAG;AAC/B;AAAA,YACD;AAGA,gBACC,oCACC,SAAS,WAAWA,MAAK,MAAM,KAC9BA,MAAK,OAAO,SAAS,uBACrB,SAAS,WAAWA,MAAK,OAAO,MAAM,KACtCA,MAAK,OAAO,MAAM,SAAS,sBAC3BA,MAAK,OAAO,MAAM,WAAW,WAAW,IACzC;AACD;AAAA,YACD;AAEA,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM,EAAE,MAAM,SAAS;AAAA,YACxB,CAAC;AAAA,UACF;AAAA,UACA,aAAaA,OAAM;AAClB,gBAAIA,MAAK,SAAS,WAAW,GAAG;AAC/B,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM,EAAE,MAAM,QAAQ;AAAA,cACvB,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpFA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAWA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,gBAAgB;AAAA,QAChB,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,UACZ,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,YAAYC,OAAM;AACjB,gBAAIA,MAAK,KAAK,WAAW,GAAG;AAC3B,oBAAM,eAAe,WAAW,cAAcA,OAAM;AAAA,gBACnD,MAAM;AAAA,cACP,CAAC;AACD,oBAAM,eAAe,WAAW,aAAaA,KAAI;AAEjD,kBACC,WAAW,kBAAkB,YAAY,EAAE,WAAW,GACrD;AACD,wBAAQ,OAAO;AAAA,kBACd,KAAK;AAAA,oBACJ,OAAO,aAAa,IAAI;AAAA,oBACxB,KAAK,aAAa,IAAI;AAAA,kBACvB;AAAA,kBACA,WAAW;AAAA,kBACX,SAAS;AAAA,oBACR;AAAA,sBACC,WAAW;AAAA,sBACX,IAAI,OAAO;AACV,8BAAM,QAAQ;AAAA,0BACb,aAAa,MAAM,CAAC;AAAA,0BACpB,aAAa,MAAM,CAAC;AAAA,wBACrB;AAEA,+BAAO,MAAM;AAAA,0BACZ;AAAA,0BACA;AAAA,wBACD;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxEA;AAAA,gDAAAC,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,iBAAiBC,OAAM;AACtB,kBAAM,cACLA,MAAK,aAAa,QAAQA,MAAK,aAAa;AAE7C,gBACEA,MAAK,MAAM,SAAS,aACpBA,MAAK,MAAM,QAAQ,UACnB,eACAA,MAAK,KAAK,SAAS,aACnBA,MAAK,KAAK,QAAQ,UAClB,aACA;AACD,sBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,aAAa,CAAC;AAAA,YACjD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClDA;AAAA,6CAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAYjB,QAAM,2BAA2B,OAAO,OAAO;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAUD,aAAS,SAASC,OAAM,MAAM;AAC7B,aAAO,SAAS,uBAAuBA,OAAM,MAAM,IAAI;AAAA,IACxD;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,eAAe;AAAA,UAChB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,eAAe,EAAE,MAAM,UAAU;AAAA,YAClC;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,cAAc,CAAC,IAAI,QAAQ;AACpC,cAAM,aAAa,QAAQ;AAC3B,YAAI,WAAW;AAcf,iBAAS,eAAeC,OAAM;AAC7B,gBAAM,SAAS,WAAW,SAASA,KAAI,EAAE;AAEzC,qBAAW;AAAA,YACV,OAAO;AAAA,YACP,MAAAA;AAAA,YACA;AAAA,YACA,oBAAoB;AAAA,YACpB,aAAa;AAAA,YACb,aAAa;AAAA,UACd;AAAA,QACD;AAMA,iBAAS,gBAAgB;AACxB,qBAAW,SAAS;AAAA,QACrB;AAcA,iBAAS,OAAOA,OAAM;AACrB,gBAAM,SAASA,MAAK;AACpB,gBAAM,eACLA,MAAK,SAAS,qBAAqBA,MAAK,WAAWA;AAEpD,gBAAM,aACL,OAAO,SAAS,oBAAoB,OAAO,WAAWA,QACnD,SACAA;AAEJ,kBAAQ,OAAO;AAAA,YACd,MAAM;AAAA,YACN,KAAK,aAAa;AAAA,YAClB,WAAW;AAAA,UACZ,CAAC;AAAA,QACF;AAOA,iBAAS,mCAAmC,aAAa;AACxD,mBAAS,IAAI,GAAG,IAAI,yBAAyB,QAAQ,EAAE,GAAG;AACzD,kBAAM,OAAO,yBAAyB,CAAC;AACvC,kBAAM,WAAW,SAAS,kBAAkB,aAAa,IAAI;AAE7D,gBAAI,CAAC,UAAU;AACd;AAAA,YACD;AAEA,kBAAM,aAAa,SAAS;AAE5B,qBAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,EAAE,GAAG;AAC3C,oBAAM,aAAa,WAAW,CAAC,EAAE;AACjC,kBAAIA,QAAO,WAAW;AAGtB,qBAAO,SAASA,OAAM,IAAI,GAAG;AAC5B,gBAAAA,QAAOA,MAAK;AAAA,cACb;AAGA,kBAAI,SAASA,OAAM,MAAM,GAAG;AAC3B,uBAAOA,KAAI;AAAA,cACZ;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,oBAAoB,aAAa;AACzC,gBAAM,WAAW,SAAS,kBAAkB,aAAa,MAAM;AAE/D,cAAI,CAAC,UAAU;AACd;AAAA,UACD;AAEA,gBAAM,aAAa,SAAS;AAE5B,mBAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,EAAE,GAAG;AAC3C,kBAAM,YAAY,WAAW,CAAC;AAC9B,kBAAM,KAAK,UAAU;AAErB,gBAAI,GAAG,SAAS,UAAU,CAAC,SAAS,SAAS,EAAE,GAAG;AAEjD,qBAAO,EAAE;AAAA,YACV;AAAA,UACD;AAAA,QACD;AAEA,YAAI,eAAe;AAElB,iBAAO;AAAA,YACN,sBAAsBA,OAAM;AAC3B,oBAAM,SAASA,MAAK;AAOpB,kBACC,CAACA,MAAK,YACN,SAAS,aAAa,QAAQ,MAAM,GACnC;AACD,uBAAO,MAAM;AAAA,cACd;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,sBAAsBA,OAAM;AAC3B,kBAAM,SAASA,MAAK;AAEpB,gBAAI,SAAS,aAAa,QAAQ,MAAM,GAAG;AAC1C,qBAAO,MAAM;AAAA,YACd;AAAA,UACD;AAAA,UAEA,QAAQA,OAAM;AACb,kBAAM,QAAQ,WAAW,SAASA,KAAI,GACrC,WACC,QAAQ,gBAAgB,cAAc,gBACtC,CAAC,GACF,SACC,MAAM,YACNA,MAAK,eAAe,YACnB,SAAS,gBACT,MAAM,YAAY,CAAC,EAAE,UACvB,qBACCA,MAAK,eAAe,YAAY,CAAC,SAAS;AAE5C,uBAAW;AAAA,cACV,OAAO;AAAA,cACP,MAAAA;AAAA,cACA;AAAA,cACA;AAAA,cACA,aAAa;AAAA,cACb,aAAa;AAAA,YACd;AAAA,UACD;AAAA,UAEA,eAAeA,OAAM;AACpB,kBAAM,cAAc,WAAW,SAASA,KAAI;AAE5C,0BAAc;AACd,gCAAoB,WAAW;AAC/B,+CAAmC,WAAW;AAAA,UAC/C;AAAA,UAEA,qBAAqB;AAAA,UACrB,4BAA4B;AAAA,UAC5B,oBAAoB;AAAA,UACpB,2BAA2B;AAAA,UAC3B,gCAAgC;AAAA,UAChC,qCAAqC;AAAA,UACrC,aAAa;AAAA,UACb,oBAAoB;AAAA,UAEpB,eAAeA,OAAM;AACpB,gBAAI,CAAC,SAASA,MAAK,QAAQ,MAAM,GAAG;AACnC;AAAA,YACD;AAMA,gBAAI,CAAC,SAAS,aAAa;AAC1B,uBAAS,cAAc;AACvB,uBAAS,cAAc,SAAS;AAAA,gBAC/B,SAAS;AAAA,gBACT;AAAA,cACD;AAAA,YACD;AAGA,gBACC,SAAS,sBACR,CAAC,SAAS,UAAU,SAAS,aAC7B;AAED,qBAAOA,MAAK,MAAM;AAAA,YACnB;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5SA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAO3B,iBAAS,cAAc,UAAU;AAChC,mBACE,uBAAuB,SAAS,UAAU,EAC1C,QAAQ,eAAa;AACrB,oBAAQ,OAAO;AAAA,cACd,MAAM,UAAU;AAAA,cAChB,WAAW;AAAA,YACZ,CAAC;AAAA,UACF,CAAC;AAAA,QACH;AAEA,eAAO;AAAA,UACN,YAAYC,OAAM;AACjB,uBAAW,qBAAqBA,KAAI,EAAE,QAAQ,aAAa;AAAA,UAC5D;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxDA;AAAA,sDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;AAAA,QAEnC,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,YAAY;AAAA,gBACX,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,gBACA,aAAa;AAAA,cACd;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,YACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,aAAa,IAAI,IAAI,QAAQ,QAAQ,CAAC,EAAE,UAAU;AACxD,cAAM,mBAAmB,IAAI;AAAA,UAC5B,OAAO,KAAK,SAAS,kBAAkB,EACrC,OAAO,aAAW,QAAQ,CAAC,EAAE,YAAY,MAAM,QAAQ,CAAC,CAAC,EACzD,OAAO,aAAW,CAAC,WAAW,IAAI,OAAO,CAAC;AAAA,QAC7C;AAQA,iBAAS,WAAWC,OAAM,SAAS;AAClC,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW;AAAA,YACX,MAAM;AAAA,cACL;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAWA,iBAAS,4BAA4B,gBAAgB;AACpD,iBAAO;AAAA,YACN,kBACA,eAAe,UACf,eAAe,OAAO,SAAS,sBAC/B,eAAe,OAAO,WAAW,kBACjC,SAAS,sBAAsB,eAAe,MAAM,MACnD;AAAA,UACF;AAAA,QACD;AAQA,iBAAS,wBAAwBA,OAAM;AACtC,iBACCA,MAAK,OAAO,SAAS,sBACrBA,MAAK,OAAO,WAAWA,SACvBA,MAAK,OAAO,OAAO,SAAS,0BAC5BA,MAAK,OAAO,OAAO,SAASA,MAAK;AAAA,QAEnC;AAOA,iBAAS,uBAAuBA,OAAM;AACrC,iBACCA,MAAK,OAAO,SAAS,oBACrBA,MAAK,OAAO,UAAU,CAAC,MAAMA,SAC7B,SAAS;AAAA,YACRA,MAAK,OAAO;AAAA,YACZ;AAAA,YACA;AAAA,UACD;AAAA,QAEF;AAaA,iBAAS,iCAAiC,gBAAgB;AACzD,cAAI,CAAC,4BAA4B,cAAc,GAAG;AACjD;AAAA,UACD;AAMA,gBAAM,gBACL,eAAe,OAAO,OAAO,SAAS,oBACnC,eAAe,OAAO,SACtB,eAAe;AAEnB,cAAI,wBAAwB,aAAa,GAAG;AAE3C,uBAAW,cAAc,OAAO,QAAQ,eAAe,IAAI;AAAA,UAC5D,WAAW,uBAAuB,aAAa,GAAG;AAEjD,uBAAW,cAAc,QAAQ,eAAe,IAAI;AAAA,UACrD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,eAAeA,OAAM;AACpB,kBAAM,cAAc,WAAW,SAASA,KAAI;AAE5C,6BAAiB,QAAQ,aAAW;AACnC,oBAAM,aAAa,YAAY,IAAI,IAAI,OAAO;AAE9C,kBAAI,cAAc,WAAW,YAAY;AACxC,2BAAW,WACT,IAAI,SAAO,IAAI,UAAU,EACzB,QAAQ,gCAAgC;AAAA,cAC3C;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnLA;AAAA,mDAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAMjB,QAAM,8BAA8B,oBAAI,IAAI;AAAA,MAC3C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAOD,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,SAAS;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,YAAI,YAAY;AAShB,iBAAS,iBAAiBC,OAAM;AAC/B,iBAAO,4BAA4B,IAAIA,MAAK,IAAI;AAAA,QACjD;AAQA,iBAAS,OAAOA,OAAM;AACrB,gBAAM,aAAaA,MAAK;AACxB,gBAAM,WACL,WAAW,OAAO,SAAS,oBACxB,WAAW,OAAO,SAClB,WAAW;AAEf,kBAAQ,OAAO;AAAA,YACd,MAAM;AAAA,YACN,WAAW;AAAA,YACX,KAAK,WAAW,SAAS;AAAA,YAEzB,IAAI,OAAO;AACV,kBAAI,CAAC,iBAAiB,SAAS,UAAU,CAAC,CAAC,GAAG;AAC7C,uBAAO;AAAA,cACR;AAUA,oBAAM,aAAa;AAAA,gBAClB;AAAA;AAAA,kBAEC,WAAW;AAAA,oBACV,WAAW;AAAA,oBACX,SAAS;AAAA,kBACV;AAAA;AAAA,kBAGA,WAAW,aAAa,UAAU;AAAA,gBACnC;AAAA,gBACA;AAAA;AAAA,kBAEC,WAAW;AAAA,oBACV;AAAA,oBACA,SAAS;AAAA,kBACV;AAAA;AAAA,kBAGA,WAAW,aAAa,QAAQ;AAAA,gBACjC;AAAA,cACD;AACA,oBAAM,qBAAqB,WAAW,CAAC,EAAE,CAAC;AAC1C,oBAAM,oBAAoB,WAAW,CAAC,EAAE,CAAC;AAEzC,kBACC,WAAW;AAAA,gBACV;AAAA,gBACA;AAAA,cACD,GACC;AACD,uBAAO;AAAA,cACR;AAEA,qBAAO,WAAW;AAAA,gBAAI,CAAC,CAAC,OAAO,GAAG,MACjC,MAAM,YAAY,CAAC,MAAM,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC;AAAA,cACjD;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAWA,iBAAS,qBAAqBA,OAAM;AACnC,cAAI,CAAC,SAAS,uBAAuBA,MAAK,QAAQ,MAAM,MAAM,GAAG;AAChE,mBAAO;AAAA,UACR;AAGA,gBAAM,WACLA,MAAK,OAAO,OAAO,SAAS,oBACzBA,MAAK,OAAO,SACZA,MAAK;AAET,iBACC,SAAS,OAAO,SAAS,oBACzB,SAAS,OAAO,WAAW,YAC3B,SAAS,OAAO,UAAU,WAAW,KACrC,SAAS,OAAO,UAAU,CAAC,EAAE,SAAS;AAAA,QAExC;AAQA,iBAAS,cAAcA,OAAM;AAC5B,sBAAY;AAAA,YACX,SAAS,qBAAqBA,KAAI;AAAA,YAClC,WAAW;AAAA,YACX,OAAO;AAAA,UACR;AAAA,QACD;AAUA,iBAAS,aAAaA,OAAM;AAC3B,cAAI,UAAU,WAAW,CAAC,UAAU,WAAW;AAC9C,mBAAOA,KAAI;AAAA,UACZ;AAEA,sBAAY,UAAU;AAAA,QACvB;AASA,iBAAS,kBAAkBA,OAAM;AAChC,cAAI,qBAAqBA,KAAI,GAAG;AAC/B,mBAAOA,KAAI;AAAA,UACZ;AAAA,QACD;AAMA,iBAAS,kBAAkB;AAC1B,cAAI,WAAW;AACd,sBAAU,YAAY;AAAA,UACvB;AAAA,QACD;AAEA,eAAO;AAAA,UACN,gCAAgC;AAAA,UAChC,qBAAqB;AAAA,UACrB,4BAA4B;AAAA,UAC5B,oBAAoB;AAAA,UACpB,2BAA2B;AAAA,UAC3B,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/NA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AACjB,QAAM,cAAc;AAEpB,QAAM,aAAa,SAAS;AAO5B,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,CAAC,CAAC;AAAA,QAEnB,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,4BAA4B;AAAA,oBAC3B,MAAM;AAAA,kBACP;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA;AAAA,cAGA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,2BAA2B;AAAA,oBAC1B,MAAM;AAAA,kBACP;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,SAAS;AAAA,QAET,UAAU;AAAA,UACT,gBAAgB;AAAA,UAChB,oBAAoB;AAAA,QACrB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,CAAC,EAAE,2BAA2B,2BAA2B,CAAC,IAC/D,QAAQ;AAGT,cAAM,qBAAqB,oBAAI,IAAI;AAAA,UAClC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,CAAC;AAOD,iBAAS,mCAAmCC,OAAM;AAEjD,kBACEA,MAAK,SAAS,oBACdA,MAAK,SAAS,oBACfA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS;AAAA,QAEvB;AAOA,iBAAS,mBAAmBA,OAAM;AACjC,iBACE,mCAAmCA,MAAK,MAAM,KAC9CA,UAASA,MAAK,OAAO,UAAU,CAAC,KAChC,mBAAmB,IAAIA,MAAK,OAAO,IAAI,KACvCA,UAASA,MAAK,OAAO;AAAA,UAErBA,MAAK,OAAO,SAAS,qBACrBA,MAAK,OAAO,aAAa;AAAA,QAE5B;AAQA,iBAAS,mBAAmBA,OAAM;AACjC,cAAIA,MAAK,OAAO,SAAS,mBAAmB;AAC3C,mBAAO,mBAAmBA,MAAK,MAAM;AAAA,UACtC;AASA,cAAI,6BAA6B,4BAA4B;AAC5D,gBAAIA,MAAK,OAAO,SAAS,qBAAqB;AAC7C,kBACCA,MAAK,OAAO,aAAa,QACzBA,MAAK,OAAO,aAAa,MACxB;AACD,uBAAO,mBAAmBA,MAAK,MAAM;AAAA,cACtC;AAGA,kBACC,8BACAA,MAAK,OAAO,aAAa,QACzBA,MAAK,OAAO,UAAUA,OACrB;AACD,uBAAO,mBAAmBA,MAAK,MAAM;AAAA,cACtC;AAAA,YACD;AAAA,UACD;AAEA,cAAI,4BAA4B;AAC/B,gBACCA,MAAK,OAAO,SAAS,4BACpBA,MAAK,OAAO,eAAeA,SAC3BA,MAAK,OAAO,cAAcA,QAC1B;AACD,qBAAO,mBAAmBA,MAAK,MAAM;AAAA,YACtC;AAMA,gBACCA,MAAK,OAAO,SAAS,wBACrBA,MAAK,OAAO,YAAY,GAAG,EAAE,MAAMA,OAClC;AACD,qBAAO,mBAAmBA,MAAK,MAAM;AAAA,YACtC;AAAA,UACD;AAEA,iBAAO,mBAAmBA,KAAI;AAAA,QAC/B;AAOA,iBAAS,kBAAkBA,OAAM;AAChC,iBAAO,QAAQ,WAAW,kBAAkBA,KAAI,EAAE,MAAM;AAAA,QACzD;AAQA,iBAAS,gBAAgBA,OAAM;AAC9B,iBAAO,YAAY,gBAAgB,GAAGA,OAAM,UAAU;AAAA,QACvD;AAWA,iBAAS,YAAY,cAAcA,OAAM;AACxC,cAAI,aAAa,OAAO,SAAS,mBAAmB;AACnD,mBAAO,YAAY,aAAa,QAAQA,KAAI;AAAA,UAC7C;AAEA,cAAI,gBAAgB,YAAY,GAAG;AAElC,mBAAO;AAAA,UACR;AAGA,gBAAM,SAAS,aAAa;AAE5B,kBAAQ,OAAO,MAAM;AAAA,YACpB,KAAK;AAAA,YACL,KAAK;AACJ,qBAAOA,MAAK,SAAS;AAAA,YACtB,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO;AAAA,YACR,KAAK;AACJ,kBAAI,iBAAiB,OAAO,MAAM;AACjC,uBAAO,WAAWA,KAAI,KAAK,WAAW,MAAM;AAAA,cAC7C;AACA,kBACC,iBAAiB,OAAO,cACxB,iBAAiB,OAAO,WACvB;AACD,uBACC,WAAWA,KAAI,IACf,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAAA,cAE7C;AAGA,oBAAM,IAAI;AAAA,gBACT;AAAA,cACD;AAAA,YACD,KAAK;AACJ,qBAAO,WAAWA,KAAI,IAAI,WAAW,MAAM;AAAA,YAC5C,KAAK;AACJ,kBACC,SAAS;AAAA,gBACRA;AAAA,gBACA;AAAA,cACD,GACC;AACD,uBAAO;AAAA,cACR;AACA,kBAAI,iBAAiB,OAAO,MAAM;AACjC,uBAAO,WAAWA,KAAI,IAAI,WAAW,MAAM;AAAA,cAC5C;AACA,qBAAO,WAAWA,KAAI,KAAK,WAAW,MAAM;AAAA;AAAA,YAG7C;AACC,oBAAM,IAAI,MAAM,2BAA2B,OAAO,IAAI,EAAE;AAAA,UAC1D;AAAA,QACD;AAEA,eAAO;AAAA,UACN,gBAAgBA,OAAM;AACrB,kBAAM,SAASA,MAAK;AAGpB,gBACCA,MAAK,aAAa,OAClB,OAAO,SAAS,qBAChB,OAAO,aAAa,KACnB;AACD;AAAA,YACD;AAEA,gBAAI,mBAAmB,MAAM,GAAG;AAC/B,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,sBAAI,kBAAkB,MAAM,GAAG;AAC9B,2BAAO;AAAA,kBACR;AAEA,sBAAI,YAAY,QAAQA,MAAK,QAAQ,GAAG;AACvC,2BAAO,MAAM;AAAA,sBACZ;AAAA,sBACA,IAAI,WAAW,QAAQA,MAAK,QAAQ,CAAC;AAAA,oBACtC;AAAA,kBACD;AAEA,sBAAI,SAAS;AACb,wBAAM,cACL,WAAW,eAAe,MAAM;AACjC,wBAAM,wBACL,WAAW,cAAcA,MAAK,QAAQ;AAEvC,sBACC,eACA,YAAY,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,KACvC,CAAC,SAAS;AAAA,oBACT;AAAA,oBACA;AAAA,kBACD,GACC;AACD,6BAAS;AAAA,kBACV;AAEA,yBAAO,MAAM;AAAA,oBACZ;AAAA,oBACA,SAAS,WAAW,QAAQA,MAAK,QAAQ;AAAA,kBAC1C;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,UAEA,eAAeA,OAAM;AACpB,gBACCA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS,WACpB;AACD;AAAA,YACD;AAEA,gBAAI,mBAAmBA,KAAI,GAAG;AAC7B,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,wBAAM,SAASA,MAAK;AAEpB,sBAAIA,MAAK,UAAU,WAAW,GAAG;AAChC,wBACC,OAAO,SAAS,qBAChB,OAAO,aAAa,KACnB;AAKD,0BAAI,kBAAkB,MAAM,GAAG;AAC9B,+BAAO;AAAA,sBACR;AAEA,4BAAM,cAAc;AACpB,0BAAI,SAAS;AACb,4BAAM,cACL,WAAW,eAAe,MAAM;AAEjC,0BACC,eACA,YAAY,MAAM,CAAC,MAClB,OAAO,MAAM,CAAC,KACf,CAAC,SAAS;AAAA,wBACT;AAAA,wBACA;AAAA,sBACD,GACC;AACD,iCAAS;AAAA,sBACV;AAEA,6BAAO,MAAM;AAAA,wBACZ;AAAA,wBACA,SAAS;AAAA,sBACV;AAAA,oBACD;AAMA,wBAAI,kBAAkBA,KAAI,GAAG;AAC5B,6BAAO;AAAA,oBACR;AAEA,2BAAO,MAAM,YAAYA,OAAM,OAAO;AAAA,kBACvC;AAEA,sBAAIA,MAAK,UAAU,WAAW,GAAG;AAChC,0BAAM,WAAWA,MAAK,UAAU,CAAC;AAEjC,wBACC,SAAS,SAAS,mBAClB,kBAAkBA,KAAI,GACrB;AACD,6BAAO;AAAA,oBACR;AAMA,wBAAI,YAAYA,OAAM,QAAQ,GAAG;AAChC,6BAAO,MAAM;AAAA,wBACZA;AAAA,wBACA,IAAI,WAAW,QAAQ,QAAQ,CAAC;AAAA,sBACjC;AAAA,oBACD;AAEA,2BAAO,MAAM;AAAA,sBACZA;AAAA,sBACA,WAAW,QAAQ,QAAQ;AAAA,oBAC5B;AAAA,kBACD;AAGA,yBAAO;AAAA,gBACR;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnaA;AAAA,oDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,SAAS;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,YAAI,YAAY;AAOhB,iBAAS,wBAAwBC,OAAM;AACtC,sBAAY;AAAA,YACX,OACCA,MAAK,OAAO,SAAS,qBAClBA,MAAK,OAAO,QACZ;AAAA,YACJ,WAAW;AAAA,YACX,OAAO;AAAA,UACR;AAAA,QACD;AAMA,iBAAS,yBAAyB;AACjC,sBAAY,UAAU;AAAA,QACvB;AAUA,iBAAS,sBAAsBA,OAAM;AACpC,cAAI,CAAC,SAAS,qBAAqBA,MAAK,IAAI,GAAG;AAC9C,wBAAY;AAAA,cACX,OAAOA,MAAK;AAAA,cACZ,WAAW;AAAA,cACX,OAAO;AAAA,YACR;AAAA,UACD;AAAA,QACD;AAUA,iBAAS,qBAAqBA,OAAM;AACnC,cAAI,CAAC,SAAS,qBAAqBA,MAAK,IAAI,GAAG;AAC9C,wBAAY,UAAU;AAAA,UACvB;AAAA,QACD;AAQA,iBAAS,oBAAoBA,OAAM;AAClC,cAAI,CAACA,MAAK,OAAO;AAChB;AAAA,UACD;AAEA,gBAAM,YAAYA,MAAK;AAEvB,mBAAS,OAAO,WAAW,SAAS,MAAM,OAAO,KAAK,OAAO;AAC5D,gBACC,KAAK,aACJ,KAAK,SAAS,KAAK,MAAM,SAAS,UAAU,MAC5C;AACD,kBACC,KAAK,aACL,KAAK,SACL,KAAK,MAAM,SAAS,UAAU,MAC7B;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAM;AAAA,kBACN,WAAW;AAAA,kBACX,MAAM;AAAA,kBACN,IAAI,OAAO;AACV,0BAAM,uBACL,WAAW,cAAcA,KAAI;AAE9B,wBACC,WAAW;AAAA,sBACV;AAAA,sBACA;AAAA,oBACD,GACC;AACD,6BAAO;AAAA,oBACR;AAEA,2BAAO,MAAM,YAAY;AAAA,sBACxB,qBAAqB,MAAM,CAAC;AAAA,sBAC5B,UAAU,MAAM,CAAC;AAAA,oBAClB,CAAC;AAAA,kBACF;AAAA,gBACD,CAAC;AAAA,cACF;AACA;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,gBAAgB;AAAA,UAChB,uBAAuB;AAAA,UACvB,kBAAkB;AAAA,UAClB,yBAAyB;AAAA,UACzB,cAAc;AAAA,UACd,qBAAqB;AAAA,UACrB,gBAAgB;AAAA,UAChB,uBAAuB;AAAA,UACvB,gBAAgB;AAAA,UAChB,uBAAuB;AAAA,UACvB,iBAAiB;AAAA,UACjB,wBAAwB;AAAA,UACxB,kBAAkB;AAAA,UAClB,yBAAyB;AAAA,UACzB,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxKA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM;AAAA,MACL,iBAAiB;AAAA,IAClB,IAAI;AACJ,QAAM,WAAW;AAGjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP,OAAO;AAAA,YACN;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,WAAW;AAAA,gBACnB;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,KAAK;AAAA,gBACb;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,mBAAmB,EAAE,MAAM,UAAU;AAAA,oBACrC,iCAAiC;AAAA,sBAChC,MAAM;AAAA,oBACP;AAAA,oBACA,yBAAyB,EAAE,MAAM,UAAU;AAAA,oBAC3C,cAAc,EAAE,MAAM,UAAU;AAAA,oBAChC,WAAW;AAAA,sBACV,MAAM;AAAA,wBACL;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,sBACD;AAAA,oBACD;AAAA,oBACA,6BAA6B;AAAA,sBAC5B,MAAM;AAAA,oBACP;AAAA,oBACA,+BAA+B;AAAA,sBAC9B,MAAM;AAAA,oBACP;AAAA,oBACA,kCAAkC;AAAA,sBACjC,MAAM;AAAA,oBACP;AAAA,oBACA,oCAAoC;AAAA,sBACnC,MAAM;AAAA,oBACP;AAAA,oBACA,gCAAgC;AAAA,sBAC/B,MAAM;AAAA,oBACP;AAAA,kBACD;AAAA,kBACA,sBAAsB;AAAA,gBACvB;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,UACD;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,cAAM,iBAAiB,oBAAI,QAAQ;AACnC,cAAM,aAAa,SAAS;AAC5B,cAAM,YAAY,QAAQ,QAAQ,CAAC,MAAM;AACzC,cAAM,qBACL,aACA,QAAQ,QAAQ,CAAC,KACjB,QAAQ,QAAQ,CAAC,EAAE,sBAAsB;AAC1C,cAAM,sBACL,aACA,QAAQ,QAAQ,CAAC,KACjB,QAAQ,QAAQ,CAAC,EAAE,oCAAoC;AACxD,cAAM,gBACL,aACA,QAAQ,QAAQ,CAAC,KACjB,QAAQ,QAAQ,CAAC,EAAE,4BAA4B;AAChD,cAAM,uBACL,aACA,QAAQ,QAAQ,CAAC,KACjB,QAAQ,QAAQ,CAAC,EAAE,iBAAiB;AACrC,cAAM,aACL,aAAa,QAAQ,QAAQ,CAAC,KAAK,QAAQ,QAAQ,CAAC,EAAE;AACvD,cAAM,4BACL,aACA,QAAQ,QAAQ,CAAC,KACjB,QAAQ,QAAQ,CAAC,EAAE,gCAAgC;AACpD,cAAM,8BACL,aACA,QAAQ,QAAQ,CAAC,KACjB,QAAQ,QAAQ,CAAC,EAAE,kCAAkC;AACtD,cAAM,4BACL,aACA,QAAQ,QAAQ,CAAC,KACjB,QAAQ,QAAQ,CAAC,EAAE,qCAAqC;AACzD,cAAM,oCACL,aACA,QAAQ,QAAQ,CAAC,KACjB,QAAQ,QAAQ,CAAC,EAAE,uCAAuC;AAC3D,cAAM,qCACL,aACA,QAAQ,QAAQ,CAAC,KACjB,QAAQ,QAAQ,CAAC,EAAE;AAEpB,cAAM,gCAAgC,WAAW;AAAA,UAChD,MAAM;AAAA,QACP,CAAC;AACD,cAAM,4BAA4B,WAAW;AAAA,UAC5C,MAAM;AAAA,QACP,CAAC;AAED,YAAI;AASJ,iBAAS,uCAAuCC,OAAM;AACrD,gBAAM,WAAW,SAAS,oBAAoBA,KAAI;AAElD,cAAI,SAAS,SAAS,kBAAkB;AACvC,mBAAO;AAAA,UACR;AACA,gBAAM,SAAS,SAAS,oBAAoB,SAAS,MAAM;AAE3D,iBACC,OAAO,SAAS,sBAChB,OAAO,OAAO,SAAS,wBACvB,CAAC,QAAQ,OAAO,EAAE;AAAA,YACjB,SAAS,sBAAsB,MAAM;AAAA,UACtC;AAAA,QAEF;AAQA,iBAAS,YAAYA,OAAM;AAC1B,cAAIA,MAAK,SAAS,gBAAgBA,MAAK,SAAS,eAAe;AAC9D,kBAAM,eAAeA,MAAK,IAAI,MAAM,SAASA,MAAK,IAAI,IAAI;AAE1D,oBAAQ,YAAY;AAAA;AAAA,cAEnB,KAAK;AACJ,uBAAO;AAAA;AAAA,cAGR,KAAK;AACJ,uBAAO;AAAA;AAAA,cAGR,KAAK;AACJ,uBAAO,CAAC;AAAA;AAAA,cAGT,KAAK;AACJ;AAAA,YAGF;AAAA,UACD;AAEA,cACCA,MAAK,SAAS,wBACd,6BACC;AACD,mBAAO;AAAA,UACR;AAEA,cACC,uCAAuCA,KAAI,KAC3C,mCACC;AACD,mBAAO;AAAA,UACR;AAEA,iBACC,aACAA,MAAK,SAAS,wBACdA,MAAK,SAAS;AAAA,QAEhB;AAQA,iBAAS,gBAAgBA,OAAM;AAC9B,iBAAO,mBAAmB,GAAGA,OAAM,UAAU;AAAA,QAC9C;AAQA,iBAAS,qBAAqBA,OAAM;AACnC,iBAAO,mBAAmB,GAAGA,OAAM,UAAU;AAAA,QAC9C;AAQA,iBAAS,gBAAgBA,OAAM;AAC9B,iBAAO,YAAYA,KAAI,KAAK,gBAAgBA,KAAI;AAAA,QACjD;AASA,iBAAS,sBAAsBA,OAAM;AACpC,iBAAO,YAAYA,KAAI,KAAK,qBAAqBA,KAAI;AAAA,QACtD;AAYA,iBAAS,8BAA8BA,OAAM,sBAAsB;AAClE,cAAI,YAAYA,KAAI,KAAK,gBAAgBA,KAAI,GAAG;AAC/C,gBACC,WAAWA,KAAI,KAAK,wBACpB,qBAAqBA,KAAI,GACxB;AACD,qBAAO;AAAA,YACR;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AAQA,iBAAS,sBAAsBA,OAAM;AACpC,iBACC,sBAAsBA,MAAK,KAAK,SAAS;AAAA,QAE3C;AAQA,iBAAS,oBAAoBA,OAAM;AAClC,mBACK,cAAcA,OAClB,aACA,cAAc,YAAY,QACzB;AACD,gBACC,YAAY,SAAS,qBACpB,YAAY,SAAS,6BACrB,YAAY,KAAK,SAAS,kBAC1B;AACD,qBAAO;AAAA,YACR;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAQA,iBAAS,0BAA0B,eAAe;AACjD,gBAAM,YAAY,WAAW,aAAa,aAAa;AACvD,gBAAM,mBAAmB,WAAW,eAAe,SAAS;AAE5D,iBACC,cAAc,UAAU,SAAS;AAAA,UAEhC,SAAS,oBAAoB,gBAAgB,KAC7C,SAAS,oBAAoB,SAAS,KACtC,cAAc,OAAO,MAAM,CAAC,IAAI,cAAc,MAAM,CAAC;AAAA,QAExD;AAQA,iBAAS,mBAAmBA,OAAM;AACjC,cAAIA,MAAK,SAAS,wBAAwB;AACzC,mBAAO;AAAA,UACR;AACA,cACCA,MAAK,SAAS,4BACbA,MAAK,WAAW,SAAS,0BACzBA,MAAK,UAAU,SAAS,yBACxB;AACD,mBAAO;AAAA,UACR;AACA,cACEA,MAAK,QAAQA,MAAK,KAAK,SAAS,0BAChCA,MAAK,SAASA,MAAK,MAAM,SAAS,wBAClC;AACD,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AAQA,iBAAS,wBAAwBA,OAAM;AACtC,cAAI,CAAC,wBAAwB,CAAC,oBAAoBA,KAAI,GAAG;AACxD,mBAAO;AAAA,UACR;AAEA,cAAIA,MAAK,SAAS,mBAAmB;AACpC,mBAAOA,MAAK,YAAY,mBAAmBA,MAAK,QAAQ;AAAA,UACzD;AACA,cACCA,MAAK,SAAS,6BACdA,MAAK,KAAK,SAAS,kBAClB;AACD,mBAAO,mBAAmBA,MAAK,IAAI;AAAA,UACpC;AACA,iBAAO,mBAAmBA,KAAI;AAAA,QAC/B;AAUA,iBAAS,gCAAgC,OAAOA,OAAM;AACrD,cAAI,MAAM,IAAI,IAAI,SAASA,MAAK,IAAI,MAAM,MAAM;AAC/C,mBAAO,gBAAgBA,KAAI;AAAA,UAC5B;AAEA,iBAAO,sBAAsBA,KAAI;AAAA,QAClC;AAQA,iBAAS,qBAAqBA,OAAM;AACnC,gBAAM,iBAAiB,WAAW,eAAeA,KAAI;AACrD,gBAAM,uBAAuB,WAAW;AAAA,YACvC;AAAA,YACA,EAAE,iBAAiB,KAAK;AAAA,UACzB;AACA,gBAAM,sBAAsB,WAAW;AAAA,YACtC;AAAA,YACA,EAAE,iBAAiB,KAAK;AAAA,UACzB;AAEA,iBACC,wBACA,qBAAqB,MAAM,CAAC,MAAM,eAAe,MAAM,CAAC,KACxD,eAAe,MAAM,CAAC,MAAM,oBAAoB,MAAM,CAAC,KACvD,CAAC,SAAS;AAAA,YACT;AAAA,YACA;AAAA,UACD;AAAA,QAEF;AAQA,iBAAS,sBAAsBA,OAAM;AACpC,gBAAM,gBAAgB,WAAW,eAAeA,OAAM,EAAE,OAAO,EAAE,CAAC;AAClE,gBAAM,kBAAkB,cAAc,CAAC;AACvC,gBAAM,uBAAuB,cAAc,CAAC;AAC5C,gBAAM,wBAAwB,WAAW,aAAaA,KAAI;AAE1D,iBACC,mBACA,wBACA,CAAC,WAAW;AAAA,YACX;AAAA,YACA;AAAA,UACD,KACA,CAAC,SAAS;AAAA,YACT;AAAA,YACA;AAAA,UACD;AAAA,QAEF;AAOA,iBAAS,OAAOA,OAAM;AACrB,gBAAM,gBAAgB,SAAS,oBAAoBA,KAAI;AAEvD,iBACC,cAAc,SAAS,oBACvB,cAAc,OAAO,SAAS;AAAA,QAEhC;AASA,iBAAS,sBAAsBA,OAAM;AACpC,iBACCA,UACCA,MAAK,SAAS,gBAAgBA,MAAK,SAAS;AAAA,QAE/C;AAcA,iBAAS,UAAUA,OAAM;AAExB,cAAIA,MAAK,SAAS,aAAa,OAAOA,MAAK,UAAU,UAAU;AAC9D,mBAAO;AAAA,UACR;AACA,cAAI,qBAAqBA,KAAI,GAAG;AAC/B,mBAAO;AAAA,UACR;AACA,iBAAO,CAAC,SAAS,8BAA8BA,MAAK,MAAM;AAAA,QAC3D;AAQA,iBAAS,OAAOA,OAAM;AACrB,gBAAM,iBAAiB,WAAW,eAAeA,KAAI;AACrD,gBAAM,kBAAkB,WAAW,cAAcA,KAAI;AAErD,cAAI,CAAC,qBAAqBA,KAAI,GAAG;AAChC,gBAAI,eAAe,IAAI,WAAW,cAAcA,KAAI,CAAC,GAAG;AACvD;AAAA,YACD;AAEA,gBAAI,OAAOA,KAAI,KAAK,CAAC,gBAAgBA,MAAK,MAAM,GAAG;AAClD;AAAA,YACD;AAEA,gBAAI,oCAAoC;AACvC,oBAAM,+BACL,WAAW,kBAAkB,cAAc;AAC5C,oBAAM,yCACL,6BAA6B;AAC9B,oBAAM,gBAAgB,IAAI;AAAA,gBACzB;AAAA,gBACA;AAAA,cACD;AAEA,kBACC,yCAAyC,KACzC,cAAc;AAAA,gBACb,6BACC,yCAAyC,CAC1C,EAAE;AAAA,cACH,GACC;AACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAOA,mBAAS,eAAe;AACvB,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,eAAe;AAAA,cACpB,WAAW;AAAA,cACX,KAAK,UAAUA,KAAI,IAChB,WAAS;AACT,sBAAM,sBACL,WAAW,KAAK;AAAA,kBACf,eAAe,MAAM,CAAC;AAAA,kBACtB,gBAAgB,MAAM,CAAC;AAAA,gBACxB;AAED,uBAAO,MAAM;AAAA,kBACZ;AAAA,oBACC,eAAe,MAAM,CAAC;AAAA,oBACtB,gBAAgB,MAAM,CAAC;AAAA,kBACxB;AAAA,mBACC,qBAAqBA,KAAI,IAAI,MAAM,MACnC,uBACC,sBAAsBA,KAAI,IACxB,MACA;AAAA,gBACL;AAAA,cACD,IACC;AAAA,YACJ,CAAC;AAAA,UACF;AAEA,cAAI,eAAe;AAClB,0BAAc,QAAQ,KAAK,EAAE,MAAAA,OAAM,aAAa,CAAC;AACjD;AAAA,UACD;AAEA,uBAAa;AAAA,QACd;AAQA,iBAAS,4BAA4BA,OAAM;AAC1C,cACC,8BAA8BA,MAAK,UAAU,WAAWA,KAAI,CAAC,GAC5D;AACD,mBAAOA,MAAK,QAAQ;AAAA,UACrB;AAAA,QACD;AAOA,iBAAS,0CAA0CA,OAAM;AACxD,cAAI,cAAcA,MAAK;AACvB,cAAI,kBAAkBA,MAAK,OAAO;AAElC,iBAAO,oBAAoB,oBAAoB;AAC9C,0BAAc,YAAY;AAC1B,8BAAkB,YAAY;AAAA,UAC/B;AAEA,iBAAO,oBAAoB;AAAA,QAC5B;AAQA,iBAAS,aAAaA,OAAM;AAC3B,gBAAM,SAASA,MAAK;AAEpB,cAAI,8BAA8B,QAAQ,WAAWA,KAAI,CAAC,GAAG;AAC5D,gBACC,sBAAsB,MAAM,KAC5B,EACC,OAAOA,KAAI;AAAA,YAEV,OAAO,SAAS,mBAChB,CAAC,0BAA0B,MAAM,KACjC,EACCA,MAAK,SAAS,mBACd,CAAC,0BAA0BA,KAAI;AAAA,YAGhCA,MAAK,SAAS,mBACd,OAAO,SAAS,sBAChB;AAAA,cACC;AAAA,YACD;AAAA,YAEA,CAACA,MAAK,YAAY,OAAO,SAAS,oBAEnC;AACD,qBAAOA,MAAK,MAAM;AAAA,YACnB;AAAA,UACD;AACA,UAAAA,MAAK,UACH;AAAA,YAAO,SACP;AAAA,cACC;AAAA,cACA;AAAA,YACD;AAAA,UACD,EACC,QAAQ,MAAM;AAAA,QACjB;AAQA,iBAAS,mBAAmBA,OAAM;AACjC,gBAAM,OAAO,WAAWA,KAAI;AAC5B,gBAAM,iBAAiB,WAAWA,MAAK,IAAI;AAC3C,gBAAM,kBAAkB,WAAWA,MAAK,KAAK;AAC7C,gBAAM,mBAAmBA,MAAK,aAAa;AAC3C,gBAAM,iBACL,kBACCA,MAAK,KAAK,SAAS,sBACnBA,MAAK,KAAK,SAAS;AACrB,gBAAM,kBACL,kBACCA,MAAK,MAAM,SAAS,sBACpBA,MAAK,MAAM,SAAS;AAEtB,cAAI,CAAC,kBAAkB,gBAAgBA,MAAK,IAAI,GAAG;AAClD,gBACE,EACA,CAAC,mBAAmB,iBAAiB,EAAE;AAAA,cACtCA,MAAK,KAAK;AAAA,YACX,KAAK,qBAEL,CAAC,SAAS;AAAA,cACTA,MAAK;AAAA,cACLA;AAAA,YACD,MACC,iBAAiB,QAChB,mBAAmB,QAAQ,CAAC,qBAC/B,qBAAqBA,MAAK,IAAI,GAC7B;AACD,qBAAOA,MAAK,IAAI;AAAA,YACjB;AAAA,UACD;AAEA,cAAI,CAAC,mBAAmB,gBAAgBA,MAAK,KAAK,GAAG;AACpD,gBACE,CAAC,SAAS;AAAA,cACVA,MAAK;AAAA,cACLA;AAAA,YACD,MACE,kBAAkB,QACjB,oBAAoB,QAAQ,qBAC/B,qBAAqBA,MAAK,KAAK,GAC9B;AACD,qBAAOA,MAAK,KAAK;AAAA,YAClB;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,WAAWA,OAAM;AACzB,cAAI,CAACA,MAAK,YAAY;AACrB;AAAA,UACD;AAMA,gBAAM,iBACL,WAAWA,MAAK,UAAU,IAAI,4BAC3B,gBAAgBA,MAAK,UAAU,IAC/B,sBAAsBA,MAAK,UAAU;AAEzC,cAAI,gBAAgB;AACnB,mBAAOA,MAAK,UAAU;AAAA,UACvB;AAAA,QACD;AAOA,iBAAS,oBAAoBA,OAAM;AAClC,cACC;AAAA,YACCA,MAAK;AAAA,YACL;AAAA,UACD,GACC;AACD,mBAAOA,MAAK,QAAQ;AAAA,UACrB;AAAA,QACD;AAOA,iBAAS,iCAAiCA,OAAM;AAC/C,gBAAM,aAAa,gBAAgBA,KAAI,IACpC,WAAW,eAAeA,KAAI,IAC9B,WAAW,cAAcA,KAAI;AAChC,gBAAM,cAAc,WAAW;AAAA,YAC9B;AAAA,YACA,SAAS;AAAA,UACV;AACA,gBAAM,aAAa,cAChB,WAAW,cAAc,WAAW,IACpC;AACH,gBAAM,0BAA0B,cAC7B,WAAW;AAAA,YACX;AAAA,YACA,SAAS;AAAA,UACV,IACC;AAEH,cACC,SAAS,oBAAoB,UAAU,MACtC,SAAS,oBAAoB,WAAW,KACvC,YAAY,SAAS,cACpB,YAAY,UAAU,cACtB,YAAY,UAAU,WACrB,YAAY,UAAU,SACtB,4BACC,SAAS;AAAA,YACT;AAAA,UACD,KACC,wBAAwB,SACvB,kBACJ,eACA,YAAY,SAAS,gBACrB,YAAY,UAAU,WACtB,cACA,WAAW,SAAS,aACpB,WAAW,UAAU,aACtB;AACD,2BAAe,IAAI,WAAW;AAAA,UAC/B;AAEA,gBAAM,iBACLA,MAAK,OAAO,SAAS,6BAClB;AAAA,YACAA;AAAA,YACA;AAAA,UACD,IACC,gBAAgBA,KAAI;AAExB,cAAI,gBAAgB;AACnB,mBAAOA,KAAI;AAAA,UACZ;AAAA,QACD;AASA,iBAAS,eAAeA,OAAM,UAAU;AACvC,gBAAMC,QAAO,CAACD,KAAI;AAClB,cAAI,cAAcA;AAElB,iBAAO,gBAAgB,UAAU;AAChC,0BAAc,YAAY;AAG1B,gBAAI,gBAAgB,MAAM;AACzB,oBAAM,IAAI;AAAA,gBACT;AAAA,cACD;AAAA,YACD;AAEA,YAAAC,MAAK,KAAK,WAAW;AAAA,UACtB;AAEA,iBAAOA;AAAA,QACR;AASA,iBAAS,iBAAiBD,OAAM,YAAY;AAC3C,iBAAO,eAAe,YAAYA,KAAI,EAAE,QAAQ;AAAA,QACjD;AASA,iBAAS,8BAA8BA,OAAM,OAAO;AACnD,kBAAQA,MAAK,MAAM;AAAA,YAClB,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO;AAAA,YACR,KAAK;AAAA,YACL,KAAK;AACJ,qBAAOA,MAAK,OAAO,SAAS,KAAK;AAAA,YAClC,KAAK;AAAA,YACL,KAAK;AACJ,qBAAOA,MAAK,UAAU,SAAS,KAAK;AAAA,YACrC,KAAK;AACJ,qBAAOA,MAAK,YAAYA,MAAK,aAAa;AAAA,YAC3C,KAAK;AACJ,qBAAOA,MAAK,eAAe;AAAA,YAC5B;AACC,qBAAO;AAAA,UACT;AAAA,QACD;AAOA,iBAAS,2BAA2B;AACnC,0BAAgB;AAAA,YACf,OAAO;AAAA,YACP,mBAAmB,CAAC;AAAA,YACpB,SAAS,CAAC;AAAA,UACX;AAAA,QACD;AAMA,iBAAS,6BAA6B;AACrC,gBAAM,EAAE,OAAO,mBAAmB,QAAQ,IAAI;AAE9C,cAAI,OAAO;AACV,kBAAM,kBAAkB,KAAK,GAAG,iBAAiB;AACjD,kBAAM,QAAQ,KAAK,GAAG,OAAO;AAAA,UAC9B,OAAO;AAEN,oBAAQ,QAAQ,CAAC,EAAE,aAAa,MAAM,aAAa,CAAC;AAAA,UACrD;AAEA,0BAAgB;AAAA,QACjB;AAOA,iBAAS,yBAAyBA,OAAM;AACvC,iBAAO,cAAc,QAAQ,KAAK,OAAK,EAAE,SAASA,KAAI;AAAA,QACvD;AAOA,iBAAS,+BAA+BA,OAAM;AAC7C,wBAAc,UAAU,cAAc,QAAQ;AAAA,YAC7C,OAAK,EAAE,SAASA;AAAA,UACjB;AAAA,QACD;AAOA,iBAAS,uBAAuBA,OAAM;AACrC,cAAIA,MAAK,SAAS,oBAAoB;AACrC,mBAAOA,MAAK,OAAO,SAAS,mBAC3BA,MAAK,OAAO,WAAWA,QACrB,OACAA,MAAK,OAAO,WAAWA,SACvB,uBAAuBA,MAAK,MAAM;AAAA,UACtC;AACA,iBAAO;AAAA,QACR;AAoBA,iBAAS,uCAAuC;AAAA,UAC/C;AAAA,UACA;AAAA,UACA;AAAA,QACD,GAAG;AACF,cACC,KAAK,SAAS,gBACd,CAAC,KAAK,OAAO,OAAO,KAAK,EAAE,SAAS,QAAQ,GAC3C;AACD,kBAAM,UAAU,MAAM;AAEtB,gBAAI,YAAY,2BAA2B;AAC1C,qBAAO;AAAA,YACR;AACA,iBACE,YAAY,wBACZ,YAAY,sBACb,CAAC,MAAM,IACN;AACD,qBAAO;AAAA,YACR;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AAEA,eAAO;AAAA,UACN,gBAAgBA,OAAM;AACrB,YAAAA,MAAK,SACH;AAAA,cACA,OACC,KACA;AAAA,gBACC;AAAA,gBACA;AAAA,cACD;AAAA,YACF,EACC,QAAQ,MAAM;AAAA,UACjB;AAAA,UAEA,aAAaA,OAAM;AAClB,YAAAA,MAAK,SACH,OAAO,OAAK,sBAAsB,CAAC,KAAK,gBAAgB,CAAC,CAAC,EAC1D,QAAQ,MAAM;AAAA,UACjB;AAAA,UAEA,wBAAwBA,OAAM;AAC7B,gBAAI,wBAAwBA,KAAI,GAAG;AAClC;AAAA,YACD;AAEA,gBACCA,MAAK,KAAK,SAAS,2BACnB,2BACC;AACD;AAAA,YACD;AAEA,gBAAIA,MAAK,KAAK,SAAS,kBAAkB;AACxC,oBAAM,iBAAiB,WAAW;AAAA,gBACjCA,MAAK;AAAA,gBACL,SAAS;AAAA,cACV;AACA,oBAAM,mBACL,WAAW,eAAe,cAAc;AAEzC,kBACC,SAAS,oBAAoB,gBAAgB,KAC7C,SAAS,oBAAoB,cAAc,GAC1C;AACD,+BAAe,IAAI,cAAc;AAAA,cAClC;AACA,kBACC;AAAA,gBACCA,MAAK;AAAA,gBACL;AAAA,cACD,GACC;AACD,uBAAOA,MAAK,IAAI;AAAA,cACjB;AAAA,YACD;AAAA,UACD;AAAA,UAEA,qBAAqBA,OAAM;AAC1B,gBACC,sBAAsBA,MAAK,IAAI,KAC/B,gBAAgBA,MAAK,IAAI,MACxB,CAAC,uCAAuCA,KAAI,KAC5C,qBAAqBA,MAAK,IAAI,IAC9B;AACD,qBAAOA,MAAK,IAAI;AAAA,YACjB;AAEA,gBACC,CAAC,wBAAwBA,KAAI,KAC7B,8BAA8BA,MAAK,OAAO,WAAWA,KAAI,CAAC,GACzD;AACD,qBAAOA,MAAK,KAAK;AAAA,YAClB;AAAA,UACD;AAAA,UAEA,iBAAiBA,OAAM;AACtB,gBAAI,iBAAiBA,MAAK,aAAa,MAAM;AAC5C,4BAAc,kBAAkB,KAAKA,KAAI;AAAA,YAC1C;AAEA,+BAAmBA,KAAI;AAAA,UACxB;AAAA,UAEA,gBAAgB;AAAA,UAEhB,sBAAsBA,OAAM;AAC3B,gBAAI,wBAAwBA,KAAI,GAAG;AAClC;AAAA,YACD;AAEA,kBAAM,iBAAiB,oBAAI,IAAI;AAAA,cAC9B;AAAA,cACA;AAAA,YACD,CAAC;AAED,gBACC,EACC,uBACA,eAAe,IAAIA,MAAK,KAAK,IAAI,MAElC,CAAC,sBAAsBA,KAAI,KAC3B;AAAA,cACCA,MAAK;AAAA,cACL,WAAW;AAAA,gBACV,MAAM;AAAA,gBACN,UAAU;AAAA,cACX,CAAC;AAAA,YACF,GACC;AACD,qBAAOA,MAAK,IAAI;AAAA,YACjB;AAEA,gBACC,EACC,uBACA,eAAe,IAAIA,MAAK,WAAW,IAAI,MAExC;AAAA,cACCA,MAAK;AAAA,cACL;AAAA,YACD,GACC;AACD,qBAAOA,MAAK,UAAU;AAAA,YACvB;AAEA,gBACC,EACC,uBACA,eAAe,IAAIA,MAAK,UAAU,IAAI,MAEvC;AAAA,cACCA,MAAK;AAAA,cACL;AAAA,YACD,GACC;AACD,qBAAOA,MAAK,SAAS;AAAA,YACtB;AAAA,UACD;AAAA,UAEA,iBAAiBA,OAAM;AACtB,gBACC,gBAAgBA,MAAK,IAAI,KACzB,CAAC,sBAAsBA,KAAI,GAC1B;AACD,qBAAOA,MAAK,IAAI;AAAA,YACjB;AAAA,UACD;AAAA,UAEA,0BAA0B,CAAAA,UACzB,iCAAiCA,MAAK,WAAW;AAAA,UAClD,qBAAqB,CAAAA,UACpB,iCAAiCA,MAAK,UAAU;AAAA,UAEjD,eAAeA,OAAM;AACpB,gBAAIA,MAAK,KAAK,SAAS,uBAAuB;AAC7C,oBAAM,iBAAiB,WAAW;AAAA,gBACjCA,MAAK;AAAA,gBACL,SAAS;AAAA,cACV;AAEA,kBACC,eAAe,UAAU,SACzB,SAAS;AAAA,gBACR,WAAW;AAAA,kBACV;AAAA,kBACA,SAAS;AAAA,gBACV;AAAA,cACD,GACC;AAED,+BAAe,IAAI,cAAc;AAAA,cAClC;AAAA,YACD;AAEA,gBAAI,gBAAgBA,MAAK,IAAI,GAAG;AAC/B,qBAAOA,MAAK,IAAI;AAAA,YACjB;AAEA,gBAAI,gBAAgBA,MAAK,KAAK,GAAG;AAChC,qBAAOA,MAAK,KAAK;AAAA,YAClB;AAAA,UACD;AAAA,UAEA,eAAeA,OAAM;AACpB,gBAAIA,MAAK,KAAK,SAAS,uBAAuB;AAC7C,oBAAM,iBAAiB,WAAW;AAAA,gBACjCA,MAAK;AAAA,gBACL,SAAS;AAAA,cACV;AAEA,kBAAI,eAAe,UAAU,OAAO;AAEnC,+BAAe,IAAI,cAAc;AAAA,cAClC;AAAA,YACD;AAEA,gBAAI,gBAAgBA,MAAK,IAAI,GAAG;AAC/B,qBAAOA,MAAK,IAAI;AAAA,YACjB;AAEA,gBACC;AAAA,cACCA,MAAK;AAAA,cACL;AAAA,YACD,GACC;AACD,qBAAOA,MAAK,KAAK;AAAA,YAClB;AAAA,UACD;AAAA,UAEA,aAAaA,OAAM;AAClB,gBACCA,MAAK,QACL,gBAAgBA,MAAK,IAAI,KACzB,CAAC,sBAAsBA,KAAI,GAC1B;AACD,qBAAOA,MAAK,IAAI;AAAA,YACjB;AAEA,gBAAIA,MAAK,UAAU,gBAAgBA,MAAK,MAAM,GAAG;AAChD,qBAAOA,MAAK,MAAM;AAAA,YACnB;AAEA,gBAAIA,MAAK,MAAM;AACd,kBAAIA,MAAK,KAAK,SAAS,uBAAuB;AAC7C,sBAAM,aAAa,WAAW;AAAA,kBAC7BA,MAAK;AAAA,kBACL,SAAS;AAAA,gBACV;AAEA,oBACC,WAAW,UAAU,SACrB,SAAS;AAAA,kBACR,WAAW;AAAA,oBACV;AAAA,oBACA,SAAS;AAAA,kBACV;AAAA,gBACD,GACC;AAED,iCAAe,IAAI,UAAU;AAAA,gBAC9B;AAAA,cACD;AAEA,uCAAyB;AAEzB,kBAAI,gBAAgBA,MAAK,IAAI,GAAG;AAC/B,uBAAOA,MAAK,IAAI;AAAA,cACjB;AAAA,YACD;AAAA,UACD;AAAA,UAEA,6BAA6BA,OAAM;AAUlC,gBAAI,cAAc,QAAQ,QAAQ;AACjC,4BAAc,kBAAkB;AAAA,gBAC/B,sBAAoB;AACnB,wBAAMC,QAAO;AAAA,oBACZD;AAAA,oBACA;AAAA,kBACD;AACA,sBAAI;AAEJ,2BAAS,IAAI,GAAG,IAAIC,MAAK,QAAQ,KAAK;AACrC,0BAAM,WAAWA,MAAK,CAAC;AAEvB,wBAAI,IAAIA,MAAK,SAAS,GAAG;AACxB,4BAAM,eAAeA,MAAK,IAAI,CAAC;AAE/B,0BACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACD,GACC;AAED;AAAA,sBACD;AAAA,oBACD;AAEA,wBAAI,gBAAgB,QAAQ,GAAG;AAC9B,0BAAI,yBAAyB,QAAQ,GAAG;AAGvC,4BAAI,qBAAqB,QAAQ,GAAG;AAMnC;AAAA,wBACD;AAGA,4BAAI,CAAC,eAAe;AACnB,0CAAgB;AAAA,wBACjB;AAAA,sBAGD,OAAO;AAEN;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD;AAGA,iDAA+B,aAAa;AAAA,gBAC7C;AAAA,cACD;AAAA,YACD;AAEA,uCAA2B;AAAA,UAC5B;AAAA,UAEA,YAAYD,OAAM;AACjB,gBACC,gBAAgBA,MAAK,IAAI,KACzB,CAAC,sBAAsBA,KAAI,GAC1B;AACD,qBAAOA,MAAK,IAAI;AAAA,YACjB;AAAA,UACD;AAAA,UAEA,iBAAiBA,OAAM;AACtB,kBAAM,EAAE,OAAO,IAAIA;AAEnB,gBAAI,OAAO,SAAS,sBAAsB;AACzC,kBAAI,sBAAsB,MAAM,GAAG;AAClC,uBAAO,MAAM;AAAA,cACd;AAAA,YACD,WAAW,gBAAgB,MAAM,GAAG;AACnC,qBAAO,MAAM;AAAA,YACd;AAAA,UACD;AAAA,UAEA,mBAAmB;AAAA,UAEnB,iBAAiBA,OAAM;AACtB,kBAAM,sBACL,uBAAuBA,KAAI,KAC3B,0CAA0CA,KAAI;AAC/C,kBAAM,yBAAyB,sBAC5B,sBAAsBA,MAAK,MAAM,IACjC,gBAAgBA,MAAK,MAAM,KAC5B,EACC;AAAA,cACCA,MAAK;AAAA,YACN,KACAA,MAAK,OAAO,WAAWA,SACvB;AAGH,gBACC,0BACA,WAAWA,MAAK,MAAM,KAAK,WAAWA,KAAI,MACzCA,MAAK,YACL,EACC,SAAS,iBAAiBA,MAAK,MAAM;AAAA,YAEpCA,MAAK,OAAO,SAAS,aACrBA,MAAK,OAAO,SAEd;AACD,qBAAOA,MAAK,MAAM;AAAA,YACnB;AAEA,gBACC,0BACAA,MAAK,OAAO,SAAS,kBACpB;AACD,qBAAOA,MAAK,MAAM;AAAA,YACnB;AAEA,gBACC,0BACA,CAAC,6BACDA,MAAK,OAAO,SAAS,mBACrB,0BAA0BA,MAAK,MAAM,GACpC;AACD,qBAAOA,MAAK,MAAM;AAAA,YACnB;AAEA,gBACC,0BACAA,MAAK,YACLA,MAAK,OAAO,SAAS,mBACpB;AACD,qBAAOA,MAAK,MAAM;AAAA,YACnB;AAEA,gBAAIA,MAAK,YAAY,gBAAgBA,MAAK,QAAQ,GAAG;AACpD,qBAAOA,MAAK,QAAQ;AAAA,YACrB;AAAA,UACD;AAAA,UAEA,kCAAkCA,OAAM;AACvC,gBACC;AAAA,cACCA,MAAK;AAAA,cACL;AAAA,YACD,GACC;AACD,qBAAOA,MAAK,GAAG;AAAA,YAChB;AAAA,UACD;AAAA,UAEA,eAAe;AAAA,UAEf,iBAAiBA,OAAM;AACtB,YAAAA,MAAK,WACH;AAAA,cACA,cACC,SAAS,SACT;AAAA,gBACC,SAAS;AAAA,gBACT;AAAA,cACD;AAAA,YACF,EACC,QAAQ,cAAY,OAAO,SAAS,KAAK,CAAC;AAAA,UAC7C;AAAA,UAEA,cAAcA,OAAM;AACnB,YAAAA,MAAK,WACH,OAAO,cAAY;AACnB,oBAAME,SAAQ,SAAS;AAEvB,qBACC,sBAAsBA,MAAK,KAC3B,gBAAgBA,MAAK;AAAA,YAEvB,CAAC,EACA,QAAQ,cAAY,OAAO,SAAS,KAAK,CAAC;AAAA,UAC7C;AAAA,UAEA,SAASF,OAAM;AACd,gBAAIA,MAAK,UAAU;AAClB,oBAAM,EAAE,IAAI,IAAIA;AAEhB,kBACC,OACA;AAAA,gBACC;AAAA,gBACA;AAAA,cACD,GACC;AACD,uBAAO,GAAG;AAAA,cACX;AAAA,YACD;AAAA,UACD;AAAA,UAEA,mBAAmBA,OAAM;AACxB,gBACCA,MAAK,YACL;AAAA,cACCA,MAAK;AAAA,cACL;AAAA,YACD,GACC;AACD,qBAAOA,MAAK,GAAG;AAAA,YAChB;AAEA,gBACCA,MAAK,SACL;AAAA,cACCA,MAAK;AAAA,cACL;AAAA,YACD,GACC;AACD,qBAAOA,MAAK,KAAK;AAAA,YAClB;AAAA,UACD;AAAA,UAEA,YAAYA,OAAM;AACjB,kBAAM,WAAWA,MAAK;AAEtB,gBACC,sBAAsB,QAAQ,KAC9B,gBAAgB,QAAQ,GACvB;AACD,qBAAO,QAAQ;AAAA,YAChB;AAAA,UACD;AAAA,UAEA,gBAAgBA,OAAM;AACrB,kBAAM,cAAc,WAAW,cAAcA,KAAI;AAEjD,gBAAI,wBAAwBA,KAAI,GAAG;AAClC;AAAA,YACD;AAEA,gBACCA,MAAK,YACL;AAAA,cACC;AAAA,cACAA,MAAK;AAAA,YACN;AAAA,YAEA,EAAEA,MAAK,SAAS,SAAS,aAAaA,MAAK,SAAS,QACnD;AACD,qBAAOA,MAAK,QAAQ;AAAA,YACrB;AAAA,UACD;AAAA,UAEA,mBAAmBA,OAAM;AACxB,kBAAM,mBAAmB,WAAWA,KAAI;AAExC,YAAAA,MAAK,YACH;AAAA,cAAO,OACP,8BAA8B,GAAG,gBAAgB;AAAA,YAClD,EACC,QAAQ,MAAM;AAAA,UACjB;AAAA,UAEA,WAAWA,OAAM;AAChB,gBAAIA,MAAK,QAAQ,gBAAgBA,MAAK,IAAI,GAAG;AAC5C,qBAAOA,MAAK,IAAI;AAAA,YACjB;AAAA,UACD;AAAA,UAEA,gBAAgBA,OAAM;AACrB,gBAAI,gBAAgBA,MAAK,YAAY,GAAG;AACvC,qBAAOA,MAAK,YAAY;AAAA,YACzB;AAAA,UACD;AAAA,UAEA,eAAeA,OAAM;AACpB,kBAAM,aAAa,WAAW,cAAcA,KAAI;AAEhD,gBACC,gCAAgC,YAAYA,MAAK,QAAQ,GACxD;AACD,qBAAOA,MAAK,QAAQ;AAAA,YACrB;AAAA,UACD;AAAA,UAEA,iBAAiB;AAAA,UACjB,iBAAiBA,OAAM;AACtB,gBAAIA,MAAK,QAAQ;AAChB,0CAA4BA,KAAI;AAAA,YACjC,OAAO;AACN,oBAAM,EAAE,SAAS,IAAIA;AACrB,oBAAM,gBAAgB,WAAW,aAAaA,KAAI;AAElD,kBACC,SAAS,IAAI,IAAI,SAAS,cAAc,IAAI,MAAM,MACjD;AACD,4CAA4BA,KAAI;AAAA,cACjC,OAAO;AACN,oBAAI,sBAAsB,QAAQ,GAAG;AACpC,yBAAO,QAAQ;AAAA,gBAChB;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UACA,iBAAiB;AAAA,UAEjB,mBAAmBA,OAAM;AACxB,gBACCA,MAAK,QACL;AAAA,cACCA,MAAK;AAAA,cACL;AAAA,YACD;AAAA,YAEA,EAAEA,MAAK,KAAK,SAAS,aAAaA,MAAK,KAAK,QAC3C;AACD,qBAAOA,MAAK,IAAI;AAAA,YACjB;AAAA,UACD;AAAA,UAEA,eAAeA,OAAM;AACpB,gBACC,gBAAgBA,MAAK,IAAI,KACzB,CAAC,sBAAsBA,KAAI,GAC1B;AACD,qBAAOA,MAAK,IAAI;AAAA,YACjB;AAAA,UACD;AAAA,UAEA,cAAcA,OAAM;AACnB,gBAAI,gBAAgBA,MAAK,MAAM,GAAG;AACjC,qBAAOA,MAAK,MAAM;AAAA,YACnB;AAAA,UACD;AAAA,UAEA,gBAAgBA,OAAM;AACrB,gBAAIA,MAAK,UAAU;AAClB,oBAAM,aAAa,WAAW,cAAcA,KAAI;AAEhD,kBACE,WAAWA,MAAK,QAAQ,KAAK,WAAWA,KAAI,KAC5C;AAAA,gBACC;AAAA,gBACAA,MAAK;AAAA,cACN,KACD,sBAAsBA,MAAK,QAAQ,GAClC;AACD,uBAAOA,MAAK,QAAQ;AAAA,cACrB;AAAA,YACD;AAAA,UACD;AAAA,UAEA,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,UAEjB,eAAe;AAAA,UACf,gBAAgB;AAAA,UAChB,4BAA4B;AAAA,UAE5B,gBAAgBA,OAAM;AACrB,YAAAA,MAAK,YACH,OAAO,OAAK,KAAK,gBAAgB,CAAC,CAAC,EACnC,QAAQ,MAAM;AAAA,UACjB;AAAA,UAEA,kBAAkBA,OAAM;AACvB,kBAAM,EAAE,MAAM,MAAM,IAAIA;AAExB,gBAAI,sBAAsB,IAAI,KAAK,gBAAgB,IAAI,GAAG;AACzD,qBAAO,IAAI;AAAA,YACZ;AAEA,gBACC,SACA;AAAA,cACC;AAAA,cACA;AAAA,YACD,GACC;AACD,qBAAO,KAAK;AAAA,YACb;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpoDA;AAAA,mDAAAG,UAAAC,SAAA;AAAA;AAYA,QAAM,aAAa;AACnB,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QACT,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAQ3B,iBAAS,UAAU,aAAa;AAC/B,gBAAM,YAAY,WAAW,cAAc,WAAW;AAEtD,cAAI,CAAC,aAAa,UAAU,SAAS,UAAU;AAC9C,mBAAO;AAAA,UACR;AACA,gBAAM,aAAa,WAAW;AAAA,YAC7B,UAAU,MAAM,CAAC;AAAA,UAClB;AAEA,iBAAO,CAAC,SAAS,8BAA8B,WAAW,MAAM;AAAA,QACjE;AAOA,iBAAS,OAAO,aAAa;AAC5B,kBAAQ,OAAO;AAAA,YACd,MAAM;AAAA,YACN,WAAW;AAAA,YACX,KAAK,UAAU,WAAW,IACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAMA,IAAI,WAAW,OAAO,QAAQ,UAAU,EACtC,wBAAwB,WAAW,EACnC,OAAO,WAAW;AAAA,gBACpB;AAAA,UACJ,CAAC;AAAA,QACF;AAQA,iBAAS,wBAAwB,YAAY;AAC5C,mBACK,QAAQ,YACZ,MAAM,SAAS,gBACf,CAAC,SAAS,oBAAoB,KAAK,GACnC,QAAQ,WAAW,cAAc,KAAK,GACrC;AACD,gBAAI,SAAS,iBAAiB,KAAK,GAAG;AACrC,qBAAO,KAAK;AAAA,YACb;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMN,eAAeC,OAAM;AACpB,kBAAM,SAASA,MAAK,QACnB,qBAAqB;AAAA,cACpB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAED,gBAAI,CAAC,mBAAmB,SAAS,OAAO,IAAI,GAAG;AAC9C,qBAAOA,KAAI;AAAA,YACZ;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,UAAUA,OAAM;AACf,oCAAwB,WAAW,cAAcA,OAAM,CAAC,CAAC;AAAA,UAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,oDAAoDA,OAAM;AACzD,oCAAwB,WAAW,cAAcA,KAAI,CAAC;AAAA,UACvD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACtKA;AAAA,iDAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,oBACL;AAED,IAAAA,QAAO,UAAU;AAAA,MAChB;AAAA,IACD;AAAA;AAAA;;;ACfA;AAAA,oDAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,EAAE,kBAAkB,IAAI;AAC9B,QAAM,EAAE,sBAAsB,IAAI;AAMlC,QAAM,8BAA8B;AAQpC,aAAS,qBAAqB,SAAS,2BAA2B;AACjE,aACC,0BAA0B,KAAK,OAAO,KACtC,CAAC,kBAAkB,KAAK,QAAQ,KAAK,CAAC;AAAA,IAExC;AAUA,aAAS,sBACR,uBACA,gBACA,SACA,2BACC;AACD,YAAM,aAAa,QAAQ;AAE3B,UACC,sBAAsB,WAAW,WAAW,KAC5C,sBAAsB,WAAW,CAAC,EAAE,SAAS,kBAC5C;AACD,cAAM,qBAAqB,WAAW;AAAA,UACrC,sBAAsB,WAAW,CAAC;AAAA,QACnC;AACA,cAAM,iBAAiB,WACrB,kBAAkB,kBAAkB,EACpC,IAAI;AAEN,YACC,kBACA;AAAA,UACC,eAAe;AAAA,UACf;AAAA,QACD,GACC;AACD,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,YAAM,UAAU,WAAW,kBAAkB,cAAc,EAAE,IAAI;AAEjE,UACC,WACA,qBAAqB,QAAQ,OAAO,yBAAyB,GAC5D;AACD,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,qBAAqBC,OAAM,OAAO;AAC1C,aAAO,MAAM,IAAI,MAAM,OAAOA,MAAK,IAAI,IAAI,OAAO;AAAA,IACnD;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,gBAAgB;AAAA,YAChB,gCAAgC;AAAA,UACjC;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,gBAAgB;AAAA,gBACf,MAAM;AAAA,cACP;AAAA,cACA,gBAAgB;AAAA,gBACf,MAAM;AAAA,cACP;AAAA,cACA,gCAAgC;AAAA,gBAC/B,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,0BACC;AAAA,UACD,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,mBAAmB,CAAC;AAC1B,YAAI,0BAA0B,oBAAI,IAAI;AACtC,cAAM,aAAa,QAAQ;AAC3B,cAAM;AAAA,UACL,EAAE,gBAAgB,gBAAgB,+BAA+B;AAAA,QAClE,IAAI,QAAQ;AACZ,cAAM,4BAA4B,iBAC/B,IAAI,OAAO,gBAAgB,GAAG,IAC9B;AAMH,YAAI,eAAe;AAEnB,eAAO;AAAA,UACN,kBAAkB;AACjB,6BAAiB,KAAK,uBAAuB;AAC7C,sCAA0B,oBAAI,IAAI;AAAA,UACnC;AAAA,UAEA,gBAAgB;AACf,sCAA0B,iBAAiB,IAAI;AAAA,UAChD;AAAA,UAEA,kCAAkC,SAAS;AAC1C,oCAAwB,IAAI,OAAO;AAAA,UACpC;AAAA,UAEA,gCAAgC,SAAS;AACxC,oCAAwB,OAAO,OAAO;AAAA,UACvC;AAAA,UAEA,uBAAuB,SAAS;AAC/B,oCAAwB,IAAI,OAAO;AAAA,UACpC;AAAA,UAEA,qBAAqB,SAAS;AAC7B,oCAAwB,OAAO,OAAO;AAAA,UACvC;AAAA,UAEA,WAAWC,OAAM;AAMhB,gBAAI,gBAAgB,aAAa,KAAK,WAAWA,MAAK,QAAQ;AAC7D,oBAAM,iCACL;AAAA,gBACC,aAAa;AAAA,gBACbA;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAED,kBACC,aAAa,iBACb,CAAC,gCACA;AACD,wBAAQ,OAAO;AAAA,kBACd,WAAWA,MAAK,OAAO,SAAS;AAAA,kBAChC,MAAAA;AAAA,gBACD,CAAC;AAAA,cACF,WACC,kCACA,CAAC,aAAa,yBACd,gCACC;AACD,wBAAQ,OAAO;AAAA,kBACd,WAAW;AAAA,kBACX,MAAM;AAAA,gBACP,CAAC;AAAA,cACF;AAAA,YACD;AACA,2BAAe;AAAA,UAChB;AAAA,UAEA,kBAAkBA,OAAM;AACvB,kBAAM,YAAY,WAAW,cAAcA,KAAI;AAO/C,kBAAM,wBAAwB;AAAA,cAC7B;AAAA,YACD;AACA,kBAAM,gBACL,0BACCA,MAAK,WAAW,SAAS,KACxB,CAAC,kBACD,qBAAqBA,OAAM,SAAS,MACtCA,MAAK,OAAO,MAAM,GAAG,EAAE,MAAMA;AAE9B,2BAAe;AAAA,cACd,MAAAA;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrPA;AAAA,yDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,SAAS;AAAA,QACT,UAAU;AAAA,UACT,SAAS;AAAA,UACT,UAAU;AAAA,QACX;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,QAAQC,OAAM;AACb,gBAAI,OAAOA,MAAK,UAAU,UAAU;AACnC,kBAAIA,MAAK,IAAI,WAAW,GAAG,GAAG;AAC7B,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,IAAI,OAAO;AACV,0BAAM,cACL,WAAW,eAAeA,KAAI;AAC/B,0BAAM,mBACL,eACA,YAAY,MAAM,CAAC,MAAMA,MAAK,MAAM,CAAC,KACrC,CAAC,SAAS;AAAA,sBACT;AAAA,sBACA,IAAIA,MAAK,GAAG;AAAA,oBACb;AAED,2BAAO,MAAM;AAAA,sBACZA;AAAA,sBACA,mBAAmB,OAAO;AAAA,oBAC3B;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF;AACA,kBAAIA,MAAK,IAAI,QAAQ,GAAG,MAAMA,MAAK,IAAI,SAAS,GAAG;AAClD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,KAAK,WAAS,MAAM,gBAAgBA,OAAM,GAAG;AAAA,gBAC9C,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClGA;AAAA,oDAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,aAAa;AAAA,QACd;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAO3B,iBAAS,eAAe,YAAY;AACnC,mBAAS,uBAAuB,UAAU,EAAE,QAAQ,eAAa;AAChE,oBAAQ,OAAO;AAAA,cACd,MAAM,UAAU;AAAA,cAChB,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,MAAM,UAAU,WAAW;AAAA,cAC5B;AAAA,YACD,CAAC;AAAA,UACF,CAAC;AAAA,QACF;AAOA,iBAAS,cAAc,UAAU;AAChC,cAAI,SAAS,KAAK,CAAC,EAAE,SAAS,gBAAgB;AAC7C,2BAAe,SAAS,UAAU;AAAA,UACnC;AAAA,QACD;AAOA,iBAAS,iBAAiBC,OAAM;AAC/B,qBAAW,qBAAqBA,KAAI,EAAE,QAAQ,aAAa;AAAA,QAC5D;AAEA,eAAO;AAAA,UACN,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,QACrB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5EA;AAAA,sDAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;AAAA,QAEnC,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,YAAY;AAAA,gBACX,MAAM;AAAA,gBACN,OAAO,EAAE,MAAM,SAAS;AAAA,gBACxB,aAAa;AAAA,cACd;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,2BACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,CAAC,EAAE,WAAW,CAAC,IAAI,QAAQ;AASjC,iBAAS,eAAe,WAAWC,QAAO,YAAY;AACrD,gBAAM,aAAa,UAAU;AAE7B,cACC,UAAU,SAAS,SACnB,UAAU,QAAQ;AAAA;AAAA;AAAA;AAAA,WAKjBA,WAAU,KAAK,WAAWA,SAAQ,CAAC,EAAE,eAAe,aACpD;AACD,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,MAAM,WAAW;AAAA,cAClB;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,cAAc,UAAU;AAChC,cACC,SAAS,cAAc,SACvB,CAAC,WAAW,SAAS,SAAS,IAAI,GACjC;AACD,qBAAS,WAAW,QAAQ,cAAc;AAAA,UAC3C;AAAA,QACD;AAEA,eAAO;AAAA,UACN,QAAQC,OAAM;AACb,kBAAM,cAAc,WAAW,SAASA,KAAI;AAE5C,wBAAY,UAAU,QAAQ,aAAa;AAAA,UAC5C;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpGA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAMjB,QAAM,mBAAmB;AACzB,QAAM,sBAAsB,CAAC,KAAK,MAAM,KAAK,OAAO,KAAK,GAAG;AAO5D,aAAS,wBAAwBC,OAAM;AACtC,aACCA,MAAK,aAAa,OAClBA,MAAK,SAAS,SAAS,qBACvBA,MAAK,SAAS,aAAa;AAAA,IAE7B;AAOA,aAAS,0BAA0BA,OAAM;AACxC,UAAIA,MAAK,aAAa,KAAK;AAC1B,eAAO;AAAA,MACR;AACA,YAAM,WAAW,SAAS,oBAAoBA,MAAK,QAAQ;AAE3D,aACC,SAAS,SAAS,oBAClB,SAAS,uBAAuB,SAAS,QAAQ,MAAM,gBAAgB;AAAA,IAEzE;AAOA,aAAS,gBAAgBA,OAAM;AAC9B,aACCA,MAAK,aAAa,QAChBA,MAAK,KAAK,SAAS,aAAaA,MAAK,KAAK,UAAU,KACpDA,MAAK,MAAM,SAAS,aAAaA,MAAK,MAAM,UAAU;AAAA,IAE1D;AAUA,aAAS,0BAA0BA,OAAM,YAAY;AACpD,aACCA,MAAK,SAAS,sBACdA,MAAK,aAAa,OAClBA,MAAK,MAAM,SAAS,aACpBA,MAAK,MAAM,UAAU,KACrBA,MAAK,OAAO,SAAS,sBACrBA,MAAK,OAAO,aAAa,OACzBA,MAAK,OAAO,SAASA,SACrB,CAAC,SAAS,gBAAgB,YAAYA,KAAI;AAAA,IAE5C;AAOA,aAAS,UAAUA,OAAM;AACxB,aACEA,MAAK,SAAS,aAAa,OAAOA,MAAK,UAAU,YACjDA,MAAK,SAAS,qBACbA,MAAK,OAAO,SAAS,YACrBA,MAAK,OAAO,SAAS,cACrBA,MAAK,OAAO,SAAS;AAAA,IAEzB;AASA,aAAS,qBAAqBA,OAAM;AACnC,YAAM,OAAOA,MAAK,MACjB,QAAQA,MAAK;AAEd,UAAI,MAAM,SAAS,sBAAsB,CAAC,UAAU,KAAK,GAAG;AAC3D,eAAO;AAAA,MACR;AAEA,UAAI,KAAK,SAAS,sBAAsB,CAAC,UAAU,IAAI,GAAG;AACzD,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,IACR;AAOA,aAAS,aAAaA,OAAM;AAC3B,aACC,SAAS,gBAAgBA,KAAI,KAC5BA,MAAK,SAAS,oBACdA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS;AAAA,IAExB;AAQA,aAAS,cAAcA,OAAM;AAC5B,aACC,SAAS,gBAAgBA,KAAI,MAC5BA,MAAK,UAAU,MACdA,MAAK,SAAS,qBACdA,MAAK,OAAO,WAAW,KACvBA,MAAK,OAAO,CAAC,EAAE,MAAM,WAAW;AAAA,IAEpC;AAOA,aAAS,wBAAwBA,OAAM;AACtC,aACCA,MAAK,aAAa,QAChB,cAAcA,MAAK,IAAI,KAAK,CAAC,aAAaA,MAAK,KAAK,KACpD,cAAcA,MAAK,KAAK,KAAK,CAAC,aAAaA,MAAK,IAAI;AAAA,IAExD;AAOA,aAAS,oBAAoBA,OAAM;AAClC,aAAOA,MAAK,aAAa,QAAQ,cAAcA,MAAK,KAAK;AAAA,IAC1D;AAOA,aAAS,mBAAmBA,OAAM;AACjC,aAAO,cAAcA,MAAK,IAAI,IAAIA,MAAK,QAAQA,MAAK;AAAA,IACrD;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,gBAAgB;AAAA,QAChB,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,SAAS;AAAA,gBACR,MAAM;AAAA,cACP;AAAA,cACA,QAAQ;AAAA,gBACP,MAAM;AAAA,cACP;AAAA,cACA,QAAQ;AAAA,gBACP,MAAM;AAAA,cACP;AAAA,cACA,2BAA2B;AAAA,gBAC1B,MAAM;AAAA,cACP;AAAA,cACA,OAAO;AAAA,gBACN,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,gBACA,aAAa;AAAA,cACd;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,gBAAgB;AAAA,UACf;AAAA,YACC,OAAO,CAAC;AAAA,YACR,SAAS;AAAA,YACT,2BAA2B;AAAA,YAC3B,QAAQ;AAAA,YACR,QAAQ;AAAA,UACT;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,kBACC;AAAA,UACD,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,OAAO,IAAI,QAAQ;AAC1B,cAAM,aAAa,QAAQ;AAU3B,iBAAS,OAAOC,OAAM,gBAAgB,eAAe,WAAW;AAM/D,mBAAS,IAAI,OAAO;AACnB,kBAAM,cAAc,WAAW,eAAeA,KAAI;AAElD,gBACC,aAAa,MAAM,CAAC,MAAMA,MAAK,MAAM,CAAC,KACtC,CAAC,SAAS,oBAAoB,aAAa,cAAc,GACxD;AACD,qBAAO,MAAM,YAAYA,OAAM,IAAI,cAAc,EAAE;AAAA,YACpD;AAEA,mBAAO,MAAM,YAAYA,OAAM,cAAc;AAAA,UAC9C;AAEA,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW;AAAA,YACX,MAAM,EAAE,eAAe;AAAA,YACvB,IAAI,OAAO;AACV,kBAAI,CAAC,WAAW;AACf,uBAAO;AAAA,cACR;AAEA,qBAAO,IAAI,KAAK;AAAA,YACjB;AAAA,YACA,SAAS;AAAA,cACR;AAAA,gBACC,WAAW;AAAA,gBACX,MAAM,EAAE,eAAe;AAAA,gBACvB,IAAI,OAAO;AACV,sBAAI,aAAa,CAAC,eAAe;AAChC,2BAAO;AAAA,kBACR;AAEA,yBAAO,IAAI,KAAK;AAAA,gBACjB;AAAA,cACD;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAEA,eAAO;AAAA,UACN,gBAAgBA,OAAM;AACrB,gBAAI;AAGJ,8BAAkB,QAAQ,MAAM,SAAS,IAAI;AAC7C,gBACC,CAAC,mBACD,QAAQ,WACR,wBAAwBA,KAAI,GAC3B;AACD,oBAAM,iBAAiB,WAAW,WAAW,QAAQA,MAAK,SAAS,QAAQ,CAAC;AAC5E,oBAAM,WAAW,SAAS;AAAA,gBACzB,WAAW,SAASA,KAAI;AAAA,gBACxB;AAAA,cACD;AACA,oBAAM,gBAAgB,UAAU,YAAY,WAAW;AAEvD,qBAAOA,OAAM,gBAAgB,MAAM,aAAa;AAAA,YACjD;AAGA,8BAAkB,QAAQ,MAAM,SAAS,GAAG;AAC5C,gBACC,CAAC,mBACD,QAAQ,WACR,0BAA0BA,KAAI,GAC7B;AAED,oBAAM,aACLA,MAAK,SAAS,SAAS,oBACpB,SACA;AACJ,oBAAM,iBAAiB,GAAG,WAAW,QAAQA,MAAK,QAAQ,CAAC,IAAI,UAAU;AAEzE,qBAAOA,OAAM,gBAAgB,OAAO,KAAK;AAAA,YAC1C;AAGA,8BAAkB,QAAQ,MAAM,SAAS,GAAG;AAC5C,gBACC,CAAC,mBACD,QAAQ,UACRA,MAAK,aAAa,OAClB,CAAC,UAAUA,MAAK,QAAQ,GACvB;AACD,oBAAM,iBAAiB,UAAU,WAAW,QAAQA,MAAK,QAAQ,CAAC;AAElE,qBAAOA,OAAM,gBAAgB,MAAM,KAAK;AAAA,YACzC;AAGA,8BAAkB,QAAQ,MAAM,SAAS,KAAK;AAC9C,gBACC,CAAC,mBACD,QAAQ,UACRA,MAAK,aAAa,OAClBA,MAAK,SAAS,SAAS,qBACvBA,MAAK,SAAS,aAAa,OAC3B,CAAC,UAAUA,MAAK,SAAS,QAAQ,GAChC;AACD,oBAAM,iBAAiB,UAAU,WAAW,QAAQA,MAAK,SAAS,QAAQ,CAAC;AAE3E,qBAAOA,OAAM,gBAAgB,MAAM,KAAK;AAAA,YACzC;AAAA,UACD;AAAA;AAAA,UAGA,wBAAwBA,OAAM;AAC7B,gBAAI;AAGJ,8BAAkB,QAAQ,MAAM,SAAS,GAAG;AAC5C,kBAAM,oBACL,CAAC,mBACD,QAAQ,UACR,gBAAgBA,KAAI,KACpB,CAAC,0BAA0BA,OAAM,UAAU,KAC3C,qBAAqBA,KAAI;AAE1B,gBAAI,mBAAmB;AACtB,oBAAM,iBAAiB,UAAU,WAAW,QAAQ,iBAAiB,CAAC;AAEtE,qBAAOA,OAAM,gBAAgB,MAAM,KAAK;AAAA,YACzC;AAGA,8BAAkB,QAAQ,MAAM,SAAS,GAAG;AAC5C,gBACC,CAAC,mBACD,QAAQ,UACRA,MAAK,aAAa,OAClBA,MAAK,MAAM,SAAS,aACpBA,MAAK,MAAM,UAAU,KACrB,CAAC,UAAUA,MAAK,IAAI,GACnB;AACD,oBAAM,iBAAiB,UAAU,WAAW,QAAQA,MAAK,IAAI,CAAC;AAE9D,qBAAOA,OAAM,gBAAgB,MAAM,KAAK;AAAA,YACzC;AAGA,8BAAkB,QAAQ,MAAM,SAAS,GAAG;AAC5C,gBACC,CAAC,mBACD,QAAQ,UACR,wBAAwBA,KAAI,GAC3B;AACD,oBAAM,iBAAiB,UAAU,WAAW,QAAQ,mBAAmBA,KAAI,CAAC,CAAC;AAE7E,qBAAOA,OAAM,gBAAgB,MAAM,KAAK;AAAA,YACzC;AAAA,UACD;AAAA,UAEA,qBAAqBA,OAAM;AAE1B,kBAAM,kBAAkB,QAAQ,MAAM,SAAS,GAAG;AAElD,gBACC,CAAC,mBACD,QAAQ,UACR,oBAAoBA,KAAI,GACvB;AACD,oBAAMC,QAAO,WAAW,QAAQ,mBAAmBD,KAAI,CAAC;AACxD,oBAAM,iBAAiB,GAAGC,KAAI,aAAaA,KAAI;AAE/C,qBAAOD,OAAM,gBAAgB,MAAM,KAAK;AAAA,YACzC;AAAA,UACD;AAAA,UAEA,gBAAgBA,OAAM;AACrB,gBAAI,CAAC,QAAQ,2BAA2B;AACvC;AAAA,YACD;AAGA,gBAAIA,MAAK,OAAO,SAAS,4BAA4B;AACpD;AAAA,YACD;AAGA,gBAAIA,MAAK,YAAY,WAAW,GAAG;AAClC;AAAA,YACD;AAGA,gBAAIA,MAAK,OAAO,CAAC,EAAE,MAAM,WAAW,IAAI;AACvC;AAAA,YACD;AAGA,gBAAIA,MAAK,OAAO,CAAC,EAAE,MAAM,WAAW,IAAI;AACvC;AAAA,YACD;AAGA,gBAAI,aAAaA,MAAK,YAAY,CAAC,CAAC,GAAG;AACtC;AAAA,YACD;AAEA,kBAAMC,QAAO,WAAW,QAAQD,MAAK,YAAY,CAAC,CAAC;AACnD,kBAAM,iBAAiB,UAAUC,KAAI;AAErC,mBAAOD,OAAM,gBAAgB,MAAM,KAAK;AAAA,UACzC;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACndA;AAAA,yDAAAE,UAAAC,SAAA;AAAA;AAOA,QAAM,mBAAmB,oBAAI,IAAI;AAAA,MAChC;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAOD,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,iBAAiB;AAAA,UAClB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,iBAAiB;AAAA,gBAChB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,yBACC;AAAA,UACD,sBACC;AAAA,UACD,oBACC;AAAA,UACD,4BACC;AAAA,UACD,+BACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,iBAAiB,qBAAqB,CAAC,IAAI,QAAQ;AAC5D,cAAM,aAAa,QAAQ;AAS3B,iBAAS,OAAOC,OAAM,WAAW,MAAM;AACtC,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA;AAAA,YACA,MAAM;AAAA,cACL;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAEA,eAAO;AAAA,UACN,QAAQA,OAAM;AACb,kBAAM,QAAQ,WAAW,SAASA,KAAI;AAEtC,kBAAM,UAAU,QAAQ,cAAY;AAEnC,oBAAM,iCACL,SAAS,cAAc;AACxB,oBAAM,iCACL,SAAS,cAAc;AAExB,kBAAI,gCAAgC;AAEnC;AAAA,cACD;AAGA,kBAAI,SAAS,gBAAgB;AAC5B;AAAA,cACD;AAEA,uBAAS,KAAK,QAAQ,SAAO;AAC5B,sBAAM,UAAU,IAAI;AAEpB,oBACC,IAAI,SAAS,kBACZ,IAAI,SAAS,cACb,IAAI,OAAO,SAAS,OACpB;AACD,sBAAI,gCAAgC;AACnC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACD;AAAA,kBACD,OAAO;AACN;AAAA,sBACC;AAAA,sBACA;AAAA,sBACA,IAAI,SAAS,iBACV,aACA,IAAI,IAAI,OAAO,IAAI;AAAA,oBACvB;AAAA,kBACD;AAAA,gBACD;AAEA,oBAAI,sBAAsB;AACzB,sBACC,IAAI,SAAS,eACZ,IAAI,SAAS,eACZ,IAAI,OAAO,SAAS,SACpB,IAAI,OAAO,SAAS,UACrB;AACD,wBAAI,gCAAgC;AACnC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACD;AAAA,oBACD,OAAO;AACN;AAAA,wBACC;AAAA,wBACA;AAAA,wBACA,IAAI,SAAS,cACV,UACA,IAAI,IAAI,OAAO,IAAI;AAAA,sBACvB;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAAA,cACD,CAAC;AAED,kBACC,kCACA,SAAS,KAAK,WAAW,GACxB;AACD,yBAAS,WAAW,QAAQ,eAAa;AACxC,sBAAI,UAAU,QAAQ,KAAK,CAAC,UAAU,OAAO,GAAG;AAC/C,wBAAI,mBACH,UAAU,WAAW;AAEtB,2BACC,oBACA,CAAC,iBAAiB,IAAI,iBAAiB,IAAI,GAC1C;AACD,yCAAmB,iBAAiB;AAAA,oBACrC;AAEA;AAAA,sBACC,oBAAoB,UAAU;AAAA,sBAC9B;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD,CAAC;AAGD,kBAAM,SAAS,UAAU,QAAQ,cAAY;AAE5C,uBAAS,KAAK,QAAQ,SAAO;AAC5B,uBAAO,IAAI,MAAM,oBAAoB;AAAA,cACtC,CAAC;AAAA,YACF,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1LA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AACjB,QAAM,EAAE,eAAe,IAAI;AAO3B,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,aACC;AAAA,UACD,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,oBAAoB,OAAO,OAAO;AAAA,UACvC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,CAAC;AACD,cAAM,yBACL;AACD,cAAM,aAAa,QAAQ;AAO3B,iBAAS,kBAAkBC,OAAM;AAChC,cACEA,MAAK,SAAS,aAAa,OAAOA,MAAK,UAAU,YAClDA,MAAK,SAAS,mBACb;AACD,mBAAO;AAAA,UACR;AACA,cAAIA,MAAK,SAAS,sBAAsBA,MAAK,aAAa,KAAK;AAC9D,mBACC,kBAAkBA,MAAK,IAAI,KAC3B,kBAAkBA,MAAK,KAAK;AAAA,UAE9B;AACA,iBAAO;AAAA,QACR;AAOA,iBAAS,gCAAgCA,OAAM;AAC9C,gBAAM,CAAC,aAAa,IAAIA,MAAK;AAE7B,cAAI,eAAe;AAClB,kBAAM,cAAc;AAAA,cACnB;AAAA,cACA,WAAW,SAASA,KAAI;AAAA,YACzB;AACA,kBAAM,iBACL,eAAe,OAAO,YAAY,UAAU;AAC7C,kBAAMC,YACL,kBAAkB,kBAAkB,aAAa;AAElD,gBAAIA,WAAU;AACb,oBAAM,aACLD,MAAK,OAAO,SAAS,eAClBA,MAAK,OAAO,OACZ,SAAS,sBAAsBA,MAAK,MAAM;AAC9C,oBAAM,eAAe,eAAe;AACpC,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW,eAAe,eAAe;AAAA,cAC1C,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,2BAA2B,WAAW;AAC9C,gBAAM,EAAE,YAAY,KAAK,IAAI;AAE7B,qBAAW,QAAQ,SAAO;AACzB,kBAAM,aAAa,IAAI;AACvB,gBAAIA,QAAO,WAAW;AAEtB,mBAAO,SAAS,uBAAuBA,OAAM,MAAM,IAAI,GAAG;AACzD,cAAAA,QAAOA,MAAK;AAAA,YACb;AAEA,gBACC,SAAS;AAAA,cACRA;AAAA,cACA;AAAA,cACA;AAAA,YACD,GACC;AACD,oBAAM,aACLA,MAAK,OAAO,SAAS,oBAClBA,MAAK,SACLA;AACJ,oBAAM,SAAS,WAAW;AAE1B,kBACC,OAAO,SAAS,oBAChB,OAAO,WAAW,YACjB;AACD,gDAAgC,MAAM;AAAA,cACvC;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAMA,eAAO;AAAA,UACN,eAAeA,OAAM;AACpB,gBACC,SAAS;AAAA,cACRA,MAAK;AAAA,cACL;AAAA,YACD,KACA,WAAW,kBAAkBA,MAAK,MAAM,GACvC;AACD,8CAAgCA,KAAI;AAAA,YACrC;AAAA,UACD;AAAA,UACA,eAAeA,OAAM;AACpB,kBAAM,cAAc,WAAW,SAASA,KAAI;AAE5C,8BAAkB;AAAA,cAAI,eACrB,SAAS,kBAAkB,aAAa,SAAS;AAAA,YAClD,EACE;AAAA,cACA,eAAa,CAAC,CAAC,aAAa,UAAU,KAAK,WAAW;AAAA,YACvD,EACC,QAAQ,0BAA0B;AAAA,UACrC;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1KA;AAAA,sDAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,EAAE,aAAa,IAAI;AACzB,QAAM,WAAW;AAEjB,QAAM,6BAA6B;AAAA,MAClC,QAAQ;AAAA,MACR,SAAS;AAAA,IACV;AAOA,aAAS,iBAAiBC,OAAM;AAC/B,YAAM,EAAE,OAAO,IAAIA;AAEnB,aACE,OAAO,SAAS,0BAA0B,OAAO,SAASA;AAAA,MAE3D,OAAO,SAAS,kBACf,OAAO,SAAS,cAChB,OAAO,UAAUA,SACjB,OAAO,OAAO,SAAS,mBACxB,OAAO,SAAS,iBACf,OAAO,SAAS,uBAAuB,OAAO,SAASA;AAAA,IAE1D;AAOA,aAAS,iCAAiCA,OAAM;AAC/C,YAAM,eACLA,MAAK,OAAO,SAAS,oBAAoBA,MAAK,SAASA;AACxD,YAAM,EAAE,OAAO,IAAI;AAEnB,aACE,OAAO,SAAS,sBAChB,OAAO,aAAa,gBACpB,OAAO,SAAS,qBAChB,OAAO,aAAa,YACpB,OAAO,aAAa;AAAA,IAEvB;AAOA,aAAS,oBAAoBA,OAAM;AAClC,YAAM,EAAE,OAAO,IAAIA;AAEnB,aACE,OAAO,SAAS,oBAAoB,OAAO,SAASA,SACpD,OAAO,SAAS,oBAAoB,OAAO,SAASA;AAAA,IAEvD;AAiBA,aAAS,sCAAsCA,OAAM,OAAO;AAC3D,YAAM,EAAE,OAAO,IAAIA;AAEnB,UAAI,OAAO,SAAS,oBAAoB,OAAO,UAAU,CAAC,MAAMA,OAAM;AACrE,eAAO;AAAA,MACR;AACA,YAAM,SAAS,SAAS,oBAAoB,OAAO,MAAM;AAEzD,UACC,CAAC,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,2BAA2B;AAAA,MAC5B,KACA,CAAC,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,2BAA2B;AAAA,MAC5B,GACC;AACD,eAAO;AAAA,MACR;AACA,YAAM,WAAW,aAAa,OAAO,OAAO,MAAM;AAElD,aAAO,aAAa,QAAQ,SAAS,MAAM,SAAS;AAAA,IACrD;AAQA,aAAS,cAAc,IAAI,OAAO;AACjC,YAAM,EAAE,OAAO,IAAI;AAEnB,aACE,OAAO,SAAS,sBAChB,OAAO,WAAW,OACjB,iBAAiB,MAAM,KACvB,iCAAiC,MAAM,KACvC,oBAAoB,MAAM,MAC5B,sCAAsC,IAAI,KAAK;AAAA,IAEjD;AAOA,aAAS,aAAa,IAAI;AACzB,UAAIA,QAAO,GAAG;AAEd,aACCA,SACAA,MAAK,SAAS,0BACdA,MAAK,SAAS,sBACdA,MAAK,SAAS,qBACdA,MAAK,SAAS,oBACdA,MAAK,SAAS,oBACdA,MAAK,SAAS,kBACb;AACD,QAAAA,QAAOA,MAAK;AAAA,MACb;AAEA,aAAOA,SAAQ;AAAA,IAChB;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,UAAU;AAAA,UACV,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,kBAAkBC,OAAM;AACvB,kBAAM,QAAQ,WAAW,SAASA,KAAI;AAEtC,uBAAW,YAAY,WAAW,qBAAqBA,KAAI,GAAG;AAC7D,oBAAM,qBAAqB,SAAS,KAAK;AAAA,gBACxC,OAAK,EAAE,KAAK,SAAS;AAAA,cACtB;AACA,kBAAI,aAAa;AAEjB,yBAAW,aAAa,SAAS,YAAY;AAC5C,sBAAM,SAAS,UAAU;AAOzB,oBAAI,WAAW,YAAY;AAC1B;AAAA,gBACD;AACA,6BAAa;AAEb,oBAAI,UAAU,QAAQ,GAAG;AACxB,0BAAQ,OAAO;AAAA,oBACd,MAAM,aAAa,MAAM;AAAA,oBACzB,WAAW;AAAA,oBACX,MAAM,EAAE,MAAM,OAAO,KAAK;AAAA,kBAC3B,CAAC;AAAA,gBACF,WACC,sBACA,cAAc,QAAQ,KAAK,GAC1B;AACD,0BAAQ,OAAO;AAAA,oBACd,MAAM,aAAa,MAAM;AAAA,oBACzB,WAAW;AAAA,oBACX,MAAM,EAAE,MAAM,OAAO,KAAK;AAAA,kBAC3B,CAAC;AAAA,gBACF;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClOA;AAAA,wDAAAC,UAAAC,SAAA;AAAA;AAMA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,CAAC,CAAC;AAAA,QAEnB,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,eAAe;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,yBAAyB;AAAA,QAC1B;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,CAAC,EAAE,cAAc,CAAC,IAAI,QAAQ;AACpC,cAAM,qBACL,iBAAiB,IAAI,OAAO,eAAe,GAAG;AAQ/C,iBAAS,sBAAsBC,OAAM;AACpC,gBAAM,YAAY,OAAO,WAAW,MAAMA,MAAK,IAAI,MAAM,OAAO,CAAC,CAAC,GACjE,UAAU,OAAO,WAAW,MAAMA,MAAK,IAAI,IAAI,OAAO,CAAC,CAAC,GACxD,WAAW,UAAU,MAAM,GAAGA,MAAK,IAAI,MAAM,MAAM,EAAE,KAAK,GAC1D,YAAY,QAAQ,MAAMA,MAAK,IAAI,IAAI,MAAM,EAAE,KAAK,GACpD,kBAAkB,CAAC,UACnB,mBAAmB,CAAC;AAGrB,cAAI,mBAAmB,kBAAkB;AACxC;AAAA,UACD;AAGA,cAAI,sBAAsB,mBAAmB,KAAKA,MAAK,KAAK,GAAG;AAC9D;AAAA,UACD;AAGA,eACE,mBAAmB,aAAa,SAChC,oBAAoB,cAAc,MAClC;AACD,kBAAM,gBAAgB,WAAW;AAAA,cAChCA,MAAK,MAAM,CAAC;AAAA,YACb;AAEA,gBACC,iBACA,cAAc,SAAS,sBACtB;AACD;AAAA,YACD;AAAA,UACD;AAGA,cAAI,SAAS,mBAAmBA,KAAI,GAAG;AACtC;AAAA,UACD;AAEA,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW;AAAA,UACZ,CAAC;AAAA,QACF;AAMA,eAAO;AAAA,UACN,UAAU;AACT,uBACE,eAAe,EACf,OAAO,WAAS,MAAM,SAAS,SAAS,EACxC,QAAQ,qBAAqB;AAAA,UAChC;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClHA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAMjB,QAAM,cAAc,oBAAI,IAAI;AAAA,MAC3B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AACD,QAAM,4BAA4B,oBAAI,IAAI;AAAA,MACzC;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAOD,aAAS,0BAA0BC,OAAM;AACxC,UAAI,EAAE,OAAO,IAAIA;AAEjB,aAAO,QAAQ;AACd,YAAI,OAAO,SAAS,eAAe;AAClC,iBAAO;AAAA,QACR;AAEA,YAAI,SAAS,WAAW,MAAM,GAAG;AAChC,iBAAO;AAAA,QACR;AAEA,SAAC,EAAE,OAAO,IAAI;AAAA,MACf;AAEA,aAAO;AAAA,IACR;AAGA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,aAAa,EAAE,sBAAsB,QAAQ,CAAC;AAAA,QAE/D,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,aAAa,MAAM;AAAA,UAC3B;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,sBAAsB;AAAA,gBACrB,MAAM,CAAC,SAAS,UAAU;AAAA,cAC3B;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,OAAO,QAAQ,QAAQ,CAAC,MAAM;AACpC,cAAM,EAAE,qBAAqB,IAAI,QAAQ,QAAQ,CAAC;AAElD,cAAM,aAAa,QAAQ;AAC3B,cAAM,cAAc,QAAQ,gBAAgB;AAO5C,iBAAS,MAAMC,OAAM;AACpB,gBAAM,SAASA,MAAK;AAEpB,cACC,OAAO,SAAS,oBAChB,0BAA0B,IAAI,OAAO,OAAO,IAAI,GAC/C;AACD;AAAA,UACD;AAEA,cAAI,YAAY,IAAI,OAAO,IAAI,GAAG;AACjC;AAAA,UACD;AAEA,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW;AAAA,YACX,MAAM;AAAA,cACL,MACCA,MAAK,SAAS,wBACX,aACA;AAAA,cACJ,MAAM,0BAA0BA,KAAI;AAAA,YACrC;AAAA,UACD,CAAC;AAAA,QACF;AAEA,eAAO;AAAA,UACN,oBAAoBA,OAAM;AACzB,kBAAM,iBAAiB,WAAW,SAASA,KAAI,EAAE,MAAM;AAEvD,gBACC,yBAAyB,WACzB,eAAe,QACf,gBACC;AACD;AAAA,YACD;AAEA,kBAAMA,KAAI;AAAA,UACX;AAAA,UACA,oBAAoBA,OAAM;AACzB,gBAAI,QAAQA,MAAK,SAAS,OAAO;AAChC,oBAAMA,KAAI;AAAA,YACX;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClJA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,kBAAkB,kBAAqC;AAC7D,QAAM,YAAY,IAAI,gBAAgB;AACtC,QAAM,aAAa;AACnB,QAAM,aAAa;AAOnB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,CAAC,CAAC;AAAA,QAEnB,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,uBAAuB;AAAA,gBACtB,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,gBACA,aAAa;AAAA,cACd;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,cAAc;AAAA,QACf;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,sBAAsB,CAAC,IAAI,QAAQ;AAC5C,YAAI,eAAe,CAAC;AAEpB,YAAI,uBAAuB;AAC1B,gBAAM,OAAO,sBACX,KAAK,EAAE,EACP,QAAQ,IAAI,OAAO,IAAI,UAAU,KAAK,IAAI,GAAG,EAAE;AAEjD,cAAI,MAAM;AACT,2BAAe,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;AAAA,UACjC;AAAA,QACD;AAQA,iBAAS,OAAOC,OAAM,SAAS;AAC9B,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW;AAAA,YACX,MAAM,EAAE,QAAQ;AAAA,UACjB,CAAC;AAAA,QACF;AAQA,iBAASC,UAASD,OAAM;AACvB,iBACCA,SACAA,MAAK,SAAS,aACd,OAAOA,MAAK,UAAU;AAAA,QAExB;AAYA,iBAAS,SAASA,OAAM;AACvB,cAAIA,MAAK,UAAU,SAAS,GAAG;AAC9B,mBAAO;AAAA,UACR;AAEA,cAAIC,UAASD,MAAK,UAAU,CAAC,CAAC,GAAG;AAChC,mBAAOA,MAAK,UAAU,CAAC,EAAE;AAAA,UAC1B;AAEA,iBAAO;AAAA,QACR;AAUA,iBAAS,sBAAsB,SAAS,OAAO;AAC9C,cAAI;AACH,sBAAU;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACD;AACA,mBAAO;AAAA,UACR,SAAS,KAAK;AACb,mBAAO,IAAI;AAAA,UACZ;AAAA,QACD;AASA,iBAAS,oBAAoB,OAAO,cAAc,UAAU;AAC3D,gBAAM,iBAAiB,CAAC;AAExB,cAAI,OAAO,iBAAiB,UAAU;AACrC,uBAAW,QAAQ,cAAc;AAChC,kBAAI,SAAS,SAAS,IAAI,GAAG;AAC5B,+BAAe,KAAK,IAAI;AAAA,cACzB;AAAA,YACD;AAAA,UACD;AAOA,cAAI,SAAS,MAAM,SAAS,GAAG,KAAK,MAAM,SAAS,GAAG,GAAG;AACxD,mBAAO;AAAA,UACR;AAEA,cAAI,eAAe,SAAS,GAAG;AAC9B,mBAAO,qBAAqB,eAAe,KAAK,EAAE,CAAC;AAAA,UACpD;AAEA,cAAI,CAAC,cAAc;AAClB,mBAAO;AAAA,UACR;AAEA,iBAAO,iDAAiD,YAAY;AAAA,QACrE;AAEA,eAAO;AAAA,UACN,gCAAgCA,OAAM;AACrC,gBACCA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS,UACpB;AACD;AAAA,YACD;AAEA,kBAAM,QAAQ,SAASA,KAAI;AAC3B,gBAAI,eAAe;AACnB,kBAAM,WACL,aAAa,SAAS,IACnB,WAAW,MAAM,EAAE,EAAE,OAAO,YAAY,IACxC,WAAW,MAAM,EAAE;AAEvB,gBAAI,OAAO;AACV,uBAAS,QAAQ,UAAQ;AACxB,+BAAe,aAAa,QAAQ,MAAM,EAAE;AAAA,cAC7C,CAAC;AAAA,YACF;AAEA,gBAAI,UAAU;AAAA,cACb;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAEA,gBAAI,SAAS;AACZ,qBAAOA,OAAM,OAAO;AACpB;AAAA,YACD;AAEA,gBAAI,CAACC,UAASD,MAAK,UAAU,CAAC,CAAC,GAAG;AACjC;AAAA,YACD;AAEA,kBAAM,UAAUA,MAAK,UAAU,CAAC,EAAE;AAElC;AAAA,YAEC,UAAU,OACP,sBAAsB,SAAS;AAAA,cAC/B,SAAS;AAAA,cACT,aAAa;AAAA,YACd,CAAC,KACD,sBAAsB,SAAS;AAAA,cAC9B,SAAS;AAAA,cACT,aAAa;AAAA,YACd,CAAC,KACD,sBAAsB,SAAS;AAAA,cAC9B,SAAS;AAAA,cACT,aAAa;AAAA,YACd,CAAC,IACA,sBAAsB,SAAS;AAAA,cAC/B,SAAS,MAAM,SAAS,GAAG;AAAA,cAC3B,aAAa,MAAM,SAAS,GAAG;AAAA,YAChC,CAAC;AAEJ,gBAAI,SAAS;AACZ,qBAAOA,OAAM,OAAO;AAAA,YACrB;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnPA;AAAA,qDAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAajB,aAAS,0BAA0B,UAAUC,OAAM;AAClD,aACC,SAAS,WAAW,cACpBA,MAAK,SAAS;AAAA,IAEhB;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,EAAE,kBAAkB,KAAK,CAAC;AAAA,QAE3C,MAAM;AAAA,UACL,aACC;AAAA,UACD,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,kBAAkB;AAAA,gBACjB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,iBAAiB,CAAC,IAAI,QAAQ;AACvC,cAAM,QAAQ,CAAC,GACd,aAAa,QAAQ;AAUtB,cAAM,aAAa,WAAY;AAC9B,gBAAM,UAAU,KAAK,GAAG,EAAE;AAE1B,cAAI,CAAC,QAAQ,MAAM;AAClB,oBAAQ,OAAO;AACf,oBAAQ,QAAQ,CAAC,SAAS;AAAA,cACzB,QAAQ;AAAA,cACR;AAAA,cACA,EAAE,iBAAiB;AAAA,YACpB;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AAEA,eAAO;AAAA,UACN,gBAAgB,UAAUC,OAAM;AAC/B,gBAAI,0BAA0B,UAAUA,KAAI,GAAG;AAC9C;AAAA,YACD;AAEA,gBAAI,SAAS,WAAW,WAAW;AAClC,oBAAM,QAAQ,WAAW,SAASA,KAAI;AACtC,oBAAM,WACL,QAAQ,gBAAgB,cAAc,gBACtC,CAAC;AAGF,oBAAM,KAAK;AAAA,gBACV,MAAM;AAAA,gBACN,MAAAA;AAAA,gBACA,OAAO,EACNA,MAAK,eAAe,YACnB,SAAS,gBACT,MAAM,YAAY,CAAC,EAAE;AAAA,cAExB,CAAC;AAED;AAAA,YACD;AAUA,kBAAM,KAAK;AAAA,cACV,MAAM,CAAC,WAAW,SAASA,KAAI,EAAE;AAAA,cACjC,MAAAA;AAAA,cACA,OAAO;AAAA,YACR,CAAC;AAAA,UACF;AAAA,UAEA,cAAc,UAAUA,OAAM;AAC7B,gBAAI,0BAA0B,UAAUA,KAAI,GAAG;AAC9C;AAAA,YACD;AAEA,kBAAM,IAAI;AAAA,UACX;AAAA,UAEA,6BAA6BA,OAAM;AAClC,kBAAM,KAAK;AAAA,cACV,MAAM;AAAA,cACN,MAAAA;AAAA,cACA,OAAO;AAAA,YACR,CAAC;AAAA,UACF;AAAA,UAEA,0BAA0B;AACzB,kBAAM,IAAI;AAAA,UACX;AAAA;AAAA,UAGA,eAAeA,OAAM;AAEpB,gBACCA,MAAK,OAAO,SAAS,sBACrBA,MAAK,OAAO,UAAUA,OACrB;AACD;AAAA,YACD;AAEA,kBAAM,UAAU,MAAM,WAAW;AAEjC,gBAAI,WAAW,CAAC,QAAQ,OAAO;AAC9B,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AChLA;AAAA,6DAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAMjB,QAAM,iBACL;AACD,QAAM,uBACL;AACD,QAAM,6BAA6B;AACnC,QAAM,aAAa,SAAS,6BAA6B;AAOzD,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,cAAc;AAAA,YACd,aAAa;AAAA,YACb,aAAa;AAAA,YACb,aAAa;AAAA,YACb,eAAe;AAAA,UAChB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,cAAc;AAAA,gBACb,MAAM;AAAA,cACP;AAAA,cACA,aAAa;AAAA,gBACZ,MAAM;AAAA,cACP;AAAA,cACA,eAAe;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,cACA,aAAa;AAAA,gBACZ,MAAM;AAAA,cACP;AAAA,cACA,aAAa;AAAA,gBACZ,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,uBAAuB;AAAA,QACxB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM;AAAA,UACL;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD,IAAI,QAAQ;AAEZ,cAAM,aAAa,QAAQ;AAC3B,cAAM,eAAe,WAAW,eAAe;AAG/C,YAAI,SAAS,CAAC;AAQd,iBAAS,sBAAsBC,OAAM;AACpC,gBAAM,WAAWA,MAAK,IAAI;AAC1B,gBAAM,SAASA,MAAK,IAAI;AAExB,mBAAS,OAAO;AAAA,YACf,CAAC,EAAE,KAAK,EAAE,OAAO,cAAc,EAAE,MAChC,cAAc,OAAO,SAAS,QAC7B,cAAc,SAAS,SAAS,QAChC,cAAc,SAAS,SAAS,UAChC,cAAc,SAAS,OAAO,QAC9B,cAAc,UAAU,OAAO,UAChC,cAAc,OAAO,OAAO;AAAA,UAC9B;AAAA,QACD;AAQA,iBAAS,iCAAiCA,OAAM;AAC/C,gBAAM,qBACL,eAAe,OAAOA,MAAK,UAAU;AACtC,gBAAM,qBAAqB,eAAe,QAAQA,MAAK,KAAK;AAE5D,cAAI,sBAAsB,oBAAoB;AAE7C,gBAAI,eAAe,KAAKA,MAAK,GAAG,GAAG;AAClC,oCAAsBA,KAAI;AAAA,YAC3B;AAAA,UACD;AAAA,QACD;AAQA,iBAAS,yCAAyCA,OAAM;AACvD,cAAI,OAAOA,MAAK,MAAM,QAAQ,UAAU;AACvC,gBAAI,eAAe,KAAKA,MAAK,MAAM,GAAG,GAAG;AACxC,oCAAsBA,KAAI;AAAA,YAC3B;AAAA,UACD;AAAA,QACD;AAQA,iBAAS,iCAAiCA,OAAM;AAC/C,cAAI,eAAe,KAAKA,MAAK,KAAK,GAAG;AACpC,kCAAsBA,KAAI;AAAA,UAC3B;AAAA,QACD;AAQA,iBAAS,iCAAiCA,OAAM;AAC/C,cAAI,eAAe,KAAKA,MAAK,GAAG,GAAG;AAClC,kCAAsBA,KAAI;AAAA,UAC3B;AAAA,QACD;AAQA,iBAAS,4BAA4BA,OAAM;AAC1C,gBAAM,cAAc,WAAW;AAE/B,sBAAY,QAAQ,CAAC,YAAY,cAAc;AAC9C,kBAAM,aAAa,YAAY;AAC/B,gBAAIC;AAEJ,oBACEA,SAAQ,qBAAqB,KAAK,UAAU,OAAO,MACnD;AACD,qBAAO,KAAK;AAAA,gBACX,MAAAD;AAAA,gBACA,WAAW;AAAA,gBACX,KAAK;AAAA,kBACJ,OAAO;AAAA,oBACN,MAAM;AAAA,oBACN,QAAQC,OAAM;AAAA,kBACf;AAAA,kBACA,KAAK;AAAA,oBACJ,MAAM;AAAA,oBACN,QAAQA,OAAM,QAAQA,OAAM,CAAC,EAAE;AAAA,kBAChC;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,iCAAiCD,OAAM;AAC/C,gBAAM,SAAS,WAAW,QAAQ,GACjC,cAAc,WAAW,OACzB,aAAa,OAAO,MAAM,UAAU;AACrC,cAAI,gBAAgB,IACnBC;AAED,kBAAQA,SAAQ,2BAA2B,KAAK,MAAM,OAAO,MAAM;AAClE,kBAAM,YACL,WAAW,QAAQA,OAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK;AAEpD,mBAAO,KAAK;AAAA,cACX,MAAAD;AAAA,cACA,WAAW;AAAA,cACX,KAAK;AAAA,gBACJ,OAAO;AAAA,kBACN,MAAM,YAAY;AAAA,kBAClB,QAAQ,YAAY,SAAS,EAAE;AAAA,gBAChC;AAAA,gBACA,KAAK;AAAA,kBACJ,MAAM,YAAY;AAAA,kBAClB,QAAQ;AAAA,gBACT;AAAA,cACD;AAAA,YACD,CAAC;AAED,4BAAgB;AAAA,UACjB;AAAA,QACD;AAOA,iBAAS,OAAO;AAAA,QAAC;AAEjB,cAAM,QAAQ,CAAC;AAEf,YAAI,eAAe,KAAK,WAAW,QAAQ,CAAC,GAAG;AAC9C,gBAAM,UAAU,SAAUA,OAAM;AAW/B,wCAA4BA,KAAI;AAChC,6CAAiCA,KAAI;AAAA,UACtC;AAEA,gBAAM,UAAU;AAChB,gBAAM,kBAAkB,gBACrB,2CACA;AACH,gBAAM,UAAU,cACb,mCACA;AACH,gBAAM,cAAc,IAAI,WAAY;AACnC,gBAAI,cAAc;AAEjB,2BAAa,QAAQ,gCAAgC;AAAA,YACtD;AAGA,mBAAO,QAAQ,WAAS,QAAQ,OAAO,KAAK,CAAC;AAAA,UAC9C;AAAA,QACD,OAAO;AACN,gBAAM,UAAU;AAAA,QACjB;AAEA,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA;;;ACnSA;AAAA,iDAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,EAAE,sBAAsB,IAAI;AAOlC,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,iBAAiBC,OAAM;AACtB,gBAAI,sBAAsBA,KAAI,MAAM,gBAAgB;AACnD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/CA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,0BACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAa3B,iBAAS,eAAe,OAAO,MAAM;AACpC,iBAAO,SAAS,kBAAkB,OAAO,IAAI,MAAM;AAAA,QACpD;AAMA,eAAO;AAAA,UACN,iBAAiBC,OAAM;AAEtB,kBAAM,QAAQ,WAAW,SAASA,KAAI;AAMtC,gBAAI,eAAe,OAAOA,MAAK,MAAM,IAAI,GAAG;AAC3C,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC7EA;AAAA,+CAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,WAAW;AAAA,YACX,aAAa;AAAA,UACd;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,WAAW;AAAA,gBACV,MAAM;AAAA,cACP;AAAA,cACA,aAAa;AAAA,gBACZ,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,iBAAiB;AAAA,UACjB,wBAAwB;AAAA,UACxB,2BACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,WAAW,YAAY,CAAC,IAAI,QAAQ;AAC7C,YAAI,YAAY;AAOhB,iBAAS,YAAYC,OAAM;AAC1B,cAAI,SAAS,OAAOA,KAAI,GAAG;AAC1B,mBAAO;AAAA,UACR;AACA,cAAIA,MAAK,SAAS,mBAAmB;AACpC,mBAAO;AAAA,UACR;AACA,iBAAO;AAAA,QACR;AAOA,iBAAS,UAAU,MAAM;AACxB,kBAAQ,MAAM;AAAA,YACb,KAAK;AACJ,qBAAO;AAAA,YACR,KAAK;AACJ,qBAAO;AAAA,YACR;AACC,qBAAO;AAAA,UACT;AAAA,QACD;AAOA,iBAAS,QAAQ,OAAO;AACvB,cAAI,OAAO;AAEX,iBAAO,MAAM;AACZ,gBAAI,KAAK,UAAU,OAAO;AACzB,qBAAO,KAAK;AAAA,YACb;AACA,mBAAO,KAAK;AAAA,UACb;AAGA,iBAAO;AAAA,QACR;AAMA,eAAO;AAAA,UACN,iBAAiBA,OAAM;AACtB,wBAAY;AAAA,cACX,OAAOA,MAAK,MAAM;AAAA,cAClB,MAAM,YAAYA,MAAK,IAAI;AAAA,cAC3B,OAAO;AAAA,YACR;AAAA,UACD;AAAA,UAEA,wBAAwBA,OAAM;AAC7B,gBAAI,CAAC,UAAU,UAAU,IAAI,GAAG;AAC/B,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAEA,wBAAY,UAAU;AAAA,UACvB;AAAA,UAEA,eAAeA,OAAM;AACpB,gBAAIA,MAAK,SAAS,CAAC,UAAU,QAAQA,MAAK,MAAM,IAAI,CAAC,GAAG;AACvD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,UAEA,kBAAkBA,OAAM;AACvB,gBAAIA,MAAK,SAAS,CAAC,UAAU,QAAQA,MAAK,MAAM,IAAI,CAAC,GAAG;AACvD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC3JA;AAAA,oDAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,gBAAgB;AAAA,UAChB,sBAAsB;AAAA,QACvB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAEf,cAAM,aAAa,CAAC;AACpB,YAAI;AACJ,cAAM,aAAa,QAAQ;AAO3B,iBAAS,OAAOC,OAAM;AACrB,gBAAM,YACLA,MAAK,OAAO,SAAS,oBACrBA,MAAK,OAAO,SAAS,gBAClB,yBACA;AAEJ,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA;AAAA,UACD,CAAC;AAAA,QACF;AAOA,iBAAS,YAAYA,OAAM;AAC1B,iBACCA,MAAK,OAAO,SAAS,oBACrBA,MAAK,OAAO,SAAS,iBACrBA,MAAK,OAAO,SAAS;AAAA,UAEpBA,MAAK,OAAO,SAAS,gBACrB,EACCA,MAAK,OAAO,WAAW,CAAC,MAAMA,SAC9BA,MAAK,OAAO,WAAW,WAAW;AAAA,QAGtC;AAQA,iBAAS,cAAcA,OAAM;AAC5B,cAAI,WAAW,WAAW,GAAG;AAC5B;AAAA,UACD;AAEA,gBAAM,QAAQA,MAAK;AAEnB,cAAI,WAAW,GAAG,EAAE,MAAM,OAAO;AAChC,uBAAW,IAAI;AAAA,UAChB;AAAA,QACD;AAGA,kBAAU;AAAA,UACT,eAAeA,OAAM;AACpB,gBAAI,YAAYA,KAAI,GAAG;AACtB,qBAAOA,KAAI;AAAA,YACZ;AAAA,UACD;AAAA,QACD;AAGA,YAAI,QAAQ,gBAAgB,eAAe,MAAM;AAChD,oBAAU;AAAA,YACT,eAAeA,OAAM;AACpB,kBAAI,YAAYA,KAAI,GAAG;AACtB,2BAAW,KAAKA,KAAI;AAAA,cACrB;AAAA,YACD;AAAA,YACA,sBAAsBA,OAAM;AAC3B,kBAAI,WAAW,SAAS,KAAK,WAAW,GAAG,EAAE,MAAMA,OAAM;AACxD,2BAAW,IAAI;AACf,uBAAOA,KAAI;AAAA,cACZ,YACEA,MAAK,OAAO,SAAS,oBACrBA,MAAK,OAAO,SAAS,kBACtBA,MAAK,OAAO,KAAK,WAAW,GAC3B;AACD,uBAAOA,KAAI;AAAA,cACZ;AAAA,YACD;AAAA,UACD;AAEA,kBAAQ,sBAAsB,SAAUA,OAAM;AAC7C,gBAAIA,MAAK,SAAS,OAAO;AACxB,4BAAcA,KAAI;AAAA,YACnB;AAAA,UACD;AAEA,kBAAQ,sBAAsB,SAAUA,OAAM;AAC7C,gBAAI,WAAW,SAASA,KAAI,EAAE,UAAU;AACvC,4BAAcA,KAAI;AAAA,YACnB;AAAA,UACD;AAEA,kBAAQ,mBAAmB;AAAA,QAC5B;AAEA,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA;;;AC3IA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,SAAS;AAAA,QAET,UAAU;AAAA,UACT,oBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,YAAYC,OAAM;AACjB,kBAAM,SAASA,MAAK,QACnB,cAAc,OAAO;AAEtB,gBACC,UACA,OAAO,SAAS,oBAChB,OAAO,KAAK,WAAW,KACvB,CAAC,SAAS,mBAAmB,QAAQ,UAAU,KAC/C,eACA,YAAY,SAAS,iBACrB,WAAW,YAAY,WACtB;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,wBAAM,mBACL,WAAW,cAAc,MAAM;AAChC,wBAAM,mBACL,WAAW,aAAa,MAAM;AAC/B,wBAAM,cACL,WAAW,eAAe,gBAAgB;AAC3C,wBAAM,sBACL,WAAW,cAAc,gBAAgB;AAC1C,wBAAM,cAAc,WAAW;AAAA,oBAC9BA,MAAK;AAAA,kBACN;AACA,wBAAM,aAAa,WAAW,QAAQ;AAEtC,sBACC,WACE;AAAA,oBACA,iBAAiB,MAAM,CAAC;AAAA,oBACxBA,MAAK,MAAM,CAAC;AAAA,kBACb,EACC,KAAK,KACP,WACE;AAAA,oBACAA,MAAK,MAAM,CAAC;AAAA,oBACZ,iBAAiB,MAAM,CAAC;AAAA,kBACzB,EACC,KAAK,GACN;AAED,2BAAO;AAAA,kBACR;AAEA,sBACCA,MAAK,WAAW,SAAS,oBACzB,YAAY,UAAU,OACtB,wBACCA,MAAK,WAAW,IAAI,IAAI,SACxB,oBAAoB,IAAI,MAAM,QAC9B,aAAa;AAAA,oBACZ,oBAAoB;AAAA,kBACrB,KACA,YAAY,UAAU,QACtB,YAAY,UAAU,OACtB;AAKD,2BAAO;AAAA,kBACR;AAEA,yBAAO,MAAM;AAAA,oBACZ;AAAA,sBACC,iBAAiB,MAAM,CAAC;AAAA,sBACxB,iBAAiB,MAAM,CAAC;AAAA,oBACzB;AAAA,qBACC,YAAY,MAAM,CAAC,MACpB,iBAAiB,MAAM,CAAC,IACrB,MACA,MAAM,WAAW,QAAQA,KAAI;AAAA,kBACjC;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC7HA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAiBA,QAAM,oBAAoB,oBAAI,IAAI,CAAC,SAAS,SAAS,aAAa,CAAC;AAOnE,aAAS,OAAOC,OAAM;AACrB,cACEA,MAAK,SAAS,wBACdA,MAAK,SAAS,8BACfA,MAAK,UACLA,MAAK,OAAO,SAAS,oBACrBA,MAAK,OAAO,WAAWA;AAAA,IAEzB;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,qBAAqB,oBAAI,IAAI;AACnC,cAAM,aAAa,QAAQ;AAW3B,iBAAS,sBAAsBC,OAAM;AACpC,mBACK,cAAcA,OAClB,YAAY,QACZ,cAAc,YAAY,QACzB;AACD,kBAAM,SAAS,YAAY;AAE3B,oBAAQ,OAAO,MAAM;AAAA,cACpB,KAAK;AAAA,cACL,KAAK;AACJ,uBAAO;AAAA,cAER,KAAK;AAEJ,oBAAI,OAAO,SAAS,aAAa;AAChC,yBAAO;AAAA,gBACR;AACA;AAAA,cAED,KAAK;AAAA,cACL,KAAK;AAEJ,oBAAI,OAAO,UAAU,aAAa;AACjC,yBAAO;AAAA,gBACR;AACA;AAAA,cAED,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAEJ,oBAAI,mBAAmB,IAAI,MAAM,GAAG;AACnC;AAAA,gBACD;AAEA,uBAAO;AAAA,cACR;AACC;AAAA,YACF;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAUA,iBAAS,eAAeA,OAAM,cAAc;AAC3C,gBAAM,SAAS,eAAe,aAAa,MAAM,CAAC,IAAI;AACtD,cAAI,OAAOA;AACX,cAAI,qBAAqBA;AAEzB,iBACC,sBACA,mBAAmB,MAAM,CAAC,KAAK,QAC9B;AACD,mBAAO;AACP,iCAAqB,sBAAsB,kBAAkB;AAAA,UAC9D;AAEA,iBAAO;AAAA,QACR;AASA,iBAAS,OAAO,UAAU,WAAW;AACpC,gBAAM,WAAW,UAAU;AAC3B,gBAAMC,cAAa,YAAY,SAAS,KAAK,CAAC;AAC9C,gBAAM,cAAcA,eAAcA,YAAW;AAC7C,gBAAM,OACL,eAAe,YAAY,SAAS,wBACjC,YAAY,OACZ;AAGJ,cAAI,kBAAkB,IAAI,IAAI,GAAG;AAChC,mBAAO;AAAA,UACR;AAMA,cACC,SAAS,SACT,YAAY,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,KACvC,YAAY,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,GACtC;AACD,mBAAO;AAAA,UACR;AAMA,gBAAM,SAAS;AAAA,YACd;AAAA,YACA,SAAS,QAAQ,cAAc;AAAA,UAChC,EAAE,MAAM,CAAC;AAaT,mBAAS,gBAAgB,UAAU;AAClC,kBAAM,KAAK,SAAS;AAEpB,mBACC,CAAC,SAAS,QAAQ,KACjB,SAAS,MAAM,kBACf,SAAS,KAAK,iBACd,GAAG,MAAM,CAAC,IAAI;AAAA,UAEjB;AAEA,iBACC,QAAQ,QAAQ,KAAK,SAAS,WAAW,MAAM,eAAe;AAAA,QAEhE;AAUA,iBAAS,cAAcD,OAAM;AAC5B,gBAAM,WAAW,sBAAsBA,KAAI;AAE3C,cAAI,CAAC,UAAU;AACd;AAAA,UACD;AAEA,gBAAM,aAAa,WAAW,SAASA,KAAI,EAAE;AAG7C,cAAI,EAAEA,MAAK,SAASA,MAAK,YAAY;AACpC,gBAAI,OAAOA,KAAI,GAAG;AACjB,oBAAM,uBACLA,MAAK,SAAS;AAGf,oBAAM,uBACL,wBAAwBA,MAAK,KAC1B,WAAW;AAAA,gBACX,OAAK,EAAE,WAAW,SAASA,MAAK,GAAG;AAAA,cACpC,IACC;AAEJ,kBAAI,CAAC,sBAAsB;AAC1B,mCAAmB,IAAIA,KAAI;AAC3B;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAEA,gBAAM,aAAa;AAAA,YAClB,GAAG,IAAI;AAAA,cACN,WACE,OAAO,OAAK,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC,EAC9C,IAAI,OAAK,EAAE,WAAW,IAAI;AAAA,YAC7B;AAAA,UACD;AAEA,cAAI,WAAW,SAAS,GAAG;AAC1B,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM,EAAE,UAAU,IAAI,WAAW,KAAK,MAAM,CAAC,IAAI;AAAA,YAClD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,yBAAyB;AAAA,UACzB,oBAAoB;AAAA,UACpB,qBAAqB;AAAA,QACtB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/QA;AAAA,0DAAAE,UAAAC,SAAA;AAAA;AAYA,QAAM,qBAAN,MAAyB;AAAA;AAAA,MAExB;AAAA;AAAA,MAGA;AAAA,MAEA,YAAY,aAAa,WAAW;AACnC,aAAK,cAAc;AACnB,aAAK,YAAY;AAAA,MAClB;AAAA;AAAA,MAGA,WAAW;AACV,eAAO,GAAG,KAAK,YAAY,CAAC,CAAC,GAAG,KAAK,YAAY,SAAS,IAAI,IAAI,KAAK,YAAY,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,SAAS;AAAA,MACrH;AAAA;AAAA,IAED;AAOA,aAAS,SAASC,OAAM;AACvB,aAAO,OAAOA,MAAK,UAAU;AAAA,IAC9B;AAOA,aAAS,OAAOA,OAAM;AACrB,aAAOA,MAAK,IAAI,QAAQ,OAAO,EAAE;AAAA,IAClC;AAOA,aAAS,UAAUA,OAAM;AACxB,YAAM,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAEpD,aACC,SAAS,MAAM,YAAU,CAACA,MAAK,IAAI,WAAW,MAAM,CAAC,KACrD,CAAC,aAAa,KAAKA,MAAK,GAAG;AAAA,IAE7B;AAOA,aAAS,yBAAyBA,OAAM;AACvC,YAAM,YAAY,OAAOA,KAAI,EAAE,YAAY;AAC3C,UAAIC;AAEJ,UAAI,UAAU,WAAW,IAAI,GAAG;AAC/B,QAAAA,QAAO;AAAA,MACR,WAAW,UAAU,WAAW,IAAI,GAAG;AACtC,QAAAA,QAAO;AAAA,MACR,OAAO;AACN,QAAAA,QAAO;AAAA,MACR;AAEA,aAAO,CAAC,UAAU,SAASD,MAAK,MAAM,SAASC,KAAI,EAAE,YAAY,CAAC;AAAA,IACnE;AAOA,aAAS,mBAAmB,gBAAgB;AAC3C,eAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK;AAC/C,YAAI,eAAe,CAAC,MAAM,KAAK;AAC9B,iBAAO,eAAe,MAAM,CAAC;AAAA,QAC9B;AAAA,MACD;AACA,aAAO;AAAA,IACR;AAOA,aAAS,oBAAoB,gBAAgB;AAC5C,eAAS,IAAI,eAAe,SAAS,GAAG,KAAK,GAAG,KAAK;AACpD,YAAI,eAAe,CAAC,MAAM,KAAK;AAC9B,iBAAO,eAAe,MAAM,GAAG,IAAI,CAAC;AAAA,QACrC;AAAA,MACD;AACA,aAAO;AAAA,IACR;AAOA,aAAS,iBAAiB,eAAe;AACxC,YAAM,iBAAiB,mBAAmB,aAAa;AACvD,YAAM,oBAAoB,oBAAoB,cAAc;AAE5D,aAAO,IAAI,mBAAmB,mBAAmB,eAAe,SAAS,CAAC;AAAA,IAC3E;AAOA,aAAS,eAAe,aAAa;AACpC,YAAM,eAAe,mBAAmB,WAAW;AACnD,YAAM,sBAAsB,aAAa,QAAQ,GAAG;AAEpD,cAAQ,qBAAqB;AAAA,QAC5B,KAAK,GAAG;AACP,gBAAM,oBAAoB,mBAAmB,aAAa,MAAM,CAAC,CAAC;AAElE,iBAAO,IAAI;AAAA,YACV;AAAA,YACA,kBAAkB,SAAS,aAAa;AAAA,UACzC;AAAA,QACD;AAAA,QACA,KAAK;AACJ,iBAAO,IAAI;AAAA,YACV;AAAA,YACA,aAAa,SAAS;AAAA,UACvB;AAAA,QACD;AACC,iBAAO,IAAI;AAAA,YACV,aAAa,QAAQ,KAAK,EAAE;AAAA,YAC5B,sBAAsB;AAAA,UACvB;AAAA,MACF;AAAA,IACD;AAQA,aAAS,kCAAkC,cAAc,cAAc;AACtE,YAAM,cAAc,aAAa,MAAM,GAAG;AAC1C,YAAM,sBAAsB,YAAY,CAAC;AACzC,YAAM,mBACL,gBAAgB,aAAa,SAAS,GAAG,IACtC,eAAe,mBAAmB,IAClC,iBAAiB,mBAAmB;AACxC,UAAI,YAAY,SAAS,GAAG;AAC3B,yBAAiB,aAAa,SAAS,YAAY,CAAC,GAAG,EAAE;AAAA,MAC1D;AAEA,aAAO;AAAA,IACR;AAOA,aAAS,sBAAsBD,OAAM;AACpC,YAAM,YAAY,OAAOA,KAAI,EAAE,YAAY;AAC3C,YAAM,sBAAsB;AAAA,QAC3B;AAAA,QACA;AAAA,MACD;AACA,YAAM,qBAAqB,oBAAoB,YAAY;AAE3D,UAAI,qBAAqB,KAAK;AAC7B,eAAO;AAAA,MACR;AACA,YAAM,eAAeA,MAAK,MAAM,YAAY,kBAAkB;AAC9D,YAAM,yBAAyB;AAAA,QAC9B;AAAA,QACA;AAAA,MACD;AAEA,aACC,oBAAoB,cAAc,uBAAuB,aACzD,oBAAoB,gBAAgB,uBAAuB;AAAA,IAE7D;AAOA,aAAS,eAAeA,OAAM;AAC7B,aAAO,UAAUA,KAAI,IAClB,sBAAsBA,KAAI,IAC1B,yBAAyBA,KAAI;AAAA,IACjC;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QACA,QAAQ,CAAC;AAAA,QACT,UAAU;AAAA,UACT,mBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,QAAQC,OAAM;AACb,gBAAIA,MAAK,SAAS,SAASA,KAAI,KAAK,eAAeA,KAAI,GAAG;AACzD,sBAAQ,OAAO;AAAA,gBACd,WAAW;AAAA,gBACX,MAAAA;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACvPA;AAAA,sDAAAE,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAGjB,QAAM,mBAAmB,KAAK,KAAK;AAWnC,aAAS,qBAAqB,GAAG;AAChC,UAAI,OAAO,MAAM,UAAU;AAC1B,eAAO,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,MAC7B;AACA,aAAO;AAAA,IACR;AAOA,aAAS,0BAA0BC,OAAM;AACxC,aAAOA,MAAK,OAAO,SAAS;AAAA,IAC7B;AAOA,aAAS,uBAAuBA,OAAM;AACrC,UAAI,WAAWA,MAAK;AAGpB,aAAO,SAAS,OAAO,SAAS,eAAe;AAC9C,mBAAW,SAAS;AAAA,MACrB;AAGA,aAAO,SAAS,OAAO,SAAS;AAAA,IACjC;AAOA,aAAS,qCAAqCA,OAAM;AACnD,UAAIA,MAAK,QAAQ,SAAS,wBAAwBA,MAAK,OAAO,UAAU;AACvE,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,IACR;AAOA,aAAS,8BAA8BA,OAAM;AAC5C,UAAI,WAAWA,MAAK;AAMpB,aACC,SAAS,OAAO,SAAS,iBACzB,SAAS,OAAO,SAAS,sBACxB;AACD,mBAAW,SAAS;AAAA,MACrB;AAEA,aAAO,SAAS,OAAO,SAAS;AAAA,IACjC;AAGA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,eAAe;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,cACA,cAAc;AAAA,gBACb,MAAM;AAAA,cACP;AAAA,cACA,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,OAAO;AAAA,oBACN,EAAE,MAAM,SAAS;AAAA,oBACjB;AAAA,sBACC,MAAM;AAAA,sBACN,SAAS;AAAA,oBACV;AAAA,kBACD;AAAA,gBACD;AAAA,gBACA,aAAa;AAAA,cACd;AAAA,cACA,oBAAoB;AAAA,gBACnB,MAAM;AAAA,cACP;AAAA,cACA,qBAAqB;AAAA,gBACpB,MAAM;AAAA,cACP;AAAA,cACA,+BAA+B;AAAA,gBAC9B,MAAM;AAAA,cACP;AAAA,cACA,aAAa;AAAA,gBACZ,MAAM;AAAA,cACP;AAAA,cACA,2BAA2B;AAAA,gBAC1B,MAAM;AAAA,cACP;AAAA,cACA,+BAA+B;AAAA,gBAC9B,MAAM;AAAA,cACP;AAAA,cACA,mBAAmB;AAAA,gBAClB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,gBAAgB;AAAA,UACf;AAAA,YACC,eAAe;AAAA,YACf,cAAc;AAAA,YACd,QAAQ,CAAC;AAAA,YACT,oBAAoB;AAAA,YACpB,qBAAqB;AAAA,YACrB,+BAA+B;AAAA,YAC/B,aAAa;AAAA,YACb,2BAA2B;AAAA,YAC3B,+BAA+B;AAAA,YAC/B,mBAAmB;AAAA,UACpB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,UAAU;AAAA,UACV,SAAS;AAAA,QACV;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM;AAAA,UACL;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,IAAI,QAAQ,QAAQ,CAAC;AACrB,cAAM,SAAS,IAAI,IAAI,UAAU,IAAI,oBAAoB,CAAC;AAE1D,cAAM,UAAU,gBACb,CAAC,IACD,CAAC,oBAAoB,YAAY,sBAAsB;AAO1D,iBAAS,eAAeE,QAAO;AAC9B,iBAAO,OAAO,IAAIA,MAAK;AAAA,QACxB;AAOA,iBAAS,eAAe,gBAAgB;AACvC,gBAAM,SAAS,eAAe;AAE9B,iBACC,OAAO,SAAS,uBAChB,OAAO,UAAU;AAAA,QAEnB;AAOA,iBAAS,yBAAyB,gBAAgB;AACjD,gBAAM,SAAS,eAAe;AAE9B,iBACC,OAAO,SAAS,wBAChB,OAAO,UAAU;AAAA,QAEnB;AAOA,iBAAS,gBAAgB,gBAAgB;AACxC,gBAAM,SAAS,eAAe;AAE9B,iBACC,OAAO,SAAS,oBAChB,mBAAmB,OAAO,UAAU,CAAC,MACpC,SAAS,aAAa,OAAO,QAAQ,UAAU,KAC/C,SAAS;AAAA,YACR,OAAO;AAAA,YACP;AAAA,YACA;AAAA,UACD;AAAA,QAEH;AASA,iBAAS,YAAY,gBAAgB;AACpC,iBAAO,eAAe,OAAO,KAAK,QAAQ,KAAK,MAAM;AAAA,QACtD;AA6BA,iBAAS,aAAa,gBAAgBA,QAAO;AAC5C,gBAAM,SAAS,eAAe;AAE9B,iBACC,OAAO,SAAS,sBAChB,OAAO,aAAa,mBACnB,OAAO,UAAUA,MAAK,KAAK,OAAOA,WAAU,aAC7CA,UAAS,KACTA,SAAQ;AAAA,QAEV;AAEA,eAAO;AAAA,UACN,QAAQD,OAAM;AACb,gBAAI,CAAC,SAAS,iBAAiBA,KAAI,GAAG;AACrC;AAAA,YACD;AAEA,gBAAI;AACJ,gBAAIC;AACJ,gBAAI;AAGJ,gBACCD,MAAK,OAAO,SAAS,qBACrB,CAAC,KAAK,GAAG,EAAE,SAASA,MAAK,OAAO,QAAQ,GACvC;AACD,+BAAiBA,MAAK;AACtB,cAAAC,SACCD,MAAK,OAAO,aAAa,MAAM,CAACA,MAAK,QAAQA,MAAK;AACnD,oBAAM,GAAGA,MAAK,OAAO,QAAQ,GAAGA,MAAK,GAAG;AAAA,YACzC,OAAO;AACN,+BAAiBA;AACjB,cAAAC,SAAQD,MAAK;AACb,oBAAMA,MAAK;AAAA,YACZ;AAEA,kBAAM,SAAS,eAAe;AAG9B,gBACC,eAAeC,MAAK,KACnB,uBAAuB,eAAe,cAAc,KACpD,iCACA,yBAAyB,cAAc,KACvC,eACA,0BAA0B,cAAc,KACxC,6BACA,uBAAuB,cAAc,KACrC,qBACA,8BAA8B,cAAc,KAC5C,iCACA,qCAAqC,cAAc,KACpD,gBAAgB,cAAc,KAC9B,YAAY,cAAc,KACzB,sBAAsB,aAAa,gBAAgBA,MAAK,GACxD;AACD;AAAA,YACD;AAEA,gBAAI,OAAO,SAAS,sBAAsB;AACzC,kBAAI,gBAAgB,OAAO,OAAO,SAAS,SAAS;AACnD,wBAAQ,OAAO;AAAA,kBACd,MAAM;AAAA,kBACN,WAAW;AAAA,gBACZ,CAAC;AAAA,cACF;AAAA,YACD,WACC,CAAC,QAAQ,SAAS,OAAO,IAAI,KAC5B,OAAO,SAAS,0BAChB,OAAO,KAAK,SAAS,cACrB;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACjXA;AAAA,0EAAAC,UAAAC,SAAA;AAAA;AAUA,IAAAA,QAAO,UAAU,SAAS,qBAAqB,WAAW;AACzD,aAAO,WAAW,KAAK,OAAO,cAAc,SAAS,CAAC;AAAA,IACvD;AAAA;AAAA;;;ACZA;AAAA,qEAAAC,UAAAC,SAAA;AAAA;AAUA,IAAAA,QAAO,UAAU,SAAS,gBAAgBC,OAAM;AAC/C,aAAOA,SAAQ,UAAWA,SAAQ;AAAA,IACnC;AAAA;AAAA;;;ACZA;AAAA,gFAAAC,UAAAC,SAAA;AAAA;AAUA,IAAAA,QAAO,UAAU,SAAS,0BAA0BC,OAAM;AACzD,aAAOA,SAAQ,UAAWA,SAAQ;AAAA,IACnC;AAAA;AAAA;;;ACZA;AAAA,qEAAAC,UAAAC,SAAA;AAAA;AAWA,IAAAA,QAAO,UAAU,SAAS,gBAAgB,MAAM,MAAM;AACrD,aAAO,QAAQ,SAAU,OAAO,SAAU,QAAQ,SAAU,OAAO;AAAA,IACpE;AAAA;AAAA;;;ACbA;AAAA,yDAAAC,UAAAC,SAAA;AAAA;AAKA,QAAM,uBAAuB;AAC7B,QAAM,kBAAkB;AACxB,QAAM,4BAA4B;AAClC,QAAM,kBAAkB;AAExB,IAAAA,QAAO,UAAU;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA;AAAA;;;ACfA;AAAA,+DAAAC,UAAAC,SAAA;AAAA;AAQA,QAAM,EAAE,gBAAgB,IAAI;AAE5B,QAAM,8BAA8B;AAWpC,aAAS,uBAAuB,aAAa,SAAS,OAAO,KAAK;AACjE,UAAI,SAAS,OAAO,eAAe,GAAG;AAErC,eAAO;AAAA,MACR;AACA,UAAI,SAAS,OAAO,eAAe,MAAM;AACxC,eAAO;AAAA,MACR;AAEA,YAAM,YAAY,IAAI,gBAAgB;AAAA,QACrC,aAAa,KAAK,IAAI,aAAa,2BAA2B;AAAA,MAC/D,CAAC;AAED,UAAI;AACH,kBAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAS,MACN;AAAA,YACA;AAAA;AAAA,cAAuB;AAAA;AAAA,UACxB,IACC;AAAA,YACA,aAAa;AAAA,UACd;AAAA,QACH;AAAA,MACD,QAAQ;AACP,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,IACR;AAEA,IAAAA,QAAO,UAAU;AAAA,MAChB;AAAA,MACA;AAAA,IACD;AAAA;AAAA;;;ACzDA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAN,MAAe;AAAA,MACd,YAAY,OAAO,QAAQ;AAC1B,aAAK,QAAQ;AACb,aAAK,SAAS;AAAA,MACf;AAAA,MAEA,IAAI,MAAM;AACT,eAAO,KAAK,QAAQ,KAAK;AAAA,MAC1B;AAAA,MAEA,IAAI,SAAS;AACZ,eAAO,KAAK,OAAO;AAAA,MACpB;AAAA,IACD;AAKA,QAAM,aAAN,MAAiB;AAAA,MAChB,YAAY,QAAQ;AACnB,aAAK,SAAS;AACd,aAAK,MAAM;AAAA,MACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,QAAQ,QAAQ;AACf,aAAK,OAAO;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,KAAK,SAAS,GAAG,SAAS,GAAG;AAC5B,cAAM,QAAQ,SAAS,KAAK;AAE5B,eAAO,KAAK,OAAO,MAAM,OAAO,QAAQ,MAAM;AAAA,MAC/C;AAAA,IACD;AAEA,QAAM,0BAA0B;AAAA,MAC/B,WAAW;AAAA,MACX,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAQA,aAAS,gBAAgB,QAAQ,QAAQ;AACxC,YAAM,MAAM,OAAO,KAAK,GAAG,MAAM;AACjC,YAAM,WAAW,SAAS,KAAK,EAAE;AAEjC,aAAO,QAAQ,MAAM;AACrB,aAAO,OAAO,aAAa,QAAQ;AAAA,IACpC;AAOA,aAAS,oBAAoB,QAAQ;AACpC,YAAM,SAAS;AAEf,aAAO,YAAY,OAAO;AAC1B,YAAMC,SAAQ,OAAO,KAAK,OAAO,MAAM;AAEvC,UAAIA,QAAO;AACV,cAAM,YAAY,SAASA,OAAM,OAAO,WAAW,EAAE;AAErD,eAAO,MAAM,OAAO;AACpB,eAAO,OAAO,cAAc,SAAS;AAAA,MACtC;AACA,aAAO,gBAAgB,QAAQ,CAAC;AAAA,IACjC;AAQA,aAAS,kBAAkB,QAAQ,WAAW;AAC7C,YAAM,CAAC,QAAQ,IAAI,OAAO,KAAK,IAAI,SAAS,EAAE,MAAM,UAAU;AAE9D,aAAO,QAAQ,SAAS,SAAS,CAAC;AAClC,YAAM,QAAQ,SAAS,UAAU,CAAC;AAElC,aAAO,OAAO,aAAa,KAAK;AAAA,IACjC;AAOA,aAAS,qCAAqC,QAAQ;AACrD,YAAM,OAAO,OAAO,KAAK,CAAC;AAE1B,aAAO,QAAQ,CAAC;AAChB,YAAM,WAAW,wBAAwB,IAAI;AAE7C,UAAI,UAAU;AACb,eAAO;AAAA,MACR;AACA,cAAQ,MAAM;AAAA,QACb,KAAK;AACJ,iBAAO,gBAAgB,QAAQ,CAAC;AAAA,QACjC,KAAK;AACJ,iBAAO,oBAAoB,MAAM;AAAA,QAClC,KAAK;AACJ,cAAI,OAAO,KAAK,MAAM,MAAM;AAC3B,mBAAO,QAAQ,CAAC;AAAA,UACjB;AAAA;AAAA,QAGD,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QACR,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO,kBAAkB,QAAQ,CAAC;AAAA,QACnC,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO,kBAAkB,QAAQ,CAAC;AAAA,QACnC;AACC,iBAAO;AAAA,MACT;AAAA,IACD;AAOA,cAAU,oCAAoC,QAAQ;AACrD,YAAM,QAAQ,OAAO;AACrB,YAAM,MAAM,qCAAqC,MAAM;AACvD,YAAM,MAAM,OAAO;AACnB,YAAM,SAAS,OAAO,OAAO,MAAM,OAAO,GAAG;AAE7C,cAAQ,IAAI,QAAQ;AAAA,QACnB,KAAK;AACJ;AAAA,QACD,KAAK;AACJ,gBAAM,IAAI,SAAS,OAAO,MAAM;AAChC;AAAA,QACD;AACC,gBAAM,IAAI,SAAS,OAAO,MAAM;AAChC,gBAAM,IAAI,SAAS,OAAO,MAAM;AAChC;AAAA,MACF;AAAA,IACD;AAOA,aAAS,mBAAmB,QAAQ;AACnC,YAAM,SAAS,IAAI,WAAW,MAAM;AACpC,YAAM,QAAQ,OAAO,KAAK;AAE1B,aAAO,QAAQ,CAAC;AAChB,YAAM,YAAY,CAAC;AAEnB,iBAAS;AACR,cAAM,OAAO,OAAO,KAAK;AAEzB,YAAI,SAAS,OAAO;AACnB;AAAA,QACD;AACA,YAAI,SAAS,MAAM;AAClB,oBAAU,KAAK,GAAG,oCAAoC,MAAM,CAAC;AAAA,QAC9D,OAAO;AACN,oBAAU,KAAK,IAAI,SAAS,OAAO,KAAK,IAAI,CAAC;AAC7C,iBAAO,QAAQ,CAAC;AAAA,QACjB;AAAA,MACD;AACA,aAAO;AAAA,IACR;AAOA,aAAS,mBAAmB,QAAQ;AACnC,YAAM,SAAS,IAAI,WAAW,MAAM;AAEpC,aAAO,QAAQ,CAAC;AAChB,YAAM,YAAY,CAAC;AAEnB,iBAAS;AACR,cAAM,OAAO,OAAO,KAAK;AAEzB,YAAI,SAAS,OAAQ,SAAS,OAAO,OAAO,KAAK,CAAC,MAAM,KAAM;AAC7D;AAAA,QACD;AACA,YAAI,SAAS,MAAM;AAClB,oBAAU,KAAK,GAAG,oCAAoC,MAAM,CAAC;AAAA,QAC9D,OAAO;AACN,cAAI;AAEJ,cAAI,SAAS,QAAQ,OAAO,KAAK,CAAC,MAAM,MAAM;AAC7C,yBAAa;AAAA,UACd,OAAO;AACN,yBAAa;AAAA,UACd;AACA,oBAAU,KAAK,IAAI,SAAS,OAAO,KAAK,UAAU,CAAC;AACnD,iBAAO,QAAQ,WAAW,MAAM;AAAA,QACjC;AAAA,MACD;AACA,aAAO;AAAA,IACR;AAEA,IAAAD,QAAO,UAAU,EAAE,oBAAoB,mBAAmB;AAAA;AAAA;;;ACtP1D;AAAA,mEAAAE,UAAAC,SAAA;AAAA;AAKA,QAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AACJ,QAAM,EAAE,cAAc,eAAe,IAAI;AACzC,QAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AACJ,QAAM,WAAW;AACjB,QAAM,EAAE,uBAAuB,IAAI;AACnC,QAAM;AAAA,MACL;AAAA,MACA;AAAA,IACD,IAAI;AAmBJ,cAAU,yBAAyB,OAAO;AAEzC,UAAI,MAAM,CAAC;AAEX,iBAAWC,SAAQ,OAAO;AACzB,gBAAQA,MAAK,MAAM;AAAA,UAClB,KAAK;AACJ,gBAAI,KAAKA,KAAI;AACb;AAAA,UAED,KAAK;AACJ,gBAAI,KAAKA,MAAK,GAAG;AACjB,kBAAM;AACN,kBAAM,CAACA,MAAK,GAAG;AACf;AAAA,UAED,KAAK;AAAA,UACL,KAAK;AAAA;AAAA,UACL,KAAK;AAAA;AAAA,UACL,KAAK;AACJ,gBAAI,IAAI,SAAS,GAAG;AACnB,oBAAM;AACN,oBAAM,CAAC;AAAA,YACR;AACA;AAAA,QAGF;AAAA,MACD;AAEA,UAAI,IAAI,SAAS,GAAG;AACnB,cAAM;AAAA,MACP;AAAA,IACD;AAOA,aAAS,yBAAyB,MAAM;AACvC,aAAO,sBAAsB,KAAK,KAAK,GAAG;AAAA,IAC3C;AAMA,QAAM,yBAAyB;AAAA,MAC9B,CAAC,0BAA0B,OAAO;AACjC,mBAAW,CAACC,QAAO,IAAI,KAAK,MAAM,QAAQ,GAAG;AAC5C,gBAAMC,YAAW,MAAMD,SAAQ,CAAC;AAEhC,cACCC,aACA,QACA,gBAAgBA,UAAS,OAAO,KAAK,KAAK,KAC1C,CAAC,yBAAyBA,SAAQ,KAClC,CAAC,yBAAyB,IAAI,GAC7B;AACD,kBAAM,CAACA,WAAU,IAAI;AAAA,UACtB;AAAA,QACD;AAAA,MACD;AAAA,MAEA,CAAC,cAAc,OAAO;AACrB,mBAAW,CAACD,QAAO,IAAI,KAAK,MAAM,QAAQ,GAAG;AAC5C,gBAAMC,YAAW,MAAMD,SAAQ,CAAC;AAEhC,cACCC,aACA,QACA,gBAAgBA,UAAS,OAAO,KAAK,KAAK,MACzC,yBAAyBA,SAAQ,KACjC,yBAAyB,IAAI,IAC7B;AACD,kBAAM,CAACA,WAAU,IAAI;AAAA,UACtB;AAAA,QACD;AAAA,MACD;AAAA,MAEA,CAAC,eAAe,OAAO,iBAAiB;AAKvC,mBAAW,CAACD,QAAO,IAAI,KAAK,MAAM,QAAQ,GAAG;AAC5C,gBAAMC,YAAW,gBAAgBD,SAAQ,CAAC;AAE1C,cACCC,aACA,QACA,qBAAqB,KAAK,KAAK,KAC/B,CAAC,qBAAqBA,UAAS,KAAK,GACnC;AACD,kBAAM,CAACA,WAAU,IAAI;AAAA,UACtB;AAAA,QACD;AAAA,MACD;AAAA,MAEA,CAAC,cAAc,OAAO;AACrB,mBAAW,CAACD,QAAO,IAAI,KAAK,MAAM,QAAQ,GAAG;AAC5C,gBAAMC,YAAW,MAAMD,SAAQ,CAAC;AAEhC,cACCC,aACA,QACA,gBAAgB,KAAK,KAAK,KAC1B,CAAC,gBAAgBA,UAAS,KAAK,GAC9B;AACD,kBAAM,CAACA,WAAU,IAAI;AAAA,UACtB;AAAA,QACD;AAAA,MACD;AAAA,MAEA,CAAC,wBAAwB,OAAO;AAC/B,mBAAW,CAACD,QAAO,IAAI,KAAK,MAAM,QAAQ,GAAG;AAC5C,gBAAMC,YAAW,MAAMD,SAAQ,CAAC;AAEhC,cACCC,aACA,QACA,0BAA0B,KAAK,KAAK,KACpC,0BAA0BA,UAAS,KAAK,GACvC;AACD,kBAAM,CAACA,WAAU,IAAI;AAAA,UACtB;AAAA,QACD;AAAA,MACD;AAAA,MAEA,CAAC,IAAI,OAAO;AACX,YAAI,WAAW;AAEf,mBAAW,CAACD,QAAO,IAAI,KAAK,MAAM,QAAQ,GAAG;AAC5C,gBAAMC,YAAW,MAAMD,SAAQ,CAAC;AAChC,gBAAM,OAAO,MAAMA,SAAQ,CAAC;AAE5B,cACCC,aACA,QACA,QACA,KAAK,UAAU,QACfA,UAAS,UAAU,QACnB,KAAK,UAAU,MACd;AACD,gBAAI,UAAU;AACb,kBAAI,SAAS,GAAG,EAAE,MAAMA,WAAU;AACjC,yBAAS,KAAK,MAAM,IAAI;AAAA,cACzB,OAAO;AACN,sBAAM;AACN,2BAAW,MAAM,MAAMD,SAAQ,GAAGA,SAAQ,CAAC;AAAA,cAC5C;AAAA,YACD,OAAO;AACN,yBAAW,MAAM,MAAMA,SAAQ,GAAGA,SAAQ,CAAC;AAAA,YAC5C;AAAA,UACD;AAAA,QACD;AAEA,YAAI,UAAU;AACb,gBAAM;AAAA,QACP;AAAA,MACD;AAAA,IACD;AAEA,QAAM,QAAQ,OAAO,KAAK,sBAAsB;AAahD,aAAS,sBAAsBD,OAAM,cAAc;AAClD,UAAI,CAACA,OAAM;AACV,eAAO;AAAA,MACR;AACA,UAAIA,MAAK,SAAS,aAAaA,MAAK,OAAO;AAC1C,eAAO,EAAE,OAAOA,MAAK,MAAM;AAAA,MAC5B;AAEA,YAAM,cAAc,eAAeA,OAAM,YAAY;AAErD,UAAI,aAAa,iBAAiB,QAAQ;AACzC,eAAO;AAAA,MACR;AACA,aAAO;AAAA,IACR;AASA,aAAS,yBAAyB,MAAM,YAAY;AACnD,UAAI,CAAC,WAAW,WAAW,IAAI,GAAG;AACjC,eAAO;AAAA,MACR;AACA,YAAMG,SAAQ,gBAAgB,KAAK,UAAU;AAE7C,aAAOA,SAAQ,CAAC,MAAM,OAAO,cAAc,KAAK,KAAK;AAAA,IACtD;AAWA,aAAS,iCAAiC,MAAM,YAAY,WAAW;AACtE,YAAM,aAAa,KAAK;AACxB,YAAM,YAAY,KAAK,MAAM;AAC7B,YAAM,QAAQ,UAAU,UAAU,EAAE;AACpC,YAAM,MAAM,UAAU,SAAS,EAAE;AACjC,YAAM,aAAa,WAAW,MAAM,OAAO,GAAG;AAE9C,aAAO,yBAAyB,MAAM,UAAU;AAAA,IACjD;AAOA,IAAAJ,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,aAAa;AAAA,UACd;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,gBAAgB;AAAA,QAEhB,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,aAAa;AAAA,gBACZ,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,2BACC;AAAA,UACD,eAAe;AAAA,UACf,gBAAgB;AAAA,UAChB,eAAe;AAAA,UACf,yBACC;AAAA,UACD,KAAK;AAAA,UACL,oBAAoB;AAAA,QACrB;AAAA,MACD;AAAA,MACA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,YAAY,CAAC,IAAI,QAAQ;AAClC,cAAM,aAAa,QAAQ;AAC3B,cAAM,SAAS,IAAI,aAAa;AAChC,cAAM,sBAAsB,oBAAI,IAAI;AAUpC,iBAAS,OAAOC,OAAM,SAAS,OAAO,cAAc;AACnD,cAAI;AAEJ,cAAI;AACH,0BAAc,OAAO,aAAa,SAAS,GAAG,QAAQ,QAAQ;AAAA,cAC7D,SAAS,MAAM,SAAS,GAAG;AAAA,cAC3B,aAAa,MAAM,SAAS,GAAG;AAAA,YAChC,CAAC;AAAA,UACF,QAAQ;AAEP;AAAA,UACD;AAEA,cAAI,YAAY;AAQhB,mBAAS,2BAA2B,MAAM;AACzC,gBAAIA,MAAK,SAAS,aAAaA,MAAK,OAAO;AAC1C,qBAAO,yBAAyB,MAAM,KAAK,GAAG;AAAA,YAC/C;AACA,gBAAIA,MAAK,SAAS,aAAa,OAAOA,MAAK,UAAU,UAAU;AAC9D,oBAAM,aAAaA,MAAK;AAExB,4BAAc,mBAAmB,UAAU;AAE3C,qBAAO;AAAA,gBACN;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AACA,gBAAI,SAAS,wBAAwBA,KAAI,GAAG;AAC3C,oBAAM,aAAa,WAAW,QAAQA,KAAI;AAE1C,4BAAc,mBAAmB,UAAU;AAE3C,qBAAO;AAAA,gBACN;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AACA,mBAAO;AAAA,UACR;AAEA,gBAAM,mBAAmB,oBAAI,IAAI;AAEjC,yBAAe,aAAa;AAAA,YAC3B,sBAAsB,QAAQ;AAC7B,yBAAW,mBAAmB;AAAA,gBAC7B,OAAO;AAAA,cACR,GAAG;AACF,oBAAI;AAEJ,oBAAI,aAAa;AAEhB,0BAAQ,gBAAgB;AAAA,oBAAI,UAC3B,2BAA2B,IAAI,IAAI,OAAO;AAAA,kBAC3C;AAAA,gBACD,OAAO;AACN,0BAAQ;AAAA,gBACT;AACA,2BAAW,QAAQ,OAAO;AACzB,wBAAM,UAAU,uBAAuB,IAAI;AAAA,oBAC1C;AAAA,oBACA;AAAA,kBACD;AAEA,sBAAI,iBAAiB,IAAI,IAAI,GAAG;AAC/B,qCAAiB,IAAI,IAAI,EAAE,KAAK,GAAG,OAAO;AAAA,kBAC3C,OAAO;AACN,qCAAiB,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC;AAAA,kBACxC;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD,CAAC;AASD,mBAAS,uBAAuB,SAAS;AACxC,gBACC,CAAC,SAAS,wBAAwBA,KAAI,KACtCA,MAAK,SAAS,WACb;AACD,qBAAO,QAAQ,SAAS,CAACA,MAAK,GAAG,IAAI,CAAC;AAAA,YACvC;AACA,mBAAO,QAAQ,IAAI,WAAS;AAC3B,oBAAM,aAAa,MAAM,CAAC,EAAE;AAC5B,oBAAM,YAAY,MAAM,GAAG,EAAE,EAAE,MAAM;AACrC,kBAAI;AACJ,kBAAI;AAEJ,kBAAIA,MAAK,SAAS,mBAAmB;AACpC,sBAAM,SAAS,WAAW,QAAQA,KAAI;AACtC,sBAAM,SAASA,MAAK,MAAM,CAAC;AAE3B,8BAAc,mBAAmB,MAAM;AACvC,wBAAQ,SAAS,UAAU,UAAU,EAAE;AACvC,sBAAM,SAAS,UAAU,SAAS,EAAE;AAAA,cACrC,WAAW,OAAOA,MAAK,UAAU,UAAU;AAE1C,sBAAM,SAASA,MAAK;AACpB,sBAAM,SAASA,MAAK,MAAM,CAAC;AAE3B,8BAAc,mBAAmB,MAAM;AACvC,wBAAQ,SAAS,UAAU,UAAU,EAAE;AACvC,sBAAM,SAAS,UAAU,SAAS,EAAE;AAAA,cACrC,OAAO;AAEN,sBAAM,SAASA,MAAK,MAAM,CAAC,IAAI;AAE/B,wBAAQ,SAAS;AACjB,sBAAM,SAAS,YAAY;AAAA,cAC5B;AAEA,qBAAO;AAAA,gBACN,OAAO,WAAW,gBAAgB,KAAK;AAAA,gBACvC,KAAK,WAAW,gBAAgB,GAAG;AAAA,cACpC;AAAA,YACD,CAAC;AAAA,UACF;AAEA,qBAAW,CAAC,MAAM,OAAO,KAAK,kBAAkB;AAC/C,gBAAI;AAEJ,gBAAI,SAAS,6BAA6B;AACzC,wBAAU;AAAA,gBACT;AAAA,kBACC,WAAW;AAAA,kBACX,KAAK;AAAA,gBACN;AAAA,cACD;AAAA,YACD;AAEA,kBAAM,OAAO,uBAAuB,OAAO;AAE3C,uBAAW,OAAO,MAAM;AACvB,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA;AAAA,gBACA,WAAW;AAAA,gBACX;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,iBAAiBA,OAAM;AACtB,gBAAI,oBAAoB,IAAIA,KAAI,GAAG;AAClC;AAAA,YACD;AACA,mBAAOA,OAAMA,MAAK,MAAM,SAASA,MAAK,MAAM,OAAO,WAAS;AAC3D,kBACC,CAAC;AAAA,gBACA,QAAQ,gBAAgB;AAAA,gBACxBA,MAAK,MAAM;AAAA,cACZ,GACC;AACD,uBAAO;AAAA,cACR;AAEA,qBAAO,MAAM,gBAAgBA,OAAM,GAAG;AAAA,YACvC,CAAC;AAAA,UACF;AAAA,UACA,QAAQA,OAAM;AACb,kBAAM,QAAQ,WAAW,SAASA,KAAI;AACtC,kBAAM,UAAU,IAAI,iBAAiB,KAAK;AAO1C,uBAAW,EAAE,MAAM,QAAQ,KAAK,QAAQ;AAAA,cACvC;AAAA,gBACC,QAAQ,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS,GAAG,KAAK;AAAA,cAC3C;AAAA,YACD,GAAG;AACF,kBAAI,SAAS;AACb,oBAAM,CAAC,aAAa,SAAS,IAAI,QAAQ;AACzC,oBAAM,mBAAmB;AAAA,gBACxB;AAAA,gBACA;AAAA,cACD;AAEA,kBAAI,CAAC,kBAAkB;AACtB;AAAA,cACD;AACA,kBAAI,WAAW;AACd,oBAAI,iBAAiB,OAAO;AAC3B,4BAAU,iBAAiB,MAAM;AACjC,sCAAoB,IAAI,WAAW;AAAA,gBACpC,OAAO;AACN,4BAAU,OAAO,iBAAiB,KAAK;AAAA,gBACxC;AACA,wBAAQ,oBAAoB,WAAW,KAAK;AAAA,cAC7C,OAAO;AACN,oBAAI,iBAAiB,OAAO;AAC3B;AAAA,gBACD;AACA,0BAAU,OAAO,iBAAiB,KAAK;AACvC,wBAAQ;AAAA,cACT;AAEA,kBAAI,OAAO,UAAU,UAAU;AAC9B,uBAAO,aAAa,SAAS,OAAO,WAAS;AAC5C,sBACC,CAAC;AAAA,oBACA,QAAQ,gBAAgB;AAAA,oBACxB;AAAA,kBACD,GACC;AACD,2BAAO;AAAA,kBACR;AAEA,sBAAI,QAAQ,UAAU,WAAW,GAAG;AACnC,0BAAM,mBACL,WAAW,aAAa,SAAS;AAAA,sBAChC,MAAM;AAAA,oBACP,CAAC;AAEF,2BAAO,MAAM;AAAA,sBACZ;AAAA,sBACA,SAAS,aAAa,gBAAgB,IACnC,UACA;AAAA,oBACJ;AAAA,kBACD;AAEA,sBACE,UAAU,SAAS,aACnB,OAAO,UAAU,UAAU,YAC5B,UAAU,SAAS,mBAClB;AACD,0BAAM,QAAQ;AAAA,sBACb,UAAU,MAAM,CAAC;AAAA,sBACjB,UAAU,MAAM,CAAC,IAAI;AAAA,oBACtB;AAEA,2BAAO,MAAM,qBAAqB,OAAO,GAAG;AAAA,kBAC7C;AAEA,yBAAO;AAAA,gBACR,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACllBA;AAAA,wDAAAI,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAMjB,QAAM,uBAAuB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI;AAC3D,QAAM,oBAAoB,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,KAAK;AAChE,QAAM,uBAAuB,CAAC,MAAM,MAAM,OAAO,OAAO,KAAK,MAAM,KAAK,IAAI;AAC5E,QAAM,oBAAoB,CAAC,MAAM,IAAI;AACrC,QAAM,uBAAuB,CAAC,MAAM,YAAY;AAChD,QAAM,mBAAmB,CAAC,IAAI;AAC9B,QAAM,oBAAoB,CAAC,IAAI;AAC/B,QAAM,gBAAgB,CAAC,EAAE;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AACA,QAAM,iBAAiB;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AACA,QAAM,mBAAmB;AAOzB,aAAS,iBAAiB,UAAU,CAAC,GAAG;AACvC,YAAM,YAAY,QAAQ,UAAU,QAAQ,OAAO,SAAS;AAC5D,YAAM,SAAS,YAAY,QAAQ,SAAS;AAC5C,YAAM,sBAAsB,QAAQ,wBAAwB;AAE5D,aAAO;AAAA,QACN;AAAA,QACA;AAAA,MACD;AAAA,IACD;AASA,aAAS,qBAAqB,QAAQ,MAAM,OAAO;AAClD,aAAO,OAAO,KAAK,WAAS,MAAM,SAAS,IAAI,KAAK,MAAM,SAAS,KAAK,CAAC;AAAA,IAC1E;AASA,aAAS,aAAaC,OAAM;AAC3B,aAAOA,MAAK,SAAS,0BAA0BA,MAAK,OAAOA,MAAK;AAAA,IACjE;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,kBACN,OAAO,EAAE,MAAM,cAAc;AAAA,kBAC7B,UAAU;AAAA,kBACV,aAAa;AAAA,gBACd;AAAA,gBACA,aAAa;AAAA,cACd;AAAA,cACA,qBAAqB;AAAA,gBACpB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,yBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,UAAU,iBAAiB,QAAQ,QAAQ,CAAC,CAAC;AASnD,iBAAS,aAAaC,OAAM;AAC3B,gBAAM,IAAIA;AACV,gBAAM,IAAIA,MAAK;AAEf,iBACC,CAAC;AAAA,YACA,QAAQ;AAAA,YACR,EAAE;AAAA,YACF,EAAE,SAAS,0BAA0B,OAAO,EAAE;AAAA,UAC/C,KACC,QAAQ,uBACR,SAAS,cAAc,CAAC,MAAM,SAAS,cAAc,CAAC;AAAA,QAEzD;AAUA,iBAAS,kBAAkBA,OAAM;AAChC,iBACCA,MAAK,aAAaA,MAAK,OAAO,YAC9B,CAAC,SAAS,gBAAgB,YAAYA,KAAI;AAAA,QAE5C;AAQA,iBAAS,iBAAiBA,OAAM;AAC/B,iBAAO,WAAW;AAAA,YACjB,aAAaA,KAAI;AAAA,YACjB,SAAS;AAAA,UACV;AAAA,QACD;AAUA,iBAAS,oBAAoBA,OAAM;AAClC,gBAAM,SAASA,MAAK;AACpB,gBAAM,OAAO,aAAa,MAAM,MAAMA,QAAOA,QAAO;AACpD,gBAAM,QAAQ,aAAa,MAAM,MAAMA,QAAOA,QAAO;AACrD,gBAAM,OAAO;AAAA,YACZ,cAAc,KAAK,YAAY;AAAA,YAC/B,eAAe,MAAM,YAAY;AAAA,UAClC;AAEA,kBAAQ,OAAO;AAAA,YACd,MAAM;AAAA,YACN,KAAK,iBAAiB,IAAI,EAAE;AAAA,YAC5B,WAAW;AAAA,YACX;AAAA,UACD,CAAC;AACD,kBAAQ,OAAO;AAAA,YACd,MAAM;AAAA,YACN,KAAK,iBAAiB,KAAK,EAAE;AAAA,YAC7B,WAAW;AAAA,YACX;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,MAAMA,OAAM;AACpB,cACC,iBAAiB,KAAKA,MAAK,OAAO,IAAI,KACtC,kBAAkBA,KAAI,KACtB,CAAC,aAAaA,KAAI,GACjB;AACD,gCAAoBA,KAAI;AAAA,UACzB;AAAA,QACD;AAEA,eAAO;AAAA,UACN,kBAAkB;AAAA,UAClB,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5PA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,cACP;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,UAAU;AAAA,oBACT,MAAM;AAAA,kBACP;AAAA,kBACA,WAAW;AAAA,oBACV,MAAM;AAAA,kBACP;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,cAAc;AAAA,UACd,6BACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,UAAU,QAAQ,QAAQ,CAAC;AACjC,YAAI,WAAW,OACd,YAAY;AAEb,YAAI,OAAO,YAAY,UAAU;AAChC,qBAAW,QAAQ;AACnB,sBAAY,QAAQ;AAAA,QACrB,OAAO;AACN,qBAAW,CAAC,CAAC;AAAA,QACd;AAMA,iBAAS,oBAAoB;AAM5B,iBAAO;AAAA,YACN;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAEA,cAAM,kBAAkB,kBAAkB;AAE1C,cAAM,eAAe,WACpB,qBAAqB,iBACrB,aAAa;AAEd,cAAM,WAAW,QAChB,WAAW,QACX,aAAa,UACb,eAAe;AAOhB,iBAAS,mBAAmB,gBAAgB;AAC3C,cAAI,CAAC,gBAAgB;AAEpB,mBAAO;AAAA,UACR;AAEA,cACC,eAAe,SAAS,oBACxB,eAAe,OAAO,SAAS,gBAC/B,eAAe,OAAO,SAAS,WAC9B;AAED,mBAAO;AAAA,UACR;AACA,cACC,aACA,eAAe,SAAS,oBACxB,eAAe,OAAO,SAAS,kBAC9B;AAED,mBAAO,mBAAmB,eAAe,MAAM;AAAA,UAChD;AACA,cAAI,eAAe,SAAS,oBAAoB;AAE/C,mBAAO,mBAAmB,eAAe,MAAM;AAAA,UAChD;AAGA,iBAAO;AAAA,QACR;AAOA,iBAAS,gBAAgB,gBAAgB;AACxC,cAAI,eAAe,SAAS,oBAAoB;AAE/C,mBAAO,gBAAgB,eAAe,MAAM;AAAA,UAC7C;AACA,cAAI,eAAe,UAAU,WAAW,GAAG;AAE1C,mBAAO;AAAA,UACR;AAEA,gBAAM,MAAM,eAAe,UAAU,CAAC;AAEtC,cAAI,IAAI,SAAS,aAAa,OAAO,IAAI,UAAU,UAAU;AAE5D,mBAAO;AAAA,UACR;AAEA,cAAI,gBAAgB,SAAS,IAAI,KAAK,GAAG;AAExC,mBAAO;AAAA,UACR;AACA,cAAI,cAAc,KAAK,IAAI,KAAK,GAAG;AAElC,mBAAO;AAAA,UACR;AAGA,iBAAO;AAAA,QACR;AAQA,iBAAS,QAAQ,cAAc;AAC9B,gBAAM,WAAW,CAAC;AAElB,uBAAa,QAAQ,iBAAe;AACnC,kBAAM,OAAO,mBAAmB,YAAY,IAAI;AAEhD,qBAAS,IAAI,IAAI;AAAA,UAClB,CAAC;AAED,iBAAO,CAAC,EACP,SAAS,YAAY,MACpB,SAAS,kBAAkB,KAAK,SAAS,UAAU;AAAA,QAEtD;AAQA,iBAAS,UAAU,cAAc;AAChC,gBAAM,QAAQ,CAAC;AAEf,uBAAa,QAAQ,iBAAe;AACnC,gBAAI,mBAAmB,YAAY,IAAI,MAAM,cAAc;AAC1D,oBAAM,gBAAgB,YAAY,IAAI,CAAC,IAAI;AAAA,YAC5C;AAAA,UACD,CAAC;AAED,iBAAO,OAAO,KAAK,KAAK,EAAE,UAAU;AAAA,QACrC;AAEA,eAAO;AAAA,UACN,oBAAoBC,OAAM;AACzB,gBAAI,QAAQA,MAAK,YAAY,GAAG;AAC/B,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF,WAAW,YAAY,CAAC,UAAUA,MAAK,YAAY,GAAG;AACrD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1QA;AAAA,8DAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,cAAc,MAAM,KAAK;AAAA,UACjC;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,oBAAoB;AAAA,QACrB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,YAAI;AAEJ,gBAAQ,QAAQ,QAAQ,CAAC,GAAG;AAAA,UAC3B,KAAK;AAAA;AAAA,UACL,KAAK;AACJ,wBAAY;AACZ;AAAA,UACD;AACC,wBAAY;AAAA,QACd;AAMA,eAAO;AAAA,UACN,eAAeC,OAAM;AACpB,kBAAM,QAAQ,WAAW,OACxB,WAAW,WAAW,eAAe,GACrC,sBAAsB,oBAAI,IAAI;AAG/B,qBAAS,QAAQ,aAAW;AAC3B,uBACK,IAAI,QAAQ,IAAI,MAAM,OAAO,GACjC,KAAK,QAAQ,IAAI,IAAI,MACrB,KACC;AACD,oCAAoB,IAAI,CAAC;AAAA,cAC1B;AAAA,YACD,CAAC;AAOD,gBAAI,QAAQ;AAEZ,gBAAI,WAAW;AAMd,sBAAQ;AAAA,YACT;AAEA,kBAAM,QAAQ,CAAC,MAAM,MAAM;AAC1B,oBAAMC,SAAQ,MAAM,KAAK,IAAI;AAE7B,kBAAIA,QAAO;AACV,sBAAM,aAAa,IAAI;AACvB,sBAAM,MAAM;AAAA,kBACX,OAAO;AAAA,oBACN,MAAM;AAAA,oBACN,QAAQA,OAAM,CAAC,EAAE,SAAS;AAAA,kBAC3B;AAAA,kBACA,KAAK;AAAA,oBACJ,MAAM;AAAA,oBACN,QAAQA,OAAM,CAAC,EAAE;AAAA,kBAClB;AAAA,gBACD;AAEA,oBAAI,CAAC,oBAAoB,IAAI,UAAU,GAAG;AACzC,wBAAM,iBACL,WAAW;AAAA,oBACV,WAAW,gBAAgB,IAAI,KAAK;AAAA,kBACrC;AAED,sBACC,EACC,kBACA,CAAC,WAAW,iBAAiB,EAAE;AAAA,oBAC9B,eAAe;AAAA,kBAChB,IAEA;AACD,4BAAQ,OAAO;AAAA,sBACd,MAAAD;AAAA,sBACA;AAAA,sBACA,WAAW;AAAA,oBACZ,CAAC;AAAA,kBACF;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnJA;AAAA,qDAAAE,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,sBAAsB;AAAA,gBACrB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,qBAAqB,CAAC,IAAI,QAAQ;AAC3C,cAAM,YAAY;AAAA,UACjB;AAAA,UACA;AAAA,QACD;AAEA,YAAI,CAAC,sBAAsB;AAC1B,oBAAU,KAAK,mDAAmD;AAAA,QACnE;AAEA,eAAO;AAAA,UACN,CAAC,SAAS,EAAEC,OAAM;AACjB,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,YACZ,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACjEA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAQA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,YAAY;AAAA,gBACX,MAAM;AAAA,gBACN,mBAAmB;AAAA,kBAClB,oBAAoB;AAAA,oBACnB,MAAM;AAAA,kBACP;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,cACA,mBAAmB;AAAA,gBAClB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,UAAU,QAAQ,QAAQ,CAAC,KAAK,CAAC;AACvC,cAAM,oBAAoB,QAAQ;AAClC,cAAM,aAAa,OAAO;AAAA,UACzB,EAAE,UAAU,KAAK;AAAA,UACjB,QAAQ;AAAA,QACT;AACA,cAAM,gBAAgB,OAAO,KAAK,UAAU,EAAE;AAAA,UAC7C,SAAO,WAAW,GAAG;AAAA,QACtB;AAQA,iBAAS,2BAA2B,OAAO;AAC1C,gBAAM,aAAa,MAAM,MAAM,MAAM,IAAI;AACzC,gBAAMC,SAAQ,WAAW,CAAC;AAC1B,gBAAM,iBAAiB,GAAGA,OAAM,MAAM,GAAG,EAAE,CAAC;AAE5C,iBAAO,WAAW,WAAW,KAAKA,OAAM,UAAU,KAC/CA,SACA;AAAA,QACJ;AAMA,eAAO;AAAA,UACN,UAAU;AACT,uBAAW,kBAAkB;AAAA,cAC5B,CAAC,WAAW,WAAW,sBAAsB;AAC5C,oBAAI,cAAc,kBAAkB,SAAS,GAAG;AAC/C;AAAA,gBACD;AACA,sBAAM,aAAa,kBAAkB,YAAY,CAAC;AAGlD,oBACC,CAAC,WAAW,KACV,MAAM,UAAU,MAAM,CAAC,GAAG,WAAW,MAAM,CAAC,CAAC,EAC7C,SAAS,IAAI,KACf,UAAU,IAAI,IAAI,OAAO,WAAW,IAAI,MAAM,MAC7C;AACD;AAAA,gBACD;AAGA,oBACC,qBACA,SAAS,eAAe,UAAU,MACjC,cAAc,kBAAkB,SAAS,KACzC,WAAW,IAAI,IAAI,OAClB,kBAAkB,YAAY,CAAC,EAAE,IAAI,MACnC,OACH;AACD;AAAA,gBACD;AAGA,oBAAI,eAAe;AAClB,wBAAM,aAAa,WAAW;AAAA,oBAC7B,WAAW,MAAM,CAAC,IAAI;AAAA,kBACvB;AAEA,sBAAI,cAAc,WAAW,WAAW,IAAI,GAAG;AAC9C;AAAA,kBACD;AAAA,gBACD;AAEA,oBAAI;AAEJ,oBAAI,WAAW,SAAS,SAAS;AAChC,iCAAe,KAAK,2BAA2B,UAAU,CAAC;AAAA,gBAC3D,WAAW,WAAW,SAAS,QAAQ;AACtC,iCAAe,KAAK,2BAA2B,UAAU,CAAC;AAAA,gBAC3D,OAAO;AACN,iCAAe,WAAW;AAAA,gBAC3B;AAEA,wBAAQ,OAAO;AAAA,kBACd,MAAM;AAAA,kBACN,KAAK;AAAA,oBACJ,OAAO,UAAU,IAAI;AAAA,oBACrB,KAAK,WAAW,IAAI;AAAA,kBACrB;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM,EAAE,aAAa;AAAA,kBACrB,KAAK,WACJ,MAAM;AAAA,oBACL,CAAC,UAAU,MAAM,CAAC,GAAG,WAAW,MAAM,CAAC,CAAC;AAAA,oBACxC;AAAA,kBACD;AAAA,gBACF,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClLA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,iBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAOf,iBAAS,aAAaC,OAAM;AAC3B,iBAAOA,MAAK,KAAK,QAAQ,KAAK,MAAM;AAAA,QACrC;AAMA,eAAO;AAAA,UACN,QAAQA,OAAM;AACb,gBACC,SAAS,kBAAkB,KAAKA,MAAK,GAAG,KACxC,CAAC,aAAaA,MAAK,MAAM,GACxB;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClEA;AAAA,6DAAAC,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,KAAK;AAAA,gBACJ,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,UAAU,CAAC,KAAK;AAAA,YAChB,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,sBACC;AAAA,UACD,gBACC;AAAA,UACD,kBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAEf,YAAIC,OAAM,GACT,SAASA,MACT,SAASA;AAEV,YAAI,QAAQ,QAAQ,QAAQ;AAC3B,UAAAA,OAAM,QAAQ,QAAQ,CAAC,EAAE;AACzB,mBACC,OAAO,QAAQ,QAAQ,CAAC,EAAE,WAAW,cAClC,QAAQ,QAAQ,CAAC,EAAE,SACnBA;AACJ,mBACC,OAAO,QAAQ,QAAQ,CAAC,EAAE,WAAW,cAClC,QAAQ,QAAQ,CAAC,EAAE,SACnBA;AAAA,QACL;AAEA,cAAM,aAAa,QAAQ;AAG3B,cAAM,WACL,WAAW,MAAM,GAAG,EAAE,MAAM,KACzB,WAAW,MAAM,MAAM,GAAG,EAAE,IAC5B,WAAW;AACf,cAAM,uBAAuB,oBAAI,IAAI;AAMrC,eAAO;AAAA,UACN,gBAAgBC,OAAM;AACrB,YAAAA,MAAK,OAAO,QAAQ,iBAAe;AAElC,uBACK,cAAc,YAAY,IAAI,MAAM,MACxC,cAAc,YAAY,IAAI,IAAI,MAClC,eACC;AACD,qCAAqB,IAAI,WAAW;AAAA,cACrC;AAAA,YACD,CAAC;AAAA,UACF;AAAA,UACA,eAAeA,OAAM;AACpB,mBACC,SAGE,OAAO,CAAC,qBAAqB,MAAMC,WAAU;AAC7C,kBACC,KAAK,KAAK,KACV,qBAAqB,IAAIA,SAAQ,CAAC,GACjC;AACD,oCAAoB,KAAKA,SAAQ,CAAC;AAAA,cACnC;AACA,qBAAO;AAAA,YACR,GAAG,CAAC,CAAC,EAGJ,OAAO,SAAS,SAAS,CAAC,EAG1B,OAAO,CAAC,gBAAgB,eAAe;AACvC,kBAAI,WAAW;AAEf,kBAAI,mBAAmB,GAAG;AACzB,4BAAY;AACZ,6BAAa;AAAA,cACd,WAAW,eAAe,SAAS,SAAS,GAAG;AAC9C,4BAAY;AACZ,6BAAa;AAAA,cACd,OAAO;AACN,4BAAY;AACZ,6BAAaF;AAAA,cACd;AAEA,kBAAI,aAAa,iBAAiB,IAAI,YAAY;AACjD,wBAAQ,OAAO;AAAA,kBACd,MAAAC;AAAA,kBACA,KAAK;AAAA,oBACJ,OAAO;AAAA,sBACN,MACC,iBAAiB,aAAa;AAAA,sBAC/B,QAAQ;AAAA,oBACT;AAAA,oBACA,KAAK,EAAE,MAAM,YAAY,QAAQ,EAAE;AAAA,kBACpC;AAAA,kBACA;AAAA,kBACA,MAAM;AAAA,oBACL,KAAK;AAAA,oBACL,iBACC,eAAe,IAAI,SAAS;AAAA,kBAC9B;AAAA,kBACA,IAAI,OAAO;AACV,0BAAM,aACL,WAAW,gBAAgB;AAAA,sBAC1B,MAAM,iBAAiB;AAAA,sBACvB,QAAQ;AAAA,oBACT,CAAC;AAOF,0BAAM,8BACL,aAAa;AACd,0BAAM,WACL,+BACA,SAAS,SACN,WAAW,gBAAgB;AAAA,sBAC3B,MAAM;AAAA,sBACN,QAAQ;AAAA,oBACT,CAAC,IACA,WAAW,KAAK;AAEpB,2BAAO,MAAM,YAAY;AAAA,sBACxB;AAAA,sBACA;AAAA,oBACD,CAAC;AAAA,kBACF;AAAA,gBACD,CAAC;AAAA,cACF;AAEA,qBAAO;AAAA,YACR,GAAG,CAAC;AAAA,UAEP;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACjNA;AAAA,wDAAAE,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,YAAY;AAAA,gBACX,MAAM;AAAA,gBACN,OAAO,EAAE,MAAM,SAAS;AAAA,gBACxB,aAAa;AAAA,cACd;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,gBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,SAAS,QAAQ,QAAQ,CAAC;AAChC,cAAM,aAAc,UAAU,OAAO,cAAe,CAAC;AACrD,cAAM,aAAa,QAAQ;AAS3B,iBAAS,eAAe,WAAWC,QAAO,YAAY;AACrD,gBAAM,aAAa,UAAU;AAE7B,cACC,UAAU,SAAS,SACnB,UAAU,QAAQ;AAAA;AAAA;AAAA;AAAA,WAKjBA,WAAU,KAAK,WAAWA,SAAQ,CAAC,EAAE,eAAe,aACpD;AACD,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,MAAM;AAAA,YACP,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,cAAc,UAAU;AAChC,cACC,SAAS,cAAc,SACvB,CAAC,WAAW,SAAS,SAAS,IAAI,GACjC;AACD,qBAAS,WAAW,QAAQ,cAAc;AAAA,UAC3C;AAAA,QACD;AAEA,eAAO;AAAA,UACN,QAAQC,OAAM;AACb,kBAAM,cAAc,WAAW,SAASA,KAAI;AAE5C,wBAAY,UAAU,QAAQ,aAAa;AAAA,UAC5C;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACjHA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAWA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAOf,iBAAS,wBAAwBC,OAAM;AACtC,iBAAOA,MAAK,aAAaA,MAAK,UAAU,SAAS;AAAA,QAClD;AAQA,iBAAS,yBAAyB,MAAM;AACvC,iBAAO,KAAK,SAAS,qBAAqB,KAAK,aAAa;AAAA,QAC7D;AAQA,iBAAS,0BAA0B,MAAM;AACxC,iBACC,KAAK,SAAS,uBACb,KAAK,aAAa,QAAQ,KAAK,aAAa;AAAA,QAE/C;AAQA,iBAAS,YAAYA,OAAM;AAC1B,iBACC,yBAAyBA,MAAK,IAAI,KAClC,0BAA0BA,MAAK,IAAI;AAAA,QAErC;AAEA,eAAO;AAAA,UACN,YAAYA,OAAM;AACjB,gBAAI,CAAC,wBAAwBA,KAAI,GAAG;AACnC;AAAA,YACD;AAEA,gBAAI,YAAYA,KAAI,GAAG;AACtB,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,UACA,sBAAsBA,OAAM;AAC3B,gBAAI,YAAYA,KAAI,GAAG;AACtB,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnGA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,iBAAiBC,OAAM;AACtB,gBACCA,MAAK,aAAa,QAClBA,MAAK,KAAK,SAAS,qBACnBA,MAAK,KAAK,aAAa,KACtB;AACD,sBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,aAAa,CAAC;AAAA,YACjD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1DA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,sBAAsBC,OAAM;AAC3B,gBACCA,MAAK,UAAU,SAAS,2BACxBA,MAAK,WAAW,SAAS,yBACxB;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC7CA;AAAA,4CAAAC,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,sCAAsCC,OAAM;AAC3C,oBAAQ,OAAO;AAAA,cACd,MAAMA,MAAK;AAAA,cACX,WAAW;AAAA,YACZ,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzCA;AAAA,iDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAMjB,QAAM,cAAc,oBAAI,IAAI,CAAC,SAAS,QAAQ,MAAM,CAAC;AAOrD,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,uBAAuB;AAAA,QACxB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,eAAeC,OAAM;AACpB,kBAAM,cAAc,WAAW,SAASA,KAAI;AAC5C,kBAAM,WAAW,YAAY,IAAI,IAAI,UAAU;AAE/C,gBAAI,YAAY,SAAS,KAAK,WAAW,GAAG;AAC3C,uBAAS,WAAW,QAAQ,SAAO;AAClC,sBAAM,SAAS,IAAI;AACnB,sBAAM,EAAE,OAAO,IAAI;AACnB,oBAAI;AAEJ,oBAAI,QAAQ;AACX,sBACC,WAAW,OAAO,WACjB,OAAO,SAAS,mBAChB,OAAO,SAAS,mBAChB;AACD,+BAAW;AAAA,kBACZ,WACC,OAAO,SAAS,sBAChB,WAAW,OAAO,UAClB,YAAY;AAAA,oBACX,SAAS,sBAAsB,MAAM;AAAA,kBACtC,GACC;AACD,0BAAM,cACL,OAAO,OAAO,SAAS,oBACpB,OAAO,SACP;AAEJ,wBACC,YAAY,OAAO,SAClB,oBACD,YAAY,OAAO,WAAW,aAC7B;AACD,iCAAW,YAAY;AAAA,oBACxB;AAAA,kBACD;AAAA,gBACD;AAEA,oBAAI,UAAU;AACb,0BAAQ,OAAO;AAAA,oBACd,MAAM;AAAA,oBACN,WAAW;AAAA,kBACZ,CAAC;AAAA,gBACF;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/FA;AAAA,kEAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,oCAAoC,CAAC,UAAU,QAAQ;AAO7D,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,qBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,eAAeC,OAAM;AACpB,kBAAM,cAAc,WAAW,SAASA,KAAI;AAE5C,uBAAW,sBAAsB,mCAAmC;AACnE,oBAAM,WAAW,YAAY,IAAI,IAAI,kBAAkB;AAEvD,kBAAI,YAAY,SAAS,KAAK,WAAW,GAAG;AAC3C,yBAAS,WAAW,QAAQ,SAAO;AAClC,wBAAM,SAAS,IAAI;AACnB,wBAAM,SAAS,OAAO;AAEtB,sBACC,UACA,OAAO,SAAS,mBAChB,OAAO,WAAW,QACjB;AACD,4BAAQ,OAAO;AAAA,sBACd,MAAM;AAAA,sBACN,WAAW;AAAA,sBACX,MAAM,EAAE,MAAM,mBAAmB;AAAA,oBAClC,CAAC;AAAA,kBACF;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrEA;AAAA,mDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,YAAY;AAAA,UACX,SACC;AAAA,UACD,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,cAAcC,OAAM;AACnB,kBAAM,WAAW,SAAS;AAAA,cACzB,WAAW,SAASA,KAAI;AAAA,cACxBA,MAAK,OAAO;AAAA,YACb;AAEA,gBAAI,YAAY,SAAS,YAAY,SAAS,GAAG;AAChD;AAAA,YACD;AAEA,gBAAIA,MAAK,OAAO,SAAS,UAAU;AAClC,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC3EA;AAAA,oDAAAC,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,cAAc;AAAA,QACf;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,cAAcC,OAAM;AACnB,gBACCA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS,WACpB;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClEA;AAAA,mDAAAC,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,aAAa;AAAA,QACd;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,eAAeC,OAAM;AACpB,kBAAM,cAAc,WAAW,SAASA,KAAI;AAC5C,kBAAM,WAAW,YAAY,IAAI,IAAI,QAAQ;AAE7C,gBAAI,YAAY,SAAS,KAAK,WAAW,GAAG;AAC3C,uBAAS,WAAW,QAAQ,SAAO;AAClC,sBAAM,SAAS,IAAI;AACnB,sBAAM,SAAS,OAAO;AAEtB,oBACC,UACA,OAAO,SAAS,mBAChB,OAAO,WAAW,QACjB;AACD,0BAAQ,OAAO;AAAA,oBACd,MAAM;AAAA,oBACN,WAAW;AAAA,kBACZ,CAAC;AAAA,gBACF;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzEA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,EAAE,kBAAkB,IAAI;AAO9B,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,EAAE,WAAW,IAAI;AAEvB,eAAO;AAAA,UACN,cAAcC,OAAM;AACnB,kBAAM,iBAAiB,CAAC,UAAU,UAAU,SAAS;AACrD,kBAAM,EAAE,KAAK,IAAIA,MAAK;AAEtB,gBAAI,eAAe,SAAS,IAAI,GAAG;AAClC,oBAAM,WAAW;AAAA,gBAChB,WAAW,SAASA,KAAI;AAAA,gBACxB;AAAA,cACD;AAEA,kBAAI,YAAY,SAAS,YAAY,WAAW,GAAG;AAClD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM,EAAE,IAAI,KAAK;AAAA,gBAClB,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC7DA;AAAA,gEAAAC,UAAAC,SAAA;AAAA;AAmBA,QAAM,mBAAmB;AAOzB,aAAS,iBAAiB,WAAW;AACpC,aAAO,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,IACnE;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,gBAAgB;AAAA,QAEhB,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,eAAe;AAAA;AAAA,UAGf,UACC;AAAA,UACD,iBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAS3B,iBAAS,iBAAiB,WAAW,OAAO,aAAa;AACxD,iBAAO;AAAA,YACN;AAAA,YACA,MAAM;AAAA,cACL,UAAU,WAAW,QAAQ,EAAE,MAAM,GAAG,KAAK;AAAA,cAC7C;AAAA,YACD;AAAA,YACA,IAAI,OAAO;AACV,qBAAO,MAAM,iBAAiB,OAAO,WAAW;AAAA,YACjD;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,QAAQC,OAAM;AACb,gBAAI,OAAOA,MAAK,UAAU,UAAU;AACnC;AAAA,YACD;AAEA,gBAAI,CAAC,iBAAiB,KAAKA,MAAK,GAAG,GAAG;AACrC;AAAA,YACD;AAEA,kBAAM,QACL;AACD,gBAAIC;AAEJ,mBAAQA,SAAQ,MAAM,KAAKD,MAAK,GAAG,GAAI;AACtC,oBAAM,EAAE,gBAAgB,cAAc,IAAIC,OAAM;AAChD,oBAAM,wBACLD,MAAK,MAAM,CAAC,IAAIC,OAAM,QAAQA,OAAM,CAAC,EAAE;AACxC,oBAAM,0BACL,wBAAwB,cAAc;AACvC,oBAAM,qBAAqB;AAAA,gBAC1B;AAAA,gBACA;AAAA,cACD;AACA,oBAAM,UAAU,CAAC;AAGjB,kBAAI,mBAAmB,OAAO;AAM7B,wBAAQ;AAAA,kBACP;AAAA;AAAA,oBAEC;AAAA,oBACA;AAAA,sBACC,0BACC,eAAe;AAAA,sBAChB;AAAA,oBACD;AAAA,oBACA,GAAG,iBAAiB,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;AAAA,kBAC7C;AAAA,kBACA;AAAA;AAAA,oBAEC;AAAA,oBACA;AAAA,oBACA,iBAAiB,cAAc,CAAC,CAAC;AAAA,kBAClC;AAAA,gBACD;AAAA,cACD,OAAO;AACN,wBAAQ;AAAA,kBACP;AAAA;AAAA,oBAEC;AAAA,oBACA;AAAA,oBACA,cAAc,CAAC;AAAA,kBAChB;AAAA,gBACD;AAAA,cACD;AAEA,sBAAQ;AAAA,gBACP;AAAA;AAAA,kBAEC;AAAA,kBACA;AAAA,kBACA,KAAK,aAAa;AAAA,gBACnB;AAAA,cACD;AAEA,sBAAQ,OAAO;AAAA,gBACd,MAAAD;AAAA,gBACA,KAAK;AAAA,kBACJ,OAAO,WAAW;AAAA,oBACjB;AAAA,kBACD;AAAA,kBACA,KAAK,WAAW;AAAA,oBACf;AAAA,kBACD;AAAA,gBACD;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL;AAAA,gBACD;AAAA,gBACA;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/KA;AAAA,kDAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AACJ,QAAM,kBAAkB,qBAA6B;AAMrD,QAAM,qBAAqB;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAOA,aAAS,kBAAkBC,OAAM;AAChC,UAAIA,MAAK,SAAS,mBAAmB;AACpC,eAAO,kBAAkBA,MAAK,UAAU;AAAA,MACzC;AACA,UAAIA,MAAK,SAAS,oBAAoB;AACrC,eAAO,gBAAgBA,KAAI;AAAA,MAC5B;AACA,aAAOA,MAAK;AAAA,IACb;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,gBAAgB;AAAA,UAChB,mBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,QAAQC,OAAM;AACb,kBAAM,QAAQ,WAAW,SAASA,KAAI;AACtC,kBAAM,UAAU,IAAI,iBAAiB,KAAK;AAC1C,kBAAM,WAAW,CAAC;AAElB,uBAAW,KAAK,oBAAoB;AACnC,uBAAS,CAAC,IAAI;AAAA,gBACb,CAAC,IAAI,GAAG;AAAA,gBACR,CAAC,SAAS,GAAG;AAAA,cACd;AAAA,YACD;AAEA,uBAAW;AAAA,cACV,MAAM;AAAA,cACN,MAAAC;AAAA,YACD,KAAK,QAAQ,wBAAwB,QAAQ,GAAG;AAC/C,oBAAM,OAAO,kBAAkB,QAAQ,MAAM;AAC7C,oBAAM,MAAMA,MAAK,CAAC;AAClB,oBAAM,YACL,SAAS,MAAM,mBAAmB;AAEnC,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN;AAAA,gBACA,MAAM,EAAE,MAAM,IAAI;AAAA,cACnB,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzGA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AAOJ,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,gBAAgB;AAAA,QAEhB,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,eAAe;AAAA,UACf,YAAY;AAAA,UACZ,0BACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAO3B,iBAAS,iBAAiBC,OAAM;AAC/B,cAAI,6BAA6BA,KAAI,GAAG;AACvC,mBAAO;AAAA,UACR;AAEA,gBAAM,YAAY,WAAW,eAAeA,KAAI;AAEhD,cAAI,aAAa,aAAa,SAAS,GAAG;AACzC,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AAOA,iBAAS,MAAMA,OAAM;AACpB,cACCA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS,YACrBA,MAAK,UAAU,QACd;AACD;AAAA,UACD;AAEA,gBAAM,WAAW;AAAA,YAChB,WAAW,SAASA,KAAI;AAAA,YACxB;AAAA,UACD;AAEA,cAAI,YAAY,SAAS,YAAY,WAAW,GAAG;AAClD,gBAAI;AACJ,gBAAI;AACJ,gBAAI,YAAY;AAEhB,gBAAI,iBAAiBA,KAAI,GAAG;AAC3B,4BAAc;AACd,kBAAI,wBAAwB,YAAYA,KAAI,GAAG;AAC9C,0BAAU;AACV,4BAAY;AAAA,cACb,OAAO;AACN,0BAAU;AAAA,cACX;AAAA,YACD,OAAO;AACN,4BAAc,UAAU;AAAA,YACzB;AAEA,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,SAAS;AAAA,gBACR;AAAA,kBACC;AAAA,kBACA,MAAM,EAAE,YAAY;AAAA,kBACpB,KAAK,WAAS,MAAM,YAAYA,OAAM,OAAO;AAAA,gBAC9C;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,gBAAgB;AAAA,UAChB,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC3HA;AAAA,8CAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,SAAS;AAAA,QACV;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,QAAQC,OAAM;AACb,gBAAI,OAAOA,MAAK,UAAU,YAAY,QAAQ,KAAKA,MAAK,GAAG,GAAG;AAC7D,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzCA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,qBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,QAAQC,OAAM;AACb,gBAAI,OAAOA,MAAK,UAAU,UAAU;AACnC;AAAA,YACD;AAGA,kBAAMC,SAAQD,MAAK,IAAI;AAAA,cACtB;AAAA,YACD;AAEA,gBAAIC,QAAO;AACV,sBAAQ,OAAO;AAAA,gBACd,MAAAD;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM,EAAE,UAAUC,OAAM,CAAC,EAAE;AAAA,cAC5B,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpDA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,kBACL;AAGD,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,OAAO;AAAA,oBACN,MAAM,CAAC,KAAK;AAAA,kBACb;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,OAAO;AAAA,oBACN,MAAM,CAAC,IAAI;AAAA,kBACZ;AAAA,kBACA,gCAAgC;AAAA,oBAC/B,MAAM;AAAA,oBACN,OAAO;AAAA,sBACN,MAAM;AAAA,oBACP;AAAA,oBACA,aAAa;AAAA,kBACd;AAAA,kBACA,qCAAqC;AAAA,oBACpC,MAAM;AAAA,oBACN,OAAO;AAAA,sBACN,MAAM;AAAA,oBACP;AAAA,oBACA,aAAa;AAAA,kBACd;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,2BACC;AAAA,UACD,+BACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,QAAQ,QAAQ,QAAQ,CAAC,KAAK,QAAQ,QAAQ,CAAC,EAAE;AACvD,cAAM,gCACJ,QAAQ,QAAQ,CAAC,KACjB,QAAQ,QAAQ,CAAC,EAAE,kCACpB,CAAC;AACF,cAAM,qCACJ,QAAQ,QAAQ,CAAC,KACjB,QAAQ,QAAQ,CAAC,EAAE,uCACpB,CAAC;AACF,cAAM,aAAa,QAAQ;AAO3B,iBAAS,gBAAgB,WAAW;AACnC,cAAIC,QAAO,UAAU;AACrB,cAAI,SAASA,MAAK;AAElB,iBACC,WACC,CAAC,gBAAgB,KAAK,OAAO,IAAI,KACjC,OAAO,SAAS,oBAChB,OAAO,SAAS,mBAChB;AACD,oBAAQ,OAAO,MAAM;AAAA;AAAA,cAEpB,KAAK;AACJ,uBAAO,OAAO,SAASA;AAAA;AAAA,cAGxB,KAAK;AACJ,uBAAO;AAAA;AAAA,cAGR,KAAK;AACJ,oBAAI,OAAO,aAAa,UAAU;AACjC,yBAAO;AAAA,gBACR;AACA;AAAA;AAAA,cAGD,KAAK;AAAA,cACL,KAAK;AACJ,oBAAI,OAAO,SAASA,OAAM;AACzB,yBAAO;AAAA,gBACR;AAGA,uBAAO;AAAA;AAAA,cAGR,KAAK;AACJ,oBAAI,OAAO,WAAWA,OAAM;AAC3B,yBAAO;AAAA,gBACR;AACA;AAAA;AAAA,cAGD,KAAK;AACJ,oBAAI,OAAO,aAAaA,OAAM;AAC7B,yBAAO;AAAA,gBACR;AACA;AAAA;AAAA,cAGD,KAAK;AACJ,oBAAI,OAAO,QAAQA,OAAM;AACxB,yBAAO;AAAA,gBACR;AAEA;AAAA;AAAA,cAGD,KAAK;AACJ,oBAAI,OAAO,SAASA,OAAM;AACzB,yBAAO;AAAA,gBACR;AAEA;AAAA,YAGF;AAEA,YAAAA,QAAO;AACP,qBAASA,MAAK;AAAA,UACf;AAEA,iBAAO;AAAA,QACR;AAUA,iBAAS,4BAA4B,gBAAgB;AACpD,iBACC,8BAA8B,SAAS,cAAc,KACrD,mCAAmC;AAAA,YAAK,aACvC,IAAI,OAAO,SAAS,GAAG,EAAE,KAAK,cAAc;AAAA,UAC7C;AAAA,QAEF;AASA,iBAAS,eAAe,WAAWC,QAAO,YAAY;AACrD,gBAAM,aAAa,UAAU;AAE7B,cACC,cACA,CAAC,UAAU;AAAA;AAAA;AAAA;AAAA,WAKVA,WAAU,KAAK,WAAWA,SAAQ,CAAC,EAAE,eAAe,aACpD;AACD,gBAAI,UAAU,QAAQ,GAAG;AACxB,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,MAAM,EAAE,MAAM,WAAW,KAAK;AAAA,cAC/B,CAAC;AAAA,YACF,WACC,SACA,gBAAgB,SAAS,KACzB,CAAC,4BAA4B,WAAW,IAAI,GAC3C;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,MAAM,EAAE,MAAM,WAAW,KAAK;AAAA,cAC/B,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,cAAc,UAAU;AAChC,cAAI,SAAS,KAAK,CAAC,EAAE,SAAS,aAAa;AAC1C,qBAAS,WAAW,QAAQ,cAAc;AAAA,UAC3C;AAAA,QACD;AAOA,iBAAS,iBAAiBD,OAAM;AAC/B,qBAAW,qBAAqBA,KAAI,EAAE,QAAQ,aAAa;AAAA,QAC5D;AAEA,eAAO;AAAA;AAAA,UAEN,4BAA4B;AAAA,UAC5B,2BAA2B;AAAA,UAC3B,gCAAgC;AAAA,QACjC;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACvPA;AAAA,oDAAAE,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,kBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,UAAU;AAMhB,eAAO;AAAA,UACN,iBAAiBC,OAAM;AACtB,kBAAM,OAAOA,MAAK,MACjB,QAAQA,MAAK;AAEd,gBACCA,MAAK,aAAa,QAChB,KAAK,SAAS,gBAAgB,QAAQ,KAAK,KAAK,IAAI,KACpD,MAAM,SAAS,gBACf,QAAQ,KAAK,MAAM,IAAI,IACxB;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC9EA;AAAA,iDAAAC,UAAAC,SAAA;AAAA;AAiBA,aAAS,qBAAqBC,OAAM;AACnC,YAAM,SAASA,MAAK;AAEpB,aAAO,OAAO,SAAS,kBAAkB,OAAO,WAAWA;AAAA,IAC5D;AAYA,aAAS,sBAAsBA,OAAM;AACpC,YAAM,SAASA,MAAK;AAEpB,UAAI,OAAO,SAAS,sBAAsB;AACzC,eAAO,sBAAsB,MAAM;AAAA,MACpC;AAEA,aAAO,qBAAqBA,KAAI;AAAA,IACjC;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,2BAA2B;AAAA,UAC5B;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,2BAA2B;AAAA,gBAC1B,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,0BAA0B,CAAC,IAAI,QAAQ;AAEhD,eAAO;AAAA,UACN,iBAAiBC,OAAM;AACtB,gBAAI,6BAA6B,sBAAsBA,KAAI,GAAG;AAC7D;AAAA,YACD;AAEA,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,UAAUA,MAAK;AAAA,cAChB;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrGA;AAAA,oDAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,sBAAsB;AAAA,QACvB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,iBAAiBC,OAAM;AACtB,kBAAM,aAAaA,MAAK,OAAO,MAC9B,eAAeA,MAAK,SAAS;AAE9B,gBACC,eAAe,aACf,CAACA,MAAK,YACN,gBACA,iBAAiB,OAChB;AACD,sBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,uBAAuB,CAAC;AAAA,YAC3D;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnEA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAKf,eAAO;AAAA,UACN,4FACCC,OACC;AACD,oBAAQ,OAAO;AAAA,cACd,MAAMA,MAAK;AAAA,cACX,WAAW;AAAA,YACZ,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClEA;AAAA,gEAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAMjB,QAAM,uBAAuB,oBAAI,IAAI;AAAA,MACpC;AAAA,MACA;AAAA,IACD,CAAC;AAQD,aAAS,kBAAkBC,OAAM,YAAY;AAC5C,YAAM,SAASA,MAAK;AAEpB,aACC,OAAO,SAAS,mBAChB,OAAO,UAAU,CAAC,MAAMA,SACxB,OAAO,OAAO,SAAS,gBACvB,OAAO,OAAO,SAAS,aACvB,WAAW,kBAAkB,OAAO,MAAM;AAAA,IAE5C;AAOA,aAAS,iBAAiBA,OAAM;AAC/B,aAAOA,MAAK,SAAS,qBAAqBA,MAAK,aAAa;AAAA,IAC7D;AASA,aAAS,iBAAiB,YAAYA,OAAM,OAAO;AAClD,YAAM;AAAA;AAAA,QAEL,SAAS,cAAcA,KAAI,IAC1B,SAAS,cAAc;AAAA,UACtB,MAAM;AAAA,UACN,UAAU;AAAA,QACX,CAAC;AAAA,QAEF,CAAC,SAAS,gBAAgB,YAAYA,KAAI;AAAA;AAG3C,YAAM,qBAAqB,WAAW;AAAA,QACrCA;AAAA,QACAA,MAAK,OAAO,SAAS,4BAClB,SAAS;AAAA;AAAA,UAEV,WAAS,MAAM,SAAS,aAAa,MAAM,UAAU;AAAA;AAAA,MACxD;AAEA,YAAM,aAAa,WAAW,cAAc,kBAAkB;AAE9D,YAAM;AAAA;AAAA,QAEL,mBAAmB,UAAU;AAAA,QAE7B,mBAAmB,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC;AAAA;AAEnD,aAAO;AAAA,QACN,MAAM;AAAA,UACL;AAAA,UACA,GAAG,eAAe,MAAM,EAAE,QAAQ,iBAAiB,MAAM,EAAE;AAAA,QAC5D;AAAA,QACA,MAAM,gBAAgBA,OAAM,iBAAiB,MAAM,EAAE;AAAA,MACtD;AAAA,IACD;AASA,aAAS,eAAe,YAAYA,OAAM,OAAO;AAEhD,YAAM,aAAa,WAAW;AAAA,QAC7BA,MAAK;AAAA,QACL,SAAS;AAAA,MACV;AACA,YAAM,aAAa,WAAW,cAAc,UAAU;AACtD,YAAM,YAAY,WAAW,aAAaA,KAAI;AAE9C,aAAO;AAAA,QACN,MAAM,iBAAiB,YAAY,GAAG;AAAA,QACtC,MAAM,gBAAgB,WAAW,GAAG;AAAA,MACrC;AAAA,IACD;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,WAAW;AAAA,UACZ;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,gBAAgB;AAAA,QAEhB,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,WAAW;AAAA,gBACV,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,cACC;AAAA;AAAA,UAGD,aAAa;AAAA;AAAA,UAGb,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,YAAI,WAAW;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,CAAC,EAAE,UAAU,CAAC,IAAI,QAAQ;AAEhC,eAAO;AAAA,UACN,gBAAgB,GAAGC,OAAM;AACxB,uBAAW;AAAA,cACV,OAAO;AAAA,cACP,aACC,qBAAqB,IAAIA,MAAK,IAAI,KAClC,kBAAkBA,OAAM,UAAU;AAAA,YACpC;AAEA;AAAA;AAAA,cAEC,SAAS,eACTA,MAAK,SAAS,6BACdA,MAAK;AAAA,cAEL,EAAE,aAAa,iBAAiBA,MAAK,IAAI;AAAA,cACxC;AACD,oBAAM,UAAU,CAAC;AAGjB,kBAAI,WAAW;AACd,wBAAQ,KAAK;AAAA,kBACZ,WAAW;AAAA,kBACX,IAAI,OAAO;AACV,2BAAO;AAAA,sBACN;AAAA,sBACAA,MAAK;AAAA,sBACL;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF;AAGA,kBACC,EACCA,MAAK,KAAK,SAAS,wBACnB,CAACA,MAAK,KAAK,KAEX;AACD,wBAAQ,KAAK;AAAA,kBACZ,WAAW;AAAA,kBACX,IAAI,OAAO;AACV,2BAAO,eAAe,YAAYA,OAAM,KAAK;AAAA,kBAC9C;AAAA,gBACD,CAAC;AAAA,cACF;AAEA,sBAAQ,OAAO;AAAA,gBACd,MAAMA,MAAK;AAAA,gBACX,WAAW;AAAA,gBACX;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,UAEA,gBAAgB;AACf,uBAAW,SAAS;AAAA,UACrB;AAAA,UAEA,gBAAgBA,OAAM;AACrB,gBAAI,EAAE,SAAS,eAAeA,MAAK,WAAW;AAC7C;AAAA,YACD;AAGA,gBAAI,CAAC,WAAW;AACf,sBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,eAAe,CAAC;AAClD;AAAA,YACD;AAEA,gBAAI,iBAAiBA,MAAK,QAAQ,GAAG;AACpC;AAAA,YACD;AAGA,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,SAAS;AAAA,gBACR;AAAA,kBACC,WAAW;AAAA,kBACX,IAAI,OAAO;AACV,2BAAO;AAAA,sBACN;AAAA,sBACAA,MAAK;AAAA,sBACL;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACvQA;AAAA,8CAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,EAAE,sBAAsB,IAAI;AAOlC,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,iBAAiBC,OAAM;AACtB,gBAAI,sBAAsBA,KAAI,MAAM,aAAa;AAChD,sBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,kBAAkB,CAAC;AAAA,YACtD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5CA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAgBjB,aAAS,gBAAgBC,OAAM;AAC9B,UAAI;AAEJ,UAAIA,MAAK,SAAS,oBAAoB;AACrC,mBAAWA,MAAK;AAAA,MACjB,WAAWA,MAAK,SAAS,kBAAkB;AAC1C,mBAAWA,MAAK;AAAA,MACjB,OAAO;AACN,eAAO;AAAA,MACR;AACA,UAAIA,MAAK,UAAU;AAClB,eAAO;AAAA,MACR;AACA,aAAO,gBAAgB,QAAQ;AAAA,IAChC;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,gBAAgB;AAAA,QAEhB,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,kBACC;AAAA,UACD,qBAAqB;AAAA,QACtB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,mBAAmB,oBAAI,IAAI;AAAA,UAChC;AAAA,UACA;AAAA,UACA;AAAA,QACD,CAAC;AAOD,iBAAS,iBAAiBC,OAAM;AAC/B,gBAAM,SAAS,SAAS,oBAAoBA,MAAK,MAAM;AAEvD,cAAI,OAAO,SAAS,oBAAoB;AACvC;AAAA,UACD;AAEA,gBAAM,WAAW,SAAS,sBAAsB,MAAM;AAEtD,cAAI,aAAa,QAAQ,iBAAiB,IAAI,QAAQ,GAAG;AACxD,oBAAQ,OAAO;AAAA,cACd,WAAW;AAAA,cACX,KAAK,OAAO,SAAS;AAAA,cACrB,MAAM,EAAE,MAAM,SAAS;AAAA,cACvB,MAAAA;AAAA,cACA,SAAS;AAAA,gBACR;AAAA,kBACC,WAAW;AAAA,kBACX,MAAM,EAAE,MAAM,SAAS;AAAA,kBACvB,IAAI,OAAO;AACV,0BAAM,aAAa,QAAQ;AAM3B,wBAAI,gBAAgBA,KAAI,GAAG;AAC1B,6BAAO;AAAA,oBACR;AAMA,wBAAIA,MAAK,OAAO,SAAS,mBAAmB;AAC3C,6BAAO;AAAA,oBACR;AAEA,0BAAM,iBACL,SAAS;AAAA,sBACR,WAAW,SAASA,KAAI;AAAA,sBACxB;AAAA,oBACD;AAMD,wBACC,CAAC,kBACD,eAAe,MAAM,SAAS,YAC9B,eAAe,KAAK,SAAS,GAC5B;AACD,6BAAO;AAAA,oBACR;AAEA,wBAAI,aAAa,WAAW;AAAA,sBAC3B,OAAO;AAAA,oBACR;AAEA,wBACC,SAAS,cAAc,OAAO,MAAM,KACpC,SAAS,cAAc;AAAA,sBACtB,MAAM;AAAA,oBACP,CAAC,GACA;AACD,mCAAa,IAAI,UAAU;AAAA,oBAC5B;AAEA,0BAAM,iBAAiB,WAAW;AAAA,sBACjCA,MAAK;AAAA,sBACL,SAAS;AAAA,oBACV;AACA,0BAAM,oBACLA,MAAK,UAAU,WAAW;AAC3B,0BAAM,QAAQ,oBAAoB,KAAK;AACvC,0BAAM,QAAQ;AAAA,sBACb,MAAM;AAAA,wBACL;AAAA,wBACA,oBAAoB,QAAQ;AAAA,sBAC7B;AAAA,sBACA,MAAM;AAAA,wBACL;AAAA,wBACA,aAAa;AAAA,sBACd;AAAA,oBACD;AAEA,2BAAO;AAAA,kBACR;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpLA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,EAAE,gBAAgB,KAAK,CAAC;AAAA,QAEzC,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,UAAU;AAAA,UACT,YAAY;AAAA,UACZ,qBACC;AAAA,UACD,oBACC;AAAA,QACF;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,gBAAgB,EAAE,MAAM,UAAU;AAAA,YACnC;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,eAAe,CAAC,IAAI,QAAQ;AACrC,cAAM,aAAa,QAAQ;AAO3B,kBAAU,oBAAoB,UAAU;AACvC,cACC,mBACC,SAAS,gCAAgC,cACzC,SAAS,gCAAgC,aACzC;AACD,kBAAM,EAAE,MAAM,UAAU;AAAA,UACzB;AAEA,qBAAW,MAAM,SAAS,aAAa;AACtC,kBAAM,EAAE,MAAM,UAAU,MAAM,IAAI,KAAK,GAAG,IAAI;AAAA,UAC/C;AAEA,cAAI,SAAS,8BAA8B;AAC1C,uBAAW,WAAW,SAAS,8BAA8B;AAC5D,oBAAM;AAAA,gBACL,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,KAAK,SAAS;AAAA,kBACb;AAAA,kBACA;AAAA,kBACA,SAAS;AAAA,gBACV;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAQA,iBAAS,qBAAqB,OAAO;AACpC,qBAAW,YAAY,MAAM,WAAW;AACvC,kBAAM,CAAC,aAAa,GAAG,iBAAiB,IACvC,oBAAoB,QAAQ;AAE7B,gBAAI,kBAAkB,WAAW,GAAG;AACnC;AAAA,YACD;AAOA,kBAAM,kBACL,YAAY,SAAS,YAClB,wBACA;AACJ,kBAAM,OAAO,EAAE,IAAI,SAAS,KAAK;AAGjC,uBAAW,EAAE,MAAM,MAAAC,OAAM,IAAI,KAAK,mBAAmB;AACpD,oBAAM,YACL,SAAS,YAAY,OAClB,eACA;AAEJ,sBAAQ,OAAO,EAAE,MAAAA,OAAM,KAAK,WAAW,KAAK,CAAC;AAAA,YAC9C;AAAA,UACD;AAAA,QACD;AAQA,iBAAS,cAAcA,OAAM;AAC5B,gBAAM,QAAQ,WAAW,SAASA,KAAI;AAMtC,cAAI,MAAM,UAAUA,OAAM;AACzB,iCAAqB,KAAK;AAAA,UAC3B;AAAA,QACD;AAEA,eAAO;AAAA,UACN,QAAQA,OAAM;AACb,kBAAM,QAAQ,WAAW,SAASA,KAAI;AAEtC,iCAAqB,KAAK;AAG1B,gBACC,MAAM,SAAS,YACf,MAAM,YAAY,CAAC;AAAA,YAEnB,MAAM,UAAU,MAAM,YAAY,CAAC,EAAE,OACpC;AACD,mCAAqB,MAAM,YAAY,CAAC,CAAC;AAAA,YAC1C;AAAA,UACD;AAAA,UAEA,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,UACpB,yBAAyB;AAAA,UAEzB,aAAa;AAAA,UAEb,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5KA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AACjB,QAAM,UAAU;AAMhB,QAAM,eAAe,IAAI,QAAQ,aAAa;AAC9C,QAAM,eAAe;AAQrB,aAASC,UAASC,OAAM;AACvB,aAAOA,SAAQA,MAAK,SAAS,aAAa,OAAOA,MAAK,UAAU;AAAA,IACjE;AAOA,IAAAF,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,SAAS;AAAA,QAET,UAAU;AAAA,UACT,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAY3B,iBAAS,WACR,cACA,SACA,YACA,sBACA,OACC;AAED,cAAI,CAAC,aAAa,KAAK,UAAU,GAAG;AACnC;AAAA,UACD;AAEA,gBAAM,sBAAsB,CAAC;AAC7B,cAAI;AAEJ,cAAI;AACH,wBAAY,aAAa;AAAA,cACxB;AAAA,cACA;AAAA,cACA,QAAQ;AAAA,cACR;AAAA,gBACC,SAAS,MAAM,SAAS,GAAG;AAAA,gBAC3B,aAAa,MAAM,SAAS,GAAG;AAAA,cAChC;AAAA,YACD;AAAA,UACD,QAAQ;AAEP;AAAA,UACD;AAEA,kBAAQ,eAAe,WAAW;AAAA,YACjC,sBAAsB,QAAQ;AAC7B,kCAAoB,KAAK,MAAM;AAAA,YAChC;AAAA,UACD,CAAC;AAED,gBAAM,gBAAgB;AACtB,cAAIG;AAEJ,iBAAQA,SAAQ,cAAc,KAAK,OAAO,GAAI;AAC7C,kBAAM;AAAA,cACL,GAAG,EAAE,OAAO;AAAA,cACZ,OAAAC;AAAA,YACD,IAAID;AAGJ,gBACC,oBAAoB;AAAA,cACnB,CAAC,EAAE,OAAO,IAAI,MAAMC,SAAQ,SAAS,OAAOA;AAAA,YAC7C,GACC;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,MAAM,EAAE,OAAO;AAAA,gBACf,IAAI,OAAO;AACV,sBAAI,YAAY,YAAY;AAC3B,2BAAO;AAAA,kBACR;AACA,yBAAO,MAAM;AAAA,oBACZ;AAAA,sBACC,uBAAuBA;AAAA,sBACvB,uBAAuBA,SAAQ;AAAA,oBAChC;AAAA,oBACA,KAAK,MAAM;AAAA,kBACZ;AAAA,gBACD;AAAA,cACD,CAAC;AAGD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAQA,iBAAS,aAAaF,OAAM;AAC3B,cAAIA,MAAK,OAAO;AACf,kBAAM,UAAUA,MAAK,MAAM;AAC3B,kBAAM,aAAaA,MAAK,IAAI,MAAM,GAAGA,MAAK,IAAI,YAAY,GAAG,CAAC;AAC9D,kBAAM,uBAAuBA,MAAK,MAAM,CAAC,IAAI;AAC7C,kBAAM,QAAQA,MAAK,MAAM;AAEzB;AAAA,cACCA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAQA,iBAAS,cAAcA,OAAM;AAC5B,gBAAM,QAAQ,WAAW,SAASA,KAAI;AACtC,gBAAM,YAAY,SAAS,kBAAkB,OAAO,QAAQ;AAC5D,gBAAM,WAAW,aAAa,UAAU,KAAK,SAAS;AACtD,gBAAM,cAAcA,MAAK,UAAU,CAAC;AAEpC,cACCA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS,YACrBD,UAAS,WAAW,KACpB,CAAC,UACA;AACD,kBAAM,UAAU,YAAY;AAC5B,kBAAM,aAAa,YAAY,IAAI,MAAM,GAAG,EAAE;AAC9C,kBAAM,uBAAuB,YAAY,MAAM,CAAC,IAAI;AACpD,gBAAI;AAEJ,gBAAIC,MAAK,UAAU,SAAS,GAAG;AAE9B,sBAAQ;AAAA,YACT,OAAO;AACN,oBAAM,YAAYA,MAAK,UAAU,CAAC;AAElC,kBAAID,UAAS,SAAS,GAAG;AACxB,wBAAQ,UAAU;AAAA,cACnB,OAAO;AAEN;AAAA,cACD;AAAA,YACD;AAEA;AAAA,cACCC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,SAAS;AAAA,UACT,gBAAgB;AAAA,UAChB,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1NA;AAAA,2DAAAG,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,wBAAwB;AAAA,oBACvB,MAAM;AAAA,oBACN,OAAO;AAAA,sBACN,MAAM;AAAA,oBACP;AAAA,oBACA,aAAa;AAAA,kBACd;AAAA,kBACA,+BAA+B,EAAE,MAAM,SAAS;AAAA,gBACjD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,wBAAwB;AAAA,oBACvB,MAAM;AAAA,oBACN,OAAO;AAAA,sBACN,MAAM;AAAA,sBACN,SAAS;AAAA,oBACV;AAAA,oBACA,aAAa;AAAA,kBACd;AAAA,kBACA,+BAA+B,EAAE,MAAM,SAAS;AAAA,kBAChD,wBAAwB;AAAA,oBACvB,MAAM;AAAA,oBACN,YAAY;AAAA;AAAA,sBAEX,QAAQ;AAAA,wBACP,MAAM;AAAA,sBACP;AAAA;AAAA,sBAGA,OAAO;AAAA,wBACN,MAAM;AAAA,sBACP;AAAA;AAAA,sBAGA,aAAa;AAAA,wBACZ,MAAM;AAAA,sBACP;AAAA;AAAA,sBAGA,WAAW;AAAA,wBACV,MAAM;AAAA,sBACP;AAAA;AAAA,sBAGA,eAAe;AAAA,wBACd,MAAM;AAAA,sBACP;AAAA,oBACD;AAAA,oBACA,sBAAsB;AAAA,kBACvB;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,CAAC,CAAC;AAAA,QAEnB,UAAU;AAAA,UACT,iBACC;AAAA,UACD,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM;AAAA,UACL;AAAA,UACA,+BAA+B;AAAA,UAC/B;AAAA,QACD,IAAI,QAAQ,QAAQ,CAAC;AACrB,cAAM,kBAAkB,IAAI,IAAI,sBAAsB;AACtD,cAAM,aAAa,QAAQ;AAO3B,iBAAS,kBAAkBC,OAAM;AAChC,gBAAM,OAAO,SAAS,oBAAoBA,KAAI;AAE9C,cAAI,+BAA+B;AAEnC,cAAI,yBAAyB,SAAS,WAAW;AAChD,kBAAM,eAAe,IAAI,OAAO,uBAAuB,GAAG;AAE1D,2CAA+B,aAAa,KAAK,IAAI;AAAA,UACtD;AAEA,cAAI,gCAAgC,gBAAgB,IAAI,IAAI,GAAG;AAC9D,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM,EAAE,KAAK;AAAA,YACd,CAAC;AACD;AAAA,UACD;AAEA,cAAI,SAAS,WAAW;AACvB,gBAAIA,MAAK,OAAO,SAAS,wBAAwB;AAChD,kBACC,0BACA,uBAAuB,eACtB;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,gBACZ,CAAC;AAAA,cACF;AAAA,YACD,OAAO;AAEN,oBAAM,oBAAoB,CAAC,CAACA,MAAK,OAAO,OAAO;AAC/C,oBAAM,qBAAqB,SAAS;AAAA,gBACnCA,MAAK,OAAO;AAAA,cACb;AAEA,kBACC,CAAC,qBACD,0BACA,uBAAuB,OACtB;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,gBACZ,CAAC;AACD;AAAA,cACD;AAEA,kBAAI,qBAAqB,wBAAwB;AAChD,oBACE,uBAAuB,aACvB,uBAAuB,eACvB,uBAAuB,aACvB,uBAAuB,WACvB;AACD,0BAAQ,OAAO;AAAA,oBACd,MAAAA;AAAA,oBACA,WAAW;AAAA,kBACZ,CAAC;AAAA,gBACF;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,qBAAqBA,OAAM;AAC1B,gBAAIA,MAAK,UAAU;AAClB,gCAAkBA,MAAK,QAAQ;AAAA,YAChC;AAAA,UACD;AAAA,UAEA,yBAAyBA,OAAM;AAC9B,gBAAI,0BAA0B,uBAAuB,QAAQ;AAC5D,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,UAEA,uBAAuBA,OAAM;AAC5B,kBAAM,cAAcA,MAAK;AAEzB,gBAAI,aAAa;AAChB,kBACC,YAAY,SAAS,yBACrB,YAAY,SAAS,oBACpB;AACD,kCAAkB,YAAY,EAAE;AAAA,cACjC,WAAW,YAAY,SAAS,uBAAuB;AACtD,2BACE,qBAAqB,WAAW,EAChC;AAAA,kBAAI,OACJ,EAAE,KAAK,KAAK,OAAK,EAAE,WAAW,WAAW;AAAA,gBAC1C,EACC,IAAI,OAAK,EAAE,IAAI,EACf,QAAQ,iBAAiB;AAAA,cAC5B;AAAA,YACD,OAAO;AACN,cAAAA,MAAK,WACH,IAAI,OAAK,EAAE,QAAQ,EACnB,QAAQ,iBAAiB;AAAA,YAC5B;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClOA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAMjB,QAAM,aAAa,oBAAI,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAED,QAAM,iBAAiB,oBAAI,IAAI,CAAC,cAAc,QAAQ,QAAQ,CAAC;AAM/D,QAAM,iBAAiB;AAAA,MACtB,MAAM;AAAA,MACN,OAAO;AAAA,QACN,OAAO;AAAA,UACN;AAAA,YACC,MAAM;AAAA,UACP;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,MAAM,EAAE,MAAM,SAAS;AAAA,cACvB,SAAS,EAAE,MAAM,SAAS;AAAA,YAC3B;AAAA,YACA,UAAU,CAAC,MAAM;AAAA,YACjB,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,MACD;AAAA,MACA,aAAa;AAAA,MACb,UAAU;AAAA,IACX;AAGA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP,OAAO;AAAA,YACN;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,SAAS;AAAA,oBACT,mBAAmB;AAAA,sBAClB,MAAM;AAAA,oBACP;AAAA,oBACA,eAAe;AAAA,sBACd,MAAM;AAAA,sBACN,OAAO;AAAA,wBACN,MAAM;AAAA,sBACP;AAAA,sBACA,aAAa;AAAA,oBACd;AAAA,kBACD;AAAA,kBACA,UAAU,CAAC,SAAS;AAAA,kBACpB,sBAAsB;AAAA,gBACvB;AAAA,cACD;AAAA,cACA,iBAAiB;AAAA,YAClB;AAAA,UACD;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,gBAAgB;AAAA;AAAA,UAEhB,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,EAAE,YAAY,QAAQ,IAAI;AAEhC,cAAM,kBACL,OAAO,QAAQ,CAAC,MAAM,YACtB,OAAO,OAAO,QAAQ,CAAC,GAAG,SAAS;AAEpC,cAAM,oBAAoB,kBACvB,QAAQ,CAAC,EAAE,UACX;AACH,cAAM,oBAAoB,kBACvB,QAAQ,CAAC,EAAE,oBACX;AACH,cAAM,oBAAoB,kBACvB,QAAQ,CAAC,EAAE,iBAAiB,CAAC,IAC7B,CAAC;AAEJ,cAAM,gBAAgB,oBAAI,IAAI;AAAA,UAC7B,GAAG;AAAA,UACH,GAAG;AAAA,QACJ,CAAC;AAGD,YAAI,kBAAkB,WAAW,GAAG;AACnC,iBAAO,CAAC;AAAA,QACT;AAEA,cAAM,2BAA2B,kBAAkB;AAAA,UAClD,CAAC,MAAM,WAAW;AACjB,gBAAI,OAAO,WAAW,UAAU;AAC/B,mBAAK,MAAM,IAAI;AAAA,YAChB,OAAO;AACN,mBAAK,OAAO,IAAI,IAAI,OAAO;AAAA,YAC5B;AAEA,mBAAO;AAAA,UACR;AAAA,UACA,CAAC;AAAA,QACF;AAQA,iBAAS,gBAAgB,WAAW;AACnC,gBAAM,OAAO,UAAU,WAAW,MACjC,gBAAgB,yBAAyB,IAAI,GAC7C,YAAY,gBAAgB,kBAAkB;AAE/C,kBAAQ,OAAO;AAAA,YACd,MAAM,UAAU;AAAA,YAChB;AAAA,YACA,MAAM;AAAA,cACL;AAAA,cACA;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,aAAa,MAAM;AAC3B,iBAAO,OAAO,OAAO,0BAA0B,IAAI;AAAA,QACpD;AAQA,iBAAS,gBAAgB,WAAW;AACnC,gBAAM,SAAS,UAAU,WAAW;AAEpC,iBAAO,WAAW,IAAI,OAAO,IAAI;AAAA,QAClC;AAEA,eAAO;AAAA,UACN,QAAQC,OAAM;AACb,kBAAM,QAAQ,WAAW,SAASA,KAAI;AAGtC,kBAAM,UAAU,QAAQ,cAAY;AACnC,kBAAI,CAAC,SAAS,KAAK,UAAU,aAAa,SAAS,IAAI,GAAG;AACzD,yBAAS,WAAW,QAAQ,eAAa;AACxC,sBAAI,CAAC,gBAAgB,SAAS,GAAG;AAChC,oCAAgB,SAAS;AAAA,kBAC1B;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD,CAAC;AAGD,kBAAM,QAAQ,QAAQ,eAAa;AAClC,kBACC,aAAa,UAAU,WAAW,IAAI,KACtC,CAAC,gBAAgB,SAAS,GACzB;AACD,gCAAgB,SAAS;AAAA,cAC1B;AAAA,YACD,CAAC;AAAA,UACF;AAAA,UAEA,eAAeA,OAAM;AACpB,gBAAI,CAAC,mBAAmB;AACvB;AAAA,YACD;AAEA,kBAAM,cAAc,WAAW,SAASA,KAAI;AAC5C,0BAAc,QAAQ,sBAAoB;AACzC,oBAAM,WAAW,SAAS;AAAA,gBACzB;AAAA,gBACA;AAAA,cACD;AAEA,kBAAI,CAAC,UAAU;AACd;AAAA,cACD;AAEA,uBAAS,WAAW,QAAQ,eAAa;AACxC,sBAAM,aAAa,UAAU;AAC7B,oBAAI,SAAS,WAAW;AAGxB,uBACC,SAAS;AAAA,kBACR;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD,GACC;AACD,2BAAS,OAAO;AAAA,gBACjB;AAEA,sBAAM,eACL,SAAS,sBAAsB,MAAM;AACtC,oBAAI,gBAAgB,aAAa,YAAY,GAAG;AAC/C,wBAAM,gBACL,yBAAyB,YAAY;AACtC,wBAAM,YAAY,gBACf,kBACA;AAEH,0BAAQ,OAAO;AAAA,oBACd,MAAM,OAAO;AAAA,oBACb;AAAA,oBACA,MAAM;AAAA,sBACL,MAAM;AAAA,sBACN;AAAA,oBACD;AAAA,kBACD,CAAC;AAAA,gBACF;AAAA,cACD,CAAC;AAAA,YACF,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxQA;AAAA,iCAAAC,UAAAC,SAAA;AACA,aAAS,UAAW,SAAS;AAC3B,aAAO,MAAM,QAAQ,OAAO,IACxB,UACA,CAAC,OAAO;AAAA,IACd;AAEA,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,SAAS;AACf,QAAM,wBAAwB;AAC9B,QAAM,mCAAmC;AACzC,QAAM,4CAA4C;AAClD,QAAM,qCAAqC;AAC3C,QAAM,sBAAsB;AAM5B,QAAM,0BAA0B;AAEhC,QAAM,QAAQ;AAGd,QAAI,iBAAiB;AAErB,QAAI,OAAO,WAAW,aAAa;AACjC,uBAAiB,uBAAO,IAAI,aAAa;AAAA,IAC3C;AACA,QAAM,aAAa;AAEnB,QAAMC,UAAS,CAAC,QAAQ,KAAKC,WAC3B,OAAO,eAAe,QAAQ,KAAK,EAAC,OAAAA,OAAK,CAAC;AAE5C,QAAM,qBAAqB;AAE3B,QAAM,eAAe,MAAM;AAI3B,QAAM,gBAAgB,WAAS,MAAM;AAAA,MACnC;AAAA,MACA,CAACC,QAAO,MAAM,OAAO,KAAK,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,IACtDA,SAGA;AAAA,IACN;AAGA,QAAM,sBAAsB,aAAW;AACrC,YAAM,EAAC,OAAM,IAAI;AACjB,aAAO,QAAQ,MAAM,GAAG,SAAS,SAAS,CAAC;AAAA,IAC7C;AAaA,QAAM,YAAY;AAAA,MAEhB;AAAA;AAAA;AAAA;AAAA,QAIE;AAAA,QACA,MAAM;AAAA,MACR;AAAA;AAAA,MAGA;AAAA;AAAA;AAAA;AAAA;AAAA,QAKE;AAAA,QACA,CAAC,GAAG,IAAI,OAAO,MACb,GAAG,QAAQ,IAAI,MAAM,IACjB,QACA;AAAA,MAER;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA,QACE;AAAA,QACA,CAAC,GAAG,OAAO;AACT,gBAAM,EAAC,OAAM,IAAI;AACjB,iBAAO,GAAG,MAAM,GAAG,SAAS,SAAS,CAAC,IAAI;AAAA,QAC5C;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAmBA;AAAA,QACE;AAAA,QACA,CAAAA,WAAS,KAAKA,MAAK;AAAA,MACrB;AAAA,MAEA;AAAA;AAAA,QAEE;AAAA,QACA,MAAM;AAAA,MACR;AAAA;AAAA,MAGA;AAAA;AAAA;AAAA;AAAA,QAKE;AAAA,QACA,MAAM;AAAA,MACR;AAAA;AAAA,MAGA;AAAA,QACE;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOE;AAAA;AAAA,QAGA,MAAM;AAAA,MACR;AAAA;AAAA,MAGA;AAAA;AAAA;AAAA;AAAA,QAIE;AAAA,QACA,SAAS,mBAAoB;AAE3B,iBAAO,CAAC,UAAU,KAAK,IAAI,IAavB,cAIA;AAAA,QACN;AAAA,MACF;AAAA;AAAA,MAGA;AAAA;AAAA,QAEE;AAAA;AAAA;AAAA;AAAA,QAMA,CAAC,GAAGC,QAAO,QAAQA,SAAQ,IAAI,IAAI,SAO/B,oBAMA;AAAA,MACN;AAAA;AAAA,MAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOE;AAAA;AAAA;AAAA,QAIA,CAAC,GAAG,IAAI,OAAO;AAMb,gBAAM,YAAY,GAAG,QAAQ,SAAS,SAAS;AAC/C,iBAAO,KAAK;AAAA,QACd;AAAA,MACF;AAAA,MAEA;AAAA;AAAA;AAAA;AAAA,QAIE;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MAEA;AAAA;AAAA,QAEE;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MAEA;AAAA;AAAA;AAAA;AAAA,QAKE;AAAA,QACA,CAACD,QAAO,YAAY,OAAO,WAAWE,WAAU,eAAe,SAE3D,MAAM,KAAK,GAAG,oBAAoB,SAAS,CAAC,GAAGA,MAAK,KACpDA,WAAU,MACR,UAAU,SAAS,MAAM,IAIvB,IAAI,cAAc,KAAK,CAAC,GAAG,SAAS,MAGpC,OACF;AAAA,MACR;AAAA;AAAA,MAGA;AAAA;AAAA;AAAA,QAGE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAcA,CAAAF,WAAS,MAAM,KAAKA,MAAK,IAErB,GAAGA,MAAK,MAER,GAAGA,MAAK;AAAA,MACd;AAAA;AAAA,MAGA;AAAA,QACE;AAAA,QACA,CAAC,GAAG,OAAO;AACT,gBAAM,SAAS,KAOX,GAAG,EAAE,UAIL;AAEJ,iBAAO,GAAG,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAGA,QAAM,aAAa,uBAAO,OAAO,IAAI;AAGrC,QAAM,YAAY,CAAC,SAASG,gBAAe;AACzC,UAAI,SAAS,WAAW,OAAO;AAE/B,UAAI,CAAC,QAAQ;AACX,iBAAS,UAAU;AAAA,UACjB,CAAC,MAAM,CAAC,SAAS,QAAQ,MACvB,KAAK,QAAQ,SAAS,SAAS,KAAK,OAAO,CAAC;AAAA,UAC9C;AAAA,QACF;AACA,mBAAW,OAAO,IAAI;AAAA,MACxB;AAEA,aAAOA,cACH,IAAI,OAAO,QAAQ,GAAG,IACtB,IAAI,OAAO,MAAM;AAAA,IACvB;AAEA,QAAMC,YAAW,aAAW,OAAO,YAAY;AAG/C,QAAM,eAAe,aAAW,WAC3BA,UAAS,OAAO,KAChB,CAAC,sBAAsB,KAAK,OAAO,KACnC,CAAC,iCAAiC,KAAK,OAAO,KAG9C,QAAQ,QAAQ,GAAG,MAAM;AAE9B,QAAM,eAAe,aAAW,QAAQ,MAAM,mBAAmB;AAEjE,QAAM,aAAN,MAAiB;AAAA,MACf,YACE,QACA,SACA,UACA,OACA;AACA,aAAK,SAAS;AACd,aAAK,UAAU;AACf,aAAK,WAAW;AAChB,aAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAEA,QAAM,aAAa,CAAC,SAASD,gBAAe;AAC1C,YAAM,SAAS;AACf,UAAI,WAAW;AAGf,UAAI,QAAQ,QAAQ,GAAG,MAAM,GAAG;AAC9B,mBAAW;AACX,kBAAU,QAAQ,OAAO,CAAC;AAAA,MAC5B;AAEA,gBAAU,QAGT,QAAQ,2CAA2C,GAAG,EAGtD,QAAQ,oCAAoC,GAAG;AAEhD,YAAM,QAAQ,UAAU,SAASA,WAAU;AAE3C,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,QAAM,aAAa,CAAC,SAAS,SAAS;AACpC,YAAM,IAAI,KAAK,OAAO;AAAA,IACxB;AAEA,QAAM,YAAY,CAACE,OAAM,cAAc,YAAY;AACjD,UAAI,CAACD,UAASC,KAAI,GAAG;AACnB,eAAO;AAAA,UACL,oCAAoC,YAAY;AAAA,UAChD;AAAA,QACF;AAAA,MACF;AAGA,UAAI,CAACA,OAAM;AACT,eAAO,QAAQ,0BAA0B,SAAS;AAAA,MACpD;AAGA,UAAI,UAAU,cAAcA,KAAI,GAAG;AACjC,cAAM,IAAI;AACV,eAAO;AAAA,UACL,oBAAoB,CAAC,qBAAqB,YAAY;AAAA,UACtD;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAEA,QAAM,gBAAgB,CAAAA,UAAQ,wBAAwB,KAAKA,KAAI;AAE/D,cAAU,gBAAgB;AAC1B,cAAU,UAAU,OAAK;AAEzB,QAAM,SAAN,MAAa;AAAA,MACX,YAAa;AAAA,QACX,aAAa;AAAA,QACb,YAAAF,cAAa;AAAA,QACb,qBAAqB;AAAA,MACvB,IAAI,CAAC,GAAG;AACN,QAAAL,QAAO,MAAM,YAAY,IAAI;AAE7B,aAAK,SAAS,CAAC;AACf,aAAK,cAAcK;AACnB,aAAK,sBAAsB;AAC3B,aAAK,WAAW;AAAA,MAClB;AAAA,MAEA,aAAc;AACZ,aAAK,eAAe,uBAAO,OAAO,IAAI;AACtC,aAAK,aAAa,uBAAO,OAAO,IAAI;AAAA,MACtC;AAAA,MAEA,YAAa,SAAS;AAEpB,YAAI,WAAW,QAAQ,UAAU,GAAG;AAClC,eAAK,SAAS,KAAK,OAAO,OAAO,QAAQ,MAAM;AAC/C,eAAK,SAAS;AACd;AAAA,QACF;AAEA,YAAI,aAAa,OAAO,GAAG;AACzB,gBAAM,OAAO,WAAW,SAAS,KAAK,WAAW;AACjD,eAAK,SAAS;AACd,eAAK,OAAO,KAAK,IAAI;AAAA,QACvB;AAAA,MACF;AAAA;AAAA,MAGA,IAAK,SAAS;AACZ,aAAK,SAAS;AAEd;AAAA,UACEC,UAAS,OAAO,IACZ,aAAa,OAAO,IACpB;AAAA,QACN,EAAE,QAAQ,KAAK,aAAa,IAAI;AAIhC,YAAI,KAAK,QAAQ;AACf,eAAK,WAAW;AAAA,QAClB;AAEA,eAAO;AAAA,MACT;AAAA;AAAA,MAGA,WAAY,SAAS;AACnB,eAAO,KAAK,IAAI,OAAO;AAAA,MACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAkBA,SAAUC,OAAM,gBAAgB;AAC9B,YAAI,UAAU;AACd,YAAI,YAAY;AAEhB,aAAK,OAAO,QAAQ,UAAQ;AAC1B,gBAAM,EAAC,SAAQ,IAAI;AACnB,cACE,cAAc,YAAY,YAAY,aACnC,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,gBAC1C;AACA;AAAA,UACF;AAEA,gBAAM,UAAU,KAAK,MAAM,KAAKA,KAAI;AAEpC,cAAI,SAAS;AACX,sBAAU,CAAC;AACX,wBAAY;AAAA,UACd;AAAA,QACF,CAAC;AAED,eAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA;AAAA,MAGA,MAAO,cAAcC,QAAO,gBAAgB,QAAQ;AAClD,cAAMD,QAAO,gBAER,UAAU,QAAQ,YAAY;AAEnC;AAAA,UACEA;AAAA,UACA;AAAA,UACA,KAAK,sBACD,eACA;AAAA,QACN;AAEA,eAAO,KAAK,GAAGA,OAAMC,QAAO,gBAAgB,MAAM;AAAA,MACpD;AAAA,MAEA,GAAID,OAAMC,QAAO,gBAAgB,QAAQ;AACvC,YAAID,SAAQC,QAAO;AACjB,iBAAOA,OAAMD,KAAI;AAAA,QACnB;AAEA,YAAI,CAAC,QAAQ;AAGX,mBAASA,MAAK,MAAM,KAAK;AAAA,QAC3B;AAEA,eAAO,IAAI;AAGX,YAAI,CAAC,OAAO,QAAQ;AAClB,iBAAOC,OAAMD,KAAI,IAAI,KAAK,SAASA,OAAM,cAAc;AAAA,QACzD;AAEA,cAAM,SAAS,KAAK;AAAA,UAClB,OAAO,KAAK,KAAK,IAAI;AAAA,UACrBC;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAGA,eAAOA,OAAMD,KAAI,IAAI,OAAO,UAGxB,SACA,KAAK,SAASA,OAAM,cAAc;AAAA,MACxC;AAAA,MAEA,QAASA,OAAM;AACb,eAAO,KAAK,MAAMA,OAAM,KAAK,cAAc,KAAK,EAAE;AAAA,MACpD;AAAA,MAEA,eAAgB;AACd,eAAO,CAAAA,UAAQ,CAAC,KAAK,QAAQA,KAAI;AAAA,MACnC;AAAA,MAEA,OAAQ,OAAO;AACb,eAAO,UAAU,KAAK,EAAE,OAAO,KAAK,aAAa,CAAC;AAAA,MACpD;AAAA;AAAA,MAGA,KAAMA,OAAM;AACV,eAAO,KAAK,MAAMA,OAAM,KAAK,YAAY,IAAI;AAAA,MAC/C;AAAA,IACF;AAEA,QAAM,UAAU,aAAW,IAAI,OAAO,OAAO;AAE7C,QAAM,cAAc,CAAAA,UAClB,UAAUA,SAAQ,UAAU,QAAQA,KAAI,GAAGA,OAAM,YAAY;AAE/D,YAAQ,cAAc;AAGtB,YAAQ,UAAU;AAElB,IAAAR,QAAO,UAAU;AAKjB;AAAA;AAAA,MAEE,OAAO,YAAY,gBAEjB,QAAQ,OAAO,QAAQ,IAAI,qBACxB,QAAQ,aAAa;AAAA,MAE1B;AAEA,YAAM,YAAY,SAAO,YAAY,KAAK,GAAG,KAC1C,wBAAwB,KAAK,GAAG,IAC/B,MACA,IAAI,QAAQ,OAAO,GAAG;AAE1B,gBAAU,UAAU;AAIpB,YAAM,iCAAiC;AACvC,gBAAU,gBAAgB,CAAAQ,UACxB,+BAA+B,KAAKA,KAAI,KACrC,cAAcA,KAAI;AAAA,IACzB;AAAA;AAAA;;;AC3nBA;AAAA,2DAAAE,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAWjB,aAAS,kBAAkB,aAAa;AACvC,aAAO,IAAI,KAAK,WAAW,OAAO,EAAE;AAAA,QACnC,YAAY,IAAI,UAAQ,IAAI,IAAI,GAAG;AAAA,MACpC;AAAA,IACD;AAOA,aAAS,QAAQ,aAAa;AAC7B,aAAO,YAAY,WAAW,IAAI,OAAO;AAAA,IAC1C;AAMA,QAAM,SAAS;AAEf,QAAM,0BAA0B;AAAA,MAC/B,MAAM;AAAA,MACN,OAAO;AAAA,QACN,OAAO;AAAA,UACN,EAAE,MAAM,SAAS;AAAA,UACjB;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,MAAM,EAAE,MAAM,SAAS;AAAA,cACvB,SAAS;AAAA,gBACR,MAAM;AAAA,gBACN,WAAW;AAAA,cACZ;AAAA,cACA,aAAa;AAAA,gBACZ,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,cACD;AAAA,cACA,kBAAkB;AAAA,gBACjB,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,cACD;AAAA,cACA,kBAAkB;AAAA,gBACjB,MAAM;AAAA,gBACN,aACC;AAAA,cACF;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,YACtB,UAAU,CAAC,MAAM;AAAA,YACjB,KAAK,EAAE,UAAU,CAAC,eAAe,kBAAkB,EAAE;AAAA,UACtD;AAAA,QACD;AAAA,MACD;AAAA,MACA,aAAa;AAAA,IACd;AAEA,QAAM,iCAAiC;AAAA,MACtC,OAAO;AAAA,QACN;AAAA,UACC,MAAM;AAAA,UACN,OAAO;AAAA,YACN,MAAM;AAAA,UACP;AAAA,UACA,aAAa;AAAA,QACd;AAAA,QACA;AAAA,UACC,MAAM;AAAA,UACN,OAAO;AAAA,YACN,MAAM;AAAA,YACN,YAAY;AAAA,cACX,aAAa;AAAA,gBACZ,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,gBACA,UAAU;AAAA,gBACV,aAAa;AAAA,cACd;AAAA,cACA,kBAAkB;AAAA,gBACjB,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,gBACA,UAAU;AAAA,gBACV,aAAa;AAAA,cACd;AAAA,cACA,OAAO;AAAA,gBACN,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,gBACA,UAAU;AAAA,gBACV,aAAa;AAAA,cACd;AAAA,cACA,OAAO;AAAA,gBACN,MAAM;AAAA,cACP;AAAA,cACA,mBAAmB;AAAA,gBAClB,MAAM;AAAA,cACP;AAAA,cACA,wBAAwB;AAAA,gBACvB,MAAM;AAAA,cACP;AAAA,cACA,SAAS;AAAA,gBACR,MAAM;AAAA,gBACN,WAAW;AAAA,cACZ;AAAA,cACA,eAAe;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,cACA,kBAAkB;AAAA,gBACjB,MAAM;AAAA,gBACN,aACC;AAAA,cACF;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,YACtB,KAAK;AAAA,cACJ,OAAO;AAAA,gBACN,EAAE,UAAU,CAAC,eAAe,kBAAkB,EAAE;AAAA,gBAChD;AAAA,kBACC,UAAU;AAAA,oBACT;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD;AAAA,gBACA,EAAE,UAAU,CAAC,eAAe,wBAAwB,EAAE;AAAA,gBACtD,EAAE,UAAU,CAAC,qBAAqB,kBAAkB,EAAE;AAAA,gBACtD;AAAA,kBACC,UAAU;AAAA,oBACT;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,YACA,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC;AAAA,UACzD;AAAA,UACA,aAAa;AAAA,QACd;AAAA,MACD;AAAA,IACD;AAGA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,UAAU;AAAA,UACT,MAAM;AAAA,UACN;AAAA;AAAA,YAEC;AAAA;AAAA,UAED,UACC;AAAA,UACD;AAAA;AAAA,YAEC;AAAA;AAAA,UAED,sBACC;AAAA,UACD;AAAA;AAAA,YAEC;AAAA;AAAA,UAED,sBACC;AAAA,UAED,yCACC;AAAA,UACD;AAAA;AAAA,YAEC;AAAA;AAAA,UACD;AAAA;AAAA,YAEC;AAAA;AAAA,UAED,YACC;AAAA,UACD;AAAA;AAAA,YAEC;AAAA;AAAA,UAED,YACC;AAAA,UACD;AAAA;AAAA,YAEC;AAAA;AAAA,UAED,mBACC;AAAA,UACD;AAAA;AAAA,YAEC;AAAA;AAAA,UAED,gCACC;AAAA,UACD;AAAA;AAAA,YAEC;AAAA;AAAA,UAED,0BACC;AAAA,UACD;AAAA;AAAA,YAEC;AAAA;AAAA,UAED,wCACC;AAAA,UACD;AAAA;AAAA,YAEC;AAAA;AAAA,QACF;AAAA,QAEA,QAAQ;AAAA,UACP,OAAO;AAAA,YACN;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,OAAO;AAAA,oBACP,UAAU;AAAA,kBACX;AAAA,kBACA,sBAAsB;AAAA,gBACvB;AAAA,cACD;AAAA,cACA,iBAAiB;AAAA,YAClB;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,UAAU,MAAM,QAAQ,QAAQ,OAAO,IAAI,QAAQ,UAAU,CAAC;AACpE,cAAM,0BACL,OAAO,QAAQ,CAAC,MAAM,aACrB,OAAO,OAAO,QAAQ,CAAC,GAAG,OAAO,KACjC,OAAO,OAAO,QAAQ,CAAC,GAAG,UAAU;AAEtC,cAAM,mBACJ,0BAA0B,QAAQ,CAAC,EAAE,QAAQ,QAAQ,YACtD,CAAC;AACF,cAAM,yBAAyB,gBAAgB;AAAA,UAC9C,CAAC,MAAM,iBAAiB;AACvB,kBAAMC,QACL,OAAO,iBAAiB,WACrB,eACA,aAAa;AAEjB,gBAAI,CAAC,KAAKA,KAAI,GAAG;AAChB,mBAAKA,KAAI,IAAI,CAAC;AAAA,YACf;AAEA,gBAAI,OAAO,iBAAiB,UAAU;AACrC,mBAAKA,KAAI,EAAE,KAAK,CAAC,CAAC;AAAA,YACnB,OAAO;AACN,mBAAKA,KAAI,EAAE,KAAK;AAAA,gBACf,SAAS,aAAa;AAAA,gBACtB,aAAa,aAAa;AAAA,gBAC1B,kBAAkB,aAAa;AAAA,gBAC/B,kBAAkB,aAAa;AAAA,cAChC,CAAC;AAAA,YACF;AACA,mBAAO;AAAA,UACR;AAAA,UACA,uBAAO,OAAO,IAAI;AAAA,QACnB;AAGA,YAAI,sBACF,0BAA0B,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;AAG1D,YACC,mBAAmB,SAAS,KAC5B,OAAO,mBAAmB,CAAC,MAAM,UAChC;AACD,+BAAqB,CAAC,EAAE,OAAO,mBAAmB,CAAC;AAAA,QACpD;AAGA,cAAM,0BAA0B,mBAAmB;AAAA,UAClD,CAAC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD,OAAO;AAAA,YACN,GAAI,QACD;AAAA,cACA,SAAS,OAAO;AAAA,gBACf,oBAAoB;AAAA,gBACpB,YAAY,CAAC;AAAA,cACd,CAAC,EAAE,IAAI,KAAK;AAAA,YACb,IACC,CAAC;AAAA,YACJ,GAAI,OAAO,UAAU,WAClB;AAAA,cACA,cAAc,IAAI;AAAA,gBACjB;AAAA,gBACA,gBAAgB,MAAM;AAAA,cACvB;AAAA,YACD,IACC,CAAC;AAAA,YACJ,eAAe;AAAA,YACf;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAGA,YACC,OAAO,KAAK,eAAe,EAAE,WAAW,KACxC,wBAAwB,WAAW,GAClC;AACD,iBAAO,CAAC;AAAA,QACT;AAOA,iBAAS,iBAAiBC,OAAM;AAC/B,iBACCA,MAAK,eAAe,UACnBA,MAAK,YAAY,SAAS,KAC1BA,MAAK,WAAW;AAAA,YACf,eAAa,UAAU,eAAe;AAAA,UACvC;AAAA,QAEH;AAOA,iBAAS,oBAAoB,WAAW;AACvC,iBACC,UAAU,eAAe,UACzB,UAAU,eAAe;AAAA,QAE3B;AAOA,iBAAS,iBAAiBA,OAAM;AAC/B,iBACCA,MAAK,eAAe,UACnBA,MAAK,YAAY,SAAS,KAC1BA,MAAK,WAAW;AAAA,YACf,eAAa,UAAU,eAAe;AAAA,UACvC;AAAA,QAEH;AAUA,iBAAS,6BAA6B,cAAc,aAAaA,OAAM;AACtE,cAAI,CAAC,OAAO,OAAO,wBAAwB,YAAY,GAAG;AACzD;AAAA,UACD;AAEA,iCAAuB,YAAY,EAAE;AAAA,YACpC,yBAAuB;AACtB,oBAAM,gBAAgB,oBAAoB;AAC1C,oBAAM,wBACL,oBAAoB;AACrB,oBAAM,qBACL,oBAAoB;AACrB,oBAAM,mBACL,oBAAoB;AAGrB,kBACC,qBACCA,MAAK,SAAS,uBACdA,MAAK,SAAS,gCACf,iBAAiBA,KAAI,GACpB;AACD;AAAA,cACD;AAGA,kBACC,qBACCA,MAAK,SAAS,4BACdA,MAAK,SAAS,2BACf,iBAAiBA,KAAI,GACpB;AACD;AAAA,cACD;AAEA,kBAAI,CAAC,yBAAyB,CAAC,oBAAoB;AAClD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW,gBACR,0BACA;AAAA,kBACH,MAAM;AAAA,oBACL;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD,CAAC;AAED;AAAA,cACD;AAEA,0BAAY,QAAQ,CAAC,YAAY,eAAe;AAC/C,oBAAI,eAAe,KAAK;AACvB,wBAAM,CAAC,SAAS,IAAI;AAEpB,sBAAI,uBAAuB;AAC1B,4BAAQ,OAAO;AAAA,sBACd,MAAAA;AAAA,sBACA,WAAW,gBACR,gCACA;AAAA,sBACH,KAAK,UAAU;AAAA,sBACf,MAAM;AAAA,wBACL;AAAA,wBACA,aAAa;AAAA,0BACZ;AAAA,wBACD;AAAA,wBACA,SAAS,QAAQ,qBAAqB;AAAA,wBACtC;AAAA,sBACD;AAAA,oBACD,CAAC;AAAA,kBACF,WAAW,oBAAoB;AAC9B,4BAAQ,OAAO;AAAA,sBACd,MAAAA;AAAA,sBACA,WAAW,gBACR,mDACA;AAAA,sBACH,KAAK,UAAU;AAAA,sBACf,MAAM;AAAA,wBACL;AAAA,wBACA,oBACC;AAAA,0BACC;AAAA,wBACD;AAAA,wBACD,SAAS,QAAQ,kBAAkB;AAAA,wBACnC;AAAA,sBACD;AAAA,oBACD,CAAC;AAAA,kBACF;AAEA;AAAA,gBACD;AAEA,oBACC,yBACA,sBAAsB,SAAS,UAAU,GACxC;AACD,6BAAW,QAAQ,eAAa;AAE/B,wBACC,oBACA,oBAAoB,UAAU,SAAS,GACtC;AACD;AAAA,oBACD;AAEA,4BAAQ,OAAO;AAAA,sBACd,MAAAA;AAAA,sBACA,WAAW,gBACR,gCACA;AAAA,sBACH,KAAK,UAAU;AAAA,sBACf,MAAM;AAAA,wBACL;AAAA,wBACA;AAAA,wBACA;AAAA,sBACD;AAAA,oBACD,CAAC;AAAA,kBACF,CAAC;AAAA,gBACF;AAEA,oBACC,sBACA,CAAC,mBAAmB,SAAS,UAAU,GACtC;AACD,6BAAW,QAAQ,eAAa;AAE/B,wBACC,oBACA,oBAAoB,UAAU,SAAS,GACtC;AACD;AAAA,oBACD;AAEA,4BAAQ,OAAO;AAAA,sBACd,MAAAA;AAAA,sBACA,KAAK,UAAU;AAAA,sBACf,WAAW,gBACR,uCACA;AAAA,sBACH,MAAM;AAAA,wBACL;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA,oBACC;AAAA,0BACC;AAAA,wBACD;AAAA,wBACD,SAAS,QAAQ,kBAAkB;AAAA,sBACpC;AAAA,oBACD,CAAC;AAAA,kBACF,CAAC;AAAA,gBACF;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAYA,iBAAS,sBAAsBA,OAAM,OAAO,aAAa,cAAc;AAEtE,cACC,MAAM,qBACLA,MAAK,SAAS,uBACdA,MAAK,SAAS,gCACf,iBAAiBA,KAAI,GACpB;AACD;AAAA,UACD;AAGA,cACC,MAAM,qBACLA,MAAK,SAAS,4BACdA,MAAK,SAAS,2BACf,iBAAiBA,KAAI,GACpB;AACD;AAAA,UACD;AAEA,gBAAM,gBAAgB,MAAM;AAC5B,gBAAM,wBAAwB,MAAM;AACpC,gBAAM,8BAA8B,MAAM,oBACvC,IAAI,OAAO,MAAM,mBAAmB,GAAG,IACvC;AACH,gBAAM,qBAAqB,MAAM;AACjC,gBAAM,2BAA2B,MAAM,yBACpC,IAAI,OAAO,MAAM,wBAAwB,GAAG,IAC5C;AAMH,cACC,CAAC,yBACD,CAAC,sBACD,CAAC,+BACD,CAAC,0BACA;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW,gBACR,6BACA;AAAA,cACH,MAAM;AAAA,gBACL;AAAA,gBACA;AAAA,cACD;AAAA,YACD,CAAC;AACD;AAAA,UACD;AAEA,sBAAY,QAAQ,CAAC,YAAY,eAAe;AAC/C,gBAAI,eAAe,KAAK;AACvB,oBAAM,CAAC,SAAS,IAAI;AAEpB,kBAAI,uBAAuB;AAC1B,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW,gBACR,0CACA;AAAA,kBACH,KAAK,UAAU;AAAA,kBACf,MAAM;AAAA,oBACL;AAAA,oBACA,aAAa;AAAA,sBACZ;AAAA,oBACD;AAAA,oBACA,SAAS,QAAQ,qBAAqB;AAAA,oBACtC;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF,WAAW,oBAAoB;AAC9B,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW,gBACR,mDACA;AAAA,kBACH,KAAK,UAAU;AAAA,kBACf,MAAM;AAAA,oBACL;AAAA,oBACA,oBACC,kBAAkB,kBAAkB;AAAA,oBACrC,SAAS,QAAQ,kBAAkB;AAAA,oBACnC;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF,WAAW,0BAA0B;AACpC,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW,gBACR,4DACA;AAAA,kBACH,KAAK,UAAU;AAAA,kBACf,MAAM;AAAA,oBACL;AAAA,oBACA;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF,OAAO;AACN,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW,gBACR,4DACA;AAAA,kBACH,KAAK,UAAU;AAAA,kBACf,MAAM;AAAA,oBACL;AAAA,oBACA,aAAa;AAAA,oBACb;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF;AAEA;AAAA,YACD;AAEA,gBACE,yBACA,sBAAsB,SAAS,UAAU,KACzC,+BACA,4BAA4B,KAAK,UAAU,GAC3C;AACD,yBAAW,QAAQ,eAAa;AAE/B,oBACC,MAAM,oBACN,oBAAoB,UAAU,SAAS,GACtC;AACD;AAAA,gBACD;AAEA,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW,gBACR,0CACA;AAAA,kBACH,KAAK,UAAU;AAAA,kBACf,MAAM;AAAA,oBACL;AAAA,oBACA;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF,CAAC;AAAA,YACF;AAEA,gBACC,sBACA,CAAC,mBAAmB,SAAS,UAAU,GACtC;AACD,yBAAW,QAAQ,eAAa;AAE/B,oBACC,MAAM,oBACN,oBAAoB,UAAU,SAAS,GACtC;AACD;AAAA,gBACD;AAEA,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW,gBACR,uCACA;AAAA,kBACH,KAAK,UAAU;AAAA,kBACf,MAAM;AAAA,oBACL;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA,oBACC,kBAAkB,kBAAkB;AAAA,oBACrC,SAAS,QAAQ,kBAAkB;AAAA,kBACpC;AAAA,gBACD,CAAC;AAAA,cACF,CAAC;AAAA,YACF,WACC,4BACA,CAAC,yBAAyB,KAAK,UAAU,GACxC;AACD,yBAAW,QAAQ,eAAa;AAE/B,oBACC,MAAM,oBACN,oBAAoB,UAAU,SAAS,GACtC;AACD;AAAA,gBACD;AAEA,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW,gBACR,8CACA;AAAA,kBACH,KAAK,UAAU;AAAA,kBACf,MAAM;AAAA,oBACL;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF,CAAC;AAAA,YACF;AAAA,UACD,CAAC;AAAA,QACF;AASA,iBAAS,oBAAoB,cAAc,OAAO;AACjD,iBAAO,MAAM,eACV,MAAM,aAAa,KAAK,YAAY,IACpC,MAAM,QAAQ,QAAQ,YAAY;AAAA,QACtC;AAQA,iBAAS,UAAUA,OAAM;AACxB,gBAAM,eAAeA,MAAK,OAAO,MAAM,KAAK;AAC5C,gBAAM,cAAc,oBAAI,IAAI;AAE5B,cAAIA,MAAK,SAAS,wBAAwB;AACzC,kBAAM,YAAY,WAAW,cAAcA,OAAM,CAAC;AAElD,wBAAY,IAAI,KAAK,CAAC,EAAE,KAAK,UAAU,IAAI,CAAC,CAAC;AAAA,UAC9C,WAAWA,MAAK,YAAY;AAC3B,uBAAW,aAAaA,MAAK,YAAY;AACxC,kBAAI;AACJ,oBAAM,gBAAgB,EAAE,KAAK,UAAU,KAAK,UAAU;AAEtD,kBAAI,UAAU,SAAS,0BAA0B;AAChD,uBAAO;AAAA,cACR,WAAW,UAAU,SAAS,4BAA4B;AACzD,uBAAO;AAAA,cACR,WAAW,UAAU,UAAU;AAC9B,uBAAO,SAAS,oBAAoB,UAAU,QAAQ;AAAA,cACvD,WAAW,UAAU,OAAO;AAC3B,uBAAO,SAAS,oBAAoB,UAAU,KAAK;AAAA,cACpD;AAEA,kBAAI,OAAO,SAAS,UAAU;AAC7B,oBAAI,YAAY,IAAI,IAAI,GAAG;AAC1B,8BAAY,IAAI,IAAI,EAAE,KAAK,aAAa;AAAA,gBACzC,OAAO;AACN,8BAAY,IAAI,MAAM,CAAC,aAAa,CAAC;AAAA,gBACtC;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAEA,uCAA6B,cAAc,aAAaA,KAAI;AAC5D,kCAAwB,QAAQ,WAAS;AACxC,gBAAI,oBAAoB,cAAc,KAAK,GAAG;AAC7C;AAAA,gBACCA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAEA,eAAO;AAAA,UACN,mBAAmB;AAAA,UACnB,uBAAuBA,OAAM;AAC5B,gBAAIA,MAAK,QAAQ;AAChB,wBAAUA,KAAI;AAAA,YACf;AAAA,UACD;AAAA,UACA,sBAAsB;AAAA;AAAA,UAEtB,0BAA0BA,OAAM;AAC/B,gBAAIA,MAAK,gBAAgB,SAAS,6BAA6B;AAC9D,oBAAM,eAAeA,MAAK,gBAAgB,WAAW;AACrD,oBAAM,cAAc,oBAAI,IAAI;AAG5B;AAAA,gBACC;AAAA,gBACA;AAAA,gBACAA;AAAA,cACD;AACA,sCAAwB,QAAQ,WAAS;AACxC,oBAAI,oBAAoB,cAAc,KAAK,GAAG;AAC7C;AAAA,oBACCA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC13BA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAMjB,QAAM,SAAS;AAEf,QAAM,iBAAiB;AAAA,MACtB,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,SAAS;AAAA,MACxB,aAAa;AAAA,IACd;AAEA,QAAM,0BAA0B;AAAA,MAC/B,MAAM;AAAA,MACN,OAAO;AAAA,QACN,OAAO;AAAA,UACN,EAAE,MAAM,SAAS;AAAA,UACjB;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,MAAM,EAAE,MAAM,SAAS;AAAA,cACvB,SAAS;AAAA,gBACR,MAAM;AAAA,gBACN,WAAW;AAAA,cACZ;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,YACtB,UAAU,CAAC,MAAM;AAAA,UAClB;AAAA,QACD;AAAA,MACD;AAAA,MACA,aAAa;AAAA,IACd;AAGA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP,OAAO;AAAA,YACN;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,OAAO;AAAA,kBACP,UAAU;AAAA,gBACX;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,cACA,iBAAiB;AAAA,YAClB;AAAA,UACD;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,gBAAgB;AAAA,UAChB;AAAA;AAAA,YAEC;AAAA;AAAA,UACD,gBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,UAAU,MAAM,QAAQ,QAAQ,OAAO,IAAI,QAAQ,UAAU,CAAC;AACpE,cAAM,0BACL,OAAO,QAAQ,CAAC,MAAM,aACrB,OAAO,OAAO,QAAQ,CAAC,GAAG,OAAO,KACjC,OAAO,OAAO,QAAQ,CAAC,GAAG,UAAU;AAEtC,cAAM,mBACJ,0BAA0B,QAAQ,CAAC,EAAE,QAAQ,QAAQ,YACtD,CAAC;AACF,cAAM,sBACJ,0BAA0B,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;AAE1D,cAAM,yBAAyB,gBAAgB;AAAA,UAC9C,CAAC,MAAM,eAAe;AACrB,gBAAI,OAAO,eAAe,UAAU;AACnC,mBAAK,UAAU,IAAI;AAAA,YACpB,OAAO;AACN,mBAAK,WAAW,IAAI,IAAI,WAAW;AAAA,YACpC;AACA,mBAAO;AAAA,UACR;AAAA,UACA,CAAC;AAAA,QACF;AAGA,YACC,OAAO,KAAK,eAAe,EAAE,WAAW,KACxC,mBAAmB,WAAW,GAC7B;AACD,iBAAO,CAAC;AAAA,QACT;AAGA,cAAM,KAAK,OAAO,EAAE,oBAAoB,KAAK,CAAC,EAAE,IAAI,kBAAkB;AAOtE,iBAAS,gBAAgBC,OAAM;AAC9B,iBACCA,SACAA,MAAK,SAAS,aACd,OAAOA,MAAK,UAAU;AAAA,QAExB;AAOA,iBAAS,cAAcA,OAAM;AAC5B,iBACCA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS;AAAA,QAEvB;AAOA,iBAAS,uBAAuBA,OAAM;AACrC,cAAI,gBAAgBA,KAAI,GAAG;AAC1B,mBAAOA,MAAK,MAAM,KAAK;AAAA,UACxB;AAEA,cAAI,SAAS,wBAAwBA,KAAI,GAAG;AAC3C,mBAAOA,MAAK,OAAO,CAAC,EAAE,MAAM,OAAO,KAAK;AAAA,UACzC;AAEA,iBAAO;AAAA,QACR;AASA,iBAAS,WAAWA,OAAM,MAAM;AAC/B,gBAAM,gBAAgB,uBAAuB,IAAI;AACjD,gBAAM,YAAY,gBACf,kBACA;AAEH,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA;AAAA,YACA,MAAM;AAAA,cACL;AAAA,cACA;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,iBAAiB,MAAM;AAC/B,iBAAO,OAAO,OAAO,wBAAwB,IAAI;AAAA,QAClD;AAEA,eAAO;AAAA,UACN,eAAeA,OAAM;AACpB,gBAAI,cAAcA,KAAI,GAAG;AAExB,kBAAIA,MAAK,UAAU,QAAQ;AAC1B,sBAAM,OAAO,uBAAuBA,MAAK,UAAU,CAAC,CAAC;AAGrD,oBAAI,MAAM;AAET,sBAAI,iBAAiB,IAAI,GAAG;AAC3B,+BAAWA,OAAM,IAAI;AAAA,kBACtB;AAEA,sBACC,mBAAmB,SAAS,KAC5B,GAAG,QAAQ,IAAI,GACd;AACD,4BAAQ,OAAO;AAAA,sBACd,MAAAA;AAAA,sBACA,WAAW;AAAA,sBACX,MAAM,EAAE,KAAK;AAAA,oBACd,CAAC;AAAA,kBACF;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxPA;AAAA,8DAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,YACN,MAAM;AAAA,YACN,YAAY;AAAA,cACX,QAAQ;AAAA,gBACP,MAAM;AAAA,cACP;AAAA,cACA,UAAU;AAAA,gBACT,MAAM;AAAA,cACP;AAAA,cACA,cAAc;AAAA,gBACb,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,gBACA,aAAa;AAAA,cACd;AAAA,cACA,iBAAiB;AAAA,gBAChB,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,gBACA,aAAa;AAAA,cACd;AAAA,cACA,SAAS;AAAA,gBACR,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,OAAO;AAAA,cACN;AAAA,gBACC,UAAU,CAAC,QAAQ;AAAA,cACpB;AAAA,cACA;AAAA,gBACC,UAAU,CAAC,UAAU;AAAA,cACtB;AAAA,YACD;AAAA,YACA,KAAK;AAAA,cACJ,OAAO;AAAA,gBACN,EAAE,UAAU,CAAC,gBAAgB,QAAQ,EAAE;AAAA,gBACvC,EAAE,UAAU,CAAC,mBAAmB,UAAU,EAAE;AAAA,cAC7C;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,UACA,aAAa;AAAA,QACd;AAAA,QAEA,gBAAgB,CAAC;AAAA,QAEjB,UAAU;AAAA,UACT;AAAA;AAAA,YAEC;AAAA;AAAA,UACD;AAAA;AAAA,YAEC;AAAA;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,kBAAkB,QAAQ;AAEhC,YAAI,gBAAgB,WAAW,GAAG;AACjC,iBAAO,CAAC;AAAA,QACT;AAEA,cAAM,uBAAuB,oBAAI,IAAI;AACrC,cAAM,4BAA4B,oBAAI,IAAI;AAC1C,cAAM,+BAA+B,oBAAI,IAAI;AAE7C,wBAAgB,QAAQ,YAAU;AACjC,gBAAM,aAAa,OAAO;AAC1B,gBAAM,eAAe,OAAO;AAE5B,cAAI,OAAO,eAAe,aAAa;AACtC,yCAA6B,IAAI,cAAc;AAAA,cAC9C,cAAc,OAAO;AAAA,cACrB,SAAS,OAAO;AAAA,YACjB,CAAC;AAAA,UACF,WAAW,OAAO,iBAAiB,aAAa;AAC/C,sCAA0B,IAAI,YAAY;AAAA,cACzC,iBAAiB,OAAO;AAAA,cACxB,SAAS,OAAO;AAAA,YACjB,CAAC;AAAA,UACF,OAAO;AACN,gBAAI,CAAC,qBAAqB,IAAI,UAAU,GAAG;AAC1C,mCAAqB,IAAI,YAAY,oBAAI,IAAI,CAAC;AAAA,YAC/C;AAEA,iCAAqB,IAAI,UAAU,EAAE,IAAI,cAAc;AAAA,cACtD,SAAS,OAAO;AAAA,YACjB,CAAC;AAAA,UACF;AAAA,QACD,CAAC;AAQD,iBAAS,UAAU,MAAM,aAAa;AACrC,cAAI,CAAC,aAAa;AACjB,mBAAO;AAAA,UACR;AAEA,iBAAO,YAAY,SAAS,IAAI;AAAA,QACjC;AASA,iBAAS,oBAAoBC,OAAM,YAAY,cAAc;AAC5D,cAAI,iBAAiB,MAAM;AAC1B;AAAA,UACD;AACA,gBAAM,gBAAgB,qBAAqB,IAAI,UAAU;AACzD,gBAAM,wBAAwB,gBAC3B,cAAc,IAAI,YAAY,IAC9B,0BAA0B,IAAI,UAAU;AAC3C,gBAAM,wBACL,6BAA6B,IAAI,YAAY;AAE9C,cACC,yBACA,CAAC,UAAU,cAAc,sBAAsB,eAAe,GAC7D;AACD,kBAAM,UAAU,sBAAsB,UACnC,IAAI,sBAAsB,OAAO,KACjC;AACH,kBAAM,2BACL,sBAAsB,kBACnB,uCAAuC,sBAAsB,gBAAgB,KAAK,IAAI,CAAC,MACvF;AAEJ,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM;AAAA,gBACL;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF,WACC,yBACA,CAAC,UAAU,YAAY,sBAAsB,YAAY,GACxD;AACD,kBAAM,UAAU,sBAAsB,UACnC,IAAI,sBAAsB,OAAO,KACjC;AACH,kBAAM,wBAAwB,sBAAsB,eACjD,cAAc,YAAY,uCAAuC,sBAAsB,aAAa,KAAK,IAAI,CAAC,MAC9G;AAEH,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM;AAAA,gBACL;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,iBAAiBA,OAAM;AACtB;AAAA,cACCA;AAAA,cACAA,MAAK,UAAUA,MAAK,OAAO;AAAA,cAC3B,SAAS,sBAAsBA,KAAI;AAAA,YACpC;AAAA,UACD;AAAA,UACA,cAAcA,OAAM;AACnB,gBAAI,aAAa;AAEjB,gBAAIA,MAAK,OAAO,SAAS,sBAAsB;AAC9C,kBACCA,MAAK,OAAO,QACZA,MAAK,OAAO,KAAK,SAAS,cACzB;AACD,6BAAaA,MAAK,OAAO,KAAK;AAAA,cAC/B;AAAA,YACD,WACCA,MAAK,OAAO,SAAS,0BACrBA,MAAK,OAAO,SAAS,qBACpB;AACD,kBAAIA,MAAK,OAAO,MAAM,SAAS,cAAc;AAC5C,6BAAaA,MAAK,OAAO,MAAM;AAAA,cAChC;AAAA,YACD;AAEA,YAAAA,MAAK,WAAW,QAAQ,cAAY;AACnC;AAAA,gBACCA;AAAA,gBACA;AAAA,gBACA,SAAS,sBAAsB,QAAQ;AAAA,cACxC;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1OA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAWA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,YACN,OAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,cACP;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,UAAU,EAAE,MAAM,SAAS;AAAA,kBAC3B,SAAS,EAAE,MAAM,SAAS;AAAA,gBAC3B;AAAA,gBACA,UAAU,CAAC,UAAU;AAAA,gBACrB,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,UACA,aAAa;AAAA,UACb,UAAU;AAAA,QACX;AAAA,QAEA,gBAAgB,CAAC;AAAA,QAEjB,UAAU;AAAA;AAAA,UAET,kBAAkB;AAAA,QACnB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO,QAAQ,QAAQ,OAAO,CAAC,QAAQ,qBAAqB;AAC3D,gBAAM,iBAAiB,OAAO,qBAAqB;AACnD,gBAAM,mBACL,CAAC,kBAAkB,QAAQ,iBAAiB,OAAO;AAEpD,gBAAM,WAAW,iBACd,mBACA,iBAAiB;AACpB,gBAAM,UAAU,mBACb,iBAAiB,UACjB,UAAU,QAAQ;AAErB,iBAAO,OAAO,OAAO,QAAQ;AAAA,YAC5B,CAAC,QAAQ,EAAEC,OAAM;AAChB,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM,EAAE,QAAQ;AAAA,cACjB,CAAC;AAAA,YACF;AAAA,UACD,CAAC;AAAA,QACF,GAAG,CAAC,CAAC;AAAA,MACN;AAAA,IACD;AAAA;AAAA;;;AC3EA;AAAA,sDAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAMjB,QAAM,gBACL;AAOD,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,eAAe;AAAA,QAEhC,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,iBAAiB,QAAQ;AAAA,UACjC;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,SAAS,QAAQ,QAAQ,CAAC,MAAM;AACtC,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,qBAAqBC,OAAM;AAC1B,gBAAI,CAAC,UAAU,SAAS,gBAAgB,YAAYA,KAAI,GAAG;AAC1D;AAAA,YACD;AAEA,gBAAI,eAAeA;AACnB,gBAAI,SAAS,aAAa;AAG1B,mBAAO,UAAU,CAAC,cAAc,KAAK,OAAO,IAAI,GAAG;AAClD,6BAAe;AACf,uBAAS,OAAO;AAAA,YACjB;AAGA,gBAAI,UAAU,OAAO,SAAS,mBAAmB;AAChD,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,cACZ,CAAC;AAAA,YACF,WACC,UACA,OAAO,SAAS,6BAChB,OAAO,SAAS,cACf;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACtFA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,gBAAgB;AAAA,QAChB,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UAEb,aAAa;AAAA,UAEb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,YAAY;AAAA,UACX,SACC;AAAA,UACD,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY,CAAC;AAAA,QACd;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,aAAa;AAAA,UACb,qBAAqB;AAAA,QACtB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAMf,iBAAS,uBAAuBC,OAAM;AACrC,kBAAQ,OAAO;AAAA,YACd,MAAM,QAAQ,WAAW,cAAcA,KAAI;AAAA,YAC3C,KAAKA,MAAK;AAAA,YACV,WAAW;AAAA,YACX,SAAS;AAAA,cACR;AAAA,gBACC,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,wBAAM,aAAa,QAAQ;AAC3B,wBAAM,CAAC,YAAY,eAAe,IACjC,WAAW,eAAeA,OAAM,CAAC;AAElC,wBAAM,4CACL,WAAW,IAAI,MAAM,SACrB,gBAAgB,IAAI,MAAM;AAE3B,sBAAI,CAAC,2CAA2C;AAC/C,2BAAO;AAAA,kBACR;AAEA,wBAAM,CAAC,cAAc,UAAU,IAAI,WAAW;AAE9C,wBAAM,sBACL,WAAW,KAAK,UAAU;AAC3B,wBAAM,aACL,wBAAwB,MAAM,IAAI;AAEnC,wBAAM,QAAQ;AAAA,oBACb;AAAA,oBACA,aAAa;AAAA,kBACd;AAEA,yBAAO,MAAM,YAAY,KAAK;AAAA,gBAC/B;AAAA,cACD;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AASA,iBAAS,gBAAgBA,OAAM;AAC9B,cAAI,WAAWA;AAEf,iBACC,CAAC,SAAS,WAAW,QAAQ,KAC7B,SAAS,SAAS,WACjB;AACD,gBACC,SAAS,OAAO,SAAS,mBACxB,aAAa,SAAS,OAAO,SAC5B,aAAa,SAAS,OAAO,WAC7B,SAAS,OAAO,YACjB;AACD,qBAAO;AAAA,YACR;AACA,uBAAW,SAAS;AAAA,UACrB;AACA,iBAAO;AAAA,QACR;AAQA,iBAAS,qBAAqBA,OAAM;AACnC,cAAIA,MAAK,OAAO,SAAS,2BAA2B;AACnD,mBAAO;AAAA,UACR;AACA,cAAIA,MAAK,OAAO,SAAS,mBAAmB;AAC3C,mBAAO,CAAC,gBAAgBA,MAAK,MAAM;AAAA,UACpC;AACA,cACCA,MAAK,OAAO,SAAS,4BACpBA,UAASA,MAAK,OAAO,cACrBA,UAASA,MAAK,OAAO,YACrB;AACD,mBAAO,qBAAqBA,MAAK,MAAM;AAAA,UACxC;AACA,cACCA,MAAK,OAAO,SAAS,uBACrBA,UAASA,MAAK,OAAO,OACpB;AACD,mBAAO,qBAAqBA,MAAK,MAAM;AAAA,UACxC;AACA,cACCA,MAAK,OAAO,SAAS,wBACrBA,UAASA,MAAK,OAAO,YAAY,GAAG,EAAE,GACrC;AACD,mBAAO,qBAAqBA,MAAK,MAAM;AAAA,UACxC;AACA,iBAAO;AAAA,QACR;AAEA,eAAO;AAAA,UACN,gBAAgBA,OAAM;AACrB,gBAAI,qBAAqBA,KAAI,KAAK,CAAC,gBAAgBA,KAAI,GAAG;AACzD,qCAAuBA,KAAI;AAAA,YAC5B;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACjKA;AAAA,mDAAAC,UAAAC,SAAA;AAAA;AAQA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,qBAAqB;AAAA,QACtB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAOf,iBAAS,MAAMC,OAAM;AACpB,gBAAMC,SAAQ,SAAS,qBAAqBD,KAAI;AAEhD,cACC,OAAOC,WAAU,YACjBA,OAAM,YAAY,EAAE,QAAQ,aAAa,MAAM,GAC9C;AACD,oBAAQ,OAAO,EAAE,MAAAD,OAAM,WAAW,sBAAsB,CAAC;AAAA,UAC1D;AAAA,QACD;AACA,eAAO;AAAA,UACN,QAAQA,OAAM;AACb,gBAAIA,MAAK,SAAS,OAAOA,MAAK,UAAU,UAAU;AACjD,oBAAMA,KAAI;AAAA,YACX;AAAA,UACD;AAAA,UACA,gBAAgBA,OAAM;AACrB,gBACC,EACCA,MAAK,UACLA,MAAK,OAAO,SAAS,6BAErB;AACD,oBAAMA,KAAI;AAAA,YACX;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnEA;AAAA,oDAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAMjB,QAAMC,UAAS;AAYf,aAAS,mBAAmB,MAAM,OAAO,OAAO,QAAQ;AACvD,UAAI,CAAC,QAAQ,CAAC,OAAO;AAAA,MAErB,WACC,KAAK,SAAS,gBACd,MAAM,SAAS,gBACf,KAAK,SAAS,MAAM,MACnB;AACD,eAAO,KAAK;AAAA,MACb,WACC,KAAK,SAAS,kBACd,MAAM,SAAS,mBACd;AACD,cAAM,MAAM,KAAK,IAAI,KAAK,SAAS,QAAQ,MAAM,SAAS,MAAM;AAEhE,iBAAS,IAAI,GAAG,IAAI,KAAK,EAAE,GAAG;AAC7B,gBAAM,cAAc,KAAK,SAAS,CAAC;AACnC,gBAAM,eAAe,MAAM,SAAS,CAAC;AAGrC,cACC,eACA,YAAY,SAAS,iBACrB,IAAI,MAAM,SAAS,SAAS,GAC3B;AACD;AAAA,UACD;AAEA,6BAAmB,aAAa,cAAc,OAAO,MAAM;AAG3D,cAAI,gBAAgB,aAAa,SAAS,iBAAiB;AAC1D;AAAA,UACD;AAAA,QACD;AAAA,MACD,WAAW,KAAK,SAAS,iBAAiB,MAAM,SAAS,iBAAiB;AACzE,2BAAmB,KAAK,UAAU,MAAM,UAAU,OAAO,MAAM;AAAA,MAChE,WACC,KAAK,SAAS,mBACd,MAAM,SAAS,sBACf,MAAM,WAAW,UAAU,GAC1B;AAKD,YAAI,SAAS;AAEb,iBAAS,IAAI,MAAM,WAAW,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG;AACtD,gBAAM,WAAW,MAAM,WAAW,CAAC,EAAE;AAErC,cACC,aAAa,mBACb,aAAa,8BACZ;AACD,qBAAS,IAAI;AACb;AAAA,UACD;AAAA,QACD;AAEA,iBAAS,IAAI,GAAG,IAAI,KAAK,WAAW,QAAQ,EAAE,GAAG;AAChD,mBAAS,IAAI,QAAQ,IAAI,MAAM,WAAW,QAAQ,EAAE,GAAG;AACtD;AAAA,cACC,KAAK,WAAW,CAAC;AAAA,cACjB,MAAM,WAAW,CAAC;AAAA,cAClB;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD,WACC,KAAK,SAAS,cACd,MAAM,SAAS,cACf,MAAM,SAAS,UACf,CAAC,MAAM,QACN;AACD,cAAM,WAAW,SAAS,sBAAsB,IAAI;AAEpD,YACC,aAAa,QACb,aAAa,SAAS,sBAAsB,KAAK,GAChD;AACD,6BAAmB,KAAK,OAAO,MAAM,OAAO,OAAO,MAAM;AAAA,QAC1D;AAAA,MACD,WACC,SACA,SAAS,oBAAoB,IAAI,EAAE,SAAS,sBAC5C,SAAS,oBAAoB,KAAK,EAAE,SAAS,sBAC7C,SAAS,gBAAgB,MAAM,KAAK,GACnC;AACD,eAAO,KAAK;AAAA,MACb;AAAA,IACD;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,EAAE,OAAO,KAAK,CAAC;AAAA,QAEhC,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,OAAO;AAAA,gBACN,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,CAAC,EAAE,MAAM,CAAC,IAAI,QAAQ;AAO5B,iBAAS,OAAOE,OAAM;AACrB,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW;AAAA,YACX,MAAM;AAAA,cACL,MAAM,WAAW,QAAQA,KAAI,EAAE,QAAQD,SAAQ,EAAE;AAAA,YAClD;AAAA,UACD,CAAC;AAAA,QACF;AAEA,eAAO;AAAA,UACN,qBAAqBC,OAAM;AAC1B,gBAAI,CAAC,KAAK,OAAO,OAAO,KAAK,EAAE,SAASA,MAAK,QAAQ,GAAG;AACvD,iCAAmBA,MAAK,MAAMA,MAAK,OAAO,OAAO,MAAM;AAAA,YACxD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzLA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAQ3B,iBAAS,cAAc,OAAO,OAAO;AACpC,gBAAM,UAAU,WAAW,UAAU,KAAK;AAC1C,gBAAM,UAAU,WAAW,UAAU,KAAK;AAE1C,iBACC,QAAQ,WAAW,QAAQ,UAC3B,QAAQ;AAAA,YACP,CAAC,OAAOC,WACP,MAAM,SAAS,QAAQA,MAAK,EAAE,QAC9B,MAAM,UAAU,QAAQA,MAAK,EAAE;AAAA,UACjC;AAAA,QAEF;AAEA,eAAO;AAAA,UACN,iBAAiBC,OAAM;AACtB,kBAAM,YAAY,oBAAI,IAAI;AAAA,cACzB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACD,CAAC;AAED,gBACC,UAAU,IAAIA,MAAK,QAAQ,KAC3B,cAAcA,MAAK,MAAMA,MAAK,KAAK,GAClC;AACD,sBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,kBAAkB,CAAC;AAAA,YACtD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5EA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAWjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,oBAAoB;AAAA,gBACnB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,gBAAgB;AAAA,UACf;AAAA,YACC,oBAAoB;AAAA,UACrB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,2BAA2B;AAAA,QAC5B;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,mBAAmB,CAAC,IAAI,QAAQ;AACzC,cAAM,aAAa,QAAQ;AAK3B,cAAM,gBAAgB;AAAA,UACrB,kBAAkB;AAAA,UAClB,aAAa;AAAA,UACb,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,eAAe;AAAA,UACf,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAQ1B;AAQA,iBAAS,oBAAoBC,OAAM;AAClC,iBACCA,MAAK,UACL,cAAcA,MAAK,OAAO,IAAI,KAC9BA,UAASA,MAAK,OAAO,cAAcA,MAAK,OAAO,IAAI,CAAC;AAAA,QAEtD;AAOA,iBAAS,gBAAgBA,OAAM;AAC9B,iBAAO,SAAS,gBAAgB,YAAYA,KAAI;AAAA,QACjD;AAOA,iBAAS,qBAAqBA,OAAM;AACnC,gBAAM,gBAAgB,WAAW,eAAeA,OAAM,CAAC,GACtD,YAAY,WAAW,cAAcA,OAAM,CAAC;AAE7C,iBACC,gBAAgBA,KAAI,KACpB,iBACA,aACA,SAAS,oBAAoB,aAAa,KAC1C,cAAc,MAAM,CAAC,KAAKA,MAAK,MAAM,CAAC,KACtC,SAAS,oBAAoB,SAAS,KACtC,UAAU,MAAM,CAAC,KAAKA,MAAK,MAAM,CAAC;AAAA,QAEpC;AAEA,eAAO;AAAA,UACN,mBAAmBA,OAAM;AAExB,gBACCA,MAAK,OAAO,SAAS,mBACpBA,UAASA,MAAK,OAAO,QAAQA,UAASA,MAAK,OAAO,SAClD;AACD;AAAA,YACD;AAGA,gBAAI,oBAAoB;AACvB,kBAAI,oBAAoBA,KAAI,GAAG;AAC9B,oBAAI,qBAAqBA,KAAI,GAAG;AAC/B;AAAA,gBACD;AAAA,cACD,OAAO;AACN,oBAAI,gBAAgBA,KAAI,GAAG;AAC1B;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAEA,kBAAM,kBAAkB,WAAW;AAAA,cAClCA,MAAK,YAAY,CAAC;AAAA,cAClB,SAAS;AAAA,YACV;AAEA,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,gBAAgB;AAAA,cACrB,WAAW;AAAA,YACZ,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC7JA;AAAA,sDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAgBjB,aAAS,6BACRC,OACA,YACA,YACA,YACAC,QACC;AACD,YAAM,WAAWD,MAAK;AAEtB,aACC,SAAS,SAAS,oBAClB,SAAS,UAAUC,MAAK,MAAMD,SAC9B,SAAS;AAAA,QACR,SAAS;AAAA,QACT;AAAA,QACA;AAAA,MACD,KACA,WAAW;AAAA,QACV,SAAS,oBAAoB,SAAS,MAAM,EAAE;AAAA,MAC/C;AAAA,IAEF;AAQA,aAAS,qBAAqBA,OAAM,YAAY;AAC/C,UACC;AAAA,QACCA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,KACA;AAAA,QACCA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,GACC;AACD,eAAO;AAAA,MACR;AAEA,YAAM,SAASA,MAAK;AAEpB,UAAI,OAAO,SAAS,cAAc,OAAO,UAAUA,OAAM;AACxD,cAAM,cAAc,OAAO;AAE3B,YACC,YAAY,SAAS,uBACpB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,KACC;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,IACA;AACD,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,SAASA,OAAM,YAAY;AACnC,YAAM,SAASA,MAAK;AAEpB,WACE,OAAO,SAAS,cAAc,OAAO,SAAS,uBAC/C,OAAO,SAAS,SAChB,OAAO,UAAUA,OAChB;AAED,eAAO;AAAA,MACR;AAEA,UACC,OAAO,SAAS,cAChB,OAAO,UAAUA,SACjB,SAAS,sBAAsB,MAAM,MAAM,SAC3C,OAAO,OAAO,SAAS,sBACvB,qBAAqB,OAAO,QAAQ,UAAU,GAC7C;AAED,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,IACR;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,cAAc;AAAA,QACf;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,YAAI,WAAW;AACf,cAAM,aAAa,QAAQ;AAO3B,iBAAS,cAAcC,OAAM;AAC5B,qBAAW;AAAA,YACV,OAAO;AAAA,YACP,UAAU,SAASA,OAAM,UAAU;AAAA,UACpC;AAAA,QACD;AAMA,iBAAS,eAAe;AACvB,qBAAW,SAAS;AAAA,QACrB;AAOA,iBAAS,OAAOA,OAAM;AACrB,kBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,eAAe,CAAC;AAAA,QACnD;AAEA,eAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQN,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,UACpB,wBAAwBA,OAAM;AAC7B,0BAAcA,KAAI;AAElB,gBAAI,SAAS,YAAYA,MAAK,YAAY;AAEzC,qBAAOA,MAAK,IAAI;AAAA,YACjB;AAAA,UACD;AAAA,UAEA,4BAA4B;AAAA,UAC5B,2BAA2B;AAAA,UAC3B,gCAAgC;AAAA,UAEhC,gBAAgBA,OAAM;AAErB,gBAAI,YAAY,SAAS,YAAYA,MAAK,UAAU;AACnD,qBAAOA,KAAI;AAAA,YACZ;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/NA;AAAA,+CAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAYjB,QAAM,uBAAuB,oBAAI,IAAI;AAAA,MACpC;AAAA,MACA;AAAA,IACD,CAAC;AACD,QAAM,sBAAsB,oBAAI,IAAI,CAAC,gBAAgB,CAAC;AACtD,QAAM,iBAAiB;AACvB,QAAM,gBACL;AAGD,QAAM,sBAAsB,oBAAI,IAAI;AAAA,MACnC;AAAA,MACA;AAAA,IACD,CAAC;AAGD,QAAM,sCAAsC,oBAAI,IAAI;AAAA,MACnD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAOD,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,OAAO,CAAC;AAAA,YACR,gBAAgB;AAAA,YAChB,OAAO;AAAA,YACP,wBAAwB;AAAA,YACxB,uBAAuB;AAAA,YACvB,4CAA4C;AAAA,UAC7C;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,gBAAgB,EAAE,MAAM,UAAU;AAAA,cAClC,OAAO;AAAA,gBACN,MAAM;AAAA,kBACL;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA,OAAO;AAAA,gBACN,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,cACD;AAAA,cACA,wBAAwB,EAAE,MAAM,UAAU;AAAA,cAC1C,uBAAuB,EAAE,MAAM,UAAU;AAAA,cACzC,4CAA4C;AAAA,gBAC3C,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,UACC;AAAA,UACD,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM;AAAA,UACL;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD,IAAI,QAAQ;AACZ,cAAM,aAAa,QAAQ;AAO3B,iBAAS,qBAAqB,OAAO;AACpC,iBACC,MAAM,MAAM,SAAS,YACpB,CAAC,CAAC,MAAM,SAAS,qBAAqB,MAAM,KAAK;AAAA,QAEpD;AAOA,iBAAS,YAAY,UAAU;AAC9B,iBAAO,SAAS,SAAS;AAAA,QAC1B;AAQA,iBAAS,kBAAkB,UAAU,kBAAkB;AACtD,cAAI,0BAA0B,MAAM;AACnC,mBAAO;AAAA,UACR;AAEA,cAAI,EAAE,qBAAqB,WAAW;AACrC,mBAAO;AAAA,UACR;AAEA,gBAAM,kBAAkB,iBAAiB,KAAK,CAAC;AAG/C,gBAAM,eACL,mBACA,gBAAgB,QAAQ,SAAS,wBAChC,gBAAgB,OAAO,eAAe,UACtC,gBAAgB,OAAO,WAAW;AAAA,YACjC,OAAK,EAAE,eAAe;AAAA,UACvB;AAEF,gBAAM,kBACL,CAAC,oBACA,eAAe,QAAQ,iBAAiB;AAE1C,iBAAO,SAAS,oBAAoB;AAAA,QACrC;AAOA,iBAAS,uCAAuC,UAAU;AACzD,cAAI,+CAA+C,MAAM;AACxD,mBAAO;AAAA,UACR;AAEA,iBAAO,SAAS,KAAK;AAAA,YAAK,SACzB,oCAAoC,IAAI,IAAI,KAAK,IAAI;AAAA,UACtD;AAAA,QACD;AAOA,iBAAS,8BAA8B,UAAU;AAChD,gBAAM,gBAAgB,SAAS,YAAY,CAAC,EAAE;AAC9C,gBAAM,oBAAoB,cAAc;AACxC,cAAI,kBAAkB,SAAS,8BAA8B;AAC5D,mBAAO;AAAA,UACR;AACA,gBAAM,eAAe,kBAAkB;AACvC,gBAAM,mBAAmB,aAAa;AACtC,iBAAO,iBAAiB;AAAA,QACzB;AAOA,iBAAS,+BAA+B,UAAU;AACjD,iBAAO,8BAA8B,QAAQ;AAAA,QAC9C;AAQA,iBAAS,UAAUC,OAAM,UAAU;AAClC,iBACCA,SAAQA,MAAK,MAAM,CAAC,KAAK,YAAY,YAAYA,MAAK,MAAM,CAAC;AAAA,QAE/D;AAQA,iBAAS,mBAAmBA,OAAMC,QAAO;AACxC,cAAI,cAAcD;AAElB,iBAAO,eAAe,CAACC,OAAM,WAAW,GAAG;AAC1C,0BAAc,YAAY;AAAA,UAC3B;AACA,iBAAO;AAAA,QACR;AAOA,iBAAS,cAAc,OAAO;AAC7B,gBAAM,QAAQ,MAAM;AAEpB,cAAI,SAAS,MAAM,SAAS,4BAA4B;AACvD,mBAAO,MAAM;AAAA,UACd;AACA,iBAAO;AAAA,QACR;AAQA,iBAAS,kBAAkB,UAAU,kBAAkB;AACtD,gBAAM,WAAW,iBAAiB,KAAK,CAAC;AAExC,cAAI,CAAC,UAAU;AACd,mBAAO;AAAA,UACR;AAEA,gBAAM,EAAE,cAAc,IAAI,SAAS;AAEnC,cACC,EACC,qBAAqB,IAAI,cAAc,MAAM,IAAI,KACjD,cAAc,aAAa,MAAM,iBAAiB,QAElD;AACD,mBAAO;AAAA,UACR;AAEA,gBAAM,MAAM,cAAc;AAC1B,gBAAM,EAAE,OAAO,IAAI;AAEnB,gBAAM,iBAAiB;AAAA,YAAmB;AAAA,YAAQ,CAAAD,UACjD,oBAAoB,IAAIA,MAAK,IAAI;AAAA,UAClC;AAEA,cAAI,CAAC,gBAAgB;AACpB,mBAAO;AAAA,UACR;AAEA,cAAIA,QAAO,SAAS;AACpB,gBAAM,WAAW,eAAe,MAAM,CAAC;AAEvC,iBAAOA,OAAM;AACZ,gBAAIA,MAAK,SAAS,sBAAsB;AACvC,kBAAI,UAAUA,MAAK,MAAM,QAAQ,GAAG;AACnC,uBAAO;AAAA,cACR;AACA,kBACC,eAAe,KAAKA,MAAK,OAAO,OAAO,IAAI,KAC3C,UAAUA,MAAK,OAAO,OAAO,OAAO,QAAQ,GAC3C;AACD,uBAAO;AAAA,cACR;AACA;AAAA,YACD,WAAWA,MAAK,SAAS,qBAAqB;AAC7C,kBAAI,UAAUA,MAAK,OAAO,QAAQ,GAAG;AACpC,uBAAO;AAAA,cACR;AAAA,YACD,WAAW,cAAc,KAAKA,MAAK,IAAI,GAAG;AACzC;AAAA,YACD;AAEA,YAAAA,QAAOA,MAAK;AAAA,UACb;AAEA,iBAAO;AAAA,QACR;AAOA,iBAAS,UAAU,UAAU;AAC5B,iBAAO,MAAM,SAAS,SAAS,IAAI;AAAA,QACpC;AAUA,iBAAS,8BAA8B,UAAU;AAChD,gBAAM,QAAQ,SAAS,MAAM;AAE7B,iBACC,MAAM,SAAS,sBACf,MAAM,OAAO,SAAS,YAAY,CAAC;AAAA,QAErC;AAeA,iBAAS,iBAAiB,YAAY;AACrC,gBAAM,EAAE,OAAO,IAAI;AAEnB,gBAAM,eACL,OAAO,SAAS,uBACf,OAAO,SAAS,2BAChB,OAAO,SAAS;AAElB,iBAAO,eAAe,iBAAiB,MAAM,IAAI;AAAA,QAClD;AAsBA,iBAAS,mCACR,eACA,eACC;AACD,gBAAM,WAAW,cAAc,KAAK,CAAC;AACrC,gBAAM,WAAW,cAAc,KAAK,CAAC;AAErC,cAAI,CAAC,YAAY,CAAC,UAAU;AAC3B,mBAAO;AAAA,UACR;AAEA,cACC,EACE,SAAS,SAAS,kBAClB,SAAS,KAAK,SAAS,wBACvB,SAAS,SAAS,eAClB,SAAS,KAAK,SAAS,oBAExB;AACD,mBAAO;AAAA,UACR;AAEA,gBAAM,kBAAkB,SAAS;AACjC,cAAI;AAEJ,cAAI,gBAAgB,OAAO,SAAS,sBAAsB;AACzD,8BAAkB,gBAAgB,OAAO;AAAA,UAC1C,WAAW,gBAAgB,OAAO,SAAS,qBAAqB;AAC/D,8BAAkB,gBAAgB,OAAO;AAAA,UAC1C;AAEA,cAAI,CAAC,iBAAiB;AACrB,mBAAO;AAAA,UACR;AAEA,gBAAM,cAAc,SAAS;AAG7B,cACC,EACC,gBAAgB,MAAM,CAAC,KAAK,YAAY,MAAM,CAAC,KAC/C,YAAY,MAAM,CAAC,KAAK,gBAAgB,MAAM,CAAC,IAE/C;AACD,mBAAO;AAAA,UACR;AAEA,iBAAO,oBAAoB,iBAAiB,WAAW;AAAA,QACxD;AAOA,iBAAS,aAAa,UAAU;AAC/B,gBAAM,MAAM,SAAS,KAAK,CAAC;AAE3B,iBAAO,OAAO,IAAI,KAAK;AAAA,QACxB;AAOA,iBAAS,oBAAoB,UAAU;AACtC,gBAAM,aAAa,SAAS,YAAY,CAAC;AACzC,cAAI;AAEJ,cAAI,YAAY;AACf,kBAAM;AAAA,cACL,QAAQ;AAAA,cACR,MAAM,WAAW,IAAI,MAAM;AAAA,cAC3B,QAAQ,WAAW,IAAI,MAAM,SAAS;AAAA,YACvC;AAAA,UACD,OAAO;AACN,kBAAM;AAAA,cACL,QAAQ;AAAA,YACT;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AAQA,iBAAS,QAAQ,UAAU,UAAU;AACpC,gBAAM,WAAW,SAAS,KAAK,CAAC;AAChC,gBAAM,QAAQ,aAAa,QAAQ;AACnC,gBAAM,QAAQ,aAAa,QAAQ;AAEnC,cAAI,CAAC,SAAS,MAAM,CAAC,KAAK,MAAM,CAAC,GAAG;AACnC,mBAAO;AAAA,UACR;AAEA,cAAI,UAAU,SAAS;AACtB,mBAAO,CAAC,oBAAoB,IAAI,SAAS,KAAK,IAAI;AAAA,UACnD;AAEA,cAAI,UAAU,uBAAuB;AACpC,mBACC,SAAS,KAAK,SAAS,yBACvB,CAAC,oBAAoB,IAAI,SAAS,KAAK,IAAI;AAAA,UAE7C;AAEA,iBACC,SACA,SACA,MAAM,CAAC,IAAI,MAAM,CAAC;AAAA,WAEjB,UAAU,eACV,CAAC,YACD,SAAS,KAAK,SAAS;AAAA,QAE1B;AAQA,iBAAS,mBAAmB,UAAU;AACrC,gBAAM,WAAW,QAAQ;AACzB,cACC,CAAC,SAAS,SAAS,OAAO,KAC1B,CAAC,SAAS,SAAS,QAAQ,KAC3B,CAAC,SAAS,SAAS,QAAQ,GAC1B;AACD,mBAAO;AAAA,UACR;AACA,iBAAO,SAAS,KAAK;AAAA,YACpB,SACE,IAAI,SAAS,cAAc,IAAI,OAAO,WACtC,IAAI,SAAS,eAAe,IAAI,KAAK,WACrC,IAAI,SAAS,gBAAgB,IAAI,KAAK,WACtC,IAAI,SAAS,kBAAkB,IAAI,KAAK;AAAA,UAC3C;AAAA,QACD;AAOA,iBAAS,6BAA6B,UAAU;AAC/C,gBAAM,QAAQ,SAAS,MAAM;AAE7B,iBACC,MAAM,SAAS,uBACf,MAAM,OAAO,SAAS,YAAY,CAAC;AAAA,QAErC;AASA,iBAAS,6BACR,OACA,UACA,kBACC;AACD,gBAAM,kBAAkB,iBAAiB,KAAK,CAAC;AAE/C,cAAI,CAAC,mBAAmB,CAAC,gBAAgB,QAAQ;AAChD,mBAAO;AAAA,UACR;AAGA,gBAAM,eACL,gBAAgB,OAAO,SAAS,wBAC/B,gBAAgB,OAAO,eAAe,UACtC,gBAAgB,OAAO,YAAY;AAAA,YAClC,OACC,EAAE,SAAS,qBACX,EAAE,eAAe,UACjB,EAAE,MAAM,SAAS,iBAAiB;AAAA,UACpC;AAEF,cAAI,CAAC,cAAc;AAClB,mBAAO;AAAA,UACR;AAGA,gBAAM,aAAa;AAAA,YAClB,SAAS,YAAY,CAAC,GAAG;AAAA,YACzB,CAAAA,UAAQA,MAAK,SAAS;AAAA,UACvB;AAEA,cAAI,CAAC,YAAY;AAChB,mBAAO;AAAA,UACR;AAMA,gBAAM,eAAe,gBAAgB,OAAO,OAAO;AACnD,gBAAM,aACL,WAAW,GAAG,SAAS,YACpB,WAAW,GAAG,QACd,WAAW,GAAG;AAElB,iBAAO,iBAAiB;AAAA,QACzB;AAOA,iBAAS,gBAAgB,OAAO;AAE/B,cAAI,qBAAqB,KAAK,GAAG;AAChC;AAAA,UACD;AAEA,gBAAM,YAAY,MAAM;AAExB,mBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,EAAE,GAAG;AAC1C,kBAAM,WAAW,UAAU,CAAC;AAG5B,gBACC,SAAS,YAAY,WAAW,KAChC,8BAA8B,QAAQ,KACtC,6BAA6B,QAAQ,KACrC,UAAU,QAAQ,KAClB,mBAAmB,QAAQ,KAC3B,YAAY,QAAQ,GACnB;AACD;AAAA,YACD;AAGA,kBAAM,WAAW,SAAS;AAAA,cACzB,MAAM;AAAA,cACN,SAAS;AAAA,YACV;AAEA,gBACC,aACC,SAAS,YAAY,SAAS,KAC7B,kBAAkB,eAAe,aACnC,CAAC,mCAAmC,UAAU,QAAQ,KACtD,EACC,0BACA,kBAAkB,UAAU,QAAQ,MAErC,EAAE,UAAU,SAAS,QAAQ,UAAU,QAAQ,MAC/C,CAAC,kBAAkB,UAAU,QAAQ,KACrC,CAAC,uCAAuC,QAAQ,KAChD,CAAC,+BAA+B,UAAU,QAAQ,KAClD,CAAC,6BAA6B,OAAO,UAAU,QAAQ,GACtD;AACD,oBAAM,WAAW,oBAAoB,QAAQ;AAC7C,oBAAM,YAAY,SAAS,SACxB,mBACA;AACH,oBAAM,OAAO,EAAE,MAAM,SAAS,KAAK;AAEnC,kBAAI,CAAC,SAAS,QAAQ;AACrB,qBAAK,eAAe,SAAS;AAC7B,qBAAK,iBAAiB,SAAS;AAAA,cAChC;AACA,sBAAQ,OAAO;AAAA,gBACd,MAAM,SAAS,YAAY,CAAC;AAAA,gBAC5B;AAAA,gBACA;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,eAAeA,OAAM;AACpB,kBAAM,cAAc,WAAW,SAASA,KAAI;AAC5C,kBAAM,QAAQ,YAAY,YAAY,MAAM;AAE5C,mBAAO,MAAM,QAAQ;AACpB,oBAAM,QAAQ,MAAM,IAAI;AAExB,oBAAM,KAAK,GAAG,MAAM,WAAW;AAC/B,8BAAgB,KAAK;AAAA,YACtB;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrrBA;AAAA,gEAAAE,UAAAC,SAAA;AAAA;AAaA,aAAS,uBAAuB,UAAU;AACzC,aACC,SAAS,SAAS,eAClB,SAAS,WAAW,MAAM,SAAO,CAAC,IAAI,QAAQ,CAAC,KAC/C,SAAS,KAAK;AAAA,QACb,SACC,IAAI,KAAK,SAAS,wBAClB,IAAI,KAAK,SAAS;AAAA,MACpB;AAAA,IAEF;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,kBAAkB;AAAA,UACnB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,kBAAkB;AAAA,gBACjB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,yBAAyB;AAAA,QAC1B;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,iBAAiB,CAAC,IAAI,QAAQ;AAEvC,cAAM,aAAa,oBAAI,IAAI;AAAA,UAC1B;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,CAAC;AAED,YAAI,kBAAkB;AACrB,qBAAW,IAAI,YAAY;AAAA,QAC5B;AAEA,cAAM,aAAa,QAAQ;AAG3B,cAAM,gBAAgB,oBAAI,IAAI;AAE9B,eAAO;AAAA,UACN,oGACCC,OACC;AACD,uBAAW,YAAY,WAAW,qBAAqBA,KAAI,GAAG;AAC7D,kBACC,SAAS,KAAK,SAAS,KACvB,WAAW,IAAI,SAAS,IAAI,KAC5B,CAAC,uBAAuB,QAAQ,GAC/B;AACD,2BAAW,OAAO,SAAS,MAAM;AAChC,wBAAM,eAAe,IAAI;AAEzB,sBAAI,CAAC,cAAc,IAAI,YAAY,GAAG;AACrC,kCAAc,IAAI,YAAY;AAC9B,4BAAQ,OAAO;AAAA,sBACd,MAAM;AAAA,sBACN,WAAW;AAAA,sBACX,MAAM;AAAA,wBACL,MAAM,SAAS;AAAA,sBAChB;AAAA,oBACD,CAAC;AAAA,kBACF;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AChHA;AAAA,oDAAAC,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QACT,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,kBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAQ3B,iBAAS,iBAAiBC,OAAM;AAC/B,gBAAM,kBAAkB,WAAW,aAAaA,MAAK,MAAM;AAC3D,cAAI,YAAY,iBACf,aAAa,WAAW,cAAc,eAAe;AAGtD,iBACC,cACA,WAAW,MAAM,CAAC,IAAIA,MAAK,MAAM,CAAC,KAClC,WAAW,UAAU,KACpB;AACD,wBAAY;AACZ,yBAAa,WAAW,cAAc,UAAU;AAAA,UACjD;AAGA,cACC,cACA,WAAW,MAAM,CAAC,IAAIA,MAAK,MAAM,CAAC,KAClC,WAAW,eAAe,WAAW,UAAU,GAC9C;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,gBAAgB,IAAI;AAAA,cACzB,WAAW;AAAA,cACX,IAAI,OAAO;AACV,uBAAO,MAAM,YAAY;AAAA,kBACxB,UAAU,MAAM,CAAC;AAAA,kBACjB,WAAW,MAAM,CAAC;AAAA,gBACnB,CAAC;AAAA,cACF;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,gBAAgB;AAAA,UAChB,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxGA;AAAA,sDAAAC,UAAAC,SAAA;AAAA;AAMA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,uBAAuB;AAAA,QACxB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAKf,eAAO;AAAA,UACN,gBAAgBC,OAAM;AACrB,gBAAI,CAACA,MAAK,SAAS,SAAS,IAAI,GAAG;AAClC;AAAA,YACD;AAEA,kBAAM,EAAE,WAAW,IAAI;AACvB,gBAAI;AAEJ,uBAAW,CAACC,QAAO,OAAO,KAAKD,MAAK,SAAS,QAAQ,GAAG;AACvD,kBAAIC,WAAUD,MAAK,SAAS,SAAS,KAAK,SAAS;AAClD;AAAA,cACD;AAEA,2BAAa,WAAW;AAAA,gBACvB,WAAW,cAAc,WAAW,cAAcA,KAAI;AAAA,gBACtD,SAAS;AAAA,cACV;AAEA,kBAAI,SAAS;AACZ;AAAA,cACD;AAEA,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK,WAAW;AAAA,gBAChB,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnEA;AAAA,6CAAAE,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,kBAAkB;AAAA,gBACjB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,WACL,QAAQ,QAAQ,CAAC,KAAK,QAAQ,QAAQ,CAAC,EAAE,mBACtC,wDACA;AAEJ,eAAO;AAAA,UACN,CAAC,QAAQ,EAAEC,OAAM;AAChB,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,cAAcA,MAAK,SAAS;AAAA,cAC7B;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AChFA;AAAA,6CAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AACjB,QAAM,wBAAwB;AAO9B,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QACA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,sBAAsB;AAAA,gBACrB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,uBACL,QAAQ,WACR,QAAQ,QAAQ,CAAC,KACjB,QAAQ,QAAQ,CAAC,EAAE;AAEpB,eAAO;AAAA,UACN,QAAQC,OAAM;AACb,uBAAW,SAAS,EAAE,QAAQ,CAAC,MAAMC,WAAU;AAC9C,kBAAIC;AAEJ,sBAAQA,SAAQ,SAAS,KAAK,IAAI,OAAO,MAAM;AAC9C,oBACC,wBACA,CAAC,sBAAsB;AAAA,kBACtB,KAAK,MAAM,GAAGA,OAAM,KAAK;AAAA,gBAC1B,GACC;AACD;AAAA,gBACD;AAEA,wBAAQ,OAAO;AAAA,kBACd,MAAAF;AAAA,kBACA,KAAK;AAAA,oBACJ,OAAO;AAAA,sBACN,MAAMC,SAAQ;AAAA,sBACd,QAAQC,OAAM;AAAA,oBACf;AAAA,oBACA,KAAK;AAAA,sBACJ,MAAMD,SAAQ;AAAA,sBACd,QAAQC,OAAM,QAAQA,OAAM,CAAC,EAAE;AAAA,oBAChC;AAAA,kBACD;AAAA,kBACA,WAAW;AAAA,gBACZ,CAAC;AAAA,cACF;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC7GA;AAAA,iEAAAC,UAAAC,SAAA;AAAA;AAWA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,8BACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,QAAQ;AAEd,eAAO;AAAA,UACN,QAAQC,OAAM;AACb,gBAAI,OAAOA,MAAK,UAAU,YAAY,MAAM,KAAKA,MAAK,KAAK,GAAG;AAC7D,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5CA;AAAA,gDAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,sBAAsBC,OAAM;AAC3B,oBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,oBAAoB,CAAC;AAAA,UACxD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrCA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAajB,aAAS,sBAAsBC,OAAM;AACpC,aACCA,MAAK,SAAS,wBACdA,MAAK,OAAO,SAAS,sBACrBA,MAAK,OAAO,SAAS;AAAA,IAEvB;AAUA,QAAM,cAAN,MAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKjB,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,MAMd,eAAe,CAAC;AAAA,IACjB;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AASf,YAAI,WAAW;AAGf,YAAI,aAAa,uBAAO,OAAO,IAAI;AAOnC,iBAAS,SAAS,SAAS;AAC1B,iBAAO,CAAC,QAAQ,aAAa,WAAW,QAAQ,EAAE,GAAG;AAAA,QACtD;AAMA,iBAAS,gCAAgC;AACxC,iBAAO;AAAA,YACN,YAAY,SAAS,iBAAiB,SAAS;AAAA,UAChD;AAAA,QACD;AAOA,iBAAS,qBAAqB,UAAU;AACvC,qBAAW,WAAW,UAAU;AAC/B,gBAAI,CAAC,SAAS,OAAO,GAAG;AACvB,qBAAO;AAAA,YACR;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAMA,iBAAS,sBAAsB;AAC9B,iBACC,8BAA8B,KAC9B,CAAC,qBAAqB,SAAS,eAAe;AAAA,QAEhD;AAQA,iBAAS,WAAWC,OAAM;AACzB,gBAAM,WAAW,SAAS;AAE1B,qBAAW,WAAW,UAAU;AAC/B,gBAAI,QAAQ,WAAW;AACtB,yBAAW,QAAQ,EAAE,EAAE,aAAa,KAAKA,KAAI;AAAA,YAC9C;AAAA,UACD;AAAA,QACD;AAMA,iBAAS,iBAAiB;AACzB,gBAAM,WAAW,SAAS;AAE1B,qBAAW,WAAW,UAAU;AAC/B,gBAAI,QAAQ,WAAW;AACtB,yBAAW,QAAQ,EAAE,EAAE,cAAc;AAAA,YACtC;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAON,gBAAgB,UAAUA,OAAM;AAC/B,gBAAI,sBAAsBA,KAAI,GAAG;AAEhC,oBAAM,YAAYA,MAAK,OAAO,OAAO;AAErC,yBAAW;AAAA,gBACV,OAAO;AAAA,gBACP,eAAe;AAAA,gBACf,YAAY;AAAA,kBACX,UAAU,cACV,CAAC,SAAS,kBAAkB,UAAU,UAAU;AAAA,gBACjD;AAAA,gBACA;AAAA,gBACA,iBAAiB,oBAAI,IAAI;AAAA,cAC1B;AAAA,YACD,OAAO;AACN,yBAAW;AAAA,gBACV,OAAO;AAAA,gBACP,eAAe;AAAA,gBACf,YAAY;AAAA,gBACZ;AAAA,gBACA,iBAAiB,oBAAI,IAAI;AAAA,cAC1B;AAAA,YACD;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUA,cAAc,UAAU;AACvB,kBAAM,iBAAiB,SAAS;AAEhC,uBAAW,SAAS;AACpB,gBAAI,CAAC,gBAAgB;AACpB;AAAA,YACD;AAMA,kBAAM,WAAW,oBAAI,IAAI;AAEzB,qBAAS,iBAAiB,CAAC,SAAS,eAAe;AAClD,oBAAM,OAAO,WAAW,QAAQ,EAAE;AAClC,oBAAM,eAAe,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,gBAKtC,CAAAA,UAAQ,CAAC,SAAS,IAAIA,KAAI;AAAA,cAC3B;AAEA,yBAAW,eAAe,cAAc;AACvC,yBAAS,IAAI,WAAW;AAExB,wBAAQ,OAAO;AAAA,kBACd,WAAW;AAAA,kBACX,MAAM;AAAA,kBACN,MAAM;AAAA,oBACL,MACC,YAAY,SAAS,UAClB,UACA;AAAA,kBACL;AAAA,gBACD,CAAC;AAAA,cACF;AAEA,kBAAI,KAAK,aAAa;AACrB,2BAAW,KAAK;AAAA,cACjB;AAAA,YACD,CAAC;AAAA,UACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,uBAAuB,SAAS;AAC/B,qBAAS,gBAAgB,IAAI,OAAO;AAEpC,gBAAI,CAAC,8BAA8B,GAAG;AACrC;AAAA,YACD;AAGA,uBAAW,QAAQ,EAAE,IAAI;AAAA,cACxB,aACC,QAAQ,aAAa,SAAS,KAC9B,QAAQ,aAAa,MAAM,QAAQ;AAAA,cACpC,cAAc,CAAC;AAAA,YAChB;AAAA,UACD;AAAA,UAEA,kCAAkC,SAAS;AAC1C,qBAAS,gBAAgB,IAAI,OAAO;AAAA,UACrC;AAAA,UAEA,gCAAgC,SAAS;AACxC,qBAAS,gBAAgB,OAAO,OAAO;AAAA,UACxC;AAAA,UAEA,qBAAqB,SAAS;AAC7B,qBAAS,gBAAgB,OAAO,OAAO;AAAA,UACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWA,sBAAsB,aAAa,WAAW;AAC7C,gBAAI,CAAC,8BAA8B,GAAG;AACrC;AAAA,YACD;AAGA,qBAAS,SAAS;AAAA,cACjB,EAAE,OAAO,WAAW,MAAM,YAAY;AAAA,cACtC,CAAC,SAAS,eAAe;AACxB,sBAAM,OACL,WAAW,QAAQ,EAAE,KAAK,IAAI,YAAY;AAE3C,oBAAI,KAAK,aAAa;AACrB,6BAAW,KAAK;AAAA,gBACjB,WACC,QAAQ,aAAa,SAAS,KAC9B,QAAQ,aAAa,MAAM,QAAQ,GAClC;AACD,uBAAK,cAAc;AAAA,gBACpB;AAEA,2BAAW,QAAQ,EAAE,IAAI;AAAA,cAC1B;AAAA,YACD;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,eAAeA,OAAM;AACpB,gBAAI,oBAAoB,GAAG;AAC1B,yBAAWA,KAAI;AAAA,YAChB;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,MAAMA,OAAM;AACX,gBAAI,CAAC,SAAS,SAASA,KAAI,KAAK,oBAAoB,GAAG;AACtD,yBAAWA,KAAI;AAAA,YAChB;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,sBAAsBA,OAAM;AAC3B,gBAAIA,MAAK,OAAO,SAAS,WAAW,oBAAoB,GAAG;AAC1D,6BAAe;AAAA,YAChB;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA,UAMA,iBAAiB;AAChB,yBAAa,uBAAO,OAAO,IAAI;AAAA,UAChC;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1WA;AAAA,sDAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,eAAeC,OAAM;AACpB,gBAAI,CAAC,SAAS,aAAaA,MAAK,QAAQ,GAAG;AAC1C,sBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,SAAS,CAAC;AAAA,YAC7C,WAAWA,MAAK,SAAS,SAAS,cAAc;AAC/C,kBAAIA,MAAK,SAAS,SAAS,aAAa;AACvC,wBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,QAAQ,CAAC;AAAA,cAC5C;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC7CA;AAAA,wDAAAC,UAAAC,SAAA;AAAA;AAmBA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,gBAAgB;AAAA,gBACf,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,gBAAgB;AAAA,gBACf,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,cAAM,cACJ,0FACD,aAAa,IAAI,WAAW,MAC5B,WAAW,GAAG,WAAW;AAE1B,cAAM,UAAU,QAAQ,QAAQ,CAAC,KAAK,CAAC,GACtC,iBAAiB,QAAQ,kBAAkB,OAC3C,iBAAiB,QAAQ,kBAAkB;AAS5C,iBAAS,OAAOC,OAAM,UAAU,UAAU;AAOzC,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK;AAAA,YACL,WAAW;AAAA,YACX,IAAI,OAAO;AACV,qBAAO,MAAM,YAAY,QAAQ;AAAA,YAClC;AAAA,UACD,CAAC;AAAA,QACF;AAOA,iBAAS,sBAAsB,UAAU;AACxC,gBAAM,QAAQ,oBAAI,IAAI;AAEtB,mBAAS,QAAQ,aAAW;AAC3B,kBAAM,UACL,QAAQ,SAAS,UACd,QAAQ,IAAI,IAAI,OAAO,IACvB,QAAQ,IAAI,IAAI;AAEpB,qBAAS,IAAI,QAAQ,IAAI,MAAM,MAAM,KAAK,SAAS,KAAK;AACvD,oBAAM,IAAI,CAAC;AAAA,YACZ;AAAA,UACD,CAAC;AAED,iBAAO;AAAA,QACR;AAMA,eAAO;AAAA,UACN,SAAS,SAAS,oBAAoBA,OAAM;AAM3C,kBAAM,KAAK,IAAI,OAAO,UAAU,GAAG,GAClC,YAAY,IAAI,OAAO,YAAY,GAAG,GACtC,QAAQ,WAAW,OACnB,aAAa,WACX,QAAQ,EACR,MAAM,SAAS,6BAA6B,CAAC,GAC/C,WAAW,WAAW,eAAe,GACrC,qBAAqB,sBAAsB,QAAQ;AAEpD,gBAAI,cAAc;AAElB,qBAAS,IAAI,GAAG,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK;AAC/C,oBAAM,aAAa,IAAI;AAOvB,oBAAM,kBACL,cAAc,WAAW,CAAC,IAAI,WAAW,CAAC,EAAE,SAAS;AACtD,oBAAM,aAAa,MAAM,CAAC,EAAE,SAAS;AAErC,oBAAM,UAAU,GAAG,KAAK,MAAM,CAAC,CAAC;AAEhC,kBAAI,SAAS;AACZ,sBAAM,WAAW;AAAA,kBAChB,OAAO;AAAA,oBACN,MAAM;AAAA,oBACN,QAAQ,QAAQ;AAAA,kBACjB;AAAA,kBACA,KAAK;AAAA,oBACJ,MAAM;AAAA,oBACN,QAAQ,aAAa;AAAA,kBACtB;AAAA,gBACD;AAEA,sBAAM,aAAa,cAAc,SAAS,MAAM;AAChD,sBAAM,WAAW,cAAc,SAAS,IAAI;AAC5C,sBAAM,iBACL,WAAW,oBAAoB,UAAU;AAE1C,oBACC,kBACA,eAAe,SAAS,qBACxB,aAAa,eAAe,OAAO,MAAM,CAAC,KAC1C,WAAW,eAAe,OAAO,MAAM,CAAC,GACvC;AACD,iCAAe;AACf;AAAA,gBACD;AAMA,oBAAI,kBAAkB,UAAU,KAAK,MAAM,CAAC,CAAC,GAAG;AAC/C,iCAAe;AACf;AAAA,gBACD;AAEA,sBAAM,WAAW,CAAC,YAAY,QAAQ;AAEtC,oBACC,CAAC,kBACD,CAAC,mBAAmB,IAAI,UAAU,GACjC;AACD,yBAAOA,OAAM,UAAU,QAAQ;AAAA,gBAChC;AAAA,cACD;AAEA,6BAAe;AAAA,YAChB;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClOA;AAAA,wDAAAC,UAAAC,SAAA;AAAA;AAWA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,UAAU;AAAA,UACT,YACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,YAAI,sBAAsB;AAE1B,eAAO;AAAA,UACN,sCAAsC;AACrC,kCAAsB;AAAA,UACvB;AAAA,UACA,2CAA2C;AAC1C,kCAAsB;AAAA,UACvB;AAAA,UACA,mBAAmBC,OAAM;AAExB,kBAAM,cAAcA,MAAK;AACzB,kBAAM,aACLA,MAAK,QACLA,MAAK,GAAG,SAAS,gBACjB,YAAY,SAAS,WACrB,YAAY,WACZ;AACD,gBAAI,YAAY;AACf;AAAA,YACD;AACA,kBAAM,CAAC,QAAQ,IAAI,WAAW,qBAAqBA,KAAI;AACvD,gBAAI,CAAC,UAAU;AACd;AAAA,YACD;AACA,gBAAI,UAAU;AACd,uBAAW,aAAa,SAAS,YAAY;AAC5C,kBAAI,UAAU,QAAQ,GAAG;AACxB;AAAA,cACD;AACA,kBAAI,UAAU,OAAO,GAAG;AACvB,0BAAU;AAAA,cACX;AAAA,YACD;AACA,gBAAI,CAAC,SAAS;AAEb;AAAA,YACD;AACA,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM,EAAE,MAAMA,MAAK,GAAG,KAAK;AAAA,YAC5B,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC9EA;AAAA,8CAAAC,UAAAC,SAAA;AAAA;AAeA,aAAS,kBAAkBC,OAAM;AAChC,YAAM,SAASA,MAAK;AAEpB,aAAO,OAAO,SAAS,qBAAqB,OAAO,aAAa;AAAA,IACjE;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,QAAQ;AAAA,UACT;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,QAAQ;AAAA,gBACP,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,OAAO;AAAA,QACR;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,QAAQ,eAAe,CAAC,IAAI,QAAQ;AAC7C,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,eAAeC,OAAM;AACpB,kBAAM,cAAc,WAAW,SAASA,KAAI;AAE5C,wBAAY,QAAQ,QAAQ,SAAO;AAClC,oBAAM,aAAa,IAAI;AAEvB,kBAAI,CAAC,kBAAkB,kBAAkB,UAAU,GAAG;AACrD;AAAA,cACD;AAEA,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,MAAM;AAAA,cACP,CAAC;AAAA,YACF,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnFA;AAAA,mDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAMjB,QAAM,oBAAoB,oBAAI,IAAI,CAAC,SAAS,SAAS,aAAa,CAAC;AAOnE,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,SAAS;AAAA,QAET,UAAU;AAAA,UACT,0BACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,mBAAmBC,OAAM;AACxB,kBAAM,OAAO,WAAW,QAAQA,MAAK,EAAE,GACtC,OAAOA,MAAK,QAAQA,MAAK,KAAK,MAC9B,QAAQ,WAAW,SAASA,KAAI,GAChC,eAAe,SAAS;AAAA,cACvB;AAAA,cACA;AAAA,YACD,GACA,WAAW,gBAAgB,aAAa,KAAK,SAAS,GACtD,YAAY,WAAW,aAAaA,KAAI;AAEzC,gBACC,SAAS,eACT,CAAC,kBAAkB,IAAIA,MAAK,OAAO,IAAI,KACvC,CAAC,UACA;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM,EAAE,KAAK;AAAA,gBACb,IAAI,OAAO;AACV,sBAAIA,MAAK,OAAO,SAAS,OAAO;AAC/B,2BAAO;AAAA,kBACR;AAEA,sBACCA,MAAK,GAAG,SAAS,kBACjBA,MAAK,GAAG,SAAS,iBAChB;AAED,2BAAO;AAAA,kBACR;AAEA,sBACC,WAAW;AAAA,oBACVA,MAAK;AAAA,oBACL;AAAA,kBACD,GACC;AACD,2BAAO;AAAA,kBACR;AAEA,yBAAO,MAAM,YAAY;AAAA,oBACxBA,MAAK,GAAG,MAAM,CAAC;AAAA,oBACfA,MAAK,MAAM,CAAC;AAAA,kBACb,CAAC;AAAA,gBACF;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpGA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAiBA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,qBAAqB;AAAA,QACtB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAO3B,iBAAS,OAAOC,OAAM;AACrB,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW;AAAA,UACZ,CAAC;AAAA,QACF;AAQA,iBAAS,WAAW,OAAO;AAC1B,gBAAM,eAAe,MAAM,IAAI,IAAI,WAAW;AAE9C,cAAI,CAAC,cAAc;AAClB;AAAA,UACD;AAEA,gBAAM,aAAa,aAAa;AAEhC,gBAAM,OAAO,aAAa;AAG1B,qBACE,OAAO,SAAO,CAAC,IAAI,IAAI,EACvB,QAAQ,SAAO,OAAO,IAAI,UAAU,CAAC;AAEvC,eAAK,QAAQ,SAAO,OAAO,IAAI,IAAI,CAAC;AAAA,QACrC;AAEA,eAAO;AAAA,UACN,eAAeA,OAAM;AACpB,kBAAM,cAAc,WAAW,SAASA,KAAI;AAE5C,kBAAM,QAAQ,CAAC,WAAW;AAE1B,mBAAO,MAAM,QAAQ;AACpB,oBAAM,QAAQ,MAAM,IAAI;AAExB,oBAAM,KAAK,GAAG,MAAM,WAAW;AAC/B,yBAAW,KAAK;AAAA,YACjB;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1FA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,OAAO,CAAC;AAAA,YACR,iBAAiB;AAAA,YACjB,gBAAgB;AAAA,YAChB,2BAA2B;AAAA,YAC3B,qBAAqB;AAAA,YACrB,2BAA2B;AAAA,YAC3B,4BAA4B;AAAA,YAC5B,sBAAsB;AAAA,YACtB,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,OAAO;AAAA,gBACN,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,cACD;AAAA,cACA,gBAAgB;AAAA,gBACf,MAAM;AAAA,cACP;AAAA,cACA,iBAAiB;AAAA,gBAChB,MAAM;AAAA,cACP;AAAA,cACA,2BAA2B;AAAA,gBAC1B,MAAM;AAAA,cACP;AAAA,cACA,sBAAsB;AAAA,gBACrB,MAAM;AAAA,cACP;AAAA,cACA,qBAAqB;AAAA,gBACpB,MAAM;AAAA,cACP;AAAA,cACA,sBAAsB;AAAA,gBACrB,MAAM;AAAA,cACP;AAAA,cACA,2BAA2B;AAAA,gBAC1B,MAAM;AAAA,cACP;AAAA,cACA,4BAA4B;AAAA,gBAC3B,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,sBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM;AAAA,UACL;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD,IAAI,QAAQ;AACZ,cAAM,aAAa,QAAQ;AAY3B,iBAAS,UAAU,YAAY;AAC9B,iBAAO,MAAM,SAAS,UAAU;AAAA,QACjC;AAQA,iBAAS,sBAAsB,YAAY;AAC1C,gBAAM,MAAM,WAAW;AAEvB,iBACC,eAAe,QACd,WAAW,CAAC,MAAM,OAAO,WAAW,MAAM,CAAC,MAAM;AAAA,QAEpD;AAQA,iBAAS,2CAA2C,YAAY;AAC/D,iBAAO,eAAe;AAAA,QACvB;AAQA,iBAAS,4CAA4C,YAAY;AAEhE,iBAAO,eAAe;AAAA,QACvB;AAQA,iBAAS,2BAA2BC,OAAM;AACzC,iBACCA,MAAK,OAAO,SAAS,sBACrBA,MAAK,OAAO,SAAS,SAAS,iBAC9BA,MAAK,OAAO,OAAO,SAAS;AAAA,QAE9B;AAQA,iBAAS,+CAA+CA,OAAM;AAC7D,cAAI,CAAC,qBAAqB;AACzB,YAAAA,MAAK,OAAO,QAAQ,WAAS;AAC5B,oBAAM,EAAE,KAAK,IAAI;AACjB,kBAAI;AAEJ,kBAAI,SAAS,eAAe;AAC3B,8BAAc,MAAM;AAAA,cACrB,WAAW,SAAS,qBAAqB;AACxC,8BAAc,MAAM;AAAA,cACrB,OAAO;AACN,8BAAc;AAAA,cACf;AAEA,kBAAI,YAAY,SAAS,cAAc;AACtC,sBAAM,aAAa,YAAY;AAE/B,oBACC,sBAAsB,UAAU,KAChC,CAAC,UAAU,UAAU,GACpB;AACD,0BAAQ,OAAO;AAAA,oBACd,MAAM;AAAA,oBACN,WAAW;AAAA,oBACX,MAAM;AAAA,sBACL;AAAA,oBACD;AAAA,kBACD,CAAC;AAAA,gBACF;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAQA,iBAAS,qCAAqCA,OAAM;AACnD,cAAIA,MAAK,SAAS,yBAAyBA,MAAK,IAAI;AACnD,kBAAM,aAAaA,MAAK,GAAG;AAE3B,gBACC,OAAO,eAAe,eACtB,sBAAsB,UAAU,KAChC,CAAC,UAAU,UAAU,GACpB;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AACA,yDAA+CA,KAAI;AAAA,QACpD;AAQA,iBAAS,+CAA+CA,OAAM;AAC7D,qBAAW,qBAAqBA,KAAI,EAAE,QAAQ,cAAY;AACzD,kBAAMC,cAAa,SAAS,KAAK,KAAK,SAAO,IAAI,SAASD,KAAI;AAC9D,kBAAM,iBAAiBC,YAAW;AAClC,kBAAM,aAAa,eAAe;AAClC,gBAAI,SAAS,eAAe;AAE5B,mBACC,CAAC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACD,EAAE,SAAS,OAAO,IAAI,GACrB;AACD,uBAAS,OAAO;AAAA,YACjB;AAEA,gBACC,sBAAsB,UAAU,KAChC,CAAC,4CAA4C,UAAU,KACvD,CAAC,UAAU,UAAU,KACrB,EACC,6BACA,OAAO,SAAS,mBAEjB,EACC,8BACA,OAAO,SAAS,kBAEhB;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAD;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,6CAA6CA,OAAM;AAC3D,gBAAM,aAAaA,MAAK,SAAS,MAChC,iBAAiBA,MAAK,OAAO,SAAS,kBACtC,kBAAkBA,MAAK,OAAO,SAAS,SACvC,4BAA4B,2BAA2BA,KAAI;AAE5D,cACC,OAAO,eAAe,eACtB,sBAAsB,UAAU,KAChC,EAAE,kBAAkB,mBACpB,EAAE,mBAAmB,oBACrB,EAAE,6BAA6B,8BAC/B,CAAC,2CAA2C,UAAU,KACtD,CAAC,UAAU,UAAU,GACpB;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM;AAAA,gBACL;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAQA,iBAAS,mCAAmCA,OAAM;AACjD,gBAAM,aAAaA,MAAK,IAAI;AAC5B,gBAAM,WACLA,MAAK,SAAS,sBACbA,MAAK,SAAS,cAAcA,MAAK;AAEnC,cACC,OAAO,eAAe,eACtB,wBACA,YACA,sBAAsB,UAAU,KAChC,CAAC,UAAU,UAAU,GACpB;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,YACCA,MAAK,IAAI,SAAS,sBACf,IAAI,UAAU,KACd;AAAA,cACL;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAQA,iBAAS,uCAAuCA,OAAM;AACrD,gBAAM,aAAaA,MAAK,IAAI;AAE5B,cACC,OAAO,eAAe,eACtB,sBAAsB,UAAU,KAChC,wBACA,CAAC,UAAU,UAAU,GACpB;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,YACCA,MAAK,IAAI,SAAS,sBACf,IAAI,UAAU,KACd;AAAA,cACL;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAMA,eAAO;AAAA,UACN,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,UACpB,kBAAkB;AAAA,UAClB,kBAAkB;AAAA,UAClB,oBAAoB;AAAA,UACpB,UAAU;AAAA,UACV,oBAAoB;AAAA,UACpB,yBAAyB;AAAA,QAC1B;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC9XA;AAAA,6DAAAE,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,UAAU;AAAA,UACT,UACC;AAAA,UACD,UACC;AAAA,UACD,gBACC;AAAA,UACD,UACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,qBAAqB;AAE3B,cAAM,aAAa,QAAQ;AAU3B,iBAAS,mBAAmBC,OAAM,WAAW;AAC5C,gBAAM,YAAY,WAAW;AAAA,YAC5BA;AAAA,YACA,SAAS;AAAA,UACV;AACA,gBAAM,oBAAoB,WAAW,eAAe,SAAS;AAE7D,cAAI,UAAU,IAAI,MAAM,SAAS,kBAAkB,IAAI,IAAI,MAAM;AAChE,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,UAAU;AAAA,cACf;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAMA,eAAO;AAAA,UACN,iBAAiBA,OAAM;AACtB,gBAAI,CAACA,MAAK,YAAYA,MAAK,UAAU;AACpC;AAAA,YACD;AACA,+BAAmBA,MAAK,QAAQ,UAAU;AAAA,UAC3C;AAAA,UAEA,yBAAyBA,OAAM;AAC9B,kBAAM,EAAE,MAAM,IAAIA;AAGlB,kBAAM,cAAc,WAAW,eAAe,KAAK;AAEnD,gBAAI,YAAY,IAAI,IAAI,SAAS,MAAM,IAAI,MAAM,MAAM;AACtD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK;AAAA,kBACJ,OAAO,MAAM,IAAI;AAAA,kBACjB,KAAK;AAAA,oBACJ,MAAM,MAAM,IAAI,MAAM;AAAA,oBACtB,QAAQ,MAAM,IAAI,MAAM,SAAS;AAAA,kBAClC;AAAA,gBACD;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,UAEA,eAAeA,OAAM;AACpB,gBAAIA,MAAK,UAAU,WAAW,KAAKA,MAAK,UAAU;AACjD;AAAA,YACD;AACA,+BAAmBA,MAAK,QAAQ,UAAU;AAAA,UAC3C;AAAA,UAEA,uEACCA,OACC;AACD,kBAAM,cAAc,WAAW;AAAA,cAC9BA;AAAA,cACA,WAAS,MAAM,UAAU;AAAA,YAC1B;AACA,kBAAM,qBACL,WAAW,cAAc,WAAW;AAErC,gBACC,mBAAmB,SAAS,gBAC5B,mBAAmB,KAAK,mBAAmB,KAAK,KAChD,YAAY,MAAM,CAAC,MAAM,mBAAmB,MAAM,CAAC,GAClD;AACD,iCAAmBA,MAAK,MAAM,UAAU;AAAA,YACzC;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACjIA;AAAA,gDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,KAAK;AACX,QAAMC,SAAQ,cAAiB,kBAAkB;AAUjD,aAAS,OAAO;AAAA,IAEhB;AAOA,aAAS,OAAO,GAAG;AAClB,aAAO,MAAM,QAAQ,OAAO,MAAM,YAAY,OAAO,EAAE,SAAS;AAAA,IACjE;AAQA,aAAS,eAAe,aAAaC,OAAM;AAC1C,UAAIC,QAAO,YAAYD,MAAK,IAAI;AAEhC,UAAI,CAACC,OAAM;AACV,QAAAA,QAAO,GAAG,QAAQD,KAAI;AACtB,QAAAD;AAAA,UACC;AAAA,UACAC,MAAK;AAAA,UACLC;AAAA,QACD;AAAA,MACD;AAEA,aAAOA;AAAA,IACR;AAKA,QAAM,YAAN,MAAM,WAAU;AAAA,MACf,cAAc;AACb,aAAK,WAAW;AAChB,aAAK,WAAW,CAAC;AACjB,aAAK,WAAW;AAChB,aAAK,UAAU;AACf,aAAK,eAAe;AACpB,aAAK,SAAS;AACd,aAAK,SAAS;AAAA,MACf;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,UAAU;AACT,eAAO,KAAK;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,UAAU;AACT,eAAO,KAAK,SAAS,MAAM,CAAC;AAAA,MAC7B;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ;AACP,aAAK,UAAU;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,OAAO;AACN,aAAK,WAAW;AAAA,MACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,SAASD,OAAM,SAAS;AACvB,aAAK,WAAW;AAChB,aAAK,WAAW,CAAC;AACjB,aAAK,WAAW;AAChB,aAAK,UAAU;AACf,aAAK,eAAe,QAAQ,eAAe,GAAG;AAC9C,aAAK,SAAS,QAAQ,SAAS;AAC/B,aAAK,SAAS,QAAQ,SAAS;AAC/B,aAAK,UAAUA,OAAM,IAAI;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,UAAUA,OAAM,QAAQ;AACvB,YAAI,CAAC,OAAOA,KAAI,GAAG;AAClB;AAAA,QACD;AAEA,aAAK,WAAWA;AAChB,aAAK,WAAW;AAChB,aAAK,OAAOA,OAAM,MAAM;AAExB,YAAI,CAAC,KAAK,YAAY,CAAC,KAAK,SAAS;AACpC,gBAAMC,QAAO,eAAe,KAAK,cAAcD,KAAI;AAEnD,cAAIC,MAAK,UAAU,GAAG;AACrB,iBAAK,SAAS,KAAKD,KAAI;AACvB,qBAAS,IAAI,GAAG,IAAIC,MAAK,UAAU,CAAC,KAAK,SAAS,EAAE,GAAG;AACtD,oBAAM,QAAQD,MAAKC,MAAK,CAAC,CAAC;AAE1B,kBAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,yBACK,IAAI,GACR,IAAI,MAAM,UAAU,CAAC,KAAK,SAC1B,EAAE,GACD;AACD,uBAAK,UAAU,MAAM,CAAC,GAAGD,KAAI;AAAA,gBAC9B;AAAA,cACD,OAAO;AACN,qBAAK,UAAU,OAAOA,KAAI;AAAA,cAC3B;AAAA,YACD;AACA,iBAAK,SAAS,IAAI;AAAA,UACnB;AAAA,QACD;AAEA,YAAI,CAAC,KAAK,SAAS;AAClB,eAAK,OAAOA,OAAM,MAAM;AAAA,QACzB;AAEA,aAAK,WAAW;AAAA,MACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,OAAO,QAAQA,OAAM;AACpB,eAAO,GAAG,QAAQA,KAAI;AAAA,MACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,OAAO,SAASA,OAAM,SAAS;AAC9B,YAAI,WAAU,EAAE,SAASA,OAAM,OAAO;AAAA,MACvC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,WAAW,uBAAuB;AACjC,eAAO,GAAG;AAAA,MACX;AAAA,IACD;AAEA,IAAAF,QAAO,UAAU;AAAA;AAAA;;;ACzMjB;AAAA,kEAAAI,UAAAC,SAAA;AAAA;AAWA,QAAM,YAAY;AAAlB,QACC,WAAW;AAaZ,QAAM,mBACL;AACD,QAAM,eAAe;AACrB,QAAM,gBAAgB;AACtB,QAAM,eAAe;AACrB,QAAM,kBAAkB;AAkBxB,aAAS,iBAAiB,WAAW;AACpC,UAAI,UAAU,MAAM;AACnB,cAAM,MAAM,UAAU,YAAY,UAAU,SAAS,KAAK,CAAC;AAE3D,YAAI,CAAC,OAAO,IAAI,SAAS,cAAc,IAAI,OAAO,SAAS,OAAO;AACjE,iBAAO;AAAA,QACR;AAAA,MACD;AACA,aAAO,UAAU,QAAQ;AAAA,IAC1B;AAQA,aAAS,aAAa,WAAW;AAChC,aAAO,CAAC,UAAU;AAAA,IACnB;AAQA,aAAS,gCAAgC,WAAW;AACnD,aAAO,EAAE,UAAU,YAAY,UAAU;AAAA,IAC1C;AAQA,aAAS,UAAUC,OAAM,WAAW;AACnC,YAAM,KAAKA,MAAK;AAChB,YAAM,KAAK,UAAU,WAAW;AAEhC,aAAO,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC;AAAA,IACvC;AASA,QAAM,WAAW;AAAA,MAChB,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,aAAaA,OAAM,WAAW;AAC7B,eACC,UAAUA,OAAM,SAAS,KACzB,EAAEA,MAAK,QAAQ,UAAUA,MAAK,MAAM,SAAS;AAAA,MAE/C;AAAA,IACD;AAQA,aAAS,8BAA8B,WAAW;AACjD,UAAIA,QAAO,UAAU;AAErB,aAAOA,OAAM;AACZ,YAAIA,MAAK,SAAS,uBAAuB;AACxC,iBAAOA,MAAK,KAAKA,QAAO;AAAA,QACzB;AAEA,QAAAA,QAAOA,MAAK;AAAA,MACb;AAEA,aAAO;AAAA,IACR;AAYA,aAAS,kBAAkB,WAAW,UAAU;AAC/C,UAAI,UAAU,SAAS,QAAQ,GAAG;AACjC,eAAO;AAAA,MACR;AAEA,YAAM,WAAW,8BAA8B,QAAQ;AAEvD,UAAI,CAAC,UAAU;AACd,eAAO;AAAA,MACR;AAEA,YAAM,UAAU,SAAS;AAAA,QACxB,SAAS,KAAK;AAAA,QACd,SAAS,GAAG;AAAA,MACb;AAEA,aAAO,QAAQ,WAAW,QAAQ,WAAW,KAAK,UAAU,QAAQ,CAAC;AAAA,IACtE;AAQA,aAAS,mBAAmB,YAAY,WAAW;AAClD,eAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,EAAE,GAAG;AAC3C,cAAM,YAAY,WAAW,CAAC;AAE9B,iBAAS,IAAI,GAAG,CAAC,UAAU,YAAY,IAAI,UAAU,QAAQ,EAAE,GAAG;AACjE,gBAAM,WAAW,UAAU,CAAC;AAE5B,oBAAU,WAAW,kBAAkB,WAAW,QAAQ;AAAA,QAC3D;AAAA,MACD;AAAA,IACD;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,0BACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,YAAI,WAAW;AAOf,iBAAS,OAAO,WAAW;AAC1B,gBAAMC,QAAO,UAAU,UAAU;AAEjC,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW;AAAA,YACX,MAAMA;AAAA,UACP,CAAC;AAAA,QACF;AAQA,iBAAS,0BAA0B,YAAY;AAC9C,mBAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,EAAE,GAAG;AAC3C,kBAAM,YAAY,WAAW,CAAC;AAE9B,gBAAI,UAAU,OAAO;AACpB,kBAAI,QAAQ,SAAS,IAAI,UAAU,KAAK;AAExC,kBAAI,CAAC,OAAO;AACX,wBAAQ,CAAC;AACT,yBAAS,IAAI,UAAU,OAAO,KAAK;AAAA,cACpC;AACA,oBAAM,KAAK,SAAS;AAAA,YACrB;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,uBAAuB,YAAY;AAC3C,cAAI,WAAW,MAAM,YAAY,GAAG;AACnC,uBAAW,QAAQ,MAAM;AAAA,UAC1B;AAAA,QACD;AAQA,iBAAS,sBAAsBC,OAAM;AACpC,cAAI,OAAO;AAEX,oBAAU,SAASA,OAAM;AAAA,YACxB,aAAa,WAAW;AAAA,YACxB,MAAMD,OAAM;AACX,kBAAI,gBAAgB,KAAKA,MAAK,IAAI,GAAG;AACpC,uBAAO;AACP,qBAAK,MAAM;AAAA,cACZ,WAAW,aAAa,KAAKA,MAAK,IAAI,GAAG;AACxC,qBAAK,KAAK;AAAA,cACX;AAAA,YACD;AAAA,UACD,CAAC;AAED,iBAAO;AAAA,QACR;AAOA,iBAAS,gBAAgB,WAAW;AACnC,cAAI,UAAU,MAAM;AACnB,mBAAO;AAAA,UACR;AAEA,cAAI,QAAQ;AACZ,cAAI,QAAQ,UAAU;AACtB,cAAIA,QAAO,MAAM;AAEjB,iBAAOA,OAAM;AACZ,gBAAI,iBAAiB,KAAKA,MAAK,IAAI,GAAG;AACrC,kBAAI,aAAa,KAAKA,MAAK,IAAI,KAAKA,MAAK,SAAS,OAAO;AAExD,uBAAO;AAAA,kBACN;AAAA,kBACA;AAAA,kBACA,UAAU,SAASA,MAAK,IAAI,EAAE,KAAK,MAAMA,KAAI;AAAA,kBAC7C,UAAU;AAAA,gBACX;AAAA,cACD;AAGA;AAAA,YACD;AAMA,gBAAI,cAAc,KAAKA,MAAK,IAAI,GAAG;AAElC,kBAAI,sBAAsBA,KAAI,GAAG;AAChC;AAAA,cACD,OAAO;AACN,wBAAQA;AAAA,cACT;AAAA,YACD;AAEA,oBAAQA;AACR,YAAAA,QAAOA,MAAK;AAAA,UACb;AAEA,iBAAO;AAAA,QACR;AAQA,iBAAS,gBAAgB,UAAU;AAElC,gBAAM,aAAa,SAAS,WAC1B,IAAI,eAAe,EACnB,OAAO,OAAO;AAEhB,cAAI,WAAW,WAAW,GAAG;AAC5B;AAAA,UACD;AAGA,oCAA0B,UAAU;AAGpC,gBAAM,YAAY,SAAS,WAAW,OAAO,gBAAgB;AAE7D,cAAI,UAAU,SAAS,GAAG;AACzB,+BAAmB,YAAY,SAAS;AAAA,UACzC;AAMA,qBAAW,OAAO,+BAA+B,EAAE,QAAQ,MAAM;AAAA,QAClE;AAEA,eAAO;AAAA,UACN,eAAeA,OAAM;AACpB,kBAAM,QAAQ,CAAC,WAAW,SAASA,KAAI,CAAC;AAExC,uBAAW,oBAAI,IAAI;AAEnB,gBAAI;AAEJ,mBAAQ,QAAQ,MAAM,IAAI,GAAI;AAC7B,oBAAM,KAAK,GAAG,MAAM,WAAW;AAC/B,oBAAM,UAAU,QAAQ,eAAe;AAAA,YACxC;AAEA,qBAAS,QAAQ,sBAAsB;AACvC,uBAAW;AAAA,UACZ;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzXA;AAAA,yDAAAE,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAGjB,QAAM,oBAAoB,oBAAI,IAAI;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AACD,QAAM,oBAAoB;AAAA,MACzB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA;AAAA,IAGR;AACA,QAAM,gBAAgB,SAAS,cAAc;AAAA,MAC5C,MAAM;AAAA,MACN,UAAU;AAAA,IACX,CAAC;AAOD,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,EAAE,mBAAmB,KAAK,CAAC;AAAA,QAE5C,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,mBAAmB;AAAA,gBAClB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QAET,UAAU;AAAA,UACT,kCACC;AAAA,UACD,kCACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,kBAAkB,CAAC,IAAI,QAAQ;AACxC,cAAM,aAAa,QAAQ;AAQ3B,iBAAS,iBAAiBC,OAAM;AAC/B,iBAAOA,MAAK,SAAS,aAAa,OAAOA,MAAK,UAAU;AAAA,QACzD;AAOA,iBAAS,iBAAiBA,OAAM;AAC/B,cACCA,MAAK,SAAS,sBACd,OAAO,OAAO,mBAAmBA,MAAK,QAAQ,GAC7C;AACD,kBAAM,gBAAgB,WAAW;AAAA,cAChCA,MAAK;AAAA,cACLA,MAAK;AAAA,cACL,WAAS,MAAM,UAAUA,MAAK;AAAA,YAC/B;AACA,kBAAMC,QAAO,WAAW,QAAQ;AAEhC,mBACCA,MAAK,MAAMD,MAAK,MAAM,CAAC,GAAG,cAAc,MAAM,CAAC,CAAC,IAChD,kBAAkBA,MAAK,QAAQ,IAC/BC,MAAK,MAAM,cAAc,MAAM,CAAC,GAAGD,MAAK,MAAM,CAAC,CAAC;AAAA,UAElD;AAEA,cACC,SAAS,cAAcA,KAAI,IAC3B,SAAS,cAAc,EAAE,MAAM,kBAAkB,CAAC,GACjD;AACD,mBAAO,KAAK,SAAS,qBAAqB,YAAYA,KAAI,CAAC;AAAA,UAC5D;AACA,iBAAO,IAAI,SAAS,qBAAqB,YAAYA,KAAI,CAAC;AAAA,QAC3D;AAOA,iBAAS,oBAAoBA,OAAM;AAClC,iBACEA,MAAK,SAAS,sBACd,kBAAkB,IAAIA,MAAK,QAAQ,KACnCA,MAAK,SAAS,qBAAqBA,MAAK,aAAa;AAAA,QAExD;AAQA,iBAAS,yBAAyBA,OAAM;AACvC,iBACCA,MAAK,KAAK,SAAS,gBACnBA,MAAK,WAAW,SAAS,gBACzBA,MAAK,KAAK,SAASA,MAAK,WAAW;AAAA,QAErC;AAEA,eAAO;AAAA,UACN,sBAAsBA,OAAM;AAC3B,gBACC,iBAAiBA,MAAK,SAAS,KAC/B,iBAAiBA,MAAK,UAAU,GAC/B;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,sBACCA,MAAK,WAAW,UAAUA,MAAK,UAAU,OACxC;AAED,2BAAOA,MAAK,KAAK,SAAS,eACvB,MAAM;AAAA,sBACNA;AAAA,sBACAA,MAAK,WAAW,MAAM,SAAS;AAAA,oBAChC,IACC;AAAA,kBACJ;AACA,sBAAIA,MAAK,UAAU,OAAO;AAEzB,2BAAO,MAAM;AAAA,sBACZA;AAAA,sBACA,iBAAiBA,MAAK,IAAI;AAAA,oBAC3B;AAAA,kBACD;AAIA,yBAAO,MAAM;AAAA,oBACZA;AAAA,oBACA,oBAAoBA,MAAK,IAAI,IAC1B,SAAS;AAAA,sBACT;AAAA,sBACAA,MAAK;AAAA,oBACN,IACC,IAAI,iBAAiBA,MAAK,IAAI,CAAC;AAAA,kBACnC;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF,WACC,CAAC,qBACD,yBAAyBA,KAAI,GAC5B;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,wBAAM,+BACJ,SAAS,cAAcA,MAAK,SAAS,IACrC,iBACA,SAAS;AAAA,oBACRA,MAAK;AAAA,kBACN,MACD,CAAC,SAAS;AAAA,oBACT;AAAA,oBACAA,MAAK;AAAA,kBACN;AACD,wBAAM,gBAAgB,8BACnB,IAAI,WAAW,QAAQA,MAAK,SAAS,CAAC,MACtC,SAAS;AAAA,oBACT;AAAA,oBACAA,MAAK;AAAA,kBACN;AACF,wBAAM,WAAW,SAAS;AAAA,oBACzB;AAAA,oBACAA,MAAK;AAAA,kBACN;AAEA,yBAAO,MAAM;AAAA,oBACZA;AAAA,oBACA,GAAG,QAAQ,OAAO,aAAa;AAAA,kBAChC;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACvOA;AAAA,oDAAAE,UAAAC,SAAA;AAAA;AAUA,QAAM,EAAE,sBAAsB,IAAI;AAiBlC,aAAS,cAAcC,OAAM;AAC5B,aAAO,QAAQA,MAAK,IAAI;AAAA,IACzB;AAKA,QAAM,mBAAN,MAAuB;AAAA,MACtB,YAAY,YAAY;AACvB,aAAK,aAAa;AAClB,aAAK,YAAY;AACjB,aAAK,UAAU;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,IAAI,WAAW;AACd,eAAO;AAAA,UACN,OAAO,KAAK,UAAU,IAAI;AAAA,UAC1B,KAAK,KAAK,QAAQ,IAAI;AAAA,QACvB;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,IAAI,UAAU;AACb,eAAO,EAAE,KAAK,aAAa,KAAK;AAAA,MACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,SAASA,OAAM;AACd,eACCA,MAAK,MAAM,CAAC,KAAK,KAAK,UAAU,MAAM,CAAC,KACvCA,MAAK,MAAM,CAAC,KAAK,KAAK,QAAQ,MAAM,CAAC;AAAA,MAEvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,cAAcA,OAAM;AACnB,eAAO,KAAK,SAAS,KAAK,WAAW,eAAeA,KAAI,CAAC;AAAA,MAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAMA,OAAM;AACX,aAAK,UAAUA;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAMA,OAAM;AACX,aAAK,YAAY,KAAK,UAAUA;AAAA,MACjC;AAAA,IACD;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAEf,YAAI,kBAAkB;AAGtB,cAAM,QAAQ,IAAI,iBAAiB,QAAQ,UAAU;AAGrD,cAAM,mBAAmB,CAAC;AAG1B,YAAI,0BAA0B,oBAAI,IAAI;AAOtC,iBAAS,oBAAoBC,OAAM;AAClC,cAAI,WAAW;AAEf,cACCA,UACCA,MAAK,SAAS,wBACd,CAAC,sBAAsB,uBAAuB,IAC9C;AAED,gBAAI,MAAM,SAAS;AAClB,oBAAM,MAAMA,KAAI;AAChB;AAAA,YACD;AAGA,gBAAI,MAAM,SAASA,KAAI,GAAG;AACzB;AAAA,YACD;AAGA,gBAAI,MAAM,cAAcA,KAAI,GAAG;AAC9B,oBAAM,MAAMA,KAAI;AAChB;AAAA,YACD;AAEA,uBAAWA;AAAA,UACZ;AAMA,cAAI,CAAC,MAAM,SAAS;AACnB,oBAAQ,OAAO;AAAA,cACd,WAAW;AAAA,cACX,KAAK,MAAM;AAAA,cACX,MAAM,MAAM;AAAA,YACb,CAAC;AAAA,UACF;AAGA,gBAAM,MAAM,QAAQ;AAAA,QACrB;AAEA,eAAO;AAAA;AAAA,UAEN,kBAAkB;AACjB,6BAAiB,KAAK,uBAAuB;AAC7C,sCAA0B,oBAAI,IAAI;AAAA,UACnC;AAAA,UAEA,gBAAgB;AACf,sCAA0B,iBAAiB,IAAI;AAAA,UAChD;AAAA,UAEA,kCAAkC,SAAS;AAC1C,oCAAwB,IAAI,OAAO;AAAA,UACpC;AAAA,UAEA,gCAAgC,SAAS;AACxC,oCAAwB,OAAO,OAAO;AAAA,UACvC;AAAA,UAEA,qBAAqB,SAAS;AAC7B,oCAAwB,OAAO,OAAO;AAAA,UACvC;AAAA,UAEA,uBAAuB,SAAS;AAC/B,oCAAwB,IAAI,OAAO;AAAA,UACpC;AAAA;AAAA,UAGA,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,UAChB,kBAAkB;AAAA,UAClB,mBAAmB;AAAA,UACnB,mBAAmB;AAAA,UACnB,kBAAkB;AAAA,UAClB,qBAAqB;AAAA,UACrB,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,mBAAmB;AAAA,UACnB,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,UACjB,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UAEd,oBAAoBA,OAAM;AACzB,gBACCA,MAAK,SAAS,SACdA,MAAK,aAAa,KAAK,aAAa,GACnC;AACD,kCAAoBA,KAAI;AAAA,YACzB;AAAA,UACD;AAAA,UAEA,gBAAgB;AAAA,UAChB,eAAe;AAAA,UACf,wBAAwB;AAAA,UACxB,0BAA0B;AAAA,UAC1B,sBAAsB;AAAA,UAEtB,iBAAiB;AAChB,gCAAoB;AAAA,UACrB;AAAA;AAAA;AAAA;AAAA;AAAA,UAMA,yCAAyC;AACxC,8BAAkB;AAAA,cACjB,OAAO;AAAA,cACP,cAAc;AAAA,YACf;AAAA,UACD;AAAA,UACA,4CAA4CA,OAAM;AACjD,kBAAM,EAAE,aAAa,IAAI;AAEzB,8BAAkB,gBAAgB;AAGlC,gBAAI,CAACA,MAAK,MAAM,MAAM;AACrB;AAAA,YACD;AAEA,kBAAM,kBAAkBA,MAAK,OAAO;AAEpC,gBAAI,gBAAgB,cAAc,CAAC,cAAc;AAChD,yBAAW,WAAW,gBAAgB,KAAK,MAAM;AAChD,oBACC,QAAQ,SAAS,wBACjB,CAAC,QAAQ,QACR;AACD,sCAAoB,OAAO;AAAA,gBAC5B;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UACA,kCAAkC;AACjC,gBAAI,iBAAiB;AACpB,8BAAgB,eAAe;AAAA,YAChC;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClSA;AAAA,yDAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,EAAE,sBAAsB,IAAI;AAMlC,QAAM,eAAe;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAQA,aAAS,gBAAgBC,OAAM;AAC9B,YAAM,SAASA,MAAK;AAEpB,UAAI,QAAQ;AACX,gBAAQ,OAAO,MAAM;AAAA,UACpB,KAAK;AACJ,mBAAOA,UAAS,OAAO;AAAA,UACxB,KAAK;AACJ,mBAAOA,UAAS,OAAO;AAAA,UACxB,KAAK;AACJ,mBAAOA,WAAU,OAAO,UAAU,OAAO,QAAQ,OAAO;AAAA,UACzD,KAAK;AAAA,UACL,KAAK;AACJ,mBAAOA,UAAS,OAAO;AAAA,QAGzB;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,cAAc,MAAM,MAAM;AAClC,aAAO,KAAK,OAAO,OAAK,CAAC,KAAK,SAAS,CAAC,CAAC;AAAA,IAC1C;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;AAAA,QAE/B,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,gBACA,aAAa;AAAA,cACd;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,SAAS;AAAA,QACV;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,QAAQ,iBAAiB,CAAC,IAAI,QAAQ;AAC/C,cAAM,mBAAmB,cAAc,cAAc,gBAAgB,GACpE,eAAe,iBAAiB,KAAK,GAAG,GACxC,wBAAwB,oBAAI,IAAI,GAChC,gBAAgB,oBAAI,IAAI;AAEzB,cAAM,mBAAmB,CAAC;AAC1B,YAAI,0BAA0B,oBAAI,IAAI;AAEtC,eAAO;AAAA,UACN,kBAAkB;AACjB,6BAAiB,KAAK,uBAAuB;AAC7C,sCAA0B,oBAAI,IAAI;AAAA,UACnC;AAAA,UAEA,gBAAgB;AACf,sCAA0B,iBAAiB,IAAI;AAAA,UAChD;AAAA,UAEA,kCAAkC,SAAS;AAC1C,oCAAwB,IAAI,OAAO;AAAA,UACpC;AAAA,UAEA,gCAAgC,SAAS;AACxC,oCAAwB,OAAO,OAAO;AAAA,UACvC;AAAA,UAEA,qBAAqB,SAAS;AAC7B,oCAAwB,OAAO,OAAO;AAAA,UACvC;AAAA,UAEA,uBAAuB,SAASC,OAAM;AACrC,oCAAwB,IAAI,OAAO;AAEnC,gBAAI,gBAAgBA,KAAI,GAAG;AAC1B,oBAAM,OAAOA,MAAK;AAElB,oCAAsB,IAAI,SAAS,IAAI;AAAA,YACxC;AAAA,UACD;AAAA,UAEA,sBAAsB,GAAG,WAAWA,OAAM;AACzC,kBAAM,OAAO,sBAAsB,IAAI,SAAS;AAYhD,gBAAIA,UAAS,QAAQA,MAAK,SAAS,qBAAqB;AAEvD,4BAAc,OAAO,IAAI;AAAA,YAC1B;AAAA,UACD;AAAA,UAEA,CAAC,YAAY,EAAEA,OAAM;AAKpB,gBAAI,sBAAsB,uBAAuB,GAAG;AACnD,4BAAc,IAAIA,KAAI;AAAA,YACvB;AAAA,UACD;AAAA,UAEA,iBAAiB;AAChB,0BAAc;AAAA,cAAQ,CAAAA,UACrB,QAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,UAAU,CAAC;AAAA,YAC9C;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AChLA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,kCACL;AACD,QAAM,2BACL;AACD,QAAM,8BACL;AAOD,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,aAAa;AAAA,QACd;AAAA,MACD;AAAA,MACA,OAAO,SAAS;AAMf,iBAAS,eAAeC,OAAM;AAC7B,iBACCA,MAAK,OAAO,SAAS,kBACrBA,MAAK,OAAO,cAAcA;AAAA,QAE5B;AAQA,iBAAS,iBAAiBA,OAAM,OAAO;AACtC,cAAI,cAAc;AAClB,cAAI;AAEJ,cAAIA,MAAK,SAAS,oBAAoB,CAACA,MAAK,OAAO;AAClD,+BAAmB;AAAA,UACpB,WAAWA,MAAK,SAAS,qBAAqB;AAC7C,+BAAmB;AAAA,UACpB,OAAO;AACN,+BAAmB;AAAA,UACpB;AAEA,mBACK,cAAcA,OAClB,eAAe,CAAC,iBAAiB,KAAK,YAAY,IAAI,GACtD,cAAc,YAAY,QACzB;AACD,gBACC,YAAY,OAAO,SACnB,SACA,YAAY,OAAO,MAAM,SAAS,MAAM,MACvC;AACD,4BAAc;AAAA,YACf;AACA,gBAAI,eAAe,WAAW,GAAG;AAChC,kBAAI,SAAS,aAAa;AACzB,uBAAO;AAAA,cACR;AACA,qBAAO;AAAA,YACR;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AAOA,iBAAS,MAAMA,OAAM;AACpB,cAAI,iBAAiBA,OAAMA,MAAK,KAAK,GAAG;AACvC,oBAAQ,OAAO;AAAA,cACd,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,UAAUA,MAAK;AAAA,cAChB;AAAA,cACA,MAAAA;AAAA,cACA,MAAMA,MAAK,IAAI;AAAA,cACf,QAAQA,MAAK,IAAI;AAAA,YAClB,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACtHA;AAAA,wDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAWjB,aAAS,yBAAyB,IAAI;AACrC,aAAO,OAAO,QAAQ,OAAO;AAAA,IAC9B;AAOA,aAAS,6BAA6B,IAAI;AACzC,aAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,OAAO;AAAA,IAC1D;AAOA,aAAS,WAAWC,OAAM;AACzB,aAAOA,MAAK,SAAS,qBAAqBA,MAAK,aAAa;AAAA,IAC7D;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,6BAA6B;AAAA,UAC9B;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,gBAAgB;AAAA,QAEhB,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,6BAA6B;AAAA,gBAC5B,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QAET,UAAU;AAAA,UACT,YACC;AAAA,UACD,0BACC;AAAA,UACD,8BACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,CAAC,EAAE,4BAA4B,CAAC,IAAI,QAAQ;AAElD,eAAO;AAAA,UACN,iBAAiBC,OAAM;AACtB,kBAAM,WAAWA,MAAK;AACtB,kBAAM,8BACL,+BACA,6BAA6B,QAAQ;AAEtC,iBACE,yBAAyB,QAAQ,KACjC,gCACD,WAAWA,MAAK,IAAI,KACpB,CAAC,SAAS,gBAAgB,YAAYA,MAAK,IAAI,GAC9C;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAKA,MAAK,KAAK;AAAA,gBACf,WAAW;AAAA,gBACX,MAAM,EAAE,SAAS;AAAA,gBACjB,SAAS;AAAA,kBACR;AAAA,oBACC,WAAW;AAAA,oBACX,MAAM,EAAE,SAAS;AAAA,oBACjB,IAAI,OAAO;AACV,4BAAM,gBACL,WAAW,cAAcA,MAAK,IAAI;AACnC,4BAAM,WAAW;AAAA,wBAChB,cAAc,MAAM,CAAC;AAAA,wBACrBA,MAAK,MAAM,CAAC;AAAA,sBACb;AACA,4BAAMC,QAAO,WAAW,KAAK;AAAA,wBAC5B,SAAS,CAAC;AAAA,wBACV,SAAS,CAAC;AAAA,sBACX;AAEA,6BAAO,MAAM;AAAA,wBACZ;AAAA,wBACA,IAAIA,KAAI;AAAA,sBACT;AAAA,oBACD;AAAA,kBACD;AAAA,kBACA;AAAA,oBACC,WAAW;AAAA,oBACX,IAAI,OAAO;AACV,6BAAO,MAAM;AAAA,wBACZD,MAAK;AAAA,wBACL,IAAI,WAAW,QAAQA,MAAK,IAAI,CAAC;AAAA,sBAClC;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACvJA;AAAA,iEAAAE,UAAAC,SAAA;AAAA;AAOA,QAAM,8BAA8B,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC;AAC3E,QAAM,8BAA8B,oBAAI,IAAI;AAAA,MAC3C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AACD,QAAM,8BAA8B,oBAAI,IAAI,CAAC,MAAM,YAAY,CAAC;AAOhE,aAAS,uBAAuBC,OAAM;AACrC,aAAOA,MAAK,SAAS,mBAAmBA,MAAK,SAAS;AAAA,IACvD;AAGA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,6BAA6B;AAAA,UAC9B;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QACA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,6BAA6B;AAAA,gBAC5B,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,SAAS;AAAA,QACT,UAAU;AAAA,UACT,qBACC;AAAA,UACD,kBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,4BAA4B,CAAC,IAAI,QAAQ;AAOlD,iBAAS,kBAAkBC,OAAM;AAChC,kBAAQ,OAAO;AAAA,YACd,WAAW;AAAA,YACX,MAAAA;AAAA,UACD,CAAC;AAAA,QACF;AAOA,iBAAS,uBAAuBA,OAAM;AACrC,kBAAQ,OAAO;AAAA,YACd,WAAW;AAAA,YACX,MAAAA;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,2BAA2BA,OAAM,YAAY;AACrD,cAAI,CAACA,OAAM;AACV;AAAA,UACD;AACA,kBAAQA,MAAK,MAAM;AAAA,YAClB,KAAK;AACJ,kBAAIA,MAAK,aAAa,QAAQA,MAAK,aAAa,MAAM;AACrD,2CAA2BA,MAAK,OAAO,UAAU;AAAA,cAClD,WAAWA,MAAK,aAAa,MAAM;AAClC,2CAA2BA,MAAK,MAAM,UAAU;AAChD,2CAA2BA,MAAK,OAAO,UAAU;AAAA,cAClD;AACA;AAAA,YACD,KAAK;AACJ;AAAA,gBACCA,MAAK,YAAY,GAAG,EAAE;AAAA,gBACtB;AAAA,cACD;AACA;AAAA,YACD,KAAK;AACJ,yCAA2BA,MAAK,YAAY,UAAU;AACtD,yCAA2BA,MAAK,WAAW,UAAU;AACrD;AAAA,YACD,KAAK;AACJ,yCAA2BA,MAAK,UAAU,UAAU;AACpD;AAAA,YACD,KAAK;AACJ,yBAAWA,KAAI;AACf;AAAA,YACD;AACC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,iBAAiBA,OAAM;AAC/B,qCAA2BA,OAAM,iBAAiB;AAAA,QACnD;AAOA,iBAAS,sBAAsBA,OAAM;AACpC,qCAA2BA,OAAM,sBAAsB;AAAA,QACxD;AAEA,eAAO;AAAA,UACN,0CAA0CA,OAAM;AAC/C,gBAAI,uBAAuBA,MAAK,IAAI,GAAG;AACtC,+BAAiBA,MAAK,KAAK;AAAA,YAC5B;AAAA,UACD;AAAA,UACA,oCAAoCA,OAAM;AACzC,6BAAiBA,MAAK,UAAU;AAAA,UACjC;AAAA,UACA,eAAeA,OAAM;AACpB,gBAAI,CAACA,MAAK,UAAU;AACnB,+BAAiBA,MAAK,MAAM;AAAA,YAC7B;AAAA,UACD;AAAA,UACA,cAAcA,OAAM;AACnB,6BAAiBA,MAAK,MAAM;AAAA,UAC7B;AAAA,UACA,mBAAmBA,OAAM;AACxB,gBAAI,uBAAuBA,MAAK,EAAE,GAAG;AACpC,+BAAiBA,MAAK,IAAI;AAAA,YAC3B;AAAA,UACD;AAAA,UACA,iBAAiBA,OAAM;AACtB,gBAAI,CAACA,MAAK,UAAU;AACnB,+BAAiBA,MAAK,MAAM;AAAA,YAC7B;AAAA,UACD;AAAA,UACA,yBAAyBA,OAAM;AAC9B,6BAAiBA,MAAK,GAAG;AAAA,UAC1B;AAAA,UACA,eAAeA,OAAM;AACpB,6BAAiBA,MAAK,KAAK;AAAA,UAC5B;AAAA,UACA,cAAcA,OAAM;AACnB,gBAAIA,MAAK,UAAUA,MAAK,OAAO,SAAS,oBAAoB;AAC3D,+BAAiBA,MAAK,QAAQ;AAAA,YAC/B;AAAA,UACD;AAAA,UACA,iBAAiBA,OAAM;AACtB,gBAAI,4BAA4B,IAAIA,MAAK,QAAQ,GAAG;AACnD,+BAAiBA,MAAK,KAAK;AAAA,YAC5B;AACA,gBACC,+BACA,4BAA4B,IAAIA,MAAK,QAAQ,GAC5C;AACD,oCAAsBA,MAAK,KAAK;AAChC,oCAAsBA,MAAK,IAAI;AAAA,YAChC;AAAA,UACD;AAAA,UACA,cAAcA,OAAM;AACnB,6BAAiBA,MAAK,MAAM;AAAA,UAC7B;AAAA,UACA,gBAAgBA,OAAM;AACrB,gBACC,+BACA,4BAA4B,IAAIA,MAAK,QAAQ,GAC5C;AACD,oCAAsBA,MAAK,QAAQ;AAAA,YACpC;AAAA,UACD;AAAA,UACA,qBAAqBA,OAAM;AAC1B,gBACC,+BACA,4BAA4B,IAAIA,MAAK,QAAQ,GAC5C;AACD,oCAAsBA,MAAK,KAAK;AAAA,YACjC;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5NA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAMA,QAAM,WAAW;AAUjB,aAAS,aAAa;AACrB,aAAO;AAAA,IACR;AAMA,aAAS,cAAc;AACtB,aAAO;AAAA,IACR;AAGA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,mBAAmB;AAAA,gBAClB,MAAM;AAAA,cACP;AAAA,cACA,cAAc;AAAA,gBACb,MAAM;AAAA,cACP;AAAA,cACA,sBAAsB;AAAA,gBACrB,MAAM;AAAA,cACP;AAAA,cACA,eAAe;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,cACA,kBAAkB;AAAA,gBACjB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,gBAAgB;AAAA,UACf;AAAA,YACC,mBAAmB;AAAA,YACnB,cAAc;AAAA,YACd,sBAAsB;AAAA,YACtB,eAAe;AAAA,YACf,kBAAkB;AAAA,UACnB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,kBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM;AAAA,UACL;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD,IAAI,QAAQ;AAOZ,iBAAS,mBAAmBC,OAAM;AACjC,iBACCA,MAAK,SAAS,yBACdA,MAAK,WAAW,SAAS,aACzB,OAAOA,MAAK,WAAW,UAAU;AAAA,QAEnC;AAQA,iBAAS,UAAU,WAAWC,OAAM;AACnC,mBAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,EAAE,GAAG;AACrC,gBAAI,CAAC,UAAUA,MAAK,CAAC,CAAC,GAAG;AACxB,qBAAOA,MAAK,MAAM,GAAG,CAAC;AAAA,YACvB;AAAA,UACD;AACA,iBAAOA,MAAK,MAAM;AAAA,QACnB;AAOA,iBAAS,WAAWD,OAAM;AACzB,iBAAO,UAAU,oBAAoBA,MAAK,IAAI;AAAA,QAC/C;AAOA,iBAAS,YAAYA,OAAM;AAO1B,iBACC,SAAS,8BAA8BA,KAAI,KAC3C,WAAWA,MAAK,MAAM,EAAE,SAASA,KAAI;AAAA,QAEvC;AAMA,cAAM,UAAU,OAAO,OAAO,uBAAO,OAAO,IAAI,GAAG;AAAA,UAClD,aAAaA,OAAM;AAClB,oBAAQ,QAAQA,MAAK,IAAI,KAAK,aAAaA,KAAI;AAAA,UAChD;AAAA,UAEA,iBAAiB;AAAA,UACjB,yBAAyB;AAAA,UACzB,kBAAkB;AAAA,UAClB,gBAAgBA,OAAM;AACrB,mBAAO,QAAQ,aAAaA,MAAK,UAAU;AAAA,UAC5C;AAAA,UACA,iBAAiB;AAAA,UACjB,sBAAsBA,OAAM;AAC3B,gBAAI,cAAc;AACjB,qBACC,QAAQ,aAAaA,MAAK,UAAU,KACpC,QAAQ,aAAaA,MAAK,SAAS;AAAA,YAErC;AACA,mBAAO;AAAA,UACR;AAAA,UACA,oBAAoB;AAAA,UACpB,YAAY;AAAA,UACZ,aAAa;AACZ,mBAAO;AAAA,UACR;AAAA,UACA,cAAc;AACb,mBAAO;AAAA,UACR;AAAA,UACA,SAAS;AAAA,UACT,kBAAkBA,OAAM;AACvB,gBAAI,mBAAmB;AACtB,qBAAO,QAAQ,aAAaA,MAAK,KAAK;AAAA,YACvC;AACA,mBAAO;AAAA,UACR;AAAA,UACA,kBAAkB;AAAA,UAClB,cAAc;AAAA,UACd,kBAAkB;AAAA,UAClB,oBAAoB;AAAA,UACpB,2BAA2B;AAC1B,mBAAO,CAAC;AAAA,UACT;AAAA,UACA,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,gBAAgBA,OAAM;AACrB,mBAAOA,MAAK,aAAa,UAAUA,MAAK,aAAa;AAAA,UACtD;AAAA;AAAA,UAEA,eAAeA,OAAM;AACpB,mBAAO,QAAQ,aAAaA,MAAK,UAAU;AAAA,UAC5C;AAAA,UACA,gBAAgBA,OAAM;AACrB,mBAAO,QAAQ,aAAaA,MAAK,UAAU;AAAA,UAC5C;AAAA,UACA,oBAAoBA,OAAM;AACzB,mBAAO,QAAQ,aAAaA,MAAK,UAAU;AAAA,UAC5C;AAAA,UACA,0BAA0BA,OAAM;AAC/B,mBAAO,QAAQ,aAAaA,MAAK,UAAU;AAAA,UAC5C;AAAA,QACD,CAAC;AAED,eAAO;AAAA,UACN,oBAAoBA,OAAM;AACzB,gBACC,QAAQ,aAAaA,MAAK,UAAU,KACpC,CAAC,SAAS,YAAYA,KAAI,KAC1B,EAAE,oBAAoB,YAAYA,KAAI,IACrC;AACD,sBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,mBAAmB,CAAC;AAAA,YACvD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACjOA;AAAA,sDAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,SAAS;AAAA,QAET,UAAU;AAAA,UACT,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,YAAI,YAAY;AAOhB,iBAAS,kBAAkBC,OAAM;AAChC,sBAAY;AAAA,YACX,OAAOA,MAAK,MAAM;AAAA,YAClB,MAAM;AAAA,YACN,OAAO;AAAA,UACR;AAAA,QACD;AAUA,iBAAS,UAAUA,OAAM;AAKxB,cACC,WAAW,cAAcA,MAAK,OAAO;AAAA,YACpC,iBAAiB;AAAA,UAClB,CAAC,MACD,WAAW,eAAeA,MAAK,MAAM,EAAE,iBAAiB,KAAK,CAAC,GAC7D;AACD,mBAAO;AAAA,UACR;AAGA,cAAI,WAAWA,MAAK;AAEpB,iBAAO,SAAS,SAAS,oBAAoB;AAC5C,uBAAW,SAAS;AAAA,UACrB;AAEA,cACC,SAAS,SAAS,aACjB,SAAS,SAAS,oBAClB,SAAS,WAAW,SAAS,MAAM,GACnC;AACD,kBAAM,EAAE,KAAK,IAAIA;AAEjB,gBACC,KAAK,SAAS,0BACZ,KAAK,WAAW,SAAS,aAC1B,OAAO,KAAK,WAAW,UAAU,YACjC,SAAS,wBAAwB,KAAK,UAAU,IAChD;AACD,qBAAO;AAAA,YACR;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AAQA,iBAAS,iBAAiBA,OAAM;AAC/B,cAAI,CAAC,UAAU,MAAM;AACpB,oBAAQ,OAAO;AAAA,cACd,MAAMA,MAAK;AAAA,cACX,WAAW;AAAA,cACX,MAAMA,MAAK;AAAA,cACX,KAAK,UAAUA,KAAI,IAChB,WACA,MAAM,YAAY;AAAA,gBACjBA,MAAK,MAAM,CAAC;AAAA,gBACZA,MAAK,KAAK,MAAM,CAAC;AAAA,cAClB,CAAC,IACD;AAAA,YACJ,CAAC;AAAA,UACF;AAEA,sBAAY,UAAU;AAAA,QACvB;AAQA,iBAAS,WAAWA,OAAM;AACzB,cAAI,CAACA,MAAK,OAAO;AAChB;AAAA,UACD;AAEA,gBAAM,QAAQA,MAAK,MAAM;AACzB,cAAI,OAAO;AAEX,iBAAO,MAAM;AACZ,gBAAI,KAAK,UAAU,OAAO;AACzB,mBAAK,OAAO;AACZ;AAAA,YACD;AACA,mBAAO,KAAK;AAAA,UACb;AAAA,QACD;AAEA,eAAO;AAAA,UACN,kBAAkB;AAAA,UAClB,yBAAyB;AAAA,UACzB,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC7JA;AAAA,qEAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QACN,gBAAgB;AAAA,QAEhB,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,0BACC;AAAA,UACD,gCACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,iBAAiB,CAAC;AAOxB,iBAAS,kBAAkB,aAAa;AACvC,iBAAO,YAAY,MAAM,CAAC,IAAI,YAAY,IAAI,MAAM;AAAA,QACrD;AAOA,iBAAS,gBAAgB,aAAa;AACrC,iBACC,WAAW,eAAe,aAAa;AAAA,YACtC,iBAAiB;AAAA,UAClB,CAAC,EAAE,IAAI,IAAI,SAAS,YAAY,IAAI,MAAM;AAAA,QAE5C;AAOA,iBAAS,mBAAmB,iBAAiB;AAC5C,gBAAM,iBACL,WAAW,kBAAkB,eAAe;AAC7C,gBAAM,6BAA6B,eAAe;AAAA,YACjD,CAAC,SAASC,QAAOC,UAAS;AACzB,oBAAM,OACLD,SAAQC,MAAK,SAAS,IACnBA,MAAKD,SAAQ,CAAC,IACd;AAEJ,qBACC,CAAC,gBAAgB,OAAO,KACxB,KAAK,IAAI,MAAM,OAAO,QAAQ,IAAI,IAAI,OAAO;AAAA,YAE/C;AAAA,UACD;AAEA,iBAAO,eAAe,MAAM,6BAA6B,CAAC;AAAA,QAC3D;AAOA,iBAAS,2BAA2B,iBAAiB;AACpD,gBAAM,gBAAgB,WAAW,eAAe,eAAe;AAC/D,gBAAM,YAAY,WAAW,cAAc,eAAe;AAE1D,iBACC,cAAc,IAAI,IAAI,SAAS,gBAAgB,IAAI,MAAM,QACzD,UAAU,IAAI,MAAM,SAAS,gBAAgB,IAAI,IAAI;AAAA,QAEvD;AAUA,iBAAS,oBAAoB,iBAAiB;AAC7C,cAAI,2BAA2B,eAAe,GAAG;AAChD,mBAAO,CAAC;AAAA,UACT;AAEA,iBAAO,WACL,iBAAiB,eAAe,EAChC;AAAA,YACA,aACC,QAAQ,IAAI,MAAM,SAAS,gBAAgB,IAAI,IAAI;AAAA,UACrD;AAAA,QACF;AAOA,iBAAS,2BAA2B,iBAAiB;AACpD,gBAAM,YAAY,WAAW,cAAc,eAAe;AAE1D,cACC,SAAS,iCAAiC,SAAS,KACnD,SAAS,wBAAwB,YAAY,eAAe,GAC3D;AACD,mBAAO,WAAW,eAAe,eAAe;AAAA,UACjD;AAEA,iBAAO;AAAA,QACR;AAOA,iBAAS,sBAAsB,iBAAiB;AAC/C,gBAAM,kBAAkB,mBAAmB,eAAe;AAC1D,gBAAM,mBAAmB,oBAAoB,eAAe;AAC5D,gBAAM,8BACL,gBAAgB,SAAS,KACzB,CAAC,2BAA2B,eAAe;AAC5C,gBAAM,mBACL,iBAAiB,SAAS,IACvB,iBAAiB,GAAG,EAAE,IACtB;AAEJ,gBAAM,gBAAgB,WAAW,eAAe,eAAe;AAC/D,gBAAM,YAAY,WAAW,cAAc,kBAAkB;AAAA,YAC5D,iBAAiB;AAAA,UAClB,CAAC;AACD,gBAAM,2BACL,UAAU,IAAI,MAAM,OAAO,iBAAiB,IAAI,IAAI;AACrD,gBAAM,sBACL,CAAC,+BACD,gBAAgB,eAAe,KAC/B;AACD,cAAI,QAAQ,gBAAgB,MAAM,CAAC;AACnC,cAAI,MAAM,iBAAiB,MAAM,CAAC;AAElC,cAAI,6BAA6B;AAChC,oBAAQ,2BACL,kBAAkB,gBAAgB,CAAC,CAAC,IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;AAC7B,kBAAM,2BACH,kBAAkB,SAAS,IAC3B,UAAU,MAAM,CAAC;AAAA,UACrB,WAAW,qBAAqB;AAC/B,oBAAQ,kBAAkB,eAAe;AACzC,kBAAM,kBAAkB,SAAS;AAAA,UAClC,WACC,cAAc,IAAI,IAAI,SAAS,gBAAgB,IAAI,MAAM,MACxD;AACD,oBAAQ,cAAc,MAAM,CAAC;AAAA,UAC9B,WACC,UAAU,IAAI,MAAM,SAAS,iBAAiB,IAAI,IAAI,MACrD;AACD,kBAAM,UAAU,MAAM,CAAC;AAAA,UACxB;AAEA,iBAAO,CAAC,OAAO,GAAG;AAAA,QACnB;AAQA,iBAAS,sBAAsB,uBAAuB;AACrD,gBAAM,kBAAkB,sBAAsB,OAAO;AACrD,gBAAM,yBACL,gBAAgB,SAAS;AAE1B,cACC,CAAC,0BACD,gBAAgB,SAAS,oBACzB,gBAAgB,SAAS,oBACzB,gBAAgB,SAAS,qBACxB;AACD,mBAAO;AAAA,UACR;AAGA,cAAI,gBAAgB,SAAS,sBAAsB,QAAQ;AAC1D,mBAAO;AAAA,UACR;AAGA,cAAI,0BAA0B,gBAAgB,aAAa,KAAK;AAK/D,mBAAO,gBAAgB,OAAO,SAAS;AAAA,UACxC;AAEA,iBAAO;AAAA,QACR;AAMA,eAAO;AAAA;AAAA,UAEN,UAAU,eAAe;AACxB,kBAAM,iBAAiB,oBAAI,IAAI;AAE/B,2BAAe,QAAQ,cAAc;AACrC,uBAAW,cAAc,cAAc,MAAM;AAC5C,kBACC,WAAW,SAAS,wBACpB,WAAW,SAAS,oBACnB;AACD,oBAAI,WAAW,IAAI,SAAS,qBAAqB;AAChD,iCAAe,IAAI,WAAW,IAAI,MAAM;AAAA,oBACvC,cAAc;AAAA,oBACd,cAAc;AAAA,oBACd,YACC,WAAW,SAAS,uBACnB,WAAW,SAAS,SACpB,WAAW,SAAS;AAAA,kBACvB,CAAC;AAAA,gBACF;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA,UAMA,kBAAkB,uBAAuB;AACxC,kBAAM,YAAY,eAAe;AAAA,cAAK,qBACrC,gBAAgB,IAAI,sBAAsB,IAAI;AAAA,YAC/C;AAGA,gBAAI,CAAC,WAAW;AACf;AAAA,YACD;AAGA,kBAAM,mBAAmB,UAAU;AAAA,cAClC,sBAAsB;AAAA,YACvB;AAEA,gBAAI,iBAAiB,QAAQ;AAC5B;AAAA,YACD;AAGA,gBACC,sBAAsB,OAAO,SAC5B,wBACD,sBAAsB,OAAO,SAAS,oBACrC;AACD;AAAA,YACD;AAEA,6BAAiB,eAAe;AAMhC,gBAAI,iBAAiB,YAAY;AAChC,+BAAiB,SAAS;AAC1B;AAAA,YACD;AAGA,gBAAI,sBAAsB,qBAAqB,GAAG;AACjD;AAAA,YACD;AAEA,kBAAM,yBACL,sBAAsB,OAAO,OAAO;AACrC,kBAAM,iCACL,sBAAsB,OAAO,OAAO,OAAO;AAG5C,gBACC,2BAA2B,sBAC3B,mCAAmC,uBAClC;AACD;AAAA,YACD;AAQA,gBACC,2BAA2B,cAC3B,mCAAmC,mBACnC,sBAAsB,OAAO,OAAO,UACnC,sBAAsB,QACtB;AACD;AAAA,YACD;AAGA,gBAAI,2BAA2B,eAAe;AAC7C;AAAA,YACD;AAGA,gBAAI,2BAA2B,gBAAgB;AAC9C;AAAA,YACD;AAQA,6BAAiB,SAAS;AAAA,UAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,mBAAmB;AAClB,kBAAM,uBAAuB,eAAe,MAAM;AAElD,uBAAW;AAAA,cACV;AAAA,cACA,EAAE,cAAc,cAAc,OAAO;AAAA,YACtC,KAAK,qBAAqB,QAAQ,GAAG;AACpC,kBAAI,QAAQ;AACX;AAAA,cACD;AAEA,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,KAAK,aAAa,IAAI;AAAA,gBACtB,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL,iBAAiB,IAAI,eAAe;AAAA,gBACrC;AAAA,gBACA,SAAS;AAAA,kBACR;AAAA,oBACC,WAAW;AAAA,oBACX,MAAM;AAAA,sBACL,iBAAiB,IAAI,eAAe;AAAA,oBACrC;AAAA,oBACA,CAAC,IAAI,OAAO;AACX,0BAAI,cAAc;AACjB;AAAA,sBACD;AAEA,4BAAM,eACL,sBAAsB,YAAY;AACnC,4BAAM,0BACL;AAAA,wBACC;AAAA,sBACD;AACD,4BAAM,aAAa,MAAM;AAAA,wBACxB;AAAA,wBACA;AAAA,sBACD;AAEA,4BAAM;AAEN,0BAAI,yBAAyB;AAC5B,8BAAM,MAAM;AAAA,0BACX;AAAA,0BACA;AAAA,wBACD;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClaA;AAAA,oDAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAqCjB,QAAM,kBAAkB;AAAA,MACvB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,oBAAoB;AAAA,MACpB,cAAc;AAAA,MACd,gCAAgC;AAAA,MAChC,yBAAyB;AAAA,MACzB,yBAAyB;AAAA,IAC1B;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,gBAAgB;AAAA,QAEhB,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM,CAAC,OAAO,OAAO;AAAA,cACtB;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,MAAM;AAAA,oBACL,MAAM,CAAC,OAAO,OAAO;AAAA,kBACtB;AAAA,kBACA,mBAAmB;AAAA,oBAClB,MAAM;AAAA,kBACP;AAAA,kBACA,MAAM;AAAA,oBACL,MAAM,CAAC,OAAO,cAAc,MAAM;AAAA,kBACnC;AAAA,kBACA,oBAAoB;AAAA,oBACnB,MAAM;AAAA,kBACP;AAAA,kBACA,mBAAmB;AAAA,oBAClB,MAAM;AAAA,kBACP;AAAA,kBACA,cAAc;AAAA,oBACb,MAAM,CAAC,OAAO,MAAM;AAAA,kBACrB;AAAA,kBACA,2BAA2B;AAAA,oBAC1B,MAAM;AAAA,kBACP;AAAA,kBACA,gCAAgC;AAAA,oBAC/B,MAAM;AAAA,kBACP;AAAA,kBACA,gCAAgC;AAAA,oBAC/B,MAAM;AAAA,kBACP;AAAA,kBACA,yBAAyB;AAAA,oBACxB,MAAM;AAAA,kBACP;AAAA,kBACA,yBAAyB;AAAA,oBACxB,MAAM;AAAA,kBACP;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,eAAe;AAAA,QAEhC,UAAU;AAAA,UACT,WACC;AAAA,UACD,gBACC;AAAA,UACD,WAAW;AAAA,QACZ;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,cAAM,qBACL;AAED,YAAI;AAEJ,cAAM,cAAc,QAAQ,QAAQ,CAAC;AAErC,YAAI,OAAO,gBAAgB,UAAU;AACpC,mBAAS;AAAA,YACR,GAAG;AAAA,YACH,MAAM;AAAA,UACP;AAAA,QACD,OAAO;AACN,mBAAS;AAAA,YACR,GAAG;AAAA,UACJ;AAEA,cAAI,YAAY,mBAAmB;AAClC,mBAAO,oBAAoB,IAAI;AAAA,cAC9B,YAAY;AAAA,cACZ;AAAA,YACD;AAAA,UACD;AAEA,cAAI,YAAY,mBAAmB;AAClC,mBAAO,oBAAoB,IAAI;AAAA,cAC9B,YAAY;AAAA,cACZ;AAAA,YACD;AAAA,UACD;AAEA,cAAI,YAAY,2BAA2B;AAC1C,mBAAO,4BAA4B,IAAI;AAAA,cACtC,YAAY;AAAA,cACZ;AAAA,YACD;AAAA,UACD;AAEA,cAAI,YAAY,gCAAgC;AAC/C,mBAAO,iCAAiC,IAAI;AAAA,cAC3C,YAAY;AAAA,cACZ;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,kBAAkB,KAAK;AAU/B,cACC,OAAO,kCACP,IAAI,KAAK,OAAO,SAAS,gBACxB;AACD,mBAAO;AAAA,UACR;AAEA,kBAAQ,IAAI,MAAM;AAAA,YACjB,KAAK;AACJ,qBAAO;AAAA,YACR,KAAK;AACJ,qBAAO;AAAA,YAER;AACC,qBAAO;AAAA,UACT;AAAA,QACD;AAUA,iBAAS,uBAAuB,cAAc;AAC7C,cAAI;AACJ,cAAI;AAEJ,kBAAQ,cAAc;AAAA,YACrB,KAAK;AACJ,wBAAU,OAAO;AACjB,oCAAsB;AACtB;AAAA,YAED,KAAK;AACJ,wBAAU,OAAO;AACjB,oCAAsB;AACtB;AAAA,YAED,KAAK;AACJ,wBAAU,OAAO;AACjB,oCAAsB;AACtB;AAAA,YAED,KAAK;AACJ,wBAAU,OAAO;AACjB,oCAAsB;AACtB;AAAA,YAED;AACC,oBAAM,IAAI;AAAA,gBACT,6BAA6B,YAAY;AAAA,cAC1C;AAAA,UACF;AAEA,cAAI,SAAS;AACZ,sBAAU,QAAQ,SAAS;AAAA,UAC5B;AAEA,iBAAO,CAAC,qBAAqB,OAAO;AAAA,QACrC;AAQA,iBAAS,sBAAsB,WAAW;AACzC,gBAAM,MAAM,UAAU,QAAQ,UAAU,KAAK,CAAC;AAC9C,cAAI,wBAAwB;AAE5B,cAAI,KAAK;AACR,kBAAM,CAAC,qBAAqB,OAAO,IAAI;AAAA,cACtC,kBAAkB,GAAG;AAAA,YACtB;AAEA,gBAAI,WAAW,qBAAqB;AACnC,sCAAwB,oBAAoB,mBAAmB,eAAe,OAAO;AAAA,YACtF;AAAA,UACD;AAEA,iBAAO;AAAA,YACN,SAAS,UAAU;AAAA,YACnB,QAAQ;AAAA,YACR,YAAY;AAAA,UACb;AAAA,QACD;AAQA,iBAAS,uBAAuB,WAAW;AAC1C,gBAAM,MAAM,UAAU,QAAQ,UAAU,KAAK,CAAC;AAC9C,cAAI,wBAAwB;AAE5B,cAAI,KAAK;AACR,kBAAM,CAAC,qBAAqB,OAAO,IAAI;AAAA,cACtC,kBAAkB,GAAG;AAAA,YACtB;AAEA,gBAAI,WAAW,qBAAqB;AACnC,sCAAwB,oBAAoB,mBAAmB,eAAe,OAAO;AAAA,YACtF;AAAA,UACD;AAEA,iBAAO;AAAA,YACN,SAAS,UAAU;AAAA,YACnB,QAAQ;AAAA,YACR,YAAY;AAAA,UACb;AAAA,QACD;AAUA,iBAAS,0BAA0B,UAAU,cAAc;AAC1D,gBAAM,CAAC,qBAAqB,OAAO,IAClC,uBAAuB,YAAY;AAEpC,cAAI,wBAAwB;AAE5B,cAAI,WAAW,qBAAqB;AACnC,oCAAwB,UAAU,mBAAmB,mBAAmB,OAAO;AAAA,UAChF;AAEA,iBAAO;AAAA,YACN,SAAS,SAAS;AAAA,YAClB,YAAY;AAAA,UACb;AAAA,QACD;AAMA,cAAM,iBAAiB;AAQvB,iBAAS,WAAW,UAAU;AAC7B,gBAAMC,cAAa,SAAS,KAAK,CAAC;AAElC,cAAIA,aAAY;AACf,gBAAIC,QAAOD,YAAW;AAEtB,gBAAIC,MAAK,SAAS,sBAAsB;AACvC,cAAAA,QAAOA,MAAK;AAAA,YACb,WAAWD,YAAW,SAAS,aAAa;AAC3C,qBAAO;AAAA,YACR;AAEA,mBAAOC,MAAK,OAAO,KAAK,QAAQ,QAAQ,MAAM;AAAA,UAC/C;AACA,iBAAO;AAAA,QACR;AAQA,iBAAS,+BAA+B,UAAU;AACjD,gBAAM,CAACD,WAAU,IAAI,SAAS;AAE9B,iBACCA,aAAY,SAAS,eACpBA,YAAW,OAAO,SAAS,WAC3BA,YAAW,OAAO,SAAS;AAAA,QAE9B;AAOA,iBAAS,eAAeC,OAAM;AAC7B,iBACCA,MAAK,SAAS,cACdA,MAAK,OAAO,SAAS,mBACrB,mBAAmB,KAAKA,MAAK,OAAO,WAAW,GAAG,EAAE,EAAE,IAAI;AAAA,QAE5D;AAQA,iBAAS,qBAAqB,UAAU;AACvC,cAAI,OAAO,oBAAoB;AAC9B,kBAAM,2BAA2B,SAAS,KAAK;AAAA,cAAK,SACnD,eAAe,IAAI,KAAK,MAAM;AAAA,YAC/B;AACA,kBAAM,0BAA0B,SAAS,WAAW;AAAA,cAAK,SACxD,eAAe,IAAI,WAAW,MAAM;AAAA,YACrC;AAEA,mBAAO,4BAA4B;AAAA,UACpC;AAEA,iBAAO;AAAA,QACR;AAQA,iBAAS,UAAU,KAAK;AACvB,iBAAO,IAAI,OAAO;AAAA,QACnB;AASA,iBAAS,gBAAgB,KAAK,OAAO;AACpC,cAAI,QAAQ,IAAI;AAEhB,iBAAO,OAAO;AACb,gBAAI,MAAM,SAAS,MAAM,KAAK,GAAG;AAChC,qBAAO;AAAA,YACR;AAEA,oBAAQ,MAAM;AAAA,UACf;AAEA,iBAAO;AAAA,QACR;AAQA,iBAAS,uBAAuB,UAAU;AACzC,gBAAM,sBAAsB,CAAC;AAE7B,mBAAS,KAAK,QAAQ,SAAO;AAC5B,kBAAM,EAAE,MAAM,MAAAA,MAAK,IAAI;AAGvB,gBAAI,SAAS,gBAAgB;AAC5B,kCAAoB,KAAKA,KAAI;AAAA,YAC9B;AAGA,gBACC,SAAS,cACTA,MAAK,SACJA,MAAK,KAAK,SAAS,wBACnBA,MAAK,KAAK,SAAS,4BACnB;AACD,kCAAoB,KAAKA,MAAK,IAAI;AAAA,YACnC;AAAA,UACD,CAAC;AACD,iBAAO;AAAA,QACR;AASA,iBAAS,SAAS,OAAO,OAAO;AAC/B,iBACC,MAAM,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,KAC/B,MAAM,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC;AAAA,QAEjC;AAQA,iBAAS,mBAAmBA,OAAM;AACjC,gBAAM,SAASA,MAAK;AAEpB,cAAI,OAAO,SAAS,uBAAuB;AAC1C,mBAAO;AAAA,UACR;AAEA,cAAI,OAAO,SAAS,sBAAsB;AACzC,kBAAM,mBAAmB,OAAO,YAAY,GAAG,EAAE,MAAMA;AAEvD,gBAAI,CAAC,kBAAkB;AACtB,qBAAO;AAAA,YACR;AACA,mBAAO,mBAAmB,MAAM;AAAA,UACjC;AAEA,iBAAO;AAAA,QACR;AAiBA,iBAAS,WAAW,KAAK,aAAa;AACrC,gBAAM,KAAK,IAAI;AACf,gBAAM,SAAS,GAAG;AAClB,gBAAM,WAAW,IAAI,KAAK;AAC1B,gBAAM,WAAW,IAAI,SAAS,MAAM;AACpC,gBAAM,iBACL,aAAa,YAAY,SAAS,SAAS,EAAE;AAM9C,cAAI,eAAe,SAAS,IAAI,WAAW,GAAG;AAC7C,mBAAO;AAAA,UACR;AAEA,cACC,OAAO,SAAS,0BAChB,mBAAmB,MAAM,KACzB,OAAO,OAAO,QACd,CAAC,gBACA;AACD,mBAAO,OAAO;AAAA,UACf;AACA,iBAAO;AAAA,QACR;AAaA,iBAAS,mBAAmB,UAAU,SAAS;AAC9C,cAAIA,QAAO;AACX,cAAI,SAAS,SAAS;AAEtB,iBAAO,UAAU,SAAS,QAAQ,OAAO,GAAG;AAC3C,oBAAQ,OAAO,MAAM;AAAA,cACpB,KAAK;AACJ,oBAAI,OAAO,YAAY,GAAG,EAAE,MAAMA,OAAM;AACvC,yBAAO;AAAA,gBACR;AACA;AAAA,cAED,KAAK;AAAA,cACL,KAAK;AACJ,uBAAO,OAAO,WAAWA;AAAA,cAE1B,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACJ,uBAAO;AAAA,cAER;AACC,oBAAI,eAAe,KAAK,OAAO,IAAI,GAAG;AAKrC,yBAAO;AAAA,gBACR;AAAA,YACF;AAEA,YAAAA,QAAO;AACP,qBAAS,OAAO;AAAA,UACjB;AAEA,iBAAO;AAAA,QACR;AAgBA,iBAAS,2BAA2B,IAAI,SAAS;AAChD,gBAAM,WAAW,SAAS,iBAAiB,EAAE;AAE7C,iBACC,YACA,SAAS,UAAU,OAAO,KAC1B,mBAAmB,UAAU,OAAO;AAAA,QAEtC;AASA,iBAAS,gBAAgB,KAAK,SAAS;AACtC,gBAAM,KAAK,IAAI;AACf,gBAAM,SAAS,GAAG;AAElB,iBACC,IAAI,OAAO;AAAA,WAET,OAAO,SAAS,0BACjB,OAAO,SAAS,MAChB,mBAAmB,MAAM,KACzB,CAAC,SAAS,4BAA4B,OAAO,QAAQ,KACpD,OAAO,SAAS,sBAChB,mBAAmB,MAAM;AAAA,UAEzB,WACA,SAAS,IAAI,OAAO,KACpB,CAAC,2BAA2B,IAAI,OAAO;AAAA,QAE3C;AAQA,iBAAS,aAAa,KAAK;AAC1B,cAAI,SAAS,IAAI,WAAW;AAG5B,cAAI,OAAO,SAAS,sBAAsB;AACzC,qBAAS,OAAO,OAAO;AAAA,UACxB;AAEA,cACC,OAAO,SAAS,oBAChB,OAAO,SAAS,kBACf;AACD,mBAAO;AAAA,UACR;AAGA,cAAI,OAAO,KAAK,SAAS,kBAAkB;AAC1C,qBAAS,OAAO,KAAK,KAAK,CAAC;AAAA,UAG5B,OAAO;AACN,qBAAS,OAAO;AAAA,UACjB;AAGA,cAAI,CAAC,QAAQ;AACZ,mBAAO;AAAA,UACR;AAEA,iBAAO,OAAO,SAAS;AAAA,QACxB;AAQA,iBAAS,eAAe,UAAU;AACjC,cAAI,SAAS,YAAY;AACxB,mBAAO;AAAA,UACR;AAEA,gBAAM,gBAAgB,uBAAuB,QAAQ;AACrD,gBAAM,uBAAuB,cAAc,SAAS;AAEpD,cAAI,UAAU;AAEd,iBAAO,SAAS,WAAW,KAAK,SAAO;AACtC,gBAAI,aAAa,GAAG,GAAG;AACtB,qBAAO;AAAA,YACR;AAEA,kBAAM,YAAY,gBAAgB,KAAK,OAAO;AAE9C,sBAAU,WAAW,KAAK,OAAO;AAEjC,mBACC,UAAU,GAAG,KACb,CAAC,aACD,EACC,wBACA,gBAAgB,KAAK,aAAa;AAAA,UAGrC,CAAC;AAAA,QACF;AAQA,iBAAS,mBAAmB,UAAU;AACrC,gBAAM,MAAM,SAAS,KAAK,CAAC;AAC3B,gBAAM,SAAS,WAAW,qBAAqB,IAAI,IAAI;AACvD,gBAAM,kBAAkB,OAAO,MAAM,OAAO,QAAQ,QAAQ,IAAI,CAAC;AAGjE,iBAAO,CAAC,gBAAgB;AAAA,YACvB,OAAK,EAAE,WAAW,SAAS,KAAK,EAAE;AAAA,UACnC;AAAA,QACD;AASA,iBAAS,uBAAuB,OAAO,YAAY;AAClD,gBAAM,YAAY,MAAM;AACxB,gBAAM,cAAc,MAAM;AAC1B,cAAI,GAAG;AAEP,cAAI,MAAM,SAAS,YAAY,OAAO,SAAS,OAAO;AACrD,iBAAK,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC7C,oBAAM,WAAW,UAAU,CAAC;AAG5B,kBACC,MAAM,SAAS,WACf,MAAM,MAAM,OAAO,SAAS,YAAY,CAAC,GACxC;AACD;AAAA,cACD;AAGA,kBAAI,MAAM,yBAAyB;AAClC;AAAA,cACD;AAGA,kBACC,CAAC,OAAO,2BACR,SAAS,YACR;AACD;AAAA,cACD;AAGA,kBACC,MAAM,SAAS,cACf,SAAS,SAAS,eAClB,SAAS,YAAY,WAAW,GAC/B;AACD;AAAA,cACD;AAGA,oBAAM,MAAM,SAAS,KAAK,CAAC;AAE3B,kBAAI,KAAK;AACR,sBAAM,OAAO,IAAI;AACjB,sBAAM,yBAAyB,SAAS,WAAW;AAAA,kBAClD,SACC,IAAI,WAAW,OAAO,SAAS;AAAA,gBACjC;AAGA,qBACE,IAAI,KAAK,OAAO,SAAS,kBACzB,2BACD,OAAO,kCACP,OAAO,+BAA+B;AAAA,kBACrC,IAAI,KAAK;AAAA,gBACV,GACC;AACD,sBACC,OAAO,2BACP,eAAe,QAAQ,GACtB;AACD,4BAAQ,OAAO;AAAA,sBACd,MAAM,IAAI;AAAA,sBACV,WAAW;AAAA,sBACX,MAAM;AAAA,wBACL;AAAA,wBACA;AAAA,sBACD;AAAA,oBACD,CAAC;AAAA,kBACF;AAEA;AAAA,gBACD;AAEA,oBAAI,SAAS,aAAa;AACzB,wBAAM,iBAAiB,IAAI,KAAK,KAAK,KAAK;AAAA,oBACzC,CAAAA,UAAQA,MAAK,SAAS;AAAA,kBACvB;AAEA,sBACC,OAAO,kCACP,gBACC;AACD;AAAA,kBACD;AAAA,gBACD;AAGA,oBAAI,SAAS,eAAe;AAC3B,sBAAI,OAAO,iBAAiB,QAAQ;AACnC;AAAA,kBACD;AAGA,sBACC,OAAO,6BACP,OAAO,0BAA0B;AAAA,oBAChC,IAAI,KAAK;AAAA,kBACV,GACC;AACD,wBACC,OAAO,2BACP,eAAe,QAAQ,GACtB;AACD,8BAAQ,OAAO;AAAA,wBACd,MAAM,IAAI;AAAA,wBACV,WAAW;AAAA,wBACX,MAAM;AAAA,0BACL;AAAA,0BACA;AAAA,wBACD;AAAA,sBACD,CAAC;AAAA,oBACF;AAEA;AAAA,kBACD;AAAA,gBACD,WAAW,SAAS,aAAa;AAEhC,uBACE,IAAI,KAAK,OAAO,SAAS,cACzB,IAAI,KAAK,OAAO,SACf,uBACF,IAAI,KAAK,OAAO,SAAS,OACxB;AACD;AAAA,kBACD;AAGA,sBAAI,OAAO,SAAS,QAAQ;AAC3B;AAAA,kBACD;AAGA,sBACC,OAAO,qBACP,OAAO,kBAAkB,KAAK,IAAI,KAAK,IAAI,GAC1C;AACD,wBACC,OAAO,2BACP,eAAe,QAAQ,GACtB;AACD,8BAAQ,OAAO;AAAA,wBACd,MAAM,IAAI;AAAA,wBACV,WAAW;AAAA,wBACX,MAAM;AAAA,0BACL;AAAA,0BACA;AAAA,wBACD;AAAA,sBACD,CAAC;AAAA,oBACF;AAEA;AAAA,kBACD;AAGA,sBACC,OAAO,SAAS,gBAChB,SAAS,WAAW,IAAI,KAAK,MAAM,KACnC,CAAC,mBAAmB,QAAQ,GAC3B;AACD;AAAA,kBACD;AAAA,gBACD,OAAO;AAEN,sBACC,OAAO,qBACP,OAAO,kBAAkB,KAAK,IAAI,KAAK,IAAI,GAC1C;AACD,wBACC,OAAO,2BACP,eAAe,QAAQ,GACtB;AACD,8BAAQ,OAAO;AAAA,wBACd,MAAM,IAAI;AAAA,wBACV,WAAW;AAAA,wBACX,MAAM;AAAA,0BACL;AAAA,0BACA;AAAA,wBACD;AAAA,sBACD,CAAC;AAAA,oBACF;AAEA;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAEA,kBACC,CAAC,eAAe,QAAQ,KACxB,CAAC,WAAW,QAAQ,KACpB,EACC,OAAO,2BACP,+BAA+B,QAAQ,MAExC,CAAC,qBAAqB,QAAQ,GAC7B;AACD,2BAAW,KAAK,QAAQ;AAAA,cACzB;AAAA,YACD;AAAA,UACD;AAEA,eAAK,IAAI,GAAG,IAAI,YAAY,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC/C,mCAAuB,YAAY,CAAC,GAAG,UAAU;AAAA,UAClD;AAEA,iBAAO;AAAA,QACR;AAQA,iBAAS,YAAY,OAAO,WAAW;AACtC,gBAAM,KAAK,UAAU,YAAY,CAAC;AAClC,gBAAM,SAAS,GAAG;AAClB,gBAAM,aAAa,OAAO;AAC1B,gBAAM,cAAc,WAAW,eAAe,EAAE;AAChD,gBAAM,aAAa,WAAW,cAAc,EAAE;AAC9C,gBAAM,aAAa,SAAS;AAC5B,gBAAM,SAAS,SAAS;AACxB,gBAAM,qBAAqB,UAAU,WAAW;AAAA,YAAO,SACtD,IAAI,QAAQ;AAAA,UACb;AAQA,mBAAS,sBAAsBA,OAAM,OAAO;AAC3C,mBAAO,WAAW,eAAeA,OAAM,KAAK,EAAE,MAAM,CAAC;AAAA,UACtD;AAQA,mBAAS,gBAAgBA,OAAM,OAAO;AACrC,mBAAO,WAAW,cAAcA,OAAM,KAAK,EAAE,MAAM,CAAC;AAAA,UACrD;AAOA,mBAAS,oBAAoBA,OAAM;AAClC,mBAAO,WAAW,eAAeA,KAAI,EAAE;AAAA,UACxC;AAOA,mBAAS,mBAAmBA,OAAM;AACjC,mBAAO,WAAW,cAAcA,KAAI,EAAE;AAAA,UACvC;AAOA,mBAAS,iBAAiBA,OAAM;AAC/B,mBAAOA,MAAK,SAAS,OAAO,OAAK,MAAM,IAAI,EAAE,WAAW;AAAA,UACzD;AAQA,mBAAS,uBAAuBA,OAAM,MAAM;AAC3C,mBAAOA,MAAK,WAAW,KAAK,OAAK,EAAE,SAAS,IAAI;AAAA,UACjD;AAQA,mBAAS,6BAA6B,WAAW,WAAW;AAC3D,mBACC,UAAU,SAAS,YAClB,aACA,CAAC,SAAS,iBAAiB,SAAS,KACpC,CAAC,SAAS,oBAAoB,SAAS;AAAA,UAE1C;AAOA,mBAAS,sBAAsBA,OAAM;AACpC,kBAAM,aAAaA,MAAK;AAExB,gBAAI,WAAW,UAAU,GAAG;AAE3B,kBAAI,WAAW,OAAO,WAAW,GAAG;AACnC,uBAAO,MAAM,YAAYA,MAAK,KAAK;AAAA,cACpC;AAGA,kBACC,oBAAoBA,KAAI,MAAM,OAC9B,mBAAmBA,KAAI,MAAM,KAC5B;AACD,uBAAO,MAAM,YAAY;AAAA,kBACxBA,MAAK,MAAM,CAAC;AAAA,kBACZ,gBAAgBA,KAAI;AAAA,gBACrB,CAAC;AAAA,cACF;AAGA,qBAAO,MAAM,YAAY;AAAA,gBACxB,sBAAsBA,KAAI;AAAA,gBAC1BA,MAAK,MAAM,CAAC;AAAA,cACb,CAAC;AAAA,YACF;AAEA,mBAAO;AAAA,UACR;AAOA,mBAAS,aAAaA,OAAM;AAC3B,kBAAM,aAAaA,MAAK;AAGxB,gBAAI,WAAW,SAAS,sBAAsB;AAE7C,kBAAI,OAAO,WAAW,OAAO,MAAM,GAAG;AACrC,uBAAO;AAAA,cACR;AAMA,kBAAI,WAAW,OAAO,aAAa,WAAW,GAAG;AAEhD,sBAAM,YAAY,WAAW;AAAA,kBAC5B,WAAW;AAAA,gBACZ;AAGA,sBAAM,YAAY,WAAW;AAAA,kBAC5B,WAAW;AAAA,gBACZ;AAEA,oBACC,aACA,6BAA6B,WAAW,SAAS,GAChD;AACD,yBAAO;AAAA,gBACR;AAEA,uBAAO,MAAM,YAAY,WAAW,OAAO,KAAK;AAAA,cACjD;AAMA,kBAAI,oBAAoB,UAAU,MAAM,KAAK;AAC5C,uBAAO,MAAM,YAAY;AAAA,kBACxB,sBAAsB,UAAU;AAAA,kBAChC,WAAW,MAAM,CAAC;AAAA,gBACnB,CAAC;AAAA,cACF;AAMA,qBAAO,MAAM,YAAY;AAAA,gBACxB,WAAW,MAAM,CAAC;AAAA,gBAClB,gBAAgB,UAAU;AAAA,cAC3B,CAAC;AAAA,YACF;AAGA,gBAAI,oBAAoBA,KAAI,MAAM,KAAK;AACtC,kBAAI,WAAW,OAAO,SAAS,iBAAiB;AAE/C,uBAAO,4BAA4BA,KAAI;AAAA,cACxC;AAAA,YACD;AAGA,mBAAO,sBAAsBA,KAAI;AAAA,UAClC;AAOA,mBAAS,wBAAwBA,OAAM;AACtC,kBAAM,aAAaA,MAAK;AAGxB,gBACC,WAAW,OAAO,OAAO,OAAO,SAAS,mBACzC,WAAW,OAAO,WAAW,WAAW,GACvC;AACD,qBAAO,wBAAwB,WAAW,MAAM;AAAA,YACjD;AAGA,gBAAI,WAAW,OAAO,SAAS,iBAAiB;AAE/C,kBAAI,WAAW,OAAO,WAAW,WAAW,GAAG;AAC9C,uBAAO,aAAa,WAAW,MAAM;AAAA,cACtC;AAGA,kBAAI,oBAAoB,UAAU,MAAM,KAAK;AAC5C,uBAAO,MAAM,YAAY;AAAA,kBACxB,WAAW,MAAM,CAAC;AAAA,kBAClB,gBAAgB,UAAU;AAAA,gBAC3B,CAAC;AAAA,cACF;AAGA,qBAAO,MAAM,YAAY;AAAA,gBACxB,sBAAsB,UAAU;AAAA,gBAChC,WAAW,MAAM,CAAC;AAAA,cACnB,CAAC;AAAA,YACF;AAEA,mBAAO;AAAA,UACR;AAOA,mBAAS,uBAAuBA,OAAM;AACrC,kBAAM,aAAaA,MAAK;AAGxB,gBACC,WAAW,OAAO,SAAS,kBAC3B,iBAAiB,UAAU,GAC1B;AACD,qBAAO,uBAAuB,UAAU;AAAA,YACzC;AAEA,gBAAI,iBAAiB,UAAU,GAAG;AAEjC,kBAAI,oBAAoB,UAAU,MAAM,KAAK;AAC5C,uBAAO,aAAa,UAAU;AAAA,cAC/B;AAGA,kBAAI,WAAW,OAAO,SAAS,eAAe;AAE7C,uBAAO,iBAAiB,WAAW,MAAM;AAAA,cAC1C;AAGA,qBAAO,aAAa,UAAU;AAAA,YAC/B;AAGA,gBACC,oBAAoBA,KAAI,MAAM,OAC9B,mBAAmBA,KAAI,MAAM,KAC5B;AACD,qBAAO,MAAM,YAAY;AAAA,gBACxB,sBAAsBA,KAAI;AAAA,gBAC1BA,MAAK,MAAM,CAAC;AAAA,cACb,CAAC;AAAA,YACF;AAGA,mBAAO,MAAM,YAAYA,MAAK,KAAK;AAAA,UACpC;AAOA,mBAAS,4BAA4BA,OAAM;AAC1C,kBAAM,aAAaA,MAAK,OAAO;AAG/B,gBACC,WAAW,OAAO,SAAS,kBAC3B,WAAW,WAAW,WAAW,GAChC;AACD,qBAAO,uBAAuB,UAAU;AAAA,YACzC;AAGA,mBAAO,wBAAwBA,KAAI;AAAA,UACpC;AAOA,mBAAS,iBAAiBA,OAAM;AAC/B,kBAAM,aAAaA,MAAK;AAGxB,gBAAI,WAAW,UAAU,GAAG;AAC3B,kBAAI,WAAW,OAAO,WAAW,GAAG;AACnC,uBAAO,MAAM,YAAYA,MAAK,KAAK;AAAA,cACpC;AAEA,qBAAO,MAAM,YAAY;AAAA,gBACxB,sBAAsBA,KAAI;AAAA,gBAC1BA,MAAK,MAAM,CAAC;AAAA,cACb,CAAC;AAAA,YACF;AAGA,gBAAI,WAAW,SAAS,gBAAgB;AAEvC,kBAAI,iBAAiB,UAAU,GAAG;AACjC,oBAAI,WAAW,OAAO,SAAS,gBAAgB;AAC9C,yBAAO,uBAAuB,UAAU;AAAA,gBACzC;AAGA,uBAAO,aAAa,UAAU;AAAA,cAC/B;AAGA,qBAAO,MAAM,YAAY;AAAA,gBACxB,sBAAsBA,KAAI;AAAA,gBAC1BA,MAAK,MAAM,CAAC;AAAA,cACb,CAAC;AAAA,YACF;AAEA,mBAAO;AAAA,UACR;AAGA,cACC,mBAAmB;AAAA,YAClB,SAAO,IAAI,WAAW,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,UAC9C,GACC;AACD,mBAAO;AAAA,UACR;AAGA,cAAI,eAAe,sBAAsB;AACxC,gBAAI,OAAO,OAAO,aAAa,WAAW,GAAG;AAE5C,kBACC,OAAO,OAAO,OAAO,MAAM,KAC3B,OAAO,OAAO,OAAO,SAAS,OAAO,QACpC;AACD,uBAAO;AAAA,cACR;AAGA,kBACC,OAAO,OAAO,OAAO,SAAS,iBAC9B,OAAO,OAAO,OAAO,MAAM,KAC1B,OAAO,OAAO,OAAO,SAAS,mBAC9B,OAAO,OAAO,OAAO,SAAS,OAAO,QACrC;AACD,uBAAO,MAAM,YAAY,OAAO,QAAQ,GAAG;AAAA,cAC5C;AAGA,oBAAM,YAAY,WAAW,cAAc,OAAO,MAAM;AAGxD,oBAAM,YAAY,WAAW,eAAe,OAAO,MAAM;AAEzD,kBACC,aACA,6BAA6B,WAAW,SAAS,GAChD;AACD,uBAAO;AAAA,cACR;AAGA,qBAAO,MAAM,YAAY,OAAO,OAAO,KAAK;AAAA,YAC7C;AAGA,gBAAI,YAAY,UAAU,KAAK;AAC9B,qBAAO,MAAM,YAAY;AAAA,gBACxB,YAAY,MAAM,CAAC;AAAA,gBACnB,OAAO,MAAM,CAAC;AAAA,cACf,CAAC;AAAA,YACF;AAGA,mBAAO,MAAM,YAAY;AAAA,cACxB,OAAO,MAAM,CAAC;AAAA,cACd,gBAAgB,MAAM;AAAA,YACvB,CAAC;AAAA,UACF;AAGA,cAAI,OAAO,OAAO,SAAS,iBAAiB;AAC3C,gBAAI,OAAO,OAAO,WAAW,WAAW,GAAG;AAE1C,kBAAI,OAAO,OAAO,OAAO,SAAS,eAAe;AAChD,uBAAO,iBAAiB,OAAO,OAAO,MAAM;AAAA,cAC7C;AAGA,kBAAI,OAAO,OAAO,OAAO,SAAS,gBAAgB;AACjD,uBAAO,uBAAuB,OAAO,MAAM;AAAA,cAC5C;AAOA,qBAAO,aAAa,OAAO,MAAM;AAAA,YAClC;AAGA,gBAAI,YAAY,UAAU,KAAK;AAE9B,kBACC,oBAAoB,MAAM,MAAM,OAChC,mBAAmB,MAAM,MAAM,KAC9B;AACD,uBAAO,MAAM,YAAY;AAAA,kBACxB,OAAO,MAAM,CAAC;AAAA,kBACd,gBAAgB,MAAM;AAAA,gBACvB,CAAC;AAAA,cACF;AAGA,qBAAO,MAAM,YAAY;AAAA,gBACxB,sBAAsB,MAAM;AAAA,gBAC5B,GAAG,MAAM,CAAC;AAAA,cACX,CAAC;AAAA,YACF;AAAA,UACD;AAGA,cAAI,eAAe,gBAAgB;AAClC,gBAAI,iBAAiB,MAAM,GAAG;AAE7B,kBAAI,OAAO,OAAO,SAAS,eAAe;AACzC,uBAAO,iBAAiB,OAAO,MAAM;AAAA,cACtC;AAGA,kBAAI,OAAO,OAAO,SAAS,gBAAgB;AAC1C,uBAAO,uBAAuB,MAAM;AAAA,cACrC;AAOA,qBAAO,aAAa,MAAM;AAAA,YAC3B;AAGA,gBAAI,YAAY,UAAU,OAAO,WAAW,UAAU,KAAK;AAC1D,qBAAO,MAAM,YAAY,GAAG,KAAK;AAAA,YAClC;AAAA,UACD;AAGA,cAAI,eAAe,eAAe;AAEjC,gBAAI,OAAO,OAAO,SAAS,gBAAgB;AAC1C,kBAAI,iBAAiB,OAAO,MAAM,GAAG;AAEpC,oBAAI,OAAO,OAAO,OAAO,SAAS,gBAAgB;AACjD,yBAAO,uBAAuB,OAAO,MAAM;AAAA,gBAC5C;AAGA,uBAAO,aAAa,OAAO,MAAM;AAAA,cAClC;AAGA,qBAAO,MAAM,YAAY;AAAA,gBACxB,sBAAsB,IAAI,CAAC;AAAA,gBAC3B,GAAG,MAAM,CAAC;AAAA,cACX,CAAC;AAAA,YACF;AAGA,gBAAI,OAAO,OAAO,SAAS,iBAAiB;AAE3C,kBAAI,OAAO,OAAO,WAAW,WAAW,GAAG;AAC1C,uBAAO,aAAa,OAAO,MAAM;AAAA,cAClC;AAGA,qBAAO,MAAM,YAAY;AAAA,gBACxB,sBAAsB,IAAI,CAAC;AAAA,gBAC3B,GAAG,MAAM,CAAC;AAAA,cACX,CAAC;AAAA,YACF;AAGA,gBAAI,WAAW,OAAO,MAAM,GAAG;AAE9B,kBAAI,OAAO,OAAO,OAAO,WAAW,GAAG;AACtC,uBAAO,MAAM,YAAY,OAAO,KAAK;AAAA,cACtC;AAGA,qBAAO,MAAM,YAAY;AAAA,gBACxB,sBAAsB,MAAM;AAAA,gBAC5B,OAAO,MAAM,CAAC;AAAA,cACf,CAAC;AAAA,YACF;AAAA,UACD;AAEA,cAAI,eAAe,qBAAqB;AAEvC,gBAAI,OAAO,OAAO,SAAS,gBAAgB;AAC1C,qBAAO,uBAAuB,MAAM;AAAA,YACrC;AAGA,gBAAI,OAAO,OAAO,OAAO,SAAS,iBAAiB;AAClD,kBAAI,OAAO,OAAO,OAAO,WAAW,WAAW,GAAG;AAEjD,oBACC,OAAO,OAAO,OAAO,OAAO,SAAS,gBACpC;AACD,yBAAO,uBAAuB,OAAO,OAAO,MAAM;AAAA,gBACnD;AAGA,uBAAO,aAAa,OAAO,OAAO,MAAM;AAAA,cACzC;AAGA,kBACC,oBAAoB,OAAO,MAAM,MAAM,OACvC,mBAAmB,OAAO,MAAM,MAAM,KACrC;AACD,uBAAO,MAAM,YAAY;AAAA,kBACxB,OAAO,OAAO,MAAM,CAAC;AAAA,kBACrB,gBAAgB,OAAO,MAAM;AAAA,gBAC9B,CAAC;AAAA,cACF;AAGA,qBAAO,MAAM,YAAY;AAAA,gBACxB,sBAAsB,OAAO,MAAM;AAAA,gBACnC,OAAO,OAAO,MAAM,CAAC;AAAA,cACtB,CAAC;AAAA,YACF;AAGA,gBAAI,WAAW,OAAO,MAAM,GAAG;AAC9B,qBAAO,sBAAsB,MAAM;AAAA,YACpC;AAAA,UACD;AAGA,cAAI,eAAe,yBAAyB,OAAO,OAAO,IAAI;AAC7D,mBAAO,MAAM,YAAY,OAAO,KAAK;AAAA,UACtC;AAGA,cAAI,eAAe,0BAA0B;AAE5C,gBACC,CAAC,uBAAuB,OAAO,QAAQ,iBAAiB,KACxD,CAAC;AAAA,cACA,OAAO;AAAA,cACP;AAAA,YACD,GACC;AACD,qBAAO,MAAM,YAAY;AAAA,gBACxB,OAAO,MAAM,CAAC;AAAA,gBACd,OAAO,OAAO,OAAO,MAAM,CAAC;AAAA,cAC7B,CAAC;AAAA,YACF;AAGA,mBAAO,MAAM,YAAY,CAAC,GAAG,MAAM,CAAC,GAAG,WAAW,MAAM,CAAC,CAAC,CAAC;AAAA,UAC5D;AAEA,cAAI,eAAe,mBAAmB;AAErC,gBACC,OAAO,OAAO,WAAW;AAAA,cACxB,OAAK,EAAE,SAAS;AAAA,YACjB,EAAE,WAAW,GACZ;AAED,kBACC,CAAC;AAAA,gBACA,OAAO;AAAA,gBACP;AAAA,cACD,GACC;AACD,uBAAO,MAAM,YAAY,OAAO,OAAO,KAAK;AAAA,cAC7C;AAGA,qBAAO,MAAM,YAAY;AAAA,gBACxB,sBAAsB,QAAQ,CAAC;AAAA,gBAC/B,WAAW,MAAM,CAAC;AAAA,cACnB,CAAC;AAAA,YACF;AAEA,gBAAI,oBAAoB,MAAM,MAAM,KAAK;AACxC,qBAAO,MAAM,YAAY;AAAA,gBACxB,OAAO,MAAM,CAAC;AAAA,gBACd,gBAAgB,MAAM;AAAA,cACvB,CAAC;AAAA,YACF;AAEA,mBAAO,MAAM,YAAY;AAAA,cACxB,sBAAsB,MAAM;AAAA,cAC5B,OAAO,MAAM,CAAC;AAAA,YACf,CAAC;AAAA,UACF;AAEA,cAAI,eAAe,4BAA4B;AAC9C,gBACC;AAAA,cACC,OAAO;AAAA,cACP;AAAA,YACD,GACC;AACD,qBAAO,MAAM,YAAY;AAAA,gBACxB,sBAAsB,MAAM;AAAA,gBAC5B,OAAO,MAAM,CAAC;AAAA,cACf,CAAC;AAAA,YACF;AAGA,mBAAO,MAAM,YAAY;AAAA,cACxB,OAAO,MAAM,CAAC;AAAA,cACd,OAAO,OAAO,OAAO,MAAM,CAAC;AAAA,YAC7B,CAAC;AAAA,UACF;AAGA,cAAI,eAAe,eAAe;AACjC,mBAAO;AAAA,UACR;AAGA,cAAI,eAAe,oBAAoB;AACtC,mBAAO,MAAM,YAAY,OAAO,KAAK;AAAA,UACtC;AAGA,cAAI,aAAa,UAAU,KAAK;AAC/B,mBAAO,MAAM,YAAY,CAAC,YAAY,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;AAAA,UAC7D;AAGA,cAAI,WAAW,UAAU,KAAK;AAE7B,gBAAI,YAAY,UAAU,KAAK;AAC9B,qBAAO,MAAM,YAAY;AAAA,gBACxB,GAAG,MAAM,CAAC;AAAA,gBACV,WAAW,MAAM,CAAC;AAAA,cACnB,CAAC;AAAA,YACF;AAGA,gBAAI,YAAY,UAAU,KAAK;AAC9B,qBAAO,MAAM,YAAY;AAAA,gBACxB,GAAG,MAAM,CAAC;AAAA,gBACV,WAAW,MAAM,CAAC;AAAA,cACnB,CAAC;AAAA,YACF;AAAA,UACD;AAEA,cACC,eAAe,6BACf,OAAO,OAAO,WAAW,KACzB,YAAY,UAAU,KACrB;AACD,mBAAO,MAAM,YAAY,IAAI,IAAI;AAAA,UAClC;AAEA,iBAAO,MAAM,YAAY,GAAG,KAAK;AAAA,QAClC;AAMA,eAAO;AAAA,UACN,eAAe,aAAa;AAC3B,kBAAM,aAAa;AAAA,cAClB,WAAW,SAAS,WAAW;AAAA,cAC/B,CAAC;AAAA,YACF;AAEA,qBAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,IAAI,GAAG,EAAE,GAAG;AAClD,oBAAM,YAAY,WAAW,CAAC;AAG9B,kBAAI,UAAU,KAAK,SAAS,GAAG;AAE9B,sBAAM,kBAAkB,UAAU,WAAW;AAAA,kBAC5C,SACC,IAAI,QAAQ,KACZ,IAAI,KAAK,kBACR,UAAU,MAAM;AAAA,gBACnB;AAEA,oBAAI;AAEJ,oBAAI,gBAAgB,SAAS,GAAG;AAC/B,sCAAoB,gBAAgB,GAAG,EAAE;AAAA,gBAC1C;AAEA,wBAAQ,OAAO;AAAA,kBACd,MAAM,oBACH,kBAAkB,aAClB,UAAU,YAAY,CAAC;AAAA,kBAC1B,WAAW;AAAA,kBACX,MAAM,UAAU,WAAW;AAAA,oBAAK,SAC/B,IAAI,QAAQ;AAAA,kBACb,IACG,uBAAuB,SAAS,IAChC,sBAAsB,SAAS;AAAA,kBAClC,SAAS;AAAA,oBACR;AAAA,sBACC,WAAW;AAAA,sBACX,MAAM;AAAA,wBACL,SAAS,UAAU;AAAA,sBACpB;AAAA,sBACA,IAAI,OAAO;AACV,+BAAO,YAAY,OAAO,SAAS;AAAA,sBACpC;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cAGF,WAAW,UAAU,8BAA8B;AAClD,sBAAM,mBACL,UAAU,6BAA6B,CAAC;AAEzC,wBAAQ,OAAO;AAAA,kBACd,MAAM;AAAA,kBACN,KAAK,SAAS;AAAA,oBACb;AAAA,oBACA;AAAA,oBACA,UAAU;AAAA,kBACX;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM,sBAAsB,SAAS;AAAA,gBACtC,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC9sDA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAkBA,QAAM,gBACL;AACD,QAAM,iBAAiB;AAOvB,aAAS,aAAa,SAAS;AAC9B,UAAI,OAAO,YAAY,YAAY,YAAY,MAAM;AACpD,eAAO;AAAA,MACR;AAEA,YAAM,YAAY,OAAO,YAAY,WAAW,YAAY,WAAW;AAEvE,aAAO;AAAA,QACN;AAAA,QACA,SAAS;AAAA,QACT,WAAW;AAAA,QACX,mBAAmB;AAAA,QACnB,OAAO;AAAA,QACP,UAAU;AAAA,QACV,sBAAsB;AAAA,MACvB;AAAA,IACD;AAQA,aAAS,UAAUC,OAAM,UAAU;AAClC,aAAOA,SAAQA,MAAK,MAAM,CAAC,KAAK,YAAY,YAAYA,MAAK,MAAM,CAAC;AAAA,IACrE;AASA,aAAS,gCAAgCA,OAAM,UAAU;AACxD,aAAOA,MAAK,KAAK;AAAA,QAChB,iBACE,YAAY,SAAS,iBACrB,UAAU,aAAa,QAAQ,KAC/B,YAAY,SAAS,wBACrB,YAAY,UACZ,YAAY,SACZ,UAAU,YAAY,OAAO,QAAQ;AAAA,MACxC;AAAA,IACD;AAQA,aAAS,8BAA8B,OAAO;AAC7C,UAAI,MAAM,SAAS,sBAAsB;AACxC,eAAO;AAAA,MACR;AAEA,UAAI,MAAM,SAAS,2BAA2B;AAE7C,cAAM,qBAAqB,MAAM,MAAM;AAEvC,eAAO,mBAAmB;AAAA,MAC3B;AAEA,aAAO;AAAA,IACR;AAsCA,aAAS,+BAA+B,WAAW;AAClD,YAAM,WAAW,UAAU;AAC3B,UAAI,QAAQ,UAAU;AAGtB,aAAO,SAAS,MAAM,kBAAkB,MAAM,eAAe;AAC5D,YAAI,8BAA8B,MAAM,aAAa,GAAG;AACvD,kBAAQ,MAAM,cAAc;AAAA,QAC7B,OAAO;AACN,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAqBA,aAAS,gCAAgC,WAAW;AACnD,UAAI,+BAA+B,SAAS,GAAG;AAK9C,eAAO;AAAA,MACR;AAEA,YAAM,WAAW,UAAU,WAAW,MAAM,CAAC;AAC7C,YAAMC,cAAa,UAAU,SAAS,KAAK,CAAC;AAE5C,UAAIA,YAAW,SAAS,aAAa;AAEpC,cAAM,kBAAkBA,YAAW;AAEnC,eACC,UAAU,iBAAiB,QAAQ;AAAA;AAAA;AAAA;AAAA,QAKnC,CAAC,gCAAgC,gBAAgB,MAAM,QAAQ;AAAA,MAEjE;AAEA,UAAID,QAAOC,YAAW,KAAK;AAE3B,aAAOD,OAAM;AACZ,YAAIA,MAAK,SAAS,sBAAsB;AACvC,cAAI,UAAUA,MAAK,MAAM,QAAQ,GAAG;AACnC,mBAAO;AAAA,UACR;AACA,cACC,eAAe,KAAKA,MAAK,OAAO,OAAO,IAAI,KAC3C,UAAUA,MAAK,OAAO,OAAO,OAAO,QAAQ,GAC3C;AACD,mBAAO;AAAA,UACR;AACA;AAAA,QACD,WAAWA,MAAK,SAAS,qBAAqB;AAC7C,cAAI,UAAUA,MAAK,OAAO,QAAQ,GAAG;AACpC,mBAAO;AAAA,UACR;AAAA,QACD,WAAW,cAAc,KAAKA,MAAK,IAAI,GAAG;AACzC;AAAA,QACD;AAEA,QAAAA,QAAOA,MAAK;AAAA,MACb;AAEA,aAAO;AAAA,IACR;AAOA,aAAS,2BAA2BA,OAAM;AACzC,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AACJ,iBAAO;AAAA,QAER,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO,2BAA2BA,MAAK,MAAM;AAAA,QAE9C;AAEC,iBAAO;AAAA,MACT;AAAA,IACD;AASA,aAAS,2BAA2B,UAAU,WAAW;AACxD,UAAI,SAAS,KAAK,CAAC,EAAE,SAAS,aAAa;AAC1C,eAAO;AAAA,MACR;AAEA,UACC,CAAC,SAAS,KAAK,CAAC,EAAE,KAAK,cACvB,SAAS,KAAK,CAAC,EAAE,KAAK,WAAW,WAAW,GAC3C;AACD,eAAO;AAAA,MACR;AAEA,iBAAW,QAAQ,SAAS,KAAK,CAAC,EAAE,KAAK,YAAY;AACpD,YACC,UAAU,WAAW,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAC7C,UAAU,WAAW,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,GAC5C;AACD,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM,CAAC,QAAQ;AAAA,cAChB;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,WAAW,EAAE,MAAM,UAAU;AAAA,kBAC7B,SAAS,EAAE,MAAM,UAAU;AAAA,kBAC3B,WAAW,EAAE,MAAM,UAAU;AAAA,kBAC7B,mBAAmB,EAAE,MAAM,UAAU;AAAA,kBACrC,OAAO,EAAE,MAAM,UAAU;AAAA,kBACzB,UAAU,EAAE,MAAM,UAAU;AAAA,kBAC5B,sBAAsB,EAAE,MAAM,UAAU;AAAA,gBACzC;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,gBAAgB;AAAA,UACf;AAAA,YACC,SAAS;AAAA,YACT,WAAW;AAAA,YACX,WAAW;AAAA,YACX,mBAAmB;AAAA,YACnB,OAAO;AAAA,YACP,UAAU;AAAA,YACV,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,UAAU,aAAa,QAAQ,QAAQ,CAAC,CAAC;AAC/C,cAAM,aAAa,QAAQ;AAc3B,iBAAS,YAAY,WAAW;AAC/B,cAAI,UAAU,MAAM;AACnB,mBAAO;AAAA,UACR;AAEA,gBAAM,EAAE,WAAW,IAAI;AAEvB,cACC,QAAQ,qBACR,WAAW,OAAO,SAAS,qBAC3B,WAAW,OAAO,UAAU,YAC3B;AACD,mBAAO;AAAA,UACR;AAEA,gBAAM,WAAW,UAAU;AAE3B,cAAI,CAAC,YAAY,SAAS,KAAK,WAAW,GAAG;AAC5C,mBAAO;AAAA,UACR;AAEA,gBAAM,iBAAiB,SAAS,KAAK,CAAC,EAAE;AAExC,cAAI,CAAC,QAAQ,aAAa,mBAAmB,gBAAgB;AAC5D,mBAAO;AAAA,UACR;AAEA,eACG,CAAC,QAAQ,aAAa,mBAAmB,cACzC,CAAC,QAAQ,WAAW,mBAAmB;AAAA,UAEzC,+BAA+B,SAAS,GACvC;AACD,mBAAO;AAAA,UACR;AAEA,cAAI,CAAC,QAAQ,SAAS,mBAAmB,cAAc;AACtD,mBAAO;AAAA,UACR;AAEA,cAAI,CAAC,QAAQ,YAAY,mBAAmB,QAAQ;AACnD,mBAAO;AAAA,UACR;AAEA,cACC,QAAQ,yBACP,2BAA2B,UAAU,KACrC,WAAW,OAAO,SAAS,oBAC3B;AACD,mBAAO;AAAA,UACR;AAGA,cAAI,WAAW,OAAO,SAAS,mBAAmB;AACjD,gBAAI,cAAc,WAAW;AAE7B,mBAAO,YAAY,SAAS,mBAAmB;AAC9C,4BAAc,YAAY;AAAA,YAC3B;AAEA,gBAAI,gBAAgB,YAAY;AAC/B,qBAAO;AAAA,YACR;AAEA,mBAAO;AAAA,UACR;AAEA,cAAI,2BAA2B,UAAU,SAAS,GAAG;AACpD,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AAOA,iBAAS,uBAAuB,OAAO;AACtC,gBAAM,WAAW,OAAO,WAAW,EAAE,QAAQ,eAAa;AACzD,kBAAM,WAAW,UAAU;AAC3B,kBAAM,uBAAuB,SAAS,KAAK,CAAC,EAAE;AAE9C,gBACC,UAAU,WAAW,MAAM,CAAC,IAC3B,qBAAqB,MAAM,CAAC,KAC5B,gCAAgC,SAAS,KACzC,UAAU,WAAW,OAAO,SAAS,mBACrC;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAM,UAAU;AAAA,gBAChB,WAAW;AAAA,gBACX,MAAM,UAAU;AAAA,cACjB,CAAC;AAAA,YACF;AAAA,UACD,CAAC;AAED,gBAAM,YAAY,QAAQ,sBAAsB;AAAA,QACjD;AAEA,eAAO;AAAA,UACN,QAAQC,OAAM;AACb,mCAAuB,WAAW,SAASA,KAAI,CAAC;AAAA,UACjD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACncA;AAAA,2DAAAE,UAAAC,SAAA;AAAA;AAOA,QAAM,EAAE,aAAa,IAAI;AA2BzB,cAAU,8BAA8B,SAAS;AAChD,cAAQ,QAAQ,MAAM;AAAA,QACrB,KAAK;AACJ,gBAAM;AACN;AAAA,QACD,KAAK;AACJ,qBAAW,YAAY,QAAQ,YAAY;AAC1C,mBAAO;AAAA,cACN,SAAS,SAAS,aAAa,SAAS,QAAQ;AAAA,YACjD;AAAA,UACD;AACA;AAAA,QACD,KAAK;AACJ,qBAAW,WAAW,QAAQ,UAAU;AACvC,gBAAI,CAAC,SAAS;AACb;AAAA,YACD;AACA,mBAAO,8BAA8B,OAAO;AAAA,UAC7C;AACA;AAAA,QACD,KAAK;AACJ,iBAAO,8BAA8B,QAAQ,QAAQ;AACrD;AAAA,QACD,KAAK;AACJ,iBAAO,8BAA8B,QAAQ,IAAI;AAAA,MAGnD;AAAA,IACD;AAQA,aAAS,qCAAqC,YAAY,YAAY;AACrE,UAAI,WAAW,MAAM,CAAC,IAAI,WAAW,WAAW,MAAM,CAAC,GAAG;AACzD,eAAO;AAAA,MACR;AACA,UACC,WAAW,cACX,WAAW,WAAW,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,KACpD,WAAW,MAAM,CAAC,KAAK,WAAW,WAAW,MAAM,CAAC,GACnD;AAOD,eAAO;AAAA,MACR;AAWA,aAAO;AAAA,IACR;AAYA,aAAS,4CAA4C,YAAY,YAAY;AAC5E,UAAI,CAAC,WAAW,YAAY;AAC3B,eAAO;AAAA,MACR;AACA,aACC,WAAW,WAAW,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,KACpD,WAAW,MAAM,CAAC,KAAK,WAAW,WAAW,MAAM,CAAC;AAAA,IAEtD;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,uBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AA+B3B,YAAI,aAAa;AAGjB,cAAM,sBAAsB,oBAAI,IAAI;AAQpC,iBAAS,sBAAsB,OAAO;AACrC,cAAI,SAAS;AAEb,iBAAO,QAAQ;AACd,gBAAI,oBAAoB,IAAI,MAAM,GAAG;AACpC,qBAAO;AAAA,YACR;AACA,qBAAS,OAAO;AAAA,UACjB;AAGA,iBAAO;AAAA,QACR;AAOA,iBAAS,OAAO,QAAQ;AAOvB,mBAAS,0BAA0B,SAAS,YAAY;AACvD,kBAAM,cAAc,OAAO,SAAS,QAAQ,EAAE;AAE9C,mBACC,YAAY,SACZ,YAAY,QACZ,YAAY,MAAM,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,KAChD,WAAW,MAAM,CAAC,KAAK,YAAY,KAAK,MAAM,CAAC;AAAA,UAEjD;AASA,mBAAS,uBAAuB,kBAAkB,gBAAgB;AAEjE,kBAAM,yBAAyB,OAAO,mBAAmB;AAAA,cACxD,cACC,SAAS,MAAM,CAAC,KACf,iBAAiB,WAAW,MAAM,CAAC,KACpC,iBAAiB,WAAW,MAAM,CAAC,KAClC,SAAS,MAAM,CAAC;AAAA,YACnB;AAEA,gBAAI,wBAAwB;AAC3B;AAAA,YACD;AAeA,kBAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA,cAK7B,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,cAMV,oBAAoB,oBAAI,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAO5B,eAAe,iBAAiB,SAAS;AAAA,gBACxC,aAAW,QAAQ;AAAA,cACpB;AAAA,YACD;AAOA,sBAAU,wBAAwB;AACjC,qBAAO,sBAAsB;AAE7B,qBAAO,sBAAsB,cAAc,SAAS,GAAG;AACtD,sBAAM,cACL,sBAAsB,cAAc,MAAM;AAE3C,oBACC,sBAAsB,mBAAmB;AAAA,kBACxC;AAAA,gBACD,GACC;AACD;AAAA,gBACD;AACA,sCAAsB,mBAAmB;AAAA,kBACxC;AAAA,gBACD;AAEA,sBAAM,sBAAsB,eAAe;AAAA,kBAC1C,qBACC,gBAAgB,SAAS;AAAA,oBACxB;AAAA,kBACD,KACA,CAAC;AAAA,oBACA;AAAA,oBACA,iBAAiB;AAAA,kBAClB;AAAA,gBACF;AAEA,oBAAI,CAAC,qBAAqB;AAMzB,wCAAsB,cAAc;AAAA,oBACnC,GAAG,YAAY;AAAA,kBAChB;AAAA,gBACD;AAGA,sBAAM,SAAS;AAAA,kBACd,SAAS;AAAA,kBACT,YAAY;AAAA,gBACb;AAEA,sCAAsB,QAAQ,KAAK,MAAM;AACzC,sBAAM;AAAA,cACP;AAAA,YACD;AAEA,gBACC,iBAAiB,SAAS,WAAW,KAAK,SAAO;AAChD,oBAAM,OAAO,IAAI,WAAW;AAC5B,qBACC,SAAS,gBAAgB,SAAS;AAAA,YAEpC,CAAC,GACA;AAKD;AAAA,YACD;AAEA,kBAAM,iBACL,iBAAiB,SAAS,WAAW;AAAA,cAAO,eAC3C,UAAU,OAAO;AAAA,YAClB;AAED,gBAAI,CAAC,eAAe,QAAQ;AAK3B;AAAA,YACD;AAKA,kBAAM,uCACL,eAAe,KAAK,gBAAc;AACjC,kBACC,eAAe,oBACd,WAAW,SAAS,UACpB,WAAW,SAAS;AAAA,gBACnB,aACC,CAAC,iBAAiB,SAAS;AAAA,kBAC1B;AAAA,gBACD;AAAA,cACF,GACA;AACD,uBAAO;AAAA,cACR;AACA,kBACC;AAAA,gBACC;AAAA,gBACA,WAAW;AAAA,cACZ,GACC;AACD,uBAAO;AAAA,cACR;AACA,kBACC,WAAW,cACX,WAAW,WAAW,MAAM,CAAC,KAC5B,iBAAiB,WAAW,MAAM,CAAC,KACpC,iBAAiB,WAAW,MAAM,CAAC,KAClC,WAAW,WAAW,MAAM,CAAC,GAC7B;AAOD,uBAAO;AAAA,cACR;AAEA,qBAAO;AAAA,YACR,CAAC;AAEF,uBAAW,aAAa,gBAAgB;AAMvC,kBACC,OAAO,UAAU,sBAAsB,UAAU,IAAI,GACpD;AACD;AAAA,cACD;AAGA,kBACC;AAAA,gBACC;AAAA,gBACA,UAAU;AAAA,cACX,MACC;AAAA,gBACA;AAAA,gBACA,UAAU;AAAA,cACX,KACC,iBAAiB,SAAS;AAAA,gBAAK,aAC9B;AAAA,kBACC;AAAA,kBACA,UAAU;AAAA,gBACX;AAAA,cACD,IACA;AACD,oBACC,wCACA;AAAA,kBACC;AAAA,kBACA,UAAU;AAAA,gBACX,GACC;AAED;AAAA,gBACD;AAGA;AAAA,cACD;AAEA,kBAAI,sCAAsC;AAKzC;AAAA,cACD;AAGA,yBAAW,qBAAqB,sBAAsB,GAAG;AACxD,oBACC;AAAA,kBACC,kBAAkB;AAAA,kBAClB,UAAU;AAAA,gBACX,GACC;AACD,sBACC,kBAAkB,cAClB;AAAA,oBACC,kBAAkB;AAAA,oBAClB,UAAU;AAAA,kBACX,GACC;AAED;AAAA,kBACD;AAGA;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AACA,oBAAQ,OAAO;AAAA,cACd,MAAM,iBAAiB;AAAA,cACvB,WAAW;AAAA,cACX,MAAM,EAAE,MAAM,iBAAiB,WAAW,KAAK;AAAA,YAChD,CAAC;AAAA,UACF;AAGA,qBAAW,eAAe,OAAO,YAAY,OAAO,GAAG;AACtD,wBAAY;AAAA,cACX,CAAC,GAAG,MAAM,EAAE,WAAW,MAAM,CAAC,IAAI,EAAE,WAAW,MAAM,CAAC;AAAA,YACvD;AACA,uBAAW,cAAc,aAAa;AACrC,qCAAuB,YAAY,WAAW;AAAA,YAC/C;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,gBAAgB,UAAUC,OAAM;AAC/B,kBAAM,QAAQ,WAAW,SAASA,KAAI;AAEtC,yBAAa;AAAA,cACZ,OAAO;AAAA,cACP;AAAA,cACA;AAAA,cACA,UAAU,uBAAO,OAAO,IAAI;AAAA,cAC5B,iBAAiB,oBAAI,IAAI;AAAA,cACzB,aAAa,oBAAI,IAAI;AAAA,cACrB,oBAAoB,CAAC;AAAA,YACtB;AACA,gCAAoB,IAAI,WAAW,KAAK;AAAA,UACzC;AAAA,UACA,gBAAgB;AACf,mBAAO,UAAU;AAEjB,yBAAa,WAAW;AAAA,UACzB;AAAA,UACA,uBAAuB,SAAS;AAC/B,kBAAM,cAAc,EAAE,SAAS,OAAO,MAAM,MAAM,KAAK;AAEvD,uBAAW,SAAS,QAAQ,EAAE,IAAI;AAClC,uBAAW,gBAAgB,IAAI,OAAO;AAAA,UACvC;AAAA,UACA,qBAAqB,SAAS;AAC7B,uBAAW,gBAAgB,OAAO,OAAO;AAAA,UAC1C;AAAA,UACA,aAAaA,OAAM;AAClB,uBAAW,mBAAmB,KAAKA,MAAK,KAAK;AAAA,UAC9C;AAAA,UACA,4BAA4BA,OAAM;AACjC,uBAAW,WAAW,WAAW,iBAAiB;AACjD,oBAAM,cAAc,WAAW,SAAS,QAAQ,EAAE;AAElD,kBAAI,CAAC,YAAY,OAAO;AACvB,4BAAY,QAAQA;AAAA,cACrB;AACA,0BAAY,OAAOA;AAAA,YACpB;AAAA,UACD;AAAA,UACA,8EACCA,OACC;AACD,gBAAI,WAAW,gBAAgB,SAAS,GAAG;AAE1C;AAAA,YACD;AAEA,kBAAM,cAAc,WAAW;AAE/B,gBAAI;AACJ,gBAAI,aAAa;AAEjB,gBAAIA,MAAK,SAAS,sBAAsB;AACvC,wBAAUA,MAAK;AACf,2BAAaA,MAAK;AAAA,YACnB,WAAWA,MAAK,SAAS,wBAAwB;AAChD,wBAAUA,MAAK;AACf,2BAAaA,MAAK;AAAA,YACnB,OAAO;AAEN,wBAAUA,MAAK;AAAA,YAChB;AAEA,uBAAW,cAAc;AAAA,cACxB;AAAA,YACD,GAAG;AACF,oBAAM,QAAQ,WAAW,SAAS,UAAU;AAG5C,oBAAM,WAAW,aAAa,OAAO,UAAU;AAE/C,kBAAI,CAAC,UAAU;AACd;AAAA,cACD;AAGA,kBACC,SAAS,MAAM,SAAS,YACxB,SAAS,KAAK,WAAW,GACxB;AACD;AAAA,cACD;AAMA,kBACC,WAAW,UACX,sBAAsB,SAAS,KAAK,GACnC;AACD;AAAA,cACD;AAIA,kBAAI,SAAS,YAAY;AACxB;AAAA,cACD;AAGA,kBAAI,SAAS,MAAM,SAAS,UAAU;AACrC,oBACC,SAAS,KAAK;AAAA,kBACb,SACE,IAAI,SAAS,cACb,IAAI,OAAO,OAAO,SACjB,4BACD,IAAI,SAAS,mBACZ,IAAI,KAAK,OAAO,SAChB,4BACA,IAAI,KAAK,OAAO,SACf,+BACF,IAAI,SAAS,gBACZ,IAAI,KAAK,OAAO,SAChB,4BACA,IAAI,KAAK,OAAO,SACf;AAAA,gBACL,GACC;AACD;AAAA,gBACD;AACA,oBACC,SAAS,WAAW;AAAA,kBACnB,eACC,UAAU,WAAW,OAAO,SAC5B;AAAA,gBACF,GACC;AAED;AAAA,gBACD;AAAA,cACD;AAEA,kBAAIC,QAAO,YAAY,IAAI,QAAQ;AAEnC,kBAAI,CAACA,OAAM;AACV,gBAAAA,QAAO,CAAC;AACR,4BAAY,IAAI,UAAUA,KAAI;AAAA,cAC/B;AACA,cAAAA,MAAK,KAAK;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA,MAAAD;AAAA,gBACA;AAAA,gBACA,UAAU,CAAC,GAAG,WAAW,eAAe;AAAA,cACzC,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACjpBA;AAAA,8DAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AACJ,QAAM,EAAE,cAAc,eAAe,IAAI;AAMzC,QAAM,SAAS,IAAI,aAAa;AAOhC,aAAS,cAAcC,OAAM;AAC5B,YAAMC,QAAO,CAAC;AACd,UAAI,UAAUD;AAEd,SAAG;AACF,QAAAC,MAAK,KAAK,OAAO;AACjB,kBAAU,QAAQ;AAAA,MACnB,SAAS;AAET,aAAOA;AAAA,IACR;AAOA,aAAS,aAAaD,OAAM;AAC3B,aACCA,MAAK,SAAS,gBACbA,MAAK,SAAS,eAAeA,MAAK,SAAS;AAAA,IAE9C;AAOA,aAAS,qBAAqBA,OAAM;AACnC,aAAO,aAAaA,KAAI,KAAKA,MAAK;AAAA,IACnC;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,QAAQ;AAAA,UACR,SACC;AAAA,UACD,UACC;AAAA,UACD,aACC;AAAA,UACD,wBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAS3B,iBAAS,WAAWC,OAAM,SAAS,OAAO;AACzC,cAAI;AAEJ,cAAI;AACH,wBAAY,OAAO,aAAa,SAAS,GAAG,QAAQ,QAAQ;AAAA,cAC3D,SAAS,MAAM,SAAS,GAAG;AAAA,cAC3B,aAAa,MAAM,SAAS,GAAG;AAAA,YAChC,CAAC;AAAA,UACF,QAAQ;AAEP;AAAA,UACD;AAEA,yBAAe,WAAW;AAAA,YACzB,qBAAqB,MAAM;AAC1B,oBAAM,SAAS,CAAC,KAAK,QAAQ,EAAE,KAAK,GACnC,WAAW,cAAc,IAAI;AAE9B,oBAAM,WAAW,OAAO,IAAI,CAAAE,WAAS;AACpC,sBAAM,YAAY,cAAcA,MAAK;AAErC,oBAAI,SAAS,SAASA,MAAK,GAAG;AAE7B,yBAAO;AAAA,oBACN,WAAW;AAAA,oBACX,OAAAA;AAAA,kBACD;AAAA,gBACD;AAGA,oBAAI,IAAI,SAAS,SAAS,GACzB,IAAI,UAAU,SAAS;AAExB,mBAAG;AACF;AACA;AAAA,gBACD,SAAS,SAAS,CAAC,MAAM,UAAU,CAAC;AAEpC,sBAAM,8BAA8B,IAAI,GACvC,WAAW,UAAU;AAAA,kBACpB;AAAA,kBACA;AAAA,gBACD,GACA,aAAa,UAAU;AAAA,kBACtB;AAAA,gBACD,GACA,yBACC,WAAW,KAAK,YAAY,GAC7B,qBACC,0BACA,uBAAuB,SAAS;AAElC,oBAAI,SAAS,GAAG,EAAE,EAAE,SAAS,eAAe;AAE3C,yBAAO;AAAA,oBACN,WAAW;AAAA,oBACX,OAAAA;AAAA,kBACD;AAAA,gBACD;AACA,oBAAI,CAAC,sBAAsB,KAAK,OAAOA,OAAM,OAAO;AAEnD,yBAAO;AAAA,oBACN,WAAW;AAAA,oBACX,OAAAA;AAAA,kBACD;AAAA,gBACD;AACA,oBAAI,sBAAsBA,OAAM,OAAO,KAAK,OAAO;AAElD,yBAAO;AAAA,oBACN,WAAW;AAAA,oBACX,OAAAA;AAAA,kBACD;AAAA,gBACD;AACA,oBAAI,SAAS,KAAK,oBAAoB,GAAG;AAExC,yBAAO;AAAA,oBACN,WAAW;AAAA,oBACX,OAAAA;AAAA,kBACD;AAAA,gBACD;AAEA,uBAAO;AAAA,cACR,CAAC;AAED,kBACC,SAAS,WAAW,KACpB,SAAS,KAAK,aAAW,CAAC,OAAO,GAChC;AAED;AAAA,cACD;AAEA,kBAAI;AAGJ,oBAAM,4BAA4B,SAAS;AAAA,gBAC1C,aAAW,QAAQ,cAAc;AAAA,cAClC;AAEA,kBAAI,0BAA0B,QAAQ;AAErC,mCAAmB;AAAA,cACpB,OAAO;AAEN,mCAAmB;AAAA,cACpB;AAEA,oBAAM,CAAC,EAAE,WAAW,MAAM,GAAG,GAAG,KAAK,IAAI;AACzC,kBAAI,cAAc;AAElB,kBAAI,MAAM,WAAW,GAAG;AACvB,8BAAc;AAAA,cACf,WAAW,MAAM,SAAS,GAAG;AAC5B,8BAAc,cAAc,MAAM,MAAM;AAAA,cACzC;AACA,sBAAQ,OAAO;AAAA,gBACd,MAAAF;AAAA,gBACA;AAAA,gBACA,MAAM;AAAA,kBACL,MAAM,KAAK;AAAA,kBACX,OAAO,MAAM;AAAA,kBACb;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD,CAAC;AAAA,QACF;AAEA,eAAO;AAAA,UACN,iBAAiBA,OAAM;AACtB,kBAAM,EAAE,SAAS,MAAM,IAAIA,MAAK;AAEhC,uBAAWA,OAAM,SAAS,KAAK;AAAA,UAChC;AAAA,UACA,QAAQA,OAAM;AACb,kBAAM,QAAQ,WAAW,SAASA,KAAI,GACrC,UAAU,IAAI,iBAAiB,KAAK,GACpC,WAAW;AAAA,cACV,QAAQ;AAAA,gBACP,CAAC,IAAI,GAAG;AAAA,gBACR,CAAC,SAAS,GAAG;AAAA,cACd;AAAA,YACD;AAED,uBAAW,EAAE,MAAM,QAAQ,KAAK,QAAQ;AAAA,cACvC;AAAA,YACD,GAAG;AACF,oBAAM,CAAC,aAAa,SAAS,IAAI,QAAQ,WACxC,UAAU,oBAAoB,aAAa,KAAK,GAChD,QAAQ,oBAAoB,WAAW,KAAK;AAE7C,kBAAI,OAAO,YAAY,UAAU;AAChC,2BAAW,SAAS,SAAS,SAAS,EAAE;AAAA,cACzC;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACtQA;AAAA,qDAAAG,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAWjB,aAAS,yBAAyBC,OAAM;AACvC,YAAM,SAAS,SAAS,oBAAoBA,MAAK,MAAM;AAEvD,aACC,OAAO,SAAS,sBAChB,OAAO,SAAS,SAAS,gBACzB,OAAO,aAAa,UAClB,OAAO,SAAS,SAAS,UAAUA,MAAK,UAAU,UAAU,KAC5D,OAAO,SAAS,SAAS,WACzBA,MAAK,UAAU,WAAW,KAC1BA,MAAK,UAAU,CAAC,EAAE,SAAS;AAAA,IAE/B;AASA,aAAS,eAAe,cAAc,SAAS,YAAY;AAC1D,UAAI,CAAC,cAAc;AAClB,eAAO,SAAS,kBAAkB,OAAO;AAAA,MAC1C;AACA,aAAO,SAAS,YAAY,cAAc,SAAS,UAAU;AAAA,IAC9D;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,eAAeC,OAAM;AACpB,gBAAI,CAAC,yBAAyBA,KAAI,GAAG;AACpC;AAAA,YACD;AAEA,kBAAM,SAAS,SAAS,oBAAoBA,MAAK,MAAM;AACvD,kBAAM,UAAU,SAAS,oBAAoB,OAAO,MAAM;AAC1D,kBAAM,eACL,QAAQ,SAAS,qBAAqB,QAAQ,SAAS;AACxD,kBAAM,UAAUA,MAAK,UAAU,CAAC;AAEhC,gBAAI,eAAe,cAAc,SAAS,UAAU,GAAG;AACtD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM,EAAE,MAAM,OAAO,SAAS,KAAK;AAAA,cACpC,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC9FA;AAAA,sDAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,wBAAwB;AAAA,UACxB,kBAAkB;AAAA,QACnB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,eAAO;AAAA,UACN,YAAYC,OAAM;AACjB,gBACCA,MAAK,SACLA,MAAK,MAAM,SAAS,gBACpBA,MAAK,KAAK,KAAK,UACfA,MAAK,KAAK,KAAK,CAAC,EAAE,SAAS,oBAC3BA,MAAK,KAAK,KAAK,CAAC,EAAE,SAAS,SAAS,gBACpCA,MAAK,KAAK,KAAK,CAAC,EAAE,SAAS,SAASA,MAAK,MAAM,MAC9C;AACD,kBAAIA,MAAK,OAAO,WAAW;AAC1B,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,gBACZ,CAAC;AAAA,cACF,OAAO;AACN,wBAAQ,OAAO;AAAA,kBACd,MAAMA,MAAK;AAAA,kBACX,WAAW;AAAA,gBACZ,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxDA;AAAA,6DAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AA+BjB,aAAS,sBAAsBC,OAAM;AACpC,UAAI,CAACA,MAAK,UAAU;AACnB,eAAO;AAAA,MACR;AAEA,YAAM,EAAE,IAAI,IAAIA;AAEhB,UAAI,IAAI,SAAS,WAAW;AAC3B,eAAO;AAAA,MACR;AAEA,YAAM,EAAE,OAAAC,OAAM,IAAI;AAElB,UAAI,OAAOA,WAAU,YAAY,OAAOA,WAAU,UAAU;AAC3D,eAAO;AAAA,MACR;AAEA,cAAQD,MAAK,MAAM;AAAA,QAClB,KAAK;AACJ,cAAIA,MAAK,OAAO,SAAS,oBAAoB;AAC5C,mBAAOC,WAAU;AAAA,UAClB;AACA,iBAAO;AAAA,QAER,KAAK;AACJ,cAAID,MAAK,QAAQ;AAChB,mBAAOC,WAAU,iBAAiBA,WAAU;AAAA,UAC7C;AAEA,iBAAOA,WAAU;AAAA,QAElB,KAAK;AACJ,cAAID,MAAK,QAAQ;AAChB,mBAAOC,WAAU;AAAA,UAClB;AAEA,iBAAOA,WAAU;AAAA;AAAA,QAGlB;AACC,gBAAM,IAAI,MAAM,yBAAyBD,MAAK,IAAI,EAAE;AAAA,MACtD;AAAA,IACD;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,wBAAwB;AAAA,UACzB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,wBAAwB;AAAA,gBACvB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,SAAS;AAAA,QAET,UAAU;AAAA,UACT,+BACC;AAAA,QACF;AAAA,MACD;AAAA,MACA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,CAAC,EAAE,uBAAuB,CAAC,IAAI,QAAQ;AAO7C,iBAAS,MAAMC,OAAM;AACpB,cAAI,sBAAsBA,KAAI,GAAG;AAChC,kBAAM,EAAE,IAAI,IAAIA;AAEhB,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM,EAAE,UAAU,WAAW,QAAQ,GAAG,EAAE;AAAA,cAC1C,IAAI,OAAO;AACV,sBAAM,oBAAoB,WAAW;AAAA,kBACpC;AAAA,kBACA,SAAS;AAAA,gBACV;AACA,sBAAM,qBAAqB,WAAW;AAAA,kBACrC;AAAA,kBACA,SAAS;AAAA,gBACV;AAGA,oBACC,WAAW;AAAA,kBACV;AAAA,kBACA;AAAA,gBACD,GACC;AACD,yBAAO;AAAA,gBACR;AAEA,sBAAM,yBACL,WAAW,eAAe,iBAAiB;AAG5C,sBAAM,sBACL,uBAAuB,MAAM,CAAC,MAC7B,kBAAkB,MAAM,CAAC,KAC1B,CAAC,SAAS;AAAA,kBACT;AAAA,kBACA,WAAW,cAAc,GAAG;AAAA,gBAC7B;AAED,sBAAM,kBACJ,sBAAsB,MAAM,MAAM,IAAI;AAExC,uBAAO,MAAM;AAAA,kBACZ;AAAA,oBACC,kBAAkB,MAAM,CAAC;AAAA,oBACzB,mBAAmB,MAAM,CAAC;AAAA,kBAC3B;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,OAAO;AAAA,QAAC;AAEjB,eAAO;AAAA,UACN,UAAU;AAAA,UACV,kBAAkB,yBAAyB,QAAQ;AAAA,UACnD,oBAAoB,yBAAyB,QAAQ;AAAA,QACtD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC3MA;AAAA,uDAAAE,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAWjB,aAAS,gBAAgBC,OAAM;AAC9B,aAAOA,MAAK,SAAS,sBAAsBA,MAAK,aAAa;AAAA,IAC9D;AAOA,aAAS,sBAAsB,OAAO;AACrC,aAAO,MAAM,UAAU,OAAO,MAAM,SAAS;AAAA,IAC9C;AAOA,aAAS,QAAQA,OAAM;AACtB,UAAI,OAAOA,MAAK;AAEhB,aAAO,gBAAgB,IAAI,GAAG;AAC7B,eAAO,KAAK;AAAA,MACb;AACA,aAAO;AAAA,IACR;AAOA,aAAS,SAASA,OAAM;AACvB,UAAI,QAAQA,MAAK;AAEjB,aAAO,gBAAgB,KAAK,GAAG;AAC9B,gBAAQ,MAAM;AAAA,MACf;AACA,aAAO;AAAA,IACR;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,kBAAkB;AAAA,QACnB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,iBAAiBC,OAAM;AAEtB,gBAAIA,MAAK,aAAa,KAAK;AAC1B;AAAA,YACD;AAGA,kBAAM,OAAO,QAAQA,KAAI;AACzB,kBAAM,QAAQ,SAASA,KAAI;AAE3B,gBACC,SAAS,gBAAgB,IAAI,KAC7B,SAAS,gBAAgB,KAAK,KAC9B,SAAS,kBAAkB,MAAM,KAAK,GACrC;AACD,oBAAM,gBAAgB,WAAW;AAAA,gBAChC;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAEA,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK,cAAc;AAAA,gBACnB,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxHA;AAAA,4DAAAC,UAAAC,SAAA;AAAA;AAMA,QAAM,WAAW;AAWjB,aAAS,iCAAiCC,OAAM;AAC/C,aAAOA,MAAK,MAAM,OAAO;AAAA,QACxB,WACC,MAAM,YAAY,UAAU,MAAM,SAAS;AAAA,MAC7C;AAAA,IACD;AAOA,aAAS,uBAAuBA,OAAM;AACrC,cAAQA,MAAK,eAAe;AAAA,QAC3B,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QACR,KAAK;AACJ,iBAAO,CAAC,CAACA,MAAK,OAAO,OAAO;AAAA,QAC7B;AACC,iBAAO;AAAA,MACT;AAAA,IACD;AAOA,aAAS,kBAAkB,MAAM;AAChC,aACC,KAAK,WAAW,KAChB,KAAK,CAAC,EAAE,SAAS,yBACjB,KAAK,CAAC,EAAE,WAAW,SAAS,oBAC5B,KAAK,CAAC,EAAE,WAAW,OAAO,SAAS;AAAA,IAErC;AAQA,aAAS,SAASA,OAAM;AACvB,aAAOA,MAAK,SAAS,gBAAgBA,MAAK,SAAS;AAAA,IACpD;AAQA,aAAS,kBAAkB,WAAW;AACrC,aACC,UAAU,WAAW,KACrB,UAAU,CAAC,EAAE,SAAS,mBACtB,UAAU,CAAC,EAAE,SAAS,SAAS,gBAC/B,UAAU,CAAC,EAAE,SAAS,SAAS;AAAA,IAEjC;AASA,aAAS,sBAAsB,WAAW,UAAU;AACnD,aACC,UAAU,SAAS,gBACnB,SAAS,SAAS,gBAClB,UAAU,SAAS,SAAS;AAAA,IAE9B;AASA,aAAS,sBAAsB,WAAW,UAAU;AACnD,aACC,UAAU,SAAS,iBACnB,SAAS,SAAS,mBAClB,sBAAsB,UAAU,UAAU,SAAS,QAAQ;AAAA,IAE7D;AAQA,aAAS,YAAY,WAAW,UAAU;AACzC,aACC,sBAAsB,WAAW,QAAQ,KACzC,sBAAsB,WAAW,QAAQ;AAAA,IAE3C;AASA,aAAS,iBAAiB,YAAY,WAAW;AAChD,UAAI,WAAW,WAAW,UAAU,QAAQ;AAC3C,eAAO;AAAA,MACR;AAEA,eAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,EAAE,GAAG;AAC3C,YAAI,CAAC,YAAY,WAAW,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG;AAC9C,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,qBAAqB,MAAM,YAAY;AAC/C,aACC,kBAAkB,IAAI,KACtB,WAAW,MAAM,QAAQ,MACxB,kBAAkB,KAAK,CAAC,EAAE,WAAW,SAAS,KAC9C,iBAAiB,YAAY,KAAK,CAAC,EAAE,WAAW,SAAS;AAAA,IAE5D;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,gBAAgB;AAAA,QAEhB,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,sBAAsB;AAAA,UACtB,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,EAAE,WAAW,IAAI;AAOvB,iBAAS,oBAAoBC,OAAM;AAClC,cACCA,MAAK,SAAS,iBACdA,MAAK,MAAM,SAAS,wBACpB,iCAAiCA,KAAI,KACrC,uBAAuBA,KAAI,GAC1B;AACD;AAAA,UACD;AAMA,cAAI,CAACA,MAAK,MAAM,MAAM;AACrB;AAAA,UACD;AAEA,gBAAM,OAAOA,MAAK,MAAM,KAAK;AAC7B,gBAAM,aAAaA,MAAK,MAAM;AAC9B,gBAAM,aAAaA,MAAK,OAAO,OAAO;AACtC,gBAAM,aAAa,WAAW;AAAA,YAC7BA;AAAA,YACA,SAAS;AAAA,UACV;AACA,gBAAM,MAAM;AAAA,YACX,OAAOA,MAAK,IAAI;AAAA,YAChB,KAAK,WAAW,eAAe,UAAU,EAAE,IAAI;AAAA,UAChD;AAEA,cACC,aACG,qBAAqB,MAAM,UAAU,IACrC,KAAK,WAAW,GAClB;AACD,oBAAQ,OAAO;AAAA,cACd;AAAA,cACA,WAAW;AAAA,cACX,SAAS;AAAA,gBACR;AAAA,kBACC,WAAW;AAAA,kBACX,CAAC,IAAI,OAAO;AACX,0BAAM,YACL,WAAW,cAAcA,KAAI;AAC9B,0BAAM,eACL,SAAS;AAAA,sBACR;AAAA,oBACD,KACA,SAAS;AAAA,sBACR;AAAA,sBACAA;AAAA,oBACD;AAED,0BAAM,MAAM;AAAA,sBACXA;AAAA,sBACA,eAAe,MAAM;AAAA,oBACtB;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,kBAAkB;AAAA,QACnB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrQA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AACjB,QAAM,EAAE,cAAc,eAAe,IAAI;AAgBzC,aAAS,MAAM,MAAM,MAAM;AAC1B,aAAO,IAAI;AAAA,SACT,aAAa;AACb,iBAAO;AACP,iBAAO;AAAA,QACR,GAAG;AAAA,MACJ;AAAA,IACD;AAEA,QAAM,uBAAuB,MAAM,IAAI,IAAI,YAAY,GAAG,SAAS,UAAU;AAC7E,QAAM,wBAAwB,IAAI,IAAI,gCAAgC;AACtE,QAAM,8BAA8B;AAAA,MACnC;AAAA,MACA,IAAI,IAAI,iBAAiB;AAAA,IAC1B;AAMA,QAAM,mCAAmC;AAAA,MACxC;AAAA,MACA,IAAI,IAAI,WAAW;AAAA,IACpB;AAMA,QAAM,6CAA6C,IAAI;AAAA,MACtD;AAAA,IACD;AAGA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,sBAAsB,CAAC;AAAA,UACxB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,gBAAgB;AAAA,QAEhB,UAAU;AAAA,UACT,mBAAmB;AAAA,UACnB,cACC;AAAA,UACD,gCACC;AAAA,UACD,iBACC;AAAA,QACF;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,sBAAsB;AAAA,gBACrB,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,gBACA,aAAa;AAAA,cACd;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,CAAC,EAAE,qBAAqB,CAAC,IAAI,QAAQ;AAC3C,cAAM,SAAS,IAAI,aAAa;AAUhC,iBAAS,OACRC,OACA,aACA,WACA,+BACC;AACD,gBAAM,aAAaA,MAAK,MAAM,CAAC,IAAI;AACnC,gBAAM,QAAQ,CAAC,YAAY,aAAa,CAAC;AACzC,gBAAM,QAAQ,WAAW,gBAAgB,UAAU;AAEnD,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK;AAAA,cACJ;AAAA,cACA,KAAK,EAAE,MAAM,MAAM,MAAM,QAAQ,MAAM,SAAS,EAAE;AAAA,YACnD;AAAA,YACA,WAAW;AAAA,YACX,MAAM,EAAE,UAAU;AAAA,YAClB,SAAS;AAAA,cACR;AAAA;AAAA,gBAEC,WAAW,SAAS,YAAYA,MAAK,MAAM,IACxC,mCACA;AAAA,gBACH,IAAI,OAAO;AACV,yBAAO,MAAM,YAAY,KAAK;AAAA,gBAC/B;AAAA,cACD;AAAA,cACA,GAAI,gCACD,CAAC,IACD;AAAA,gBACA;AAAA,kBACC,WAAW;AAAA,kBACX,IAAI,OAAO;AACV,2BAAO,MAAM;AAAA,sBACZ;AAAA,sBACA;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACH;AAAA,UACD,CAAC;AAAA,QACF;AASA,iBAAS,eAAeA,OAAMC,QAAO;AACpC,gBAAM,oBAAoBD,MAAK,SAAS;AACxC,gBAAM,cAAcC,OAAM,CAAC,EAAE,CAAC;AAC9B,cAAI,sBAAsB,CAAC,qBAAqB,IAAI,WAAW;AAC/D,cAAI;AAEJ,cAAI,mBAAmB;AACtB,4BAAgB,gBAAgB;AAEhC,gBAAI,gBAAgB,KAAK;AAExB,oCAAsBA,OAAM,MAAMA,OAAM,QAAQ,CAAC,MAAM;AAAA,YACxD,WAAW,gBAAgB,KAAK;AAM/B,oCAAsBA,OAAM,MAAMA,OAAM,QAAQ,CAAC,MAAM;AAAA,YACxD;AAAA,UACD,OAAO;AACN,4BAAgB,gBAAgBD,MAAK,IAAI,CAAC;AAAA,UAC3C;AAEA,cAAI,uBAAuB,CAAC,eAAe;AAC1C,mBAAOA,OAAMC,OAAM,OAAOA,OAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAAA,UAC5C;AAAA,QACD;AAQA,iBAAS,eAAeD,OAAM;AAC7B,gBAAM,EAAE,SAAS,MAAM,IAAIA,MAAK;AAChC,cAAI;AACJ,gBAAM,UAAU,MAAM,SAAS,GAAG;AAClC,gBAAM,cAAc,MAAM,SAAS,GAAG;AAEtC,cAAI;AACH,0BAAc,OAAO,aAAa,SAAS,GAAG,QAAQ,QAAQ;AAAA,cAC7D;AAAA,cACA;AAAA,YACD,CAAC;AAAA,UACF,QAAQ;AAEP;AAAA,UACD;AAGA,gBAAM,sBAAsB,CAAC;AAE7B,yBAAe,aAAa;AAAA,YAC3B,uBAAuB,wBACtB,oBAAoB,QAAQ,kBAAkB;AAAA,YAC/C,uBAAuB,MAAM,oBAAoB,MAAM;AAAA,YACvD,iCAAiC,wBAChC,oBAAoB,QAAQ,kBAAkB;AAAA,YAC/C,iCAAiC,MAChC,oBAAoB,MAAM;AAAA,YAC3B,iBAAiB,eAAe;AAC/B,kBAAI,CAAC,cAAc,IAAI,WAAW,IAAI,GAAG;AAExC;AAAA,cACD;AAEA,oBAAM,cAAc,cAAc,IAAI,MAAM,CAAC;AAE7C,kBACC,gBACC,OAAO,cAAc,cAAc,KAAK,KACzC,qBAAqB,SAAS,WAAW,GACxC;AAED;AAAA,cACD;AACA,kBAAI;AAEJ,kBAAI,oBAAoB,QAAQ;AAC/B,iCAAiB,cACd,mCACA;AAAA,cACJ,OAAO;AACN,iCAAiB;AAAA,cAClB;AACA,kBAAI,eAAe,IAAI,WAAW,GAAG;AACpC;AAAA,cACD;AAEA,oBAAM,gBAAgB,cAAc,QAAQ;AAC5C,kBAAI,gCAAgC;AAEpC,kBAAI,oBAAoB,QAAQ;AAC/B,sBAAM,qBAAqB,oBAAoB,CAAC;AAEhD,oBAAI,gBAAgB,KAAK;AAOxB,sBACC,mBAAmB,QAAQ,MAC3B,cAAc,OACb;AACD;AAAA,kBACD;AAAA,gBACD;AACA,oBAAI,CAAC,aAAa;AACjB,sBAAI,gBAAgB,KAAK;AAOxB,wBACC,mBAAmB,QAAQ,MAC1B,cAAc,SACf,cAAc,QACb,mBAAmB,MAAM,GACzB;AACD;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD,OAAO;AAEN,sBACC,2CAA2C;AAAA,oBAC1C;AAAA,kBACD,GACC;AAED,wBACC,QAAQ,cAAc,GAAG,MAAM,aAC9B;AACD;AAAA,oBACD;AACA,wBACC,QAAQ,cAAc,QAAQ,CAAC,MAC/B,aACC;AACD,0BAAI,gBAAgB,KAAK;AACxB;AAAA,sBACD;AAIA,0BAAI,CAAC,mBAAmB,QAAQ;AAC/B;AAAA,sBACD;AACA,4BAAM,mBACL,mBAAmB,QAAQ;AAE5B,0BACC,mBACA,cAAc,QAAQ,GACrB;AACD;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD;AAEA,sBACC,cAAc,OAAO,SACpB,uBACD,cAAc,OAAO,SAAS,oBAC7B;AACD,oDAAgC;AAAA,kBACjC;AAAA,gBACD;AAAA,cACD;AAEA;AAAA,gBACCA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAOA,iBAAS,MAAMA,OAAM;AACpB,gBAAM,oBAAoBA,MAAK,SAAS;AAExC,cACC,qBACAA,MAAK,UACLA,MAAK,OAAO,UACZA,MAAK,OAAO,OAAO,SAAS,8BAC5BA,MAAK,WAAWA,MAAK,OAAO,OAAO,OAClC;AAED;AAAA,UACD;AAEA,cAAI,OAAOA,MAAK,UAAU,YAAY,mBAAmB;AAKxD,gBACCA,MAAK,OAAO,SAAS,kBACrBA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS,eACpB;AACD;AAAA,YACD;AAEA,kBAAME,SAAQ,oBACX,WAAW,QAAQF,KAAI,IACvBA,MAAK;AACR,kBAAM,UAAU;AAChB,gBAAIC;AAEJ,mBAAQA,SAAQ,QAAQ,KAAKC,MAAK,GAAI;AACrC,6BAAeF,OAAMC,MAAK;AAAA,YAC3B;AAAA,UACD,WAAWD,MAAK,OAAO;AACtB,2BAAeA,KAAI;AAAA,UACpB;AAAA,QACD;AAEA,eAAO;AAAA,UACN,SAAS;AAAA,UACT,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrZA;AAAA,uDAAAG,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,qBAAqB;AAAA,YACrB,cAAc;AAAA,YACd,cAAc;AAAA,UACf;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,qBAAqB,EAAE,MAAM,UAAU;AAAA,cACvC,cAAc,EAAE,MAAM,UAAU;AAAA,cAChC,cAAc,EAAE,MAAM,UAAU;AAAA,YACjC;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,sBAAsB;AAAA,QACvB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,CAAC,EAAE,qBAAqB,cAAc,aAAa,CAAC,IACzD,QAAQ;AAaT,iBAAS,YAAYC,OAAM,SAAS,MAAM;AACzC,gBAAM,OACL,QAAQ,SAAS,eAAe,QAAQ,OAAO,QAAQ;AAExD,iBAAO,QAAQ,OAAO;AAAA,YACrB,MAAAA;AAAA,YACA,WAAW;AAAA,YACX,MAAM;AAAA,cACL;AAAA,cACA;AAAA,YACD;AAAA,YACA,IAAI,OAAO;AACV,oBAAM,kBACLA,MAAK,SAAS,aAAaA,MAAK,QAAQA,MAAK;AAE9C,kBACC,WAAW,kBAAkBA,KAAI,EAAE,SACnC,WAAW,kBAAkB,eAAe,EAAE,QAC7C;AACD,uBAAO;AAAA,cACR;AAGA,kBACC,gBAAgB,SAAS,uBACzB,SAAS;AAAA,gBACR;AAAA,gBACA,gBAAgB;AAAA,cACjB,GACC;AACD,uBAAO;AAAA,cACR;AAEA,qBAAO,MAAM;AAAA,gBACZA;AAAA,gBACA,WAAW,QAAQ,eAAe;AAAA,cACnC;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAOA,iBAAS,kBAAkBA,OAAM;AAChC,cAAI,qBAAqB;AACxB;AAAA,UACD;AAEA,qBAAW,YAAYA,MAAK,YAAY;AAKvC,gBACC,SAAS,SAAS,cAClB,SAAS,aACT,SAAS,UACR;AACD;AAAA,YACD;AAEA,kBAAM,MACJ,SAAS,IAAI,SAAS,gBAAgB,SAAS,IAAI,QACnD,SAAS,IAAI,SAAS,aAAa,SAAS,IAAI;AAClD,kBAAM,aACL,SAAS,MAAM,SAAS,sBACrB,SAAS,MAAM,KAAK,OACpB,SAAS,MAAM;AAEnB,gBAAI,QAAQ,YAAY;AACvB;AAAA,gBACC;AAAA,gBACA,SAAS;AAAA,gBACT;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,YAAYA,OAAM;AAC1B,cAAI,cAAc;AACjB;AAAA,UACD;AAEA,cACCA,MAAK,SAAS,MAAM,CAAC,MAAMA,MAAK,MAAM,MAAM,CAAC,KAC7C,SAAS,oBAAoBA,MAAK,QAAQ,MAAMA,MAAK,MAAM,MAC1D;AACD,wBAAYA,OAAMA,MAAK,UAAU,QAAQ;AAAA,UAC1C;AAAA,QACD;AAOA,iBAAS,YAAYA,OAAM;AAC1B,cAAI,cAAc;AACjB;AAAA,UACD;AAEA,cACCA,MAAK,MAAM,MAAM,CAAC,MAAMA,MAAK,SAAS,MAAM,CAAC,KAC7C,SAAS,oBAAoBA,MAAK,KAAK,MACtC,SAAS,oBAAoBA,MAAK,QAAQ,GAC1C;AACD,wBAAYA,OAAMA,MAAK,OAAO,QAAQ;AAAA,UACvC;AAAA,QACD;AAMA,eAAO;AAAA,UACN,eAAe;AAAA,UACf,iBAAiB;AAAA,UACjB,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzMA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAAjB,QACC,aAAa;AACd,QAAM,EAAE,sBAAsB,IAAI;AAYlC,aAAS,OAAO,OAAO,SAAS;AAC/B,YAAMC,SAAQ,MAAM,QAAQ,OAAO;AAEnC,UAAIA,WAAU,IAAI;AACjB,cAAM,OAAOA,QAAO,CAAC;AAAA,MACtB;AAAA,IACD;AAOA,aAAS,YAAYC,OAAM;AAC1B,aAAO,SAAS,uBAAuB,IAAIA,MAAK,OAAO,IAAI;AAAA,IAC5D;AAOA,aAAS,YAAYA,OAAM;AAC1B,eACK,cAAcA,OAClB,eAAe,YAAY,UAAU,CAAC,SAAS,WAAW,WAAW,GACrE,cAAc,YAAY,QACzB;AACD,YACC,YAAY,OAAO,SAAS,kBAC5B,YAAY,OAAO,cAAc,aAChC;AACD,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAOA,IAAAF,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QACT,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,iBAAiB,oBAAI,QAAQ;AACnC,cAAM,aAAa,QAAQ;AAC3B,YAAI,YAAY;AAOhB,iBAAS,WAAW,SAAS;AAC5B,gBAAM,OAAO,eAAe,IAAI,OAAO;AAEvC,iBAAO,CAAC,QAAQ,KAAK;AAAA,QACtB;AAoBA,iBAAS,kBACR,gBACA,cACA,2BACC;AACD,gBAAM,oBACL,6BAA6B,oBAAI,QAAQ;AAE1C,qBAAW,WAAW,cAAc;AACnC,gBAAI,CAAC,QAAQ,WAAW;AACvB,kBAAI,CAAC,kBAAkB,IAAI,OAAO,GAAG;AACpC,kCAAkB,IAAI,OAAO;AAC7B;AAAA,kBACC;AAAA,kBACA,QAAQ,gBAAgB,OAAO,UAAU;AAAA,kBACzC;AAAA,gBACD;AAAA,cACD;AACA;AAAA,YACD;AAEA,gBAAI,eAAe,IAAI,OAAO,GAAG;AAChC,6BAAe;AAAA,gBACd,GAAG,eAAe,IAAI,OAAO,EAAE;AAAA,cAChC;AAAA,YACD;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAoBA,iBAAS,oCACR,SACA,yBACC;AACD,cAAI,CAAC,QAAQ,WAAW;AACvB,oCAAwB,IAAI,OAAO;AACnC,oBAAQ,gBACN,OAAO,UAAU,EACjB;AAAA,cACA,iBACC,CAAC,wBAAwB,IAAI,WAAW;AAAA,YAC1C,EACC;AAAA,cAAQ,iBACR;AAAA,gBACC;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AACD;AAAA,UACD;AAEA,gBAAM,OAAO,eAAe,IAAI,OAAO;AAEvC,cAAI,CAAC,MAAM;AACV;AAAA,UACD;AAEA,eAAK,iBAAiB,KAAK,eAAe,OAAO,CAAAE,UAAQ;AACxD,gBACC,UAAU,+BACV,UAAU,4BAA4B,SAAS,GAC9C;AACD,oBAAM,qBAAqBA,MAAK,MAAM,CAAC;AACvC,oBAAM,mBAAmBA,MAAK,MAAM,CAAC;AAErC,oBAAM,mBACL,UAAU,4BAA4B;AAAA,gBACrC,uBAAqB;AACpB,wBAAM,oBACL,kBAAkB,MAAM,CAAC;AAC1B,wBAAM,kBACL,kBAAkB,MAAM,CAAC;AAE1B,yBACC,sBAAsB,qBACtB,oBAAoB;AAAA,gBAEtB;AAAA,cACD;AAED,kBAAI,kBAAkB;AACrB,uBAAO;AAAA,cACR;AAAA,YACD;AAEA,mBAAO,UAAU,gBAAgBA,KAAI;AACrC,mBAAO;AAAA,UACR,CAAC;AAAA,QACF;AAcA,iBAAS,8CAA8C;AACtD,oBAAU,gBAAgB;AAAA,YAAQ,aACjC,oCAAoC,SAAS,oBAAI,IAAI,CAAC;AAAA,UACvD;AAAA,QACD;AAMA,eAAO;AAAA;AAAA,UAEN,gBAAgB,UAAU;AACzB,wBAAY;AAAA,cACX,OAAO;AAAA,cACP,gBAAgB,CAAC;AAAA,cACjB,6BAA6B,CAAC;AAAA,cAC9B;AAAA,cACA,iBAAiB,oBAAI,IAAI;AAAA,YAC1B;AAAA,UACD;AAAA;AAAA,UAGA,gBAAgB;AACf,uBAAWA,SAAQ,UAAU,gBAAgB;AAC5C,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAKA,MAAK;AAAA,gBACV,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,sBACC,YAAYA,KAAI,KAChB,CAAC,WAAW,kBAAkBA,KAAI,EAAE,QACnC;AAOD,2BAAO,IAAI,WAAW,OAAO,UAAU,EACrC,wBAAwBA,KAAI,EAC5B,OAAOA,KAAI;AAAA,kBACd;AACA,yBAAO;AAAA,gBACR;AAAA,cACD,CAAC;AAAA,YACF;AAEA,wBAAY,UAAU;AAAA,UACvB;AAAA;AAAA;AAAA;AAAA;AAAA,UAMA,uBAAuB,SAAS;AAC/B,sBAAU,gBAAgB,IAAI,OAAO;AAErC,kBAAM,OAAO;AAAA,cACZ,gBAAgB;AAAA,gBACf,CAAC;AAAA,gBACD,QAAQ;AAAA,cACT;AAAA,cACA,UAAU;AAAA,YACX;AAGA,2BAAe,IAAI,SAAS,IAAI;AAAA,UACjC;AAAA,UAEA,kCAAkC,SAAS;AAC1C,sBAAU,gBAAgB,IAAI,OAAO;AAAA,UACtC;AAAA,UAEA,gCAAgC,SAAS;AACxC,sBAAU,gBAAgB,OAAO,OAAO;AAAA,UACzC;AAAA,UAEA,qBAAqB,SAAS;AAC7B,sBAAU,gBAAgB,OAAO,OAAO;AAAA,UACzC;AAAA;AAAA,UAGA,gBAAgBA,OAAM;AACrB,gBAAIA,MAAK,UAAU;AAClB,0DAA4C;AAAA,YAC7C;AACA,gBACCA,MAAK,YACL,SAAS,SAASA,KAAI,KACtB,YAAYA,KAAI;AAAA,YAEhB,CAAC,sBAAsB,UAAU,eAAe,GAC/C;AACD;AAAA,YACD;AAEA,uBAAW,WAAW,UAAU,iBAAiB;AAChD,oBAAM,OAAO,eAAe,IAAI,OAAO;AAEvC,kBAAI,MAAM;AACT,qBAAK,eAAe,KAAKA,KAAI;AAC7B,qBAAK,WAAW;AAAA,cACjB;AAAA,YACD;AACA,sBAAU,eAAe,KAAKA,KAAI;AAAA,UACnC;AAAA,UAEA,2CAA2CA,OAAM;AAChD,sBAAU,4BAA4B,KAAKA,KAAI;AAAA,UAChD;AAAA,UAEA,sBAAsB;AACrB,sBAAU,4BAA4B,IAAI;AAAA,UAC3C;AAAA;AAAA;AAAA;AAAA;AAAA,UAMA,kBAAkB;AAAA,UAClB,mBAAmB;AAAA,UACnB,mBAAmB;AAAA,UACnB,kBAAkB;AAAA,UAClB,gBAAgB;AAAA,UAChB,qBAAqB;AAAA,UACrB,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,mBAAmB;AAAA,UACnB,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,qBAAqB;AAAA,UACrB,gBAAgB;AAAA,UAChB,eAAe;AAAA,UACf,wBAAwB;AAAA,UACxB,0BACC;AAAA,UACD,sBAAsB;AAAA,QACvB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AClYA;AAAA,4CAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAmBjB,aAAS,SAAS,UAAU;AAC3B,aAAO,QAAQ,SAAS,KAAK,KAAK,SAAS,MAAM,SAAS;AAAA,IAC3D;AASA,aAAS,0BAA0B,OAAO;AACzC,UAAI,eAAe;AAEnB,aAAO,aAAa,SAAS,cAAc,aAAa,SAAS,UAAU;AAC1E,uBAAe,aAAa;AAAA,MAC7B;AACA,aAAO;AAAA,IACR;AAQA,aAAS,sBAAsB,UAAU;AACxC,YAAM,yBAAyB,0BAA0B,SAAS,KAAK;AAEvE,aAAO,SAAS,WAAW;AAAA,QAC1B,eACC,0BAA0B,UAAU,IAAI,MACxC;AAAA,MACF;AAAA,IACD;AAQA,aAAS,eAAeC,OAAM;AAC7B,cACEA,MAAK,OAAO,SAAS,oBACrBA,MAAK,OAAO,SAAS,qBACtBA,UAASA,MAAK,OAAO;AAAA,IAEvB;AAOA,aAAS,yBAAyBA,OAAM;AACvC,aAAOA,MAAK,aAAa,MAAM,gBAAc,WAAW,SAAS,IAAI;AAAA,IACtE;AAEA,QAAM,kBACL;AAUD,aAAS,aAAaA,OAAM;AAC3B,eACK,cAAcA,OAClB,aACA,cAAc,YAAY,QACzB;AACD,YAAI,gBAAgB,KAAK,YAAY,IAAI,GAAG;AAC3C,iBAAO;AAAA,QACR;AAAA,MACD;AAGA,aAAO;AAAA,IACR;AAOA,aAAS,aAAa,UAAU;AAC/B,aAAO,SAAS,KAAK,UAAU;AAAA,IAChC;AAQA,aAAS,oBAAoB,WAAW;AAOvC,eAAS,iBAAiB,WAAW;AACpC,cAAM,QAAQ,UAAU;AACxB,cAAM,KAAK,UAAU,WAAW;AAEhC,eAAO,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC;AAAA,MAC3C;AAEA,aAAO,SAAU,UAAU;AAC1B,eAAO,SAAS,WAAW,KAAK,gBAAgB;AAAA,MACjD;AAAA,IACD;AAcA,aAAS,kBAAkBA,OAAM;AAChC,YAAM,YAAYA,MAAK,MAAM,CAAC;AAC9B,YAAM,UAAUA,MAAK,MAAM,CAAC;AAE5B,aAAO,cAAY;AAClB,cAAM,KAAK,SAAS,KAAK,CAAC,EAAE;AAC5B,cAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,cAAM,eACL,GAAG,OAAO,SAAS,sBAAsB,GAAG,OAAO,QAAQ;AAC5D,cAAM,eAAe,gBAAgB,aAAa,MAAM,CAAC;AACzD,cAAM,aAAa,gBAAgB,aAAa,MAAM,CAAC;AAEvD,eAAO,SAAS,WAAW,KAAK,eAAa;AAC5C,gBAAM,QAAQ,UAAU,WAAW,MAAM,CAAC;AAC1C,gBAAM,MAAM,UAAU,WAAW,MAAM,CAAC;AAExC,iBACC,CAAC,UAAU,SACV,QAAQ,WACP,iBAAiB,QACjB,SAAS,gBACT,OAAO,cACP,CAAC,SAAS,WAAWA,KAAI,KACzB,SAAS,aACT,OAAO;AAAA,QAEX,CAAC;AAAA,MACF;AAAA,IACD;AAQA,aAAS,oCAAoC,UAAU;AACtD,aAAO,SAAS,SAAS;AAAA,IAC1B;AAQA,aAAS,8BAA8B,UAAU;AAChD,YAAM,mBAAmB,SAAS,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC;AAEtD,aAAO,SAAS,WAAW,KAAK,eAAa;AAC5C,cAAM,iBAAiB,UAAU,WAAW,MAAM,CAAC;AAQnD,eAAO,CAAC,UAAU,QAAQ,iBAAiB;AAAA,MAC5C,CAAC;AAAA,IACF;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,SAAS;AAAA,QAET,UAAU;AAAA,UACT,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAO3B,iBAAS,sBAAsB,YAAY;AAC1C,cAAI,CAAC,WAAW,MAAM;AACrB,mBAAO;AAAA,UACR;AACA,gBAAM,YAAY,WAAW,qBAAqB,UAAU;AAE5D,iBAAO,UAAU,KAAK,kBAAkB,WAAW,IAAI,CAAC;AAAA,QACzD;AAuDA,iBAAS,OAAOC,OAAM;AACrB,gBAAM,YAAY,WAAW,qBAAqBA,KAAI;AACtD,gBAAM,YAAY,aAAaA,KAAI;AACnC,gBAAM,sBAAsB,oBAAI,IAAI;AAAA,YACnC,GAAG,SAAS;AAAA,YACZ;AAAA,UACD,CAAC;AAED,cACCA,MAAK,OAAO,SAAS,gBACrBA,MAAK,aAAa,KAAK,qBAAqB,KAC5C,UAAU,KAAK,QAAQ,KACvB,UAAU,KAAK,YAAY,KAC3B,UAAU,KAAK,oBAAoB,SAAS,CAAC,KAC7C,UAAU,KAAK,mCAAmC,KAClD,UAAU,KAAK,6BAA6B,GAC3C;AACD,mBAAO;AAAA,UACR;AAEA,cAAI,SAAS,SAASA,KAAI,GAAG;AAC5B,gBAAI,UAAU,KAAK,qBAAqB,GAAG;AAC1C,qBAAO;AAAA,YACR;AACA,gBAAI,CAAC,eAAeA,KAAI,KAAK,CAAC,yBAAyBA,KAAI,GAAG;AAC7D,qBAAO;AAAA,YACR;AAAA,UACD;AAEA,cACC,CAAC,eAAeA,KAAI,KACpB,EACCA,MAAK,OAAO,SAAS,kBACrBA,MAAK,OAAO,SAASA,UAEtB,CAAC,oBAAoB,IAAIA,MAAK,OAAO,IAAI,GACxC;AAED,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AAOA,iBAAS,OAAOA,OAAM;AACrB,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW;AAAA,YAEX,IAAI,OAAO;AACV,oBAAM,WAAW,WAAW,cAAcA,OAAM;AAAA,gBAC/C,QAAQ,OAAK,EAAE,UAAU;AAAA,cAC1B,CAAC;AAED,qBAAO,OAAOA,KAAI,IACf,MAAM,YAAY,UAAU,KAAK,IACjC;AAAA,YACJ;AAAA,UACD,CAAC;AAAA,QACF;AAEA,eAAO;AAAA,UACN,2BAA2BA,OAAM;AAChC,gBAAIA,MAAK,SAAS,OAAO;AACxB;AAAA,YACD;AAEA,gBACCA,MAAK,OAAO,SAAS,mBACrBA,MAAK,OAAO,OAAO,SAAS,yBAC5BA,MAAK,OAAO,OAAO,QAClB;AACD;AAAA,YACD;AAEA,mBAAOA,KAAI;AAAA,UACZ;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACjZA;AAAA,6CAAAC,UAAAC,SAAA;AAAA;AAWA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,kBAAkB;AAAA,UACnB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,UAAU;AAAA,UACT,QAAQ;AAAA,QACT;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,kBAAkB;AAAA,gBACjB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,iBAAiB,CAAC,IAAI,QAAQ;AAMvC,eAAO;AAAA,UACN,mCAAmCC,OAAM;AACxC,gBACC,oBACAA,MAAK,UACLA,MAAK,OAAO,SAAS,uBACpB;AACD;AAAA,YACD;AACA,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,YACZ,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpEA;AAAA,yDAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,eAAe;AACrB,QAAM,WAAW;AAEjB,QAAM,aAAa;AAOnB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,UAAU;AAAA,YACV,OAAO,CAAC,QAAQ,SAAS,KAAK;AAAA,UAC/B;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,OAAO;AAAA,gBACN,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,cACD;AAAA,cACA,UAAU;AAAA,gBACT,MAAM,CAAC,SAAS,UAAU;AAAA,cAC3B;AAAA,cACA,YAAY;AAAA,gBACX,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,kBACN,SAAS;AAAA,gBACV;AAAA,gBACA,UAAU;AAAA,gBACV,aAAa;AAAA,cACd;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,mBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,CAAC,EAAE,YAAY,UAAU,OAAO,aAAa,CAAC,IAAI,QAAQ;AAChE,cAAM,oBAAoB;AAAA,UACzB,aAAa,WAAW,KAAK,EAAE,IAAI;AAAA,QACpC;AACA,cAAM,kBAAkB;AASxB,iBAAS,gBAAgB,MAAM;AAC9B,gBAAM,UAAU,aAAa,IAAI;AAsBjC,gBAAM,eAAe;AAErB,cAAI,SAAS;AAEb,cAAI,aAAa,SAAS;AACzB,qBAAS,QAAQ,iBAAiB;AAAA,UACnC,WAAW,OAAO,KAAK,IAAI,GAAG;AAC7B,qBAAS;AAAA,UACV;AAEA,gBAAM,SAAS,OAAO,KAAK,IAAI,IAAI,eAAe;AAClD,gBAAM,QAAQ;AAcd,iBAAO,IAAI,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,IAAI,KAAK;AAAA,QACxD;AAEA,cAAM,iBAAiB,aAAa,IAAI,eAAe;AAOvD,iBAAS,2BAA2B,SAAS;AAC5C,gBAAM,UAAU,CAAC;AAEjB,yBAAe,QAAQ,CAAC,OAAOC,WAAU;AACxC,gBAAI,MAAM,KAAK,OAAO,GAAG;AACxB,sBAAQ,KAAK,aAAaA,MAAK,CAAC;AAAA,YACjC;AAAA,UACD,CAAC;AAED,iBAAO;AAAA,QACR;AAOA,iBAAS,aAAaC,OAAM;AAC3B,gBAAM,UAAUA,MAAK;AAErB,cACC,SAAS,mBAAmBA,KAAI,KAChC,gBAAgB,KAAK,OAAO,GAC3B;AACD;AAAA,UACD;AAEA,gBAAM,UAAU,2BAA2B,OAAO;AAElD,kBAAQ,QAAQ,iBAAe;AAC9B,gBAAI,mBAAmB;AACvB,gBAAI,YAAY;AAEhB,uBAAW,KAAK,QAAQ,KAAK,EAAE,MAAM,MAAM,GAAG;AAC7C,oBAAM,MAAM,mBACT,GAAG,gBAAgB,IAAI,CAAC,KACxB;AAEH,kBAAI,IAAI,UAAU,YAAY;AAC7B,mCAAmB;AAAA,cACpB,OAAO;AACN,4BAAY;AACZ;AAAA,cACD;AAAA,YACD;AAEA,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM;AAAA,gBACL;AAAA,gBACA,SAAS,GAAG,gBAAgB,GAAG,YAAY,QAAQ,EAAE;AAAA,cACtD;AAAA,YACD,CAAC;AAAA,UACF,CAAC;AAAA,QACF;AAEA,eAAO;AAAA,UACN,UAAU;AACT,kBAAM,WAAW,WAAW,eAAe;AAE3C,qBACE,OAAO,WAAS,MAAM,SAAS,SAAS,EACxC,QAAQ,YAAY;AAAA,UACvB;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AChNA;AAAA,mEAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QACT,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,sBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAc3B,iBAAS,YAAYC,OAAM,WAAW,YAAY;AACjD,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW;AAAA,YACX,MAAM;AAAA,cACL,UAAU,WAAW,QAAQA,MAAK,QAAQ;AAAA,YAC3C;AAAA,YACA,IAAI,OAAO;AACV,kBAAI,kBAAkB;AAEtB,kBACC,CAACA,MAAK,YACN,CAACA,MAAK,YACN,SAAS,iBAAiBA,MAAK,MAAM,GACpC;AAKD,uBAAO;AAAA,cACR;AAGA,kBACC,WAAW,qBAAqB,WAAW,UAAU,GACpD;AACD,uBAAO;AAAA,cACR;AAEA,kBAAIA,MAAK,UAAU;AAClB,kCAAkB;AAAA,cACnB,WAAW,CAACA,MAAK,UAAU;AAC1B,kCAAkB;AAAA,cACnB;AAEA,qBAAO,MAAM;AAAA,gBACZ,CAAC,UAAU,MAAM,CAAC,GAAG,WAAW,MAAM,CAAC,CAAC;AAAA,gBACxC;AAAA,cACD;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAMA,eAAO;AAAA,UACN,iBAAiBA,OAAM;AACtB,gBAAI;AACJ,gBAAI;AAEJ,gBAAI,CAAC,SAAS,kBAAkBA,MAAK,QAAQA,MAAK,QAAQ,GAAG;AAC5D;AAAA,YACD;AAEA,gBAAIA,MAAK,UAAU;AAClB,2BAAa,WAAW;AAAA,gBACvBA,MAAK;AAAA,gBACL,SAAS;AAAA,cACV;AACA,0BAAY,WAAW;AAAA,gBACtB;AAAA,gBACAA,MAAK,WAAW,IAAI;AAAA,cACrB;AAAA,YACD,OAAO;AACN,2BAAa,WAAW,cAAcA,MAAK,QAAQ;AACnD,0BAAY,WAAW,eAAe,YAAY,CAAC;AAAA,YACpD;AAEA,gBAAI,WAAW,eAAe,WAAW,UAAU,GAAG;AACrD,0BAAYA,OAAM,WAAW,UAAU;AAAA,YACxC;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrJA;AAAA,6CAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,cAAcC,OAAM;AACnB,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,WAAW,cAAcA,KAAI,EAAE;AAAA,cACpC,WAAW;AAAA,YACZ,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1CA;AAAA,sEAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,kBAAkB,EAAE,MAAM,CAAC,UAAU,SAAS,KAAK,EAAE;AAG3D,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,UACA;AAAA,YACC,YAAY;AAAA,cACX,WAAW;AAAA,gBACV,YAAY;AAAA,kBACX,IAAI;AAAA,kBACJ,MAAM;AAAA,kBACN,OAAO;AAAA,kBACP,IAAI;AAAA,kBACJ,KAAK;AAAA,gBACN;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,mBAAmB;AAAA,UACnB,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAW3B,iBAAS,UAAU,aAAa;AAC/B,iBACE,QAAQ,QAAQ,CAAC,KACjB,QAAQ,QAAQ,CAAC,EAAE,aACnB,QAAQ,QAAQ,CAAC,EAAE,UAAU,WAAW,KACzC,QAAQ,QAAQ,CAAC,KACjB;AAAA,QAEF;AAQA,iBAAS,kBAAkBC,OAAM,aAAa;AAC7C,gBAAM,SAAS,UAAU,WAAW;AAEpC,cAAIA,MAAK,SAAS,oBAAoB,WAAW,OAAO;AACvD;AAAA,UACD;AAEA,gBAAM,cAAc,WAAW,eAAeA,KAAI;AAElD,cACC,YAAY,IAAI,IAAI,SAASA,MAAK,IAAI,MAAM,QAC5C,WAAW,SACV;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,KAAK,WAAS,MAAM,iBAAiBA,OAAM,IAAI;AAAA,YAChD,CAAC;AAAA,UACF,WACC,YAAY,IAAI,IAAI,SAASA,MAAK,IAAI,MAAM,QAC5C,WAAW,UACV;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,IAAI,OAAO;AACV,oBACC,WACE,QAAQ,EACR,MAAM,YAAY,MAAM,CAAC,GAAGA,MAAK,MAAM,CAAC,CAAC,EACzC,KAAK,GACN;AACD,yBAAO;AAAA,gBACR;AACA,uBAAO,MAAM;AAAA,kBACZ,CAAC,YAAY,MAAM,CAAC,GAAGA,MAAK,MAAM,CAAC,CAAC;AAAA,kBACpC;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAMA,eAAO;AAAA,UACN,YAAYA,OAAM;AACjB,8BAAkBA,MAAK,YAAY,IAAI;AAGvC,gBAAIA,MAAK,aAAaA,MAAK,UAAU,SAAS,eAAe;AAC5D,gCAAkBA,MAAK,WAAW,MAAM;AAAA,YACzC;AAAA,UACD;AAAA,UACA,gBAAgB,CAAAA,UAAQ,kBAAkBA,MAAK,MAAM,OAAO;AAAA,UAC5D,kBAAkB,CAAAA,UAAQ,kBAAkBA,MAAK,MAAM,IAAI;AAAA,UAC3D,cAAc,CAAAA,UAAQ,kBAAkBA,MAAK,MAAM,KAAK;AAAA,UACxD,gBAAgB,CAAAA,UAAQ,kBAAkBA,MAAK,MAAM,KAAK;AAAA,UAC1D,gBAAgB,CAAAA,UAAQ,kBAAkBA,MAAK,MAAM,KAAK;AAAA,QAC3D;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnKA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAOjB,QAAM,eAAe;AAAA,MACpB,OAAO;AAAA,QACN;AAAA,UACC,MAAM,CAAC,UAAU,OAAO;AAAA,QACzB;AAAA,QACA;AAAA,UACC,MAAM;AAAA,UACN,YAAY;AAAA,YACX,WAAW;AAAA,cACV,MAAM;AAAA,YACP;AAAA,YACA,eAAe;AAAA,cACd,MAAM;AAAA,cACN,SAAS;AAAA,YACV;AAAA,YACA,YAAY;AAAA,cACX,MAAM;AAAA,YACP;AAAA,UACD;AAAA,UACA,sBAAsB;AAAA,UACtB,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,IACD;AAOA,aAAS,qBAAqBC,QAAO;AACpC,UAAI,YAAY;AAChB,UAAI,gBAAgB,OAAO;AAC3B,UAAI,aAAa;AAEjB,UAAIA,QAAO;AACV,YAAIA,WAAU,UAAU;AACvB,0BAAgB;AAAA,QACjB,WAAWA,WAAU,SAAS;AAC7B,0BAAgB,OAAO;AAAA,QACxB,OAAO;AACN,sBAAY,QAAQA,OAAM,SAAS;AACnC,0BAAgBA,OAAM,iBAAiB,OAAO;AAC9C,uBAAa,QAAQA,OAAM,UAAU;AAAA,QACtC;AAAA,MACD,OAAO;AACN,qBAAa;AAAA,MACd;AAEA,aAAO,EAAE,WAAW,eAAe,WAAW;AAAA,IAC/C;AAOA,aAAS,SAASA,QAAO;AACxB,aAAO,OAAOA,WAAU,YAAYA,WAAU;AAAA,IAC/C;AAOA,aAAS,qBAAqB,QAAQ;AACrC,aAAO,SAAS,MAAM,KAAK,OAAO,WAAW;AAAA,IAC9C;AAYA,aAAS,iBAAiB,SAAS;AAClC,UACC,SAAS,OAAO,KAChB,OAAO,OAAO,OAAO,EAAE,KAAK,oBAAoB,GAC/C;AACD,eAAO;AAAA,UACN,kBAAkB,qBAAqB,QAAQ,gBAAgB;AAAA,UAC/D,eAAe,qBAAqB,QAAQ,aAAa;AAAA,UACzD,mBAAmB,qBAAqB,QAAQ,iBAAiB;AAAA,UACjE,wBAAwB;AAAA,YACvB,QAAQ;AAAA,UACT;AAAA,QACD;AAAA,MACD;AAEA,YAAMA,SAAQ,qBAAqB,OAAO;AAE1C,aAAO;AAAA,QACN,kBAAkBA;AAAA,QAClB,eAAeA;AAAA,QACf,mBAAmBA;AAAA,QACnB,wBAAwBA;AAAA,MACzB;AAAA,IACD;AAWA,aAAS,sBAAsBC,OAAM,SAASC,QAAO,MAAM;AAC1D,UAAI;AAEJ,UAAID,MAAK,SAAS,sBAAsBA,MAAK,SAAS,iBAAiB;AACtE,2BAAmBA,MAAK;AAAA,MACzB,OAAO;AAEN,2BAAmBA,MAAK,WAAW;AAAA,UAClC,OAAK,EAAE,SAAS,qBAAqB,EAAE,SAAS;AAAA,QACjD;AAAA,MACD;AAEA,aACC,iBAAiB,UAAU,QAAQ,iBAClC,QAAQ,aACR,iBAAiB,SAAS,KAC1BC,OAAM,IAAI,MAAM,SAAS,KAAK,IAAI,IAAI;AAAA,IAEzC;AAOA,IAAAH,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,kBAAkB;AAAA,kBAClB,eAAe;AAAA,kBACf,mBAAmB;AAAA,kBACnB,mBAAmB;AAAA,gBACpB;AAAA,gBACA,sBAAsB;AAAA,gBACtB,eAAe;AAAA,cAChB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,uCACC;AAAA,UACD,sCACC;AAAA,UACD,qCACC;AAAA,UACD,oCACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,oBAAoB,iBAAiB,QAAQ,QAAQ,CAAC,CAAC;AAO7D,iBAAS,MAAME,OAAM;AACpB,gBAAM,UAAU,kBAAkBA,MAAK,IAAI;AAE3C,cACEA,MAAK,SAAS,uBACd,CAACA,MAAK,WAAW;AAAA,YAChB,eAAa,UAAU,SAAS;AAAA,UACjC,KACAA,MAAK,SAAS,4BACd,CAACA,MAAK,WAAW;AAAA,YAChB,eAAa,UAAU,SAAS;AAAA,UACjC,GACA;AACD;AAAA,UACD;AAEA,gBAAM,YAAY,WAAW;AAAA,YAC5BA;AAAA,YACA,WAAS,MAAM,UAAU;AAAA,UAC1B;AAEA,cAAI;AAEJ,cAAIA,MAAK,gBAAgB;AACxB,yBAAa,WAAW,eAAeA,MAAK,cAAc;AAAA,UAC3D,OAAO;AACN,yBAAa,WAAW;AAAA,cACvBA;AAAA,cACA,WAAS,MAAM,UAAU;AAAA,YAC1B;AAAA,UACD;AAEA,cAAIC,SAAQ,WAAW,cAAc,WAAW;AAAA,YAC/C,iBAAiB;AAAA,UAClB,CAAC;AACD,cAAI,OAAO,WAAW,eAAe,YAAY;AAAA,YAChD,iBAAiB;AAAA,UAClB,CAAC;AAED,gBAAM,kBAAkB;AAAA,YACvBD;AAAA,YACA;AAAA,YACAC;AAAA,YACA;AAAA,UACD;AAEA,gBAAM,wBAAwB,SAAS,eAAeA,MAAK;AAC3D,gBAAM,uBAAuB,SAAS,eAAe,IAAI;AAUzD,UAAAA,SAAQ,WAAW,cAAc,SAAS;AAC1C,iBAAO,WAAW,eAAe,UAAU;AAE3C,cAAI,iBAAiB;AACpB,gBAAI,SAAS,kBAAkB,WAAWA,MAAK,GAAG;AACjD,sBAAQ,OAAO;AAAA,gBACd,WAAW;AAAA,gBACX,MAAAD;AAAA,gBACA,KAAK,UAAU;AAAA,gBACf,IAAI,OAAO;AACV,sBAAI,uBAAuB;AAC1B,2BAAO;AAAA,kBACR;AAEA,yBAAO,MAAM,gBAAgB,WAAW,IAAI;AAAA,gBAC7C;AAAA,cACD,CAAC;AAAA,YACF;AACA,gBAAI,SAAS,kBAAkB,MAAM,UAAU,GAAG;AACjD,sBAAQ,OAAO;AAAA,gBACd,WAAW;AAAA,gBACX,MAAAA;AAAA,gBACA,KAAK,WAAW;AAAA,gBAChB,IAAI,OAAO;AACV,sBAAI,sBAAsB;AACzB,2BAAO;AAAA,kBACR;AAEA,yBAAO,MAAM,iBAAiB,YAAY,IAAI;AAAA,gBAC/C;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD,OAAO;AACN,kBAAM,aAAa,QAAQ;AAC3B,kBAAM,uCACL,CAAC,SAAS,kBAAkB,WAAWC,MAAK;AAC7C,kBAAM,uCACL,CAAC,SAAS,kBAAkB,MAAM,UAAU;AAE7C,gBACE,CAAC,cAAc,wCACf,cACA,wCACA,CAAC,sCACD;AACD,sBAAQ,OAAO;AAAA,gBACd,WAAW;AAAA,gBACX,MAAAD;AAAA,gBACA,KAAK,UAAU;AAAA,gBACf,IAAI,OAAO;AACV,sBAAI,uBAAuB;AAC1B,2BAAO;AAAA,kBACR;AAEA,yBAAO,MAAM,YAAY;AAAA,oBACxB,UAAU,MAAM,CAAC;AAAA,oBACjBC,OAAM,MAAM,CAAC;AAAA,kBACd,CAAC;AAAA,gBACF;AAAA,cACD,CAAC;AAAA,YACF;AACA,gBACE,CAAC,cAAc,wCACf,cACA,CAAC,wCACD,sCACA;AACD,sBAAQ,OAAO;AAAA,gBACd,WAAW;AAAA,gBACX,MAAAD;AAAA,gBACA,KAAK,WAAW;AAAA,gBAChB,IAAI,OAAO;AACV,sBAAI,sBAAsB;AACzB,2BAAO;AAAA,kBACR;AAEA,yBAAO,MAAM,YAAY;AAAA,oBACxB,KAAK,MAAM,CAAC;AAAA,oBACZ,WAAW,MAAM,CAAC;AAAA,kBACnB,CAAC;AAAA,gBACF;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,kBAAkB;AAAA,UAClB,eAAe;AAAA,UACf,mBAAmB;AAAA,UACnB,wBAAwB;AAAA,QACzB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC9XA;AAAA,0DAAAE,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,OAAO;AAAA,UACzB;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,iBAAiB;AAAA,gBAChB,MAAM;AAAA,cACP;AAAA,cACA,kBAAkB;AAAA,gBACjB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,oBAAoB;AAAA,UACpB,mBAAmB;AAAA,UACnB,uBACC;AAAA,UACD,sBAAsB;AAAA,QACvB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,SAAS,QAAQ,QAAQ,CAAC,MAAM,UACrC,aAAa,QAAQ;AAStB,iBAAS,YAAY,QAAQ;AAC5B,iBAAO,QAAQ,QAAQ,CAAC,IACrB,QAAQ,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC,SAChC;AAAA,QACJ;AAEA,cAAM,UAAU;AAAA,UACf;AAAA,UACA,0BAA0B,YAAY,iBAAiB;AAAA,UACvD,2BAA2B,YAAY,kBAAkB;AAAA,QAC1D;AAYA,iBAAS,uBAAuBC,OAAM,OAAO;AAC5C,gBAAM,YAAY,QAAQ,WAAW,cAAc,OAAO;AAAA,YACzD,iBAAiB;AAAA,UAClB,CAAC;AAED,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK,EAAE,OAAO,MAAM,IAAI,KAAK,KAAK,UAAU,IAAI,MAAM;AAAA,YACtD,WAAW;AAAA,YACX,MAAM;AAAA,cACL,OAAO,MAAM;AAAA,YACd;AAAA,YACA,IAAI,OAAO;AACV,qBAAO,MAAM,YAAY;AAAA,gBACxB,MAAM,MAAM,CAAC;AAAA,gBACb,UAAU,MAAM,CAAC;AAAA,cAClB,CAAC;AAAA,YACF;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,oBAAoBA,OAAM,OAAO;AACzC,gBAAM,gBAAgB,QAAQ,WAAW,eAAe,OAAO;AAAA,YAC9D,iBAAiB;AAAA,UAClB,CAAC;AAED,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK,EAAE,OAAO,cAAc,IAAI,KAAK,KAAK,MAAM,IAAI,MAAM;AAAA,YAC1D,WAAW;AAAA,YACX,MAAM;AAAA,cACL,OAAO,MAAM;AAAA,YACd;AAAA,YACA,IAAI,OAAO;AACV,qBAAO,MAAM,YAAY;AAAA,gBACxB,cAAc,MAAM,CAAC;AAAA,gBACrB,MAAM,MAAM,CAAC;AAAA,cACd,CAAC;AAAA,YACF;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,6BAA6BA,OAAM,OAAO;AAClD,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK,MAAM;AAAA,YACX,WAAW;AAAA,YACX,MAAM;AAAA,cACL,OAAO,MAAM;AAAA,YACd;AAAA,YACA,IAAI,OAAO;AACV,qBAAO,MAAM,gBAAgB,OAAO,GAAG;AAAA,YACxC;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,0BAA0BA,OAAM,OAAO;AAC/C,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,KAAK,MAAM;AAAA,YACX,WAAW;AAAA,YACX,MAAM;AAAA,cACL,OAAO,MAAM;AAAA,YACd;AAAA,YACA,IAAI,OAAO;AACV,qBAAO,MAAM,iBAAiB,OAAO,GAAG;AAAA,YACzC;AAAA,UACD,CAAC;AAAA,QACF;AAWA,iBAAS,qBAAqBA,OAAMC,QAAO,QAAQ,aAAa,MAAM;AACrE,cAAI,SAAS,kBAAkBA,QAAO,MAAM,GAAG;AAC9C,kBAAM,cAAc,WAAW,eAAeA,QAAO,MAAM;AAE3D,gBAAI,QAAQ,UAAU,CAAC,aAAa;AACnC,2CAA6BD,OAAMC,MAAK;AAAA,YACzC;AACA,gBAAI,CAAC,QAAQ,UAAU,eAAe,OAAO,SAAS,QAAQ;AAC7D,qCAAuBD,OAAMC,MAAK;AAAA,YACnC;AAAA,UACD;AAEA,cAAI,SAAS,kBAAkB,aAAa,IAAI,GAAG;AAClD,kBAAM,yBACJ,QAAQ,4BACR,SAAS,sBAAsB,WAAW,KAC1C,QAAQ,6BACR,SAAS,oBAAoB,WAAW;AAC1C,kBAAM,kBACL,0BACA,WAAW,oBAAoB,YAAY,MAAM,CAAC,CAAC,EAAE;AAEtD,kBAAM,gCACJ,QAAQ,4BACR,oBAAoB,qBACpB,QAAQ,8BACP,oBAAoB,sBACpB,oBAAoB,mBACnB,CAAC,QAAQ,SACT,QAAQ;AAEZ,kBAAM,aAAa,WAAW,eAAe,aAAa,IAAI;AAE9D,gBAAI,iCAAiC,CAAC,YAAY;AACjD,wCAA0BD,OAAM,IAAI;AAAA,YACrC;AACA,gBAAI,CAAC,iCAAiC,YAAY;AACjD,kCAAoBA,OAAM,IAAI;AAAA,YAC/B;AAAA,UACD;AAAA,QACD;AAaA,iBAAS,wBAAwBA,OAAM;AACtC,gBAAM,eAAeA,MAAK,WAAW,GAAG,EAAE;AAE1C,iBAAO,WAAW;AAAA,YACjB;AAAA,YACA,SAAS;AAAA,UACV;AAAA,QACD;AAOA,iBAAS,eAAeA,OAAM;AAC7B,cAAIA,MAAK,WAAW,WAAW,GAAG;AACjC;AAAA,UACD;AAEA,gBAAMC,SAAQ,WAAW,cAAcD,KAAI,GAC1C,OAAO,wBAAwBA,KAAI,GACnC,SAAS,WAAW,cAAcC,QAAO;AAAA,YACxC,iBAAiB;AAAA,UAClB,CAAC,GACD,cAAc,WAAW,eAAe,MAAM;AAAA,YAC7C,iBAAiB;AAAA,UAClB,CAAC;AAEF,+BAAqBD,OAAMC,QAAO,QAAQ,aAAa,IAAI;AAAA,QAC5D;AAOA,iBAAS,eAAeD,OAAM;AAC7B,cAAIA,MAAK,WAAW,WAAW,GAAG;AACjC;AAAA,UACD;AAEA,cAAI,iBAAiBA,MAAK,WAAW,CAAC;AACtC,gBAAM,gBAAgBA,MAAK,WAAW,GAAG,EAAE;AAE3C,cAAI,cAAc,SAAS,mBAAmB;AAC7C;AAAA,UACD;AACA,cAAI,eAAe,SAAS,mBAAmB;AAC9C,6BAAiBA,MAAK,WAAW,CAAC;AAAA,UACnC;AAEA,gBAAMC,SAAQ,WAAW,eAAe,cAAc,GACrD,OAAO,WAAW;AAAA,YACjB;AAAA,YACA,SAAS;AAAA,UACV,GACA,SAAS,WAAW,cAAcA,QAAO;AAAA,YACxC,iBAAiB;AAAA,UAClB,CAAC,GACD,cAAc,WAAW,eAAe,MAAM;AAAA,YAC7C,iBAAiB;AAAA,UAClB,CAAC;AAEF,+BAAqBD,OAAMC,QAAO,QAAQ,aAAa,IAAI;AAAA,QAC5D;AAOA,iBAAS,eAAeD,OAAM;AAC7B,cAAIA,MAAK,WAAW,WAAW,GAAG;AACjC;AAAA,UACD;AAEA,gBAAM,iBAAiBA,MAAK,WAAW,CAAC,GACvC,gBAAgBA,MAAK,WAAW,GAAG,EAAE,GACrCC,SAAQ,WAAW,eAAe,cAAc,GAChD,OAAO,WAAW;AAAA,YACjB;AAAA,YACA,SAAS;AAAA,UACV,GACA,SAAS,WAAW,cAAcA,QAAO;AAAA,YACxC,iBAAiB;AAAA,UAClB,CAAC,GACD,cAAc,WAAW,eAAe,MAAM;AAAA,YAC7C,iBAAiB;AAAA,UAClB,CAAC;AAEF,+BAAqBD,OAAMC,QAAO,QAAQ,aAAa,IAAI;AAAA,QAC5D;AAMA,eAAO;AAAA;AAAA,UAEN,eAAe;AAAA;AAAA,UAGf,kBAAkB;AAAA;AAAA,UAGlB,mBAAmB;AAAA;AAAA,UAGnB,wBAAwB;AAAA,QACzB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AChXA;AAAA,6DAAAC,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,8BAA8B;AAAA,gBAC7B,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,gCAAgC;AAAA;AAAA,gBAE/B,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QAET,UAAU;AAAA,UACT,wBACC;AAAA,UACD,qBAAqB;AAAA,QACtB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,gBACL,QAAQ,QAAQ,CAAC,MAChB,QAAQ,QAAQ,CAAC,EAAE,gCACnB,QAAQ,QAAQ,CAAC,EACf;AACJ,cAAM,YAAY,gBACf,2BACA;AAEH,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,iBAAiBC,OAAM;AACtB,gBAAI,eAAe;AAClB,kBAAIA,MAAK,WAAW,SAAS,GAAG;AAC/B,sBAAM,4BACL,WAAW,cAAcA,MAAK,WAAW,CAAC,CAAC;AAC5C,sBAAM,0BAA0B,WAAW;AAAA,kBAC1CA,MAAK,WAAW,GAAG,EAAE;AAAA,gBACtB;AAEA,oBACC,0BAA0B,IAAI,IAAI,SAClC,wBAAwB,IAAI,MAAM,MACjC;AAED;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAEA,qBAAS,IAAI,GAAG,IAAIA,MAAK,WAAW,QAAQ,KAAK;AAChD,oBAAM,8BAA8B,WAAW;AAAA,gBAC9CA,MAAK,WAAW,IAAI,CAAC;AAAA,cACtB;AACA,oBAAM,8BACL,WAAW,cAAcA,MAAK,WAAW,CAAC,CAAC;AAE5C,kBACC,4BAA4B,IAAI,IAAI,SACpC,4BAA4B,IAAI,MAAM,MACrC;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,KAAK,4BAA4B;AAAA,kBACjC;AAAA,kBACA,IAAI,OAAO;AACV,0BAAM,QAAQ,WAAW;AAAA,sBACxB;AAAA,oBACD;AACA,0BAAM,kBAAkB;AAAA,sBACvB,MAAM,MAAM,CAAC;AAAA,sBACb,4BAA4B,MAAM,CAAC;AAAA,oBACpC;AAGA,wBACC,WAAW,KACT;AAAA,sBACA,gBAAgB,CAAC;AAAA,sBACjB,gBAAgB,CAAC;AAAA,oBAClB,EACC,KAAK,GACN;AACD,6BAAO;AAAA,oBACR;AAEA,2BAAO,MAAM;AAAA,sBACZ;AAAA,sBACA;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACtJA;AAAA,sDAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,UAAU;AAAA,MACf,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,oBAAoB;AAAA,IACrB;AAKA,QAAM,WAAW;AAKjB,QAAM,oBAAoB;AAC1B,QAAM,sBAAsB;AAQ5B,aAAS,cAAc,MAAM;AAC5B,YAAMC,SAAQ,kBAAkB,KAAK,IAAI;AAGzC,UAAI,CAACA,QAAO;AACX,eAAO;AAAA,MACR;AAEA,YAAM,YAAY,KAAK,OAAOA,OAAM,KAAK;AAEzC,aAAO,cAAc,UAAU,YAAY;AAAA,IAC5C;AAQA,aAAS,iBAAiB,UAAU;AACnC,aACC,SAAS,SAAS,SAClB,SAAS,SAAS,SAClB,SAAS,SAAS,mBAClB,SAAS,SAAS,oBAClB,SAAS,SAAS;AAAA,IAEpB;AAOA,aAAS,gBAAgBC,OAAM;AAC9B,aAAOA,MAAK,SAAS,aAAa,OAAOA,MAAK,UAAU;AAAA,IACzD;AAQA,aAAS,YAAY,UAAU;AAE9B,aAAO,SAAS,aAAa,SAAS;AAAA,IACvC;AAQA,aAAS,YAAY,UAAU;AAC9B,YAAMC,SAAQ,SAAS;AAEvB,UAAIA,OAAM,SAAS,sBAAsB;AACxC,eAAO,CAACA,OAAM;AAAA,MACf;AACA,UAAIA,OAAM,SAAS,cAAc;AAChC,eAAO,SAAS,sBAAsB,QAAQ,MAAMA,OAAM;AAAA,MAC3D;AAEA,aAAO;AAAA,IACR;AAMA,IAAAH,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP,OAAO;AAAA,YACN;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM;AAAA,oBACL;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,UAAU,WAAW,YAAY;AAAA,gBACzC;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,aAAa;AAAA,sBACZ,MAAM;AAAA,oBACP;AAAA,kBACD;AAAA,kBACA,sBAAsB;AAAA,gBACvB;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,UAAU,SAAS;AAAA,gBAC3B;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,oBAAoB;AAAA,sBACnB,MAAM;AAAA,oBACP;AAAA,oBACA,sBAAsB;AAAA,sBACrB,MAAM;AAAA,oBACP;AAAA,oBACA,aAAa;AAAA,sBACZ,MAAM;AAAA,oBACP;AAAA,oBACA,2BAA2B;AAAA,sBAC1B,MAAM;AAAA,oBACP;AAAA,kBACD;AAAA,kBACA,sBAAsB;AAAA,gBACvB;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,UACD;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,QAAQ;AAAA,QAEzB,UAAU;AAAA,UACT,kCACC;AAAA,UACD,+BACC;AAAA,UACD,2BAA2B;AAAA,UAC3B,0BAA0B;AAAA,UAC1B,yBAAyB;AAAA,UACzB,wBAAwB;AAAA,UACxB,eACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,QAAQ,QAAQ,QAAQ,CAAC;AAC/B,cAAM,mBACL,UAAU,QAAQ,WAAW,UAAU,QAAQ;AAChD,cAAM,iBACL,UAAU,QAAQ,cAAc,UAAU,QAAQ;AACnD,cAAM,cAAc,UAAU,QAAQ;AACtC,cAAM,mBAAmB,UAAU,QAAQ;AAC3C,cAAM,6BAA6B,UAAU,QAAQ;AAErD,cAAM,SAAS,QAAQ,QAAQ,CAAC,KAAK,CAAC;AACtC,cAAM,sBAAsB,OAAO;AACnC,cAAM,yBAAyB,OAAO,uBACnC,IAAI,OAAO,OAAO,sBAAsB,GAAG,IAC3C;AACH,cAAM,eAAe,OAAO;AAC5B,cAAM,+BAA+B,CAAC,CAAC,OAAO;AAC9C,cAAM,aAAa,QAAQ;AAQ3B,iBAAS,iBAAiBE,OAAM,iBAAiB;AAEhD,gBAAM,aAAaA,MAAK,WAAW,OAAO,gBAAgB;AAG1D,cAAI,WAAW,SAAS,GAAG;AAC1B,kBAAM,sBAAsB,WAAW,OAAO,WAAW;AAMzD,gBAAI,oBAAoB,WAAW,WAAW,QAAQ;AAErD,kBAAI,oBAAoB,SAAS,GAAG;AACnC,wBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,gBAAgB,CAAC;AAAA,cACpD,WAAW,iBAAiB;AAK3B,sBAAM,wBACL,WAAW,MAAM,WAAW;AAE7B,oBAAI,uBAAuB;AAC1B,0BAAQ,OAAO;AAAA,oBACd,MAAAA;AAAA,oBACA,WAAW;AAAA,kBACZ,CAAC;AAAA,gBACF;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAQA,iBAAS,sBAAsB,OAAOA,OAAM;AAC3C,gBAAM,gBAAgBA,MAAK,WACxB,WAAW,cAAcA,OAAM,SAAS,qBAAqB,IAC7D,WAAW,cAAcA,MAAK,GAAG;AACpC,gBAAM,eAAeA,MAAK,WACvB,WAAW;AAAA,YACXA,MAAK;AAAA,YACLA,MAAK;AAAA,YACL,SAAS;AAAA,UACV,IACC,WAAW,aAAaA,MAAK,GAAG;AACnC,gBAAM,UAAU,WAAW,KAAK;AAAA,YAC/B,cAAc,MAAM,CAAC;AAAA,YACrB,aAAa,MAAM,CAAC;AAAA,UACrB;AACA,cAAI,YAAY;AAGhB,cAAI,WAAW,qBAAqB,cAAcA,MAAK,KAAK,GAAG;AAC9D,mBAAO;AAAA,UACR;AAEA,cAAIA,MAAK,MAAM,OAAO;AACrB,yBAAa;AAAA,UACd;AACA,cAAIA,MAAK,MAAM,WAAW;AACzB,yBAAa;AAAA,UACd;AAEA,gBAAM,WAAW,CAAC,cAAc,MAAM,CAAC,GAAGA,MAAK,MAAM,CAAC,CAAC;AACvD,gBAAM,eAAe,YAAY;AAEjC,cAAIA,MAAK,MAAM,SAAS,sBAAsB;AAC7C,kBAAM,gBAAgB,WACpB,UAAUA,MAAK,KAAK,EACpB;AAAA,cACA,WACC,MAAM,SAAS,aACf,MAAM,UAAU;AAAA,YAClB;AACD,kBAAM,oBAAoBA,MAAK,MAAM,YAClC,WAAW,cAAc,aAAa,IACtC;AAEH,mBAAO,MAAM;AAAA,cACZ;AAAA,cACA,eACC,WAAW,KAAK;AAAA,gBACf,kBAAkB,MAAM,CAAC;AAAA,gBACzBA,MAAK,MAAM,MAAM,CAAC;AAAA,cACnB;AAAA,YACF;AAAA,UACD;AAEA,gBAAM,aAAa,WAAW;AAAA,YAC7BA,MAAK,MAAM;AAAA,YACX,SAAS;AAAA,UACV;AACA,gBAAM,SAAS,WAAW,KAAK;AAAA,YAC9B,WAAW,MAAM,CAAC;AAAA,YAClBA,MAAK,MAAM,MAAM,CAAC;AAAA,UACnB;AAGA,gBAAM,kBAAkB,WAAW,cAAcA,MAAK,OAAO;AAAA,YAC5D,MAAMA,MAAK,MAAM,QAAQ,IAAI;AAAA,UAC9B,CAAC;AAED,gBAAM,aAAa,gBAAgB,MAAM,CAAC;AAC1C,gBAAM,WAAW,WAAW,eAAe,UAAU,EAAE,MAAM,CAAC;AAC9D,gBAAM,kBACLA,MAAK,MAAM,OAAO,WAAW,KAC7BA,MAAK,MAAM,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM;AAEnC,gBAAM,eAAe,WAAW,KAAK,MAAM,YAAY,QAAQ;AAC/D,gBAAM,eAAe,kBAClB,IAAI,YAAY,MAChB;AAEH,iBAAO,MAAM;AAAA,YACZ;AAAA,YACA,eAAe,eAAe;AAAA,UAC/B;AAAA,QACD;AAQA,iBAAS,qBAAqB,OAAOA,OAAM;AAC1C,gBAAM,gBAAgBA,MAAK,WACxB,WAAW,UAAUA,KAAI,EAAE,KAAK,WAAS,MAAM,UAAU,GAAG,IAC5D,WAAW,cAAcA,MAAK,GAAG;AACpC,gBAAM,eAAeA,MAAK,WACvB,WACC,iBAAiBA,MAAK,KAAKA,MAAK,KAAK,EACrC,KAAK,WAAS,MAAM,UAAU,GAAG,IAClC,WAAW,aAAaA,MAAK,GAAG;AACnC,gBAAM,UAAU,WAAW,KAAK;AAAA,YAC/B,cAAc,MAAM,CAAC;AAAA,YACrB,aAAa,MAAM,CAAC;AAAA,UACrB;AACA,cAAI,iBAAiB;AAErB,cAAIA,MAAK,MAAM,OAAO;AACrB,6BAAiB,SAAS,cAAc;AAAA,UACzC;AACA,cAAIA,MAAK,MAAM,WAAW;AACzB,6BAAiB,GAAG,cAAc;AAAA,UACnC;AAEA,iBAAO,MAAM;AAAA,YACZ,CAACA,MAAK,MAAM,CAAC,GAAG,aAAa,MAAM,CAAC,CAAC;AAAA,YACrC,GAAG,OAAO,KAAK,cAAc;AAAA,UAC9B;AAAA,QACD;AAYA,cAAM,oBAAoB,CAAC;AAC3B,cAAM,+BAA+B,oBAAI,QAAQ;AACjD,cAAM,uBAAuB,oBAAI,QAAQ;AAQzC,iBAAS,cAAcA,OAAM;AAC5B,4BAAkB,QAAQ,oBAAI,IAAI,CAAC;AACnC,qBACE,SAASA,KAAI,EACb,UAAU,OAAO,cAAY,SAAS,SAAS,WAAW,EAC1D,QAAQ,cAAY;AACpB,qBAAS,WACP,IAAI,SAAO,IAAI,UAAU,EACzB;AAAA,cAAQ,gBACR,qBAAqB,IAAI,UAAU;AAAA,YACpC;AAAA,UACF,CAAC;AAAA,QACH;AAMA,iBAAS,eAAe;AACvB,4BAAkB,MAAM;AAAA,QACzB;AAOA,iBAAS,0BAA0B;AAClC,4BAAkB,CAAC,EAAE;AAAA,YAAQ,mBAC5B,6BAA6B,IAAI,aAAa;AAAA,UAC/C;AAAA,QACD;AAMA,eAAO;AAAA,UACN,SAAS;AAAA,UACT,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,UACpB,gBAAgB;AAAA,UAChB,4BAA4B;AAAA,UAC5B,2BAA2B;AAAA,UAE3B,wBAAwBA,OAAM;AAC7B,8BAAkB,CAAC,EAAE,IAAIA,KAAI;AAAA,UAC9B;AAAA,UACA,+BAA+BA,OAAM;AACpC,8BAAkB,CAAC,EAAE,OAAOA,KAAI;AAAA,UACjC;AAAA,UAEA,gBAAgB;AAAA,UAChB,OAAO;AAAA,UACP,aAAaA,OAAM;AAClB,gBACCA,MAAK,KAAK,SAAS,SACnBA,MAAK,SAAS,SAAS,UACtB;AACD,sCAAwB;AAAA,YACzB;AAAA,UACD;AAAA,UACA,WAAWA,OAAM;AAChB,gBAAI,qBAAqB,IAAIA,KAAI,GAAG;AACnC,sCAAwB;AAAA,YACzB;AAAA,UACD;AAAA,UAEA,iBAAiBA,OAAM;AACtB,gBAAI,kBAAkB;AACrB,+BAAiBA,OAAM,KAAK;AAAA,YAC7B,WAAW,4BAA4B;AACtC,+BAAiBA,OAAM,IAAI;AAAA,YAC5B;AAAA,UACD;AAAA,UAEA,gBAAgBA,OAAM;AACrB,kBAAM,oBAAoBA,MAAK,UAAUA,MAAK;AAG9C,gBAAIA,MAAK,OAAO,SAAS,iBAAiB;AACzC;AAAA,YACD;AAGA,gBAAIA,MAAK,SAAS,SAASA,MAAK,SAAS,OAAO;AAC/C;AAAA,YACD;AAGA,gBACCA,MAAK,YACLA,MAAK,MAAM,SAAS,wBACpBA,MAAK,MAAM,SAAS,2BACnB;AACD;AAAA,YACD;AAIA,gBAAI,mBAAmB;AACtB,kBACCA,MAAK,WACJ,eACC,gBAAgB,gBAAgBA,MAAK,GAAG,IACzC;AACD,sBAAM,YAAY,cACf,2BACA;AAGH,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA;AAAA,kBACA,KAAK,WAAS,qBAAqB,OAAOA,KAAI;AAAA,gBAC/C,CAAC;AAAA,cACF,WAAW,aAAa;AAEvB,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,KAAK,WACJ,MAAM;AAAA,oBACLA,MAAK;AAAA,oBACL,KAAKA,MAAK,IAAI,IAAI;AAAA,kBACnB;AAAA,gBACF,CAAC;AAAA,cACF;AAAA,YACD,WACC,oBACA,CAACA,MAAK,MAAM,OACXA,MAAK,MAAM,SAAS,wBACpBA,MAAK,MAAM,SAAS,4BACpB;AACD,kBACC,uBACAA,MAAK,IAAI,SAAS,gBAClB,cAAcA,MAAK,IAAI,IAAI,GAC1B;AACD;AAAA,cACD;AAEA,kBAAI,wBAAwB;AAC3B,sBAAM,eACL,SAAS,sBAAsBA,KAAI;AAEpC,oBACC,iBAAiB,QACjB,uBAAuB,KAAK,YAAY,GACvC;AACD;AAAA,gBACD;AAAA,cACD;AAEA,kBAAI,gBAAgB,gBAAgBA,MAAK,GAAG,GAAG;AAC9C;AAAA,cACD;AAGA,kBACCA,MAAK,MAAM,SAAS,wBACnBA,MAAK,MAAM,SAAS,6BACpBA,MAAK,MAAM,KAAK,SAAS,oBACzB,gCACA,CAAC,6BAA6B,IAAIA,MAAK,KAAK,GAC5C;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,KAAK,WAAS,sBAAsB,OAAOA,KAAI;AAAA,gBAChD,CAAC;AAAA,cACF;AAAA,YACD,WACCA,MAAK,MAAM,SAAS,gBACpBA,MAAK,IAAI,SAASA,MAAK,MAAM,QAC7B,gBACC;AAED,oBAAM,WAAW,WAAW,kBAAkBA,KAAI;AAClD,kBACC,SAAS;AAAA,gBACR,aACC,QAAQ,SAAS,WACjB,oBAAoB,KAAK,QAAQ,KAAK,KACtC,QAAQ,MAAM,SAAS,OAAO;AAAA,cAChC,GACC;AACD;AAAA,cACD;AAGA,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AAGV,sBAAI,WAAW,kBAAkBA,KAAI,EAAE,SAAS,GAAG;AAClD,2BAAO;AAAA,kBACR;AAEA,yBAAO,MAAM,YAAYA,OAAMA,MAAK,MAAM,IAAI;AAAA,gBAC/C;AAAA,cACD,CAAC;AAAA,YACF,WACCA,MAAK,MAAM,SAAS,gBACpBA,MAAK,IAAI,SAAS,aAClBA,MAAK,IAAI,UAAUA,MAAK,MAAM,QAC9B,gBACC;AACD,kBAAI,cAAc;AACjB;AAAA,cACD;AAEA,oBAAM,WAAW,WAAW,kBAAkBA,KAAI;AAClD,kBACC,SAAS;AAAA,gBACR,aACC,QAAQ,SAAS,WACjB,QAAQ,MAAM,WAAW,GAAG,KAC5B,QAAQ,MAAM,SAAS,OAAO;AAAA,cAChC,GACC;AACD;AAAA,cACD;AAGA,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AAGV,sBAAI,WAAW,kBAAkBA,KAAI,EAAE,SAAS,GAAG;AAClD,2BAAO;AAAA,kBACR;AAEA,yBAAO,MAAM,YAAYA,OAAMA,MAAK,MAAM,IAAI;AAAA,gBAC/C;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC7oBA;AAAA,6CAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAWjB,aAAS,kBAAkBC,OAAM;AAChC,aAAO,SAAS,uBAAuB,IAAIA,MAAK,OAAO,IAAI;AAAA,IAC5D;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM,CAAC,UAAU,SAAS,aAAa;AAAA,cACxC;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,kBAAkB;AAAA,oBACjB,MAAM;AAAA,kBACP;AAAA,kBACA,KAAK;AAAA,oBACJ,MAAM,CAAC,UAAU,SAAS,aAAa;AAAA,kBACxC;AAAA,kBACA,KAAK;AAAA,oBACJ,MAAM,CAAC,UAAU,SAAS,aAAa;AAAA,kBACxC;AAAA,kBACA,OAAO;AAAA,oBACN,MAAM,CAAC,UAAU,SAAS,aAAa;AAAA,kBACxC;AAAA,kBACA,OAAO;AAAA,oBACN,MAAM,CAAC,UAAU,SAAS,aAAa;AAAA,kBACxC;AAAA,kBACA,YAAY;AAAA,oBACX,MAAM,CAAC,UAAU,SAAS,aAAa;AAAA,kBACxC;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,aAAa;AAAA,oBACZ,MAAM,CAAC,UAAU,SAAS,aAAa;AAAA,kBACxC;AAAA,kBACA,eAAe;AAAA,oBACd,MAAM,CAAC,UAAU,SAAS,aAAa;AAAA,kBACxC;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,gBAAgB,CAAC,QAAQ;AAAA,QAEzB,UAAU;AAAA,UACT,sBACC;AAAA,UACD,oBACC;AAAA,UACD,oBACC;AAAA,UACD,kBACC;AAAA,UACD,eACC;AAAA,UACD,SAAS;AAAA,UACT,OAAO;AAAA,QACR;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,cAAc;AACpB,cAAM,aAAa;AACnB,cAAM,mBAAmB;AACzB,cAAM,OAAO,QAAQ,QAAQ,CAAC;AAE9B,cAAM,UAAU,CAAC;AAEjB,YAAI,OAAO,SAAS,UAAU;AAE7B,kBAAQ,MAAM,EAAE,eAAe,MAAM,aAAa,KAAK;AACvD,kBAAQ,MAAM,EAAE,eAAe,MAAM,aAAa,KAAK;AACvD,kBAAQ,QAAQ,EAAE,eAAe,MAAM,aAAa,KAAK;AACzD,kBAAQ,QAAQ,EAAE,eAAe,MAAM,aAAa,KAAK;AACzD,kBAAQ,aAAa,EAAE,eAAe,MAAM,aAAa,KAAK;AAAA,QAC/D,WAAW,OAAO,SAAS,UAAU;AAEpC,kBAAQ,mBAAmB,CAAC,CAAC,KAAK;AAClC,kBAAQ,MAAM,EAAE,eAAe,KAAK,KAAK,aAAa,KAAK,IAAI;AAC/D,kBAAQ,MAAM,EAAE,eAAe,KAAK,KAAK,aAAa,KAAK,IAAI;AAC/D,kBAAQ,QAAQ;AAAA,YACf,eAAe,KAAK;AAAA,YACpB,aAAa,KAAK;AAAA,UACnB;AACA,kBAAQ,QAAQ;AAAA,YACf,eAAe,KAAK;AAAA,YACpB,aAAa,KAAK;AAAA,UACnB;AACA,kBAAQ,aAAa;AAAA,YACpB,eAAe,KAAK;AAAA,YACpB,aAAa,KAAK;AAAA,UACnB;AACA,cAAI,OAAO,OAAO,MAAM,eAAe,GAAG;AACzC,oBAAQ,IAAI,gBAAgB,KAAK;AACjC,oBAAQ,IAAI,gBAAgB,KAAK;AACjC,oBAAQ,MAAM,gBAAgB,KAAK;AACnC,oBAAQ,MAAM,gBAAgB,KAAK;AACnC,oBAAQ,WAAW,gBAAgB,KAAK;AAAA,UACzC;AACA,cAAI,OAAO,OAAO,MAAM,aAAa,GAAG;AACvC,oBAAQ,IAAI,cAAc,KAAK;AAC/B,oBAAQ,IAAI,cAAc,KAAK;AAC/B,oBAAQ,MAAM,cAAc,KAAK;AACjC,oBAAQ,MAAM,cAAc,KAAK;AACjC,oBAAQ,WAAW,cAAc,KAAK;AAAA,UACvC;AAAA,QACD;AAEA,cAAM,aAAa,QAAQ;AAM3B,cAAM,gBAAgB,CAAC;AACvB,cAAM,aAAa,CAAC;AAOpB,iBAAS,aAAa;AACrB,qBAAW,KAAK;AAAA,YACf,KAAK,EAAE,aAAa,OAAO,eAAe,MAAM;AAAA,YAChD,OAAO,EAAE,aAAa,OAAO,eAAe,MAAM;AAAA,YAClD,OAAO,EAAE,aAAa,OAAO,eAAe,MAAM;AAAA,YAClD,YAAY,EAAE,aAAa,OAAO,eAAe,MAAM;AAAA,UACxD,CAAC;AAAA,QACF;AAOA,iBAAS,gBAAgB;AACxB,wBAAc,KAAK,EAAE,aAAa,OAAO,eAAe,MAAM,CAAC;AAC/D,qBAAW;AAAA,QACZ;AAOA,iBAAS,WAAW;AACnB,qBAAW,IAAI;AAAA,QAChB;AAOA,iBAAS,cAAc;AACtB,wBAAc,IAAI;AAClB,mBAAS;AAAA,QACV;AAQA,iBAAS,UAAU,MAAM;AACxB,iBACC,KAAK,QACL,KAAK,KAAK,SAAS,oBACnB,KAAK,KAAK,OAAO,SAAS;AAAA,QAE5B;AAUA,iBAAS,YAAY,eAAe,cAAc,cAAc;AAC/D,mBAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC7C,gBAAI,aAAa,CAAC,EAAE,SAAS,MAAM;AAClC,kBACC,QAAQ,aAAa,KACrB,QAAQ,aAAa,EAAE,kBAAkB,aACxC;AACD,6BAAa,gBAAgB;AAAA,cAC9B;AAAA,YACD,OAAO;AACN,kBACC,QAAQ,aAAa,KACrB,QAAQ,aAAa,EAAE,gBAAgB,aACtC;AACD,oBACC,QAAQ,oBACR,UAAU,aAAa,CAAC,CAAC,GACxB;AACD,+BAAa,WAAW;AAAA,gBACzB,OAAO;AACN,+BAAa,cAAc;AAAA,gBAC5B;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,gBAAgB,eAAe;AACvC,cAAI;AAEJ,cAAI,kBAAkB,OAAO;AAC5B,2BAAe,cAAc,GAAG,EAAE;AAAA,UACnC,WAAW,kBAAkB,OAAO;AACnC,2BAAe,WAAW,GAAG,EAAE,EAAE;AAAA,UAClC,WAAW,kBAAkB,SAAS;AACrC,2BAAe,WAAW,GAAG,EAAE,EAAE;AAAA,UAClC,WAAW,kBAAkB,SAAS;AACrC,2BAAe,WAAW,GAAG,EAAE,EAAE;AAAA,UAClC,WAAW,kBAAkB,cAAc;AAC1C,2BAAe,WAAW,GAAG,EAAE,EAAE;AAAA,UAClC;AACA,iBAAO;AAAA,QACR;AAQA,iBAAS,kBAAkB,cAAc;AACxC,gBAAM,SAAS,EAAE,eAAe,GAAG,aAAa,EAAE;AAElD,mBAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC7C,gBAAI,aAAa,CAAC,EAAE,SAAS,MAAM;AAClC,qBAAO;AAAA,YACR,OAAO;AACN,qBAAO;AAAA,YACR;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AASA,iBAAS,oBAAoB,eAAe,cAAc;AACzD,gBAAM,oBAAoB,kBAAkB,YAAY;AACxD,gBAAM,iBAAiB,QAAQ,aAAa,KAAK,CAAC;AAClD,gBAAM,eAAe,gBAAgB,aAAa;AAClD,gBAAM,cAAc,aAAa,KAAK,SAAS;AAE/C,cACC,eAAe,kBAAkB,eACjC,eAAe,gBAAgB,aAC9B;AACD,gBAAI,aAAa,iBAAiB,aAAa,aAAa;AAC3D,kBAAI,CAAC,aAAa;AACjB,uBAAO;AAAA,cACR;AAAA,YACD;AAAA,UACD;AAEA,cAAI,kBAAkB,gBAAgB,GAAG;AACxC,gBACC,eAAe,kBAAkB,eACjC,aAAa,eACZ;AACD,qBAAO;AAAA,YACR;AAAA,UACD;AACA,cAAI,kBAAkB,cAAc,GAAG;AACtC,gBACC,eAAe,gBAAgB,eAC/B,aAAa,aACZ;AACD,kBAAI,CAAC,aAAa;AACjB,uBAAO;AAAA,cACR;AAAA,YACD;AAAA,UACD;AACA,cAAI,aAAa,YAAY,aAAa;AACzC,mBAAO;AAAA,UACR;AACA,sBAAY,eAAe,cAAc,YAAY;AACrD,iBAAO;AAAA,QACR;AAOA,iBAAS,iBAAiB,cAAc;AACvC,gBAAM,cAAc,aAAa,CAAC;AAClC,gBAAM,OAAO,MAAM,QAAQ,YAAY,OAAO,OAAO,IAAI,IACtD,YAAY,OAAO,OAAO,OAC1B,CAAC;AACJ,gBAAM,eAAe,KAAK;AAAA,YACzB,CAAAC,UAAQA,MAAK,MAAM,CAAC,MAAM,YAAY,OAAO,MAAM,CAAC;AAAA,UACrD;AACA,gBAAM,eAAe,KAAK,eAAe,CAAC;AAE1C,iBAAO,UAAU,sBAAsB,OAAO;AAC7C,kBAAM,OAAO,WAAW,cAAc,YAAY,MAAM;AACxD,kBAAM,aAAa,WAAW,eAAe,IAAI;AAEjD,gBACC,gBACA,aAAa,SAAS,YAAY,OAAO,MACxC;AACD,kBAAI,WAAW,UAAU,KAAK;AAC7B,sBAAM,MAAM,YAAY,YAAY,GAAG;AAAA,cACxC,OAAO;AACN,sBAAM,MAAM,gBAAgB,YAAY,GAAG;AAAA,cAC5C;AAEA,kBAAI,YAAY,OAAO,SAAS,eAAe;AAC9C,sBAAM,aAAa,WAAW,cAAc,IAAI;AAChD,sBAAM,MAAM,OAAO,UAAU;AAAA,cAC9B;AAEA,oBAAM,MAAM,YAAY,MAAM,EAAE;AAAA,YACjC;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,kBAAkB,aAAa;AACvC,gBAAM,EAAE,OAAO,IAAI;AAGnB,cACC,CAAC;AAAA,YACA,OAAO,SAAS,2BACb,SACA;AAAA,UACJ,GACC;AACD,mBAAO;AAAA,UACR;AAEA,iBAAO,WACN,YAAY,aACV,IAAI,gBAAc;AAClB,kBAAM,uBACL,WAAW,cAAc,UAAU;AAEpC,gBAAI,yBAAyB,MAAM;AAClC,qBAAO;AAAA,YACR;AAEA,kBAAM,aAAa,WAAW;AAAA,cAC7B;AAAA,cACA,EAAE,iBAAiB,KAAK;AAAA,YACzB;AAEA,gBAAI,qBAAqB,UAAU,KAAK;AACvC,qBAAO;AAAA,YACR;AAEA,kBAAM,kBACL,YAAY,OAAO,SAAS,2BACzB,YACA;AAMJ,gBACC,WAAW,MAAM,CAAC,MAClB,qBAAqB,MAAM,CAAC,GAC3B;AACD,qBAAO,MAAM;AAAA,gBACZ;AAAA,gBACA,KAAK,eAAe,GAAG,YAAY,IAAI;AAAA,cACxC;AAAA,YACD;AAQA,gBACC,WAAW,IAAI,MAAM,OACpB,qBAAqB,IAAI,IAAI,QAC9B,WAAW,SAAS,UACpB,WAAW,SAAS,SACnB;AACD,kBAAI,cAAc;AAElB,qBACC,YAAY,SAAS,UACrB,YAAY,SAAS,SACpB;AACD,8BAAc,WAAW;AAAA,kBACxB;AAAA,kBACA,EAAE,iBAAiB,KAAK;AAAA,gBACzB;AAAA,cACD;AAEA,qBAAO,MAAM;AAAA,gBACZ;AAAA,kBACC,qBAAqB,MAAM,CAAC;AAAA,kBAC5B,YAAY,MAAM,CAAC;AAAA,gBACpB;AAAA,gBACA,IAAI,WAAW,KAAK;AAAA,kBACnB,qBAAqB,MAAM,CAAC;AAAA,kBAC5B,YAAY,MAAM,CAAC;AAAA,gBACpB,CAAC,GAAG,eAAe,GAAG,YAAY,IAAI;AAAA,cACvC;AAAA,YACD;AAEA,mBAAO,MAAM;AAAA,cACZ;AAAA,cACA,KAAK,eAAe,GAAG,YAAY,IAAI;AAAA,YACxC;AAAA,UACD,CAAC,EACA,OAAO,OAAK,CAAC;AAAA,QACjB;AAQA,iBAAS,yBAAyBA,OAAM;AACvC,gBAAM,SAASA,MAAK;AACpB,gBAAM,OAAOA,MAAK;AAClB,gBAAM,MAAM,SAAS,gBAAgB,eAAe;AAEpD,cAAI,CAAC,QAAQ,GAAG,GAAG;AAClB;AAAA,UACD;AAEA,gBAAM,eAAeA,MAAK;AAC1B,gBAAM,oBAAoB,kBAAkB,YAAY;AACxD,gBAAM,gBACL,aAAa,KAAK,SAAS,KAAK,CAAC,aAAa,MAAM,SAAS;AAE9D,cAAI,QAAQ,GAAG,EAAE,gBAAgB,aAAa;AAC7C,gBAAI,QAAQ,oBAAoB,eAAe;AAC9C,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAGA,gBAAM,YACJ,OAAO,QACP,OAAO,KAAK,SAAS,KACrB,OAAO,KAAK,QAAQA,KAAI,KACzB;AAED,cAAI,YAAY,GAAG;AAClB,kBAAM,eAAe,OAAO,KAAK,YAAY,CAAC;AAC9C,kBAAM,4BACL,aAAa,SAAS;AACvB,kBAAM,2BAA2B,aAAa;AAAA,cAC7C,aAAa,gBAAgB,CAAC;AAAA,YAC/B;AAEA,gBACC,6BACA,aAAa,SAAS,QACtB,EACC,yBAAyB,KAAK,SAAS,KACvC,CAAC,yBAAyB,MAAM,SAAS,IAEzC;AACD,oBAAM,qBAAqB;AAAA,gBAC1B,aAAa;AAAA,cACd;AAEA,kBACC,QAAQ,GAAG,EAAE,gBAAgB,oBAC7B,QAAQ,GAAG,EAAE,kBAAkB,kBAC9B;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM;AAAA,oBACL;AAAA,kBACD;AAAA,kBACA,KAAK,iBAAiB,YAAY;AAAA,gBACnC,CAAC;AAAA,cACF,WACC,QAAQ,GAAG,EAAE,gBAAgB,oBAC7B,kBAAkB,cAAc,KAChC,mBAAmB,cAAc,GAChC;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM;AAAA,oBACL;AAAA,kBACD;AAAA,kBACA,KAAK,iBAAiB,YAAY;AAAA,gBACnC,CAAC;AAAA,cACF,WACC,QAAQ,GAAG,EAAE,kBAAkB,oBAC/B,kBAAkB,gBAAgB,KAClC,mBAAmB,gBAAgB,GAClC;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM;AAAA,oBACL;AAAA,kBACD;AAAA,kBACA,KAAK,iBAAiB,YAAY;AAAA,gBACnC,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAGA,cAAI,CAAC,oBAAoB,KAAK,YAAY,GAAG;AAC5C,gBACC,QAAQ,GAAG,EAAE,gBAAgB,eAC7B,QAAQ,GAAG,EAAE,kBAAkB,aAC9B;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL;AAAA,gBACD;AAAA,gBACA,KAAK,iBAAiB,YAAY;AAAA,cACnC,CAAC;AAAA,YACF,OAAO;AACN,kBACC,QAAQ,GAAG,EAAE,gBAAgB,eAC7B,kBAAkB,cAAc,GAC/B;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM;AAAA,oBACL;AAAA,kBACD;AAAA,kBACA,KAAK,iBAAiB,YAAY;AAAA,gBACnC,CAAC;AAAA,cACF;AACA,kBACC,QAAQ,GAAG,EAAE,kBAAkB,eAC/B,kBAAkB,gBAAgB,GACjC;AACD,oBACCA,MAAK,OAAO,SAASA,UACpBA,MAAK,OAAO,SAAS,oBACrBA,MAAK,OAAO,SAAS,mBACrB;AACD;AAAA,gBACD;AACA,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM;AAAA,oBACL;AAAA,kBACD;AAAA,kBACA,KAAK,iBAAiB,YAAY;AAAA,gBACnC,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAGA,cAAI,OAAO,SAAS,kBAAkB,OAAO,SAASA,OAAM;AAC3D,kBAAM,oBACL,kBAAkB,gBAClB,kBAAkB;AAEnB,gBAAI,oBAAoB,GAAG;AAC1B,kBACC,QAAQ,GAAG,EAAE,gBAAgB,cAC7B,QAAQ,GAAG,EAAE,kBAAkB,YAC9B;AAED,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM;AAAA,oBACL;AAAA,kBACD;AAAA,kBACA,KAAK,kBAAkBA,KAAI;AAAA,gBAC5B,CAAC;AAAA,cACF,WACC,QAAQ,GAAG,EAAE,gBAAgB,cAC7B,kBAAkB,cAAc,GAC/B;AAED,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM;AAAA,oBACL;AAAA,kBACD;AAAA,kBACA,KAAK,kBAAkBA,KAAI;AAAA,gBAC5B,CAAC;AAAA,cACF,WACC,QAAQ,GAAG,EAAE,kBAAkB,cAC/B,kBAAkB,gBAAgB,GACjC;AAED,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM;AAAA,oBACL;AAAA,kBACD;AAAA,kBACA,KAAK,kBAAkBA,KAAI;AAAA,gBAC5B,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAMA,eAAO;AAAA,UACN,SAAS;AAAA,UACT,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,UACpB,yBAAyB;AAAA,UACzB,aAAa;AAAA;AAAA,UAEb,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,qBAAqB;AAAA,UACrB,qBAAqB;AAAA,UACrB,uBAAuB;AAAA,UACvB,uBAAuB;AAAA,UACvB,wBAAwB;AAAA,UACxB,uBAAuB;AAAA,UAEvB,gBAAgB;AAAA,UAChB,4BAA4B;AAAA,UAC5B,2BAA2B;AAAA,UAC3B,gCAAgC;AAAA,UAChC,oBAAoB;AAAA,QACrB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC9sBA;AAAA,kEAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,iBAAiB;AAAA,UACnC;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QAET,UAAU;AAAA,UACT,oBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,SAAS,QAAQ,QAAQ,CAAC,MAAM;AAYtC,iBAAS,mBAAmB,SAAS;AACpC,iBACC,YAAY,kBACZ,YAAY,oBACZ,YAAY;AAAA,QAEd;AAQA,iBAAS,gBAAgBC,OAAM;AAC9B,cAAI,mBAAmBA,MAAK,OAAO,IAAI,GAAG;AACzC;AAAA,UACD;AAEA,gBAAM,eAAeA,MAAK;AAC1B,cAAI;AAEJ,uBAAa,QAAQ,aAAW;AAC/B,gBAAI,QAAQ,KAAK,IAAI,IAAI,SAAS,QAAQ,IAAI,MAAM,MAAM;AACzD,kBAAI,UAAU,KAAK,QAAQ,QAAQ,MAAM;AACxC,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,KAAK,QAAQ;AAAA,kBACb,KAAK,WAAS,MAAM,iBAAiB,SAAS,IAAI;AAAA,gBACnD,CAAC;AAAA,cACF;AAAA,YACD;AACA,mBAAO;AAAA,UACR,CAAC;AAAA,QACF;AAMA,eAAO;AAAA,UACN,qBAAqB;AAAA,QACtB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpHA;AAAA,yDAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAajB,aAAS,mCAAmC,UAAU;AACrD,aAAO,CAAC,KAAK,KAAK,KAAK,GAAG,EAAE,SAAS,QAAQ;AAAA,IAC9C;AASA,aAAS,sCAAsC,UAAU;AACxD,aAAO,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,OAAO,IAAI,EAAE,SAAS,QAAQ;AAAA,IACvE;AAYA,aAAS,WAAWC,OAAM;AACzB,aACCA,MAAK,SAAS,gBACbA,MAAK,SAAS,uBACbA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS,sBACrB,CAACA,MAAK,YAAYA,MAAK,SAAS,SAAS;AAAA,IAE7C;AAGA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,QAAQ;AAAA,QAEzB,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,OAAO;AAAA,UACzB;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QACT,UAAU;AAAA,UACT,UACC;AAAA,UACD,YACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,QAAQ,QAAQ,QAAQ,CAAC,MAAM;AACrC,cAAM,aAAa,QAAQ;AAO3B,iBAAS,iBAAiBC,OAAM;AAC/B,iBAAO,WAAW;AAAA,YACjBA,MAAK;AAAA,YACLA,MAAK;AAAA,YACL,WAAS,MAAM,UAAUA,MAAK;AAAA,UAC/B;AAAA,QACD;AAOA,iBAAS,OAAOA,OAAM;AACrB,cACCA,MAAK,aAAa,OAClBA,MAAK,MAAM,SAAS,oBACnB;AACD;AAAA,UACD;AAEA,gBAAM,OAAOA,MAAK;AAClB,gBAAM,OAAOA,MAAK;AAClB,gBAAM,WAAW,KAAK;AAEtB,cACC,mCAAmC,QAAQ,KAC3C,sCAAsC,QAAQ,GAC7C;AACD,kBAAM,sBAAsB,GAAG,QAAQ;AAEvC,gBAAI,SAAS,gBAAgB,MAAM,KAAK,MAAM,IAAI,GAAG;AACpD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM,EAAE,UAAU,oBAAoB;AAAA,gBACtC,IAAI,OAAO;AACV,sBAAI,WAAW,IAAI,KAAK,WAAW,KAAK,IAAI,GAAG;AAC9C,0BAAM,cAAc,iBAAiBA,KAAI;AACzC,0BAAM,gBAAgB,iBAAiB,IAAI;AAC3C,0BAAM,WAAW,WACf,QAAQ,EACR,MAAMA,MAAK,MAAM,CAAC,GAAG,YAAY,MAAM,CAAC,CAAC;AAC3C,0BAAM,YAAY,WAChB,QAAQ,EACR;AAAA,sBACA,cAAc,MAAM,CAAC;AAAA,sBACrBA,MAAK,MAAM,MAAM,CAAC;AAAA,oBACnB;AAGD,wBACC,WAAW;AAAA,sBACV;AAAA,sBACA;AAAA,oBACD,GACC;AACD,6BAAO;AAAA,oBACR;AAEA,2BAAO,MAAM;AAAA,sBACZA;AAAA,sBACA,GAAG,QAAQ,GAAG,mBAAmB,GAAG,SAAS;AAAA,oBAC9C;AAAA,kBACD;AACA,yBAAO;AAAA,gBACR;AAAA,cACD,CAAC;AAAA,YACF,WACC,SAAS,gBAAgB,MAAM,KAAK,OAAO,IAAI,KAC/C,mCAAmC,QAAQ,GAC1C;AAMD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM,EAAE,UAAU,oBAAoB;AAAA,cACvC,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,SAASA,OAAM;AACvB,cACCA,MAAK,aAAa,OAClB,CAAC,SAAS,4BAA4BA,MAAK,QAAQ,GAClD;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM,EAAE,UAAUA,MAAK,SAAS;AAAA,cAChC,IAAI,OAAO;AACV,oBAAI,WAAWA,MAAK,IAAI,GAAG;AAC1B,wBAAM,aAAa,WAAW,cAAcA,KAAI;AAChD,wBAAM,gBAAgB,iBAAiBA,KAAI;AAC3C,wBAAM,WAAW,WACf,QAAQ,EACR,MAAMA,MAAK,MAAM,CAAC,GAAG,cAAc,MAAM,CAAC,CAAC;AAC7C,wBAAM,cAAcA,MAAK,SAAS,MAAM,GAAG,EAAE;AAC7C,sBAAI;AAGJ,sBACC,WAAW;AAAA,oBACV;AAAA,oBACA;AAAA,kBACD,GACC;AACD,2BAAO;AAAA,kBACR;AAGA,sBACC,SAAS,cAAcA,MAAK,KAAK,KAChC,SAAS,cAAc;AAAA,oBACtB,MAAM;AAAA,oBACN,UAAU;AAAA,kBACX,CAAC,KACF,CAAC,SAAS;AAAA,oBACT;AAAA,oBACAA,MAAK;AAAA,kBACN,GACC;AACD,gCAAY,GAAG,WAAW,KAAK,MAAM,cAAc,MAAM,CAAC,GAAGA,MAAK,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI,WAAW,QAAQA,MAAK,KAAK,CAAC;AAAA,kBACpH,OAAO;AACN,0BAAM,qBACL,WAAW,cAAc,eAAe;AAAA,sBACvC,iBAAiB;AAAA,oBAClB,CAAC;AACF,wBAAI,kBAAkB;AAEtB,wBACC,cAAc,MAAM,CAAC,MACpB,mBAAmB,MAAM,CAAC,KAC3B,CAAC,SAAS;AAAA,sBACT;AAAA,wBACC,MAAM;AAAA,wBACN,OAAO;AAAA,sBACR;AAAA,sBACA;AAAA,oBACD,GACC;AACD,wCAAkB;AAAA,oBACnB;AAEA,gCAAY,GAAG,eAAe,GAAG,WAAW,KAAK,MAAM,cAAc,MAAM,CAAC,GAAGA,MAAK,MAAM,CAAC,CAAC,CAAC;AAAA,kBAC9F;AAEA,yBAAO,MAAM;AAAA,oBACZA;AAAA,oBACA,GAAG,QAAQ,KAAK,QAAQ,GAAG,WAAW,GAAG,SAAS;AAAA,kBACnD;AAAA,gBACD;AACA,uBAAO;AAAA,cACR;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,sBAAsB,CAAC,QAAQ,SAAS;AAAA,QACzC;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC7QA;AAAA,wDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,SAAS,UAAU,QAAQ,IAAI;AAAA,UACvC;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,WAAW;AAAA,gBACV,MAAM;AAAA,gBACN,sBAAsB;AAAA,kBACrB,MAAM,CAAC,SAAS,UAAU,QAAQ,QAAQ;AAAA,gBAC3C;AAAA,cACD;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QAET,UAAU;AAAA,UACT,qBACC;AAAA,UACD,eACC;AAAA,UACD,cAAc;AAAA,UACd,aACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,oBAAoB,CAAC,QAAQ,QAAQ,CAAC;AAC5C,cAAM,cAAc,QAAQ,QAAQ,CAAC,KAAK;AAC1C,cAAM,UAAU,QAAQ,QAAQ,CAAC,KAAK,CAAC;AACvC,cAAM,iBAAiB,QAAQ,YAC5B,OAAO,OAAO,CAAC,GAAG,QAAQ,SAAS,IACnC,CAAC;AAEJ,YAAI,qBAAqB,CAAC,eAAe,GAAG,GAAG;AAC9C,yBAAe,GAAG,IAAI;AAAA,QACvB;AAEA,YAAI,qBAAqB,CAAC,eAAe,GAAG,GAAG;AAC9C,yBAAe,GAAG,IAAI;AAAA,QACvB;AAEA,cAAM,aAAa,QAAQ;AAY3B,iBAAS,SAAS,eAAe,cAAc;AAC9C,iBAAO,WAAS;AACf,kBAAM,cAAc,WAAW,eAAe,aAAa;AAC3D,kBAAM,aAAa,WAAW,cAAc,aAAa;AACzD,kBAAM,aAAa,WAAW,KAAK;AAAA,cAClC,YAAY,MAAM,CAAC;AAAA,cACnB,cAAc,MAAM,CAAC;AAAA,YACtB;AACA,kBAAM,YAAY,WAAW,KAAK;AAAA,cACjC,cAAc,MAAM,CAAC;AAAA,cACrB,WAAW,MAAM,CAAC;AAAA,YACnB;AACA,kBAAM,qBAAqB,CAAC,SAAS;AAAA,cACpC;AAAA,cACA;AAAA,YACD;AACA,kBAAM,oBAAoB,CAAC,SAAS;AAAA,cACnC;AAAA,cACA;AAAA,YACD;AACA,gBAAI,eAAe;AAEnB,gBACC,uBAAuB,qBACvB,iBAAiB,QAChB;AAED,kBACC,WAAW,eAAe,eAAe;AAAA,gBACxC,iBAAiB;AAAA,cAClB,CAAC,MAAM,eACP,WAAW,cAAc,eAAe;AAAA,gBACvC,iBAAiB;AAAA,cAClB,CAAC,MAAM,YACN;AACD,uBAAO;AAAA,cACR;AAUA,8BAAgB;AAChB,6BAAe;AAAA,YAChB,OAAO;AACN,oBAAM,kBACL,SAAS,6BAA6B;AAGvC,8BACC,iBAAiB,YAAY,WAAW,KAAK,IAC1C,aACA,WAAW,QAAQ,iBAAiB,EAAE;AAC1C,6BACC,iBAAiB,WAAW,UAAU,KAAK,IACxC,YACA,UAAU,QAAQ,iBAAiB,EAAE;AAGzC,kBACC,kBAAkB,cAClB,iBAAiB,WAChB;AACD,uBAAO;AAAA,cACR;AAAA,YACD;AAEA,gBACC,iBAAiB,MACjB,WAAW,SAAS,gBACpB,KAAK,SAAS,cAAc,KAAK,KACjC,WAAW,UAAU,cAAc,OAClC;AAED,8BAAgB;AAAA,YACjB;AAEA,mBAAO,MAAM;AAAA,cACZ,CAAC,YAAY,MAAM,CAAC,GAAG,WAAW,MAAM,CAAC,CAAC;AAAA,cAC1C,gBAAgB,cAAc,QAAQ;AAAA,YACvC;AAAA,UACD;AAAA,QACD;AAUA,iBAAS,aAAaC,OAAM,WAAW,UAAU;AAMhD,gBAAM,gBAAgB,WAAW;AAAA,YAChC;AAAA,YACA,WAAS,MAAM,UAAU;AAAA,UAC1B;AACA,gBAAM,YAAY,WAAW,eAAe,aAAa;AACzD,gBAAM,aAAa,WAAW,cAAc,aAAa;AACzD,gBAAM,wBAAwB,eAAe,QAAQ;AACrD,gBAAM,QAAQ,yBAAyB;AACvC,gBAAM,MAAM,SAAS,eAAe,KAAK;AAGzC,cACC,SAAS,kBAAkB,WAAW,aAAa,KACnD,SAAS,kBAAkB,eAAe,UAAU,GACnD;AAAA,UAEF,WACC,0BAA0B,YAC1B,CAAC,SAAS,kBAAkB,WAAW,aAAa,KACpD,CAAC,SAAS,kBAAkB,eAAe,UAAU,GACpD;AAED,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,cAAc;AAAA,cACnB,WAAW;AAAA,cACX,MAAM;AAAA,gBACL;AAAA,cACD;AAAA,cACA;AAAA,YACD,CAAC;AAAA,UACF,WACC,UAAU,YACV,SAAS,kBAAkB,WAAW,aAAa,GAClD;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,cAAc;AAAA,cACnB,WAAW;AAAA,cACX,MAAM;AAAA,gBACL;AAAA,cACD;AAAA,cACA;AAAA,YACD,CAAC;AAAA,UACF,WACC,UAAU,WACV,SAAS,kBAAkB,eAAe,UAAU,GACnD;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,cAAc;AAAA,cACnB,WAAW;AAAA,cACX,MAAM;AAAA,gBACL;AAAA,cACD;AAAA,cACA;AAAA,YACD,CAAC;AAAA,UACF,WAAW,UAAU,QAAQ;AAC5B,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,cAAc;AAAA,cACnB,WAAW;AAAA,cACX,MAAM;AAAA,gBACL;AAAA,cACD;AAAA,cACA;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,yBAAyBA,OAAM;AACvC,uBAAaA,OAAMA,MAAK,OAAOA,MAAK,QAAQ;AAAA,QAC7C;AAMA,eAAO;AAAA,UACN,kBAAkB;AAAA,UAClB,mBAAmB;AAAA,UACnB,sBAAsB;AAAA,UACtB,mBAAmBA,OAAM;AACxB,gBAAIA,MAAK,MAAM;AACd,2BAAaA,OAAMA,MAAK,MAAM,GAAG;AAAA,YAClC;AAAA,UACD;AAAA,UACA,mBAAmBA,OAAM;AACxB,gBAAIA,MAAK,OAAO;AACf,2BAAaA,OAAMA,MAAK,OAAO,GAAG;AAAA,YACnC;AAAA,UACD;AAAA,UACA,sBAAsBA,OAAM;AAC3B,yBAAaA,OAAMA,MAAK,YAAY,GAAG;AACvC,yBAAaA,OAAMA,MAAK,WAAW,GAAG;AAAA,UACvC;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1TA;AAAA,mDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM,CAAC,UAAU,OAAO;AAAA,cACzB;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,QAAQ;AAAA,oBACP,MAAM,CAAC,UAAU,OAAO;AAAA,kBACzB;AAAA,kBACA,UAAU;AAAA,oBACT,MAAM,CAAC,UAAU,OAAO;AAAA,kBACzB;AAAA,kBACA,SAAS;AAAA,oBACR,MAAM,CAAC,UAAU,OAAO;AAAA,kBACzB;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,gBACtB,eAAe;AAAA,cAChB;AAAA,YACD;AAAA,UACD;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,uBAAuB;AAAA,gBACtB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,gBAAgB;AAAA,UAChB,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,UAAU,CAAC;AACjB,cAAM,cAAc,QAAQ,QAAQ,CAAC,KAAK;AAC1C,cAAM,gBAAgB,QAAQ,QAAQ,CAAC,KAAK,CAAC;AAE7C,YAAI,OAAO,gBAAgB,UAAU;AACpC,gBAAM,oBAAoB,gBAAgB;AAE1C,kBAAQ,SAAS;AACjB,kBAAQ,WAAW;AACnB,kBAAQ,UAAU;AAAA,QACnB,OAAO;AACN,cAAI,OAAO,OAAO,aAAa,QAAQ,GAAG;AACzC,oBAAQ,SAAS,YAAY,WAAW;AAAA,UACzC;AACA,cAAI,OAAO,OAAO,aAAa,UAAU,GAAG;AAC3C,oBAAQ,WAAW,YAAY,aAAa;AAAA,UAC7C;AACA,cAAI,OAAO,OAAO,aAAa,SAAS,GAAG;AAC1C,oBAAQ,UAAU,YAAY,YAAY;AAAA,UAC3C;AAAA,QACD;AAEA,YAAI,OAAO,OAAO,eAAe,uBAAuB,GAAG;AAC1D,kBAAQ,wBACP,cAAc,0BAA0B;AAAA,QAC1C;AAEA,cAAM,aAAa,QAAQ;AAO3B,iBAAS,aAAaC,OAAM;AAC3B,cAAIA,MAAK,SAAS,mBAAmB;AACpC,mBAAO,WAAW,eAAeA,MAAK,MAAM,CAAC,CAAC;AAAA,UAC/C;AAEA,cAAIA,MAAK,SAAS,eAAe;AAChC,mBAAO,WAAW,cAAcA,OAAM,EAAE,MAAM,EAAE,CAAC;AAAA,UAClD;AAGA,iBAAO,WAAW,cAAcA,KAAI;AAAA,QACrC;AAOA,iBAAS,UAAUA,OAAM;AACxB,iBAAOA,MAAK,SAAS,UAAUA,MAAK,SAAS;AAAA,QAC9C;AAQA,iBAAS,uBAAuBC,QAAO,QAAQ;AAC9C,iBAAO,OAAO,IAAI,MAAM,OAAOA,OAAM,IAAI,IAAI,QAAQ;AAAA,QACtD;AAOA,iBAAS,mBAAmB,OAAO;AAClC,cAAI,MACHA,SAAQ;AAET,aAAG;AACF,mBAAOA;AACP,YAAAA,SAAQ,WAAW,cAAcA,QAAO;AAAA,cACvC,iBAAiB;AAAA,YAClB,CAAC;AAAA,UACF,SACC,UAAUA,MAAK,KACfA,OAAM,IAAI,MAAM,SAAS,KAAK,IAAI,IAAI;AAGvC,iBAAOA;AAAA,QACR;AAOA,iBAAS,kBAAkB,OAAO;AACjC,cAAI,OAAO,OACV;AAED,aAAG;AACF,mBAAO;AACP,mBAAO,WAAW,eAAe,MAAM;AAAA,cACtC,iBAAiB;AAAA,YAClB,CAAC;AAAA,UACF,SACC,UAAU,IAAI,KACd,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,MAAM;AAGtC,iBAAO;AAAA,QACR;AAQA,iBAAS,kBAAkBD,OAAM;AAChC,kBAAQA,MAAK,MAAM;AAAA,YAClB,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO,QAAQ;AAAA,YAChB,KAAK;AACJ,qBAAO,QAAQ;AAAA,YAChB,KAAK;AACJ,qBAAO,QAAQ;AAAA;AAAA,YAGhB;AACC,oBAAM,IAAI,MAAM,aAAa;AAAA,UAC/B;AAAA,QACD;AAOA,iBAAS,aAAaA,OAAM;AAC3B,gBAAM,YAAY,aAAaA,KAAI,GAClC,kBAAkB,mBAAmB,SAAS,GAC9C,mBAAmB,WAAW,eAAe,iBAAiB;AAAA,YAC7D,iBAAiB;AAAA,UAClB,CAAC,GACD,aAAa,WAAW,aAAaA,KAAI,GACzC,iBAAiB,kBAAkB,UAAU,GAC7C,iBAAiB,WAAW,cAAc,gBAAgB;AAAA,YACzD,iBAAiB;AAAA,UAClB,CAAC,GACD,qBAAqB;AAAA,YACpB;AAAA,YACA;AAAA,UACD,GACA,wBAAwB;AAAA,YACvB;AAAA,YACA;AAAA,UACD;AAED,cACC,QAAQ,yBACR,SAAS,kBAAkB,kBAAkB,cAAc,GAC1D;AACD;AAAA,UACD;AAEA,cAAI,kBAAkBA,KAAI,GAAG;AAC5B,gBAAI,CAAC,oBAAoB;AACxB,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK;AAAA,kBACJ,OAAO,iBAAiB,IAAI;AAAA,kBAC5B,KAAK,gBAAgB,IAAI;AAAA,gBAC1B;AAAA,gBACA,IAAI,OAAO;AACV,yBAAO,MAAM;AAAA,oBACZ;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AACA,gBAAI,CAAC,uBAAuB;AAC3B,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK;AAAA,kBACJ,KAAK,eAAe,IAAI;AAAA,kBACxB,OAAO,eAAe,IAAI;AAAA,gBAC3B;AAAA,gBACA,IAAI,OAAO;AACV,yBAAO,MAAM,iBAAiB,gBAAgB,IAAI;AAAA,gBACnD;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD,OAAO;AACN,gBAAI,oBAAoB;AACvB,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK;AAAA,kBACJ,OAAO,iBAAiB,IAAI;AAAA,kBAC5B,KAAK,gBAAgB,IAAI;AAAA,gBAC1B;AAAA,gBACA,IAAI,OAAO;AACV,yBAAO,MAAM;AAAA,oBACZ;AAAA,sBACC,iBAAiB,MAAM,CAAC;AAAA,sBACxB,gBAAgB,MAAM,CAAC,IACtB,gBAAgB,IAAI,MAAM;AAAA,oBAC5B;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAEA,gBAAI,uBAAuB;AAC1B,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK;AAAA,kBACJ,KAAK,eAAe,IAAI;AAAA,kBACxB,OAAO,eAAe,IAAI;AAAA,gBAC3B;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,yBAAO,MAAM;AAAA,oBACZ;AAAA,sBACC,eAAe,MAAM,CAAC;AAAA,sBACtB,eAAe,MAAM,CAAC,IACrB,eAAe,IAAI,MAAM;AAAA,oBAC3B;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAEA,cAAM,OAAO,CAAC;AAEd,YAAI,OAAO,OAAO,SAAS,UAAU,GAAG;AACvC,eAAK,kBAAkB,SAAUA,OAAM;AACtC,gBAAIA,MAAK,MAAM,WAAW,GAAG;AAC5B;AAAA,YACD;AACA,yBAAaA,KAAI;AAAA,UAClB;AAAA,QACD;AAEA,YAAI,OAAO,OAAO,SAAS,QAAQ,GAAG;AACrC,eAAK,iBAAiB,SAAUA,OAAM;AACrC,gBAAIA,MAAK,KAAK,WAAW,GAAG;AAC3B;AAAA,YACD;AACA,yBAAaA,KAAI;AAAA,UAClB;AACA,eAAK,cAAc,KAAK;AAAA,QACzB;AAEA,YAAI,OAAO,OAAO,SAAS,SAAS,GAAG;AACtC,eAAK,YAAY,SAAUA,OAAM;AAChC,gBAAIA,MAAK,KAAK,WAAW,GAAG;AAC3B;AAAA,YACD;AACA,yBAAaA,KAAI;AAAA,UAClB;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA;;;AC7WA;AAAA,qEAAAE,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAMjB,QAAM,KAAK,IAAI,MAAM,KAAK,SAAS,UAAU,EAAE,KAAK,EAAE,CAAC;AACvD,QAAM,wBAAwB,IAAI;AAAA,MACjC,OAAO,YAAY,EAAE,OAAO,EAAE;AAAA,MAC9B;AAAA,IACD;AACA,QAAM,aAAa;AACnB,QAAM,aAAa;AAQnB,aAAS,iBAAiB,SAAS;AAClC,aAAO;AAAA,QACN,MAAM,CAACC,OAAM,eACZ,WAAW,cAAcA,KAAI,EAAE,UAAU;AAAA,MAC3C;AAAA,IACD;AAQA,aAAS,2BAA2B,SAAS;AAC5C,aAAO;AAAA,QACN,MAAM,CAACA,OAAM,eACZA,MAAK,IAAI,MAAM,SAASA,MAAK,IAAI,IAAI,QACrC,WAAW,cAAcA,KAAI,EAAE,UAAU;AAAA,MAC3C;AAAA,IACD;AAQA,aAAS,0BAA0B,SAAS;AAC3C,aAAO;AAAA,QACN,MAAM,CAACA,OAAM,eACZA,MAAK,IAAI,MAAM,SAASA,MAAK,IAAI,IAAI,QACrC,WAAW,cAAcA,KAAI,EAAE,UAAU;AAAA,MAC3C;AAAA,IACD;AAQA,aAAS,kBAAkB,MAAM;AAChC,aAAO;AAAA,QACN,MAAM,CAAAA,UAAQA,MAAK,SAAS;AAAA,MAC7B;AAAA,IACD;AAQA,aAAS,gBAAgBA,OAAM;AAC9B,UAAIA,MAAK,SAAS,uBAAuB;AACxC,YAAI,OAAO,SAAS,oBAAoBA,MAAK,UAAU;AAEvD,YAAI,KAAK,SAAS,mBAAmB;AACpC,iBAAO,SAAS,oBAAoB,KAAK,QAAQ;AAAA,QAClD;AACA,eACC,KAAK,SAAS,oBAAoB,SAAS,WAAW,KAAK,MAAM;AAAA,MAEnE;AACA,aAAO;AAAA,IACR;AAUA,aAAS,qBAAqB,YAAYA,OAAM;AAE/C,UACCA,MAAK,SAAS,sBACdA,MAAK,KAAK,SAAS,kBAClB;AACD,eAAO;AAAA,MACR;AAMA,UAAI,gBAAgBA,KAAI,GAAG;AAC1B,eAAO;AAAA,MACR;AAGA,YAAM,YAAY,WAAW;AAAA,QAC5BA;AAAA,QACA,SAAS;AAAA,MACV;AACA,YAAM,gBACL,aAAa,SAAS,oBAAoB,SAAS,IAChD,WAAW,oBAAoB,UAAU,MAAM,CAAC,CAAC,IACjD;AAEJ,aACC,QAAQ,aAAa,MACpB,cAAc,SAAS,oBACvB,cAAc,SAAS;AAAA,IAE1B;AAeA,aAAS,mBAAmB,YAAYA,OAAM;AAC7C,YAAM,YAAY,WAAW,aAAaA,KAAI;AAC9C,YAAM,YAAY,WAAW,eAAe,SAAS;AACrD,YAAM,YAAY,WAAW,cAAc,SAAS;AACpD,YAAM,uBAAuB;AAAA,QAC5B,aACA,aACA,UAAU,MAAM,CAAC,KAAKA,MAAK,MAAM,CAAC,KAClC,SAAS,iBAAiB,SAAS,KACnC,UAAU,IAAI,MAAM,SAAS,UAAU,IAAI,IAAI,QAC/C,UAAU,IAAI,IAAI,SAAS,UAAU,IAAI,MAAM;AAAA,MAChD;AAEA,aAAO,uBAAuB,YAAY;AAAA,IAC3C;AAUA,aAAS,6BAA6B,GAAG,gBAAgB,cAAc;AACtE,aAAO,iBAAiB;AAAA,IACzB;AAQA,aAAS,eAAe;AAAA,IAAC;AAezB,aAAS,eAAe,SAAS,GAAG,UAAU,cAAc;AAC3D,UAAI,aAAa,WAAW,GAAG;AAC9B;AAAA,MACD;AAEA,cAAQ,OAAO;AAAA,QACd,MAAM;AAAA,QACN,WAAW;AAAA,QACX,IAAI,OAAO;AACV,cAAI,aAAa,UAAU,GAAG;AAC7B,mBAAO;AAAA,UACR;AAEA,gBAAM,YAAY,aAAa,CAAC,EAAE,CAAC;AACnC,gBAAM,YAAY,aAAa,CAAC,EAAE,CAAC;AACnC,gBAAM,QAAQ,UAAU,MAAM,CAAC;AAC/B,gBAAM,MAAM,UAAU,MAAM,CAAC;AAC7B,gBAAMC,QAAO,QAAQ,WAAW,KAC9B,MAAM,OAAO,GAAG,EAChB,QAAQ,uBAAuB,4BAA4B;AAE7D,iBAAO,MAAM,iBAAiB,CAAC,OAAO,GAAG,GAAGA,KAAI;AAAA,QACjD;AAAA,MACD,CAAC;AAAA,IACF;AAeA,aAAS,gBAAgB,SAAS,UAAU,UAAU,cAAc;AACnE,UAAI,aAAa,SAAS,GAAG;AAC5B;AAAA,MACD;AAEA,cAAQ,OAAO;AAAA,QACd,MAAM;AAAA,QACN,WAAW;AAAA,QACX,IAAI,OAAO;AACV,gBAAM,aAAa,QAAQ;AAC3B,cAAI,YAAY,mBAAmB,YAAY,QAAQ;AACvD,gBAAM,YACL,WAAW,qBAAqB,WAAW,UAAU;AAAA,YACpD,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAsBjB,OAAO,OAAO;AACb,kBAAI,SAAS,kBAAkB,WAAW,KAAK,GAAG;AACjD,4BAAY;AACZ,uBAAO;AAAA,cACR;AACA,qBAAO;AAAA,YACR;AAAA,UACD,CAAC,KAAK;AACP,gBAAM,aAAa,SAAS,kBAAkB,WAAW,SAAS,IAC/D,SACA;AAEH,iBAAO,MAAM,gBAAgB,WAAW,UAAU;AAAA,QACnD;AAAA,MACD,CAAC;AAAA,IACF;AAQA,QAAM,eAAe;AAAA,MACpB,KAAK,EAAE,QAAQ,aAAa;AAAA,MAC5B,OAAO,EAAE,QAAQ,eAAe;AAAA,MAChC,QAAQ,EAAE,QAAQ,gBAAgB;AAAA,IACnC;AAOA,QAAM,iBAAiB;AAAA,MACtB,KAAK,EAAE,MAAM,MAAM,KAAK;AAAA,MACxB,cAAc;AAAA,QACb,MAAM,CAACD,OAAM,eAAe,qBAAqB,YAAYA,KAAI;AAAA,MAClE;AAAA,MACA,cAAc;AAAA,QACb,MAAM,CAACA,OAAM,eACZA,MAAK,SAAS,yBACdA,MAAK,WAAW,SAAS,0BACzB,WAAW,KAAK,WAAW,QAAQA,MAAK,WAAW,IAAI,CAAC;AAAA,MAC1D;AAAA,MACA,cAAc;AAAA,QACb,MAAM,CAACA,OAAM,eACZA,MAAK,SAAS,yBACdA,MAAK,aAAa,SAAS,KAC3B,QAAQA,MAAK,aAAa,CAAC,EAAE,IAAI,KACjC,WAAW,KAAK,WAAW,QAAQA,MAAK,aAAa,CAAC,EAAE,IAAI,CAAC;AAAA,MAC/D;AAAA,MACA,WAAW;AAAA,QACV,MAAM,SAAS;AAAA,MAChB;AAAA,MACA,YAAY;AAAA,QACX,MAAM,CAAAA,UACLA,MAAK,SAAS,yBAAyB,CAAC,SAAS,YAAYA,KAAI;AAAA,MACnE;AAAA,MACA,MAAM;AAAA,QACL,MAAM;AAAA,MACP;AAAA,MACA,wBAAwB;AAAA,QACvB,MAAM,CAACA,OAAM,eACZA,MAAK,IAAI,MAAM,SAASA,MAAK,IAAI,IAAI,QACrC,qBAAqB,YAAYA,KAAI;AAAA,MACvC;AAAA,MACA,wBAAwB;AAAA,QACvB,MAAM,CAAAA,UACLA,MAAK,IAAI,MAAM,SAASA,MAAK,IAAI,IAAI,QACrCA,MAAK,SAAS,yBACd,CAAC,SAAS,YAAYA,KAAI;AAAA,MAC5B;AAAA,MAEA,mBAAmB,0BAA0B,OAAO;AAAA,MACpD,iBAAiB,0BAA0B,KAAK;AAAA,MAChD,iBAAiB,0BAA0B,KAAK;AAAA,MAChD,oBAAoB,2BAA2B,OAAO;AAAA,MACtD,kBAAkB,2BAA2B,KAAK;AAAA,MAClD,kBAAkB,2BAA2B,KAAK;AAAA,MAElD,OAAO,kBAAkB,gBAAgB;AAAA,MACzC,OAAO,kBAAkB,gBAAgB;AAAA,MACzC,UAAU,kBAAkB,qBAAqB;AAAA,MAEjD,OAAO,iBAAiB,OAAO;AAAA,MAC/B,MAAM,iBAAiB,MAAM;AAAA,MAC7B,OAAO,iBAAiB,OAAO;AAAA,MAC/B,OAAO,iBAAiB,OAAO;AAAA,MAC/B,UAAU,iBAAiB,UAAU;AAAA,MACrC,UAAU,iBAAiB,UAAU;AAAA,MACrC,SAAS,iBAAiB,SAAS;AAAA,MACnC,IAAI,iBAAiB,IAAI;AAAA,MACzB,QAAQ,iBAAiB,QAAQ;AAAA,MACjC,KAAK,iBAAiB,KAAK;AAAA,MAC3B,IAAI,iBAAiB,IAAI;AAAA,MACzB,QAAQ,iBAAiB,QAAQ;AAAA,MACjC,KAAK,iBAAiB,KAAK;AAAA,MAC3B,QAAQ,iBAAiB,QAAQ;AAAA,MACjC,QAAQ,iBAAiB,QAAQ;AAAA,MACjC,OAAO,iBAAiB,OAAO;AAAA,MAC/B,KAAK,iBAAiB,KAAK;AAAA,MAC3B,KAAK,iBAAiB,KAAK;AAAA,MAC3B,OAAO,iBAAiB,OAAO;AAAA,MAC/B,MAAM,iBAAiB,MAAM;AAAA,IAC9B;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP,aAAa;AAAA,YACZ,aAAa;AAAA,cACZ,MAAM,OAAO,KAAK,YAAY;AAAA,YAC/B;AAAA,YACA,eAAe;AAAA,cACd,OAAO;AAAA,gBACN,EAAE,MAAM,OAAO,KAAK,cAAc,EAAE;AAAA,gBACpC;AAAA,kBACC,MAAM;AAAA,kBACN,OAAO,EAAE,MAAM,OAAO,KAAK,cAAc,EAAE;AAAA,kBAC3C,UAAU;AAAA,kBACV,aAAa;AAAA,gBACd;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UACA,MAAM;AAAA,UACN,OAAO;AAAA,YACN,MAAM;AAAA,YACN,YAAY;AAAA,cACX,WAAW,EAAE,MAAM,4BAA4B;AAAA,cAC/C,MAAM,EAAE,MAAM,8BAA8B;AAAA,cAC5C,MAAM,EAAE,MAAM,8BAA8B;AAAA,YAC7C;AAAA,YACA,sBAAsB;AAAA,YACtB,UAAU,CAAC,aAAa,QAAQ,MAAM;AAAA,UACvC;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,qBAAqB;AAAA,UACrB,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,gBAAgB,QAAQ,WAAW,CAAC;AAC1C,YAAI,YAAY;AAQhB,iBAAS,aAAa;AACrB,sBAAY;AAAA,YACX,OAAO;AAAA,YACP,UAAU;AAAA,UACX;AAAA,QACD;AAOA,iBAAS,YAAY;AACpB,sBAAY,UAAU;AAAA,QACvB;AASA,iBAASG,OAAMF,OAAM,MAAM;AAC1B,cAAI,qBAAqBA;AAEzB,iBAAO,mBAAmB,SAAS,oBAAoB;AACtD,iCAAqB,mBAAmB;AAAA,UACzC;AACA,cAAI,MAAM,QAAQ,IAAI,GAAG;AACxB,mBAAO,KAAK,KAAKE,OAAM,KAAK,MAAM,kBAAkB,CAAC;AAAA,UACtD;AACA,iBAAO,eAAe,IAAI,EAAE,KAAK,oBAAoB,UAAU;AAAA,QAChE;AASA,iBAAS,eAAe,UAAU,UAAU;AAC3C,mBAAS,IAAI,cAAc,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG;AACnD,kBAAMC,aAAY,cAAc,CAAC;AACjC,kBAAM,UACLD,OAAM,UAAUC,WAAU,IAAI,KAC9BD,OAAM,UAAUC,WAAU,IAAI;AAE/B,gBAAI,SAAS;AACZ,qBAAO,aAAaA,WAAU,SAAS;AAAA,YACxC;AAAA,UACD;AACA,iBAAO,aAAa;AAAA,QACrB;AAUA,iBAAS,wBAAwB,UAAU,UAAU;AACpD,gBAAMC,SAAQ,CAAC;AACf,cAAI,YAAY,mBAAmB,YAAY,QAAQ;AAEvD,cAAI,SAAS,IAAI,MAAM,OAAO,UAAU,IAAI,IAAI,QAAQ,GAAG;AAC1D,eAAG;AACF,oBAAM,QAAQ,WAAW,cAAc,WAAW;AAAA,gBACjD,iBAAiB;AAAA,cAClB,CAAC;AAED,kBAAI,MAAM,IAAI,MAAM,OAAO,UAAU,IAAI,IAAI,QAAQ,GAAG;AACvD,gBAAAA,OAAM,KAAK,CAAC,WAAW,KAAK,CAAC;AAAA,cAC9B;AACA,0BAAY;AAAA,YACb,SAAS,UAAU,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC;AAAA,UAC/C;AAEA,iBAAOA;AAAA,QACR;AAQA,iBAAS,OAAOJ,OAAM;AACrB,gBAAM,aAAaA,MAAK,OAAO;AAC/B,gBAAM,cACL,SAAS,uBAAuB,IAAI,UAAU,KAC9C,eAAe;AAEhB,cAAI,CAAC,aAAa;AACjB;AAAA,UACD;AAGA,gBAAM,WAAW,UAAU;AAG3B,cAAI,UAAU;AACb,kBAAM,OAAO,eAAe,UAAUA,KAAI;AAC1C,kBAAM,eAAe,wBAAwB,UAAUA,KAAI;AAE3D,iBAAK,OAAO,SAAS,UAAUA,OAAM,YAAY;AAAA,UAClD;AAEA,oBAAU,WAAWA;AAAA,QACtB;AASA,iBAAS,qBAAqBA,OAAM;AACnC,iBAAOA,KAAI;AACX,qBAAW;AAAA,QACZ;AAEA,eAAO;AAAA,UACN,SAAS;AAAA,UACT,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,uBAAuB;AAAA,UACvB,wBAAwB;AAAA,UACxB,oBAAoB;AAAA,UAEpB,cAAc;AAAA,UAEd,YAAY;AAAA,UACZ,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnmBA;AAAA,2DAAAK,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAkBjB,aAAS,eAAe,UAAU;AACjC,aAAO,YAAY,SAAS,KAAK,CAAC,EAAE,SAAS;AAAA,IAC9C;AASA,aAAS,kBAAkBC,OAAM,UAAU,cAAc;AACxD,aAAOA,MAAK,KAAK,SAAS,YAAYA,MAAK,SAAS,SAAS;AAAA,IAC9D;AAOA,aAAS,uBAAuB,OAAO;AACtC,YAAM,YAAY,MAAM;AAExB,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,EAAE,GAAG;AAC1C,cAAM,WAAW,UAAU,CAAC;AAE5B,YAAI,SAAS,SAAS,aAAa;AAMlC,iBAAO,SAAS,YAAY,WAAW,IAAI,WAAW;AAAA,QACvD;AAAA,MACD;AAGA,aAAO;AAAA,IACR;AAUA,aAAS,gBAAgBA,OAAM;AAC9B,YAAM,OAAO,EAAE,YAAY,OAAO,eAAe,MAAM;AACvD,UAAI,cAAcA;AAClB,UAAI,SAASA,MAAK;AAClB,UAAI,QAAQ;AAEZ,aAAO,aAAa;AACnB,gBAAQ,OAAO,MAAM;AAAA;AAAA,UAGpB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACJ;AAAA;AAAA,UAGD,KAAK;AACJ,gBACC,OAAO,WAAW,eAClB,CAAC,OAAO,SAAS,YACjB,OAAO,SAAS,SAAS,gBACzB,OAAO,SAAS,SAAS,QACxB;AACD,oBAAM,cACL,OAAO,OAAO,SAAS,oBACpB,OAAO,SACP;AAEJ,kBAAI,SAAS,SAAS,WAAW,GAAG;AACnC,oBAAI,CAAC,OAAO;AACX,0BAAQ;AACR,uBAAK,gBACJ,YAAY,OAAO,UAAU,WAAW,KACxC,YAAY,OAAO,UAAU,CAAC,EAAE,SAC/B;AAAA,gBACH;AACA,yBAAS,YAAY;AAAA,cACtB,OAAO;AACN,uBAAO;AAAA,cACR;AAAA,YACD,OAAO;AACN,qBAAO;AAAA,YACR;AACA;AAAA;AAAA,UAGD,KAAK;AAAA,UACL,KAAK;AACJ,gBAAI,OAAO,WAAW,aAAa;AAClC,mBAAK,aAAa;AAAA,YACnB;AACA,mBAAO;AAAA,UAER;AACC,mBAAO;AAAA,QACT;AAEA,sBAAc;AACd,iBAAS,OAAO;AAAA,MACjB;AAGA,YAAM,IAAI,MAAM,aAAa;AAAA,IAC9B;AASA,aAAS,mBAAmB,YAAY;AACvC,aACC,WAAW,MAAM,WAAS,MAAM,SAAS,YAAY,KACrD,WAAW,WAAW,IAAI,IAAI,WAAW,IAAI,WAAS,MAAM,IAAI,CAAC,EAAE;AAAA,IAErE;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf,EAAE,qBAAqB,OAAO,kBAAkB,KAAK;AAAA,QACtD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,UAAU,CAAC,cAAc,YAAY;AAAA,UACrC,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,qBAAqB;AAAA,gBACpB,MAAM;AAAA,cACP;AAAA,cACA,kBAAkB;AAAA,gBACjB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QAET,UAAU;AAAA,UACT,qBAAqB;AAAA,QACtB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,qBAAqB,iBAAiB,CAAC,IAAI,QAAQ;AAC5D,cAAM,aAAa,QAAQ;AAQ3B,YAAI,QAAQ,CAAC;AAMb,iBAAS,aAAa;AACrB,gBAAM,KAAK,EAAE,MAAM,OAAO,OAAO,OAAO,MAAM,MAAM,CAAC;AAAA,QACtD;AAMA,iBAAS,YAAY;AACpB,iBAAO,MAAM,IAAI;AAAA,QAClB;AAEA,eAAO;AAAA;AAAA,UAEN,UAAU;AACT,oBAAQ,CAAC;AAAA,UACV;AAAA;AAAA,UAGA,iBAAiB;AAChB,kBAAM,OAAO,MAAM,GAAG,EAAE;AAExB,gBAAI,MAAM;AACT,mBAAK,OAAO;AAAA,YACb;AAAA,UACD;AAAA,UAEA,QAAQ;AACP,kBAAM,OAAO,MAAM,GAAG,EAAE;AAExB,gBAAI,MAAM;AACT,mBAAK,QAAQ;AAAA,YACd;AAAA,UACD;AAAA,UAEA,aAAaC,OAAM;AAClB,kBAAM,OAAO,MAAM,GAAG,EAAE;AAExB,gBAAI,QAAQ,kBAAkBA,OAAM,OAAO,QAAQ,GAAG;AACrD,mBAAK,OAAO;AAAA,YACb;AAAA,UACD;AAAA;AAAA,UAGA,qBAAqB;AAAA,UACrB,4BAA4B;AAAA;AAAA,UAG5B,oBAAoB;AAAA,UACpB,0BAA0BA,OAAM;AAC/B,kBAAM,YAAY,UAAU;AAG5B,gBAAI,uBAAuBA,MAAK,MAAMA,MAAK,GAAG,MAAM;AACnD;AAAA,YACD;AAGA,gBAAIA,MAAK,WAAW;AACnB;AAAA,YACD;AAGA,kBAAM,UAAU,WAAW,qBAAqBA,KAAI,EAAE,CAAC;AAEvD,gBAAI,eAAe,OAAO,KAAK,QAAQ,WAAW,SAAS,GAAG;AAC7D;AAAA,YACD;AAGA,kBAAM,WAAW;AAAA,cAChB,WAAW,SAASA,KAAI;AAAA,YACzB;AAEA,gBAAI,YAAY,SAAS,WAAW,SAAS,GAAG;AAC/C;AAAA,YACD;AAGA,kBAAM,eAAe,gBAAgBA,KAAI;AAEzC,gBACC,aAAa,eACZ,CAAC,oBACD,CAAC,UAAU,QACX,aAAa,kBACd,CAAC,UAAU,SACX,CAAC,UAAU,MACV;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,CAAC,IAAI,OAAO;AACX,sBACE,CAAC,aAAa,iBACd,UAAU,QACX,mBAAmBA,MAAK,MAAM,GAC7B;AAOD;AAAA,kBACD;AAEA,sBACCA,MAAK,OAAO,UACZA,MAAK,OAAO,CAAC,EAAE,SAAS,QACvB;AACD;AAAA,kBACD;AAEA,wBAAM,gBAAgB,WAAW;AAAA,oBAChCA;AAAA,oBACAA,MAAK,QAAQ,IAAI;AAAA,kBAClB;AACA,wBAAM,iBAAiB,WAAW;AAAA,oBACjC;AAAA,oBACA,SAAS;AAAA,kBACV;AAEA,sBAAIA,MAAK,OAAO;AACf,wBACC,cAAc,IAAI,IAAI,OACtB,eAAe,IAAI,MAAM,MACxB;AACD;AAAA,oBACD;AAAA,kBACD;AAGA,sBAAI,aAAa,eAAe;AAC/B,0BAAM,aAAaA,MAAK;AAMxB,wBAAI,WAAW,SAAS,oBAAoB;AAC3C;AAAA,oBACD;AAEA,0BAAM,WAAW,WAAW;AAC5B,0BAAM,qBACL,WAAW;AAAA,sBACV,WAAW;AAAA,sBACX,SAAS;AAAA,oBACV;AACD,0BAAM,oBACL,WAAW,aAAa,QAAQ;AAOjC,wBACC,SAAS;AAAA,sBACR;AAAA,sBACA;AAAA,oBACD,GACC;AACD;AAAA,oBACD;AAGA,wBACC,WAAW;AAAA,sBACV;AAAA,sBACA;AAAA,oBACD,GACC;AACD;AAAA,oBACD;AAEA,0BAAM,MAAM,YAAY;AAAA,sBACvB,mBAAmB,MAAM,CAAC;AAAA,sBAC1B,kBAAkB,MAAM,CAAC;AAAA,oBAC1B,CAAC;AAAA,kBACF;AAGA,wBAAM,kBAAkB,WAAW;AAAA,oBAClCA,MAAK;AAAA,kBACN;AAEA,sBACC,WAAW;AAAA,oBACV;AAAA,oBACA;AAAA,kBACD,GACC;AAED,0BAAM,MAAM,OAAO,aAAa;AAChC,wBAAIA,MAAK,IAAI;AACZ,4BAAM,MAAM,OAAOA,MAAK,EAAE;AAAA,oBAC3B;AAAA,kBACD,OAAO;AAEN,0BAAM,MAAM,YAAY;AAAA,sBACvB,cAAc,MAAM,CAAC;AAAA,sBACrB,eAAe,MAAM,CAAC;AAAA,oBACvB,CAAC;AAAA,kBACF;AACA,wBAAM,MAAM,gBAAgB,iBAAiB,KAAK;AAGlD,sBAAI,eAAe,aAAa,gBAC7BA,MAAK,OAAO,SACZA;AAEH,sBAAI,aAAa,SAAS,mBAAmB;AAC5C,mCAAe,aAAa;AAAA,kBAC7B;AAOA,sBACC,aAAa,OAAO,SAAS,oBAC7B,aAAa,OAAO,SACnB,2BACD,CAAC,SAAS;AAAA,oBACT;AAAA,oBACA;AAAA,kBACD,KACA,CAAC,SAAS,gBAAgB,YAAYA,KAAI,GACzC;AACD,0BAAM,MAAM,iBAAiB,cAAc,GAAG;AAC9C,0BAAM,MAAM,gBAAgB,cAAc,GAAG;AAAA,kBAC9C;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpcA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,aAAa;AACnB,QAAM,WAAW;AAcjB,QAAM,eACL;AACD,QAAM,wBACL;AACD,QAAM,0BACL;AAOD,aAAS,qBAAqBC,OAAM;AACnC,aAAOA,MAAK,OAAO,SAAS,kBAAkBA,MAAK,OAAO,SAASA;AAAA,IACpE;AAOA,aAAS,6BAA6B,YAAY;AACjD,UAAIA,QAAO,WAAW;AAEtB,aAAO,aAAa,KAAKA,MAAK,IAAI,GAAG;AACpC,QAAAA,QAAOA,MAAK;AAAA,MACb;AAEA,aACCA,MAAK,SAAS,wBACbA,MAAK,SAAS,0BACdA,MAAK,OAAO,SAAS,yBACrB,sBAAsB,KAAKA,MAAK,OAAO,OAAO,IAAI;AAAA,IAErD;AASA,aAAS,6BAA6B,MAAM,WAAW;AACtD,UACC,UAAU,QAAQ;AAAA,QACjB,SAAO,IAAI,YAAY,IAAI,SAAS,SAAS;AAAA,MAC9C,GACC;AACD,eAAO;AAAA,MACR;AAEA,YAAM,WAAW,SAAS,kBAAkB,WAAW,IAAI;AAE3D,UAAI,aAAa,MAAM;AACtB,eAAO,SAAS,KAAK,KAAK,SAAO,IAAI,SAAS,WAAW;AAAA,MAC1D;AAEA,aAAO;AAAA,IACR;AAWA,aAAS,qBAAqB,WAAW;AACxC,UAAI,CAAC,UAAU,QAAQ,GAAG;AACzB,eAAO;AAAA,MACR;AACA,UAAIA,QAAO,UAAU,WAAW;AAEhC,aAAO,aAAa,KAAKA,MAAK,IAAI,GAAG;AACpC,QAAAA,QAAOA,MAAK;AAAA,MACb;AAEA,UAAI,CAAC,wBAAwB,KAAKA,MAAK,IAAI,GAAG;AAC7C,eAAO;AAAA,MACR;AACA,aAAOA;AAAA,IACR;AAWA,aAAS,8BAA8BA,OAAM;AAC5C,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AACJ,iBAAOA,MAAK,WAAW,KAAK,UAAQ;AACnC,gBAAI,MAAM;AAOT,qBAAO;AAAA,gBACN,KAAK,YAAY,KAAK;AAAA,cACvB;AAAA,YACD;AAEA,mBAAO;AAAA,UACR,CAAC;AAAA,QAEF,KAAK;AACJ,iBAAOA,MAAK,SAAS,KAAK,aAAW;AACpC,gBAAI,SAAS;AACZ,qBAAO,8BAA8B,OAAO;AAAA,YAC7C;AAEA,mBAAO;AAAA,UACR,CAAC;AAAA,QAEF,KAAK;AACJ,iBAAO,8BAA8BA,MAAK,IAAI;AAAA,QAE/C,KAAK;AACJ,iBAAO;AAAA,MAGT;AAEA,aAAO;AAAA,IACR;AA0BA,aAAS,6BAA6B,UAAU,wBAAwB;AACvE,UAAI,SAAS,cAAc,SAAS,MAAM,SAAS,UAAU;AAC5D,eAAO;AAAA,MACR;AAGA,UAAI,SAAS;AACb,UAAI,mBAAmB;AACvB,YAAM,aAAa,SAAS;AAE5B,eAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,EAAE,GAAG;AAC3C,cAAM,YAAY,WAAW,CAAC;AAE9B,YAAI,UAAU,QAAQ,GAAG;AACxB,gBAAM,eACL,WAAW,QAAQ,OAAO,eAAe,UAAU;AAEpD,cAAI,cAAc;AACjB,mBAAO;AAAA,UACR;AAEA,gBAAM,oBAAoB,qBAAqB,SAAS;AAExD,cACC,sBAAsB,QACtB,kBAAkB,SAAS,QAC1B;AACD,kBAAM,WAAW,kBAAkB;AACnC,gBAAI,oBAAoB,OACvB,oBAAoB;AAErB,gBAAI,SAAS,SAAS,iBAAiB;AACtC,oBAAM,aAAa,SAAS;AAE5B,kCAAoB,WAClB,OAAO,UAAQ,KAAK,KAAK,EACzB,IAAI,UAAQ,KAAK,MAAM,IAAI,EAC3B;AAAA,gBAAK,UACL,6BAA6B,MAAM,SAAS,KAAK;AAAA,cAClD;AAED,kCAAoB,8BAA8B,QAAQ;AAAA,YAC3D,WAAW,SAAS,SAAS,gBAAgB;AAC5C,oBAAM,WAAW,SAAS;AAE1B,kCAAoB,SAClB,IAAI,aAAW,WAAW,QAAQ,IAAI,EACtC;AAAA,gBAAK,UACL,6BAA6B,MAAM,SAAS,KAAK;AAAA,cAClD;AAED,kCAAoB,8BAA8B,QAAQ;AAAA,YAC3D;AAEA,gBAAI,qBAAqB,mBAAmB;AAC3C,qBAAO;AAAA,YACR;AAAA,UACD;AAEA,mBAAS;AAAA,QACV,WAAW,UAAU,OAAO,KAAK,WAAW,MAAM;AACjD,cAAI,wBAAwB;AAC3B,mBAAO;AAAA,UACR;AACA,6BAAmB;AAAA,QACpB;AAAA,MACD;AAMA,YAAM,gBACL,WAAW,QACX,OAAO,SAAS,SAAS,SACzB,6BAA6B,OAAO,UAAU;AAE/C,UAAI,CAAC,eAAe;AACnB,eAAO;AAAA,MACR;AAEA,UAAI,kBAAkB;AACrB,eAAO,SAAS,KAAK,CAAC,EAAE;AAAA,MACzB;AAEA,aAAO,OAAO;AAAA,IACf;AAYA,aAAS,qBAAqB,WAAW,wBAAwB;AAChE,YAAM,gBAAgB,oBAAI,IAAI;AAE9B,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,EAAE,GAAG;AAC1C,cAAM,WAAW,UAAU,CAAC;AAC5B,cAAM,aAAa,SAAS;AAC5B,cAAM,aAAa;AAAA,UAClB;AAAA,UACA;AAAA,QACD;AACA,YAAI,SAAS;AAEb,iBAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,EAAE,GAAG;AAC3C,gBAAM,YAAY,WAAW,CAAC;AAC9B,gBAAM,KAAK,UAAU;AAMrB,cAAI,OAAO,QAAQ;AAClB;AAAA,UACD;AACA,mBAAS;AAGT,gBAAM,QAAQ,qBAAqB,SAAS;AAE5C,cAAI,OAAO;AACV,gBAAI,cAAc,IAAI,KAAK,GAAG;AAC7B,4BAAc,IAAI,KAAK,EAAE,KAAK,UAAU;AAAA,YACzC,OAAO;AACN,4BAAc,IAAI,OAAO,CAAC,UAAU,CAAC;AAAA,YACtC;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AASA,aAAS,OAAOA,OAAM,MAAM,YAAY;AACvC,UAAI,CAACA,SAAQ,WAAWA,KAAI,GAAG;AAC9B,eAAO;AAAA,MACR;AACA,UAAIA,MAAK,SAAS,MAAM;AACvB,eAAOA;AAAA,MACR;AACA,aAAO,OAAOA,MAAK,QAAQ,MAAM,UAAU;AAAA,IAC5C;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,eAAe;AAAA,YACf,wBAAwB;AAAA,UACzB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,eAAe,EAAE,MAAM,CAAC,OAAO,KAAK,EAAE;AAAA,cACtC,wBAAwB,EAAE,MAAM,UAAU;AAAA,YAC3C;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,UAAU;AAAA,QACX;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,eAAe,uBAAuB,CAAC,IAAI,QAAQ;AAC5D,cAAM,qCAAqC,kBAAkB;AAC7D,cAAM,aAAa,QAAQ;AAC3B,cAAM,YAAY,CAAC;AACnB,YAAI,cAAc;AAClB,YAAI,YAAY;AAChB,YAAI,cAAc;AAelB,iBAAS,WAAW,OAAO;AAC1B,gBAAM,gBAAgB,MAAM,OAAO,OAAO;AAE1C,cACC,MAAM,WACL,sCACA,cAAc,WAAW,MAAM,SAC/B;AACD,kBAAM,gBAAgB;AAAA,cACrB,MAAM,CAAC;AAAA,cACP;AAAA,cACA,gBAAc,WAAW,KAAK,SAAS,WAAW;AAAA,YACnD;AACA,kBAAM,qBAAqB,kBAAkB;AAE7C,gBACC,CAAC,sBACD,cAAc,aAAa,SAAS,GACnC;AACD,oBAAM,mBAAmB,cAAc,aAAa,CAAC;AAErD,kBAAI,iBAAiB,MAAM;AAC1B,sBAAM,iBAAiB,iBAAiB,KAAK;AAW7C,oBAAI,eAAe,SAAS,sBAAsB;AACjD,sBAAI,eAAe,GAAG,SAAS,aAAa;AAC3C,kCAAc,eAAe,GAAG;AAChC,kCAAc;AAAA,kBACf;AAEA,sBAAI,eAAe,GAAG,SAAS,iBAAiB;AAC/C,wBAAI,eAAe,KAAK,SAAS,aAAa;AAC7C,oCAAc,eAAe,KAAK;AAClC,oCAAc;AAAA,oBACf;AAAA,kBACD;AAEA,sBAAI,eAAe,OAAO,WAAW;AACpC,gCAAY,eAAe;AAC3B,kCAAc;AAAA,kBACf;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAEA,gBAAI,YACH;AAAA,aAEC,cAAc,OAAO,SAAS,oBAC9B,cAAc,OAAO,SAAS,oBAC9B,cAAc,aAAa;AAAA,cAC1B,iBAAe,YAAY;AAAA,YAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,YAMD,cAAc,WAAW,MAAM;AAEhC,gBACC,CAAC,sBACD,cAAc,gBACd,cAAc,aAAa,WAAW,GACrC;AACD,kBACC,iBACA,cAAc,gBACd,cAAc,aAAa,UAAU,GACpC;AAMD,+BAAe,cAAc;AAE7B,oBAAI,yBAAyB;AAE7B,8BAAc,aAAa,QAAQ,iBAAe;AACjD,sBAAI,YAAY,GAAG,SAAS,iBAAiB;AAC5C,8CACC,YAAY,GAAG,WAAW;AAAA,kBAC5B,WAAW,YAAY,GAAG,SAAS,gBAAgB;AAClD,8CACC,YAAY,GAAG,SAAS;AAAA,kBAC1B,OAAO;AACN,8CAA0B;AAAA,kBAC3B;AAAA,gBACD,CAAC;AAED,4BACC,aAAa,gBAAgB;AAAA,cAC/B;AAAA,YACD;AAEA,0BAAc,QAAQ,CAAAC,UAAQ;AAC7B,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAMA;AAAA,gBACN,KAAK,YACF,WAAS;AACT,wBAAM,kBACL,WAAW;AAAA,oBACV;AAAA,oBACA,OAAK,EAAE,UAAU,cAAc;AAAA,kBAChC;AAOD,yBAAO,IAAI,WAAW,OAAO,UAAU,EACrC,YAAY,cAAc,KAAK,EAC/B;AAAA,oBACA,gBAAgB;AAAA,oBAChB;AAAA,kBACD;AAAA,gBACF,IACC;AAAA,cACJ,CAAC;AAAA,YACF,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,iBAAiB;AAChB,iCAAqB,WAAW,sBAAsB,EAAE;AAAA,cACvD;AAAA,YACD;AAAA,UACD;AAAA,UAEA,oBAAoBA,OAAM;AACzB,gBAAIA,MAAK,SAAS,SAAS,CAAC,qBAAqBA,KAAI,GAAG;AACvD,wBAAU,KAAK,GAAG,WAAW,qBAAqBA,KAAI,CAAC;AAAA,YACxD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACziBA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAMjB,QAAM,gCAAgC,SAAS,cAAc;AAAA,MAC5D,MAAM;AAAA,IACP,CAAC;AAOD,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA;AAAA;AAAA;AAAA;AAAA,YAKC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,oBAAoB;AAAA,oBACnB,MAAM;AAAA,oBACN,YAAY;AAAA,sBACX,OAAO;AAAA,wBACN,MAAM;AAAA,sBACP;AAAA,sBACA,QAAQ;AAAA,wBACP,MAAM;AAAA,sBACP;AAAA,oBACD;AAAA,oBACA,sBAAsB;AAAA,kBACvB;AAAA,kBACA,sBAAsB;AAAA,oBACrB,MAAM;AAAA,oBACN,YAAY;AAAA,sBACX,OAAO;AAAA,wBACN,MAAM;AAAA,sBACP;AAAA,sBACA,QAAQ;AAAA,wBACP,MAAM;AAAA,sBACP;AAAA,oBACD;AAAA,oBACA,sBAAsB;AAAA,kBACvB;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,OAAO;AAAA,oBACN,MAAM;AAAA,kBACP;AAAA,kBACA,QAAQ;AAAA,oBACP,MAAM;AAAA,kBACP;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,6BAA6B;AAAA,gBAC5B,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,qBAAqB;AAAA,QACtB;AAAA,MACD;AAAA,MACA,OAAO,SAAS;AACf,cAAM,eAAe,QAAQ,QAAQ,CAAC;AACtC,cAAM,8BACL,QAAQ,QAAQ,CAAC,KACjB,QAAQ,QAAQ,CAAC,EAAE;AACpB,YAAI,oBAAoB;AAAA,UACvB,oBAAoB,EAAE,OAAO,MAAM,QAAQ,KAAK;AAAA,UAChD,sBAAsB,EAAE,OAAO,MAAM,QAAQ,KAAK;AAAA,QACnD;AAEA,YAAI,cAAc;AACjB,8BACC,OAAO,aAAa,UAAU,eAC9B,OAAO,aAAa,WAAW,cAC5B;AAAA,YACA,oBAAoB;AAAA,YACpB,sBAAsB;AAAA,UACvB,IACC;AAAA,QACL;AAYA,iBAAS,YAAY,UAAU,mBAAmB;AACjD,iBACC,qBACA,kBAAkB,QAAQ,KAC1B,kBAAkB,QAAQ,EAAE,iBAAiB;AAAA,QAE/C;AAUA,iBAAS,mBAAmBC,OAAM;AACjC,iBAAO,OAAO,UAAUA,MAAK,SAAS,KAAK;AAAA,QAC5C;AASA,iBAAS,OAAO,YAAY,MAAM,KAAK;AACtC,kBAAQ,OAAO;AAAA,YACd,MAAM;AAAA,YACN,WAAW;AAAA,YACX,MAAM,EAAE,KAAK;AAAA,YACb;AAAA,UACD,CAAC;AAAA,QACF;AAcA,iBAAS,UAAUA,OAAM;AACxB,iBACCA,MAAK,SAAS,wBACdA,MAAK,GAAG,SAAS,gBACjBA,MAAK,KAAK,SAAS,sBACnB,CAACA,MAAK,KAAK,YACXA,MAAK,KAAK,SAAS,SAAS,gBAC5BA,MAAK,GAAG,SAASA,MAAK,KAAK,SAAS;AAAA,QAEtC;AAUA,iBAAS,2BAA2B,OAAOA,OAAM;AAChD,gBAAM,YAAYA,MAAK;AACvB,gBAAM,aAAa,QAAQ;AAG3B,cACC,WAAW,kBAAkBA,KAAI,EAAE,SACnC,WAAW,kBAAkB,UAAU,MAAM,EAAE,QAC9C;AACD,mBAAO;AAAA,UACR;AAEA,cAAI,aAAa,WAAW,QAAQ,UAAU,MAAM;AAEpD,cACC,SAAS,cAAc,UAAU,MAAM,IACvC,+BACC;AACD,yBAAa,IAAI,UAAU;AAAA,UAC5B;AAEA,iBAAO,MAAM;AAAA,YACZA;AAAA,YACA,IAAI,UAAU,SAAS,IAAI,OAAO,UAAU;AAAA,UAC7C;AAAA,QACD;AAaA,iBAAS,aAAa,UAAU,WAAW,YAAY;AACtD,cACC,UAAU,SAAS,sBACnB,UAAU,OAAO,SAAS,WAC1B,UAAU,SAAS,SAAS,qBAC3B;AACD;AAAA,UACD;AAEA,cAAI,mBAAmB,SAAS,GAAG;AAClC,gBAAI,YAAY,WAAW,MAAM,OAAO,GAAG;AAC1C,qBAAO,YAAY,SAAS,IAAI;AAAA,YACjC;AACA;AAAA,UACD;AAEA,gBAAM,MAAM,UAAU,UAAU,IAC7B,WAAS,2BAA2B,OAAO,UAAU,IACrD;AAEH,cACC,YAAY,WAAW,MAAM,QAAQ,KACrC,6BACC;AACD,mBAAO,YAAY,UAAU,GAAG;AAChC;AAAA,UACD;AAEA,cAAI,YAAY,WAAW,MAAM,QAAQ,GAAG;AAC3C,kBAAM,WAAW,UAAU;AAE3B,gBACE,SAAS,SAAS,aAClB,SAAS,SAAS,SAAS,SAC3B,SAAS,SAAS,gBAClB,SAAS,SAAS,SAAS,QAC3B,CAAC,UAAU,UACX;AACD,qBAAO,YAAY,UAAU,GAAG;AAAA,YACjC;AAAA,UACD;AAAA,QACD;AAQA,iBAAS,wBAAwBA,OAAM;AAEtC,cAAI,CAACA,MAAK,MAAM;AACf;AAAA,UACD;AAGA,cACCA,MAAK,OAAO,SAAS,WACrBA,MAAK,OAAO,SAAS,eACpB;AACD;AAAA,UACD;AAGA,cAAIA,MAAK,KAAK,SAAS,oBAAoB;AAC1C;AAAA,UACD;AAEA,uBAAaA,MAAK,IAAIA,MAAK,MAAMA,KAAI;AAAA,QACtC;AAOA,iBAAS,0BAA0BA,OAAM;AACxC,cAAIA,MAAK,aAAa,KAAK;AAC1B,yBAAaA,MAAK,MAAMA,MAAK,OAAOA,KAAI;AAAA,UACzC;AAAA,QACD;AAMA,eAAO;AAAA,UACN,oBAAoB;AAAA,UACpB,sBAAsB;AAAA,QACvB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC3UA;AAAA,oEAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AACjB,QAAM,EAAE,MAAM,iBAAiB,IAAI;AAMnC,QAAM,oCAAoC,SAAS,cAAc;AAAA,MAChE,MAAM;AAAA,MACN,UAAU;AAAA,IACX,CAAC;AAOD,aAAS,mBAAmBC,OAAM;AACjC;AAAA;AAAA,QAEC,SAAS,cAAcA,KAAI,KAAK;AAAA,QAEhCA,MAAK,SAAS,qBACdA,MAAK,SAAS;AAAA;AAAA,IAEhB;AAOA,aAAS,uBAAuB,UAAU;AAEzC,aAAO,SAAS,cAAc,QAAQ,IAAI;AAAA,IAC3C;AAQA,aAAS,uCAAuCC,OAAM,YAAY;AACjE,YAAM,SACLA,MAAK,OAAO,SAAS,oBAClBA,MAAK,OAAO,SACZA,MAAK;AAET,YAAM,mBAAmB,SAAS,cAAc,MAAM;AACtD,YAAM,cACL,OAAO,SAAS,sBACf,OAAO,KAAK,SAAS,YAAY,MAChC,qBAAqB,MACrB,oBAAoB,sCACrB,EACC,OAAO,SAAS,sBAChB,OAAO,aAAa,QACpB,OAAO,UAAUA,UAElB,GACE,OAAO,SAAS,oBAChB,OAAO,SAAS,oBACjB,OAAO,UAAU,SAASA,KAAI,MAE/B,EACC,OAAO,SAAS,sBAChB,OAAO,YACP,OAAO,aAAaA,UAErB,EAAE,OAAO,SAAS;AAEpB,aAAO,eAAe,CAAC,SAAS,gBAAgB,YAAYA,KAAI;AAAA,IACjE;AAQA,aAAS,qBAAqBC,OAAM,oBAAoB;AACvD,aAAO,qBAAqB,IAAIA,KAAI,MAAMA;AAAA,IAC3C;AAOA,IAAAH,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,SAAS;AAAA,QAET,UAAU;AAAA,UACT,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAO3B,iBAAS,OAAOE,OAAM;AACrB,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW;AAAA,YACX,IAAI,OAAO;AACV,kBACCA,MAAK,UAAU,WAAW,KAC1BA,MAAK,UAAU;AAAA,gBACd,SAAO,IAAI,SAAS;AAAA,cACrB,KACA,WAAW,kBAAkBA,KAAI,EAAE,SAAS,GAC3C;AACD,uBAAO;AAAA,cACR;AAEA,oBAAMD,QAAOC,MAAK,UAAU,CAAC,GAC5B,WAAWA,MAAK,UAAU,CAAC,GAC3B,WAAW,WAAW,QAAQD,KAAI,GAClC,eAAe,WAAW,QAAQ,QAAQ,GAC1C,yBAAyB,mBAAmBA,KAAI,GAChD,6BACC,uBAAuB,QAAQ,GAChC,wBACC;AAAA,gBACCC;AAAA,gBACA;AAAA,cACD;AAEF,kBAAI,SAAS,IACZ,SAAS;AAEV,kBAAI,CAAC,uBAAuB;AAC3B,oBAAI,CAAC,wBAAwB;AAC5B,wBAAM,wBACJ,WAAW,cAAcD,KAAI,GAC9B,cAAc,WAAW,eAAeC,KAAI;AAE7C,sBACC,eACA,YAAY,MAAM,CAAC,MAAMA,MAAK,MAAM,CAAC,KACrC,CAAC,SAAS;AAAA,oBACT;AAAA,oBACA;AAAA,kBACD,GACC;AACD,6BAAS;AAAA,kBACV;AAAA,gBACD;AACA,oBAAI,CAAC,4BAA4B;AAChC,wBAAM,uBACJ,WAAW,aAAa,QAAQ,GACjC,aAAa,WAAW,cAAcA,KAAI;AAE3C,sBACC,cACAA,MAAK,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,KACpC,CAAC,SAAS;AAAA,oBACT;AAAA,oBACA;AAAA,kBACD,GACC;AACD,6BAAS;AAAA,kBACV;AAAA,gBACD;AAAA,cACD;AAEA,oBAAM,kBAAkB;AAAA,gBACtB;AAAA,gBACA;AAAA,cACD,GACA,sBAAsB;AAAA,gBACrB;AAAA,gBACA;AAAA,cACD,GACA,cAAc;AAAA,gBACb,GAAG,eAAe,KAAK,mBAAmB;AAAA,gBAC1C;AAAA,cACD;AAED,qBAAO,MAAM;AAAA,gBACZA;AAAA,gBACA,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM;AAAA,cACjC;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAEA,eAAO;AAAA,UACN,QAAQA,OAAM;AACb,kBAAM,QAAQ,WAAW,SAASA,KAAI;AACtC,kBAAM,UAAU,IAAI,iBAAiB,KAAK;AAC1C,kBAAM,WAAW;AAAA,cAChB,MAAM;AAAA,gBACL,KAAK,EAAE,CAAC,IAAI,GAAG,KAAK;AAAA,cACrB;AAAA,YACD;AAEA,uBAAW,EAAE,MAAM,QAAQ,KAAK,QAAQ;AAAA,cACvC;AAAA,YACD,GAAG;AACF,qBAAO,OAAO;AAAA,YACf;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1OA;AAAA,gEAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AACJ,QAAM,UAAU;AAYhB,QAAM,SAAS,IAAI,QAAQ,aAAa;AAUxC,aAAS,kBAAkB,YAAY,SAAS,SAAS,WAAW;AACnE,cAAQ,UAAU,MAAM;AAAA,QACvB,KAAK;AACJ,cAAI,OAAO,UAAU,UAAU,YAAY,QAAQ,SAAS,IAAI,GAAG;AAClE,mBAAO;AAAA,UACR;AACA;AAAA,QACD,KAAK;AACJ,cACC,UAAU,YAAY,UACtB,QAAQ,MAAM,GAAG,EAAE,MAAM,SACxB;AACD,mBAAO;AAAA,UACR;AACA;AAAA,QACD;AACC,iBAAO;AAAA,MACT;AAEA,YAAM,QAAQ,UAAU,MAAM,CAAC,IAAI,aAAa;AAEhD,aAAO;AAAA,QACN;AAAA,UACC,IAAI,OAAO;AACV,kBAAM,gBAAgB,QAAQ,MAAM,WAAW,KAAK,CAAC;AACrD,kBAAM,mBAAmB,cAAc;AAAA,cACtC,CAACC,WAAU,SACV,KAAK,IAAIA,WAAU,OAAO,KAAK,MAAM,OAAO,MAAM,CAAC,CAAC;AAAA,cACrD;AAAA,YACD;AAEA,mBAAO,MAAM;AAAA,cACZ,CAAC,OAAO,KAAK;AAAA,cACb,SAAS,mBAAmB,CAAC;AAAA,YAC9B;AAAA,UACD;AAAA,UACA,WAAW;AAAA,QACZ;AAAA,QACA;AAAA,UACC,IAAI,OAAO;AACV,mBAAO,MAAM,sBAAsB,CAAC,OAAO,KAAK,GAAG,IAAI;AAAA,UACxD;AAAA,UACA,WAAW;AAAA,QACZ;AAAA,MACD;AAAA,IACD;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,gBAAgB;AAAA,QAEhB,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,cAAc;AAAA,UACd,eAAe;AAAA,UACf,UACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAU3B,iBAAS,WAAW,SAASE,OAAM,WAAW,OAAO;AACpD,cAAI;AAEJ,cAAI;AACH,kBAAM,OAAO,aAAa,SAAS,GAAG,QAAQ,QAAQ;AAAA,cACrD,SAAS,QAAQ,SAAS,MAAM,SAAS,GAAG,CAAC;AAAA,cAC7C,aAAa,QAAQ,SAAS,MAAM,SAAS,GAAG,CAAC;AAAA,YAClD,CAAC;AAAA,UACF,QAAQ;AAEP;AAAA,UACD;AAEA,kBAAQ,eAAe,KAAK;AAAA,YAC3B,sBAAsB,OAAO;AAC5B,kBAAI,CAAC,MAAM,MAAM;AAChB,sBAAM,UAAU,WAAW,QAAQ,SAAS;AAC5C,sBAAM,UAAU;AAAA,kBACf,MAAM;AAAA,kBACN;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAEA,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM;AAAA,oBACL,OAAO,MAAM;AAAA,kBACd;AAAA,kBACA;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAEA,eAAO;AAAA,UACN,QAAQA,OAAM;AACb,gBAAIA,MAAK,OAAO;AACf;AAAA,gBACCA,MAAK,MAAM;AAAA,gBACXA;AAAA,gBACAA;AAAA,gBACAA,MAAK,MAAM;AAAA,cACZ;AAAA,YACD;AAAA,UACD;AAAA,UACA,QAAQA,OAAM;AACb,kBAAM,QAAQ,WAAW,SAASA,KAAI;AACtC,kBAAM,UAAU,IAAI,iBAAiB,KAAK;AAC1C,kBAAM,WAAW;AAAA,cAChB,QAAQ;AAAA,gBACP,CAAC,IAAI,GAAG;AAAA,gBACR,CAAC,SAAS,GAAG;AAAA,cACd;AAAA,YACD;AAEA,uBAAW,EAAE,MAAM,QAAQ,KAAK,QAAQ;AAAA,cACvC;AAAA,YACD,GAAG;AACF,oBAAM,QAAQ,oBAAoB,QAAQ,UAAU,CAAC,CAAC;AACtD,oBAAM,QAAQ,oBAAoB,QAAQ,UAAU,CAAC,CAAC;AAEtD,kBAAI,OAAO;AACV,2BAAW,OAAO,SAAS,QAAQ,UAAU,CAAC,GAAG,KAAK;AAAA,cACvD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpMA;AAAA,6DAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAMjB,QAAM,WAAW,oBAAI,IAAI;AAAA,MACxB,CAAC,GAAG,EAAE,QAAQ,UAAU,eAAe,KAAK,CAAC;AAAA,MAC7C,CAAC,GAAG,EAAE,QAAQ,SAAS,eAAe,KAAK,CAAC;AAAA,MAC5C,CAAC,IAAI,EAAE,QAAQ,eAAe,eAAe,KAAK,CAAC;AAAA,IACpD,CAAC;AASD,aAAS,WAAW,YAAY;AAC/B,aACC,SAAS,aAAa,YAAY,UAAU,KAC5C,SAAS,uBAAuB,YAAY,UAAU,UAAU;AAAA,IAElE;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,YACC;AAAA,QACF;AAAA,QAEA,SAAS;AAAA,MACV;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAM3B,eAAO;AAAA,UACN,qCAAqCC,OAAM;AAC1C,kBAAM,CAAC,SAAS,SAAS,IAAIA,MAAK,WACjC,MAAM,SAAS,qBAAqB,OAAO,GAC3C,QAAQ,UAAU;AAEnB,gBACC,QAAQ,QACR,SAAS,gBAAgB,OAAO,KAChC,UAAU,SAAS,aACnB,OAAO,UAAU,YACjB,SAAS,IAAI,KAAK,KAClB,WAAWA,MAAK,MAAM,GACrB;AACD,oBAAM,EAAE,QAAQ,cAAc,IAAI,SAAS,IAAI,KAAK;AAEpD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL;AAAA,kBACA,cAAc,WAAW,QAAQA,MAAK,MAAM;AAAA,gBAC7C;AAAA,gBACA,IAAI,OAAO;AACV,sBAAI,WAAW,kBAAkBA,KAAI,EAAE,QAAQ;AAC9C,2BAAO;AAAA,kBACR;AAEA,wBAAM,cAAc,GAAG,aAAa,GAAG,GAAG;AAE1C,sBAAI,CAAC,gBAAgB,SAAS,KAAK,KAAK,GAAG;AAe1C,2BAAO;AAAA,kBACR;AAEA,wBAAM,cAAc,WAAW,eAAeA,KAAI,GACjD,aAAa,WAAW,cAAcA,KAAI;AAC3C,sBAAI,SAAS,IACZ,SAAS;AAEV,sBACC,eACA,YAAY,MAAM,CAAC,MAAMA,MAAK,MAAM,CAAC,KACrC,CAAC,SAAS;AAAA,oBACT;AAAA,oBACA;AAAA,kBACD,GACC;AACD,6BAAS;AAAA,kBACV;AAEA,sBACC,cACAA,MAAK,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,KACpC,CAAC,SAAS;AAAA,oBACT;AAAA,oBACA;AAAA,kBACD,GACC;AACD,6BAAS;AAAA,kBACV;AAEA,yBAAO,MAAM;AAAA,oBACZA;AAAA,oBACA,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM;AAAA,kBACjC;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5JA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAWjB,aAAS,kBAAkBC,OAAM;AAKhC,UACCA,MAAK,OAAO,SAAS,sBACrBA,MAAK,OAAO,WAAW,WAAW,GACjC;AACD,eAAO;AAAA,MACR;AAEA,YAAM,oBACLA,MAAK,OAAO,SAAS,sBACrB,SAAS,sBAAsBA,MAAK,MAAM,MAAM,cAC7CA,MAAK,OAAO,SACZA,MAAK;AAET,UACC,kBAAkB,SAAS,gBAC3B,kBAAkB,SAAS,UAC1B;AACD,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,IACR;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QACA,QAAQ,CAAC;AAAA,QACT,UAAU;AAAA,UACT,WACC;AAAA,QACF;AAAA,QACA,SAAS;AAAA,MACV;AAAA,MACA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,eAAeC,OAAM;AACpB,gBACC,EACCA,MAAK,OAAO,SAAS,sBACrBA,MAAK,OAAO,OAAO,SAAS,qBAE5B;AACD;AAAA,YACD;AAEA,kBAAM,qBAAqB,SAAS;AAAA,cACnCA,MAAK;AAAA,YACN;AACA,kBAAM,qBAAqB,SAAS;AAAA,cACnCA,MAAK,OAAO;AAAA,YACb;AACA,kBAAM,WAAW,kBAAkBA,MAAK,OAAO,MAAM;AAGrD,kBAAM,QAAQ,WAAW,SAASA,KAAI;AACtC,kBAAM,WAAW,SAAS,kBAAkB,OAAO,QAAQ;AAE3D,gBACC,uBAAuB,UACvB,uBAAuB,oBACvB,YACA,YACA,SAAS,MAAM,SAAS,UACvB;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,sBACC,WAAW,kBAAkBA,MAAK,MAAM,EACtC,SAAS,GACV;AACD,2BAAO;AAAA,kBACR;AAEA,wBAAM,sBACL,WAAW,eAAeA,MAAK,QAAQ;AAAA,oBACtC,iBAAiB;AAAA,kBAClB,CAAC;AAGF,sBACC,uBACA,oBAAoB,MAAM,CAAC,MAC1BA,MAAK,OAAO,MAAM,CAAC,KACpB,CAAC,SAAS;AAAA,oBACT;AAAA,oBACA;AAAA,kBACD,GACC;AACD,2BAAO,MAAM;AAAA,sBACZA,MAAK;AAAA,sBACL;AAAA,oBACD;AAAA,kBACD;AAEA,yBAAO,MAAM;AAAA,oBACZA,MAAK;AAAA,oBACL;AAAA,kBACD;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACnJA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,EAAE,MAAM,iBAAiB,IAAI;AACnC,QAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AAEJ,QAAM,YAAY;AAOlB,aAAS,eAAeC,OAAM;AAC7B,aAAOA,MAAK,UAAU,KAAK,SAAO,IAAI,SAAS,eAAe;AAAA,IAC/D;AAOA,aAAS,mBAAmBA,OAAM;AACjC,aACCA,MAAK,SAAS,eAAeA,MAAK,SAAS,SAASA,MAAK,SAAS;AAAA,IAEpE;AAOA,aAAS,aAAaA,OAAM;AAC3B,aAAOA,MAAK,WAAW,KAAK,kBAAkB;AAAA,IAC/C;AAOA,aAAS,0BAA0BA,OAAM;AACxC,aAAOA,MAAK,UACV,OAAO,SAAO,IAAI,SAAS,kBAAkB,EAC7C,KAAK,YAAY;AAAA,IACpB;AASA,aAAS,YAAYA,OAAM,YAAY;AACtC,YAAM,SAASA,MAAK;AAEpB,cAAQ,OAAO,MAAM;AAAA,QACpB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QACR,KAAK;AACJ,iBAAO,OAAO,SAASA,SAAQ,CAAC,gBAAgB,YAAYA,KAAI;AAAA,QACjE;AACC,iBAAO,CAAC,gBAAgB,YAAYA,KAAI;AAAA,MAC1C;AAAA,IACD;AAQA,aAAS,eAAeA,OAAM,YAAY;AACzC,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO,CAAC,gBAAgB,YAAYA,KAAI;AAAA,QACzC;AACC,iBAAO;AAAA,MACT;AAAA,IACD;AAUA,aAAS,eAAeA,OAAM,uBAAuB,YAAY;AAChE,YAAM,SAAS;AAAA,QACd,WAAW,cAAcA,KAAI;AAAA,QAC7B,WAAW,aAAaA,KAAI;AAAA,MAC7B;AACA,UAAI,WAAW,WAAW,eAAeA,KAAI;AAC7C,UAAI,YAAY,WAAW,cAAcA,KAAI;AAG7C,aACC,YACA,aACA,SAAS,MAAM,CAAC,IAAI,sBAAsB,MAAM,CAAC,KACjD,oBAAoB,QAAQ,KAC5B,oBAAoB,SAAS,GAC5B;AACD,eAAO,KAAK,UAAU,SAAS;AAC/B,mBAAW,WAAW,eAAe,QAAQ;AAC7C,oBAAY,WAAW,cAAc,SAAS;AAAA,MAC/C;AAEA,aAAO,OAAO,KAAK,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAAA,IACrD;AAQA,aAAS,mBAAmB,OAAO,YAAY;AAC9C,YAAMC,QAAO,WAAW;AACxB,UAAI,QAAQ,MAAM,MAAM,CAAC;AAGzB;AACC,cAAM,YAAY,WAAW,eAAe,OAAO;AAAA,UAClD,iBAAiB;AAAA,QAClB,CAAC;AAED,YAAI,aAAa,UAAU,SAAS,QAAQ;AAC3C,iBAAO;AAAA,QACR;AAAA,MACD;AAGA,aAAO,UAAU,KAAKA,MAAK,QAAQ,CAAC,KAAK,EAAE,GAAG;AAC7C,iBAAS;AAAA,MACV;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,iBAAiB,OAAO,YAAY;AAC5C,YAAMA,QAAO,WAAW;AACxB,UAAI,MAAM,MAAM,MAAM,CAAC;AAGvB,aAAO,UAAU,KAAKA,MAAK,GAAG,KAAK,EAAE,GAAG;AACvC,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,YAAYD,OAAM,YAAY;AACtC,aAAO,WAAW,OAAO;AACxB,cAAM,YAAY,WAAW;AAAA,UAC5BA,MAAK;AAAA,UACL;AAAA,QACD;AACA,cAAM,aAAa,WAAW,aAAaA,KAAI;AAG/C,cAAM,MAAM,YAAY,CAACA,MAAK,MAAM,CAAC,GAAG,UAAU,MAAM,CAAC,CAAC,CAAC;AAG3D,YAAI,YAAYA,OAAM,UAAU,GAAG;AAClC,gBAAM,MAAM,YAAY,WAAW,IAAI;AACvC,gBAAM,MAAM,YAAY,YAAY,IAAI;AAAA,QACzC,OAAO;AACN,gBAAM,MAAM,YAAY,WAAW,GAAG;AACtC,gBAAM,MAAM,YAAY,YAAY,GAAG;AAAA,QACxC;AAGA,mBAAW,WAAWA,MAAK,WAAW;AACrC,gBAAM,cAAc,eAAe,SAAS,WAAW,UAAU;AACjE,gBAAM,OAAO,YAAY,MAAM;AAC/B,gBAAM,QAAQ,YAAY,IAAI;AAE9B,cAAI,QAAQ,SAAS,oBAAoB;AACxC,kBAAM,qBAAqB,WAAW,aAAa,SAAS,CAAC;AAC7D,kBAAM,qBAAqB,WAAW,cAAc,KAAK;AAMzD,uBAAW,cAAc,aAAa;AACrC,oBAAM,MAAM,OAAO,UAAU;AAAA,YAC9B;AACA,kBAAM,YAAY;AAAA,cACjB,KAAK,MAAM,CAAC;AAAA,cACZ,iBAAiB,MAAM,UAAU;AAAA,YAClC;AACA,kBAAM,aAAa;AAAA,cAClB,KAAK;AAAA,gBACJ,mBAAmB,OAAO,UAAU;AAAA,gBACpC,UAAU,CAAC;AAAA,cACZ;AAAA;AAAA,cACA,MAAM,MAAM,CAAC;AAAA,YACd;AAEA,kBAAM,MAAM,YAAY,SAAS;AACjC,kBAAM,MAAM,YAAY,UAAU;AAGlC,iBACE,QAAQ,WAAW,WAAW,KAC9B,aAAa,kBAAkB,MAChC,aAAa,kBAAkB,GAC9B;AACD,oBAAM,MAAM,OAAO,kBAAkB;AAAA,YACtC;AAAA,UACD,OAAO;AAEN,gBAAI,eAAe,SAAS,UAAU,GAAG;AACxC,oBAAM,MAAM,iBAAiB,MAAM,MAAM;AACzC,oBAAM,MAAM,gBAAgB,OAAO,GAAG;AAAA,YACvC,OAAO;AACN,oBAAM,MAAM,iBAAiB,MAAM,KAAK;AAAA,YACzC;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAGA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,SAAS;AAAA,QAET,UAAU;AAAA,UACT,kBACC;AAAA,UACD,mBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,QAAQC,OAAM;AACb,kBAAM,QAAQ,WAAW,SAASA,KAAI;AACtC,kBAAM,UAAU,IAAI,iBAAiB,KAAK;AAC1C,kBAAM,WAAW;AAAA,cAChB,QAAQ;AAAA,gBACP,QAAQ,EAAE,CAAC,IAAI,GAAG,KAAK;AAAA,cACxB;AAAA,YACD;AAGA,uBAAW,EAAE,MAAM,QAAQ,KAAK,QAAQ;AAAA,cACvC;AAAA,YACD,GAAG;AACF,kBACC,QAAQ,UAAU,UAAU,KAC5B,QAAQ,UAAU,CAAC,EAAE,SAAS,sBAC9B,CAAC,eAAe,OAAO,KACvB,EACC,QAAQ,UAAU,SAAS,KAC3B,0BAA0B,OAAO,IAEjC;AACD,sBAAM,YACL,QAAQ,UAAU,WAAW,IAC1B,sBACA;AACJ,sBAAM,MAAM,YAAY,SAAS,UAAU;AAE3C,wBAAQ,OAAO,EAAE,MAAM,SAAS,WAAW,IAAI,CAAC;AAAA,cACjD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC9TA;AAAA,kEAAAE,UAAAC,SAAA;AAAA;AAMA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,kBAAkB;AAAA,UACnB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,kBAAkB,EAAE,MAAM,UAAU;AAAA,YACrC;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,eACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,iBAAiB,CAAC,IAAI,QAAQ;AACvC,cAAM,aAAa,QAAQ;AAW3B,iBAAS,gBAAgB,gBAAgB;AACxC,cAAI,CAAC,eAAe,UAAU,UAAU,kBAAkB;AACzD;AAAA,UACD;AACA,cACC,CAAC,eAAe,UAAU,UAC1B,CAAC,SAAS,aAAa,eAAe,UAAU,CAAC,CAAC,KACjD,eAAe,UAAU,CAAC,EAAE,SAAS,gBACrC,eAAe,UAAU,CAAC,EAAE,SAAS,aACrC;AACD,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,YACZ,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,oBAAoBC,OAAM;AAClC,iBAAO,SAAS;AAAA,YACfA,MAAK;AAAA,YACL;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAMA,eAAO;AAAA;AAAA,UAEN,eAAeA,OAAM;AACpB,gBAAI,oBAAoBA,KAAI,GAAG;AAC9B,8BAAgBA,KAAI;AAAA,YACrB;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,qBAAqBA,OAAM;AAC1B,gBACCA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS,aACrBA,MAAK,UAAU,UACf,SAAS,WAAWA,MAAK,UAAU,CAAC,CAAC,KACrCA,MAAK,UAAU,CAAC,EAAE,OAAO,SAAS,KAClCA,MAAK,UAAU,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,cACpC;AACD,yBACE,qBAAqBA,MAAK,UAAU,CAAC,CAAC,EAWtC;AAAA,gBACA,cACC,SAAS,SACTA,MAAK,UAAU,CAAC,EAAE,OAAO,CAAC,EAAE;AAAA,cAC9B,EAGC,WACA,OAAO,SAAO,IAAI,OAAO,CAAC,EAG1B;AAAA,gBACA,SACC,IAAI,WAAW,OAAO,SACrB,oBACD,IAAI,eAAe,IAAI,WAAW,OAAO;AAAA,cAC3C,EAGC,QAAQ,SAAO,gBAAgB,IAAI,WAAW,MAAM,CAAC;AAAA,YACxD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzJA;AAAA,oDAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,YAAY;AAAA,UACX,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY,CAAC;AAAA,QACd;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,YAAY;AAAA,gBACX,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,oBACL;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD;AAAA,gBACA,aAAa;AAAA,cACd;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,eACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,gBAAgB;AAAA,UACrB,OAAO;AAAA,UACP,MAAM;AAAA,UACN,gBAAgB;AAAA,UAChB,0BAA0B;AAAA,UAC1B,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,qBAAqB;AAAA,UACrB,mBAAmB;AAAA,QACpB;AAEA,cAAM,qBAAqB;AAAA,UAC1B,OAAO;AAAA,UACP,MAAM;AAAA,UACN,gBAAgB;AAAA,UAChB,0BAA0B;AAAA,UAC1B,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,qBAAqB;AAAA,UACrB,mBAAmB;AAAA,QACpB;AAEA,cAAM,cAAc,QAAQ,QAAQ,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC;AAS7D,iBAAS,OAAOC,OAAM,UAAU,YAAY;AAC3C,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,WAAW;AAAA,YACX,MAAM;AAAA,cACL;AAAA,cACA;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAEA,eAAO;AAAA,UACN,eAAeA,OAAM;AACpB,kBAAM,cAAcA,MAAK,OAAO,YAAY,CAAC,GAAG;AAChD,kBAAM,iBACJA,MAAK,OAAO,UAAU,CAAC,GAAG,SAAS;AACrC,kBAAM,uBAAuB,OAAO;AAAA,cACnC;AAAA,cACA;AAAA,YACD;AACA,kBAAM,0BAA0B,WAAW,SAAS,UAAU;AAE9D,gBACC,wBACA,CAAC,iBACD,CAAC,yBACA;AACD;AAAA,gBACCA;AAAA,gBACA,cAAc,UAAU;AAAA,gBACxB,mBAAmB,UAAU;AAAA,cAC9B;AAAA,YACD;AAAA,UACD;AAAA,UACA,gBAAgBA,OAAM;AACrB,kBAAM,mBAAmBA,MAAK,aAAa;AAC3C,kBAAM,oBAAoBA,MAAK,SAAS,SAAS;AACjD,kBAAM,0BAA0B,WAAW,SAAS,QAAQ;AAE5D,gBACC,oBACA,CAAC,qBACD,CAAC,yBACA;AACD;AAAA,gBACCA;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrJA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AACjB,QAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AACJ,QAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AACJ,QAAM,EAAE,oBAAoB,IAAI;AAChC,QAAM,EAAE,4BAA4B,IAAI;AAWxC,aAAS,gBAAgBC,OAAM;AAC9B,aAAOA,MAAK,SAAS,aAAa,OAAOA,MAAK,UAAU;AAAA,IACzD;AAOA,aAAS,eAAeA,OAAM;AAC7B,aAAOA,MAAK,SAAS,aAAa,OAAO,OAAOA,OAAM,OAAO;AAAA,IAC9D;AAEA,QAAM,uBAAuB,oBAAI,IAAI;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,IACD,CAAC;AAOD,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,2BAA2B;AAAA,UAC5B;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,gBAAgB;AAAA,QAEhB,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,2BAA2B;AAAA,gBAC1B,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,kBACC;AAAA,UACD,oBACC;AAAA,UACD,4BACC;AAAA,UACD,oCACC;AAAA,UACD,2BACC;AAAA,UACD,oCACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,0BAA0B,CAAC,IAAI,QAAQ;AAChD,cAAM,aAAa,QAAQ;AAQ3B,iBAAS,uCAAuCC,OAAM;AACrD,iBACCA,MAAK,SAAS,8BACd,SAAS,uBAAuBA,MAAK,KAAK,UAAU,KAAK,KACzD,WAAW;AAAA,YACV,SAAS,oBAAoBA,MAAK,GAAG,EAAE;AAAA,UACxC,KACA,SAAS,wBAAwBA,MAAK,KAAK;AAAA,QAE7C;AAOA,iBAAS,eAAeA,OAAM;AAC7B,cAAI,gBAAgBA,KAAI,GAAG;AAC1B,mBAAOA,MAAK;AAAA,UACb;AAEA,cAAI,SAAS,wBAAwBA,KAAI,GAAG;AAC3C,mBAAOA,MAAK,OAAO,CAAC,EAAE,MAAM;AAAA,UAC7B;AAEA,cAAI,uCAAuCA,KAAI,GAAG;AACjD,mBAAOA,MAAK,MAAM,OAAO,CAAC,EAAE,MAAM;AAAA,UACnC;AAEA,iBAAO;AAAA,QACR;AAOA,iBAAS,eAAeA,OAAM;AAC7B,iBACC,gBAAgBA,KAAI,KACpB,SAAS,wBAAwBA,KAAI,KACrC,uCAAuCA,KAAI;AAAA,QAE7C;AAOA,iBAAS,6BAA6BA,OAAM;AAC3C,gBAAM,OAAOA,MAAK;AAElB,eACE,KAAK,WAAW,KAAK,KAAK,WAAW,MACtC,KAAK,MAAM,cAAc,GACxB;AACD,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AAOA,iBAAS,mCAAmCA,OAAM;AACjD,gBAAM,OAAOA,MAAK;AAElB,cAAI,KAAK,WAAW,KAAK,eAAe,KAAK,CAAC,CAAC,GAAG;AACjD,mBAAO;AAAA,UACR;AAEA,cACC,KAAK,WAAW,KAChB,eAAe,KAAK,CAAC,CAAC,KACtB,eAAe,KAAK,CAAC,CAAC,GACrB;AACD,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AAOA,iBAAS,sBAAsB,aAAa;AAC3C,cAAI,eAAe,GAAG;AACrB,mBAAO;AAAA,UACR;AACA,iBAAO,KAAK,IAAI,aAAa,2BAA2B;AAAA,QACzD;AAEA,cAAM,qBAAqB;AAAA,UAC1B,QAAQ,gBAAgB;AAAA,QACzB;AAOA,iBAAS,eAAe,WAAW;AAClC,kBAAQ,WAAW;AAAA,YAClB,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO;AAAA,YAER,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO;AAAA,YAER,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO;AAAA,YAER,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO;AAAA,YAER,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO;AAAA,YAER,KAAK;AACJ,qBAAO;AAAA,YAER;AACC,qBAAO;AAAA,UACT;AAAA,QACD;AAQA,iBAAS,2BAA2B,SAAS,OAAO;AACnD,gBAAM,YAAY,IAAI,gBAAgB;AAAA,YACrC,aAAa;AAAA,UACd,CAAC;AAED,cAAI;AACH,sBAAU,gBAAgB,SAAS,GAAG,QAAQ,QAAQ;AAAA,cACrD,SAAS,QAAQ,MAAM,SAAS,GAAG,IAAI;AAAA,cACvC,aAAa,QAAQ,MAAM,SAAS,GAAG,IAAI;AAAA,YAC5C,CAAC;AACD,gBAAI,OAAO;AACV,wBAAU,cAAc,KAAK;AAAA,YAC9B;AACA,mBAAO;AAAA,UACR,QAAQ;AACP,mBAAO;AAAA,UACR;AAAA,QACD;AAQA,iBAAS,cAAc,QAAQ,QAAQ;AACtC,iBAAO,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;AAAA,QAClE;AAQA,iBAAS,gBAAgB,QAAQ,QAAQ;AACxC,gBAAM,WAAW,oBAAI,IAAI,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/C,iBAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,EAAE;AAAA,QAC7B;AASA,iBAAS,SAASA,OAAM,SAAS,OAAO;AACvC,gBAAM,cAAc,WAAW,eAAeA,KAAI;AAElD,iBACC,WAAW,kBAAkBA,KAAI,EAAE,WAAW,MAC7C,CAAC,eAAe,qBAAqB,IAAI,YAAY,KAAK,MAC3D,2BAA2B,SAAS,KAAK;AAAA,QAE3C;AAQA,iBAAS,cAAcA,OAAM,gBAAgB;AAC5C,gBAAM,cAAc,WAAW,eAAeA,KAAI;AAClD,gBAAM,aAAa,WAAW,cAAcA,KAAI;AAEhD,kBACE,eACD,CAAC,oBAAoB,aAAa,cAAc,KAChD,YAAY,MAAM,CAAC,MAAMA,MAAK,MAAM,CAAC,IAClC,MACA,MACH,kBACC,cACD,CAAC,oBAAoB,gBAAgB,UAAU,KAC/CA,MAAK,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,IACjC,MACA;AAAA,QAEL;AAEA,eAAO;AAAA,UACN,QAAQA,OAAM;AACb,kBAAM,QAAQ,WAAW,SAASA,KAAI;AACtC,kBAAM,UAAU,IAAI,iBAAiB,KAAK;AAC1C,kBAAM,WAAW;AAAA,cAChB,QAAQ;AAAA,gBACP,CAAC,IAAI,GAAG;AAAA,gBACR,CAAC,SAAS,GAAG;AAAA,cACd;AAAA,YACD;AAEA,uBAAW,EAAE,MAAM,QAAQ,KAAK,QAAQ;AAAA,cACvC;AAAA,YACD,GAAG;AACF,kBACC,6BACA,mCAAmC,OAAO,GACzC;AACD,sBAAM,YAAY,QAAQ,UAAU,CAAC;AAErC,oBAAI,QAAQ,UAAU,WAAW,GAAG;AACnC,wBAAM,WAAW,CAAC;AAElB,wBAAM,WACL,eAAe,QAAQ,UAAU,CAAC,CAAC,KAAK;AAEzC,sBACC;AAAA,oBACC;AAAA,oBACA,UAAU,MAAM;AAAA,oBAChB;AAAA,kBACD,GACC;AACD,6BAAS,KAAK;AAAA,sBACb,WAAW;AAAA,sBACX,SAAS,UAAU,MAAM;AAAA,sBACzB,OAAO;AAAA,oBACR,CAAC;AAAA,kBACF;AAEA,wBAAM,eAAe,UAAU,MAAM,SAAS;AAC9C,wBAAM,cAAc;AAAA,oBACnB;AAAA,oBACA;AAAA,kBACD;AAEA,sBACC,CAAC,cAAc,aAAa,QAAQ,KACpC;AAAA,oBACC;AAAA,oBACA,UAAU,MAAM;AAAA,oBAChB;AAAA,kBACD,GACC;AACD,6BAAS,KAAK;AAAA,sBACb,WACC;AAAA,sBACD,SAAS,UAAU,MAAM;AAAA,sBACzB,OAAO;AAAA,oBACR,CAAC;AAAA,kBACF;AAEA,0BAAQ,OAAO;AAAA,oBACd,MAAM;AAAA,oBACN,WAAW;AAAA,oBACX,SAAS,SAAS;AAAA,sBACjB,CAAC,EAAE,OAAO,SAAS,UAAU,OAAO;AAAA,wBACnC;AAAA,wBACA,MAAM;AAAA,0BACL;AAAA,wBACD;AAAA,wBACA,IAAI,OAAO;AACV,iCAAO,MAAM;AAAA,4BACZ;AAAA,4BACA;AAAA,8BACC;AAAA,8BACA,IAAI,OAAO,IAAI,KAAK;AAAA,4BACrB;AAAA,0BACD;AAAA,wBACD;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD,CAAC;AAAA,gBACF,OAAO;AACN,wBAAM,UAAU,CAAC;AAEjB,sBACC;AAAA,oBACC;AAAA,oBACA,UAAU,MAAM;AAAA,oBAChB,UAAU,MAAM;AAAA,kBACjB,GACC;AACD,4BAAQ,KAAK,WAAW,QAAQ,SAAS,CAAC;AAAA,kBAC3C;AAEA,0BAAQ,OAAO;AAAA,oBACd,MAAM;AAAA,oBACN,WAAW;AAAA,oBACX,SAAS,QAAQ,IAAI,aAAW;AAAA,sBAC/B,WAAW;AAAA,sBACX,IAAI,OAAO;AACV,+BAAO,MAAM;AAAA,0BACZ;AAAA,0BACA,cAAc,SAAS,MAAM;AAAA,wBAC9B;AAAA,sBACD;AAAA,oBACD,EAAE;AAAA,kBACH,CAAC;AAAA,gBACF;AAAA,cACD,WAAW,6BAA6B,OAAO,GAAG;AACjD,oBAAI,eAAe,eAAe,QAAQ,UAAU,CAAC,CAAC;AACtD,oBAAI,QAAQ;AACZ,oBAAI;AAEJ,oBAAI,QAAQ,UAAU,CAAC,GAAG;AACzB,0BAAQ,eAAe,QAAQ,UAAU,CAAC,CAAC;AAAA,gBAC5C;AAEA,oBAAI,CAAC,SAAS,SAAS,cAAc,KAAK,GAAG;AAC5C,0BAAQ;AAAA,gBACT;AAEA,oBACC,CAAC,uDAAuD;AAAA,kBACvD;AAAA,gBACD,GACC;AACD,0BAAQ;AAAA,gBACT;AAEA,oBAAI,gBAAgB,CAAC,OAAO;AAC3B,sBAAI,eAAe;AAEnB,wBAAM,MAAM,IAAI,aAAa;AAAA,oBAC5B,aAAa;AAAA,kBACd,CAAC,EAAE;AAAA,oBACF;AAAA,oBACA;AAAA,oBACA,aAAa;AAAA,oBACb;AAAA,sBACC,SAAS,QACN,MAAM,SAAS,GAAG,IAClB;AAAA,sBACH,aAAa,QACV,MAAM,SAAS,GAAG,IAClB;AAAA,oBACJ;AAAA,kBACD;AAEA,iCAAe,KAAK;AAAA,oBACnB,iBAAiB,eAAe;AAC/B,4BAAM,UAAU;AAAA,wBACf,cAAc;AAAA,sBACf;AAEA,0BAAI,SAAS;AACZ,uCACC,aAAa;AAAA,0BACZ;AAAA,0BACA,cAAc,QACb;AAAA,wBACF,IACA,UACA,aAAa;AAAA,0BACZ,cAAc,MACb;AAAA,wBACF;AAED,4BAAI,cAAc,IAAI,WAAW,GAAG;AACnC,0CAAgB;AAAA,wBACjB;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD,CAAC;AAAA,gBACF;AAEA,sBAAM,iBAAiB,IAAI,gBAAgB,MAAM,IAAI,SAAS,EAAE;AAEhE,wBAAQ,OAAO;AAAA,kBACd,MAAM;AAAA,kBACN,WAAW;AAAA,kBACX,SAAS,QACN,CAAC,IACD;AAAA,oBACA;AAAA,sBACC,WAAW;AAAA,sBACX,IAAI,OAAO;AACV,+BAAO,MAAM;AAAA,0BACZ;AAAA,0BACA;AAAA,4BACC;AAAA,4BACA;AAAA,0BACD;AAAA,wBACD;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD;AAAA,gBACH,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5lBA;AAAA,wDAAAC,UAAAC,SAAA;AAAA;AAwBA,aAAS,uBAAuB,OAAO;AACtC,YAAM,YAAY,MAAM;AAExB,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,EAAE,GAAG;AAC1C,cAAM,WAAW,UAAU,CAAC;AAE5B,YAAI,SAAS,SAAS,aAAa;AAKlC,iBAAO,SAAS,YAAY,WAAW,IAAI,WAAW;AAAA,QACvD;AAAA,MACD;AAGA,aAAO;AAAA,IACR;AAYA,aAAS,wBAAwB,WAAW;AAC3C,YAAM,KAAK,UAAU;AACrB,YAAM,SAAS,GAAG;AAElB,aAAO,EACN,OAAO,SAAS,sBAChB,OAAO,WAAW,MAClB,CAAC,OAAO;AAAA,IAEV;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,kBAAkB;AAAA,QACnB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAO3B,iBAAS,OAAO,WAAW;AAC1B,kBAAQ,OAAO;AAAA,YACd,MAAM,UAAU;AAAA,YAChB,KAAK,UAAU,WAAW;AAAA,YAC1B,WAAW;AAAA,UACZ,CAAC;AAAA,QACF;AAOA,iBAAS,kBAAkBC,OAAM;AAChC,gBAAM,eAAe;AAAA,YACpB,WAAW,SAASA,KAAI;AAAA,UACzB;AAEA,cAAI,cAAc;AACjB,yBAAa,WACX,OAAO,uBAAuB,EAC9B,QAAQ,MAAM;AAAA,UACjB;AAAA,QACD;AAEA,eAAO;AAAA,UACN,4BAA4B;AAAA,UAC5B,2BAA2B;AAAA,QAC5B;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5HA;AAAA,mDAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAWjB,aAAS,uBAAuBC,OAAM;AACrC,aACC,SAAS,uBAAuBA,MAAK,QAAQ,MAAM,OAAO,KAC1DA,MAAK,UAAU,WAAW,KAC1BA,MAAK,UAAU,CAAC,EAAE,SAAS,qBAC3BA,MAAK,UAAU,CAAC,EAAE,SAAS;AAAA,IAE7B;AASA,aAAS,eAAe,cAAc,SAAS,SAAS;AACvD,UAAI,CAAC,cAAc;AAClB,eAAO,SAAS,kBAAkB,OAAO;AAAA,MAC1C;AACA,aAAO,SAAS,YAAY,cAAc,SAAS,OAAO;AAAA,IAC3D;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,SAAS;AAAA,QAET,UAAU;AAAA,UACT,cAAc;AAAA,QACf;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,eAAeC,OAAM;AACpB,gBAAI,CAAC,uBAAuBA,KAAI,GAAG;AAClC;AAAA,YACD;AAEA,kBAAM,UAAU,SAAS;AAAA,cACxB,SAAS,oBAAoBA,MAAK,MAAM,EAAE;AAAA,YAC3C;AACA,kBAAM,eACL,QAAQ,SAAS,qBAAqB,QAAQ,SAAS;AACxD,kBAAM,UAAUA,MAAK,UAAU,CAAC;AAEhC,gBAAI,eAAe,cAAc,SAAS,UAAU,GAAG;AACtD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1FA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAWjB,aAAS,gBAAgBC,OAAM;AAC9B,aAAOA,MAAK,SAAS,sBAAsBA,MAAK,aAAa;AAAA,IAC9D;AAOA,aAAS,6BAA6BA,OAAM;AAC3C,UAAI,cAAcA;AAElB,aAAO,gBAAgB,YAAY,MAAM,GAAG;AAC3C,sBAAc,YAAY;AAAA,MAC3B;AACA,aAAO;AAAA,IACR;AAQA,aAAS,wCAAwCA,OAAM;AACtD,UAAI,gBAAgBA,KAAI,GAAG;AAC1B,eACC,wCAAwCA,MAAK,IAAI,KACjD,wCAAwCA,MAAK,KAAK;AAAA,MAEpD;AAGA,UAAIA,MAAK,SAAS,aAAa,OAAOA,MAAK,UAAU,UAAU;AAC9D,eAAO,SAAS,wCAAwCA,MAAK,GAAG;AAAA,MACjE;AAEA,aAAO;AAAA,IACR;AAOA,aAAS,iBAAiBA,OAAM;AAC/B,UAAI,gBAAgBA,KAAI,GAAG;AAE1B,eAAO,iBAAiBA,MAAK,KAAK,KAAK,iBAAiBA,MAAK,IAAI;AAAA,MAClE;AACA,aAAO,SAAS,gBAAgBA,KAAI;AAAA,IACrC;AAOA,aAAS,oBAAoBA,OAAM;AAClC,UAAI,gBAAgBA,KAAI,GAAG;AAE1B,eACC,oBAAoBA,MAAK,KAAK,KAAK,oBAAoBA,MAAK,IAAI;AAAA,MAElE;AACA,aAAO,CAAC,SAAS,gBAAgBA,KAAI;AAAA,IACtC;AAOA,aAAS,wBAAwBA,OAAM;AACtC,UAAIA,MAAK,SAAS,oBAAoB;AACrC,eAAO,wBAAwBA,MAAK,IAAI;AAAA,MACzC;AACA,UAAIA,MAAK,SAAS,mBAAmB;AACpC,eACCA,MAAK,YAAY,UACjBA,MAAK,OAAO,UACZA,MAAK,OAAO,CAAC,EAAE,MAAM,CAAC,MAAMA,MAAK,OAAO,CAAC,EAAE,MAAM,CAAC;AAAA,MAEpD;AACA,aAAOA,MAAK,SAAS,aAAa,OAAOA,MAAK,UAAU;AAAA,IACzD;AAOA,aAAS,sBAAsBA,OAAM;AACpC,UAAIA,MAAK,SAAS,oBAAoB;AACrC,eAAO,wBAAwBA,MAAK,KAAK;AAAA,MAC1C;AACA,UAAIA,MAAK,SAAS,mBAAmB;AACpC,eACCA,MAAK,YAAY,UACjBA,MAAK,OAAO,UACZA,MAAK,OAAO,GAAG,EAAE,EAAE,MAAM,CAAC,MAAMA,MAAK,OAAO,GAAG,EAAE,EAAE,MAAM,CAAC;AAAA,MAE5D;AACA,aAAOA,MAAK,SAAS,aAAa,OAAOA,MAAK,UAAU;AAAA,IACzD;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,SAAS;AAAA,QAET,UAAU;AAAA,UACT,+BAA+B;AAAA,QAChC;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,YAAI,OAAO,uBAAO,OAAO,IAAI;AAQ7B,iBAAS,eAAe,OAAO,OAAO;AACrC,gBAAM,YAAY,CAAC,KAAK,EACtB,OAAO,WAAW,iBAAiB,OAAO,KAAK,CAAC,EAChD,OAAO,KAAK;AACd,gBAAM,aAAa,WAAW,QAAQ;AAEtC,iBAAO,UACL,MAAM,GAAG,EAAE,EACX;AAAA,YACA,CAAC,aAAa,OAAOE,WACpB,cACA,WAAW;AAAA,cACV,MAAM,MAAM,CAAC;AAAA,cACb,UAAUA,SAAQ,CAAC,EAAE,MAAM,CAAC;AAAA,YAC7B;AAAA,YACD;AAAA,UACD;AAAA,QACF;AASA,iBAAS,mBACR,aACA,gBACA,eACC;AACD,cACC,YAAY,SAAS,aACrB,OAAO,YAAY,UAAU,UAC5B;AAOD,mBAAO,KAAK,YAAY,IACtB,MAAM,GAAG,EAAE,EACX,QAAQ,iBAAiB,aAAW;AACpC,kBAAI,QAAQ,YAAY,IAAI,IAAI,GAAG;AAClC,uBAAO,KAAK,OAAO;AAAA,cACpB;AACA,qBAAO;AAAA,YAGR,CAAC,EACA;AAAA,cACA,IAAI,OAAO,OAAO,YAAY,IAAI,CAAC,CAAC,IAAI,IAAI;AAAA,cAC5C,YAAY,IAAI,CAAC;AAAA,YAClB,CAAC;AAAA,UACH;AAEA,cAAI,YAAY,SAAS,mBAAmB;AAC3C,mBAAO,WAAW,QAAQ,WAAW;AAAA,UACtC;AAEA,cAAI,gBAAgB,WAAW,KAAK,iBAAiB,WAAW,GAAG;AAClE,kBAAM,WAAW,WAAW;AAAA,cAC3B,YAAY;AAAA,cACZ,YAAY;AAAA,cACZ,WAAS,MAAM,UAAU;AAAA,YAC1B;AACA,kBAAM,iBAAiB;AAAA,cACtB,YAAY;AAAA,cACZ;AAAA,YACD;AACA,kBAAM,gBAAgB;AAAA,cACrB;AAAA,cACA,YAAY;AAAA,YACb;AACA,kBAAM,oBAAoB;AAAA,cACzB,YAAY;AAAA,YACb;AACA,kBAAM,uBAAuB;AAAA,cAC5B,YAAY;AAAA,YACb;AAEA,gBAAI,mBAAmB;AAGtB,qBACC;AAAA,gBACC,YAAY;AAAA,gBACZ;AAAA,gBACA,iBAAiB;AAAA,cAClB,EAAE,MAAM,GAAG,EAAE,IACb;AAAA,gBACC,YAAY;AAAA,gBACZ;AAAA,gBACA;AAAA,cACD,EAAE,MAAM,CAAC;AAAA,YAEX;AACA,gBAAI,sBAAsB;AAGzB,qBACC;AAAA,gBACC,YAAY;AAAA,gBACZ;AAAA,gBACA;AAAA,cACD,EAAE,MAAM,GAAG,EAAE,IACb;AAAA,gBACC,YAAY;AAAA,gBACZ,iBAAiB;AAAA,gBACjB;AAAA,cACD,EAAE,MAAM,CAAC;AAAA,YAEX;AAMA,mBAAO,GAAG,mBAAmB,YAAY,MAAM,gBAAgB,IAAI,CAAC,GAAG,cAAc,IAAI,aAAa,GAAG,mBAAmB,YAAY,OAAO,eAAe,IAAI,CAAC;AAAA,UACpK;AAEA,iBAAO,QAAQ,kBAAkB,EAAE,GAAG,WAAW,QAAQ,WAAW,CAAC,GAAG,iBAAiB,EAAE;AAAA,QAC5F;AAQA,iBAAS,6BAA6B,OAAOD,OAAM;AAClD,gBAAM,gBAAgB,6BAA6BA,MAAK,MAAM;AAE9D,cAAI,wCAAwC,aAAa,GAAG;AAC3D,mBAAO;AAAA,UACR;AAEA,iBAAO,MAAM;AAAA,YACZ;AAAA,YACA,mBAAmB,eAAe,MAAM,IAAI;AAAA,UAC7C;AAAA,QACD;AAOA,iBAAS,qBAAqBA,OAAM;AACnC,cACC,CAAC,SAAS,gBAAgBA,KAAI,KAC9B,CAAC,gBAAgBA,MAAK,MAAM,GAC3B;AACD;AAAA,UACD;AAEA,gBAAM,gBAAgB,6BAA6BA,MAAK,MAAM;AAG9D,cAAI,KAAK,cAAc,MAAM,CAAC,CAAC,GAAG;AACjC;AAAA,UACD;AACA,eAAK,cAAc,MAAM,CAAC,CAAC,IAAI;AAE/B,cAAI,oBAAoB,aAAa,GAAG;AACvC,oBAAQ,OAAO;AAAA,cACd,MAAM;AAAA,cACN,WAAW;AAAA,cACX,KAAK,WAAS,6BAA6B,OAAOA,KAAI;AAAA,YACvD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,UAAU;AACT,mBAAO,uBAAO,OAAO,IAAI;AAAA,UAC1B;AAAA,UAEA,SAAS;AAAA,UACT,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1VA;AAAA,2DAAAE,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAgBjB,QAAM,gBAAgB,uBAAO,eAAe;AAE5C,QAAM,uBAAuB,oBAAI,IAAI;AAAA,MACpC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AASD,aAAS,cAAc,gBAAgB;AACtC,YAAM,kBAAkB,eAAe;AAKvC,YAAM,eACL,gBAAgB,OAAO,SAAS,mBAAmB,IAAI;AAOxD,YAAM,wBAAwB,gBAAgB,UAAU;AAAA,QACvD,SAAO,IAAI,SAAS;AAAA,MACrB;AACA,UAAI,yBAAyB,KAAK,yBAAyB,cAAc;AACxE,eAAO;AAAA,MACR;AAEA,YAAM,eAAe,gBAAgB,UAAU,YAAY;AAE3D,UAAI,cAAc;AACjB,YAAI,aAAa,SAAS,oBAAoB;AAC7C,cACC,aAAa,WAAW;AAAA,YACvB,UAAQ,KAAK,SAAS;AAAA,UACvB,GACC;AAKD,mBAAO;AAAA,UACR;AAEA,gBAAM,kBAAkB,aAAa,WAAW;AAAA,YAC/C,UAAQ,SAAS,sBAAsB,IAAI,MAAM;AAAA,UAClD;AAEA,gBAAM,gBAAgB,gBAAgB,GAAG,EAAE;AAC3C,iBAAO,gBACJ;AAAA,YACA,OAAO,cAAc;AAAA,YACrB,qBAAqB,gBAAgB,SAAS;AAAA,UAC/C,IACC;AAAA,QACJ;AAGA,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,IACR;AAOA,aAAS,gBAAgBC,OAAM;AAC9B,UAAI,cAAcA;AAElB,aAAO,eAAe,YAAY,SAAS,eAAe;AACzD,YACC;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,EAAE,SAAS,YAAY,IAAI,GAC1B;AAeD,iBAAO;AAAA,QACR;AACA,sBAAc,YAAY;AAAA,MAC3B;AAEA,aAAO;AAAA,IACR;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,uBAAuB;AAAA,UACxB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA;AAAA,QACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QASA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,uBAAuB;AAAA,gBACtB,MAAM;AAAA,gBACN,aACC;AAAA,cACF;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,cACC;AAAA,UACD,gBACC;AAAA,UACD,cACC;AAAA,UACD,wBACC;AAAA,UACD,oBACC;AAAA,UACD,qBACC;AAAA,QACF;AAAA,QACA,gBAAgB;AAAA,MACjB;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,CAAC,EAAE,sBAAsB,CAAC,IAAI,QAAQ;AAc5C,iBAAS,mBAAmB,gBAAgB;AAC3C,kBACE,eAAe,SAAS,SAAS,mBACjC,eAAe,SAAS,SAAS,qBAClC,eAAe,SAAS,OAAO,SAAS,gBACxC,qBAAqB,IAAI,eAAe,SAAS,OAAO,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAO5D,WAAW,kBAAkB,eAAe,SAAS,MAAM;AAAA,QAE7D;AASA,iBAAS,uBAAuB,OAAO,aAAa,iBAAiB;AACpE,gBAAM,aAAa,YAAY;AAE/B,cAAI,WAAW,WAAW,GAAG;AAE5B,mBAAO,MAAM;AAAA,cACZ,WAAW,cAAc,WAAW;AAAA,cACpC,UAAU,eAAe;AAAA,YAC1B;AAAA,UACD;AAEA,gBAAM,WAAW,WAAW,GAAG,EAAE;AACjC,iBAAO,MAAM;AAAA,YACZ;AAAA,YACA,YAAY,eAAe;AAAA,UAC5B;AAAA,QACD;AAKA,eAAO;AAAA,UACN,eAAeC,OAAM;AAEpB,kBAAM,cAAc,gBAAgBA,KAAI;AACxC,kBAAM,iBAAiBA;AAGvB,gBAAI,eAAe,mBAAmB,cAAc,GAAG;AACtD,kBACC,YAAY,SACZ,YAAY,MAAM,SAAS,cAC1B;AAKD,wBAAQ,OAAO;AAAA,kBACd,WAAW;AAAA,kBACX,MAAM;AAAA,gBACP,CAAC;AACD;AAAA,cACD;AAEA,oBAAM,cACL,YAAY,OAAO,SAAS,eACzB,YAAY,QACZ;AAGJ,kBAAI,CAAC,aAAa;AACjB,oBAAI,uBAAuB;AAC1B,0BAAQ,OAAO;AAAA,oBACd,MAAM;AAAA,oBACN,WAAW;AAAA,kBACZ,CAAC;AACD;AAAA,gBACD;AACA;AAAA,cACD;AAGA,oBAAM,iBAAiB,cAAc,cAAc;AAEnD,kBAAI,mBAAmB,eAAe;AAErC;AAAA,cACD;AAEA,kBAAI,mBAAmB,MAAM;AAE5B,wBAAQ,OAAO;AAAA,kBACd,WAAW;AAAA,kBACX,MAAM;AAAA,kBACN,SAAS;AAAA,oBACR;AAAA,sBACC,WAAW;AAAA,sBACX,IAAI,OAAO;AACV,8BAAM,kBACL,eAAe;AAChB,8BAAM,OAAO,gBAAgB;AAC7B,8BAAM,YACL,gBAAgB,OAAO;AAGxB,4BAAI,cAAc,kBAAkB;AACnC,gCAAM,YAAY,KAAK,CAAC;AACxB,gCAAMC,cAAa,KAAK,CAAC;AACzB,gCAAMC,cAAa,KAAK,CAAC;AAEzB,8BAAI,CAAC,WAAW;AAEf,kCAAM,YACL,WAAW;AAAA,8BACV;AAAA,4BACD;AACD,kCAAM,kBACL,WAAW;AAAA,8BACV,gBAAgB;AAAA,4BACjB;AACD,kCAAM,aACL,WAAW;AAAA,8BACV;AAAA,8BACA;AAAA,8BACA,SAAS;AAAA,4BACV;AAED,gCAAI,YAAY;AACf,qCAAO,MAAM;AAAA,gCACZ;AAAA,gCACA,oBAAoB,YAAY,IAAI;AAAA,8BACrC;AAAA,4BACD;AACA,mCAAO,MAAM;AAAA,8BACZ,gBAAgB;AAAA,8BAChB,qBAAqB,YAAY,IAAI;AAAA,4BACtC;AAAA,0BACD;AAEA,8BAAI,CAACD,aAAY;AAEhB,mCAAO,MAAM;AAAA,8BACZ;AAAA,8BACA,kBAAkB,YAAY,IAAI;AAAA,4BACnC;AAAA,0BACD;AAEA,8BAAI,CAACC,aAAY;AAEhB,mCAAO,MAAM;AAAA,8BACZD;AAAA,8BACA,cAAc,YAAY,IAAI;AAAA,4BAC/B;AAAA,0BACD;AAEA,8BACCC,YAAW,SACX,oBACC;AACD,mCAAO;AAAA,8BACN;AAAA,8BACAA;AAAA,8BACA,YAAY;AAAA,4BACb;AAAA,0BACD;AAGA,iCAAO;AAAA,wBACR;AAGA,8BAAM,aAAa,KAAK,CAAC;AACzB,8BAAM,aAAa,KAAK,CAAC;AAEzB,4BAAI,CAAC,YAAY;AAEhB,gCAAM,YACL,WAAW;AAAA,4BACV;AAAA,0BACD;AACD,gCAAM,kBACL,WAAW;AAAA,4BACV,gBAAgB;AAAA,0BACjB;AACD,gCAAM,aACL,WAAW;AAAA,4BACV;AAAA,4BACA;AAAA,4BACA,SAAS;AAAA,0BACV;AAED,8BAAI,YAAY;AACf,mCAAO,MAAM;AAAA,8BACZ;AAAA,8BACA,gBAAgB,YAAY,IAAI;AAAA,4BACjC;AAAA,0BACD;AACA,iCAAO,MAAM;AAAA,4BACZ,gBAAgB;AAAA,4BAChB,iBAAiB,YAAY,IAAI;AAAA,0BAClC;AAAA,wBACD;AACA,4BAAI,CAAC,YAAY;AAEhB,iCAAO,MAAM;AAAA,4BACZ;AAAA,4BACA,cAAc,YAAY,IAAI;AAAA,0BAC/B;AAAA,wBACD;AAEA,4BACC,WAAW,SACX,oBACC;AACD,iCAAO;AAAA,4BACN;AAAA,4BACA;AAAA,4BACA,YAAY;AAAA,0BACb;AAAA,wBACD;AAEA,+BAAO;AAAA,sBACR;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD,CAAC;AAGD;AAAA,cACD;AAEA,oBAAM,EAAE,OAAO,iBAAiB,IAAI;AAGpC,kBACC,EACC,iBAAiB,SAAS,gBAC1B,iBAAiB,SAAS,YAAY,OAEtC;AACD,sBAAM,UAAU,eAAe,sBAC5B,OACA;AAAA,kBACA;AAAA,oBACC,WAAW;AAAA,oBACX,IAAI,OAAO;AAOV,0BACC,iBAAiB,OACf,UACF,iBAAiB,OACf,aACF,iBAAiB,OAAO,SACvB,QACA;AACD,+BAAO,MAAM;AAAA,0BACZ,iBAAiB;AAAA,0BACjB,UAAU,YAAY,IAAI;AAAA,wBAC3B;AAAA,sBACD;AAEA,6BAAO,MAAM;AAAA,wBACZ;AAAA,wBACA,YAAY;AAAA,sBACb;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AACF,wBAAQ,OAAO;AAAA,kBACd,WAAW;AAAA,kBACX,MAAM;AAAA,kBACN;AAAA,gBACD,CAAC;AACD;AAAA,cACD;AAeA,kBAAI,QAAQ,WAAW,SAAS,cAAc;AAC9C,iBAAG;AACF,sBAAM,WAAW,MAAM,IAAI,IAAI,YAAY,IAAI;AAC/C,oBAAI,UAAU;AACb;AAAA,gBACD;AACA,wBAAQ,MAAM;AAAA,cACf,SAAS;AAET,kBAAI,OAAO,UAAU,aAAa;AAEjC,wBAAQ,OAAO;AAAA,kBACd,WAAW;AAAA,kBACX,MAAM;AAAA,gBACP,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACthBA;AAAA,iDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,SAAS;AACf,QAAM,WAAW;AACjB,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP,OAAO;AAAA,YACN;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM;AAAA,oBACL;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM;AAAA,oBACL;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,kBACD;AAAA,gBACD;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,UAAU;AAAA,sBACT,MAAM;AAAA,oBACP;AAAA,oBACA,aAAa;AAAA,sBACZ,MAAM;AAAA,oBACP;AAAA,oBACA,SAAS;AAAA,sBACR,MAAM;AAAA,oBACP;AAAA,kBACD;AAAA,kBACA,sBAAsB;AAAA,gBACvB;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,UACD;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QACT,UAAU;AAAA,UACT,gCACC;AAAA,UACD,8BACC;AAAA,UACD,6BACC;AAAA,UACD,0BACC;AAAA,UACD,yBACC;AAAA,UACD,uBAAuB;AAAA,UACvB,kBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,OAAO,QAAQ,QAAQ,CAAC,GAC7B,WAAW,QAAQ,QAAQ,CAAC,KAAK,QAAQ,QAAQ,CAAC,EAAE,UACpD,oBACC,CAAC,QAAQ,QAAQ,CAAC,KAAK,QAAQ,QAAQ,CAAC,EAAE,gBAAgB,OAC3D,UAAU,QAAQ,QAAQ,CAAC,KAAK,QAAQ,QAAQ,CAAC,EAAE,SACnD,aAAa,QAAQ;AAOtB,iBAAS,UAAU,UAAU;AAC5B,iBAAO,SAAS,SAAS,QAAQ;AAAA,QAClC;AAUA,iBAAS,mBAAmB,QAAQ,QAAQ,oBAAoB;AAC/D,iBACC,OAAO,WAAW,KAClB,OAAO,CAAC,EAAE,UAAU,KACpB,OAAO,CAAC,EAAE,QAAQ,OAAO,WACxB,CAAC,cAAc,WAAW,QAAQ,SAAS,EAAE;AAAA,YAC7C,OAAO,CAAC,EAAE;AAAA,UACX,KACE,OAAO,CAAC,EAAE,SAAS,aACnB,CAAC,sBACD,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,MAAM,OAAO,CAAC,EAAE;AAAA,QAE3C;AAOA,iBAAS,eAAe,KAAK;AAC5B,iBAAO,IAAI,SAAS,eAAe,IAAI,OAAO,IAAI;AAAA,QACnD;AAOA,iBAAS,aAAa,KAAK;AAC1B,cAAI,IAAI,SAAS,aAAa,OAAO,IAAI,UAAU,UAAU;AAE5D,mBAAO,WAAW,QAAQ,GAAG;AAAA,UAC9B;AAGA,iBAAO,IAAI,IAAI,SAAS,eAAe,IAAI,OAAO,IAAI,KAAK;AAAA,QAC5D;AAOA,iBAAS,uBAAuBC,OAAM;AACrC,gBAAM,MAAMA,MAAK;AAEjB,cAAIA,MAAK,UAAUA,MAAK,YAAYA,MAAK,WAAW;AACnD;AAAA,UACD;AAEA,cAAI,IAAI,SAAS,aAAa,OAAO,IAAI,UAAU,UAAU;AAC5D,gBAAI;AAEJ,gBAAI;AACH,uBAAS,OAAO,SAAS,IAAI,KAAK;AAAA,YACnC,QAAQ;AACP;AAAA,YACD;AAEA,gBAAI,OAAO,WAAW,GAAG;AACxB;AAAA,YACD;AAEA,kBAAM,iBAAiB,UAAU,OAAO,CAAC,EAAE,KAAK;AAEhD,gBAAI,kBAAkB,UAAU;AAC/B;AAAA,YACD;AAEA,gBACC,qBACA,mBAAmB,IAAI,OAAO,QAAQ,OAAO,GAC5C;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM,EAAE,UAAU,IAAI,MAAM;AAAA,gBAC5B,KAAK,WACJ,MAAM,YAAY,KAAK,eAAe,GAAG,CAAC;AAAA,cAC5C,CAAC;AAAA,YACF;AAAA,UACD,WACC,YACA,IAAI,SAAS,gBACb,UAAU,IAAI,IAAI,GACjB;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM,EAAE,UAAU,IAAI,KAAK;AAAA,cAC3B,KAAK,WAAS,MAAM,YAAY,KAAK,aAAa,GAAG,CAAC;AAAA,YACvD,CAAC;AAAA,UACF,WACC,WACA,IAAI,SAAS,aACb,SAAS,iBAAiB,GAAG,GAC5B;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM,EAAE,UAAU,IAAI,MAAM;AAAA,cAC5B,KAAK,WAAS,MAAM,YAAY,KAAK,aAAa,GAAG,CAAC;AAAA,YACvD,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,mBAAmBA,OAAM;AACjC,gBAAM,MAAMA,MAAK;AAEjB,cACC,CAACA,MAAK,UACN,CAACA,MAAK,YACN,CAACA,MAAK,aACN,EAAE,IAAI,SAAS,aAAa,OAAO,IAAI,UAAU,WAChD;AACD,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM,EAAE,UAAU,IAAI,QAAQ,IAAI,MAAM;AAAA,cACxC,KAAK,WAAS,MAAM,YAAY,KAAK,aAAa,GAAG,CAAC;AAAA,YACvD,CAAC;AAAA,UACF;AAAA,QACD;AAQA,iBAAS,iBAAiBA,OAAM,uBAAuB;AACtD,gBAAM,cAAc,CAAC,GACpB,gBAAgB,CAAC;AAClB,cAAI,iBAAiB,MACpB,kBAAkB;AAEnB,UAAAA,MAAK,WAAW,QAAQ,cAAY;AACnC,kBAAM,MAAM,SAAS;AAErB,gBACC,CAAC,OACD,SAAS,UACT,SAAS,YACT,SAAS,WACR;AACD;AAAA,YACD;AAEA,gBAAI,IAAI,SAAS,aAAa,OAAO,IAAI,UAAU,UAAU;AAC5D,0BAAY,KAAK,QAAQ;AAEzB,kBAAI,uBAAuB;AAC1B,oBAAI;AAEJ,oBAAI;AACH,2BAAS,OAAO,SAAS,IAAI,KAAK;AAAA,gBACnC,QAAQ;AACP,oCAAkB;AAClB;AAAA,gBACD;AAEA,kCACC,mBACA,CAAC,mBAAmB,IAAI,OAAO,MAAM,KACpC,YAAY,UAAU,OAAO,CAAC,EAAE,KAAK;AAAA,cACxC;AAAA,YACD,WACC,YACA,yBACA,IAAI,SAAS,gBACb,UAAU,IAAI,IAAI,GACjB;AACD,4BAAc,KAAK,QAAQ;AAC3B,gCAAkB;AAClB,+BAAiB,IAAI;AAAA,YACtB,OAAO;AACN,4BAAc,KAAK,QAAQ;AAAA,YAC5B;AAAA,UACD,CAAC;AAED,cACC,yBACA,YAAY,UACZ,CAAC,iBACA;AACD,wBAAY,QAAQ,cAAY;AAC/B,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,KAAK,WACJ,MAAM;AAAA,kBACL,SAAS;AAAA,kBACT,eAAe,SAAS,GAAG;AAAA,gBAC5B;AAAA,cACF,CAAC;AAAA,YACF,CAAC;AAAA,UACF,WAAW,cAAc,UAAU,gBAAgB;AAClD,0BAAc,QAAQ,cAAY;AACjC,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,MAAM,EAAE,UAAU,eAAe;AAAA,gBACjC,KAAK,WACJ,MAAM;AAAA,kBACL,SAAS;AAAA,kBACT,aAAa,SAAS,GAAG;AAAA,gBAC1B;AAAA,cACF,CAAC;AAAA,YACF,CAAC;AAAA,UACF,WAAW,YAAY,UAAU,cAAc,QAAQ;AACtD,0BAAc,QAAQ,cAAY;AACjC,sBAAQ,OAAO;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,MAAM,EAAE,KAAK,SAAS,IAAI,QAAQ,SAAS,IAAI,MAAM;AAAA,gBACrD,KAAK,WACJ,MAAM;AAAA,kBACL,SAAS;AAAA,kBACT,aAAa,SAAS,GAAG;AAAA,gBAC1B;AAAA,cACF,CAAC;AAAA,YACF,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,SAASA,OAAM;AACd,gBAAI,SAAS,YAAY,CAAC,MAAM;AAC/B,iCAAmBA,KAAI;AAAA,YACxB;AACA,gBAAI,SAAS,aAAa;AACzB,qCAAuBA,KAAI;AAAA,YAC5B;AAAA,UACD;AAAA,UACA,iBAAiBA,OAAM;AACtB,gBAAI,SAAS,cAAc;AAC1B,+BAAiBA,OAAM,KAAK;AAAA,YAC7B;AACA,gBAAI,SAAS,wBAAwB;AACpC,+BAAiBA,OAAM,IAAI;AAAA,YAC5B;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzYA;AAAA,4CAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAMjB,QAAM,iBAAiB;AAAA,MACtB,QAAQ;AAAA,QACP,OAAO;AAAA,QACP,gBAAgB;AAAA,QAChB,aAAa;AAAA,MACd;AAAA,MACA,QAAQ;AAAA,QACP,OAAO;AAAA,QACP,gBAAgB;AAAA,QAChB,aAAa;AAAA,MACd;AAAA,MACA,UAAU;AAAA,QACT,OAAO;AAAA,QACP,gBAAgB;AAAA,QAChB,aAAa;AAAA,MACd;AAAA,IACD;AAGA,QAAM,8BAA8B,IAAI;AAAA,MACvC,OAAO,uBAAuB,MAAM,KAAK,SAAS,UAAU,EAAE,KAAK,EAAE,CAAC;AAAA,MACtE;AAAA,IACD;AAWA,mBAAe,OAAO,UACrB,eAAe,OAAO,UACtB,eAAe,SAAS,UACvB,SAAU,KAAK;AACd,YAAM,WAAW,KAAK;AACtB,YAAM,WAAW,IAAI,CAAC;AAEtB,UAAI,aAAa,UAAU;AAC1B,eAAO;AAAA,MACR;AACA,aACC,WACA,IACE,MAAM,GAAG,EAAE,EACX;AAAA,QACA;AAAA,QACA,CAACC,QAAO,SAAS,YAAY;AAC5B,cACC,YAAY,YACX,aAAa,OAAO,YAAY,MAChC;AACD,mBAAO;AAAA,UACR;AACA,cACCA,WAAU,YACT,aAAa,OAAOA,WAAU,MAC9B;AACD,mBAAO,KAAKA,MAAK;AAAA,UAClB;AACA,cAAI,WAAW,aAAa,KAAK;AAChC,mBAAO;AAAA,UACR;AACA,iBAAOA;AAAA,QACR;AAAA,MACD,IACD;AAAA,IAEF;AAEF,QAAM,eAAe;AAOrB,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,UAAU,UAAU;AAAA,UACtC;AAAA,UACA;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM,CAAC,cAAc;AAAA,cACtB;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,aAAa;AAAA,oBACZ,MAAM;AAAA,kBACP;AAAA,kBACA,uBAAuB;AAAA,oBACtB,MAAM;AAAA,kBACP;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,aAAa;AAAA,QACd;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,cAAc,QAAQ,QAAQ,CAAC,GACpC,WAAW,eAAe,eAAe,QAAQ,GACjD,UAAU,QAAQ,QAAQ,CAAC,GAC3B,wBACC,WAAW,QAAQ,0BAA0B,MAC9C,aAAa,QAAQ;AACtB,YAAI,cAAc,WAAW,QAAQ,gBAAgB;AAGrD,YAAI,YAAY,cAAc;AAC7B,wBAAc;AAAA,QACf;AAsBA,iBAAS,aAAaE,OAAM;AAC3B,iBACCA,MAAK,OAAO,SAAS,kBACrBA,MAAK,OAAO,SAAS,gBACrBA,MAAK,OAAO,SAAS;AAAA,QAEvB;AAUA,iBAAS,YAAYA,OAAM;AAC1B,iBACCA,MAAK,SAAS,yBACdA,MAAK,WAAW,SAAS,aACzB,OAAOA,MAAK,WAAW,UAAU,YACjC,CAAC,SAAS,gBAAgB,YAAYA,MAAK,UAAU;AAAA,QAEvD;AASA,iBAAS,2CAA2CA,OAAM;AACzD,cAAI,CAAC,SAAS,8BAA8BA,MAAK,MAAM,GAAG;AACzD,mBAAO;AAAA,UACR;AACA,gBAAM,QAAQA,MAAK,OAAO;AAG1B,mBAAS,IAAI,GAAG,IAAI,MAAM,KAAK,QAAQ,EAAE,GAAG;AAC3C,kBAAM,YAAY,MAAM,KAAK,CAAC;AAE9B,gBAAI,cAAcA,MAAK,QAAQ;AAC9B,qBAAO;AAAA,YACR;AACA,gBAAI,CAAC,YAAY,SAAS,GAAG;AAC5B;AAAA,YACD;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAQA,iBAAS,uBAAuBA,OAAM;AACrC,gBAAM,SAASA,MAAK;AAEpB,kBAAQ,OAAO,MAAM;AAAA;AAAA,YAEpB,KAAK;AACJ,qBACC,CAAC,SAAS,gBAAgB,YAAYA,KAAI,KAC1C,2CAA2CA,KAAI;AAAA;AAAA,YAIjD,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO,OAAO,QAAQA,SAAQ,CAAC,OAAO;AAAA;AAAA,YAGvC,KAAK;AAAA,YACL,KAAK;AACJ,qBAAO,OAAO,WAAWA;AAAA;AAAA,YAG1B,KAAK;AACJ,qBAAO,OAAO,aAAaA,SAAQ,OAAO,WAAWA;AAAA;AAAA,YAGtD,KAAK;AACJ,qBAAO,OAAO,aAAaA;AAAA;AAAA,YAG5B,KAAK;AACJ,qBAAO,OAAO,UAAUA,SAAQ,OAAO,aAAaA;AAAA;AAAA,YAGrD;AACC,qBAAO;AAAA,UACT;AAAA,QACD;AAQA,iBAAS,gCAAgCA,OAAM;AAC9C,gBAAM,SACLA,MAAK,OAAO,SAAS,8BACrBA,UAASA,MAAK,OAAO;AAEtB,cAAI,QAAQ;AACX,mBAAO;AAAA,UACR;AAEA,gBAAM,yBAAyBA,MAAK,YAAY,SAAS;AAEzD,cAAI,wBAAwB;AAC3B,mBAAO;AAAA,UACR;AAEA,gBAAM,oBACLA,MAAK,OAAO,UAAU,KACtB,4BAA4B,KAAKA,MAAK,OAAO,CAAC,EAAE,MAAM,GAAG;AAE1D,cAAI,mBAAmB;AACtB,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AAEA,eAAO;AAAA,UACN,QAAQA,OAAM;AACb,kBAAM,MAAMA,MAAK,OAChB,SAASA,MAAK;AAEf,gBAAI,YAAY,OAAO,QAAQ,UAAU;AACxC,kBAAI,UACF,gBAAgB,cAChB,uBAAuBA,KAAI,KAC5B,aAAaA,KAAI,KACjB,SAAS,eAAe,QAAQ,SAAS,KAAK;AAE/C,kBAAI,CAAC,WAAW,aAAa;AAC5B,0BACC,SAAS;AAAA,kBACR;AAAA,kBACA,SAAS;AAAA,gBACV,KAAK,OAAO,SAAS,SAAS,KAAK;AAAA,cACrC;AAEA,kBAAI,CAAC,SAAS;AACb,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,MAAM;AAAA,oBACL,aAAa,SAAS;AAAA,kBACvB;AAAA,kBACA,IAAI,OAAO;AACV,wBACC,gBAAgB,cAChB,SAAS;AAAA,sBACR;AAAA,oBACD,GACC;AAKD,6BAAO;AAAA,oBACR;AAEA,2BAAO,MAAM;AAAA,sBACZA;AAAA,sBACA,SAAS,QAAQA,MAAK,GAAG;AAAA,oBAC1B;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,UAEA,gBAAgBA,OAAM;AAErB,gBACC,yBACA,gBAAgB,cAChB,gCAAgCA,KAAI,GACnC;AACD;AAAA,YACD;AAEA,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,aAAa,SAAS;AAAA,cACvB;AAAA,cACA,IAAI,OAAO;AACV,oBACC,SAAS;AAAA,kBACRA,MAAK;AAAA,gBACN,KACA,CAAC,SAAS,gBAAgB,YAAYA,KAAI,GACzC;AAKD,yBAAO;AAAA,gBACR;AACA,uBAAO,MAAM;AAAA,kBACZA;AAAA,kBACA,SAAS,QAAQ,WAAW,QAAQA,KAAI,CAAC;AAAA,gBAC1C;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/ZA;AAAA,2CAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAYjB,QAAM,mBAAmB,IAAI;AAAA,MAC5B,MAAM,KAAK,EAAE,QAAQ,KAAK,EAAE,GAAG,CAAC,GAAGC,WAAUA,SAAQ,CAAC;AAAA,IACvD;AAOA,aAAS,WAAW,UAAU;AAC7B,aAAO,SAAS,KAAK,UAAU;AAAA,IAChC;AAQA,aAAS,iBAAiBC,OAAM;AAC/B,aACCA,MAAK,SAAS,sBACd,CAACA,MAAK,YACNA,MAAK,SAAS,SAAS,gBACvBA,MAAK,SAAS,SAAS;AAAA,IAEzB;AAYA,aAAS,aAAa,OAAO;AAC5B,aAAO,EACL,MAAM,SAAS,aAAa,CAAC,iBAAiB,IAAI,MAAM,KAAK,KAC7D,MAAM,SAAS,gBAAgB,MAAM,SAAS;AAAA,IAEjD;AAOA,IAAAF,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,gBAAgB;AAAA,QAEhB,QAAQ;AAAA;AAAA,UAEP;AAAA,YACC,MAAM,CAAC,UAAU,WAAW;AAAA,UAC7B;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,mBAAmB;AAAA,UACnB,cAAc;AAAA,UACd,cACC;AAAA,UACD,qBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAQ3B,iBAAS,eAAeE,OAAM;AAC7B,gBAAM,OAAOA,MAAK;AAElB,kBAAQ,KAAK,QAAQ;AAAA,YACpB,KAAK;AACJ,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,cACZ,CAAC;AACD;AAAA,YAED,KAAK;AACJ,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,SAAS;AAAA,kBACR;AAAA,oBACC,WAAW;AAAA,oBACX,IAAI,OAAO;AACV,4BAAM,SAAS,WAAW,UAAUA,KAAI;AACxC,4BAAM,YAAY,OAAO,GAAG,EAAE;AAC9B,4BAAM,oBAAoB,OAAO,GAAG,EAAE;AACtC,4BAAM,mBACL,kBAAkB,SACjB,gBACD,kBAAkB,UAAU;AAE7B,6BAAO,MAAM;AAAA,wBACZ;AAAA,wBACA,mBAAmB,SAAS;AAAA,sBAC7B;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAAA,cACD,CAAC;AACD;AAAA,YAED;AACC,kBAAI,CAAC,aAAa,KAAK,CAAC,CAAC,GAAG;AAC3B,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,gBACZ,CAAC;AAAA,cACF;AACA;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,eAAeA,OAAM;AACpB,kBAAM,QAAQ,WAAW,SAASA,KAAI;AACtC,gBAAI;AAGJ,uBAAW,SAAS,kBAAkB,OAAO,UAAU;AACvD,gBAAI,YAAY,CAAC,WAAW,QAAQ,GAAG;AACtC,uBAAS,WAAW,QAAQ,eAAa;AACxC,sBAAM,SAAS,UAAU;AAEzB,oBAAI,SAAS,SAAS,MAAM,GAAG;AAC9B,iCAAe,OAAO,MAAM;AAAA,gBAC7B;AAAA,cACD,CAAC;AAAA,YACF;AAGA,uBAAW,SAAS,kBAAkB,OAAO,QAAQ;AACrD,gBAAI,YAAY,CAAC,WAAW,QAAQ,GAAG;AACtC,uBAAS,WAAW,QAAQ,eAAa;AACxC,sBAAM,aAAa,UAAU,WAAW;AACxC,sBAAM,cACL,WAAW,OAAO,SAAS,oBACxB,WAAW,SACX;AAEJ,oBACC,iBAAiB,UAAU,KAC3B,SAAS,SAAS,WAAW,GAC5B;AACD,iCAAe,YAAY,MAAM;AAAA,gBAClC;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACtMA;AAAA,4DAAAC,UAAAC,SAAA;AAAA;AAaA,aAAS,mBAAmB,OAAO,kBAAkB,oBAAI,IAAI,GAAG;AAC/D,iBAAW,aAAa,MAAM,YAAY;AACzC,YAAI,UAAU,aAAa,MAAM;AAChC;AAAA,QACD;AAEA,wBAAgB,IAAI,UAAU,YAAY,SAAS;AAAA,MACpD;AACA,iBAAW,cAAc,MAAM,aAAa;AAC3C,YAAI,WAAW,SAAS,YAAY;AACnC,6BAAmB,YAAY,eAAe;AAAA,QAC/C;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,aAAa,WAAW;AAChC,UAAI,UAAU,WAAW;AACxB,eAAO,UAAU;AAAA,MAClB;AACA,UAAIC,QAAO,UAAU;AAErB,aAAOA,OAAM;AACZ,cAAM,IAAIA,MAAK,OAAO;AAEtB,YAAI,MAAM,0BAA0BA,MAAK,OAAO,SAASA,OAAM;AAC9D,iBAAOA,MAAK,OAAO;AAAA,QACpB;AACA,YAAI,MAAM,sBAAsBA,MAAK,OAAO,WAAWA,OAAM;AAC5D,UAAAA,QAAOA,MAAK;AACZ;AAAA,QACD;AAEA;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,6BAA6B,UAAU,gBAAgB;AAC/D,UAAI,CAAC,UAAU;AACd,eAAO;AAAA,MACR;AAGA,UAAI,kBAAkB,SAAS,KAAK,KAAK,OAAK,EAAE,SAAS,WAAW,GAAG;AACtE,eAAO;AAAA,MACR;AAEA,YAAM,gBAAgB,SAAS,MAAM;AAErC,aAAO,SAAS,WAAW;AAAA,QAC1B,eAAa,UAAU,KAAK,kBAAkB;AAAA,MAC/C;AAAA,IACD;AAKA,QAAM,cAAN,MAAkB;AAAA,MACjB,cAAc;AACb,aAAK,OAAO,oBAAI,QAAQ;AAAA,MACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,WAAW,SAAS;AACnB,cAAM,wBAAwB,oBAAI,IAAI;AACtC,cAAM,qBAAqB,oBAAI,IAAI;AAEnC,mBAAW,eAAe,QAAQ,cAAc;AAC/C,gBAAM,OAAO,KAAK,KAAK,IAAI,WAAW;AAEtC,cAAI,MAAM;AACT,iBAAK,sBAAsB;AAAA,cAC1B,IAAI,UAAU;AAAA,cACd;AAAA,YACD;AACA,iBAAK,mBAAmB;AAAA,cACvB,IAAI,UAAU;AAAA,cACd;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,aAAK,KAAK,IAAI,SAAS,EAAE,uBAAuB,mBAAmB,CAAC;AAAA,MACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,WAAW,UAAU,UAAU;AAC9B,mBAAW,WAAW,UAAU;AAC/B,gBAAM,OAAO,KAAK,KAAK,IAAI,OAAO;AAElC,cAAI,MAAM;AACT,iBAAK,mBAAmB,IAAI,QAAQ;AAGpC,iBAAK,sBAAsB,OAAO,QAAQ;AAAA,UAC3C;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,aAAa,UAAU;AACtB,mBAAW,WAAW,UAAU;AAC/B,gBAAM,OAAO,KAAK,KAAK,IAAI,OAAO;AAElC,cAAI,MAAM;AACT,iBAAK,mBAAmB;AAAA,cACvB,IAAI,UAAU;AAAA,cACd,KAAK;AAAA,YACN;AACA,iBAAK,mBAAmB,MAAM;AAAA,UAC/B;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,WAAW,UAAU,UAAU;AAC9B,mBAAW,WAAW,UAAU;AAC/B,gBAAM,OAAO,KAAK,KAAK,IAAI,OAAO;AAElC,cAAI,QAAQ,KAAK,sBAAsB,IAAI,QAAQ,GAAG;AACrD,mBAAO;AAAA,UACR;AAAA,QACD;AACA,eAAO;AAAA,MACR;AAAA,IACD;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,iBAAiB;AAAA,UAClB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,iBAAiB;AAAA,gBAChB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,iBACC;AAAA,UACD,uBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,gBAAgB,CAAC,IAAI,QAAQ;AAEtC,cAAM,aAAa,QAAQ;AAC3B,cAAM,uBAAuB,oBAAI,IAAI;AACrC,cAAM,cAAc,IAAI,YAAY;AACpC,YAAI,QAAQ;AAEZ,eAAO;AAAA,UACN,gBAAgB,UAAUC,OAAM;AAC/B,kBAAM,QAAQ,WAAW,SAASA,KAAI;AACtC,kBAAM,eACL,MAAM,SAAS,eACd,MAAM,MAAM,SAAS,MAAM,MAAM;AAEnC,oBAAQ;AAAA,cACP,OAAO;AAAA,cACP;AAAA,cACA,cAAc,eACX,mBAAmB,KAAK,IACxB;AAAA,cACH,iBAAiB,oBAAI,IAAI;AAAA,YAC1B;AAAA,UACD;AAAA,UACA,gBAAgB;AACf,oBAAQ,MAAM;AAAA,UACf;AAAA;AAAA,UAGA,uBAAuB,SAAS;AAC/B,wBAAY,WAAW,OAAO;AAC9B,kBAAM,gBAAgB,IAAI,OAAO;AAAA,UAClC;AAAA,UAEA,kCAAkC,SAAS;AAC1C,kBAAM,gBAAgB,IAAI,OAAO;AAAA,UAClC;AAAA,UAEA,gCAAgC,SAAS;AACxC,kBAAM,gBAAgB,OAAO,OAAO;AAAA,UACrC;AAAA,UAEA,qBAAqB,SAAS;AAC7B,kBAAM,gBAAgB,OAAO,OAAO;AAAA,UACrC;AAAA;AAAA,UAGA,WAAWA,OAAM;AAChB,kBAAM,EAAE,aAAa,IAAI;AACzB,kBAAM,YAAY,gBAAgB,aAAa,IAAIA,KAAI;AAGvD,gBAAI,CAAC,WAAW;AACf;AAAA,YACD;AACA,kBAAM,WAAW,UAAU;AAC3B,kBAAM,YAAY,aAAa,SAAS;AACxC,kBAAM,iBACL,UAAU,WAAW,OAAO,SAAS;AAGtC,gBACC,UAAU,OAAO,KACjB,EAAE,aAAa,UAAU,OAAO,aAAa,MAC5C;AACD,0BAAY,WAAW,MAAM,iBAAiB,QAAQ;AAAA,YACvD;AAMA,gBACC,aACA,UAAU,OAAO,UAAU;AAAA,YAC3B,CAAC,6BAA6B,UAAU,cAAc,GACrD;AACD,kBAAI,OAAO,qBAAqB,IAAI,SAAS;AAE7C,kBAAI,CAAC,MAAM;AACV,uBAAO,CAAC;AACR,qCAAqB,IAAI,WAAW,IAAI;AAAA,cACzC;AAEA,mBAAK,KAAK,SAAS;AAAA,YACpB;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA,UAMA,mBAAmBA,OAAM;AAExB,gBAAI,CAAC,MAAM,cAAc;AACxB;AAAA,YACD;AAGA,gBACCA,MAAK,SAAS,qBACdA,MAAK,SAAS,mBACb;AACD,0BAAY,aAAa,MAAM,eAAe;AAAA,YAC/C;AAGA,kBAAM,aAAa,qBAAqB,IAAIA,KAAI;AAEhD,gBAAI,YAAY;AACf,mCAAqB,OAAOA,KAAI;AAEhC,yBAAW,aAAa,YAAY;AACnC,sBAAM,WAAW,UAAU;AAE3B,oBACC,YAAY;AAAA,kBACX,MAAM;AAAA,kBACN;AAAA,gBACD,GACC;AACD,sBAAIA,MAAK,OAAO,SAAS,UAAU,YAAY;AAC9C,4BAAQ,OAAO;AAAA,sBACd,MAAMA,MAAK;AAAA,sBACX,WAAW;AAAA,sBACX,MAAM;AAAA,wBACL,OAAO,SAAS;AAAA,sBACjB;AAAA,oBACD,CAAC;AAAA,kBACF,WAAW,CAAC,iBAAiB;AAC5B,4BAAQ,OAAO;AAAA,sBACd,MAAMA,MAAK;AAAA,sBACX,WAAW;AAAA,sBACX,MAAM;AAAA,wBACL,OAAO,WAAW;AAAA,0BACjBA,MAAK,OAAO;AAAA,wBACb;AAAA,wBACA,QAAQ,SAAS;AAAA,sBAClB;AAAA,oBACD,CAAC;AAAA,kBACF;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5WA;AAAA,mDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAWjB,aAAS,sBAAsBC,OAAM;AACpC,aAAOA,MAAK,CAAC,EAAE,YAAY,IAAIA,MAAK,MAAM,CAAC;AAAA,IAC5C;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,cAAc;AAAA,UACd,aAAa;AAAA,QACd;AAAA,QAEA,gBAAgB;AAAA,MACjB;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,YAAI,YAAY;AAMhB,iBAAS,gBAAgB;AACxB,sBAAY;AAAA,YACX,OAAO;AAAA,YACP,UAAU;AAAA,UACX;AAAA,QACD;AAQA,iBAAS,aAAaE,OAAM;AAC3B,cACC,CAACA,MAAK,aACNA,MAAK,SACL,CAAC,UAAU,YACX,CAAC,SAAS,gBAAgBA,KAAI,GAC7B;AAMD,kBAAM,uBACJA,MAAK,OAAO,SAAS,sBACrBA,MAAK,OAAO,UAAUA,SACtBA,MAAK,OAAO,SAAS,cACrBA,MAAK,OAAO,UACZA,MAAK,OAAO,UAAUA,QACpBA,MAAK,SACLA;AAEJ,kBAAM,aAAa,WAAW;AAAA,cAC7B;AAAA,cACA,WAAS,MAAM,UAAU;AAAA,YAC1B;AACA,kBAAM,aAAa;AAAA,cAClB,WAAW,MAAM,CAAC;AAAA,cAClB,WAAW,cAAc,YAAY;AAAA,gBACpC,iBAAiB;AAAA,cAClB,CAAC,EAAE,MAAM,CAAC;AAAA,YACX;AAOA,kBAAM,YAAY,WAAW,cAAc,UAAU;AACrD,kBAAM,gBACH,SAAS,oBAAoB,SAAS,KACvC,SAAS;AAAA,cACR;AAAA,YACD,KACC,qBAAqB,SAAS,sBAC9B,SAAS;AAAA,cACR;AAAA,YACD,MACF,SAAS;AAAA,cACR;AAAA,cACA;AAAA,YACD;AAED,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,SAAS,mBAAmBA,OAAM,UAAU;AAAA,cACjD,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,MAAM;AAAA,kBACL,SAAS,wBAAwBA,KAAI;AAAA,gBACtC;AAAA,cACD;AAAA,cACA,SAAS;AAAA,gBACR;AAAA,kBACC,WAAW;AAAA,kBACX,KAAK,WACJ,MAAM;AAAA,oBACL;AAAA,oBACA,eAAe,MAAM;AAAA,kBACtB;AAAA,gBACF;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAEA,sBAAY,UAAU;AAAA,QACvB;AAEA,eAAO;AAAA,UACN,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,UACpB,yBAAyB;AAAA,UACzB,4BAA4B;AAAA,UAC5B,2BAA2B;AAAA,UAC3B,gCAAgC;AAAA,UAEhC,kBAAkB;AACjB,gBAAI,CAAC,WAAW;AACf;AAAA,YACD;AAEA,sBAAU,WAAW;AAAA,UACtB;AAAA,UACA,eAAeA,OAAM;AACpB,gBAAI,CAAC,WAAW;AACf;AAAA,YACD;AAEA,gBAAIA,MAAK,OAAO;AACf,wBAAU,WAAW;AAAA,YACtB;AAAA,UACD;AAAA,UACA,oBAAoBA,OAAM;AACzB,gBAAI,CAAC,WAAW;AACf;AAAA,YACD;AAEA,gBAAIA,MAAK,SAAS,eAAe;AAChC,wBAAU,WAAW;AAAA,YACtB;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzLA;AAAA,4DAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AACJ,QAAM,WAAW;AACjB,QAAM,EAAE,uBAAuB,IAAI;AAQnC,aAAS,WAAW,aAAa,OAAO;AACvC,UAAI;AAEJ,UAAI,gBAAgB,KAAK;AACxB,sBAAc,CAAC,MAAM,SAAS,GAAG;AAAA,MAClC,WAAW,gBAAgB,KAAK;AAC/B,sBAAc,CAAC,MAAM,SAAS,GAAG;AAAA,MAClC,OAAO;AACN,sBAAc,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,SAAS,GAAG;AAAA,MAC1D;AAEA,aAAO;AAAA,IACR;AAOA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,CAAC,CAAC;AAAA,QAEnB,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,gBAAgB;AAAA,QAEhB,UAAU;AAAA,UACT,UAAU;AAAA,UACV,UAAU;AAAA,UACV,cAAc;AAAA,UACd,cAAc;AAAA,QACf;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,aAAa;AAAA,gBACZ,MAAM,CAAC,KAAK,GAAG;AAAA,cAChB;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,cAAM,CAAC,EAAE,YAAY,CAAC,IAAI,QAAQ;AAElC,eAAO;AAAA,UACN,iBAAiBC,OAAM;AACtB,kBAAM,QAAQA,MAAK,MAAM,SAAS;AAElC,kBAAM,cAAc,WAAW,aAAa,KAAK;AAEjD,gBAAI,aAAa;AAChB,sBAAQ,OAAO;AAAA,gBACd,WACC,gBAAgB,MACb,iBACA;AAAA,gBACJ,MAAAA;AAAA,gBACA,SAAS;AAAA,kBACR,QAAQ,gBAAgB;AAAA,kBACxBA,MAAK,MAAM;AAAA,kBACX;AAAA,gBACD,IACG;AAAA,kBACA;AAAA,oBACC,IAAI,OAAO;AACV,4BAAM,cACL,eAAe;AAChB,4BAAM,QACL,WAAW,QAAQA,KAAI;AACxB,4BAAM,WACL,MAAM,YAAY,GAAG;AAEtB,0BAAI,aAAa;AAChB,8BAAM,OACL,gBAAgB,MACb,MACA;AAEJ,4BACC,MAAM;AAAA,0BACL;AAAA,0BACA;AAAA,wBACD,GACC;AACD,iCAAO,MAAM;AAAA,4BACZA;AAAA,4BACA,MAAM;AAAA,8BACL;AAAA,8BACA;AAAA,4BACD,IACC,MACE,MAAM,QAAQ,EACd;AAAA,8BACA;AAAA,8BACA;AAAA,4BACD;AAAA,0BACH;AAAA,wBACD;AAAA,sBACD;AAEA,6BAAO,MAAM;AAAA,wBACZA;AAAA,wBACA;AAAA,sBACD;AAAA,oBACD;AAAA,oBACA,WACC,gBAAgB,MACb,aACA;AAAA,kBACL;AAAA,gBACD,IACC;AAAA,cACJ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,UAEA,QAAQA,OAAM;AACb,kBAAM,QAAQ,WAAW,SAASA,KAAI;AACtC,kBAAM,UAAU,IAAI,iBAAiB,KAAK;AAC1C,kBAAM,WAAW;AAAA,cAChB,QAAQ,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS,GAAG,KAAK;AAAA,YAC3C;AAEA,uBAAW,EAAE,MAAM,QAAQ,KAAK,QAAQ;AAAA,cACvC;AAAA,YACD,GAAG;AACF,oBAAM,CAAC,aAAa,SAAS,IAAI,QAAQ;AAEzC,kBAAI,eAAe,YAAY,SAAS,iBAAiB;AACxD;AAAA,cACD;AACA,oBAAM,UAAU,oBAAoB,aAAa,KAAK;AACtD,oBAAM,QAAQ,oBAAoB,WAAW,KAAK;AAElD,kBAAI,cAAc,CAAC;AAEnB,kBAAI,OAAO,UAAU,UAAU;AAC9B,8BAAc,WAAW,aAAa,KAAK;AAAA,cAC5C;AAEA,kBAAI,aAAa;AAChB,wBAAQ,OAAO;AAAA,kBACd,WACC,gBAAgB,MACb,iBACA;AAAA,kBACJ,MAAM;AAAA,kBACN,SACC,OAAO,YAAY,YACnB;AAAA,oBACC,QAAQ,gBAAgB;AAAA,oBACxB;AAAA,oBACA;AAAA,kBACD,IACG;AAAA,oBACA;AAAA,sBACC,IAAI,OAAO;AACV,8BAAM,cACL,eAAe;AAEhB,4BAAI,WAAW;AACd,8BACE,UAAU,SACV,aACA,OAAO,UAAU,UAChB,YACF,UAAU,SACT,mBACA;AACD,kCAAM,gBACL,WAAW;AAAA,8BACV;AAAA,4BACD;AACD,kCAAM,OACL,gBACA,MACG,MACA;AAEJ,gCACC,MAAM;AAAA,8BACL;AAAA,4BACD,GACC;AAED,kCACC,UAAU,SACT,aACD,UAAU,IAAI;AAAA,gCACb;AAAA,8BACD,GACC;AACD,uCAAO;AAAA,8BACR;AAGA,kCACC,UAAU,SACT,sBACA,UACC,YACA,UACD,UAAU,OAAO;AAAA,gCAChB,CAAC;AAAA,kCACA,OAAO;AAAA,oCACN;AAAA,kCACD;AAAA,gCACD,MACC,IAAI;AAAA,kCACH;AAAA,gCACD;AAAA,8BACF,IACA;AACD,uCAAO;AAAA,8BACR;AAEA,qCAAO,MAAM;AAAA,gCACZ;AAAA,gCACA,cAAc;AAAA,kCACb;AAAA,kCACA;AAAA,gCACD;AAAA,8BACD;AAAA,4BACD;AAEA,mCAAO,MAAM;AAAA,8BACZ;AAAA,8BACA;AAAA,gCACC,cAAc;AAAA,kCACb;AAAA,kCACA,cAAc,SACb;AAAA,gCACF;AAAA,gCACA,cAAc;AAAA,kCACb,cAAc,SACb;AAAA,gCACF;AAAA,8BACD,EAAE;AAAA,gCACD;AAAA,8BACD;AAAA,4BACD;AAAA,0BACD;AAGA,iCAAO;AAAA,wBACR;AAEA,8BAAM,mBACL,WAAW;AAAA,0BACV;AAAA,0BACA,EAAE,MAAM,EAAE;AAAA,wBACX;AAED,+BAAO,MAAM;AAAA,0BACZ;AAAA,0BACA,SAAS;AAAA,4BACR;AAAA,0BACD,IACG,KAAK,WAAW,OAChB,MAAM,WAAW;AAAA,wBACrB;AAAA,sBACD;AAAA,sBACA,WACC,gBAAgB,MACb,aACA;AAAA,oBACL;AAAA,kBACD,IACC;AAAA,gBACL,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC5TA;AAAA,mDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QAET,UAAU;AAAA,UACT,cAAc;AAAA,QACf;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,QAAQ,CAAC;AACf,cAAM,aAAa,QAAQ;AAO3B,iBAAS,cAAcC,OAAM;AAC5B,cAAIA,MAAK,WAAW;AACnB,kBAAM,KAAK,CAAC;AAAA,UACb;AAAA,QACD;AAQA,iBAAS,YAAYA,OAAM;AAC1B,cAAI,CAACA,MAAK,WAAW;AACpB;AAAA,UACD;AAEA,gBAAM,aAAa,MAAM,IAAI;AAE7B,cAAI,eAAe,KAAKA,MAAK,KAAK,KAAK,SAAS,GAAG;AAClD,oBAAQ,OAAO;AAAA,cACd,KAAK,SAAS,mBAAmBA,OAAM,UAAU;AAAA,cACjD,WAAW;AAAA,YACZ,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,qBAAqB;AAAA,UACrB,4BAA4B;AAAA,UAC5B,oBAAoB;AAAA,UACpB,2BAA2B;AAAA;AAAA,UAG3B,kBAAkB;AACjB,gBAAI,MAAM,SAAS,GAAG;AACrB,oBAAM,MAAM,SAAS,CAAC,KAAK;AAAA,YAC5B;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrFA;AAAA,yDAAAC,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,OAAO;AAAA,UACzB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,sBACC;AAAA,UACD,oBAAoB;AAAA,QACrB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ,YAC1B,cAAc,QAAQ,QAAQ,CAAC,MAAM;AAWtC,iBAAS,gBAAgBC,OAAM;AAC9B,gBAAM,WAAW,WAAW,cAAcA,KAAI,GAC7C,YAAY,WAAW,cAAc,QAAQ,GAC7C,gBAAgB,WAAW,eAAe,UAAU,SAAS;AAC9D,cAAI;AAEJ,kBAAQA,MAAK,MAAM;AAAA,YAClB,KAAK;AACJ,qBAAO;AACP,kBAAIA,MAAK,OAAO,SAAS,oBAAoB;AAC5C,wBAAQ;AAAA,cACT;AACA;AAAA,YACD,KAAK;AACJ,qBAAO;AACP,kBAAIA,MAAK,OAAO,SAAS,iBAAiB;AACzC,wBAAQ;AAAA,cACT;AACA;AAAA,YACD,KAAK;AACJ,qBAAO;AACP;AAAA,YACD,KAAK;AACJ,qBAAO;AACP;AAAA,YACD;AACC;AAAA,UACF;AAEA,cAAI,eAAe,CAAC,eAAe;AAClC,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK,SAAS;AAAA,cACd,WAAW;AAAA,cACX,MAAM;AAAA,gBACL;AAAA,cACD;AAAA,cACA,IAAI,OAAO;AACV,uBAAO,MAAM;AAAA,kBACZ,CAAC,SAAS,MAAM,CAAC,GAAG,UAAU,MAAM,CAAC,CAAC;AAAA,kBACtC;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF,WAAW,CAAC,eAAe,eAAe;AACzC,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK;AAAA,gBACJ,OAAO,SAAS,IAAI;AAAA,gBACpB,KAAK,UAAU,IAAI;AAAA,cACpB;AAAA,cACA,WAAW;AAAA,cACX,MAAM;AAAA,gBACL;AAAA,cACD;AAAA,cACA,IAAI,OAAO;AACV,uBAAO,MAAM,YAAY;AAAA,kBACxB,SAAS,MAAM,CAAC;AAAA,kBAChB,UAAU,MAAM,CAAC;AAAA,gBAClB,CAAC;AAAA,cACF;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAMA,eAAO;AAAA,UACN,eAAe;AAAA,UACf,aAAa;AAAA,UACb,4BAA4B;AAAA,UAC5B,0BAA0B;AAAA,QAC3B;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrJA;AAAA,0CAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,aAAa;AACnB,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP,OAAO;AAAA,YACN;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,OAAO;AAAA,gBACf;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,kCAAkC;AAAA,sBACjC,MAAM,CAAC,UAAU,OAAO,OAAO;AAAA,oBAChC;AAAA,kBACD;AAAA,kBACA,sBAAsB;AAAA,gBACvB;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,gBACN;AAAA,kBACC,MAAM,CAAC,QAAQ;AAAA,gBAChB;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,YAAY;AAAA,oBACX,wBAAwB,EAAE,MAAM,UAAU;AAAA,oBAC1C,4BAA4B,EAAE,MAAM,UAAU;AAAA,kBAC/C;AAAA,kBACA,sBAAsB;AAAA,gBACvB;AAAA,cACD;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACX;AAAA,UACD;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,aAAa;AAAA,UACb,WAAW;AAAA,QACZ;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,kBAAkB;AACxB,cAAM,wBAAwB,oBAAI,IAAI,CAAC,OAAO,OAAO,QAAQ,CAAC;AAC9D,cAAM,4BAA4B,oBAAI,IAAI,CAAC,KAAK,MAAM,YAAY,CAAC;AACnE,cAAM,UAAU,QAAQ,QAAQ,CAAC;AACjC,cAAM,QAAQ,QAAQ,QAAQ,CAAC,MAAM;AACrC,cAAM,gBAAgB;AAAA,UACrB,WAAW,QAAQ;AAAA,QACpB;AACA,cAAM,yBAAyB;AAAA,UAC9B,WAAW,QAAQ;AAAA,QACpB;AACA,cAAM,mCACJ,WAAW,QAAQ,oCAAqC;AAC1D,cAAM,aAAa,QAAQ;AAY3B,iBAAS,OAAOC,OAAM,SAAS;AAC9B,gBAAM,YAAY,WAAW,aAAaA,KAAI;AAC9C,cAAI,WAAW,KAAK;AAEpB,cAAI,CAAC,SAAS;AACb,wBAAY;AACZ,kBAAM;AAAA,cACL,OAAO,UAAU,IAAI;AAAA,cACrB,KAAK,SAAS;AAAA,gBACb;AAAA,gBACA,UAAU,IAAI;AAAA,cACf;AAAA,YACD;AACA,kBAAM,SAAU,OAAO;AACtB,qBAAO,MAAM,gBAAgB,WAAW,GAAG;AAAA,YAC5C;AAAA,UACD,OAAO;AACN,wBAAY;AACZ,kBAAM,UAAU;AAChB,kBAAM,SAAU,OAAO;AAMtB,qBAAO,IAAI,WAAW,OAAO,UAAU,EACrC,wBAAwB,SAAS,EACjC,OAAO,SAAS;AAAA,YACnB;AAAA,UACD;AAEA,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD,CAAC;AAAA,QACF;AAOA,iBAAS,gBAAgB,WAAW;AACnC,gBAAM,YAAY,WAAW,cAAc,SAAS;AAEpD,iBACC,CAAC,aACD,SAAS,oBAAoB,SAAS,KACtC,SAAS,iBAAiB,SAAS;AAAA,QAErC;AAOA,iBAAS,kBAAkB,WAAW;AACrC,cAAI,CAAC,SAAS,oBAAoB,SAAS,GAAG;AAC7C,mBAAO;AAAA,UACR;AACA,gBAAMA,QAAO,WAAW,oBAAoB,UAAU,MAAM,CAAC,CAAC;AAE9D,iBACCA,MAAK,SAAS,oBACdA,MAAK,OAAO,SAAS;AAAA,QAEvB;AAWA,iBAAS,yBAAyBA,OAAM;AACvC,cAAIA,MAAK,SAAS,sBAAsB;AACvC,mBAAO;AAAA,UACR;AAMA,gBAAM,iBACL,CAACA,MAAK,YAAYA,MAAK,IAAI,SAAS;AAOrC,cAAI,kBAAkB,sBAAsB,IAAIA,MAAK,IAAI,IAAI,GAAG;AAM/D,kBAAM,iBACLA,MAAK,UAAUA,MAAK,IAAI,SAAS;AAMlC,gBAAI,CAAC,kBAAkB,CAACA,MAAK,OAAO;AACnC,qBAAO;AAAA,YACR;AAAA,UACD;AAEA,gBAAM,iBAAiB,WAAW,cAAcA,KAAI;AAEpD,iBAAO,0BAA0B,IAAI,eAAe,KAAK;AAAA,QAC1D;AAOA,iBAAS,0BAA0BA,OAAM;AACxC,gBAAM,YAAY,WAAW,aAAaA,OAAM,CAAC;AACjD,gBAAM,YAAY,WAAW,cAAcA,KAAI;AAE/C,iBACC,CAAC,CAAC,aAAa,SAAS,kBAAkB,WAAW,SAAS;AAAA,QAEhE;AAOA,iBAAS,oBAAoBA,OAAM;AAClC,gBAAM,IAAIA,MAAK;AAEf,cACC,MAAM,sBACN,MAAM,oBACN,MAAM,uBACN,MAAM,uBACN,MAAM,uBACN,MAAM,wBACL;AACD,mBAAO;AAAA,UACR;AACA,cAAI,MAAM,mBAAmB;AAC5B,mBAAO,QAAQA,MAAK,QAAQ;AAAA,UAC7B;AACA,cAAI,MAAM,0BAA0B;AACnC,mBAAO,QAAQA,MAAK,WAAW;AAAA,UAChC;AACA,cAAI,kBAAkB,WAAW,aAAaA,OAAM,CAAC,CAAC,GAAG;AACxD,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AAOA,iBAAS,qBAAqB,OAAO;AACpC,iBACC,QAAQ,KAAK,KACb,gBAAgB,KAAK,MAAM,KAAK,KAChC,MAAM,UAAU,QAChB,MAAM,UAAU;AAAA,QAElB;AASA,iBAAS,mBAAmBA,OAAM;AACjC,cAAI,gBAAgB,WAAW,aAAaA,KAAI,CAAC,GAAG;AACnD,mBAAO;AAAA,UACR;AACA,cAAI,yBAAyBA,KAAI,GAAG;AACnC,mBAAO;AAAA,UACR;AACA,cAAI,0BAA0BA,KAAI,GAAG;AACpC,mBAAO;AAAA,UACR;AAGA,cACCA,MAAK,SAAS,wBACd,qCAAqC,WACrC,CAAC,oBAAoBA,KAAI,GACxB;AACD,mBAAO;AAAA,UACR;AACA,cAAI,CAAC,qBAAqB,WAAW,cAAcA,KAAI,CAAC,GAAG;AAC1D,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AASA,iBAAS,sBAAsBA,OAAM;AACpC,gBAAM,SAASA,MAAK;AACpB,gBAAM,YAAY,WAAW,cAAcA,KAAI;AAE/C,cAAI,CAAC,aAAa,UAAU,UAAU,KAAK;AAC1C,mBAAO;AAAA,UACR;AAEA,cAAI,OAAO,SAAS,kBAAkB;AACrC,mBAAO,OAAO,IAAI,MAAM,SAAS,OAAO,IAAI,IAAI;AAAA,UACjD;AAEA,cAAI,OAAO,SAAS,eAAe;AAClC,kBAAM,eAAe,WAAW,cAAc,QAAQ;AAAA,cACrD,MAAM;AAAA,YACP,CAAC;AAED,mBAAO,aAAa,IAAI,MAAM,SAAS,OAAO,IAAI,IAAI;AAAA,UACvD;AAEA,iBAAO;AAAA,QACR;AAQA,iBAAS,0BAA0BA,OAAM;AACxC,gBAAM,SAASA,MAAK;AACpB,gBAAM,YAAY,WAAW,cAAcA,KAAI;AAE/C,cAAI,CAAC,aAAa,UAAU,UAAU,KAAK;AAC1C,mBAAO;AAAA,UACR;AAEA,cAAI,OAAO,SAAS,aAAa;AAChC,mBAAO,OAAO,IAAI,MAAM,SAAS,OAAO,IAAI,IAAI;AAAA,UACjD;AAEA,iBAAO;AAAA,QACR;AAOA,iBAAS,kBAAkBA,OAAM;AAChC,gBAAM,SAAS,SAAS;AAAA,YACvB,WAAW,aAAaA,KAAI;AAAA,UAC7B;AAEA,cAAI,OAAO;AACV,gBAAI,UAAU,mBAAmBA,KAAI,GAAG;AACvC,qBAAOA,OAAM,IAAI;AAAA,YAClB,WACC,CAAC,UACD,qCAAqC,YACrCA,MAAK,SAAS,wBACd,qBAAqB,WAAW,cAAcA,KAAI,CAAC,GAClD;AACD,qBAAOA,KAAI;AAAA,YACZ;AAAA,UACD,OAAO;AACN,kBAAM,gBACL,iBAAiB,sBAAsBA,KAAI;AAC5C,kBAAM,oBACL,0BAA0B,0BAA0BA,KAAI;AACzD,kBAAM,2BACL,iBAAiB;AAElB,gBAAI,UAAU,0BAA0B;AACvC,qBAAOA,OAAM,IAAI;AAAA,YAClB,WAAW,CAAC,UAAU,CAAC,0BAA0B;AAChD,qBAAOA,KAAI;AAAA,YACZ;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,wCAAwCA,OAAM;AACtD,gBAAM,SAASA,MAAK;AAEpB,eACE,OAAO,SAAS,kBAAkB,OAAO,SAASA,WAClD,CAAC,0BAA0B,KAAK,OAAO,IAAI,KAC3C,OAAO,SAASA,QAChB;AACD,8BAAkBA,KAAI;AAAA,UACvB;AAAA,QACD;AAMA,eAAO;AAAA,UACN,qBAAqB;AAAA,UACrB,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,kBAAkB;AAAA,UAClB,mBAAmB;AAAA,UACnB,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,UACnB,mBAAmB;AAAA,UACnB,sBAAsB;AAAA,UACtB,uBAAuBA,OAAM;AAC5B,gBAAI,CAACA,MAAK,aAAa;AACtB,gCAAkBA,KAAI;AAAA,YACvB;AAAA,UACD;AAAA,UACA,yBAAyBA,OAAM;AAC9B,gBACC,CAAC,iCAAiC;AAAA,cACjCA,MAAK,YAAY;AAAA,YAClB,GACC;AACD,gCAAkBA,KAAI;AAAA,YACvB;AAAA,UACD;AAAA,UACA,oBAAoB;AAAA,QACrB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC3dA;AAAA,kDAAAC,UAAAC,SAAA;AAAA;AAQA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,OAAO;AAAA,gBACN,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,4BACC;AAAA,UACD,2BAA2B;AAAA,UAC3B,yBAAyB;AAAA,UACzB,wBAAwB;AAAA,QACzB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,SAAS,QAAQ,QAAQ,CAAC,GAC/B,aAAa,QAAQ;AACtB,YAAI,qBAAqB,OACxB,oBAAoB;AAErB,YAAI,OAAO,WAAW,UAAU;AAC/B,+BAAqB,OAAO;AAC5B,8BAAoB,OAAO;AAAA,QAC5B;AAOA,iBAAS,gBAAgB,OAAO;AAC/B,gBAAM,cAAc,WAAW,eAAe,KAAK;AAEnD,iBACC,eACA,SAAS,kBAAkB,aAAa,KAAK,KAC7C,WAAW,eAAe,aAAa,KAAK;AAAA,QAE9C;AAOA,iBAAS,iBAAiB,OAAO;AAChC,gBAAM,aAAa,WAAW,cAAc,KAAK;AAEjD,iBACC,cACA,SAAS,kBAAkB,OAAO,UAAU,KAC5C,WAAW,eAAe,OAAO,UAAU;AAAA,QAE7C;AAOA,iBAAS,yBAAyB,OAAO;AACxC,gBAAM,aAAa,WAAW,cAAc,KAAK;AAEjD,iBAAO,EACN,cAAc,SAAS,kBAAkB,OAAO,UAAU;AAAA,QAE5D;AAOA,iBAAS,0BAA0B,OAAO;AACzC,gBAAM,cAAc,WAAW,eAAe,KAAK;AAEnD,iBAAO,EACN,eAAe,SAAS,kBAAkB,OAAO,WAAW;AAAA,QAE9D;AAOA,iBAAS,qBAAqB,OAAO;AACpC,gBAAM,YAAY,WAAW,cAAc,KAAK;AAEhD,iBACE,aAAa,SAAS,oBAAoB,SAAS,KACpD,SAAS,oBAAoB,SAAS;AAAA,QAExC;AAoBA,iBAAS,sBAAsB,OAAOC,OAAM;AAC3C,cAAI,SAAS,iBAAiB,KAAK,GAAG;AACrC,gBAAI,gBAAgB,KAAK,GAAG;AAC3B,kBAAI,CAAC,oBAAoB;AACxB,sBAAM,cAAc,WAAW,eAAe,KAAK;AACnD,sBAAM,MAAM;AAAA,kBACX,OAAO,YAAY,IAAI;AAAA,kBACvB,KAAK,MAAM,IAAI;AAAA,gBAChB;AAEA,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA;AAAA,kBACA,WAAW;AAAA,kBACX,IAAI,OAAO;AACV,2BAAO,MAAM,YAAY;AAAA,sBACxB,YAAY,MAAM,CAAC;AAAA,sBACnB,MAAM,MAAM,CAAC;AAAA,oBACd,CAAC;AAAA,kBACF;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD,OAAO;AACN,kBAAI,oBAAoB;AACvB,sBAAM,MAAM,MAAM;AAElB,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA;AAAA,kBACA,WAAW;AAAA,kBACX,IAAI,OAAO;AACV,2BAAO,MAAM,iBAAiB,OAAO,GAAG;AAAA,kBACzC;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD;AAEA,gBACC,CAAC,0BAA0B,KAAK,KAChC,CAAC,yBAAyB,KAAK,KAC/B,CAAC,qBAAqB,KAAK,GAC1B;AACD,kBAAI,iBAAiB,KAAK,GAAG;AAC5B,oBAAI,CAAC,mBAAmB;AACvB,wBAAM,aAAa,WAAW,cAAc,KAAK;AACjD,wBAAM,MAAM;AAAA,oBACX,OAAO,MAAM,IAAI;AAAA,oBACjB,KAAK,WAAW,IAAI;AAAA,kBACrB;AAEA,0BAAQ,OAAO;AAAA,oBACd,MAAAA;AAAA,oBACA;AAAA,oBACA,WAAW;AAAA,oBACX,IAAI,OAAO;AACV,6BAAO,MAAM,YAAY;AAAA,wBACxB,MAAM,MAAM,CAAC;AAAA,wBACb,WAAW,MAAM,CAAC;AAAA,sBACnB,CAAC;AAAA,oBACF;AAAA,kBACD,CAAC;AAAA,gBACF;AAAA,cACD,OAAO;AACN,oBAAI,mBAAmB;AACtB,wBAAM,MAAM,MAAM;AAElB,0BAAQ,OAAO;AAAA,oBACd,MAAAA;AAAA,oBACA;AAAA,oBACA,WAAW;AAAA,oBACX,IAAI,OAAO;AACV,6BAAO,MAAM,gBAAgB,OAAO,GAAG;AAAA,oBACxC;AAAA,kBACD,CAAC;AAAA,gBACF;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,UAAUA,OAAM;AACxB,gBAAM,QAAQ,WAAW,aAAaA,KAAI;AAE1C,gCAAsB,OAAOA,KAAI;AAAA,QAClC;AAEA,eAAO;AAAA,UACN,qBAAqB;AAAA,UACrB,qBAAqB;AAAA,UACrB,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,UACnB,mBAAmB;AAAA,UACnB,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,UACnB,wBAAwB;AAAA,UACxB,sBAAsB;AAAA,UACtB,0BAA0B;AAAA,UAC1B,aAAaA,OAAM;AAClB,gBAAIA,MAAK,MAAM;AACd;AAAA,gBACC,WAAW,cAAcA,MAAK,IAAI;AAAA,gBAClCA;AAAA,cACD;AAAA,YACD;AAEA,gBAAIA,MAAK,MAAM;AACd;AAAA,gBACC,WAAW,cAAcA,MAAK,IAAI;AAAA,gBAClCA;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UACA,oBAAoB;AAAA,QACrB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxSA;AAAA,gDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAMjB,QAAM,WAAW;AAAA,MAChB;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,IACD,EAAE,KAAK,GAAG;AAUV,aAAS,YAAYC,OAAM;AAC1B,YAAM,IAAIA,MAAK;AAEf,UACC,MAAM,oBACN,MAAM,iBACN,MAAM,aACN,MAAM,aACL;AACD,eAAOA,MAAK;AAAA,MACb;AACA,UAAI,MAAM,cAAc;AACvB,eAAOA,MAAK;AAAA,MACb;AACA,aAAO;AAAA,IACR;AAOA,aAAS,YAAYA,OAAM;AAC1B,YAAM,IAAIA,MAAK,OAAO;AAEtB,UACC,MAAM,iBACNA,MAAK,OAAO,eAAeA,SAC3BA,MAAK,OAAO,WACX;AAED,eAAO;AAAA,MACR;AACA,UAAI,MAAM,oBAAoB;AAE7B,eAAO;AAAA,MACR;AACA,YAAM,WAAW,YAAYA,MAAK,MAAM;AAExC,aAAO,aAAa,QAAQ,SAAS,GAAG,EAAE,MAAMA;AAAA,IACjD;AAGA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,OAAO,EAAE,CAAC;AAAA,QACpC,SAAS;AAAA,QAET,UAAU;AAAA,UACT,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,SAAS,QAAQ,QAAQ,CAAC,KAAK;AAQrC,iBAAS,MAAM,WAAW,UAAU;AACnC,gBAAM,YAAY,WAAW,eAAe,SAAS;AACrD,gBAAM,YAAY,WAAW,cAAc,SAAS;AACpD,gBAAM,iBACL,CAAC,aAAa,SAAS,kBAAkB,WAAW,SAAS;AAC9D,gBAAM,iBACL,CAAC,aAAa,SAAS,kBAAkB,WAAW,SAAS;AAE9D,cACE,aAAa,UAAU,CAAC,kBACxB,aAAa,WAAW,CAAC,gBACzB;AACD,oBAAQ,OAAO;AAAA,cACd,KAAK,UAAU;AAAA,cACf,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,KACC,aAAa,SACV,iCACA;AAAA,cACL;AAAA,cACA,IAAI,OAAO;AACV,oBACC,aACA,aACA,WAAW;AAAA,kBACV;AAAA,kBACA;AAAA,gBACD,GACC;AACD,yBAAO;AAAA,gBACR;AAEA,sBAAM,QAAQ,YACX,UAAU,MAAM,CAAC,IACjB,UAAU,MAAM,CAAC;AACpB,sBAAM,MAAM,YACT,UAAU,MAAM,CAAC,IACjB,UAAU,MAAM,CAAC;AACpB,sBAAME,QAAO,aAAa,SAAS,QAAQ;AAE3C,uBAAO,MAAM,iBAAiB,CAAC,OAAO,GAAG,GAAGA,KAAI;AAAA,cACjD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,CAAC,QAAQ,EAAED,OAAM;AAChB,gBAAI,WAAW,WAAW,YAAYA,KAAI,GAAG;AAC5C;AAAA,YACD;AAEA,kBAAM,YAAY,WAAW,aAAaA,KAAI;AAE9C,gBAAI,SAAS,iBAAiB,SAAS,GAAG;AACzC,oBAAM,WAAW,MAAM;AAAA,YACxB;AAAA,UACD;AAAA,UAEA,aAAaA,OAAM;AAClB,kBAAM,YACLA,MAAK,QACL,WAAW;AAAA,cACVA,MAAK;AAAA,cACL,SAAS;AAAA,YACV;AACD,kBAAM,aACLA,MAAK,QACL,WAAW;AAAA,cACVA,MAAK;AAAA,cACL,SAAS;AAAA,YACV;AAED,gBAAI,WAAW;AACd,oBAAM,WAAW,MAAM;AAAA,YACxB;AACA,gBAAI,YAAY;AACf,oBAAM,YAAY,MAAM;AAAA,YACzB;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzNA;AAAA,kDAAAE,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,sBAAsB;AAAA,YACtB,YAAY;AAAA,YACZ,uBAAuB;AAAA,YACvB,kBAAkB;AAAA,YAClB,uBAAuB,CAAC,QAAQ,OAAO,YAAY,QAAQ;AAAA,UAC5D;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,YAAY;AAAA,gBACX,MAAM;AAAA,cACP;AAAA,cACA,uBAAuB;AAAA,gBACtB,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM,CAAC,QAAQ,OAAO,YAAY,QAAQ;AAAA,gBAC3C;AAAA,gBACA,aAAa;AAAA,gBACb,UAAU;AAAA,gBACV,UAAU;AAAA,cACX;AAAA,cACA,uBAAuB;AAAA,gBACtB,MAAM;AAAA,cACP;AAAA,cACA,kBAAkB;AAAA,gBACjB,MAAM;AAAA,cACP;AAAA,cACA,sBAAsB;AAAA,gBACrB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QAET,UAAU;AAAA,UACT,2BACC;AAAA,UACD,2BACC;AAAA,UACD,uBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM;AAAA,UACL;AAAA,YACC,YAAAC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD,IAAI,QAAQ;AACZ,cAAM,aAAa,QAAQ;AAC3B,YAAI,sBAAsB;AAY1B,iBAAS,iBAAiBC,OAAM;AAC/B,cAAIA,MAAK,WAAW,WAAW,GAAG;AACjC,mBAAO;AAAA,UACR;AACA,cAAIA,MAAK,WAAW,CAAC,EAAE,SAAS,4BAA4B;AAC3D,mBAAO;AAAA,UACR;AACA,cAAIA,MAAK,WAAW,WAAW,GAAG;AACjC,mBAAO;AAAA,UACR;AACA,iBAAO;AAAA,QACR;AAOA,iBAAS,6BAA6BA,OAAM;AAC3C,iBAAO,sBAAsB,QAAQ,iBAAiBA,KAAI,CAAC;AAAA,QAC5D;AAOA,iBAAS,wBAAwBA,OAAM;AACtC,cAAIA,MAAK,WAAW,CAAC,GAAG;AACvB,mBAAOA,MAAK,WAAW,CAAC,EAAE,MAAM;AAAA,UACjC;AACA,iBAAO;AAAA,QACR;AAWA,iBAAS,wBAAwB,MAAM,OAAO;AAC7C,iBAAO,KAAK,IAAI,MAAM,IAAI,MAAM,OAAO,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC;AAAA,QAChE;AAEA,eAAO;AAAA,UACN,kBAAkBA,OAAM;AACvB,gBAAI,CAAC,uBAAuB;AAC3B,kBACC,uBACA,wBACA,wBAAwB,qBAAqBA,KAAI,IAAI,GACpD;AAED,sCAAsB;AAAA,cACvB;AAEA,kBAAI,qBAAqB;AACxB,sBAAM,gCACJ,6BAA6BA,KAAI,GAClC,iCACC;AAAA,kBACC;AAAA,gBACD;AACF,oBAAI,yBACF,wBAAwBA,KAAI,GAC7B,0BACC,wBAAwB,mBAAmB;AAE7C,oBAAID,aAAY;AACf,4CACC,2BACA,wBAAwB,YAAY;AACrC,2CACC,0BACA,uBAAuB,YAAY;AAAA,gBACrC;AAOA,oBACC,kCACA,gCACC;AACD,sBACC,gCACA,gCACC;AACD,4BAAQ,OAAO;AAAA,sBACd,MAAAC;AAAA,sBACA,WAAW;AAAA,sBACX,MAAM;AAAA,wBACL,SACC,sBACC,6BACD;AAAA,wBACD,SACC,sBACC,8BACD;AAAA,sBACF;AAAA,oBACD,CAAC;AAAA,kBACF;AAAA,gBACD,OAAO;AACN,sBACC,2BACA,0BACA,yBAAyB,yBACxB;AACD,4BAAQ,OAAO;AAAA,sBACd,MAAAA;AAAA,sBACA,WAAW;AAAA,oBACZ,CAAC;AAAA,kBACF;AAAA,gBACD;AAAA,cACD;AAEA,oCAAsBA;AAAA,YACvB;AAEA,gBAAI,CAAC,kBAAkB;AACtB,oBAAM,mBAAmBA,MAAK,WAAW;AAAA,gBACxC,eAAa,UAAU,SAAS;AAAA,cACjC;AACA,oBAAM,kBAAkBD,cACrB,eAAa,UAAU,MAAM,KAAK,YAAY,IAC9C,eAAa,UAAU,MAAM;AAChC,oBAAM,qBAAqB,iBACzB,IAAI,eAAe,EACnB;AAAA,gBACA,CAAC,MAAME,QAAO,UAAU,MAAMA,SAAQ,CAAC,IAAI;AAAA,cAC5C;AAED,kBAAI,uBAAuB,IAAI;AAC9B,wBAAQ,OAAO;AAAA,kBACd,MAAM,iBAAiB,kBAAkB;AAAA,kBACzC,WAAW;AAAA,kBACX,MAAM;AAAA,oBACL,YACC,iBAAiB,kBAAkB,EAAE,MACnC;AAAA,kBACJ;AAAA,kBACA,IAAI,OAAO;AACV,wBACC,iBAAiB;AAAA,sBAChB,eACC,WAAW;AAAA,wBACV;AAAA,sBACD,EAAE,UACF,WAAW;AAAA,wBACV;AAAA,sBACD,EAAE;AAAA,oBACJ,GACC;AAED,6BAAO;AAAA,oBACR;AAEA,2BAAO,MAAM;AAAA,sBACZ;AAAA,wBACC,iBAAiB,CAAC,EAAE,MAAM,CAAC;AAAA,wBAC3B,iBAAiB,GAAG,EAAE,EAAE,MAAM,CAAC;AAAA,sBAChC;AAAA,sBACA,iBAGE,MAAM,EAGN,KAAK,CAAC,YAAY,eAAe;AACjC,8BAAM,QACL,gBAAgB,UAAU;AAC3B,8BAAM,QACL,gBAAgB,UAAU;AAE3B,+BAAO,QAAQ,QAAQ,IAAI;AAAA,sBAC5B,CAAC,EAGA;AAAA,wBACA,CAAC,YAAY,WAAWA,WAAU;AACjC,gCAAM,qBACLA,WACA,iBAAiB,SAAS,IACvB,KACA,WACC,QAAQ,EACR;AAAA,4BACA,iBACCA,MACD,EAAE,MAAM,CAAC;AAAA,4BACT,iBACCA,SACC,CACF,EAAE,MAAM,CAAC;AAAA,0BACV;AAEJ,iCACC,aACA,WAAW;AAAA,4BACV;AAAA,0BACD,IACA;AAAA,wBAEF;AAAA,wBACA;AAAA,sBACD;AAAA,oBACF;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC9TA;AAAA,0CAAAC,UAAAC,SAAA;AAYA,QAAI,iBAAiB,SAAS,GAAG,GAAG;AACnC,UAAI,GAAG,OACL,QAAQ,GACR,OAAO,GACP,OAAO,GACP,WAAW,OAAO;AAEpB,eAAS,QAAQ,KAAK,KAAKC,OAAM;AAChC,YAAIA,OAAM;AACT,eAAK,IAAI,KAAKA,QAAO,QAAQ,KAAK,CAAC,GAAGA,QAAO,MAAMA,QAAO,KAAK,GAAE;AACjE,iBAAO,CAAC,IAAI,MAAM,MAAM,GAAG,CAAC;AAAA,QAC7B;AACA,QAAAA,QAAO,YAAY,SAAS,QAAQ,IAAI,OAAO,GAAG,CAAC;AACnD,eAAOA,QAAO,KAAKA,QAAO,MAAOA,QAAO,IAAI,WAAW,GAAG,KAAK,GAAIA,QAAO,MAAMA,QAAO,OAAOA,QAC3FA,QAAO,KAAK,KACZA,QAAO,KAAKA,QAAO,IACnBA,QAAO,KAAKA,QAAO,KACnBA,QAAO,KAAKA,QAAO,KACnBA,QAAO,KAAKA,QAAO,KACnBA,QAAO,KAAKA,QAAO,KACnBA,QAAO,MAAMA,QAAO,IACpBA,QAAO;AAAA,MACX;AAGA,WAAK,KAAG,QAAQ,KAAG,IAAK,QAAM,SAAQ;AACrC,gBAAQ,QAAQ,GAAG,MAAM;AACzB,gBAAQ,QAAQ,GAAG,MAAM;AAEzB,YAAI,QAAQ,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,IAAI;AACzD,kBAAQ,QAAQ,GAAG,MAAM,IAAI;AAC7B,kBAAQ,QAAQ,GAAG,MAAM,OAAO,CAAC;AACjC,iBAAO;AAAA,QACR;AAEA,YAAI,SAAS,MAAO,QAAQ,QAAQ,QAAS,KAAK;AAAA,MACnD;AACA,aAAO;AAAA,IACR;AAEA,QAAI;AACH,MAAAD,QAAO,UAAU;AAAA,IAClB,SAAS,GAAG;AACX,aAAO,iBAAiB;AAAA,IACzB;AAAA;AAAA;;;ACxDA;AAAA,+CAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAAjB,QACC,iBAAiB;AAiBlB,aAAS,gBAAgBC,OAAM;AAC9B,YAAM,aAAa,SAAS,sBAAsBA,KAAI;AAEtD,UAAI,eAAe,MAAM;AACxB,eAAO;AAAA,MACR;AAEA,aAAOA,MAAK,IAAI,QAAQ;AAAA,IACzB;AASA,QAAM,gBAAgB;AAAA,MACrB,IAAI,GAAG,GAAG;AACT,eAAO,KAAK;AAAA,MACb;AAAA,MACA,KAAK,GAAG,GAAG;AACV,eAAO,EAAE,YAAY,KAAK,EAAE,YAAY;AAAA,MACzC;AAAA,MACA,KAAK,GAAG,GAAG;AACV,eAAO,eAAe,GAAG,CAAC,KAAK;AAAA,MAChC;AAAA,MACA,MAAM,GAAG,GAAG;AACX,eAAO,eAAe,EAAE,YAAY,GAAG,EAAE,YAAY,CAAC,KAAK;AAAA,MAC5D;AAAA,MACA,KAAK,GAAG,GAAG;AACV,eAAO,cAAc,IAAI,GAAG,CAAC;AAAA,MAC9B;AAAA,MACA,MAAM,GAAG,GAAG;AACX,eAAO,cAAc,KAAK,GAAG,CAAC;AAAA,MAC/B;AAAA,MACA,MAAM,GAAG,GAAG;AACX,eAAO,cAAc,KAAK,GAAG,CAAC;AAAA,MAC/B;AAAA,MACA,OAAO,GAAG,GAAG;AACZ,eAAO,cAAc,MAAM,GAAG,CAAC;AAAA,MAChC;AAAA,IACD;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,UACA;AAAA,YACC,0BAA0B;AAAA,YAC1B,eAAe;AAAA,YACf,oBAAoB;AAAA,YACpB,SAAS;AAAA,YACT,SAAS;AAAA,UACV;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,OAAO,MAAM;AAAA,UACrB;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,eAAe;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,cACA,SAAS;AAAA,gBACR,MAAM;AAAA,cACP;AAAA,cACA,SAAS;AAAA,gBACR,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,0BAA0B;AAAA,gBACzB,MAAM;AAAA,cACP;AAAA,cACA,oBAAoB;AAAA,gBACnB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,UACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM;AAAA,UACLE;AAAA,UACA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD,IAAI,QAAQ;AACZ,cAAM,cAAc,CAAC;AACrB,cAAM,eACL,cACCA,UAAS,cAAc,MAAM,OAAO,UAAU,MAAM,GACrD;AAGD,YAAI,QAAQ;AACZ,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,iBAAiBD,OAAM;AACtB,oBAAQ;AAAA,cACP,OAAO;AAAA,cACP,UAAU;AAAA,cACV,eAAe;AAAA,cACf,UAAU;AAAA,cACV,SAASA,MAAK,WAAW;AAAA,YAC1B;AAAA,UACD;AAAA,UAEA,0BAA0B;AACzB,oBAAQ,MAAM;AAAA,UACf;AAAA,UAEA,cAAcA,OAAM;AACnB,gBAAIA,MAAK,OAAO,SAAS,oBAAoB;AAC5C,oBAAM,WAAW;AAAA,YAClB;AAAA,UACD;AAAA,UAEA,SAASA,OAAM;AACd,gBAAIA,MAAK,OAAO,SAAS,iBAAiB;AACzC;AAAA,YACD;AAEA,gBAAI,sBAAsBA,MAAK,UAAU;AACxC,oBAAM,WAAW;AACjB;AAAA,YACD;AAEA,kBAAM,WAAW,MAAM;AACvB,kBAAM,UAAU,MAAM;AACtB,kBAAM,WAAW,gBAAgBA,KAAI;AAGrC,kBAAM,SACL,MAAM,YACN,WAAW,iBAAiB,MAAM,UAAUA,OAAM;AAAA,cACjD,iBAAiB;AAAA,YAClB,CAAC;AAEF,gBAAI,0BAA0B,MAAM;AAEpC,gBAAI,QAAQ;AAEX,qBAAO,QAAQ,CAAC,OAAOE,WAAU;AAChC,sBAAM,gBAAgB,OAAOA,SAAQ,CAAC;AAEtC,oBACC,iBACA,MAAM,IAAI,MAAM,OAAO,cAAc,IAAI,IAAI,OAC5C,GACA;AACD,4CAA0B;AAAA,gBAC3B;AAAA,cACD,CAAC;AAGD,kBACC,CAAC,2BACDF,MAAK,IAAI,MAAM,OAAO,OAAO,GAAG,EAAE,EAAE,IAAI,IAAI,OAAO,GAClD;AACD,0CAA0B;AAAA,cAC3B;AAGA,kBACC,CAAC,2BACD,OAAO,CAAC,EAAE,IAAI,MAAM,OAAO,MAAM,SAAS,IAAI,IAAI,OACjD,GACA;AACD,0CAA0B;AAAA,cAC3B;AAAA,YACD;AAEA,kBAAM,WAAWA;AAEjB,gBAAI,aAAa,MAAM;AACtB,oBAAM,WAAW;AAAA,YAClB;AAEA,gBAAI,4BAA4B,yBAAyB;AACxD,oBAAM,gBAAgB,aAAa;AACnC;AAAA,YACD;AAEA,gBACC,aAAa,QACb,aAAa,QACb,UAAU,SACT;AACD;AAAA,YACD;AAEA,gBAAI,CAAC,aAAa,UAAU,QAAQ,GAAG;AACtC,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAKA,MAAK,IAAI;AAAA,gBACd,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL;AAAA,kBACA;AAAA,kBACA,OAAAC;AAAA,kBACA,aAAa,cAAc,iBAAiB;AAAA,kBAC5C,SAAS,UAAU,aAAa;AAAA,gBACjC;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC3QA;AAAA,+CAAAE,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,YAAY;AAAA,UACb;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,YAAY;AAAA,gBACX,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QAET,UAAU;AAAA,UACT,UACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,YAAAC,YAAW,CAAC,IAAI,QAAQ;AACjC,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,oBAAoBC,OAAM;AACzB,kBAAM,iBAAiBA,MAAK,aAAa;AAAA,cACxC,UAAQ,KAAK,GAAG,SAAS;AAAA,YAC1B;AACA,kBAAM,kBAAkBD,cACrB,UAAQ,KAAK,GAAG,KAAK,YAAY,IACjC,UAAQ,KAAK,GAAG;AACnB,kBAAM,YAAY,eAAe;AAAA,cAChC,UAAQ,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS;AAAA,YAClD;AACA,gBAAI,QAAQ;AAEZ,2BAAe,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,SAAS;AAC9C,oBAAM,mBAAmB,gBAAgB,IAAI,GAC5C,sBAAsB,gBAAgB,IAAI;AAE3C,kBAAI,sBAAsB,kBAAkB;AAC3C,wBAAQ,OAAO;AAAA,kBACd,MAAM;AAAA,kBACN,WAAW;AAAA,kBACX,IAAI,OAAO;AACV,wBAAI,aAAa,OAAO;AACvB,6BAAO;AAAA,oBACR;AACA,2BAAO,MAAM;AAAA,sBACZ;AAAA,wBACC,eAAe,CAAC,EAAE,MAAM,CAAC;AAAA,wBACzB,eAAe,GAAG,EAAE,EAAE,MAAM,CAAC;AAAA,sBAC9B;AAAA,sBACA,eAGE,MAAM,EAGN,KAAK,CAAC,OAAO,UAAU;AACvB,8BAAM,QACL,gBAAgB,KAAK;AACtB,8BAAM,QACL,gBAAgB,KAAK;AAEtB,+BAAO,QAAQ,QAAQ,IAAI;AAAA,sBAC5B,CAAC,EAGA;AAAA,wBACA,CAAC,YAAY,YAAYE,WAAU;AAClC,gCAAM,sBACLA,WACA,eAAe,SAAS,IACrB,KACA,WACC,QAAQ,EACR;AAAA,4BACA,eACCA,MACD,EAAE,MAAM,CAAC;AAAA,4BACT,eACCA,SACC,CACF,EAAE,MAAM,CAAC;AAAA,0BACV;AAEJ,iCACC,aACA,WAAW;AAAA,4BACV;AAAA,0BACD,IACA;AAAA,wBAEF;AAAA,wBACA;AAAA,sBACD;AAAA,oBACF;AAAA,kBACD;AAAA,gBACD,CAAC;AACD,wBAAQ;AACR,uBAAO;AAAA,cACR;AACA,qBAAO;AAAA,YACR,GAAG,eAAe,CAAC,CAAC;AAAA,UACrB;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC3IA;AAAA,yDAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAWjB,aAAS,eAAeC,OAAM;AAC7B,YAAM,SAASA,MAAK;AAEpB,aACCA,MAAK,SAAS,oBACd,SAAS,WAAW,MAAM,KAC1B,OAAO,SAASA;AAAA,IAElB;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM,CAAC,UAAU,OAAO;AAAA,cACzB;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,UAAU;AAAA,oBACT,MAAM,CAAC,UAAU,SAAS,KAAK;AAAA,kBAChC;AAAA,kBACA,WAAW;AAAA,oBACV,MAAM,CAAC,UAAU,SAAS,KAAK;AAAA,kBAChC;AAAA,kBACA,SAAS;AAAA,oBACR,MAAM,CAAC,UAAU,SAAS,KAAK;AAAA,kBAChC;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,iBAAiB;AAAA,UACjB,cAAc;AAAA,QACf;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,SAAS,QAAQ,QAAQ,CAAC,GAC/B,aAAa,QAAQ;AACtB,YAAI,kBAAkB,MACrB,iBAAiB,MACjB,gBAAgB,MAChB,iBAAiB,OACjB,gBAAgB,OAChB,eAAe;AAEhB,YAAI,OAAO,WAAW,UAAU;AAC/B,4BAAkB,OAAO,cAAc;AACvC,2BAAiB,OAAO,aAAa;AACrC,0BAAgB,OAAO,YAAY;AACnC,2BAAiB,OAAO,cAAc;AACtC,0BAAgB,OAAO,aAAa;AACpC,yBAAe,OAAO,YAAY;AAAA,QACnC,WAAW,WAAW,SAAS;AAC9B,4BAAkB;AAClB,2BAAiB;AACjB,0BAAgB;AAChB,2BAAiB;AACjB,0BAAgB;AAChB,yBAAe;AAAA,QAChB;AAWA,iBAAS,aAAa,gBAAgBC,OAAM;AAC3C,iBACC,SAAS,aAAa,cAAc,KACnC,SAAS,eAAe,cAAc,KACtC,CAAC,eAAeA,KAAI,KACpB,SAAS,aAAa,cAAc,KACpCA,MAAK,UACLA,MAAK,OAAO,SAAS,gBACrB,mBACC,SAAS;AAAA,YACRA,MAAK;AAAA,YACL;AAAA,UACD;AAAA,QAEJ;AAOA,iBAAS,oBAAoBA,OAAM;AAClC,gBAAM,iBAAiB,WAAW,eAAeA,KAAI;AAErD,cACC,kBACA,CAAC,aAAa,gBAAgBA,KAAI,KAClC,SAAS,kBAAkB,gBAAgBA,KAAI,GAC9C;AACD,kBAAM,WAAW,WAAW;AAAA,cAC3B;AAAA,cACAA;AAAA,YACD;AACA,gBAAI;AACJ,gBAAI;AAEJ,gBAAI,eAAeA,KAAI,GAAG;AACzB,6BAAe;AACf,+BAAiB;AAAA,YAClB,WAAWA,MAAK,SAAS,aAAa;AACrC,6BAAe;AACf,+BAAiB;AAAA,YAClB,OAAO;AACN,6BAAe;AACf,+BAAiB;AAAA,YAClB;AAEA,gBAAI,gBAAgB,CAAC,UAAU;AAC9B,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,yBAAO,MAAM,iBAAiBA,OAAM,GAAG;AAAA,gBACxC;AAAA,cACD,CAAC;AAAA,YACF,WAAW,kBAAkB,UAAU;AACtC,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,yBAAO,MAAM,YAAY;AAAA,oBACxB,eAAe,MAAM,CAAC;AAAA,oBACtBA,MAAK,MAAM,CAAC;AAAA,kBACb,CAAC;AAAA,gBACF;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,0BAA0BA,OAAM;AACxC,gBAAM,QAAQA,MAAK;AACnB,cAAI;AAEJ,cAAI,MAAM,SAAS,GAAG;AACrB,2BAAe,WAAW,eAAe,MAAM,CAAC,CAAC;AAAA,UAClD,OAAO;AACN,2BAAe,WAAW,aAAaA,OAAM,CAAC;AAAA,UAC/C;AAEA,8BAAoB,YAAY;AAAA,QACjC;AAEA,eAAO;AAAA,UACN,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACvOA;AAAA,iEAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM,CAAC,UAAU,OAAO;AAAA,cACzB;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,WAAW;AAAA,oBACV,MAAM,CAAC,UAAU,SAAS,QAAQ;AAAA,kBACnC;AAAA,kBACA,OAAO;AAAA,oBACN,MAAM,CAAC,UAAU,SAAS,QAAQ;AAAA,kBACnC;AAAA,kBACA,YAAY;AAAA,oBACX,MAAM,CAAC,UAAU,SAAS,QAAQ;AAAA,kBACnC;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,iBAAiB;AAAA,UACjB,cAAc;AAAA,QACf;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,aACL,OAAO,QAAQ,QAAQ,CAAC,MAAM,WAC3B,QAAQ,QAAQ,CAAC,IACjB;AACJ,cAAM,iBACL,OAAO,QAAQ,QAAQ,CAAC,MAAM,WAAW,QAAQ,QAAQ,CAAC,IAAI,CAAC;AAOhE,iBAAS,gBAAgBC,OAAM;AAC9B,cAAIA,MAAK,IAAI;AACZ,mBAAO;AAAA,UACR;AAEA,gBAAM,SAASA,MAAK;AAEpB,iBACC,OAAO,SAAS,sBACf,OAAO,SAAS,eACf,OAAO,SAAS,SAChB,OAAO,SAAS,SAChB,OAAO;AAAA,QAEX;AAOA,iBAAS,qBAAqBA,OAAM;AACnC,cAAIA,MAAK,SAAS,2BAA2B;AAE5C,gBACCA,MAAK,SACL,SAAS;AAAA,cACR,WAAW,cAAcA,OAAM,EAAE,MAAM,EAAE,CAAC;AAAA,YAC3C,GACC;AACD,qBAAO,eAAe,cAAc;AAAA,YACrC;AAAA,UACD,WAAW,gBAAgBA,KAAI,GAAG;AACjC,mBAAO,eAAe,SAAS;AAAA,UAGhC,WAAW,CAACA,MAAK,WAAW;AAC3B,mBAAO,eAAe,aAAa;AAAA,UACpC;AAEA,iBAAO;AAAA,QACR;AAOA,iBAAS,cAAcA,OAAM;AAC5B,gBAAM,iBAAiB,qBAAqBA,KAAI;AAEhD,cAAI,mBAAmB,UAAU;AAChC;AAAA,UACD;AAEA,gBAAM,aAAa,WAAW;AAAA,YAC7BA;AAAA,YACA,SAAS;AAAA,UACV;AACA,gBAAM,YAAY,WAAW,eAAe,UAAU;AACtD,gBAAM,aAAa,WAAW,eAAe,WAAW,UAAU;AAElE,cAAI,cAAc,mBAAmB,SAAS;AAC7C,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK;AAAA,gBACJ,OAAO,UAAU,IAAI;AAAA,gBACrB,KAAK,WAAW,IAAI;AAAA,cACrB;AAAA,cACA,WAAW;AAAA,cACX,IAAI,OAAO;AACV,sBAAM,WACL,WAAW,kBAAkB,UAAU;AAGxC,oBAAI,SAAS,KAAK,aAAW,QAAQ,SAAS,MAAM,GAAG;AACtD,yBAAO;AAAA,gBACR;AACA,uBAAO,MAAM;AAAA,kBACZ,CAAC,UAAU,MAAM,CAAC,GAAG,WAAW,MAAM,CAAC,CAAC;AAAA,kBACxC,SAAS;AAAA,oBACR,CAACC,OAAM,YACNA,QAAO,WAAW,QAAQ,OAAO;AAAA,oBAClC;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF,WAAW,CAAC,cAAc,mBAAmB,UAAU;AACtD,oBAAQ,OAAO;AAAA,cACd,MAAAD;AAAA,cACA,KAAK,WAAW;AAAA,cAChB,WAAW;AAAA,cACX,KAAK,WAAS,MAAM,gBAAgB,WAAW,GAAG;AAAA,YACnD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,yBAAyB;AAAA,UACzB,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,QACrB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzMA;AAAA,qDAAAE,UAAAC,SAAA;AAAA;AAOA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,OAAO;AAAA,UACzB;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,YAAY;AAAA,gBACX,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM,CAAC,MAAM,MAAM,MAAM,OAAO;AAAA,gBACjC;AAAA,gBACA,aAAa;AAAA,cACd;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,qBAAqB;AAAA,UACrB,qBAAqB;AAAA,UACrB,sBAAsB;AAAA,UACtB,sBAAsB;AAAA,QACvB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,SAAS,QAAQ,QAAQ,CAAC,MAAM,UACrC,yBACE,QAAQ,QAAQ,CAAC,KAAK,QAAQ,QAAQ,CAAC,EAAE,cAAe,CAAC,GAC3D,UAAU,CAAC;AAEZ,YAAI;AAEJ,YAAI,uBAAuB,QAAQ;AAClC,kBAAQ,iBAAiB,uBAAuB,SAAS,IAAI;AAC7D,kBAAQ,mBAAmB,uBAAuB,SAAS,IAAI;AAC/D,kBAAQ,iBAAiB,uBAAuB,SAAS,IAAI;AAC7D,kBAAQ,QAAQ,uBAAuB,SAAS,OAAO;AAAA,QACxD;AAOA,iBAAS,gBAAgB;AACxB,gBAAM,UAAU,CAAC,GAChB,UAAU,CAAC;AAEZ,cAAI,QAAQ,gBAAgB;AAC3B,oBAAQ,KAAK,GAAG;AAChB,oBAAQ,KAAK,GAAG;AAAA,UACjB;AAEA,cAAI,QAAQ,kBAAkB;AAC7B,oBAAQ,KAAK,GAAG;AAChB,oBAAQ,KAAK,GAAG;AAAA,UACjB;AAEA,cAAI,QAAQ,gBAAgB;AAC3B,oBAAQ,KAAK,GAAG;AAChB,oBAAQ,KAAK,GAAG;AAAA,UACjB;AAEA,cAAI,QAAQ,OAAO;AAClB,oBAAQ,KAAK,GAAG;AAChB,oBAAQ,KAAK,GAAG;AAAA,UACjB;AAEA,iBAAO;AAAA,YACN;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAKA,cAAM,aAAa,QAAQ;AAO3B,iBAAS,kBAAkB,OAAO;AACjC,iBAAO,WAAW,QAAQ,SAAS,MAAM,KAAK;AAAA,QAC/C;AAOA,iBAAS,kBAAkB,OAAO;AACjC,iBAAO,WAAW,QAAQ,SAAS,MAAM,KAAK;AAAA,QAC/C;AAQA,iBAAS,mBAAmB,mBAAmB,wBAAwB;AACtE,cACC,WAAW;AAAA,YACV;AAAA,YACA;AAAA,UACD,GACC;AACD,mBAAO;AAAA,UACR;AAEA,cACC,CAAC,QAAQ,SACT,SAAS,oBAAoB,sBAAsB,GAClD;AACD,mBAAO;AAAA,UACR;AAEA,cAAI,QAAQ;AACX,mBAAO,CAAC,kBAAkB,sBAAsB;AAAA,UACjD;AACA,iBAAO,kBAAkB,sBAAsB;AAAA,QAChD;AAQA,iBAAS,mBAAmB,mBAAmB,wBAAwB;AACtE,cACC,CAAC,SAAS;AAAA,YACT;AAAA,YACA;AAAA,UACD,GACC;AACD,mBAAO;AAAA,UACR;AAEA,cAAI,uBAAuB,SAAS,QAAQ;AAC3C,mBAAO;AAAA,UACR;AAEA,cACC,CAAC,WAAW;AAAA,YACX;AAAA,YACA;AAAA,UACD,GACC;AACD,mBAAO;AAAA,UACR;AAEA,cAAI,QAAQ;AACX,mBAAO,kBAAkB,sBAAsB;AAAA,UAChD;AACA,iBAAO,CAAC,kBAAkB,sBAAsB;AAAA,QACjD;AAQA,iBAAS,mBACR,yBACA,mBACC;AACD,cACC,WAAW;AAAA,YACV;AAAA,YACA;AAAA,UACD,GACC;AACD,mBAAO;AAAA,UACR;AAEA,cACC,CAAC,QAAQ,SACT,SAAS,oBAAoB,uBAAuB,GACnD;AACD,mBAAO;AAAA,UACR;AAEA,cAAI,QAAQ;AACX,mBAAO,CAAC,kBAAkB,uBAAuB;AAAA,UAClD;AACA,iBAAO,kBAAkB,uBAAuB;AAAA,QACjD;AAQA,iBAAS,mBACR,yBACA,mBACC;AACD,cACC,CAAC,SAAS;AAAA,YACT;AAAA,YACA;AAAA,UACD,GACC;AACD,mBAAO;AAAA,UACR;AAEA,cACC,CAAC,WAAW;AAAA,YACX;AAAA,YACA;AAAA,UACD,GACC;AACD,mBAAO;AAAA,UACR;AAEA,cAAI,QAAQ;AACX,mBAAO,kBAAkB,uBAAuB;AAAA,UACjD;AACA,iBAAO,CAAC,kBAAkB,uBAAuB;AAAA,QAClD;AAMA,eAAO;AAAA,UACN,SAAS,SAAS,iBAAiBC,OAAM;AACxC,yBAAa,cAAc;AAC3B,kBAAM,SAAS,WAAW;AAE1B,mBAAO,QAAQ,CAAC,OAAO,MAAM;AAC5B,oBAAM,YAAY,OAAO,IAAI,CAAC;AAC9B,oBAAM,YAAY,OAAO,IAAI,CAAC;AAG9B,kBACC,CAAC,SAAS,oBAAoB,KAAK,KACnC,CAAC,SAAS,oBAAoB,KAAK,GAClC;AACD;AAAA,cACD;AAGA,kBACC,MAAM,UAAU,OAChB,mBAAmB,OAAO,SAAS,GAClC;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,KAAK,MAAM;AAAA,kBACX,WAAW;AAAA,kBACX,IAAI,OAAO;AACV,2BAAO,MAAM,gBAAgB,OAAO,GAAG;AAAA,kBACxC;AAAA,gBACD,CAAC;AAAA,cACF;AAGA,kBACC,MAAM,UAAU,OAChB,mBAAmB,OAAO,SAAS,GAClC;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,KAAK;AAAA,oBACJ,OAAO,MAAM,IAAI;AAAA,oBACjB,KAAK,UAAU,IAAI;AAAA,kBACpB;AAAA,kBACA,WAAW;AAAA,kBACX,IAAI,OAAO;AACV,2BAAO,MAAM,YAAY;AAAA,sBACxB,MAAM,MAAM,CAAC;AAAA,sBACb,UAAU,MAAM,CAAC;AAAA,oBAClB,CAAC;AAAA,kBACF;AAAA,gBACD,CAAC;AAAA,cACF;AAGA,kBACC,MAAM,UAAU,OAChB,mBAAmB,WAAW,KAAK,GAClC;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,KAAK,MAAM;AAAA,kBACX,WAAW;AAAA,kBACX,IAAI,OAAO;AACV,2BAAO,MAAM,iBAAiB,OAAO,GAAG;AAAA,kBACzC;AAAA,gBACD,CAAC;AAAA,cACF;AAGA,kBACC,MAAM,UAAU,OAChB,mBAAmB,WAAW,KAAK,GAClC;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,KAAK;AAAA,oBACJ,OAAO,UAAU,IAAI;AAAA,oBACrB,KAAK,MAAM,IAAI;AAAA,kBAChB;AAAA,kBACA,WAAW;AAAA,kBACX,IAAI,OAAO;AACV,2BAAO,MAAM,YAAY;AAAA,sBACxB,UAAU,MAAM,CAAC;AAAA,sBACjB,MAAM,MAAM,CAAC;AAAA,oBACd,CAAC;AAAA,kBACF;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrXA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,EAAE,UAAU,IAAI;AAOtB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,WAAW;AAAA,gBACV,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,cAAc;AAAA,QACf;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,YAAY,QAAQ,QAAQ,CAAC,IAChC,QAAQ,QAAQ,CAAC,EAAE,cAAc,OACjC;AACH,cAAM,aAAa,QAAQ;AAU3B,iBAAS,uBAAuB,MAAM,OAAO,IAAI;AAChD,gBAAM,WAAW,WAAW;AAAA,YAC3B;AAAA,YACA;AAAA,YACA,WAAS,MAAM,UAAU;AAAA,UAC1B;AACA,gBAAM,OAAO,WAAW,eAAe,QAAQ;AAC/C,gBAAM,OAAO,WAAW,cAAc,QAAQ;AAE9C,cACC,CAAC,WAAW,eAAe,MAAM,QAAQ,KACzC,CAAC,WAAW,eAAe,UAAU,IAAI,GACxC;AACD,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AASA,iBAAS,OAAO,UAAU,cAAc;AACvC,kBAAQ,OAAO;AAAA,YACd,MAAM;AAAA,YACN,KAAK,aAAa;AAAA,YAClB,WAAW;AAAA,YACX,MAAM;AAAA,cACL,UAAU,aAAa;AAAA,YACxB;AAAA,YACA,IAAI,OAAO;AACV,oBAAM,gBACL,WAAW,eAAe,YAAY;AACvC,oBAAM,aAAa,WAAW,cAAc,YAAY;AACxD,kBAAI,YAAY;AAEhB,kBAAI,aAAa,MAAM,CAAC,IAAI,cAAc,MAAM,CAAC,MAAM,GAAG;AACzD,4BAAY;AAAA,cACb;AAEA,2BAAa,aAAa;AAE1B,kBAAI,WAAW,MAAM,CAAC,IAAI,aAAa,MAAM,CAAC,MAAM,GAAG;AACtD,6BAAa;AAAA,cACd;AAEA,qBAAO,MAAM,YAAY,cAAc,SAAS;AAAA,YACjD;AAAA,UACD,CAAC;AAAA,QACF;AAQA,iBAAS,YAAYC,OAAM;AAC1B,gBAAM,WAAWA,MAAK,KAAK,iBACxBA,MAAK,KAAK,iBACVA,MAAK;AACR,gBAAM,YAAYA,MAAK;AAGvB,gBAAM,WAAWA,MAAK,YAAY;AAElC,gBAAM,gBAAgB;AAAA,YACrB;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAEA,cAAI,eAAe;AAClB,gBAAI,EAAE,aAAa,WAAW,QAAQA,KAAI,EAAE,SAAS,IAAI,IAAI;AAC5D,qBAAOA,OAAM,aAAa;AAAA,YAC3B;AAAA,UACD;AAAA,QACD;AAQA,iBAAS,iBAAiBA,OAAM;AAC/B,gBAAM,0BAA0B;AAAA,YAC/BA,MAAK;AAAA,YACLA,MAAK;AAAA,YACL;AAAA,UACD;AACA,gBAAM,yBAAyB;AAAA,YAC9BA,MAAK;AAAA,YACLA,MAAK;AAAA,YACL;AAAA,UACD;AAEA,cAAI,yBAAyB;AAC5B,mBAAOA,OAAM,uBAAuB;AAAA,UACrC;AAEA,cAAI,wBAAwB;AAC3B,mBAAOA,OAAM,sBAAsB;AAAA,UACpC;AAAA,QACD;AAQA,iBAAS,SAASA,OAAM;AACvB,gBAAM,WAAWA,MAAK,GAAG,iBACtBA,MAAK,GAAG,iBACRA,MAAK;AACR,gBAAM,YAAYA,MAAK;AAEvB,cAAI,WAAW;AACd,kBAAM,gBAAgB;AAAA,cACrB;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAEA,gBAAI,eAAe;AAClB,qBAAOA,OAAM,aAAa;AAAA,YAC3B;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,sBAAsB;AAAA,UACtB,mBAAmB;AAAA,UACnB,kBAAkB;AAAA,UAClB,mBAAmB;AAAA,UACnB,uBAAuB;AAAA,UACvB,oBAAoB;AAAA,UAEpB,mBAAmBA,OAAM;AACxB,gBAAI,CAACA,MAAK,OAAO;AAChB;AAAA,YACD;AAOA,kBAAM,gBAAgB,WAAW;AAAA,cAChCA,MAAK;AAAA,cACL;AAAA,YACD;AACA,kBAAM,YAAY,WAAW,eAAe,aAAa;AACzD,kBAAM,aAAa,WAAW,cAAc,aAAa;AAEzD,gBACC,CAAC,WAAW,eAAe,WAAW,aAAa,KACnD,CAAC,WAAW,eAAe,eAAe,UAAU,GACnD;AACD,qBAAOA,OAAM,aAAa;AAAA,YAC3B;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxPA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,OAAO;AAAA,gBACN,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,UAAU;AAAA,gBACT,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,cACA,WAAW;AAAA,gBACV,MAAM;AAAA,gBACN,sBAAsB;AAAA,kBACrB,MAAM;AAAA,gBACP;AAAA,cACD;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,kBACC;AAAA,UACD,iBACC;AAAA,UACD,qBACC;AAAA,UACD,cACC;AAAA,UACD,UACC;AAAA,UACD,wBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,UAAU,QAAQ,QAAQ,CAAC,KAAK,EAAE,OAAO,MAAM,UAAU,MAAM;AAErE,cAAM,aAAa,QAAQ;AAW3B,iBAAS,gCAAgCC,OAAM;AAC9C,iBACCA,SACAA,MAAK,SAAS,qBACdA,MAAK,SAAS,aAAa,OAC3BA,MAAK,YACLA,MAAK,SAAS,SAAS,qBACvBA,MAAK,SAAS,aAAa;AAAA,QAE7B;AAOA,iBAAS,0BAA0B,UAAU;AAC5C,iBACC,QAAQ,aAAa,OAAO,OAAO,QAAQ,WAAW,QAAQ;AAAA,QAEhE;AAOA,iBAAS,uBAAuB,UAAU;AACzC,iBAAO,QAAQ,UAAU,QAAQ;AAAA,QAClC;AAUA,iBAAS,oBAAoBA,OAAM,YAAY,aAAaC,OAAM;AACjE,cAAI,YAAY,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,GAAG;AACjD,oBAAQ,OAAO;AAAA,cACd,MAAAD;AAAA,cACA,WAAW;AAAA,cACX,MAAM;AAAA,gBACL,MAAAC;AAAA,cACD;AAAA,cACA,IAAI,OAAO;AACV,uBAAO,MAAM,gBAAgB,YAAY,GAAG;AAAA,cAC7C;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAUA,iBAAS,2BACRD,OACA,YACA,aACAC,OACC;AACD,cAAI,SAAS,oBAAoB,YAAY,WAAW,GAAG;AAC1D,gBAAI,YAAY,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,GAAG;AAC/C,sBAAQ,OAAO;AAAA,gBACd,MAAAD;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL,MAAAC;AAAA,gBACD;AAAA,gBACA,IAAI,OAAO;AACV,yBAAO,MAAM,YAAY;AAAA,oBACxB,WAAW,MAAM,CAAC;AAAA,oBAClB,YAAY,MAAM,CAAC;AAAA,kBACpB,CAAC;AAAA,gBACF;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAUA,iBAAS,gCACRD,OACA,YACA,aACAC,OACC;AACD,cAAI,0BAA0BA,KAAI,GAAG;AACpC,gBAAI,uBAAuBA,KAAI,GAAG;AACjC,kCAAoBD,OAAM,YAAY,aAAaC,KAAI;AAAA,YACxD,OAAO;AACN;AAAA,gBACCD;AAAA,gBACA;AAAA,gBACA;AAAA,gBACAC;AAAA,cACD;AAAA,YACD;AAAA,UACD,WAAW,QAAQ,OAAO;AACzB,gCAAoBD,OAAM,YAAY,aAAaC,KAAI;AAAA,UACxD,OAAO;AACN,uCAA2BD,OAAM,YAAY,aAAaC,KAAI;AAAA,UAC/D;AAAA,QACD;AAOA,iBAAS,yBAAyBD,OAAM;AACvC,gBAAM,SAAS,WAAW,eAAeA,OAAM,CAAC,GAC/CC,QAAO;AAER,cAAI,CAACD,MAAK,YAAYA,MAAK,UAAU;AACpC;AAAA,UACD;AAEA,0CAAgCA,OAAM,OAAO,CAAC,GAAG,OAAO,CAAC,GAAGC,KAAI;AAAA,QACjE;AAOA,iBAAS,yBAAyBD,OAAM;AACvC,gBAAM,SAAS,WAAW,eAAeA,OAAM,CAAC;AAEhD;AAAA,YACCA;AAAA,YACA,OAAO,CAAC;AAAA,YACR,OAAO,CAAC;AAAA,YACR;AAAA,UACD;AAAA,QACD;AASA,iBAAS,yBAAyBA,OAAM,YAAY,aAAa;AAChE,cAAIA,MAAK,QAAQ;AAChB,gBAAI,gCAAgCA,KAAI,GAAG;AAC1C;AAAA,YACD;AACA,gBAAI,WAAW,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,GAAG;AACjD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL,UAAU,WAAW;AAAA,gBACtB;AAAA,gBACA,IAAI,OAAO;AACV,yBAAO,MAAM,gBAAgB,YAAY,GAAG;AAAA,gBAC7C;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD,OAAO;AACN,gBAAI,WAAW,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,GAAG;AACjD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL,OAAO,YAAY;AAAA,gBACpB;AAAA,gBACA,IAAI,OAAO;AACV,yBAAO,MAAM,iBAAiB,aAAa,GAAG;AAAA,gBAC/C;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AASA,iBAAS,6BAA6BA,OAAM,YAAY,aAAa;AACpE,cAAIA,MAAK,QAAQ;AAChB,gBAAI,YAAY,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,GAAG;AAC/C,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL,UAAU,WAAW;AAAA,gBACtB;AAAA,gBACA,IAAI,OAAO;AACV,sBACC,SAAS;AAAA,oBACR;AAAA,oBACA;AAAA,kBACD,GACC;AACD,2BAAO,MAAM,YAAY;AAAA,sBACxB,WAAW,MAAM,CAAC;AAAA,sBAClB,YAAY,MAAM,CAAC;AAAA,oBACpB,CAAC;AAAA,kBACF;AACA,yBAAO;AAAA,gBACR;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD,OAAO;AACN,gBAAI,YAAY,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,GAAG;AAC/C,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL,UAAU,YAAY;AAAA,gBACvB;AAAA,gBACA,IAAI,OAAO;AACV,yBAAO,MAAM,YAAY;AAAA,oBACxB,WAAW,MAAM,CAAC;AAAA,oBAClB,YAAY,MAAM,CAAC;AAAA,kBACpB,CAAC;AAAA,gBACF;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,eAAeA,OAAM;AAC7B,gBAAM,SACLA,MAAK,SAAS,sBAAsB,CAACA,MAAK,SACvC,WAAW,cAAcA,OAAM,CAAC,IAChC,WAAW,eAAeA,OAAM,CAAC;AACrC,gBAAM,aAAa,OAAO,CAAC;AAC3B,gBAAM,cAAc,OAAO,CAAC;AAE5B,eACEA,MAAK,SAAS,mBAAmBA,MAAK,WACvC,WAAW,SAAS,WACnB;AACD;AAAA,cACCA;AAAA,cACA;AAAA,cACA;AAAA,cACA,WAAW;AAAA,YACZ;AACA;AAAA,UACD;AAEA,gBAAM,WAAWA,MAAK,SAAS,OAAO,CAAC,EAAE,QAAQ,OAAO,CAAC,EAAE;AAE3D,cAAI,0BAA0B,QAAQ,GAAG;AACxC,gBAAI,uBAAuB,QAAQ,GAAG;AACrC,uCAAyBA,OAAM,YAAY,WAAW;AAAA,YACvD,OAAO;AACN,2CAA6BA,OAAM,YAAY,WAAW;AAAA,YAC3D;AAAA,UACD,WAAW,QAAQ,UAAU;AAC5B,qCAAyBA,OAAM,YAAY,WAAW;AAAA,UACvD,OAAO;AACN,yCAA6BA,OAAM,YAAY,WAAW;AAAA,UAC3D;AAAA,QACD;AAMA,eAAO;AAAA,UACN,iBAAiB;AAAA,UACjB,kBAAkB;AAAA,UAClB,eAAe;AAAA,UACf,iBAAiB;AAAA,UACjB,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC/YA;AAAA,oDAAAE,UAAAC,SAAA;AAAA;AAOA,QAAM,eAAe;AACrB,QAAM,WAAW;AAWjB,aAASC,QAAO,GAAG;AAClB,aAAO,MAAM,aAAa,CAAC,CAAC;AAAA,IAC7B;AAQA,aAAS,gBAAgB,GAAG;AAC3B,aAAO,GAAGA,QAAO,CAAC,CAAC;AAAA,IACpB;AAQA,aAAS,mBAAmBC,UAAS;AAEpC,UAAI,CAACA,SAAQ,SAAS,GAAG,GAAG;AAC3B,eAAOA,SAAQ,OAAO,GAAG;AAAA,MAC1B;AAEA,aAAOA;AAAA,IACR;AAUA,aAAS,wBAAwB,YAAY;AAC5C,UAAI,UAAU;AASd,UAAI,WAAW,WAAW,GAAG;AAE5B,mBAAW;AAAA,MACZ,OAAO;AAEN,mBAAW;AAEX,YAAI,WAAW,WAAW,GAAG;AAE5B,qBAAW,gBAAgB,WAAW,CAAC,CAAC;AAAA,QACzC,OAAO;AAEN,qBAAW;AACX,qBAAW,WAAW,IAAI,eAAe,EAAE,KAAK,GAAG;AACnD,qBAAW;AAAA,QACZ;AACA,mBAAW,SAAS,MAAM,KAAK,SAAS,UAAU,EAAE,KAAK,EAAE,CAAC;AAAA,MAC7D;AAEA,aAAO;AAAA,IACR;AAYA,aAAS,yBAAyBA,UAAS,YAAY;AACtD,UAAI,UAAU;AAQd,UAAIA,SAAQ,WAAW,GAAG;AAEzB,mBAAWD,QAAOC,SAAQ,CAAC,CAAC;AAAA,MAC7B,OAAO;AAEN,mBAAW;AACX,mBAAWA,SAAQ,IAAID,OAAM,EAAE,KAAK,GAAG;AACvC,mBAAW;AAAA,MACZ;AAEA,iBAAW;AACX,iBAAW,wBAAwB,UAAU;AAE7C,aAAO,IAAI,OAAO,SAAS,GAAG;AAAA,IAC/B;AAWA,aAAS,wBAAwBC,UAAS;AACzC,YAAM,UAAU,KAAKA,SAAQ,IAAID,OAAM,EAAE,KAAK,GAAG,CAAC;AAElD,aAAO,IAAI,OAAO,SAAS,GAAG;AAAA,IAC/B;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,OAAO;AAAA,UACzB;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,YAAY;AAAA,gBACX,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,cACD;AAAA,cACA,SAAS;AAAA,gBACR,MAAM;AAAA,gBACN,OAAO;AAAA,kBACN,MAAM;AAAA,gBACP;AAAA,cACD;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,YAAY;AAAA,oBACX,MAAM;AAAA,oBACN,OAAO;AAAA,sBACN,MAAM;AAAA,oBACP;AAAA,kBACD;AAAA,kBACA,SAAS;AAAA,oBACR,MAAM;AAAA,oBACN,OAAO;AAAA,sBACN,MAAM;AAAA,oBACP;AAAA,kBACD;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,cACA,OAAO;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,YAAY;AAAA,oBACX,MAAM;AAAA,oBACN,OAAO;AAAA,sBACN,MAAM;AAAA,oBACP;AAAA,kBACD;AAAA,kBACA,SAAS;AAAA,oBACR,MAAM;AAAA,oBACN,OAAO;AAAA,sBACN,MAAM;AAAA,oBACP;AAAA,kBACD;AAAA,kBACA,UAAU;AAAA,oBACT,MAAM;AAAA,oBACN,SAAS;AAAA,kBACV;AAAA,gBACD;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,4BACC;AAAA,UACD,wBACC;AAAA,UACD,uBACC;AAAA,UACD,sBACC;AAAA,UACD,qBACC;AAAA,UACD,oBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAG3B,cAAM,eAAe,QAAQ,QAAQ,CAAC,MAAM;AAO5C,cAAM,SAAS,QAAQ,QAAQ,CAAC,KAAK,CAAC;AACtC,cAAM,WAAW,OAAO,SAAS,OAAO,MAAM;AAE9C,cAAM,aAAa,CAAC,SAAS,MAAM,EAAE,OAAO,CAAC,MAAM,SAAS;AAC3D,gBAAME,WAAU;AAAA,YACd,OAAO,IAAI,KAAK,OAAO,IAAI,EAAE,WAAY,OAAO,WAAW,CAAC;AAAA,UAC9D;AACA,gBAAM,aACJ,OAAO,IAAI,KAAK,OAAO,IAAI,EAAE,cAC9B,OAAO,cACP,CAAC;AACF,gBAAM,kBAAkB;AAGxB,eAAK,IAAI,IAAI;AAAA,YACZ,YAAY,eACT,yBAAyBA,UAAS,UAAU,IAC5C,wBAAwBA,QAAO;AAAA,YAClC,UACC,YAAY,eACT,IAAI;AAAA,cACJ,GAAG,wBAAwB,UAAU,CAAC;AAAA,cACtC;AAAA,YACD,IACC,IAAI,OAAO,iBAAiB,GAAG;AAAA,YACnC,eAAe,WAAW,SAAS;AAAA,YACnC,eAAe,IAAI;AAAA,cAClB,KAAKA,SAAQ,IAAID,OAAM,EAAE,KAAK,GAAG,CAAC;AAAA,cAClC;AAAA,YACD;AAAA,YACA,SAAS,IAAI,IAAIC,QAAO;AAAA,UACzB;AAEA,iBAAO;AAAA,QACR,GAAG,CAAC,CAAC;AAUL,iBAAS,YAAYC,OAAM,WAAWC,QAAO,SAAS;AACrD,gBAAM,OAAOD,MAAK,KAAK,YAAY,GAClC,oBAAoB,SAAS,UAAU,OAAO;AAE/C,kBAAQ,OAAO;AAAA,YACd,MAAAA;AAAA,YACA,IAAI,OAAO;AACV,oBAAM,QAAQA,MAAK,MAAM,CAAC;AAC1B,kBAAI,MAAM,QAAQ;AAElB,kBAAI,cAAc;AACjB,oBAAIC,QAAO;AACV,yBAAOA,OAAM,CAAC,EAAE;AAAA,gBACjB;AACA,uBAAO,MAAM,qBAAqB,CAAC,OAAO,GAAG,GAAG,GAAG;AAAA,cACpD;AACA,qBAAOA,OAAM,CAAC,EAAE;AAChB,qBAAO,MAAM;AAAA,gBACZ,CAAC,OAAO,GAAG;AAAA,gBACX,qBAAqBA,OAAM,CAAC,IAAIA,OAAM,CAAC,IAAI;AAAA,cAC5C;AAAA,YACD;AAAA,YACA;AAAA,YACA,MAAM,EAAE,QAAQ;AAAA,UACjB,CAAC;AAAA,QACF;AASA,iBAAS,UAAUD,OAAM,WAAWC,QAAO;AAC1C,kBAAQ,OAAO;AAAA,YACd,MAAAD;AAAA,YACA,IAAI,OAAO;AACV,kBAAI,cAAc;AACjB,uBAAO,MAAM;AAAA,kBACZ,CAACA,MAAK,MAAM,CAAC,GAAGA,MAAK,MAAM,CAAC,IAAI,CAAC;AAAA,kBACjC;AAAA,gBACD;AAAA,cACD;AACA,oBAAM,MAAMA,MAAK,MAAM,CAAC,IAAI,GAC3B,QAAQ,MAAMC,OAAM,CAAC,EAAE;AAExB,qBAAO,MAAM,iBAAiB,CAAC,OAAO,GAAG,GAAG,EAAE;AAAA,YAC/C;AAAA,YACA;AAAA,UACD,CAAC;AAAA,QACF;AAOA,iBAAS,qBAAqBD,OAAM;AACnC,gBAAM,OAAOA,MAAK,KAAK,YAAY,GAClC,OAAO,WAAW,IAAI,GACtB,oBAAoB,SAAS,UAAU,OAAO;AAG/C,cAAIA,MAAK,MAAM,WAAW,KAAK,KAAK,QAAQ,IAAIA,MAAK,KAAK,GAAG;AAC5D;AAAA,UACD;AAEA,gBAAM,aAAa,KAAK,WAAW,KAAKA,MAAK,KAAK;AAClD,gBAAM,WAAW,KAAK,SAAS,KAAKA,MAAK,KAAK;AAG9C,cAAI,cAAc;AACjB,gBAAI,CAAC,YAAY;AAChB,oBAAM,YAAY,KAAK,cAAc,KAAKA,MAAK,KAAK;AACpD,oBAAM,SAAS,YACZ,oBAAoB,UAAU,CAAC,IAC/B;AAEH,kBAAI,KAAK,eAAe;AACvB;AAAA,kBACCA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD,OAAO;AACN;AAAA,kBACCA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAEA,gBAAI,YAAY,SAAS,WAAW,CAAC,UAAU;AAC9C,wBAAUA,OAAM,qBAAqB;AAAA,YACtC;AAAA,UACD,OAAO;AACN,gBAAI,YAAY;AACf,kBAAI,CAAC,WAAW,CAAC,GAAG;AACnB;AAAA,kBACCA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD,OAAO;AACN;AAAA,kBACCA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,WAAW,CAAC;AAAA,gBACb;AAAA,cACD;AAAA,YACD;AAEA,gBAAI,YAAY,SAAS,WAAW,UAAU;AAC7C,wBAAUA,OAAM,yBAAyB,QAAQ;AAAA,YAClD;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,UAAU;AACT,kBAAM,WAAW,WAAW,eAAe;AAE3C,qBACE,OAAO,WAAS,MAAM,SAAS,SAAS,EACxC,QAAQ,oBAAoB;AAAA,UAC/B;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC9bA;AAAA,4CAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAYjB,aAAS,uBAAuB,YAAY;AAC3C,YAAM,aAAa,CAAC;AAEpB,eAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC3C,cAAM,YAAY,WAAW,CAAC;AAE9B,YACC,UAAU,SAAS,yBACnB,UAAU,WAAW,SAAS,aAC9B,UAAU,WAAW,UAAU,cAC9B;AACD,qBAAW,CAAC,IAAI;AAAA,QACjB,OAAO;AACN;AAAA,QACD;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAOA,aAAS,kBAAkBC,OAAM;AAChC,aAAOA,MAAK,SAAS;AAAA,IACtB;AAOA,aAAS,sBAAsB,QAAQ;AACtC,aAAO,OAAO,MAAM,iBAAiB;AAAA,IACtC;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,MAAM;AAAA,QAEvB,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,SAAS,UAAU,YAAY,MAAM;AAAA,UAC7C;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QACT,UAAU;AAAA,UACT,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,OAAO;AAAA,UACP,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,SACC;AAAA,UACD,sBACC;AAAA,UACD,wBACC;AAAA,UACD,MAAM;AAAA,QACP;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,eACJ,QAAQ,gBAAgB,cAAc,gBAAgB,CAAC,GACxD,SAAS,CAAC,GACV,cAAc,CAAC;AAChB,YAAI,CAAC,IAAI,IAAI,QAAQ;AAErB,YAAI,aAAa,eAAe;AAC/B,iBAAO;AAAA,QACR,WAAW,SAAS,QAAQ;AAC3B,iBACC,aAAa,gBACb,QAAQ,gBAAgB,eAAe,aACpC,WACA;AAAA,QACL;AAOA,iBAAS,UAAU,WAAW;AAC7B,iBACC,cAAc,cACd,cAAc,iBACd,cAAc,YACd,cAAc,aACd,cAAc;AAAA,QAEhB;AAOA,iBAAS,eAAeC,OAAM;AAC7B,iBAAO,WAAS,MAAM,OAAOA,KAAI;AAAA,QAClC;AAWA,iBAAS,YAAY,OAAO,OAAO,KAAK,WAAW,KAAK;AACvD,gBAAM,MAAM,OAAO,GAAG,EAAE,QAAQ,CAAAA,UAAQ;AACvC,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA;AAAA,cACA,KAAK,MAAM,eAAeA,KAAI,IAAI;AAAA,YACnC,CAAC;AAAA,UACF,CAAC;AAAA,QACF;AASA,iBAAS,UAAU,OAAO,WAAW,KAAK;AACzC,sBAAY,OAAO,GAAG,MAAM,QAAQ,WAAW,GAAG;AAAA,QACnD;AASA,iBAAS,qBAAqB,OAAO,WAAW,KAAK;AACpD,sBAAY,OAAO,GAAG,MAAM,QAAQ,WAAW,GAAG;AAAA,QACnD;AASA,iBAAS,4BAA4BA,OAAM,qBAAqB;AAC/D,gBAAM,YAAY,YAAY,SAAS,GACtC,iBACC,OAAO,WAAW,KAAK,YAAY,WAAW,GAC/C,iBAAiB,OAAO,SAAS,KAAK,OAAO,GAAG,EAAE,GAClD,WAAW,oBAAoB,SAAS;AAEzC,cAAI,UAAU;AACb,gBAAI,CAAC,sBAAsBA,MAAK,MAAM,GAAG;AACxC,sBAAQ,OAAO;AAAA,gBACd,MAAM,oBAAoB,CAAC;AAAA,gBAC3B,WAAW;AAAA,cACZ,CAAC;AAAA,YACF,WAAW,gBAAgB;AAC1B,sBAAQ,OAAO;AAAA,gBACd,MAAM,oBAAoB,CAAC;AAAA,gBAC3B,WAAW;AAAA,gBACX,KAAK,eAAe,oBAAoB,CAAC,CAAC;AAAA,cAC3C,CAAC;AAAA,YACF,WAAW,WAAW;AACrB,sBAAQ,OAAO;AAAA,gBACd,MAAM,oBAAoB,CAAC;AAAA,gBAC3B,WAAW;AAAA,gBACX,KAAK,eAAe,oBAAoB,CAAC,CAAC;AAAA,cAC3C,CAAC;AAAA,YACF;AAEA,iCAAqB,qBAAqB,YAAY,IAAI;AAAA,UAC3D,WAAW,gBAAgB;AAC1B,gBAAI,sBAAsBA,MAAK,MAAM,GAAG;AACvC,sBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,WAAW,CAAC;AAAA,YAC/C,OAAO;AACN,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM,EAAE,MAAM,SAAS,wBAAwBA,KAAI,EAAE;AAAA,cACtD,CAAC;AAAA,YACF;AAAA,UACD;AAEA,iBAAO,KAAK,kBAAkB,QAAQ;AAAA,QACvC;AAMA,iBAAS,6BAA6B;AACrC,iBAAO,IAAI;AAAA,QACZ;AASA,iBAAS,cAAcA,OAAM;AAC5B,gBAAM,UAAUA,MAAK,KAAK,SAAS,kBAClC,sBAAsB,UACnB,uBAAuBA,MAAK,KAAK,IAAI,IACrC,CAAC;AAEL,cAAI,SAAS,YAAY;AACxB,wCAA4BA,OAAM,mBAAmB;AAAA,UACtD,WAAW,oBAAoB,SAAS,GAAG;AAC1C,gBAAI,sBAAsBA,MAAK,MAAM,GAAG;AACvC,wBAAU,qBAAqB,MAAM,UAAU,IAAI,CAAC;AAAA,YACrD,OAAO;AACN,sBAAQ,OAAO;AAAA,gBACd,MAAM,oBAAoB,CAAC;AAAA,gBAC3B,WAAW;AAAA,cACZ,CAAC;AACD,mCAAqB,qBAAqB,YAAY,IAAI;AAAA,YAC3D;AAAA,UACD;AAAA,QACD;AAGA,cAAM,OAAO;AAAA,UACZ,QAAQA,OAAM;AACb,kBAAM,sBAAsB,uBAAuBA,MAAK,IAAI;AAE5D,gBAAIA,MAAK,eAAe,UAAU;AACjC,qBAAO;AAAA,YACR;AAEA,gBAAI,SAAS,UAAU;AACtB,kBACCA,MAAK,KAAK,SAAS,KACnB,oBAAoB,WAAW,GAC9B;AAID,wBAAQ,OAAO;AAAA,kBACd,KAAK;AAAA,oBACJ,OAAOA,MAAK,KAAK,CAAC,EAAE,IAAI;AAAA,oBACxB,KAAKA,MAAK,KAAK,GAAG,EAAE,EAAE,IAAI;AAAA,kBAC3B;AAAA,kBACA,WAAW;AAAA,gBACZ,CAAC;AAAA,cACF;AACA,mCAAqB,qBAAqB,YAAY,IAAI;AAAA,YAC3D,OAAO;AACN,wBAAU,qBAAqB,MAAM,UAAU,IAAI,CAAC;AAAA,YACrD;AAAA,UACD;AAAA,UACA,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,UACpB,yBAAyB;AAAA,QAC1B;AAEA,YAAI,SAAS,YAAY;AACxB,iBAAO,OAAO,MAAM;AAAA;AAAA,YAEnB,YAAY;AACX,0BAAY,KAAK,IAAI;AAAA,YACtB;AAAA,YACA,mBAAmB;AAClB,0BAAY,IAAI;AAAA,YACjB;AAAA,YAEA,4BAA4B;AAAA,YAC5B,2BAA2B;AAAA,YAC3B,gCAAgC;AAAA,UACjC,CAAC;AAAA,QACF;AAEA,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA;;;ACnUA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,QAAQ,EAAE,MAAM,WAAW,SAAS,MAAM;AAAA,cAC1C,OAAO,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,YACzC;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,SAAS;AAAA,QACT,UAAU;AAAA,UACT,gBAAgB;AAAA,UAChB,eAAe;AAAA,UACf,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,UAAU,QAAQ,QAAQ,CAAC,KAAK,CAAC;AACvC,cAAM,gBAAgB,QAAQ,WAAW;AACzC,cAAM,eAAe,QAAQ,UAAU;AASvC,iBAAS,eAAe,MAAM,OAAO,UAAU;AAC9C,iBACC,SAAS,oBAAoB,KAAK,KAClC,CAAC,SAAS,kBAAkB,MAAM,KAAK,KACvC,WAAW,eAAe,MAAM,KAAK,MAAM;AAAA,QAE7C;AAQA,iBAAS,qBAAqB,MAAM,OAAO;AAC1C,iBACC,WAAW,qBAAqB,MAAM,OAAO;AAAA,YAC5C,iBAAiB;AAAA,YACjB,QAAQ,SAAS;AAAA,UAClB,CAAC,MAAM;AAAA,QAET;AAUA,iBAAS,IAAI,OAAO,MAAM,OAAO,SAAS;AACzC,cAAI,qBAAqB,MAAM,KAAK,GAAG;AACtC,mBAAO;AAAA,UACR;AACA,cAAI,SAAS;AACZ,mBAAO,MAAM,gBAAgB,MAAM,GAAG;AAAA,UACvC;AACA,iBAAO,MAAM,YAAY,CAAC,KAAK,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC;AAAA,QACzD;AAEA,eAAO;AAAA,UACN,WAAWC,OAAM;AAChB,kBAAM,aAAa,SAAS;AAAA,cAC3BA;AAAA,cACA;AAAA,YACD;AACA,kBAAM,cAAc,WAAW,eAAe,UAAU;AACxD,kBAAM,aAAa,WAAW,cAAc,UAAU;AAEtD,gBAAI,CAAC,eAAe,aAAa,YAAY,aAAa,GAAG;AAC5D,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK,WAAW;AAAA,gBAChB,WAAW,gBACR,mBACA;AAAA,gBACH,KAAK,WACJ,IAAI,OAAO,aAAa,YAAY,aAAa;AAAA,cACnD,CAAC;AAAA,YACF;AACA,gBAAI,CAAC,eAAe,YAAY,YAAY,YAAY,GAAG;AAC1D,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK,WAAW;AAAA,gBAChB,WAAW,eACR,kBACA;AAAA,gBACH,KAAK,WACJ,IAAI,OAAO,YAAY,YAAY,YAAY;AAAA,cACjD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC7JA;AAAA,wDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QACA,SAAS;AAAA,QACT,QAAQ,CAAC;AAAA,QACT,UAAU;AAAA,UACT,UAAU;AAAA,QACX;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAQ3B,iBAAS,cAAcC,OAAM;AAC5B,cAAIA,MAAK,UAAU,WAAW,GAAG;AAChC,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,WAAW;AAAA,YACZ,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,eAAeA,OAAM;AACpB,kBAAM,QAAQ,WAAW,SAASA,KAAI;AACtC,kBAAM,WAAW,SAAS,kBAAkB,OAAO,QAAQ;AAE3D,gBAAI,YAAY,SAAS,KAAK,WAAW,GAAG;AAC3C,uBAAS,WAAW,QAAQ,eAAa;AACxC,sBAAM,SAAS,UAAU;AAEzB,oBAAI,SAAS,SAAS,MAAM,GAAG;AAC9B,gCAAc,OAAO,MAAM;AAAA,gBAC5B;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACrEA;AAAA,4DAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ,CAAC,EAAE,MAAM,CAAC,UAAU,OAAO,EAAE,CAAC;AAAA,QACtC,UAAU;AAAA,UACT,gBAAgB;AAAA,UAChB,eAAe;AAAA,UACf,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAC3B,cAAM,SAAS,QAAQ,QAAQ,CAAC,MAAM;AAOtC,iBAAS,mBAAmB,OAAO;AAClC,cAAI,CAAC,MAAM,MAAM,WAAW,GAAG,GAAG;AACjC;AAAA,UACD;AAEA,gBAAM,YAAY,WAAW,eAAe,OAAO;AAAA,YACjD,iBAAiB;AAAA,UAClB,CAAC,GACD,WAAW,WAAW,eAAe,WAAW,KAAK;AAEtD,cAAI,CAAC,SAAS,kBAAkB,WAAW,KAAK,GAAG;AAClD;AAAA,UACD;AAEA,cAAI,UAAU,CAAC,UAAU;AACxB,oBAAQ,OAAO;AAAA,cACd,KAAK;AAAA,gBACJ,OAAO,MAAM,IAAI;AAAA,gBACjB,KAAK;AAAA,kBACJ,MAAM,MAAM,IAAI,MAAM;AAAA,kBACtB,QAAQ,MAAM,IAAI,MAAM,SAAS;AAAA,gBAClC;AAAA,cACD;AAAA,cACA,WAAW;AAAA,cACX,KAAK,WAAS,MAAM,iBAAiB,OAAO,GAAG;AAAA,YAChD,CAAC;AAAA,UACF;AAEA,cAAI,CAAC,UAAU,UAAU;AACxB,oBAAQ,OAAO;AAAA,cACd,KAAK;AAAA,gBACJ,OAAO,UAAU,IAAI;AAAA,gBACrB,KAAK,MAAM,IAAI;AAAA,cAChB;AAAA,cACA,WAAW;AAAA,cACX,KAAK,WACJ,MAAM,YAAY,CAAC,UAAU,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC;AAAA,YACxD,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,kBAAkB,OAAO;AACjC,cAAI,CAAC,MAAM,MAAM,SAAS,IAAI,GAAG;AAChC;AAAA,UACD;AAEA,gBAAM,YAAY,WAAW,cAAc,OAAO;AAAA,YAChD,iBAAiB;AAAA,UAClB,CAAC,GACD,WAAW,WAAW,eAAe,OAAO,SAAS;AAEtD,cAAI,CAAC,SAAS,kBAAkB,OAAO,SAAS,GAAG;AAClD;AAAA,UACD;AAEA,cAAI,UAAU,CAAC,UAAU;AACxB,oBAAQ,OAAO;AAAA,cACd,KAAK;AAAA,gBACJ,OAAO;AAAA,kBACN,MAAM,MAAM,IAAI,IAAI;AAAA,kBACpB,QAAQ,MAAM,IAAI,IAAI,SAAS;AAAA,gBAChC;AAAA,gBACA,KAAK,MAAM,IAAI;AAAA,cAChB;AAAA,cACA,WAAW;AAAA,cACX,KAAK,WAAS,MAAM,gBAAgB,OAAO,GAAG;AAAA,YAC/C,CAAC;AAAA,UACF;AAEA,cAAI,CAAC,UAAU,UAAU;AACxB,oBAAQ,OAAO;AAAA,cACd,KAAK;AAAA,gBACJ,OAAO,MAAM,IAAI;AAAA,gBACjB,KAAK,UAAU,IAAI;AAAA,cACpB;AAAA,cACA,WAAW;AAAA,cACX,KAAK,WACJ,MAAM,YAAY,CAAC,MAAM,MAAM,CAAC,GAAG,UAAU,MAAM,CAAC,CAAC,CAAC;AAAA,YACxD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,gBAAgBC,OAAM;AACrB,kBAAM,QAAQ,WAAW,cAAcA,KAAI;AAE3C,+BAAmB,KAAK;AACxB,8BAAkB,KAAK;AAAA,UACxB;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACvKA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ,CAAC,EAAE,MAAM,CAAC,UAAU,OAAO,EAAE,CAAC;AAAA,QACtC,UAAU;AAAA,UACT,YACC;AAAA,UACD,SAAS;AAAA,QACV;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,QAAQ,QAAQ,QAAQ,CAAC,MAAM;AACrC,cAAM,aAAa,QAAQ;AAQ3B,iBAAS,aAAaC,OAAM;AAC3B,gBAAM,WAAW,WAAW,eAAeA,MAAK,KAAK;AACrD,gBAAM,eAAe,WAAW,cAAcA,MAAK,KAAK;AACxD,gBAAM,gBAAgB,WAAW;AAAA,YAChC;AAAA,YACA;AAAA,UACD;AAEA,cAAI,SAAS,eAAe;AAC3B,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA,KAAK;AAAA,gBACJ,OAAO,SAAS,IAAI;AAAA,gBACpB,KAAK,aAAa,IAAI;AAAA,cACvB;AAAA,cACA,WAAW;AAAA,cACX,IAAI,OAAO;AACV,sBAAM,WAAW,WAAW;AAAA,kBAC3BA,MAAK;AAAA,gBACN;AAGA,oBAAI,SAAS,KAAK,aAAW,QAAQ,SAAS,MAAM,GAAG;AACtD,yBAAO;AAAA,gBACR;AAEA,uBAAO,MAAM;AAAA,kBACZ,CAAC,SAAS,MAAM,CAAC,GAAG,aAAa,MAAM,CAAC,CAAC;AAAA,kBACzC,SAAS;AAAA,oBACR,CAACC,OAAM,YACNA,QAAO,WAAW,QAAQ,OAAO;AAAA,oBAClC;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF,WAAW,CAAC,SAAS,CAAC,eAAe;AACpC,oBAAQ,OAAO;AAAA,cACd,MAAAD;AAAA,cACA,KAAK;AAAA,gBACJ,OAAOA,MAAK,IAAI;AAAA,gBAChB,KAAK,aAAa,IAAI;AAAA,cACvB;AAAA,cACA,WAAW;AAAA,cACX,IAAI,OAAO;AACV,uBAAO,MAAM,gBAAgB,UAAU,GAAG;AAAA,cAC3C;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,UACN,0BAA0B;AAAA,QAC3B;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxHA;AAAA,iDAAAE,UAAAC,SAAA;AAAA;AAWA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB,CAAC,OAAO;AAAA,QAExB,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,OAAO;AAAA,UACzB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,UAAU;AAAA,UACV,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAKf,eAAO;AAAA,UACN,SAAS,SAAS,gBAAgBC,OAAM;AACvC,kBAAM,aAAa,QAAQ,YAC1B,WAAW,EAAE,QAAQ,GAAG,MAAM,EAAE;AACjC,kBAAM,CAAC,UAAU,IAAI,QAAQ;AAE7B,gBAAI,CAAC,WAAW,UAAU,eAAe,UAAU;AAClD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK;AAAA,gBACL,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,yBAAO,MAAM;AAAA,oBACZ,CAAC,GAAG,CAAC;AAAA,oBACL;AAAA,kBACD;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF,WAAW,WAAW,UAAU,eAAe,SAAS;AACvD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,KAAK;AAAA,gBACL,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,yBAAO,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;AAAA,gBACjC;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACxEA;AAAA,+CAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,WAAW;AAWjB,aAAS,gBAAgBC,OAAM;AAC9B,UAAI,CAACA,OAAM;AACV,eAAO;AAAA,MACR;AAEA,YAAM,cACLA,MAAK,SAAS,uBAAuBA,MAAK,YAAY,GAAG,EAAE,IAAIA;AAEhE,aACC,SAAS,aAAa,aAAa,KAAK,KACxC,SAAS,uBAAuB,aAAa,UAAU,KAAK;AAAA,IAE9D;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,gBAAgB;AAAA,QAChB,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,sBAAsB;AAAA,gBACrB,MAAM;AAAA,cACP;AAAA,cACA,mBAAmB;AAAA,gBAClB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,gBAAgB;AAAA,UACf;AAAA,YACC,mBAAmB;AAAA,YACnB,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,UAAU;AAAA,UACT,mBAAmB;AAAA,UACnB,WACC;AAAA,UACD,SACC;AAAA,UACD,YACC;AAAA,UACD,kBAAkB;AAAA,UAClB,4BACC;AAAA,UACD,sBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,EAAE,mBAAmB,qBAAqB,CAAC,IAAI,QAAQ;AAC9D,cAAM,aAAa,QAAQ;AAE3B,cAAM,mBAAmB,oBAAI,IAAI,CAAC,MAAM,OAAO,MAAM,KAAK,CAAC;AAC3D,cAAM,oBAAoB,oBAAI,IAAI,CAAC,MAAM,IAAI,CAAC;AAQ9C,iBAAS,yBAAyBC,OAAM,WAAW;AAClD,iBAAO,WAAS;AACf,kBAAM,gBAAgB,gBAAgBA,MAAK,IAAI,IAC5CA,MAAK,QACLA,MAAK;AACR,kBAAM,aAAa,cAAc,SAAS;AAC1C,kBAAM,eAAeA,MAAK,SAAS,CAAC,MAAM;AAE1C,kBAAM,WAAW,eAAe,MAAM;AACtC,gBAAI,oBAAoB,WAAW,QAAQ,aAAa;AAExD,gBAAI,YAAY;AACf,kCAAoB,IAAI,iBAAiB;AAAA,YAC1C;AAEA,kBAAM,aAAa,UAAU,iBAAiB;AAE9C,mBAAO,MAAM,YAAYA,OAAM,GAAG,QAAQ,GAAG,UAAU,EAAE;AAAA,UAC1D;AAAA,QACD;AAOA,iBAAS,sBAAsBA,OAAM;AACpC,cACC,sBAAsB,KAAKA,MAAK,QAAQ,MACvC,gBAAgBA,MAAK,IAAI,KAAK,gBAAgBA,MAAK,KAAK,IACxD;AACD,kBAAM,iBAAiB,CAAC;AACxB,kBAAM,UAAU,gBAAgBA,MAAK,IAAI,IACtCA,MAAK,OACLA,MAAK;AAER,kBAAM,uBACL,QAAQ,SAAS;AAClB,kBAAM,gBACL,iBAAiB,IAAIA,MAAK,QAAQ,KAClC,CAAC;AACF,kBAAM,aAAa,kBAAkB,IAAIA,MAAK,QAAQ;AAEtD,gBAAI,eAAe;AAClB,6BAAe,KAAK;AAAA,gBACnB,WAAW;AAAA,gBACX,KAAK;AAAA,kBACJA;AAAA,kBACA,CAAAC,WAAS,gBAAgBA,MAAK;AAAA,gBAC/B;AAAA,cACD,CAAC;AAED,kBAAI,YAAY;AACf,+BAAe,KAAK;AAAA,kBACnB,WAAW;AAAA,kBACX,KAAK;AAAA,oBACJD;AAAA,oBACA,CAAAC,WAAS,uBAAuBA,MAAK;AAAA,kBACtC;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD;AAEA,oBAAQ,OAAO;AAAA,cACd,MAAAD;AAAA,cACA,WAAW;AAAA,cACX,SAAS;AAAA,YACV,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,qBAAqBA,OAAM;AACnC,cAAI,gBAAgBA,MAAK,YAAY,GAAG;AACvC,oBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,YAAY,CAAC;AAAA,UAChD;AAEA,qBAAW,cAAcA,MAAK,OAAO;AACpC,gBAAI,gBAAgB,WAAW,IAAI,GAAG;AACrC,sBAAQ,OAAO,EAAE,MAAM,YAAY,WAAW,UAAU,CAAC;AAAA,YAC1D;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,oBAAoBA,OAAM;AAClC,gBAAM,SAAS,SAAS,oBAAoBA,MAAK,MAAM;AAEvD,cAAI,OAAO,SAAS,oBAAoB;AACvC,kBAAM,aAAa,SAAS,sBAAsB,MAAM;AAExD,iBACE,eAAe,aACf,eAAe,kBAChBA,MAAK,UAAU,UAAU,KACzB,gBAAgBA,MAAK,UAAU,CAAC,CAAC,GAChC;AAKD,oBAAM,gBACLA,MAAK,UAAU,CAAC,EAAE,SAAS,wBAC3B,CAACA,MAAK,UAAU,CAAC;AAClB,oBAAM,iBAAiB,CAAC;AAExB,kBAAI,eAAe;AAClB,sBAAM,aAAa,OAAO;AAC1B,sBAAM,kBACL,eAAe,YACZ,cACA;AACJ,sBAAM,eAAe,aAClB,IAAI,eAAe,MACnB;AAEH,+BAAe,KAAK;AAAA,kBACnB,WAAW;AAAA,kBACX,MAAM,EAAE,YAAY,gBAAgB;AAAA,kBACpC,KAAK,WAAS;AAAA,oBACb,MAAM;AAAA,sBACL,OAAO;AAAA,sBACP;AAAA,oBACD;AAAA,oBACA,MAAM;AAAA,sBACLA,MAAK,UAAU,CAAC;AAAA,sBAChB;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD,CAAC;AAAA,cACF;AAEA,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM,EAAE,WAAW;AAAA,gBACnB,SAAS;AAAA,cACV,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAEA,cAAM,YAAY;AAAA,UACjB,kBAAkB;AAAA,QACnB;AAEA,YAAI,sBAAsB;AACzB,oBAAU,kBAAkB;AAAA,QAC7B;AAEA,YAAI,mBAAmB;AACtB,oBAAU,iBAAiB;AAAA,QAC5B;AAEA,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA;;;AC3QA;AAAA,kDAAAE,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAOjB,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,YACC,uBAAuB;AAAA,UACxB;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,gBAAgB;AAAA,QAEhB,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,uBAAuB;AAAA,gBACtB,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,cAAc;AAAA,UACd,WAAW;AAAA,UACX,eAAe;AAAA,QAChB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,cAAc,oBAAI,IAAI;AAAA,UAC1B;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,CAAC,GACD,YAAY,oBAAI,IAAI,CAAC,MAAM,OAAO,MAAM,KAAK,CAAC;AAC/C,cAAM,aAAa,QAAQ;AAC3B,cAAM,CAAC,EAAE,sBAAsB,CAAC,IAAI,QAAQ;AAE5C,YAAI;AAQJ,iBAAS,4BAA4BC,OAAM;AAC1C,gBAAM,WAAW,YAAY,IAAI,IAAIA,MAAK,IAAI;AAE9C,iBACC,YACA,SAAS,KAAK,WAAW,KACzB,SAAS,WAAW,KAAK,SAAO,IAAI,eAAeA,KAAI;AAAA,QAEzD;AAOA,iBAAS,mBAAmBA,OAAM;AACjC,iBACCA,MAAK,SAAS,qBAAqBA,MAAK,aAAa;AAAA,QAEvD;AAMA,eAAO;AAAA,UACN,QAAQA,OAAM;AACb,0BAAc,WAAW,SAASA,KAAI;AAAA,UACvC;AAAA,UAEA,gBAAgBA,OAAM;AACrB,gBAAI,mBAAmBA,KAAI,GAAG;AAC7B,oBAAM,EAAE,OAAO,IAAIA;AAEnB,kBACC,OAAO,SAAS,sBAChB,UAAU,IAAI,OAAO,QAAQ,GAC5B;AACD,sBAAM,UACL,OAAO,SAASA,QAAO,OAAO,QAAQ,OAAO;AAE9C,oBACC,QAAQ,SAAS,aACjB,SAAS,wBAAwB,OAAO,GACvC;AACD,wBAAMC,SACL,QAAQ,SAAS,YACd,QAAQ,QACR,QAAQ,OAAO,CAAC,EAAE,MAAM;AAE5B,sBAAI,CAAC,YAAY,IAAIA,MAAK,GAAG;AAC5B,4BAAQ,OAAO;AAAA,sBACd,MAAM;AAAA,sBACN,WAAW;AAAA,oBACZ,CAAC;AAAA,kBACF;AAAA,gBACD,WACC,QAAQ,SAAS,gBACjB,QAAQ,SAAS,eACjB,4BAA4B,OAAO,GAClC;AACD,0BAAQ,OAAO;AAAA,oBACd,MAAM;AAAA,oBACN,WAAW,wBACR,cACA;AAAA,oBACH,SAAS;AAAA,sBACR;AAAA,wBACC,WAAW;AAAA,wBACX,MAAM,EAAE,MAAM,YAAY;AAAA,wBAC1B,IAAI,OAAO;AACV,iCAAO,MAAM;AAAA,4BACZ;AAAA,4BACA;AAAA,0BACD;AAAA,wBACD;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD,CAAC;AAAA,gBACF,WACC,yBACA,CAAC,mBAAmB,OAAO,GAC1B;AACD,0BAAQ,OAAO;AAAA,oBACd,MAAM;AAAA,oBACN,WAAW;AAAA,kBACZ,CAAC;AAAA,gBACF;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1KA;AAAA,iDAAAC,UAAAC,SAAA;AAAA;AAYA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,UAAU;AAAA,UACT,KAAK;AAAA,QACN;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AAUf,iBAAS,mBAAmBC,OAAM;AACjC,iBACCA,MAAK,SAAS,yBACdA,MAAK,WAAW,SAAS,aACzB,OAAOA,MAAK,WAAW,UAAU;AAAA,QAEnC;AAOA,iBAAS,gBAAgBA,OAAM;AAC9B,iBACCA,MAAK,SAAS,uBACdA,MAAK,SAAS,qBACdA,MAAK,SAAS,4BACdA,MAAK,SAAS;AAAA,QAEhB;AAOA,iBAAS,sBAAsBA,OAAM;AACpC,iBACCA,MAAK,SAAS,yBACbA,MAAK,SAAS,4BACdA,MAAK,eACLA,MAAK,YAAY,SAAS;AAAA,QAE7B;AAQA,iBAAS,WAAWA,OAAM,YAAY;AACrC,gBAAM,IAAI,WAAW;AACrB,cAAI,IAAI;AAGR,cAAIA,MAAK,OAAO,SAAS,eAAe;AACvC,mBAAO,IAAI,GAAG,EAAE,GAAG;AAClB,kBACC,CAAC,mBAAmB,WAAW,CAAC,CAAC,KACjC,CAAC,gBAAgB,WAAW,CAAC,CAAC,GAC7B;AACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAEA,iBAAO,IAAI,GAAG,EAAE,GAAG;AAClB,gBAAI,CAAC,sBAAsB,WAAW,CAAC,CAAC,GAAG;AAC1C,qBAAO;AAAA,YACR;AACA,gBAAI,WAAW,CAAC,MAAMA,OAAM;AAC3B,qBAAO;AAAA,YACR;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAQA,iBAAS,eAAeA,OAAM,QAAQ;AACrC,cAAI,CAAC,WAAWA,OAAM,OAAO,IAAI,GAAG;AACnC,oBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,MAAM,CAAC;AAAA,UAC1C;AAAA,QACD;AAOA,iBAAS,mBAAmBA,OAAM;AACjC,gBAAM,EAAE,OAAO,IAAIA;AAEnB,cACC,OAAO,SAAS,oBAChB,YAAY,KAAK,OAAO,OAAO,IAAI,KACnC,WAAWA,OAAM,OAAO,IAAI,GAC3B;AACD;AAAA,UACD;AAEA,cACC,OAAO,SAAS,iBAChB,WAAWA,OAAM,OAAO,IAAI,GAC3B;AACD;AAAA,UACD;AAEA,kBAAQ,OAAO,EAAE,MAAAA,OAAM,WAAW,MAAM,CAAC;AAAA,QAC1C;AAMA,eAAO;AAAA,UACN,kCAAkCA,OAAM;AACvC,gBAAIA,MAAK,OAAO,SAAS,0BAA0B;AAClD,6BAAeA,MAAK,QAAQA,MAAK,OAAO,MAAM;AAAA,YAC/C,WAAWA,MAAK,OAAO,SAAS,WAAW;AAC1C,6BAAeA,OAAMA,MAAK,MAAM;AAAA,YACjC,OAAO;AACN,iCAAmBA,KAAI;AAAA,YACxB;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACpKA;AAAA,+CAAAC,UAAAC,SAAA;AAAA;AAYA,QAAM,WAAW;AACjB,QAAM,cAAc;AAYpB,aAAS,wBAAwBC,OAAM;AACtC,YAAM,cACLA,MAAK,OAAO,SAAS,oBAAoBA,MAAK,SAASA;AAExD,aACC,YAAY,OAAO,SAAS,mBAC5B,YAAY,OAAO,WAAW;AAAA,IAEhC;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,WAAW,UAAU,KAAK;AAAA,UAClC;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,0BAA0B;AAAA,gBACzB,MAAM;AAAA,gBACN,SAAS;AAAA,cACV;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QACT,UAAU;AAAA,UACT,gBACC;AAAA,UACD,gBAAgB;AAAA,UAChB,gBACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,QAAQ,QAAQ,QAAQ,CAAC,KAAK;AACpC,cAAM,kCACL,QAAQ,QAAQ,CAAC,KAAK,QAAQ,QAAQ,CAAC,EAAE;AAE1C,cAAM,aAAa,QAAQ;AAQ3B,iBAAS,qBAAqBC,OAAM;AACnC,iBAAO,SAAS,gBAAgB,YAAYA,KAAI;AAAA,QACjD;AAQA,iBAAS,0BAA0BA,OAAM;AACxC,iBAAO,YAAY,gBAAgB,GAAGA,OAAM,UAAU;AAAA,QACvD;AAOA,iBAAS,wBAAwBA,OAAM;AACtC,gBAAM,SAAS,SAAS,oBAAoBA,MAAK,MAAM;AAEvD,cAAI,OAAO,SAAS,sBAAsB;AACzC,mBAAO;AAAA,UACR;AAEA,cACC,mCACA,OAAO,SAAS,sBAChB,OAAO,OAAO,SAAS,yBACtB,SAAS,sBAAsB,MAAM,MAAM,UAC3C,SAAS,sBAAsB,MAAM,MAAM,UAC3C;AACD,mBAAO,OAAO;AAAA,UACf;AAEA,iBAAO;AAAA,QACR;AAEA,eAAO;AAAA,UACN,eAAeA,OAAM;AACpB,kBAAM,YAAY,wBAAwBA,KAAI;AAE9C,gBAAI,CAAC,WAAW;AACf;AAAA,YACD;AAEA,kBAAM,0BAA0B,qBAAqBA,KAAI,GACxD,8BACC,qBAAqB,SAAS;AAEhC,gBAAI,CAAC,2BAA2B,CAAC,6BAA6B;AAC7D,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AACV,wBAAM,iBACL,UAAU,WAAW,YAAYA;AAElC,yBAAO,MAAM;AAAA,oBACZ;AAAA,oBACA,IAAI,WAAW,QAAQ,cAAc,CAAC;AAAA,kBACvC;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF,WAAW,UAAU,YAAY,CAAC,6BAA6B;AAC9D,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AAGV,sBACC,0BAA0BA,KAAI,KAC9B,CAAC,wBAAwBA,KAAI,GAC5B;AAOD,0BAAM,aACL,WAAW,cAAcA,KAAI;AAE9B,2BAAO,MAAM;AAAA,sBACZ,CAAC,UAAU,MAAM,CAAC,GAAG,WAAW,MAAM,CAAC,CAAC;AAAA,sBACxC,IAAI,WAAW,QAAQ,EAAE,MAAM,UAAU,MAAM,CAAC,GAAG,WAAW,MAAM,CAAC,CAAC,CAAC;AAAA,oBACxE;AAAA,kBACD;AAOA,yBAAO,MAAM;AAAA,oBACZ;AAAA,oBACA,IAAI,WAAW,QAAQ,SAAS,CAAC;AAAA,kBAClC;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF,WAAW,UAAU,aAAa,CAAC,yBAAyB;AAC3D,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,IAAI,OAAO;AAOV,wBAAM,aACL,WAAW,cAAc,SAAS;AAEnC,yBAAO,MAAM;AAAA,oBACZ,CAAC,WAAW,MAAM,CAAC,GAAGA,MAAK,MAAM,CAAC,CAAC;AAAA,oBACnC,GAAG,WAAW,QAAQ,EAAE,MAAM,WAAW,MAAM,CAAC,GAAGA,MAAK,MAAM,CAAC,CAAC,CAAC;AAAA,kBAClE;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC7OA;AAAA,gDAAAC,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ,CAAC;AAAA,QACT,SAAS;AAAA,QAET,UAAU;AAAA,UACT,eACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,eAAO;AAAA,UACN,QAAQC,OAAM;AACb,kBAAM,QAAQ,WAAW,cAAcA,KAAI,GAC1C,WAAW,MAAM;AAElB,gBAAI,aAAa,qBAAqB;AACrC,oBAAM,cAAc,WAAW,eAAeA,KAAI;AAClD,oBAAM,aAAa,WAAW,cAAcA,KAAI;AAChD,oBAAM,EAAE,OAAO,IAAIA;AAEnB,kBACC,OAAO,SAAS,sBAChB,OAAO,WAAWA,SAClB,EACC,eACA,YAAY,UAAU,OACtB,cACA,WAAW,UAAU,MAErB;AACD,wBAAQ,OAAO;AAAA,kBACd,MAAAA;AAAA,kBACA,WAAW;AAAA,kBACX,KAAK,WACJ,MAAM;AAAA,oBACLA;AAAA,oBACA,IAAI,WAAW,QAAQA,KAAI,CAAC;AAAA,kBAC7B;AAAA,gBACF,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC1FA;AAAA,wDAAAC,UAAAC,SAAA;AAAA;AAaA,IAAAA,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,YAAY;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,YAAY;AAAA,YACX;AAAA,cACC,SACC;AAAA,cACD,KAAK;AAAA,cACL,QAAQ;AAAA,gBACP,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,cACA,MAAM;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK;AAAA,cACN;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QAEN,MAAM;AAAA,UACL,aACC;AAAA,UACD,aAAa;AAAA,UACb,KAAK;AAAA,QACN;AAAA,QAEA,SAAS;AAAA,QAET,QAAQ;AAAA,UACP;AAAA,YACC,OAAO;AAAA,cACN;AAAA,gBACC,MAAM,CAAC,UAAU,SAAS,QAAQ,SAAS;AAAA,cAC5C;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,YAAY;AAAA,kBACX,QAAQ,EAAE,MAAM,UAAU;AAAA,kBAC1B,OAAO,EAAE,MAAM,UAAU;AAAA,gBAC1B;AAAA,gBACA,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,eAAe;AAAA,UACf,cAAc;AAAA,UACd,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,aAAa,QAAQ;AAE3B,cAAM,QAAQ,SAAU,QAAQ;AAC/B,cAAI,CAAC,UAAU,OAAO,WAAW,UAAU;AAC1C,mBAAO;AAAA,cACN,QAAQ,EAAE,QAAQ,MAAM,OAAO,MAAM;AAAA,cACrC,OAAO,EAAE,QAAQ,OAAO,OAAO,KAAK;AAAA,cACpC,MAAM,EAAE,QAAQ,MAAM,OAAO,KAAK;AAAA,cAClC,SAAS,EAAE,QAAQ,OAAO,OAAO,MAAM;AAAA,YACxC,EAAE,UAAU,OAAO;AAAA,UACpB;AACA,iBAAO;AAAA,QACR,GAAG,QAAQ,QAAQ,CAAC,CAAC;AAWrB,iBAAS,aAAa,MAAM,WAAW,YAAY;AAClD,cACC,WAAW,eAAe,WAAW,UAAU,MAAM,KAAK,IAAI,GAC7D;AACD,kBAAM,QAAQ,UAAU,UAAU;AAClC,kBAAM,gBAAgB,KAAK,IAAI;AAC/B,kBAAMC,QAAO,QAAQ,YAAY;AACjC,gBAAI;AAEJ,gBAAI,eAAe;AAClB,0BACC,SAAS,WAAW,kBAAkB;AAAA,YACxC,OAAO;AACN,0BACC,SAAS,WACN,qBACA;AAAA,YACL;AAEA,oBAAQ,OAAO;AAAA,cACd,MAAAA;AAAA,cACA;AAAA,cACA,IAAI,OAAO;AACV,oBAAI,eAAe;AAClB,sBAAI,OAAO;AACV,2BAAO,MAAM,gBAAgBA,OAAM,GAAG;AAAA,kBACvC;AACA,yBAAO,MAAM,iBAAiBA,OAAM,GAAG;AAAA,gBACxC;AACA,uBAAO,MAAM,YAAY;AAAA,kBACxB,UAAU,MAAM,CAAC;AAAA,kBACjB,WAAW,MAAM,CAAC;AAAA,gBACnB,CAAC;AAAA,cACF;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAOA,iBAAS,gBAAgBA,OAAM;AAC9B,cAAI,CAACA,MAAK,UAAU;AACnB;AAAA,UACD;AAEA,gBAAM,SAAS,WAAW,eAAeA,OAAM,CAAC;AAChD,gBAAM,aAAa,OAAO,CAAC;AAC3B,gBAAM,YAAY,OAAO,CAAC;AAC1B,gBAAM,YAAY,OAAO,CAAC;AAE1B,uBAAa,UAAU,YAAY,SAAS;AAC5C,uBAAa,SAAS,WAAW,SAAS;AAAA,QAC3C;AAEA,eAAO;AAAA,UACN,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;AC7JA;AAAA,0CAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,WAAW;AAWjB,aAAS,qBAAqB,UAAU;AACvC,aAAO,iCAAiC,KAAK,QAAQ;AAAA,IACtD;AAOA,aAAS,mBAAmB,UAAU;AACrC,aAAO,gBAAgB,KAAK,QAAQ;AAAA,IACrC;AAQA,aAAS,oBAAoB,UAAU;AACtC,aAAO,CAAC,KAAK,IAAI,EAAE,SAAS,QAAQ;AAAA,IACrC;AASA,aAAS,yBAAyBC,OAAM;AACvC,aACCA,MAAK,SAAS,qBACdA,MAAK,aAAa,OAClBA,MAAK,UACL,SAAS,iBAAiBA,MAAK,QAAQ;AAAA,IAEzC;AAOA,aAAS,iBAAiBA,OAAM;AAC/B,aACC,yBAAyBA,KAAI,KAAK,SAAS,wBAAwBA,KAAI;AAAA,IAEzE;AAaA,aAAS,qBAAqBA,OAAM;AACnC,UAAIA,MAAK,SAAS,WAAW;AAC5B,eAAOA;AAAA,MACR;AAEA,UAAI,yBAAyBA,KAAI,GAAG;AACnC,eAAO;AAAA,UACN,MAAM;AAAA,UACN,OAAO,CAACA,MAAK,SAAS;AAAA,UACtB,KAAK,IAAIA,MAAK,SAAS,KAAK;AAAA,QAC7B;AAAA,MACD;AAEA,UAAI,SAAS,wBAAwBA,KAAI,GAAG;AAC3C,eAAO;AAAA,UACN,MAAM;AAAA,UACN,OAAOA,MAAK,OAAO,CAAC,EAAE,MAAM;AAAA,UAC5B,KAAKA,MAAK,OAAO,CAAC,EAAE,MAAM;AAAA,QAC3B;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAOA,IAAAD,QAAO,UAAU;AAAA,MAChB,MAAM;AAAA,QACL,MAAM;AAAA,QAEN,gBAAgB;AAAA,UACf;AAAA,UACA;AAAA,YACC,aAAa;AAAA,YACb,cAAc;AAAA,UACf;AAAA,QACD;AAAA,QAEA,MAAM;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,KAAK;AAAA,QACN;AAAA,QAEA,QAAQ;AAAA,UACP;AAAA,YACC,MAAM,CAAC,UAAU,OAAO;AAAA,UACzB;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY;AAAA,cACX,aAAa;AAAA,gBACZ,MAAM;AAAA,cACP;AAAA,cACA,cAAc;AAAA,gBACb,MAAM;AAAA,cACP;AAAA,YACD;AAAA,YACA,sBAAsB;AAAA,UACvB;AAAA,QACD;AAAA,QAEA,SAAS;AAAA,QACT,UAAU;AAAA,UACT,UACC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,OAAO,SAAS;AACf,cAAM,CAAC,MAAM,EAAE,aAAa,aAAa,CAAC,IAAI,QAAQ;AACtD,cAAM,SAAS,SAAS;AACxB,cAAM,aAAa,QAAQ;AAY3B,iBAAS,YAAYC,OAAM;AAC1B,gBAAM,OAAOA,MAAK,MACjB,QAAQA,MAAK;AAMd,mBAAS,gBAAgB;AACxB,gBACCA,MAAK,aAAa,QAClB,SAAS,gBAAgB,KAAK,OAAO,MAAM,IAAI,GAC9C;AACD,oBAAM,cAAc,qBAAqB,KAAK,IAAI;AAClD,oBAAM,eAAe,qBAAqB,MAAM,KAAK;AAErD,kBAAI,gBAAgB,QAAQ,iBAAiB,MAAM;AAClD,uBAAO;AAAA,cACR;AAEA,kBAAI,iBAAiB,QAAQ,gBAAgB,MAAM;AAClD,uBAAO;AAAA,cACR;AAEA,kBAAI,YAAY,SAAS,aAAa,OAAO;AAC5C,uBAAO;AAAA,cACR;AAAA,YACD;AACA,mBAAO;AAAA,UACR;AAMA,mBAAS,gBAAgB;AACxB,gBACCA,MAAK,aAAa,QAClB,SAAS,gBAAgB,KAAK,MAAM,MAAM,KAAK,GAC9C;AACD,oBAAM,cAAc,qBAAqB,KAAK,KAAK;AACnD,oBAAM,eAAe,qBAAqB,MAAM,IAAI;AAEpD,kBAAI,gBAAgB,QAAQ,iBAAiB,MAAM;AAClD,uBAAO;AAAA,cACR;AAEA,kBAAI,iBAAiB,QAAQ,gBAAgB,MAAM;AAClD,uBAAO;AAAA,cACR;AAEA,kBAAI,YAAY,SAAS,aAAa,OAAO;AAC5C,uBAAO;AAAA,cACR;AAAA,YACD;AAEA,mBAAO;AAAA,UACR;AAQA,mBAAS,iBAAiB;AACzB,mBAAO,SAAS,gBAAgB,YAAYA,KAAI;AAAA,UACjD;AAEA,iBACCA,MAAK,SAAS,uBACd,KAAK,SAAS,sBACd,MAAM,SAAS,sBACf,oBAAoB,KAAK,QAAQ,KACjC,oBAAoB,MAAM,QAAQ,MACjC,cAAc,KAAK,cAAc,MAClC,eAAe;AAAA,QAEjB;AAEA,cAAM,oBAAoB;AAAA,UACzB,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM;AAAA,UACN,MAAM;AAAA,UACN,KAAK;AAAA,UACL,KAAK;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,QACP;AAOA,iBAAS,iBAAiBA,OAAM;AAC/B,gBAAM,gBAAgB,WAAW;AAAA,YAChCA,MAAK;AAAA,YACLA,MAAK;AAAA,YACL,WAAS,MAAM,UAAUA,MAAK;AAAA,UAC/B;AACA,gBAAM,gBAAgB,WAAW,eAAe,aAAa;AAC7D,gBAAM,kBAAkB,WAAW,cAAc,aAAa;AAE9D,gBAAM,SAAS,WAAW,QAAQ;AAElC,gBAAM,WAAW,OAAO;AAAA,YACvBA,MAAK,MAAM,CAAC;AAAA,YACZ,cAAc,MAAM,CAAC;AAAA,UACtB;AACA,gBAAM,qBAAqB,OAAO;AAAA,YACjC,cAAc,MAAM,CAAC;AAAA,YACrB,cAAc,MAAM,CAAC;AAAA,UACtB;AACA,gBAAM,oBAAoB,OAAO;AAAA,YAChC,cAAc,MAAM,CAAC;AAAA,YACrB,gBAAgB,MAAM,CAAC;AAAA,UACxB;AACA,gBAAM,YAAY,OAAO;AAAA,YACxB,gBAAgB,MAAM,CAAC;AAAA,YACvBA,MAAK,MAAM,CAAC;AAAA,UACb;AAEA,gBAAM,cAAc,WAAW,eAAeA,KAAI;AAClD,gBAAM,aAAa,WAAW,cAAcA,KAAI;AAChD,cAAI,SAAS;AACb,cAAI,SAAS;AAEb,cACC,eACA,YAAY,MAAM,CAAC,MAAMA,MAAK,MAAM,CAAC,KACrC,CAAC,SAAS,oBAAoB,aAAa,eAAe,GACzD;AACD,qBAAS;AAAA,UACV;AAEA,cACC,cACAA,MAAK,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,KACpC,CAAC,SAAS,oBAAoB,eAAe,UAAU,GACtD;AACD,qBAAS;AAAA,UACV;AAEA,iBACC,SACA,YACA,qBACA,kBAAkB,cAAc,KAAK,IACrC,oBACA,WACA;AAAA,QAEF;AAMA,eAAO;AAAA,UACN,iBAAiBA,OAAM;AACtB,kBAAM,kBAAkB,SAASA,MAAK,OAAOA,MAAK;AAClD,kBAAM,qBAAqB,SAASA,MAAK,QAAQA,MAAK;AAGtD,iBACE,mBAAmB,SAAS,aAC5B,iBAAiB,kBAAkB,MACpC,EACC,gBAAgB,SAAS,aACzB,iBAAiB,eAAe,MAEjC,EAAE,CAAC,mBAAmBA,MAAK,QAAQ,KAAK,iBACxC,qBAAqBA,MAAK,QAAQ,KAClC,EAAE,eAAe,YAAYA,MAAK,MAAM,IACvC;AACD,sBAAQ,OAAO;AAAA,gBACd,MAAAA;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM;AAAA,kBACL,UAAUA,MAAK;AAAA,kBACf,cAAc,SAAS,SAAS;AAAA,gBACjC;AAAA,gBACA,KAAK,WACJ,MAAM,YAAYA,OAAM,iBAAiBA,KAAI,CAAC;AAAA,cAChD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACzWA;AAAA,2CAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,EAAE,mBAAmB,IAAI;AAG/B,IAAAA,QAAO,UAAU,IAAI;AAAA,MACpB,OAAO,QAAQ;AAAA,QACd,kBAAkB,MAAM;AAAA,QACxB,yBAAyB,MAAM;AAAA,QAC/B,yBAAyB,MAAM;AAAA,QAC/B,yBAAyB,MAAM;AAAA,QAC/B,yBAAyB,MAAM;AAAA,QAC/B,oBAAoB,MAAM;AAAA,QAC1B,gBAAgB,MAAM;AAAA,QACtB,iBAAiB,MAAM;AAAA,QACvB,oBAAoB,MAAM;AAAA,QAC1B,iBAAiB,MAAM;AAAA,QACvB,eAAe,MAAM;AAAA,QACrB,mBAAmB,MAAM;AAAA,QACzB,WAAW,MAAM;AAAA,QACjB,wBAAwB,MAAM;AAAA,QAC9B,0BAA0B,MAAM;AAAA,QAChC,gBAAgB,MAAM;AAAA,QACtB,iBAAiB,MAAM;AAAA,QACvB,eAAe,MAAM;AAAA,QACrB,YAAY,MAAM;AAAA,QAClB,6BAA6B,MAC5B;AAAA,QACD,qBAAqB,MAAM;AAAA,QAC3B,mBAAmB,MAAM;AAAA,QACzB,qBAAqB,MAAM;AAAA,QAC3B,OAAO,MAAM;AAAA,QACb,gBAAgB,MAAM;AAAA,QACtB,qBAAqB,MAAM;AAAA,QAC3B,sBAAsB,MAAM;AAAA,QAC5B,gBAAgB,MAAM;AAAA,QACtB,gBAAgB,MAAM;AAAA,QACtB,YAAY,MAAM;AAAA,QAClB,QAAQ,MAAM;AAAA,QACd,iBAAiB,MAAM;AAAA,QACvB,qBAAqB,MAAM;AAAA,QAC3B,sBAAsB,MAAM;AAAA,QAC5B,cAAc,MAAM;AAAA,QACpB,cAAc,MAAM;AAAA,QACpB,kCAAkC,MACjC;AAAA,QACD,0BAA0B,MAAM;AAAA,QAChC,0BAA0B,MAAM;AAAA,QAChC,iBAAiB,MAAM;AAAA,QACvB,kBAAkB,MAAM;AAAA,QACxB,0BAA0B,MAAM;AAAA,QAChC,gBAAgB,MAAM;AAAA,QACtB,uBAAuB,MAAM;AAAA,QAC7B,gBAAgB,MAAM;AAAA,QACtB,eAAe,MAAM;AAAA,QACrB,aAAa,MAAM;AAAA,QACnB,YAAY,MAAM;AAAA,QAClB,4BAA4B,MAAM;AAAA,QAClC,QAAQ,MAAM;AAAA,QACd,iBAAiB,MAAM;AAAA,QACvB,qBAAqB,MAAM;AAAA,QAC3B,cAAc,MAAM;AAAA,QACpB,eAAe,MAAM;AAAA,QACrB,mBAAmB,MAAM;AAAA,QACzB,yBAAyB,MAAM;AAAA,QAC/B,mBAAmB,MAAM;AAAA,QACzB,wBAAwB,MAAM;AAAA,QAC9B,0BAA0B,MAAM;AAAA,QAChC,+BAA+B,MAC9B;AAAA,QACD,gCAAgC,MAC/B;AAAA,QACD,wBAAwB,MAAM;AAAA,QAC9B,aAAa,MAAM;AAAA,QACnB,WAAW,MAAM;AAAA,QACjB,aAAa,MAAM;AAAA,QACnB,0BAA0B,MAAM;AAAA,QAChC,wBAAwB,MAAM;AAAA,QAC9B,cAAc,MAAM;AAAA,QACpB,kBAAkB,MAAM;AAAA,QACxB,2BAA2B,MAAM;AAAA,QACjC,2BAA2B,MAAM;AAAA,QACjC,qBAAqB,MAAM;AAAA,QAC3B,WAAW,MAAM;AAAA,QACjB,cAAc,MAAM;AAAA,QACpB,qBAAqB,MAAM;AAAA,QAC3B,yBAAyB,MAAM;AAAA,QAC/B,4BAA4B,MAAM;AAAA,QAClC,YAAY,MAAM;AAAA,QAClB,wBAAwB,MAAM;AAAA,QAC9B,6BAA6B,MAC5B;AAAA,QACD,oBAAoB,MAAM;AAAA,QAC1B,cAAc,MAAM;AAAA,QACpB,yBAAyB,MAAM;AAAA,QAC/B,aAAa,MAAM;AAAA,QACnB,wBAAwB,MAAM;AAAA,QAC9B,mBAAmB,MAAM;AAAA,QACzB,mBAAmB,MAAM;AAAA,QACzB,uBAAuB,MAAM;AAAA,QAC7B,kBAAkB,MAAM;AAAA,QACxB,sBAAsB,MAAM;AAAA,QAC5B,cAAc,MAAM;AAAA,QACpB,mBAAmB,MAAM;AAAA,QACzB,iCAAiC,MAChC;AAAA,QACD,yBAAyB,MAAM;AAAA,QAC/B,yBAAyB,MAAM;AAAA,QAC/B,eAAe,MAAM;AAAA,QACrB,oBAAoB,MAAM;AAAA,QAC1B,eAAe,MAAM;AAAA,QACrB,iBAAiB,MAAM;AAAA,QACvB,gBAAgB,MAAM;AAAA,QACtB,gBAAgB,MAAM;AAAA,QACtB,yBAAyB,MAAM;AAAA,QAC/B,mBAAmB,MAAM;AAAA,QACzB,gBAAgB,MAAM;AAAA,QACtB,qBAAqB,MAAM;AAAA,QAC3B,wBAAwB,MAAM;AAAA,QAC9B,kBAAkB,MAAM;AAAA,QACxB,YAAY,MAAM;AAAA,QAClB,4BAA4B,MAAM;AAAA,QAClC,qBAAqB,MAAM;AAAA,QAC3B,oBAAoB,MAAM;AAAA,QAC1B,yBAAyB,MAAM;AAAA,QAC/B,cAAc,MAAM;AAAA,QACpB,WAAW,MAAM;AAAA,QACjB,gBAAgB,MAAM;AAAA,QACtB,oBAAoB,MAAM;AAAA,QAC1B,iBAAiB,MAAM;AAAA,QACvB,yBAAyB,MAAM;AAAA,QAC/B,kBAAkB,MAAM;AAAA,QACxB,mBAAmB,MAAM;AAAA,QACzB,iBAAiB,MAAM;AAAA,QACvB,kBAAkB,MAAM;AAAA,QACxB,uBAAuB,MAAM;AAAA,QAC7B,kBAAkB,MAAM;AAAA,QACxB,oBAAoB,MAAM;AAAA,QAC1B,wBAAwB,MAAM;AAAA,QAC9B,uBAAuB,MAAM;AAAA,QAC7B,mBAAmB,MAAM;AAAA,QACzB,oBAAoB,MAAM;AAAA,QAC1B,sBAAsB,MAAM;AAAA,QAC5B,yBAAyB,MAAM;AAAA,QAC/B,qBAAqB,MAAM;AAAA,QAC3B,mBAAmB,MAAM;AAAA,QACzB,2BAA2B,MAAM;AAAA,QACjC,eAAe,MAAM;AAAA,QACrB,gBAAgB,MAAM;AAAA,QACtB,aAAa,MAAM;AAAA,QACnB,kBAAkB,MAAM;AAAA,QACxB,gBAAgB,MAAM;AAAA,QACtB,gBAAgB,MAAM;AAAA,QACtB,wBAAwB,MAAM;AAAA,QAC9B,oBAAoB,MAAM;AAAA,QAC1B,iCAAiC,MAChC;AAAA,QACD,sBAAsB,MAAM;AAAA,QAC5B,qBAAqB,MAAM;AAAA,QAC3B,4BAA4B,MAAM;AAAA,QAClC,mBAAmB,MAAM;AAAA,QACzB,mBAAmB,MAAM;AAAA,QACzB,gBAAgB,MAAM;AAAA,QACtB,2BAA2B,MAAM;AAAA,QACjC,sBAAsB,MAAM;AAAA,QAC5B,wBAAwB,MAAM;AAAA,QAC9B,qBAAqB,MAAM;AAAA,QAC3B,qBAAqB,MAAM;AAAA,QAC3B,UAAU,MAAM;AAAA,QAChB,eAAe,MAAM;AAAA,QACrB,gCAAgC,MAC/B;AAAA,QACD,iBAAiB,MAAM;AAAA,QACvB,kBAAkB,MAAM;AAAA,QACxB,iBAAiB,MAAM;AAAA,QACvB,mBAAmB,MAAM;AAAA,QACzB,8BAA8B,MAC7B;AAAA,QACD,gBAAgB,MAAM;AAAA,QACtB,yBAAyB,MAAM;AAAA,QAC/B,YAAY,MAAM;AAAA,QAClB,mBAAmB,MAAM;AAAA,QACzB,qBAAqB,MAAM;AAAA,QAC3B,kBAAkB,MAAM;AAAA,QACxB,eAAe,MAAM;AAAA,QACrB,kBAAkB,MAAM;AAAA,QACxB,mBAAmB,MAAM;AAAA,QACzB,8BAA8B,MAC7B;AAAA,QACD,YAAY,MAAM;AAAA,QAClB,yBAAyB,MAAM;AAAA,QAC/B,gBAAgB,MAAM;AAAA,QACtB,mBAAmB,MAAM;AAAA,QACzB,yBAAyB,MAAM;AAAA,QAC/B,yBAAyB,MAAM;AAAA,QAC/B,yBAAyB,MAAM;AAAA,QAC/B,yBAAyB,MAAM;AAAA,QAC/B,4BAA4B,MAAM;AAAA,QAClC,wBAAwB,MAAM;AAAA,QAC9B,oBAAoB,MAAM;AAAA,QAC1B,mBAAmB,MAAM;AAAA,QACzB,iBAAiB,MAAM;AAAA,QACvB,kBAAkB,MAAM;AAAA,QACxB,mBAAmB,MAAM;AAAA,QACzB,gBAAgB,MAAM;AAAA,QACtB,oBAAoB,MAAM;AAAA,QAC1B,aAAa,MAAM;AAAA,QACnB,8BAA8B,MAC7B;AAAA,QACD,kBAAkB,MAAM;AAAA,QACxB,oBAAoB,MAAM;AAAA,QAC1B,WAAW,MAAM;AAAA,QACjB,WAAW,MAAM;AAAA,QACjB,+BAA+B,MAC9B;AAAA,QACD,cAAc,MAAM;AAAA,QACpB,wBAAwB,MAAM;AAAA,QAC9B,oBAAoB,MAAM;AAAA,QAC1B,sBAAsB,MAAM;AAAA,QAC5B,sBAAsB,MAAM;AAAA,QAC5B,YAAY,MAAM;AAAA,QAClB,iBAAiB,MAAM;AAAA,QACvB,gBAAgB,MAAM;AAAA,QACtB,wBAAwB,MAAM;AAAA,QAC9B,2BAA2B,MAAM;AAAA,QACjC,gCAAgC,MAC/B;AAAA,QACD,uBAAuB,MAAM;AAAA,QAC7B,kBAAkB,MAAM;AAAA,QACxB,uBAAuB,MAAM;AAAA,QAC7B,qBAAqB,MAAM;AAAA,QAC3B,sBAAsB,MAAM;AAAA,QAC5B,+BAA+B,MAC9B;AAAA,QACD,yBAAyB,MAAM;AAAA,QAC/B,oBAAoB,MAAM;AAAA,QAC1B,mCAAmC,MAClC;AAAA,QACD,kBAAkB,MAAM;AAAA,QACxB,wBAAwB,MAAM;AAAA,QAC9B,yBAAyB,MAAM;AAAA,QAC/B,4BAA4B,MAAM;AAAA,QAClC,mBAAmB,MAAM;AAAA,QACzB,oBAAoB,MAAM;AAAA,QAC1B,2BAA2B,MAAM;AAAA,QACjC,qBAAqB,MAAM;AAAA,QAC3B,0BAA0B,MAAM;AAAA,QAChC,qBAAqB,MAAM;AAAA,QAC3B,qBAAqB,MAAM;AAAA,QAC3B,qBAAqB,MAAM;AAAA,QAC3B,UAAU,MAAM;AAAA,QAChB,WAAW,MAAM;AAAA,QACjB,uBAAuB,MAAM;AAAA,QAC7B,iCAAiC,MAChC;AAAA,QACD,WAAW,MAAM;AAAA,QACjB,oCAAoC,MACnC;AAAA,QACD,wBAAwB,MAAM;AAAA,QAC9B,wBAAwB,MAAM;AAAA,QAC9B,2BAA2B,MAAM;AAAA,QACjC,oBAAoB,MAAM;AAAA,QAC1B,WAAW,MAAM;AAAA,QACjB,gCAAgC,MAC/B;AAAA,QACD,uBAAuB,MAAM;AAAA,QAC7B,sBAAsB,MAAM;AAAA,QAC5B,iBAAiB,MAAM;AAAA,QACvB,mCAAmC,MAClC;AAAA,QACD,yBAAyB,MAAM;AAAA,QAC/B,gBAAgB,MAAM;AAAA,QACtB,wBAAwB,MAAM;AAAA,QAC9B,kCAAkC,MACjC;AAAA,QACD,8BAA8B,MAC7B;AAAA,QACD,2BAA2B,MAAM;AAAA,QACjC,yBAAyB,MAAM;AAAA,QAC/B,wBAAwB,MAAM;AAAA,QAC9B,gCAAgC,MAC/B;AAAA,QACD,kBAAkB,MAAM;AAAA,QACxB,yBAAyB,MAAM;AAAA,QAC/B,sBAAsB,MAAM;AAAA,QAC5B,iBAAiB,MAAM;AAAA,QACvB,mBAAmB,MAAM;AAAA,QACzB,yBAAyB,MAAM;AAAA,QAC/B,eAAe,MAAM;AAAA,QACrB,QAAQ,MAAM;AAAA,QACd,OAAO,MAAM;AAAA,QACb,0BAA0B,MAAM;AAAA,QAChC,iBAAiB,MAAM;AAAA,QACvB,0BAA0B,MAAM;AAAA,QAChC,iBAAiB,MAAM;AAAA,QACvB,uBAAuB,MAAM;AAAA,QAC7B,MAAM,MAAM;AAAA,QACZ,gBAAgB,MAAM;AAAA,QACtB,cAAc,MAAM;AAAA,QACpB,gBAAgB,MAAM;AAAA,QACtB,aAAa,MAAM;AAAA,QACnB,aAAa,MAAM;AAAA,QACnB,uBAAuB,MAAM;AAAA,QAC7B,+BAA+B,MAC9B;AAAA,QACD,mBAAmB,MAAM;AAAA,QACzB,mBAAmB,MAAM;AAAA,QACzB,mBAAmB,MAAM;AAAA,QACzB,kBAAkB,MAAM;AAAA,QACxB,QAAQ,MAAM;AAAA,QACd,wBAAwB,MAAM;AAAA,QAC9B,sBAAsB,MAAM;AAAA,QAC5B,0BAA0B,MAAM;AAAA,QAChC,wBAAwB,MAAM;AAAA,QAC9B,eAAe,MAAM;AAAA,QACrB,aAAa,MAAM;AAAA,QACnB,gBAAgB,MAAM;AAAA,QACtB,eAAe,MAAM;AAAA,QACrB,aAAa,MAAM;AAAA,QACnB,cAAc,MAAM;AAAA,QACpB,sBAAsB,MAAM;AAAA,QAC5B,MAAM,MAAM;AAAA,MACb,CAAC;AAAA,IACF;AAAA;AAAA;;;AC3UA;AAAA,6CAAAC,UAAAC,SAAA;AAAA;AAcA,aAASC,IAAGC,QAAO,UAAU,qBAAqB;AACjD,UAAI,CAACA,QAAO;AACX,cAAM,IAAI,MAAM,OAAO;AAAA,MACxB;AAAA,IACD;AAEA,IAAAF,QAAO,UAAUC;AAAA;AAAA;;;ACpBjB;AAAA,2EAAAE,UAAAC,SAAA;AAAA;AAiCA,IAAAA,QAAO,UAAU,MAAM,OAAO;AAAA;AAAA;AAAA;AAAA,MAI7B,cAAc;AACb,aAAK,UAAU;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,cAAc;AACb,eAAO,KAAK,SAAS,IAAI,KAAK,UAAU;AAAA,MACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,eAAe;AACd,cAAM,SAAS,CAAC;AAEhB,eAAO,KAAK,SAAS,GAAG;AACvB,iBAAO,KAAK,KAAK,OAAO;AAAA,QACzB;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,WAAW;AACV,cAAM,IAAI,MAAM,kBAAkB;AAAA,MACnC;AAAA,IACD;AAAA;AAAA;;;AC3EA,IAAAC,iBAAA;AAAA,0EAAAC,UAAAC,SAAA;AAAA;AAiBA,aAASC,QAAO,QAAQ,UAAU;AACjC,eACK,WAAW,GAAG,WAAW,OAAO,SAAS,GAC7C,YAAY,YACX;AAOD,cAAMC,UAAU,WAAW,YAAY,IAAK;AAC5C,cAAM,QAAQ,OAAOA,MAAK;AAC1B,cAAM,qBAAqB,MAAM,MAAM,CAAC;AAExC,YAAI,YAAY,oBAAoB;AACnC,cAAIA,WAAU,UAAU;AACvB,mBAAOA;AAAA,UACR;AACA,qBAAWA;AAAA,QACZ,OAAO;AACN,qBAAWA,SAAQ;AAAA,QACpB;AAAA,MACD;AACA,aAAO,OAAO;AAAA,IACf;AAUA,aAAS,cAAc,QAAQ,UAAU,UAAU;AAClD,UAAI,aAAa,IAAI;AACpB,eAAO;AAAA,MACR;AACA,UAAI,YAAY,UAAU;AACzB,eAAO,SAAS,QAAQ;AAAA,MACzB;AACA,UAAI,WAAW,KAAK,UAAU;AAC7B,cAAMA,SAAQ,SAAS,WAAW,CAAC;AACnC,cAAM,QAAQ,OAAOA,MAAK;AAG1B,YAAI,CAAC,OAAO;AACX,iBAAO,OAAO;AAAA,QACf;AAMA,YAAI,MAAM,MAAM,CAAC,KAAK,UAAU;AAC/B,iBAAOA;AAAA,QACR;AACA,eAAOA,SAAQ;AAAA,MAChB;AAGA,UAAI,aAAa,GAAG;AACnB,eAAO;AAAA,MACR;AACA,aAAO,OAAO;AAAA,IACf;AASA,aAAS,aAAa,QAAQ,UAAU,QAAQ;AAC/C,UAAI,WAAW,IAAI;AAClB,eAAO,OAAO,SAAS;AAAA,MACxB;AACA,UAAI,UAAU,UAAU;AACvB,eAAO,SAAS,MAAM,IAAI;AAAA,MAC3B;AACA,UAAI,SAAS,KAAK,UAAU;AAC3B,cAAMA,SAAQ,SAAS,SAAS,CAAC;AACjC,cAAM,QAAQ,OAAOA,MAAK;AAG1B,YAAI,CAAC,OAAO;AACX,iBAAO,OAAO,SAAS;AAAA,QACxB;AAMA,YAAI,MAAM,MAAM,CAAC,IAAI,QAAQ;AAC5B,iBAAOA,SAAQ;AAAA,QAChB;AACA,eAAOA;AAAA,MACR;AAGA,UAAI,WAAW,GAAG;AACjB,eAAO;AAAA,MACR;AACA,aAAO,OAAO,SAAS;AAAA,IACxB;AAMA,IAAAF,QAAO,UAAU,EAAE,QAAAC,SAAQ,eAAe,aAAa;AAAA;AAAA;;;ACjIvD;AAAA,kGAAAE,UAAAC,SAAA;AAAA;AAUA,QAAM,SAAS;AACf,QAAM,QAAQ;AASd,IAAAA,QAAO,UAAU,MAAM,mCAAmC,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAShE,YAAY,QAAQ,UAAU,UAAU,UAAU,QAAQ;AACzD,cAAM;AACN,aAAK,SAAS;AACd,aAAK,WAAW;AAChB,aAAK,aAAa,MAAM,aAAa,QAAQ,UAAU,MAAM;AAC7D,aAAK,eAAe,MAAM,OAAO,UAAU,MAAM,IAAI;AACrD,aAAK,SAAS;AAAA,MACf;AAAA;AAAA,MAGA,WAAW;AACV,cAAM,QACL,KAAK,cAAc,IAAI,KAAK,OAAO,KAAK,UAAU,IAAI;AACvD,cAAM,UACL,KAAK,gBAAgB,IAAI,KAAK,SAAS,KAAK,YAAY,IAAI;AAE7D,YAAI,UAAU,CAAC,WAAW,MAAM,MAAM,CAAC,IAAI,QAAQ,MAAM,CAAC,IAAI;AAC7D,eAAK,UAAU;AACf,eAAK,cAAc;AAAA,QACpB,WAAW,SAAS;AACnB,eAAK,UAAU;AACf,eAAK,gBAAgB;AAAA,QACtB,OAAO;AACN,eAAK,UAAU;AAAA,QAChB;AAEA,eACC,QAAQ,KAAK,OAAO,MACnB,KAAK,WAAW,MAAM,KAAK,QAAQ,MAAM,CAAC,KAAK,KAAK;AAAA,MAEvD;AAAA,IACD;AAAA;AAAA;;;AC5DA;AAAA,0FAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,SAAS;AACf,QAAM,EAAE,cAAc,cAAc,IAAI;AASxC,IAAAA,QAAO,UAAU,MAAM,4BAA4B,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASzD,YAAY,QAAQ,UAAU,UAAU,UAAU,QAAQ;AACzD,cAAM;AACN,aAAK,SAAS;AACd,aAAK,QAAQ,aAAa,QAAQ,UAAU,MAAM;AAClD,aAAK,WAAW,cAAc,QAAQ,UAAU,QAAQ;AAAA,MACzD;AAAA;AAAA,MAGA,WAAW;AACV,YAAI,KAAK,SAAS,KAAK,UAAU;AAChC,eAAK,UAAU,KAAK,OAAO,KAAK,KAAK;AACrC,eAAK,SAAS;AACd,iBAAO;AAAA,QACR;AACA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,cAAc;AACb,eAAO,KAAK,SAAS,KAAK,WAAW,KAAK,OAAO,KAAK,KAAK,IAAI;AAAA,MAChE;AAAA,IACD;AAAA;AAAA;;;ACxDA;AAAA,sFAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,SAAS;AASf,IAAAA,QAAO,UAAU,MAAM,yBAAyB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKtD,YAAY,QAAQ;AACnB,cAAM;AACN,aAAK,SAAS;AAAA,MACf;AAAA;AAAA,MAGA,WAAW;AACV,cAAM,OAAO,KAAK,OAAO,SAAS;AAElC,aAAK,UAAU,KAAK,OAAO;AAE3B,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA;;;ACrCA;AAAA,kFAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,mBAAmB;AASzB,IAAAA,QAAO,UAAU,MAAM,qBAAqB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAM5D,YAAY,QAAQ,WAAW;AAC9B,cAAM,MAAM;AACZ,aAAK,YAAY;AAAA,MAClB;AAAA;AAAA,MAGA,WAAW;AACV,cAAM,YAAY,KAAK;AAEvB,eAAO,MAAM,SAAS,GAAG;AACxB,cAAI,UAAU,KAAK,OAAO,GAAG;AAC5B,mBAAO;AAAA,UACR;AAAA,QACD;AACA,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA;;;ACzCA;AAAA,iGAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,SAAS;AACf,QAAM,EAAE,eAAe,QAAAC,QAAO,IAAI;AASlC,IAAAD,QAAO,UAAU,MAAM,kCAAkC,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAS/D,YAAY,QAAQ,UAAU,UAAU,UAAU,QAAQ;AACzD,cAAM;AACN,aAAK,SAAS;AACd,aAAK,WAAW;AAChB,aAAK,aAAa,cAAc,QAAQ,UAAU,QAAQ;AAC1D,aAAK,eAAeC,QAAO,UAAU,QAAQ;AAC7C,aAAK,SAAS;AAAA,MACf;AAAA;AAAA,MAGA,WAAW;AACV,cAAM,QACL,KAAK,aAAa,KAAK,OAAO,SAC3B,KAAK,OAAO,KAAK,UAAU,IAC3B;AACJ,cAAM,UACL,KAAK,eAAe,KAAK,SAAS,SAC/B,KAAK,SAAS,KAAK,YAAY,IAC/B;AAEJ,YAAI,UAAU,CAAC,WAAW,MAAM,MAAM,CAAC,IAAI,QAAQ,MAAM,CAAC,IAAI;AAC7D,eAAK,UAAU;AACf,eAAK,cAAc;AAAA,QACpB,WAAW,SAAS;AACnB,eAAK,UAAU;AACf,eAAK,gBAAgB;AAAA,QACtB,OAAO;AACN,eAAK,UAAU;AAAA,QAChB;AAEA,eACC,QAAQ,KAAK,OAAO,MACnB,KAAK,WAAW,MAAM,KAAK,QAAQ,MAAM,CAAC,KAAK,KAAK;AAAA,MAEvD;AAAA,IACD;AAAA;AAAA;;;AChEA;AAAA,yFAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,SAAS;AACf,QAAM,EAAE,eAAe,aAAa,IAAI;AASxC,IAAAA,QAAO,UAAU,MAAM,2BAA2B,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASxD,YAAY,QAAQ,UAAU,UAAU,UAAU,QAAQ;AACzD,cAAM;AACN,aAAK,SAAS;AACd,aAAK,QAAQ,cAAc,QAAQ,UAAU,QAAQ;AACrD,aAAK,WAAW,aAAa,QAAQ,UAAU,MAAM;AAAA,MACtD;AAAA;AAAA,MAGA,WAAW;AACV,YAAI,KAAK,SAAS,KAAK,UAAU;AAChC,eAAK,UAAU,KAAK,OAAO,KAAK,KAAK;AACrC,eAAK,SAAS;AACd,iBAAO;AAAA,QACR;AACA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,cAAc;AACb,eAAO,KAAK,SAAS,KAAK,WAAW,KAAK,OAAO,KAAK,KAAK,IAAI;AAAA,MAChE;AAAA;AAAA,MAGA,eAAe;AACd,eAAO,KAAK,OAAO,MAAM,KAAK,OAAO,KAAK,WAAW,CAAC;AAAA,MACvD;AAAA,IACD;AAAA;AAAA;;;AC7DA;AAAA,iFAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,mBAAmB;AASzB,IAAAA,QAAO,UAAU,MAAM,oBAAoB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAM3D,YAAY,QAAQC,QAAO;AAC1B,cAAM,MAAM;AACZ,aAAK,QAAQA;AAAA,MACd;AAAA;AAAA,MAGA,WAAW;AACV,YAAI,KAAK,QAAQ,GAAG;AACnB,eAAK,SAAS;AACd,iBAAO,MAAM,SAAS;AAAA,QACvB;AACA,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA;;;ACtCA;AAAA,gFAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,mBAAmB;AASzB,IAAAA,QAAO,UAAU,MAAM,mBAAmB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAM1D,YAAY,QAAQC,QAAO;AAC1B,cAAM,MAAM;AACZ,aAAK,QAAQA;AAAA,MACd;AAAA;AAAA,MAGA,WAAW;AACV,eAAO,KAAK,QAAQ,GAAG;AACtB,eAAK,SAAS;AACd,cAAI,CAAC,MAAM,SAAS,GAAG;AACtB,mBAAO;AAAA,UACR;AAAA,QACD;AACA,eAAO,MAAM,SAAS;AAAA,MACvB;AAAA,IACD;AAAA;AAAA;;;ACxCA;AAAA,4EAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,6BAA6B;AACnC,QAAM,sBAAsB;AAC5B,QAAM,eAAe;AACrB,QAAM,4BAA4B;AAClC,QAAM,qBAAqB;AAC3B,QAAM,cAAc;AACpB,QAAM,aAAa;AAUnB,QAAM,gBAAN,MAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMnB,YAAY,aAAa,oBAAoB;AAC5C,aAAK,cAAc;AACnB,aAAK,qBAAqB;AAAA,MAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,iBACC,QACA,UACA,UACA,UACA,QACA,iBACC;AACD,cAAM,SAAS,kBACZ,KAAK,qBACL,KAAK;AAER,eAAO,IAAI,OAAO,QAAQ,UAAU,UAAU,UAAU,MAAM;AAAA,MAC/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAeA,aACC,QACA,UACA,UACA,UACA,QACA,iBACAC,SACAC,OACAC,QACC;AACD,YAAI,SAAS,KAAK;AAAA,UACjB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAEA,YAAIF,SAAQ;AACX,mBAAS,IAAI,aAAa,QAAQA,OAAM;AAAA,QACzC;AACA,YAAIC,SAAQ,GAAG;AACd,mBAAS,IAAI,WAAW,QAAQA,KAAI;AAAA,QACrC;AACA,YAAIC,UAAS,GAAG;AACf,mBAAS,IAAI,YAAY,QAAQA,MAAK;AAAA,QACvC;AAEA,eAAO;AAAA,MACR;AAAA,IACD;AAMA,IAAAH,QAAO,UAAU;AAAA,MAChB,SAAS,IAAI,cAAc,oBAAoB,yBAAyB;AAAA,MACxE,UAAU,IAAI;AAAA,QACb;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAAA;AAAA;;;ACvHA;AAAA,wFAAAI,UAAAC,SAAA;AAAA;AAUA,QAAM,qBAAqB;AAU3B,IAAAA,QAAO,UAAU,MAAM,0BAA0B,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWnE,YACC,QACA,UACA,UACA,UACA,QACA,aACA,YACC;AACD,cAAM,QAAQ,UAAU,UAAU,UAAU,MAAM;AAClD,aAAK,QAAQ,KAAK,IAAI,GAAG,KAAK,QAAQ,WAAW;AACjD,aAAK,WAAW,KAAK,IAAI,OAAO,SAAS,GAAG,KAAK,WAAW,UAAU;AAAA,MACvE;AAAA,IACD;AAAA;AAAA;;;AC5CA;AAAA,0EAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,EAAE,eAAe,IAAI;AAC3B,QAAMC,UAAS;AACf,QAAM,UAAU;AAChB,QAAM,qBAAqB;AAC3B,QAAM,oBAAoB;AAC1B,QAAM,QAAQ;AAMd,QAAM,SAAS,uBAAO,QAAQ;AAC9B,QAAM,WAAW,uBAAO,UAAU;AAClC,QAAM,YAAY,uBAAO,UAAU;AAYnC,aAAS,eAAe,QAAQ,UAAU;AACzC,YAAMC,OAAM,uBAAO,OAAO,IAAI;AAC9B,UAAI,aAAa;AACjB,UAAI,eAAe;AACnB,UAAI;AACJ,UAAI;AAEJ,aAAO,aAAa,OAAO,UAAU,eAAe,SAAS,QAAQ;AACpE,oBACC,eAAe,SAAS,SACrB,SAAS,YAAY,EAAE,MAAM,CAAC,IAC9B,OAAO;AACX,eACC,aAAa,OAAO,WACnB,QAAQ,OAAO,UAAU,EAAE,OAAO,CAAC,IAAI,WACvC;AACD,UAAAA,KAAI,MAAM,CAAC,CAAC,IAAI;AAChB,UAAAA,KAAI,MAAM,CAAC,IAAI,CAAC,IAAI;AACpB,wBAAc;AAAA,QACf;AAEA,oBACC,aAAa,OAAO,SACjB,OAAO,UAAU,EAAE,MAAM,CAAC,IAC1B,OAAO;AACX,eACC,eAAe,SAAS,WACvB,QAAQ,SAAS,YAAY,EAAE,OAAO,CAAC,IAAI,WAC3C;AACD,UAAAA,KAAI,MAAM,CAAC,CAAC,IAAI;AAChB,UAAAA,KAAI,MAAM,CAAC,IAAI,CAAC,IAAI;AACpB,0BAAgB;AAAA,QACjB;AAAA,MACD;AAEA,aAAOA;AAAA,IACR;AAiBA,aAAS,qBACR,SACA,QACA,UACA,UACA,UACA,QACA,MACC;AACD,UAAI,kBAAkB;AACtB,UAAIC,QAAO;AACX,UAAIC,UAAS;AAEb,UAAI,OAAO,SAAS,UAAU;AAC7B,QAAAD,QAAO,OAAO;AAAA,MACf,WAAW,OAAO,SAAS,YAAY;AACtC,QAAAC,UAAS;AAAA,MACV,WAAW,MAAM;AAChB,0BAAkB,CAAC,CAAC,KAAK;AACzB,QAAAD,QAAO,KAAK,OAAO;AACnB,QAAAC,UAAS,KAAK,UAAU;AAAA,MACzB;AACA,MAAAH,QAAOE,SAAQ,GAAG,oDAAoD;AACtE,MAAAF;AAAA,QACC,CAACG,WAAU,OAAOA,YAAW;AAAA,QAC7B;AAAA,MACD;AAEA,aAAO,QAAQ;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,QACAD;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAiBA,aAAS,sBACR,SACA,QACA,UACA,UACA,UACA,QACA,MACC;AACD,UAAI,kBAAkB;AACtB,UAAIE,SAAQ;AACZ,UAAI,cAAc;AAClB,UAAID,UAAS;AAEb,UAAI,OAAO,SAAS,UAAU;AAC7B,QAAAC,SAAQ,OAAO;AACf,sBAAc;AAAA,MACf,WAAW,OAAO,SAAS,YAAY;AACtC,QAAAD,UAAS;AAAA,MACV,WAAW,MAAM;AAChB,0BAAkB,CAAC,CAAC,KAAK;AACzB,QAAAC,SAAQ,KAAK,QAAQ;AACrB,sBAAc,OAAO,KAAK,UAAU;AACpC,QAAAD,UAAS,KAAK,UAAU;AAAA,MACzB;AACA,MAAAH,QAAOI,UAAS,GAAG,qDAAqD;AACxE,MAAAJ;AAAA,QACC,CAACG,WAAU,OAAOA,YAAW;AAAA,QAC7B;AAAA,MACD;AAEA,aAAO,QAAQ;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,QACA;AAAA,QACA,cAAcC,SAAQ;AAAA,MACvB;AAAA,IACD;AA6BA,aAAS,wBACR,QACA,UACA,UACA,UACA,QACA,aACA,YACC;AACD,UACC,OAAO,gBAAgB,eACvB,OAAO,eAAe,aACrB;AACD,eAAO,IAAI;AAAA,UACV;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AACA,UAAI,OAAO,gBAAgB,YAAY,OAAO,gBAAgB,aAAa;AAC1E,eAAO,IAAI;AAAA,UACV;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,cAAc;AAAA,UACd,aAAa;AAAA,QACd;AAAA,MACD;AACA,aAAO;AAAA,QACN,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAQA,aAAS,mCAAmC,QAAQ;AACnD,YAAM,SAAS,CAAC;AAChB,UAAI,eAAe,OAAO,YAAY;AAEtC,aAAO,gBAAgB,eAAe,YAAY,GAAG;AACpD,eAAO,KAAK,YAAY;AACxB,uBAAe,OAAO,YAAY;AAAA,MACnC;AAEA,aAAO;AAAA,IACR;AAiBA,IAAAL,QAAO,UAAU,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMjC,YAAY,QAAQ,UAAU;AAC7B,aAAK,MAAM,IAAI;AACf,aAAK,QAAQ,IAAI;AACjB,aAAK,SAAS,IAAI,eAAe,QAAQ,QAAQ;AAAA,MAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaA,qBAAqB,QAAQ,SAAS;AACrC,cAAM,kBAAkB,WAAW,QAAQ;AAC3C,cAAM,QAAQ,QAAQ,QACpB;AAAA,UACA,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,QACD,EACC,YAAY;AAEd,YAAI,SAAS,MAAM,MAAM,CAAC,MAAM,QAAQ;AACvC,iBAAO;AAAA,QACR;AACA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,cAAcM,OAAM,SAAS;AAC5B,eAAO;AAAA,UACN,QAAQ;AAAA,UACR,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACdA,MAAK,MAAM,CAAC;AAAA,UACZA,MAAK,MAAM,CAAC;AAAA,UACZ;AAAA,QACD,EAAE,YAAY;AAAA,MACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,aAAaA,OAAM,SAAS;AAC3B,eAAO;AAAA,UACN,QAAQ;AAAA,UACR,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACdA,MAAK,MAAM,CAAC;AAAA,UACZA,MAAK,MAAM,CAAC;AAAA,UACZ;AAAA,QACD,EAAE,YAAY;AAAA,MACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,eAAeA,OAAM,SAAS;AAC7B,eAAO;AAAA,UACN,QAAQ;AAAA,UACR,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACd;AAAA,UACAA,MAAK,MAAM,CAAC;AAAA,UACZ;AAAA,QACD,EAAE,YAAY;AAAA,MACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,cAAcA,OAAM,SAAS;AAC5B,eAAO;AAAA,UACN,QAAQ;AAAA,UACR,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACdA,MAAK,MAAM,CAAC;AAAA,UACZ;AAAA,UACA;AAAA,QACD,EAAE,YAAY;AAAA,MACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,qBAAqB,MAAM,OAAO,SAAS;AAC1C,eAAO;AAAA,UACN,QAAQ;AAAA,UACR,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACd,KAAK,MAAM,CAAC;AAAA,UACZ,MAAM,MAAM,CAAC;AAAA,UACb;AAAA,QACD,EAAE,YAAY;AAAA,MACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,oBAAoB,MAAM,OAAO,SAAS;AACzC,eAAO;AAAA,UACN,QAAQ;AAAA,UACR,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACd,KAAK,MAAM,CAAC;AAAA,UACZ,MAAM,MAAM,CAAC;AAAA,UACb;AAAA,QACD,EAAE,YAAY;AAAA,MACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAeA,eAAeA,OAAM,SAAS;AAC7B,eAAO;AAAA,UACN,QAAQ;AAAA,UACR,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACdA,MAAK,MAAM,CAAC;AAAA,UACZA,MAAK,MAAM,CAAC;AAAA,UACZ;AAAA,QACD,EAAE,aAAa;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,cAAcA,OAAM,SAAS;AAC5B,eAAO;AAAA,UACN,QAAQ;AAAA,UACR,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACdA,MAAK,MAAM,CAAC;AAAA,UACZA,MAAK,MAAM,CAAC;AAAA,UACZ;AAAA,QACD,EACE,aAAa,EACb,QAAQ;AAAA,MACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,gBAAgBA,OAAM,SAAS;AAC9B,eAAO;AAAA,UACN,QAAQ;AAAA,UACR,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACd;AAAA,UACAA,MAAK,MAAM,CAAC;AAAA,UACZ;AAAA,QACD,EACE,aAAa,EACb,QAAQ;AAAA,MACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,eAAeA,OAAM,SAAS;AAC7B,eAAO;AAAA,UACN,QAAQ;AAAA,UACR,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACdA,MAAK,MAAM,CAAC;AAAA,UACZ;AAAA,UACA;AAAA,QACD,EAAE,aAAa;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,sBAAsB,MAAM,OAAO,SAAS;AAC3C,eAAO;AAAA,UACN,QAAQ;AAAA,UACR,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACd,KAAK,MAAM,CAAC;AAAA,UACZ,MAAM,MAAM,CAAC;AAAA,UACb;AAAA,QACD,EAAE,aAAa;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,qBAAqB,MAAM,OAAO,SAAS;AAC1C,eAAO;AAAA,UACN,QAAQ;AAAA,UACR,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACd,KAAK,MAAM,CAAC;AAAA,UACZ,MAAM,MAAM,CAAC;AAAA,UACb;AAAA,QACD,EACE,aAAa,EACb,QAAQ;AAAA,MACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAkBA,UAAUA,OAAM,aAAa,YAAY;AACxC,eAAO;AAAA,UACN,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACdA,MAAK,MAAM,CAAC;AAAA,UACZA,MAAK,MAAM,CAAC;AAAA,UACZ;AAAA,UACA;AAAA,QACD,EAAE,aAAa;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAmBA,iBAAiB,MAAM,OAAO,SAAS;AACtC,eAAO;AAAA,UACN,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACd,KAAK,MAAM,CAAC;AAAA,UACZ,MAAM,MAAM,CAAC;AAAA,UACb;AAAA,UACA;AAAA,QACD,EAAE,aAAa;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,qBAAqB,MAAM,OAAO;AACjC,cAAMC,SAAQ,MAAM,OAAO,KAAK,QAAQ,GAAG,KAAK,MAAM,CAAC,CAAC;AAExD,eACCA,SAAQ,KAAK,QAAQ,EAAE,UACvB,KAAK,QAAQ,EAAEA,MAAK,EAAE,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC;AAAA,MAEjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,kBAAkB,aAAa;AAC9B,cAAM,SAAS;AAAA,UACd,QAAQ;AAAA,UACR,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACd;AAAA,UACA,YAAY,MAAM,CAAC;AAAA,UACnB,EAAE,iBAAiB,KAAK;AAAA,QACzB;AAEA,eAAO,mCAAmC,MAAM,EAAE,QAAQ;AAAA,MAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,iBAAiB,aAAa;AAC7B,cAAM,SAAS;AAAA,UACd,QAAQ;AAAA,UACR,KAAK,MAAM;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,SAAS;AAAA,UACd,YAAY,MAAM,CAAC;AAAA,UACnB;AAAA,UACA,EAAE,iBAAiB,KAAK;AAAA,QACzB;AAEA,eAAO,mCAAmC,MAAM;AAAA,MACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,kBAAkBD,OAAM;AACvB,eAAO,KAAK,UAAUA,OAAM;AAAA,UAC3B,iBAAiB;AAAA,UACjB,QAAQ;AAAA,QACT,CAAC;AAAA,MACF;AAAA,IACD;AAAA;AAAA;;;ACtrBA;AAAA,uEAAAE,UAAAC,SAAA;AAAA;AAWA,QAAMC,SAAQ,cAAiB,kBAAkB;AAajD,aAAS,MAAM,SAAS;AACvB,aAAO,QAAQ,MAAM,QAAQ,YAAY,KAAK;AAAA,IAC/C;AAQA,aAAS,aAAaC,OAAM,OAAO;AAClC,YAAM,SAAS,QAAQ,IAAI,KAAK,KAAK;AAErC,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AACJ,iBAAO,GAAGA,MAAK,IAAI,GAAG,MAAM,KAAKA,MAAK,IAAI;AAAA,QAC3C,KAAK;AACJ,iBAAO,GAAGA,MAAK,IAAI,GAAG,MAAM,KAAKA,MAAK,KAAK;AAAA,QAC5C;AACC,iBAAO,GAAGA,MAAK,IAAI,GAAG,MAAM;AAAA,MAC9B;AAAA,IACD;AAOA,aAAS,mBAAmBC,QAAO;AAClC,aAAOA,OAAM,QAAQ,QAAQ,OAAO,OAAO,EAAE,QAAQ,OAAO,OAAO,OAAO;AAAA,IAC3E;AAMA,IAAAH,QAAO,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,MAKhB,SAASC,OAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOf,MAAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASN,WAAW,CAACA,OAAM,UACfA;AAAA;AAAA,QACqB,SAAUC,OAAM,OAAO,SAAS;AACrD,mBAAS,IAAI,GAAG,IAAI,MAAM,gBAAgB,QAAQ,EAAE,GAAG;AACtD,kBAAM,cAAc,MAAM,gBAAgB,CAAC,EAAE;AAE7C,gBAAI,SAAS;AACZ,oBAAM,OAAO,YAAY,MAAM,SAAS;AAExC,kBACC,QAAQ,KACR,YAAY,MAAM,IAAI,MACrB,aAAaA,OAAM,OAAO,GAC1B;AACD,4BAAY,MAAM,IAAI,IAAI;AAAA,kBACzBA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD,OAAO;AACN,4BAAY,MAAM,KAAK,aAAaA,OAAM,MAAM,CAAC;AAAA,cAClD;AAAA,YACD,OAAO;AACN,0BAAY,MAAM,KAAK,aAAaA,OAAM,OAAO,CAAC;AAAA,YACnD;AAAA,UACD;AAEA,UAAAD;AAAA,YACC;AAAA,cACC,GAAG,MAAM,gBAAgB,IAAI,KAAK,EAAE,KAAK,GAAG,CAAC;AAAA,cAC7C,GAAGC,MAAK,IAAI,GAAG,UAAU,UAAU,EAAE;AAAA,YACtC,EAAE,KAAK,GAAG;AAAA,UACX;AAAA,QACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUF,SAAS,CAACD,OAAM,UACbA;AAAA;AAAA,QACqB,SAAU,UAAU;AACzC,cAAIG,QACH;AAKD,cAAI,SAAS,iBAAiB,SAAS,GAAG;AACzC,YAAAA,SACC;AAAA,UACF;AACA,cAAI,SAAS,eAAe,SAAS,GAAG;AACvC,YAAAA,SACC;AAAA,UACF;AAEA,gBAAM,WAAW,uBAAO,OAAO,IAAI;AACnC,gBAAM,SAAS,KAAK,cAAc,UAAU,QAAQ;AAGpD,qBAAW,MAAM,UAAU;AAC1B,kBAAM,UAAU,SAAS,EAAE;AAE3B,YAAAA,SAAQ,GAAG,EAAE;AAEb,gBAAI,QAAQ,WAAW;AACtB,cAAAA,SAAQ;AAAA,YACT,OAAO;AACN,cAAAA,SACC;AAAA,YACF;AAEA,gBAAI,QAAQ,SAAS,MAAM,SAAS,GAAG;AACtC,cAAAA,SAAQ,QAAQ,SAAS,MACvB,IAAI,kBAAkB,EACtB,KAAK,KAAK;AAAA,YACb,OAAO;AACN,cAAAA,SAAQ;AAAA,YACT;AAEA,YAAAA,SAAQ;AAAA,UACT;AAEA,UAAAA,SAAQ,GAAG,MAAM;AAAA;AACjB,UAAAA,SAAQ;AACR,UAAAH,OAAM,OAAOG,KAAI;AAAA,QAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASF,cAAc,UAAU,UAAU;AACjC,cAAM,QAAQ,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC;AAC3C,cAAM,OAAO,YAAY,uBAAO,OAAO,IAAI;AAC3C,YAAI,SAAS,SAAS,eAAe;AACrC,YAAIA,QAAO,YAAY,SAAS,eAAe,EAAE;AAEjD,eAAO,MAAM,SAAS,GAAG;AACxB,gBAAM,OAAO,MAAM,IAAI;AACvB,gBAAM,UAAU,KAAK,CAAC;AACtB,gBAAMC,SAAQ,KAAK,CAAC;AAEpB,cAAI,KAAK,QAAQ,EAAE,KAAKA,WAAU,GAAG;AACpC;AAAA,UACD;AACA,eAAK,QAAQ,EAAE,IAAI;AAEnB,gBAAM,cAAc,QAAQ,gBAAgBA,MAAK;AAEjD,cAAI,CAAC,aAAa;AACjB;AAAA,UACD;AAEA,cAAI,WAAW,QAAQ,IAAI;AAC1B,YAAAD,SAAQ,KAAK,YAAY,EAAE;AAAA,UAC5B,OAAO;AACN,YAAAA,SAAQ;AAAA,EAAM,QAAQ,EAAE,KAAK,YAAY,EAAE;AAAA,UAC5C;AACA,mBAAS,YAAY;AAErB,gBAAM,QAAQ,CAAC,SAAS,IAAIC,MAAK,CAAC;AAClC,gBAAM,KAAK,CAAC,aAAa,CAAC,CAAC;AAAA,QAC5B;AAEA,iBAAS,iBAAiB,QAAQ,kBAAgB;AACjD,cAAI,WAAW,aAAa,IAAI;AAC/B,YAAAD,SAAQ;AAAA,UACT,OAAO;AACN,YAAAA,SAAQ;AAAA,EAAM,aAAa,EAAE;AAAA,UAC9B;AACA,mBAAS;AAAA,QACV,CAAC;AAED,iBAAS,eAAe,QAAQ,kBAAgB;AAC/C,cAAI,WAAW,aAAa,IAAI;AAC/B,YAAAA,SAAQ;AAAA,UACT,OAAO;AACN,YAAAA,SAAQ;AAAA,EAAM,aAAa,EAAE;AAAA,UAC9B;AACA,mBAAS;AAAA,QACV,CAAC;AAED,eAAO,GAAGA,KAAI;AAAA,MACf;AAAA,IACD;AAAA;AAAA;;;ACzOA;AAAA,2EAAAE,UAAAC,SAAA;AAAA;AAWA,QAAMC,SAAQ;AAWd,aAAS,YAAY,SAAS;AAC7B,aAAO,QAAQ;AAAA,IAChB;AAoBA,QAAM,kBAAN,MAAM,iBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQrB,YAAY,IAAI,iBAAiB,WAAW;AAM3C,aAAK,KAAK;AAMV,aAAK,eAAe,CAAC;AAMrB,aAAK,eAAe,gBAAgB,OAAO,WAAW;AAMtD,aAAK,kBAAkB,CAAC;AAMxB,aAAK,kBAAkB;AAMvB,aAAK,YAAY;AAGjB,eAAO,eAAe,MAAM,YAAY;AAAA,UACvC,OAAO;AAAA;AAAA,YAEN,MAAM;AAAA;AAAA,YAGN,oBAAoB,CAAC;AAAA,UACtB;AAAA,QACD,CAAC;AAGD,YAAIA,OAAM,SAAS;AAClB,eAAK,SAAS,QAAQ,CAAC;AAAA,QACxB;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,oBAAoB,SAAS;AAC5B,eAAO,KAAK,SAAS,mBAAmB,SAAS,OAAO;AAAA,MACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,OAAO,QAAQ,IAAI;AAClB,eAAO,IAAI,iBAAgB,IAAI,CAAC,GAAG,IAAI;AAAA,MACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,OAAO,QAAQ,IAAI,iBAAiB;AACnC,eAAO,IAAI;AAAA,UACV;AAAA,UACA,iBAAgB,sBAAsB,eAAe;AAAA,UACrD,gBAAgB,KAAK,WAAW;AAAA,QACjC;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,OAAO,eAAe,IAAI,iBAAiB;AAC1C,cAAM,UAAU,IAAI;AAAA,UACnB;AAAA,UACA,iBAAgB,sBAAsB,eAAe;AAAA,UACrD;AAAA,QACD;AAMA,yBAAgB,SAAS,OAAO;AAEhC,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,OAAO,gBAAgB,IAAI,iBAAiB;AAC3C,eAAO,IAAI,iBAAgB,IAAI,CAAC,GAAG,gBAAgB,KAAK,WAAW,CAAC;AAAA,MACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,OAAO,SAAS,SAAS;AACxB,YAAI,QAAQ,SAAS,MAAM;AAC1B;AAAA,QACD;AACA,gBAAQ,SAAS,OAAO;AAExB,YAAI;AAEJ,YAAI,QAAQ,WAAW;AAOtB,eAAK,IAAI,GAAG,IAAI,QAAQ,gBAAgB,QAAQ,EAAE,GAAG;AACpD,kBAAM,cAAc,QAAQ,gBAAgB,CAAC;AAE7C,wBAAY,gBAAgB,KAAK,OAAO;AACxC,wBAAY,aAAa,KAAK,OAAO;AAAA,UACtC;AAAA,QACD,OAAO;AAON,eAAK,IAAI,GAAG,IAAI,QAAQ,gBAAgB,QAAQ,EAAE,GAAG;AACpD,oBAAQ,gBAAgB,CAAC,EAAE,gBAAgB,KAAK,OAAO;AAAA,UACxD;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,OAAO,wBAAwB,SAAS,aAAa;AACpD,gBAAQ,SAAS,mBAAmB,KAAK,WAAW;AAAA,MACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,OAAO,sBAAsB,UAAU;AACtC,cAAM,OAAO,oBAAI,IAAI;AAErB,iBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,EAAE,GAAG;AACzC,gBAAM,UAAU,SAAS,CAAC;AAG1B,cAAI,KAAK,IAAI,OAAO,GAAG;AACtB;AAAA,UACD;AAGA,cAAI,CAAC,QAAQ,SAAS,MAAM;AAC3B,qBAAS,IAAI,GAAG,IAAI,QAAQ,gBAAgB,QAAQ,EAAE,GAAG;AACxD,oBAAM,cAAc,QAAQ,gBAAgB,CAAC;AAE7C,kBAAI,CAAC,KAAK,IAAI,WAAW,GAAG;AAC3B,qBAAK,IAAI,WAAW;AAAA,cACrB;AAAA,YACD;AAAA,UACD,OAAO;AACN,iBAAK,IAAI,OAAO;AAAA,UACjB;AAAA,QACD;AAEA,eAAO,CAAC,GAAG,IAAI;AAAA,MAChB;AAAA,IACD;AAEA,IAAAD,QAAO,UAAU;AAAA;AAAA;;;ACrQjB;AAAA,sEAAAE,UAAAC,SAAA;AAAA;AAeA,QAAMC,UAAS;AAAf,QACC,kBAAkB;AAWnB,aAAS,YAAY,SAAS;AAC7B,aAAO,QAAQ;AAAA,IAChB;AA0BA,aAAS,eAAe,SAAS,YAAY,UAAUC,SAAQ;AAE9D,YAAMC,QAAO,QAAQ;AAgBrB,YAAM,kBACL,cAAc,IAAI,aAAaA,MAAK,SAAS;AAC9C,YAAM,gBAAgB,YAAY,IAAI,WAAWA,MAAK,SAAS;AAG/D,YAAM,WAAW,CAAC;AAElB,eAAS,IAAI,GAAG,IAAI,QAAQ,OAAO,EAAE,GAAG;AAEvC,cAAM,kBAAkB,CAAC;AAEzB,iBAAS,IAAI,iBAAiB,KAAK,eAAe,EAAE,GAAG;AACtD,0BAAgB,KAAKA,MAAK,CAAC,EAAE,CAAC,CAAC;AAAA,QAChC;AAGA,iBAAS,KAAKD,QAAO,QAAQ,YAAY,KAAK,GAAG,eAAe,CAAC;AAAA,MAClE;AAEA,aAAO;AAAA,IACR;AAUA,aAAS,mBAAmB,SAAS,UAAU;AAC9C,UAAI,kBAAkB;AAQtB,aAAO,gBAAgB,SAAS,QAAQ,OAAO;AAC9C,cAAM,SAAS,CAAC;AAmBhB,iBACK,IAAI,GAAG,SAAS,KAAK,MAAM,gBAAgB,SAAS,CAAC,GACzD,IAAI,QACJ,EAAE,GACD;AACD,iBAAO;AAAA,YACN,gBAAgB,QAAQ,QAAQ,YAAY,KAAK,GAAG;AAAA,cACnD,gBAAgB,CAAC;AAAA,cACjB,gBAAgB,IAAI,MAAM;AAAA,YAC3B,CAAC;AAAA,UACF;AAAA,QACD;AAOA,0BAAkB;AAAA,MACnB;AAEA,aAAO;AAAA,IACR;AASA,QAAM,cAAN,MAAM,aAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQjB,YAAY,aAAa,OAAOE,QAAO;AAMtC,aAAK,cAAc;AAMnB,aAAK,QAAQ;AASb,aAAK,QAAQA;AAUb,aAAK,eAAe,CAAC;AAAA,MACtB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,IAAI,OAAO;AACV,cAAMD,QAAO,KAAK;AAElB,eAAOA,MAAK,WAAW,IAAI,CAAC,IAAIA,MAAK,GAAG,EAAE;AAAA,MAC3C;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,IAAI,QAAQ;AACX,eAAO,KAAK,aAAa,WAAW;AAAA,MACrC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,IAAI,YAAY;AACf,cAAM,WAAW,KAAK;AAEtB,eAAO,SAAS,SAAS,KAAK,SAAS,KAAK,WAAW;AAAA,MACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,SAAS,YAAY,UAAU;AAC9B,eAAO;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,UACA,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,gBAAgB,YAAY,UAAU;AACrC,eAAO;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,UACA,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAeA,iBAAiB,YAAY,UAAU;AACtC,eAAO;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,UACA,gBAAgB;AAAA,QACjB;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,IAAI,UAAU;AACb,QAAAF;AAAA,UACC,SAAS,UAAU,KAAK;AAAA,UACxB,GAAG,SAAS,MAAM,OAAO,KAAK,KAAK;AAAA,QACpC;AACA,aAAK,aAAa,KAAK,mBAAmB,MAAM,QAAQ,CAAC;AAAA,MAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,YAAY,yBAAyB;AACpC,QAAAA;AAAA,UACC,wBAAwB,UAAU,KAAK;AAAA,UACvC,GAAG,wBAAwB,MAAM,OAAO,KAAK,KAAK;AAAA,QACnD;AACA,aAAK,aAAa;AAAA,UACjB;AAAA,UACA;AAAA,UACA,mBAAmB,MAAM,uBAAuB;AAAA,QACjD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,OAAO,kBAAkB;AACxB,QAAAA,QAAO,iBAAiB,UAAU,KAAK,KAAK;AAC5C,aAAK,aAAa,KAAK,GAAG,iBAAiB,YAAY;AAAA,MACxD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ;AACP,aAAK,eAAe,CAAC;AAAA,MACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,OAAO,QAAQ,aAAa;AAC3B,cAAM,UAAU,IAAI,aAAY,aAAa,MAAM,CAAC;AAEpD,gBAAQ,IAAI,CAAC,gBAAgB,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC;AAEzD,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,OAAO,SAAS,eAAe,uBAAuB;AACrD,eAAO,IAAI;AAAA,UACV,cAAc;AAAA,UACd;AAAA,WACC,wBAAwB,IAAI,KAAK,cAAc;AAAA,QACjD;AAAA,MACD;AAAA,IACD;AAEA,IAAAD,QAAO,UAAU;AAAA;AAAA;;;ACrXjB;AAAA,yEAAAK,UAAAC,SAAA;AAAA;AAWA,QAAM,kBAAkB;AAAxB,QACC,cAAc;AAwBf,QAAM,eAAN,MAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASlB,YAAY,cAAc,WAAW,OAAO,aAAa;AAKxD,aAAK,QAAQ;AAOb,aAAK,YAAY;AAMjB,aAAK,QAAQ;AAMb,aAAK,oBAAoB,YAAY,SAAS,WAAW;AAAA,MAC1D;AAAA,IACD;AAKA,QAAM,eAAN,MAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKlB,YAAY,cAAc;AAKzB,aAAK,QAAQ;AAMb,aAAK,qBAAqB;AAAA,MAC3B;AAAA,IACD;AA0BA,QAAM,gBAAN,MAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWnB,YAAY,cAAc,MAAM,mBAAmB,aAAa;AAK/D,aAAK,QAAQ;AAQb,aAAK,OAAO;AAMZ,aAAK,oBAAoB;AAMzB,aAAK,kBAAkB,YAAY,SAAS,WAAW;AAMvD,aAAK,mBAAmB,YAAY,SAAS,WAAW;AAMxD,aAAK,qBAAqB,YAAY,SAAS,WAAW;AAO1D,aAAK,YAAY;AAAA,MAClB;AAAA,IACD;AAKA,QAAM,kBAAN,MAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQrB,YAAY,cAAc,MAAM,OAAO,cAAc;AAKpD,aAAK,QAAQ;AAMb,aAAK,OAAO;AAMZ,aAAK,QAAQ;AAMb,aAAK,oBAAoB,aAAa;AAAA,MACvC;AAAA,IACD;AAKA,QAAM,mBAAN,cAA+B,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAO9C,YAAY,cAAc,OAAO,cAAc;AAC9C,cAAM,cAAc,kBAAkB,OAAO,YAAY;AAOzD,aAAK,OAAO;AAQZ,aAAK,uBAAuB;AAAA,MAC7B;AAAA,IACD;AAKA,QAAM,qBAAN,cAAiC,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQhD,YAAY,cAAc,OAAO,cAAc,aAAa;AAC3D,cAAM,cAAc,oBAAoB,OAAO,YAAY;AAO3D,aAAK,OAAO;AAQZ,aAAK,gBAAgB;AAMrB,aAAK,sBAAsB,YAAY,SAAS,WAAW;AAAA,MAC5D;AAAA,IACD;AAKA,QAAM,iBAAN,cAA6B,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAO5C,YAAY,cAAc,OAAO,cAAc;AAC9C,cAAM,cAAc,gBAAgB,OAAO,YAAY;AAOvD,aAAK,OAAO;AAQZ,aAAK,oBAAoB;AAQzB,aAAK,eAAe;AAQpB,aAAK,oBAAoB;AAQzB,aAAK,iBAAiB;AAQtB,aAAK,sBAAsB;AAY3B,aAAK,uBAAuB;AAAA,MAC7B;AAAA,IACD;AAWA,QAAM,mBAAN,cAA+B,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAO9C,YAAY,cAAc,OAAO,cAAc;AAC9C,cAAM,cAAc,kBAAkB,OAAO,YAAY;AAYzD,aAAK,eAAe;AASpB,aAAK,eAAe;AASpB,aAAK,oBAAoB;AAWzB,aAAK,uBAAuB;AAAA,MAC7B;AAAA,IACD;AAKA,QAAM,mBAAN,cAA+B,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAO9C,YAAY,cAAc,OAAO,cAAc;AAC9C,cAAM,cAAc,kBAAkB,OAAO,YAAY;AAYzD,aAAK,eAAe;AASpB,aAAK,eAAe;AASpB,aAAK,oBAAoB;AAWzB,aAAK,uBAAuB;AAAA,MAC7B;AAAA,IACD;AAUA,QAAM,gBAAN,MAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOnB,YAAY,cAAc,SAAS;AAKlC,aAAK,QAAQ;AAMb,aAAK,UAAU;AAMf,aAAK,kBAAkB;AAMvB,aAAK,sBAAsB;AAM3B,aAAK,oBAAoB;AAMzB,aAAK,gBAAgB;AAOrB,aAAK,YAAY;AAAA,MAClB;AAAA,IACD;AAKA,QAAM,aAAN,MAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQhB,YAAY,cAAc,cAAc,aAAa;AAKpD,aAAK,QAAQ;AAMb,aAAK,eAAe;AASpB,aAAK,WAAW;AAShB,aAAK,sBAAsB,eACxB,YAAY,SAAS,WAAW,IAChC;AAQH,aAAK,oBAAoB,YAAY,SAAS,WAAW;AAMzD,aAAK,uBAAuB;AAM5B,aAAK,yBAAyB;AAAA,MAC/B;AAAA,IACD;AAkBA,aAAS,sBAAsB,MAAM,QAAQC,MAAK,UAAU;AAC3D,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,EAAE,GAAG;AACzC,cAAM,UAAU,SAAS,CAAC;AAE1B,aAAK,KAAK,OAAO;AACjB,YAAI,CAAC,OAAO,SAAS,OAAO,GAAG;AAC9B,UAAAA,KAAI,KAAK,OAAO;AAAA,QACjB;AAAA,MACD;AAAA,IACD;AAQA,aAAS,mBAAmB,OAAO,OAAO;AACzC,UAAI,CAAC,OAAO;AACX,eAAO,MAAM;AAAA,MACd;AAEA,UAAI,UAAU,MAAM;AAEpB,aAAO,SAAS;AACf,YAAI,QAAQ,UAAU,OAAO;AAC5B,iBAAO;AAAA,QACR;AACA,kBAAU,QAAQ;AAAA,MACnB;AAGA,aAAO;AAAA,IACR;AAQA,aAAS,gBAAgB,OAAO,OAAO;AACtC,UAAI,UAAU,MAAM;AAEpB,aAAO,SAAS;AACf,YAAI,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,WAAW;AACxD,iBAAO;AAAA,QACR;AACA,kBAAU,QAAQ;AAAA,MACnB;AAGA,aAAO;AAAA,IACR;AASA,aAAS,iBAAiB,OAAO;AAChC,UAAI,UAAU,MAAM;AAEpB,aAAO,SAAS;AACf,YAAI,QAAQ,gBAAgB,QAAQ,aAAa,WAAW;AAC3D,iBAAO;AAAA,QACR;AACA,kBAAU,QAAQ;AAAA,MACnB;AAEA,aAAO;AAAA,IACR;AAUA,aAAS,gBAAgB,OAAO;AAC/B,UAAI,UAAU,MAAM;AAEpB,aAAO,SAAS;AACf,YACC,QAAQ,aAAa,SACpB,QAAQ,gBAAgB,QAAQ,aAAa,SAC7C;AACD,iBAAO;AAAA,QACR;AACA,kBAAU,QAAQ;AAAA,MACnB;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,gBAAgB,UAAUC,QAAO;AACzC,eAAS,OAAO,SAAS,QAAQA,MAAK,GAAG,CAAC;AAAA,IAC3C;AAYA,aAAS,mBAAmB,cAAc,cAAc;AACvD,eAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,EAAE,GAAG;AAC7C,cAAM,cAAc,aAAa,CAAC;AAClC,cAAM,cAAc,aAAa,CAAC;AAElC,wBAAgB,YAAY,cAAc,WAAW;AACrD,wBAAgB,YAAY,iBAAiB,WAAW;AACxD,wBAAgB,YAAY,cAAc,WAAW;AACrD,wBAAgB,YAAY,iBAAiB,WAAW;AAAA,MACzD;AAAA,IACD;AAUA,aAAS,WAAW,OAAO,yBAAyB,uBAAuB;AAC1E,YAAM,eAAe,gBAAgB;AAAA,QACpC;AAAA,MACD;AACA,YAAM,aAAa,gBAAgB;AAAA,QAClC;AAAA,MACD;AACA,YAAM,MAAM,KAAK,IAAI,aAAa,QAAQ,WAAW,MAAM;AAO3D,eAAS,IAAI,GAAG,IAAI,KAAK,EAAE,GAAG;AAE7B,cAAM,cAAc,aAAa,CAAC;AAClC,cAAM,YAAY,WAAW,CAAC;AAM9B,YAAI,UAAU,WAAW;AACxB,sBAAY,aAAa,KAAK,SAAS;AAAA,QACxC;AAMA,YAAI,YAAY,WAAW;AAC1B,oBAAU,aAAa,KAAK,WAAW;AAAA,QACxC;AAMA,oBAAY,gBAAgB,KAAK,SAAS;AAC1C,kBAAU,gBAAgB,KAAK,WAAW;AAQ1C,YAAI,UAAU,gBAAgB,UAAU,GAAG;AAC1C,0BAAgB,wBAAwB,WAAW,WAAW;AAAA,QAC/D;AAGA,cAAM,aAAa,aAAa,SAAS;AAAA,MAC1C;AAAA,IACD;AAYA,aAAS,0BAA0B,SAAS,eAAe,MAAM;AAKhE,UAAI,CAAC,cAAc,WAAW;AAC7B,sBAAc,gBAAgB,IAAI,IAAI;AACtC,sBAAc,iBAAiB,IAAI,IAAI;AACvC,sBAAc,mBAAmB,IAAI,IAAI;AAAA,MAC1C;AAQA,UAAI,QAAQ,SAAS,MAAM;AAC1B,gBAAQ,kBAAkB,OAAO,cAAc,gBAAgB;AAAA,MAChE;AAEA,cAAQ,oBAAoB,cAAc,gBAAgB,SAAS,GAAG,EAAE;AAAA,IACzE;AASA,QAAM,gBAAN,MAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOnB,YAAY,aAAa,UAAU;AAKlC,aAAK,cAAc;AAMnB,aAAK,eAAe;AAMpB,aAAK,cAAc,YAAY,QAAQ,WAAW;AAOlD,aAAK,gBAAgB;AAMrB,aAAK,gBAAgB;AAMrB,aAAK,aAAa;AAMlB,aAAK,cAAc;AAMnB,aAAK,eAAe;AAMpB,aAAK,eAAe;AAUpB,aAAK,kBAAkB,CAAC;AAMxB,aAAK,iBAAiB,KAAK,YAAY,KAAK,CAAC;AAO7C,aAAK,gBAAgB,CAAC;AAOtB,aAAK,sBAAsB,CAAC;AAO5B,aAAK,oBAAoB,CAAC;AAW1B,cAAM,QAAQ,KAAK;AACnB,cAAM,WAAW,KAAK;AACtB,cAAM,SAAS,KAAK;AAEpB,iBAAS,MAAM,sBAAsB;AAAA,UACpC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AACA,eAAO,MAAM,sBAAsB,KAAK,MAAM,QAAQ,UAAU,KAAK;AAAA,MACtE;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,IAAI,eAAe;AAClB,eAAO,KAAK,YAAY;AAAA,MACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,IAAI,oBAAoB;AACvB,cAAM,UAAU,KAAK;AAErB,eAAO,WAAW,QAAQ;AAAA,MAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,gBAAgB,iBAAiB;AAChC,aAAK,cAAc,YAAY;AAAA,UAC9B,KAAK;AAAA,UACL;AAAA,QACD;AAEA,eAAO,KAAK;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,iBAAiB;AAChB,cAAM,cAAc,KAAK;AAEzB,aAAK,cAAc,YAAY;AAC/B,aAAK,YAAY,YAAY,YAAY,SAAS,GAAG,EAAE,CAAC;AAExD,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,WAAW;AACV,aAAK,YAAY,IAAI,KAAK,kBAAkB,SAAS,IAAI,EAAE,CAAC;AAAA,MAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,iBAAiB;AAChB,aAAK,YAAY,IAAI,KAAK,kBAAkB,IAAI;AAAA,MACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAoCA,kBAAkB,MAAM,mBAAmB;AAC1C,aAAK,gBAAgB,IAAI;AAAA,UACxB,KAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA,KAAK;AAAA,QACN;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,mBAAmB;AAClB,cAAM,sBAAsB,KAAK;AACjC,cAAM,cAAc,KAAK;AACzB,cAAM,OAAO,YAAY;AAEzB,aAAK,gBAAgB,oBAAoB;AAEzC,gBAAQ,oBAAoB,MAAM;AAAA,UACjC,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAMJ,gBAAI,CAAC,oBAAoB,WAAW;AACnC,kCAAoB,gBAAgB,IAAI,IAAI;AAC5C,kCAAoB,iBAAiB,IAAI,IAAI;AAC7C,kCAAoB,mBAAmB,IAAI,IAAI;AAAA,YAChD;AAQA,gBAAI,oBAAoB,mBAAmB;AAC1C,oBAAM,gBAAgB,KAAK;AAE3B,4BAAc,gBAAgB;AAAA,gBAC7B,oBAAoB;AAAA,cACrB;AACA,4BAAc,iBAAiB;AAAA,gBAC9B,oBAAoB;AAAA,cACrB;AACA,4BAAc,mBAAmB;AAAA,gBAChC,oBAAoB;AAAA,cACrB;AACA,4BAAc,YAAY;AAG1B,qBAAO;AAAA,YACR;AAEA;AAAA,UAED,KAAK;AACJ,gBAAI,CAAC,oBAAoB,WAAW;AAKnC,kCAAoB,gBAAgB,MAAM;AAC1C,kCAAoB,gBAAgB,IAAI,IAAI;AAAA,YAC7C,OAAO;AAMN,kCAAoB,iBAAiB,MAAM;AAC3C,kCAAoB,iBAAiB,IAAI,IAAI;AAAA,YAC9C;AAEA;AAAA,UAED,KAAK;AAKJ,mBAAO;AAAA;AAAA,UAGR;AACC,kBAAM,IAAI,MAAM,aAAa;AAAA,QAC/B;AAKA,cAAM,sBAAsB,oBAAoB;AAEhD,4BAAoB,OAAO,oBAAoB,gBAAgB;AAC/D,oBAAY,YAAY,oBAAoB,SAAS,GAAG,EAAE,CAAC;AAE3D,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,mBAAmB;AAClB,cAAM,uBAAuB,KAAK;AAClC,cAAM,cAAc,KAAK;AAEzB,YAAI,qBAAqB,WAAW;AAOnC,cAAI;AAEJ,kBAAQ,qBAAqB,MAAM;AAAA,YAClC,KAAK;AACJ,gCAAkB,qBAAqB;AACvC;AAAA,YACD,KAAK;AACJ,gCAAkB,qBAAqB;AACvC;AAAA,YACD,KAAK;AACJ,gCAAkB,qBAAqB;AACvC;AAAA,YACD;AACC,oBAAM,IAAI,MAAM,aAAa;AAAA,UAC/B;AAOA,sBAAY,YAAY,gBAAgB,SAAS,GAAG,EAAE,CAAC;AASvD,0BAAgB,MAAM;AACtB,+BAAqB,YAAY;AAAA,QAClC,OAAO;AAeN,kBAAQ,qBAAqB,MAAM;AAAA,YAClC,KAAK;AAcJ,mCAAqB,iBAAiB,IAAI,YAAY,IAAI;AAC1D,mCAAqB,mBAAmB;AAAA,gBACvC,YAAY;AAAA,cACb;AACA;AAAA,YACD,KAAK;AACJ,mCAAqB,gBAAgB,IAAI,YAAY,IAAI;AACzD;AAAA,YACD,KAAK;AACJ,mCAAqB,gBAAgB,IAAI,YAAY,IAAI;AACzD,mCAAqB,iBAAiB,IAAI,YAAY,IAAI;AAC1D;AAAA,YACD;AACC,oBAAM,IAAI,MAAM,aAAa;AAAA,UAC/B;AAMA,sBAAY,YAAY,YAAY,SAAS,IAAI,EAAE,CAAC;AAAA,QACrD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,mBAAmB;AAClB,cAAM,UAAU,KAAK;AACrB,cAAM,cAAc,KAAK;AAOzB,YAAI,CAAC,QAAQ,WAAW;AACvB,kBAAQ,gBAAgB,IAAI,YAAY,IAAI;AAC5C,kBAAQ,iBAAiB,IAAI,YAAY,IAAI;AAC7C,kBAAQ,mBAAmB,IAAI,YAAY,IAAI;AAAA,QAChD;AAEA,gBAAQ,YAAY;AAGpB,oBAAY,YAAY,QAAQ,gBAAgB,SAAS,GAAG,EAAE,CAAC;AAAA,MAChE;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,kBAAkB;AACjB,cAAM,UAAU,KAAK;AACrB,cAAM,cAAc,KAAK;AAMzB,gBAAQ,gBAAgB,MAAM;AAC9B,gBAAQ,gBAAgB,IAAI,YAAY,IAAI;AAC5C,gBAAQ,YAAY;AAGpB,oBAAY,YAAY,QAAQ,iBAAiB,SAAS,GAAG,EAAE,CAAC;AAAA,MACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaA,mBAAmB;AAClB,aAAK,eAAe,IAAI,aAAa,KAAK,YAAY;AAAA,MACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,kBAAkB;AACjB,cAAM,UAAU,KAAK;AAErB,aAAK,eAAe,QAAQ;AAG5B,iBAAS,IAAI,QAAQ,oBAAoB,IAAI,GAAG,EAAE,GAAG;AACpD,eAAK,iBAAiB;AAAA,QACvB;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,mBAAmB;AAClB,YAAI,KAAK,cAAc;AACtB,eAAK,aAAa,sBAAsB;AACxC,eAAK,kBAAkB,MAAM,KAAK;AAAA,QACnC;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,oBAAoB;AACnB,YAAI,KAAK,cAAc;AACtB,eAAK,iBAAiB;AAAA,QACvB;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaA,kBAAkB,SAAS,OAAO;AACjC,aAAK,gBAAgB,IAAI,cAAc,KAAK,eAAe,OAAO;AAClE,aAAK,iBAAiB,MAAM,KAAK;AAAA,MAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,mBAAmB;AAClB,cAAM,UAAU,KAAK;AAErB,aAAK,gBAAgB,QAAQ;AAE7B,cAAM,cAAc,KAAK;AACzB,cAAM,oBAAoB,KAAK,gBAAgB,EAAE;AAEjD,YAAI,QAAQ,cAAc,GAAG;AAM5B,cAAI,CAAC,kBAAkB,OAAO;AAC7B,8BAAkB,IAAI,YAAY,SAAS,IAAI,EAAE,CAAC;AAClD,wBAAY,YAAY,kBAAkB,SAAS,GAAG,EAAE,CAAC;AAAA,UAC1D;AAEA;AAAA,QACD;AAEA,cAAM,eAAe,YAAY;AAEjC,aAAK,eAAe;AACpB,cAAM,mBAAmB,YAAY;AAMrC,0BAAkB,IAAI,YAAY;AAOlC,YAAI,CAAC,QAAQ,eAAe;AAC3B,cAAI,QAAQ,qBAAqB;AAKhC;AAAA,cACC,QAAQ;AAAA,cACR,QAAQ;AAAA,YACT;AAMA,uBAAW,MAAM,kBAAkB,QAAQ,mBAAmB;AAAA,UAC/D,OAAO;AAKN,8BAAkB,IAAI,gBAAgB;AAAA,UACvC;AAAA,QACD;AAGA,iBAAS,IAAI,GAAG,IAAI,QAAQ,WAAW,EAAE,GAAG;AAC3C,eAAK,cAAc,KAAK,YAAY;AAAA,QACrC;AAMA,aAAK,YAAY,YAAY,kBAAkB,SAAS,GAAG,EAAE,CAAC;AAAA,MAC/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,mBAAmB,iBAAiB,eAAe;AAClD,cAAM,UAAU,KAAK;AAErB,YAAI,CAAC,QAAQ,SAAS;AACrB;AAAA,QACD;AAOA,cAAM,oBAAoB,KAAK;AAC/B,cAAM,cAAc,KAAK,gBAAgB;AAEzC,oBAAY,IAAI,kBAAkB,SAAS,GAAG,EAAE,CAAC;AAQjD,YAAI,eAAe;AAOlB,kBAAQ,kBAAkB,kBAAkB;AAO5C,cAAI,iBAAiB;AACpB,oBAAQ,oBAAoB;AAAA,UAC7B,OAAO;AACN,oBAAQ,sBAAsB,YAAY;AAAA,UAC3C;AAAA,QACD,OAAO;AAWN,cAAI,CAAC,mBAAmB,QAAQ,mBAAmB;AAClD,oBAAQ,oBAAoB;AAC5B,oBAAQ,sBAAsB,YAAY;AAAA,UAC3C;AAAA,QACD;AAGA,gBAAQ,gBAAgB;AACxB,gBAAQ,aAAa;AAAA,MACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,eAAe,cAAc;AAC5B,aAAK,aAAa,IAAI;AAAA,UACrB,KAAK;AAAA,UACL;AAAA,UACA,KAAK;AAAA,QACN;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,gBAAgB;AACf,cAAM,UAAU,KAAK;AAErB,aAAK,aAAa,QAAQ;AAO1B,YAAI,QAAQ,aAAa,SAAS;AACjC,eAAK,eAAe;AACpB;AAAA,QACD;AAOA,cAAM,8BAA8B,QAAQ;AAC5C,cAAM,4BAA4B,QAAQ;AAG1C,YACC,4BAA4B,SAC5B,0BAA0B,OACzB;AACD;AAAA,QACD;AASA,cAAM,eAAe,KAAK,YAAY;AAEtC,aAAK,cAAc,KAAK,YAAY;AACpC,cAAM,iBAAiB,aAAa;AAAA,UACnC;AAAA,UACC,aAAa,SAAS,IAAK;AAAA,QAC7B;AACA,cAAM,kBAAkB,aAAa;AAAA,UACnC,aAAa,SAAS,IAAK;AAAA,QAC7B;AAGA,YAAI,CAAC,4BAA4B,OAAO;AACvC,2BAAiB,IAAI,EAAE,oBAAoB,IAAI,eAAe;AAAA,QAC/D;AACA,YAAI,CAAC,0BAA0B,OAAO;AACrC,0BAAgB,IAAI,EAAE,kBAAkB,IAAI,eAAe;AAAA,QAC5D;AAGA,aAAK,YAAY,YAAY,cAAc;AAM3C,YAAI,CAAC,QAAQ,wBAAwB,CAAC,QAAQ,wBAAwB;AACrE,eAAK,YAAY,gBAAgB;AAAA,QAClC;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,iBAAiB;AAChB,cAAM,UAAU,KAAK;AACrB,cAAM,cAAc,KAAK;AACzB,cAAM,4BAA4B,QAAQ;AAO1C,gBAAQ,WAAW;AACnB,gBAAQ,oBAAoB,YAAY,SAAS,WAAW;AAC5D,gBAAQ,uBAAuB,YAAY;AAG3C,kCAA0B,IAAI,YAAY,IAAI;AAC9C,cAAM,iBAAiB,0BAA0B,SAAS,GAAG,EAAE;AAG/D,aAAK,gBAAgB;AACrB,aAAK,eAAe;AACpB,aAAK,YAAY,IAAI,cAAc;AAAA,MACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,mBAAmB;AAClB,cAAM,UAAU,KAAK;AACrB,YAAI,cAAc,KAAK;AACvB,cAAM,8BAA8B,QAAQ;AAC5C,cAAM,2BAA2B,QAAQ;AACzC,cAAM,wBAAwB,YAAY;AAG1C,YAAI,QAAQ,aAAa,SAAS;AAEjC,eAAK,eAAe;AACpB,wBAAc,KAAK;AAEnB,kBAAQ,yBAAyB,YAAY;AAAA,QAC9C,OAAO;AACN,kBAAQ,uBAAuB,YAAY;AAAA,QAC5C;AAEA,gBAAQ,WAAW;AAMnB,YACC,4BAA4B,SAC5B,yBAAyB,OACxB;AAED;AAAA,QACD;AAMA,cAAM,WAAW,YAAY,SAAS,IAAI,EAAE;AAE5C,iBAAS,IAAI,GAAG,IAAI,YAAY,OAAO,EAAE,GAAG;AAC3C,gBAAM,2BAA2B,CAAC,sBAAsB,CAAC,CAAC;AAE1D,mBACK,IAAI,GACR,IAAI,4BAA4B,aAAa,QAC7C,EAAE,GACD;AACD,qCAAyB;AAAA,cACxB,4BAA4B,aAAa,CAAC,EAAE,CAAC;AAAA,YAC9C;AAAA,UACD;AACA,mBACK,IAAI,GACR,IAAI,yBAAyB,aAAa,QAC1C,EAAE,GACD;AACD,qCAAyB;AAAA,cACxB,yBAAyB,aAAa,CAAC,EAAE,CAAC;AAAA,YAC3C;AAAA,UACD;AAEA,mBAAS;AAAA,YACR,gBAAgB;AAAA,cACf,KAAK,YAAY,KAAK;AAAA,cACtB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,aAAK,gBAAgB,IAAI;AACzB,aAAK,YAAY,IAAI,QAAQ;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,YAAY;AACX,cAAM,cAAc,KAAK;AACzB,cAAM,kBAAkB,YAAY;AAEpC,YAAI,YAAY,WAAW;AAC1B,2BAAiB,IAAI,EAAE,oBAAoB,IAAI,eAAe;AAC9D,0BAAgB,IAAI,EAAE,kBAAkB,IAAI,eAAe;AAE3D,sBAAY,YAAY,YAAY,SAAS,IAAI,EAAE,CAAC;AAAA,QACrD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,0CAA0C;AACzC,cAAM,cAAc,KAAK;AAEzB,YAAI,CAAC,YAAY,WAAW;AAC3B;AAAA,QACD;AAEA,cAAM,UAAU,gBAAgB,IAAI;AAEpC,YAAI,YAAY,QAAQ,CAAC,QAAQ,kBAAkB,OAAO;AACzD;AAAA,QACD;AAEA,YACC,QAAQ,aAAa,UACpB,QAAQ,aAAa,WAAW,CAAC,QAAQ,eACzC;AACD;AAAA,QACD;AAEA,gBAAQ,kBAAkB,IAAI,YAAY,IAAI;AAC9C,oBAAY,YAAY,YAAY,SAAS,IAAI,EAAE,CAAC;AAAA,MACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAeA,gBAAgB,MAAM,OAAO;AAC5B,cAAM,cAAc,KAAK;AAGzB,cAAM,eAAe,KAAK,iBAAiB,MAAM,KAAK;AAEtD,gBAAQ,MAAM;AAAA,UACb,KAAK;AACJ,iBAAK,kBAAkB,QAAQ,KAAK;AACpC,iBAAK,cAAc,IAAI;AAAA,cACtB,KAAK;AAAA,cACL;AAAA,cACA;AAAA,YACD;AACA;AAAA,UAED,KAAK;AACJ,iBAAK,kBAAkB,QAAQ,KAAK;AACpC,iBAAK,cAAc,IAAI;AAAA,cACtB,KAAK;AAAA,cACL;AAAA,cACA;AAAA,cACA;AAAA,YACD;AACA;AAAA,UAED,KAAK;AACJ,iBAAK,kBAAkB,QAAQ,KAAK;AACpC,iBAAK,cAAc,IAAI;AAAA,cACtB,KAAK;AAAA,cACL;AAAA,cACA;AAAA,YACD;AACA;AAAA,UAED,KAAK;AACJ,iBAAK,cAAc,IAAI;AAAA,cACtB,KAAK;AAAA,cACL;AAAA,cACA;AAAA,YACD;AACA;AAAA,UAED,KAAK;AACJ,iBAAK,cAAc,IAAI;AAAA,cACtB,KAAK;AAAA,cACL;AAAA,cACA;AAAA,YACD;AACA;AAAA;AAAA,UAGD;AACC,kBAAM,IAAI,MAAM,kBAAkB,IAAI,GAAG;AAAA,QAC3C;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,iBAAiB;AAChB,cAAM,UAAU,KAAK;AAErB,aAAK,cAAc,QAAQ;AAE3B,cAAM,cAAc,KAAK;AACzB,cAAM,oBAAoB,KAAK,gBAAgB,EAAE;AAGjD,gBAAQ,QAAQ,MAAM;AAAA,UACrB,KAAK;AAAA,UACL,KAAK;AACJ,iBAAK,iBAAiB;AAMtB;AAAA,cACC;AAAA,cACA,YAAY;AAAA,cACZ,QAAQ;AAAA,YACT;AACA;AAAA,UAED,KAAK,oBAAoB;AACxB,kBAAM,gBAAgB,KAAK,iBAAiB;AAE5C,gBAAI,CAAC,cAAc,WAAW;AAC7B,4BAAc,gBAAgB,IAAI,YAAY,IAAI;AAClD,4BAAc,iBAAiB,IAAI,YAAY,IAAI;AAAA,YACpD;AAOA,gBAAI,QAAQ,SAAS,MAAM;AAC1B,gCAAkB,OAAO,cAAc,gBAAgB;AAAA,YACxD;AAOA,kBAAM,eAAe,cAAc,gBAAgB;AAEnD,qBAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,EAAE,GAAG;AAC7C,yBAAW,MAAM,aAAa,CAAC,GAAG,QAAQ,aAAa;AAAA,YACxD;AACA;AAAA,UACD;AAAA,UAEA,KAAK;AAAA,UACL,KAAK;AACJ,8BAAkB,IAAI,YAAY,IAAI;AAMtC,uBAAW,MAAM,YAAY,MAAM,QAAQ,YAAY;AACvD;AAAA;AAAA,UAGD;AACC,kBAAM,IAAI,MAAM,aAAa;AAAA,QAC/B;AAUA,YAAI,kBAAkB,OAAO;AAC5B,sBAAY,YAAY,YAAY,gBAAgB,IAAI,EAAE,CAAC;AAAA,QAC5D,OAAO;AACN,sBAAY,YAAY,kBAAkB,SAAS,GAAG,EAAE,CAAC;AAAA,QAC1D;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,cAAc,MAAM;AACnB,cAAM,UAAU,KAAK;AACrB,cAAM,cAAc,KAAK;AACzB,cAAM,eAAe,YAAY,SAAS,GAAG,EAAE;AAG/C,gBAAQ,OAAO;AACf,gBAAQ,uBAAuB;AAC/B,oBAAY,YAAY,YAAY;AAAA,MACrC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,gBAAgB;AACf,cAAM,UAAU,KAAK;AACrB,cAAM,gBAAgB,KAAK;AAC3B,cAAM,cAAc,KAAK;AAEzB,YAAI,CAAC,cAAc,WAAW;AAC7B,wBAAc,gBAAgB,IAAI,YAAY,IAAI;AAClD,wBAAc,iBAAiB,IAAI,YAAY,IAAI;AAAA,QACpD;AAOA,YAAI,QAAQ,SAAS,MAAM;AAC1B,kBAAQ,kBAAkB,OAAO,cAAc,gBAAgB;AAAA,QAChE;AACA,oBAAY,YAAY,cAAc,gBAAgB,SAAS,GAAG,EAAE,CAAC;AAAA,MACtE;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,kBAAkB;AACjB,cAAM,UAAU,KAAK;AACrB,cAAM,cAAc,KAAK;AACzB,cAAM,eAAe,YAAY,SAAS,IAAI,EAAE;AAGhD,gBAAQ,gBAAgB;AACxB,oBAAY,YAAY,YAAY;AAAA,MACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,gBAAgB,MAAM;AACrB,cAAM,UAAU,KAAK;AACrB,cAAM,cAAc,KAAK;AAEzB,gBAAQ,OAAO;AAOf,YAAI,CAAC,QAAQ,oBAAoB,OAAO;AACvC,kBAAQ,oBAAoB,IAAI,YAAY,IAAI;AAChD,gBAAM,eAAe,QAAQ,oBAAoB,SAAS,GAAG,EAAE;AAE/D,sBAAY,YAAY,YAAY;AAAA,QACrC;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,YAAY,MAAM;AACjB,cAAM,UAAU,KAAK;AACrB,cAAM,cAAc,KAAK;AACzB,cAAM,oBAAoB,YAAY;AACtC,cAAM,eAAe,YAAY,SAAS,IAAI,EAAE;AAUhD,gBAAQ,OAAO;AACf,gBAAQ,oBAAoB;AAC5B,gBAAQ,uBAAuB,QAAQ,eAAe;AACtD,oBAAY,YAAY,YAAY;AAAA,MACrC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,gBAAgB;AACf,cAAM,UAAU,KAAK;AACrB,cAAM,gBAAgB,KAAK;AAC3B,cAAM,cAAc,KAAK;AAGzB,YAAI,QAAQ,cAAc;AACzB,oCAA0B,SAAS,eAAe,YAAY,IAAI;AAAA,QACnE,OAAO;AACN,kBAAQ,oBAAoB,YAAY;AAAA,QACzC;AAUA,cAAM,iBAAiB,YAAY,iBAAiB,IAAI,EAAE;AAE1D,gBAAQ,uBAAuB,QAAQ,iBAAiB;AACxD,oBAAY,YAAY,cAAc;AAAA,MACvC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,cAAc;AACb,cAAM,UAAU,KAAK;AACrB,cAAM,gBAAgB,KAAK;AAC3B,cAAM,cAAc,KAAK;AAazB,YAAI,QAAQ,gBAAgB;AAC3B,kBAAQ,sBAAsB,YAAY;AAY1C,cAAI,QAAQ,cAAc;AACzB;AAAA,cACC;AAAA,cACA,QAAQ;AAAA,cACR,QAAQ;AAAA,YACT;AAAA,UACD;AAAA,QACD,WAAW,QAAQ,cAAc;AAChC,oCAA0B,SAAS,eAAe,YAAY,IAAI;AAAA,QACnE,OAAO;AACN,kBAAQ,oBAAoB,YAAY;AAAA,QACzC;AAEA,YAAI,eAAe,QAAQ;AAY3B,YAAI,CAAC,cAAc;AAClB,gBAAM,kBAAkB,YAAY,SAAS,WAAW;AAExD,0BAAgB,IAAI,QAAQ,iBAAiB;AAC7C,cAAI,QAAQ,qBAAqB;AAChC,4BAAgB,IAAI,QAAQ,mBAAmB;AAAA,UAChD;AAEA,yBAAe,gBAAgB,SAAS,GAAG,EAAE;AAAA,QAC9C;AAQA,gBAAQ,uBACP,QAAQ,wBAAwB;AAGjC,oBAAY,YAAY,YAAY;AAAA,MACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,kBAAkB;AACjB,cAAM,UAAU,KAAK;AACrB,cAAM,cAAc,KAAK;AACzB,cAAM,eAAe,YAAY,iBAAiB,IAAI,EAAE;AAGxD,gBAAQ,eAAe,YAAY;AACnC,gBAAQ,eAAe,QAAQ,uBAAuB;AACtD,oBAAY,YAAY,YAAY;AAAA,MACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,mBAAmB;AAClB,cAAM,UAAU,KAAK;AACrB,cAAM,cAAc,KAAK;AACzB,cAAM,OAAO,YAAY,SAAS,WAAW;AAE7C,aAAK,IAAI,QAAQ,YAAY;AAC7B,cAAM,gBAAgB,KAAK,SAAS,IAAI,EAAE;AAG1C,gBAAQ,oBAAoB,YAAY;AACxC,oBAAY,YAAY,aAAa;AAAA,MACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,kBAAkB;AACjB,cAAM,UAAU,KAAK;AACrB,cAAM,cAAc,KAAK;AACzB,cAAM,OAAO,YAAY,SAAS,WAAW;AAE7C,aAAK,IAAI,QAAQ,iBAAiB;AAClC,cAAM,eAAe,KAAK,SAAS,IAAI,EAAE;AAGzC,mBAAW,MAAM,YAAY,MAAM,QAAQ,YAAY;AAGvD,gBAAQ,kBAAkB,IAAI,YAAY,IAAI;AAC9C,oBAAY,YAAY,YAAY;AAAA,MACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAcA,iBAAiB,WAAW,OAAO;AAClC,aAAK,eAAe,IAAI;AAAA,UACvB,KAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA,KAAK;AAAA,QACN;AACA,eAAO,KAAK;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,kBAAkB;AACjB,cAAM,UAAU,KAAK;AACrB,cAAM,cAAc,KAAK;AAEzB,aAAK,eAAe,QAAQ;AAG5B,YAAI,CAAC,QAAQ,WAAW;AACvB,gBAAM,oBAAoB,QAAQ;AAElC,cAAI,CAAC,kBAAkB,OAAO;AAC7B,8BAAkB,IAAI,YAAY,IAAI;AACtC,wBAAY,YAAY,kBAAkB,SAAS,GAAG,EAAE,CAAC;AAAA,UAC1D;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,UAAU,OAAO;AAChB,cAAM,cAAc,KAAK;AAEzB,YAAI,CAAC,YAAY,WAAW;AAC3B;AAAA,QACD;AAEA,cAAM,UAAU,gBAAgB,MAAM,KAAK;AAE3C,YAAI,SAAS;AACZ,kBAAQ,kBAAkB,IAAI,YAAY,IAAI;AAAA,QAC/C;AAGA,oBAAY,YAAY,YAAY,gBAAgB,IAAI,EAAE,CAAC;AAAA,MAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,aAAa,OAAO;AACnB,cAAM,cAAc,KAAK;AAEzB,YAAI,CAAC,YAAY,WAAW;AAC3B;AAAA,QACD;AAEA,cAAM,UAAU,mBAAmB,MAAM,KAAK;AAE9C,YAAI,SAAS;AACZ,cAAI,QAAQ,sBAAsB;AACjC;AAAA,cACC;AAAA,cACA,YAAY;AAAA,cACZ,QAAQ;AAAA,YACT;AAGA,gBACC,QAAQ,SAAS,oBACjB,QAAQ,SAAS,kBAChB;AACD,sBAAQ,kBAAkB,IAAI,YAAY,IAAI;AAAA,YAC/C;AAAA,UACD,OAAO;AACN,oBAAQ,oBAAoB,IAAI,YAAY,IAAI;AAAA,UACjD;AAAA,QACD;AACA,oBAAY,YAAY,YAAY,gBAAgB,IAAI,EAAE,CAAC;AAAA,MAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,aAAa;AACZ,cAAM,cAAc,KAAK;AAEzB,YAAI,YAAY,WAAW;AAC1B,2BAAiB,IAAI,EAAE,oBAAoB,IAAI,YAAY,IAAI;AAC/D,sBAAY,YAAY,YAAY,gBAAgB,IAAI,EAAE,CAAC;AAAA,QAC5D;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,YAAY;AACX,cAAM,cAAc,KAAK;AAEzB,YAAI,YAAY,WAAW;AAC1B,0BAAgB,IAAI,EAAE,kBAAkB,IAAI,YAAY,IAAI;AAC5D,sBAAY,YAAY,YAAY,gBAAgB,IAAI,EAAE,CAAC;AAAA,QAC5D;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,YAAY;AACX,cAAM,WAAW,KAAK;AAEtB,YAAI,SAAS,SAAS,KAAK,SAAS,CAAC,EAAE,WAAW;AACjD,eAAK,oBAAoB,IAAI,QAAQ;AAAA,QACtC;AAAA,MACD;AAAA,IACD;AAEA,IAAAF,QAAO,UAAU;AAAA;AAAA;;;ACr1EjB;AAAA,sEAAAG,UAAAC,SAAA;AAAA;AAkBA,QAAM,cAAN,MAAkB;AAAA;AAAA;AAAA;AAAA,MAIjB,YAAY,QAAQ;AACnB,aAAK,SAAS,OAAO,MAAM;AAC3B,aAAK,IAAI;AAAA,MACV;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,OAAO;AACN,aAAK,IAAK,IAAI,KAAK,IAAK;AAExB,YAAI,KAAK,IAAI,GAAG;AACf,eAAK,IAAI;AAAA,QACV;AAEA,eAAO,KAAK,SAAS,KAAK;AAAA,MAC3B;AAAA,IACD;AAEA,IAAAA,QAAO,UAAU;AAAA;AAAA;;;AC1CjB;AAAA,mEAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,gBAAgB;AACtB,QAAM,cAAc;AASpB,QAAM,WAAN,MAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASd,YAAY,EAAE,IAAI,QAAQ,OAAO,SAAS,GAAG;AAM5C,aAAK,KAAK;AAOV,aAAK,SAAS;AAMd,aAAK,QAAQ;AAMb,aAAK,iBAAiB,CAAC;AAGvB,eAAO,eAAe,MAAM,YAAY;AAAA,UACvC,OAAO,IAAI,cAAc,IAAI,YAAY,GAAG,EAAE,GAAG,GAAG,QAAQ;AAAA,QAC7D,CAAC;AAGD,YAAI,OAAO;AACV,gBAAM,eAAe,KAAK,IAAI;AAAA,QAC/B;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,OAAO,SAAS,UAAU;AACzB,eAAO,SAAS;AAAA,MACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,IAAI,iBAAiB;AACpB,eAAO,KAAK,SAAS;AAAA,MACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,IAAI,gBAAgB;AACnB,eAAO,KAAK,SAAS;AAAA,MACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAcA,IAAI,mBAAmB;AACtB,eAAO,KAAK,SAAS;AAAA,MACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,IAAI,iBAAiB;AACpB,eAAO,KAAK,SAAS;AAAA,MACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAwBA,iBAAiB,mBAAmB,UAAU;AAE7C,YAAI;AACJ,YAAI;AAEJ,YAAI,OAAO,sBAAsB,YAAY;AAC5C,6BAAmB;AACnB,4BAAkB,CAAC;AAAA,QACpB,OAAO;AACN,4BAAkB,qBAAqB,CAAC;AACxC,6BAAmB;AAAA,QACpB;AAGA,cAAM,eACL,gBAAgB,SAAS,KAAK,SAAS;AACxC,cAAM,cAAc,gBAAgB;AAGpC,YAAI;AACJ,YAAIC;AACJ,YAAI;AACJ,YAAI,UAAU;AAGd,cAAM,UAAU,oBAAI,IAAI;AAGxB,cAAM,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC;AAGhC,cAAM,UAAU,oBAAI,IAAI;AAGxB,YAAI,SAAS;AAKb,cAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,UAKlB,OAAO;AACN,oBAAQ,IAAI,OAAO;AAAA,UACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,QAAQ;AACP,qBAAS;AAAA,UACV;AAAA,QACD;AAOA,iBAAS,UAAU,aAAa;AAC/B,iBACC,QAAQ,IAAI,WAAW,KACvB,QAAQ,oBAAoB,WAAW;AAAA,QAEzC;AAOA,iBAAS,UAAU,aAAa;AAC/B,iBACC,QAAQ,IAAI,WAAW,KACvB,QAAQ,oBAAoB,WAAW;AAAA,QAEzC;AAGA,eAAO,MAAM,SAAS,GAAG;AAaxB,mBAAS,MAAM,GAAG,EAAE;AACpB,oBAAU,OAAO,CAAC;AAClB,UAAAA,SAAQ,OAAO,CAAC;AAEhB,cAAIA,WAAU,GAAG;AAEhB,gBAAI,QAAQ,IAAI,OAAO,GAAG;AACzB,oBAAM,IAAI;AACV;AAAA,YACD;AAGA,gBACC,YAAY,gBACZ,QAAQ,aAAa,SAAS,KAC9B,CAAC,QAAQ,aAAa,MAAM,SAAS,GACpC;AACD,oBAAM,IAAI;AACV;AAAA,YACD;AAEA,oBAAQ,IAAI,OAAO;AAGnB,kBAAM,aACL,QAAQ,OAAO,KACf,QAAQ,aAAa,SAAS,KAC9B,QAAQ,aAAa,MAAM,SAAS;AAMrC,gBAAI,CAAC,YAAY;AAChB,+BAAiB,KAAK,MAAM,SAAS,UAAU;AAG/C,kBAAI,YAAY,aAAa;AAC5B,2BAAW,KAAK;AAAA,cACjB;AAOA,kBAAI,QAAQ;AACX;AAAA,cACD;AAAA,YACD,OAAO;AAEN,sBAAQ,IAAI,OAAO;AAAA,YACpB;AAAA,UACD;AAGA,gBAAM,QAAQ,aAAa,SAAS;AACpC,cAAIA,SAAQ,KAAK;AAWhB,mBAAO,CAAC,KAAK;AACb,kBAAM,KAAK,CAAC,QAAQ,aAAaA,MAAK,GAAG,CAAC,CAAC;AAAA,UAC5C,WAAWA,WAAU,KAAK;AAMzB,mBAAO,CAAC,IAAI,QAAQ,aAAaA,MAAK;AACtC,mBAAO,CAAC,IAAI;AAAA,UACb,OAAO;AAMN,kBAAM,IAAI;AAAA,UACX;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,IAAAD,QAAO,UAAU;AAAA;AAAA;;;AC7UjB;AAAA,4EAAAE,UAAAC,SAAA;AAAA;AAWA,QAAMC,UAAS;AAAf,QACC,EAAE,qBAAqB,IAAI;AAD5B,QAEC,WAAW;AAFZ,QAGC,kBAAkB;AAHnB,QAIC,cAAc;AAJf,QAKCC,SAAQ;AAWT,aAAS,WAAWC,OAAM;AACzB,aAAO,QAAQA,MAAK,IAAI;AAAA,IACzB;AAQA,aAAS,0BAA0BA,OAAM;AACxC,YAAM,SAASA,MAAK;AAEpB,aACC,UAAU,OAAO,SAAS,wBAAwB,OAAO,UAAUA;AAAA,IAErE;AAQA,aAAS,yBAAyB,UAAU;AAC3C,aAAO,aAAa,QAAQ,aAAa,QAAQ,aAAa;AAAA,IAC/D;AASA,aAAS,4BAA4B,UAAU;AAC9C,aAAO,aAAa,SAAS,aAAa,SAAS,aAAa;AAAA,IACjE;AAOA,aAAS,SAASA,OAAM;AACvB,UAAIA,MAAK,OAAO,SAAS,oBAAoB;AAC5C,eAAOA,MAAK,OAAO,MAAM;AAAA,MAC1B;AACA,aAAO;AAAA,IACR;AAQA,aAAS,uBAAuBA,OAAM;AACrC,YAAM,SAASA,MAAK;AAEpB,cAAQ,OAAO,MAAM;AAAA,QACpB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO,OAAO,SAASA;AAAA,QAExB,KAAK;AACJ,iBAAO,yBAAyB,OAAO,QAAQ;AAAA,QAEhD,KAAK;AACJ,iBAAO,4BAA4B,OAAO,QAAQ;AAAA,QAEnD;AACC,iBAAO;AAAA,MACT;AAAA,IACD;AAYA,aAAS,gCAAgCA,OAAM;AAC9C,UAAIA,MAAK,SAAS,WAAW;AAC5B,eAAO,QAAQA,MAAK,KAAK;AAAA,MAC1B;AACA,aAAO;AAAA,IACR;AASA,aAAS,sBAAsBA,OAAM;AACpC,YAAM,SAASA,MAAK;AAEpB,cAAQ,OAAO,MAAM;AAAA,QACpB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QAER,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO,OAAO,OAAOA;AAAA,QAEtB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO,OAAO,QAAQA,SAAQ,OAAO,YAAY,OAAO;AAAA,QAEzD,KAAK;AACJ,iBAAO,OAAO,QAAQA;AAAA,QAEvB;AACC,iBAAO;AAAA,MACT;AAAA,IACD;AAcA,aAAS,qBAAqB,UAAUA,OAAM;AAC7C,YAAM,WAAW,SAAS;AAC1B,YAAM,QAAQ,SAAS,SAAS,QAAQ;AACxC,YAAM,kBAAkB,MAAM;AAC9B,YAAM,eAAe,MAAM;AAC3B,YAAM,MAAM,KAAK,IAAI,gBAAgB,QAAQ,aAAa,MAAM;AAChE,UAAI,GAAG,gBAAgB;AAGvB,WAAK,IAAI,GAAG,IAAI,KAAK,EAAE,GAAG;AACzB,yBAAiB,gBAAgB,CAAC;AAClC,sBAAc,aAAa,CAAC;AAE5B,YAAI,mBAAmB,eAAe,gBAAgB;AACrD,gBAAM,YAAY,eAAe,YAC9B,yBACA;AAEH,UAAAD,OAAM,KAAK,GAAG,SAAS,IAAI,eAAe,EAAE,EAAE;AAE9C,mBAAS,KAAK,WAAW,CAAC,gBAAgBC,KAAI,CAAC;AAAA,QAChD;AAAA,MACD;AAGA,YAAM,kBAAkB;AAGxB,WAAK,IAAI,GAAG,IAAI,KAAK,EAAE,GAAG;AACzB,yBAAiB,gBAAgB,CAAC;AAClC,sBAAc,aAAa,CAAC;AAE5B,YAAI,mBAAmB,eAAe,aAAa;AAClD,gBAAM,YAAY,YAAY,YAC3B,2BACA;AAEH,UAAAD,OAAM,KAAK,GAAG,SAAS,IAAI,YAAY,EAAE,EAAE;AAC3C,0BAAgB,SAAS,WAAW;AACpC,mBAAS,KAAK,WAAW,CAAC,aAAaC,KAAI,CAAC;AAAA,QAC7C;AAAA,MACD;AAAA,IACD;AASA,aAAS,wBAAwB,UAAUA,OAAM;AAChD,YAAM,QAAQ,SAAS,SAAS,SAAS,QAAQ;AACjD,YAAM,kBAAkB,MAAM;AAE9B,eAAS,IAAI,GAAG,IAAI,gBAAgB,QAAQ,EAAE,GAAG;AAChD,cAAM,iBAAiB,gBAAgB,CAAC;AACxC,cAAM,YAAY,eAAe,YAC9B,yBACA;AAEH,QAAAD,OAAM,KAAK,GAAG,SAAS,IAAI,eAAe,EAAE,EAAE;AAE9C,iBAAS,KAAK,WAAW,CAAC,gBAAgBC,KAAI,CAAC;AAAA,MAChD;AAEA,YAAM,kBAAkB,CAAC;AAAA,IAC1B;AAYA,aAASC,YAAW,UAAUD,OAAM;AACnC,YAAM,WAAW,SAAS;AAC1B,YAAM,QAAQ,SAAS,SAAS,QAAQ;AACxC,YAAM,SAASA,MAAK;AAEpB,cAAQ,OAAO,MAAM;AAAA;AAAA,QAEpB,KAAK;AACJ,cACC,OAAO,aAAa,QACpB,OAAO,UAAU,UAAU,KAC3B,OAAO,UAAU,CAAC,MAAMA,OACvB;AACD,kBAAM,kBAAkB;AAAA,UACzB;AACA;AAAA,QACD,KAAK;AACJ,cAAI,OAAO,aAAa,QAAQ,OAAO,aAAaA,OAAM;AACzD,kBAAM,kBAAkB;AAAA,UACzB;AACA;AAAA,QAED,KAAK;AACJ,cACC,OAAO,UAAUA,SACjB,yBAAyB,OAAO,QAAQ,GACvC;AACD,kBAAM,iBAAiB;AAAA,UACxB;AACA;AAAA,QAED,KAAK;AACJ,cACC,OAAO,UAAUA,SACjB,4BAA4B,OAAO,QAAQ,GAC1C;AACD,kBAAM,iBAAiB;AAAA,UACxB;AACA;AAAA,QAED,KAAK;AAAA,QACL,KAAK;AAMJ,cAAI,OAAO,eAAeA,OAAM;AAC/B,kBAAM,iBAAiB;AAAA,UACxB,WAAW,OAAO,cAAcA,OAAM;AACrC,kBAAM,gBAAgB;AAAA,UACvB;AACA;AAAA,QAED,KAAK;AACJ,cAAI,OAAO,WAAW,CAAC,MAAMA,OAAM;AAClC,kBAAM,mBAAmB,OAAO,CAAC,OAAO,IAAI;AAAA,UAC7C;AACA;AAAA,QAED,KAAK;AACJ,cAAI,OAAO,YAAYA,OAAM;AAC5B,kBAAM,eAAe;AAAA,UACtB,WAAW,OAAO,cAAcA,OAAM;AACrC,kBAAM,iBAAiB;AAAA,UACxB;AACA;AAAA,QAED,KAAK;AACJ,cAAI,OAAO,SAASA,OAAM;AACzB,kBAAM,cAAc,gCAAgCA,KAAI,CAAC;AAAA,UAC1D,OAAO;AACN,YAAAF,QAAO,OAAO,SAASE,KAAI;AAC3B,kBAAM,cAAc;AAAA,UACrB;AACA;AAAA,QAED,KAAK;AACJ,cAAI,OAAO,SAASA,OAAM;AACzB,kBAAM,gBAAgB;AAAA,UACvB,OAAO;AACN,YAAAF,QAAO,OAAO,SAASE,KAAI;AAC3B,kBAAM,gBAAgB,gCAAgCA,KAAI,CAAC;AAAA,UAC5D;AACA;AAAA,QAED,KAAK;AACJ,cAAI,OAAO,SAASA,OAAM;AACzB,kBAAM,YAAY,gCAAgCA,KAAI,CAAC;AAAA,UACxD,WAAW,OAAO,WAAWA,OAAM;AAClC,kBAAM,cAAc;AAAA,UACrB,WAAW,OAAO,SAASA,OAAM;AAChC,kBAAM,YAAY;AAAA,UACnB;AACA;AAAA,QAED,KAAK;AAAA,QACL,KAAK;AACJ,cAAI,OAAO,SAASA,OAAM;AACzB,kBAAM,gBAAgB;AAAA,UACvB,WAAW,OAAO,UAAUA,OAAM;AACjC,kBAAM,iBAAiB;AAAA,UACxB,OAAO;AACN,YAAAF,QAAO,OAAO,SAASE,KAAI;AAC3B,kBAAM,gBAAgB;AAAA,UACvB;AACA;AAAA,QAED,KAAK;AAMJ,cAAI,OAAO,UAAUA,OAAM;AAC1B,kBAAM,gBAAgB;AACtB,kBAAM,eAAe;AACrB,kBAAM,SAAS;AAAA,UAChB;AACA;AAAA,QAED;AACC;AAAA,MACF;AAAA,IACD;AAQA,aAAS,uBAAuB,UAAUA,OAAM;AAC/C,UAAI,WAAW,SAAS;AACxB,UAAI,QAAQ,YAAY,SAAS,SAAS,QAAQ;AAClD,YAAM,SAASA,MAAK;AAQpB,eAAS,cAAc,QAAQ;AAC9B,YAAI,UAAU;AAEb,+BAAqB,UAAUA,KAAI;AACnC,UAAAD,OAAM,UAAUC,OAAM,OAAO,KAAK;AAAA,QACnC;AAGA,mBAAW,SAAS,WAAW,IAAI,SAAS;AAAA,UAC3C,IAAI,SAAS,YAAY,KAAK;AAAA,UAC9B;AAAA,UACA,OAAO;AAAA,UACP,UAAU,SAAS;AAAA,QACpB,CAAC;AACD,gBAAQ,SAAS,SAAS,QAAQ;AAGlC,QAAAD,OAAM,KAAK,mBAAmB,SAAS,EAAE,EAAE;AAC3C,iBAAS,KAAK,mBAAmB,CAAC,UAAUC,KAAI,CAAC;AAAA,MAClD;AAOA,UAAI,0BAA0BA,KAAI,GAAG;AACpC,sBAAc,yBAAyB;AAAA,MAYxC;AAEA,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AACJ,wBAAc,SAAS;AACvB;AAAA,QAED,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,wBAAc,UAAU;AACxB;AAAA,QAED,KAAK;AACJ,wBAAc,oBAAoB;AAClC;AAAA,QAED,KAAK;AACJ,gBAAM,iBAAiB;AACvB;AAAA,QACD,KAAK;AACJ,cAAIA,MAAK,aAAa,MAAM;AAC3B,kBAAM,iBAAiB;AAAA,UACxB;AACA;AAAA,QACD,KAAK;AACJ,cAAIA,MAAK,aAAa,MAAM;AAC3B,kBAAM,iBAAiB;AAAA,UACxB;AACA;AAAA,QAED,KAAK;AACJ,cAAI,yBAAyBA,MAAK,QAAQ,GAAG;AAC5C,kBAAM;AAAA,cACLA,MAAK;AAAA,cACL,uBAAuBA,KAAI;AAAA,YAC5B;AAAA,UACD;AACA;AAAA,QAED,KAAK;AACJ,cAAI,4BAA4BA,MAAK,QAAQ,GAAG;AAC/C,kBAAM;AAAA,cACLA,MAAK,SAAS,MAAM,GAAG,EAAE;AAAA;AAAA,cACzB,uBAAuBA,KAAI;AAAA,YAC5B;AAAA,UACD;AACA;AAAA,QAED,KAAK;AAAA,QACL,KAAK;AACJ,gBAAM,kBAAkB,QAAQ,KAAK;AACrC;AAAA,QAED,KAAK;AACJ,gBAAM;AAAA,YACLA,MAAK,MAAM,KAAK,UAAU;AAAA,YAC1B,SAASA,KAAI;AAAA,UACd;AACA;AAAA,QAED,KAAK;AACJ,gBAAM,eAAe,QAAQA,MAAK,SAAS,CAAC;AAC5C;AAAA,QAED,KAAK;AAMJ,cAAI,OAAO,iBAAiBA,SAAQ,OAAO,MAAM,CAAC,MAAMA,OAAM;AAC7D,kBAAM,SAAS;AAAA,UAChB;AACA;AAAA,QAED,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,gBAAM,gBAAgBA,MAAK,MAAM,SAASA,KAAI,CAAC;AAC/C;AAAA,QAED,KAAK;AACJ,cAAI,CAAC,qBAAqB,KAAKA,MAAK,KAAK,IAAI,GAAG;AAC/C,kBAAM,iBAAiB,OAAOA,MAAK,MAAM,IAAI;AAAA,UAC9C;AACA;AAAA,QAED;AACC;AAAA,MACF;AAGA,2BAAqB,UAAUA,KAAI;AACnC,MAAAD,OAAM,UAAUC,OAAM,OAAO,KAAK;AAAA,IACnC;AAQA,aAAS,sBAAsB,UAAUA,OAAM;AAC9C,YAAM,WAAW,SAAS;AAC1B,YAAM,QAAQ,SAAS,SAAS,QAAQ;AACxC,UAAI,cAAc;AAElB,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AACJ,gBAAM,gBAAgB;AACtB;AAAA,QAED,KAAK;AAAA,QACL,KAAK;AACJ,gBAAM,iBAAiB;AACvB;AAAA,QAED,KAAK;AACJ,cAAI,yBAAyBA,MAAK,QAAQ,GAAG;AAC5C,kBAAM,iBAAiB;AAAA,UACxB;AACA;AAAA,QAED,KAAK;AACJ,cAAI,4BAA4BA,MAAK,QAAQ,GAAG;AAC/C,kBAAM,iBAAiB;AAAA,UACxB;AACA;AAAA,QAED,KAAK;AACJ,gBAAM,iBAAiB;AACvB;AAAA,QAED,KAAK;AAMJ,cAAIA,MAAK,WAAW,WAAW,GAAG;AACjC,kBAAM,mBAAmB,MAAM,CAACA,MAAK,IAAI;AAAA,UAC1C;AACA,cAAI,MAAM,YAAY,WAAW;AAChC,0BAAc;AAAA,UACf;AACA;AAAA,QAED,KAAK;AACJ,gBAAM,cAAc;AACpB;AAAA,QAED,KAAK;AACJ,+BAAqB,UAAUA,KAAI;AACnC,gBAAM,UAAUA,MAAK,SAASA,MAAK,MAAM,IAAI;AAC7C,wBAAc;AACd;AAAA,QAED,KAAK;AACJ,+BAAqB,UAAUA,KAAI;AACnC,gBAAM,aAAaA,MAAK,SAASA,MAAK,MAAM,IAAI;AAChD,wBAAc;AACd;AAAA,QAED,KAAK;AACJ,+BAAqB,UAAUA,KAAI;AACnC,gBAAM,WAAW;AACjB,wBAAc;AACd;AAAA,QAED,KAAK;AACJ,+BAAqB,UAAUA,KAAI;AACnC,gBAAM,UAAU;AAChB,wBAAc;AACd;AAAA,QAED,KAAK;AACJ,cAAI,sBAAsBA,KAAI,GAAG;AAChC,kBAAM,wCAAwC;AAC9C,0BAAc;AAAA,UACf;AACA;AAAA,QAED,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,gBAAM,wCAAwC;AAC9C;AAAA,QAED,KAAK;AACJ,gBAAM,UAAU;AAChB;AAAA,QAED,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,gBAAM,eAAe;AACrB;AAAA,QAED,KAAK;AACJ,gBAAM,eAAe;AACrB;AAAA,QAED,KAAK;AACJ,cAAI,CAAC,qBAAqB,KAAKA,MAAK,KAAK,IAAI,GAAG;AAC/C,kBAAM,gBAAgB;AAAA,UACvB;AACA;AAAA,QAED;AACC;AAAA,MACF;AAGA,UAAI,CAAC,aAAa;AACjB,6BAAqB,UAAUA,KAAI;AAAA,MACpC;AACA,MAAAD,OAAM,UAAUC,OAAM,OAAO,IAAI;AAAA,IAClC;AAQA,aAASE,aAAY,UAAUF,OAAM;AAKpC,eAAS,cAAc;AACtB,YAAI,WAAW,SAAS;AAGxB,iBAAS,SAAS,QAAQ,EAAE,UAAU;AAGtC,gCAAwB,UAAUA,KAAI;AAGtC,QAAAD,OAAM,KAAK,iBAAiB,SAAS,EAAE,EAAE;AACzC,iBAAS,KAAK,iBAAiB,CAAC,UAAUC,KAAI,CAAC;AAC/C,QAAAD,OAAM,QAAQ,QAAQ;AAEtB,mBAAW,SAAS,WAAW,SAAS,SAAS;AACjD,YAAI,UAAU;AACb,UAAAA,OAAM,UAAUC,OAAM,SAAS,SAAS,QAAQ,GAAG,IAAI;AAAA,QACxD;AAAA,MACD;AAEA,cAAQA,MAAK,MAAM;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK,eAAe;AACnB,sBAAY;AACZ;AAAA,QACD;AAAA;AAAA,QAGA,KAAK;AACJ,cAAIA,MAAK,aAAa,QAAQA,MAAK,UAAU,WAAW,GAAG;AAC1D,qBAAS,SAAS,SAAS,QAAQ,EAAE,kBAAkB;AAAA,UACxD;AACA;AAAA,QAED;AACC;AAAA,MACF;AAmBA,UAAI,0BAA0BA,KAAI,GAAG;AACpC,oBAAY;AAAA,MACb;AAAA,IACD;AAUA,QAAM,mBAAN,MAAuB;AAAA;AAAA;AAAA;AAAA,MAItB,YAAY,gBAAgB;AAC3B,aAAK,WAAW;AAChB,aAAK,OAAO,eAAe;AAC3B,aAAK,WAAW;AAChB,aAAK,cAAc,IAAI,YAAY,GAAG;AACtC,aAAK,cAAc;AACnB,aAAK,WAAW,KAAK,SAAS,KAAK,IAAI;AAAA,MACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,UAAUA,OAAM;AACf,aAAK,cAAcA;AAGnB,YAAIA,MAAK,QAAQ;AAChB,UAAAC,YAAW,MAAMD,KAAI;AAAA,QACtB;AAMA,+BAAuB,MAAMA,KAAI;AAGjC,aAAK,SAAS,UAAUA,KAAI;AAE5B,aAAK,cAAc;AAAA,MACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,UAAUA,OAAM;AACf,aAAK,cAAcA;AAMnB,8BAAsB,MAAMA,KAAI;AAGhC,aAAK,SAAS,UAAUA,KAAI;AAG5B,QAAAE,aAAY,MAAMF,KAAI;AAEtB,aAAK,cAAc;AAAA,MACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,SAAS,aAAa,WAAW;AAChC,YAAI,YAAY,aAAa,UAAU,WAAW;AACjD,UAAAD,OAAM;AAAA,YACL,yBAAyB,YAAY,EAAE,OAAO,UAAU,EAAE;AAAA,UAC3D;AACA,eAAK,KAAK,yBAAyB;AAAA,YAClC;AAAA,YACA;AAAA,YACA,KAAK;AAAA,UACN,CAAC;AAAA,QACF;AAAA,MACD;AAAA,IACD;AAEA,IAAAF,QAAO,UAAU;AAAA;AAAA;;;AC9zBjB;AAAA,wCAAAM,UAAAC,SAAA;AACA,QAAI;AAAJ,QAAW;AAAX,QAAkB;AAAlB,QAAwB;AAAxB,QAA6B;AAA7B,QAAmC;AAAnC,QAA4C,YAAY,CAAC,EAAE;AAC3D,YAAQ,OAAO,SAAS,GAAGC,OAAK;AAC9B,aAAO,EAAE,MAAM,MAAMA,KAAI;AAAA,IAC3B,CAAC;AACD,YAAQ,SAAS,GAAE;AACjB,aAAO,OAAO,CAAC;AAAA,IACjB;AACA,WAAO,OAAO,SAAS,GAAG,GAAG,GAAE;AAC7B,aAAO,EAAE,GAAG,CAAC;AAAA,IACf,CAAC;AACD,UAAM,SAAS,GAAE;AACf,aAAO,0BAAS,GAAE;AAChB,eAAO,WAAU;AACf,iBAAO,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,MAAM,SAAS;AAAA,QACtC;AAAA,MACF,GAAE,SAAS,GAAE;AACX,eAAO,WAAU;AACf,iBAAO,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,MAAM,SAAS;AAAA,QACtC;AAAA,MACF,CAAC;AAAA,IACH;AACA,WAAO,OAAO,SAAS,GAAG,GAAG,GAAG,GAAE;AAChC,aAAO,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAAA,IACrB,CAAC;AACD,cAAU,SAAS,GAAE;AACnB,UAAI;AACJ,aAAO,CAAC;AACR,aAAO,WAAU;AACf,YAAI,MAAM,MAAM,IAAI,KAAK,KAAK;AAC9B,eAAO,CAAC;AACR,aAAK,KAAK,GAAG,MAAM,UAAU,QAAQ,KAAK,KAAK,EAAE,IAAI;AACnD,eAAK,KAAK,UAAU,EAAE,CAAC;AAAA,QACzB;AACA,eAAO;AACP,eAAO,WAAU;AACf,cAAIC,KAAI,MAAM,MAAM,WAAW,CAAC;AAChC,eAAKA,MAAK,GAAG,QAAQ,OAAO,MAAM,QAAQA,MAAK,MAAM,EAAEA,KAAI;AACzD,kBAAM,KAAKA,GAAE;AACb,qBAAS,KAAK,MAAM,UAAU,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,UACtD;AACA,iBAAO;AAAA,QACT,GAAE,EAAG,KAAK,EAAE;AACZ,eAAO,KAAK,GAAG,IAAI,OAAO,OACtB,KAAK,GAAG,IACR,EAAE,MAAM,MAAM,IAAI;AAAA,MACxB;AAAA,IACF;AACA,IAAAF,QAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,aAAS,OAAO,GAAG,OAAM;AACvB,UAAI,SACJ,SAAS,SAAS,MAAM;AACtB,eAAO,EAAE,SAAS,IAAI,WAAU;AAC9B,cAAI,SAAS,OAAO,KAAK,OAAO,IAAI,CAAC;AACrC,oBAAU,QAAQ,WAAW,OAAO;AACpC,iBAAO,OAAO,KAAK,MAAM,QAAQ,SAAS,IACtC,EAAE,UAAU,UAAU,SACxB,OAAO,KAAK,SAAS,MAAM,IAAI,EAAE,MAAM,SAAS,MAAM;AAAA,QAC1D,IAAI;AAAA,MACN;AACA,aAAO,OAAO;AAAA,IAChB;AAAA;AAAA;;;ACpEA;AAAA,wCAAAG,UAAAC,SAAA;AACA,QAAI;AAAJ,QAAUC;AAAV,QAAe;AAAf,QAAwBC;AAAxB,QAAgC;AAAhC,QAAwC;AAAxC,QAAgD;AAAhD,QAA2D;AAA3D,QAAiE;AAAjE,QAAuEC;AAAvE,QAA8E;AAA9E,QAAoF;AAApF,QAA0F;AAA1F,QAAmGC;AAAnG,QAA0G;AAA1G,QAAmHC;AAAnH,QAA2H;AAA3H,QAAqI;AAArI,QAA2I;AAA3I,QAAkJ;AAAlJ,QAAyJ;AAAzJ,QAAiK;AAAjK,QAAwK;AAAxK,QAAgL;AAAhL,QAAyLC;AAAzL,QAAiMC;AAAjM,QAA4M;AAA5M,QAAqN;AAArN,QAAiO;AAAjO,QAA+O;AAA/O,QAAsP;AAAtP,QAA+P;AAA/P,QAAwQ;AAAxQ,QAAiR;AAAjR,QAAyRC;AAAzR,QAA8RC;AAA9R,QAAmS;AAAnS,QAAyS;AAAzS,QAAmT;AAAnT,QAA2T;AAA3T,QAAgU;AAAhU,QAAyU;AAAzU,QAA+U;AAA/U,QAAwV;AAAxV,QAAiW;AAAjW,QAA0W;AAA1W,QAAqX;AAArX,QAAgYC;AAAhY,QAAsY;AAAtY,QAA6Y;AAA7Y,QAAoZ;AAApZ,QAA4Z;AAA5Z,QAAma;AAAna,QAA2a;AAA3a,QAAkbC;AAAlb,QAAwb;AAAxb,QAA8b;AAA9b,QAAuc;AAAvc,QAAkd;AAAld,QAA6d;AAA7d,QAAme;AAAne,QAA8e;AAA9e,QAAmf;AAAnf,QAA4f;AAA5f,QAAogB;AAApgB,QAAghB;AAAhhB,QAAohB;AAAphB,QAA+hB;AAA/hB,QAA4iB;AAA5iB,QAAujB;AAAvjB,QAAokB,YAAY,CAAC,EAAE;AACnlB,WAAO,OAAO,SAAS,GAAG,IAAG;AAC3B,UAAI,IAAI,MAAM;AACd,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,UAAE,CAAC;AAAA,MACL;AACA,aAAO;AAAA,IACT,CAAC;AACD,IAAAV,OAAM,OAAO,SAAS,GAAG,IAAG;AAC1B,UAAI,IAAI,MAAM,GAAG,WAAW,CAAC;AAC7B,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,iBAAS,KAAK,EAAE,CAAC,CAAC;AAAA,MACpB;AACA,aAAO;AAAA,IACT,CAAC;AACD,cAAU,SAAS,IAAG;AACpB,UAAI,IAAI,MAAM,GAAG,WAAW,CAAC;AAC7B,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,YAAI,GAAG;AACL,mBAAS,KAAK,CAAC;AAAA,QACjB;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,IAAAC,UAAS,OAAO,SAAS,GAAG,IAAG;AAC7B,UAAI,IAAI,MAAM,GAAG,WAAW,CAAC;AAC7B,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,YAAI,EAAE,CAAC,GAAG;AACR,mBAAS,KAAK,CAAC;AAAA,QACjB;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AACD,aAAS,OAAO,SAAS,GAAG,IAAG;AAC7B,UAAI,IAAI,MAAM,GAAG,WAAW,CAAC;AAC7B,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,YAAI,CAAC,EAAE,CAAC,GAAG;AACT,mBAAS,KAAK,CAAC;AAAA,QACjB;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AACD,aAAS,OAAO,SAAS,IAAI,IAAG;AAC9B,UAAI,GAAG;AACP,UAAI,UAAU,IAAI,EAAE;AACpB,WAAK,GAAG,MAAM;AACd,UAAI,KAAK,MAAM;AACb,WAAG,OAAO,GAAG,CAAC;AAAA,MAChB;AACA,aAAO;AAAA,IACT,CAAC;AACD,gBAAY,OAAO,SAAS,GAAG,IAAG;AAChC,UAAI,QAAQ,QAAQ,IAAI,MAAM;AAC9B,eAAS,CAAC;AACV,eAAS,CAAC;AACV,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,SAAC,EAAE,CAAC,IAAI,SAAS,QAAQ,KAAK,CAAC;AAAA,MACjC;AACA,aAAO,CAAC,QAAQ,MAAM;AAAA,IACxB,CAAC;AACD,WAAO,OAAO,SAAS,GAAG,IAAG;AAC3B,UAAI,IAAI,MAAM;AACd,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,YAAI,EAAE,CAAC,GAAG;AACR,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AACD,WAAOC,SAAQ,SAAS,IAAG;AACzB,aAAO,GAAG,CAAC;AAAA,IACb;AACA,WAAO,SAAS,IAAG;AACjB,UAAI,CAAC,GAAG,QAAQ;AACd;AAAA,MACF;AACA,aAAO,GAAG,MAAM,CAAC;AAAA,IACnB;AACA,WAAO,SAAS,IAAG;AACjB,aAAO,GAAG,GAAG,SAAS,CAAC;AAAA,IACzB;AACA,cAAU,SAAS,IAAG;AACpB,UAAI,CAAC,GAAG,QAAQ;AACd;AAAA,MACF;AACA,aAAO,GAAG,MAAM,GAAG,EAAE;AAAA,IACvB;AACA,IAAAC,SAAQ,SAAS,IAAG;AAClB,aAAO,CAAC,GAAG;AAAA,IACb;AACA,cAAU,SAAS,IAAG;AACpB,aAAO,GAAG,OAAO,EAAE,QAAQ;AAAA,IAC7B;AACA,IAAAC,UAAS,SAAS,IAAG;AACnB,UAAI,QAAQ,IAAI,MAAM;AACtB,eAAS,CAAC;AACV,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,YAAI,CAAC,IAAI,GAAG,MAAM,GAAG;AACnB,iBAAO,KAAK,CAAC;AAAA,QACf;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,eAAW,OAAO,SAAS,GAAG,IAAG;AAC/B,UAAI,MAAM,IAAI,MAAM,GAAG,KAAK,WAAW,CAAC;AACxC,aAAO,CAAC;AACR,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,cAAM,EAAE,CAAC;AACT,YAAI,IAAI,KAAK,IAAI,GAAG;AAClB;AAAA,QACF;AACA,aAAK,KAAK,GAAG;AACb,iBAAS,KAAK,CAAC;AAAA,MACjB;AACA,aAAO;AAAA,IACT,CAAC;AACD,WAAO,QAAQ,OAAO,SAAS,GAAG,MAAM,IAAG;AACzC,UAAI,IAAI,MAAM;AACd,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,eAAO,EAAE,MAAM,CAAC;AAAA,MAClB;AACA,aAAO;AAAA,IACT,CAAC;AACD,YAAQ,SAAS,OAAO,SAAS,GAAG,IAAG;AACrC,aAAO,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;AAAA,IACnC,CAAC;AACD,YAAQ,OAAO,SAAS,GAAG,MAAM,IAAG;AAClC,UAAI,IAAI;AACR,WAAK,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,EAAE,IAAI;AACtC,YAAI,GAAG,EAAE;AACT,eAAO,EAAE,GAAG,IAAI;AAAA,MAClB;AACA,aAAO;AAAA,IACT,CAAC;AACD,aAAS,OAAO,SAAS,GAAG,IAAG;AAC7B,aAAO,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC;AAAA,IACpD,CAAC;AACD,cAAU,OAAO,SAAS,GAAG,GAAE;AAC7B,UAAI,QAAQ,GAAG;AACf,eAAS,CAAC;AACV,UAAI;AACJ,cAAQ,OAAO,EAAE,CAAC,MAAM,MAAM;AAC5B,eAAO,KAAK,KAAK,CAAC,CAAC;AACnB,YAAI,KAAK,CAAC;AAAA,MACZ;AACA,aAAO;AAAA,IACT,CAAC;AACD,IAAAC,UAAS,SAAS,KAAI;AACpB,aAAO,CAAC,EAAE,OAAO,MAAM,CAAC,GAAG,GAAG;AAAA,IAChC;AACA,IAAAC,aAAY,OAAO,SAAS,GAAG,IAAG;AAChC,UAAI;AACJ,aAAO,CAAC,EAAE,OAAO,MAAM,CAAC,IAAI,WAAU;AACpC,YAAI,IAAI,MAAM,MAAM,WAAW,CAAC;AAChC,aAAK,KAAK,GAAG,QAAQ,OAAO,IAAI,QAAQ,KAAK,MAAM,EAAE,IAAI;AACvD,cAAI,KAAK,EAAE;AACX,mBAAS,KAAK,EAAE,CAAC,CAAC;AAAA,QACpB;AACA,eAAO;AAAA,MACT,GAAE,CAAE;AAAA,IACN,CAAC;AACD,cAAU,SAAS,IAAG;AACpB,UAAI;AACJ,aAAO,CAAC,EAAE,OAAO,MAAM,CAAC,IAAI,WAAU;AACpC,YAAI,IAAI,MAAM,MAAM,WAAW,CAAC;AAChC,aAAK,KAAK,GAAG,QAAQ,OAAO,IAAI,QAAQ,KAAK,MAAM,EAAE,IAAI;AACvD,cAAI,KAAK,EAAE;AACX,cAAI,UAAU,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE,MAAM,SAAS;AAC9C,qBAAS,KAAK,QAAQ,CAAC,CAAC;AAAA,UAC1B,OAAO;AACL,qBAAS,KAAK,CAAC;AAAA,UACjB;AAAA,QACF;AACA,eAAO;AAAA,MACT,GAAE,CAAE;AAAA,IACN;AACA,iBAAa,SAAS,IAAG;AACvB,UAAI,KAAK,MAAM,IAAI,KAAK,SAAS,MAAM,GAAG,IAAI,OAAO;AACrD,aAAO,CAAC;AACR,WAAK,KAAK,GAAG,MAAM,UAAU,QAAQ,KAAK,KAAK,EAAE,IAAI;AACnD,aAAK,KAAK,UAAU,EAAE,CAAC;AAAA,MACzB;AACA,YAAM;AACN,gBAAU,CAAC;AACX,YAAO,MAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AACrD,YAAI,GAAG,EAAE;AACT,aAAK,KAAK,GAAG,QAAQ,IAAI,QAAQ,KAAK,OAAO,EAAE,IAAI;AACjD,eAAK,IAAI,EAAE;AACX,cAAI,IAAI,GAAG,EAAE,GAAG;AACd,qBAAS;AAAA,UACX;AAAA,QACF;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,aAAO;AAAA,IACT;AACA,mBAAe,SAAS,IAAG;AACzB,UAAI,KAAK,MAAM,IAAI,KAAK,SAAS,MAAM,GAAG,IAAI,OAAO;AACrD,aAAO,CAAC;AACR,WAAK,KAAK,GAAG,MAAM,UAAU,QAAQ,KAAK,KAAK,EAAE,IAAI;AACnD,aAAK,KAAK,UAAU,EAAE,CAAC;AAAA,MACzB;AACA,YAAM;AACN,gBAAU,CAAC;AACX,YAAO,MAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AACrD,YAAI,GAAG,EAAE;AACT,aAAK,KAAK,GAAG,QAAQ,IAAI,QAAQ,KAAK,OAAO,EAAE,IAAI;AACjD,eAAK,IAAI,EAAE;AACX,cAAI,CAAC,IAAI,GAAG,EAAE,GAAG;AACf,qBAAS;AAAA,UACX;AAAA,QACF;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,aAAO;AAAA,IACT;AACA,YAAQ,WAAU;AAChB,UAAI,KAAK,MAAM,IAAI,KAAK,SAAS,MAAM,IAAI,IAAI,OAAO;AACtD,aAAO,CAAC;AACR,WAAK,KAAK,GAAG,MAAM,UAAU,QAAQ,KAAK,KAAK,EAAE,IAAI;AACnD,aAAK,KAAK,UAAU,EAAE,CAAC;AAAA,MACzB;AACA,YAAM;AACN,gBAAU,CAAC;AACX,WAAK,KAAK,GAAG,OAAO,IAAI,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC/C,aAAK,IAAI,EAAE;AACX,aAAK,KAAK,GAAG,QAAQ,GAAG,QAAQ,KAAK,OAAO,EAAE,IAAI;AAChD,cAAI,GAAG,EAAE;AACT,cAAI,CAAC,IAAI,GAAG,OAAO,GAAG;AACpB,oBAAQ,KAAK,CAAC;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,cAAU,OAAO,SAAS,GAAG,IAAG;AAC9B,UAAI,SAAS,IAAI,MAAM,GAAG;AAC1B,gBAAU,CAAC;AACX,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,cAAM,EAAE,CAAC;AACT,YAAI,OAAO,SAAS;AAClB,kBAAQ,GAAG,KAAK;AAAA,QAClB,OAAO;AACL,kBAAQ,GAAG,IAAI;AAAA,QACjB;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AACD,cAAU,OAAO,SAAS,GAAG,IAAG;AAC9B,UAAI,SAAS,IAAI,MAAM,GAAG;AAC1B,gBAAU,CAAC;AACX,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,cAAM,EAAE,CAAC;AACT,YAAI,OAAO,SAAS;AAClB,kBAAQ,GAAG,EAAE,KAAK,CAAC;AAAA,QACrB,OAAO;AACL,kBAAQ,GAAG,IAAI,CAAC,CAAC;AAAA,QACnB;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AACD,cAAU,SAAS,IAAG;AACpB,UAAI,IAAI,MAAM;AACd,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,YAAI,CAAC,GAAG;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,aAAS,SAAS,IAAG;AACnB,UAAI,IAAI,MAAM;AACd,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,YAAI,GAAG;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,IAAAC,OAAM,OAAO,SAAS,GAAG,IAAG;AAC1B,UAAI,IAAI,MAAM;AACd,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,YAAI,EAAE,CAAC,GAAG;AACR,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AACD,IAAAC,OAAM,OAAO,SAAS,GAAG,IAAG;AAC1B,UAAI,IAAI,MAAM;AACd,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,YAAI,CAAC,EAAE,CAAC,GAAG;AACT,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AACD,WAAO,SAAS,IAAG;AACjB,aAAO,GAAG,OAAO,EAAE,KAAK,SAAS,GAAG,GAAE;AACpC,YAAI,IAAI,GAAG;AACT,iBAAO;AAAA,QACT,WAAW,IAAI,GAAG;AAChB,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH;AACA,eAAW,OAAO,SAAS,GAAG,IAAG;AAC/B,aAAO,GAAG,OAAO,EAAE,KAAK,CAAC;AAAA,IAC3B,CAAC;AACD,aAAS,OAAO,SAAS,GAAG,IAAG;AAC7B,aAAO,GAAG,OAAO,EAAE,KAAK,SAAS,GAAG,GAAE;AACpC,YAAI,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG;AACf,iBAAO;AAAA,QACT,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG;AACtB,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,UAAM,SAAS,IAAG;AAChB,UAAI,QAAQ,IAAI,MAAM;AACtB,eAAS;AACT,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,kBAAU;AAAA,MACZ;AACA,aAAO;AAAA,IACT;AACA,cAAU,SAAS,IAAG;AACpB,UAAI,QAAQ,IAAI,MAAM;AACtB,eAAS;AACT,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,kBAAU;AAAA,MACZ;AACA,aAAO;AAAA,IACT;AACA,WAAO,UAAU,SAAS,IAAG;AAC3B,UAAIG,MAAK,IAAI,MAAM;AACnB,MAAAA,OAAM;AACN,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI,GAAG,EAAE;AACT,QAAAA,QAAO;AAAA,MACT;AACA,aAAOA,OAAM,GAAG;AAAA,IAClB;AACA,cAAU,SAAS,IAAG;AACpB,UAAIC,MAAK,IAAI,MAAM,MAAM;AACzB,MAAAA,OAAM,GAAG,CAAC;AACV,WAAK,KAAK,GAAG,QAAQ,OAAO,GAAG,MAAM,CAAC,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAChE,YAAI,KAAK,EAAE;AACX,YAAI,IAAIA,MAAK;AACX,UAAAA,OAAM;AAAA,QACR;AAAA,MACF;AACA,aAAOA;AAAA,IACT;AACA,cAAU,SAAS,IAAG;AACpB,UAAIC,MAAK,IAAI,MAAM,MAAM;AACzB,MAAAA,OAAM,GAAG,CAAC;AACV,WAAK,KAAK,GAAG,QAAQ,OAAO,GAAG,MAAM,CAAC,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAChE,YAAI,KAAK,EAAE;AACX,YAAI,IAAIA,MAAK;AACX,UAAAA,OAAM;AAAA,QACR;AAAA,MACF;AACA,aAAOA;AAAA,IACT;AACA,gBAAY,OAAO,SAAS,GAAG,IAAG;AAChC,UAAID,MAAK,IAAI,MAAM,MAAM;AACzB,MAAAA,OAAM,GAAG,CAAC;AACV,WAAK,KAAK,GAAG,QAAQ,OAAO,GAAG,MAAM,CAAC,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAChE,YAAI,KAAK,EAAE;AACX,YAAI,EAAE,CAAC,IAAI,EAAEA,IAAG,GAAG;AACjB,UAAAA,OAAM;AAAA,QACR;AAAA,MACF;AACA,aAAOA;AAAA,IACT,CAAC;AACD,gBAAY,OAAO,SAAS,GAAG,IAAG;AAChC,UAAIC,MAAK,IAAI,MAAM,MAAM;AACzB,MAAAA,OAAM,GAAG,CAAC;AACV,WAAK,KAAK,GAAG,QAAQ,OAAO,GAAG,MAAM,CAAC,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAChE,YAAI,KAAK,EAAE;AACX,YAAI,EAAE,CAAC,IAAI,EAAEA,IAAG,GAAG;AACjB,UAAAA,OAAM;AAAA,QACR;AAAA,MACF;AACA,aAAOA;AAAA,IACT,CAAC;AACD,IAAAJ,QAAO,QAAQ,OAAO,SAAS,GAAG,MAAM,IAAG;AACzC,UAAIK,OAAM;AACV,MAAAA,QAAO;AACP,aAAO,CAAC,IAAI,EAAE,QAAQ,WAAU;AAC9B,YAAI,IAAI,MAAM,MAAM,WAAW,CAAC;AAChC,aAAK,KAAK,GAAG,QAAQ,OAAO,IAAI,QAAQ,KAAK,MAAM,EAAE,IAAI;AACvD,cAAI,KAAK,EAAE;AACX,mBAAS,KAAKA,QAAO,EAAEA,OAAM,CAAC,CAAC;AAAA,QACjC;AACA,eAAO;AAAA,MACT,GAAE,CAAE;AAAA,IACN,CAAC;AACD,YAAQ,SAAS,OAAO,SAAS,GAAG,IAAG;AACrC,UAAI,CAAC,GAAG,QAAQ;AACd;AAAA,MACF;AACA,aAAOL,MAAK,GAAG,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;AAAA,IACnC,CAAC;AACD,YAAQ,OAAO,SAAS,GAAG,MAAM,IAAG;AAClC,WAAK,GAAG,OAAO,EAAE,QAAQ;AACzB,aAAOA,MAAK,GAAG,MAAM,EAAE,EAAE,QAAQ;AAAA,IACnC,CAAC;AACD,aAAS,OAAO,SAAS,GAAG,IAAG;AAC7B,UAAI,CAAC,GAAG,QAAQ;AACd;AAAA,MACF;AACA,WAAK,GAAG,OAAO,EAAE,QAAQ;AACzB,aAAOA,MAAK,GAAG,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,QAAQ;AAAA,IAC7C,CAAC;AACD,YAAQ,OAAO,SAAS,GAAG,GAAG,IAAG;AAC/B,aAAO,GAAG,MAAM,GAAG,CAAC;AAAA,IACtB,CAAC;AACD,IAAAC,QAAO,OAAO,SAAS,GAAG,IAAG;AAC3B,UAAI,KAAK,GAAG;AACV,eAAO,GAAG,MAAM,GAAG,CAAC;AAAA,MACtB,OAAO;AACL,eAAO,GAAG,MAAM,GAAG,CAAC;AAAA,MACtB;AAAA,IACF,CAAC;AACD,WAAO,OAAO,SAAS,GAAG,IAAG;AAC3B,UAAI,KAAK,GAAG;AACV,eAAO;AAAA,MACT,OAAO;AACL,eAAO,GAAG,MAAM,CAAC;AAAA,MACnB;AAAA,IACF,CAAC;AACD,cAAU,OAAO,SAAS,GAAG,IAAG;AAC9B,aAAO,CAACA,MAAK,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC;AAAA,IAClC,CAAC;AACD,gBAAY,OAAO,SAAS,GAAG,IAAG;AAChC,UAAI,KAAK;AACT,YAAM,GAAG;AACT,UAAI,CAAC,KAAK;AACR,eAAO;AAAA,MACT;AACA,UAAI;AACJ,aAAO,IAAI,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG;AAC1B,aAAK;AAAA,MACP;AACA,aAAO,GAAG,MAAM,GAAG,CAAC;AAAA,IACtB,CAAC;AACD,gBAAY,OAAO,SAAS,GAAG,IAAG;AAChC,UAAI,KAAK;AACT,YAAM,GAAG;AACT,UAAI,CAAC,KAAK;AACR,eAAO;AAAA,MACT;AACA,UAAI;AACJ,aAAO,IAAI,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG;AAC1B,aAAK;AAAA,MACP;AACA,aAAO,GAAG,MAAM,CAAC;AAAA,IACnB,CAAC;AACD,WAAO,OAAO,SAAS,GAAG,IAAG;AAC3B,aAAO,CAAC,UAAU,GAAG,EAAE,GAAG,UAAU,GAAG,EAAE,CAAC;AAAA,IAC5C,CAAC;AACD,gBAAY,OAAO,SAAS,GAAG,IAAG;AAChC,aAAO,KAAK,SAAS,GAAG,IAAI,GAAG,EAAE;AAAA,IACnC,CAAC;AACD,UAAM,OAAO,SAAS,IAAI,IAAG;AAC3B,UAAI,QAAQ,KAAK,IAAI,MAAM,GAAG;AAC9B,eAAS,CAAC;AACV,YAAM,GAAG;AACT,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI;AACJ,YAAI,GAAG,EAAE;AACT,YAAI,MAAM,KAAK;AACb;AAAA,QACF;AACA,eAAO,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAAA,MACxB;AACA,aAAO;AAAA,IACT,CAAC;AACD,cAAU,OAAO,SAAS,GAAG,IAAI,IAAG;AAClC,UAAI,QAAQ,KAAK,IAAI,MAAM,GAAG;AAC9B,eAAS,CAAC;AACV,YAAM,GAAG;AACT,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI;AACJ,YAAI,GAAG,EAAE;AACT,YAAI,MAAM,KAAK;AACb;AAAA,QACF;AACA,eAAO,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AAAA,MACzB;AACA,aAAO;AAAA,IACT,CAAC;AACD,aAAS,WAAU;AACjB,UAAI,KAAK,MAAM,IAAI,KAAK,WAAW,MAAM,IAAI,MAAM,GAAG,UAAU,IAAI,WAAW,CAAC;AAChF,aAAO,CAAC;AACR,WAAK,KAAK,GAAG,MAAM,UAAU,QAAQ,KAAK,KAAK,EAAE,IAAI;AACnD,aAAK,KAAK,UAAU,EAAE,CAAC;AAAA,MACzB;AACA,YAAM;AACN,kBAAY;AACZ,WAAK,KAAK,GAAG,OAAO,IAAI,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC/C,aAAK,IAAI,EAAE;AACX,sBAAc,OAAO,GAAG,YAAY,YAAY;AAAA,MAClD;AACA,WAAK,KAAK,GAAG,KAAK,WAAW,EAAE,IAAI;AACjC,YAAI;AACJ,mBAAW,CAAC;AACZ,aAAK,KAAK,GAAG,OAAO,IAAI,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC/C,eAAK,IAAI,EAAE;AACX,mBAAS,KAAK,GAAG,CAAC,CAAC;AAAA,QACrB;AACA,iBAAS,KAAK,QAAQ;AAAA,MACxB;AACA,aAAO;AAAA,IACT;AACA,iBAAa,SAAS,GAAE;AACtB,UAAI,KAAK,MAAM,IAAI,KAAK,WAAW,MAAM,IAAI,MAAM,GAAG,WAAW,CAAC;AAClE,aAAO,CAAC;AACR,WAAK,KAAK,GAAG,MAAM,UAAU,QAAQ,KAAK,KAAK,EAAE,IAAI;AACnD,aAAK,KAAK,UAAU,EAAE,CAAC;AAAA,MACzB;AACA,YAAM;AACN,kBAAY;AACZ,WAAK,KAAK,GAAG,OAAO,IAAI,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC/C,aAAK,IAAI,EAAE;AACX,sBAAc,OAAO,GAAG,YAAY,YAAY;AAAA,MAClD;AACA,WAAK,KAAK,GAAG,KAAK,WAAW,EAAE,IAAI;AACjC,YAAI;AACJ,iBAAS,KAAK,EAAE,MAAM,MAAO,IAAI,CAAE,CAAC;AAAA,MACtC;AACA,aAAO;AACP,eAAS,MAAK;AACZ,YAAIK,KAAIC,OAAMC,OAAMC,YAAW,CAAC;AAChC,aAAKH,MAAK,GAAGE,SAAQD,QAAO,KAAK,QAAQD,MAAKE,OAAM,EAAEF,KAAI;AACxD,eAAKC,MAAKD,GAAE;AACZ,UAAAG,UAAS,KAAK,GAAG,CAAC,CAAC;AAAA,QACrB;AACA,eAAOA;AAAA,MACT;AAAA,IACF;AACA,SAAK,OAAO,SAAS,GAAG,IAAG;AACzB,UAAI,IAAI,GAAG;AACT,eAAO,GAAG,GAAG,SAAS,CAAC;AAAA,MACzB,OAAO;AACL,eAAO,GAAG,CAAC;AAAA,MACb;AAAA,IACF,CAAC;AACD,gBAAY,OAAO,SAAS,IAAI,IAAG;AACjC,UAAI,IAAI,MAAM,GAAG;AACjB,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI;AACJ,YAAI,GAAG,EAAE;AACT,YAAI,MAAM,IAAI;AACZ,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AACD,kBAAc,OAAO,SAAS,IAAI,IAAG;AACnC,UAAI,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC;AAChC,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI;AACJ,YAAI,GAAG,EAAE;AACT,YAAI,MAAM,IAAI;AACZ,mBAAS,KAAK,CAAC;AAAA,QACjB;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AACD,gBAAY,OAAO,SAAS,GAAG,IAAG;AAChC,UAAI,IAAI,MAAM,GAAG;AACjB,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI;AACJ,YAAI,GAAG,EAAE;AACT,YAAI,EAAE,CAAC,GAAG;AACR,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AACD,kBAAc,OAAO,SAAS,GAAG,IAAG;AAClC,UAAI,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC;AAChC,WAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC9C,YAAI;AACJ,YAAI,GAAG,EAAE;AACT,YAAI,EAAE,CAAC,GAAG;AACR,mBAAS,KAAK,CAAC;AAAA,QACjB;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AACD,IAAAnB,QAAO,UAAU;AAAA,MACf;AAAA,MACA,KAAKC;AAAA,MACL,QAAQC;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAOC;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAOC;AAAA,MACP;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,KAAKI;AAAA,MACL,KAAKC;AAAA,MACL,QAAQJ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQC;AAAA,MACR,WAAWC;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAMG;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAMC;AAAA,MACN;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;AACA,aAAS,OAAO,GAAG,OAAM;AACvB,UAAI,SACJ,SAAS,SAAS,MAAM;AACtB,eAAO,EAAE,SAAS,IAAI,WAAU;AAC9B,cAAI,SAAS,OAAO,KAAK,OAAO,IAAI,CAAC;AACrC,oBAAU,QAAQ,WAAW,OAAO;AACpC,iBAAO,OAAO,KAAK,MAAM,QAAQ,SAAS,IACtC,EAAE,UAAU,UAAU,SACxB,OAAO,KAAK,SAAS,MAAM,IAAI,EAAE,MAAM,SAAS,MAAM;AAAA,QAC1D,IAAI;AAAA,MACN;AACA,aAAO,OAAO;AAAA,IAChB;AACA,aAAS,IAAI,GAAG,IAAG;AACjB,UAAI,IAAI,IAAI,IAAI,GAAG,WAAW;AAC9B,aAAO,EAAE,IAAI,EAAG,KAAI,MAAM,GAAG,CAAC,EAAG,QAAO;AACxC,aAAO;AAAA,IACT;AACA,aAAS,WAAW;AAClB,UAAI,YAAY;AAChB,aAAO,WAAW;AAChB,YAAI,GAAG;AACP,iBAAS,UAAU,CAAC,EAAE,MAAM,MAAM,SAAS;AAC3C,aAAK,IAAI,GAAG,IAAI,UAAU,QAAQ,EAAE,GAAG;AACrC,mBAAS,UAAU,CAAC,EAAE,MAAM;AAAA,QAC9B;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,aAAS,KAAK,GAAE;AAAE,aAAO,CAAC;AAAA,IAAG;AAAA;AAAA;;;AC3sB7B;AAAA,uCAAAS,UAAAC,SAAA;AACA,QAAI;AAAJ,QAAYC;AAAZ,QAAkB;AAAlB,QAA8B;AAA9B,QAA0C;AAA1C,QAAsD;AAAtD,QAAkEC;AAAlE,QAAyE;AAAzE,QAA+EC;AAA/E,QAAoF;AAApF,QAA6FC;AAA7F,QAAqG;AAArG,QAA6G;AAA7G,QAAwH;AACxH,aAAS,SAAS,QAAO;AACvB,UAAI,IAAI,GAAG,WAAW,CAAC;AACvB,WAAK,MAAM,QAAQ;AACjB,YAAI,OAAO,EAAE;AACb,iBAAS,KAAK,CAAC;AAAA,MACjB;AACA,aAAO;AAAA,IACT;AACA,IAAAH,QAAO,SAAS,QAAO;AACrB,UAAI,GAAG,WAAW,CAAC;AACnB,WAAK,KAAK,QAAQ;AAChB,iBAAS,KAAK,CAAC;AAAA,MACjB;AACA,aAAO;AAAA,IACT;AACA,iBAAa,SAAS,QAAO;AAC3B,UAAI,IAAI,MAAM,GAAG,aAAa,CAAC;AAC/B,WAAK,KAAK,GAAG,OAAO,OAAO,QAAQ,KAAK,MAAM,EAAE,IAAI;AAClD,YAAI,OAAO,EAAE;AACb,mBAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAAA,MACxB;AACA,aAAO;AAAA,IACT;AACA,iBAAa,SAAS,QAAO;AAC3B,UAAI,KAAKI,QAAO,WAAW,CAAC;AAC5B,WAAK,OAAO,QAAQ;AAClB,QAAAA,SAAQ,OAAO,GAAG;AAClB,iBAAS,KAAK,CAAC,KAAKA,MAAK,CAAC;AAAA,MAC5B;AACA,aAAO;AAAA,IACT;AACA,iBAAa,OAAO,SAASJ,OAAMK,SAAO;AACxC,UAAI,IAAI,MAAM,GAAG,KAAK,aAAa,CAAC;AACpC,WAAK,KAAK,GAAG,OAAOL,MAAK,QAAQ,KAAK,MAAM,EAAE,IAAI;AAChD,YAAI;AACJ,cAAMA,MAAK,EAAE;AACb,mBAAW,GAAG,IAAIK,QAAO,CAAC;AAAA,MAC5B;AACA,aAAO;AAAA,IACT,CAAC;AACD,iBAAa,SAAS,QAAO;AAC3B,UAAIL,OAAMK,SAAQ,KAAKD;AACvB,MAAAJ,QAAO,CAAC;AACR,MAAAK,UAAS,CAAC;AACV,WAAK,OAAO,QAAQ;AAClB,QAAAD,SAAQ,OAAO,GAAG;AAClB,QAAAJ,MAAK,KAAK,GAAG;AACb,QAAAK,QAAO,KAAKD,MAAK;AAAA,MACnB;AACA,aAAO,CAACJ,OAAMK,OAAM;AAAA,IACtB;AACA,IAAAJ,SAAQ,SAAS,QAAO;AACtB,UAAI;AACJ,WAAK,KAAK,QAAQ;AAChB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AACA,WAAO,OAAO,SAAS,GAAG,QAAO;AAC/B,UAAI,IAAI;AACR,WAAK,MAAM,QAAQ;AACjB,YAAI,OAAO,EAAE;AACb,UAAE,CAAC;AAAA,MACL;AACA,aAAO;AAAA,IACT,CAAC;AACD,IAAAC,OAAM,OAAO,SAAS,GAAG,QAAO;AAC9B,UAAI,GAAG,GAAG,aAAa,CAAC;AACxB,WAAK,KAAK,QAAQ;AAChB,YAAI,OAAO,CAAC;AACZ,mBAAW,CAAC,IAAI,EAAE,CAAC;AAAA,MACrB;AACA,aAAO;AAAA,IACT,CAAC;AACD,cAAU,SAAS,QAAO;AACxB,UAAI,GAAG,GAAG,aAAa,CAAC;AACxB,WAAK,KAAK,QAAQ;AAChB,YAAI,OAAO,CAAC;AACZ,YAAI,GAAG;AACL,qBAAW,CAAC,IAAI;AAAA,QAClB;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,IAAAC,UAAS,OAAO,SAAS,GAAG,QAAO;AACjC,UAAI,GAAG,GAAG,aAAa,CAAC;AACxB,WAAK,KAAK,QAAQ;AAChB,YAAI,OAAO,CAAC;AACZ,YAAI,EAAE,CAAC,GAAG;AACR,qBAAW,CAAC,IAAI;AAAA,QAClB;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AACD,aAAS,OAAO,SAAS,GAAG,QAAO;AACjC,UAAI,GAAG,GAAG,aAAa,CAAC;AACxB,WAAK,KAAK,QAAQ;AAChB,YAAI,OAAO,CAAC;AACZ,YAAI,CAAC,EAAE,CAAC,GAAG;AACT,qBAAW,CAAC,IAAI;AAAA,QAClB;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AACD,gBAAY,OAAO,SAAS,GAAG,QAAO;AACpC,UAAI,QAAQ,QAAQ,GAAG;AACvB,eAAS,CAAC;AACV,eAAS,CAAC;AACV,WAAK,KAAK,QAAQ;AAChB,YAAI,OAAO,CAAC;AACZ,SAAC,EAAE,CAAC,IAAI,SAAS,QAAQ,CAAC,IAAI;AAAA,MAChC;AACA,aAAO,CAAC,QAAQ,MAAM;AAAA,IACxB,CAAC;AACD,WAAO,OAAO,SAAS,GAAG,QAAO;AAC/B,UAAI,IAAI;AACR,WAAK,MAAM,QAAQ;AACjB,YAAI,OAAO,EAAE;AACb,YAAI,EAAE,CAAC,GAAG;AACR,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AACD,IAAAJ,QAAO,UAAU;AAAA,MACf;AAAA,MACA,MAAMC;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAOC;AAAA,MACP;AAAA,MACA,KAAKC;AAAA,MACL,QAAQC;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,aAAS,OAAO,GAAG,OAAM;AACvB,UAAI,SACJ,SAAS,SAAS,MAAM;AACtB,eAAO,EAAE,SAAS,IAAI,WAAU;AAC9B,cAAI,SAAS,OAAO,KAAK,OAAO,IAAI,CAAC;AACrC,oBAAU,QAAQ,WAAW,OAAO;AACpC,iBAAO,OAAO,KAAK,MAAM,QAAQ,SAAS,IACtC,EAAE,UAAU,UAAU,SACxB,OAAO,KAAK,SAAS,MAAM,IAAI,EAAE,MAAM,SAAS,MAAM;AAAA,QAC1D,IAAI;AAAA,MACN;AACA,aAAO,OAAO;AAAA,IAChB;AAAA;AAAA;;;ACzJA;AAAA,uCAAAG,UAAAC,SAAA;AACA,QAAI;AAAJ,QAAW;AAAX,QAAiB;AAAjB,QAAwB;AAAxB,QAAiC;AAAjC,QAAwC;AAAxC,QAAiD;AAAjD,QAAwD;AAAxD,QAAiE;AAAjE,QAA0E;AAA1E,QAAkF;AAAlF,QAA8F;AAA9F,QAAwG;AACxG,YAAQ,OAAO,SAAS,KAAK,KAAI;AAC/B,aAAO,IAAI,MAAM,GAAG;AAAA,IACtB,CAAC;AACD,WAAO,OAAO,SAAS,KAAK,IAAG;AAC7B,aAAO,GAAG,KAAK,GAAG;AAAA,IACpB,CAAC;AACD,YAAQ,SAAS,KAAI;AACnB,UAAI,CAAC,IAAI,QAAQ;AACf,eAAO,CAAC;AAAA,MACV;AACA,aAAO,IAAI,MAAM,IAAI;AAAA,IACvB;AACA,cAAU,SAASC,KAAG;AACpB,aAAOA,IAAG,KAAK,IAAI;AAAA,IACrB;AACA,YAAQ,SAAS,KAAI;AACnB,UAAI,CAAC,IAAI,QAAQ;AACf,eAAO,CAAC;AAAA,MACV;AACA,aAAO,IAAI,MAAM,MAAM;AAAA,IACzB;AACA,cAAU,SAASA,KAAG;AACpB,aAAOA,IAAG,KAAK,GAAG;AAAA,IACpB;AACA,YAAQ,SAASA,KAAG;AAClB,aAAOA,IAAG,MAAM,EAAE;AAAA,IACpB;AACA,cAAU,SAASA,KAAG;AACpB,aAAOA,IAAG,KAAK,EAAE;AAAA,IACnB;AACA,cAAU,SAAS,KAAI;AACrB,aAAO,IAAI,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;AAAA,IACxC;AACA,aAAS,OAAO,SAAS,GAAG,KAAI;AAC9B,UAAI,QAAQ;AACZ,eAAS;AACT,WAAK,KAAK,GAAG,KAAK,GAAG,EAAE,IAAI;AACzB,kBAAU;AAAA,MACZ;AACA,aAAO;AAAA,IACT,CAAC;AACD,iBAAa,SAAS,KAAI;AACxB,aAAO,IAAI,OAAO,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AAAA,IAClD;AACA,eAAW,SAASA,KAAG;AACrB,aAAOA,IAAG,QAAQ,cAAc,SAAS,MAAM,GAAE;AAC/C,gBAAQ,KAAK,OAAO,IAAI,IAAI,YAAY;AAAA,MAC1C,CAAC;AAAA,IACH;AACA,gBAAY,SAAS,KAAI;AACvB,aAAO,IAAI,QAAQ,sBAAsB,SAAS,MAAM,OAAO,OAAM;AACnE,eAAO,QAAQ,OAAO,MAAM,SAAS,IACjC,QACA,MAAM,YAAY;AAAA,MACxB,CAAC,EAAE,QAAQ,aAAa,SAAS,MAAM,OAAM;AAC3C,YAAI,MAAM,SAAS,GAAG;AACpB,iBAAO,QAAQ;AAAA,QACjB,OAAO;AACL,iBAAO,MAAM,YAAY;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,IACH;AACA,IAAAD,QAAO,UAAU;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,IACF;AACA,aAAS,OAAO,GAAG,OAAM;AACvB,UAAI,SACJ,SAAS,SAAS,MAAM;AACtB,eAAO,EAAE,SAAS,IAAI,WAAU;AAC9B,cAAI,SAAS,OAAO,KAAK,OAAO,IAAI,CAAC;AACrC,oBAAU,QAAQ,WAAW,OAAO;AACpC,iBAAO,OAAO,KAAK,MAAM,QAAQ,SAAS,IACtC,EAAE,UAAU,UAAU,SACxB,OAAO,KAAK,SAAS,MAAM,IAAI,EAAE,MAAM,SAAS,MAAM;AAAA,QAC1D,IAAI;AAAA,MACN;AACA,aAAO,OAAO;AAAA,IAChB;AAAA;AAAA;;;AC3FA;AAAA,uCAAAE,UAAAC,SAAA;AACA,QAAIC;AAAJ,QAASC;AAAT,QAAc;AAAd,QAAsB;AAAtB,QAA2B;AAA3B,QAAmC;AAAnC,QAAyC;AAAzC,QAA8C;AAA9C,QAAmD;AAAnD,QAAwD;AAAxD,QAA+D;AAA/D,QAAmE;AAAnE,QAAwE;AAAxE,QAA6E;AAA7E,QAAmF;AAAnF,QAAuF;AAAvF,QAA4F;AAA5F,QAAiG;AAAjG,QAAsG;AAAtG,QAA2G;AAA3G,QAAiH;AAAjH,QAAuH;AAAvH,QAA6H;AAA7H,QAAoI;AAApI,QAA8I;AAA9I,QAAqJ;AAArJ,QAA8J;AAA9J,QAAqK;AAArK,QAA8K;AAA9K,QAAoL;AAApL,QAAyL;AAAzL,QAA8L;AAC9L,IAAAD,OAAM,OAAO,SAAS,IAAI,IAAG;AAC3B,aAAO,KAAK,KAAK,KAAK;AAAA,IACxB,CAAC;AACD,IAAAC,OAAM,OAAO,SAAS,IAAI,IAAG;AAC3B,aAAO,KAAK,KAAK,KAAK;AAAA,IACxB,CAAC;AACD,aAAS,SAAS,GAAE;AAClB,aAAO,CAAC;AAAA,IACV;AACA,UAAM,KAAK;AACX,aAAS,SAAS,GAAE;AAClB,UAAI,IAAI,GAAG;AACT,eAAO;AAAA,MACT,WAAW,IAAI,GAAG;AAChB,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO,OAAO,SAAS,GAAG,GAAE;AAC1B,aAAO,CAAC,EAAE,IAAI;AAAA,IAChB,CAAC;AACD,UAAM,OAAO,SAAS,IAAI,IAAG;AAC3B,aAAO,KAAK;AAAA,IACd,CAAC;AACD,UAAM,OAAO,SAAS,GAAG,GAAE;AACzB,aAAO,KAAK,MAAM,IAAI,CAAC;AAAA,IACzB,CAAC;AACD,UAAM,OAAO,SAAS,IAAI,IAAG;AAC3B,UAAI;AACJ,cAAS,MAAO,OAAO,MAAM,QAAQ;AAAA,IACvC,CAAC;AACD,aAAS,SAASC,KAAG;AACnB,aAAO,IAAIA;AAAA,IACb;AACA,SAAK,KAAK;AACV,UAAM,KAAK;AACX,UAAM,KAAK;AACX,WAAO,KAAK;AACZ,SAAK,KAAK;AACV,UAAM,OAAO,SAAS,IAAI,IAAG;AAC3B,aAAO,KAAK,IAAI,IAAI,EAAE;AAAA,IACxB,CAAC;AACD,UAAM,KAAK;AACX,UAAM,KAAK;AACX,UAAM,KAAK;AACX,WAAO,KAAK;AACZ,WAAO,KAAK;AACZ,WAAO,KAAK;AACZ,YAAQ,OAAO,SAAS,GAAG,GAAE;AAC3B,aAAO,KAAK,MAAM,GAAG,CAAC;AAAA,IACxB,CAAC;AACD,eAAW,SAAS,GAAE;AACpB,aAAO,CAAC,CAAC;AAAA,IACX;AACA,YAAQ,KAAK;AACb,cAAU,KAAK;AACf,YAAQ,KAAK;AACb,cAAU,SAAS,GAAE;AACnB,aAAO,MAAM;AAAA,IACf;AACA,WAAO,SAAS,GAAE;AAChB,aAAO,IAAI,MAAM;AAAA,IACnB;AACA,UAAM,SAAS,GAAE;AACf,aAAO,IAAI,MAAM;AAAA,IACnB;AACA,UAAM,OAAO,SAAS,GAAG,GAAE;AACzB,UAAI;AACJ,UAAI,KAAK,IAAI,CAAC;AACd,UAAI,KAAK,IAAI,CAAC;AACd,aAAO,MAAM,GAAG;AACd,YAAI,IAAI;AACR,YAAI;AACJ,YAAI;AAAA,MACN;AACA,aAAO;AAAA,IACT,CAAC;AACD,UAAM,OAAO,SAAS,GAAG,GAAE;AACzB,aAAO,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AAAA,IAC/C,CAAC;AACD,IAAAH,QAAO,UAAU;AAAA,MACf,KAAKC;AAAA,MACL,KAAKC;AAAA,MACL;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,IACF;AACA,aAAS,OAAO,GAAG,OAAM;AACvB,UAAI,SACJ,SAAS,SAAS,MAAM;AACtB,eAAO,EAAE,SAAS,IAAI,WAAU;AAC9B,cAAI,SAAS,OAAO,KAAK,OAAO,IAAI,CAAC;AACrC,oBAAU,QAAQ,WAAW,OAAO;AACpC,iBAAO,OAAO,KAAK,MAAM,QAAQ,SAAS,IACtC,EAAE,UAAU,UAAU,SACxB,OAAO,KAAK,SAAS,MAAM,IAAI,EAAE,MAAM,SAAS,MAAM;AAAA,QAC1D,IAAI;AAAA,MACN;AACA,aAAO,OAAO;AAAA,IAChB;AAAA;AAAA;;;ACjIA,IAAAE,eAAA;AAAA,yCAAAC,UAAAC,SAAA;AACA,QAAI;AAAJ,QAAU;AAAV,QAAgB;AAAhB,QAAqB;AAArB,QAA0B;AAA1B,QAA+B;AAA/B,QAAmC;AAAnC,QAA2C;AAA3C,QAAsD;AAAtD,QAA+D,YAAY,CAAC,EAAE;AAC9E,WAAO;AACP,WAAO;AACP,UAAM;AACN,UAAM;AACN,UAAM;AACN,SAAK,SAAS,GAAE;AACd,aAAO;AAAA,IACT;AACA,aAAS,OAAO,SAAS,MAAM,GAAE;AAC/B,aAAO,UAAU,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE,MAAM;AAAA,IAC5C,CAAC;AACD,gBAAY,OAAO,SAAS,GAAG,GAAE;AAC/B,UAAI,IAAI,WAAW,CAAC;AACpB,WAAK,KAAK,GAAG,KAAK,GAAG,EAAE,IAAI;AACzB,iBAAS,KAAK,CAAC;AAAA,MACjB;AACA,aAAO;AAAA,IACT,CAAC;AACD,QAAI,QAAQ,KAAK;AACjB,QAAI,QAAQ,KAAK;AACjB,QAAI,OAAO,KAAK;AAChB,QAAI,OAAO,KAAK;AAChB,QAAI,UAAU,KAAK;AACnB,QAAI,YAAY,KAAK;AACrB,QAAI,YAAY,KAAK;AACrB,QAAI,OAAO,KAAK;AAChB,QAAI,WAAW,KAAK;AACpB,cAAU;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,YAAQ,OAAO,KAAK;AACpB,YAAQ,MAAM,KAAK;AACnB,YAAQ,SAAS,KAAK;AACtB,YAAQ,UAAU,KAAK;AACvB,YAAQ,SAAS,KAAK;AACtB,YAAQ,YAAY,KAAK;AACzB,YAAQ,OAAO,KAAK;AACpB,YAAQ,OAAO,KAAK;AACpB,YAAQ,QAAQ,KAAK;AACrB,YAAQ,OAAO,KAAK;AACpB,YAAQ,OAAO,KAAK;AACpB,YAAQ,UAAU,KAAK;AACvB,YAAQ,QAAQ,KAAK;AACrB,YAAQ,UAAU,KAAK;AACvB,YAAQ,aAAa,KAAK;AAC1B,YAAQ,eAAe,KAAK;AAC5B,YAAQ,QAAQ,KAAK;AACrB,YAAQ,UAAU,KAAK;AACvB,YAAQ,UAAU,KAAK;AACvB,YAAQ,OAAO,KAAK;AACpB,YAAQ,QAAQ,KAAK;AACrB,YAAQ,QAAQ,KAAK;AACrB,YAAQ,SAAS,KAAK;AACtB,YAAQ,QAAQ,KAAK;AACrB,YAAQ,SAAS,KAAK;AACtB,YAAQ,UAAU,KAAK;AACvB,YAAQ,UAAU,KAAK;AACvB,YAAQ,SAAS,KAAK;AACtB,YAAQ,MAAM,KAAK;AACnB,YAAQ,MAAM,KAAK;AACnB,YAAQ,SAAS,KAAK;AACtB,YAAQ,WAAW,KAAK;AACxB,YAAQ,OAAO,KAAK;AACpB,YAAQ,WAAW,KAAK;AACxB,YAAQ,SAAS,KAAK;AACtB,YAAQ,MAAM,KAAK;AACnB,YAAQ,UAAU,KAAK;AACvB,YAAQ,OAAO,KAAK;AACpB,YAAQ,UAAU,KAAK;AACvB,YAAQ,SAAS,KAAK;AACtB,YAAQ,YAAY,KAAK;AACzB,YAAQ,UAAU,KAAK;AACvB,YAAQ,UAAU,KAAK;AACvB,YAAQ,UAAU,KAAK;AACvB,YAAQ,YAAY,KAAK;AACzB,YAAQ,YAAY,KAAK;AACzB,YAAQ,OAAO,KAAK;AACpB,YAAQ,QAAQ,KAAK;AACrB,YAAQ,QAAQ,KAAK;AACrB,YAAQ,SAAS,KAAK;AACtB,YAAQ,QAAQ,KAAK;AACrB,YAAQ,SAAS,KAAK;AACtB,YAAQ,QAAQ,KAAK;AACrB,YAAQ,OAAO,KAAK;AACpB,YAAQ,OAAO,KAAK;AACpB,YAAQ,UAAU,KAAK;AACvB,YAAQ,YAAY,KAAK;AACzB,YAAQ,YAAY,KAAK;AACzB,YAAQ,OAAO,KAAK;AACpB,YAAQ,YAAY,KAAK;AACzB,YAAQ,MAAM,KAAK;AACnB,YAAQ,UAAU,KAAK;AACvB,YAAQ,SAAS,KAAK;AACtB,YAAQ,aAAa,KAAK;AAC1B,YAAQ,KAAK,KAAK;AAClB,YAAQ,YAAY,KAAK;AACzB,YAAQ,cAAc,KAAK;AAC3B,YAAQ,YAAY,KAAK;AACzB,YAAQ,cAAc,KAAK;AAC3B,YAAQ,QAAQ,KAAK;AACrB,YAAQ,QAAQ,KAAK;AACrB,YAAQ,OAAO,KAAK;AACpB,YAAQ,MAAM,KAAK;AACnB,YAAQ,OAAO,KAAK;AACpB,YAAQ,QAAQ,IAAI;AACpB,YAAQ,OAAO,IAAI;AACnB,YAAQ,QAAQ,IAAI;AACpB,YAAQ,UAAU,IAAI;AACtB,YAAQ,QAAQ,IAAI;AACpB,YAAQ,UAAU,IAAI;AACtB,YAAQ,QAAQ,IAAI;AACpB,YAAQ,UAAU,IAAI;AACtB,YAAQ,SAAS,IAAI;AACrB,YAAQ,aAAa,IAAI;AACzB,YAAQ,WAAW,IAAI;AACvB,YAAQ,YAAY,IAAI;AACxB,YAAQ,SAAS,IAAI;AACrB,YAAQ,OAAO,IAAI;AACnB,YAAQ,aAAa,IAAI;AACzB,YAAQ,aAAa,IAAI;AACzB,YAAQ,aAAa,IAAI;AACzB,YAAQ,aAAa,IAAI;AACzB,YAAQ,MAAM,IAAI;AAClB,YAAQ,MAAM,IAAI;AAClB,YAAQ,SAAS,IAAI;AACrB,YAAQ,MAAM,IAAI;AAClB,YAAQ,SAAS,IAAI;AACrB,YAAQ,OAAO,IAAI;AACnB,YAAQ,MAAM,IAAI;AAClB,YAAQ,MAAM,IAAI;AAClB,YAAQ,MAAM,IAAI;AAClB,YAAQ,QAAQ,IAAI;AACpB,YAAQ,KAAK,IAAI;AACjB,YAAQ,MAAM,IAAI;AAClB,YAAQ,MAAM,IAAI;AAClB,YAAQ,OAAO,IAAI;AACnB,YAAQ,KAAK,IAAI;AACjB,YAAQ,MAAM,IAAI;AAClB,YAAQ,MAAM,IAAI;AAClB,YAAQ,MAAM,IAAI;AAClB,YAAQ,MAAM,IAAI;AAClB,YAAQ,OAAO,IAAI;AACnB,YAAQ,OAAO,IAAI;AACnB,YAAQ,OAAO,IAAI;AACnB,YAAQ,QAAQ,IAAI;AACpB,YAAQ,WAAW,IAAI;AACvB,YAAQ,QAAQ,IAAI;AACpB,YAAQ,UAAU,IAAI;AACtB,YAAQ,QAAQ,IAAI;AACpB,YAAQ,UAAU,IAAI;AACtB,YAAQ,OAAO,IAAI;AACnB,YAAQ,MAAM,IAAI;AAClB,YAAQ,MAAM,IAAI;AAClB,YAAQ,MAAM,IAAI;AAClB,YAAQ,UAAU;AAClB,IAAAA,QAAO,UAAU;AACjB,aAAS,OAAO,GAAG,OAAM;AACvB,UAAI,SACJ,SAAS,SAAS,MAAM;AACtB,eAAO,EAAE,SAAS,IAAI,WAAU;AAC9B,cAAI,SAAS,OAAO,KAAK,OAAO,IAAI,CAAC;AACrC,oBAAU,QAAQ,WAAW,OAAO;AACpC,iBAAO,OAAO,KAAK,MAAM,QAAQ,SAAS,IACtC,EAAE,UAAU,UAAU,SACxB,OAAO,KAAK,SAAS,MAAM,IAAI,EAAE,MAAM,SAAS,MAAM;AAAA,QAC1D,IAAI;AAAA,MACN;AACA,aAAO,OAAO;AAAA,IAChB;AAAA;AAAA;;;ACjLA;AAAA,0CAAAC,UAAAC,SAAA;AACA,KAAC,WAAU;AACT,UAAI,QAAQ,SAAS;AACrB,eAAS,eAAsB;AAC/B,eAAS,UAAU,QAAQ,IAAG;AAC5B,YAAI,OAAO,CAAC,MAAM,IAAI;AACpB,iBAAO,OAAO,MAAM;AAAA,QACtB,OAAO;AACL,gBAAM,IAAI,MAAM,eAAe,KAAK,iBAAiB,OAAO,CAAC,IAAI,kBAAkB,KAAK,UAAU,MAAM,IAAI,GAAG;AAAA,QACjH;AAAA,MACF;AACA,eAAS,eAAe,QAAQ,IAAG;AACjC,YAAI,OAAO,CAAC,MAAM,IAAI;AACpB,iBAAO,OAAO,MAAM;AAAA,QACtB;AAAA,MACF;AACA,eAAS,YAAY,QAAQ,MAAM,eAAc;AAC/C,YAAIC,OAAMC,QAAO,QAAQ;AACzB,QAAAD,QAAO,KAAK,CAAC,GAAGC,SAAQ,KAAK,CAAC;AAC9B,YAAI,eAAe;AACjB,oBAAU,QAAQD,KAAI;AAAA,QACxB;AACA,iBAAS,CAAC;AACV,oBAAY,OAAO,gBAAgBC,SAAQ;AAC3C,eAAO,OAAO,WAAW,iBAAiB,OAAO,CAAC,MAAMA,SAAQ;AAC9D,iBAAO,KAAK,eAAe,QAAQ,SAAS,CAAC;AAC7C,yBAAe,QAAQ,GAAG;AAAA,QAC5B;AACA,YAAI,eAAe;AACjB,oBAAU,QAAQA,MAAK;AAAA,QACzB;AACA,eAAO;AAAA,MACT;AACA,eAAS,aAAa,QAAQ,eAAc;AAC1C,eAAO,YAAY,QAAQ,CAAC,KAAK,GAAG,GAAG,aAAa;AAAA,MACtD;AACA,eAAS,aAAa,QAAQ,eAAc;AAC1C,eAAO,YAAY,QAAQ,CAAC,KAAK,GAAG,GAAG,aAAa;AAAA,MACtD;AACA,eAAS,cAAc,QAAQ,eAAc;AAC3C,YAAI,QAAQ,WAAW;AACvB,YAAI,eAAe;AACjB,oBAAU,QAAQ,GAAG;AAAA,QACvB;AACA,iBAAS,CAAC;AACV,oBAAY,OAAO,gBAAgB,MAAM;AACzC,eAAO,OAAO,WAAW,CAAC,iBAAiB,OAAO,CAAC,MAAM,MAAM;AAC7D,gBAAM,aAAa,QAAQ,GAAG;AAC9B,oBAAU,QAAQ,GAAG;AACrB,iBAAO,GAAG,IAAI,eAAe,QAAQ,SAAS;AAC9C,yBAAe,QAAQ,GAAG;AAAA,QAC5B;AACA,YAAI,eAAe;AACjB,oBAAU,QAAQ,GAAG;AAAA,QACvB;AACA,eAAO;AAAA,MACT;AACA,eAAS,aAAa,QAAQ,WAAU;AACtC,YAAI;AACJ,qBAAa,SAAS,YAAY;AAClC,cAAM;AACN,eAAO,OAAO,UAAU,OAAO,UAAU,QAAQ,OAAO,CAAC,CAAC,GAAG;AAC3D,iBAAO,OAAO,MAAM;AAAA,QACtB;AACA,eAAO;AAAA,MACT;AACA,eAAS,eAAe,QAAQ,WAAU;AACxC,gBAAQ,OAAO,CAAC,GAAG;AAAA,UACnB,KAAK;AACH,mBAAO,aAAa,QAAQ,IAAI;AAAA,UAClC,KAAK;AACH,mBAAO,aAAa,QAAQ,IAAI;AAAA,UAClC,KAAK;AACH,mBAAO,cAAc,QAAQ,IAAI;AAAA,UACnC;AACE,mBAAO,aAAa,QAAQ,SAAS;AAAA,QACvC;AAAA,MACF;AACA,eAAS,gBAAgB,QAAQ,OAAO,SAAQ;AAC9C,YAAI,MAAM,MAAM,WAAW,YAAY,QAAQ,aAAa,IAAI;AAChE,eAAO,MAAM,CAAC,GAAG,OAAO,KAAK,MAAM,YAAY,KAAK;AACpD,qBAAa,OAAO,OAAO;AAC3B,YAAI,CAAC,QAAQ,YAAY,MAAM,WAAW,MAAO,CAAC,QAAQ,cAAe,SAAS,WAAW,SAAS,YAAY;AAChH,mBAAS,cAAc,WAAW,SAAS,UACvC,aAAa,QAAQ,OAAO,CAAC,MAAM,GAAG,IACtC,cAAc,UACZ,aAAa,QAAQ,OAAO,CAAC,MAAM,GAAG,IACtC,cAAc,QAAQ,OAAO,CAAC,MAAM,GAAG;AAC7C,wBAAc,OAAO,SAAS,eAAe,cAAc,WAAW,SAAS,WAC1E,KAAK,YAAY,GAAG,QAAQ,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,OAChD,KAAK,YAAY,GAAG,QAAQ,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI;AAAA,QAC9D,OAAO;AACL,wBAAc,eAAe,MAAM;AAAA,QACrC;AACA,eAAO;AAAA,MACT;AACA,gBAAU,eAAe;AACzB,mBAAa,OAAO,mFAAuF,UAAU,cAAc,UAAU,kBAAkB,UAAU,YAAY;AACrL,MAAAF,QAAO,UAAU,SAAS,OAAOG,SAAQ,SAAQ;AAC/C,YAAI,QAAQC;AACZ,mBAAW,SAAS,UAAU,CAAC;AAC/B,YAAI,CAAC,QAAQ,YAAY,MAAM,WAAW,KAAK,MAAM,CAAC,EAAE,SAAS,UAAU;AACzE,iBAAOD;AAAA,QACT;AACA,iBAAS,OAAO,MAAMA,QAAO,MAAM,UAAU,CAAC;AAC9C,QAAAC,QAAO,gBAAgB,QAAQ,OAAO,OAAO;AAC7C,YAAI,CAACA,OAAM;AACT,gBAAM,IAAI,MAAM,oBAAoBD,UAAS,IAAI;AAAA,QACnD;AACA,eAAOC;AAAA,MACT;AACA,eAAS,KAAK,GAAE;AAAE,eAAO,CAAC;AAAA,MAAG;AAAA,IAC/B,GAAG,KAAKL,QAAI;AAAA;AAAA;;;AChHZ;AAAA,8CAAAM,UAAAC,SAAA;AACA,KAAC,WAAU;AACT,UAAI,iBAAiB;AACrB,wBAAkB;AAClB,eAAS,KAAK,QAAO;AACnB,YAAI;AACJ,gBAAQ,OAAO,CAAC;AAChB,YAAI,SAAS,MAAM;AACjB,gBAAM,IAAI,MAAM,0BAA0B;AAAA,QAC5C;AACA,eAAO;AAAA,MACT;AACA,eAAS,aAAa,QAAO;AAC3B,YAAI;AACJ,gBAAQ,KAAK,MAAM;AACnB,YAAI,CAAC,gBAAgB,KAAK,KAAK,GAAG;AAChC,gBAAM,IAAI,MAAM,yBAAyB,QAAQ,YAAY;AAAA,QAC/D;AACA,eAAO,OAAO,MAAM;AAAA,MACtB;AACA,eAAS,UAAU,QAAQ,IAAG;AAC5B,YAAI;AACJ,gBAAQ,KAAK,MAAM;AACnB,YAAI,UAAU,IAAI;AAChB,gBAAM,IAAI,MAAM,eAAe,KAAK,aAAa,QAAQ,YAAY;AAAA,QACvE;AACA,eAAO,OAAO,MAAM;AAAA,MACtB;AACA,eAAS,eAAe,QAAQ,IAAG;AACjC,YAAI;AACJ,gBAAQ,OAAO,CAAC;AAChB,YAAI,UAAU,IAAI;AAChB,iBAAO,OAAO,MAAM;AAAA,QACtB,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AACA,eAAS,aAAa,QAAO;AAC3B,YAAI;AACJ,kBAAU,QAAQ,GAAG;AACrB,YAAI,KAAK,MAAM,MAAM,KAAK;AACxB,gBAAM,IAAI,MAAM,0DAA0D;AAAA,QAC5E;AACA,gBAAQ,aAAa,MAAM;AAC3B,kBAAU,QAAQ,GAAG;AACrB,eAAO;AAAA,UACL,WAAW;AAAA,UACX,IAAI;AAAA,QACN;AAAA,MACF;AACA,eAAS,aAAa,QAAO;AAC3B,YAAI;AACJ,qBAAa,CAAC;AACd,kBAAU,QAAQ,GAAG;AACrB,YAAI,KAAK,MAAM,MAAM,KAAK;AACxB,gBAAM,IAAI,MAAM,kEAAkE;AAAA,QACpF;AACA,mBAAS;AACP,qBAAW,KAAK,aAAa,MAAM,CAAC;AACpC,yBAAe,QAAQ,GAAG;AAC1B,cAAI,QAAQ,KAAK,MAAM,GAAG;AACxB;AAAA,UACF;AAAA,QACF;AACA,kBAAU,QAAQ,GAAG;AACrB,eAAO;AAAA,UACL,WAAW;AAAA,UACX,IAAI;AAAA,QACN;AAAA,MACF;AACA,eAAS,cAAc,QAAO;AAC5B,YAAI,QAAQ,QAAQ,MAAM,KAAK;AAC/B,iBAAS,CAAC;AACV,kBAAU,QAAQ,GAAG;AACrB,iBAAS;AACT,mBAAS;AACP,cAAI,eAAe,QAAQ,KAAK,GAAG;AACjC,qBAAS;AACT;AAAA,UACF;AACA,iBAAO,aAAa,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,KAAK,CAAC;AAC1D,iBAAO,GAAG,IAAI;AACd,yBAAe,QAAQ,GAAG;AAC1B,cAAI,QAAQ,KAAK,MAAM,GAAG;AACxB;AAAA,UACF;AAAA,QACF;AACA,kBAAU,QAAQ,GAAG;AACrB,eAAO;AAAA,UACL,WAAW;AAAA,UACX,IAAI;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AACA,eAAS,aAAa,QAAO;AAC3B,YAAI,KAAK;AACT,cAAM,aAAa,MAAM;AACzB,kBAAU,QAAQ,GAAG;AACrB,gBAAQ,aAAa,MAAM;AAC3B,eAAO,CAAC,KAAK,KAAK;AAAA,MACpB;AACA,eAAS,sBAAsB,QAAO;AACpC,gBAAQ,OAAO,CAAC,GAAG;AAAA,UACnB,KAAK;AACH,mBAAO,aAAa,MAAM;AAAA,UAC5B,KAAK;AACH,mBAAO,aAAa,MAAM;AAAA,UAC5B,KAAK;AACH,mBAAO,cAAc,MAAM;AAAA,QAC7B;AAAA,MACF;AACA,eAAS,YAAY,QAAO;AAC1B,YAAI,OAAO,UAAU,MAAM;AAC3B,gBAAQ,KAAK,MAAM;AACnB,mBAAW,UAAU;AACrB,YAAI,YAAY,gBAAgB,KAAK,KAAK,GAAG;AAC3C,iBAAO,WACH,UAAU,QAAQ,GAAG,IACrB,aAAa,MAAM;AACvB,sBAAY,sBAAsB,MAAM;AACxC,cAAI,WAAW;AACb,mBAAO,UAAU,OAAO,MAAM;AAAA,UAChC,OAAO;AACL,mBAAO;AAAA,cACL;AAAA,YACF;AAAA,UACF;AAAA,QACF,OAAO;AACL,sBAAY,sBAAsB,MAAM;AACxC,cAAI,CAAC,WAAW;AACd,kBAAM,IAAI,MAAM,2BAA2B,KAAK;AAAA,UAClD;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AACA,eAAS,aAAa,QAAO;AAC3B,YAAI,WAAW,OAAO,YAAY,SAAS,MAAM;AACjD,YAAI,SAAS,KAAK,MAAM,GAAG;AACzB,gBAAM,IAAI,MAAM,iDAAiD;AAAA,QACnE;AACA,oBAAY,OAAO,CAAC;AACpB,YAAI,aAAa,QAAQ,cAAc,MAAM;AAC3C,iBAAO,MAAM;AACb,iBAAO,MAAM;AAAA,QACf;AACA,gBAAQ,CAAC;AACT,qBAAa,CAAC;AACd,YAAI,YAAY,KAAK,MAAM,GAAG;AAC5B,iBAAO,MAAM;AACb,kBAAQ;AAAA,YACN;AAAA,cACE,MAAM;AAAA,YACR;AAAA,YAAG;AAAA,cACD,MAAM;AAAA,YACR;AAAA,UACF;AACA,uBAAa;AAAA,YACX,WAAW;AAAA,YACX,MAAM;AAAA,UACR;AAAA,QACF;AACA,mBAAS;AACP,oBAAU,YAAY,MAAM,GAAG,OAAO,QAAQ,MAAM,YAAY,QAAQ;AACxE,cAAI,CAAC,WAAW,IAAI,GAAG;AACrB,kBAAM,KAAK,OAAO;AAAA,UACpB;AACA,cAAI,aAAa,MAAM;AACrB,uBAAW,IAAI,IAAI;AAAA,UACrB;AACA,cAAI,CAAC,eAAe,QAAQ,GAAG,GAAG;AAChC;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,mBAAa,OAAO,qBAAqB,gBAAgB,SAAS,QAAQ,GAAG;AAC7E,MAAAA,QAAO,UAAU,SAAS,OAAM;AAC9B,YAAI,QAAQ;AACZ,YAAI,CAAC,MAAM,QAAQ;AACjB,gBAAM,IAAI,MAAM,oBAAoB;AAAA,QACtC;AACA,iBAAS,MAAM,MAAM,UAAU,KAAK,CAAC;AACrC,YAAI,IAAI,MAAM,MAAM,GAAG;AACrB,gBAAM,IAAI,MAAM,qGAAsG;AAAA,QACxH;AACA,YAAI;AACF,iBAAO,aAAa,MAAM;AAAA,QAC5B,SAAS,IAAI;AACX,cAAI;AACJ,gBAAM,IAAI,MAAM,EAAE,UAAU,0BAA0B,KAAK,UAAU,MAAM,IAAI,wBAAwB,QAAQ,GAAG;AAAA,QACpH;AAAA,MACF;AACA,eAAS,IAAI,GAAG,IAAG;AACjB,YAAI,IAAI,IAAI,IAAI,GAAG,WAAW;AAC9B,eAAO,EAAE,IAAI,EAAG,KAAI,MAAM,GAAG,CAAC,EAAG,QAAO;AACxC,eAAO;AAAA,MACT;AAAA,IACF,GAAG,KAAKD,QAAI;AAAA;AAAA;;;ACrMZ;AAAA,yCAAAE,UAAAC,SAAA;AACA,KAAC,WAAU;AACT,UAAI,MAAMC,MAAKC,MAAK,SAAS,OAAO,aAAa,YAAY,CAAC,EAAE;AAChE,aAAO,gBAAuBD,OAAM,KAAK,KAAKC,OAAM,KAAK,KAAK,UAAU,KAAK;AAC7E,cAAQ;AAAA,QACN,QAAQ;AAAA,UACN,QAAQ;AAAA,UACR,UAAU,SAASC,KAAG;AACpB,mBAAO,CAAC,QAAQA,GAAE;AAAA,UACpB;AAAA,QACF;AAAA,QACA,KAAK;AAAA,UACH,QAAQ;AAAA,UACR,UAAU;AAAA,QACZ;AAAA,QACA,KAAK;AAAA,UACH,QAAQ;AAAA,UACR,UAAU,SAASA,KAAG;AACpB,mBAAO,CAAC,QAAQA,GAAE,KAAKA,MAAK,MAAM;AAAA,UACpC;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL,QAAQ;AAAA,UACR,UAAU,SAASA,KAAG;AACpB,mBAAO,CAAC,QAAQA,GAAE;AAAA,UACpB;AAAA,QACF;AAAA,QACA,MAAM;AAAA,UACJ,QAAQ;AAAA,UACR,UAAU,SAASA,KAAG;AACpB,mBAAO,CAAC,QAAQA,IAAG,QAAQ,CAAC;AAAA,UAC9B;AAAA,QACF;AAAA,MACF;AACA,oBAAc;AAAA,QACZ,OAAO;AAAA,QACP,OAAO;AAAA,MACT;AACA,eAAS,WAAW,OAAO,MAAM,SAAQ;AACvC,eAAOD,KAAI,SAASC,KAAG;AACrB,iBAAO,cAAcA,KAAI,KAAK,IAAI,OAAO;AAAA,QAC3C,GAAG,KAAK;AAAA,MACV;AACA,eAAS,WAAW,OAAO,MAAM,SAAQ;AACvC,YAAI,GAAG,IAAIC,OAAM,MAAMC;AACvB,YAAI;AACJ,aAAK,KAAK,GAAG,QAAQD,QAAO,KAAK,IAAI,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC5D,UAAAC,SAAQD,MAAK,EAAE;AACf,cAAI,CAAC,cAAc,MAAM,CAAC,GAAGC,QAAO,OAAO,GAAG;AAC5C,mBAAO;AAAA,UACT;AACA;AAAA,QACF;AACA,eAAO,MAAM,UAAU;AAAA,MACzB;AACA,eAAS,YAAY,OAAO,MAAM,SAAQ;AACxC,YAAI,WAAW,cAAc,GAAG,WAAW,KAAKD,OAAMC;AACtD,oBAAY,CAAC;AACb,uBAAe;AACf,aAAK,KAAK,OAAO;AACf,oBAAU,CAAC,IAAI;AACf;AAAA,QACF;AACA,oBAAY;AACZ,aAAK,OAAOD,QAAO,KAAK,IAAI;AAC1B,UAAAC,SAAQD,MAAK,GAAG;AAChB,cAAI,CAAC,cAAc,MAAM,GAAG,GAAGC,QAAO,OAAO,GAAG;AAC9C,mBAAO;AAAA,UACT;AACA,cAAI,UAAU,GAAG,GAAG;AAClB;AAAA,UACF;AAAA,QACF;AACA,eAAO,KAAK,UAAU,iBAAiB;AAAA,MACzC;AACA,eAAS,eAAe,OAAO,MAAM,SAAQ;AAC3C,YAAI,EAAE,iBAAiB,SAAS;AAC9B,iBAAO;AAAA,QACT;AACA,gBAAQ,KAAK,WAAW;AAAA,UACxB,KAAK;AACH,mBAAO,YAAY,OAAO,MAAM,OAAO;AAAA,UACzC,KAAK;AACH,mBAAO,WAAW,OAAO,MAAM,OAAO;AAAA,UACxC,KAAK;AACH,mBAAO,WAAW,OAAO,MAAM,OAAO;AAAA,QACxC;AAAA,MACF;AACA,eAAS,MAAM,OAAO,SAAS,SAAQ;AACrC,YAAI,MAAM,WAAW,SAAS;AAC9B,eAAO,QAAQ,MAAM,YAAY,QAAQ;AACzC,YAAI,MAAM;AACR,cAAI,SAAS,KAAK;AAChB,mBAAO;AAAA,UACT;AACA,oBAAU,QAAQ,YAAY,IAAI,KAAK,MAAM,IAAI;AACjD,cAAI,SAAS;AACX,oBAAQ,QAAQ,WAAW,UAAU,QAAQ,WAAW,UAAU,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM,QAAQ,SAAS,KAAK;AAAA,UACvH,OAAO;AACL,mBAAO,SAAS,UAAU,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM,CAAC,aAAa,eAAe,OAAO,SAAS,OAAO;AAAA,UAC7G;AAAA,QACF,WAAW,WAAW;AACpB,cAAI,OAAO,YAAY,SAAS,GAAG;AACjC,gBAAI,SAAS,UAAU,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,GAAG;AAC/C,qBAAO;AAAA,YACT;AAAA,UACF;AACA,iBAAO,eAAe,OAAO,SAAS,OAAO;AAAA,QAC/C,OAAO;AACL,gBAAM,IAAI,MAAM,6BAA6B,QAAQ,GAAG;AAAA,QAC1D;AAAA,MACF;AACA,eAAS,cAAc,OAAOA,QAAO,SAAQ;AAC3C,YAAI,UAAU,KAAKA,MAAK,EAAE,MAAM,GAAG,EAAE,MAAM,SAAS;AAClD,gBAAM,IAAI,MAAM,uCAAuC,QAAQ,GAAG;AAAA,QACpE;AACA,eAAOJ,KAAI,SAASE,KAAG;AACrB,iBAAO,MAAM,OAAOA,KAAI,OAAO;AAAA,QACjC,GAAGE,MAAK;AAAA,MACV;AACA,MAAAL,QAAO,UAAU,SAAS,YAAY,OAAO,SAAQ;AACnD,mBAAW,SAAS,UAAU,CAAC;AAC/B,YAAI,QAAQ,eAAe,MAAM;AAC/B,kBAAQ,cAAc,CAAC;AAAA,QACzB;AACA,eAAO,cAAc,OAAO,YAAY,OAAO;AAAA,MACjD;AAAA,IACF,GAAG,KAAKD,QAAI;AAAA;AAAA;;;AC/HZ,IAAAO,eAAA;AAAA,yCAAAC,UAAAC,SAAA;AACA,KAAC,WAAU;AACT,UAAI,SAAS,WAAW,iBAAiB;AACzC,gBAAU;AACV,kBAAY;AACZ,wBAAkB;AAClB,kBAAY,SAAS,MAAM,OAAO,SAAQ;AACxC,eAAO,gBAAgB,UAAU,IAAI,GAAG,OAAO,OAAO;AAAA,MACxD;AACA,MAAAA,QAAO,UAAU;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,GAAG,KAAKD,QAAI;AAAA;AAAA;;;ACfZ;AAAA,kCAAAE,UAAAC,SAAA;AACA,KAAC,WAAU;AACT,UAAI,iBAAiB,OAAO,YAAY,CAAC,EAAE;AAC3C,wBAAkB,eAAsB;AACxC,cAAQ;AAAA,QACN,KAAK,SAASC,QAAO,SAAQ;AAC3B,kBAAQ,UAAU,KAAKA,MAAK,EAAE,MAAM,GAAG,EAAE,GAAG;AAAA,YAC5C,KAAK;AACH,qBAAO,SAASA,QAAO;AAAA,gBACrB,MAAM;AAAA,cACR,GAAG,OAAO;AAAA,YACZ,KAAK;AACH,qBAAO,SAASA,QAAO;AAAA,gBACrB,MAAM;AAAA,cACR,GAAG,OAAO;AAAA,YACZ;AACE,qBAAO;AAAA,gBACL,MAAM;AAAA,gBACN,OAAO,UAAUA,QAAO;AAAA,kBACtB;AAAA,oBACE,MAAM;AAAA,kBACR;AAAA,kBAAG;AAAA,oBACD,MAAM;AAAA,kBACR;AAAA,kBAAG;AAAA,oBACD,MAAM;AAAA,kBACR;AAAA,kBAAG;AAAA,oBACD,MAAM;AAAA,kBACR;AAAA,kBAAG;AAAA,oBACD,MAAM;AAAA,kBACR;AAAA,kBAAG;AAAA,oBACD,MAAM;AAAA,kBACR;AAAA,kBAAG;AAAA,oBACD,MAAM;AAAA,kBACR;AAAA,kBAAG;AAAA,oBACD,MAAM;AAAA,kBACR;AAAA,kBAAG;AAAA,oBACD,MAAM;AAAA,kBACR;AAAA,kBAAG;AAAA,oBACD,MAAM;AAAA,kBACR;AAAA,gBACF,IAAI,QAAQ,WAAW,MAAM,QAAQ;AAAA,cACvC;AAAA,UACF;AAAA,QACF;AAAA,QACA,WAAW,SAASC,KAAG;AACrB,cAAIA,QAAO,eAAeA,QAAO,QAAQ;AACvC,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,OAAO;AAAA,YACT;AAAA,UACF,OAAO;AACL,mBAAO;AAAA,cACL,MAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,QACA,MAAM,SAASA,KAAG;AAChB,cAAIA,QAAO,QAAQ;AACjB,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,OAAO;AAAA,YACT;AAAA,UACF,OAAO;AACL,mBAAO;AAAA,cACL,MAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,QACA,KAAK,SAASA,KAAG;AACf,cAAIA,QAAO,OAAO;AAChB,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,OAAO;AAAA,YACT;AAAA,UACF,OAAO;AACL,mBAAO;AAAA,cACL,MAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,QACA,SAAS,SAASA,KAAG;AACnB,cAAIA,QAAO,QAAQ;AACjB,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,OAAO;AAAA,YACT;AAAA,UACF,WAAWA,QAAO,SAAS;AACzB,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,OAAO;AAAA,YACT;AAAA,UACF,OAAO;AACL,mBAAO;AAAA,cACL,MAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,QACA,QAAQ,SAASA,KAAG;AAClB,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,OAAO,CAACA;AAAA,UACV;AAAA,QACF;AAAA,QACA,KAAK,SAASA,KAAG;AACf,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,OAAO,CAACA;AAAA,UACV;AAAA,QACF;AAAA,QACA,OAAO,SAASA,KAAG;AACjB,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,OAAO,CAACA;AAAA,UACV;AAAA,QACF;AAAA,QACA,MAAM,SAASD,QAAO,SAAQ;AAC5B,cAAI;AACJ,cAAI,OAAO,kBAAkB,KAAKA,MAAK,GAAG;AACxC,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;AAAA,YACrC;AAAA,UACF,WAAW,QAAQ,UAAU;AAC3B,mBAAO;AAAA,cACL,MAAM;AAAA,YACR;AAAA,UACF,OAAO;AACL,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,OAAO,IAAI,KAAK,CAACA,UAASA,MAAK;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,QACA,QAAQ,SAASA,QAAO,SAAQ;AAC9B,cAAI;AACJ,cAAI,OAAO,2BAA2B,KAAKA,MAAK,GAAG;AACjD,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,OAAO,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,YACpC;AAAA,UACF,WAAW,QAAQ,UAAU;AAC3B,mBAAO;AAAA,cACL,MAAM;AAAA,YACR;AAAA,UACF,OAAO;AACL,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,OAAO,IAAI,OAAOA,MAAK;AAAA,YACzB;AAAA,UACF;AAAA,QACF;AAAA,QACA,OAAO,SAASA,QAAO,SAAQ;AAC7B,iBAAO,UAAUA,QAAO;AAAA,YACtB,IAAI,CAAC;AAAA,cACH,MAAM;AAAA,YACR,CAAC;AAAA,UACH,GAAG,OAAO;AAAA,QACZ;AAAA,QACA,QAAQ,SAASA,QAAO,SAAQ;AAC9B,iBAAO,WAAWA,QAAO;AAAA,YACvB,IAAI,CAAC;AAAA,UACP,GAAG,OAAO;AAAA,QACZ;AAAA,QACA,QAAQ,SAASC,KAAG;AAClB,cAAIC,UAAS;AACb,cAAI,UAAU,KAAKD,GAAE,EAAE,MAAM,GAAG,EAAE,MAAM,UAAU;AAChD,mBAAO;AAAA,cACL,MAAM;AAAA,YACR;AAAA,UACF;AACA,UAAAC,WAAU,SAASF,QAAO,OAAM;AAC9B,mBAAOA,OAAM,QAAQ,6BAA6B,SAASG,MAAK,SAAQ;AACtE,sBAAQ,QAAQ,CAAC,GAAG;AAAA,gBACpB,KAAK;AACH,yBAAO;AAAA,gBACT,KAAK;AACH,yBAAO;AAAA,gBACT,KAAK;AACH,yBAAO;AAAA,gBACT,KAAK;AACH,yBAAO;AAAA,gBACT,KAAK;AACH,yBAAO;AAAA,gBACT,KAAK;AACH,yBAAO;AAAA,gBACT,KAAK;AACH,yBAAO;AAAA,gBACT,KAAK;AACH,yBAAO,KAAK,MAAM,MAAOA,OAAM,GAAI;AAAA,gBACrC;AACE,yBAAO;AAAA,cACT;AAAA,YACF,CAAC;AAAA,UACH;AACA,cAAI,OAAOF,IAAG,MAAM,eAAe,GAAG;AACpC,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,OAAOC,SAAQ,KAAK,CAAC,GAAG,GAAG;AAAA,YAC7B;AAAA,UACF,WAAW,OAAOD,IAAG,MAAM,eAAe,GAAG;AAC3C,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,OAAOC,SAAQ,KAAK,CAAC,GAAG,GAAG;AAAA,YAC7B;AAAA,UACF,OAAO;AACL,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,OAAOD;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,eAAS,UAAUG,OAAM,MAAM,SAAQ;AACrC,YAAI,QAAQ;AACZ,YAAI,UAAU,KAAKA,KAAI,EAAE,MAAM,GAAG,EAAE,MAAM,SAAS;AACjD,iBAAO;AAAA,YACL,MAAM;AAAA,UACR;AAAA,QACF;AACA,iBAAS,KAAK;AACd,eAAO;AAAA,UACL,MAAM;AAAA,UACN,QAAQ,WAAU;AAChB,gBAAI,IAAI,MAAM,MAAM,WAAW,CAAC;AAChC,iBAAK,KAAK,GAAG,QAAQ,OAAOA,OAAM,QAAQ,KAAK,MAAM,EAAE,IAAI;AACzD,wBAAU,KAAK,EAAE;AACjB,uBAAS,KAAK,UAAU,SAAS,QAAQ,OAAO,CAAC;AAAA,YACnD;AACA,mBAAO;AAAA,UACT,GAAE;AAAA,QACJ;AAAA,MACF;AACA,eAAS,UAAUA,OAAM,MAAM,SAAQ;AACrC,YAAI,QAAQ,GAAG,IAAI,MAAM,MAAMC,QAAO;AACtC,YAAI,UAAU,KAAKD,KAAI,EAAE,MAAM,GAAG,EAAE,MAAM,SAAS;AACjD,iBAAO;AAAA,YACL,MAAM;AAAA,UACR;AAAA,QACF;AACA,iBAAS,CAAC;AACV,YAAI;AACJ,aAAK,KAAK,GAAG,QAAQ,OAAO,KAAK,IAAI,QAAQ,KAAK,MAAM,EAAE,IAAI;AAC5D,UAAAC,SAAQ,KAAK,EAAE;AACf,iBAAO,UAAUD,MAAK,CAAC,GAAGC,QAAO,OAAO;AACxC,cAAI,UAAU,KAAK,IAAI,EAAE,MAAM,GAAG,EAAE,MAAM,aAAa;AACrD,mBAAO,KAAK,IAAI;AAAA,UAClB;AACA;AAAA,QACF;AACA,YAAID,MAAK,UAAU,GAAG;AACpB,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,QACF,OAAO;AACL,iBAAO;AAAA,YACL,MAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,eAAS,WAAWA,OAAM,MAAM,SAAQ;AACtC,YAAI,QAAQ,KAAKJ;AACjB,YAAI,UAAU,KAAKI,KAAI,EAAE,MAAM,GAAG,EAAE,MAAM,UAAU;AAClD,iBAAO;AAAA,YACL,MAAM;AAAA,UACR;AAAA,QACF;AACA,iBAAS,KAAK;AACd,eAAO;AAAA,UACL,MAAM;AAAA,UACN,QAAQ,WAAU;AAChB,gBAAI,MAAM,aAAa,CAAC;AACxB,iBAAK,OAAO,OAAOA,OAAM;AACvB,cAAAJ,SAAQ,KAAK,GAAG;AAChB,yBAAW,UAAU,KAAK,CAAC;AAAA,gBACzB,MAAM;AAAA,cACR,CAAC,GAAG,OAAO,CAAC,IAAI,UAAUA,QAAO,OAAO,GAAG,KAAK,CAAC;AAAA,gBAC/C,MAAM;AAAA,cACR,CAAC,GAAG,OAAO;AAAA,YACb;AACA,mBAAO;AAAA,UACT,GAAE;AAAA,QACJ;AAAA,MACF;AACA,eAAS,SAASI,OAAM,SAAS,SAAQ;AACvC,YAAI,MAAM,WAAW,UAAU;AAC/B,eAAO,QAAQ,MAAM,YAAY,QAAQ;AACzC,YAAI,MAAM;AACR,uBAAa,OAAO,QAAQ,YAAY,IAAI,MAAM,OAAO,KAAK,OAAO,WAAW,MAAM,IAAI;AAC1F,cAAI,CAAC,UAAU;AACb,kBAAM,IAAI,MAAM,uBAAuB,OAAO,GAAG;AAAA,UACnD;AACA,iBAAO,SAASA,OAAM,SAAS,SAAS;AAAA,QAC1C,OAAO;AACL,kBAAQ,WAAW;AAAA,YACnB,KAAK;AACH,qBAAO,UAAUA,OAAM,SAAS,OAAO;AAAA,YACzC,KAAK;AACH,qBAAO,UAAUA,OAAM,SAAS,OAAO;AAAA,YACzC,KAAK;AACH,qBAAO,WAAWA,OAAM,SAAS,OAAO;AAAA,UAC1C;AAAA,QACF;AAAA,MACF;AACA,eAAS,UAAUA,OAAMC,QAAO,SAAQ;AACtC,YAAI,IAAI,MAAM,MAAM,MAAM,WAAWL;AACrC,aAAK,KAAK,GAAG,OAAOK,OAAM,QAAQ,KAAK,MAAM,EAAE,IAAI;AACjD,iBAAOA,OAAM,EAAE;AACf,iBAAO,SAASD,OAAM,MAAM,OAAO,GAAG,YAAY,KAAK,MAAMJ,SAAQ,KAAK;AAC1E,cAAI,cAAc,WAAW;AAC3B;AAAA,UACF;AACA,cAAI,gBAAgB,CAAC,IAAI,GAAGA,QAAO;AAAA,YACjC,aAAa,QAAQ;AAAA,UACvB,CAAC,GAAG;AACF,mBAAOA;AAAA,UACT;AAAA,QACF;AACA,cAAM,IAAI,MAAM,WAAW,KAAK,UAAUI,KAAI,IAAI,kCAAkC,KAAK,UAAUC,MAAK,IAAI,GAAG;AAAA,MACjH;AACA,MAAAN,QAAO,UAAU,SAASK,OAAMC,QAAO,SAAQ;AAC7C,YAAI,CAAC,QAAQ,YAAYA,OAAM,WAAW,KAAKA,OAAM,CAAC,EAAE,SAAS,UAAU;AACzE,iBAAOD;AAAA,QACT;AACA,eAAO,UAAUA,OAAMC,QAAO,OAAO;AAAA,MACvC;AAAA,IACF,GAAG,KAAKP,QAAI;AAAA;AAAA;;;ACtUZ,IAAAQ,eAAA;AAAA,mCAAAC,UAAAC,SAAA;AACA,KAAC,WAAU;AACT,UAAI,aAAa,MAAM,WAAW,SAAS,iBAAiBC;AAC5D,oBAAc;AACd,aAAO;AACP,kBAAY,eAAsB;AAClC,gBAAU;AACV,wBAAkB,SAAS,YAAYC,SAAQ,SAAQ;AACrD,mBAAW,SAAS,UAAU,CAAC;AAC/B,gBAAQ,YAAY,SAAS,QAAQ,WAAW;AAChD,gBAAQ,eAAe,SAAS,QAAQ,cAAc,CAAC;AACvD,eAAO,KAAK,YAAY,YAAYA,SAAQ,OAAO,GAAG,YAAY,OAAO;AAAA,MAC3E;AACA,MAAAD,SAAQ,SAAS,MAAMC,SAAQ,SAAQ;AACrC,eAAO,gBAAgB,UAAU,IAAI,GAAGA,SAAQ,OAAO;AAAA,MACzD;AACA,MAAAF,QAAO,UAAU;AAAA,QACf;AAAA,QACA,OAAOC;AAAA,QACP;AAAA,MACF;AAAA,IACF,GAAG,KAAKF,QAAI;AAAA;AAAA;;;ACrBZ;AAAA,uDAAAI,UAAA;AAAA;AAEA,QAAI,OAAO;AAuBX,QAAM,oBAAoB;AAC1B,QAAM,kBAAkB,oBAAI,IAAI,CAAC,GAAG,GAAG,GAAG,OAAO,QAAQ,OAAO,CAAC;AAOjE,aAAS,gBAAgB,YAAY;AACpC,YAAM,WAAW,MAAM,QAAQ,UAAU,IAAI,WAAW,CAAC,IAAI;AAC7D,aAAO,gBAAgB,IAAI,QAAQ;AAAA,IACpC;AAOA,aAAS,qBAAqB,aAAa;AAC1C,aAAO,OAAO,OAAO,WAAW,EAAE,MAAM,eAAe;AAAA,IACxD;AAKA,QAAM,mBAAN,MAAuB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKtB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,MAMR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,MAMR,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQhB,YAAY,OAAOC,QAAO,eAAe;AACxC,aAAK,QAAQ;AACb,aAAK,QAAQA;AACb,aAAK,gBAAgB;AAAA,MACtB;AAAA,IACD;AASA,QAAM,sBAAN,MAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOzB,kBAAkBC,SAAQ;AACzB,cAAM;AAAA;AAAA,UAAqC,CAAC;AAAA;AAG5C,cAAM,gBAAgBA,QACpB,KAAK,EACL,QAAQ,yBAAyB,IAAI;AAEvC,sBAAc,MAAM,QAAQ,EAAE,QAAQ,UAAQ;AAC7C,cAAI,CAAC,MAAM;AACV;AAAA,UACD;AAGA,gBAAM,CAAC,KAAKD,SAAQ,IAAI,IAAI,KAAK,MAAM,GAAG;AAE1C,gBAAM,GAAG,IAAIA;AAAA,QACd,CAAC;AAED,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,oBAAoBC,SAAQ;AAE3B,YAAI;AACH,gBAAM;AAAA;AAAA,YACuB,KAAK,MAAM,UAAUA,OAAM,KAAM,CAAC;AAAA;AAc/D,cAAI,qBAAqB,KAAK,GAAG;AAChC,mBAAO;AAAA,cACN,IAAI;AAAA,cACJ,QAAQ;AAAA,YACT;AAAA,UACD;AAAA,QACD,QAAQ;AAAA,QAER;AAMA,cAAM,mBAAmBA,QACvB,QAAQ,yCAAyC,OAAO,EACxD,QAAQ,sBAAsB,KAAK;AAErC,YAAI;AACH,gBAAM,QAAQ,KAAK,MAAM,IAAI,gBAAgB,GAAG;AAEhD,iBAAO;AAAA,YACN,IAAI;AAAA,YACJ,QAAQ;AAAA,UACT;AAAA,QACD,SAAS,IAAI;AACZ,gBAAM,eAAe,cAAc,QAAQ,GAAG,UAAU,OAAO,EAAE;AAEjE,iBAAO;AAAA,YACN,IAAI;AAAA,YACJ,OAAO;AAAA,cACN,SAAS,8BAA8B,gBAAgB,MAAM,YAAY;AAAA,YAC1E;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,gBAAgBA,SAAQ;AACvB,cAAM;AAAA;AAAA,UAAsC,CAAC;AAAA;AAE7C,QAAAA,QAAO,MAAM,GAAG,EAAE,QAAQ,UAAQ;AACjC,gBAAM,cAAc,KAClB,KAAK,EACL;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAED,cAAI,aAAa;AAChB,kBAAM,WAAW,IAAI;AAAA,UACtB;AAAA,QACD,CAAC;AAED,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,yBAAyBD,QAAO;AAC/B,cAAME,SAAQ,aAAa,KAAKF,MAAK;AAErC,YAAI,CAACE,QAAO;AACX,iBAAO,EAAE,eAAeF,OAAM,KAAK,GAAG,mBAAmB,GAAG;AAAA,QAC7D;AAEA,cAAM,YAAYA,OAAM,MAAM,GAAGE,OAAM,KAAK,EAAE,KAAK;AACnD,cAAM,gBAAgBF,OAAM,MAAME,OAAM,QAAQA,OAAM,CAAC,EAAE,MAAM,EAAE,KAAK;AAEtE,eAAO,EAAE,eAAe,WAAW,mBAAmB,cAAc;AAAA,MACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,eAAeD,SAAQ;AACtB,cAAM,EAAE,eAAe,kBAAkB,IACxC,KAAK,yBAAyBA,OAAM;AACrC,cAAMC,SAAQ,kBAAkB,KAAK,aAAa;AAElD,YAAI,CAACA,QAAO;AACX,iBAAO;AAAA,QACR;AAEA,cAAM,gBAAgBA,OAAM,CAAC;AAC7B,cAAM,iBAAiB,cAAc;AAAA,UACpCA,OAAM,QAAQ,cAAc;AAAA,QAC7B;AAEA,eAAO,IAAI;AAAA,UACV;AAAA,UACA,eAAe,KAAK;AAAA,UACpB;AAAA,QACD;AAAA,MACD;AAAA,IACD;AA+CA,aAAS,kBAAkBC,OAAM;AAChC,aAAO,SAASA;AAAA,IACjB;AAOA,aAAS,eAAeA,OAAM;AAC7B,aAAO,cAAcA;AAAA,IACtB;AAOA,aAAS,oBAAoBA,OAAM;AAClC,aAAO,WAAWA;AAAA,IACnB;AAOA,aAAS,iBAAiBA,OAAM;AAC/B,aAAO,cAAcA;AAAA,IACtB;AAWA,aAAS,2BAA2B,kBAAkB,aAAa;AAClE,UAAI,MAAM;AACV,UAAI,OAAO,iBAAiB,SAAS;AAErC,aAAO,MAAM,MAAM;AAClB,cAAM,OAAQ,MAAM,QAAQ,IAAK;AAEjC,YAAI,cAAc,iBAAiB,GAAG,GAAG;AACxC,iBAAO;AAAA,QACR,OAAO;AACN,gBAAM,MAAM;AAAA,QACb;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAUA,QAAM,gBAAN,MAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMnB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQP,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAMP;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,YAAY,EAAE,QAAQ,OAAO,KAAK,GAAG;AACpC,aAAK,SAAS;AACd,aAAK,QAAQ;AACb,aAAK,OAAO;AAAA,MACb;AAAA,IACD;AAOA,QAAM,iBAAN,MAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMpB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQP,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAMP;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,YAAY,EAAE,QAAQ,KAAK,GAAG;AAC7B,aAAK,SAAS;AACd,aAAK,OAAO;AAAA,MACb;AAAA,IACD;AAMA,QAAM,YAAN,MAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,YAAY,EAAE,MAAM,MAAAA,OAAM,OAAAH,QAAO,cAAc,GAAG;AACjD,aAAK,OAAO;AACZ,aAAK,OAAOG;AACZ,aAAK,QAAQH;AACb,aAAK,gBAAgB;AAAA,MACtB;AAAA,IACD;AAOA,QAAM,qBAAN,MAAyB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKxB,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMV,oBAAoB,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMtB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,YAAY,EAAE,MAAAI,OAAM,KAAK,oBAAoB,SAAS,GAAG;AACxD,aAAK,MAAM;AACX,aAAK,OAAOA;AAEZ,aAAK,qBAAqB,IAAI;AAAA,UAC7B,kBAAkB;AAAA,UAClB,kBAAkB,MAAM,QAAQ,UAAU,EAAE;AAAA,QAC7C;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,cAAcA,OAAM;AACnB,cAAMF,SAAQ,KAAK,mBAAmB,KAAKE,KAAI;AAE/C,YAAI,CAACF,QAAO;AACX,iBAAO;AAAA,QACR;AAEA,aAAK,OAAO,KAAKE,MAAK,MAAM,GAAGF,OAAM,KAAK,CAAC;AAC3C,aAAK,kBAAkB;AAAA,WACrB,KAAK,kBAAkB,GAAG,EAAE,KAAK,KACjCA,OAAM,QACNA,OAAM,CAAC,EAAE;AAAA,QACX;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,eAAe;AAEd,YAAI,KAAK,OAAO,WAAW,KAAK,kBAAkB,QAAQ;AACzD;AAAA,QACD;AAEA,eACC,KAAK,cAAc,KAAK,KAAK,MAAM,KAAK,kBAAkB,GAAG,EAAE,CAAC,CAAC,GAChE;AAAA,QAEF;AAEA,aAAK,OAAO,KAAK,KAAK,KAAK,MAAM,KAAK,kBAAkB,GAAG,EAAE,CAAC,CAAC;AAE/D,eAAO,OAAO,KAAK,MAAM;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,iCAAiCG,QAAO;AAEvC,YAAIA,WAAU,KAAK,kBAAkB,GAAG,EAAE,KAAK,IAAI;AAClD;AAAA,QACD;AAEA,eACCA,UAAS,KAAK,kBAAkB,GAAG,EAAE,KAAK,MAC1C,KAAK,cAAc,KAAK,KAAK,MAAM,KAAK,kBAAkB,GAAG,EAAE,CAAC,CAAC,GAChE;AAAA,QAEF;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,+BAA+B,KAAK,WAAW;AAE9C,cAAM,mBAAmB,IAAI,OAAO,YAAY;AAChD,cAAM,0BAA0B,KAAK,kBAAkB,SAAS;AAChE,YAAI,wBAAwB,mBAAmB;AAG/C,YAAI,yBAAyB,GAAG;AAC/B;AAAA,QACD;AAEA,eACC,wBAAwB,KACxB,KAAK,cAAc,KAAK,KAAK,MAAM,KAAK,kBAAkB,GAAG,EAAE,CAAC,CAAC,GAChE;AAED,mCAAyB;AAAA,QAC1B;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,OAAO,aAAa;AACnB,YAAI,kBAAkB,WAAW,GAAG;AACnC,iBAAO,YAAY;AAAA,QACpB;AAEA,YAAI,eAAe,WAAW,GAAG;AAChC,iBAAO,YAAY;AAAA,QACpB;AAEA,cAAM,IAAI;AAAA,UACT;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,gBAAgBA,QAAO;AACtB,YAAI,OAAOA,WAAU,UAAU;AAC9B,gBAAM,IAAI,UAAU,kCAAkC;AAAA,QACvD;AAEA,YAAIA,SAAQ,KAAKA,SAAQ,KAAK,KAAK,QAAQ;AAC1C,gBAAM,IAAI;AAAA,YACT,uCAAuCA,MAAK,gCAAgC,KAAK,KAAK,MAAM;AAAA,UAC7F;AAAA,QACD;AAEA,cAAM;AAAA,UACL,OAAO,EAAE,MAAM,WAAW,QAAQ,YAAY;AAAA,UAC9C,KAAK,EAAE,MAAM,SAAS,QAAQ,UAAU;AAAA,QACzC,IAAI,KAAK,OAAO,KAAK,GAAG;AAGxB,YAAIA,WAAU,GAAG;AAChB,iBAAO;AAAA,YACN,MAAM;AAAA,YACN,QAAQ;AAAA,UACT;AAAA,QACD;AAGA,YAAIA,WAAU,KAAK,KAAK,QAAQ;AAC/B,iBAAO;AAAA,YACN,MAAM;AAAA,YACN,QAAQ;AAAA,UACT;AAAA,QACD;AAGA,aAAK,iCAAiCA,MAAK;AAM3C,cAAM,cACJA,WAAU,KAAK,kBAAkB,GAAG,EAAE,KAAK,KACzC,KAAK,kBAAkB,SACvB,2BAA2B,KAAK,mBAAmBA,MAAK,KAC3D,IACA;AAED,eAAO;AAAA,UACN,MAAM;AAAA,UACN,QACCA,SACA,KAAK,kBAAkB,aAAa,SAAS,IAC7C;AAAA,QACF;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaA,gBAAgB,KAAK;AACpB,YACC,QAAQ,QACR,OAAO,QAAQ,YACf,OAAO,IAAI,SAAS,YACpB,OAAO,IAAI,WAAW,UACrB;AACD,gBAAM,IAAI;AAAA,YACT;AAAA,UACD;AAAA,QACD;AAEA,cAAM;AAAA,UACL,OAAO,EAAE,MAAM,WAAW,QAAQ,YAAY;AAAA,UAC9C,KAAK,EAAE,MAAM,SAAS,QAAQ,UAAU;AAAA,QACzC,IAAI,KAAK,OAAO,KAAK,GAAG;AAExB,YAAI,IAAI,OAAO,aAAa,UAAU,IAAI,MAAM;AAC/C,gBAAM,IAAI;AAAA,YACT,kCAAkC,IAAI,IAAI,6BAA6B,SAAS,IAAI,OAAO;AAAA,UAC5F;AAAA,QACD;AAGA,YAAI,IAAI,SAAS,aAAa,IAAI,WAAW,aAAa;AACzD,iBAAO;AAAA,QACR;AAGA,YAAI,IAAI,SAAS,WAAW,IAAI,WAAW,WAAW;AACrD,iBAAO,KAAK,KAAK;AAAA,QAClB;AAGA,aAAK,+BAA+B,KAAK,SAAS;AAElD,cAAM,aAAa,IAAI,SAAS;AAChC,cAAM,iBAAiB,KAAK,kBAAkB,IAAI,OAAO,SAAS;AAClE,cAAM,eAAe,aAClB,KAAK,KAAK,SACV,KAAK,kBAAkB,IAAI,OAAO,YAAY,CAAC;AAClD,cAAM,gBAAgB,iBAAiB,IAAI,SAAS;AAEpD,YACC,IAAI,SAAS,eACZ,cAAc,gBAAgB,gBAC9B,CAAC,cAAc,iBAAiB,cAChC;AACD,gBAAM,IAAI;AAAA,YACT,sCAAsC,IAAI,MAAM,qCAAqC,IAAI,IAAI,KAAK,WAAW,IAAI,eAAe,iBAAiB,eAAe,aAAa,IAAI,GAAG;AAAA,UACrL;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,SAAS,aAAa;AACrB,YAAI,oBAAoB,WAAW,GAAG;AACrC,iBAAO,YAAY;AAAA,QACpB;AAEA,YAAI,iBAAiB,WAAW,GAAG;AAClC,iBAAO;AAAA,YACN,YAAY,SAAS,MAAM;AAAA,YAC3B,YAAY,SAAS,IAAI;AAAA,UAC1B;AAAA,QACD;AAEA,cAAM,IAAI;AAAA,UACT;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,UAAUF,OAAM;AACf,cAAM,IAAI,MAAM,kBAAkB;AAAA,MACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,aAAaA,OAAM;AAClB,YAAI,CAACA,OAAM;AACV,gBAAM,IAAI,UAAU,kCAAkC;AAAA,QACvD;AAEA,cAAM,4BAA4B,CAAC;AAEnC,iBACK,WAAW,KAAK,UAAUA,KAAI,GAClC,UACA,WAAW,KAAK,UAAU,QAAQ,GACjC;AACD,oCAA0B,KAAK,QAAQ;AAAA,QACxC;AAEA,eAAO,0BAA0B,QAAQ;AAAA,MAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,QAAQA,OAAM,aAAa,YAAY;AACtC,YAAIA,OAAM;AACT,gBAAM,QAAQ,KAAK,SAASA,KAAI;AAChC,iBAAO,KAAK,KAAK;AAAA,YAChB,KAAK,IAAI,MAAM,CAAC,KAAK,eAAe,IAAI,CAAC;AAAA,YACzC,MAAM,CAAC,KAAK,cAAc;AAAA,UAC3B;AAAA,QACD;AACA,eAAO,KAAK;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,IAAI,QAAQ;AACX,aAAK,aAAa;AAElB,eAAO,KAAK;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,WAAW;AACV,cAAM,IAAI,MAAM,kBAAkB;AAAA,MACnC;AAAA,IACD;AAEA,IAAAJ,SAAQ,iBAAiB;AACzB,IAAAA,SAAQ,sBAAsB;AAC9B,IAAAA,SAAQ,YAAY;AACpB,IAAAA,SAAQ,qBAAqB;AAC7B,IAAAA,SAAQ,gBAAgB;AAAA;AAAA;;;AC93BxB;AAAA,oEAAAO,UAAAC,SAAA;AAAA;AAUA,QAAM,aAAa;AAAnB,QACC,WAAW;AADZ,QAEC,YAAY;AAFb,QAGC,UAAU;AAHX,QAIC,EAAE,kBAAkB,IAAI;AAJzB,QAKC,mBAAmB;AALpB,QAMC;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AAiBL,QAAM,gBAAgB,IAAI,oBAAoB;AAS9C,aAAS,SAAS,KAAK;AACtB,UAAI,CAAC,KAAK;AACT,cAAM,IAAI,UAAU,0BAA0B,GAAG,GAAG;AAAA,MACrD;AAEA,UAAI,CAAC,IAAI,QAAQ;AAChB,cAAM,IAAI,UAAU,kCAAkC;AAAA,MACvD;AAEA,UAAI,CAAC,IAAI,UAAU;AAClB,cAAM,IAAI,UAAU,oCAAoC;AAAA,MACzD;AAEA,UAAI,CAAC,IAAI,KAAK;AACb,cAAM,IAAI,UAAU,sCAAsC;AAAA,MAC3D;AAEA,UAAI,CAAC,IAAI,OAAO;AACf,cAAM,IAAI,UAAU,kCAAkC;AAAA,MACvD;AAAA,IACD;AAOA,aAAS,yBAAyB,aAAa;AAC9C,cAAQ,aAAa;AAAA,QACpB,KAAK;AACJ,iBAAO,QAAQ;AAAA,QAEhB,KAAK;AACJ,iBAAO,QAAQ;AAAA,QAEhB;AACC,cAAI,cAAc,MAAM;AACvB,mBAAO,QAAQ,KAAK,cAAc,IAAI,EAAE;AAAA,UACzC;AAEA,iBAAO,QAAQ,KAAK,WAAW,EAAE;AAAA,MACnC;AAAA,IACD;AASA,aAAS,YAAY,QAAQ,UAAU;AACtC,YAAM,SAAS,CAAC;AAChB,UAAI,aAAa;AACjB,UAAI,eAAe;AAEnB,aAAO,aAAa,OAAO,UAAU,eAAe,SAAS,QAAQ;AACpE,YACC,gBAAgB,SAAS,UACxB,aAAa,OAAO,UACpB,OAAO,UAAU,EAAE,MAAM,CAAC,IAAI,SAAS,YAAY,EAAE,MAAM,CAAC,GAC5D;AACD,iBAAO,KAAK,OAAO,YAAY,CAAC;AAAA,QACjC,OAAO;AACN,iBAAO,KAAK,SAAS,cAAc,CAAC;AAAA,QACrC;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AASA,aAAS,sBAAsB,iBAAiB;AAC/C,cAAQ,iBAAiB;AAAA,QACxB,KAAK;AACJ,iBAAO;AAAA,QAER,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QAER,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QAER;AACC,gBAAM,IAAI;AAAA,YACT,IAAI,eAAe;AAAA,UACpB;AAAA,MACF;AAAA,IACD;AASA,aAAS,qBAAqBC,QAAO,QAAQ;AAC5C,aACEA,OAAM,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,KAChCA,OAAM,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,KAChC,OAAO,MAAM,CAAC,KAAKA,OAAM,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,KAAKA,OAAM,MAAM,CAAC;AAAA,IAExE;AAYA,aAAS,2BAA2B,kBAAkB,QAAQ;AAC7D,UAAI,MAAM;AACV,UAAI,OAAO,iBAAiB;AAE5B,aAAO,MAAM,MAAM;AAClB,cAAM,OAAQ,MAAM,QAAQ,IAAK;AAEjC,YAAI,SAAS,iBAAiB,GAAG,GAAG;AACnC,iBAAO;AAAA,QACR,OAAO;AACN,gBAAM,MAAM;AAAA,QACb;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAeA,aAAS,mBACR,cACA,gBAAgB,uBAAO,OAAO,IAAI,GAClC,gBAAgB,uBAAO,OAAO,IAAI,GACjC;AACD,YAAM,eAAe,EAAE,WAAW,MAAM,GAAG,cAAc;AAEzD,iBAAW,CAAC,MAAM,IAAI,KAAK,OAAO,QAAQ,aAAa,GAAG;AACzD,qBAAa,IAAI,IAAI,KAAK;AAAA,MAC3B;AAEA,YAAM,QAAQ,OAAO,KAAK,YAAY,EAAE;AAAA,QACvC,UAAQ,aAAa,IAAI,MAAM;AAAA,MAChC;AAEA,mBAAa,WAAW,KAAK;AAE7B,YAAM,cAAc,aAAa,OAAO,CAAC;AAEzC,iBAAW,QAAQ,OAAO;AACzB,cAAM,WAAW,YAAY,IAAI,IAAI,IAAI;AAEzC,iBAAS,8BAA8B,cAAc,IAAI;AACzD,iBAAS,uBAAuB,CAAC,CAAC,cAAc,IAAI;AACpD,iBAAS,+BAA+B,cAAc,IAAI,GAAG;AAC7D,iBAAS,YAAY,aAAa,IAAI,MAAM;AAAA,MAC7C;AAAA,IACD;AAUA,aAAS,sBAAsB,aAAa,WAAW;AACtD,aAAO,KAAK,SAAS,EAAE,QAAQ,UAAQ;AACtC,cAAM,WAAW,YAAY,IAAI,IAAI,IAAI;AAEzC,YAAI,UAAU;AACb,mBAAS,aAAa;AACtB,mBAAS,iBAAiB;AAAA,QAC3B;AAAA,MACD,CAAC;AAAA,IACF;AAMA,QAAM,SAAS,uBAAO,QAAQ;AAM9B,QAAM,aAAN,cAAyB,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,MAKnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaA,YAAY,cAAc,eAAe;AACxC,YAAIC,OAAM,QAAQ,KAAK,gBAAgB,cAAc;AAGrD,YAAI,OAAO,iBAAiB,UAAU;AACrC,UAAAA,QAAO;AACP,gBAAM;AACN,mBAAS;AAAA,QACV,WAAW,OAAO,iBAAiB,YAAY,iBAAiB,MAAM;AACrE,UAAAA,QAAO,aAAa;AACpB,gBAAM,aAAa;AACnB,mBAAS,aAAa;AACtB,2BAAiB,aAAa;AAC9B,yBAAe,aAAa;AAC5B,wBAAc,aAAa;AAAA,QAC5B;AAEA,iBAAS,GAAG;AACZ,cAAM,IAAI,QAAQ,IAAI,QAAQ;AAK9B,aAAK,MAAM,IAAI,oBAAI,IAAI;AAAA,UACtB,CAAC,UAAU,oBAAI,QAAQ,CAAC;AAAA,UACxB,CAAC,QAAQ,oBAAI,IAAI,CAAC;AAAA,UAClB,CAAC,eAAe,MAAM;AAAA,UACtB,CAAC,qBAAqB,oBAAI,QAAQ,CAAC;AAAA,QACpC,CAAC;AAMD,aAAK,WAAW,IAAI,SAAS;AAe7B,cAAM,aAAaA,MAAK,WAAW,CAAC,MAAM;AAM1C,aAAK,SAAS,cAAc,CAAC,CAAC;AAO9B,aAAK,OAAO,aAAaA,MAAK,MAAM,CAAC,IAAIA;AAMzC,aAAK,MAAM;AAMX,aAAK,iBAAiB,kBAAkB,CAAC;AAMzC,aAAK,eAAe,gBAAgB;AAMpC,aAAK,cAAc,eAAe,UAAU;AAG5C,cAAM,iBAAiB,KAAK,KAAK,MAAM,SAAS,cAAc;AAC9D,cAAM,aACL,kBACA,IAAI,SAAS,UACb,IAAI,SAAS,CAAC,EAAE,UAAU,eAAe,CAAC;AAE3C,YAAI,YAAY;AACf,cAAI,SAAS,CAAC,EAAE,OAAO;AAAA,QACxB;AAEA,aAAK,oBAAoB,YAAY,IAAI,QAAQ,IAAI,QAAQ;AAO7D,aAAK,QAAQ,CAAC;AAKd,aAAK,mBAAmB,CAAC,CAAC;AAE1B,cAAM,oBAAoB,SAAS,6BAA6B;AAChE,YAAIC;AAWJ,eAAQA,SAAQ,kBAAkB,KAAK,KAAK,IAAI,GAAI;AACnD,eAAK,MAAM;AAAA,YACV,KAAK,KAAK,MAAM,KAAK,iBAAiB,GAAG,EAAE,GAAGA,OAAM,KAAK;AAAA,UAC1D;AACA,eAAK,iBAAiB,KAAKA,OAAM,QAAQA,OAAM,CAAC,EAAE,MAAM;AAAA,QACzD;AACA,aAAK,MAAM,KAAK,KAAK,KAAK,MAAM,KAAK,iBAAiB,GAAG,EAAE,CAAC,CAAC;AAG7D,eAAO,OAAO,IAAI;AAClB,eAAO,OAAO,KAAK,KAAK;AAAA,MACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,OAAO,WAAWD,OAAM;AACvB,eAAOA,MAAK,MAAM,SAAS,6BAA6B,CAAC;AAAA,MAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,QAAQE,OAAM,aAAa,YAAY;AACtC,YAAIA,OAAM;AACT,iBAAO,KAAK,KAAK;AAAA,YAChB,KAAK,IAAIA,MAAK,MAAM,CAAC,KAAK,eAAe,IAAI,CAAC;AAAA,YAC9CA,MAAK,MAAM,CAAC,KAAK,cAAc;AAAA,UAChC;AAAA,QACD;AACA,eAAO,KAAK;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,WAAW;AACV,eAAO,KAAK;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,iBAAiB;AAChB,eAAO,KAAK,IAAI;AAAA,MACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,oBAAoBC,QAAO;AAC1B,YAAI,SAAS;AAEb,kBAAU,SAAS,KAAK,KAAK;AAAA,UAC5B,aAAa,KAAK;AAAA,UAClB,MAAMD,OAAM;AACX,gBAAIA,MAAK,MAAM,CAAC,KAAKC,UAASA,SAAQD,MAAK,MAAM,CAAC,GAAG;AACpD,uBAASA;AAAA,YACV,OAAO;AACN,mBAAK,KAAK;AAAA,YACX;AAAA,UACD;AAAA,UACA,MAAMA,OAAM;AACX,gBAAIA,UAAS,QAAQ;AACpB,mBAAK,MAAM;AAAA,YACZ;AAAA,UACD;AAAA,QACD,CAAC;AAED,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,eAAeH,QAAO,QAAQ;AAC7B,YAAI,qBAAqBA,QAAO,MAAM,GAAG;AACxC,iBAAO;AAAA,QACR;AAEA,cAAM,CAAC,qBAAqB,iBAAiB,IAC5CA,OAAM,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,IAC7B,CAACA,QAAO,MAAM,IACd,CAAC,QAAQA,MAAK;AAClB,cAAM,aACL,KAAK,aAAa,mBAAmB,KAAK;AAC3C,cAAM,aACL,KAAK,cAAc,iBAAiB,KAAK;AAC1C,YAAI,eAAe;AAEnB,eAAO,iBAAiB,YAAY;AACnC,gBAAM,YAAY,KAAK,cAAc,cAAc;AAAA,YAClD,iBAAiB;AAAA,UAClB,CAAC;AAED,cAAI,aAAa,MAAM,CAAC,MAAM,UAAU,MAAM,CAAC,GAAG;AACjD,mBAAO;AAAA,UACR;AAEA,yBAAe;AAAA,QAChB;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,gBAAgBI,QAAO;AACtB,YAAI,OAAOA,WAAU,UAAU;AAC9B,gBAAM,IAAI,UAAU,kCAAkC;AAAA,QACvD;AAEA,YAAIA,SAAQ,KAAKA,SAAQ,KAAK,KAAK,QAAQ;AAC1C,gBAAM,IAAI;AAAA,YACT,uCAAuCA,MAAK,gCAAgC,KAAK,KAAK,MAAM;AAAA,UAC7F;AAAA,QACD;AASA,YAAIA,WAAU,KAAK,KAAK,QAAQ;AAC/B,iBAAO;AAAA,YACN,MAAM,KAAK,MAAM;AAAA,YACjB,QAAQ,KAAK,MAAM,GAAG,EAAE,EAAE;AAAA,UAC3B;AAAA,QACD;AAMA,cAAM,aACLA,UAAS,KAAK,iBAAiB,GAAG,EAAE,IACjC,KAAK,iBAAiB,SACtB,2BAA2B,KAAK,kBAAkBA,MAAK;AAE3D,eAAO;AAAA,UACN,MAAM;AAAA,UACN,QAAQA,SAAQ,KAAK,iBAAiB,aAAa,CAAC;AAAA,QACrD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaA,gBAAgB,KAAK;AACpB,YACC,QAAQ,QACR,OAAO,QAAQ,YACf,OAAO,IAAI,SAAS,YACpB,OAAO,IAAI,WAAW,UACrB;AACD,gBAAM,IAAI;AAAA,YACT;AAAA,UACD;AAAA,QACD;AAEA,YAAI,IAAI,QAAQ,GAAG;AAClB,gBAAM,IAAI;AAAA,YACT,kCAAkC,IAAI,IAAI;AAAA,UAC3C;AAAA,QACD;AAEA,YAAI,IAAI,OAAO,KAAK,iBAAiB,QAAQ;AAC5C,gBAAM,IAAI;AAAA,YACT,kCAAkC,IAAI,IAAI,wBAAwB,KAAK,iBAAiB,MAAM;AAAA,UAC/F;AAAA,QACD;AAEA,YAAI,IAAI,SAAS,GAAG;AACnB,gBAAM,IAAI;AAAA,YACT,iCAAiC,IAAI,MAAM;AAAA,UAC5C;AAAA,QACD;AAEA,cAAM,iBAAiB,KAAK,iBAAiB,IAAI,OAAO,CAAC;AACzD,cAAM,eACL,IAAI,SAAS,KAAK,iBAAiB,SAChC,KAAK,KAAK,SACV,KAAK,iBAAiB,IAAI,IAAI;AAClC,cAAM,gBAAgB,iBAAiB,IAAI;AAU3C,YACE,IAAI,SAAS,KAAK,iBAAiB,UACnC,gBAAgB,gBAChB,IAAI,OAAO,KAAK,iBAAiB,UACjC,iBAAiB,cACjB;AACD,gBAAM,IAAI;AAAA,YACT,sCAAsC,IAAI,MAAM,sCAAsC,IAAI,IAAI,OAAO,eAAe,cAAc;AAAA,UACnI;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,SAAS,aAAa;AACrB,YAAI,CAAC,aAAa;AACjB,gBAAM,IAAI,UAAU,kCAAkC;AAAA,QACvD;AAGA,cAAMC,SAAQ,KAAK,MAAM,EAAE,IAAI,QAAQ;AACvC,cAAM,cAAcA,OAAM,IAAI,WAAW;AAEzC,YAAI,aAAa;AAChB,iBAAO;AAAA,QACR;AAGA,cAAM,QAAQ,YAAY,SAAS;AAEnC,iBAASF,QAAO,aAAaA,OAAMA,QAAOA,MAAK,QAAQ;AACtD,gBAAM,QAAQ,KAAK,aAAa,QAAQA,OAAM,KAAK;AAEnD,cAAI,OAAO;AACV,gBAAI,MAAM,SAAS,4BAA4B;AAC9C,cAAAE,OAAM,IAAI,aAAa,MAAM,YAAY,CAAC,CAAC;AAC3C,qBAAO,MAAM,YAAY,CAAC;AAAA,YAC3B;AAEA,YAAAA,OAAM,IAAI,aAAa,KAAK;AAC5B,mBAAO;AAAA,UACR;AAAA,QACD;AAEA,QAAAA,OAAM,IAAI,aAAa,KAAK,aAAa,OAAO,CAAC,CAAC;AAClD,eAAO,KAAK,aAAa,OAAO,CAAC;AAAA,MAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,qBAAqBF,OAAM;AAC1B,eAAO,KAAK,aAAa,qBAAqBA,KAAI;AAAA,MACnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,aAAaA,OAAM;AAClB,YAAI,CAACA,OAAM;AACV,gBAAM,IAAI,UAAU,kCAAkC;AAAA,QACvD;AAEA,cAAM,4BAA4B,CAAC;AAEnC,iBAAS,WAAWA,MAAK,QAAQ,UAAU,WAAW,SAAS,QAAQ;AACtE,oCAA0B,KAAK,QAAQ;AAAA,QACxC;AAEA,eAAO,0BAA0B,QAAQ;AAAA,MAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,kBAAkBA,OAAM;AACvB,YAAI,CAACA,OAAM;AACV,gBAAM,IAAI,UAAU,kCAAkC;AAAA,QACvD;AAEA,cAAME,SAAQ,KAAK,MAAM,EAAE,IAAI,mBAAmB;AAElD,YAAIA,OAAM,IAAIF,KAAI,GAAG;AACpB,iBAAOE,OAAM,IAAIF,KAAI;AAAA,QACtB;AAEA,YAAIA,MAAK,SAAS,cAAc;AAC/B,UAAAE,OAAM,IAAIF,OAAM,KAAK;AACrB,iBAAO;AAAA,QACR;AAEA,cAAM,WAAW,KAAK,aAAa,OAAO,CAAC,EAAE,IAAI,IAAIA,MAAK,IAAI;AAE9D,YAAI,CAAC,YAAY,SAAS,KAAK,SAAS,GAAG;AAC1C,UAAAE,OAAM,IAAIF,OAAM,KAAK;AACrB,iBAAO;AAAA,QACR;AAEA,cAAM,SAAS,SAAS,WAAW;AAAA,UAClC,CAAC,EAAE,WAAW,MAAM,eAAeA;AAAA,QACpC;AACA,QAAAE,OAAM,IAAIF,OAAM,MAAM;AACtB,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,OAAO,aAAa;AACnB,eAAO,YAAY;AAAA,MACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,SAAS,aAAa;AACrB,eAAO,YAAY;AAAA,MACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,mBAAmB,MAAM,UAAU,KAAK,KAAK;AAC5C,cAAM,eAAe,KAAK,SAAS,OAAO;AAC1C,YAAI,eAAe;AAWnB,YACC,aAAa,SAAS,YACtB,aAAa,YAAY,SAAS;AAAA,QAElC,aAAa,YAAY,CAAC,EAAE,UAAU,KAAK,KAC1C;AACD,yBAAe,aAAa,YAAY,CAAC;AAAA,QAC1C;AAEA,iBAAS,QAAQ,cAAc,OAAO,QAAQ,MAAM,OAAO;AAC1D,gBAAM,WAAW,MAAM,UAAU;AAAA,YAChC,cAAY,SAAS,SAAS;AAAA,UAC/B;AAEA,cAAI,UAAU;AACb,qBAAS,aAAa;AACtB,mBAAO;AAAA,UACR;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,uBAAuB;AAEtB,YAAI,cAAc,KAAK,MAAM,EAAE,IAAI,aAAa;AAEhD,YAAI,aAAa;AAChB,iBAAO;AAAA,QACR;AAGA,sBAAc,KAAK,IAAI,SAAS,OAAO,aAAW;AAEjD,cAAI,QAAQ,SAAS,WAAW;AAC/B,mBAAO;AAAA,UACR;AAEA,gBAAM,YAAY,cAAc,eAAe,QAAQ,KAAK;AAE5D,cAAI,CAAC,WAAW;AACf,mBAAO;AAAA,UACR;AAEA,cAAI,CAAC,kBAAkB,KAAK,UAAU,KAAK,GAAG;AAC7C,mBAAO;AAAA,UACR;AAGA,iBACC,QAAQ,SAAS,UACjB,CAAC,CAAC,mCAAmC,KAAK,UAAU,KAAK;AAAA,QAE3D,CAAC;AAED,aAAK,MAAM,EAAE,IAAI,eAAe,WAAW;AAE3C,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,uBAAuB;AAEtB,cAAM,mBAAmB,KAAK,MAAM,EAAE,IAAI,mBAAmB;AAE7D,YAAI,kBAAkB;AACrB,iBAAO;AAAA,QACR;AAEA,cAAM,WAAW,CAAC;AAClB,cAAM,aAAa,CAAC;AAEpB,aAAK,qBAAqB,EAAE,QAAQ,aAAW;AAE9C,gBAAM;AAAA,YACL;AAAA,YACA,OAAAG;AAAA,YACA,eAAe;AAAA,UAChB,IAAI,cAAc,eAAe,QAAQ,KAAK;AAG9C,gBAAM,uBACL,mCAAmC,KAAK,KAAK;AAE9C,cAAI,QAAQ,SAAS,UAAU,CAAC,sBAAsB;AACrD;AAAA,UACD;AAGA,cACC,UAAU,yBACV,QAAQ,IAAI,MAAM,SAAS,QAAQ,IAAI,IAAI,MAC1C;AACD,kBAAM,UAAU,GAAG,KAAK;AAExB,qBAAS,KAAK;AAAA,cACb,QAAQ;AAAA,cACR;AAAA,cACA,KAAK,QAAQ;AAAA,YACd,CAAC;AACD;AAAA,UACD;AAGA,kBAAQ,OAAO;AAAA,YACd,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK,uBAAuB;AAC3B,oBAAM,gBAAgB,MAAM,MAAM,UAAU,MAAM;AAElD,yBAAW;AAAA,gBACV,IAAI,UAAU;AAAA,kBACb,MAAM;AAAA,kBACN,MAAM;AAAA,kBACN,OAAAA;AAAA,kBACA,eAAe;AAAA,gBAChB,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UAGD;AAAA,QACD,CAAC;AAED,cAAM,SAAS,EAAE,UAAU,WAAW;AAEtC,aAAK,MAAM,EAAE,IAAI,qBAAqB,MAAM;AAE5C,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,qBAAqB,iBAAiB;AAOrC,cAAM,gBAAgB,OAAO;AAAA,UAC5B,uBAAO,OAAO,IAAI;AAAA;AAAA,UAClB,yBAAyB,gBAAgB,WAAW;AAAA,UACpD,gBAAgB,eAAe,aAC5B,QAAQ,WACR;AAAA,UACH,gBAAgB;AAAA,QACjB;AAMA,mBAAW,CAAC,MAAMA,MAAK,KAAK,OAAO,QAAQ,aAAa,GAAG;AAC1D,wBAAc,IAAI,IAAI,sBAAsBA,MAAK;AAAA,QAClD;AAEA,cAAM,YAAY,KAAK,MAAM,EAAE,IAAI,MAAM;AAEzC,kBAAU,IAAI,iBAAiB,aAAa;AAAA,MAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,oBAAoB;AACnB,cAAM,WAAW,CAAC;AAClB,cAAM,UAAU,CAAC;AACjB,cAAM,oBAAoB,CAAC;AAC3B,cAAM,gBAAgB,uBAAO,OAAO,IAAI;AAExC,aAAK,qBAAqB,EAAE,QAAQ,aAAW;AAC9C,gBAAM,EAAE,OAAO,OAAAA,OAAM,IAAI,cAAc;AAAA,YACtC,QAAQ;AAAA,UACT;AAEA,kBAAQ,OAAO;AAAA,YACd,KAAK;AACJ,qBAAO;AAAA,gBACN;AAAA,gBACA,cAAc,gBAAgBA,MAAK;AAAA,cACpC;AACA;AAAA,YAED,KAAK;AAAA,YACL,KAAK;AACJ,yBAAW,CAAC,IAAI,SAAS,KAAK,OAAO;AAAA,gBACpC,cAAc,kBAAkBA,MAAK;AAAA,cACtC,GAAG;AACF,oBAAI;AAEJ,oBAAI;AACH,oCAAkB,sBAAsB,SAAS;AAAA,gBAClD,SAAS,KAAK;AACb,2BAAS,KAAK;AAAA,oBACb,QAAQ;AAAA,oBACR,KAAK,QAAQ;AAAA,oBACb,SAAS,IAAI;AAAA,kBACd,CAAC;AACD;AAAA,gBACD;AAEA,oBAAI,cAAc,EAAE,GAAG;AACtB,gCAAc,EAAE,EAAE,SAAS,KAAK,OAAO;AACvC,gCAAc,EAAE,EAAE,QAAQ;AAAA,gBAC3B,OAAO;AACN,gCAAc,EAAE,IAAI;AAAA,oBACnB,UAAU,CAAC,OAAO;AAAA,oBAClB,OAAO;AAAA,kBACR;AAAA,gBACD;AAAA,cACD;AACA;AAAA,YAED,KAAK,UAAU;AACd,oBAAM,cACL,cAAc,oBAAoBA,MAAK;AAExC,kBAAI,YAAY,IAAI;AACnB,wBAAQ,KAAK;AAAA,kBACZ,QAAQ;AAAA,oBACP,OAAO,YAAY;AAAA,kBACpB;AAAA,kBACA,KAAK,QAAQ;AAAA,gBACd,CAAC;AAAA,cACF,OAAO;AACN,yBAAS,KAAK;AAAA,kBACb,QAAQ;AAAA,kBACR,KAAK,QAAQ;AAAA,kBACb,SAAS,YAAY,MAAM;AAAA,gBAC5B,CAAC;AAAA,cACF;AAEA;AAAA,YACD;AAAA,YACA,KAAK,cAAc;AAClB,uBAAS,KAAK;AAAA,gBACb,QAAQ;AAAA,gBACR,KAAK,QAAQ;AAAA,gBACb,SACC;AAAA,cACF,CAAC;AACD;AAAA,YACD;AAAA,UAGD;AAAA,QACD,CAAC;AAGD,cAAM,YAAY,KAAK,MAAM,EAAE,IAAI,MAAM;AAEzC,kBAAU,IAAI,iBAAiB,aAAa;AAC5C,kBAAU,IAAI,qBAAqB,iBAAiB;AAEpD,eAAO;AAAA,UACN;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,WAAW;AACV,cAAM,YAAY,KAAK,MAAM,EAAE,IAAI,MAAM;AACzC,cAAM,gBAAgB,UAAU,IAAI,eAAe;AACnD,cAAM,gBAAgB,UAAU,IAAI,eAAe;AACnD,cAAM,oBAAoB,UAAU,IAAI,mBAAmB;AAC3D,cAAM,cAAc,KAAK,aAAa,OAAO,CAAC;AAE9C,2BAAmB,KAAK,cAAc,eAAe,aAAa;AAElE,YAAI,mBAAmB;AACtB,gCAAsB,aAAa,iBAAiB;AAAA,QACrD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,WAAW;AAEV,YAAI,KAAK,QAAQ;AAChB,iBAAO,KAAK;AAAA,QACb;AAEA,cAAM,QAAS,KAAK,SAAS,CAAC;AAO9B,YAAI,WAAW;AAAA,UACd,UAAUH,OAAM;AACf,kBAAM;AAAA,cACL,IAAI,cAAc;AAAA,gBACjB,QAAQA;AAAA,gBACR,OAAO;AAAA,gBACP,MAAM,CAACA,KAAI;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,UACA,UAAUA,OAAM;AACf,kBAAM;AAAA,cACL,IAAI,cAAc;AAAA,gBACjB,QAAQA;AAAA,gBACR,OAAO;AAAA,gBACP,MAAM,CAACA,KAAI;AAAA,cACZ,CAAC;AAAA,YACF;AAAA,UACD;AAAA,UACA,KAAK,WAAW,MAAM;AACrB,kBAAM;AAAA,cACL,IAAI,eAAe;AAAA,gBAClB,QAAQ;AAAA,gBACR;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAWA,YAAI,KAAK,UAAU;AAClB,qBAAW,IAAI,iBAAiB,QAAQ;AAAA,QACzC;AAOA,kBAAU,SAAS,KAAK,KAAK;AAAA,UAC5B,MAAMA,OAAM,QAAQ;AAEnB,YAAAA,MAAK,SAAS;AAEd,qBAAS,UAAUA,KAAI;AAAA,UACxB;AAAA,UACA,MAAMA,OAAM;AACX,qBAAS,UAAUA,KAAI;AAAA,UACxB;AAAA,UACA,aAAa,KAAK;AAAA,QACnB,CAAC;AAED,eAAO;AAAA,MACR;AAAA,IACD;AAEA,IAAAJ,QAAO,UAAU;AAAA;AAAA;;;ACzpCjB,IAAAQ,uBAAA;AAAA,8DAAAC,UAAAC,SAAA;AAAA;AAEA,QAAM,aAAa;AAEnB,IAAAA,QAAO,UAAU;AAAA,MAChB;AAAA,IACD;AAAA;AAAA;;;ACNA;AAAA,0CAAAC,UAAA;AA2BA,KAAC,SAAS,MAAMA,UAAS;AACrB;AAEA,UAAI,QACA,eACA,aACA,OACAC,OACA;AAEJ,eAAS,SAAS,KAAK;AACnB,YAAI,MAAM,CAAC,GAAG,KAAK;AACnB,aAAK,OAAO,KAAK;AACb,cAAI,IAAI,eAAe,GAAG,GAAG;AACzB,kBAAM,IAAI,GAAG;AACb,gBAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;AACzC,kBAAI,GAAG,IAAI,SAAS,GAAG;AAAA,YAC3B,OAAO;AACH,kBAAI,GAAG,IAAI;AAAA,YACf;AAAA,UACJ;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AAKA,eAAS,WAAW,OAAO,MAAM;AAC7B,YAAI,MAAM,KAAK,GAAG;AAElB,cAAM,MAAM;AACZ,YAAI;AAEJ,eAAO,KAAK;AACR,iBAAO,QAAQ;AACf,oBAAU,IAAI;AACd,cAAI,KAAK,MAAM,OAAO,CAAC,GAAG;AACtB,kBAAM;AAAA,UACV,OAAO;AACH,gBAAI,UAAU;AACd,mBAAO,OAAO;AAAA,UAClB;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AAEA,eAAS;AAAA,QACL,sBAAsB;AAAA,QACtB,mBAAmB;AAAA,QACnB,iBAAiB;AAAA,QACjB,cAAc;AAAA,QACd,yBAAyB;AAAA,QACzB,iBAAiB;AAAA;AAAA,QACjB,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,QAClB,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB,WAAW;AAAA,QACX,kBAAkB;AAAA,QAClB,iBAAiB;AAAA,QACjB,oBAAoB;AAAA;AAAA,QACpB,yBAAyB;AAAA;AAAA,QACzB,uBAAuB;AAAA,QACvB,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,oBAAoB;AAAA,QACpB,kBAAkB;AAAA,QAClB,gBAAgB;AAAA,QAChB,sBAAsB;AAAA,QACtB,0BAA0B;AAAA,QAC1B,wBAAwB;AAAA,QACxB,iBAAiB;AAAA,QACjB,qBAAqB;AAAA,QACrB,cAAc;AAAA,QACd,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,qBAAqB;AAAA,QACrB,oBAAoB;AAAA,QACpB,qBAAqB;AAAA;AAAA,QACrB,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,kBAAkB;AAAA,QAClB,mBAAmB;AAAA,QACnB,wBAAwB;AAAA,QACxB,0BAA0B;AAAA,QAC1B,iBAAiB;AAAA,QACjB,SAAS;AAAA,QACT,kBAAkB;AAAA,QAClB,mBAAmB;AAAA,QACnB,kBAAkB;AAAA,QAClB,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,iBAAiB;AAAA,QACjB,eAAe;AAAA,QACf,kBAAkB;AAAA,QAClB,eAAe;AAAA,QACf,mBAAmB;AAAA,QACnB,SAAS;AAAA,QACT,UAAU;AAAA,QACV,oBAAoB;AAAA,QACpB,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB,oBAAoB;AAAA,QACpB,eAAe;AAAA,QACf,OAAO;AAAA,QACP,iBAAiB;AAAA,QACjB,YAAY;AAAA,QACZ,0BAA0B;AAAA,QAC1B,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,QAClB,qBAAqB;AAAA,QACrB,oBAAoB;AAAA,QACpB,gBAAgB;AAAA,QAChB,eAAe;AAAA,QACf,iBAAiB;AAAA,MACrB;AAEA,oBAAc;AAAA,QACV,sBAAsB,CAAC,QAAQ,OAAO;AAAA,QACtC,mBAAmB,CAAC,QAAQ,OAAO;AAAA,QACnC,iBAAiB,CAAC,UAAU;AAAA,QAC5B,cAAc,CAAC,UAAU;AAAA,QACzB,yBAAyB,CAAC,UAAU,MAAM;AAAA,QAC1C,iBAAiB,CAAC,UAAU;AAAA;AAAA,QAC5B,gBAAgB,CAAC,MAAM;AAAA,QACvB,kBAAkB,CAAC,QAAQ,OAAO;AAAA,QAClC,gBAAgB,CAAC,OAAO;AAAA,QACxB,gBAAgB,CAAC,UAAU,WAAW;AAAA,QACtC,aAAa,CAAC,SAAS,MAAM;AAAA,QAC7B,iBAAiB,CAAC,YAAY;AAAA,QAC9B,WAAW,CAAC,MAAM;AAAA,QAClB,kBAAkB,CAAC,MAAM,cAAc,MAAM;AAAA,QAC7C,iBAAiB,CAAC,MAAM,cAAc,MAAM;AAAA,QAC5C,oBAAoB,CAAC,QAAQ,OAAO;AAAA;AAAA,QACpC,yBAAyB,CAAC,UAAU,UAAU,MAAM;AAAA;AAAA,QACpD,uBAAuB,CAAC,QAAQ,cAAc,WAAW;AAAA,QACzD,mBAAmB,CAAC,OAAO;AAAA,QAC3B,mBAAmB,CAAC;AAAA,QACpB,oBAAoB,CAAC;AAAA,QACrB,kBAAkB,CAAC,QAAQ,MAAM;AAAA,QACjC,gBAAgB,CAAC;AAAA,QACjB,sBAAsB,CAAC,QAAQ;AAAA,QAC/B,0BAA0B,CAAC,aAAa;AAAA,QACxC,wBAAwB,CAAC,eAAe,cAAc,QAAQ;AAAA,QAC9D,iBAAiB,CAAC,YAAY,OAAO;AAAA,QACrC,qBAAqB,CAAC,YAAY;AAAA,QAClC,cAAc,CAAC,QAAQ,QAAQ,UAAU,MAAM;AAAA,QAC/C,gBAAgB,CAAC,QAAQ,SAAS,MAAM;AAAA,QACxC,gBAAgB,CAAC,QAAQ,SAAS,MAAM;AAAA,QACxC,qBAAqB,CAAC,MAAM,UAAU,MAAM;AAAA,QAC5C,oBAAoB,CAAC,MAAM,UAAU,MAAM;AAAA,QAC3C,qBAAqB,CAAC,UAAU,UAAU,MAAM;AAAA;AAAA,QAChD,YAAY,CAAC;AAAA,QACb,aAAa,CAAC,QAAQ,cAAc,WAAW;AAAA,QAC/C,kBAAkB,CAAC,QAAQ;AAAA,QAC3B,mBAAmB,CAAC,cAAc,QAAQ;AAAA,QAC1C,wBAAwB,CAAC,OAAO;AAAA,QAChC,0BAA0B,CAAC,OAAO;AAAA,QAClC,iBAAiB,CAAC,YAAY,OAAO;AAAA,QACrC,SAAS,CAAC;AAAA,QACV,kBAAkB,CAAC,SAAS,MAAM;AAAA,QAClC,mBAAmB,CAAC,QAAQ,OAAO;AAAA,QACnC,kBAAkB,CAAC,UAAU,UAAU;AAAA,QACvC,cAAc,CAAC,QAAQ,UAAU;AAAA,QACjC,kBAAkB,CAAC,OAAO,OAAO;AAAA,QACjC,iBAAiB,CAAC;AAAA,QAClB,eAAe,CAAC,UAAU,WAAW;AAAA,QACrC,kBAAkB,CAAC,YAAY;AAAA,QAC/B,eAAe,CAAC,YAAY;AAAA,QAC5B,mBAAmB,CAAC;AAAA,QACpB,SAAS,CAAC,MAAM;AAAA,QAChB,UAAU,CAAC,OAAO,OAAO;AAAA,QACzB,oBAAoB,CAAC,OAAO,OAAO;AAAA,QACnC,aAAa,CAAE,UAAW;AAAA,QAC1B,iBAAiB,CAAC,UAAU;AAAA,QAC5B,oBAAoB,CAAC,aAAa;AAAA,QAClC,eAAe,CAAC,UAAU;AAAA,QAC1B,OAAO,CAAC;AAAA,QACR,iBAAiB,CAAC,gBAAgB,OAAO;AAAA,QACzC,YAAY,CAAC,QAAQ,YAAY;AAAA,QACjC,0BAA0B,CAAC,OAAO,OAAO;AAAA,QACzC,iBAAiB,CAAC;AAAA,QAClB,iBAAiB,CAAC,UAAU,aAAa;AAAA,QACzC,gBAAgB,CAAC;AAAA,QACjB,gBAAgB,CAAC,UAAU;AAAA,QAC3B,cAAc,CAAC,SAAS,WAAW,WAAW;AAAA,QAC9C,iBAAiB,CAAC,UAAU;AAAA,QAC5B,kBAAkB,CAAC,UAAU;AAAA,QAC7B,qBAAqB,CAAC,cAAc;AAAA,QACpC,oBAAoB,CAAC,MAAM,MAAM;AAAA,QACjC,gBAAgB,CAAC,QAAQ,MAAM;AAAA,QAC/B,eAAe,CAAC,UAAU,MAAM;AAAA,QAChC,iBAAiB,CAAC,UAAU;AAAA,MAChC;AAGA,cAAQ,CAAC;AACT,MAAAA,QAAO,CAAC;AACR,eAAS,CAAC;AAEV,sBAAgB;AAAA,QACZ,OAAO;AAAA,QACP,MAAMA;AAAA,QACN,QAAQ;AAAA,MACZ;AAEA,eAAS,UAAU,QAAQ,KAAK;AAC5B,aAAK,SAAS;AACd,aAAK,MAAM;AAAA,MACf;AAEA,gBAAU,UAAU,UAAU,SAASC,SAAQC,OAAM;AACjD,aAAK,OAAO,KAAK,GAAG,IAAIA;AAAA,MAC5B;AAEA,gBAAU,UAAU,SAAS,SAAS,SAAS;AAC3C,YAAI,MAAM,QAAQ,KAAK,MAAM,GAAG;AAC5B,eAAK,OAAO,OAAO,KAAK,KAAK,CAAC;AAC9B,iBAAO;AAAA,QACX,OAAO;AACH,eAAK,QAAQ,IAAI;AACjB,iBAAO;AAAA,QACX;AAAA,MACJ;AAEA,eAAS,QAAQA,OAAMC,OAAMC,OAAM,KAAK;AACpC,aAAK,OAAOF;AACZ,aAAK,OAAOC;AACZ,aAAK,OAAOC;AACZ,aAAK,MAAM;AAAA,MACf;AAEA,eAAS,aAAa;AAAA,MAAE;AAIxB,iBAAW,UAAU,OAAO,SAASD,QAAO;AACxC,YAAI,GAAG,IAAI,GAAG,IAAI,QAAQ;AAE1B,iBAAS,UAAUE,SAAQF,OAAM;AAC7B,cAAI,MAAM,QAAQA,KAAI,GAAG;AACrB,iBAAK,IAAI,GAAG,KAAKA,MAAK,QAAQ,IAAI,IAAI,EAAE,GAAG;AACvC,cAAAE,QAAO,KAAKF,MAAK,CAAC,CAAC;AAAA,YACvB;AAAA,UACJ,OAAO;AACH,YAAAE,QAAO,KAAKF,KAAI;AAAA,UACpB;AAAA,QACJ;AAGA,YAAI,CAAC,KAAK,UAAU,MAAM;AACtB,iBAAO;AAAA,QACX;AAGA,iBAAS,CAAC;AACV,aAAK,IAAI,GAAG,KAAK,KAAK,YAAY,QAAQ,IAAI,IAAI,EAAE,GAAG;AACnD,oBAAU,KAAK,YAAY,CAAC;AAC5B,oBAAU,QAAQ,QAAQ,IAAI;AAAA,QAClC;AACA,kBAAU,QAAQ,KAAK,UAAU,IAAI;AACrC,eAAO;AAAA,MACX;AAIA,iBAAW,UAAU,OAAO,WAAY;AACpC,YAAID,QAAO,KAAK,QAAQ;AACxB,eAAOA,MAAK,QAAQ,KAAK,UAAU;AAAA,MACvC;AAIA,iBAAW,UAAU,UAAU,SAAS,UAAU;AAC9C,YAAI,GAAG,IAAI;AAGX,iBAAS,CAAC;AACV,aAAK,IAAI,GAAG,KAAK,KAAK,YAAY,QAAQ,IAAI,IAAI,EAAE,GAAG;AACnD,iBAAO,KAAK,KAAK,YAAY,CAAC,EAAE,IAAI;AAAA,QACxC;AAEA,eAAO;AAAA,MACX;AAIA,iBAAW,UAAU,UAAU,SAAS,UAAU;AAC9C,eAAO,KAAK,UAAU;AAAA,MAC1B;AAEA,iBAAW,UAAU,YAAY,SAAS,UAAU,UAAU,SAAS;AACnE,YAAII,WAAU;AAEd,iBAAS;AAET,QAAAA,YAAY,KAAK;AACjB,aAAK,YAAY;AACjB,aAAK,UAAU;AACf,YAAI,UAAU;AACV,mBAAS,SAAS,KAAK,MAAM,QAAQ,MAAM,KAAK,YAAY,KAAK,YAAY,SAAS,CAAC,EAAE,IAAI;AAAA,QACjG;AACA,aAAK,YAAYA;AAEjB,eAAO;AAAA,MACX;AAIA,iBAAW,UAAU,SAAS,SAAS,OAAO,MAAM;AAChD,aAAK,UAAU;AAAA,MACnB;AAIA,iBAAW,UAAU,OAAO,WAAY;AACpC,aAAK,OAAON,KAAI;AAAA,MACpB;AAIA,iBAAW,UAAU,OAAO,IAAI,WAAY;AACxC,aAAK,OAAO,KAAK;AAAA,MACrB;AAIA,iBAAW,UAAU,SAAS,WAAY;AACtC,aAAK,OAAO,MAAM;AAAA,MACtB;AAEA,iBAAW,UAAU,eAAe,SAASO,OAAM,SAAS;AACxD,aAAK,UAAU;AACf,aAAK,OAAOA;AACZ,aAAK,aAAa,CAAC;AACnB,aAAK,cAAc,CAAC;AACpB,aAAK,YAAY;AACjB,aAAK,UAAU;AACf,aAAK,aAAa;AAClB,YAAI,QAAQ,aAAa,aAAa;AAClC,eAAK,aAAa,OAAO;AAAA,QAC7B,WAAW,OAAO,QAAQ,aAAa,YAAY;AAC/C,eAAK,aAAa,QAAQ;AAAA,QAC9B;AAEA,aAAK,SAAS;AACd,YAAI,QAAQ,MAAM;AACd,eAAK,SAAS,OAAO,OAAO,OAAO,OAAO,KAAK,MAAM,GAAG,QAAQ,IAAI;AAAA,QACxE;AAAA,MACJ;AAEA,eAAS,OAAOL,OAAM;AAClB,YAAIA,SAAQ,MAAM;AACd,iBAAO;AAAA,QACX;AACA,eAAO,OAAOA,UAAS,YAAY,OAAOA,MAAK,SAAS;AAAA,MAC5D;AAEA,eAAS,WAAW,UAAU,KAAK;AAC/B,gBAAQ,aAAa,OAAO,oBAAoB,aAAa,OAAO,kBAAkB,iBAAiB;AAAA,MAC3G;AAEA,eAAS,2BAA2B,WAAW,WAAW;AACtD,iBAAS,IAAI,UAAU,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG;AAC5C,cAAI,UAAU,CAAC,EAAE,SAAS,WAAW;AACjC,mBAAO;AAAA,UACX;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AAEA,iBAAW,UAAU,WAAW,SAASM,UAASD,OAAM,SAAS;AAC7D,YAAI,UACA,WACA,SACAL,OACA,UACA,KACA,KACA,SACA,UACA,YACA,WACA;AAEJ,aAAK,aAAaK,OAAM,OAAO;AAE/B,mBAAW,CAAC;AAGZ,mBAAW,KAAK;AAChB,oBAAY,KAAK;AAGjB,iBAAS,KAAK,IAAI,QAAQA,OAAM,MAAM,MAAM,IAAI,CAAC;AACjD,kBAAU,KAAK,IAAI,QAAQ,MAAM,MAAM,MAAM,IAAI,CAAC;AAElD,eAAO,SAAS,QAAQ;AACpB,oBAAU,SAAS,IAAI;AAEvB,cAAI,YAAY,UAAU;AACtB,sBAAU,UAAU,IAAI;AAExB,kBAAM,KAAK,UAAU,QAAQ,OAAO,OAAO;AAE3C,gBAAI,KAAK,YAAY,SAAS,QAAQ,OAAO;AACzC;AAAA,YACJ;AACA;AAAA,UACJ;AAEA,cAAI,QAAQ,MAAM;AAEd,kBAAM,KAAK,UAAU,QAAQ,OAAO,OAAO;AAE3C,gBAAI,KAAK,YAAY,SAAS,QAAQ,OAAO;AACzC;AAAA,YACJ;AAEA,qBAAS,KAAK,QAAQ;AACtB,sBAAU,KAAK,OAAO;AAEtB,gBAAI,KAAK,YAAYP,SAAQ,QAAQA,OAAM;AACvC;AAAA,YACJ;AAEA,YAAAE,QAAO,QAAQ;AACf,uBAAWA,MAAK,QAAQ,QAAQ;AAChC,yBAAa,KAAK,OAAO,QAAQ;AACjC,gBAAI,CAAC,YAAY;AACb,kBAAI,KAAK,YAAY;AACjB,6BAAa,KAAK,WAAWA,KAAI;AAAA,cACrC,OAAO;AACH,sBAAM,IAAI,MAAM,uBAAuB,WAAW,GAAG;AAAA,cACzD;AAAA,YACJ;AAEA,sBAAU,WAAW;AACrB,oBAAQ,WAAW,MAAM,GAAG;AACxB,oBAAM,WAAW,OAAO;AACxB,0BAAYA,MAAK,GAAG;AACpB,kBAAI,CAAC,WAAW;AACZ;AAAA,cACJ;AAEA,kBAAI,MAAM,QAAQ,SAAS,GAAG;AAC1B,2BAAW,UAAU;AACrB,wBAAQ,YAAY,MAAM,GAAG;AACzB,sBAAI,CAAC,UAAU,QAAQ,GAAG;AACtB;AAAA,kBACJ;AAEA,sBAAI,2BAA2B,WAAW,UAAU,QAAQ,CAAC,GAAG;AAC9D;AAAA,kBACF;AAEA,sBAAI,WAAW,UAAU,WAAW,OAAO,CAAC,GAAG;AAC3C,8BAAU,IAAI,QAAQ,UAAU,QAAQ,GAAG,CAAC,KAAK,QAAQ,GAAG,YAAY,IAAI;AAAA,kBAChF,WAAW,OAAO,UAAU,QAAQ,CAAC,GAAG;AACpC,8BAAU,IAAI,QAAQ,UAAU,QAAQ,GAAG,CAAC,KAAK,QAAQ,GAAG,MAAM,IAAI;AAAA,kBAC1E,OAAO;AACH;AAAA,kBACJ;AACA,2BAAS,KAAK,OAAO;AAAA,gBACzB;AAAA,cACJ,WAAW,OAAO,SAAS,GAAG;AAC1B,oBAAI,2BAA2B,WAAW,SAAS,GAAG;AACpD;AAAA,gBACF;AAEA,yBAAS,KAAK,IAAI,QAAQ,WAAW,KAAK,MAAM,IAAI,CAAC;AAAA,cACzD;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAEA,iBAAW,UAAU,UAAU,SAASD,SAAQM,OAAM,SAAS;AAC3D,YAAI,UACA,WACAL,OACA,UACA,QACA,SACA,SACA,UACA,YACA,WACA,UACA,OACA;AAEJ,iBAAS,WAAWO,UAAS;AACzB,cAAI,GACAC,MACA,UACA;AAEJ,cAAID,SAAQ,IAAI,OAAO,GAAG;AAEtB,YAAAC,OAAMD,SAAQ,IAAI;AAClB,qBAASA,SAAQ,IAAI;AAGrB,gBAAI,SAAS;AACb,mBAAO,KAAK;AACR,yBAAW,SAAS,CAAC;AACrB,kBAAI,SAAS,OAAO,SAAS,IAAI,WAAW,QAAQ;AAChD,oBAAK,SAAS,IAAI,MAAMC,MAAK;AACzB;AAAA,gBACJ;AACA,kBAAE,SAAS,IAAI;AAAA,cACnB;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAEA,aAAK,aAAaH,OAAM,OAAO;AAE/B,mBAAW,CAAC;AAGZ,mBAAW,KAAK;AAChB,oBAAY,KAAK;AAGjB,gBAAQ;AAAA,UACJ,MAAMA;AAAA,QACV;AACA,kBAAU,IAAI,QAAQA,OAAM,MAAM,MAAM,IAAI,UAAU,OAAO,MAAM,CAAC;AACpE,iBAAS,KAAK,OAAO;AACrB,kBAAU,KAAK,OAAO;AAEtB,eAAO,SAAS,QAAQ;AACpB,oBAAU,SAAS,IAAI;AAEvB,cAAI,YAAY,UAAU;AACtB,sBAAU,UAAU,IAAI;AAExB,qBAAS,KAAK,UAAU,QAAQ,OAAO,OAAO;AAI9C,gBAAI,WAAW,UAAa,WAAW,SAAS,WAAWP,SAAQ,WAAW,QAAQ;AAElF,sBAAQ,IAAI,QAAQ,MAAM;AAAA,YAC9B;AAEA,gBAAI,KAAK,YAAY,UAAU,WAAW,QAAQ;AAC9C,yBAAW,OAAO;AAAA,YACtB;AAEA,gBAAI,KAAK,YAAY,SAAS,WAAW,OAAO;AAC5C,qBAAO,MAAM;AAAA,YACjB;AACA;AAAA,UACJ;AAEA,mBAAS,KAAK,UAAU,QAAQ,OAAO,OAAO;AAI9C,cAAI,WAAW,UAAa,WAAW,SAAS,WAAWA,SAAQ,WAAW,QAAQ;AAElF,oBAAQ,IAAI,QAAQ,MAAM;AAC1B,oBAAQ,OAAO;AAAA,UACnB;AAEA,cAAI,KAAK,YAAY,UAAU,WAAW,QAAQ;AAC9C,uBAAW,OAAO;AAClB,oBAAQ,OAAO;AAAA,UACnB;AAEA,cAAI,KAAK,YAAY,SAAS,WAAW,OAAO;AAC5C,mBAAO,MAAM;AAAA,UACjB;AAGA,UAAAE,QAAO,QAAQ;AACf,cAAI,CAACA,OAAM;AACP;AAAA,UACJ;AAEA,mBAAS,KAAK,QAAQ;AACtB,oBAAU,KAAK,OAAO;AAEtB,cAAI,KAAK,YAAYF,SAAQ,WAAWA,OAAM;AAC1C;AAAA,UACJ;AAEA,qBAAWE,MAAK,QAAQ,QAAQ;AAChC,uBAAa,KAAK,OAAO,QAAQ;AACjC,cAAI,CAAC,YAAY;AACb,gBAAI,KAAK,YAAY;AACjB,2BAAa,KAAK,WAAWA,KAAI;AAAA,YACrC,OAAO;AACH,oBAAM,IAAI,MAAM,uBAAuB,WAAW,GAAG;AAAA,YACzD;AAAA,UACJ;AAEA,oBAAU,WAAW;AACrB,kBAAQ,WAAW,MAAM,GAAG;AACxB,kBAAM,WAAW,OAAO;AACxB,wBAAYA,MAAK,GAAG;AACpB,gBAAI,CAAC,WAAW;AACZ;AAAA,YACJ;AAEA,gBAAI,MAAM,QAAQ,SAAS,GAAG;AAC1B,yBAAW,UAAU;AACrB,sBAAQ,YAAY,MAAM,GAAG;AACzB,oBAAI,CAAC,UAAU,QAAQ,GAAG;AACtB;AAAA,gBACJ;AACA,oBAAI,WAAW,UAAU,WAAW,OAAO,CAAC,GAAG;AAC3C,4BAAU,IAAI,QAAQ,UAAU,QAAQ,GAAG,CAAC,KAAK,QAAQ,GAAG,YAAY,IAAI,UAAU,WAAW,QAAQ,CAAC;AAAA,gBAC9G,WAAW,OAAO,UAAU,QAAQ,CAAC,GAAG;AACpC,4BAAU,IAAI,QAAQ,UAAU,QAAQ,GAAG,CAAC,KAAK,QAAQ,GAAG,MAAM,IAAI,UAAU,WAAW,QAAQ,CAAC;AAAA,gBACxG,OAAO;AACH;AAAA,gBACJ;AACA,yBAAS,KAAK,OAAO;AAAA,cACzB;AAAA,YACJ,WAAW,OAAO,SAAS,GAAG;AAC1B,uBAAS,KAAK,IAAI,QAAQ,WAAW,KAAK,MAAM,IAAI,UAAUA,OAAM,GAAG,CAAC,CAAC;AAAA,YAC7E;AAAA,UACJ;AAAA,QACJ;AAEA,eAAO,MAAM;AAAA,MACjB;AAEA,eAAS,SAASK,OAAM,SAAS;AAC7B,YAAI,aAAa,IAAI,WAAW;AAChC,eAAO,WAAW,SAASA,OAAM,OAAO;AAAA,MAC5C;AAEA,eAASN,SAAQM,OAAM,SAAS;AAC5B,YAAI,aAAa,IAAI,WAAW;AAChC,eAAO,WAAW,QAAQA,OAAM,OAAO;AAAA,MAC3C;AAEA,eAAS,mBAAmB,SAAS,QAAQ;AACzC,YAAI;AAEJ,iBAAS,WAAW,QAAQ,SAASI,QAAO,OAAO;AAC/C,iBAAO,MAAM,MAAM,CAAC,IAAI,QAAQ,MAAM,CAAC;AAAA,QAC3C,CAAC;AAED,gBAAQ,gBAAgB,CAAC,QAAQ,MAAM,CAAC,GAAG,QAAQ,MAAM,CAAC,CAAC;AAE3D,YAAI,WAAW,OAAO,QAAQ;AAC1B,kBAAQ,cAAc,CAAC,IAAI,OAAO,MAAM,EAAE,MAAM,CAAC;AAAA,QACrD;AAEA,kBAAU;AACV,YAAI,UAAU,GAAG;AACb,kBAAQ,cAAc,CAAC,IAAI,OAAO,MAAM,EAAE,MAAM,CAAC;AAAA,QACrD;AAEA,eAAO;AAAA,MACX;AAEA,eAAS,eAAe,MAAM,kBAAkB,QAAQ;AAEpD,YAAI,WAAW,CAAC,GAAG,SAAS,KAAK,GAAG;AAEpC,YAAI,CAAC,KAAK,OAAO;AACb,gBAAM,IAAI,MAAM,wCAAwC;AAAA,QAC5D;AAGA,YAAI,CAAC,OAAO,QAAQ;AAChB,cAAI,iBAAiB,QAAQ;AACzB,iBAAK,IAAI,GAAG,MAAM,iBAAiB,QAAQ,IAAI,KAAK,KAAK,GAAG;AACxD,wBAAU,SAAS,iBAAiB,CAAC,CAAC;AACtC,sBAAQ,gBAAgB,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;AACzC,uBAAS,KAAK,OAAO;AAAA,YACzB;AACA,iBAAK,kBAAkB;AAAA,UAC3B;AACA,iBAAO;AAAA,QACX;AAEA,aAAK,IAAI,GAAG,MAAM,iBAAiB,QAAQ,IAAI,KAAK,KAAK,GAAG;AACxD,mBAAS,KAAK,mBAAmB,SAAS,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC;AAAA,QAC3E;AAGA,iBAAS;AACT,iBAAS,MAAM;AAAA,UACX,OAAO,SAAUT,OAAM;AACnB,gBAAIU;AAEJ,mBAAO,SAAS,SAAS,QAAQ;AAC7B,cAAAA,WAAU,SAAS,MAAM;AACzB,kBAAIA,SAAQ,cAAc,CAAC,IAAIV,MAAK,MAAM,CAAC,GAAG;AAC1C;AAAA,cACJ;AAEA,kBAAIU,SAAQ,cAAc,CAAC,MAAMV,MAAK,MAAM,CAAC,GAAG;AAC5C,oBAAI,CAACA,MAAK,iBAAiB;AACvB,kBAAAA,MAAK,kBAAkB,CAAC;AAAA,gBAC5B;AACA,gBAAAA,MAAK,gBAAgB,KAAKU,QAAO;AACjC,yBAAS,OAAO,QAAQ,CAAC;AAAA,cAC7B,OAAO;AACH,0BAAU;AAAA,cACd;AAAA,YACJ;AAGA,gBAAI,WAAW,SAAS,QAAQ;AAC5B,qBAAO,cAAc;AAAA,YACzB;AAEA,gBAAI,SAAS,MAAM,EAAE,cAAc,CAAC,IAAIV,MAAK,MAAM,CAAC,GAAG;AACnD,qBAAO,cAAc;AAAA,YACzB;AAAA,UACJ;AAAA,QACJ,CAAC;AAED,iBAAS;AACT,iBAAS,MAAM;AAAA,UACX,OAAO,SAAUA,OAAM;AACnB,gBAAIU;AAEJ,mBAAO,SAAS,SAAS,QAAQ;AAC7B,cAAAA,WAAU,SAAS,MAAM;AACzB,kBAAIV,MAAK,MAAM,CAAC,IAAIU,SAAQ,cAAc,CAAC,GAAG;AAC1C;AAAA,cACJ;AAEA,kBAAIV,MAAK,MAAM,CAAC,MAAMU,SAAQ,cAAc,CAAC,GAAG;AAC5C,oBAAI,CAACV,MAAK,kBAAkB;AACxB,kBAAAA,MAAK,mBAAmB,CAAC;AAAA,gBAC7B;AACA,gBAAAA,MAAK,iBAAiB,KAAKU,QAAO;AAClC,yBAAS,OAAO,QAAQ,CAAC;AAAA,cAC7B,OAAO;AACH,0BAAU;AAAA,cACd;AAAA,YACJ;AAGA,gBAAI,WAAW,SAAS,QAAQ;AAC5B,qBAAO,cAAc;AAAA,YACzB;AAEA,gBAAI,SAAS,MAAM,EAAE,cAAc,CAAC,IAAIV,MAAK,MAAM,CAAC,GAAG;AACnD,qBAAO,cAAc;AAAA,YACzB;AAAA,UACJ;AAAA,QACJ,CAAC;AAED,eAAO;AAAA,MACX;AAEA,MAAAH,SAAQ,SAAS;AACjB,MAAAA,SAAQ,WAAW;AACnB,MAAAA,SAAQ,UAAUE;AAClB,MAAAF,SAAQ,iBAAiB;AACzB,MAAAA,SAAQ,cAAc;AACtB,MAAAA,SAAQ,gBAAgB;AACxB,MAAAA,SAAQ,aAAa;AACrB,MAAAA,SAAQ,mBAAmB,WAAY;AAAE,eAAO,MAAM,CAAC,CAAC;AAAA,MAAG;AAE3D,aAAOA;AAAA,IACX,GAAEA,QAAO;AAAA;AAAA;;;ACnyBT,IAAAc,mBAAA;AAAA,wCAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,UAAY;AAAA,MACZ,MAAQ;AAAA,MACR,SAAW;AAAA,MACX,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,MACA,aAAe;AAAA,QACb;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,UACT,KAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ,MAAQ;AAAA,QACR,KAAO;AAAA,MACT;AAAA,MACA,cAAgB;AAAA,QACd,YAAc;AAAA,MAChB;AAAA,MACA,iBAAmB;AAAA,QACjB,aAAa;AAAA,QACb,gBAAgB;AAAA,QAChB,uBAAuB;AAAA,QACvB,kBAAkB;AAAA,QAClB,MAAQ;AAAA,QACR,SAAW;AAAA,QACX,MAAQ;AAAA,QACR,aAAa;AAAA,QACb,eAAe;AAAA,QACf,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,oBAAoB;AAAA,QACpB,OAAS;AAAA,QACT,UAAY;AAAA,MACd;AAAA,MACA,SAAW;AAAA,MACX,SAAW;AAAA,QACT,MAAQ;AAAA,QACR,aAAa;AAAA,QACb,MAAQ;AAAA,MACV;AAAA,MACA,OAAS;AAAA,QACP,SAAW;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACnDA;AAAA,wCAAAC,UAAA;AAuBA,KAAC,WAAY;AACT;AAEA,UAAI,aAAa;AAEjB,eAAS,OAAOC,OAAM;AAClB,YAAIA,SAAQ,MAAM;AACd,iBAAO;AAAA,QACX;AACA,eAAO,OAAOA,UAAS,YAAY,OAAOA,MAAK,SAAS;AAAA,MAC5D;AAEA,eAAS,WAAW,UAAU,KAAK;AAC/B,gBAAQ,aAAa,WAAW,OAAO,oBAAoB,aAAa,WAAW,OAAO,kBAAkB,QAAQ;AAAA,MACxH;AAEA,eAAS,QAAQ,SAAS,SAAS;AAC/B,kBAAU,WAAW,CAAC;AAEtB,aAAK,YAAY,WAAY;AAC7B,aAAK,qBAAqB,QAAQ,mBAC5B,OAAO,OAAO,CAAC,GAAG,WAAW,aAAa,QAAQ,gBAAgB,IAClE,WAAW;AACjB,YAAI,QAAQ,aAAa,aAAa;AAClC,eAAK,aAAa,OAAO;AAAA,QAC7B,WAAW,OAAO,QAAQ,aAAa,YAAY;AAC/C,eAAK,aAAa,QAAQ;AAAA,QAC9B;AAAA,MACJ;AAMA,cAAQ,UAAU,gBAAgB,SAAUA,OAAM;AAC9C,YAAI,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI;AAElC,YAAIA,SAAQ,MAAM;AACd;AAAA,QACJ;AAEA,eAAOA,MAAK,QAAQ,WAAW,OAAO;AAEtC,mBAAW,KAAK,mBAAmB,IAAI;AACvC,YAAI,CAAC,UAAU;AACX,cAAI,KAAK,YAAY;AACjB,uBAAW,KAAK,WAAWA,KAAI;AAAA,UACnC,OAAO;AACH,kBAAM,IAAI,MAAM,uBAAuB,OAAO,GAAG;AAAA,UACrD;AAAA,QACJ;AAEA,aAAK,IAAI,GAAG,KAAK,SAAS,QAAQ,IAAI,IAAI,EAAE,GAAG;AAC3C,kBAAQA,MAAK,SAAS,CAAC,CAAC;AACxB,cAAI,OAAO;AACP,gBAAI,MAAM,QAAQ,KAAK,GAAG;AACtB,mBAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,GAAG;AACxC,oBAAI,MAAM,CAAC,GAAG;AACV,sBAAI,OAAO,MAAM,CAAC,CAAC,KAAK,WAAW,MAAM,SAAS,CAAC,CAAC,GAAG;AACnD,yBAAK,MAAM,MAAM,CAAC,CAAC;AAAA,kBACvB;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ,WAAW,OAAO,KAAK,GAAG;AACtB,mBAAK,MAAM,KAAK;AAAA,YACpB;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAGA,cAAQ,UAAU,QAAQ,SAAUA,OAAM;AACtC,YAAI;AAEJ,YAAIA,SAAQ,MAAM;AACd;AAAA,QACJ;AAEA,eAAOA,MAAK,QAAQ,WAAW,OAAO;AACtC,YAAI,KAAK,UAAU,IAAI,GAAG;AACtB,eAAK,UAAU,IAAI,EAAE,KAAK,MAAMA,KAAI;AACpC;AAAA,QACJ;AACA,aAAK,cAAcA,KAAI;AAAA,MAC3B;AAEA,MAAAD,SAAQ,UAAU,mBAA0B;AAC5C,MAAAA,SAAQ,UAAU;AAClB,MAAAA,SAAQ,QAAQ,SAAUC,OAAM,SAAS,SAAS;AAC9C,YAAI,IAAI,IAAI,QAAQ,SAAS,OAAO;AACpC,UAAE,MAAMA,KAAI;AAAA,MAChB;AAAA,IACJ,GAAE;AAAA;AAAA;;;ACnHF;AAAA,oDAAAC,UAAA;AAAA;AAEA,QAAI,aAAa;AACjB,QAAI,YAAY;AAchB,aAASC,QAAO,WAAW,UAAU,qBAAqB;AACzD,UAAI,CAAC,WAAW;AACf,cAAM,IAAI,MAAM,OAAO;AAAA,MACxB;AAAA,IACD;AA4BA,QAAM,OAAO;AACb,QAAM,QAAQ;AACd,QAAM,KAAK,OAAO;AAOlB,QAAM,YAAN,MAAM,WAAU;AAAA,MACf,YACC,OACA,OACA,MACA,WACA,qBACA,SACA,MACC;AAKD,aAAK,aAAa;AAMlB,aAAK,OAAO;AAOZ,aAAK,UAAU;AAMf,aAAK,WAAW;AAOhB,aAAK,OAAO;AACZ,YAAI,KAAK,QAAQ,GAAG;AAKnB,eAAK,YAAY;AAMjB,eAAK,UAAU;AAMf,eAAK,OAAO;AAAA,QACb;AACA,aAAK,wBAAwB;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,WAAW;AACV,eACC,CAAC,KAAK,WAAW,CAAC,CAAC,KAAK,YAAY,KAAK,SAAS,MAAM,SAAS;AAAA,MAEnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,UAAU;AACT,eAAO,CAAC,EAAE,KAAK,OAAO,WAAU;AAAA,MACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,SAAS;AACR,eAAO,CAAC,EAAE,KAAK,OAAO,WAAU;AAAA,MACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,aAAa;AACZ,eAAO,KAAK,SAAS,WAAU;AAAA,MAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,cAAc;AACb,eAAO,KAAK,SAAS,WAAU;AAAA,MAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,cAAc;AACb,eAAO,KAAK,SAAS,WAAU;AAAA,MAChC;AAAA,IACD;AAKA,cAAU,OAAO;AAKjB,cAAU,QAAQ;AAKlB,cAAU,KAAK;AAqCf,QAAM,WAAN,MAAe;AAAA,MACd,YAAY,MAAM,OAAO;AAKxB,aAAK,OAAO;AAOZ,aAAK,cAAc,CAAC;AAQpB,aAAK,aAAa,CAAC;AAOnB,aAAK,OAAO,CAAC;AAEb,aAAK,UAAU;AAMf,aAAK,QAAQ;AAMb,aAAK,QAAQ;AAAA,MACd;AAAA,IACD;AAEA,aAAS,cAAc;AACvB,aAAS,YAAY;AACrB,aAAS,eAAe;AACxB,aAAS,YAAY;AACrB,aAAS,WAAW;AACpB,aAAS,gBAAgB;AACzB,aAAS,yBAAyB;AAoClC,QAAM,aAAN,MAAiB;AAAA,MAChB,YAAY,MAAM,MAAMC,OAAM,QAAQC,QAAO,MAAM;AAIlD,aAAK,OAAO;AAKZ,aAAK,OAAO;AAKZ,aAAK,OAAOD;AAKZ,aAAK,SAAS;AAKd,aAAK,QAAQC;AAKb,aAAK,OAAO;AAAA,MACb;AAAA,IACD;AAKA,QAAM,sBAAN,cAAkC,WAAW;AAAA,MAC5C,YAAY,MAAMD,OAAMC,QAAO,MAAM;AACpC,cAAM,SAAS,WAAW,MAAMD,OAAM,MAAMC,QAAO,IAAI;AAMvD,aAAK,OAAO;AAAA,MACb;AAAA,IACD;AAmCA,QAAM,EAAE,QAAQ,SAAS,IAAI;AAS7B,aAAS,cAAc,OAAO,OAAO,oBAAoB;AACxD,UAAI;AAGJ,UAAI,MAAM,SAAS,MAAM,MAAM,UAAU;AACxC,eAAO;AAAA,MACR;AAEA,UAAI,oBAAoB;AACvB,eAAO;AAAA,MACR;AAEA,UAAI,MAAM,SAAS,WAAW,MAAM,SAAS,UAAU;AACtD,eAAO;AAAA,MACR;AAEA,UAAI,MAAM,SAAS,WAAW,MAAM,SAAS,UAAU;AACtD,eAAO;AAAA,MACR;AAEA,UAAI,MAAM,SAAS,YAAY;AAC9B,YACC,MAAM,SAAS,SAAS;AAAA,QAExB,MAAM,KAAK,SAAS,SAAS,gBAC5B;AACD,iBAAO;AAAA,QACR;AAEA,YAAI,MAAM,SAAS,SAAS,SAAS;AACpC,iBAAO;AAAA,QACR,OAAO;AACN,iBAAO,MAAM;AAAA,QACd;AAEA,YAAI,CAAC,MAAM;AACV,iBAAO;AAAA,QACR;AAAA,MACD,WAAW,MAAM,SAAS,UAAU;AACnC,eAAO;AAAA,MACR,OAAO;AACN,eAAO;AAAA,MACR;AAIA,eAAS,IAAI,GAAG,KAAK,KAAK,KAAK,QAAQ,IAAI,IAAI,EAAE,GAAG;AAEnD,cAAM,OAAO,KAAK,KAAK,CAAC;AAYxB,YAAI,OAAO,KAAK,cAAc,UAAU;AACvC;AAAA,QACD;AAEA,YAAI,KAAK,cAAc,cAAc;AACpC,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,cAAc,cAAc,OAAO;AAC3C,mBAAa,OAAO,KAAK,KAAK;AAE9B,YAAM,SAAS,aAAa,cAAc,IAAI,MAAM,KAAK;AAEzD,UAAI,QAAQ;AACX,eAAO,KAAK,KAAK;AAAA,MAClB,OAAO;AACN,qBAAa,cAAc,IAAI,MAAM,OAAO,CAAC,KAAK,CAAC;AAAA,MACpD;AAAA,IACD;AAMA,QAAM,QAAN,MAAY;AAAA,MACX,YAAY,cAAc,MAAM,YAAY,OAAO,oBAAoB;AAMtE,aAAK,OAAO;AAOZ,aAAK,MAAM,oBAAI,IAAI;AAOnB,aAAK,SAAS,oBAAI,IAAI;AAYtB,aAAK,UAAU,KAAK,SAAS,YAAY,KAAK,SAAS;AAMvD,aAAK,QAAQ;AAMb,aAAK,UAAU,CAAC;AAQhB,aAAK,YAAY,CAAC;AAWlB,aAAK,aAAa,CAAC;AAQnB,aAAK,gBACJ,KAAK,SAAS,YACd,KAAK,SAAS,YACd,KAAK,SAAS,cACd,KAAK,SAAS,6BACd,KAAK,SAAS,uBACX,OACA,WAAW;AAMf,aAAK;AAAA,QAA8C;AAMnD,aAAK,wBAAwB;AAK7B,aAAK,YAAY;AAGjB,aAAK,SAAS,CAAC;AAMf,aAAK,QAAQ;AAMb,aAAK,WAAW,aAAa,sBAAsB,IAChD,cAAc,MAAM,OAAO,kBAAkB,IAC7C;AAMH,aAAK,cAAc,CAAC;AACpB,YAAI,KAAK,OAAO;AACf,eAAK,MAAM,YAAY,KAAK,IAAI;AAAA,QACjC;AAEA,aAAK,sBAAsB,aAAa;AAExC,sBAAc,cAAc,IAAI;AAAA,MACjC;AAAA,MAEA,wBAAwB,cAAc;AACrC,eACC,CAAC,KAAK,WACN,aAAa,eAAe,KAC5B,KAAK,SAAS;AAAA,MAEhB;AAAA,MAEA,iBAAiB,KAAK;AACrB,YAAI,CAAC,KAAK,UAAU,GAAG,GAAG;AACzB,eAAK,uBAAuB,GAAG;AAAA,QAChC;AAAA,MACD;AAAA,MAEA,kBAAkB,KAAK;AAEtB,YAAI,UAAU;AAEd,WAAG;AACF,kBAAQ,QAAQ,KAAK,GAAG;AACxB,oBAAU,QAAQ;AAAA,QACnB,SAAS;AAAA,MACV;AAAA,MAEA,QAAQ,cAAc;AACrB,YAAI;AAEJ,YAAI,KAAK,wBAAwB,YAAY,GAAG;AAC/C,qBAAW,KAAK;AAAA,QACjB,OAAO;AACN,qBAAW,KAAK;AAAA,QACjB;AAIA,iBAAS,IAAI,GAAG,KAAK,KAAK,OAAO,QAAQ,IAAI,IAAI,EAAE,GAAG;AAErD,gBAAM,MAAM,KAAK,OAAO,CAAC;AAEzB,mBAAS,KAAK,MAAM,GAAG;AAAA,QACxB;AACA,aAAK,SAAS;AAEd,eAAO,KAAK;AAAA,MACb;AAAA;AAAA;AAAA;AAAA,MAKA,oBAAoB,KAAK,UAAU;AAClC,eAAO;AAAA,MACR;AAAA,MAEA,UAAU,KAAK;AACd,cAAM,OAAO,IAAI,WAAW;AAE5B,YAAI,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG;AACxB,iBAAO;AAAA,QACR;AACA,cAAM,WAAW,KAAK,IAAI,IAAI,IAAI;AAElC,YAAI,CAAC,KAAK,oBAAoB,KAAK,QAAQ,GAAG;AAC7C,iBAAO;AAAA,QACR;AACA,iBAAS,WAAW,KAAK,GAAG;AAC5B,iBAAS,QACR,SAAS,SAAS,IAAI,KAAK,kBAAkB,KAAK;AACnD,YAAI,IAAI,SAAS;AAChB,mBAAS,UAAU;AACnB,eAAK,OAAO,IAAI,SAAS,MAAM,IAAI;AAAA,QACpC;AACA,YAAI,WAAW;AAEf,eAAO;AAAA,MACR;AAAA,MAEA,uBAAuB,KAAK;AAC3B,YAAI,KAAK,OAAO;AACf,eAAK,MAAM,OAAO,KAAK,GAAG;AAAA,QAC3B;AACA,aAAK,QAAQ,KAAK,GAAG;AAAA,MACtB;AAAA,MAEA,6BAA6B,UAAUD,OAAM;AAC5C,YAAIA,UAAS,QAAQA,UAAS,QAAQ;AACrC;AAAA,QACD;AAEA,YAAI,YAAY,KAAK,oBAAoB,IAAIA,KAAI;AAEjD,YAAI,cAAc,QAAQ,cAAc,QAAQ;AAC/C,sBAAY,CAAC;AACb,eAAK,oBAAoB,IAAIA,OAAM,SAAS;AAAA,QAC7C;AACA,YAAI,CAAC,UAAU,SAAS,QAAQ,GAAG;AAClC,oBAAU,KAAK,QAAQ;AAAA,QACxB;AAAA,MACD;AAAA,MAEA,gBAAgB,MAAM,KAAK,WAAWA,OAAM,KAAK;AAChD,YAAI;AAEJ,mBAAW,IAAI,IAAI,IAAI;AACvB,YAAI,CAAC,UAAU;AACd,qBAAW,IAAI,SAAS,MAAM,IAAI;AAClC,cAAI,IAAI,MAAM,QAAQ;AACtB,oBAAU,KAAK,QAAQ;AAAA,QACxB;AAEA,YAAI,KAAK;AACR,mBAAS,KAAK,KAAK,GAAG;AACtB,eAAK,6BAA6B,UAAU,IAAI,IAAI;AACpD,eAAK,6BAA6B,UAAU,IAAI,MAAM;AAAA,QACvD;AACA,YAAIA,OAAM;AACT,mBAAS,YAAY,KAAKA,KAAI;AAAA,QAC/B;AAAA,MACD;AAAA,MAEA,SAASA,OAAM,KAAK;AACnB,YAAIA,SAAQA,MAAK,SAAS,SAAS,YAAY;AAC9C,eAAK;AAAA,YACJA,MAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACLA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,MAEA,cAAcA,OAAME,SAAQ,WAAW,qBAAqB,SAAS,MAAM;AAE1E,YACC,CAACF,SACAA,MAAK,SAAS,SAAS,cAAcA,MAAK,SAAS,iBACnD;AACD;AAAA,QACD;AAGA,YAAIA,MAAK,SAAS,SAAS;AAC1B;AAAA,QACD;AAEA,cAAM,MAAM,IAAI;AAAA,UACfA;AAAA,UACA;AAAA,UACAE,WAAU,UAAU;AAAA,UACpB;AAAA,UACA;AAAA,UACA,CAAC,CAAC;AAAA,UACF,CAAC,CAAC;AAAA,QACH;AAEA,aAAK,WAAW,KAAK,GAAG;AAGxB,aAAK,OAAO,KAAK,GAAG;AAAA,MACrB;AAAA,MAEA,eAAe;AACd,YAAI,UAAU;AAEd,aAAK,wBAAwB;AAC7B,WAAG;AACF,kBAAQ,UAAU;AAClB,oBAAU,QAAQ;AAAA,QACnB,SAAS;AAAA,MACV;AAAA,MAEA,eAAe;AACd,aAAK,YAAY;AAAA,MAClB;AAAA,MAEA,aAAa;AACZ,eAAO,KAAK,WAAW;AAAA,MACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,QAAQ,OAAO;AACd,YAAI,KAAK,GAAG;AAEZ,QAAAH,QAAO,KAAK,WAAW,GAAG,yBAAyB;AACnD,QAAAA;AAAA,UACC,MAAM,SAAS,SAAS;AAAA,UACxB;AAAA,QACD;AACA,aAAK,IAAI,GAAG,KAAK,KAAK,WAAW,QAAQ,IAAI,IAAI,EAAE,GAAG;AACrD,gBAAM,KAAK,WAAW,CAAC;AACvB,cAAI,IAAI,eAAe,OAAO;AAC7B,mBAAO;AAAA,UACR;AAAA,QACD;AACA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,WAAW;AACV,eAAO,CAAC,KAAK;AAAA,MACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,0BAA0B;AACzB,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,qBAAqB;AACpB,eAAO;AAAA,MACR;AAAA,MAEA,WAAW,MAAM;AAChB,YAAI,KAAK,IAAI,IAAI,IAAI,GAAG;AACvB,iBAAO;AAAA,QACR;AACA,iBAAS,IAAI,GAAG,KAAK,KAAK,QAAQ,QAAQ,IAAI,IAAI,EAAE,GAAG;AACtD,cAAI,KAAK,QAAQ,CAAC,EAAE,WAAW,SAAS,MAAM;AAC7C,mBAAO;AAAA,UACR;AAAA,QACD;AACA,eAAO;AAAA,MACR;AAAA,IACD;AAMA,QAAM,cAAN,cAA0B,MAAM;AAAA,MAC/B,YAAY,cAAc,OAAO;AAChC,cAAM,cAAc,UAAU,MAAM,OAAO,KAAK;AAChD,aAAK,WAAW;AAAA,UACf,KAAK,oBAAI,IAAI;AAAA;AAAA,UAGb,WAAW,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQZ,MAAM,CAAC;AAAA,QACR;AAAA,MACD;AAAA,MAEA,QAAQ,cAAc;AACrB,cAAM,WAAW,CAAC;AAGlB,iBAAS,IAAI,GAAG,KAAK,KAAK,OAAO,QAAQ,IAAI,IAAI,EAAE,GAAG;AAErD,gBAAM,MAAM,KAAK,OAAO,CAAC;AAEzB,cACC,IAAI,yBACJ,CAAC,KAAK,IAAI,IAAI,IAAI,WAAW,IAAI,GAChC;AACD,qBAAS,KAAK,IAAI,qBAAqB;AAAA,UACxC;AAAA,QACD;AAGA,iBAAS,IAAI,GAAG,KAAK,SAAS,QAAQ,IAAI,IAAI,EAAE,GAAG;AAClD,gBAAM,OAAO,SAAS,CAAC;AAEvB,eAAK;AAAA,YACJ,KAAK;AAAA,YACL,IAAI;AAAA,cACH,SAAS;AAAA,cACT,KAAK;AAAA,cACL,KAAK;AAAA,cACL;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,cAAM,QAAQ,YAAY;AAE1B,aAAK,SAAS,OAAO,CAAC,GAAG,KAAK,OAAO;AAErC,eAAO;AAAA,MACR;AAAA,MAEA,iBAAiBC,OAAM,KAAK;AAC3B,YAAIA,SAAQA,MAAK,SAAS,SAAS,YAAY;AAC9C,eAAK;AAAA,YACJA,MAAK;AAAA,YACL,KAAK,SAAS;AAAA,YACd,KAAK,SAAS;AAAA,YACdA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,MAEA,eAAe,OAAO;AACrB,mBAAW,QAAQ,OAAO;AACzB,eAAK,gBAAgB,MAAM,KAAK,KAAK,KAAK,WAAW,MAAM,IAAI;AAAA,QAChE;AAEA,cAAM,WAAW,IAAI,IAAI,KAAK;AAE9B,aAAK,UAAU,KAAK,QAAQ,OAAO,eAAa;AAC/C,gBAAM,OAAO,UAAU,WAAW;AAElC,cAAI,SAAS,IAAI,IAAI,GAAG;AACvB,kBAAM,WAAW,KAAK,IAAI,IAAI,IAAI;AAElC,sBAAU,WAAW;AACrB,qBAAS,WAAW,KAAK,SAAS;AAElC,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR,CAAC;AAED,aAAK,SAAS,YAAY,KAAK,SAAS,UAAU,OAAO,cAAY;AACpE,gBAAM,OAAO,SAAS;AAEtB,cAAI,SAAS,IAAI,IAAI,GAAG;AACvB,iBAAK,SAAS,IAAI,OAAO,IAAI;AAE7B,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR,CAAC;AAED,aAAK,SAAS,OAAO,KAAK,SAAS,KAAK;AAAA,UACvC,eAAa,CAAC,SAAS,IAAI,UAAU,WAAW,IAAI;AAAA,QACrD;AAAA,MACD;AAAA,IACD;AAMA,QAAM,cAAN,cAA0B,MAAM;AAAA,MAC/B,YAAY,cAAc,YAAY,OAAO;AAC5C,cAAM,cAAc,UAAU,YAAY,OAAO,KAAK;AAAA,MACvD;AAAA,IACD;AAMA,QAAM,8BAAN,cAA0C,MAAM;AAAA,MAC/C,YAAY,cAAc,YAAY,OAAO;AAC5C;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AACA,aAAK;AAAA,UACJ,MAAM;AAAA,UACN,IAAI;AAAA,YACH,SAAS;AAAA,YACT,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AACA,aAAK;AAAA,QAAgD;AAAA,MACtD;AAAA,IACD;AAMA,QAAM,aAAN,cAAyB,MAAM;AAAA,MAC9B,YAAY,cAAc,YAAY,OAAO;AAC5C,cAAM,cAAc,SAAS,YAAY,OAAO,KAAK;AAAA,MACtD;AAAA,IACD;AAMA,QAAM,YAAN,cAAwB,MAAM;AAAA,MAC7B,YAAY,cAAc,YAAY,OAAO;AAC5C,cAAM,cAAc,QAAQ,YAAY,OAAO,KAAK;AAAA,MACrD;AAAA,MAEA,QAAQ,cAAc;AACrB,YAAI,KAAK,wBAAwB,YAAY,GAAG;AAC/C,iBAAO,MAAM,QAAQ,YAAY;AAAA,QAClC;AAGA,iBAAS,IAAI,GAAG,KAAK,KAAK,OAAO,QAAQ,IAAI,IAAI,EAAE,GAAG;AAErD,gBAAM,MAAM,KAAK,OAAO,CAAC;AAEzB,cAAI,UAAU;AACd,eAAK,uBAAuB,GAAG;AAAA,QAChC;AACA,aAAK,SAAS;AAEd,eAAO,KAAK;AAAA,MACb;AAAA,IACD;AAMA,QAAM,aAAN,cAAyB,MAAM;AAAA,MAC9B,YAAY,cAAc,YAAY,OAAO;AAC5C,cAAM,cAAc,SAAS,YAAY,OAAO,KAAK;AAAA,MACtD;AAAA,IACD;AAMA,QAAM,cAAN,cAA0B,MAAM;AAAA,MAC/B,YAAY,cAAc,YAAY,OAAO;AAC5C,cAAM,cAAc,UAAU,YAAY,OAAO,KAAK;AAAA,MACvD;AAAA,IACD;AAMA,QAAM,gBAAN,cAA4B,MAAM;AAAA,MACjC,YAAY,cAAc,YAAY,OAAO,oBAAoB;AAChE,cAAM,cAAc,YAAY,YAAY,OAAO,kBAAkB;AAIrE,YAAI,KAAK,MAAM,SAAS,SAAS,yBAAyB;AACzD,eAAK,kBAAkB;AAAA,QACxB;AAAA,MACD;AAAA,MAEA,0BAA0B;AASzB,YAAI,KAAK,MAAM,SAAS,SAAS,yBAAyB;AACzD,iBAAO;AAAA,QACR;AAEA,YAAI,CAAC,KAAK,SAAS,GAAG;AACrB,iBAAO;AAAA,QACR;AAEA,cAAM,WAAW,KAAK,IAAI,IAAI,WAAW;AAEzC,QAAAD,QAAO,UAAU,iCAAiC;AAClD,eAAO,SAAS,WAAW,SAAS,WAAW,WAAW;AAAA,MAC3D;AAAA,MAEA,qBAAqB;AACpB,YAAI,CAAC,KAAK,SAAS,GAAG;AACrB,iBAAO;AAAA,QACR;AACA,eAAO,KAAK;AAAA,MACb;AAAA,MAEA,oBAAoB;AACnB,aAAK,gBAAgB,aAAa,KAAK,KAAK,KAAK,WAAW,MAAM,IAAI;AACtE,aAAK,OAAO,IAAI,aAAa,IAAI;AAAA,MAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,oBAAoB,KAAK,UAAU;AAElC,YAAI,KAAK,MAAM,SAAS,WAAW;AAClC,iBAAO;AAAA,QACR;AAEA,cAAM,YAAY,KAAK,MAAM,KAAK,MAAM,CAAC;AAGzC,eAAO,EACN,SAAS,UAAU,QACnB,IAAI,WAAW,MAAM,CAAC,IAAI;AAAA,QAC1B,SAAS,KAAK,MAAM,OAAK,EAAE,KAAK,MAAM,CAAC,KAAK,SAAS;AAAA,MAEvD;AAAA,IACD;AAMA,QAAM,WAAN,cAAuB,MAAM;AAAA,MAC5B,YAAY,cAAc,YAAY,OAAO;AAC5C,cAAM,cAAc,OAAO,YAAY,OAAO,KAAK;AAAA,MACpD;AAAA,IACD;AAMA,QAAM,aAAN,cAAyB,MAAM;AAAA,MAC9B,YAAY,cAAc,YAAY,OAAO;AAC5C,cAAM,cAAc,SAAS,YAAY,OAAO,KAAK;AAAA,MACtD;AAAA,IACD;AAMA,QAAM,6BAAN,cAAyC,MAAM;AAAA,MAC9C,YAAY,cAAc,YAAY,OAAO;AAC5C,cAAM,cAAc,2BAA2B,YAAY,OAAO,IAAI;AAAA,MACvE;AAAA,IACD;AAMA,QAAM,wBAAN,cAAoC,MAAM;AAAA,MACzC,YAAY,cAAc,YAAY,OAAO;AAC5C,cAAM,cAAc,sBAAsB,YAAY,OAAO,IAAI;AAAA,MAClE;AAAA,IACD;AAsCA,QAAM,eAAN,MAAmB;AAAA,MAClB,YAAY,SAAS;AACpB,aAAK,SAAS,CAAC;AACf,aAAK,cAAc;AACnB,aAAK,gBAAgB,oBAAI,QAAQ;AACjC,aAAK,iBAAiB;AACtB,aAAK,YAAY;AACjB,aAAK,sBAAsB,oBAAI,QAAQ;AAAA,MACxC;AAAA,MAEA,iBAAiB;AAChB,eAAO,KAAK,UAAU;AAAA,MACvB;AAAA,MAEA,eAAe;AACd,eAAO,KAAK,UAAU;AAAA,MACvB;AAAA,MAEA,iBAAiB;AAChB,eAAO,KAAK,UAAU,QAAQ;AAAA,MAC/B;AAAA,MAEA,iBAAiB;AAChB,eACC,KAAK,UAAU,eACf,KAAK,UAAU,eAAe;AAAA,MAEhC;AAAA,MAEA,WAAW;AACV,eAAO,KAAK,UAAU,eAAe;AAAA,MACtC;AAAA,MAEA,kBAAkB;AACjB,eAAO,CAAC,CAAC,KAAK,UAAU;AAAA,MACzB;AAAA,MAEA,wBAAwB;AACvB,eAAO,KAAK,UAAU,eAAe;AAAA,MACtC;AAAA;AAAA,MAGA,MAAMC,OAAM;AACX,eAAO,KAAK,cAAc,IAAIA,KAAI;AAAA,MACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,qBAAqBA,OAAM;AAC1B,eAAO,KAAK,oBAAoB,IAAIA,KAAI,KAAK,CAAC;AAAA,MAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,QAAQA,OAAM,OAAO;AAMpB,iBAAS,UAAU,WAAW;AAC7B,cACC,UAAU,SAAS,cACnB,UAAU,yBACT;AACD,mBAAO;AAAA,UACR;AACA,iBAAO;AAAA,QACR;AAEA,cAAM,SAAS,KAAK,MAAMA,KAAI;AAE9B,YAAI,CAAC,UAAU,OAAO,WAAW,GAAG;AACnC,iBAAO;AAAA,QACR;AAIA,YAAI,OAAO,WAAW,GAAG;AACxB,iBAAO,OAAO,CAAC;AAAA,QAChB;AAEA,YAAI,OAAO;AACV,mBAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG;AAC5C,kBAAM,QAAQ,OAAO,CAAC;AAEtB,gBAAI,UAAU,KAAK,GAAG;AACrB,qBAAO;AAAA,YACR;AAAA,UACD;AAAA,QACD,OAAO;AACN,mBAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,EAAE,GAAG;AAChD,kBAAM,QAAQ,OAAO,CAAC;AAEtB,gBAAI,UAAU,KAAK,GAAG;AACrB,qBAAO;AAAA,YACR;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,WAAWA,OAAM;AAChB,eAAO,KAAK,MAAMA,KAAI;AAAA,MACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,QAAQA,OAAM,OAAO;AACpB,cAAM,SAAS,KAAK,MAAMA,KAAI;AAE9B,YAAI,UAAU,OAAO,QAAQ;AAC5B,gBAAM,QAAQ,OAAO,CAAC,EAAE;AAExB,cAAI,CAAC,OAAO;AACX,mBAAO;AAAA,UACR;AACA,iBAAO,KAAK,QAAQ,MAAM,OAAO,KAAK;AAAA,QACvC;AACA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,WAAW,OAAO;AAEjB,aAAK,YAAY,eAAe,KAAK;AAAA,MACtC;AAAA,MAEA,SAAS;AAAA,MAAC;AAAA;AAAA,MAEV,SAAS;AAAA,MAAC;AAAA;AAAA,MAEV,YAAY,OAAO;AAClB,YAAI,iBAAiB,aAAa;AACjC,UAAAD,QAAO,KAAK,mBAAmB,IAAI;AACnC,eAAK,cAAc;AAAA,QACpB;AACA,aAAK,iBAAiB;AACtB,eAAO;AAAA,MACR;AAAA,MAEA,kBAAkBC,OAAM;AACvB,eAAO,KAAK,YAAY,IAAI,YAAY,MAAMA,KAAI,CAAC;AAAA,MACpD;AAAA,MAEA,iBAAiBA,OAAM;AACtB,eAAO,KAAK;AAAA,UACX,IAAI,WAAW,MAAM,KAAK,gBAAgBA,KAAI;AAAA,QAC/C;AAAA,MACD;AAAA,MAEA,oBAAoBA,OAAM,oBAAoB;AAC7C,eAAO,KAAK;AAAA,UACX,IAAI;AAAA,YACH;AAAA,YACA,KAAK;AAAA,YACLA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,MAEA,eAAeA,OAAM;AACpB,eAAO,KAAK,YAAY,IAAI,SAAS,MAAM,KAAK,gBAAgBA,KAAI,CAAC;AAAA,MACtE;AAAA,MAEA,iBAAiBA,OAAM;AACtB,eAAO,KAAK;AAAA,UACX,IAAI,WAAW,MAAM,KAAK,gBAAgBA,KAAI;AAAA,QAC/C;AAAA,MACD;AAAA,MAEA,gBAAgBA,OAAM;AACrB,eAAO,KAAK,YAAY,IAAI,UAAU,MAAM,KAAK,gBAAgBA,KAAI,CAAC;AAAA,MACvE;AAAA,MAEA,iBAAiBA,OAAM;AACtB,eAAO,KAAK;AAAA,UACX,IAAI,WAAW,MAAM,KAAK,gBAAgBA,KAAI;AAAA,QAC/C;AAAA,MACD;AAAA,MAEA,iCAAiCA,OAAM;AACtC,eAAO,KAAK;AAAA,UACX,IAAI,2BAA2B,MAAM,KAAK,gBAAgBA,KAAI;AAAA,QAC/D;AAAA,MACD;AAAA,MAEA,4BAA4BA,OAAM;AACjC,eAAO,KAAK;AAAA,UACX,IAAI,sBAAsB,MAAM,KAAK,gBAAgBA,KAAI;AAAA,QAC1D;AAAA,MACD;AAAA,MAEA,kBAAkBA,OAAM;AACvB,eAAO,KAAK;AAAA,UACX,IAAI,YAAY,MAAM,KAAK,gBAAgBA,KAAI;AAAA,QAChD;AAAA,MACD;AAAA,MAEA,kBAAkBA,OAAM;AACvB,eAAO,KAAK;AAAA,UACX,IAAI,YAAY,MAAM,KAAK,gBAAgBA,KAAI;AAAA,QAChD;AAAA,MACD;AAAA,MAEA,kCAAkCA,OAAM;AACvC,eAAO,KAAK;AAAA,UACX,IAAI,4BAA4B,MAAM,KAAK,gBAAgBA,KAAI;AAAA,QAChE;AAAA,MACD;AAAA,MAEA,UAAU;AACT,eAAO,KAAK,UAAU,eAAe;AAAA,MACtC;AAAA,IACD;AA+BA,QAAM,EAAE,QAAQ,SAAS,IAAI;AAO7B,aAAS,QAAQ,IAAI;AACpB,aAAO,GAAG,GAAG,EAAE,KAAK;AAAA,IACrB;AAMA,QAAM,iBAAN,cAA6B,UAAU,QAAQ;AAAA,MAC9C,OAAO,UAAUA,OAAM;AACtB,cAAM,WAAWA,MAAK;AAEtB,eACC,aAAa,SAAS,cACtB,aAAa,SAAS,iBACtB,aAAa,SAAS,gBACtB,aAAa,SAAS,iBACtB,aAAa,SAAS,eACtB,aAAa,SAAS;AAAA,MAExB;AAAA,MAEA,YAAY,SAAS,aAAa,UAAU;AAC3C,cAAM,MAAM,OAAO;AACnB,aAAK,cAAc;AACnB,aAAK,WAAW;AAChB,aAAK,cAAc,CAAC;AACpB,aAAK,iBAAiB,CAAC;AACvB,aAAK,eAAe,CAAC;AAAA,MACtB;AAAA,MAEA,WAAW,SAAS;AACnB,cAAM,kBAAkB,QAAQ,KAAK,YAAY;AAEjD,aAAK,SAAS,SAAS;AAAA,UACtB,UAAU,YAAY,KAAK;AAAA,UAC3B,MACC,oBAAoB,QACpB,oBAAoB,UACpB,gBAAgB,aAAa;AAAA,UAC9B,aAAa,KAAK;AAAA,QACnB,CAAC;AAAA,MACF;AAAA,MAEA,SAAS,UAAU;AAElB,YAAI,SAAS,UAAU;AACtB,eAAK,eAAe,KAAK,SAAS,GAAG;AAAA,QACtC;AAKA,aAAK,MAAM,SAAS,KAAK;AAAA,MAC1B;AAAA,MAEA,aAAa,SAAS;AACrB,iBAAS,IAAI,GAAG,KAAK,QAAQ,SAAS,QAAQ,IAAI,IAAI,EAAE,GAAG;AAC1D,gBAAM,UAAU,QAAQ,SAAS,CAAC;AAElC,eAAK,MAAM,OAAO;AAAA,QACnB;AAAA,MACD;AAAA,MAEA,kBAAkB,SAAS;AAC1B,aAAK,YAAY,KAAK,OAAO;AAC7B,aAAK,MAAM,QAAQ,IAAI;AACvB,aAAK,eAAe,KAAK,QAAQ,KAAK;AACtC,aAAK,YAAY,IAAI;AAAA,MACtB;AAAA,MAEA,YAAY,SAAS;AACpB,aAAK,aAAa,KAAK,OAAO;AAC9B,aAAK,MAAM,QAAQ,QAAQ;AAC3B,aAAK,aAAa,IAAI;AAAA,MACvB;AAAA,MAEA,iBAAiBA,OAAM;AAEtB,YAAIA,MAAK,UAAU;AAClB,eAAK,eAAe,KAAKA,MAAK,QAAQ;AAAA,QACvC;AAGA,aAAK,eAAe,KAAKA,MAAK,MAAM;AAAA,MACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,cAAcA,OAAM;AACnB,aAAK,MAAMA,MAAK,QAAQ;AAAA,MACzB;AAAA,MAEA,gBAAgBA,OAAM;AACrB,QAAAA,MAAK,SAAS,QAAQ,KAAK,OAAO,IAAI;AAAA,MACvC;AAAA,MAEA,qBAAqBA,OAAM;AAC1B,aAAK,YAAY,KAAKA,KAAI;AAC1B,aAAK,MAAMA,MAAK,IAAI;AACpB,aAAK,eAAe,KAAKA,MAAK,KAAK;AACnC,aAAK,YAAY,IAAI;AAAA,MACtB;AAAA,MAEA,eAAeA,OAAM;AAEpB,QAAAA,MAAK,UAAU,QAAQ,OAAK;AAC3B,eAAK,eAAe,KAAK,CAAC;AAAA,QAC3B,CAAC;AACD,aAAK,MAAMA,MAAK,MAAM;AAAA,MACvB;AAAA,IACD;AAgCA,QAAM,EAAE,OAAO,IAAI;AAUnB,aAAS,4BACR,SACA,aACA,YACA,UACC;AAED,YAAM,UAAU,IAAI,eAAe,SAAS,aAAa,QAAQ;AAEjE,cAAQ,MAAM,WAAW;AAGzB,UAAI,eAAe,QAAQ,eAAe,QAAQ;AACjD,gBAAQ,eAAe,QAAQ,WAAW,OAAO,UAAU;AAAA,MAC5D;AAAA,IACD;AAWA,QAAM,WAAN,cAAuB,UAAU,QAAQ;AAAA,MACxC,YAAY,aAAa,YAAY;AACpC,cAAM,MAAM,WAAW,OAAO;AAC9B,aAAK,cAAc;AACnB,aAAK,aAAa;AAAA,MACnB;AAAA,MAEA,YAAY,IAAI,WAAW;AAC1B,aAAK,WAAW,aAAa,IAAI,aAAW;AAC3C,eAAK,WACH,aAAa,EACb;AAAA,YACA;AAAA,YACA,IAAI;AAAA,cACH,SAAS;AAAA,cACT;AAAA,cACA;AAAA,cACA,KAAK;AAAA,cACL;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,QACF,CAAC;AAAA,MACF;AAAA,MAEA,yBAAyBA,OAAM;AAC9B,cAAM,QAAQA,MAAK,SAASA,MAAK;AAEjC,YAAI,OAAO;AACV,eAAK,YAAY,OAAOA,KAAI;AAAA,QAC7B;AAAA,MACD;AAAA,MAEA,uBAAuBA,OAAM;AAC5B,cAAM,QAAQA,MAAK,SAASA,MAAK;AAEjC,aAAK,YAAY,OAAOA,KAAI;AAAA,MAC7B;AAAA,MAEA,gBAAgBA,OAAM;AACrB,cAAM,QAAQA,MAAK,SAASA,MAAK;AAEjC,YAAIA,MAAK,MAAM;AACd,eAAK,YAAYA,MAAK,MAAMA,KAAI;AAAA,QACjC,OAAO;AACN,eAAK,YAAY,OAAOA,KAAI;AAAA,QAC7B;AAAA,MACD;AAAA,IACD;AAMA,QAAM,aAAN,cAAyB,UAAU,QAAQ;AAAA,MAC1C,YAAY,SAAS,cAAc;AAClC,cAAM,MAAM,OAAO;AACnB,aAAK,UAAU;AACf,aAAK,eAAe;AACpB,aAAK,SAAS;AACd,aAAK,0BAA0B;AAAA,MAChC;AAAA,MAEA,eAAe;AACd,eAAO,KAAK,aAAa;AAAA,MAC1B;AAAA,MAEA,MAAMA,OAAM;AACX,eAAO,KAAK,aAAa,KAAKA,UAAS,KAAK,aAAa,EAAE,OAAO;AACjE,eAAK,aAAa,iBAAiB,KAAK,aAAa,EAAE;AAAA,YACtD,KAAK;AAAA,UACN;AAAA,QACD;AAAA,MACD;AAAA,MAEA,0BAA0B,yBAAyB;AAClD,cAAMG,YAAW,KAAK;AAEtB,aAAK,0BAA0B;AAC/B,eAAOA;AAAA,MACR;AAAA,MAEA,yBAAyB,yBAAyB;AACjD,aAAK,0BAA0B;AAAA,MAChC;AAAA,MAEA,wBAAwB,SAAS,aAAa,qBAAqB,MAAM;AACxE,cAAM,QAAQ,KAAK,aAAa;AAEhC,oBAAY,QAAQ,gBAAc;AACjC,gBAAM;AAAA,YACL;AAAA,YACA,UAAU;AAAA,YACV,WAAW;AAAA,YACX;AAAA,YACA,YAAY,WAAW;AAAA,YACvB;AAAA,UACD;AAAA,QACD,CAAC;AAAA,MACF;AAAA,MAEA,aAAaH,OAAM,SAAS,UAAU;AACrC,YAAI,sBAAsB;AAC1B,YAAI,uBAAuB;AAE3B,YAAI,OAAO,YAAY,YAAY;AAClC,iCAAuB;AACvB,gCAAsB,EAAE,uBAAuB,MAAM;AAAA,QACtD;AAEA;AAAA,UACC,KAAK;AAAA,UACLA;AAAA,UACA,oBAAoB,wBAAwB,OAAO;AAAA,UACnD;AAAA,QACD;AAAA,MACD;AAAA,MAEA,cAAcA,OAAM;AACnB,YAAI,GAAG;AAQP,YAAIA,MAAK,SAAS,OAAO,qBAAqB;AAE7C,eAAK,aAAa,EAAE;AAAA,YACnBA,MAAK;AAAA,YACL,IAAI;AAAA,cACH,SAAS;AAAA,cACTA,MAAK;AAAA,cACLA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAIA,YAAIA,MAAK,SAAS,OAAO,sBAAsBA,MAAK,IAAI;AACvD,eAAK,aAAa,kCAAkCA,KAAI;AAAA,QACzD;AAGA,aAAK,aAAa;AAAA,UACjBA;AAAA,UACA,KAAK;AAAA,QACN;AAEA,cAAM,OAAO;AAQb,iBAAS,qBAAqB,SAAS,MAAM;AAC5C,eAAK,aAAa,EAAE;AAAA,YACnB;AAAA,YACA,IAAI,oBAAoB,SAASA,OAAM,GAAG,KAAK,IAAI;AAAA,UACpD;AAEA,eAAK,wBAAwB,SAAS,KAAK,aAAa,MAAM,IAAI;AAAA,QACnE;AAGA,aAAK,IAAI,GAAG,KAAKA,MAAK,OAAO,QAAQ,IAAI,IAAI,EAAE,GAAG;AACjD,eAAK;AAAA,YACJA,MAAK,OAAO,CAAC;AAAA,YACb,EAAE,uBAAuB,KAAK;AAAA,YAC9B;AAAA,UACD;AAAA,QACD;AAGA,YAAIA,MAAK,MAAM;AACd,eAAK;AAAA,YACJ;AAAA,cACC,MAAM;AAAA,cACN,UAAUA,MAAK;AAAA,YAChB;AAAA,YACA,aAAW;AACV,mBAAK,aAAa,EAAE;AAAA,gBACnB;AAAA,gBACA,IAAI;AAAA,kBACH;AAAA,kBACAA;AAAA,kBACAA,MAAK,OAAO;AAAA,kBACZ;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAIA,YAAIA,MAAK,MAAM;AAEd,cAAIA,MAAK,KAAK,SAAS,OAAO,gBAAgB;AAC7C,iBAAK,cAAcA,MAAK,IAAI;AAAA,UAC7B,OAAO;AACN,iBAAK,MAAMA,MAAK,IAAI;AAAA,UACrB;AAAA,QACD;AAEA,aAAK,MAAMA,KAAI;AAAA,MAChB;AAAA,MAEA,WAAWA,OAAM;AAChB,YAAIA,MAAK,SAAS,OAAO,kBAAkB;AAC1C,eAAK,aAAa,EAAE;AAAA,YACnBA,MAAK;AAAA,YACL,IAAI;AAAA,cACH,SAAS;AAAA,cACTA,MAAK;AAAA,cACLA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,aAAK,aAAa,iBAAiBA,KAAI;AAEvC,YAAIA,MAAK,IAAI;AACZ,eAAK,aAAa,EAAE;AAAA,YACnBA,MAAK;AAAA,YACL,IAAI,WAAW,SAAS,WAAWA,MAAK,IAAIA,KAAI;AAAA,UACjD;AAAA,QACD;AAEA,aAAK,MAAMA,MAAK,UAAU;AAC1B,aAAK,MAAMA,MAAK,IAAI;AAEpB,aAAK,MAAMA,KAAI;AAAA,MAChB;AAAA,MAEA,cAAcA,OAAM;AACnB,YAAIG;AAEJ,YAAIH,MAAK,UAAU;AAClB,eAAK,MAAMA,MAAK,GAAG;AAAA,QACpB;AAEA,cAAM,qBAAqBA,MAAK,SAAS,OAAO;AAEhD,YAAI,oBAAoB;AACvB,UAAAG,YAAW,KAAK,0BAA0B,IAAI;AAAA,QAC/C;AACA,aAAK,MAAMH,MAAK,KAAK;AACrB,YAAI,oBAAoB;AACvB,eAAK,yBAAyBG,SAAQ;AAAA,QACvC;AAAA,MACD;AAAA,MAEA,WAAWH,OAAM;AAChB,YACCA,MAAK,KAAK,SAAS,OAAO,uBAC1BA,MAAK,KAAK,SAAS,OAClB;AACD,eAAK,aAAa,eAAeA,KAAI;AAAA,QACtC;AAEA,YAAIA,MAAK,KAAK,SAAS,OAAO,qBAAqB;AAClD,eAAK,MAAMA,MAAK,IAAI;AACpB,eAAK,aAAaA,MAAK,KAAK,aAAa,CAAC,EAAE,IAAI,aAAW;AAC1D,iBAAK,aAAa,EAAE;AAAA,cACnB;AAAA,cACA,UAAU;AAAA,cACVA,MAAK;AAAA,cACL;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF,OAAO;AACN,eAAK;AAAA,YACJA,MAAK;AAAA,YACL,EAAE,uBAAuB,KAAK;AAAA,YAC9B,CAAC,SAAS,SAAS;AAClB,kBAAI,sBAAsB;AAE1B,kBAAI,CAAC,KAAK,aAAa,EAAE,UAAU;AAClC,sCAAsB;AAAA,kBACrB;AAAA,kBACA,MAAAA;AAAA,gBACD;AAAA,cACD;AACA,mBAAK;AAAA,gBACJ;AAAA,gBACA,KAAK;AAAA,gBACL;AAAA,gBACA;AAAA,cACD;AACA,mBAAK,aAAa,EAAE;AAAA,gBACnB;AAAA,gBACA,UAAU;AAAA,gBACVA,MAAK;AAAA,gBACL;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AACA,aAAK,MAAMA,MAAK,KAAK;AACrB,aAAK,MAAMA,MAAK,IAAI;AAEpB,aAAK,MAAMA,KAAI;AAAA,MAChB;AAAA,MAEA,yBAAyB,qBAAqB,MAAMA,OAAMC,QAAO;AAChE,cAAM,OAAOD,MAAK,aAAaC,MAAK;AACpC,cAAM,OAAO,KAAK;AAElB,aAAK;AAAA,UACJ,KAAK;AAAA,UACL,EAAE,uBAAuB,KAAK;AAAA,UAC9B,CAAC,SAAS,SAAS;AAClB,gCAAoB;AAAA,cACnB;AAAA,cACA,IAAI,WAAW,MAAM,SAAS,MAAMD,OAAMC,QAAOD,MAAK,IAAI;AAAA,YAC3D;AAEA,iBAAK;AAAA,cACJ;AAAA,cACA,KAAK;AAAA,cACL;AAAA,cACA;AAAA,YACD;AACA,gBAAI,MAAM;AACT,mBAAK,aAAa,EAAE;AAAA,gBACnB;AAAA,gBACA,UAAU;AAAA,gBACV;AAAA,gBACA;AAAA,gBACA,CAAC,KAAK;AAAA,gBACN;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,MAEA,qBAAqBA,OAAM;AAC1B,YAAI,eAAe,UAAUA,MAAK,IAAI,GAAG;AACxC,cAAIA,MAAK,aAAa,KAAK;AAC1B,iBAAK;AAAA,cACJA,MAAK;AAAA,cACL,EAAE,uBAAuB,KAAK;AAAA,cAC9B,CAAC,SAAS,SAAS;AAClB,oBAAI,sBAAsB;AAE1B,oBAAI,CAAC,KAAK,aAAa,EAAE,UAAU;AAClC,wCAAsB;AAAA,oBACrB;AAAA,oBACA,MAAAA;AAAA,kBACD;AAAA,gBACD;AACA,qBAAK;AAAA,kBACJ;AAAA,kBACA,KAAK;AAAA,kBACL;AAAA,kBACA;AAAA,gBACD;AACA,qBAAK,aAAa,EAAE;AAAA,kBACnB;AAAA,kBACA,UAAU;AAAA,kBACVA,MAAK;AAAA,kBACL;AAAA,kBACA,CAAC,KAAK;AAAA,kBACN;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD,OAAO;AACN,iBAAK,aAAa,EAAE;AAAA,cACnBA,MAAK;AAAA,cACL,UAAU;AAAA,cACVA,MAAK;AAAA,YACN;AAAA,UACD;AAAA,QACD,OAAO;AACN,eAAK,MAAMA,MAAK,IAAI;AAAA,QACrB;AACA,aAAK,MAAMA,MAAK,KAAK;AAAA,MACtB;AAAA,MAEA,YAAYA,OAAM;AACjB,aAAK,aAAa,iBAAiBA,KAAI;AAEvC,aAAK;AAAA,UACJA,MAAK;AAAA,UACL,EAAE,uBAAuB,KAAK;AAAA,UAC9B,CAAC,SAAS,SAAS;AAClB,iBAAK,aAAa,EAAE;AAAA,cACnB;AAAA,cACA,IAAI;AAAA,gBACH,SAAS;AAAA,gBACT;AAAA,gBACAA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AACA,iBAAK;AAAA,cACJ;AAAA,cACA,KAAK;AAAA,cACL;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,QACD;AACA,aAAK,MAAMA,MAAK,IAAI;AAEpB,aAAK,MAAMA,KAAI;AAAA,MAChB;AAAA,MAEA,QAAQA,OAAM;AACb,aAAK,aAAa,kBAAkBA,KAAI;AAExC,YAAI,KAAK,aAAa,eAAe,GAAG;AAEvC,eAAK,aAAa,EAAE,WAAW;AAC/B,eAAK,aAAa,oBAAoBA,OAAM,KAAK;AAAA,QAClD;AAEA,YAAI,KAAK,aAAa,QAAQ,KAAK,KAAK,aAAa,SAAS,GAAG;AAChE,eAAK,aAAa,kBAAkBA,KAAI;AAAA,QACzC;AAEA,YACC,KAAK,aAAa,sBAAsB,KACxC,KAAK,aAAa,gBAAgB,GACjC;AACD,eAAK,aAAa,EAAE,WAAW;AAAA,QAChC;AAEA,aAAK,cAAcA,KAAI;AACvB,aAAK,MAAMA,KAAI;AAAA,MAChB;AAAA,MAEA,WAAWA,OAAM;AAChB,aAAK,aAAa,EAAE,cAAcA,KAAI;AAAA,MACvC;AAAA;AAAA,MAGA,oBAAoB;AAAA,MAEpB;AAAA,MAEA,iBAAiBA,OAAM;AACtB,YAAI,eAAe,UAAUA,MAAK,QAAQ,GAAG;AAC5C,eAAK,aAAa,EAAE;AAAA,YACnBA,MAAK;AAAA,YACL,UAAU;AAAA,YACV;AAAA,UACD;AAAA,QACD,OAAO;AACN,eAAK,cAAcA,KAAI;AAAA,QACxB;AAAA,MACD;AAAA,MAEA,iBAAiBA,OAAM;AACtB,aAAK,MAAMA,MAAK,MAAM;AACtB,YAAIA,MAAK,UAAU;AAClB,eAAK,MAAMA,MAAK,QAAQ;AAAA,QACzB;AAAA,MACD;AAAA,MAEA,SAASA,OAAM;AACd,aAAK,cAAcA,KAAI;AAAA,MACxB;AAAA,MAEA,mBAAmBA,OAAM;AACxB,cAAM,EAAE,UAAU,KAAK,OAAAI,OAAM,IAAIJ;AAEjC,YAAI,UAAU;AACb,eAAK,MAAM,GAAG;AAAA,QACf;AACA,YAAII,QAAO;AACV,eAAK,aAAa,iCAAiCA,MAAK;AACxD,eAAK,MAAMA,MAAK;AAChB,eAAK,MAAMA,MAAK;AAAA,QACjB;AAAA,MACD;AAAA,MAEA,YAAYJ,OAAM;AACjB,aAAK,aAAa,4BAA4BA,KAAI;AAElD,aAAK,cAAcA,KAAI;AAEvB,aAAK,MAAMA,KAAI;AAAA,MAChB;AAAA,MAEA,iBAAiBA,OAAM;AACtB,aAAK,cAAcA,KAAI;AAAA,MACxB;AAAA,MAEA,iBAAiB;AAAA,MAAC;AAAA;AAAA,MAElB,oBAAoB;AAAA,MAAC;AAAA;AAAA,MAErB,iBAAiBA,OAAM;AACtB,aAAK,MAAMA,MAAK,IAAI;AAAA,MACrB;AAAA,MAEA,aAAaA,OAAM;AAKlB,YACCA,MAAK,QACLA,MAAK,KAAK,SAAS,OAAO,uBAC1BA,MAAK,KAAK,SAAS,OAClB;AACD,eAAK,aAAa,eAAeA,KAAI;AAAA,QACtC;AAEA,aAAK,cAAcA,KAAI;AAEvB,aAAK,MAAMA,KAAI;AAAA,MAChB;AAAA,MAEA,gBAAgBA,OAAM;AACrB,aAAK,WAAWA,KAAI;AAAA,MACrB;AAAA,MAEA,iBAAiBA,OAAM;AACtB,aAAK,WAAWA,KAAI;AAAA,MACrB;AAAA,MAEA,eAAeA,OAAM;AAEpB,YACC,CAAC,KAAK,aAAa,aAAa,KAChCA,MAAK,OAAO,SAAS,OAAO,cAC5BA,MAAK,OAAO,SAAS,QACpB;AAGD,eAAK,aAAa,EAAE,cAAc,aAAa;AAAA,QAChD;AACA,aAAK,cAAcA,KAAI;AAAA,MACxB;AAAA,MAEA,eAAeA,OAAM;AACpB,YAAI,KAAK,aAAa,QAAQ,GAAG;AAChC,eAAK,aAAa,iBAAiBA,KAAI;AAAA,QACxC;AAEA,aAAK,cAAcA,KAAI;AAEvB,aAAK,MAAMA,KAAI;AAAA,MAChB;AAAA,MAEA,iBAAiB;AAChB,aAAK,aAAa,EAAE,cAAc,aAAa;AAAA,MAChD;AAAA,MAEA,cAAcA,OAAM;AACnB,aAAK,MAAMA,MAAK,MAAM;AAGtB,aAAK,aAAa,gBAAgBA,KAAI;AAEtC,aAAK,MAAMA,MAAK,IAAI;AAEpB,aAAK,MAAMA,KAAI;AAAA,MAChB;AAAA,MAEA,oBAAoBA,OAAM;AACzB,cAAM,sBACLA,MAAK,SAAS,QACX,KAAK,aAAa,EAAE,gBACpB,KAAK,aAAa;AAEtB,iBAAS,IAAI,GAAG,KAAKA,MAAK,aAAa,QAAQ,IAAI,IAAI,EAAE,GAAG;AAC3D,gBAAM,OAAOA,MAAK,aAAa,CAAC;AAEhC,eAAK;AAAA,YACJ;AAAA,YACA,SAAS;AAAA,YACTA;AAAA,YACA;AAAA,UACD;AACA,cAAI,KAAK,MAAM;AACd,iBAAK,MAAM,KAAK,IAAI;AAAA,UACrB;AAAA,QACD;AAAA,MACD;AAAA;AAAA,MAGA,gBAAgBA,OAAM;AACrB,aAAK,MAAMA,MAAK,YAAY;AAE5B,YAAI,KAAK,aAAa,QAAQ,GAAG;AAChC,eAAK,aAAa,kBAAkBA,KAAI;AAAA,QACzC;AAEA,iBAAS,IAAI,GAAG,KAAKA,MAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,GAAG;AACpD,eAAK,MAAMA,MAAK,MAAM,CAAC,CAAC;AAAA,QACzB;AAEA,aAAK,MAAMA,KAAI;AAAA,MAChB;AAAA,MAEA,oBAAoBA,OAAM;AACzB,aAAK,cAAcA,KAAI;AAAA,MACxB;AAAA,MAEA,mBAAmBA,OAAM;AACxB,aAAK,cAAcA,KAAI;AAAA,MACxB;AAAA,MAEA,eAAeA,OAAM;AACpB,aAAK,WAAWA,KAAI;AAAA,MACrB;AAAA,MAEA,eAAeA,OAAM;AACpB,aAAK,WAAWA,KAAI;AAAA,MACrB;AAAA,MAEA,wBAAwBA,OAAM;AAC7B,aAAK,cAAcA,KAAI;AAAA,MACxB;AAAA,MAEA,kBAAkBA,OAAM;AACvB,QAAAD;AAAA,UACC,KAAK,aAAa,QAAQ,KAAK,KAAK,aAAa,SAAS;AAAA,UAC1D;AAAA,QACD;AAEA,cAAM,WAAW,IAAI,SAASC,OAAM,IAAI;AAExC,iBAAS,MAAMA,KAAI;AAAA,MACpB;AAAA,MAEA,uBAAuBA,OAAM;AAC5B,YAAIA,MAAK,QAAQ;AAChB;AAAA,QACD;AACA,YAAIA,MAAK,aAAa;AACrB,eAAK,MAAMA,MAAK,WAAW;AAC3B;AAAA,QACD;AAEA,aAAK,cAAcA,KAAI;AAAA,MACxB;AAAA;AAAA,MAGA,kBAAkBA,OAAM;AACvB,aAAK,uBAAuBA,KAAI;AAAA,MACjC;AAAA,MAEA,qBAAqBA,OAAM;AAC1B,aAAK,uBAAuBA,KAAI;AAAA,MACjC;AAAA,MAEA,yBAAyBA,OAAM;AAC9B,aAAK,uBAAuBA,KAAI;AAAA,MACjC;AAAA,MAEA,uBAAuBA,OAAM;AAC5B,aAAK,uBAAuBA,KAAI;AAAA,MACjC;AAAA,MAEA,gBAAgBA,OAAM;AAErB,cAAM,QAAQA,MAAK,MAAMA,MAAK;AAE9B,aAAK,MAAM,KAAK;AAAA,MACjB;AAAA;AAAA,MAGA,eAAe;AAAA,MAEf;AAAA,MAEA,cAAcA,OAAM;AAEnB,YAAI,KAAK,aAAa,eAAe,KAAKA,MAAK,SAAS,QAAQ;AAC/D,eAAK,aAAa,EAAE,cAAcA,KAAI;AAAA,QACvC;AAAA,MACD;AAAA,MAEA,oBAAoBA,OAAM;AACzB,aAAK,MAAMA,MAAK,MAAM;AAAA,MACvB;AAAA,MAEA,WAAWA,OAAM;AAChB,YAAI,KAAK,aAAa,eAAe,GAAG;AACvC,eAAK,MAAMA,MAAK,cAAc;AAC9B,UAAAA,MAAK,SAAS,QAAQ,KAAK,OAAO,IAAI;AAAA,QACvC,OAAO;AACN,eAAK,cAAcA,KAAI;AAAA,QACxB;AAAA,MACD;AAAA,MAEA,kBAAkBA,OAAM;AACvB,YAAI,KAAK,aAAa,eAAe,GAAG;AACvC,gBAAM,WAAWA,MAAK;AACtB,gBAAM,kBACL,SAAS,SAAS,mBAClB,SAAS,KAAK,CAAC,EAAE,YAAY,MAAM,SAAS,KAAK,CAAC;AACnD,gBAAM,cACL,mBAAmB,SAAS,SAAS;AAGtC,cAAI,aAAa;AAChB,iBAAK,MAAM,QAAQ;AAAA,UACpB;AAAA,QACD;AAEA,QAAAA,MAAK,WAAW,QAAQ,KAAK,OAAO,IAAI;AAAA,MACzC;AAAA,MAEA,aAAaA,OAAM;AAClB,YAAIA,MAAK,OAAO;AACf,eAAK,MAAMA,MAAK,KAAK;AAAA,QACtB;AAAA,MACD;AAAA,MAEA,uBAAuBA,OAAM;AAC5B,aAAK,MAAMA,MAAK,UAAU;AAAA,MAC3B;AAAA,MAEA,kBAAkBA,OAAM;AACvB,aAAK,MAAMA,MAAK,SAAS;AACzB,aAAK,MAAMA,MAAK,IAAI;AAAA,MACrB;AAAA,IACD;AAqCA,aAASK,kBAAiB;AACzB,aAAO;AAAA,QACN,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,eAAe;AAAA,QACf,YAAY;AAAA;AAAA,QACZ,aAAa;AAAA,QACb,kBAAkB;AAAA,QAClB,UAAU;AAAA,MACX;AAAA,IACD;AAQA,aAAS,aAAa,QAAQ,UAAU;AAMvC,eAAS,aAAaD,QAAO;AAC5B,eACC,OAAOA,WAAU,YACjBA,kBAAiB,UACjB,EAAEA,kBAAiB,UACnB,EAAEA,kBAAiB;AAAA,MAErB;AAEA,iBAAW,OAAO,UAAU;AAC3B,YAAI,OAAO,OAAO,UAAU,GAAG,GAAG;AACjC,gBAAM,MAAM,SAAS,GAAG;AAExB,cAAI,aAAa,GAAG,GAAG;AACtB,gBAAI,aAAa,OAAO,GAAG,CAAC,GAAG;AAC9B,2BAAa,OAAO,GAAG,GAAG,GAAG;AAAA,YAC9B,OAAO;AACN,qBAAO,GAAG,IAAI,aAAa,CAAC,GAAG,GAAG;AAAA,YACnC;AAAA,UACD,OAAO;AACN,mBAAO,GAAG,IAAI;AAAA,UACf;AAAA,QACD;AAAA,MACD;AACA,aAAO;AAAA,IACR;AAsBA,aAAS,QAAQ,MAAM,iBAAiB;AACvC,YAAM,UAAU,aAAaC,gBAAe,GAAG,eAAe;AAC9D,YAAM,eAAe,IAAI,aAAa,OAAO;AAC7C,YAAM,aAAa,IAAI,WAAW,SAAS,YAAY;AAEvD,iBAAW,MAAM,IAAI;AAErB,MAAAN;AAAA,QACC,aAAa,mBAAmB;AAAA,QAChC;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAGA,QAAMO,WAAU;AAIhB,IAAAR,SAAQ,aAAa;AACrB,IAAAA,SAAQ,iBAAiB;AACzB,IAAAA,SAAQ,YAAY;AACpB,IAAAA,SAAQ,aAAa;AACrB,IAAAA,SAAQ,QAAQ;AAChB,IAAAA,SAAQ,eAAe;AACvB,IAAAA,SAAQ,WAAW;AACnB,IAAAA,SAAQ,UAAU;AAClB,IAAAA,SAAQ,UAAUQ;AAAA;AAAA;;;AC/gFlB;AAAA,sEAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,wBAAwB,oBAAI,IAAI;AAAA,MACrC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAWD,aAAS,gBAAgBC,QAAO;AAC/B,aAAO,OAAOA,WAAU,YAAYA,WAAU;AAAA,IAC/C;AAOA,aAAS,iBAAiBA,QAAO;AAChC,aAAO,gBAAgBA,MAAK,KAAK,CAAC,MAAM,QAAQA,MAAK;AAAA,IACtD;AAOA,aAAS,YAAYA,QAAO;AAC3B,aAAO,OAAOA,WAAU;AAAA,IACzB;AAYA,aAAS,oBAAoB,aAAa;AACzC,UAAI,YAAY,WAAW,GAAG;AAC7B,cAAM,IAAI;AAAA,UACT;AAAA,QACD;AAAA,MACD;AAEA,UAAI,OAAO,gBAAgB,YAAY,gBAAgB,UAAU;AAChE,cAAM,IAAI;AAAA,UACT;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAQA,aAAS,mBAAmB,YAAY;AACvC,UACC,OAAO,eAAe,YACtB,CAAC,gCAAgC,KAAK,UAAU,GAC/C;AACD,cAAM,IAAI;AAAA,UACT;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAQA,aAAS,gBAAgB,SAAS;AACjC,UAAI,CAAC,iBAAiB,OAAO,GAAG;AAC/B,cAAM,IAAI,UAAU,oCAAoC;AAAA,MACzD;AAEA,iBAAW,OAAO,OAAO,KAAK,OAAO,GAAG;AAEvC,YAAI,QAAQ,aAAa;AACxB;AAAA,QACD;AAEA,YAAI,QAAQ,IAAI,KAAK,GAAG;AACvB,gBAAM,IAAI;AAAA,YACT,0BAA0B,GAAG;AAAA,UAC9B;AAAA,QACD;AAEA,YAAI,CAAC,sBAAsB,IAAI,QAAQ,GAAG,CAAC,GAAG;AAC7C,gBAAM,IAAI;AAAA,YACT,uBAAuB,GAAG;AAAA,UAC3B;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAQA,aAAS,eAAe,QAAQ;AAC/B,UACC,CAAC,UACD,OAAO,WAAW,YACjB,OAAO,OAAO,UAAU,cACxB,OAAO,OAAO,mBAAmB,YACjC;AACD,cAAM,IAAI;AAAA,UACT;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAQA,aAAS,wBAAwB,iBAAiB;AACjD,UAAI,CAAC,iBAAiB,eAAe,GAAG;AACvC,cAAM,IAAI,UAAU,qBAAqB;AAAA,MAC1C;AAEA,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAG;AAAA,MACJ,IAAI;AAEJ,UAAI,iBAAiB,iBAAiB;AACrC,4BAAoB,WAAW;AAAA,MAChC;AAEA,UAAI,gBAAgB,iBAAiB;AACpC,2BAAmB,UAAU;AAAA,MAC9B;AAEA,UAAI,aAAa,iBAAiB;AACjC,wBAAgB,OAAO;AAAA,MACxB;AAEA,UAAI,YAAY,iBAAiB;AAChC,uBAAe,MAAM;AAAA,MACtB;AAEA,UAAI,mBAAmB,iBAAiB;AACvC,YAAI,CAAC,iBAAiB,aAAa,GAAG;AACrC,gBAAM,IAAI,UAAU,0CAA0C;AAAA,QAC/D;AAAA,MACD;AAEA,YAAM,kBAAkB,OAAO,KAAK,YAAY;AAEhD,UAAI,gBAAgB,SAAS,GAAG;AAC/B,cAAM,IAAI,UAAU,mBAAmB,gBAAgB,CAAC,CAAC,UAAU;AAAA,MACpE;AAAA,IACD;AAEA,IAAAD,QAAO,UAAU,EAAE,wBAAwB;AAAA;AAAA;;;ACnM3C;AAAA,kDAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,EAAE,WAAW,IAAI;AACvB,QAAM,cAAc;AACpB,QAAM,WAAW;AACjB,QAAM,SAAS;AACf,QAAM,cAAc;AACpB,QAAM,MAAM;AACZ,QAAM,EAAE,wBAAwB,IAAI;AACpC,QAAM,EAAE,oBAAoB,IAAI;AAehC,QAAMC,SAAQ,YAAY,qBAAqB;AAC/C,QAAM,uBAAuB;AAC7B,QAAM,eAAe,uBAAO,IAAI,0BAA0B;AAS1D,aAAS,aAAa,KAAK,iBAAiB,aAAa;AACxD,YAAM,gBAAgB,gBAAgB;AACtC,YAAM,eAAe,cAAc,gBAAgB,CAAC;AACpD,YAAM,cAAc,gBAAgB,eAAe;AAEnD,aAAO,YAAY,QAAQ,KAAK;AAAA,QAC/B,YAAY;AAAA,QACZ,aAAa,aAAa;AAAA,QAC1B,eAAe,aAAa;AAAA,QAC5B,aAAa,OAAO,gBAAgB,WAAW,cAAc;AAAA,QAC7D,YAAY,gBAAgB,cAAc;AAAA,QAC1C,kBAAkB,eAAe,IAAI;AAAA,QACrC,UAAU,IAAI;AAAA,QACd,KAAK,aAAa;AAAA,MACnB,CAAC;AAAA,IACF;AAOA,aAAS,SAAS,QAAQ;AACzB,aAAO,CAAC,EAAE,WAAW,UAAU,OAAO,YAAY,MAAM;AAAA,IACzD;AAQA,aAAS,uCAAuC,aAAa;AAC5D,cAAQ,aAAa;AAAA,QACpB,KAAK;AACJ,iBAAO;AAAA;AAAA,QAGR,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO;AAAA,QAER;AACC,cAAI,OAAO,gBAAgB,UAAU;AACpC,mBAAO,eAAe,OAAO,cAAc,cAAc;AAAA,UAC1D;AAAA,MACF;AAQA,aAAO;AAAA,IACR;AASA,IAAAD,QAAO,UAAU;AAAA,MAChB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,aAAa;AAAA,MACb,aAAa;AAAA,MACb,aAAa,IAAI;AAAA,MAEjB,wBAAwB;AAAA,QACvB,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,QAAQ;AAAA,QACR,eAAe,CAAC;AAAA,MACjB;AAAA,MAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,yBAAyB,iBAAiB;AACzC,wBAAgB,cAAc;AAAA,UAC7B,gBAAgB;AAAA,QACjB;AAGA,YAAI,SAAS,gBAAgB,MAAM,GAAG;AACrC,gBAAM,gBAAgB,gBAAgB;AAEtC,cAAI,gBAAgB,YAAY;AAC/B,0BAAc,aAAa,gBAAgB;AAE3C,gBACC,cAAc,eAAe,YAC7B,cAAc,gBACd,cAAc,aAAa,cAC1B;AACD,4BAAc,aAAa,eAAe;AAAA,YAC3C;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,qBAAqB,WAAWE,OAAM,UAAU;AA4B/C,gBAAQ,UAAU,YAAY,GAAG;AAAA,UAChC,KAAK;AACJ,gBAAIA,MAAK,KAAK,MAAM,EAAE,MAAM,aAAa;AACxC,qBAAO;AAAA,YACR;AAAA;AAAA,UAID,KAAK;AACJ,mBAAOA,MAAK,KAAK,MAAM,GAAG,MAAM;AAAA,UAEjC,KAAK;AACJ,gBAAIA,MAAK,KAAK,MAAM,EAAE,MAAM,WAAW;AACtC,qBAAO;AAAA,YACR;AAAA;AAAA,UAID,KAAK;AACJ,mBACCA,MAAK,KAAK,MAAM,GAAG,MAAM,gBACzBA,MAAK,KAAK,MAAM,EAAE,MAAM,aACvBA,MAAK,SAAS,iBACb,SAAS,WAAW,KACpB,SAAS,CAAC,EAAE,SAAS,mBACvBA,MAAK,SAAS;AAAA,UAGhB,KAAK;AACJ,mBACCA,MAAK,SAAS,yBACdA,MAAK,SAAS,wBACdA,MAAK,SAAS;AAAA,UAGhB;AACC,kBAAM,IAAI,MAAM,uBAAuB,SAAS,EAAE;AAAA,QACpD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,MAAM,EAAE,gBAAgB,GAAG;AAEhC,cAAM,EAAE,MAAMC,OAAM,MAAM,SAAS,IAAI;AACvC,cAAM,cAAcA,MAAK;AAAA,UACxB,SAAS;AAAA,UACT,CAACC,QAAO,aAAa,KAAK,QAAQ;AAAA,QACnC;AACA,cAAM,EAAE,aAAa,YAAY,OAAO,IAAI;AAC5C,cAAM,gBAAgB,OAAO;AAAA,UAC5B,EAAE,aAAa,WAAW;AAAA,UAC1B,gBAAgB;AAAA,UAChB;AAAA,YACC,KAAK;AAAA,YACL,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,mBAAmB;AAAA,YACnB,oBAAoB;AAAA,YACpB;AAAA,UACD;AAAA,QACD;AAQA,YAAI;AACH,UAAAH,OAAM,YAAY,QAAQ;AAC1B,gBAAM,cACL,OAAO,OAAO,mBAAmB,aAC9B,OAAO,eAAe,aAAa,aAAa,IAChD,EAAE,KAAK,OAAO,MAAM,aAAa,aAAa,EAAE;AAEpD,UAAAA,OAAM,uBAAuB,QAAQ;AAErC,gBAAM;AAAA,YACL;AAAA,YACA,UAAU,iBAAiB,CAAC;AAAA,YAC5B,cAAc,IAAI;AAAA,YAClB;AAAA,UACD,IAAI;AAEJ,iBAAO;AAAA,YACN,IAAI;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD,SAAS,IAAI;AAEZ,gBAAM,UAAU,GAAG,QAAQ,QAAQ,gBAAgB,EAAE,EAAE,KAAK;AAE5D,UAAAA,OAAM,UAAU,SAAS,GAAG,KAAK;AAEjC,iBAAO;AAAA,YACN,IAAI;AAAA,YACJ,QAAQ;AAAA,cACP;AAAA,gBACC;AAAA,gBACA,MAAM,GAAG;AAAA,gBACT,QAAQ,GAAG;AAAA,cACZ;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,iBAAiB,MAAM,aAAa,EAAE,gBAAgB,GAAG;AACxD,cAAM,EAAE,MAAME,OAAM,MAAM,UAAU,KAAK,OAAO,IAAI;AACpD,cAAM,EAAE,KAAK,gBAAgB,YAAY,IAAI;AAE7C,QAAAF,OAAM,mBAAmB,QAAQ;AACjC,cAAM,eACL,YAAY,gBACZ,aAAa,KAAK,iBAAiB,WAAW;AAE/C,QAAAA,OAAM,8BAA8B,QAAQ;AAE5C,eAAO,IAAI,WAAW;AAAA,UACrB,MAAAE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,CAAC;AAAA,MACF;AAAA,IACD;AAAA;AAAA;;;AC/UA;AAAA,qDAAAE,UAAA;AAAA;AAWA,QAAM,QAAQ;AAMd,QAAM,sBAAsB;AAAA;AAAA,MAE3B;AAAA,QACC,OAAO,CAAC,WAAW,UAAU;AAAA,MAC9B;AAAA,MACA;AAAA,QACC,OAAO,CAAC,UAAU;AAAA,QAClB,iBAAiB;AAAA,UAChB,YAAY;AAAA,UACZ,aAAa;AAAA,QACd;AAAA,MACD;AAAA,IACD;AAEA,IAAAA,SAAQ,gBAAgB,OAAO,OAAO;AAAA,MACrC;AAAA,QACC,SAAS;AAAA,UACR,KAAK;AAAA,YACJ,WAAW;AAAA,cACV,IAAI;AAAA,YACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQA,OAAO,IAAI;AAAA,cACV,CAAC;AAAA,cACD;AAAA,gBACC,IAAI,QAAQ,UAAU;AACrB,yBAAO,MAAM,IAAI,QAAQ;AAAA,gBAC1B;AAAA,gBAEA,IAAI,QAAQ,UAAU;AACrB,yBAAO,MAAM,IAAI,QAAQ;AAAA,gBAC1B;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,UAAU;AAAA,QACV,eAAe;AAAA,UACd,+BAA+B;AAAA,QAChC;AAAA,MACD;AAAA;AAAA,MAGA;AAAA,QACC,SAAS,CAAC,oBAAoB,OAAO;AAAA,MACtC;AAAA,MAEA,GAAG;AAAA,IACJ,CAAC;AAED,IAAAA,SAAQ,0BAA0B,OAAO,OAAO;AAAA,MAC/C,EAAE,OAAO,CAAC,IAAI,EAAE;AAAA;AAAA,MAEhB,GAAG;AAAA,IACJ,CAAC;AAAA;AAAA;;;AC7ED;AAAA,4CAAAC,UAAAC,SAAA;AAAA;AAWA,aAAS,YAAY;AACpB,aAAO,QAAQ,OAAO;AAAA,IACvB;AAOA,aAAS,QAAQ,GAAG;AACnB,YAAM,OAAO,QAAQ,OAAO,CAAC;AAE7B,aAAO,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI;AAAA,IAClC;AAEA,IAAAA,QAAO,UAAU;AAAA,MAChB;AAAA,MACA;AAAA,IACD;AAAA;AAAA;;;AC7BA;AAAA,6CAAAC,UAAAC,SAAA;AAAA;AAOA,QAAM,EAAE,WAAW,QAAQ,IAAI;AAe/B,aAAS,UAAU,KAAK,KAAK,IAAI;AAChC,aAAO,MAAM,IAAI,MAAM,MAAM,IAAI,SAAS,CAAC,EAAE,KAAK,MAAM,GAAG;AAAA,IAC5D;AAWA,aAAS,WAAW,KAAK,KAAK,IAAI;AACjC,aAAO,IAAI,MAAM,MAAM,IAAI,SAAS,CAAC,EAAE,KAAK,MAAM,GAAG,IAAI;AAAA,IAC1D;AAMA,QAAM,UAAU,CAAC,CAAC,QAAQ,IAAI;AAE9B,QAAM,UAAU,CAAC,QAAQ,aAAa,UAAU;AAChD,QAAM,QAAQ,CAAC,WAAW,YAAY,UAAU;AAMhD,aAAS,cAAc;AACtB,YAAM,eAAe;AAErB,UAAI,OAAO,QAAQ,IAAI,WAAW,UAAU;AAC3C,eAAO;AAAA,MACR;AAEA,UAAI,QAAQ,IAAI,OAAO,YAAY,MAAM,OAAO;AAC/C,eAAO,OAAO;AAAA,MACf;AAEA,YAAM,4BAA4B,OAAO,SAAS,QAAQ,IAAI,QAAQ,EAAE;AAExE,aAAO,4BAA4B,KAChC,4BACA;AAAA,IACJ;AASA,aAAS,QAAQ,MAAM;AACtB,UAAI,QAAQ;AACZ,YAAM,OAAO,OAAO,KAAK,IAAI,EAC3B,IAAI,SAAO;AACX,cAAM,OAAO,KAAK,GAAG;AAErB,iBAAS;AACT,eAAO,CAAC,KAAK,IAAI;AAAA,MAClB,CAAC,EACA,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAC1B,MAAM,GAAG,YAAY,CAAC;AAExB,WAAK,QAAQ,SAAO;AACnB,YAAI,KAAK,IAAK,IAAI,CAAC,IAAI,MAAO,OAAO,QAAQ,CAAC,CAAC,GAAG;AAClD,YAAI,CAAC,IAAI,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA,MAC1B,CAAC;AAED,WAAK,QAAQ,OAAO;AAEpB,YAAM,SAAS,CAAC;AAEhB,WAAK,QAAQ,SAAO;AACnB,cAAM,MAAM,IAAI;AAEhB,iBAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC7B,gBAAM,IAAI,IAAI,CAAC,EAAE;AAEjB,cAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG;AAChC,mBAAO,CAAC,IAAI;AAAA,UACb;AAAA,QACD;AAAA,MACD,CAAC;AAED,YAAM,QAAQ,KAAK;AAAA,QAAI,SACtB,IAAI,IAAI,CAAC,MAAMC,WAAU,MAAMA,MAAK,EAAE,MAAM,OAAOA,MAAK,CAAC,CAAC,EAAE,KAAK,KAAK;AAAA,MACvE;AAEA,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA,OACE,IAAI,CAAC,OAAOA,WAAU;AACtB,gBAAM,iBACLA,WAAU,KAAKA,WAAU,OAAO,SAAS,IAAI,IAAI;AAElD,iBAAO,MAAMA,MAAK,EAAE,KAAK,QAAQ,gBAAgB,GAAG;AAAA,QACrD,CAAC,EACA,KAAK,GAAG;AAAA,MACX;AAEA,cAAQ,IAAI,MAAM,KAAK,IAAI,CAAC;AAAA,IAC7B;AAGA,IAAAD,QAAO,WAAW,WAAY;AAC7B,YAAM,OAAO,uBAAO,OAAO,IAAI;AAC/B,UAAI,iBAAiB;AAUrB,eAAS,KAAK,KAAK,IAAI,OAAO;AAC7B,eAAO,YAAa,MAAM;AACzB,gBAAM,IAAI,UAAU;AACpB,gBAAM,SAAS,GAAG,GAAG,IAAI;AACzB,gBAAM,QAAQ,QAAQ,CAAC;AAEvB,cAAI,SAAS;AACZ,gBAAI,OAAO,KAAK,GAAG,MAAM,aAAa;AACrC,mBAAK,GAAG,IAAI;AAAA,YACb;AAEA,iBAAK,GAAG,KAAK;AAAA,UACd;AAEA,iBAAO,QAAQ,EAAE,QAAQ,MAAM,IAAI;AAAA,QACpC;AAAA,MACD;AAMA,eAAS,UAAU;AAClB,eAAO,EAAE,GAAG,KAAK;AAAA,MAClB;AAOA,eAAS,UAAU,aAAa;AAC/B,mBAAW,CAAC,KAAKE,MAAK,KAAK,OAAO,QAAQ,WAAW,GAAG;AACvD,cAAI,OAAO,KAAK,GAAG,MAAM,aAAa;AACrC,iBAAK,GAAG,IAAI;AAAA,UACb;AACA,eAAK,GAAG,KAAKA;AAAA,QACd;AAAA,MACD;AAOA,eAAS,iBAAiB;AACzB,yBAAiB;AAAA,MAClB;AAEA,UAAI,SAAS;AACZ,gBAAQ,GAAG,QAAQ,MAAM;AACxB,cAAI,kBAAkB,OAAO,KAAK,IAAI,EAAE,SAAS,GAAG;AACnD,oBAAQ,IAAI;AAAA,UACb;AAAA,QACD,CAAC;AAAA,MACF;AAEA,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACD,GAAG;AAAA;AAAA;;;AChNH;AAAA,qCAAAC,UAAAC,SAAA;AAOA,IAAAA,QAAO,UAAU,SAAS,UAAU,KAAK;AACvC,UAAI,OAAO,QAAQ,YAAY,QAAQ,IAAI;AACzC,eAAO;AAAA,MACT;AAEA,UAAIC;AACJ,aAAQA,SAAQ,yBAAyB,KAAK,GAAG,GAAI;AACnD,YAAIA,OAAM,CAAC,EAAG,QAAO;AACrB,cAAM,IAAI,MAAMA,OAAM,QAAQA,OAAM,CAAC,EAAE,MAAM;AAAA,MAC/C;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACnBA;AAAA,kCAAAC,UAAAC,SAAA;AAOA,QAAI,YAAY;AAChB,QAAI,QAAQ,EAAE,KAAK,KAAK,KAAK,KAAK,KAAK,IAAG;AAC1C,QAAI,cAAc,SAAS,KAAK;AAC9B,UAAI,IAAI,CAAC,MAAM,KAAK;AAClB,eAAO;AAAA,MACT;AACA,UAAIC,SAAQ;AACZ,UAAI,YAAY;AAChB,UAAI,mBAAmB;AACvB,UAAI,kBAAkB;AACtB,UAAI,kBAAkB;AACtB,UAAI,iBAAiB;AACrB,aAAOA,SAAQ,IAAI,QAAQ;AACzB,YAAI,IAAIA,MAAK,MAAM,KAAK;AACtB,iBAAO;AAAA,QACT;AAEA,YAAI,IAAIA,SAAQ,CAAC,MAAM,OAAO,UAAU,KAAK,IAAIA,MAAK,CAAC,GAAG;AACxD,iBAAO;AAAA,QACT;AAEA,YAAI,qBAAqB,MAAM,IAAIA,MAAK,MAAM,OAAO,IAAIA,SAAQ,CAAC,MAAM,KAAK;AAC3E,cAAI,mBAAmBA,QAAO;AAC5B,+BAAmB,IAAI,QAAQ,KAAKA,MAAK;AAAA,UAC3C;AACA,cAAI,mBAAmBA,QAAO;AAC5B,gBAAI,mBAAmB,MAAM,iBAAiB,kBAAkB;AAC9D,qBAAO;AAAA,YACT;AACA,6BAAiB,IAAI,QAAQ,MAAMA,MAAK;AACxC,gBAAI,mBAAmB,MAAM,iBAAiB,kBAAkB;AAC9D,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA,YAAI,oBAAoB,MAAM,IAAIA,MAAK,MAAM,OAAO,IAAIA,SAAQ,CAAC,MAAM,KAAK;AAC1E,4BAAkB,IAAI,QAAQ,KAAKA,MAAK;AACxC,cAAI,kBAAkBA,QAAO;AAC3B,6BAAiB,IAAI,QAAQ,MAAMA,MAAK;AACxC,gBAAI,mBAAmB,MAAM,iBAAiB,iBAAiB;AAC7D,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA,YAAI,oBAAoB,MAAM,IAAIA,MAAK,MAAM,OAAO,IAAIA,SAAQ,CAAC,MAAM,OAAO,QAAQ,KAAK,IAAIA,SAAQ,CAAC,CAAC,KAAK,IAAIA,SAAQ,CAAC,MAAM,KAAK;AACpI,4BAAkB,IAAI,QAAQ,KAAKA,MAAK;AACxC,cAAI,kBAAkBA,QAAO;AAC3B,6BAAiB,IAAI,QAAQ,MAAMA,MAAK;AACxC,gBAAI,mBAAmB,MAAM,iBAAiB,iBAAiB;AAC7D,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA,YAAI,cAAc,MAAM,IAAIA,MAAK,MAAM,OAAO,IAAIA,SAAQ,CAAC,MAAM,KAAK;AACpE,cAAI,YAAYA,QAAO;AACrB,wBAAY,IAAI,QAAQ,KAAKA,MAAK;AAAA,UACpC;AACA,cAAI,cAAc,MAAM,IAAI,YAAY,CAAC,MAAM,KAAK;AAClD,8BAAkB,IAAI,QAAQ,KAAK,SAAS;AAC5C,gBAAI,kBAAkB,WAAW;AAC/B,+BAAiB,IAAI,QAAQ,MAAM,SAAS;AAC5C,kBAAI,mBAAmB,MAAM,iBAAiB,iBAAiB;AAC7D,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,IAAIA,MAAK,MAAM,MAAM;AACvB,cAAIC,QAAO,IAAID,SAAQ,CAAC;AACxB,UAAAA,UAAS;AACT,cAAIE,SAAQ,MAAMD,KAAI;AAEtB,cAAIC,QAAO;AACT,gBAAI,IAAI,IAAI,QAAQA,QAAOF,MAAK;AAChC,gBAAI,MAAM,IAAI;AACZ,cAAAA,SAAQ,IAAI;AAAA,YACd;AAAA,UACF;AAEA,cAAI,IAAIA,MAAK,MAAM,KAAK;AACtB,mBAAO;AAAA,UACT;AAAA,QACF,OAAO;AACL,UAAAA;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QAAI,eAAe,SAAS,KAAK;AAC/B,UAAI,IAAI,CAAC,MAAM,KAAK;AAClB,eAAO;AAAA,MACT;AACA,UAAIA,SAAQ;AACZ,aAAOA,SAAQ,IAAI,QAAQ;AACzB,YAAI,cAAc,KAAK,IAAIA,MAAK,CAAC,GAAG;AAClC,iBAAO;AAAA,QACT;AAEA,YAAI,IAAIA,MAAK,MAAM,MAAM;AACvB,cAAIC,QAAO,IAAID,SAAQ,CAAC;AACxB,UAAAA,UAAS;AACT,cAAIE,SAAQ,MAAMD,KAAI;AAEtB,cAAIC,QAAO;AACT,gBAAI,IAAI,IAAI,QAAQA,QAAOF,MAAK;AAChC,gBAAI,MAAM,IAAI;AACZ,cAAAA,SAAQ,IAAI;AAAA,YACd;AAAA,UACF;AAEA,cAAI,IAAIA,MAAK,MAAM,KAAK;AACtB,mBAAO;AAAA,UACT;AAAA,QACF,OAAO;AACL,UAAAA;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,IAAAD,QAAO,UAAU,SAAS,OAAO,KAAK,SAAS;AAC7C,UAAI,OAAO,QAAQ,YAAY,QAAQ,IAAI;AACzC,eAAO;AAAA,MACT;AAEA,UAAI,UAAU,GAAG,GAAG;AAClB,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ;AAGZ,UAAI,WAAW,QAAQ,WAAW,OAAO;AACvC,gBAAQ;AAAA,MACV;AAEA,aAAO,MAAM,GAAG;AAAA,IAClB;AAAA;AAAA;;;ACrJA;AAAA,4CAAAI,UAAAC,SAAA;AAWA,KAAC,WAAU;AACP,UAAIC;AAQJ,eAAS,YAAY,KAAK,MAAM;AAC5B,YAAI,IAAI,gBAAgB,cAAc,OAAOA;AAC7C,UAAE,MAAM,IAAI;AACZ,YAAI,OAAO,QAAQ,YAAY,IAAI,SAAS,GAAG;AAC3C,YAAE,KAAK,GAAG;AAAA,QACd;AAEA,YAAI,MAAM,MAAM;AACZ,iBAAO;AAAA,QACX;AAAA,MACJ;AAAC;AAMD,kBAAY,UAAU,OAAO,SAAS,KAAK;AACvC,YAAI,IAAI,IAAI,GAAG,KAAK;AAEpB,cAAM,IAAI;AACV,aAAK,OAAO;AAEZ,aAAK,KAAK;AACV,YAAI;AACJ,gBAAQ,KAAK,KAAK;AAAA,UACd,KAAK;AAAG,kBAAM,MAAM,IAAK,IAAI,WAAW,GAAG,IAAI,QAAU;AAAA,UACzD,KAAK;AAAG,kBAAM,MAAM,KAAK,IAAI,WAAW,GAAG,IAAI,UAAW,IAAI;AAAA,UAC9D,KAAK;AAAG,kBAAM,MAAM,KAAK,IAAI,WAAW,GAAG,IAAI,UAAW,KAAK;AAAA,UAC/D,KAAK;AACD,kBAAM,MAAM,KAAK,IAAI,WAAW,CAAC,IAAI,QAAS,KAAK;AACnD,kBAAM,MAAM,KAAK,IAAI,WAAW,GAAG,IAAI,UAAW,IAAI;AAAA,QAC9D;AAEA,aAAK,MAAO,MAAM,KAAK,MAAO;AAC9B,eAAO,KAAK;AACZ,YAAI,MAAM,GAAG;AACT,eAAK,KAAK;AACV,iBAAO,GAAG;AACN,iBAAM,KAAK,SAAU,KAAK,SAAU,aAAc;AAClD,iBAAM,MAAM,KAAO,OAAO;AAC1B,iBAAM,KAAK,SAAU,KAAK,SAAU,YAAc;AAElD,kBAAM;AACN,iBAAM,MAAM,KAAO,OAAO;AAC1B,iBAAM,KAAK,IAAI,aAAc;AAE7B,gBAAI,KAAK,KAAK;AACV;AAAA,YACJ;AAEA,iBAAO,IAAI,WAAW,GAAG,IAAI,SACtB,IAAI,WAAW,GAAG,IAAI,UAAW,KACjC,IAAI,WAAW,GAAG,IAAI,UAAW;AACxC,kBAAM,IAAI,WAAW,GAAG;AACxB,mBAAQ,MAAM,QAAS,MACf,MAAM,UAAW;AAAA,UAC7B;AAEA,eAAK;AACL,kBAAQ,KAAK,KAAK;AAAA,YACd,KAAK;AAAG,qBAAO,IAAI,WAAW,IAAI,CAAC,IAAI,UAAW;AAAA,YAClD,KAAK;AAAG,qBAAO,IAAI,WAAW,IAAI,CAAC,IAAI,UAAW;AAAA,YAClD,KAAK;AAAG,oBAAO,IAAI,WAAW,CAAC,IAAI;AAAA,UACvC;AAEA,eAAK,KAAK;AAAA,QACd;AAEA,aAAK,KAAK;AACV,eAAO;AAAA,MACX;AAKA,kBAAY,UAAU,SAAS,WAAW;AACtC,YAAI,IAAI;AAER,aAAK,KAAK;AACV,aAAK,KAAK;AAEV,YAAI,KAAK,GAAG;AACR,eAAM,KAAK,SAAU,KAAK,SAAU,aAAc;AAClD,eAAM,MAAM,KAAO,OAAO;AAC1B,eAAM,KAAK,SAAU,KAAK,SAAU,YAAc;AAClD,gBAAM;AAAA,QACV;AAEA,cAAM,KAAK;AAEX,cAAM,OAAO;AACb,aAAM,KAAK,SAAU,KAAK,SAAU,aAAc;AAClD,cAAM,OAAO;AACb,aAAM,KAAK,SAAU,KAAK,SAAU,aAAc;AAClD,cAAM,OAAO;AAEb,eAAO,OAAO;AAAA,MAClB;AAKA,kBAAY,UAAU,QAAQ,SAAS,MAAM;AACzC,aAAK,KAAK,OAAO,SAAS,WAAW,OAAO;AAC5C,aAAK,MAAM,KAAK,KAAK,KAAK,MAAM;AAChC,eAAO;AAAA,MACX;AAIA,MAAAA,SAAQ,IAAI,YAAY;AAExB,UAAI,OAAOD,WAAW,aAAa;AAC/B,QAAAA,QAAO,UAAU;AAAA,MACrB,OAAO;AACH,aAAK,cAAc;AAAA,MACvB;AAAA,IACJ,GAAE;AAAA;AAAA;;;ACzIF;AAAA,+CAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,SAAS;AAef,aAAS,KAAK,KAAK;AAClB,aAAO,OAAO,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE;AAAA,IACxC;AAMA,IAAAA,QAAO,UAAU;AAAA;AAAA;;;;;;;;AClCV,QAAM,WAAW,CACtB,GACA,GACA,QACE;AACF,YAAM,KAAK,aAAa,SAAS,WAAW,GAAG,GAAG,IAAI;AACtD,YAAM,KAAK,aAAa,SAAS,WAAW,GAAG,GAAG,IAAI;AAEtD,YAAM,IAAI,OAAO,QAAQ,MAAM,SAAQ,GAAAC,SAAA,OAAM,IAAI,IAAI,GAAG;AAExD,aACE,KAAK;QACH,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,CAAC;QACR,KAAK,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;QACtB,MAAM,IAAI,MAAM,EAAE,CAAC,IAAI,GAAG,QAAQ,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,MAAM,EAAE,CAAC,IAAI,GAAG,MAAM;;IAGtC;AAnBa,IAAAA,SAAA,WAAQ;AAqBrB,QAAM,aAAa,CAAC,KAAa,QAAe;AAC9C,YAAM,IAAI,IAAI,MAAM,GAAG;AACvB,aAAO,IAAI,EAAE,CAAC,IAAI;IACpB;AAEO,QAAM,QAAQ,CACnB,GACA,GACA,QACgC;AAChC,UAAI,MACF,KACA,MACA,QAA4B,QAC5B;AACF,UAAI,KAAK,IAAI,QAAQ,CAAC;AACtB,UAAI,KAAK,IAAI,QAAQ,GAAG,KAAK,CAAC;AAC9B,UAAI,IAAI;AAER,UAAI,MAAM,KAAK,KAAK,GAAG;AACrB,YAAI,MAAM,GAAG;AACX,iBAAO,CAAC,IAAI,EAAE;QAChB;AACA,eAAO,CAAA;AACP,eAAO,IAAI;AAEX,eAAO,KAAK,KAAK,CAAC,QAAQ;AACxB,cAAI,MAAM,IAAI;AACZ,iBAAK,KAAK,CAAC;AACX,iBAAK,IAAI,QAAQ,GAAG,IAAI,CAAC;UAC3B,WAAW,KAAK,WAAW,GAAG;AAC5B,kBAAM,IAAI,KAAK,IAAG;AAClB,gBAAI,MAAM;AAAW,uBAAS,CAAC,GAAG,EAAE;UACtC,OAAO;AACL,kBAAM,KAAK,IAAG;AACd,gBAAI,QAAQ,UAAa,MAAM,MAAM;AACnC,qBAAO;AACP,sBAAQ;YACV;AAEA,iBAAK,IAAI,QAAQ,GAAG,IAAI,CAAC;UAC3B;AAEA,cAAI,KAAK,MAAM,MAAM,IAAI,KAAK;QAChC;AAEA,YAAI,KAAK,UAAU,UAAU,QAAW;AACtC,mBAAS,CAAC,MAAM,KAAK;QACvB;MACF;AAEA,aAAO;IACT;AA/Ca,IAAAA,SAAA,QAAK;;;;;;;;;;ACoDlB,IAAAC,SAAA,SAAA;AA9EA,QAAA,mBAAA;AAEA,QAAM,WAAW,YAAY,KAAK,OAAM,IAAK;AAC7C,QAAM,UAAU,WAAW,KAAK,OAAM,IAAK;AAC3C,QAAM,WAAW,YAAY,KAAK,OAAM,IAAK;AAC7C,QAAM,WAAW,YAAY,KAAK,OAAM,IAAK;AAC7C,QAAM,YAAY,aAAa,KAAK,OAAM,IAAK;AAC/C,QAAM,kBAAkB,IAAI,OAAO,UAAU,GAAG;AAChD,QAAM,iBAAiB,IAAI,OAAO,SAAS,GAAG;AAC9C,QAAM,kBAAkB,IAAI,OAAO,UAAU,GAAG;AAChD,QAAM,kBAAkB,IAAI,OAAO,UAAU,GAAG;AAChD,QAAM,mBAAmB,IAAI,OAAO,WAAW,GAAG;AAClD,QAAM,eAAe;AACrB,QAAM,cAAc;AACpB,QAAM,eAAe;AACrB,QAAM,eAAe;AACrB,QAAM,gBAAgB;AAET,IAAAA,SAAA,gBAAgB;AAE7B,aAAS,QAAQ,KAAW;AAC1B,aAAO,CAAC,MAAM,GAAU,IAAI,SAAS,KAAK,EAAE,IAAI,IAAI,WAAW,CAAC;IAClE;AAEA,aAAS,aAAa,KAAW;AAC/B,aAAO,IACJ,QAAQ,cAAc,QAAQ,EAC9B,QAAQ,aAAa,OAAO,EAC5B,QAAQ,cAAc,QAAQ,EAC9B,QAAQ,cAAc,QAAQ,EAC9B,QAAQ,eAAe,SAAS;IACrC;AAEA,aAAS,eAAe,KAAW;AACjC,aAAO,IACJ,QAAQ,iBAAiB,IAAI,EAC7B,QAAQ,gBAAgB,GAAG,EAC3B,QAAQ,iBAAiB,GAAG,EAC5B,QAAQ,iBAAiB,GAAG,EAC5B,QAAQ,kBAAkB,GAAG;IAClC;AAOA,aAAS,gBAAgB,KAAW;AAClC,UAAI,CAAC,KAAK;AACR,eAAO,CAAC,EAAE;MACZ;AAEA,YAAM,QAAkB,CAAA;AACxB,YAAM,KAAI,GAAA,iBAAA,UAAS,KAAK,KAAK,GAAG;AAEhC,UAAI,CAAC,GAAG;AACN,eAAO,IAAI,MAAM,GAAG;MACtB;AAEA,YAAM,EAAE,KAAK,MAAM,KAAI,IAAK;AAC5B,YAAM,IAAI,IAAI,MAAM,GAAG;AAEvB,QAAE,EAAE,SAAS,CAAC,KAAK,MAAM,OAAO;AAChC,YAAM,YAAY,gBAAgB,IAAI;AACtC,UAAI,KAAK,QAAQ;AACf;AAAE,UAAE,EAAE,SAAS,CAAC,KAAgB,UAAU,MAAK;AAC/C,UAAE,KAAK,MAAM,GAAG,SAAS;MAC3B;AAEA,YAAM,KAAK,MAAM,OAAO,CAAC;AAEzB,aAAO;IACT;AAMA,aAAgB,OAAO,KAAa,UAAiC,CAAA,GAAE;AACrE,UAAI,CAAC,KAAK;AACR,eAAO,CAAA;MACT;AAEA,YAAM,EAAE,KAAAC,OAAMD,SAAA,cAAa,IAAK;AAQhC,UAAI,IAAI,MAAM,GAAG,CAAC,MAAM,MAAM;AAC5B,cAAM,WAAW,IAAI,MAAM,CAAC;MAC9B;AAEA,aAAO,QAAQ,aAAa,GAAG,GAAGC,MAAK,IAAI,EAAE,IAAI,cAAc;IACjE;AAEA,aAAS,QAAQ,KAAW;AAC1B,aAAO,MAAM,MAAM;IACrB;AAEA,aAAS,SAAS,IAAU;AAC1B,aAAO,SAAS,KAAK,EAAE;IACzB;AAEA,aAAS,IAAI,GAAW,GAAS;AAC/B,aAAO,KAAK;IACd;AAEA,aAAS,IAAI,GAAW,GAAS;AAC/B,aAAO,KAAK;IACd;AAEA,aAAS,QAAQ,KAAaA,MAAa,OAAc;AAEvD,YAAM,aAAuB,CAAA;AAE7B,YAAM,KAAI,GAAA,iBAAA,UAAS,KAAK,KAAK,GAAG;AAChC,UAAI,CAAC;AAAG,eAAO,CAAC,GAAG;AAGnB,YAAM,MAAM,EAAE;AACd,YAAM,OAAiB,EAAE,KAAK,SAAS,QAAQ,EAAE,MAAMA,MAAK,KAAK,IAAI,CAAC,EAAE;AAExE,UAAI,MAAM,KAAK,EAAE,GAAG,GAAG;AACrB,iBAAS,IAAI,GAAG,IAAI,KAAK,UAAU,IAAIA,MAAK,KAAK;AAC/C,gBAAM,YAAY,MAAM,MAAM,EAAE,OAAO,MAAM,KAAK,CAAC;AACnD,qBAAW,KAAK,SAAS;QAC3B;MACF,OAAO;AACL,cAAM,oBAAoB,iCAAiC,KAAK,EAAE,IAAI;AACtE,cAAM,kBAAkB,uCAAuC,KAC7D,EAAE,IAAI;AAER,cAAM,aAAa,qBAAqB;AACxC,cAAM,YAAY,EAAE,KAAK,QAAQ,GAAG,KAAK;AACzC,YAAI,CAAC,cAAc,CAAC,WAAW;AAE7B,cAAI,EAAE,KAAK,MAAM,YAAY,GAAG;AAC9B,kBAAM,EAAE,MAAM,MAAM,EAAE,OAAO,WAAW,EAAE;AAC1C,mBAAO,QAAQ,KAAKA,MAAK,IAAI;UAC/B;AACA,iBAAO,CAAC,GAAG;QACb;AAEA,YAAI;AACJ,YAAI,YAAY;AACd,cAAI,EAAE,KAAK,MAAM,MAAM;QACzB,OAAO;AACL,cAAI,gBAAgB,EAAE,IAAI;AAC1B,cAAI,EAAE,WAAW,KAAK,EAAE,CAAC,MAAM,QAAW;AAExC,gBAAI,QAAQ,EAAE,CAAC,GAAGA,MAAK,KAAK,EAAE,IAAI,OAAO;AAGzC,gBAAI,EAAE,WAAW,GAAG;AAClB,qBAAO,KAAK,IAAI,OAAK,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC;YACvC;UAEF;QACF;AAIA,YAAI;AAEJ,YAAI,cAAc,EAAE,CAAC,MAAM,UAAa,EAAE,CAAC,MAAM,QAAW;AAC1D,gBAAM,IAAI,QAAQ,EAAE,CAAC,CAAC;AACtB,gBAAM,IAAI,QAAQ,EAAE,CAAC,CAAC;AACtB,gBAAM,QAAQ,KAAK,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM;AAC/C,cAAI,OACF,EAAE,WAAW,KAAK,EAAE,CAAC,MAAM,SACzB,KAAK,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IACnC;AACJ,cAAI,OAAO;AACX,gBAAM,UAAU,IAAI;AACpB,cAAI,SAAS;AACX,oBAAQ;AACR,mBAAO;UACT;AACA,gBAAM,MAAM,EAAE,KAAK,QAAQ;AAE3B,cAAI,CAAA;AAEJ,mBAAS,IAAI,GAAG,KAAK,GAAG,CAAC,KAAK,EAAE,SAASA,MAAK,KAAK,MAAM;AACvD,gBAAI;AACJ,gBAAI,iBAAiB;AACnB,kBAAI,OAAO,aAAa,CAAC;AACzB,kBAAI,MAAM,MAAM;AACd,oBAAI;cACN;YACF,OAAO;AACL,kBAAI,OAAO,CAAC;AACZ,kBAAI,KAAK;AACP,sBAAM,OAAO,QAAQ,EAAE;AACvB,oBAAI,OAAO,GAAG;AACZ,wBAAM,IAAI,IAAI,MAAM,OAAO,CAAC,EAAE,KAAK,GAAG;AACtC,sBAAI,IAAI,GAAG;AACT,wBAAI,MAAM,IAAI,EAAE,MAAM,CAAC;kBACzB,OAAO;AACL,wBAAI,IAAI;kBACV;gBACF;cACF;YACF;AACA,cAAE,KAAK,CAAC;UACV;QACF,OAAO;AACL,cAAI,CAAA;AAEJ,mBAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,cAAE,KAAK,MAAM,GAAG,QAAQ,EAAE,CAAC,GAAaA,MAAK,KAAK,CAAC;UACrD;QACF;AAEA,iBAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,mBAAS,IAAI,GAAG,IAAI,KAAK,UAAU,WAAW,SAASA,MAAK,KAAK;AAC/D,kBAAM,YAAY,MAAM,EAAE,CAAC,IAAI,KAAK,CAAC;AACrC,gBAAI,CAAC,SAAS,cAAc,WAAW;AACrC,yBAAW,KAAK,SAAS;YAC3B;UACF;QACF;MACF;AAEA,aAAO;IACT;;;;;;;;;;ACnOA,QAAM,qBAAqB,OAAO;AAC3B,QAAM,qBAAiD,CAC5D,YAC6B;AAC7B,UAAI,OAAO,YAAY,UAAU;AAC/B,cAAM,IAAI,UAAU,iBAAiB;MACvC;AAEA,UAAI,QAAQ,SAAS,oBAAoB;AACvC,cAAM,IAAI,UAAU,qBAAqB;MAC3C;IACF;AAVa,IAAAC,SAAA,qBAAkB;;;;;;;;;;ACG/B,QAAM,eACJ;MACE,aAAa,CAAC,wBAAwB,IAAI;MAC1C,aAAa,CAAC,iBAAiB,IAAI;MACnC,aAAa,CAAC,eAAyB,KAAK;MAC5C,aAAa,CAAC,cAAc,IAAI;MAChC,aAAa,CAAC,WAAW,IAAI;MAC7B,aAAa,CAAC,WAAW,IAAI;MAC7B,aAAa,CAAC,gBAAgB,MAAM,IAAI;MACxC,aAAa,CAAC,WAAW,IAAI;MAC7B,aAAa,CAAC,UAAU,IAAI;MAC5B,aAAa,CAAC,UAAU,IAAI;MAC5B,aAAa,CAAC,yBAAyB,IAAI;MAC3C,aAAa,CAAC,WAAW,IAAI;MAC7B,YAAY,CAAC,+BAA+B,IAAI;MAChD,cAAc,CAAC,aAAa,KAAK;;AAKrC,QAAM,cAAc,CAAC,MAAc,EAAE,QAAQ,aAAa,MAAM;AAEhE,QAAM,eAAe,CAAC,MACpB,EAAE,QAAQ,4BAA4B,MAAM;AAG9C,QAAM,iBAAiB,CAAC,WAA6B,OAAO,KAAK,EAAE;AAe5D,QAAM,aAAa,CACxB,MACAC,cACoB;AACpB,YAAM,MAAMA;AAEZ,UAAI,KAAK,OAAO,GAAG,MAAM,KAAK;AAC5B,cAAM,IAAI,MAAM,2BAA2B;MAC7C;AAEA,YAAM,SAAmB,CAAA;AACzB,YAAM,OAAiB,CAAA;AAEvB,UAAI,IAAI,MAAM;AACd,UAAI,WAAW;AACf,UAAI,QAAQ;AACZ,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,SAAS;AACb,UAAI,aAAa;AACjB,YAAO,QAAO,IAAI,KAAK,QAAQ;AAC7B,cAAM,IAAI,KAAK,OAAO,CAAC;AACvB,aAAK,MAAM,OAAO,MAAM,QAAQ,MAAM,MAAM,GAAG;AAC7C,mBAAS;AACT;AACA;QACF;AAEA,YAAI,MAAM,OAAO,YAAY,CAAC,UAAU;AACtC,mBAAS,IAAI;AACb;QACF;AAEA,mBAAW;AACX,YAAI,MAAM,MAAM;AACd,cAAI,CAAC,UAAU;AACb,uBAAW;AACX;AACA;UACF;QAEF;AACA,YAAI,MAAM,OAAO,CAAC,UAAU;AAE1B,qBAAW,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,OAAO,QAAQ,YAAY,GAAG;AAChE,gBAAI,KAAK,WAAW,KAAK,CAAC,GAAG;AAE3B,kBAAI,YAAY;AACd,uBAAO,CAAC,MAAM,OAAO,KAAK,SAAS,KAAK,IAAI;cAC9C;AACA,mBAAK,IAAI;AACT,kBAAI;AAAK,qBAAK,KAAK,IAAI;;AAClB,uBAAO,KAAK,IAAI;AACrB,sBAAQ,SAAS;AACjB,uBAAS;YACX;UACF;QACF;AAGA,mBAAW;AACX,YAAI,YAAY;AAGd,cAAI,IAAI,YAAY;AAClB,mBAAO,KAAK,YAAY,UAAU,IAAI,MAAM,YAAY,CAAC,CAAC;UAC5D,WAAW,MAAM,YAAY;AAC3B,mBAAO,KAAK,YAAY,CAAC,CAAC;UAC5B;AACA,uBAAa;AACb;AACA;QACF;AAIA,YAAI,KAAK,WAAW,MAAM,IAAI,CAAC,GAAG;AAChC,iBAAO,KAAK,YAAY,IAAI,GAAG,CAAC;AAChC,eAAK;AACL;QACF;AACA,YAAI,KAAK,WAAW,KAAK,IAAI,CAAC,GAAG;AAC/B,uBAAa;AACb,eAAK;AACL;QACF;AAGA,eAAO,KAAK,YAAY,CAAC,CAAC;AAC1B;MACF;AAEA,UAAI,SAAS,GAAG;AAGd,eAAO,CAAC,IAAI,OAAO,GAAG,KAAK;MAC7B;AAIA,UAAI,CAAC,OAAO,UAAU,CAAC,KAAK,QAAQ;AAClC,eAAO,CAAC,MAAM,OAAO,KAAK,SAAS,KAAK,IAAI;MAC9C;AAMA,UACE,KAAK,WAAW,KAChB,OAAO,WAAW,KAClB,SAAS,KAAK,OAAO,CAAC,CAAC,KACvB,CAAC,QACD;AACA,cAAM,IAAI,OAAO,CAAC,EAAE,WAAW,IAAI,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,OAAO,CAAC;AACjE,eAAO,CAAC,aAAa,CAAC,GAAG,OAAO,SAAS,KAAK,KAAK;MACrD;AAEA,YAAM,UAAU,OAAO,SAAS,MAAM,MAAM,eAAe,MAAM,IAAI;AACrE,YAAM,QAAQ,OAAO,SAAS,KAAK,OAAO,eAAe,IAAI,IAAI;AACjE,YAAM,OACJ,OAAO,UAAU,KAAK,SAAS,MAAM,UAAU,MAAM,QAAQ,MAC3D,OAAO,SAAS,UAChB;AAEJ,aAAO,CAAC,MAAM,OAAO,SAAS,KAAK,IAAI;IACzC;AA9Ha,IAAAC,SAAA,aAAU;;;;;;;;;;ACvBhB,QAAMC,YAAW,CACtB,GACA,EACE,uBAAuB,OACvB,gBAAgB,KAAI,IACgD,CAAA,MACpE;AACF,UAAI,eAAe;AACjB,eAAO,uBACH,EAAE,QAAQ,iBAAiB,IAAI,IAC/B,EACG,QAAQ,4BAA4B,MAAM,EAC1C,QAAQ,aAAa,IAAI;MAClC;AACA,aAAO,uBACH,EAAE,QAAQ,mBAAmB,IAAI,IACjC,EACG,QAAQ,8BAA8B,MAAM,EAC5C,QAAQ,eAAe,IAAI;IACpC;AAnBa,IAAAC,SAAA,WAAQD;;;;;;;;;;;ACpBrB,QAAA,yBAAA;AAEA,QAAA,gBAAA;AAwCA,QAAM,QAAQ,oBAAI,IAAiB,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC5D,QAAM,gBAAgB,CAAC,MACrB,MAAM,IAAI,CAAgB;AAC5B,QAAM,eAAe,CAAC,MACpB,cAAc,EAAE,IAAI;AAiDtB,QAAM,cAAc,oBAAI,IAAgC;MACtD,CAAC,KAAK,CAAC,GAAG,CAAC;MACX,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;MAChB,CAAC,KAAK,CAAC,GAAG,CAAC;MACX,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC;MAC1B,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;KACjB;AAID,QAAM,uBAAuB,oBAAI,IAAgC;MAC/D,CAAC,KAAK,CAAC,GAAG,CAAC;MACX,CAAC,KAAK,CAAC,GAAG,CAAC;MACX,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;KACjB;AAGD,QAAM,iBAAiB,oBAAI,IAAgC;MACzD,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;MAChB,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;MAChB,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;MAChB,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC;MAC1B,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC;KAC3B;AAMD,QAAM,WAAW,oBAAI,IAGnB;MACA,CAAC,KAAK,oBAAI,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;MAC3B;QACE;QACA,oBAAI,IAAI;UACN,CAAC,KAAK,GAAG;UACT,CAAC,KAAK,GAAG;SACV;;MAEH;QACE;QACA,oBAAI,IAAI;UACN,CAAC,KAAK,GAAG;UACT,CAAC,KAAK,GAAG;UACT,CAAC,KAAK,GAAG;UACT,CAAC,KAAK,GAAG;UACT,CAAC,KAAK,GAAG;SACV;;MAEH;QACE;QACA,oBAAI,IAAI;UACN,CAAC,KAAK,GAAG;UACT,CAAC,KAAK,GAAG;SACV;;KAEJ;AAMD,QAAM,mBAAmB;AACzB,QAAM,aAAa;AAKnB,QAAM,kBAAkB,oBAAI,IAAI,CAAC,KAAK,GAAG,CAAC;AAE1C,QAAM,WAAW,oBAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AACpC,QAAM,aAAa,IAAI,IAAI,iBAAiB;AAC5C,QAAM,eAAe,CAAC,MACpB,EAAE,QAAQ,4BAA4B,MAAM;AAG9C,QAAM,QAAQ;AAGd,QAAM,OAAO,QAAQ;AAGrB,QAAM,cAAc,QAAQ;AAK5B,QAAI,KAAK;AACT,QAAa,MAAb,MAAgB;MACd;MACS;MAET;MACA,SAAkB;MAClB,SAA2B,CAAA;MAC3B;MACA;MACA;MACA,cAAuB;MACvB;MACA;;;MAGA,YAAqB;MACrB,KAAK,EAAE;MAEP,IAAI,QAAK;AACP,gBAAQ,KAAK,SAAS,SAAS,MAAM;MACvC;MAEA,CAAC,uBAAO,IAAI,4BAA4B,CAAC,IAAC;AACxC,eAAO;UACL,UAAU;UACV,IAAI,KAAK;UACT,MAAM,KAAK;UACX,MAAM,KAAK,MAAM;UACjB,QAAQ,KAAK,SAAS;UACtB,OAAO,KAAK;UACZ,aAAa,KAAK,OAAO;UACzB,OAAO,KAAK;;MAEhB;MAEA,YACE,MACA,QACA,UAA4B,CAAA,GAAE;AAE9B,aAAK,OAAO;AAEZ,YAAI;AAAM,eAAK,YAAY;AAC3B,aAAK,UAAU;AACf,aAAK,QAAQ,KAAK,UAAU,KAAK,QAAQ,QAAQ;AACjD,aAAK,WAAW,KAAK,UAAU,OAAO,UAAU,KAAK,MAAM;AAC3D,aAAK,QAAQ,KAAK,UAAU,OAAO,CAAA,IAAK,KAAK,MAAM;AACnD,YAAI,SAAS,OAAO,CAAC,KAAK,MAAM;AAAa,eAAK,MAAM,KAAK,IAAI;AACjE,aAAK,eAAe,KAAK,UAAU,KAAK,QAAQ,OAAO,SAAS;MAClE;MAEA,IAAI,WAAQ;AAEV,YAAI,KAAK,cAAc;AAAW,iBAAO,KAAK;AAE9C,mBAAW,KAAK,KAAK,QAAQ;AAC3B,cAAI,OAAO,MAAM;AAAU;AAC3B,cAAI,EAAE,QAAQ,EAAE;AAAU,mBAAQ,KAAK,YAAY;QACrD;AAEA,eAAO,KAAK;MACd;;MAGA,WAAQ;AACN,eACE,KAAK,cAAc,SAAY,KAAK,YAClC,CAAC,KAAK,OACL,KAAK,YAAY,KAAK,OAAO,IAAI,OAAK,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,IACxD,KAAK,YACJ,KAAK,OACL,MACA,KAAK,OAAO,IAAI,OAAK,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,IACxC;MAER;MAEA,YAAS;AAEP,YAAI,SAAS,KAAK;AAAO,gBAAM,IAAI,MAAM,0BAA0B;AACnE,YAAI,KAAK;AAAa,iBAAO;AAI7B,aAAK,SAAQ;AACb,aAAK,cAAc;AACnB,YAAI;AACJ,eAAQ,IAAI,KAAK,MAAM,IAAG,GAAK;AAC7B,cAAI,EAAE,SAAS;AAAK;AAEpB,cAAI,IAAqB;AACzB,cAAI,KAAK,EAAE;AACX,iBAAO,IAAI;AACT,qBACM,IAAI,EAAE,eAAe,GACzB,CAAC,GAAG,QAAQ,IAAI,GAAG,OAAO,QAC1B,KACA;AACA,yBAAW,QAAQ,EAAE,QAAQ;AAE3B,oBAAI,OAAO,SAAS,UAAU;AAC5B,wBAAM,IAAI,MAAM,8BAA8B;gBAChD;AAEA,qBAAK,OAAO,GAAG,OAAO,CAAC,CAAC;cAC1B;YACF;AACA,gBAAI;AACJ,iBAAK,EAAE;UACT;QACF;AACA,eAAO;MACT;MAEA,QAAQ,OAAuB;AAC7B,mBAAW,KAAK,OAAO;AACrB,cAAI,MAAM;AAAI;AAEd,cACE,OAAO,MAAM,YACb,EAAE,aAAa,MAAO,EAAE,YAAY,OACpC;AACA,kBAAM,IAAI,MAAM,mBAAmB,CAAC;UACtC;AAEA,eAAK,OAAO,KAAK,CAAC;QACpB;MACF;MAEA,SAAM;AACJ,cAAM,MACJ,KAAK,SAAS,OACZ,KAAK,OACF,MAAK,EACL,IAAI,OAAM,OAAO,MAAM,WAAW,IAAI,EAAE,OAAM,CAAG,IACpD,CAAC,KAAK,MAAM,GAAG,KAAK,OAAO,IAAI,OAAM,EAAU,OAAM,CAAE,CAAC;AAC5D,YAAI,KAAK,QAAO,KAAM,CAAC,KAAK;AAAM,cAAI,QAAQ,CAAA,CAAE;AAChD,YACE,KAAK,MAAK,MACT,SAAS,KAAK,SACZ,KAAK,MAAM,eAAe,KAAK,SAAS,SAAS,MACpD;AACA,cAAI,KAAK,CAAA,CAAE;QACb;AACA,eAAO;MACT;MAEA,UAAO;AACL,YAAI,KAAK,UAAU;AAAM,iBAAO;AAEhC,YAAI,CAAC,KAAK,SAAS,QAAO;AAAI,iBAAO;AACrC,YAAI,KAAK,iBAAiB;AAAG,iBAAO;AAEpC,cAAM,IAAI,KAAK;AACf,iBAAS,IAAI,GAAG,IAAI,KAAK,cAAc,KAAK;AAC1C,gBAAM,KAAK,EAAE,OAAO,CAAC;AACrB,cAAI,EAAE,cAAc,MAAO,GAAG,SAAS,MAAM;AAC3C,mBAAO;UACT;QACF;AACA,eAAO;MACT;MAEA,QAAK;AACH,YAAI,KAAK,UAAU;AAAM,iBAAO;AAChC,YAAI,KAAK,SAAS,SAAS;AAAK,iBAAO;AACvC,YAAI,CAAC,KAAK,SAAS,MAAK;AAAI,iBAAO;AACnC,YAAI,CAAC,KAAK;AAAM,iBAAO,KAAK,SAAS,MAAK;AAG1C,cAAM,KAAK,KAAK,UAAU,KAAK,QAAQ,OAAO,SAAS;AAEvD,eAAO,KAAK,iBAAiB,KAAK;MACpC;MAEA,OAAO,MAAkB;AACvB,YAAI,OAAO,SAAS;AAAU,eAAK,KAAK,IAAI;;AACvC,eAAK,KAAK,KAAK,MAAM,IAAI,CAAC;MACjC;MAEA,MAAM,QAAW;AACf,cAAM,IAAI,IAAI,GAAI,KAAK,MAAM,MAAM;AACnC,mBAAW,KAAK,KAAK,QAAQ;AAC3B,YAAE,OAAO,CAAC;QACZ;AACA,eAAO;MACT;MAEA,OAAO,UACL,KACA,KACA,KACA,KACA,UAAgB;AAEhB,cAAM,WAAW,IAAI,uBAAuB;AAC5C,YAAI,WAAW;AACf,YAAI,UAAU;AACd,YAAI,aAAa;AACjB,YAAI,WAAW;AACf,YAAI,IAAI,SAAS,MAAM;AAErB,cAAIE,KAAI;AACR,cAAIC,OAAM;AACV,iBAAOD,KAAI,IAAI,QAAQ;AACrB,kBAAM,IAAI,IAAI,OAAOA,IAAG;AAGxB,gBAAI,YAAY,MAAM,MAAM;AAC1B,yBAAW,CAAC;AACZ,cAAAC,QAAO;AACP;YACF;AAEA,gBAAI,SAAS;AACX,kBAAID,OAAM,aAAa,GAAG;AACxB,oBAAI,MAAM,OAAO,MAAM,KAAK;AAC1B,6BAAW;gBACb;cACF,WAAW,MAAM,OAAO,EAAEA,OAAM,aAAa,KAAK,WAAW;AAC3D,0BAAU;cACZ;AACA,cAAAC,QAAO;AACP;YACF,WAAW,MAAM,KAAK;AACpB,wBAAU;AACV,2BAAaD;AACb,yBAAW;AACX,cAAAC,QAAO;AACP;YACF;AAIA,kBAAM,YACJ,CAAC,IAAI,SACL,cAAc,CAAC,KACf,IAAI,OAAOD,EAAC,MAAM,OAClB,YAAY;AACd,gBAAI,WAAW;AACb,kBAAI,KAAKC,IAAG;AACZ,cAAAA,OAAM;AACN,oBAAM,MAAM,IAAI,GAAI,GAAG,GAAG;AAC1B,cAAAD,KAAI,GAAI,UAAU,KAAK,KAAKA,IAAG,KAAK,WAAW,CAAC;AAChD,kBAAI,KAAK,GAAG;AACZ;YACF;AACA,YAAAC,QAAO;UACT;AACA,cAAI,KAAKA,IAAG;AACZ,iBAAOD;QACT;AAIA,YAAI,IAAI,MAAM;AACd,YAAI,OAAO,IAAI,GAAI,MAAM,GAAG;AAC5B,cAAM,QAAe,CAAA;AACrB,YAAI,MAAM;AACV,eAAO,IAAI,IAAI,QAAQ;AACrB,gBAAM,IAAI,IAAI,OAAO,GAAG;AAGxB,cAAI,YAAY,MAAM,MAAM;AAC1B,uBAAW,CAAC;AACZ,mBAAO;AACP;UACF;AAEA,cAAI,SAAS;AACX,gBAAI,MAAM,aAAa,GAAG;AACxB,kBAAI,MAAM,OAAO,MAAM,KAAK;AAC1B,2BAAW;cACb;YACF,WAAW,MAAM,OAAO,EAAE,MAAM,aAAa,KAAK,WAAW;AAC3D,wBAAU;YACZ;AACA,mBAAO;AACP;UACF,WAAW,MAAM,KAAK;AACpB,sBAAU;AACV,yBAAa;AACb,uBAAW;AACX,mBAAO;AACP;UACF;AAEA,gBAAM,YACJ,CAAC,IAAI,SACL,cAAc,CAAC,KACf,IAAI,OAAO,CAAC,MAAM;WAEjB,YAAY,YAAa,OAAO,IAAI,cAAc,CAAC;AAEtD,cAAI,WAAW;AACb,kBAAM,WAAW,OAAO,IAAI,cAAc,CAAC,IAAI,IAAI;AACnD,iBAAK,KAAK,GAAG;AACb,kBAAM;AACN,kBAAM,MAAM,IAAI,GAAI,GAAG,IAAI;AAC3B,iBAAK,KAAK,GAAG;AACb,gBAAI,GAAI,UAAU,KAAK,KAAK,GAAG,KAAK,WAAW,QAAQ;AACvD;UACF;AACA,cAAI,MAAM,KAAK;AACb,iBAAK,KAAK,GAAG;AACb,kBAAM;AACN,kBAAM,KAAK,IAAI;AACf,mBAAO,IAAI,GAAI,MAAM,GAAG;AACxB;UACF;AACA,cAAI,MAAM,KAAK;AACb,gBAAI,QAAQ,MAAM,IAAI,OAAO,WAAW,GAAG;AACzC,kBAAI,YAAY;YAClB;AACA,iBAAK,KAAK,GAAG;AACb,kBAAM;AACN,gBAAI,KAAK,GAAG,OAAO,IAAI;AACvB,mBAAO;UACT;AACA,iBAAO;QACT;AAKA,YAAI,OAAO;AACX,YAAI,YAAY;AAChB,YAAI,SAAS,CAAC,IAAI,UAAU,MAAM,CAAC,CAAC;AACpC,eAAO;MACT;MAEA,mBAAmB,OAAoB;AAIrC,eAAO,KAAK,UAAU,OAAO,oBAAoB;MACnD;MAEA,UACE,OACAE,OAAuC,aAAW;AAKlD,YACE,CAAC,SACD,OAAO,UAAU,YACjB,MAAM,SAAS,QACf,MAAM,OAAO,WAAW,KACxB,KAAK,SAAS,MACd;AACA,iBAAO;QACT;AACA,cAAM,KAAK,MAAM,OAAO,CAAC;AACzB,YAAI,CAAC,MAAM,OAAO,OAAO,YAAY,GAAG,SAAS,MAAM;AACrD,iBAAO;QACT;AACA,eAAQ,KAAqC,cAC3C,GAAG,MACHA,IAAG;MAEP;MACA,cACE,GACAA,OAAuC,gBAAc;AAErD,eAAO,CAAC,CAACA,KAAI,IAAI,KAAK,IAAmB,GAAG,SAAS,CAAgB;MACvE;MAEA,gBAEE,OAGAC,QAAa;AAEb,cAAM,KAAK,MAAM,OAAO,CAAC;AACzB,cAAM,QAAQ,IAAI,GAAI,MAAM,IAAI,KAAK,OAAO;AAC5C,cAAM,OAAO,KAAK,EAAE;AACpB,WAAG,KAAK,KAAK;AACb,aAAK,OAAO,OAAOA,MAAK;MAC1B;MAEA,OACE,OAGAA,QAAa;AAEb,cAAM,KAAK,MAAM,OAAO,CAAC;AACzB,aAAK,OAAO,OAAOA,QAAO,GAAG,GAAG,GAAG,MAAM;AACzC,mBAAW,KAAK,GAAG,QAAQ;AACzB,cAAI,OAAO,MAAM;AAAU,cAAE,UAAU;QACzC;AACA,aAAK,YAAY;MACnB;MAEA,cAAc,GAAS;AACrB,cAAM,IAAI,SAAS,IAAI,KAAK,IAAmB;AAC/C,eAAO,CAAC,CAAC,GAAG,IAAI,CAAgB;MAClC;MAEA,UAAU,OAAoB;AAI5B,YACE,CAAC,SACD,OAAO,UAAU,YACjB,MAAM,SAAS,QACf,MAAM,OAAO,WAAW,KACxB,KAAK,SAAS,QACd,KAAK,OAAO,WAAW,GACvB;AACA,iBAAO;QACT;AACA,cAAM,KAAK,MAAM,OAAO,CAAC;AACzB,YAAI,CAAC,MAAM,OAAO,OAAO,YAAY,GAAG,SAAS,MAAM;AACrD,iBAAO;QACT;AACA,eAAQ,KAAqC,cAAc,GAAG,IAAI;MACpE;MAEA,OAA0C,OAA2B;AACnE,cAAM,IAAI,SAAS,IAAI,KAAK,IAAmB;AAC/C,cAAM,KAAK,MAAM,OAAO,CAAC;AACzB,cAAM,KAAK,GAAG,IAAI,GAAG,IAAI;AAEzB,YAAI,CAAC;AAAI,iBAAO;AAEhB,aAAK,SAAS,GAAG;AACjB,mBAAW,KAAK,KAAK,QAAQ;AAC3B,cAAI,OAAO,MAAM,UAAU;AACzB,cAAE,UAAU;UACd;QACF;AACA,aAAK,OAAO;AACZ,aAAK,YAAY;AACjB,aAAK,YAAY;MACnB;MAEA,OAAO,SAAS,SAAiB,UAA4B,CAAA,GAAE;AAC7D,cAAM,MAAM,IAAI,GAAI,MAAM,QAAW,OAAO;AAC5C,WAAI,UAAU,SAAS,KAAK,GAAG,SAAS,CAAC;AACzC,eAAO;MACT;;;MAIA,cAAW;AAGT,YAAI,SAAS,KAAK;AAAO,iBAAO,KAAK,MAAM,YAAW;AAEtD,cAAM,OAAO,KAAK,SAAQ;AAC1B,cAAM,CAAC,IAAI,MAAM,UAAU,KAAK,IAAI,KAAK,eAAc;AAIvD,cAAM,WACJ,YACA,KAAK,aACJ,KAAK,SAAS,UACb,CAAC,KAAK,SAAS,mBACf,KAAK,YAAW,MAAO,KAAK,YAAW;AAC3C,YAAI,CAAC,UAAU;AACb,iBAAO;QACT;AAEA,cAAM,SAAS,KAAK,SAAS,SAAS,MAAM,OAAO,QAAQ,MAAM;AACjE,eAAO,OAAO,OAAO,IAAI,OAAO,IAAI,EAAE,KAAK,KAAK,GAAG;UACjD,MAAM;UACN,OAAO;SACR;MACH;MAEA,IAAI,UAAO;AACT,eAAO,KAAK;MACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAuEA,eACE,UAAkB;AAElB,cAAM,MAAM,YAAY,CAAC,CAAC,KAAK,SAAS;AACxC,YAAI,KAAK,UAAU,MAAM;AACvB,eAAK,SAAQ;AACb,eAAK,UAAS;QAChB;AACA,YAAI,CAAC,aAAa,IAAI,GAAG;AACvB,gBAAM,UACJ,KAAK,QAAO,KACZ,KAAK,MAAK,KACV,CAAC,KAAK,OAAO,KAAK,OAAK,OAAO,MAAM,QAAQ;AAC9C,gBAAM,MAAM,KAAK,OACd,IAAI,OAAI;AACP,kBAAM,CAAC,IAAI,GAAG,UAAU,KAAK,IAC3B,OAAO,MAAM,WACX,GAAI,WAAW,GAAG,KAAK,WAAW,OAAO,IACzC,EAAE,eAAe,QAAQ;AAC7B,iBAAK,YAAY,KAAK,aAAa;AACnC,iBAAK,SAAS,KAAK,UAAU;AAC7B,mBAAO;UACT,CAAC,EACA,KAAK,EAAE;AAEV,cAAIC,SAAQ;AACZ,cAAI,KAAK,QAAO,GAAI;AAClB,gBAAI,OAAO,KAAK,OAAO,CAAC,MAAM,UAAU;AAMtC,oBAAM,iBACJ,KAAK,OAAO,WAAW,KAAK,SAAS,IAAI,KAAK,OAAO,CAAC,CAAC;AACzD,kBAAI,CAAC,gBAAgB;AACnB,sBAAM,MAAM;AAGZ,sBAAM;;kBAEH,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;kBAE5B,IAAI,WAAW,KAAK,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;kBAE9C,IAAI,WAAW,QAAQ,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;;AAGpD,sBAAM,YAAY,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;AAE5D,gBAAAA,SACE,aAAa,mBACX,YAAY,aACZ;cACN;YACF;UACF;AAGA,cAAI,MAAM;AACV,cACE,KAAK,MAAK,KACV,KAAK,MAAM,eACX,KAAK,SAAS,SAAS,KACvB;AACA,kBAAM;UACR;AACA,gBAAMC,SAAQD,SAAQ,MAAM;AAC5B,iBAAO;YACLC;aACA,GAAA,cAAA,UAAS,GAAG;YACX,KAAK,YAAY,CAAC,CAAC,KAAK;YACzB,KAAK;;QAET;AAMA,cAAM,WAAW,KAAK,SAAS,OAAO,KAAK,SAAS;AAEpD,cAAM,QAAQ,KAAK,SAAS,MAAM,cAAc;AAChD,YAAI,OAAQ,KAAqC,eAAe,GAAG;AAEnE,YAAI,KAAK,QAAO,KAAM,KAAK,MAAK,KAAM,CAAC,QAAQ,KAAK,SAAS,KAAK;AAGhE,gBAAM,IAAI,KAAK,SAAQ;AACvB,gBAAM,KAAK;AACX,aAAG,SAAS,CAAC,CAAC;AACd,aAAG,OAAO;AACV,aAAG,YAAY;AACf,iBAAO,CAAC,IAAG,GAAA,cAAA,UAAS,KAAK,SAAQ,CAAE,GAAG,OAAO,KAAK;QACpD;AAEA,YAAI,iBACF,CAAC,YAAY,YAAY,OAAO,CAAC,aAC/B,KACA,KAAK,eAAe,IAAI;AAC5B,YAAI,mBAAmB,MAAM;AAC3B,2BAAiB;QACnB;AACA,YAAI,gBAAgB;AAClB,iBAAO,MAAM,IAAI,OAAO,cAAc;QACxC;AAGA,YAAI,QAAQ;AACZ,YAAI,KAAK,SAAS,OAAO,KAAK,WAAW;AACvC,mBAAS,KAAK,QAAO,KAAM,CAAC,MAAM,aAAa,MAAM;QACvD,OAAO;AACL,gBAAMC,SACJ,KAAK,SAAS;;YAEZ,QACC,KAAK,QAAO,KAAM,CAAC,OAAO,CAAC,WAAW,aAAa,MACpD,OACA;cACA,KAAK,SAAS,MAAM,MACpB,KAAK,SAAS,MAAM,OACpB,KAAK,SAAS,OAAO,iBAAiB,MACtC,KAAK,SAAS,OAAO,iBAAiB,OACtC,IAAI,KAAK,IAAI;AACjB,kBAAQ,QAAQ,OAAOA;QACzB;AACA,eAAO;UACL;WACA,GAAA,cAAA,UAAS,IAAI;UACZ,KAAK,YAAY,CAAC,CAAC,KAAK;UACzB,KAAK;;MAET;MAEA,WAAQ;AACN,YAAI,CAAC,aAAa,IAAI,GAAG;AACvB,qBAAW,KAAK,KAAK,QAAQ;AAC3B,gBAAI,OAAO,MAAM,UAAU;AACzB,gBAAE,SAAQ;YACZ;UACF;QACF,OAAO;AAEL,cAAI,aAAa;AACjB,cAAI,OAAO;AACX,aAAG;AACD,mBAAO;AACP,qBAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK;AAC3C,oBAAM,IAAI,KAAK,OAAO,CAAC;AACvB,kBAAI,OAAO,MAAM,UAAU;AACzB,kBAAE,SAAQ;AACV,oBAAI,KAAK,UAAU,CAAC,GAAG;AACrB,yBAAO;AACP,uBAAK,OAAO,GAAG,CAAC;gBAClB,WAAW,KAAK,mBAAmB,CAAC,GAAG;AACrC,yBAAO;AACL,uBAAqC,gBAAgB,GAAG,CAAC;gBAC7D,WAAW,KAAK,UAAU,CAAC,GAAG;AAC5B,yBAAO;AACL,uBAAqC,OAAO,CAAC;gBACjD;cACF;YACF;UACF,SAAS,CAAC,QAAQ,EAAE,aAAa;QACnC;AACA,aAAK,YAAY;MACnB;MAEA,eAAkD,KAAY;AAC5D,eAAO,KAAK,OACT,IAAI,OAAI;AAGP,cAAI,OAAO,MAAM,UAAU;AACzB,kBAAM,IAAI,MAAM,8BAA8B;UAChD;AAGA,gBAAM,CAAC,IAAI,GAAG,WAAW,KAAK,IAAI,EAAE,eAAe,GAAG;AACtD,eAAK,SAAS,KAAK,UAAU;AAC7B,iBAAO;QACT,CAAC,EACA,OAAO,OAAK,EAAE,KAAK,QAAO,KAAM,KAAK,MAAK,MAAO,CAAC,CAAC,CAAC,EACpD,KAAK,GAAG;MACb;MAEA,OAAO,WACL,MACA,UACA,UAAmB,OAAK;AAExB,YAAI,WAAW;AACf,YAAI,KAAK;AACT,YAAI,QAAQ;AAEZ,YAAI,SAAS;AACb,iBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,gBAAM,IAAI,KAAK,OAAO,CAAC;AACvB,cAAI,UAAU;AACZ,uBAAW;AACX,mBAAO,WAAW,IAAI,CAAC,IAAI,OAAO,MAAM;AACxC;UACF;AACA,cAAI,MAAM,KAAK;AACb,gBAAI;AAAQ;AACZ,qBAAS;AACT,kBAAM,WAAW,SAAS,KAAK,IAAI,IAAI,cAAc;AACrD,uBAAW;AACX;UACF,OAAO;AACL,qBAAS;UACX;AACA,cAAI,MAAM,MAAM;AACd,gBAAI,MAAM,KAAK,SAAS,GAAG;AACzB,oBAAM;YACR,OAAO;AACL,yBAAW;YACb;AACA;UACF;AACA,cAAI,MAAM,KAAK;AACb,kBAAM,CAAC,KAAK,WAAW,UAAU,KAAK,KAAI,GAAA,uBAAA,YAAW,MAAM,CAAC;AAC5D,gBAAI,UAAU;AACZ,oBAAM;AACN,sBAAQ,SAAS;AACjB,mBAAK,WAAW;AAChB,yBAAW,YAAY;AACvB;YACF;UACF;AACA,cAAI,MAAM,KAAK;AACb,kBAAM;AACN,uBAAW;AACX;UACF;AACA,gBAAM,aAAa,CAAC;QACtB;AACA,eAAO,CAAC,KAAI,GAAA,cAAA,UAAS,IAAI,GAAG,CAAC,CAAC,UAAU,KAAK;MAC/C;;AApxBF,IAAAC,SAAA,MAAA;;;;;;;;;;;AC7KO,QAAMC,UAAS,CACpB,GACA,EACE,uBAAuB,OACvB,gBAAgB,MAAK,IAC+C,CAAA,MACpE;AAIF,UAAI,eAAe;AACjB,eAAO,uBACH,EAAE,QAAQ,gBAAgB,MAAM,IAChC,EAAE,QAAQ,kBAAkB,MAAM;MACxC;AACA,aAAO,uBACH,EAAE,QAAQ,cAAc,MAAM,IAC9B,EAAE,QAAQ,gBAAgB,MAAM;IACtC;AAlBa,IAAAC,SAAA,SAAMD;;;;;;;;;;ACdnB,QAAA,oBAAA;AACA,QAAA,4BAAA;AAEA,QAAA,WAAA;AACA,QAAA,cAAA;AACA,QAAA,gBAAA;AAqHO,QAAM,YAAY,CACvB,GACA,SACA,UAA4B,CAAA,MAC1B;AACF,OAAA,GAAA,0BAAA,oBAAmB,OAAO;AAG1B,UAAI,CAAC,QAAQ,aAAa,QAAQ,OAAO,CAAC,MAAM,KAAK;AACnD,eAAO;MACT;AAEA,aAAO,IAAI,UAAU,SAAS,OAAO,EAAE,MAAM,CAAC;IAChD;AAba,IAAAE,SAAA,YAAS;AAgBtB,QAAM,eAAe;AACrB,QAAM,iBAAiB,CAACC,SAAgB,CAAC,MACvC,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,SAASA,IAAG;AACtC,QAAM,oBAAoB,CAACA,SAAgB,CAAC,MAAc,EAAE,SAASA,IAAG;AACxE,QAAM,uBAAuB,CAACA,SAAe;AAC3C,MAAAA,OAAMA,KAAI,YAAW;AACrB,aAAO,CAAC,MAAc,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,YAAW,EAAG,SAASA,IAAG;IAC1E;AACA,QAAM,0BAA0B,CAACA,SAAe;AAC9C,MAAAA,OAAMA,KAAI,YAAW;AACrB,aAAO,CAAC,MAAc,EAAE,YAAW,EAAG,SAASA,IAAG;IACpD;AACA,QAAM,gBAAgB;AACtB,QAAM,kBAAkB,CAAC,MACvB,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,SAAS,GAAG;AACtC,QAAM,qBAAqB,CAAC,MAC1B,MAAM,OAAO,MAAM,QAAQ,EAAE,SAAS,GAAG;AAC3C,QAAM,YAAY;AAClB,QAAM,cAAc,CAAC,MACnB,MAAM,OAAO,MAAM,QAAQ,EAAE,WAAW,GAAG;AAC7C,QAAM,SAAS;AACf,QAAM,WAAW,CAAC,MAAc,EAAE,WAAW,KAAK,CAAC,EAAE,WAAW,GAAG;AACnE,QAAM,cAAc,CAAC,MACnB,EAAE,WAAW,KAAK,MAAM,OAAO,MAAM;AACvC,QAAM,WAAW;AACjB,QAAM,mBAAmB,CAAC,CAAC,IAAIA,OAAM,EAAE,MAAuB;AAC5D,YAAM,QAAQ,gBAAgB,CAAC,EAAE,CAAC;AAClC,UAAI,CAACA;AAAK,eAAO;AACjB,MAAAA,OAAMA,KAAI,YAAW;AACrB,aAAO,CAAC,MAAc,MAAM,CAAC,KAAK,EAAE,YAAW,EAAG,SAASA,IAAG;IAChE;AACA,QAAM,sBAAsB,CAAC,CAAC,IAAIA,OAAM,EAAE,MAAuB;AAC/D,YAAM,QAAQ,mBAAmB,CAAC,EAAE,CAAC;AACrC,UAAI,CAACA;AAAK,eAAO;AACjB,MAAAA,OAAMA,KAAI,YAAW;AACrB,aAAO,CAAC,MAAc,MAAM,CAAC,KAAK,EAAE,YAAW,EAAG,SAASA,IAAG;IAChE;AACA,QAAM,gBAAgB,CAAC,CAAC,IAAIA,OAAM,EAAE,MAAuB;AACzD,YAAM,QAAQ,mBAAmB,CAAC,EAAE,CAAC;AACrC,aAAO,CAACA,OAAM,QAAQ,CAAC,MAAc,MAAM,CAAC,KAAK,EAAE,SAASA,IAAG;IACjE;AACA,QAAM,aAAa,CAAC,CAAC,IAAIA,OAAM,EAAE,MAAuB;AACtD,YAAM,QAAQ,gBAAgB,CAAC,EAAE,CAAC;AAClC,aAAO,CAACA,OAAM,QAAQ,CAAC,MAAc,MAAM,CAAC,KAAK,EAAE,SAASA,IAAG;IACjE;AACA,QAAM,kBAAkB,CAAC,CAAC,EAAE,MAAuB;AACjD,YAAM,MAAM,GAAG;AACf,aAAO,CAAC,MAAc,EAAE,WAAW,OAAO,CAAC,EAAE,WAAW,GAAG;IAC7D;AACA,QAAM,qBAAqB,CAAC,CAAC,EAAE,MAAuB;AACpD,YAAM,MAAM,GAAG;AACf,aAAO,CAAC,MAAc,EAAE,WAAW,OAAO,MAAM,OAAO,MAAM;IAC/D;AAGA,QAAM,kBACJ,OAAO,YAAY,YAAY,UAC5B,OAAO,QAAQ,QAAQ,YACtB,QAAQ,OACR,QAAQ,IAAI,kCACd,QAAQ,WACR;AAIJ,QAAMC,QAAsC;MAC1C,OAAO,EAAE,KAAK,KAAI;MAClB,OAAO,EAAE,KAAK,IAAG;;AAIN,IAAAF,SAAA,MACX,oBAAoB,UAAUE,MAAK,MAAM,MAAMA,MAAK,MAAM;AAC5D,IAAAF,SAAA,UAAU,MAAMA,SAAA;AAEH,IAAAA,SAAA,WAAW,uBAAO,aAAa;AAC5C,IAAAA,SAAA,UAAU,WAAWA,SAAA;AAIrB,QAAM,QAAQ;AAGd,QAAM,OAAO,QAAQ;AAKrB,QAAM,aAAa;AAInB,QAAM,eAAe;AAEd,QAAMG,UACX,CAAC,SAAiB,UAA4B,CAAA,MAC9C,CAAC,OACC,GAAAH,SAAA,WAAU,GAAG,SAAS,OAAO;AAHpB,IAAAA,SAAA,SAAMG;AAInB,IAAAH,SAAA,UAAU,SAASA,SAAA;AAEnB,QAAM,MAAM,CAAC,GAAqB,IAAsB,CAAA,MACtD,OAAO,OAAO,CAAA,GAAI,GAAG,CAAC;AAEjB,QAAM,WAAW,CAAC,QAA2C;AAClE,UAAI,CAAC,OAAO,OAAO,QAAQ,YAAY,CAAC,OAAO,KAAK,GAAG,EAAE,QAAQ;AAC/D,eAAOA,SAAA;MACT;AAEA,YAAM,OAAOA,SAAA;AAEb,YAAM,IAAI,CAAC,GAAW,SAAiB,UAA4B,CAAA,MACjE,KAAK,GAAG,SAAS,IAAI,KAAK,OAAO,CAAC;AAEpC,aAAO,OAAO,OAAO,GAAG;QACtB,WAAW,MAAM,kBAAkB,KAAK,UAAS;UAC/C,YAAY,SAAiB,UAA4B,CAAA,GAAE;AACzD,kBAAM,SAAS,IAAI,KAAK,OAAO,CAAC;UAClC;UACA,OAAO,SAAS,SAAyB;AACvC,mBAAO,KAAK,SAAS,IAAI,KAAK,OAAO,CAAC,EAAE;UAC1C;;QAGF,KAAK,MAAM,YAAY,KAAK,IAAG;;UAE7B,YACE,MACA,QACA,UAA4B,CAAA,GAAE;AAE9B,kBAAM,MAAM,QAAQ,IAAI,KAAK,OAAO,CAAC;UACvC;;UAGA,OAAO,SAAS,SAAiB,UAA4B,CAAA,GAAE;AAC7D,mBAAO,KAAK,IAAI,SAAS,SAAS,IAAI,KAAK,OAAO,CAAC;UACrD;;QAGF,UAAU,CACR,GACA,UAGI,CAAA,MACD,KAAK,SAAS,GAAG,IAAI,KAAK,OAAO,CAAC;QAEvC,QAAQ,CACN,GACA,UAGI,CAAA,MACD,KAAK,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC;QAErC,QAAQ,CAAC,SAAiB,UAA4B,CAAA,MACpD,KAAK,OAAO,SAAS,IAAI,KAAK,OAAO,CAAC;QAExC,UAAU,CAAC,YACT,KAAK,SAAS,IAAI,KAAK,OAAO,CAAC;QAEjC,QAAQ,CAAC,SAAiB,UAA4B,CAAA,MACpD,KAAK,OAAO,SAAS,IAAI,KAAK,OAAO,CAAC;QAExC,aAAa,CAAC,SAAiB,UAA4B,CAAA,MACzD,KAAK,YAAY,SAAS,IAAI,KAAK,OAAO,CAAC;QAE7C,OAAO,CACLI,OACA,SACA,UAA4B,CAAA,MACzB,KAAK,MAAMA,OAAM,SAAS,IAAI,KAAK,OAAO,CAAC;QAEhD,KAAK,KAAK;QACV,UAAUJ,SAAA;OACX;IACH;AAzEa,IAAAA,SAAA,WAAQ;AA0ErB,IAAAA,SAAA,UAAU,WAAWA,SAAA;AAYd,QAAM,cAAc,CACzB,SACA,UAA4B,CAAA,MAC1B;AACF,OAAA,GAAA,0BAAA,oBAAmB,OAAO;AAI1B,UAAI,QAAQ,WAAW,CAAC,mBAAmB,KAAK,OAAO,GAAG;AAExD,eAAO,CAAC,OAAO;MACjB;AAEA,cAAO,GAAA,kBAAA,QAAO,SAAS,EAAE,KAAK,QAAQ,eAAc,CAAE;IACxD;AAda,IAAAA,SAAA,cAAW;AAexB,IAAAA,SAAA,UAAU,cAAcA,SAAA;AAcjB,QAAM,SAAS,CAAC,SAAiB,UAA4B,CAAA,MAClE,IAAI,UAAU,SAAS,OAAO,EAAE,OAAM;AAD3B,IAAAA,SAAA,SAAM;AAEnB,IAAAA,SAAA,UAAU,SAASA,SAAA;AAEZ,QAAMK,SAAQ,CACnBD,OACA,SACA,UAA4B,CAAA,MAC1B;AACF,YAAM,KAAK,IAAI,UAAU,SAAS,OAAO;AACzC,MAAAA,QAAOA,MAAK,OAAO,OAAK,GAAG,MAAM,CAAC,CAAC;AACnC,UAAI,GAAG,QAAQ,UAAU,CAACA,MAAK,QAAQ;AACrC,QAAAA,MAAK,KAAK,OAAO;MACnB;AACA,aAAOA;IACT;AAXa,IAAAJ,SAAA,QAAKK;AAYlB,IAAAL,SAAA,UAAU,QAAQA,SAAA;AAGlB,QAAM,YAAY;AAClB,QAAM,eAAe,CAAC,MACpB,EAAE,QAAQ,4BAA4B,MAAM;AAU9C,QAAa,YAAb,MAAsB;MACpB;MACA;MACA;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MAEA;MACA;MACA;MACA;MAEA;MACA,YAAY,SAAiB,UAA4B,CAAA,GAAE;AACzD,SAAA,GAAA,0BAAA,oBAAmB,OAAO;AAE1B,kBAAU,WAAW,CAAA;AACrB,aAAK,UAAU;AACf,aAAK,uBAAuB,QAAQ,wBAAwB;AAC5D,aAAK,UAAU;AACf,aAAK,WAAW,QAAQ,YAAY;AACpC,aAAK,YAAY,KAAK,aAAa;AAEnC,cAAM,MAAO;AACb,aAAK,uBACH,CAAC,CAAC,QAAQ,wBAAwB,QAAQ,GAAG,MAAM;AACrD,YAAI,KAAK,sBAAsB;AAC7B,eAAK,UAAU,KAAK,QAAQ,QAAQ,OAAO,GAAG;QAChD;AACA,aAAK,0BAA0B,CAAC,CAAC,QAAQ;AACzC,aAAK,SAAS;AACd,aAAK,SAAS;AACd,aAAK,WAAW,CAAC,CAAC,QAAQ;AAC1B,aAAK,UAAU;AACf,aAAK,QAAQ;AACb,aAAK,UAAU,CAAC,CAAC,QAAQ;AACzB,aAAK,SAAS,CAAC,CAAC,KAAK,QAAQ;AAC7B,aAAK,qBACH,QAAQ,uBAAuB,SAC7B,QAAQ,qBACR,CAAC,EAAE,KAAK,aAAa,KAAK;AAE9B,aAAK,UAAU,CAAA;AACf,aAAK,YAAY,CAAA;AACjB,aAAK,MAAM,CAAA;AAGX,aAAK,KAAI;MACX;MAEA,WAAQ;AACN,YAAI,KAAK,QAAQ,iBAAiB,KAAK,IAAI,SAAS,GAAG;AACrD,iBAAO;QACT;AACA,mBAAW,WAAW,KAAK,KAAK;AAC9B,qBAAW,QAAQ,SAAS;AAC1B,gBAAI,OAAO,SAAS;AAAU,qBAAO;UACvC;QACF;AACA,eAAO;MACT;MAEA,SAAS,GAAY;MAAG;MAExB,OAAI;AACF,cAAM,UAAU,KAAK;AACrB,cAAM,UAAU,KAAK;AAGrB,YAAI,CAAC,QAAQ,aAAa,QAAQ,OAAO,CAAC,MAAM,KAAK;AACnD,eAAK,UAAU;AACf;QACF;AAEA,YAAI,CAAC,SAAS;AACZ,eAAK,QAAQ;AACb;QACF;AAGA,aAAK,YAAW;AAGhB,aAAK,UAAU,CAAC,GAAG,IAAI,IAAI,KAAK,YAAW,CAAE,CAAC;AAE9C,YAAI,QAAQ,OAAO;AAEjB,eAAK,QAAQ,IAAI,SAAoB,QAAQ,MAAM,GAAG,IAAI;QAC5D;AAEA,aAAK,MAAM,KAAK,SAAS,KAAK,OAAO;AAWrC,cAAM,eAAe,KAAK,QAAQ,IAAI,OAAK,KAAK,WAAW,CAAC,CAAC;AAC7D,aAAK,YAAY,KAAK,WAAW,YAAY;AAC7C,aAAK,MAAM,KAAK,SAAS,KAAK,SAAS;AAGvC,YAAI,MAAM,KAAK,UAAU,IAAI,CAAC,GAAG,GAAG,OAAM;AACxC,cAAI,KAAK,aAAa,KAAK,oBAAoB;AAE7C,kBAAM,QACJ,EAAE,CAAC,MAAM,MACT,EAAE,CAAC,MAAM,OACR,EAAE,CAAC,MAAM,OAAO,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,MACrC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;AACtB,kBAAM,UAAU,WAAW,KAAK,EAAE,CAAC,CAAC;AACpC,gBAAI,OAAO;AACT,qBAAO;gBACL,GAAG,EAAE,MAAM,GAAG,CAAC;gBACf,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,QAAM,KAAK,MAAM,EAAE,CAAC;;YAE1C,WAAW,SAAS;AAClB,qBAAO,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,QAAM,KAAK,MAAM,EAAE,CAAC,CAAC;YACvD;UACF;AACA,iBAAO,EAAE,IAAI,QAAM,KAAK,MAAM,EAAE,CAAC;QACnC,CAAC;AAED,aAAK,MAAM,KAAK,SAAS,GAAG;AAG5B,aAAK,MAAM,IAAI,OACb,OAAK,EAAE,QAAQ,KAAK,MAAM,EAAE;AAI9B,YAAI,KAAK,WAAW;AAClB,mBAAS,IAAI,GAAG,IAAI,KAAK,IAAI,QAAQ,KAAK;AACxC,kBAAM,IAAI,KAAK,IAAI,CAAC;AACpB,gBACE,EAAE,CAAC,MAAM,MACT,EAAE,CAAC,MAAM,MACT,KAAK,UAAU,CAAC,EAAE,CAAC,MAAM,OACzB,OAAO,EAAE,CAAC,MAAM,YAChB,YAAY,KAAK,EAAE,CAAC,CAAC,GACrB;AACA,gBAAE,CAAC,IAAI;YACT;UACF;QACF;AAEA,aAAK,MAAM,KAAK,SAAS,KAAK,GAAG;MACnC;;;;;;MAOA,WAAW,WAAqB;AAE9B,YAAI,KAAK,QAAQ,YAAY;AAC3B,qBAAW,WAAW,WAAW;AAC/B,qBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,kBAAI,QAAQ,CAAC,MAAM,MAAM;AACvB,wBAAQ,CAAC,IAAI;cACf;YACF;UACF;QACF;AAEA,cAAM,EAAE,oBAAoB,EAAC,IAAK,KAAK;AAEvC,YAAI,qBAAqB,GAAG;AAE1B,sBAAY,KAAK,qBAAqB,SAAS;AAC/C,sBAAY,KAAK,sBAAsB,SAAS;QAClD,WAAW,qBAAqB,GAAG;AAEjC,sBAAY,KAAK,iBAAiB,SAAS;QAC7C,OAAO;AAEL,sBAAY,KAAK,0BAA0B,SAAS;QACtD;AAEA,eAAO;MACT;;MAGA,0BAA0B,WAAqB;AAC7C,eAAO,UAAU,IAAI,WAAQ;AAC3B,cAAI,KAAa;AACjB,iBAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,CAAC,IAAI;AAChD,gBAAI,IAAI;AACR,mBAAO,MAAM,IAAI,CAAC,MAAM,MAAM;AAC5B;YACF;AACA,gBAAI,MAAM,IAAI;AACZ,oBAAM,OAAO,IAAI,IAAI,EAAE;YACzB;UACF;AACA,iBAAO;QACT,CAAC;MACH;;MAGA,iBAAiB,WAAqB;AACpC,eAAO,UAAU,IAAI,WAAQ;AAC3B,kBAAQ,MAAM,OAAO,CAAC,KAAe,SAAQ;AAC3C,kBAAM,OAAO,IAAI,IAAI,SAAS,CAAC;AAC/B,gBAAI,SAAS,QAAQ,SAAS,MAAM;AAClC,qBAAO;YACT;AACA,gBAAI,SAAS,MAAM;AACjB,kBAAI,QAAQ,SAAS,QAAQ,SAAS,OAAO,SAAS,MAAM;AAC1D,oBAAI,IAAG;AACP,uBAAO;cACT;YACF;AACA,gBAAI,KAAK,IAAI;AACb,mBAAO;UACT,GAAG,CAAA,CAAE;AACL,iBAAO,MAAM,WAAW,IAAI,CAAC,EAAE,IAAI;QACrC,CAAC;MACH;MAEA,qBAAqB,OAAwB;AAC3C,YAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,kBAAQ,KAAK,WAAW,KAAK;QAC/B;AACA,YAAI,eAAwB;AAE5B,WAAG;AACD,yBAAe;AAEf,cAAI,CAAC,KAAK,yBAAyB;AACjC,qBAAS,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK;AACzC,oBAAM,IAAI,MAAM,CAAC;AAEjB,kBAAI,MAAM,KAAK,MAAM,MAAM,MAAM,CAAC,MAAM;AAAI;AAC5C,kBAAI,MAAM,OAAO,MAAM,IAAI;AACzB,+BAAe;AACf,sBAAM,OAAO,GAAG,CAAC;AACjB;cACF;YACF;AACA,gBACE,MAAM,CAAC,MAAM,OACb,MAAM,WAAW,MAChB,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,MAAM,KAClC;AACA,6BAAe;AACf,oBAAM,IAAG;YACX;UACF;AAGA,cAAI,KAAa;AACjB,iBAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,CAAC,IAAI;AAChD,kBAAM,IAAI,MAAM,KAAK,CAAC;AACtB,gBACE,KACA,MAAM,OACN,MAAM,QACN,MAAM,QACN,EAAE,KAAK,aAAa,YAAY,KAAK,CAAC,IACtC;AACA,6BAAe;AACf,oBAAM,OAAO,KAAK,GAAG,CAAC;AACtB,oBAAM;YACR;UACF;QACF,SAAS;AACT,eAAO,MAAM,WAAW,IAAI,CAAC,EAAE,IAAI;MACrC;;;;;;;;;;;;;;;;;;;MAoBA,qBAAqB,WAAqB;AACxC,YAAI,eAAe;AACnB,WAAG;AACD,yBAAe;AAEf,mBAAS,SAAS,WAAW;AAC3B,gBAAI,KAAa;AACjB,mBAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,CAAC,IAAI;AAChD,kBAAI,MAAc;AAClB,qBAAO,MAAM,MAAM,CAAC,MAAM,MAAM;AAE9B;cACF;AAGA,kBAAI,MAAM,IAAI;AACZ,sBAAM,OAAO,KAAK,GAAG,MAAM,EAAE;cAC/B;AAEA,kBAAI,OAAO,MAAM,KAAK,CAAC;AACvB,oBAAM,IAAI,MAAM,KAAK,CAAC;AACtB,oBAAM,KAAK,MAAM,KAAK,CAAC;AACvB,kBAAI,SAAS;AAAM;AACnB,kBACE,CAAC,KACD,MAAM,OACN,MAAM,QACN,CAAC,MACD,OAAO,OACP,OAAO,MACP;AACA;cACF;AACA,6BAAe;AAEf,oBAAM,OAAO,IAAI,CAAC;AAClB,oBAAM,QAAQ,MAAM,MAAM,CAAC;AAC3B,oBAAM,EAAE,IAAI;AACZ,wBAAU,KAAK,KAAK;AACpB;YACF;AAGA,gBAAI,CAAC,KAAK,yBAAyB;AACjC,uBAAS,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK;AACzC,sBAAM,IAAI,MAAM,CAAC;AAEjB,oBAAI,MAAM,KAAK,MAAM,MAAM,MAAM,CAAC,MAAM;AAAI;AAC5C,oBAAI,MAAM,OAAO,MAAM,IAAI;AACzB,iCAAe;AACf,wBAAM,OAAO,GAAG,CAAC;AACjB;gBACF;cACF;AACA,kBACE,MAAM,CAAC,MAAM,OACb,MAAM,WAAW,MAChB,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,MAAM,KAClC;AACA,+BAAe;AACf,sBAAM,IAAG;cACX;YACF;AAGA,gBAAI,KAAa;AACjB,mBAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,CAAC,IAAI;AAChD,oBAAM,IAAI,MAAM,KAAK,CAAC;AACtB,kBAAI,KAAK,MAAM,OAAO,MAAM,QAAQ,MAAM,MAAM;AAC9C,+BAAe;AACf,sBAAM,UAAU,OAAO,KAAK,MAAM,KAAK,CAAC,MAAM;AAC9C,sBAAM,QAAQ,UAAU,CAAC,GAAG,IAAI,CAAA;AAChC,sBAAM,OAAO,KAAK,GAAG,GAAG,GAAG,KAAK;AAChC,oBAAI,MAAM,WAAW;AAAG,wBAAM,KAAK,EAAE;AACrC,sBAAM;cACR;YACF;UACF;QACF,SAAS;AAET,eAAO;MACT;;;;;;;;MASA,sBAAsB,WAAqB;AACzC,iBAAS,IAAI,GAAG,IAAI,UAAU,SAAS,GAAG,KAAK;AAC7C,mBAAS,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAC7C,kBAAM,UAAU,KAAK,WACnB,UAAU,CAAC,GACX,UAAU,CAAC,GACX,CAAC,KAAK,uBAAuB;AAE/B,gBAAI,SAAS;AACX,wBAAU,CAAC,IAAI,CAAA;AACf,wBAAU,CAAC,IAAI;AACf;YACF;UACF;QACF;AACA,eAAO,UAAU,OAAO,QAAM,GAAG,MAAM;MACzC;MAEA,WACE,GACA,GACA,eAAwB,OAAK;AAE7B,YAAI,KAAK;AACT,YAAI,KAAK;AACT,YAAI,SAAmB,CAAA;AACvB,YAAI,QAAgB;AACpB,eAAO,KAAK,EAAE,UAAU,KAAK,EAAE,QAAQ;AACrC,cAAI,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG;AACnB,mBAAO,KAAK,UAAU,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;AACzC;AACA;UACF,WAAW,gBAAgB,EAAE,EAAE,MAAM,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;AAChE,mBAAO,KAAK,EAAE,EAAE,CAAC;AACjB;UACF,WAAW,gBAAgB,EAAE,EAAE,MAAM,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;AAChE,mBAAO,KAAK,EAAE,EAAE,CAAC;AACjB;UACF,WACE,EAAE,EAAE,MAAM,OACV,EAAE,EAAE,MACH,KAAK,QAAQ,OAAO,CAAC,EAAE,EAAE,EAAE,WAAW,GAAG,MAC1C,EAAE,EAAE,MAAM,MACV;AACA,gBAAI,UAAU;AAAK,qBAAO;AAC1B,oBAAQ;AACR,mBAAO,KAAK,EAAE,EAAE,CAAC;AACjB;AACA;UACF,WACE,EAAE,EAAE,MAAM,OACV,EAAE,EAAE,MACH,KAAK,QAAQ,OAAO,CAAC,EAAE,EAAE,EAAE,WAAW,GAAG,MAC1C,EAAE,EAAE,MAAM,MACV;AACA,gBAAI,UAAU;AAAK,qBAAO;AAC1B,oBAAQ;AACR,mBAAO,KAAK,EAAE,EAAE,CAAC;AACjB;AACA;UACF,OAAO;AACL,mBAAO;UACT;QACF;AAGA,eAAO,EAAE,WAAW,EAAE,UAAU;MAClC;MAEA,cAAW;AACT,YAAI,KAAK;AAAU;AAEnB,cAAM,UAAU,KAAK;AACrB,YAAI,SAAS;AACb,YAAI,eAAe;AAEnB,iBAAS,IAAI,GAAG,IAAI,QAAQ,UAAU,QAAQ,OAAO,CAAC,MAAM,KAAK,KAAK;AACpE,mBAAS,CAAC;AACV;QACF;AAEA,YAAI;AAAc,eAAK,UAAU,QAAQ,MAAM,YAAY;AAC3D,aAAK,SAAS;MAChB;;;;;;MAOA,SACE,MACA,SACA,UAAmB,OAAK;AAExB,YAAI,iBAAiB;AACrB,YAAI,oBAAoB;AAKxB,YAAI,KAAK,WAAW;AAClB,gBAAM,YACJ,OAAO,KAAK,CAAC,MAAM,YAAY,YAAY,KAAK,KAAK,CAAC,CAAC;AACzD,gBAAM,UACJ,CAAC,aACD,KAAK,CAAC,MAAM,MACZ,KAAK,CAAC,MAAM,MACZ,KAAK,CAAC,MAAM,OACZ,YAAY,KAAK,KAAK,CAAC,CAAC;AAE1B,gBAAM,eACJ,OAAO,QAAQ,CAAC,MAAM,YAAY,YAAY,KAAK,QAAQ,CAAC,CAAC;AAC/D,gBAAM,aACJ,CAAC,gBACD,QAAQ,CAAC,MAAM,MACf,QAAQ,CAAC,MAAM,MACf,QAAQ,CAAC,MAAM,OACf,OAAO,QAAQ,CAAC,MAAM,YACtB,YAAY,KAAK,QAAQ,CAAC,CAAC;AAE7B,gBAAM,MACJ,UAAU,IACR,YAAY,IACZ;AACJ,gBAAM,MACJ,aAAa,IACX,eAAe,IACf;AACJ,cAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,UAAU;AACtD,kBAAM,CAAC,IAAI,EAAE,IAAsB;cACjC,KAAK,GAAG;cACR,QAAQ,GAAG;;AAGb,gBAAI,GAAG,YAAW,MAAO,GAAG,YAAW,GAAI;AACzC,sBAAQ,GAAG,IAAI;AACf,kCAAoB;AACpB,+BAAiB;YACnB;UACF;QACF;AAIA,cAAM,EAAE,oBAAoB,EAAC,IAAK,KAAK;AACvC,YAAI,qBAAqB,GAAG;AAC1B,iBAAO,KAAK,qBAAqB,IAAI;QACvC;AAEA,YAAI,QAAQ,SAASA,SAAA,QAAQ,GAAG;AAC9B,iBAAO,KAAK,eACV,MACA,SACA,SACA,gBACA,iBAAiB;QAErB;AAEA,eAAO,KAAK,UACV,MACA,SACA,SACA,gBACA,iBAAiB;MAErB;MAEA,eACE,MACA,SACA,SACA,WACA,cAAoB;AAGpB,cAAM,UAAU,QAAQ,QAAQA,SAAA,UAAU,YAAY;AACtD,cAAM,SAAS,QAAQ,YAAYA,SAAA,QAAQ;AAK3C,cAAM,CAAC,MAAM,MAAM,IAAI,IACrB,UACE;UACE,QAAQ,MAAM,cAAc,OAAO;UACnC,QAAQ,MAAM,UAAU,CAAC;UACzB,CAAA;YAEF;UACE,QAAQ,MAAM,cAAc,OAAO;UACnC,QAAQ,MAAM,UAAU,GAAG,MAAM;UACjC,QAAQ,MAAM,SAAS,CAAC;;AAI9B,YAAI,KAAK,QAAQ;AACf,gBAAM,WAAW,KAAK,MAAM,WAAW,YAAY,KAAK,MAAM;AAC9D,cAAI,CAAC,KAAK,UAAU,UAAU,MAAM,SAAS,GAAG,CAAC,GAAG;AAClD,mBAAO;UACT;AACA,uBAAa,KAAK;AAClB,0BAAgB,KAAK;QACvB;AAKA,YAAI,gBAAwB;AAC5B,YAAI,KAAK,QAAQ;AAEf,cAAI,KAAK,SAAS,YAAY,KAAK;AAAQ,mBAAO;AAGlD,cAAI,YAAY,KAAK,SAAS,KAAK;AACnC,cAAI,KAAK,UAAU,MAAM,MAAM,SAAS,WAAW,CAAC,GAAG;AACrD,4BAAgB,KAAK;UACvB,OAAO;AAIL,gBACE,KAAK,KAAK,SAAS,CAAC,MAAM,MAC1B,YAAY,KAAK,WAAW,KAAK,QACjC;AACA,qBAAO;YACT;AACA;AACA,gBAAI,CAAC,KAAK,UAAU,MAAM,MAAM,SAAS,WAAW,CAAC,GAAG;AACtD,qBAAO;YACT;AACA,4BAAgB,KAAK,SAAS;UAChC;QACF;AAUA,YAAI,CAAC,KAAK,QAAQ;AAChB,cAAI,UAAU,CAAC,CAAC;AAChB,mBAASM,KAAI,WAAWA,KAAI,KAAK,SAAS,eAAeA,MAAK;AAC5D,kBAAM,IAAI,OAAO,KAAKA,EAAC,CAAC;AACxB,sBAAU;AACV,gBACE,MAAM,OACN,MAAM,QACL,CAAC,KAAK,QAAQ,OAAO,EAAE,WAAW,GAAG,GACtC;AACA,qBAAO;YACT;UACF;AAEA,iBAAO,WAAW;QACpB;AAQA,cAAM,eAA0C,CAAC,CAAC,CAAA,GAAI,CAAC,CAAC;AACxD,YAAI,cAAuC,aAAa,CAAC;AACzD,YAAI,aAAa;AACjB,cAAM,iBAA2B,CAAC,CAAC;AACnC,mBAAW,KAAK,MAAM;AACpB,cAAI,MAAMN,SAAA,UAAU;AAClB,2BAAe,KAAK,UAAU;AAC9B,0BAAc,CAAC,CAAA,GAAI,CAAC;AACpB,yBAAa,KAAK,WAAW;UAC/B,OAAO;AACL,wBAAY,CAAC,EAAE,KAAK,CAAC;AACrB;UACF;QACF;AACA,YAAI,IAAI,aAAa,SAAS;AAC9B,cAAM,aAAa,KAAK,SAAS;AACjC,mBAAW,KAAK,cAAc;AAC5B,YAAE,CAAC,IAAI,cAAe,eAAe,GAAG,IAAe,EAAE,CAAC,EAAE;QAC9D;AAEA,eAAO,CAAC,CAAC,KAAK,2BACZ,MACA,cACA,WACA,GACA,SACA,GACA,CAAC,CAAC,aAAa;MAEnB;;;MAIA,2BACE,MAEA,cACA,WACA,WACA,SACA,eACA,SAAgB;AAWhB,cAAM,KAAK,aAAa,SAAS;AACjC,YAAI,CAAC,IAAI;AAEP,mBAAS,IAAI,WAAW,IAAI,KAAK,QAAQ,KAAK;AAC5C,sBAAU;AACV,kBAAM,IAAI,KAAK,CAAC;AAChB,gBACE,MAAM,OACN,MAAM,QACL,CAAC,KAAK,QAAQ,OAAO,EAAE,WAAW,GAAG,GACtC;AACA,qBAAO;YACT;UACF;AACA,iBAAO;QACT;AAGA,cAAM,CAAC,MAAM,KAAK,IAAI;AACtB,eAAO,aAAa,OAAO;AACzB,gBAAM,IAAI,KAAK,UACb,KAAK,MAAM,GAAG,YAAY,KAAK,MAAM,GACrC,MACA,SACA,WACA,CAAC;AAIH,cAAI,KAAK,gBAAgB,KAAK,sBAAsB;AAElD,kBAAM,MAAM,KAAK,2BACf,MACA,cACA,YAAY,KAAK,QACjB,YAAY,GACZ,SACA,gBAAgB,GAChB,OAAO;AAET,gBAAI,QAAQ,OAAO;AACjB,qBAAO;YACT;UACF;AACA,gBAAM,IAAI,KAAK,SAAS;AACxB,cACE,MAAM,OACN,MAAM,QACL,CAAC,KAAK,QAAQ,OAAO,EAAE,WAAW,GAAG,GACtC;AACA,mBAAO;UACT;AAEA;QACF;AAEA,eAAO,WAAW;MACpB;MAEA,UACE,MACA,SACA,SACA,WACA,cAAoB;AAEpB,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ,aACE,KAAK,WACH,KAAK,cACL,KAAK,KAAK,QACV,KAAK,QAAQ,QACf,KAAK,MAAM,KAAK,IAChB,MAAM,MACN;AACA,eAAK,MAAM,eAAe;AAC1B,cAAI,IAAI,QAAQ,EAAE;AAClB,cAAI,IAAI,KAAK,EAAE;AAEf,eAAK,MAAM,SAAS,GAAG,CAAC;AAKxB,cAAI,MAAM,SAAS,MAAMA,SAAA,UAAU;AACjC,mBAAO;UACT;AAMA,cAAI;AACJ,cAAI,OAAO,MAAM,UAAU;AACzB,kBAAM,MAAM;AACZ,iBAAK,MAAM,gBAAgB,GAAG,GAAG,GAAG;UACtC,OAAO;AACL,kBAAM,EAAE,KAAK,CAAC;AACd,iBAAK,MAAM,iBAAiB,GAAG,GAAG,GAAG;UACvC;AAEA,cAAI,CAAC;AAAK,mBAAO;QACnB;AAcA,YAAI,OAAO,MAAM,OAAO,IAAI;AAG1B,iBAAO;QACT,WAAW,OAAO,IAAI;AAIpB,iBAAO;QACT,WAAW,OAAO,IAAI;AAKpB,iBAAO,OAAO,KAAK,KAAK,KAAK,EAAE,MAAM;QAGvC,OAAO;AAEL,gBAAM,IAAI,MAAM,MAAM;QACxB;MAEF;MAEA,cAAW;AACT,gBAAO,GAAAA,SAAA,aAAY,KAAK,SAAS,KAAK,OAAO;MAC/C;MAEA,MAAM,SAAe;AACnB,SAAA,GAAA,0BAAA,oBAAmB,OAAO;AAE1B,cAAM,UAAU,KAAK;AAGrB,YAAI,YAAY;AAAM,iBAAOA,SAAA;AAC7B,YAAI,YAAY;AAAI,iBAAO;AAI3B,YAAI;AACJ,YAAI,WAA4C;AAChD,YAAK,IAAI,QAAQ,MAAM,MAAM,GAAI;AAC/B,qBAAW,QAAQ,MAAM,cAAc;QACzC,WAAY,IAAI,QAAQ,MAAM,YAAY,GAAI;AAC5C,sBACE,QAAQ,SACN,QAAQ,MACN,0BACA,uBACF,QAAQ,MAAM,oBACd,gBAAgB,EAAE,CAAC,CAAC;QAC1B,WAAY,IAAI,QAAQ,MAAM,QAAQ,GAAI;AACxC,sBACE,QAAQ,SACN,QAAQ,MACN,sBACA,mBACF,QAAQ,MAAM,gBACd,YAAY,CAAC;QACnB,WAAY,IAAI,QAAQ,MAAM,aAAa,GAAI;AAC7C,qBAAW,QAAQ,MAAM,qBAAqB;QAChD,WAAY,IAAI,QAAQ,MAAM,SAAS,GAAI;AACzC,qBAAW;QACb;AAEA,cAAM,KAAK,SAAA,IAAI,SAAS,SAAS,KAAK,OAAO,EAAE,YAAW;AAC1D,YAAI,YAAY,OAAO,OAAO,UAAU;AAEtC,kBAAQ,eAAe,IAAI,QAAQ,EAAE,OAAO,SAAQ,CAAE;QACxD;AACA,eAAO;MACT;MAEA,SAAM;AACJ,YAAI,KAAK,UAAU,KAAK,WAAW;AAAO,iBAAO,KAAK;AAQtD,cAAM,MAAM,KAAK;AAEjB,YAAI,CAAC,IAAI,QAAQ;AACf,eAAK,SAAS;AACd,iBAAO,KAAK;QACd;AACA,cAAM,UAAU,KAAK;AAErB,cAAM,UACJ,QAAQ,aAAa,OACnB,QAAQ,MAAM,aACd;AACJ,cAAM,QAAQ,IAAI,IAAI,QAAQ,SAAS,CAAC,GAAG,IAAI,CAAA,CAAE;AAQjD,YAAI,KAAK,IACN,IAAI,aAAU;AACb,gBAAM,KAAmC,QAAQ,IAAI,OAAI;AACvD,gBAAI,aAAa,QAAQ;AACvB,yBAAW,KAAK,EAAE,MAAM,MAAM,EAAE;AAAG,sBAAM,IAAI,CAAC;YAChD;AACA,mBACE,OAAO,MAAM,WAAW,aAAa,CAAC,IACpC,MAAMA,SAAA,WAAWA,SAAA,WACjB,EAAE;UAER,CAAC;AACD,aAAG,QAAQ,CAAC,GAAG,MAAK;AAClB,kBAAM,OAAO,GAAG,IAAI,CAAC;AACrB,kBAAM,OAAO,GAAG,IAAI,CAAC;AACrB,gBAAI,MAAMA,SAAA,YAAY,SAASA,SAAA,UAAU;AACvC;YACF;AACA,gBAAI,SAAS,QAAW;AACtB,kBAAI,SAAS,UAAa,SAASA,SAAA,UAAU;AAC3C,mBAAG,IAAI,CAAC,IAAI,YAAY,UAAU,UAAU;cAC9C,OAAO;AACL,mBAAG,CAAC,IAAI;cACV;YACF,WAAW,SAAS,QAAW;AAC7B,iBAAG,IAAI,CAAC,IAAI,OAAO,eAAe,UAAU;YAC9C,WAAW,SAASA,SAAA,UAAU;AAC5B,iBAAG,IAAI,CAAC,IAAI,OAAO,eAAe,UAAU,SAAS;AACrD,iBAAG,IAAI,CAAC,IAAIA,SAAA;YACd;UACF,CAAC;AACD,gBAAM,WAAW,GAAG,OAAO,OAAK,MAAMA,SAAA,QAAQ;AAK9C,cAAI,KAAK,WAAW,SAAS,UAAU,GAAG;AACxC,kBAAM,WAAqB,CAAA;AAC3B,qBAAS,IAAI,GAAG,KAAK,SAAS,QAAQ,KAAK;AACzC,uBAAS,KAAK,SAAS,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC;YAC9C;AACA,mBAAO,QAAQ,SAAS,KAAK,GAAG,IAAI;UACtC;AAEA,iBAAO,SAAS,KAAK,GAAG;QAC1B,CAAC,EACA,KAAK,GAAG;AAIX,cAAM,CAACO,OAAMC,MAAK,IAAI,IAAI,SAAS,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAG7D,aAAK,MAAMD,QAAO,KAAKC,SAAQ;AAG/B,YAAI,KAAK,SAAS;AAChB,eAAK,aAAaD,QAAO,GAAG,MAAM,GAAG,EAAE,IAAIC,SAAQ;QACrD;AAGA,YAAI,KAAK;AAAQ,eAAK,SAAS,KAAK;AAEpC,YAAI;AACF,eAAK,SAAS,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC;QAElD,QAAQ;AAEN,eAAK,SAAS;QAChB;AAEA,eAAO,KAAK;MACd;MAEA,WAAW,GAAS;AAKlB,YAAI,KAAK,yBAAyB;AAChC,iBAAO,EAAE,MAAM,GAAG;QACpB,WAAW,KAAK,aAAa,aAAa,KAAK,CAAC,GAAG;AAEjD,iBAAO,CAAC,IAAI,GAAG,EAAE,MAAM,KAAK,CAAC;QAC/B,OAAO;AACL,iBAAO,EAAE,MAAM,KAAK;QACtB;MACF;MAEA,MAAM,GAAW,UAAU,KAAK,SAAO;AACrC,aAAK,MAAM,SAAS,GAAG,KAAK,OAAO;AAGnC,YAAI,KAAK,SAAS;AAChB,iBAAO;QACT;AACA,YAAI,KAAK,OAAO;AACd,iBAAO,MAAM;QACf;AAEA,YAAI,MAAM,OAAO,SAAS;AACxB,iBAAO;QACT;AAEA,cAAM,UAAU,KAAK;AAGrB,YAAI,KAAK,WAAW;AAClB,cAAI,EAAE,MAAM,IAAI,EAAE,KAAK,GAAG;QAC5B;AAGA,cAAM,KAAK,KAAK,WAAW,CAAC;AAC5B,aAAK,MAAM,KAAK,SAAS,SAAS,EAAE;AAOpC,cAAM,MAAM,KAAK;AACjB,aAAK,MAAM,KAAK,SAAS,OAAO,GAAG;AAGnC,YAAI,WAAmB,GAAG,GAAG,SAAS,CAAC;AACvC,YAAI,CAAC,UAAU;AACb,mBAAS,IAAI,GAAG,SAAS,GAAG,CAAC,YAAY,KAAK,GAAG,KAAK;AACpD,uBAAW,GAAG,CAAC;UACjB;QACF;AAEA,mBAAW,WAAW,KAAK;AACzB,cAAI,OAAO;AACX,cAAI,QAAQ,aAAa,QAAQ,WAAW,GAAG;AAC7C,mBAAO,CAAC,QAAQ;UAClB;AACA,gBAAM,MAAM,KAAK,SAAS,MAAM,SAAS,OAAO;AAChD,cAAI,KAAK;AACP,gBAAI,QAAQ,YAAY;AACtB,qBAAO;YACT;AACA,mBAAO,CAAC,KAAK;UACf;QACF;AAIA,YAAI,QAAQ,YAAY;AACtB,iBAAO;QACT;AACA,eAAO,KAAK;MACd;MAEA,OAAO,SAAS,KAAqB;AACnC,eAAOR,SAAA,UAAU,SAAS,GAAG,EAAE;MACjC;;AA/jCF,IAAAA,SAAA,YAAA;AAkkCA,QAAA,WAAA;AAAS,WAAA,eAAAA,UAAA,OAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,SAAA;IAAG,EAAA,CAAA;AACZ,QAAA,cAAA;AAAS,WAAA,eAAAA,UAAA,UAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,YAAA;IAAM,EAAA,CAAA;AACf,QAAA,gBAAA;AAAS,WAAA,eAAAA,UAAA,YAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,cAAA;IAAQ,EAAA,CAAA;AAEjB,IAAAA,SAAA,UAAU,MAAM,SAAA;AAChB,IAAAA,SAAA,UAAU,YAAY;AACtB,IAAAA,SAAA,UAAU,SAAS,YAAA;AACnB,IAAAA,SAAA,UAAU,WAAW,cAAA;;;;;AC58CrB;AAAA,sCAAAS,UAAAC,SAAA;AAAA;AAEA,QAAI,SAAS;AACb,QAAI,mBAAmB,QAAQ,MAAM,EAAE,MAAM;AAC7C,QAAI,UAAU,QAAQ,IAAI,EAAE,SAAS,MAAM;AAE3C,QAAI,QAAQ;AACZ,QAAI,YAAY;AAChB,QAAI,UAAU;AAOd,IAAAA,QAAO,UAAU,SAAS,WAAW,KAAK,MAAM;AAC9C,UAAI,UAAU,OAAO,OAAO,EAAE,iBAAiB,KAAK,GAAG,IAAI;AAG3D,UAAI,QAAQ,mBAAmB,WAAW,IAAI,QAAQ,KAAK,IAAI,GAAG;AAChE,cAAM,IAAI,QAAQ,WAAW,KAAK;AAAA,MACpC;AAGA,UAAI,YAAY,GAAG,GAAG;AACpB,eAAO;AAAA,MACT;AAGA,aAAO;AAGP,SAAG;AACD,cAAM,iBAAiB,GAAG;AAAA,MAC5B,SAAS,SAAS,GAAG;AAGrB,aAAO,IAAI,QAAQ,SAAS,IAAI;AAAA,IAClC;AAEA,aAAS,YAAY,KAAK;AACxB,UAAI,WAAW,IAAI,MAAM,EAAE;AAE3B,UAAI;AACJ,cAAQ,UAAU;AAAA,QAChB,KAAK;AACH,2BAAiB;AACjB;AAAA,QACF,KAAK;AACH,2BAAiB;AACjB;AAAA,QACF;AACE,iBAAO;AAAA,MACX;AAEA,UAAI,aAAa,IAAI,QAAQ,cAAc;AAC3C,UAAI,aAAa,GAAG;AAClB,eAAO;AAAA,MACT;AAEA,aAAO,IAAI,MAAM,aAAa,GAAG,EAAE,EAAE,SAAS,KAAK;AAAA,IACrD;AAEA,aAAS,SAAS,KAAK;AACrB,UAAI,YAAY,KAAK,GAAG,GAAG;AACzB,eAAO;AAAA,MACT;AACA,UAAI,IAAI,CAAC,MAAM,OAAO,IAAI,CAAC,MAAM,KAAK;AACpC,eAAO;AAAA,MACT;AACA,UAAI,YAAY,KAAK,GAAG,GAAG;AACzB,eAAO;AAAA,MACT;AACA,aAAO,OAAO,GAAG;AAAA,IACnB;AAAA;AAAA;;;AC1EA;AAAA,wDAAAC,UAAAC,SAAA;AAAA;AAYA,aAAS,iBAAiBC,QAAO;AAChC,aAAO,OAAOA,WAAU,YAAYA,WAAU,QAAQ,CAAC,MAAM,QAAQA,MAAK;AAAA,IAC3E;AAQA,aAAS,iBAAiBC,QAAO,QAAQ;AACxC,UAAI,WAAW,QAAQ;AACtB,eAAOA;AAAA,MACR;AAEA,UAAI,CAAC,iBAAiBA,MAAK,KAAK,CAAC,iBAAiB,MAAM,GAAG;AAC1D,eAAO;AAAA,MACR;AAEA,YAAM,SAAS,EAAE,GAAGA,QAAO,GAAG,OAAO;AAErC,iBAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AACtC,YAAI,OAAO,UAAU,qBAAqB,KAAKA,QAAO,GAAG,GAAG;AAC3D,iBAAO,GAAG,IAAI,iBAAiBA,OAAM,GAAG,GAAG,OAAO,GAAG,CAAC;AAAA,QACvD;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,gBAAgBA,QAAO,QAAQ;AACvC,UAAI,CAACA,UAAS,CAAC,QAAQ;AACtB,eAAO,UAAUA,UAAS,CAAC;AAAA,MAC5B;AAEA,aAAO;AAAA,QACN,GAAGA,OAAM;AAAA,UAAI,CAACD,QAAO,MACpB,iBAAiBA,QAAO,IAAI,OAAO,SAAS,OAAO,CAAC,IAAI,MAAM;AAAA,QAC/D;AAAA,QACA,GAAG,OAAO,MAAMC,OAAM,MAAM;AAAA,MAC7B;AAAA,IACD;AAEA,IAAAF,QAAO,UAAU,EAAE,gBAAgB;AAAA;AAAA;;;AC7DnC;AAAA,+CAAAG,UAAAC,SAAA;AAAA;AAaA,aAAS,0BAA0B,UAAU;AAC5C,UAAI,CAAC,GAAG,KAAK,OAAO,EAAE,SAAS,QAAQ,GAAG;AACzC,eAAO;AAAA,MACR;AACA,UAAI,CAAC,GAAG,KAAK,MAAM,EAAE,SAAS,QAAQ,GAAG;AACxC,eAAO;AAAA,MACR;AACA,UAAI,CAAC,GAAG,KAAK,KAAK,EAAE,SAAS,QAAQ,GAAG;AACvC,eAAO;AAAA,MACR;AACA,YAAM,IAAI,MAAM,2BAA2B,QAAQ,EAAE;AAAA,IACtD;AAQA,aAAS,0BAA0B,UAAU;AAC5C,UAAI,CAAC,GAAG,KAAK,OAAO,EAAE,SAAS,QAAQ,GAAG;AACzC,eAAO;AAAA,MACR;AACA,UAAI,CAAC,GAAG,KAAK,MAAM,EAAE,SAAS,QAAQ,GAAG;AACxC,eAAO;AAAA,MACR;AACA,UAAI,CAAC,GAAG,KAAK,KAAK,EAAE,SAAS,QAAQ,GAAG;AACvC,eAAO;AAAA,MACR;AACA,YAAM,IAAI,MAAM,2BAA2B,QAAQ,EAAE;AAAA,IACtD;AAEA,IAAAA,QAAO,UAAU;AAAA,MAChB;AAAA,MACA;AAAA,IACD;AAAA;AAAA;;;AChDA;AAAA,yDAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,EAAE,0BAA0B,IAAI;AAkBtC,QAAM,iBAAiB,oBAAI,IAAI;AAAA,MAC9B,CAAC,GAAG,CAAC;AAAA,MACL,CAAC,OAAO,CAAC;AAAA,MACT,CAAC,GAAG,CAAC;AAAA,MACL,CAAC,QAAQ,CAAC;AAAA,MACV,CAAC,GAAG,CAAC;AAAA,MACL,CAAC,SAAS,CAAC;AAAA,IACZ,CAAC;AAOD,aAAS,gBAAgBC,QAAO;AAC/B,aAAO,OAAOA,WAAU,YAAYA,WAAU;AAAA,IAC/C;AAOA,aAAS,iBAAiBA,QAAO;AAChC,aAAO,gBAAgBA,MAAK,KAAK,CAAC,MAAM,QAAQA,MAAK;AAAA,IACtD;AAOA,aAAS,YAAYA,QAAO;AAC3B,aAAO,OAAOA,WAAU;AAAA,IACzB;AASA,aAAS,UAAUC,QAAO,QAAQ,WAAW,oBAAI,IAAI,GAAG;AACvD,UAAI,iBAAiB,SAAS,IAAIA,MAAK;AAEvC,UAAI,gBAAgB;AACnB,cAAMC,UAAS,eAAe,IAAI,MAAM;AAExC,YAAIA,SAAQ;AAEX,iBAAOA;AAAA,QACR;AAAA,MACD,OAAO;AACN,yBAAiB,oBAAI,IAAI;AACzB,iBAAS,IAAID,QAAO,cAAc;AAAA,MACnC;AAQA,YAAM,SAAS;AAAA,QACd,GAAGA;AAAA,QACH,GAAG;AAAA,MACJ;AAEA,aAAO,OAAO;AAGd,qBAAe,IAAI,QAAQ,MAAM;AAEjC,iBAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AAEtC,YACC,QAAQ,eACR,CAAC,OAAO,UAAU,qBAAqB,KAAKA,QAAO,GAAG,GACrD;AACD;AAAA,QACD;AAEA,cAAM,aAAaA,OAAM,GAAG;AAC5B,cAAM,cAAc,OAAO,GAAG;AAE9B,YAAI,iBAAiB,UAAU,KAAK,iBAAiB,WAAW,GAAG;AAClE,iBAAO,GAAG,IAAI,UAAU,YAAY,aAAa,QAAQ;AAAA,QAC1D,WAAW,YAAY,WAAW,GAAG;AACpC,iBAAO,GAAG,IAAI;AAAA,QACf;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,qBAAqB,aAAa;AAC1C,YAAM,eAAe,MAAM,QAAQ,WAAW,IAC3C,YAAY,MAAM,CAAC,IACnB,CAAC,WAAW;AAEf,mBAAa,CAAC,IAAI,eAAe,IAAI,aAAa,CAAC,CAAC;AACpD,aAAO,gBAAgB,YAAY;AAAA,IACpC;AAOA,aAAS,UAAU,QAAQ;AAC1B,iBAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AACtC,YAAI,OAAO,OAAO,GAAG,MAAM,YAAY;AACtC,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AASA,QAAM,0BAAN,cAAsC,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,MAK3C,YAAY,QAAQD,QAAO;AAC1B;AAAA,UACC,QAAQ,MAAM;AAAA,QACf;AACA,aAAK,kBAAkB;AACvB,aAAK,cAAc,EAAE,QAAQ,OAAAA,OAAM;AAAA,MACpC;AAAA,IACD;AASA,aAAS,oBAAoB,QAAQA,QAAO;AAC3C,UACC,OAAOA,WAAU,YACjB,OAAOA,WAAU,YACjB,CAAC,MAAM,QAAQA,MAAK,GACnB;AACD,cAAM,IAAI,wBAAwB,QAAQA,MAAK;AAAA,MAChD;AAAA,IACD;AAKA,QAAM,2BAAN,cAAuC,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,MAK5C,YAAY,QAAQA,QAAO;AAC1B;AAAA,UACC,QAAQ,MAAM;AAAA,QACf;AACA,aAAK,kBAAkB;AACvB,aAAK,cAAc,EAAE,QAAQ,OAAAA,OAAM;AAAA,MACpC;AAAA,IACD;AASA,aAAS,qBAAqB,QAAQA,QAAO;AAC5C,YAAM,WAAW,eAAe,IAAIA,MAAK;AAEzC,UAAI,OAAO,aAAa,aAAa;AACpC,cAAM,IAAI,yBAAyB,QAAQA,MAAK;AAAA,MACjD;AAAA,IACD;AASA,aAAS,yBAAyBA,QAAO,mBAAmB;AAC3D,UAAI,CAAC,8BAA8B,KAAKA,MAAK,GAAG;AAC/C,cAAM,IAAI;AAAA,UACT,2CAA2C,iBAAiB,gBAAgBA,MAAK;AAAA,QAClF;AAAA,MACD;AAAA,IACD;AAQA,aAAS,eAAeA,QAAO;AAC9B,UAAI,CAAC,gBAAgBA,MAAK,GAAG;AAC5B,cAAM,IAAI,UAAU,qBAAqB;AAAA,MAC1C;AAAA,IACD;AAKA,QAAM,uBAAN,cAAmC,MAAM;AAAA;AAAA;AAAA;AAAA,MAIxC,YAAY,KAAK;AAChB;AAAA,UACC;AAAA,QACD;AACA,aAAK,kBAAkB;AACvB,aAAK,cAAc,EAAE,IAAI;AAAA,MAC1B;AAAA,IACD;AAKA,QAAM,2BAAN,cAAuC,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,MAK5C,YAAY,SAAS;AACpB;AAAA,UACC;AAAA,QACD;AACA,aAAK,kBAAkB;AACvB,aAAK,cAAc,EAAE,QAAQ;AAAA,MAC9B;AAAA,IACD;AAOA,QAAM,gBAAgB;AAAA,MACrB,OAAO;AAAA,MACP,UAAU;AAAA,IACX;AAEA,QAAM,qBAAqB,oBAAI,IAAI,CAAC,SAAS,QAAQ,OAAO,GAAG,GAAG,CAAC,CAAC;AAGpE,QAAM,iCAAiC;AAAA,MACtC,MAAMC,QAAO,QAAQ;AACpB,cAAMD,SAAQ,WAAW,SAASC,SAAQ;AAE1C,YAAI,OAAOD,WAAU,WAAW;AAC/B,iBAAOA,SAAQ,SAAS;AAAA,QACzB;AAEA,eAAO,0BAA0BA,MAAK;AAAA,MACvC;AAAA,MACA,SAASA,QAAO;AACf,YAAI,EAAE,mBAAmB,IAAIA,MAAK,KAAK,OAAOA,WAAU,YAAY;AACnE,gBAAM,IAAI;AAAA,YACT;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAGA,QAAM,oCAAoC;AAAA,MACzC,MAAMC,QAAO,QAAQ;AACpB,cAAMD,SAAQ,WAAW,SAASC,SAAQ;AAE1C,eAAO,0BAA0BD,MAAK;AAAA,MACvC;AAAA,MACA,SAASA,QAAO;AACf,YAAI,CAAC,mBAAmB,IAAIA,MAAK,GAAG;AACnC,gBAAM,IAAI;AAAA,YACT;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAGA,QAAM,yBAAyB;AAAA,MAC9B,MAAMC,SAAQ,CAAC,GAAG,SAAS,CAAC,GAAG;AAC9B,eAAO,UAAUA,QAAO,MAAM;AAAA,MAC/B;AAAA,MACA,UAAU;AAAA,IACX;AAOA,QAAM,wBAAwB;AAAA,MAC7B,MAAMA,SAAQ,CAAC,GAAG,SAAS,CAAC,GAAG;AAC9B,cAAM,SAAS,UAAUA,QAAO,MAAM;AAEtC,mBAAW,CAAC,KAAKD,MAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AAQlD,cAAI,iBAAiBA,MAAK,GAAG;AAC5B,gBAAI,UAAUA,MAAK,GAAG;AACrB,qBAAO,GAAG,IAAI,OAAO,GAAG,KAAKC,OAAM,GAAG;AACtC;AAAA,YACD;AAGA,mBAAO,GAAG,IAAI,EAAE,GAAG,OAAO,GAAG,EAAE;AAC/B;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA,MACA,UAAU;AAAA,IACX;AAGA,QAAM,iBAAiB;AAAA,MACtB,OAAO;AAAA,MACP,SAASD,QAAO;AACf,iCAAyBA,QAAO,cAAc;AAAA,MAC/C;AAAA,IACD;AAGA,QAAM,gBAAgB;AAAA,MACrB,MAAMC,SAAQ,CAAC,GAAG,SAAS,CAAC,GAAG;AAC9B,cAAME,QAAO,oBAAI,IAAI,CAAC,GAAG,OAAO,KAAKF,MAAK,GAAG,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC;AACpE,cAAM,SAAS,CAAC;AAGhB,mBAAW,OAAOE,OAAM;AAEvB,cAAI,QAAQ,aAAa;AACxB;AAAA,UACD;AAEA,cAAI,OAAOF,UAAS,OAAO,UAAUA,OAAM,GAAG,MAAM,OAAO,GAAG,GAAG;AAChE,kBAAM,IAAI,UAAU,2BAA2B,GAAG,IAAI;AAAA,UACvD;AAEA,iBAAO,GAAG,IAAI,OAAO,GAAG,KAAKA,OAAM,GAAG;AAAA,QACvC;AAEA,eAAO;AAAA,MACR;AAAA,MACA,SAASD,QAAO;AAEf,YAAIA,WAAU,QAAQ,OAAOA,WAAU,UAAU;AAChD,gBAAM,IAAI,UAAU,qBAAqB;AAAA,QAC1C;AAGA,YAAI,MAAM,QAAQA,MAAK,GAAG;AACzB,gBAAM,IAAI,yBAAyBA,MAAK;AAAA,QACzC;AAGA,mBAAW,OAAO,OAAO,KAAKA,MAAK,GAAG;AAErC,cAAI,QAAQ,aAAa;AACxB;AAAA,UACD;AAEA,cAAIA,OAAM,GAAG,MAAM,QAAQ,OAAOA,OAAM,GAAG,MAAM,UAAU;AAC1D,kBAAM,IAAI,UAAU,QAAQ,GAAG,wBAAwB;AAAA,UACxD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAGA,QAAM,kBAAkB;AAAA,MACvB,OAAO;AAAA,MACP,SAASA,QAAO;AACf,YAAI,OAAOA,WAAU,UAAU;AAC9B,mCAAyBA,QAAO,eAAe;AAAA,QAChD,WAAWA,UAAS,OAAOA,WAAU,UAAU;AAC9C,cACC,OAAOA,OAAM,eAAe,cAC5B,OAAOA,OAAM,gBAAgB,YAC5B;AACD,kBAAM,IAAI;AAAA,cACT;AAAA,YACD;AAAA,UACD;AAAA,QACD,OAAO;AACN,gBAAM,IAAI,UAAU,iCAAiC;AAAA,QACtD;AAAA,MACD;AAAA,IACD;AAGA,QAAM,cAAc;AAAA,MACnB,MAAMC,SAAQ,CAAC,GAAG,SAAS,CAAC,GAAG;AAC9B,cAAM,SAAS;AAAA,UACd,GAAGA;AAAA,UACH,GAAG;AAAA,QACJ;AAEA,mBAAW,UAAU,OAAO,KAAK,MAAM,GAAG;AACzC,cAAI;AAEH,gBAAI,WAAW,aAAa;AAE3B,qBAAO,OAAO;AACd;AAAA,YACD;AAEA,mBAAO,MAAM,IAAI,qBAAqB,OAAO,MAAM,CAAC;AAOpD,gBAAI,EAAE,UAAUA,WAAU,EAAE,UAAU,SAAS;AAC9C;AAAA,YACD;AAEA,kBAAM,mBAAmB,qBAAqBA,OAAM,MAAM,CAAC;AAC3D,kBAAM,oBAAoB,qBAAqB,OAAO,MAAM,CAAC;AAO7D,gBAAI,kBAAkB,WAAW,GAAG;AACnC,qBAAO,MAAM,IAAI;AAAA,gBAChB,kBAAkB,CAAC;AAAA,gBACnB,GAAG,iBAAiB,MAAM,CAAC;AAAA,cAC5B;AACA;AAAA,YACD;AAAA,UAOD,SAAS,IAAI;AACZ,kBAAM,IAAI,MAAM,QAAQ,MAAM,MAAM,GAAG,OAAO,IAAI;AAAA,cACjD,OAAO;AAAA,YACR,CAAC;AAAA,UACF;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA,MAEA,SAASD,QAAO;AACf,uBAAeA,MAAK;AAQpB,mBAAW,UAAU,OAAO,KAAKA,MAAK,GAAG;AAExC,cAAI,WAAW,aAAa;AAC3B;AAAA,UACD;AAEA,gBAAM,cAAcA,OAAM,MAAM;AAEhC,8BAAoB,QAAQ,WAAW;AAEvC,cAAI,MAAM,QAAQ,WAAW,GAAG;AAC/B,iCAAqB,QAAQ,YAAY,CAAC,CAAC;AAAA,UAC5C,OAAO;AACN,iCAAqB,QAAQ,WAAW;AAAA,UACzC;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAQA,aAAS,0BAA0B,KAAK;AACvC,aAAO;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AACV,gBAAM,IAAI,qBAAqB,GAAG;AAAA,QACnC;AAAA,MACD;AAAA,IACD;AAEA,QAAM,eAAe;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAMA,QAAM,mBAAmB;AAAA;AAAA,MAExB,GAAG,OAAO;AAAA,QACT,aAAa,IAAI,SAAO,CAAC,KAAK,0BAA0B,GAAG,CAAC,CAAC;AAAA,MAC9D;AAAA;AAAA,MAGA,UAAU;AAAA,MACV,eAAe;AAAA,QACd,QAAQ;AAAA,UACP,gBAAgB;AAAA,UAChB,+BAA+B;AAAA,UAC/B,2BAA2B;AAAA,QAC5B;AAAA,MACD;AAAA,MACA,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,IACR;AAMA,IAAAD,QAAO,UAAU;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA;AAAA;;;ACxlBA;AAAA,mEAAAK,UAAA;AAAA;AAKA,aAASC,YAAWC,OAAM;AACxB,UAAI,OAAOA,UAAS,UAAU;AAC5B,cAAM,IAAI,UAAU,oCAAoC,KAAK,UAAUA,KAAI,CAAC,GAAG;AAAA,MACjF;AAAA,IACF;AAIA,aAAS,YAAY,MAAM,QAAQ;AACjC,UAAI,OAAO,UAAU,KAAK,QAAQ;AAChC,eAAO;AAAA,MACT;AACA,YAAM,UAAU,KAAK,SAAS,OAAO;AACrC,eAAQ,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,EAAE,GAAE;AACzC,YAAI,KAAK,WAAW,UAAU,CAAC,MAAM,OAAO,WAAW,CAAC,GAAG;AACzD,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO,KAAK,MAAM,GAAG,CAAC,OAAO,MAAM;AAAA,IACrC;AACA,aAAS,gBAAgBA,OAAM,OAAO,QAAQ,GAAG;AAC/C,UAAI,sBAAsB;AAC1B,UAAI,MAAMA,MAAK;AACf,eAAQ,IAAIA,MAAK,SAAS,GAAG,KAAK,OAAO,EAAE,GAAE;AAC3C,YAAI,MAAMA,MAAK,WAAW,CAAC,CAAC,GAAG;AAC7B,cAAI,qBAAqB;AACvB,oBAAQ,IAAI;AACZ;AAAA,UACF;AAAA,QACF,WAAW,CAAC,qBAAqB;AAC/B,gCAAsB;AACtB,gBAAM,IAAI;AAAA,QACZ;AAAA,MACF;AACA,aAAOA,MAAK,MAAM,OAAO,GAAG;AAAA,IAC9B;AACA,aAAS,aAAaA,OAAM,QAAQ;AAClC,MAAAD,YAAWC,KAAI;AACf,UAAIA,MAAK,WAAW,EAAG,QAAOA;AAC9B,UAAI,OAAO,WAAW,UAAU;AAC9B,cAAM,IAAI,UAAU,sCAAsC,KAAK,UAAU,MAAM,CAAC,GAAG;AAAA,MACrF;AAAA,IACF;AAIA,aAAS,YAAY,KAAK;AACxB,YAAM,eAAe,MAAM,MAAM,IAAI,IAAI,GAAG;AAC5C,UAAI,IAAI,aAAa,SAAS;AAC5B,cAAM,IAAI,UAAU,qCAAqC,IAAI,QAAQ,GAAG;AAAA,MAC1E;AACA,aAAO;AAAA,IACT;AAiBI,aAAS,YAAY,KAAK;AAC5B,YAAM,YAAY,GAAG;AACrB,aAAO,mBAAmB,IAAI,SAAS,QAAQ,wBAAwB,KAAK,CAAC;AAAA,IAC/E;AAMA,aAAS,wBAAwB,SAAS,OAAO;AAC/C,UAAI,QAAQ,UAAU,GAAG;AACvB,eAAO;AAAA,MACT;AACA,UAAI,MAAM,QAAQ;AAClB,eAAQ,IAAI,QAAQ,SAAS,GAAG,IAAI,GAAG,KAAI;AACzC,YAAI,MAAM,QAAQ,WAAW,CAAC,CAAC,GAAG;AAChC,gBAAM;AAAA,QACR,OAAO;AACL;AAAA,QACF;AAAA,MACF;AACA,aAAO,QAAQ,MAAM,GAAG,GAAG;AAAA,IAC7B;AAQA,QAAM,WAAW;AACjB,QAAM,qBAAqB;AAM3B,aAAS,qBAAqBC,OAAM;AAClC,aAAOA,UAAS;AAAA,IAClB;AAwCI,aAAS,SAASD,OAAM,SAAS,IAAI;AACvC,UAAIA,iBAAgB,KAAK;AACvB,QAAAA,QAAO,YAAYA,KAAI;AAAA,MACzB;AACA,mBAAaA,OAAM,MAAM;AACzB,YAAM,cAAc,gBAAgBA,OAAM,oBAAoB;AAC9D,YAAM,kBAAkB,wBAAwB,aAAa,oBAAoB;AACjF,aAAO,SAAS,YAAY,iBAAiB,MAAM,IAAI;AAAA,IACzD;AAMI,QAAM,YAAY;AAGlB,QAAM,YAAY;AAGlB,QAAM,oBAAoB;AAI9B,aAAS,YAAYA,OAAM;AACzB,MAAAD,YAAWC,KAAI;AACf,UAAIA,MAAK,WAAW,EAAG,QAAO;AAAA,IAChC;AA+BI,aAASE,SAAQF,OAAM;AACzB,UAAIA,iBAAgB,KAAK;AACvB,QAAAA,QAAO,YAAYA,KAAI;AAAA,MACzB;AACA,kBAAYA,KAAI;AAChB,UAAI,MAAM;AACV,UAAI,sBAAsB;AAC1B,eAAQ,IAAIA,MAAK,SAAS,GAAG,KAAK,GAAG,EAAE,GAAE;AACvC,YAAI,qBAAqBA,MAAK,WAAW,CAAC,CAAC,GAAG;AAC5C,cAAI,qBAAqB;AACvB,kBAAM;AACN;AAAA,UACF;AAAA,QACF,OAAO;AACL,gCAAsB;AAAA,QACxB;AAAA,MACF;AAQA,UAAI,QAAQ,IAAI;AACd,eAAO,qBAAqBA,MAAK,WAAW,CAAC,CAAC,IAAI,MAAM;AAAA,MAC1D;AACA,aAAO,wBAAwBA,MAAK,MAAM,GAAG,GAAG,GAAG,oBAAoB;AAAA,IACzE;AAsCI,aAAS,QAAQA,OAAM;AACzB,UAAIA,iBAAgB,KAAK;AACvB,QAAAA,QAAO,YAAYA,KAAI;AAAA,MACzB;AACA,MAAAD,YAAWC,KAAI;AACf,UAAI,WAAW;AACf,UAAI,YAAY;AAChB,UAAI,MAAM;AACV,UAAI,eAAe;AAGnB,UAAI,cAAc;AAClB,eAAQ,IAAIA,MAAK,SAAS,GAAG,KAAK,GAAG,EAAE,GAAE;AACvC,cAAMC,QAAOD,MAAK,WAAW,CAAC;AAC9B,YAAI,qBAAqBC,KAAI,GAAG;AAG9B,cAAI,CAAC,cAAc;AACjB,wBAAY,IAAI;AAChB;AAAA,UACF;AACA;AAAA,QACF;AACA,YAAI,QAAQ,IAAI;AAGd,yBAAe;AACf,gBAAM,IAAI;AAAA,QACZ;AACA,YAAIA,UAAS,UAAU;AAErB,cAAI,aAAa,GAAI,YAAW;AAAA,mBACvB,gBAAgB,EAAG,eAAc;AAAA,QAC5C,WAAW,aAAa,IAAI;AAG1B,wBAAc;AAAA,QAChB;AAAA,MACF;AACA,UAAI,aAAa,MAAM,QAAQ;AAAA,MAC/B,gBAAgB;AAAA,MAChB,gBAAgB,KAAK,aAAa,MAAM,KAAK,aAAa,YAAY,GAAG;AACvE,eAAO;AAAA,MACT;AACA,aAAOD,MAAK,MAAM,UAAU,GAAG;AAAA,IACjC;AAIA,aAAS,QAAQ,KAAK,YAAY;AAChC,YAAM,MAAM,WAAW,OAAO,WAAW;AACzC,YAAMG,QAAO,WAAW,SAAS,WAAW,QAAQ,OAAO,WAAW,OAAO;AAC7E,UAAI,CAAC,IAAK,QAAOA;AACjB,UAAIA,UAAS,IAAK,QAAO;AACzB,UAAI,QAAQ,WAAW,KAAM,QAAO,MAAMA;AAC1C,aAAO,MAAM,MAAMA;AAAA,IACrB;AACA,aAAS,YAAY,YAAY;AAC/B,UAAI,eAAe,QAAQ,OAAO,eAAe,UAAU;AACzD,cAAM,IAAI,UAAU,oEAAoE,OAAO,UAAU,GAAG;AAAA,MAC9G;AAAA,IACF;AAwBI,aAAS,OAAO,YAAY;AAC9B,kBAAY,UAAU;AACtB,aAAO,QAAQ,KAAK,UAAU;AAAA,IAChC;AAkBI,aAAS,WAAWH,OAAM;AAC5B,MAAAD,YAAWC,KAAI;AACf,aAAOA,MAAK,SAAS,KAAK,qBAAqBA,MAAK,WAAW,CAAC,CAAC;AAAA,IACnE;AAIA,aAAS,UAAUA,OAAM;AACvB,MAAAD,YAAWC,KAAI;AACf,UAAIA,MAAK,WAAW,EAAG,QAAO;AAAA,IAChC;AAOA,aAAS,gBAAgBA,OAAM,gBAAgB,WAAW,iBAAiB;AACzE,UAAI,MAAM;AACV,UAAI,oBAAoB;AACxB,UAAI,YAAY;AAChB,UAAI,OAAO;AACX,UAAIC;AACJ,eAAQ,IAAI,GAAG,KAAKD,MAAK,QAAQ,EAAE,GAAE;AACnC,YAAI,IAAIA,MAAK,OAAQ,CAAAC,QAAOD,MAAK,WAAW,CAAC;AAAA,iBACpC,gBAAgBC,KAAI,EAAG;AAAA,YAC3B,CAAAA,QAAO;AACZ,YAAI,gBAAgBA,KAAI,GAAG;AACzB,cAAI,cAAc,IAAI,KAAK,SAAS,EAAG;AAAA,mBAAW,cAAc,IAAI,KAAK,SAAS,GAAG;AACnF,gBAAI,IAAI,SAAS,KAAK,sBAAsB,KAAK,IAAI,WAAW,IAAI,SAAS,CAAC,MAAM,YAAY,IAAI,WAAW,IAAI,SAAS,CAAC,MAAM,UAAU;AAC3I,kBAAI,IAAI,SAAS,GAAG;AAClB,sBAAM,iBAAiB,IAAI,YAAY,SAAS;AAChD,oBAAI,mBAAmB,IAAI;AACzB,wBAAM;AACN,sCAAoB;AAAA,gBACtB,OAAO;AACL,wBAAM,IAAI,MAAM,GAAG,cAAc;AACjC,sCAAoB,IAAI,SAAS,IAAI,IAAI,YAAY,SAAS;AAAA,gBAChE;AACA,4BAAY;AACZ,uBAAO;AACP;AAAA,cACF,WAAW,IAAI,WAAW,KAAK,IAAI,WAAW,GAAG;AAC/C,sBAAM;AACN,oCAAoB;AACpB,4BAAY;AACZ,uBAAO;AACP;AAAA,cACF;AAAA,YACF;AACA,gBAAI,gBAAgB;AAClB,kBAAI,IAAI,SAAS,EAAG,QAAO,GAAG,SAAS;AAAA,kBAClC,OAAM;AACX,kCAAoB;AAAA,YACtB;AAAA,UACF,OAAO;AACL,gBAAI,IAAI,SAAS,EAAG,QAAO,YAAYD,MAAK,MAAM,YAAY,GAAG,CAAC;AAAA,gBAC7D,OAAMA,MAAK,MAAM,YAAY,GAAG,CAAC;AACtC,gCAAoB,IAAI,YAAY;AAAA,UACtC;AACA,sBAAY;AACZ,iBAAO;AAAA,QACT,WAAWC,UAAS,YAAY,SAAS,IAAI;AAC3C,YAAE;AAAA,QACJ,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAsCI,aAASG,WAAUJ,OAAM;AAC3B,UAAIA,iBAAgB,KAAK;AACvB,QAAAA,QAAO,YAAYA,KAAI;AAAA,MACzB;AACA,gBAAUA,KAAI;AACd,YAAMK,cAAa,qBAAqBL,MAAK,WAAW,CAAC,CAAC;AAC1D,YAAM,oBAAoB,qBAAqBA,MAAK,WAAWA,MAAK,SAAS,CAAC,CAAC;AAE/E,MAAAA,QAAO,gBAAgBA,OAAM,CAACK,aAAY,KAAK,oBAAoB;AACnE,UAAIL,MAAK,WAAW,KAAK,CAACK,YAAY,CAAAL,QAAO;AAC7C,UAAIA,MAAK,SAAS,KAAK,kBAAmB,CAAAA,SAAQ;AAClD,UAAIK,YAAY,QAAO,IAAIL,KAAI;AAC/B,aAAOA;AAAA,IACT;AAgCI,aAAS,KAAKA,UAAS,OAAO;AAChC,UAAIA,UAAS,OAAW,QAAO;AAC/B,UAAIA,iBAAgB,KAAK;AACvB,QAAAA,QAAO,YAAYA,KAAI;AAAA,MACzB;AACA,cAAQA,QAAO;AAAA,QACbA;AAAA,QACA,GAAG;AAAA,MACL,IAAI;AACJ,YAAM,QAAQ,CAACA,UAAOD,YAAWC,KAAI,CAAC;AACtC,YAAM,SAAS,MAAM,OAAO,CAACA,UAAOA,MAAK,SAAS,CAAC,EAAE,KAAK,GAAG;AAC7D,aAAO,WAAW,KAAK,MAAMI,WAAU,MAAM;AAAA,IAC/C;AAwBI,aAASE,OAAMN,OAAM;AACvB,MAAAD,YAAWC,KAAI;AACf,YAAM,MAAM;AAAA,QACV,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,MACR;AACA,UAAIA,MAAK,WAAW,EAAG,QAAO;AAC9B,YAAMK,cAAa,qBAAqBL,MAAK,WAAW,CAAC,CAAC;AAC1D,UAAI;AACJ,UAAIK,aAAY;AACd,YAAI,OAAO;AACX,gBAAQ;AAAA,MACV,OAAO;AACL,gBAAQ;AAAA,MACV;AACA,UAAI,WAAW;AACf,UAAI,YAAY;AAChB,UAAI,MAAM;AACV,UAAI,eAAe;AACnB,UAAI,IAAIL,MAAK,SAAS;AAGtB,UAAI,cAAc;AAElB,aAAM,KAAK,OAAO,EAAE,GAAE;AACpB,cAAMC,QAAOD,MAAK,WAAW,CAAC;AAC9B,YAAI,qBAAqBC,KAAI,GAAG;AAG9B,cAAI,CAAC,cAAc;AACjB,wBAAY,IAAI;AAChB;AAAA,UACF;AACA;AAAA,QACF;AACA,YAAI,QAAQ,IAAI;AAGd,yBAAe;AACf,gBAAM,IAAI;AAAA,QACZ;AACA,YAAIA,UAAS,UAAU;AAErB,cAAI,aAAa,GAAI,YAAW;AAAA,mBACvB,gBAAgB,EAAG,eAAc;AAAA,QAC5C,WAAW,aAAa,IAAI;AAG1B,wBAAc;AAAA,QAChB;AAAA,MACF;AACA,UAAI,aAAa,MAAM,QAAQ;AAAA,MAC/B,gBAAgB;AAAA,MAChB,gBAAgB,KAAK,aAAa,MAAM,KAAK,aAAa,YAAY,GAAG;AACvE,YAAI,QAAQ,IAAI;AACd,cAAI,cAAc,KAAKI,aAAY;AACjC,gBAAI,OAAO,IAAI,OAAOL,MAAK,MAAM,GAAG,GAAG;AAAA,UACzC,OAAO;AACL,gBAAI,OAAO,IAAI,OAAOA,MAAK,MAAM,WAAW,GAAG;AAAA,UACjD;AAAA,QACF;AAEA,YAAI,OAAO,IAAI,QAAQ;AAAA,MACzB,OAAO;AACL,YAAI,cAAc,KAAKK,aAAY;AACjC,cAAI,OAAOL,MAAK,MAAM,GAAG,QAAQ;AACjC,cAAI,OAAOA,MAAK,MAAM,GAAG,GAAG;AAAA,QAC9B,OAAO;AACL,cAAI,OAAOA,MAAK,MAAM,WAAW,QAAQ;AACzC,cAAI,OAAOA,MAAK,MAAM,WAAW,GAAG;AAAA,QACtC;AACA,YAAI,MAAMA,MAAK,MAAM,UAAU,GAAG;AAAA,MACpC;AACA,UAAI,YAAY,GAAG;AACjB,YAAI,MAAM,wBAAwBA,MAAK,MAAM,GAAG,YAAY,CAAC,GAAG,oBAAoB;AAAA,MACtF,WAAWK,YAAY,KAAI,MAAM;AACjC,aAAO;AAAA,IACT;AAkBI,aAASE,YAAW,cAAc;AACpC,UAAI,eAAe;AACnB,UAAI,mBAAmB;AACvB,eAAQ,IAAI,aAAa,SAAS,GAAG,KAAK,MAAM,CAAC,kBAAkB,KAAI;AACrE,YAAIP;AACJ,YAAI,KAAK,EAAG,CAAAA,QAAO,aAAa,CAAC;AAAA,aAC5B;AAEH,gBAAM,EAAE,KAAK,IAAI;AACjB,cAAI,OAAO,MAAM,QAAQ,YAAY;AACnC,kBAAM,IAAI,UAAU,oEAAoE;AAAA,UAC1F;AACA,UAAAA,QAAO,KAAK,IAAI;AAAA,QAClB;AACA,QAAAD,YAAWC,KAAI;AAEf,YAAIA,MAAK,WAAW,GAAG;AACrB;AAAA,QACF;AACA,uBAAe,GAAGA,KAAI,IAAI,YAAY;AACtC,2BAAmB,qBAAqBA,MAAK,WAAW,CAAC,CAAC;AAAA,MAC5D;AAIA,qBAAe,gBAAgB,cAAc,CAAC,kBAAkB,KAAK,oBAAoB;AACzF,UAAI,kBAAkB;AACpB,YAAI,aAAa,SAAS,EAAG,QAAO,IAAI,YAAY;AAAA,YAC/C,QAAO;AAAA,MACd,WAAW,aAAa,SAAS,EAAG,QAAO;AAAA,UACtC,QAAO;AAAA,IACd;AAIA,aAAS,WAAW,MAAM,IAAI;AAC5B,MAAAD,YAAW,IAAI;AACf,MAAAA,YAAW,EAAE;AACb,UAAI,SAAS,GAAI,QAAO;AAAA,IAC1B;AAqBI,aAAS,SAAS,MAAM,IAAI;AAC9B,iBAAW,MAAM,EAAE;AACnB,aAAOQ,SAAQ,IAAI;AACnB,WAAKA,SAAQ,EAAE;AACf,UAAI,SAAS,GAAI,QAAO;AAExB,UAAI,YAAY;AAChB,YAAM,UAAU,KAAK;AACrB,aAAM,YAAY,SAAS,EAAE,WAAU;AACrC,YAAI,CAAC,qBAAqB,KAAK,WAAW,SAAS,CAAC,EAAG;AAAA,MACzD;AACA,YAAM,UAAU,UAAU;AAE1B,UAAI,UAAU;AACd,YAAM,QAAQ,GAAG;AACjB,aAAM,UAAU,OAAO,EAAE,SAAQ;AAC/B,YAAI,CAAC,qBAAqB,GAAG,WAAW,OAAO,CAAC,EAAG;AAAA,MACrD;AACA,YAAM,QAAQ,QAAQ;AAEtB,YAAM,SAAS,UAAU,QAAQ,UAAU;AAC3C,UAAI,gBAAgB;AACpB,UAAI,IAAI;AACR,aAAM,KAAK,QAAQ,EAAE,GAAE;AACrB,YAAI,MAAM,QAAQ;AAChB,cAAI,QAAQ,QAAQ;AAClB,gBAAI,qBAAqB,GAAG,WAAW,UAAU,CAAC,CAAC,GAAG;AAGpD,qBAAO,GAAG,MAAM,UAAU,IAAI,CAAC;AAAA,YACjC,WAAW,MAAM,GAAG;AAGlB,qBAAO,GAAG,MAAM,UAAU,CAAC;AAAA,YAC7B;AAAA,UACF,WAAW,UAAU,QAAQ;AAC3B,gBAAI,qBAAqB,KAAK,WAAW,YAAY,CAAC,CAAC,GAAG;AAGxD,8BAAgB;AAAA,YAClB,WAAW,MAAM,GAAG;AAGlB,8BAAgB;AAAA,YAClB;AAAA,UACF;AACA;AAAA,QACF;AACA,cAAM,WAAW,KAAK,WAAW,YAAY,CAAC;AAC9C,cAAM,SAAS,GAAG,WAAW,UAAU,CAAC;AACxC,YAAI,aAAa,OAAQ;AAAA,iBAChB,qBAAqB,QAAQ,EAAG,iBAAgB;AAAA,MAC3D;AACA,UAAI,MAAM;AAGV,WAAI,IAAI,YAAY,gBAAgB,GAAG,KAAK,SAAS,EAAE,GAAE;AACvD,YAAI,MAAM,WAAW,qBAAqB,KAAK,WAAW,CAAC,CAAC,GAAG;AAC7D,cAAI,IAAI,WAAW,EAAG,QAAO;AAAA,cACxB,QAAO;AAAA,QACd;AAAA,MACF;AAGA,UAAI,IAAI,SAAS,EAAG,QAAO,MAAM,GAAG,MAAM,UAAU,aAAa;AAAA,WAC5D;AACH,mBAAW;AACX,YAAI,qBAAqB,GAAG,WAAW,OAAO,CAAC,EAAG,GAAE;AACpD,eAAO,GAAG,MAAM,OAAO;AAAA,MACzB;AAAA,IACF;AAIA,QAAM,uBAAuB;AAAA,MAC3B,KAAU;AAAA,MACV,MAAU;AAAA,MACV,MAAU;AAAA,MACV,MAAU;AAAA,MACV,MAAU;AAAA,MACV,KAAU;AAAA,IACZ;AACA,aAAS,iBAAiBC,SAAQ;AAChC,aAAOA,QAAO,WAAW,SAAS,CAAC,MAAI;AACrC,eAAO,qBAAqB,CAAC,KAAK;AAAA,MACpC,CAAC;AAAA,IACH;AAkBI,aAAS,UAAUR,OAAM;AAC3B,UAAI,CAAC,WAAWA,KAAI,GAAG;AACrB,cAAM,IAAI,UAAU,oCAAoCA,KAAI,GAAG;AAAA,MACjE;AACA,YAAM,MAAM,IAAI,IAAI,UAAU;AAC9B,UAAI,WAAW,iBAAiBA,MAAK,QAAQ,MAAM,KAAK,EAAE,QAAQ,OAAO,KAAK,CAAC;AAC/E,aAAO;AAAA,IACT;AAiBI,aAAS,iBAAiBA,OAAM;AAElC,aAAOA;AAAA,IACT;AAIA,aAAS,SAAS,OAAO,KAAK;AAC5B,YAAM,CAACS,SAAQ,IAAI,GAAG,SAAS,IAAI;AACnC,YAAM,QAAQA,OAAM,MAAM,GAAG;AAC7B,UAAI,cAAc,MAAM;AACxB,UAAI,SAAS;AACb,iBAAWT,SAAQ,WAAU;AAC3B,cAAMU,WAAUV,MAAK,MAAM,GAAG;AAC9B,YAAIU,SAAQ,UAAU,aAAa;AACjC,wBAAcA,SAAQ;AACtB,mBAAS;AAAA,QACX;AACA,iBAAQ,IAAI,GAAG,IAAI,aAAa,KAAI;AAClC,cAAIA,SAAQ,CAAC,MAAM,MAAM,CAAC,GAAG;AAC3B,0BAAc;AACd,qBAAS,MAAM,IAAI,KAAK;AACxB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAO,MAAM,MAAM,GAAG,WAAW,EAAE,KAAK,GAAG,IAAI;AAAA,IACjD;AAoBI,aAAS,OAAO,OAAO;AACzB,aAAO,SAAS,OAAO,SAAS;AAAA,IAClC;AAOI,QAAM,uBAAuB;AAAA,MAC/B;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;AACA,QAAM,qBAAqB;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,aAAS,cAAc,GAAG,MAAM;AAAA,MAAE,WAAW;AAAA,MAAM,UAAU,iBAAiB;AAAA;AAAA,MAC9E,kBAAkB;AAAA,IAAM,IAAI,CAAC,GAAG;AAC9B,UAAI,SAAS,IAAI;AACf,eAAO;AAAA,MACT;AAEA,UAAI,YAAY,KAAK;AACrB,aAAM,YAAY,KAAK,EAAE,KAAK,SAAS,KAAK,YAAY,CAAC,CAAC,GAAG,YAAY;AACzE,aAAO,KAAK,MAAM,GAAG,SAAS;AAC9B,UAAI,eAAe;AAEnB,eAAQ,IAAI,GAAG,IAAI,KAAK,UAAQ;AAC9B,YAAI,UAAU;AACd,cAAM,aAAa,CAAC;AACpB,YAAI,UAAU;AACd,YAAI,WAAW;AACf,YAAI,cAAc;AAClB,YAAI,IAAI;AAER,eAAM,IAAI,KAAK,UAAU,EAAE,EAAE,KAAK,SAAS,KAAK,CAAC,CAAC,KAAK,WAAW,WAAW,IAAI,KAAI;AACnF,cAAI,UAAU;AACZ,uBAAW;AACX,kBAAM,cAAc,UAAU,qBAAqB;AACnD,uBAAW,YAAY,SAAS,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC;AAClE;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,EAAE,cAAc;AAC9B,uBAAW;AACX;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,KAAK;AACnB,gBAAI,CAAC,SAAS;AACZ,wBAAU;AACV,yBAAW;AACX,kBAAI,KAAK,IAAI,CAAC,MAAM,KAAK;AACvB;AACA,2BAAW;AAAA,cACb,WAAW,KAAK,IAAI,CAAC,MAAM,KAAK;AAC9B;AACA,2BAAW;AAAA,cACb;AACA;AAAA,YACF,WAAW,KAAK,IAAI,CAAC,MAAM,KAAK;AAC9B,kBAAI,IAAI,IAAI;AACZ,kBAAIC,SAAQ;AACZ,qBAAM,KAAK,IAAI,CAAC,MAAM,UAAa,KAAK,IAAI,CAAC,MAAM,KAAI;AACrD,gBAAAA,UAAS,KAAK,IAAI,CAAC;AACnB;AAAA,cACF;AACA,kBAAI,KAAK,IAAI,CAAC,MAAM,OAAO,KAAK,IAAI,CAAC,MAAM,KAAK;AAC9C,oBAAI,IAAI;AACR,oBAAIA,WAAU,QAAS,YAAW;AAAA,yBACzBA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,SAAS;AAC1B,6BAAW;AAAA,gBACb,WAAWA,WAAU,QAAS,YAAW;AAAA,yBAChCA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,OAAQ,YAAW;AAAA,yBAC7BA,WAAU,SAAU,YAAW;AACxC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,OAAO,SAAS;AAC9B,sBAAU;AACV,uBAAW;AACX;AAAA,UACF;AACA,cAAI,SAAS;AACX,uBAAW,KAAK,CAAC;AACjB;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,OAAO,WAAW,SAAS,KAAK,WAAW,WAAW,SAAS,CAAC,MAAM,SAAS;AAC7F,uBAAW;AACX,kBAAM,OAAO,WAAW,IAAI;AAC5B,gBAAI,SAAS,KAAK;AAChB,yBAAW,EAAE;AAAA,YACf,WAAW,SAAS,KAAK;AACvB,yBAAW;AAAA,YACb;AACA;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,OAAO,WAAW,SAAS,KAAK,WAAW,WAAW,SAAS,CAAC,MAAM,SAAS;AAC7F,uBAAW;AACX;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,OAAO,YAAY,KAAK,IAAI,CAAC,MAAM,KAAK;AACtD;AACA,uBAAW,KAAK,GAAG;AACnB,uBAAW;AACX;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,OAAO,YAAY,KAAK,IAAI,CAAC,MAAM,KAAK;AACtD;AACA,uBAAW,KAAK,GAAG;AACnB,uBAAW;AACX;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,KAAK;AACnB,gBAAI,YAAY,KAAK,IAAI,CAAC,MAAM,KAAK;AACnC;AACA,yBAAW,KAAK,GAAG;AACnB,yBAAW;AAAA,YACb,OAAO;AACL,yBAAW;AAAA,YACb;AACA;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,OAAO,YAAY,KAAK,IAAI,CAAC,MAAM,KAAK;AACtD;AACA,uBAAW,KAAK,GAAG;AACnB,uBAAW;AACX;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,KAAK;AACnB,uBAAW,KAAK,OAAO;AACvB,uBAAW;AACX;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,OAAO,WAAW,WAAW,SAAS,CAAC,MAAM,SAAS;AACpE,uBAAW,IAAI;AACf,uBAAW;AACX;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,OAAO,WAAW,WAAW,SAAS,CAAC,MAAM,SAAS;AACpE,uBAAW;AACX;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,KAAK;AACnB,gBAAI,YAAY,KAAK,IAAI,CAAC,MAAM,KAAK;AACnC;AACA,yBAAW,KAAK,GAAG;AACnB,yBAAW;AAAA,YACb,OAAO;AACL,oBAAM,WAAW,KAAK,IAAI,CAAC;AAC3B,kBAAI,WAAW;AACf,qBAAM,KAAK,IAAI,CAAC,MAAM,KAAI;AACxB;AACA;AAAA,cACF;AACA,oBAAM,WAAW,KAAK,IAAI,CAAC;AAC3B,kBAAI,kBAAkB,aAAa,KAAK;AAAA,gBACtC,GAAG,EAAE;AAAA,gBACL;AAAA,cACF,EAAE,SAAS,QAAQ,KAAK;AAAA,gBACtB,GAAG,EAAE;AAAA,gBACL;AAAA,cACF,EAAE,SAAS,QAAQ,GAAG;AACpB,2BAAW,EAAE;AACb,8BAAc;AAAA,cAChB,OAAO;AACL,2BAAW,EAAE;AAAA,cACf;AAAA,YACF;AACA;AAAA,UACF;AACA,qBAAW,qBAAqB,SAAS,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC;AAAA,QAC7E;AAEA,YAAI,WAAW,SAAS,KAAK,WAAW,UAAU;AAEhD,oBAAU;AACV,qBAAWC,MAAK,KAAK,MAAM,GAAG,CAAC,GAAE;AAC/B,uBAAW,qBAAqB,SAASA,EAAC,IAAI,KAAKA,EAAC,KAAKA;AACzD,0BAAc;AAAA,UAChB;AAAA,QACF;AACA,wBAAgB;AAChB,YAAI,CAAC,aAAa;AAChB,0BAAgB,IAAI,KAAK,SAAS,EAAE,MAAM,EAAE;AAC5C,wBAAc;AAAA,QAChB;AAEA,eAAM,EAAE,KAAK,SAAS,KAAK,CAAC,CAAC,EAAE;AAC/B,YAAI;AAAA,MACN;AACA,qBAAe,IAAI,YAAY;AAC/B,aAAO,IAAI,OAAO,cAAc,kBAAkB,MAAM,EAAE;AAAA,IAC5D;AAIA,QAAM,YAAY;AAAA,MAChB,KAAK;AAAA,MACL,UAAU;AAAA,MACV,MAAM;AAAA,QACJ;AAAA,MACF;AAAA,MACA,UAAU;AAAA,MACV,UAAU;AAAA,MACV,cAAc;AAAA,IAChB;AAoEI,aAAS,aAAa,MAAM,UAAU,CAAC,GAAG;AAC5C,aAAO,cAAc,WAAW,MAAM,OAAO;AAAA,IAC/C;AAkBI,aAAS,OAAO,KAAK;AACvB,YAAM,QAAQ;AAAA,QACZ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AACA,YAAM,QAAQ;AACd,UAAI,QAAQ,IAAI;AACd,eAAO;AAAA,MACT;AACA,UAAIC;AACJ,aAAMA,SAAQ,MAAM,KAAK,GAAG,GAAE;AAC5B,YAAIA,OAAM,CAAC,EAAG,QAAO;AACrB,YAAIC,OAAMD,OAAM,QAAQA,OAAM,CAAC,EAAE;AAGjC,cAAME,QAAOF,OAAM,CAAC;AACpB,cAAMG,SAAQD,QAAO,MAAMA,KAAI,IAAI;AACnC,YAAIA,SAAQC,QAAO;AACjB,gBAAM,IAAI,IAAI,QAAQA,QAAOF,IAAG;AAChC,cAAI,MAAM,IAAI;AACZ,YAAAA,OAAM,IAAI;AAAA,UACZ;AAAA,QACF;AACA,cAAM,IAAI,MAAMA,IAAG;AAAA,MACrB;AACA,aAAO;AAAA,IACT;AAmBI,aAAS,cAAc,MAAM,UAAU,CAAC,GAAG;AAC7C,YAAM,EAAE,WAAW,MAAM,IAAI;AAC7B,UAAI,KAAK,MAAM,KAAK,GAAG;AACrB,cAAM,IAAI,MAAM,sCAAsC,IAAI,GAAG;AAAA,MAC/D;AACA,UAAI,CAAC,UAAU;AACb,eAAOV,WAAU,IAAI;AAAA,MACvB;AACA,YAAM,IAAI,kBAAkB;AAC5B,YAAM,mBAAmB,IAAI,OAAO,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,GAAG;AAClF,aAAOA,WAAU,KAAK,QAAQ,kBAAkB,IAAI,CAAC,EAAE,QAAQ,OAAO,IAAI;AAAA,IAC5E;AAmBI,aAAS,UAAU,OAAO,UAAU,CAAC,GAAG;AAC1C,YAAM,EAAE,WAAW,MAAM,IAAI;AAC7B,UAAI,CAAC,YAAY,MAAM,WAAW,GAAG;AACnC,eAAO,KAAK,GAAG,KAAK;AAAA,MACtB;AACA,UAAI;AACJ,iBAAW,QAAQ,OAAM;AACvB,cAAMJ,QAAO;AACb,YAAIA,MAAK,SAAS,GAAG;AACnB,cAAI,CAAC,OAAQ,UAASA;AAAA,cACjB,WAAU,GAAG,SAAS,GAAGA,KAAI;AAAA,QACpC;AAAA,MACF;AACA,UAAI,CAAC,OAAQ,QAAO;AACpB,aAAO,cAAc,QAAQ;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,IACH;AAEA,IAAAF,SAAQ,YAAY;AACpB,IAAAA,SAAQ,YAAY;AACpB,IAAAA,SAAQ,oBAAoB;AAC5B,IAAAA,SAAQ,WAAW;AACnB,IAAAA,SAAQ,SAAS;AACjB,IAAAA,SAAQ,UAAUI;AAClB,IAAAJ,SAAQ,UAAU;AAClB,IAAAA,SAAQ,SAAS;AACjB,IAAAA,SAAQ,cAAc;AACtB,IAAAA,SAAQ,eAAe;AACvB,IAAAA,SAAQ,aAAa;AACrB,IAAAA,SAAQ,SAAS;AACjB,IAAAA,SAAQ,OAAO;AACf,IAAAA,SAAQ,YAAY;AACpB,IAAAA,SAAQ,YAAYM;AACpB,IAAAN,SAAQ,gBAAgB;AACxB,IAAAA,SAAQ,QAAQQ;AAChB,IAAAR,SAAQ,WAAW;AACnB,IAAAA,SAAQ,UAAUS;AAClB,IAAAT,SAAQ,YAAY;AACpB,IAAAA,SAAQ,mBAAmB;AAAA;AAAA;;;ACvzC3B;AAAA,qEAAAmB,UAAA;AAAA;AAKA,aAASC,YAAWC,OAAM;AACxB,UAAI,OAAOA,UAAS,UAAU;AAC5B,cAAM,IAAI,UAAU,oCAAoC,KAAK,UAAUA,KAAI,CAAC,GAAG;AAAA,MACjF;AAAA,IACF;AAIA,aAAS,YAAY,MAAM,QAAQ;AACjC,UAAI,OAAO,UAAU,KAAK,QAAQ;AAChC,eAAO;AAAA,MACT;AACA,YAAM,UAAU,KAAK,SAAS,OAAO;AACrC,eAAQ,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,EAAE,GAAE;AACzC,YAAI,KAAK,WAAW,UAAU,CAAC,MAAM,OAAO,WAAW,CAAC,GAAG;AACzD,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO,KAAK,MAAM,GAAG,CAAC,OAAO,MAAM;AAAA,IACrC;AACA,aAAS,gBAAgBA,OAAM,OAAO,QAAQ,GAAG;AAC/C,UAAI,sBAAsB;AAC1B,UAAI,MAAMA,MAAK;AACf,eAAQ,IAAIA,MAAK,SAAS,GAAG,KAAK,OAAO,EAAE,GAAE;AAC3C,YAAI,MAAMA,MAAK,WAAW,CAAC,CAAC,GAAG;AAC7B,cAAI,qBAAqB;AACvB,oBAAQ,IAAI;AACZ;AAAA,UACF;AAAA,QACF,WAAW,CAAC,qBAAqB;AAC/B,gCAAsB;AACtB,gBAAM,IAAI;AAAA,QACZ;AAAA,MACF;AACA,aAAOA,MAAK,MAAM,OAAO,GAAG;AAAA,IAC9B;AACA,aAAS,aAAaA,OAAM,QAAQ;AAClC,MAAAD,YAAWC,KAAI;AACf,UAAIA,MAAK,WAAW,EAAG,QAAOA;AAC9B,UAAI,OAAO,WAAW,UAAU;AAC9B,cAAM,IAAI,UAAU,sCAAsC,KAAK,UAAU,MAAM,CAAC,GAAG;AAAA,MACrF;AAAA,IACF;AAOA,QAAM,mBAAmB;AACzB,QAAM,mBAAmB;AACzB,QAAM,mBAAmB;AACzB,QAAM,mBAAmB;AAEzB,QAAM,WAAW;AACjB,QAAM,qBAAqB;AAC3B,QAAM,sBAAsB;AAC5B,QAAM,aAAa;AACnB,QAAM,qBAAqB;AAM3B,aAAS,wBAAwB,SAAS,OAAO;AAC/C,UAAI,QAAQ,UAAU,GAAG;AACvB,eAAO;AAAA,MACT;AACA,UAAI,MAAM,QAAQ;AAClB,eAAQ,IAAI,QAAQ,SAAS,GAAG,IAAI,GAAG,KAAI;AACzC,YAAI,MAAM,QAAQ,WAAW,CAAC,CAAC,GAAG;AAChC,gBAAM;AAAA,QACR,OAAO;AACL;AAAA,QACF;AAAA,MACF;AACA,aAAO,QAAQ,MAAM,GAAG,GAAG;AAAA,IAC7B;AAMA,aAAS,qBAAqBC,OAAM;AAClC,aAAOA,UAAS;AAAA,IAClB;AACA,aAAS,gBAAgBA,OAAM;AAC7B,aAAOA,UAAS,sBAAsBA,UAAS;AAAA,IACjD;AACA,aAAS,oBAAoBA,OAAM;AACjC,aAAOA,SAAQ,oBAAoBA,SAAQ,oBAAoBA,SAAQ,oBAAoBA,SAAQ;AAAA,IACrG;AAIA,aAAS,YAAY,KAAK;AACxB,YAAM,eAAe,MAAM,MAAM,IAAI,IAAI,GAAG;AAC5C,UAAI,IAAI,aAAa,SAAS;AAC5B,cAAM,IAAI,UAAU,qCAAqC,IAAI,QAAQ,GAAG;AAAA,MAC1E;AACA,aAAO;AAAA,IACT;AAmBI,aAAS,YAAY,KAAK;AAC5B,YAAM,YAAY,GAAG;AACrB,UAAID,QAAO,mBAAmB,IAAI,SAAS,QAAQ,OAAO,IAAI,EAAE,QAAQ,wBAAwB,KAAK,CAAC,EAAE,QAAQ,yBAAyB,MAAM;AAC/I,UAAI,IAAI,aAAa,IAAI;AAIvB,QAAAA,QAAO,OAAO,IAAI,QAAQ,GAAGA,KAAI;AAAA,MACnC;AACA,aAAOA;AAAA,IACT;AAuBI,aAAS,SAASA,OAAM,SAAS,IAAI;AACvC,UAAIA,iBAAgB,KAAK;AACvB,QAAAA,QAAO,YAAYA,KAAI;AAAA,MACzB;AACA,mBAAaA,OAAM,MAAM;AAIzB,UAAI,QAAQ;AACZ,UAAIA,MAAK,UAAU,GAAG;AACpB,cAAM,QAAQA,MAAK,WAAW,CAAC;AAC/B,YAAI,oBAAoB,KAAK,GAAG;AAC9B,cAAIA,MAAK,WAAW,CAAC,MAAM,WAAY,SAAQ;AAAA,QACjD;AAAA,MACF;AACA,YAAM,cAAc,gBAAgBA,OAAM,iBAAiB,KAAK;AAChE,YAAM,kBAAkB,wBAAwB,aAAa,eAAe;AAC5E,aAAO,SAAS,YAAY,iBAAiB,MAAM,IAAI;AAAA,IACzD;AAMI,QAAM,YAAY;AAGlB,QAAM,YAAY;AAGlB,QAAM,oBAAoB;AAI9B,aAAS,YAAYA,OAAM;AACzB,MAAAD,YAAWC,KAAI;AACf,UAAIA,MAAK,WAAW,EAAG,QAAO;AAAA,IAChC;AAkBI,aAASE,SAAQF,OAAM;AACzB,UAAIA,iBAAgB,KAAK;AACvB,QAAAA,QAAO,YAAYA,KAAI;AAAA,MACzB;AACA,kBAAYA,KAAI;AAChB,YAAM,MAAMA,MAAK;AACjB,UAAI,UAAU;AACd,UAAI,MAAM;AACV,UAAI,eAAe;AACnB,UAAI,SAAS;AACb,YAAMC,QAAOD,MAAK,WAAW,CAAC;AAE9B,UAAI,MAAM,GAAG;AACX,YAAI,gBAAgBC,KAAI,GAAG;AAEzB,oBAAU,SAAS;AACnB,cAAI,gBAAgBD,MAAK,WAAW,CAAC,CAAC,GAAG;AAEvC,gBAAI,IAAI;AACR,gBAAI,OAAO;AAEX,mBAAM,IAAI,KAAK,EAAE,GAAE;AACjB,kBAAI,gBAAgBA,MAAK,WAAW,CAAC,CAAC,EAAG;AAAA,YAC3C;AACA,gBAAI,IAAI,OAAO,MAAM,MAAM;AAEzB,qBAAO;AAEP,qBAAM,IAAI,KAAK,EAAE,GAAE;AACjB,oBAAI,CAAC,gBAAgBA,MAAK,WAAW,CAAC,CAAC,EAAG;AAAA,cAC5C;AACA,kBAAI,IAAI,OAAO,MAAM,MAAM;AAEzB,uBAAO;AAEP,uBAAM,IAAI,KAAK,EAAE,GAAE;AACjB,sBAAI,gBAAgBA,MAAK,WAAW,CAAC,CAAC,EAAG;AAAA,gBAC3C;AACA,oBAAI,MAAM,KAAK;AAEb,yBAAOA;AAAA,gBACT;AACA,oBAAI,MAAM,MAAM;AAId,4BAAU,SAAS,IAAI;AAAA,gBACzB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF,WAAW,oBAAoBC,KAAI,GAAG;AAEpC,cAAID,MAAK,WAAW,CAAC,MAAM,YAAY;AACrC,sBAAU,SAAS;AACnB,gBAAI,MAAM,GAAG;AACX,kBAAI,gBAAgBA,MAAK,WAAW,CAAC,CAAC,EAAG,WAAU,SAAS;AAAA,YAC9D;AAAA,UACF;AAAA,QACF;AAAA,MACF,WAAW,gBAAgBC,KAAI,GAAG;AAGhC,eAAOD;AAAA,MACT;AACA,eAAQ,IAAI,MAAM,GAAG,KAAK,QAAQ,EAAE,GAAE;AACpC,YAAI,gBAAgBA,MAAK,WAAW,CAAC,CAAC,GAAG;AACvC,cAAI,CAAC,cAAc;AACjB,kBAAM;AACN;AAAA,UACF;AAAA,QACF,OAAO;AAEL,yBAAe;AAAA,QACjB;AAAA,MACF;AACA,UAAI,QAAQ,IAAI;AACd,YAAI,YAAY,GAAI,QAAO;AAAA,YACtB,OAAM;AAAA,MACb;AACA,aAAO,wBAAwBA,MAAK,MAAM,GAAG,GAAG,GAAG,oBAAoB;AAAA,IACzE;AAkBI,aAAS,QAAQA,OAAM;AACzB,UAAIA,iBAAgB,KAAK;AACvB,QAAAA,QAAO,YAAYA,KAAI;AAAA,MACzB;AACA,MAAAD,YAAWC,KAAI;AACf,UAAI,QAAQ;AACZ,UAAI,WAAW;AACf,UAAI,YAAY;AAChB,UAAI,MAAM;AACV,UAAI,eAAe;AAGnB,UAAI,cAAc;AAIlB,UAAIA,MAAK,UAAU,KAAKA,MAAK,WAAW,CAAC,MAAM,cAAc,oBAAoBA,MAAK,WAAW,CAAC,CAAC,GAAG;AACpG,gBAAQ,YAAY;AAAA,MACtB;AACA,eAAQ,IAAIA,MAAK,SAAS,GAAG,KAAK,OAAO,EAAE,GAAE;AAC3C,cAAMC,QAAOD,MAAK,WAAW,CAAC;AAC9B,YAAI,gBAAgBC,KAAI,GAAG;AAGzB,cAAI,CAAC,cAAc;AACjB,wBAAY,IAAI;AAChB;AAAA,UACF;AACA;AAAA,QACF;AACA,YAAI,QAAQ,IAAI;AAGd,yBAAe;AACf,gBAAM,IAAI;AAAA,QACZ;AACA,YAAIA,UAAS,UAAU;AAErB,cAAI,aAAa,GAAI,YAAW;AAAA,mBACvB,gBAAgB,EAAG,eAAc;AAAA,QAC5C,WAAW,aAAa,IAAI;AAG1B,wBAAc;AAAA,QAChB;AAAA,MACF;AACA,UAAI,aAAa,MAAM,QAAQ;AAAA,MAC/B,gBAAgB;AAAA,MAChB,gBAAgB,KAAK,aAAa,MAAM,KAAK,aAAa,YAAY,GAAG;AACvE,eAAO;AAAA,MACT;AACA,aAAOD,MAAK,MAAM,UAAU,GAAG;AAAA,IACjC;AAIA,aAAS,QAAQ,KAAK,YAAY;AAChC,YAAM,MAAM,WAAW,OAAO,WAAW;AACzC,YAAMG,QAAO,WAAW,SAAS,WAAW,QAAQ,OAAO,WAAW,OAAO;AAC7E,UAAI,CAAC,IAAK,QAAOA;AACjB,UAAIA,UAAS,IAAK,QAAO;AACzB,UAAI,QAAQ,WAAW,KAAM,QAAO,MAAMA;AAC1C,aAAO,MAAM,MAAMA;AAAA,IACrB;AACA,aAAS,YAAY,YAAY;AAC/B,UAAI,eAAe,QAAQ,OAAO,eAAe,UAAU;AACzD,cAAM,IAAI,UAAU,oEAAoE,OAAO,UAAU,GAAG;AAAA,MAC9G;AAAA,IACF;AAwBI,aAAS,OAAO,YAAY;AAC9B,kBAAY,UAAU;AACtB,aAAO,QAAQ,MAAM,UAAU;AAAA,IACjC;AAkBI,aAAS,WAAWH,OAAM;AAC5B,MAAAD,YAAWC,KAAI;AACf,YAAM,MAAMA,MAAK;AACjB,UAAI,QAAQ,EAAG,QAAO;AACtB,YAAMC,QAAOD,MAAK,WAAW,CAAC;AAC9B,UAAI,gBAAgBC,KAAI,GAAG;AACzB,eAAO;AAAA,MACT,WAAW,oBAAoBA,KAAI,GAAG;AAEpC,YAAI,MAAM,KAAKD,MAAK,WAAW,CAAC,MAAM,YAAY;AAChD,cAAI,gBAAgBA,MAAK,WAAW,CAAC,CAAC,EAAG,QAAO;AAAA,QAClD;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAIA,aAAS,UAAUA,OAAM;AACvB,MAAAD,YAAWC,KAAI;AACf,UAAIA,MAAK,WAAW,EAAG,QAAO;AAAA,IAChC;AAOA,aAAS,gBAAgBA,OAAM,gBAAgB,WAAWI,kBAAiB;AACzE,UAAI,MAAM;AACV,UAAI,oBAAoB;AACxB,UAAI,YAAY;AAChB,UAAI,OAAO;AACX,UAAIH;AACJ,eAAQ,IAAI,GAAG,KAAKD,MAAK,QAAQ,EAAE,GAAE;AACnC,YAAI,IAAIA,MAAK,OAAQ,CAAAC,QAAOD,MAAK,WAAW,CAAC;AAAA,iBACpCI,iBAAgBH,KAAI,EAAG;AAAA,YAC3B,CAAAA,QAAO;AACZ,YAAIG,iBAAgBH,KAAI,GAAG;AACzB,cAAI,cAAc,IAAI,KAAK,SAAS,EAAG;AAAA,mBAAW,cAAc,IAAI,KAAK,SAAS,GAAG;AACnF,gBAAI,IAAI,SAAS,KAAK,sBAAsB,KAAK,IAAI,WAAW,IAAI,SAAS,CAAC,MAAM,YAAY,IAAI,WAAW,IAAI,SAAS,CAAC,MAAM,UAAU;AAC3I,kBAAI,IAAI,SAAS,GAAG;AAClB,sBAAM,iBAAiB,IAAI,YAAY,SAAS;AAChD,oBAAI,mBAAmB,IAAI;AACzB,wBAAM;AACN,sCAAoB;AAAA,gBACtB,OAAO;AACL,wBAAM,IAAI,MAAM,GAAG,cAAc;AACjC,sCAAoB,IAAI,SAAS,IAAI,IAAI,YAAY,SAAS;AAAA,gBAChE;AACA,4BAAY;AACZ,uBAAO;AACP;AAAA,cACF,WAAW,IAAI,WAAW,KAAK,IAAI,WAAW,GAAG;AAC/C,sBAAM;AACN,oCAAoB;AACpB,4BAAY;AACZ,uBAAO;AACP;AAAA,cACF;AAAA,YACF;AACA,gBAAI,gBAAgB;AAClB,kBAAI,IAAI,SAAS,EAAG,QAAO,GAAG,SAAS;AAAA,kBAClC,OAAM;AACX,kCAAoB;AAAA,YACtB;AAAA,UACF,OAAO;AACL,gBAAI,IAAI,SAAS,EAAG,QAAO,YAAYD,MAAK,MAAM,YAAY,GAAG,CAAC;AAAA,gBAC7D,OAAMA,MAAK,MAAM,YAAY,GAAG,CAAC;AACtC,gCAAoB,IAAI,YAAY;AAAA,UACtC;AACA,sBAAY;AACZ,iBAAO;AAAA,QACT,WAAWC,UAAS,YAAY,SAAS,IAAI;AAC3C,YAAE;AAAA,QACJ,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAoBI,aAASI,WAAUL,OAAM;AAC3B,UAAIA,iBAAgB,KAAK;AACvB,QAAAA,QAAO,YAAYA,KAAI;AAAA,MACzB;AACA,gBAAUA,KAAI;AACd,YAAM,MAAMA,MAAK;AACjB,UAAI,UAAU;AACd,UAAI;AACJ,UAAIM,cAAa;AACjB,YAAML,QAAOD,MAAK,WAAW,CAAC;AAE9B,UAAI,MAAM,GAAG;AACX,YAAI,gBAAgBC,KAAI,GAAG;AAIzB,UAAAK,cAAa;AACb,cAAI,gBAAgBN,MAAK,WAAW,CAAC,CAAC,GAAG;AAEvC,gBAAI,IAAI;AACR,gBAAI,OAAO;AAEX,mBAAM,IAAI,KAAK,EAAE,GAAE;AACjB,kBAAI,gBAAgBA,MAAK,WAAW,CAAC,CAAC,EAAG;AAAA,YAC3C;AACA,gBAAI,IAAI,OAAO,MAAM,MAAM;AACzB,oBAAM,YAAYA,MAAK,MAAM,MAAM,CAAC;AAEpC,qBAAO;AAEP,qBAAM,IAAI,KAAK,EAAE,GAAE;AACjB,oBAAI,CAAC,gBAAgBA,MAAK,WAAW,CAAC,CAAC,EAAG;AAAA,cAC5C;AACA,kBAAI,IAAI,OAAO,MAAM,MAAM;AAEzB,uBAAO;AAEP,uBAAM,IAAI,KAAK,EAAE,GAAE;AACjB,sBAAI,gBAAgBA,MAAK,WAAW,CAAC,CAAC,EAAG;AAAA,gBAC3C;AACA,oBAAI,MAAM,KAAK;AAIb,yBAAO,OAAO,SAAS,KAAKA,MAAK,MAAM,IAAI,CAAC;AAAA,gBAC9C,WAAW,MAAM,MAAM;AAErB,2BAAS,OAAO,SAAS,KAAKA,MAAK,MAAM,MAAM,CAAC,CAAC;AACjD,4BAAU;AAAA,gBACZ;AAAA,cACF;AAAA,YACF;AAAA,UACF,OAAO;AACL,sBAAU;AAAA,UACZ;AAAA,QACF,WAAW,oBAAoBC,KAAI,GAAG;AAEpC,cAAID,MAAK,WAAW,CAAC,MAAM,YAAY;AACrC,qBAASA,MAAK,MAAM,GAAG,CAAC;AACxB,sBAAU;AACV,gBAAI,MAAM,GAAG;AACX,kBAAI,gBAAgBA,MAAK,WAAW,CAAC,CAAC,GAAG;AAGvC,gBAAAM,cAAa;AACb,0BAAU;AAAA,cACZ;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF,WAAW,gBAAgBL,KAAI,GAAG;AAGhC,eAAO;AAAA,MACT;AACA,UAAI;AACJ,UAAI,UAAU,KAAK;AACjB,eAAO,gBAAgBD,MAAK,MAAM,OAAO,GAAG,CAACM,aAAY,MAAM,eAAe;AAAA,MAChF,OAAO;AACL,eAAO;AAAA,MACT;AACA,UAAI,KAAK,WAAW,KAAK,CAACA,YAAY,QAAO;AAC7C,UAAI,KAAK,SAAS,KAAK,gBAAgBN,MAAK,WAAW,MAAM,CAAC,CAAC,GAAG;AAChE,gBAAQ;AAAA,MACV;AACA,UAAI,WAAW,QAAW;AACxB,YAAIM,aAAY;AACd,cAAI,KAAK,SAAS,EAAG,QAAO,KAAK,IAAI;AAAA,cAChC,QAAO;AAAA,QACd;AACA,eAAO;AAAA,MACT,WAAWA,aAAY;AACrB,YAAI,KAAK,SAAS,EAAG,QAAO,GAAG,MAAM,KAAK,IAAI;AAAA,YACzC,QAAO,GAAG,MAAM;AAAA,MACvB;AACA,aAAO,SAAS;AAAA,IAClB;AAmBI,aAAS,KAAKN,UAAS,OAAO;AAChC,UAAIA,iBAAgB,KAAK;AACvB,QAAAA,QAAO,YAAYA,KAAI;AAAA,MACzB;AACA,cAAQA,QAAO;AAAA,QACbA;AAAA,QACA,GAAG;AAAA,MACL,IAAI;AACJ,YAAM,QAAQ,CAACA,UAAOD,YAAWC,KAAI,CAAC;AACtC,cAAQ,MAAM,OAAO,CAACA,UAAOA,MAAK,SAAS,CAAC;AAC5C,UAAI,MAAM,WAAW,EAAG,QAAO;AAc/B,UAAI,eAAe;AACnB,UAAI,aAAa;AACjB,YAAM,YAAY,MAAM,CAAC;AACzB,UAAI,gBAAgB,UAAU,WAAW,CAAC,CAAC,GAAG;AAC5C,UAAE;AACF,cAAM,WAAW,UAAU;AAC3B,YAAI,WAAW,GAAG;AAChB,cAAI,gBAAgB,UAAU,WAAW,CAAC,CAAC,GAAG;AAC5C,cAAE;AACF,gBAAI,WAAW,GAAG;AAChB,kBAAI,gBAAgB,UAAU,WAAW,CAAC,CAAC,EAAG,GAAE;AAAA,mBAC3C;AAEH,+BAAe;AAAA,cACjB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,UAAI,SAAS,MAAM,KAAK,IAAI;AAC5B,UAAI,cAAc;AAEhB,eAAM,aAAa,OAAO,QAAQ,EAAE,YAAW;AAC7C,cAAI,CAAC,gBAAgB,OAAO,WAAW,UAAU,CAAC,EAAG;AAAA,QACvD;AAEA,YAAI,cAAc,EAAG,UAAS,KAAK,OAAO,MAAM,UAAU,CAAC;AAAA,MAC7D;AACA,aAAOK,WAAU,MAAM;AAAA,IACzB;AAwBI,aAASE,OAAMP,OAAM;AACvB,MAAAD,YAAWC,KAAI;AACf,YAAM,MAAM;AAAA,QACV,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,MACR;AACA,YAAM,MAAMA,MAAK;AACjB,UAAI,QAAQ,EAAG,QAAO;AACtB,UAAI,UAAU;AACd,UAAIC,QAAOD,MAAK,WAAW,CAAC;AAE5B,UAAI,MAAM,GAAG;AACX,YAAI,gBAAgBC,KAAI,GAAG;AAEzB,oBAAU;AACV,cAAI,gBAAgBD,MAAK,WAAW,CAAC,CAAC,GAAG;AAEvC,gBAAI,IAAI;AACR,gBAAI,OAAO;AAEX,mBAAM,IAAI,KAAK,EAAE,GAAE;AACjB,kBAAI,gBAAgBA,MAAK,WAAW,CAAC,CAAC,EAAG;AAAA,YAC3C;AACA,gBAAI,IAAI,OAAO,MAAM,MAAM;AAEzB,qBAAO;AAEP,qBAAM,IAAI,KAAK,EAAE,GAAE;AACjB,oBAAI,CAAC,gBAAgBA,MAAK,WAAW,CAAC,CAAC,EAAG;AAAA,cAC5C;AACA,kBAAI,IAAI,OAAO,MAAM,MAAM;AAEzB,uBAAO;AAEP,uBAAM,IAAI,KAAK,EAAE,GAAE;AACjB,sBAAI,gBAAgBA,MAAK,WAAW,CAAC,CAAC,EAAG;AAAA,gBAC3C;AACA,oBAAI,MAAM,KAAK;AAEb,4BAAU;AAAA,gBACZ,WAAW,MAAM,MAAM;AAErB,4BAAU,IAAI;AAAA,gBAChB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF,WAAW,oBAAoBC,KAAI,GAAG;AAEpC,cAAID,MAAK,WAAW,CAAC,MAAM,YAAY;AACrC,sBAAU;AACV,gBAAI,MAAM,GAAG;AACX,kBAAI,gBAAgBA,MAAK,WAAW,CAAC,CAAC,GAAG;AACvC,oBAAI,QAAQ,GAAG;AAGb,sBAAI,OAAO,IAAI,MAAMA;AACrB,sBAAI,OAAO;AACX,yBAAO;AAAA,gBACT;AACA,0BAAU;AAAA,cACZ;AAAA,YACF,OAAO;AAGL,kBAAI,OAAO,IAAI,MAAMA;AACrB,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF,WAAW,gBAAgBC,KAAI,GAAG;AAGhC,YAAI,OAAO,IAAI,MAAMD;AACrB,YAAI,OAAO;AACX,eAAO;AAAA,MACT;AACA,UAAI,UAAU,EAAG,KAAI,OAAOA,MAAK,MAAM,GAAG,OAAO;AACjD,UAAI,WAAW;AACf,UAAI,YAAY;AAChB,UAAI,MAAM;AACV,UAAI,eAAe;AACnB,UAAI,IAAIA,MAAK,SAAS;AAGtB,UAAI,cAAc;AAElB,aAAM,KAAK,SAAS,EAAE,GAAE;AACtB,QAAAC,QAAOD,MAAK,WAAW,CAAC;AACxB,YAAI,gBAAgBC,KAAI,GAAG;AAGzB,cAAI,CAAC,cAAc;AACjB,wBAAY,IAAI;AAChB;AAAA,UACF;AACA;AAAA,QACF;AACA,YAAI,QAAQ,IAAI;AAGd,yBAAe;AACf,gBAAM,IAAI;AAAA,QACZ;AACA,YAAIA,UAAS,UAAU;AAErB,cAAI,aAAa,GAAI,YAAW;AAAA,mBACvB,gBAAgB,EAAG,eAAc;AAAA,QAC5C,WAAW,aAAa,IAAI;AAG1B,wBAAc;AAAA,QAChB;AAAA,MACF;AACA,UAAI,aAAa,MAAM,QAAQ;AAAA,MAC/B,gBAAgB;AAAA,MAChB,gBAAgB,KAAK,aAAa,MAAM,KAAK,aAAa,YAAY,GAAG;AACvE,YAAI,QAAQ,IAAI;AACd,cAAI,OAAO,IAAI,OAAOD,MAAK,MAAM,WAAW,GAAG;AAAA,QACjD;AAAA,MACF,OAAO;AACL,YAAI,OAAOA,MAAK,MAAM,WAAW,QAAQ;AACzC,YAAI,OAAOA,MAAK,MAAM,WAAW,GAAG;AACpC,YAAI,MAAMA,MAAK,MAAM,UAAU,GAAG;AAAA,MACpC;AAEA,UAAI,OAAO,IAAI,QAAQ;AAIvB,UAAI,YAAY,KAAK,cAAc,SAAS;AAC1C,YAAI,MAAMA,MAAK,MAAM,GAAG,YAAY,CAAC;AAAA,MACvC,MAAO,KAAI,MAAM,IAAI;AACrB,aAAO;AAAA,IACT;AAkBI,aAASQ,YAAW,cAAc;AACpC,UAAI,iBAAiB;AACrB,UAAI,eAAe;AACnB,UAAI,mBAAmB;AACvB,eAAQ,IAAI,aAAa,SAAS,GAAG,KAAK,IAAI,KAAI;AAChD,YAAIR;AAEJ,cAAM,EAAE,KAAK,IAAI;AACjB,YAAI,KAAK,GAAG;AACV,UAAAA,QAAO,aAAa,CAAC;AAAA,QACvB,WAAW,CAAC,gBAAgB;AAC1B,cAAI,OAAO,MAAM,QAAQ,YAAY;AACnC,kBAAM,IAAI,UAAU,6EAA6E;AAAA,UACnG;AACA,UAAAA,QAAO,KAAK,IAAI;AAAA,QAClB,OAAO;AACL,cAAI,OAAO,MAAM,KAAK,QAAQ,cAAc,OAAO,MAAM,QAAQ,YAAY;AAC3E,kBAAM,IAAI,UAAU,oEAAoE;AAAA,UAC1F;AACA,UAAAA,QAAO,KAAK,IAAI;AAGhB,cAAIA,UAAS,UAAaA,MAAK,MAAM,GAAG,CAAC,EAAE,YAAY,MAAM,GAAG,eAAe,YAAY,CAAC,MAAM;AAChG,YAAAA,QAAO,GAAG,cAAc;AAAA,UAC1B;AAAA,QACF;AACA,QAAAD,YAAWC,KAAI;AACf,cAAM,MAAMA,MAAK;AAEjB,YAAI,QAAQ,EAAG;AACf,YAAI,UAAU;AACd,YAAI,SAAS;AACb,YAAIM,cAAa;AACjB,cAAML,QAAOD,MAAK,WAAW,CAAC;AAE9B,YAAI,MAAM,GAAG;AACX,cAAI,gBAAgBC,KAAI,GAAG;AAIzB,YAAAK,cAAa;AACb,gBAAI,gBAAgBN,MAAK,WAAW,CAAC,CAAC,GAAG;AAEvC,kBAAI,IAAI;AACR,kBAAI,OAAO;AAEX,qBAAM,IAAI,KAAK,EAAE,GAAE;AACjB,oBAAI,gBAAgBA,MAAK,WAAW,CAAC,CAAC,EAAG;AAAA,cAC3C;AACA,kBAAI,IAAI,OAAO,MAAM,MAAM;AACzB,sBAAM,YAAYA,MAAK,MAAM,MAAM,CAAC;AAEpC,uBAAO;AAEP,uBAAM,IAAI,KAAK,EAAE,GAAE;AACjB,sBAAI,CAAC,gBAAgBA,MAAK,WAAW,CAAC,CAAC,EAAG;AAAA,gBAC5C;AACA,oBAAI,IAAI,OAAO,MAAM,MAAM;AAEzB,yBAAO;AAEP,yBAAM,IAAI,KAAK,EAAE,GAAE;AACjB,wBAAI,gBAAgBA,MAAK,WAAW,CAAC,CAAC,EAAG;AAAA,kBAC3C;AACA,sBAAI,MAAM,KAAK;AAEb,6BAAS,OAAO,SAAS,KAAKA,MAAK,MAAM,IAAI,CAAC;AAC9C,8BAAU;AAAA,kBACZ,WAAW,MAAM,MAAM;AAErB,6BAAS,OAAO,SAAS,KAAKA,MAAK,MAAM,MAAM,CAAC,CAAC;AACjD,8BAAU;AAAA,kBACZ;AAAA,gBACF;AAAA,cACF;AAAA,YACF,OAAO;AACL,wBAAU;AAAA,YACZ;AAAA,UACF,WAAW,oBAAoBC,KAAI,GAAG;AAEpC,gBAAID,MAAK,WAAW,CAAC,MAAM,YAAY;AACrC,uBAASA,MAAK,MAAM,GAAG,CAAC;AACxB,wBAAU;AACV,kBAAI,MAAM,GAAG;AACX,oBAAI,gBAAgBA,MAAK,WAAW,CAAC,CAAC,GAAG;AAGvC,kBAAAM,cAAa;AACb,4BAAU;AAAA,gBACZ;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF,WAAW,gBAAgBL,KAAI,GAAG;AAEhC,oBAAU;AACV,UAAAK,cAAa;AAAA,QACf;AACA,YAAI,OAAO,SAAS,KAAK,eAAe,SAAS,KAAK,OAAO,YAAY,MAAM,eAAe,YAAY,GAAG;AAC3G;AAAA,QACF;AACA,YAAI,eAAe,WAAW,KAAK,OAAO,SAAS,GAAG;AACpD,2BAAiB;AAAA,QACnB;AACA,YAAI,CAAC,kBAAkB;AACrB,yBAAe,GAAGN,MAAK,MAAM,OAAO,CAAC,KAAK,YAAY;AACtD,6BAAmBM;AAAA,QACrB;AACA,YAAI,oBAAoB,eAAe,SAAS,EAAG;AAAA,MACrD;AAKA,qBAAe,gBAAgB,cAAc,CAAC,kBAAkB,MAAM,eAAe;AACrF,aAAO,kBAAkB,mBAAmB,OAAO,MAAM,gBAAgB;AAAA,IAC3E;AAIA,aAAS,WAAW,MAAM,IAAI;AAC5B,MAAAP,YAAW,IAAI;AACf,MAAAA,YAAW,EAAE;AACb,UAAI,SAAS,GAAI,QAAO;AAAA,IAC1B;AAwBI,aAAS,SAAS,MAAM,IAAI;AAC9B,iBAAW,MAAM,EAAE;AACnB,YAAM,WAAWS,SAAQ,IAAI;AAC7B,YAAM,SAASA,SAAQ,EAAE;AACzB,UAAI,aAAa,OAAQ,QAAO;AAChC,aAAO,SAAS,YAAY;AAC5B,WAAK,OAAO,YAAY;AACxB,UAAI,SAAS,GAAI,QAAO;AAExB,UAAI,YAAY;AAChB,UAAI,UAAU,KAAK;AACnB,aAAM,YAAY,SAAS,EAAE,WAAU;AACrC,YAAI,KAAK,WAAW,SAAS,MAAM,oBAAqB;AAAA,MAC1D;AAEA,aAAM,UAAU,IAAI,WAAW,EAAE,SAAQ;AACvC,YAAI,KAAK,WAAW,UAAU,CAAC,MAAM,oBAAqB;AAAA,MAC5D;AACA,YAAM,UAAU,UAAU;AAE1B,UAAI,UAAU;AACd,UAAI,QAAQ,GAAG;AACf,aAAM,UAAU,OAAO,EAAE,SAAQ;AAC/B,YAAI,GAAG,WAAW,OAAO,MAAM,oBAAqB;AAAA,MACtD;AAEA,aAAM,QAAQ,IAAI,SAAS,EAAE,OAAM;AACjC,YAAI,GAAG,WAAW,QAAQ,CAAC,MAAM,oBAAqB;AAAA,MACxD;AACA,YAAM,QAAQ,QAAQ;AAEtB,YAAM,SAAS,UAAU,QAAQ,UAAU;AAC3C,UAAI,gBAAgB;AACpB,UAAI,IAAI;AACR,aAAM,KAAK,QAAQ,EAAE,GAAE;AACrB,YAAI,MAAM,QAAQ;AAChB,cAAI,QAAQ,QAAQ;AAClB,gBAAI,GAAG,WAAW,UAAU,CAAC,MAAM,qBAAqB;AAGtD,qBAAO,OAAO,MAAM,UAAU,IAAI,CAAC;AAAA,YACrC,WAAW,MAAM,GAAG;AAGlB,qBAAO,OAAO,MAAM,UAAU,CAAC;AAAA,YACjC;AAAA,UACF;AACA,cAAI,UAAU,QAAQ;AACpB,gBAAI,KAAK,WAAW,YAAY,CAAC,MAAM,qBAAqB;AAG1D,8BAAgB;AAAA,YAClB,WAAW,MAAM,GAAG;AAGlB,8BAAgB;AAAA,YAClB;AAAA,UACF;AACA;AAAA,QACF;AACA,cAAM,WAAW,KAAK,WAAW,YAAY,CAAC;AAC9C,cAAM,SAAS,GAAG,WAAW,UAAU,CAAC;AACxC,YAAI,aAAa,OAAQ;AAAA,iBAChB,aAAa,oBAAqB,iBAAgB;AAAA,MAC7D;AAGA,UAAI,MAAM,UAAU,kBAAkB,IAAI;AACxC,eAAO;AAAA,MACT;AACA,UAAI,MAAM;AACV,UAAI,kBAAkB,GAAI,iBAAgB;AAG1C,WAAI,IAAI,YAAY,gBAAgB,GAAG,KAAK,SAAS,EAAE,GAAE;AACvD,YAAI,MAAM,WAAW,KAAK,WAAW,CAAC,MAAM,qBAAqB;AAC/D,cAAI,IAAI,WAAW,EAAG,QAAO;AAAA,cACxB,QAAO;AAAA,QACd;AAAA,MACF;AAGA,UAAI,IAAI,SAAS,GAAG;AAClB,eAAO,MAAM,OAAO,MAAM,UAAU,eAAe,KAAK;AAAA,MAC1D,OAAO;AACL,mBAAW;AACX,YAAI,OAAO,WAAW,OAAO,MAAM,oBAAqB,GAAE;AAC1D,eAAO,OAAO,MAAM,SAAS,KAAK;AAAA,MACpC;AAAA,IACF;AAIA,QAAM,uBAAuB;AAAA,MAC3B,KAAU;AAAA,MACV,MAAU;AAAA,MACV,MAAU;AAAA,MACV,MAAU;AAAA,MACV,MAAU;AAAA,MACV,KAAU;AAAA,IACZ;AACA,aAAS,iBAAiBC,SAAQ;AAChC,aAAOA,QAAO,WAAW,SAAS,CAAC,MAAI;AACrC,eAAO,qBAAqB,CAAC,KAAK;AAAA,MACpC,CAAC;AAAA,IACH;AAkBI,aAAS,UAAUT,OAAM;AAC3B,UAAI,CAAC,WAAWA,KAAI,GAAG;AACrB,cAAM,IAAI,UAAU,oCAAoCA,KAAI,GAAG;AAAA,MACjE;AACA,YAAM,CAAC,EAAE,UAAU,QAAQ,IAAIA,MAAK,MAAM,kDAAkD;AAC5F,YAAM,MAAM,IAAI,IAAI,UAAU;AAC9B,UAAI,WAAW,iBAAiB,SAAS,QAAQ,MAAM,KAAK,CAAC;AAC7D,UAAI,aAAa,UAAa,aAAa,aAAa;AACtD,YAAI,WAAW;AACf,YAAI,CAAC,IAAI,UAAU;AACjB,gBAAM,IAAI,UAAU,sBAAsB,IAAI,QAAQ,GAAG;AAAA,QAC3D;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAkBI,aAAS,iBAAiBA,OAAM;AAElC,UAAI,OAAOA,UAAS,SAAU,QAAOA;AACrC,UAAIA,MAAK,WAAW,EAAG,QAAO;AAC9B,YAAM,eAAeQ,SAAQR,KAAI;AACjC,UAAI,aAAa,UAAU,GAAG;AAC5B,YAAI,aAAa,WAAW,CAAC,MAAM,qBAAqB;AAEtD,cAAI,aAAa,WAAW,CAAC,MAAM,qBAAqB;AACtD,kBAAMC,QAAO,aAAa,WAAW,CAAC;AACtC,gBAAIA,UAAS,sBAAsBA,UAAS,UAAU;AAEpD,qBAAO,eAAe,aAAa,MAAM,CAAC,CAAC;AAAA,YAC7C;AAAA,UACF;AAAA,QACF,WAAW,oBAAoB,aAAa,WAAW,CAAC,CAAC,GAAG;AAE1D,cAAI,aAAa,WAAW,CAAC,MAAM,cAAc,aAAa,WAAW,CAAC,MAAM,qBAAqB;AAEnG,mBAAO,UAAU,YAAY;AAAA,UAC/B;AAAA,QACF;AAAA,MACF;AACA,aAAOD;AAAA,IACT;AAIA,aAAS,SAAS,OAAO,KAAK;AAC5B,YAAM,CAACU,SAAQ,IAAI,GAAG,SAAS,IAAI;AACnC,YAAM,QAAQA,OAAM,MAAM,GAAG;AAC7B,UAAI,cAAc,MAAM;AACxB,UAAI,SAAS;AACb,iBAAWV,SAAQ,WAAU;AAC3B,cAAMW,WAAUX,MAAK,MAAM,GAAG;AAC9B,YAAIW,SAAQ,UAAU,aAAa;AACjC,wBAAcA,SAAQ;AACtB,mBAAS;AAAA,QACX;AACA,iBAAQ,IAAI,GAAG,IAAI,aAAa,KAAI;AAClC,cAAIA,SAAQ,CAAC,MAAM,MAAM,CAAC,GAAG;AAC3B,0BAAc;AACd,qBAAS,MAAM,IAAI,KAAK;AACxB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAO,MAAM,MAAM,GAAG,WAAW,EAAE,KAAK,GAAG,IAAI;AAAA,IACjD;AAqBI,aAAS,OAAO,OAAO;AACzB,aAAO,SAAS,OAAO,SAAS;AAAA,IAClC;AAOI,QAAM,uBAAuB;AAAA,MAC/B;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;AACA,QAAM,qBAAqB;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,aAAS,cAAc,GAAG,MAAM;AAAA,MAAE,WAAW;AAAA,MAAM,UAAU,iBAAiB;AAAA;AAAA,MAC9E,kBAAkB;AAAA,IAAM,IAAI,CAAC,GAAG;AAC9B,UAAI,SAAS,IAAI;AACf,eAAO;AAAA,MACT;AAEA,UAAI,YAAY,KAAK;AACrB,aAAM,YAAY,KAAK,EAAE,KAAK,SAAS,KAAK,YAAY,CAAC,CAAC,GAAG,YAAY;AACzE,aAAO,KAAK,MAAM,GAAG,SAAS;AAC9B,UAAI,eAAe;AAEnB,eAAQ,IAAI,GAAG,IAAI,KAAK,UAAQ;AAC9B,YAAI,UAAU;AACd,cAAM,aAAa,CAAC;AACpB,YAAI,UAAU;AACd,YAAI,WAAW;AACf,YAAI,cAAc;AAClB,YAAI,IAAI;AAER,eAAM,IAAI,KAAK,UAAU,EAAE,EAAE,KAAK,SAAS,KAAK,CAAC,CAAC,KAAK,WAAW,WAAW,IAAI,KAAI;AACnF,cAAI,UAAU;AACZ,uBAAW;AACX,kBAAM,cAAc,UAAU,qBAAqB;AACnD,uBAAW,YAAY,SAAS,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC;AAClE;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,EAAE,cAAc;AAC9B,uBAAW;AACX;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,KAAK;AACnB,gBAAI,CAAC,SAAS;AACZ,wBAAU;AACV,yBAAW;AACX,kBAAI,KAAK,IAAI,CAAC,MAAM,KAAK;AACvB;AACA,2BAAW;AAAA,cACb,WAAW,KAAK,IAAI,CAAC,MAAM,KAAK;AAC9B;AACA,2BAAW;AAAA,cACb;AACA;AAAA,YACF,WAAW,KAAK,IAAI,CAAC,MAAM,KAAK;AAC9B,kBAAI,IAAI,IAAI;AACZ,kBAAIC,SAAQ;AACZ,qBAAM,KAAK,IAAI,CAAC,MAAM,UAAa,KAAK,IAAI,CAAC,MAAM,KAAI;AACrD,gBAAAA,UAAS,KAAK,IAAI,CAAC;AACnB;AAAA,cACF;AACA,kBAAI,KAAK,IAAI,CAAC,MAAM,OAAO,KAAK,IAAI,CAAC,MAAM,KAAK;AAC9C,oBAAI,IAAI;AACR,oBAAIA,WAAU,QAAS,YAAW;AAAA,yBACzBA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,SAAS;AAC1B,6BAAW;AAAA,gBACb,WAAWA,WAAU,QAAS,YAAW;AAAA,yBAChCA,WAAU,QAAS,YAAW;AAAA,yBAC9BA,WAAU,OAAQ,YAAW;AAAA,yBAC7BA,WAAU,SAAU,YAAW;AACxC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,OAAO,SAAS;AAC9B,sBAAU;AACV,uBAAW;AACX;AAAA,UACF;AACA,cAAI,SAAS;AACX,uBAAW,KAAK,CAAC;AACjB;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,OAAO,WAAW,SAAS,KAAK,WAAW,WAAW,SAAS,CAAC,MAAM,SAAS;AAC7F,uBAAW;AACX,kBAAM,OAAO,WAAW,IAAI;AAC5B,gBAAI,SAAS,KAAK;AAChB,yBAAW,EAAE;AAAA,YACf,WAAW,SAAS,KAAK;AACvB,yBAAW;AAAA,YACb;AACA;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,OAAO,WAAW,SAAS,KAAK,WAAW,WAAW,SAAS,CAAC,MAAM,SAAS;AAC7F,uBAAW;AACX;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,OAAO,YAAY,KAAK,IAAI,CAAC,MAAM,KAAK;AACtD;AACA,uBAAW,KAAK,GAAG;AACnB,uBAAW;AACX;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,OAAO,YAAY,KAAK,IAAI,CAAC,MAAM,KAAK;AACtD;AACA,uBAAW,KAAK,GAAG;AACnB,uBAAW;AACX;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,KAAK;AACnB,gBAAI,YAAY,KAAK,IAAI,CAAC,MAAM,KAAK;AACnC;AACA,yBAAW,KAAK,GAAG;AACnB,yBAAW;AAAA,YACb,OAAO;AACL,yBAAW;AAAA,YACb;AACA;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,OAAO,YAAY,KAAK,IAAI,CAAC,MAAM,KAAK;AACtD;AACA,uBAAW,KAAK,GAAG;AACnB,uBAAW;AACX;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,KAAK;AACnB,uBAAW,KAAK,OAAO;AACvB,uBAAW;AACX;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,OAAO,WAAW,WAAW,SAAS,CAAC,MAAM,SAAS;AACpE,uBAAW,IAAI;AACf,uBAAW;AACX;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,OAAO,WAAW,WAAW,SAAS,CAAC,MAAM,SAAS;AACpE,uBAAW;AACX;AAAA,UACF;AACA,cAAI,KAAK,CAAC,MAAM,KAAK;AACnB,gBAAI,YAAY,KAAK,IAAI,CAAC,MAAM,KAAK;AACnC;AACA,yBAAW,KAAK,GAAG;AACnB,yBAAW;AAAA,YACb,OAAO;AACL,oBAAM,WAAW,KAAK,IAAI,CAAC;AAC3B,kBAAI,WAAW;AACf,qBAAM,KAAK,IAAI,CAAC,MAAM,KAAI;AACxB;AACA;AAAA,cACF;AACA,oBAAM,WAAW,KAAK,IAAI,CAAC;AAC3B,kBAAI,kBAAkB,aAAa,KAAK;AAAA,gBACtC,GAAG,EAAE;AAAA,gBACL;AAAA,cACF,EAAE,SAAS,QAAQ,KAAK;AAAA,gBACtB,GAAG,EAAE;AAAA,gBACL;AAAA,cACF,EAAE,SAAS,QAAQ,GAAG;AACpB,2BAAW,EAAE;AACb,8BAAc;AAAA,cAChB,OAAO;AACL,2BAAW,EAAE;AAAA,cACf;AAAA,YACF;AACA;AAAA,UACF;AACA,qBAAW,qBAAqB,SAAS,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC;AAAA,QAC7E;AAEA,YAAI,WAAW,SAAS,KAAK,WAAW,UAAU;AAEhD,oBAAU;AACV,qBAAWC,MAAK,KAAK,MAAM,GAAG,CAAC,GAAE;AAC/B,uBAAW,qBAAqB,SAASA,EAAC,IAAI,KAAKA,EAAC,KAAKA;AACzD,0BAAc;AAAA,UAChB;AAAA,QACF;AACA,wBAAgB;AAChB,YAAI,CAAC,aAAa;AAChB,0BAAgB,IAAI,KAAK,SAAS,EAAE,MAAM,EAAE;AAC5C,wBAAc;AAAA,QAChB;AAEA,eAAM,EAAE,KAAK,SAAS,KAAK,CAAC,CAAC,EAAE;AAC/B,YAAI;AAAA,MACN;AACA,qBAAe,IAAI,YAAY;AAC/B,aAAO,IAAI,OAAO,cAAc,kBAAkB,MAAM,EAAE;AAAA,IAC5D;AAIA,QAAM,YAAY;AAAA,MAChB,KAAK;AAAA,MACL,UAAU;AAAA,MACV,MAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAU;AAAA,MACV,UAAU;AAAA,MACV,cAAc;AAAA,IAChB;AAoEI,aAAS,aAAa,MAAM,UAAU,CAAC,GAAG;AAC5C,aAAO,cAAc,WAAW,MAAM,OAAO;AAAA,IAC/C;AAkBI,aAAS,OAAO,KAAK;AACvB,YAAM,QAAQ;AAAA,QACZ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AACA,YAAM,QAAQ;AACd,UAAI,QAAQ,IAAI;AACd,eAAO;AAAA,MACT;AACA,UAAIC;AACJ,aAAMA,SAAQ,MAAM,KAAK,GAAG,GAAE;AAC5B,YAAIA,OAAM,CAAC,EAAG,QAAO;AACrB,YAAIC,OAAMD,OAAM,QAAQA,OAAM,CAAC,EAAE;AAGjC,cAAME,QAAOF,OAAM,CAAC;AACpB,cAAMG,SAAQD,QAAO,MAAMA,KAAI,IAAI;AACnC,YAAIA,SAAQC,QAAO;AACjB,gBAAM,IAAI,IAAI,QAAQA,QAAOF,IAAG;AAChC,cAAI,MAAM,IAAI;AACZ,YAAAA,OAAM,IAAI;AAAA,UACZ;AAAA,QACF;AACA,cAAM,IAAI,MAAMA,IAAG;AAAA,MACrB;AACA,aAAO;AAAA,IACT;AAmBI,aAAS,cAAc,MAAM,UAAU,CAAC,GAAG;AAC7C,YAAM,EAAE,WAAW,MAAM,IAAI;AAC7B,UAAI,KAAK,MAAM,KAAK,GAAG;AACrB,cAAM,IAAI,MAAM,sCAAsC,IAAI,GAAG;AAAA,MAC/D;AACA,UAAI,CAAC,UAAU;AACb,eAAOV,WAAU,IAAI;AAAA,MACvB;AACA,YAAM,IAAI,kBAAkB;AAC5B,YAAM,mBAAmB,IAAI,OAAO,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,GAAG;AAClF,aAAOA,WAAU,KAAK,QAAQ,kBAAkB,IAAI,CAAC,EAAE,QAAQ,OAAO,IAAI;AAAA,IAC5E;AAoBI,aAAS,UAAU,OAAO,UAAU,CAAC,GAAG;AAC1C,YAAM,EAAE,WAAW,MAAM,IAAI;AAC7B,UAAI,CAAC,YAAY,MAAM,WAAW,GAAG;AACnC,eAAO,KAAK,GAAG,KAAK;AAAA,MACtB;AACA,UAAI;AACJ,iBAAW,QAAQ,OAAM;AACvB,cAAML,QAAO;AACb,YAAIA,MAAK,SAAS,GAAG;AACnB,cAAI,CAAC,OAAQ,UAASA;AAAA,cACjB,WAAU,GAAG,SAAS,GAAGA,KAAI;AAAA,QACpC;AAAA,MACF;AACA,UAAI,CAAC,OAAQ,QAAO;AACpB,aAAO,cAAc,QAAQ;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,IACH;AAEA,IAAAF,SAAQ,YAAY;AACpB,IAAAA,SAAQ,YAAY;AACpB,IAAAA,SAAQ,oBAAoB;AAC5B,IAAAA,SAAQ,WAAW;AACnB,IAAAA,SAAQ,SAAS;AACjB,IAAAA,SAAQ,UAAUI;AAClB,IAAAJ,SAAQ,UAAU;AAClB,IAAAA,SAAQ,SAAS;AACjB,IAAAA,SAAQ,cAAc;AACtB,IAAAA,SAAQ,eAAe;AACvB,IAAAA,SAAQ,aAAa;AACrB,IAAAA,SAAQ,SAAS;AACjB,IAAAA,SAAQ,OAAO;AACf,IAAAA,SAAQ,YAAY;AACpB,IAAAA,SAAQ,YAAYO;AACpB,IAAAP,SAAQ,gBAAgB;AACxB,IAAAA,SAAQ,QAAQS;AAChB,IAAAT,SAAQ,WAAW;AACnB,IAAAA,SAAQ,UAAUU;AAClB,IAAAV,SAAQ,YAAY;AACpB,IAAAA,SAAQ,mBAAmB;AAAA;AAAA;;;AC7oD3B,IAAAoB,eAAA;AAAA,0DAAAC,UAAA;AAAA;AAaA,QAAM,gBAAN,MAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASnB,OAAO,UAAU,QAAQ,QAAQ;AAChC,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,OAAO,QAAQ,QAAQ,QAAQ;AAC9B,YAAI,OAAO,WAAW,aAAa;AAClC,iBAAO;AAAA,QACR;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,OAAO,OAAO,QAAQ,QAAQ;AAC7B,eAAO,OAAO,OAAO,CAAC,GAAG,QAAQ,MAAM;AAAA,MACxC;AAAA,IACD;AAaA,QAAM,qBAAN,MAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOxB,OAAO,MAAMC,QAAO;AACnB,YAAI,CAAC,MAAM,QAAQA,MAAK,GAAG;AAC1B,gBAAM,IAAI,UAAU,oBAAoB;AAAA,QACzC;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,OAAO,QAAQA,QAAO;AACrB,YAAI,OAAOA,WAAU,WAAW;AAC/B,gBAAM,IAAI,UAAU,qBAAqB;AAAA,QAC1C;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,OAAO,OAAOA,QAAO;AACpB,YAAI,OAAOA,WAAU,UAAU;AAC9B,gBAAM,IAAI,UAAU,oBAAoB;AAAA,QACzC;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,OAAO,OAAOA,QAAO;AACpB,YAAI,CAACA,UAAS,OAAOA,WAAU,UAAU;AACxC,gBAAM,IAAI,UAAU,qBAAqB;AAAA,QAC1C;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,OAAO,UAAUA,QAAO;AACvB,YAAI,OAAOA,WAAU,UAAU;AAC9B,gBAAM,IAAI,UAAU,6BAA6B;AAAA,QAClD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,OAAO,OAAOA,QAAO;AACpB,YAAI,OAAOA,WAAU,UAAU;AAC9B,gBAAM,IAAI,UAAU,oBAAoB;AAAA,QACzC;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,OAAO,UAAUA,QAAO;AACvB,YAAI,OAAOA,WAAU,YAAYA,OAAM,WAAW,GAAG;AACpD,gBAAM,IAAI,UAAU,8BAA8B;AAAA,QACnD;AAAA,MACD;AAAA,IACD;AAkCA,aAAS,mBAAmB,MAAMC,aAAY;AAC7C,UAAI,YAAY;AAChB,UAAIA,YAAW,QAAQ;AACtB,YAAI,OAAOA,YAAW,WAAW,UAAU;AAC1C,sBAAY;AAAA,QACb,OAAO;AACN,gBAAM,IAAI,UAAU,2BAA2B;AAAA,QAChD;AAAA,MACD;AAEA,UAAI,OAAOA,YAAW,UAAU,UAAU;AACzC,YAAI,EAAEA,YAAW,SAAS,gBAAgB;AACzC,gBAAM,IAAI;AAAA,YACT,uBAAuB,IAAI;AAAA,UAC5B;AAAA,QACD;AAAA,MACD,WAAW,CAAC,aAAa,OAAOA,YAAW,UAAU,YAAY;AAChE,cAAM,IAAI;AAAA,UACT,uBAAuB,IAAI;AAAA,QAC5B;AAAA,MACD;AAEA,UAAI,OAAOA,YAAW,aAAa,UAAU;AAC5C,YAAI,EAAEA,YAAW,YAAY,qBAAqB;AACjD,gBAAM,IAAI;AAAA,YACT,uBAAuB,IAAI;AAAA,UAC5B;AAAA,QACD;AAAA,MACD,WAAW,CAAC,aAAa,OAAOA,YAAW,aAAa,YAAY;AACnE,cAAM,IAAI;AAAA,UACT,uBAAuB,IAAI;AAAA,QAC5B;AAAA,MACD;AAAA,IACD;AASA,QAAM,qBAAN,cAAiC,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,MAKtC,YAAY,KAAK;AAChB,cAAM,mBAAmB,GAAG,UAAU;AAAA,MACvC;AAAA,IACD;AAKA,QAAM,kBAAN,cAA8B,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,MAKnC,YAAY,KAAK;AAChB,cAAM,yBAAyB,GAAG,IAAI;AAAA,MACvC;AAAA,IACD;AAKA,QAAM,4BAAN,cAAwC,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAM7C,YAAY,KAAK,cAAc;AAC9B,cAAM,QAAQ,GAAG,oBAAoB,aAAa,KAAK,MAAM,CAAC,IAAI;AAAA,MACnE;AAAA,IACD;AAKA,QAAM,eAAN,cAA2B,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMhC,YAAY,KAAK,QAAQ;AACxB,cAAM,QAAQ,GAAG,MAAM,OAAO,OAAO,IAAI,EAAE,OAAO,OAAO,CAAC;AAG1D,mBAAW,aAAa,OAAO,KAAK,MAAM,GAAG;AAC5C,cAAI,EAAE,aAAa,OAAO;AACzB,iBAAK,SAAS,IAAI,OAAO,SAAS;AAAA,UACnC;AAAA,QACD;AAAA,MACD;AAAA,IACD;AASA,QAAM,eAAN,MAAM,cAAa;AAAA;AAAA;AAAA;AAAA;AAAA,MAKlB,eAAe,oBAAI,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,MAMvB,gBAAgB,oBAAI,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOxB,YAAY,aAAa;AACxB,YAAI,CAAC,aAAa;AACjB,gBAAM,IAAI,MAAM,6BAA6B;AAAA,QAC9C;AAGA,mBAAW,OAAO,OAAO,KAAK,WAAW,GAAG;AAC3C,gBAAMA,cAAa,YAAY,GAAG;AAElC,6BAAmB,KAAKA,WAAU;AAElC,cAAI,uBAAuBA;AAG3B,cAAI,OAAO,qBAAqB,WAAW,UAAU;AACpD,kBAAM,SAAS,IAAI,cAAa,qBAAqB,MAAM;AAC3D,mCAAuB;AAAA,cACtB,GAAG;AAAA,cACH,MAAMC,SAAQ,CAAC,GAAG,SAAS,CAAC,GAAG;AAC9B,uBAAO,OAAO,MAAMA,QAAO,MAAM;AAAA,cAClC;AAAA,cACA,SAASF,QAAO;AACf,mCAAmB,OAAOA,MAAK;AAC/B,uBAAO,SAASA,MAAK;AAAA,cACtB;AAAA,YACD;AAAA,UACD;AAGA,cAAI,OAAO,qBAAqB,UAAU,UAAU;AACnD,mCAAuB;AAAA,cACtB,GAAG;AAAA,cACH,OAAO,cAAc,qBAAqB,KAAK;AAAA,YAChD;AAAA,UACD;AAGA,cAAI,OAAO,qBAAqB,aAAa,UAAU;AACtD,mCAAuB;AAAA,cACtB,GAAG;AAAA,cACH,UAAU,mBAAmB,qBAAqB,QAAQ;AAAA,YAC3D;AAAA,UACD;AAEA,eAAK,aAAa,IAAI,KAAK,oBAAoB;AAE/C,cAAI,qBAAqB,UAAU;AAClC,iBAAK,cAAc,IAAI,KAAK,oBAAoB;AAAA,UACjD;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,OAAO,KAAK;AACX,eAAO,KAAK,aAAa,IAAI,GAAG;AAAA,MACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,SAAS,SAAS;AAEjB,YAAI,QAAQ,SAAS,GAAG;AACvB,gBAAM,IAAI,UAAU,0CAA0C;AAAA,QAC/D;AAEA,YACC,QAAQ;AAAA,UACP,YAAU,WAAW,QAAQ,OAAO,WAAW;AAAA,QAChD,GACC;AACD,gBAAM,IAAI,UAAU,gCAAgC;AAAA,QACrD;AAEA,eAAO,QAAQ,OAAO,CAAC,QAAQ,WAAW;AACzC,eAAK,SAAS,MAAM;AAEpB,qBAAW,CAAC,KAAK,QAAQ,KAAK,KAAK,cAAc;AAChD,gBAAI;AACH,kBAAI,OAAO,UAAU,OAAO,QAAQ;AACnC,sBAAMG;AAAA;AAAA,kBAAiC,SAAS;AAAA;AAChD,sBAAMH,SAAQG,OAAM;AAAA,kBACnB;AAAA,kBACA,OAAO,GAAG;AAAA,kBACV,OAAO,GAAG;AAAA,gBACX;AACA,oBAAIH,WAAU,QAAW;AACxB,yBAAO,GAAG,IAAIA;AAAA,gBACf;AAAA,cACD;AAAA,YACD,SAAS,IAAI;AACZ,oBAAM,IAAI,aAAa,KAAK,EAAE;AAAA,YAC/B;AAAA,UACD;AACA,iBAAO;AAAA,QACR,GAAG,CAAC,CAAC;AAAA,MACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,SAAS,QAAQ;AAEhB,mBAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AAEtC,cAAI,CAAC,KAAK,OAAO,GAAG,GAAG;AACtB,kBAAM,IAAI,mBAAmB,GAAG;AAAA,UACjC;AAGA,gBAAMC;AAAA;AAAA,YACL,KAAK,aAAa,IAAI,GAAG;AAAA;AAI1B,cAAI,MAAM,QAAQA,YAAW,QAAQ,GAAG;AACvC,gBACC,CAACA,YAAW,SAAS,MAAM,cAAY,YAAY,MAAM,GACxD;AACD,oBAAM,IAAI;AAAA,gBACT;AAAA,gBACAA,YAAW;AAAA,cACZ;AAAA,YACD;AAAA,UACD;AAGA,cAAI;AACH,kBAAM;AAAA;AAAA,cAAoCA,YAAW;AAAA;AACrD,qBAAS,KAAKA,aAAY,OAAO,GAAG,CAAC;AAAA,UACtC,SAAS,IAAI;AACZ,kBAAM,IAAI,aAAa,KAAK,EAAE;AAAA,UAC/B;AAAA,QACD;AAGA,mBAAW,CAAC,GAAG,KAAK,KAAK,eAAe;AACvC,cAAI,EAAE,OAAO,SAAS;AACrB,kBAAM,IAAI,gBAAgB,GAAG;AAAA,UAC9B;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,IAAAF,SAAQ,gBAAgB;AACxB,IAAAA,SAAQ,eAAe;AACvB,IAAAA,SAAQ,qBAAqB;AAAA;AAAA;;;ACrd7B,IAAAK,eAAA;AAAA,yDAAAC,UAAA;AAAA;AAEA,QAAI,YAAY;AAChB,QAAI,cAAc;AAClB,QAAI,YAAY;AAChB,QAAI,cAAc;AAClB,QAAI,eAAe;AAEnB,aAAS,yBAAyB,GAAG;AACpC,UAAI,IAAI,uBAAO,OAAO,IAAI;AAC1B,UAAI,GAAG;AACN,eAAO,KAAK,CAAC,EAAE,QAAQ,SAAU,GAAG;AACnC,cAAI,MAAM,WAAW;AACpB,gBAAI,IAAI,OAAO,yBAAyB,GAAG,CAAC;AAC5C,mBAAO,eAAe,GAAG,GAAG,EAAE,MAAM,IAAI;AAAA,cACvC,YAAY;AAAA,cACZ,KAAK,WAAY;AAAE,uBAAO,EAAE,CAAC;AAAA,cAAG;AAAA,YACjC,CAAC;AAAA,UACF;AAAA,QACD,CAAC;AAAA,MACF;AACA,QAAE,UAAU;AACZ,aAAO,OAAO,OAAO,CAAC;AAAA,IACvB;AAEA,QAAI,uBAAoC,yCAAyB,SAAS;AAC1E,QAAI,yBAAsC,yCAAyB,WAAW;AAuB9E,QAAM,gBAAgB;AAAA,MACrB,UAAU;AAAA,MACV,QAAQ;AACP,eAAO;AAAA,MACR;AAAA,MACA,WAAW;AAAA,MAAC;AAAA,IACb;AAUA,QAAM,aAAa,OAAO,OAAO;AAAA,MAChC,MAAM;AAAA,QACL,UAAU;AAAA,QACV,QAAQ;AACP,iBAAO;AAAA,QACR;AAAA,QACA,SAASC,QAAO;AACf,cAAI,OAAOA,WAAU,UAAU;AAC9B,kBAAM,IAAI,UAAU,4BAA4B;AAAA,UACjD;AAAA,QACD;AAAA,MACD;AAAA,MACA,UAAU;AAAA,MACV,OAAO;AAAA,MACP,SAAS;AAAA,IACV,CAAC;AAsBD,aAAS,cAAcA,QAAO;AAC7B,UAAI,CAAC,MAAM,QAAQA,MAAK,GAAG;AAC1B,cAAM,IAAI,UAAU,gCAAgC;AAAA,MACrD;AAAA,IACD;AAQA,aAAS,mCAAmCA,QAAO;AAClD,oBAAcA,MAAK;AAEnB,UACCA,OAAM;AAAA,QACL,UAAQ,OAAO,SAAS,YAAY,OAAO,SAAS;AAAA,MACrD,GACC;AACD,cAAM,IAAI;AAAA,UACT;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAQA,aAAS,sBAAsBA,QAAO;AACrC,UAAI,CAAC,MAAM,QAAQA,MAAK,KAAKA,OAAM,WAAW,GAAG;AAChD,cAAM,IAAI,UAAU,yCAAyC;AAAA,MAC9D;AAAA,IACD;AAUA,QAAM,wBAAwB,OAAO,OAAO;AAAA,MAC3C,UAAU;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AACP,iBAAO;AAAA,QACR;AAAA,QACA,SAASA,QAAO;AACf,cAAI,OAAOA,WAAU,UAAU;AAC9B,kBAAM,IAAI,UAAU,gCAAgC;AAAA,UACrD;AAAA,QACD;AAAA,MACD;AAAA,MACA,OAAO;AAAA,QACN,UAAU;AAAA,QACV,QAAQ;AACP,iBAAO;AAAA,QACR;AAAA,QACA,SAASA,QAAO;AAEf,gCAAsBA,MAAK;AAG3B,UAAAA,OAAM,QAAQ,UAAQ;AACrB,gBAAI,MAAM,QAAQ,IAAI,GAAG;AACxB,iDAAmC,IAAI;AAAA,YACxC,WACC,OAAO,SAAS,YAChB,OAAO,SAAS,YACf;AACD,oBAAM,IAAI;AAAA,gBACT;AAAA,cACD;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAAA,MACD;AAAA,MACA,SAAS;AAAA,QACR,UAAU;AAAA,QACV,QAAQ;AACP,iBAAO;AAAA,QACR;AAAA,QACA,UAAU;AAAA,MACX;AAAA,IACD,CAAC;AAkCD,QAAMC,SAAQ,YAAY,sBAAsB;AAMhD,QAAM,iBAAiB,oBAAI,IAAI;AAM/B,QAAM,wBAAwB,oBAAI,IAAI;AAMtC,QAAM,oBAAoB;AAAA;AAAA,MAEzB,KAAK;AAAA,IACN;AAMA,QAAM,eAAe,oBAAI,IAAI,CAAC,SAAS,UAAU,CAAC;AAMlD,QAAM,cAAc,oBAAI,IAAI,CAAC,QAAQ,UAAU,CAAC;AAMhD,QAAM,2BAA2B,IAAI,aAAa,aAAa,qBAAqB;AAIpF,QAAM,8BAA8B,OAAO,OAAO,EAAE,QAAQ,WAAW,CAAC;AACxE,QAAM,6BAA6B,OAAO,OAAO,EAAE,QAAQ,UAAU,CAAC;AACtE,QAAM,kCAAkC,OAAO,OAAO;AAAA,MACrD,QAAQ;AAAA,IACT,CAAC;AAGD,QAAM,sBAAsB;AAM5B,QAAM,cAAN,cAA0B,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAS/B,YAAY,MAAMC,QAAO,EAAE,OAAO,QAAQ,GAAG;AAC5C,cAAM,eAAe,WAAW,MAAM;AAEtC,cAAM,UAAU,IAAI,KAAK,YAAY,IAAI,EAAE,MAAM,CAAC;AAGlD,YAAI,OAAO;AACV,qBAAW,OAAO,OAAO,KAAK,KAAK,GAAG;AACrC,gBAAI,EAAE,OAAO,OAAO;AACnB,mBAAK,GAAG,IAAI,MAAM,GAAG;AAAA,YACtB;AAAA,UACD;AAAA,QACD;AAOA,aAAK,OAAO;AAOZ,aAAK,QAAQA;AAAA,MACd;AAAA,IACD;AAOA,aAAS,cAAc,QAAQ;AAC9B,UAAI,UAAU,OAAO,OAAO,SAAS,YAAY,OAAO,MAAM;AAC7D,eAAO,IAAI,OAAO,IAAI;AAAA,MACvB;AAEA,aAAO;AAAA,IACR;AASA,aAAS,mBAAmB,QAAQA,QAAO,OAAO;AACjD,YAAM,aAAa,cAAc,MAAM;AACvC,YAAM,IAAI,YAAY,YAAYA,QAAO,EAAE,OAAO,MAAM,CAAC;AAAA,IAC1D;AAOA,aAASC,UAASH,QAAO;AACxB,aAAO,OAAOA,WAAU;AAAA,IACzB;AAWA,aAAS,sBAAsB,QAAQE,QAAO;AAC7C,UAAI,WAAW,MAAM;AACpB,cAAM,IAAI,YAAY,cAAc,MAAM,GAAGA,QAAO;AAAA,UACnD,SAAS;AAAA,QACV,CAAC;AAAA,MACF;AAEA,UAAI,WAAW,QAAW;AACzB,cAAM,IAAI,YAAY,cAAc,MAAM,GAAGA,QAAO;AAAA,UACnD,SAAS;AAAA,QACV,CAAC;AAAA,MACF;AAEA,UAAI,OAAO,WAAW,UAAU;AAC/B,cAAM,IAAI,YAAY,cAAc,MAAM,GAAGA,QAAO;AAAA,UACnD,SAAS;AAAA,QACV,CAAC;AAAA,MACF;AAEA,YAAM,iBAAiB,CAAC;AAExB,UAAI,cAAc,QAAQ;AACzB,uBAAe,WAAW,OAAO;AAAA,MAClC;AAEA,UAAI,WAAW,QAAQ;AACtB,uBAAe,QAAQ,OAAO;AAAA,MAC/B;AAEA,UAAI,aAAa,QAAQ;AACxB,uBAAe,UAAU,OAAO;AAAA,MACjC;AAEA,UAAI;AACH,iCAAyB,SAAS,cAAc;AAAA,MACjD,SAAS,iBAAiB;AACzB,2BAAmB,QAAQA,QAAO,eAAe;AAAA,MAClD;AAAA,IACD;AAUA,aAAS,QAAQ,UAAU,SAAS,UAAU,CAAC,GAAG;AACjD,UAAIE,SAAQ;AAEZ,UAAI,QAAQ,YAAY;AACvB,QAAAA,SAAQ;AAAA,MACT;AAEA,UAAI,UAAUA,OAAM,IAAI,OAAO;AAE/B,UAAI,CAAC,SAAS;AACb,kBAAU,IAAI,UAAU;AAAA,UACvB;AAAA,UACA,OAAO,OAAO,CAAC,GAAG,mBAAmB,OAAO;AAAA,QAC7C;AACA,QAAAA,OAAM,IAAI,SAAS,OAAO;AAAA,MAC3B;AAEA,aAAO,QAAQ,MAAM,QAAQ;AAAA,IAC9B;AAOA,aAAS,iBAAiB,SAAS;AAClC,UAAID,UAAS,OAAO,GAAG;AACtB,YAAI,QAAQ,WAAW,IAAI,GAAG;AAC7B,iBAAO,QAAQ,MAAM,CAAC;AAAA,QACvB;AAEA,YAAI,QAAQ,WAAW,KAAK,GAAG;AAC9B,iBAAO,IAAI,QAAQ,MAAM,CAAC,CAAC;AAAA,QAC5B;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,0BAA0B,SAAS;AAC3C,aACCA,UAAS,OAAO,MACf,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,KAAK;AAAA,IAEvD;AASA,aAAS,wBAAwB,QAAQ,oBAAoBE,OAAM;AAClE,UAAI,CAAC,QAAQ;AACZ,eAAO;AAAA,MACR;AAEA,YAAM,cAAc,OAAO,OAAO,aAAa;AAE/C,UAAI,qBAAqB;AAEzB,UAAI,aAAa;AAChB,6BAAqB;AAAA,MACtB;AAEA,UAAI,CAAC,sBAAsB,MAAM,QAAQ,OAAO,KAAK,GAAG;AACvD,6BAAqB,OAAO,MAAM,KAAK,aAAW;AACjD,cAAI,MAAM,QAAQ,OAAO,GAAG;AAC3B,mBAAO,QAAQ,KAAK,yBAAyB;AAAA,UAC9C;AACA,iBAAO,0BAA0B,OAAO;AAAA,QACzC,CAAC;AAAA,MACF;AAEA,UAAI,CAAC,sBAAsB,MAAM,QAAQ,OAAO,OAAO,GAAG;AACzD,6BAAqB,OAAO,QAAQ,KAAK,yBAAyB;AAAA,MACnE;AAEA,UAAI,CAAC,oBAAoB;AACxB,eAAO;AAAA,MACR;AAEA,YAAM,YAAY,EAAE,GAAG,OAAO;AAE9B,UAAI,aAAa;AAChB,YAAIA,MAAK,WAAW,OAAO,QAAQ,GAAG;AACrC,oBAAU,WAAWA,MAAK,iBAAiB,OAAO,QAAQ;AAAA,QAC3D,OAAO;AACN,oBAAU,WAAWA,MAAK;AAAA,YACzB;AAAA,YACA,OAAO;AAAA,UACR;AAAA,QACD;AAAA,MACD;AAEA,UAAI,MAAM,QAAQ,UAAU,KAAK,GAAG;AACnC,kBAAU,QAAQ,UAAU,MAAM,IAAI,aAAW;AAChD,cAAI,MAAM,QAAQ,OAAO,GAAG;AAC3B,mBAAO,QAAQ,IAAI,gBAAgB;AAAA,UACpC;AACA,iBAAO,iBAAiB,OAAO;AAAA,QAChC,CAAC;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ,UAAU,OAAO,GAAG;AACrC,kBAAU,UAAU,UAAU,QAAQ,IAAI,gBAAgB;AAAA,MAC3D;AAEA,aAAO;AAAA,IACR;AAcA,mBAAeC,WACd,OACA,SACA,kBACA,oBACAD,OACC;AACD,YAAM,iBAAiB,iBAAiB,SAAS,UAAU;AAC3D,YAAM,cAAc,iBAAiB,SAAS,OAAO;AAErD,sBAAgB,aAAa,OAAO;AACnC,iBAAS,QAAQ,OAAO;AACvB,cAAI,OAAO,SAAS,YAAY;AAC/B,gBAAI,CAAC,gBAAgB;AACpB,oBAAM,IAAI,UAAU,sBAAsB;AAAA,YAC3C;AAEA,mBAAO,KAAK,OAAO;AACnB,gBAAI,KAAK,MAAM;AACd,qBAAO,MAAM;AAAA,YACd;AAAA,UACD;AAEA,cAAI,MAAM,QAAQ,IAAI,GAAG;AACxB,gBAAI,CAAC,aAAa;AACjB,oBAAM,IAAI,UAAU,mBAAmB;AAAA,YACxC;AACA,mBAAO,aAAa,IAAI;AAAA,UACzB,WAAW,OAAO,SAAS,YAAY;AACtC,kBAAM,IAAI;AAAA,cACT;AAAA,YACD;AAAA,UACD,OAAO;AACN,kBAAM;AAAA,UACP;AAAA,QACD;AAAA,MACD;AAMA,YAAM,gBAAgB,aAAa,KAAK;AACxC,YAAM,UAAU,CAAC;AAEjB,uBAAiB,UAAU,eAAe;AACzC,gBAAQ,KAAK,wBAAwB,QAAQ,oBAAoBA,KAAI,CAAC;AAAA,MACvE;AAEA,aAAO;AAAA,IACR;AAcA,aAAS,cACR,OACA,SACA,kBACA,oBACAA,OACC;AACD,YAAM,iBAAiB,iBAAiB,SAAS,UAAU;AAC3D,YAAM,cAAc,iBAAiB,SAAS,OAAO;AAErD,gBAAU,aAAa,OAAO;AAC7B,iBAAS,QAAQ,OAAO;AACvB,cAAI,OAAO,SAAS,YAAY;AAC/B,gBAAI,CAAC,gBAAgB;AACpB,oBAAM,IAAI,UAAU,sBAAsB;AAAA,YAC3C;AAEA,mBAAO,KAAK,OAAO;AACnB,gBAAI,KAAK,MAAM;AACd,oBAAM,IAAI;AAAA,gBACT;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAEA,cAAI,MAAM,QAAQ,IAAI,GAAG;AACxB,gBAAI,CAAC,aAAa;AACjB,oBAAM,IAAI,UAAU,mBAAmB;AAAA,YACxC;AAEA,mBAAO,aAAa,IAAI;AAAA,UACzB,WAAW,OAAO,SAAS,YAAY;AACtC,kBAAM,IAAI;AAAA,cACT;AAAA,YACD;AAAA,UACD,OAAO;AACN,kBAAM;AAAA,UACP;AAAA,QACD;AAAA,MACD;AAEA,YAAM,UAAU,CAAC;AAEjB,iBAAW,UAAU,aAAa,KAAK,GAAG;AACzC,gBAAQ,KAAK,wBAAwB,QAAQ,oBAAoBA,KAAI,CAAC;AAAA,MACvE;AAEA,aAAO;AAAA,IACR;AASA,aAAS,eAAe,eAAe,oBAAoBA,OAAM;AAChE,YAAM,WAAWA,MAAK,QAAQ,oBAAoB,aAAa;AAC/D,YAAM,qBAAqBA,MAAK,iBAAiB,QAAQ;AACzD,YAAM,eAAeA,MAAK,SAAS,oBAAoB,kBAAkB;AACzE,aAAO,aAAa,WAAWA,MAAK,WAAW,GAAG;AAAA,IACnD;AAeA,aAAS,iBACR,SACA,UACA,kBACA,EAAE,UAAU,MAAAA,MAAK,IAAI,CAAC,GACrB;AACD,UAAI,eAAe;AAEnB,iBAAW,UAAU,SAAS;AAC7B,YAAI,0BAA0B;AAC9B,YAAI,OAAO,UAAU;AACpB,oCAA0B;AAAA,YACzBA,MAAK,QAAQ,UAAU,gBAAgB;AAAA,YACvC,OAAO;AAAA,YACPA;AAAA,UACD;AAEA,cACC,4BAA4B,MAC5B,oBAAoB,KAAK,uBAAuB,GAC/C;AACD;AAAA,UACD;AAEA,cAAI,iBAAiB,SAAS,GAAG,GAAG;AACnC,uCAA2B;AAAA,UAC5B;AAAA,QACD;AACA,uBAAe,OAAO,QAAQ,OAAO,CAAC,SAAS,YAAY;AAC1D,cAAI,CAAC,SAAS;AACb,gBAAI,OAAO,YAAY,YAAY;AAClC,qBAAO,QAAQ,QAAQ;AAAA,YACxB;AAGA,gBAAI,CAAC,QAAQ,WAAW,GAAG,GAAG;AAC7B,qBAAO,QAAQ,yBAAyB,OAAO;AAAA,YAChD;AAGA,mBAAO;AAAA,UACR;AAGA,cAAI,OAAO,YAAY,YAAY,QAAQ,WAAW,GAAG,GAAG;AAC3D,mBAAO,CAAC,QAAQ,yBAAyB,SAAS;AAAA,cACjD,YAAY;AAAA,YACb,CAAC;AAAA,UACF;AAEA,iBAAO;AAAA,QACR,GAAG,YAAY;AAAA,MAChB;AAEA,aAAO;AAAA,IACR;AAcA,aAAS,YAAY,UAAU,kBAAkB,QAAQ;AAExD,eAASE,OAAM,SAAS;AACvB,YAAIJ,UAAS,OAAO,GAAG;AACtB,iBAAO,QAAQ,kBAAkB,OAAO;AAAA,QACzC;AAEA,YAAI,OAAO,YAAY,YAAY;AAClC,iBAAO,QAAQ,QAAQ;AAAA,QACxB;AAEA,cAAM,IAAI,UAAU,2BAA2B,OAAO,GAAG;AAAA,MAC1D;AAGA,UAAI,yBAAyB,OAAO,MAAM,KAAK,aAAW;AACzD,YAAI,MAAM,QAAQ,OAAO,GAAG;AAC3B,iBAAO,QAAQ,MAAMI,MAAK;AAAA,QAC3B;AAEA,eAAOA,OAAM,OAAO;AAAA,MACrB,CAAC;AAMD,UAAI,0BAA0B,OAAO,SAAS;AAK7C,iCAAyB,CAAC;AAAA,UACzB,CAAC,EAAE,SAAS,OAAO,QAAQ,CAAC;AAAA,UAC5B;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,iBAAiB,aAAa;AAEtC,UAAI,CAAC,YAAY,aAAa,GAAG;AAChC,cAAM,IAAI;AAAA,UACT;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAQA,aAAS,uBAAuB,kBAAkB;AACjD,UAAI,CAAC,MAAM,QAAQ,gBAAgB,GAAG;AACrC,cAAM,IAAI,UAAU,oCAAoC;AAAA,MACzD;AAEA,UAAI,iBAAiB,SAAS,GAAG;AAChC,cAAM,IAAI,UAAU,kDAAkD;AAAA,MACvE;AAEA,iBAAW,cAAc,kBAAkB;AAC1C,YAAI,CAAC,aAAa,IAAI,UAAU,GAAG;AAClC,gBAAM,IAAI;AAAA,YACT,2BAA2B,UAAU;AAAA,UACtC;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAQA,aAAS,YAAY,eAAe;AAEnC,UAAI,cAAc,WAAW,GAAG,GAAG;AAClC,eAAO;AAAA,MACR;AAKA,UAAI,gCAAgC,KAAK,aAAa,GAAG;AACxD,eAAO;AAAA,MACR;AAEA,YAAM,IAAI;AAAA,QACT,2CAA2C,aAAa;AAAA,MACzD;AAAA,IACD;AAMA,QAAM,oBAAoB;AAAA,MACzB,cAAc,uBAAO,cAAc;AAAA,MACnC,aAAa,uBAAO,aAAa;AAAA,MACjC,QAAQ,uBAAO,QAAQ;AAAA,MACvB,gBAAgB,uBAAO,gBAAgB;AAAA,MACvC,kBAAkB,uBAAO,kBAAkB;AAAA,IAC5C;AAGA,QAAM,YAAY,oBAAI,QAAQ;AAM9B,QAAM,cAAN,cAA0B,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,MAK/B;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgBA,YACC,SACA;AAAA,QACC,WAAW;AAAA,QACX,aAAa;AAAA,QACb,QAAQ;AAAA,QACR,mBAAmB,CAAC;AAAA,MACrB,IAAI,CAAC,GACJ;AACD,cAAM;AAQN,aAAK,kBAAkB,YAAY,IAAI;AAQvC,aAAK,kBAAkB,MAAM,IAAI,IAAI,aAAa;AAAA,UACjD,OAAO,OAAO,CAAC,GAAG,cAAc,UAAU;AAAA,QAC3C;AAEA,YAAI,CAACJ,UAAS,QAAQ,KAAK,CAAC,UAAU;AACrC,gBAAM,IAAI,UAAU,qCAAqC;AAAA,QAC1D;AAQA,aAAK,WAAW;AAEhB,+BAAuB,gBAAgB;AAMvC,aAAK,mBAAmB,CAAC,GAAG,gBAAgB;AAC5C,eAAO,OAAO,KAAK,gBAAgB;AAQnC,aAAK,kBAAkB,WAAW,IAAI,oBAAI,IAAI;AAG9C,kBAAU,IAAI,MAAM;AAAA,UACnB,iBAAiB,oBAAI,IAAI;AAAA,UACzB,kBAAkB,oBAAI,IAAI;AAAA,UAC1B,OAAO;AAAA,UACP,SAAS;AAAA,QACV,CAAC;AAGD,YAAI,MAAM,QAAQ,OAAO,GAAG;AAC3B,eAAK,KAAK,GAAG,OAAO;AAAA,QACrB,OAAO;AACN,eAAK,KAAK,OAAO;AAAA,QAClB;AAGA,aAAK,QAAQ,YAAY,QAAQ;AAKjC,aAAK,sBAAsB,KAAK,MAAM,iBAAiB,QAAQ;AAAA,MAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,YAAY,OAAO,OAAO,IAAI;AAC7B,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,IAAI,QAAQ;AACX,yBAAiB,IAAI;AAGrB,cAAMC,SAAQ,UAAU,IAAI,IAAI;AAEhC,YAAIA,OAAM,OAAO;AAChB,iBAAOA,OAAM;AAAA,QACd;AAIA,cAAM,SAAS,CAAC;AAEhB,mBAAW,UAAU,MAAM;AAC1B,cAAI,OAAO,OAAO;AACjB,mBAAO,MAAM,QAAQ,iBAAe;AACnC,qBAAO,KAAK,WAAW;AAAA,YACxB,CAAC;AAAA,UACF;AAAA,QACD;AAGA,QAAAA,OAAM,QAAQ;AACd,kBAAU,IAAI,MAAMA,MAAK;AAEzB,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,IAAI,UAAU;AACb,yBAAiB,IAAI;AAGrB,cAAMA,SAAQ,UAAU,IAAI,IAAI;AAEhC,YAAIA,OAAM,SAAS;AAClB,iBAAOA,OAAM;AAAA,QACd;AAIA,cAAM,SAAS,CAAC;AAEhB,mBAAW,UAAU,MAAM;AAM1B,cACC,OAAO,WACP,OAAO,KAAK,MAAM,EAAE,OAAO,SAAO,CAAC,YAAY,IAAI,GAAG,CAAC,EACrD,WAAW,GACZ;AACD,mBAAO,KAAK,MAAM;AAAA,UACnB;AAAA,QACD;AAGA,QAAAA,OAAM,UAAU;AAChB,kBAAU,IAAI,MAAMA,MAAK;AAEzB,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,eAAe;AACd,eAAO,KAAK,kBAAkB,YAAY;AAAA,MAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,MAAM,UAAU,UAAU,CAAC,GAAG;AAC7B,YAAI,CAAC,KAAK,aAAa,GAAG;AACzB,gBAAM,oBAAoB,MAAME;AAAA,YAC/B;AAAA,YACA;AAAA,YACA,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,UACN;AACA,eAAK,SAAS;AACd,eAAK;AAAA,YACJ,GAAG,kBAAkB;AAAA,cACpB,KAAK,kBAAkB,gBAAgB,EAAE,KAAK,IAAI;AAAA,YACnD;AAAA,UACD;AACA,eAAK,QAAQ,qBAAqB;AAClC,eAAK,kBAAkB,YAAY,IAAI;AAGvC,iBAAO,OAAO,IAAI;AAAA,QACnB;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,cAAc,UAAU,CAAC,GAAG;AAC3B,YAAI,CAAC,KAAK,aAAa,GAAG;AACzB,gBAAM,oBAAoB;AAAA,YACzB;AAAA,YACA;AAAA,YACA,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,UACN;AACA,eAAK,SAAS;AACd,eAAK;AAAA,YACJ,GAAG,kBAAkB;AAAA,cACpB,KAAK,kBAAkB,gBAAgB,EAAE,KAAK,IAAI;AAAA,YACnD;AAAA,UACD;AACA,eAAK,QAAQ,qBAAqB;AAClC,eAAK,kBAAkB,YAAY,IAAI;AAGvC,iBAAO,OAAO,IAAI;AAAA,QACnB;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA;AAAA;AAAA,QAAuB,kBAAkB;AAAA,MAAe,EAAE,QAAQ;AACjE,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA;AAAA;AAAA,QAAuB,kBAAkB;AAAA,MAAiB,EAAE,QAAQ;AACnE,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,oBAAoB,UAAU;AAC7B,yBAAiB,IAAI;AAErB,cAAMF,SAAQ,KAAK,kBAAkB,WAAW;AAGhD,YAAIA,OAAM,IAAI,QAAQ,GAAG;AACxB,iBAAOA,OAAM,IAAI,QAAQ;AAAA,QAC1B;AAIA,cAAM,yBAAyB;AAAA,UAC9B;AAAA,UACA,KAAK;AAAA,UACL,KAAK;AAAA,QACN;AAEA,YAAI,oBAAoB,KAAK,sBAAsB,GAAG;AACrD,UAAAH,OAAM,sBAAsB,QAAQ,uBAAuB;AAG3D,UAAAG,OAAM,IAAI,UAAU,2BAA2B;AAC/C,iBAAO;AAAA,QACR;AAKA,YAAI,KAAK,mBAAmB,KAAK,MAAM,QAAQ,QAAQ,CAAC,GAAG;AAC1D,UAAAH,OAAM,YAAY,QAAQ,6BAA6B;AAGvD,UAAAG,OAAM,IAAI,UAAU,0BAA0B;AAC9C,iBAAO;AAAA,QACR;AAEA,YACC,iBAAiB,KAAK,SAAS,UAAU,wBAAwB;AAAA,UAChE,UAAU,KAAK;AAAA,UACf,MAAM,KAAK;AAAA,QACZ,CAAC,GACA;AACD,UAAAH,OAAM,YAAY,QAAQ,wBAAwB;AAGlD,UAAAG,OAAM,IAAI,UAAU,0BAA0B;AAC9C,iBAAO;AAAA,QACR;AAIA,cAAM,wBAAwB,CAAC;AAC/B,YAAI,aAAa;AACjB,cAAM,mBAAmB;AAEzB,aAAK,QAAQ,CAAC,QAAQF,WAAU;AAC/B,gBAAM,mBAAmB,OAAO,WAC7B;AAAA,YACA,KAAK,MAAM,QAAQ,KAAK,qBAAqB,QAAQ;AAAA,YACrD,OAAO;AAAA,YACP,KAAK;AAAA,UACN,IACC;AAEH,cAAI,OAAO,YAAY,oBAAoB,KAAK,gBAAgB,GAAG;AAClE,YAAAD;AAAA,cACC,4BAA4B,QAAQ,kCAAkC,OAAO,QAAQ;AAAA,YACtF;AACA;AAAA,UACD;AAEA,cAAI,CAAC,OAAO,OAAO;AAClB,gBAAI,CAAC,OAAO,SAAS;AACpB,cAAAA,OAAM,8BAA8B,QAAQ,EAAE;AAC9C,oCAAsB,KAAKC,MAAK;AAChC;AAAA,YACD;AAEA,gBACC,OAAO,KAAK,MAAM,EAAE,OAAO,SAAO,CAAC,YAAY,IAAI,GAAG,CAAC,EACrD,WAAW,GACZ;AACD,cAAAD;AAAA,gBACC,4BAA4B,QAAQ;AAAA,cACrC;AACA;AAAA,YACD;AAMA,gBACC;AAAA,cACC,CAAC,EAAE,SAAS,OAAO,QAAQ,CAAC;AAAA,cAC5B;AAAA,cACA;AAAA,YACD,GACC;AACD,cAAAA;AAAA,gBACC,4BAA4B,QAAQ,uBAAuB,OAAO,OAAO;AAAA,cAC1E;AACA;AAAA,YACD;AAEA,YAAAA;AAAA,cACC,6BAA6B,QAAQ,uBAAuB,OAAO,OAAO;AAAA,YAC3E;AACA,kCAAsB,KAAKC,MAAK;AAChC;AAAA,UACD;AASA,gBAAM,oBAAoB,CAAC;AAC3B,gBAAM,iBAAiB,OAAO,MAAM,OAAO,aAAW;AACrD,gBAAI,MAAM,QAAQ,OAAO,GAAG;AAU3B,kBACC,QAAQ,MAAM,aAAW,iBAAiB,KAAK,OAAO,CAAC,GACtD;AACD,uBAAO;AAAA,cACR;AAEA,gCAAkB,KAAK,OAAO;AAC9B,qBAAO;AAAA,YACR;AAIA,gBAAI,iBAAiB,KAAK,OAAO,GAAG;AACnC,qBAAO;AAAA,YACR;AAEA,8BAAkB,KAAK,OAAO;AAC9B,mBAAO;AAAA,UACR,CAAC;AAGD,cAAI,eAAe,QAAQ;AAC1B,YAAAD,OAAM,qDAAqD;AAG3D,gBACC,kBAAkB,UAClB,YAAY,UAAU,kBAAkB;AAAA,cACvC,OAAO;AAAA,cACP,SAAS,OAAO;AAAA,YACjB,CAAC,GACA;AACD,cAAAA,OAAM,6BAA6B,QAAQ,EAAE;AAC7C,oCAAsB,KAAKC,MAAK;AAChC,2BAAa;AACb;AAAA,YACD;AAGA,gBACC,eAAe,UACf,YAAY,UAAU,kBAAkB;AAAA,cACvC,OAAO;AAAA,cACP,SAAS,OAAO;AAAA,YACjB,CAAC,GACA;AACD,cAAAD,OAAM,6BAA6B,QAAQ,EAAE;AAC7C,oCAAsB,KAAKC,MAAK;AAChC;AAAA,YACD;AAGA;AAAA,UACD;AAGA,cAAI,YAAY,UAAU,kBAAkB,MAAM,GAAG;AACpD,YAAAD,OAAM,6BAA6B,QAAQ,EAAE;AAC7C,kCAAsB,KAAKC,MAAK;AAChC,yBAAa;AAAA,UACd;AAAA,QACD,CAAC;AAGD,YAAI,CAAC,YAAY;AAChB,UAAAD,OAAM,iCAAiC,QAAQ,EAAE;AAGjD,UAAAG,OAAM,IAAI,UAAU,+BAA+B;AACnD,iBAAO;AAAA,QACR;AAGA,cAAM,aAAa,sBAAsB,SAAS;AAClD,YAAI,mBAAmBA,OAAM,IAAI,UAAU;AAE3C,YAAI,kBAAkB;AAErB,UAAAA,OAAM,IAAI,UAAU,gBAAgB;AAEpC,iBAAO;AAAA,QACR;AAKA,YAAI,cAAc,sBAAsB,OAAO,CAAC,QAAQF,WAAU;AACjE,cAAI;AACH,mBAAO,KAAK,kBAAkB,MAAM,EAAE;AAAA,cACrC;AAAA,cACA,KAAKA,MAAK;AAAA,YACX;AAAA,UACD,SAAS,iBAAiB;AACzB,+BAAmB,KAAKA,MAAK,GAAGA,QAAO,eAAe;AAAA,UACvD;AAAA,QACD,GAAG,CAAC,CAAC;AAEL,sBAAc,KAAK,kBAAkB,cAAc,EAAE,WAAW;AAEhE,2BAAmB,OAAO,OAAO;AAAA,UAChC,QAAQ;AAAA,UACR,QAAQ;AAAA,QACT,CAAC;AACD,QAAAE,OAAM,IAAI,UAAU,gBAAgB;AACpC,QAAAA,OAAM,IAAI,YAAY,gBAAgB;AAEtC,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,UAAU,UAAU;AACnB,eAAO,KAAK,oBAAoB,QAAQ,EAAE;AAAA,MAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,gBAAgB,UAAU;AACzB,eAAO,KAAK,oBAAoB,QAAQ,EAAE;AAAA,MAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,UAAU,UAAU;AACnB,eAAO,KAAK,cAAc,QAAQ;AAAA,MACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,cAAc,UAAU;AACvB,eAAO,KAAK,gBAAgB,QAAQ,MAAM;AAAA,MAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaA,mBAAmB,eAAe;AACjC,yBAAiB,IAAI;AAErB,cAAM,wBAAwB;AAAA,UAC7B;AAAA,UACA,KAAK;AAAA,UACL,KAAK;AAAA,QACN;AAGA,YAAI,0BAA0B,IAAI;AACjC,iBAAO;AAAA,QACR;AAEA,YAAI,oBAAoB,KAAK,qBAAqB,GAAG;AACpD,iBAAO;AAAA,QACR;AAGA,cAAMA,SAAQ,UAAU,IAAI,IAAI,EAAE;AAElC,YAAIA,OAAM,IAAI,qBAAqB,GAAG;AACrC,iBAAOA,OAAM,IAAI,qBAAqB;AAAA,QACvC;AAEA,cAAM,iBAAiB,sBAAsB,MAAM,GAAG;AACtD,YAAI,2BAA2B;AAC/B,YAAI;AAWJ,WAAG;AACF,sCAA4B,GAAG,eAAe,MAAM,CAAC;AAErD,mBAAS;AAAA,YACR,KAAK;AAAA,YACL,KAAK,MAAM,KAAK,KAAK,UAAU,wBAAwB;AAAA,YACvD;AAAA,YACA;AAAA,cACC,UAAU,KAAK;AAAA,cACf,MAAM,KAAK;AAAA,YACZ;AAAA,UACD;AAEA,UAAAA,OAAM,IAAI,0BAA0B,MAAM;AAAA,QAC3C,SAAS,CAAC,UAAU,eAAe;AAGnC,QAAAA,OAAM,IAAI,uBAAuB,MAAM;AAEvC,eAAO;AAAA,MACR;AAAA,IACD;AAEA,WAAO,eAAeL,UAAS,gBAAgB;AAAA,MAC9C,YAAY;AAAA,MACZ,KAAK,WAAY;AAAE,eAAO,aAAa;AAAA,MAAc;AAAA,IACtD,CAAC;AACD,IAAAA,SAAQ,cAAc;AACtB,IAAAA,SAAQ,oBAAoB;AAAA;AAAA;;;;;;;;;AapgD5B,eAAAS,SAAA;0CAAyBC,OAAzB,MAAA,IAAA,GAAA,OAAA,GAAA,OAAA,MAAA,QAAA;eAAA,IAAA,IAAA,UAAA,IAAA;;YACKA,KAAKC,SAAS,GAAG;eACf,CAAL,IAAUD,KAAK,CAAL,EAAQE,MAAM,GAAG,EAAjB;cACJC,KAAKH,KAAKC,SAAS;mBAChBG,IAAI,GAAGA,IAAID,IAAI,EAAEC,GAAG;iBACvBA,CAAL,IAAUJ,KAAKI,CAAL,EAAQF,MAAM,GAAG,EAAjB;;eAENC,EAAL,IAAWH,KAAKG,EAAL,EAASD,MAAM,CAAf;iBACJF,KAAKK,KAAK,EAAV;eACD;iBACCL,KAAK,CAAL;;;AAIT,eAAAM,OAAuBC,KAAvB;eACQ,QAAQA,MAAM;;AAGtB,eAAAC,OAAuBC,GAAvB;eACQA,MAAMC,SAAY,cAAeD,MAAM,OAAO,SAASE,OAAOC,UAAUC,SAASC,KAAKL,CAA/B,EAAkCM,MAAM,GAAxC,EAA6CC,IAA7C,EAAmDD,MAAM,GAAzD,EAA8DE,MAA9D,EAAsEC,YAAtE;;AAG/D,eAAAC,YAA4BZ,KAA5B;eACQA,IAAIY,YAAJ;;AAGR,eAAAC,QAAwBC,KAAxB;eACQA,QAAQX,UAAaW,QAAQ,OAAQA,eAAeC,QAAQD,MAAO,OAAOA,IAAIpB,WAAW,YAAYoB,IAAIN,SAASM,IAAIE,eAAeF,IAAIP,OAAO,CAACO,GAAD,IAAQC,MAAMV,UAAUV,MAAMY,KAAKO,GAA3B,IAAoC,CAAA;;AAIpM,eAAAG,QAAuBC,QAAgBC,QAAvC;YACOL,MAAMI;YACRC,QAAQ;mBACAC,OAAOD,QAAQ;gBACrBC,GAAJ,IAAWD,OAAOC,GAAP;;;eAGNN;;ADnCR,eAAAO,UAA0BC,QAA1B;YAEEC,UAAU,YACVC,MAAM,WACNC,UAAU,SACVC,WAAW,WACXC,YAAWnC,OAAMiC,SAAS,UAAf,UACJ,WACPG,OAAO,WACPC,gBAAe9B,OAAOA,OAAO,YAAY4B,YAAW,MAAMA,YAAWA,YAAW,MAAMA,YAAWA,SAA3E,IAAuF,MAAM5B,OAAO,gBAAgB4B,YAAW,MAAMA,YAAWA,SAAnD,IAA+D,MAAM5B,OAAO,MAAM4B,YAAWA,SAAxB,CAAzK,kBACA,2BACfG,eAAe,uCACfC,aAAavC,OAAMwC,cAAcF,YAApB,GACbG,YAAYX,SAAQ,gFAAgF,mBACvFA,SAAQ,sBAAsB,sBAC5B9B,OAAM+B,SAASE,SAAS,kBAAkBQ,SAA1C,GACfC,UAAUnC,OAAOwB,UAAU/B,OAAM+B,SAASE,SAAS,aAAxB,IAAyC,GAA1D,GACVU,YAAYpC,OAAOA,OAAO8B,gBAAe,MAAMrC,OAAM4C,eAAcN,cAAc,OAAlC,CAA5B,IAA0E,GAAjF,GACZO,aAAatC,OAAOA,OAAO,SAAP,IAAoB,MAAMA,OAAO,WAAW0B,OAAlB,IAA6B,MAAM1B,OAAO,MAAM0B,UAAUA,OAAvB,IAAkC,MAAM1B,OAAO,UAAU0B,OAAjB,IAA4B,MAAMA,OAA9I,GACba,qBAAqBvC,OAAOA,OAAO,SAAP,IAAoB,MAAMA,OAAO,WAAW0B,OAAlB,IAA6B,MAAM1B,OAAO,MAAM0B,UAAUA,OAAvB,IAAkC,MAAM1B,OAAO,YAAY0B,OAAnB,IAA8B,UAAUA,OAApJ,kBACN1B,OAAOuC,qBAAqB,QAAQA,qBAAqB,QAAQA,qBAAqB,QAAQA,kBAA9F,GACfC,OAAOxC,OAAO4B,YAAW,OAAlB,GACPa,QAAQzC,OAAOA,OAAOwC,OAAO,QAAQA,IAAtB,IAA8B,MAAME,YAA3C,GACRC,gBAAgB3C,OAAmEA,OAAOwC,OAAO,KAAd,IAAuB,QAAQC,KAAlG,mBACAzC,OAAwD,WAAWA,OAAOwC,OAAO,KAAd,IAAuB,QAAQC,KAAlG,mBACAzC,OAAOA,OAAwCwC,IAAxC,IAAgD,YAAYxC,OAAOwC,OAAO,KAAd,IAAuB,QAAQC,KAAlG,mBACAzC,OAAOA,OAAOA,OAAOwC,OAAO,KAAd,IAAuB,UAAUA,IAAxC,IAAgD,YAAYxC,OAAOwC,OAAO,KAAd,IAAuB,QAAQC,KAAlG,mBACAzC,OAAOA,OAAOA,OAAOwC,OAAO,KAAd,IAAuB,UAAUA,IAAxC,IAAgD,YAAYxC,OAAOwC,OAAO,KAAd,IAAuB,QAAQC,KAAlG,mBACAzC,OAAOA,OAAOA,OAAOwC,OAAO,KAAd,IAAuB,UAAUA,IAAxC,IAAgD,YAAmBA,OAAO,QAAiBC,KAAlG,mBACAzC,OAAOA,OAAOA,OAAOwC,OAAO,KAAd,IAAuB,UAAUA,IAAxC,IAAgD,YAA2CC,KAAlG,mBACAzC,OAAOA,OAAOA,OAAOwC,OAAO,KAAd,IAAuB,UAAUA,IAAxC,IAAgD,YAA2CA,IAAlG,mBACAxC,OAAOA,OAAOA,OAAOwC,OAAO,KAAd,IAAuB,UAAUA,IAAxC,IAAgD,SAAvD,kBACDxC,OAAO,CAAC2C,eAAeC,eAAeC,eAAeC,eAAeC,eAAeC,eAAeC,eAAeC,eAAeC,aAAzH,EAAwIpD,KAAK,GAA7I,CAAP,GACfqD,UAAUpD,OAAOA,OAAOqC,gBAAe,MAAMP,aAA5B,IAA4C,GAAnD,gBACG9B,OAAOqD,eAAe,UAAUD,OAAhC,wBACQpD,OAAOqD,eAAerD,OAAO,iBAAiB4B,YAAW,MAAnC,IAA6CwB,OAAnE,gBACRpD,OAAO,SAAS4B,YAAW,SAASnC,OAAM4C,eAAcN,cAAc,OAAlC,IAA6C,GAAjF,GACbuB,cAActD,OAAO,QAAQA,OAAOuD,qBAAqB,MAAMF,eAAe,MAAMG,UAAvD,IAAqE,KAApF,eACFxD,OAAOA,OAAO8B,gBAAe,MAAMrC,OAAM4C,eAAcN,YAApB,CAA5B,IAAiE,GAAxE,GACZ0B,QAAQzD,OAAOsD,cAAc,MAAMZ,eAAe,QAAQgB,YAAY,OAAYA,SAA1E,GACRC,QAAQ3D,OAAO0B,UAAU,GAAjB,GACRkC,aAAa5D,OAAOA,OAAOoC,YAAY,GAAnB,IAA0B,MAAMqB,QAAQzD,OAAO,QAAQ2D,KAAf,IAAwB,GAAvE,GACbE,SAAS7D,OAAO8B,gBAAe,MAAMrC,OAAM4C,eAAcN,cAAc,UAAlC,CAA5B,GACT+B,WAAW9D,OAAO6D,SAAS,GAAhB,GACXE,cAAc/D,OAAO6D,SAAS,GAAhB,GACdG,iBAAiBhE,OAAOA,OAAO8B,gBAAe,MAAMrC,OAAM4C,eAAcN,cAAc,OAAlC,CAA5B,IAA0E,GAAjF,GACjBkC,gBAAgBjE,OAAOA,OAAO,QAAQ8D,QAAf,IAA2B,GAAlC,GAChBI,iBAAiBlE,OAAO,QAAQA,OAAO+D,cAAcE,aAArB,IAAsC,GAArD,oBACAjE,OAAOgE,iBAAiBC,aAAxB,oBACAjE,OAAO+D,cAAcE,aAArB,iBACH,QAAQJ,SAAS,KAC/BM,QAAQnE,OAAOiE,gBAAgB,MAAMC,iBAAiB,MAAME,iBAAiB,MAAMC,iBAAiB,MAAMC,WAAlG,GACRC,SAASvE,OAAOA,OAAO6D,SAAS,MAAMpE,OAAM,YAAY+E,UAAlB,CAAtB,IAAuD,GAA9D,GACTC,YAAYzE,OAAOA,OAAO6D,SAAS,WAAhB,IAA+B,GAAtC,GACZa,aAAa1E,OAAOA,OAAO,WAAW4D,aAAaK,aAA/B,IAAgD,MAAMC,iBAAiB,MAAMG,iBAAiB,MAAMC,WAA3G,GACbK,OAAO3E,OAAOmC,UAAU,QAAQuC,aAAa1E,OAAO,QAAQuE,MAAf,IAAyB,MAAMvE,OAAO,QAAQyE,SAAf,IAA4B,GAAjG,GACPG,iBAAiB5E,OAAOA,OAAO,WAAW4D,aAAaK,aAA/B,IAAgD,MAAMC,iBAAiB,MAAME,iBAAiB,MAAME,WAA3G,GACjBO,YAAY7E,OAAO4E,iBAAiB5E,OAAO,QAAQuE,MAAf,IAAyB,MAAMvE,OAAO,QAAQyE,SAAf,IAA4B,GAAnF,GACZK,iBAAiB9E,OAAO2E,OAAO,MAAME,SAApB,GACjBE,gBAAgB/E,OAAOmC,UAAU,QAAQuC,aAAa1E,OAAO,QAAQuE,MAAf,IAAyB,GAA/D,GAEhBS,eAAe,OAAO7C,UAAU,SAASnC,OAAOA,OAAO,YAAYA,OAAO,MAAMoC,YAAY,IAAzB,IAAiC,OAAOqB,QAAQ,MAAMzD,OAAO,SAAS2D,QAAQ,GAAxB,IAA+B,IAAxG,IAAgH,OAAOM,gBAAgB,MAAMC,iBAAiB,MAAMG,iBAAiB,MAAMC,cAAc,GAAhN,IAAuNtE,OAAO,SAASuE,SAAS,GAAzB,IAAgC,MAAMvE,OAAO,SAASyE,YAAY,GAA5B,IAAmC,MACzUQ,gBAAgB,WAAWjF,OAAOA,OAAO,YAAYA,OAAO,MAAMoC,YAAY,IAAzB,IAAiC,OAAOqB,QAAQ,MAAMzD,OAAO,SAAS2D,QAAQ,GAAxB,IAA+B,IAAxG,IAAgH,OAAOM,gBAAgB,MAAMC,iBAAiB,MAAME,iBAAiB,MAAME,cAAc,GAAhN,IAAuNtE,OAAO,SAASuE,SAAS,GAAzB,IAAgC,MAAMvE,OAAO,SAASyE,YAAY,GAA5B,IAAmC,MAC3TS,gBAAgB,OAAO/C,UAAU,SAASnC,OAAOA,OAAO,YAAYA,OAAO,MAAMoC,YAAY,IAAzB,IAAiC,OAAOqB,QAAQ,MAAMzD,OAAO,SAAS2D,QAAQ,GAAxB,IAA+B,IAAxG,IAAgH,OAAOM,gBAAgB,MAAMC,iBAAiB,MAAMG,iBAAiB,MAAMC,cAAc,GAAhN,IAAuNtE,OAAO,SAASuE,SAAS,GAAzB,IAAgC,MACjSY,eAAe,MAAMnF,OAAO,SAASyE,YAAY,GAA5B,IAAmC,MACxDW,iBAAiB,MAAMpF,OAAO,MAAMoC,YAAY,IAAzB,IAAiC,OAAOqB,QAAQ,MAAMzD,OAAO,SAAS2D,QAAQ,GAAxB,IAA+B;eAGtG;sBACO,IAAI0B,OAAO5F,OAAM,OAAO+B,SAASE,SAAS,aAA/B,GAA+C,GAA1D;wBACE,IAAI2D,OAAO5F,OAAM,aAAa4C,eAAcN,YAAjC,GAAgD,GAA3D;oBACJ,IAAIsD,OAAO5F,OAAM,mBAAmB4C,eAAcN,YAAvC,GAAsD,GAAjE;oBACA,IAAIsD,OAAO5F,OAAM,mBAAmB4C,eAAcN,YAAvC,GAAsD,GAAjE;6BACS,IAAIsD,OAAO5F,OAAM,gBAAgB4C,eAAcN,YAApC,GAAmD,GAA9D;qBACR,IAAIsD,OAAO5F,OAAM,UAAU4C,eAAcN,cAAc,kBAAkByC,UAA9D,GAA2E,GAAtF;wBACG,IAAIa,OAAO5F,OAAM,UAAU4C,eAAcN,cAAc,gBAA5C,GAA+D,GAA1E;kBACN,IAAIsD,OAAO5F,OAAM,OAAO4C,eAAcN,YAA3B,GAA0C,GAArD;sBACI,IAAIsD,OAAOhD,eAAc,GAAzB;uBACC,IAAIgD,OAAO5F,OAAM,UAAU4C,eAAcL,UAA9B,GAA2C,GAAtD;uBACA,IAAIqD,OAAOvD,eAAc,GAAzB;uBACA,IAAIuD,OAAO,OAAO3C,eAAe,IAAjC;uBACA,IAAI2C,OAAO,WAAWhC,eAAe,MAAMrD,OAAOA,OAAO,iBAAiB4B,YAAW,MAAnC,IAA6C,MAAMwB,UAAU,GAApE,IAA2E,QAAtH;;;;AAIhB,UAAA,eAAe9B,UAAU,KAAV;ADrFf,UAAA,eAAeA,UAAU,IAAV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ADAf,UAAMgE,SAAS;AAGf,UAAMC,QAAO;AACb,UAAMC,OAAO;AACb,UAAMC,OAAO;AACb,UAAMC,OAAO;AACb,UAAMC,OAAO;AACb,UAAMC,cAAc;AACpB,UAAMC,WAAW;AACjB,UAAMC,YAAY;AAGlB,UAAMC,gBAAgB;AACtB,UAAMC,gBAAgB;AACtB,UAAMC,kBAAkB;AAGxB,UAAMC,SAAS;oBACF;qBACC;yBACI;;AAIlB,UAAMC,gBAAgBZ,QAAOC;AAC7B,UAAMY,QAAQC,KAAKD;AACnB,UAAME,qBAAqBC,OAAOC;AAUlC,eAASC,QAAMC,MAAM;cACd,IAAIC,WAAWT,OAAOQ,IAAP,CAAf;;AAWP,eAASE,KAAIC,OAAOC,IAAI;YACjBC,SAAS,CAAA;YACXpH,SAASkH,MAAMlH;eACZA,UAAU;iBACTA,MAAP,IAAiBmH,GAAGD,MAAMlH,MAAN,CAAH;;eAEXoH;;AAaR,eAASC,UAAUC,SAAQH,IAAI;YACxBI,QAAQD,QAAOxG,MAAM,GAAb;YACVsG,SAAS;YACTG,MAAMvH,SAAS,GAAG;mBAGZuH,MAAM,CAAN,IAAW;oBACXA,MAAM,CAAN;;kBAGDD,QAAOE,QAAQlB,iBAAiB,GAAhC;YACHmB,SAASH,QAAOxG,MAAM,GAAb;YACT4G,UAAUT,KAAIQ,QAAQN,EAAZ,EAAgB/G,KAAK,GAArB;eACTgH,SAASM;;AAgBjB,eAASC,WAAWL,SAAQ;YACrBM,SAAS,CAAA;YACXC,UAAU;YACR7H,SAASsH,QAAOtH;eACf6H,UAAU7H,QAAQ;cAClB8H,SAAQR,QAAOS,WAAWF,SAAlB;cACVC,UAAS,SAAUA,UAAS,SAAUD,UAAU7H,QAAQ;gBAErDgI,QAAQV,QAAOS,WAAWF,SAAlB;iBACTG,QAAQ,UAAW,OAAQ;qBACxBC,OAAOH,SAAQ,SAAU,OAAOE,QAAQ,QAAS,KAAxD;mBACM;qBAGCC,KAAKH,MAAZ;;;iBAGK;mBACCG,KAAKH,MAAZ;;;eAGKF;;AAWR,UAAMM,aAAa,SAAbA,YAAa,OAAA;eAAStB,OAAOuB,cAAP,MAAA,QAAA,kBAAwBjB,KAAxB,CAAA;;AAW5B,UAAMkB,eAAe,SAAfA,cAAwBC,WAAW;YACpCA,YAAY,KAAO,IAAM;iBACrBA,YAAY;;YAEhBA,YAAY,KAAO,IAAM;iBACrBA,YAAY;;YAEhBA,YAAY,KAAO,IAAM;iBACrBA,YAAY;;eAEbzC;;AAcR,UAAM0C,eAAe,SAAfA,cAAwBC,OAAOC,MAAM;eAGnCD,QAAQ,KAAK,MAAMA,QAAQ,QAAQC,QAAQ,MAAM;;AAQzD,UAAMC,QAAQ,SAARA,OAAiBC,OAAOC,WAAWC,WAAW;YAC/CC,IAAI;gBACAD,YAAYnC,MAAMiC,QAAQ1C,IAAd,IAAsB0C,SAAS;iBAC1CjC,MAAMiC,QAAQC,SAAd;;;;UACqBD,QAAQlC,gBAAgBV,QAAQ;UAAG+C,KAAKjD;UAAM;kBACnEa,MAAMiC,QAAQlC,aAAd;;eAEFC,MAAMoC,KAAKrC,gBAAgB,KAAKkC,SAASA,QAAQ3C,KAAjD;;AAUR,UAAM+C,UAAS,SAATA,QAAkBC,OAAO;YAExBnB,SAAS,CAAA;YACToB,cAAcD,MAAM/I;YACtBiJ,IAAI;YACJC,IAAIhD;YACJiD,OAAOlD;YAMPmD,QAAQL,MAAMM,YAAYlD,SAAlB;YACRiD,QAAQ,GAAG;kBACN;;iBAGAE,IAAI,GAAGA,IAAIF,OAAO,EAAEE,GAAG;cAE3BP,MAAMhB,WAAWuB,CAAjB,KAAuB,KAAM;oBAC1B,WAAN;;iBAEMrB,KAAKc,MAAMhB,WAAWuB,CAAjB,CAAZ;;iBAMQC,SAAQH,QAAQ,IAAIA,QAAQ,IAAI,GAAGG,SAAQP,eAAwC;cAOvFQ,OAAOP;;gBACFQ,IAAI,GAAGZ,IAAIjD;;;YAA0BiD,KAAKjD;YAAM;gBAEpD2D,UAASP,aAAa;sBACnB,eAAN;;gBAGKT,QAAQH,aAAaW,MAAMhB,WAAWwB,QAAjB,CAAb;gBAEVhB,SAAS3C,SAAQ2C,QAAQ9B,OAAOd,SAASsD,KAAKQ,CAArB,GAAyB;sBAC/C,UAAN;;iBAGIlB,QAAQkB;gBACPC,IAAIb,KAAKM,OAAOtD,OAAQgD,KAAKM,OAAOrD,OAAOA,OAAO+C,IAAIM;gBAExDZ,QAAQmB,GAAG;;;gBAITC,aAAa/D,QAAO8D;gBACtBD,IAAIhD,MAAMd,SAASgE,UAAf,GAA4B;sBAC7B,UAAN;;iBAGIA;;cAIAC,MAAMhC,OAAO5H,SAAS;iBACrByI,MAAMQ,IAAIO,MAAMI,KAAKJ,QAAQ,CAA7B;cAIH/C,MAAMwC,IAAIW,GAAV,IAAiBjE,SAASuD,GAAG;oBAC1B,UAAN;;eAGIzC,MAAMwC,IAAIW,GAAV;eACAA;iBAGEC,OAAOZ,KAAK,GAAGC,CAAtB;;eAIMtC,OAAOuB,cAAP,MAAA,QAAwBP,MAAxB;;AAUR,UAAMkC,SAAS,SAATA,QAAkBf,OAAO;YACxBnB,SAAS,CAAA;gBAGPD,WAAWoB,KAAX;YAGJC,cAAcD,MAAM/I;YAGpBkJ,IAAIhD;YACJwC,QAAQ;YACRS,OAAOlD;;;;;+BAGgB8C,MAA3B,OAAA,QAAA,EAAA,GAAA,OAAA,EAAA,6BAAA,QAAA,UAAA,KAAA,GAAA,OAAA,4BAAA,MAAkC;gBAAvBgB,iBAAuB,MAAA;gBAC7BA,iBAAe,KAAM;qBACjB9B,KAAKtB,mBAAmBoD,cAAnB,CAAZ;;;;;;;;;;;;;;;;;YAIEC,cAAcpC,OAAO5H;YACrBiK,iBAAiBD;YAMjBA,aAAa;iBACT/B,KAAK9B,SAAZ;;eAIM8D,iBAAiBjB,aAAa;cAIhCkB,IAAIvE;;;;;kCACmBoD,MAA3B,OAAA,QAAA,EAAA,GAAA,QAAA,EAAA,8BAAA,SAAA,WAAA,KAAA,GAAA,OAAA,6BAAA,MAAkC;kBAAvBgB,eAAuB,OAAA;kBAC7BA,gBAAgBb,KAAKa,eAAeG,GAAG;oBACtCH;;;;;;;;;;;;;;;;;cAMAI,wBAAwBF,iBAAiB;cAC3CC,IAAIhB,IAAIzC,OAAOd,SAAS+C,SAASyB,qBAAzB,GAAiD;oBACtD,UAAN;;oBAGSD,IAAIhB,KAAKiB;cACfD;;;;;kCAEuBnB,MAA3B,OAAA,QAAA,EAAA,GAAA,QAAA,EAAA,8BAAA,SAAA,WAAA,KAAA,GAAA,OAAA,6BAAA,MAAkC;kBAAvBgB,gBAAuB,OAAA;kBAC7BA,gBAAeb,KAAK,EAAER,QAAQ/C,QAAQ;wBACnC,UAAN;;kBAEGoE,iBAAgBb,GAAG;oBAElBkB,IAAI1B;;sBACCG,IAAIjD;;;kBAA0BiD,KAAKjD;kBAAM;sBAC3C8D,IAAIb,KAAKM,OAAOtD,OAAQgD,KAAKM,OAAOrD,OAAOA,OAAO+C,IAAIM;sBACxDiB,IAAIV,GAAG;;;sBAGLW,UAAUD,IAAIV;sBACdC,aAAa/D,QAAO8D;yBACnBzB,KACNtB,mBAAmB2B,aAAaoB,IAAIW,UAAUV,YAAY,CAAvC,CAAnB,CADD;sBAGIlD,MAAM4D,UAAUV,UAAhB;;uBAGE1B,KAAKtB,mBAAmB2B,aAAa8B,GAAG,CAAhB,CAAnB,CAAZ;uBACO3B,MAAMC,OAAOyB,uBAAuBF,kBAAkBD,WAAtD;wBACC;kBACNC;;;;;;;;;;;;;;;;;YAIFvB;YACAQ;;eAGItB,OAAOxH,KAAK,EAAZ;;AAcR,UAAMkK,YAAY,SAAZA,WAAqBvB,OAAO;eAC1B1B,UAAU0B,OAAO,SAASzB,SAAQ;iBACjClB,cAAcmE,KAAKjD,OAAnB,IACJwB,QAAOxB,QAAOrH,MAAM,CAAb,EAAgBgB,YAAhB,CAAP,IACAqG;SAHG;;AAkBR,UAAMkD,UAAU,SAAVA,SAAmBzB,OAAO;eACxB1B,UAAU0B,OAAO,SAASzB,SAAQ;iBACjCjB,cAAckE,KAAKjD,OAAnB,IACJ,SAASwC,OAAOxC,OAAP,IACTA;SAHG;;AAUR,UAAMmD,WAAW;;;;;;mBAML;;;;;;;;gBAQH;oBACG9C;oBACAO;;kBAEDY;kBACAgB;mBACCU;qBACEF;;AD5VP,UAAMI,UAA6C,CAAA;AAE1D,eAAAC,WAA2BC,KAA3B;YACOC,IAAID,IAAI7C,WAAW,CAAf;YACN+C,IAAAA;YAEAD,IAAI,GAAIC,KAAI,OAAOD,EAAEjK,SAAS,EAAX,EAAeM,YAAf;iBACd2J,IAAI,IAAKC,KAAI,MAAMD,EAAEjK,SAAS,EAAX,EAAeM,YAAf;iBACnB2J,IAAI,KAAMC,KAAI,OAAQD,KAAK,IAAK,KAAKjK,SAAS,EAA1B,EAA8BM,YAA9B,IAA8C,OAAQ2J,IAAI,KAAM,KAAKjK,SAAS,EAA1B,EAA8BM,YAA9B;YAC5E4J,KAAI,OAAQD,KAAK,KAAM,KAAKjK,SAAS,EAA3B,EAA+BM,YAA/B,IAA+C,OAAS2J,KAAK,IAAK,KAAM,KAAKjK,SAAS,EAAjC,EAAqCM,YAArC,IAAqD,OAAQ2J,IAAI,KAAM,KAAKjK,SAAS,EAA1B,EAA8BM,YAA9B;eAExH4J;;AAGR,eAAAC,YAA4BzK,KAA5B;YACK0K,SAAS;YACT/B,IAAI;YACFgC,KAAK3K,IAAIN;eAERiJ,IAAIgC,IAAI;cACRJ,IAAIK,SAAS5K,IAAI6K,OAAOlC,IAAI,GAAG,CAAlB,GAAsB,EAA/B;cAEN4B,IAAI,KAAK;sBACFjE,OAAOC,aAAagE,CAApB;iBACL;qBAEGA,KAAK,OAAOA,IAAI,KAAK;gBACxBI,KAAKhC,KAAM,GAAG;kBACZmC,KAAKF,SAAS5K,IAAI6K,OAAOlC,IAAI,GAAG,CAAlB,GAAsB,EAA/B;wBACDrC,OAAOC,cAAegE,IAAI,OAAO,IAAMO,KAAK,EAA5C;mBACJ;wBACI9K,IAAI6K,OAAOlC,GAAG,CAAd;;iBAEN;qBAEG4B,KAAK,KAAK;gBACbI,KAAKhC,KAAM,GAAG;kBACZmC,KAAKF,SAAS5K,IAAI6K,OAAOlC,IAAI,GAAG,CAAlB,GAAsB,EAA/B;kBACLoC,KAAKH,SAAS5K,IAAI6K,OAAOlC,IAAI,GAAG,CAAlB,GAAsB,EAA/B;wBACDrC,OAAOC,cAAegE,IAAI,OAAO,MAAQO,KAAK,OAAO,IAAMC,KAAK,EAAhE;mBACJ;wBACI/K,IAAI6K,OAAOlC,GAAG,CAAd;;iBAEN;iBAED;sBACM3I,IAAI6K,OAAOlC,GAAG,CAAd;iBACL;;;eAIA+B;;AAGR,eAAAM,4BAAqCC,YAA0BC,UAA/D;iBACAC,kBAA2BnL,KAA3B;cACQoL,SAASX,YAAYzK,GAAZ;iBACP,CAACoL,OAAOC,MAAMH,SAASI,UAAtB,IAAoCtL,MAAMoL;;YAGhDH,WAAWM,OAAQN,YAAWM,SAASjF,OAAO2E,WAAWM,MAAlB,EAA0BrE,QAAQgE,SAASM,aAAaL,iBAAxD,EAA0ExK,YAA1E,EAAwFuG,QAAQgE,SAASO,YAAY,EAArH;YACvCR,WAAWS,aAAavL,OAAW8K,YAAWS,WAAWpF,OAAO2E,WAAWS,QAAlB,EAA4BxE,QAAQgE,SAASM,aAAaL,iBAA1D,EAA4EjE,QAAQgE,SAASS,cAActB,UAA3G,EAAuHnD,QAAQgE,SAASM,aAAa5K,WAArJ;YACzDqK,WAAWW,SAASzL,OAAW8K,YAAWW,OAAOtF,OAAO2E,WAAWW,IAAlB,EAAwB1E,QAAQgE,SAASM,aAAaL,iBAAtD,EAAwExK,YAAxE,EAAsFuG,QAAQgE,SAASW,UAAUxB,UAAjH,EAA6HnD,QAAQgE,SAASM,aAAa5K,WAA3J;YACjDqK,WAAWa,SAAS3L,OAAW8K,YAAWa,OAAOxF,OAAO2E,WAAWa,IAAlB,EAAwB5E,QAAQgE,SAASM,aAAaL,iBAAtD,EAAwEjE,QAAS+D,WAAWM,SAASL,SAASa,WAAWb,SAASc,mBAAoB3B,UAAtJ,EAAkKnD,QAAQgE,SAASM,aAAa5K,WAAhM;YACjDqK,WAAWgB,UAAU9L,OAAW8K,YAAWgB,QAAQ3F,OAAO2E,WAAWgB,KAAlB,EAAyB/E,QAAQgE,SAASM,aAAaL,iBAAvD,EAAyEjE,QAAQgE,SAASgB,WAAW7B,UAArG,EAAiHnD,QAAQgE,SAASM,aAAa5K,WAA/I;YACnDqK,WAAWkB,aAAahM,OAAW8K,YAAWkB,WAAW7F,OAAO2E,WAAWkB,QAAlB,EAA4BjF,QAAQgE,SAASM,aAAaL,iBAA1D,EAA4EjE,QAAQgE,SAASkB,cAAc/B,UAA3G,EAAuHnD,QAAQgE,SAASM,aAAa5K,WAArJ;eAEtDqK;;AAGR,eAAAoB,mBAA4BrM,KAA5B;eACQA,IAAIkH,QAAQ,WAAW,IAAvB,KAAgC;;AAGxC,eAAAoF,eAAwBV,MAAaV,UAArC;YACOqB,UAAUX,KAAKP,MAAMH,SAASsB,WAApB,KAAoC,CAAA;qCAChCD,SAFrB,CAAA,GAEUE,UAFV,SAAA,CAAA;YAIKA,SAAS;iBACLA,QAAQjM,MAAM,GAAd,EAAmBmG,IAAI0F,kBAAvB,EAA2CvM,KAAK,GAAhD;eACD;iBACC8L;;;AAIT,eAAAc,eAAwBd,MAAaV,UAArC;YACOqB,UAAUX,KAAKP,MAAMH,SAASyB,WAApB,KAAoC,CAAA;sCAC1BJ,SAF3B,CAAA,GAEUE,UAFV,UAAA,CAAA,GAEmBG,OAFnB,UAAA,CAAA;YAIKH,SAAS;sCACUA,QAAQ9L,YAAR,EAAsBH,MAAM,IAA5B,EAAkCqM,QAAlC,qEAAfC,OADK,uBAAA,CAAA,GACCC,SADD,uBAAA,CAAA;cAENC,cAAcD,SAAQA,OAAMvM,MAAM,GAAZ,EAAiBmG,IAAI0F,kBAArB,IAA2C,CAAA;cACjEY,aAAaH,KAAKtM,MAAM,GAAX,EAAgBmG,IAAI0F,kBAApB;cACba,yBAAyBhC,SAASsB,YAAYvC,KAAKgD,WAAWA,WAAWvN,SAAS,CAA/B,CAA1B;cACzByN,aAAaD,yBAAyB,IAAI;cAC1CE,kBAAkBH,WAAWvN,SAASyN;cACtCE,SAAStM,MAAcoM,UAAd;mBAENtN,IAAI,GAAGA,IAAIsN,YAAY,EAAEtN,GAAG;mBAC7BA,CAAP,IAAYmN,YAAYnN,CAAZ,KAAkBoN,WAAWG,kBAAkBvN,CAA7B,KAAmC;;cAG9DqN,wBAAwB;mBACpBC,aAAa,CAApB,IAAyBb,eAAee,OAAOF,aAAa,CAApB,GAAwBjC,QAAvC;;cAGpBoC,gBAAgBD,OAAOE,OAA4C,SAACC,KAAKC,OAAOxE,QAAxF;gBACO,CAACwE,SAASA,UAAU,KAAK;kBACtBC,cAAcF,IAAIA,IAAI9N,SAAS,CAAjB;kBAChBgO,eAAeA,YAAYzE,QAAQyE,YAAYhO,WAAWuJ,QAAO;4BACxDvJ;qBACN;oBACFiI,KAAK,EAAEsB,OAAAA,QAAOvJ,QAAS,EAAlB,CAAT;;;mBAGK8N;aACL,CAAA,CAVmB;cAYhBG,oBAAoBL,cAAcM,KAAK,SAACC,GAAGC,GAAJ;mBAAUA,EAAEpO,SAASmO,EAAEnO;WAA1C,EAAkD,CAAlD;cAEtBqO,UAAAA;cACAJ,qBAAqBA,kBAAkBjO,SAAS,GAAG;gBAChDsO,WAAWX,OAAO1N,MAAM,GAAGgO,kBAAkB1E,KAAlC;gBACXgF,UAAUZ,OAAO1N,MAAMgO,kBAAkB1E,QAAQ0E,kBAAkBjO,MAAzD;sBACNsO,SAASlO,KAAK,GAAd,IAAqB,OAAOmO,QAAQnO,KAAK,GAAb;iBAChC;sBACIuN,OAAOvN,KAAK,GAAZ;;cAGP8M,MAAM;uBACE,MAAMA;;iBAGXmB;eACD;iBACCnC;;;AAIT,UAAMsC,YAAY;AAClB,UAAMC,wBAA4C,GAAI9C,MAAM,OAAX,EAAqB,CAArB,MAA4BlL;AAE7E,eAAAiO,OAAsBC,WAAtB;YAAwCC,UAAxC,UAAA,SAAA,KAAA,UAAA,CAAA,MAAA,SAAA,UAAA,CAAA,IAA6D,CAAA;YACtDrD,aAA2B,CAAA;YAC3BC,WAAYoD,QAAQC,QAAQ,QAAQC,eAAeC;YAErDH,QAAQI,cAAc,SAAUL,cAAaC,QAAQ/C,SAAS+C,QAAQ/C,SAAS,MAAM,MAAM,OAAO8C;YAEhG9B,UAAU8B,UAAUhD,MAAM6C,SAAhB;YAEZ3B,SAAS;cACR4B,uBAAuB;uBAEf5C,SAASgB,QAAQ,CAAR;uBACTb,WAAWa,QAAQ,CAAR;uBACXX,OAAOW,QAAQ,CAAR;uBACPoC,OAAO/D,SAAS2B,QAAQ,CAAR,GAAY,EAArB;uBACPT,OAAOS,QAAQ,CAAR,KAAc;uBACrBN,QAAQM,QAAQ,CAAR;uBACRJ,WAAWI,QAAQ,CAAR;gBAGlBqC,MAAM3D,WAAW0D,IAAjB,GAAwB;yBAChBA,OAAOpC,QAAQ,CAAR;;iBAEb;uBAEKhB,SAASgB,QAAQ,CAAR,KAAcpM;uBACvBuL,WAAY2C,UAAUQ,QAAQ,GAAlB,MAA2B,KAAKtC,QAAQ,CAAR,IAAapM;uBACzDyL,OAAQyC,UAAUQ,QAAQ,IAAlB,MAA4B,KAAKtC,QAAQ,CAAR,IAAapM;uBACtDwO,OAAO/D,SAAS2B,QAAQ,CAAR,GAAY,EAArB;uBACPT,OAAOS,QAAQ,CAAR,KAAc;uBACrBN,QAASoC,UAAUQ,QAAQ,GAAlB,MAA2B,KAAKtC,QAAQ,CAAR,IAAapM;uBACtDgM,WAAYkC,UAAUQ,QAAQ,GAAlB,MAA2B,KAAKtC,QAAQ,CAAR,IAAapM;gBAGhEyO,MAAM3D,WAAW0D,IAAjB,GAAwB;yBAChBA,OAAQN,UAAUhD,MAAM,+BAAhB,IAAmDkB,QAAQ,CAAR,IAAapM;;;cAIjF8K,WAAWW,MAAM;uBAETA,OAAOc,eAAeJ,eAAerB,WAAWW,MAAMV,QAAhC,GAA2CA,QAA1D;;cAIfD,WAAWM,WAAWpL,UAAa8K,WAAWS,aAAavL,UAAa8K,WAAWW,SAASzL,UAAa8K,WAAW0D,SAASxO,UAAa,CAAC8K,WAAWa,QAAQb,WAAWgB,UAAU9L,QAAW;uBACtLuO,YAAY;qBACbzD,WAAWM,WAAWpL,QAAW;uBAChCuO,YAAY;qBACbzD,WAAWkB,aAAahM,QAAW;uBAClCuO,YAAY;iBACjB;uBACKA,YAAY;;cAIpBJ,QAAQI,aAAaJ,QAAQI,cAAc,YAAYJ,QAAQI,cAAczD,WAAWyD,WAAW;uBAC3FlI,QAAQyE,WAAWzE,SAAS,kBAAkB8H,QAAQI,YAAY;;cAIxEI,gBAAgB1E,SAASkE,QAAQ/C,UAAUN,WAAWM,UAAU,IAAI5K,YAA5C,CAAR;cAGlB,CAAC2N,QAAQS,mBAAmB,CAACD,iBAAiB,CAACA,cAAcC,iBAAiB;gBAE7E9D,WAAWW,SAAS0C,QAAQU,cAAeF,iBAAiBA,cAAcE,aAAc;kBAEvF;2BACQpD,OAAOzB,SAASD,QAAQe,WAAWW,KAAK1E,QAAQgE,SAASM,aAAaf,WAA9C,EAA2D9J,YAA3D,CAAjB;uBACV6J,GAAG;2BACAhE,QAAQyE,WAAWzE,SAAS,oEAAoEgE;;;wCAIjFS,YAAYwD,YAAxC;iBACM;wCAEsBxD,YAAYC,QAAxC;;cAIG4D,iBAAiBA,cAAcV,OAAO;0BAC3BA,MAAMnD,YAAYqD,OAAhC;;eAEK;qBACK9H,QAAQyE,WAAWzE,SAAS;;eAGjCyE;;AAGR,eAAAgE,oBAA6BhE,YAA0BqD,SAAvD;YACOpD,WAAYoD,QAAQC,QAAQ,QAAQC,eAAeC;YACnDS,YAA0B,CAAA;YAE5BjE,WAAWS,aAAavL,QAAW;oBAC5BwH,KAAKsD,WAAWS,QAA1B;oBACU/D,KAAK,GAAf;;YAGGsD,WAAWW,SAASzL,QAAW;oBAExBwH,KAAK+E,eAAeJ,eAAehG,OAAO2E,WAAWW,IAAlB,GAAyBV,QAAxC,GAAmDA,QAAlE,EAA4EhE,QAAQgE,SAASyB,aAAa,SAACwC,GAAGC,IAAIC,IAAR;mBAAe,MAAMD,MAAMC,KAAK,QAAQA,KAAK,MAAM;WAA7J,CAAf;;YAGG,OAAOpE,WAAW0D,SAAS,YAAY,OAAO1D,WAAW0D,SAAS,UAAU;oBACrEhH,KAAK,GAAf;oBACUA,KAAKrB,OAAO2E,WAAW0D,IAAlB,CAAf;;eAGMO,UAAUxP,SAASwP,UAAUpP,KAAK,EAAf,IAAqBK;;AAGhD,UAAMmP,OAAO;AACb,UAAMC,OAAO;AACb,UAAMC,OAAO;AAEb,UAAMC,OAAO;AAEb,eAAAC,kBAAkCjH,OAAlC;YACOnB,SAAuB,CAAA;eAEtBmB,MAAM/I,QAAQ;cAChB+I,MAAM4C,MAAMiE,IAAZ,GAAmB;oBACd7G,MAAMvB,QAAQoI,MAAM,EAApB;qBACE7G,MAAM4C,MAAMkE,IAAZ,GAAmB;oBACrB9G,MAAMvB,QAAQqI,MAAM,GAApB;qBACE9G,MAAM4C,MAAMmE,IAAZ,GAAmB;oBACrB/G,MAAMvB,QAAQsI,MAAM,GAApB;mBACD/O,IAAP;qBACUgI,UAAU,OAAOA,UAAU,MAAM;oBACnC;iBACF;gBACAkH,KAAKlH,MAAM4C,MAAMoE,IAAZ;gBACPE,IAAI;kBACDC,IAAID,GAAG,CAAH;sBACFlH,MAAM9I,MAAMiQ,EAAElQ,MAAd;qBACDiI,KAAKiI,CAAZ;mBACM;oBACA,IAAIC,MAAM,kCAAV;;;;eAKFvI,OAAOxH,KAAK,EAAZ;;AAGR,eAAAgQ,WAA0B7E,YAA1B;YAAoDqD,UAApD,UAAA,SAAA,KAAA,UAAA,CAAA,MAAA,SAAA,UAAA,CAAA,IAAyE,CAAA;YAClEpD,WAAYoD,QAAQC,MAAMC,eAAeC;YACzCS,YAA0B,CAAA;YAG1BJ,gBAAgB1E,SAASkE,QAAQ/C,UAAUN,WAAWM,UAAU,IAAI5K,YAA5C,CAAR;YAGlBmO,iBAAiBA,cAAcgB,UAAWhB,eAAcgB,UAAU7E,YAAYqD,OAApC;YAE1CrD,WAAWW,MAAM;cAEhBV,SAASyB,YAAY1C,KAAKgB,WAAWW,IAArC,GAA4C;UAAA,WAKvC0C,QAAQU,cAAeF,iBAAiBA,cAAcE,YAAa;gBAEvE;yBACQpD,OAAQ,CAAC0C,QAAQC,MAAMpE,SAASD,QAAQe,WAAWW,KAAK1E,QAAQgE,SAASM,aAAaf,WAA9C,EAA2D9J,YAA3D,CAAjB,IAA6FwJ,SAASH,UAAUiB,WAAWW,IAA9B;qBACvHpB,GAAG;yBACAhE,QAAQyE,WAAWzE,SAAS,iDAAiD,CAAC8H,QAAQC,MAAM,UAAU,aAAa,oBAAoB/D;;;;oCAMzHS,YAAYC,QAAxC;YAEIoD,QAAQI,cAAc,YAAYzD,WAAWM,QAAQ;oBAC9C5D,KAAKsD,WAAWM,MAA1B;oBACU5D,KAAK,GAAf;;YAGKoI,YAAYd,oBAAoBhE,YAAYqD,OAAhC;YACdyB,cAAc5P,QAAW;cACxBmO,QAAQI,cAAc,UAAU;sBACzB/G,KAAK,IAAf;;oBAGSA,KAAKoI,SAAf;cAEI9E,WAAWa,QAAQb,WAAWa,KAAKkE,OAAO,CAAvB,MAA8B,KAAK;sBAC/CrI,KAAK,GAAf;;;YAIEsD,WAAWa,SAAS3L,QAAW;cAC9ByP,IAAI3E,WAAWa;cAEf,CAACwC,QAAQ2B,iBAAiB,CAACnB,iBAAiB,CAACA,cAAcmB,eAAe;gBACzEP,kBAAkBE,CAAlB;;cAGDG,cAAc5P,QAAW;gBACxByP,EAAE1I,QAAQ,SAAS,MAAnB;;oBAGKS,KAAKiI,CAAf;;YAGG3E,WAAWgB,UAAU9L,QAAW;oBACzBwH,KAAK,GAAf;oBACUA,KAAKsD,WAAWgB,KAA1B;;YAGGhB,WAAWkB,aAAahM,QAAW;oBAC5BwH,KAAK,GAAf;oBACUA,KAAKsD,WAAWkB,QAA1B;;eAGM+C,UAAUpP,KAAK,EAAf;;AAGR,eAAAoQ,kBAAkC5K,OAAoB6K,UAAtD;YAA8E7B,UAA9E,UAAA,SAAA,KAAA,UAAA,CAAA,MAAA,SAAA,UAAA,CAAA,IAAmG,CAAA;YAAI8B,oBAAvG,UAAA,CAAA;YACOlP,SAAuB,CAAA;YAEzB,CAACkP,mBAAmB;kBAChBhC,OAAM0B,WAAUxK,OAAMgJ,OAAhB,GAA0BA,OAAhC;qBACIF,OAAM0B,WAAUK,UAAU7B,OAApB,GAA8BA,OAApC;;kBAEFA,WAAW,CAAA;YAEjB,CAACA,QAAQ+B,YAAYF,SAAS5E,QAAQ;iBAClCA,SAAS4E,SAAS5E;iBAElBG,WAAWyE,SAASzE;iBACpBE,OAAOuE,SAASvE;iBAChB+C,OAAOwB,SAASxB;iBAChB7C,OAAO4D,kBAAkBS,SAASrE,QAAQ,EAAnC;iBACPG,QAAQkE,SAASlE;eAClB;cACFkE,SAASzE,aAAavL,UAAagQ,SAASvE,SAASzL,UAAagQ,SAASxB,SAASxO,QAAW;mBAE3FuL,WAAWyE,SAASzE;mBACpBE,OAAOuE,SAASvE;mBAChB+C,OAAOwB,SAASxB;mBAChB7C,OAAO4D,kBAAkBS,SAASrE,QAAQ,EAAnC;mBACPG,QAAQkE,SAASlE;iBAClB;gBACF,CAACkE,SAASrE,MAAM;qBACZA,OAAOxG,MAAKwG;kBACfqE,SAASlE,UAAU9L,QAAW;uBAC1B8L,QAAQkE,SAASlE;qBAClB;uBACCA,QAAQ3G,MAAK2G;;mBAEf;kBACFkE,SAASrE,KAAKkE,OAAO,CAArB,MAA4B,KAAK;uBAC7BlE,OAAO4D,kBAAkBS,SAASrE,IAA3B;qBACR;qBACDxG,MAAKoG,aAAavL,UAAamF,MAAKsG,SAASzL,UAAamF,MAAKqJ,SAASxO,WAAc,CAACmF,MAAKwG,MAAM;yBAC/FA,OAAO,MAAMqE,SAASrE;2BACnB,CAACxG,MAAKwG,MAAM;yBACfA,OAAOqE,SAASrE;uBACjB;yBACCA,OAAOxG,MAAKwG,KAAKnM,MAAM,GAAG2F,MAAKwG,KAAK/C,YAAY,GAAtB,IAA6B,CAAhD,IAAqDoH,SAASrE;;uBAEtEA,OAAO4D,kBAAkBxO,OAAO4K,IAAzB;;qBAERG,QAAQkE,SAASlE;;mBAGlBP,WAAWpG,MAAKoG;mBAChBE,OAAOtG,MAAKsG;mBACZ+C,OAAOrJ,MAAKqJ;;iBAEbpD,SAASjG,MAAKiG;;eAGfY,WAAWgE,SAAShE;eAEpBjL;;AAGR,eAAAoP,SAAwBC,SAAgBC,aAAoBlC,SAA5D;YACOmC,oBAAoBxP,QAAO,EAAEsK,QAAS,OAAX,GAAqB+C,OAA5B;eACnBwB,WAAUI,kBAAkB9B,OAAMmC,SAASE,iBAAf,GAAmCrC,OAAMoC,aAAaC,iBAAnB,GAAuCA,mBAAmB,IAA/G,GAAsHA,iBAAhI;;AAKR,eAAAC,WAA0BC,KAASrC,SAAnC;YACK,OAAOqC,QAAQ,UAAU;gBACtBb,WAAU1B,OAAMuC,KAAKrC,OAAX,GAAqBA,OAA/B;mBACIrO,OAAO0Q,GAAP,MAAgB,UAAU;gBAC9BvC,OAAM0B,WAAyBa,KAAKrC,OAA9B,GAAwCA,OAA9C;;eAGAqC;;AAKR,eAAAC,MAAsBC,MAAUC,MAAUxC,SAA1C;YACK,OAAOuC,SAAS,UAAU;iBACtBf,WAAU1B,OAAMyC,MAAMvC,OAAZ,GAAsBA,OAAhC;mBACGrO,OAAO4Q,IAAP,MAAiB,UAAU;iBAC9Bf,WAAyBe,MAAMvC,OAA/B;;YAGJ,OAAOwC,SAAS,UAAU;iBACtBhB,WAAU1B,OAAM0C,MAAMxC,OAAZ,GAAsBA,OAAhC;mBACGrO,OAAO6Q,IAAP,MAAiB,UAAU;iBAC9BhB,WAAyBgB,MAAMxC,OAA/B;;eAGDuC,SAASC;;AAGjB,eAAAC,gBAAgC/Q,KAAYsO,SAA5C;eACQtO,OAAOA,IAAIM,SAAJ,EAAe4G,QAAS,CAACoH,WAAW,CAACA,QAAQC,MAAME,aAAauC,SAASxC,aAAawC,QAAS3G,UAA/F;;AAGf,eAAA4G,kBAAkCjR,KAAYsO,SAA9C;eACQtO,OAAOA,IAAIM,SAAJ,EAAe4G,QAAS,CAACoH,WAAW,CAACA,QAAQC,MAAME,aAAajD,cAAcgD,aAAahD,aAAcf,WAAzG;;ADxiBf,UAAMyG,WAA2B;gBACvB;oBAEI;eAEL,SAAA9C,OAAUnD,YAA0BqD,SAA7C;cAEM,CAACrD,WAAWW,MAAM;uBACVpF,QAAQyE,WAAWzE,SAAS;;iBAGjCyE;;mBAGI,SAAA6E,WAAU7E,YAA0BqD,SAAjD;cACQ6C,SAAS7K,OAAO2E,WAAWM,MAAlB,EAA0B5K,YAA1B,MAA4C;cAGvDsK,WAAW0D,UAAUwC,SAAS,MAAM,OAAOlG,WAAW0D,SAAS,IAAI;uBAC3DA,OAAOxO;;cAIf,CAAC8K,WAAWa,MAAM;uBACVA,OAAO;;iBAOZb;;;AD9BT,UAAMiG,YAA2B;gBACvB;oBACIE,SAAKpC;eACVoC,SAAKhD;mBACDgD,SAAKtB;;ADAlB,eAAAuB,SAAkBC,cAAlB;eACQ,OAAOA,aAAaH,WAAW,YAAYG,aAAaH,SAAS7K,OAAOgL,aAAa/F,MAApB,EAA4B5K,YAA5B,MAA8C;;AAIvH,UAAMuQ,YAA2B;gBACvB;oBAEI;eAEL,SAAA9C,OAAUnD,YAA0BqD,SAA7C;cACQgD,eAAerG;uBAGRkG,SAASE,SAASC,YAAT;uBAGTC,gBAAgBD,aAAaxF,QAAQ,QAAQwF,aAAarF,QAAQ,MAAMqF,aAAarF,QAAQ;uBAC7FH,OAAO3L;uBACP8L,QAAQ9L;iBAEdmR;;mBAGI,SAAAxB,WAAUwB,cAA2BhD,SAAlD;cAEMgD,aAAa3C,UAAU0C,SAASC,YAAT,IAAyB,MAAM,OAAOA,aAAa3C,SAAS,IAAI;yBAC7EA,OAAOxO;;cAIjB,OAAOmR,aAAaH,WAAW,WAAW;yBAChC5F,SAAU+F,aAAaH,SAAS,QAAQ;yBACxCA,SAAShR;;cAInBmR,aAAaC,cAAc;wCACRD,aAAaC,aAAa/Q,MAAM,GAAhC,qEAAfsL,QADuB,uBAAA,CAAA,GACjBG,QADiB,uBAAA,CAAA;yBAEjBH,OAAQA,SAAQA,UAAS,MAAMA,QAAO3L;yBACtC8L,QAAQA;yBACRsF,eAAepR;;uBAIhBgM,WAAWhM;iBAEjBmR;;;ADnDT,UAAMJ,YAA2B;gBACvB;oBACIM,UAAGxC;eACRwC,UAAGpD;mBACCoD,UAAG1B;;ADShB,UAAM2B,IAAkB,CAAA;AACxB,UAAMnQ,QAAQ;AAGd,UAAMc,eAAe,4BAA4Bd,QAAQ,8EAA8E,MAAM;AAC7I,UAAMK,WAAW;AACjB,UAAME,eAAe9B,OAAOA,OAAO,YAAY4B,WAAW,MAAMA,WAAWA,WAAW,MAAMA,WAAWA,QAA3E,IAAuF,MAAM5B,OAAO,gBAAgB4B,WAAW,MAAMA,WAAWA,QAAnD,IAA+D,MAAM5B,OAAO,MAAM4B,WAAWA,QAAxB,CAAzK;AAarB,UAAM+P,UAAU;AAChB,UAAMC,UAAU;AAChB,UAAMC,UAAUpS,OAAMmS,SAAS,WAAf;AAQhB,UAAME,gBAAgB;AAatB,UAAMvG,aAAa,IAAIlG,OAAOhD,cAAc,GAAzB;AACnB,UAAMoJ,cAAc,IAAIpG,OAAOvD,cAAc,GAAzB;AACpB,UAAMiQ,iBAAiB,IAAI1M,OAAO5F,OAAM,OAAOkS,SAAS,SAAS,SAASE,OAAxC,GAAkD,GAA7D;AAEvB,UAAMG,aAAa,IAAI3M,OAAO5F,OAAM,OAAO4C,cAAcyP,aAA3B,GAA2C,GAAtD;AACnB,UAAMG,cAAcD;AAIpB,eAAA5G,iBAA0BnL,KAA1B;YACOoL,SAASX,YAAYzK,GAAZ;eACP,CAACoL,OAAOC,MAAMC,UAAb,IAA2BtL,MAAMoL;;AAG3C,UAAM8F,YAA8C;gBAC1C;eAED,SAAA,SAAUjG,YAA0BqD,SAA7C;cACQ2D,mBAAmBhH;cACnBiH,KAAKD,iBAAiBC,KAAMD,iBAAiBnG,OAAOmG,iBAAiBnG,KAAKtL,MAAM,GAA5B,IAAmC,CAAA;2BAC5EsL,OAAO3L;cAEpB8R,iBAAiBhG,OAAO;gBACvBkG,iBAAiB;gBACfC,UAAwB,CAAA;gBACxBC,UAAUJ,iBAAiBhG,MAAMzL,MAAM,GAA7B;qBAEPX,IAAI,GAAGD,KAAKyS,QAAQ3S,QAAQG,IAAID,IAAI,EAAEC,GAAG;kBAC3CyS,SAASD,QAAQxS,CAAR,EAAWW,MAAM,GAAjB;sBAEP8R,OAAO,CAAP,GAAR;qBACM;sBACEC,UAAUD,OAAO,CAAP,EAAU9R,MAAM,GAAhB;2BACPX,KAAI,GAAGD,MAAK2S,QAAQ7S,QAAQG,KAAID,KAAI,EAAEC,IAAG;uBAC9C8H,KAAK4K,QAAQ1S,EAAR,CAAR;;;qBAGG;mCACa2S,UAAUvB,kBAAkBqB,OAAO,CAAP,GAAWhE,OAA7B;;qBAEvB;mCACamE,OAAOxB,kBAAkBqB,OAAO,CAAP,GAAWhE,OAA7B;;;mCAGP;0BACT2C,kBAAkBqB,OAAO,CAAP,GAAWhE,OAA7B,CAAR,IAAiD2C,kBAAkBqB,OAAO,CAAP,GAAWhE,OAA7B;;;;gBAKhD6D,eAAgBF,kBAAiBG,UAAUA;;2BAG/BnG,QAAQ9L;mBAEhBN,MAAI,GAAGD,OAAKsS,GAAGxS,QAAQG,MAAID,MAAI,EAAEC,KAAG;gBACtC6S,OAAOR,GAAGrS,GAAH,EAAMW,MAAM,GAAZ;iBAER,CAAL,IAAUyQ,kBAAkByB,KAAK,CAAL,CAAlB;gBAEN,CAACpE,QAAQS,gBAAgB;kBAExB;qBACE,CAAL,IAAU5E,SAASD,QAAQ+G,kBAAkByB,KAAK,CAAL,GAASpE,OAA3B,EAAoC3N,YAApC,CAAjB;uBACF6J,GAAG;iCACMhE,QAAQyL,iBAAiBzL,SAAS,6EAA6EgE;;mBAE3H;mBACD,CAAL,IAAUyG,kBAAkByB,KAAK,CAAL,GAASpE,OAA3B,EAAoC3N,YAApC;;eAGRd,GAAH,IAAQ6S,KAAK5S,KAAK,GAAV;;iBAGFmS;;mBAGI,SAAA,aAAUA,kBAAmC3D,SAA1D;cACQrD,aAAagH;cACbC,KAAKrR,QAAQoR,iBAAiBC,EAAzB;cACPA,IAAI;qBACErS,IAAI,GAAGD,KAAKsS,GAAGxS,QAAQG,IAAID,IAAI,EAAEC,GAAG;kBACtC8S,SAASrM,OAAO4L,GAAGrS,CAAH,CAAP;kBACT+S,QAAQD,OAAO5J,YAAY,GAAnB;kBACR8J,YAAaF,OAAOhT,MAAM,GAAGiT,KAAhB,EAAwB1L,QAAQsE,aAAaL,gBAA9C,EAAgEjE,QAAQsE,aAAa5K,WAArF,EAAkGsG,QAAQ4K,gBAAgBzH,UAA1H;kBACdyI,UAASH,OAAOhT,MAAMiT,QAAQ,CAArB;kBAGT;0BACO,CAACtE,QAAQC,MAAMpE,SAASD,QAAQ+G,kBAAkB6B,SAAQxE,OAA1B,EAAmC3N,YAAnC,CAAjB,IAAqEwJ,SAASH,UAAU8I,OAAnB;uBACtFtI,GAAG;2BACAhE,QAAQyE,WAAWzE,SAAS,0DAA0D,CAAC8H,QAAQC,MAAM,UAAU,aAAa,oBAAoB/D;;iBAGzJ3K,CAAH,IAAQgT,YAAY,MAAMC;;uBAGhBhH,OAAOoG,GAAGpS,KAAK,GAAR;;cAGbsS,UAAUH,iBAAiBG,UAAUH,iBAAiBG,WAAW,CAAA;cAEnEH,iBAAiBO,QAASJ,SAAQ,SAAR,IAAqBH,iBAAiBO;cAChEP,iBAAiBQ,KAAML,SAAQ,MAAR,IAAkBH,iBAAiBQ;cAExDpF,SAAS,CAAA;mBACJ0F,QAAQX,SAAS;gBACvBA,QAAQW,IAAR,MAAkBtB,EAAEsB,IAAF,GAAS;qBACvBpL,KACNoL,KAAK7L,QAAQsE,aAAaL,gBAA1B,EAA4CjE,QAAQsE,aAAa5K,WAAjE,EAA8EsG,QAAQ6K,YAAY1H,UAAlG,IACA,MACA+H,QAAQW,IAAR,EAAc7L,QAAQsE,aAAaL,gBAAnC,EAAqDjE,QAAQsE,aAAa5K,WAA1E,EAAuFsG,QAAQ8K,aAAa3H,UAA5G,CAHD;;;cAOEgD,OAAO3N,QAAQ;uBACPuM,QAAQoB,OAAOvN,KAAK,GAAZ;;iBAGbmL;;;AD/JT,UAAM+H,YAAY;AAIlB,UAAM9B,YAAqD;gBACjD;eAED,SAAA,SAAUjG,YAA0BqD,SAA7C;cACQ/B,UAAUtB,WAAWa,QAAQb,WAAWa,KAAKT,MAAM2H,SAAtB;cAC/BC,gBAAgBhI;cAEhBsB,SAAS;gBACNhB,SAAS+C,QAAQ/C,UAAU0H,cAAc1H,UAAU;gBACnD2H,MAAM3G,QAAQ,CAAR,EAAW5L,YAAX;gBACNwS,MAAM5G,QAAQ,CAAR;gBACN6G,YAAe7H,SAAf,OAAyB+C,QAAQ4E,OAAOA;gBACxCpE,gBAAgB1E,QAAQgJ,SAAR;0BAERF,MAAMA;0BACNC,MAAMA;0BACNrH,OAAO3L;gBAEjB2O,eAAe;8BACFA,cAAcV,MAAM6E,eAAe3E,OAAnC;;iBAEX;0BACQ9H,QAAQyM,cAAczM,SAAS;;iBAGvCyM;;mBAGI,SAAA,aAAUA,eAA6B3E,SAApD;cACQ/C,SAAS+C,QAAQ/C,UAAU0H,cAAc1H,UAAU;cACnD2H,MAAMD,cAAcC;cACpBE,YAAe7H,SAAf,OAAyB+C,QAAQ4E,OAAOA;cACxCpE,gBAAgB1E,QAAQgJ,SAAR;cAElBtE,eAAe;4BACFA,cAAcgB,UAAUmD,eAAe3E,OAAvC;;cAGX+E,gBAAgBJ;cAChBE,MAAMF,cAAcE;wBACZrH,QAAUoH,OAAO5E,QAAQ4E,OAAvC,MAA8CC;iBAEvCE;;;ADxDT,UAAMC,OAAO;AAIb,UAAMpC,YAAsE;gBAClE;eAED,SAAA9C,OAAU6E,eAA6B3E,SAAhD;cACQiF,iBAAiBN;yBACRO,OAAOD,eAAeJ;yBACtBA,MAAMhT;cAEjB,CAACmO,QAAQ+B,aAAa,CAACkD,eAAeC,QAAQ,CAACD,eAAeC,KAAKnI,MAAMiI,IAA1B,IAAkC;2BACrE9M,QAAQ+M,eAAe/M,SAAS;;iBAGzC+M;;mBAGI,SAAAzD,WAAUyD,gBAA+BjF,SAAtD;cACQ2E,gBAAgBM;wBAERJ,OAAOI,eAAeC,QAAQ,IAAI7S,YAA5B;iBACbsS;;;AD5BT7I,cAAQgH,SAAK7F,MAAb,IAAuB6F;AAGvBhH,cAAQqJ,UAAMlI,MAAd,IAAwBkI;AAGxBrJ,cAAQoH,UAAGjG,MAAX,IAAqBiG;AAGrBpH,cAAQsJ,UAAInI,MAAZ,IAAsBmI;AAGtBtJ,cAAQuJ,UAAOpI,MAAf,IAAyBoI;AAGzBvJ,cAAQwJ,UAAIrI,MAAZ,IAAsBqI;AAGtBxJ,cAAQoJ,UAAKjI,MAAb,IAAuBiI;;;;;;;;;;;;;;;;;;;AarBvB;AAAA,0CAAAK,UAAAC,SAAA;AAAA;AAMA,IAAAA,QAAO,UAAU,SAAS,MAAM,GAAG,GAAG;AACpC,UAAI,MAAM,EAAG,QAAO;AAEpB,UAAI,KAAK,KAAK,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU;AAC1D,YAAI,EAAE,gBAAgB,EAAE,YAAa,QAAO;AAE5C,YAAI,QAAQ,GAAGC;AACf,YAAI,MAAM,QAAQ,CAAC,GAAG;AACpB,mBAAS,EAAE;AACX,cAAI,UAAU,EAAE,OAAQ,QAAO;AAC/B,eAAK,IAAI,QAAQ,QAAQ;AACvB,gBAAI,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAG,QAAO;AACjC,iBAAO;AAAA,QACT;AAIA,YAAI,EAAE,gBAAgB,OAAQ,QAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE;AAC5E,YAAI,EAAE,YAAY,OAAO,UAAU,QAAS,QAAO,EAAE,QAAQ,MAAM,EAAE,QAAQ;AAC7E,YAAI,EAAE,aAAa,OAAO,UAAU,SAAU,QAAO,EAAE,SAAS,MAAM,EAAE,SAAS;AAEjF,QAAAA,QAAO,OAAO,KAAK,CAAC;AACpB,iBAASA,MAAK;AACd,YAAI,WAAW,OAAO,KAAK,CAAC,EAAE,OAAQ,QAAO;AAE7C,aAAK,IAAI,QAAQ,QAAQ;AACvB,cAAI,CAAC,OAAO,UAAU,eAAe,KAAK,GAAGA,MAAK,CAAC,CAAC,EAAG,QAAO;AAEhE,aAAK,IAAI,QAAQ,QAAQ,KAAI;AAC3B,cAAI,MAAMA,MAAK,CAAC;AAEhB,cAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC,EAAG,QAAO;AAAA,QACrC;AAEA,eAAO;AAAA,MACT;AAGA,aAAO,MAAI,KAAK,MAAI;AAAA,IACtB;AAAA;AAAA;;;AC7CA;AAAA,mEAAAC,UAAAC,SAAA;AAAA;AAIA,IAAAA,QAAO,UAAU,SAAS,WAAW,KAAK;AACxC,UAAI,SAAS,GACT,MAAM,IAAI,QACV,MAAM,GACNC;AACJ,aAAO,MAAM,KAAK;AAChB;AACA,QAAAA,SAAQ,IAAI,WAAW,KAAK;AAC5B,YAAIA,UAAS,SAAUA,UAAS,SAAU,MAAM,KAAK;AAEnD,UAAAA,SAAQ,IAAI,WAAW,GAAG;AAC1B,eAAKA,SAAQ,UAAW,MAAQ;AAAA,QAClC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACnBA;AAAA,6DAAAC,UAAAC,SAAA;AAAA;AAGA,IAAAA,QAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP,YAAY;AAAA,MACZ;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;AAGA,aAAS,KAAK,GAAG,IAAI;AACnB,WAAK,MAAM,CAAC;AACZ,eAAS,OAAO,EAAG,IAAG,GAAG,IAAI,EAAE,GAAG;AAClC,aAAO;AAAA,IACT;AAGA,aAAS,cAAc,UAAU,MAAM,eAAe,QAAQ;AAC5D,UAAI,QAAQ,SAAS,UAAU,SAC3B,MAAM,SAAS,SAAS,QACxB,KAAK,SAAS,MAAM,IACpB,MAAM,SAAS,KAAK;AACxB,cAAQ,UAAU;AAAA,QAChB,KAAK;AAAQ,iBAAO,OAAO,QAAQ;AAAA,QACnC,KAAK;AAAS,iBAAO,KAAK,mBAAmB,OAAO;AAAA,QACpD,KAAK;AAAU,iBAAO,MAAM,KAAK,OAAO,MAClB,YAAY,OAAO,QAAQ,aAAa,MACxC,MAAM,mBAAmB,OAAO;AAAA,QACtD,KAAK;AAAW,iBAAO,aAAa,OAAO,QAAQ,aAAa,MACzC,MAAM,MAAM,OAAO,UACnB,MAAM,OAAO,QAAQ,QACpB,gBAAiB,MAAM,KAAK,cAAc,OAAO,MAAO,MAAM;AAAA,QACtF,KAAK;AAAU,iBAAO,aAAa,OAAO,QAAQ,MAAM,WAAW,OAC5C,gBAAiB,MAAM,KAAK,cAAc,OAAO,MAAO,MAAM;AAAA,QACrF;AAAS,iBAAO,YAAY,OAAO,QAAQ,MAAM,WAAW;AAAA,MAC9D;AAAA,IACF;AAGA,aAAS,eAAe,WAAW,MAAM,eAAe;AACtD,cAAQ,UAAU,QAAQ;AAAA,QACxB,KAAK;AAAG,iBAAO,cAAc,UAAU,CAAC,GAAG,MAAM,eAAe,IAAI;AAAA,QACpE;AACE,cAAIC,QAAO;AACX,cAAI,QAAQ,OAAO,SAAS;AAC5B,cAAI,MAAM,SAAS,MAAM,QAAQ;AAC/B,YAAAA,QAAO,MAAM,OAAO,MAAK,OAAO,OAAO;AACvC,YAAAA,SAAQ,YAAY,OAAO;AAC3B,mBAAO,MAAM;AACb,mBAAO,MAAM;AACb,mBAAO,MAAM;AAAA,UACf;AACA,cAAI,MAAM,OAAQ,QAAO,MAAM;AAC/B,mBAAS,KAAK;AACZ,YAAAA,UAASA,QAAO,SAAS,MAAO,cAAc,GAAG,MAAM,eAAe,IAAI;AAE5E,iBAAOA;AAAA,MACX;AAAA,IACF;AAGA,QAAI,kBAAkB,OAAO,CAAE,UAAU,UAAU,WAAW,WAAW,MAAO,CAAC;AACjF,aAAS,cAAc,mBAAmB,WAAW;AACnD,UAAI,MAAM,QAAQ,SAAS,GAAG;AAC5B,YAAI,QAAQ,CAAC;AACb,iBAAS,IAAE,GAAG,IAAE,UAAU,QAAQ,KAAK;AACrC,cAAI,IAAI,UAAU,CAAC;AACnB,cAAI,gBAAgB,CAAC,EAAG,OAAM,MAAM,MAAM,IAAI;AAAA,mBACrC,sBAAsB,WAAW,MAAM,QAAS,OAAM,MAAM,MAAM,IAAI;AAAA,QACjF;AACA,YAAI,MAAM,OAAQ,QAAO;AAAA,MAC3B,WAAW,gBAAgB,SAAS,GAAG;AACrC,eAAO,CAAC,SAAS;AAAA,MACnB,WAAW,sBAAsB,WAAW,cAAc,SAAS;AACjE,eAAO,CAAC,OAAO;AAAA,MACjB;AAAA,IACF;AAGA,aAAS,OAAO,KAAK;AACnB,UAAI,OAAO,CAAC;AACZ,eAAS,IAAE,GAAG,IAAE,IAAI,QAAQ,IAAK,MAAK,IAAI,CAAC,CAAC,IAAI;AAChD,aAAO;AAAA,IACT;AAGA,QAAI,aAAa;AACjB,QAAI,eAAe;AACnB,aAAS,YAAY,KAAK;AACxB,aAAO,OAAO,OAAO,WACX,MAAM,MAAM,MACZ,WAAW,KAAK,GAAG,IACjB,MAAM,MACN,OAAO,aAAa,GAAG,IAAI;AAAA,IACzC;AAGA,aAAS,aAAa,KAAK;AACzB,aAAO,IAAI,QAAQ,cAAc,MAAM,EAC5B,QAAQ,OAAO,KAAK,EACpB,QAAQ,OAAO,KAAK,EACpB,QAAQ,OAAO,KAAK,EACpB,QAAQ,OAAO,KAAK;AAAA,IACjC;AAGA,aAAS,cAAc,KAAK,SAAS;AACnC,iBAAW;AACX,UAAI,UAAU,IAAI,MAAM,IAAI,OAAO,SAAS,GAAG,CAAC;AAChD,aAAO,UAAU,QAAQ,SAAS;AAAA,IACpC;AAGA,aAAS,WAAW,KAAK,SAAS,MAAM;AACtC,iBAAW;AACX,aAAO,KAAK,QAAQ,OAAO,MAAM;AACjC,aAAO,IAAI,QAAQ,IAAI,OAAO,SAAS,GAAG,GAAG,OAAO,IAAI;AAAA,IAC1D;AAGA,aAAS,eAAe,QAAQ,OAAO;AACrC,UAAI,OAAO,UAAU,UAAW,QAAO,CAAC;AACxC,eAAS,OAAO,OAAQ,KAAI,MAAM,GAAG,EAAG,QAAO;AAAA,IACjD;AAGA,aAAS,qBAAqB,QAAQ,OAAO,eAAe;AAC1D,UAAI,OAAO,UAAU,UAAW,QAAO,CAAC,UAAU,iBAAiB;AACnE,eAAS,OAAO,OAAQ,KAAI,OAAO,iBAAiB,MAAM,GAAG,EAAG,QAAO;AAAA,IACzE;AAGA,aAAS,mBAAmB,QAAQ,OAAO;AACzC,UAAI,OAAO,UAAU,UAAW;AAChC,eAAS,OAAO,OAAQ,KAAI,CAAC,MAAM,GAAG,EAAG,QAAO;AAAA,IAClD;AAGA,aAAS,eAAe,KAAK;AAC3B,aAAO,MAAO,aAAa,GAAG,IAAI;AAAA,IACpC;AAGA,aAAS,YAAY,aAAa,MAAM,cAAc,UAAU;AAC9D,UAAIC,QAAO,eACG,WAAa,QAAQ,WAAW,KAAK,gDACpC,WAAW,WAAa,OAAO,WAAa,cAAiB,OAAO;AACnF,aAAO,UAAU,aAAaA,KAAI;AAAA,IACpC;AAGA,aAAS,QAAQ,aAAa,MAAM,cAAc;AAChD,UAAIA,QAAO,eACG,eAAe,MAAM,kBAAkB,IAAI,CAAC,IAC5C,eAAe,YAAY,IAAI,CAAC;AAC9C,aAAO,UAAU,aAAaA,KAAI;AAAA,IACpC;AAGA,QAAI,eAAe;AACnB,QAAI,wBAAwB;AAC5B,aAAS,QAAQ,OAAO,KAAK,OAAO;AAClC,UAAI,IAAI,aAAa,MAAM;AAC3B,UAAI,UAAU,GAAI,QAAO;AACzB,UAAI,MAAM,CAAC,KAAK,KAAK;AACnB,YAAI,CAAC,aAAa,KAAK,KAAK,EAAG,OAAM,IAAI,MAAM,2BAA2B,KAAK;AAC/E,sBAAc;AACd,eAAO;AAAA,MACT,OAAO;AACL,kBAAU,MAAM,MAAM,qBAAqB;AAC3C,YAAI,CAAC,QAAS,OAAM,IAAI,MAAM,2BAA2B,KAAK;AAC9D,aAAK,CAAC,QAAQ,CAAC;AACf,sBAAc,QAAQ,CAAC;AACvB,YAAI,eAAe,KAAK;AACtB,cAAI,MAAM,IAAK,OAAM,IAAI,MAAM,kCAAkC,KAAK,kCAAkC,GAAG;AAC3G,iBAAO,MAAM,MAAM,EAAE;AAAA,QACvB;AAEA,YAAI,KAAK,IAAK,OAAM,IAAI,MAAM,wBAAwB,KAAK,kCAAkC,GAAG;AAChG,eAAO,UAAW,MAAM,MAAO;AAC/B,YAAI,CAAC,YAAa,QAAO;AAAA,MAC3B;AAEA,UAAI,OAAO;AACX,UAAI,WAAW,YAAY,MAAM,GAAG;AACpC,eAAS,IAAE,GAAG,IAAE,SAAS,QAAQ,KAAK;AACpC,YAAI,UAAU,SAAS,CAAC;AACxB,YAAI,SAAS;AACX,kBAAQ,YAAY,oBAAoB,OAAO,CAAC;AAChD,kBAAQ,SAAS;AAAA,QACnB;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAGA,aAAS,UAAW,GAAG,GAAG;AACxB,UAAI,KAAK,KAAM,QAAO;AACtB,cAAQ,IAAI,QAAQ,GAAG,QAAQ,kBAAkB,IAAI;AAAA,IACvD;AAGA,aAAS,iBAAiB,KAAK;AAC7B,aAAO,oBAAoB,mBAAmB,GAAG,CAAC;AAAA,IACpD;AAGA,aAAS,eAAe,KAAK;AAC3B,aAAO,mBAAmB,kBAAkB,GAAG,CAAC;AAAA,IAClD;AAGA,aAAS,kBAAkB,KAAK;AAC9B,aAAO,IAAI,QAAQ,MAAM,IAAI,EAAE,QAAQ,OAAO,IAAI;AAAA,IACpD;AAGA,aAAS,oBAAoB,KAAK;AAChC,aAAO,IAAI,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,GAAG;AAAA,IACnD;AAAA;AAAA;;;AC9OA;AAAA,mEAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,OAAO;AAEX,IAAAA,QAAO,UAAU;AAEjB,aAAS,aAAa,KAAK;AACzB,WAAK,KAAK,KAAK,IAAI;AAAA,IACrB;AAAA;AAAA;;;ACRA;AAAA,mEAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,WAAWA,QAAO,UAAU,SAAU,QAAQ,MAAM,IAAI;AAE1D,UAAI,OAAO,QAAQ,YAAY;AAC7B,aAAK;AACL,eAAO,CAAC;AAAA,MACV;AAEA,WAAK,KAAK,MAAM;AAChB,UAAI,MAAO,OAAO,MAAM,aAAc,KAAK,GAAG,OAAO,WAAW;AAAA,MAAC;AACjE,UAAI,OAAO,GAAG,QAAQ,WAAW;AAAA,MAAC;AAElC,gBAAU,MAAM,KAAK,MAAM,QAAQ,IAAI,MAAM;AAAA,IAC/C;AAGA,aAAS,WAAW;AAAA,MAClB,iBAAiB;AAAA,MACjB,OAAO;AAAA,MACP,UAAU;AAAA,MACV,sBAAsB;AAAA,MACtB,eAAe;AAAA,MACf,KAAK;AAAA,IACP;AAEA,aAAS,gBAAgB;AAAA,MACvB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAEA,aAAS,gBAAgB;AAAA,MACvB,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,mBAAmB;AAAA,MACnB,cAAc;AAAA,IAChB;AAEA,aAAS,eAAe;AAAA,MACtB,SAAS;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,MACT,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,UAAU;AAAA,MACV,aAAa;AAAA,MACb,eAAe;AAAA,MACf,eAAe;AAAA,IACjB;AAGA,aAAS,UAAU,MAAM,KAAK,MAAM,QAAQ,SAAS,YAAY,eAAe,eAAe,cAAc,UAAU;AACrH,UAAI,UAAU,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,MAAM,GAAG;AACjE,YAAI,QAAQ,SAAS,YAAY,eAAe,eAAe,cAAc,QAAQ;AACrF,iBAAS,OAAO,QAAQ;AACtB,cAAI,MAAM,OAAO,GAAG;AACpB,cAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,gBAAI,OAAO,SAAS,eAAe;AACjC,uBAAS,IAAE,GAAG,IAAE,IAAI,QAAQ;AAC1B,0BAAU,MAAM,KAAK,MAAM,IAAI,CAAC,GAAG,UAAU,MAAM,MAAM,MAAM,GAAG,YAAY,SAAS,KAAK,QAAQ,CAAC;AAAA,YACzG;AAAA,UACF,WAAW,OAAO,SAAS,eAAe;AACxC,gBAAI,OAAO,OAAO,OAAO,UAAU;AACjC,uBAAS,QAAQ;AACf,0BAAU,MAAM,KAAK,MAAM,IAAI,IAAI,GAAG,UAAU,MAAM,MAAM,MAAM,cAAc,IAAI,GAAG,YAAY,SAAS,KAAK,QAAQ,IAAI;AAAA,YACjI;AAAA,UACF,WAAW,OAAO,SAAS,YAAa,KAAK,WAAW,EAAE,OAAO,SAAS,eAAgB;AACxF,sBAAU,MAAM,KAAK,MAAM,KAAK,UAAU,MAAM,KAAK,YAAY,SAAS,KAAK,MAAM;AAAA,UACvF;AAAA,QACF;AACA,aAAK,QAAQ,SAAS,YAAY,eAAe,eAAe,cAAc,QAAQ;AAAA,MACxF;AAAA,IACF;AAGA,aAAS,cAAc,KAAK;AAC1B,aAAO,IAAI,QAAQ,MAAM,IAAI,EAAE,QAAQ,OAAO,IAAI;AAAA,IACpD;AAAA;AAAA;;;ACxFA;AAAA,gEAAAC,UAAAC,SAAA;AAAA;AAEA,QAAIC,OAAM;AAAV,QACI,QAAQ;AADZ,QAEI,OAAO;AAFX,QAGI,eAAe;AAHnB,QAII,WAAW;AAEf,IAAAD,QAAO,UAAUE;AAEjB,IAAAA,SAAQ,cAAc;AACtB,IAAAA,SAAQ,WAAW;AACnB,IAAAA,SAAQ,MAAM;AACd,IAAAA,SAAQ,MAAM;AACd,IAAAA,SAAQ,YAAY;AACpB,IAAAA,SAAQ,SAAS;AAUjB,aAASA,SAAQ,SAASC,OAAM,KAAK;AAEnC,UAAI,SAAS,KAAK,MAAM,GAAG;AAC3B,UAAI,OAAO,UAAU,UAAU;AAC7B,YAAI,KAAK,MAAM,MAAM,EAAG,UAAS,KAAK,MAAM,MAAM;AAAA,YAC7C,QAAOD,SAAQ,KAAK,MAAM,SAASC,OAAM,MAAM;AAAA,MACtD;AAEA,eAAS,UAAU,KAAK,SAAS,GAAG;AACpC,UAAI,kBAAkB,cAAc;AAClC,eAAO,UAAU,OAAO,QAAQ,KAAK,MAAM,UAAU,IAC3C,OAAO,SACP,OAAO,YAAY,KAAK,SAAS,MAAM;AAAA,MACnD;AAEA,UAAI,MAAM,cAAc,KAAK,MAAMA,OAAM,GAAG;AAC5C,UAAI,QAAQ,GAAG;AACf,UAAI,KAAK;AACP,iBAAS,IAAI;AACb,QAAAA,QAAO,IAAI;AACX,iBAAS,IAAI;AAAA,MACf;AAEA,UAAI,kBAAkB,cAAc;AAClC,YAAI,OAAO,YAAY,QAAQ,KAAK,MAAM,OAAO,QAAQA,OAAM,QAAW,MAAM;AAAA,MAClF,WAAW,WAAW,QAAW;AAC/B,YAAI,UAAU,QAAQ,KAAK,MAAM,UAAU,IACrC,SACA,QAAQ,KAAK,MAAM,QAAQA,OAAM,QAAW,MAAM;AAAA,MAC1D;AAEA,aAAO;AAAA,IACT;AAUA,aAAS,cAAcA,OAAM,KAAK;AAEhC,UAAI,IAAIF,KAAI,MAAM,GAAG,GACjB,UAAU,aAAa,CAAC,GACxB,SAAS,YAAY,KAAK,OAAOE,MAAK,MAAM,CAAC;AACjD,UAAI,OAAO,KAAKA,MAAK,MAAM,EAAE,WAAW,KAAK,YAAY,QAAQ;AAC/D,YAAI,KAAK,YAAY,OAAO;AAC5B,YAAI,SAAS,KAAK,MAAM,EAAE;AAC1B,YAAI,OAAO,UAAU,UAAU;AAC7B,iBAAO,iBAAiB,KAAK,MAAMA,OAAM,QAAQ,CAAC;AAAA,QACpD,WAAW,kBAAkB,cAAc;AACzC,cAAI,CAAC,OAAO,SAAU,MAAK,SAAS,MAAM;AAC1C,UAAAA,QAAO;AAAA,QACT,OAAO;AACL,mBAAS,KAAK,SAAS,EAAE;AACzB,cAAI,kBAAkB,cAAc;AAClC,gBAAI,CAAC,OAAO,SAAU,MAAK,SAAS,MAAM;AAC1C,gBAAI,MAAM,YAAY,GAAG;AACvB,qBAAO,EAAE,QAAQ,QAAQ,MAAMA,OAAM,OAAe;AACtD,YAAAA,QAAO;AAAA,UACT,OAAO;AACL;AAAA,UACF;AAAA,QACF;AACA,YAAI,CAACA,MAAK,OAAQ;AAClB,iBAAS,YAAY,KAAK,OAAOA,MAAK,MAAM,CAAC;AAAA,MAC/C;AACA,aAAO,eAAe,KAAK,MAAM,GAAG,QAAQA,MAAK,QAAQA,KAAI;AAAA,IAC/D;AAIA,aAAS,iBAAiBA,OAAM,KAAK,WAAW;AAE9C,UAAI,MAAM,cAAc,KAAK,MAAMA,OAAM,GAAG;AAC5C,UAAI,KAAK;AACP,YAAI,SAAS,IAAI;AACjB,YAAI,SAAS,IAAI;AACjB,QAAAA,QAAO,IAAI;AACX,YAAI,KAAK,KAAK,OAAO,MAAM;AAC3B,YAAI,GAAI,UAAS,WAAW,QAAQ,EAAE;AACtC,eAAO,eAAe,KAAK,MAAM,WAAW,QAAQ,QAAQA,KAAI;AAAA,MAClE;AAAA,IACF;AAGA,QAAI,uBAAuB,KAAK,OAAO,CAAC,cAAc,qBAAqB,QAAQ,gBAAgB,aAAa,CAAC;AAEjH,aAAS,eAAe,WAAW,QAAQ,QAAQA,OAAM;AAEvD,gBAAU,WAAW,UAAU,YAAY;AAC3C,UAAI,UAAU,SAAS,MAAM,GAAE,CAAC,KAAK,IAAK;AAC1C,UAAI,QAAQ,UAAU,SAAS,MAAM,GAAG;AAExC,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAI,OAAO,MAAM,CAAC;AAClB,YAAI,MAAM;AACR,iBAAO,KAAK,iBAAiB,IAAI;AACjC,mBAAS,OAAO,IAAI;AACpB,cAAI,WAAW,OAAW;AAC1B,cAAI;AACJ,cAAI,CAAC,qBAAqB,IAAI,GAAG;AAC/B,iBAAK,KAAK,OAAO,MAAM;AACvB,gBAAI,GAAI,UAAS,WAAW,QAAQ,EAAE;AACtC,gBAAI,OAAO,MAAM;AACf,kBAAI,OAAO,WAAW,QAAQ,OAAO,IAAI;AACzC,kBAAI,MAAM,cAAc,KAAK,MAAMA,OAAM,IAAI;AAC7C,kBAAI,KAAK;AACP,yBAAS,IAAI;AACb,gBAAAA,QAAO,IAAI;AACX,yBAAS,IAAI;AAAA,cACf;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,UAAI,WAAW,UAAa,WAAWA,MAAK;AAC1C,eAAO,EAAE,QAAgB,MAAMA,OAAM,OAAe;AAAA,IACxD;AAGA,QAAI,iBAAiB,KAAK,OAAO;AAAA,MAC/B;AAAA,MAAQ;AAAA,MAAU;AAAA,MAClB;AAAA,MAAa;AAAA,MACb;AAAA,MAAiB;AAAA,MACjB;AAAA,MAAY;AAAA,MACZ;AAAA,MAAW;AAAA,MACX;AAAA,MAAe;AAAA,MACf;AAAA,MAAY;AAAA,IACd,CAAC;AACD,aAAS,UAAU,QAAQ,OAAO;AAChC,UAAI,UAAU,MAAO,QAAO;AAC5B,UAAI,UAAU,UAAa,UAAU,KAAM,QAAO,WAAW,MAAM;AAAA,eAC1D,MAAO,QAAO,UAAU,MAAM,KAAK;AAAA,IAC9C;AAGA,aAAS,WAAW,QAAQ;AAC1B,UAAI;AACJ,UAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,iBAAS,IAAE,GAAG,IAAE,OAAO,QAAQ,KAAK;AAClC,iBAAO,OAAO,CAAC;AACf,cAAI,OAAO,QAAQ,YAAY,CAAC,WAAW,IAAI,EAAG,QAAO;AAAA,QAC3D;AAAA,MACF,OAAO;AACL,iBAAS,OAAO,QAAQ;AACtB,cAAI,OAAO,OAAQ,QAAO;AAC1B,iBAAO,OAAO,GAAG;AACjB,cAAI,OAAO,QAAQ,YAAY,CAAC,WAAW,IAAI,EAAG,QAAO;AAAA,QAC3D;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAGA,aAAS,UAAU,QAAQ;AACzB,UAAIC,SAAQ,GAAG;AACf,UAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,iBAAS,IAAE,GAAG,IAAE,OAAO,QAAQ,KAAK;AAClC,iBAAO,OAAO,CAAC;AACf,cAAI,OAAO,QAAQ,SAAU,CAAAA,UAAS,UAAU,IAAI;AACpD,cAAIA,UAAS,SAAU,QAAO;AAAA,QAChC;AAAA,MACF,OAAO;AACL,iBAAS,OAAO,QAAQ;AACtB,cAAI,OAAO,OAAQ,QAAO;AAC1B,cAAI,eAAe,GAAG,GAAG;AACvB,YAAAA;AAAA,UACF,OAAO;AACL,mBAAO,OAAO,GAAG;AACjB,gBAAI,OAAO,QAAQ,SAAU,CAAAA,UAAS,UAAU,IAAI,IAAI;AACxD,gBAAIA,UAAS,SAAU,QAAO;AAAA,UAChC;AAAA,QACF;AAAA,MACF;AACA,aAAOA;AAAA,IACT;AAGA,aAAS,YAAY,IAAIC,YAAW;AAClC,UAAIA,eAAc,MAAO,MAAK,YAAY,EAAE;AAC5C,UAAI,IAAIJ,KAAI,MAAM,EAAE;AACpB,aAAO,aAAa,CAAC;AAAA,IACvB;AAGA,aAAS,aAAa,GAAG;AACvB,aAAOA,KAAI,UAAU,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,IAAI;AAAA,IAC1C;AAGA,QAAI,sBAAsB;AAC1B,aAAS,YAAY,IAAI;AACvB,aAAO,KAAK,GAAG,QAAQ,qBAAqB,EAAE,IAAI;AAAA,IACpD;AAGA,aAAS,WAAW,QAAQ,IAAI;AAC9B,WAAK,YAAY,EAAE;AACnB,aAAOA,KAAI,QAAQ,QAAQ,EAAE;AAAA,IAC/B;AAIA,aAAS,WAAW,QAAQ;AAC1B,UAAI,WAAW,YAAY,KAAK,OAAO,MAAM,CAAC;AAC9C,UAAI,UAAU,EAAC,IAAI,SAAQ;AAC3B,UAAI,YAAY,EAAC,IAAI,YAAY,UAAU,KAAK,EAAC;AACjD,UAAI,YAAY,CAAC;AACjB,UAAIK,QAAO;AAEX,eAAS,QAAQ,EAAC,SAAS,KAAI,GAAG,SAAS,KAAK,SAAS,YAAY,eAAe,eAAe,cAAc,UAAU;AACzH,YAAI,YAAY,GAAI;AACpB,YAAI,KAAKA,MAAK,OAAO,GAAG;AACxB,YAAI,SAAS,QAAQ,aAAa;AAClC,YAAI,WAAW,UAAU,aAAa,IAAI,MAAM;AAChD,YAAI,aAAa;AACf,sBAAY,OAAO,OAAO,YAAY,WAAW,WAAW,KAAK,eAAe,QAAQ;AAE1F,YAAI,OAAO,MAAM,UAAU;AACzB,eAAK,SAAS,YAAY,SAASL,KAAI,QAAQ,QAAQ,EAAE,IAAI,EAAE;AAE/D,cAAI,SAASK,MAAK,MAAM,EAAE;AAC1B,cAAI,OAAO,UAAU,SAAU,UAASA,MAAK,MAAM,MAAM;AACzD,cAAI,UAAU,OAAO,QAAQ;AAC3B,gBAAI,CAAC,MAAM,KAAK,OAAO,MAAM;AAC3B,oBAAM,IAAI,MAAM,SAAS,KAAK,oCAAoC;AAAA,UACtE,WAAW,MAAM,YAAY,QAAQ,GAAG;AACtC,gBAAI,GAAG,CAAC,KAAK,KAAK;AAChB,kBAAI,UAAU,EAAE,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;AAC5C,sBAAM,IAAI,MAAM,SAAS,KAAK,oCAAoC;AACpE,wBAAU,EAAE,IAAI;AAAA,YAClB,OAAO;AACL,cAAAA,MAAK,MAAM,EAAE,IAAI;AAAA,YACnB;AAAA,UACF;AAAA,QACF;AACA,gBAAQ,OAAO,IAAI;AACnB,kBAAU,OAAO,IAAI;AAAA,MACvB,CAAC;AAED,aAAO;AAAA,IACT;AAAA;AAAA;;;AC7QA;AAAA,sEAAAC,UAAAC,SAAA;AAAA;AAEA,QAAIC,WAAU;AAEd,IAAAD,QAAO,UAAU;AAAA,MACf,YAAY,cAAc,eAAe;AAAA,MACzC,YAAY,cAAc,eAAe;AAAA,IAC3C;AAGA,aAAS,gBAAgB,QAAQ;AAC/B,WAAK,UAAU;AACf,WAAK,SAAS;AACd,WAAK,MAAM,KAAK,aAAa;AAAA,IAC/B;AAGA,oBAAgB,UAAU,SAAU,QAAQ,KAAK;AAC/C,aAAO,6BAA8B,MAAM,cAAc;AAAA,IAC3D;AAGA,aAAS,gBAAgB,QAAQ,KAAK,SAAS;AAC7C,WAAK,UAAU,WAAW,gBAAgB,QAAQ,QAAQ,GAAG;AAC7D,WAAK,aAAaC,SAAQ,IAAI,QAAQ,GAAG;AACzC,WAAK,gBAAgBA,SAAQ,YAAYA,SAAQ,SAAS,KAAK,UAAU,CAAC;AAAA,IAC5E;AAGA,aAAS,cAAc,UAAU;AAC/B,eAAS,YAAY,OAAO,OAAO,MAAM,SAAS;AAClD,eAAS,UAAU,cAAc;AACjC,aAAO;AAAA,IACT;AAAA;AAAA;;;ACjCA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAEA,IAAAA,QAAO,UAAU,SAAU,MAAM,MAAM;AACnC,UAAI,CAAC,KAAM,QAAO,CAAC;AACnB,UAAI,OAAO,SAAS,WAAY,QAAO,EAAE,KAAK,KAAK;AACnD,UAAI,SAAU,OAAO,KAAK,WAAW,YAAa,KAAK,SAAS;AAEhE,UAAI,MAAM,KAAK,OAAQ,0BAAU,GAAG;AAChC,eAAO,SAAUC,OAAM;AACnB,iBAAO,SAAU,GAAG,GAAG;AACnB,gBAAI,OAAO,EAAE,KAAK,GAAG,OAAOA,MAAK,CAAC,EAAE;AACpC,gBAAI,OAAO,EAAE,KAAK,GAAG,OAAOA,MAAK,CAAC,EAAE;AACpC,mBAAO,EAAE,MAAM,IAAI;AAAA,UACvB;AAAA,QACJ;AAAA,MACJ,GAAG,KAAK,GAAG;AAEX,UAAI,OAAO,CAAC;AACZ,cAAQ,SAAS,UAAWA,OAAM;AAC9B,YAAIA,SAAQA,MAAK,UAAU,OAAOA,MAAK,WAAW,YAAY;AAC1D,UAAAA,QAAOA,MAAK,OAAO;AAAA,QACvB;AAEA,YAAIA,UAAS,OAAW;AACxB,YAAI,OAAOA,SAAQ,SAAU,QAAO,SAASA,KAAI,IAAI,KAAKA,QAAO;AACjE,YAAI,OAAOA,UAAS,SAAU,QAAO,KAAK,UAAUA,KAAI;AAExD,YAAI,GAAG;AACP,YAAI,MAAM,QAAQA,KAAI,GAAG;AACrB,gBAAM;AACN,eAAK,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AAC9B,gBAAI,EAAG,QAAO;AACd,mBAAO,UAAUA,MAAK,CAAC,CAAC,KAAK;AAAA,UACjC;AACA,iBAAO,MAAM;AAAA,QACjB;AAEA,YAAIA,UAAS,KAAM,QAAO;AAE1B,YAAI,KAAK,QAAQA,KAAI,MAAM,IAAI;AAC3B,cAAI,OAAQ,QAAO,KAAK,UAAU,WAAW;AAC7C,gBAAM,IAAI,UAAU,uCAAuC;AAAA,QAC/D;AAEA,YAAI,YAAY,KAAK,KAAKA,KAAI,IAAI;AAClC,YAAIC,QAAO,OAAO,KAAKD,KAAI,EAAE,KAAK,OAAO,IAAIA,KAAI,CAAC;AAClD,cAAM;AACN,aAAK,IAAI,GAAG,IAAIC,MAAK,QAAQ,KAAK;AAC9B,cAAI,MAAMA,MAAK,CAAC;AAChB,cAAIC,SAAQ,UAAUF,MAAK,GAAG,CAAC;AAE/B,cAAI,CAACE,OAAO;AACZ,cAAI,IAAK,QAAO;AAChB,iBAAO,KAAK,UAAU,GAAG,IAAI,MAAMA;AAAA,QACvC;AACA,aAAK,OAAO,WAAW,CAAC;AACxB,eAAO,MAAM,MAAM;AAAA,MACvB,GAAG,IAAI;AAAA,IACX;AAAA;AAAA;;;AC1DA;AAAA,+DAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,kBAAkBC,KAAI,UAAU,WAAW;AACnE,UAAI,MAAM;AACV,UAAI,SAASA,IAAG,OAAO,WAAW,MAChC,eAAeA,IAAG,KAAK,qBAAqBA,IAAG,QAAQA,IAAG,MAAM,KAAK,MAAM,GAC3E,MAAMA,IAAG,KAAK,OAAOA,IAAG,MAAM;AAChC,UAAIA,IAAG,KAAK,gBAAgB;AAC1B,YAAI,cAAcA,IAAG,KAAK,mBAAmBA,IAAG,QAAQA,IAAG,MAAM,QAAQ;AACzE,YAAI,aAAa;AACf,cAAI,eAAe,sBAAsB;AACzC,cAAIA,IAAG,KAAK,mBAAmB,MAAO,CAAAA,IAAG,OAAO,KAAK,YAAY;AAAA,cAC5D,OAAM,IAAI,MAAM,YAAY;AAAA,QACnC;AAAA,MACF;AACA,UAAIA,IAAG,OAAO;AACZ,eAAO;AACP,YAAI,QAAQ;AACV,UAAAA,IAAG,QAAQ;AACX,iBAAO;AAAA,QACT;AACA,eAAO;AACP,YAAI,QAAQA,IAAG,KAAK,cAAcA,IAAG,KAAK,cAAc;AACtD,iBAAO,OAAO,mBAAoB,MAAM,SAAS;AAAA,QACnD;AAAA,MACF;AACA,UAAI,OAAOA,IAAG,UAAU,aAAa,EAAE,gBAAgBA,IAAG,OAAO,OAAO;AACtE,YAAI,WAAW;AACf,YAAI,OAAOA,IAAG;AACd,YAAI,WAAWA,IAAG;AAClB,YAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,YAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,YAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,YAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,YAAI;AACJ,YAAI,QAAQ,UAAU,YAAY;AAClC,YAAI,SAAS,UAAU;AACvB,YAAIA,IAAG,WAAW,OAAO;AACvB,cAAIA,IAAG,OAAO;AACZ,4BAAgB;AAAA,UAClB,OAAO;AACL,mBAAO,UAAW,SAAU;AAAA,UAC9B;AACA,cAAI,aAAa,cAAc,CAAC;AAChC,qBAAW,KAAK,GAAG;AACnB,gBAAM;AACN,cAAIA,IAAG,iBAAiB,OAAO;AAC7B,mBAAO,mBAAoB,iBAAiB,kBAAkB,sCAA0CA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK;AACvL,gBAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,qBAAO;AAAA,YACT;AACA,gBAAIA,IAAG,KAAK,SAAS;AACnB,qBAAO,qDAAsDA,IAAG,aAAc,cAAe,QAAS;AAAA,YACxG;AACA,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO;AAAA,UACT;AACA,cAAI,QAAQ;AACZ,gBAAM,WAAW,IAAI;AACrB,cAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,gBAAIA,IAAG,OAAO;AACZ,qBAAO,iCAAkC,QAAS;AAAA,YACpD,OAAO;AACL,qBAAO,yBAA0B,QAAS;AAAA,YAC5C;AAAA,UACF,OAAO;AACL,mBAAO,gBAAiB,QAAS;AAAA,UACnC;AAAA,QACF,OAAO;AACL,cAAIA,IAAG,OAAO;AACZ,gBAAI,QAAQ;AACV,qBAAO;AAAA,YACT,OAAO;AACL,qBAAO;AAAA,YACT;AAAA,UACF,OAAO;AACL,mBAAO,UAAW,SAAU;AAAA,UAC9B;AAAA,QACF;AACA,YAAIA,IAAG,OAAO;AACZ,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AACA,UAAIA,IAAG,OAAO;AACZ,YAAI,OAAOA,IAAG,OACZ,OAAOA,IAAG,QAAQ,GAClB,WAAWA,IAAG,YAAY,GAC1B,QAAQ;AACV,QAAAA,IAAG,SAASA,IAAG,QAAQ,SAASA,IAAG,KAAK,OAAOA,IAAG,KAAK,MAAM,CAAC;AAC9D,QAAAA,IAAG,SAASA,IAAG,UAAUA,IAAG;AAC5B,eAAOA,IAAG;AACV,QAAAA,IAAG,cAAc,CAAC,EAAE;AACpB,YAAIA,IAAG,OAAO,YAAY,UAAaA,IAAG,KAAK,eAAeA,IAAG,KAAK,gBAAgB;AACpF,cAAI,cAAc;AAClB,cAAIA,IAAG,KAAK,mBAAmB,MAAO,CAAAA,IAAG,OAAO,KAAK,WAAW;AAAA,cAC3D,OAAM,IAAI,MAAM,WAAW;AAAA,QAClC;AACA,eAAO;AACP,eAAO;AACP,eAAO;AAAA,MACT,OAAO;AACL,YAAI,OAAOA,IAAG,OACZ,WAAWA,IAAG,WACd,QAAQ,UAAU,YAAY;AAChC,YAAI,IAAK,CAAAA,IAAG,SAASA,IAAG,QAAQ,IAAIA,IAAG,QAAQ,GAAG;AAClD,YAAI,UAAU,CAACA,IAAG,MAAO,OAAM,IAAI,MAAM,6BAA6B;AACtE,eAAO,eAAgB,OAAQ;AAAA,MACjC;AACA,UAAI,SAAS,UAAU,MACrB,gBAAgB,CAACA,IAAG,KAAK,WACzB,kBAAkB,IAClB,kBAAkB;AACpB,UAAI;AACJ,UAAI,cAAcA,IAAG,OAAO,MAC1B,eAAe,MAAM,QAAQ,WAAW;AAC1C,UAAI,eAAeA,IAAG,KAAK,YAAYA,IAAG,OAAO,aAAa,MAAM;AAClE,YAAI,cAAc;AAChB,cAAI,YAAY,QAAQ,MAAM,KAAK,GAAI,eAAc,YAAY,OAAO,MAAM;AAAA,QAChF,WAAW,eAAe,QAAQ;AAChC,wBAAc,CAAC,aAAa,MAAM;AAClC,yBAAe;AAAA,QACjB;AAAA,MACF;AACA,UAAI,gBAAgB,YAAY,UAAU,GAAG;AAC3C,sBAAc,YAAY,CAAC;AAC3B,uBAAe;AAAA,MACjB;AACA,UAAIA,IAAG,OAAO,QAAQ,cAAc;AAClC,YAAIA,IAAG,KAAK,cAAc,QAAQ;AAChC,gBAAM,IAAI,MAAM,uDAAuDA,IAAG,gBAAgB,2BAA2B;AAAA,QACvH,WAAWA,IAAG,KAAK,eAAe,MAAM;AACtC,yBAAe;AACf,UAAAA,IAAG,OAAO,KAAK,+CAA+CA,IAAG,gBAAgB,GAAG;AAAA,QACtF;AAAA,MACF;AACA,UAAIA,IAAG,OAAO,YAAYA,IAAG,KAAK,UAAU;AAC1C,eAAO,MAAOA,IAAG,MAAM,IAAI,SAAS,KAAKA,KAAI,UAAU;AAAA,MACzD;AACA,UAAI,aAAa;AACf,YAAIA,IAAG,KAAK,aAAa;AACvB,cAAI,iBAAiBA,IAAG,KAAK,cAAcA,IAAG,KAAK,aAAa,WAAW;AAAA,QAC7E;AACA,YAAI,cAAcA,IAAG,MAAM,MAAM,WAAW;AAC5C,YAAI,kBAAkB,gBAAgB,gBAAgB,QAAS,eAAe,CAAC,gBAAgB,WAAW,GAAI;AAC5G,cAAI,cAAcA,IAAG,aAAa,SAChC,iBAAiBA,IAAG,gBAAgB;AACtC,cAAI,cAAcA,IAAG,aAAa,SAChC,iBAAiBA,IAAG,gBAAgB,SACpC,UAAU,eAAe,mBAAmB;AAC9C,iBAAO,UAAWA,IAAG,KAAK,OAAO,EAAE,aAAa,OAAOA,IAAG,KAAK,eAAe,IAAI,IAAK;AACvF,cAAI,gBAAgB;AAClB,gBAAI,YAAY,aAAa,MAC3B,WAAW,YAAY;AACzB,mBAAO,UAAW,YAAa,eAAgB,QAAS,WAAY,WAAY;AAChF,gBAAIA,IAAG,KAAK,eAAe,SAAS;AAClC,qBAAO,UAAW,YAAa,mCAAsC,QAAS,UAAW,QAAS,qBAAsB,QAAS,QAAS,QAAS,UAAW,YAAa,eAAgB,QAAS,WAAYA,IAAG,KAAK,cAAcA,IAAG,OAAO,MAAM,OAAOA,IAAG,KAAK,aAAa,IAAK,OAAQ,WAAY,QAAS,QAAS;AAAA,YAC/T;AACA,mBAAO,UAAW,WAAY;AAC9B,gBAAI,OAAO;AACX,gBAAI,MAAM;AACR,kBAAI,OAAO,KAAK,IACd,KAAK,KAAK,SAAS;AACrB,qBAAO,KAAK,IAAI;AACd,wBAAQ,KAAK,MAAM,CAAC;AACpB,oBAAI,SAAS,UAAU;AACrB,yBAAO,eAAgB,YAAa,qBAAwB,YAAa,oBAAuB,WAAY,aAAgB,QAAS,gBAAiB,QAAS,gBAAiB,WAAY;AAAA,gBAC9L,WAAW,SAAS,YAAY,SAAS,WAAW;AAClD,yBAAO,eAAgB,YAAa,sBAAyB,QAAS,mBAAoB,YAAa,qBAAwB,QAAS,SAAU,QAAS,UAAW,QAAS;AAC/K,sBAAI,SAAS,WAAW;AACtB,2BAAO,WAAY,QAAS;AAAA,kBAC9B;AACA,yBAAO,QAAS,WAAY,SAAU,QAAS;AAAA,gBACjD,WAAW,SAAS,WAAW;AAC7B,yBAAO,eAAgB,QAAS,qBAAwB,QAAS,eAAgB,QAAS,gBAAiB,WAAY,wBAAyB,QAAS,oBAAuB,QAAS,aAAc,WAAY;AAAA,gBACrN,WAAW,SAAS,QAAQ;AAC1B,yBAAO,eAAgB,QAAS,gBAAmB,QAAS,eAAgB,QAAS,iBAAkB,WAAY;AAAA,gBACrH,WAAWA,IAAG,KAAK,eAAe,WAAW,SAAS,SAAS;AAC7D,yBAAO,eAAgB,YAAa,qBAAwB,YAAa,qBAAwB,YAAa,sBAAyB,QAAS,eAAgB,WAAY,SAAU,QAAS;AAAA,gBACjM;AAAA,cACF;AAAA,YACF;AACA,mBAAO;AACP,gBAAI,aAAa,cAAc,CAAC;AAChC,uBAAW,KAAK,GAAG;AACnB,kBAAM;AACN,gBAAIA,IAAG,iBAAiB,OAAO;AAC7B,qBAAO,mBAAoB,iBAAiB,UAAU,sCAA0CA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK;AAC/K,kBAAI,cAAc;AAChB,uBAAO,KAAM,YAAY,KAAK,GAAG;AAAA,cACnC,OAAO;AACL,uBAAO,KAAM;AAAA,cACf;AACA,qBAAO;AACP,kBAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,uBAAO;AACP,oBAAI,cAAc;AAChB,yBAAO,KAAM,YAAY,KAAK,GAAG;AAAA,gBACnC,OAAO;AACL,yBAAO,KAAM;AAAA,gBACf;AACA,uBAAO;AAAA,cACT;AACA,kBAAIA,IAAG,KAAK,SAAS;AACnB,uBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,cACvI;AACA,qBAAO;AAAA,YACT,OAAO;AACL,qBAAO;AAAA,YACT;AACA,gBAAI,QAAQ;AACZ,kBAAM,WAAW,IAAI;AACrB,gBAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,kBAAIA,IAAG,OAAO;AACZ,uBAAO,iCAAkC,QAAS;AAAA,cACpD,OAAO;AACL,uBAAO,yBAA0B,QAAS;AAAA,cAC5C;AAAA,YACF,OAAO;AACL,qBAAO,gBAAiB,QAAS;AAAA,YACnC;AACA,mBAAO,YAAa,WAAY;AAChC,gBAAI,cAAc,WAAW,UAAW,WAAW,KAAM,MAAM,cAC7D,sBAAsB,WAAWA,IAAG,YAAY,QAAQ,IAAI;AAC9D,mBAAO,MAAO,QAAS,QAAS,WAAY;AAC5C,gBAAI,CAAC,UAAU;AACb,qBAAO,SAAU,cAAe;AAAA,YAClC;AACA,mBAAO,MAAO,cAAe,MAAO,sBAAuB,SAAU,WAAY;AAAA,UACnF,OAAO;AACL,gBAAI,aAAa,cAAc,CAAC;AAChC,uBAAW,KAAK,GAAG;AACnB,kBAAM;AACN,gBAAIA,IAAG,iBAAiB,OAAO;AAC7B,qBAAO,mBAAoB,iBAAiB,UAAU,sCAA0CA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK;AAC/K,kBAAI,cAAc;AAChB,uBAAO,KAAM,YAAY,KAAK,GAAG;AAAA,cACnC,OAAO;AACL,uBAAO,KAAM;AAAA,cACf;AACA,qBAAO;AACP,kBAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,uBAAO;AACP,oBAAI,cAAc;AAChB,yBAAO,KAAM,YAAY,KAAK,GAAG;AAAA,gBACnC,OAAO;AACL,yBAAO,KAAM;AAAA,gBACf;AACA,uBAAO;AAAA,cACT;AACA,kBAAIA,IAAG,KAAK,SAAS;AACnB,uBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,cACvI;AACA,qBAAO;AAAA,YACT,OAAO;AACL,qBAAO;AAAA,YACT;AACA,gBAAI,QAAQ;AACZ,kBAAM,WAAW,IAAI;AACrB,gBAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,kBAAIA,IAAG,OAAO;AACZ,uBAAO,iCAAkC,QAAS;AAAA,cACpD,OAAO;AACL,uBAAO,yBAA0B,QAAS;AAAA,cAC5C;AAAA,YACF,OAAO;AACL,qBAAO,gBAAiB,QAAS;AAAA,YACnC;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AACA,UAAIA,IAAG,OAAO,QAAQ,CAAC,cAAc;AACnC,eAAO,MAAOA,IAAG,MAAM,IAAI,KAAK,KAAKA,KAAI,MAAM,IAAK;AACpD,YAAI,eAAe;AACjB,iBAAO;AACP,cAAI,MAAM;AACR,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO,UAAW;AAAA,UACpB;AACA,iBAAO;AACP,6BAAmB;AAAA,QACrB;AAAA,MACF,OAAO;AACL,YAAI,OAAOA,IAAG;AACd,YAAI,MAAM;AACR,cAAI,aAAa,KAAK,IACpB,KAAK,KAAK,SAAS;AACrB,iBAAO,KAAK,IAAI;AACd,0BAAc,KAAK,MAAM,CAAC;AAC1B,gBAAI,gBAAgB,WAAW,GAAG;AAChC,kBAAI,YAAY,MAAM;AACpB,uBAAO,UAAWA,IAAG,KAAK,cAAc,YAAY,MAAM,OAAOA,IAAG,KAAK,aAAa,IAAK;AAAA,cAC7F;AACA,kBAAIA,IAAG,KAAK,aAAa;AACvB,oBAAI,YAAY,QAAQ,YAAYA,IAAG,OAAO,YAAY;AACxD,sBAAI,UAAUA,IAAG,OAAO,YACtB,cAAc,OAAO,KAAK,OAAO;AACnC,sBAAI,OAAO;AACX,sBAAI,MAAM;AACR,wBAAI,cAAc,KAAK,IACrB,KAAK,KAAK,SAAS;AACrB,2BAAO,KAAK,IAAI;AACd,qCAAe,KAAK,MAAM,CAAC;AAC3B,0BAAI,OAAO,QAAQ,YAAY;AAC/B,0BAAI,KAAK,YAAY,QAAW;AAC9B,4BAAI,YAAY,QAAQA,IAAG,KAAK,YAAY,YAAY;AACxD,4BAAIA,IAAG,eAAe;AACpB,8BAAIA,IAAG,KAAK,gBAAgB;AAC1B,gCAAI,cAAc,6BAA6B;AAC/C,gCAAIA,IAAG,KAAK,mBAAmB,MAAO,CAAAA,IAAG,OAAO,KAAK,WAAW;AAAA,gCAC3D,OAAM,IAAI,MAAM,WAAW;AAAA,0BAClC;AAAA,wBACF,OAAO;AACL,iCAAO,UAAW,YAAa;AAC/B,8BAAIA,IAAG,KAAK,eAAe,SAAS;AAClC,mCAAO,SAAU,YAAa,kBAAmB,YAAa;AAAA,0BAChE;AACA,iCAAO,QAAS,YAAa;AAC7B,8BAAIA,IAAG,KAAK,eAAe,UAAU;AACnC,mCAAO,MAAOA,IAAG,WAAW,KAAK,OAAO,IAAK;AAAA,0BAC/C,OAAO;AACL,mCAAO,MAAO,KAAK,UAAU,KAAK,OAAO,IAAK;AAAA,0BAChD;AACA,iCAAO;AAAA,wBACT;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF,WAAW,YAAY,QAAQ,WAAW,MAAM,QAAQA,IAAG,OAAO,KAAK,GAAG;AACxE,sBAAI,OAAOA,IAAG,OAAO;AACrB,sBAAI,MAAM;AACR,wBAAI,MAAM,KAAK,IACb,KAAK,KAAK,SAAS;AACrB,2BAAO,KAAK,IAAI;AACd,6BAAO,KAAK,MAAM,CAAC;AACnB,0BAAI,KAAK,YAAY,QAAW;AAC9B,4BAAI,YAAY,QAAQ,MAAM,KAAK;AACnC,4BAAIA,IAAG,eAAe;AACpB,8BAAIA,IAAG,KAAK,gBAAgB;AAC1B,gCAAI,cAAc,6BAA6B;AAC/C,gCAAIA,IAAG,KAAK,mBAAmB,MAAO,CAAAA,IAAG,OAAO,KAAK,WAAW;AAAA,gCAC3D,OAAM,IAAI,MAAM,WAAW;AAAA,0BAClC;AAAA,wBACF,OAAO;AACL,iCAAO,UAAW,YAAa;AAC/B,8BAAIA,IAAG,KAAK,eAAe,SAAS;AAClC,mCAAO,SAAU,YAAa,kBAAmB,YAAa;AAAA,0BAChE;AACA,iCAAO,QAAS,YAAa;AAC7B,8BAAIA,IAAG,KAAK,eAAe,UAAU;AACnC,mCAAO,MAAOA,IAAG,WAAW,KAAK,OAAO,IAAK;AAAA,0BAC/C,OAAO;AACL,mCAAO,MAAO,KAAK,UAAU,KAAK,OAAO,IAAK;AAAA,0BAChD;AACA,iCAAO;AAAA,wBACT;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AACA,kBAAI,OAAO,YAAY;AACvB,kBAAI,MAAM;AACR,oBAAI,OAAO,KAAK,IACd,KAAK,KAAK,SAAS;AACrB,uBAAO,KAAK,IAAI;AACd,0BAAQ,KAAK,MAAM,CAAC;AACpB,sBAAI,eAAe,KAAK,GAAG;AACzB,wBAAI,QAAQ,MAAM,KAAKA,KAAI,MAAM,SAAS,YAAY,IAAI;AAC1D,wBAAI,OAAO;AACT,6BAAO,MAAO,QAAS;AACvB,0BAAI,eAAe;AACjB,2CAAmB;AAAA,sBACrB;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AACA,kBAAI,eAAe;AACjB,uBAAO,MAAO,kBAAmB;AACjC,kCAAkB;AAAA,cACpB;AACA,kBAAI,YAAY,MAAM;AACpB,uBAAO;AACP,oBAAI,eAAe,gBAAgB,YAAY,QAAQ,CAAC,gBAAgB;AACtE,yBAAO;AACP,sBAAI,cAAcA,IAAG,aAAa,SAChC,iBAAiBA,IAAG,gBAAgB;AACtC,sBAAI,aAAa,cAAc,CAAC;AAChC,6BAAW,KAAK,GAAG;AACnB,wBAAM;AACN,sBAAIA,IAAG,iBAAiB,OAAO;AAC7B,2BAAO,mBAAoB,iBAAiB,UAAU,sCAA0CA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK;AAC/K,wBAAI,cAAc;AAChB,6BAAO,KAAM,YAAY,KAAK,GAAG;AAAA,oBACnC,OAAO;AACL,6BAAO,KAAM;AAAA,oBACf;AACA,2BAAO;AACP,wBAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,6BAAO;AACP,0BAAI,cAAc;AAChB,+BAAO,KAAM,YAAY,KAAK,GAAG;AAAA,sBACnC,OAAO;AACL,+BAAO,KAAM;AAAA,sBACf;AACA,6BAAO;AAAA,oBACT;AACA,wBAAIA,IAAG,KAAK,SAAS;AACnB,6BAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,oBACvI;AACA,2BAAO;AAAA,kBACT,OAAO;AACL,2BAAO;AAAA,kBACT;AACA,sBAAI,QAAQ;AACZ,wBAAM,WAAW,IAAI;AACrB,sBAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,wBAAIA,IAAG,OAAO;AACZ,6BAAO,iCAAkC,QAAS;AAAA,oBACpD,OAAO;AACL,6BAAO,yBAA0B,QAAS;AAAA,oBAC5C;AAAA,kBACF,OAAO;AACL,2BAAO,gBAAiB,QAAS;AAAA,kBACnC;AACA,yBAAO;AAAA,gBACT;AAAA,cACF;AACA,kBAAI,eAAe;AACjB,uBAAO;AACP,oBAAI,MAAM;AACR,yBAAO;AAAA,gBACT,OAAO;AACL,yBAAO,UAAW;AAAA,gBACpB;AACA,uBAAO;AACP,mCAAmB;AAAA,cACrB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,UAAI,eAAe;AACjB,eAAO,MAAO,kBAAmB;AAAA,MACnC;AACA,UAAI,MAAM;AACR,YAAI,QAAQ;AACV,iBAAO;AACP,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AACP,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT,OAAO;AACL,eAAO,UAAW,SAAU,wBAAyB,OAAQ;AAAA,MAC/D;AAEA,eAAS,gBAAgBC,cAAa;AACpC,YAAI,QAAQA,aAAY;AACxB,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ;AAChC,cAAI,eAAe,MAAM,CAAC,CAAC,EAAG,QAAO;AAAA,MACzC;AAEA,eAAS,eAAeC,QAAO;AAC7B,eAAOF,IAAG,OAAOE,OAAM,OAAO,MAAM,UAAcA,OAAM,cAAc,2BAA2BA,MAAK;AAAA,MACxG;AAEA,eAAS,2BAA2BA,QAAO;AACzC,YAAI,OAAOA,OAAM;AACjB,iBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ;AAC/B,cAAIF,IAAG,OAAO,KAAK,CAAC,CAAC,MAAM,OAAW,QAAO;AAAA,MACjD;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACjeA;AAAA,8DAAAG,UAAAC,SAAA;AAAA;AAEA,QAAIC,WAAU;AAAd,QACI,OAAO;AADX,QAEI,eAAe;AAFnB,QAGI,kBAAkB;AAEtB,QAAI,oBAAoB;AAMxB,QAAI,aAAa,KAAK;AACtB,QAAI,QAAQ;AAGZ,QAAI,kBAAkB,aAAa;AAEnC,IAAAD,QAAO,UAAU;AAYjB,aAAS,QAAQ,QAAQE,OAAM,WAAW,QAAQ;AAGhD,UAAIC,QAAO,MACP,OAAO,KAAK,OACZ,SAAS,CAAE,MAAU,GACrB,OAAO,CAAC,GACRC,YAAW,CAAC,GACZ,eAAe,CAAC,GAChB,WAAW,CAAC,GACZ,eAAe,CAAC,GAChB,cAAc,CAAC;AAEnB,eAAS,YAAY,GAAGA,WAAU;AAChC,YAAI,aAAa,KAAK,SAAS,WAAW;AAC1C,eAAO,gBAAgB,IAAI,QAAQ,aAAa,MAAM,KAAK,eAAeA,UAAS,CAAC,CAAC,IAAI;AAAA,MAC3F;AAEA,MAAAF,QAAOA,SAAQ,EAAE,QAAgB,QAAgB,KAAW;AAE5D,UAAI,IAAI,eAAe,KAAK,MAAM,QAAQA,OAAM,MAAM;AACtD,UAAI,cAAc,KAAK,cAAc,EAAE,KAAK;AAC5C,UAAI,EAAE,UAAW,QAAQ,YAAY,eAAe;AAEpD,UAAI,UAAU,KAAK;AACnB,UAAI,QAAQ,KAAK;AAEjB,UAAI;AACF,YAAI,IAAI,aAAa,QAAQA,OAAM,WAAW,MAAM;AACpD,oBAAY,WAAW;AACvB,YAAI,KAAK,YAAY;AACrB,YAAI,IAAI;AACN,aAAG,SAAS,EAAE;AACd,aAAG,SAAS;AACZ,aAAG,OAAO,EAAE;AACZ,aAAG,SAAS,EAAE;AACd,aAAG,OAAO,EAAE;AACZ,aAAG,SAAS,EAAE;AACd,cAAI,KAAK,WAAY,IAAG,SAAS,EAAE;AAAA,QACrC;AACA,eAAO;AAAA,MACT,UAAE;AACA,qBAAa,KAAK,MAAM,QAAQA,OAAM,MAAM;AAAA,MAC9C;AAGA,eAAS,eAAe;AAEtB,YAAI,WAAW,YAAY;AAC3B,YAAI,SAAS,SAAS,MAAM,MAAM,SAAS;AAC3C,qBAAa,SAAS,SAAS;AAC/B,eAAO;AAAA,MACT;AAEA,eAAS,aAAa,SAAS,OAAOG,YAAWC,SAAQ;AACvD,YAAI,SAAS,CAAC,SAAU,SAAS,MAAM,UAAU;AACjD,YAAI,MAAM,UAAUJ,MAAK;AACvB,iBAAO,QAAQ,KAAKC,OAAM,SAAS,OAAOE,YAAWC,OAAM;AAE7D,YAAI,SAAS,QAAQ,WAAW;AAEhC,YAAI,aAAa,kBAAkB;AAAA,UACjC,OAAO;AAAA,UACP,QAAQ;AAAA,UACR;AAAA,UACA,QAAQA;AAAA,UACR,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,eAAe;AAAA,UACf,WAAW;AAAA,UACX,iBAAiB,aAAa;AAAA,UAC9B;AAAA,UACA,UAAU;AAAA,UACV;AAAA,UACA,SAASL;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,QAAQE,MAAK;AAAA,UACb,MAAMA;AAAA,QACR,CAAC;AAED,qBAAa,KAAK,QAAQ,UAAU,IAAI,KAAKC,WAAU,WAAW,IACjD,KAAK,UAAU,WAAW,IAAI,KAAK,aAAa,cAAc,IAC9D;AAEjB,YAAI,KAAK,YAAa,cAAa,KAAK,YAAY,YAAY,OAAO;AAEvE,YAAI;AACJ,YAAI;AACF,cAAI,eAAe,IAAI;AAAA,YACrB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAEA,qBAAW;AAAA,YACTD;AAAA,YACA;AAAA,YACA;AAAA,YACAD;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,KAAK;AAAA,UACP;AAEA,iBAAO,CAAC,IAAI;AAAA,QACd,SAAQ,GAAG;AACT,UAAAC,MAAK,OAAO,MAAM,0CAA0C,UAAU;AACtE,gBAAM;AAAA,QACR;AAEA,iBAAS,SAAS;AAClB,iBAAS,SAAS;AAClB,iBAAS,OAAO;AAChB,iBAAS,SAAS;AAClB,iBAAS,OAAO,SAAS,WAAW;AACpC,YAAI,OAAQ,UAAS,SAAS;AAC9B,YAAI,KAAK,eAAe,MAAM;AAC5B,mBAAS,SAAS;AAAA,YAChB,MAAM;AAAA,YACN,UAAUC;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,eAAS,WAAWE,SAAQ,KAAK,QAAQ;AACvC,cAAML,SAAQ,IAAIK,SAAQ,GAAG;AAC7B,YAAI,WAAW,KAAK,GAAG;AACvB,YAAI,SAAS;AACb,YAAI,aAAa,QAAW;AAC1B,oBAAU,OAAO,QAAQ;AACzB,oBAAU,YAAY,WAAW;AACjC,iBAAO,YAAY,SAAS,OAAO;AAAA,QACrC;AACA,YAAI,CAAC,UAAUJ,MAAK,MAAM;AACxB,cAAI,YAAYA,MAAK,KAAK,GAAG;AAC7B,cAAI,cAAc,QAAW;AAC3B,sBAAUA,MAAK,OAAO,SAAS;AAC/B,sBAAU,YAAY,KAAK,OAAO;AAClC,mBAAO,YAAY,SAAS,OAAO;AAAA,UACrC;AAAA,QACF;AAEA,kBAAU,YAAY,GAAG;AACzB,YAAIK,KAAIN,SAAQ,KAAKE,OAAM,cAAcD,OAAM,GAAG;AAClD,YAAIK,OAAM,QAAW;AACnB,cAAI,cAAc,aAAa,UAAU,GAAG;AAC5C,cAAI,aAAa;AACf,YAAAA,KAAIN,SAAQ,UAAU,aAAa,KAAK,UAAU,IAC5C,cACA,QAAQ,KAAKE,OAAM,aAAaD,OAAM,WAAWI,OAAM;AAAA,UAC/D;AAAA,QACF;AAEA,YAAIC,OAAM,QAAW;AACnB,yBAAe,GAAG;AAAA,QACpB,OAAO;AACL,0BAAgB,KAAKA,EAAC;AACtB,iBAAO,YAAYA,IAAG,OAAO;AAAA,QAC/B;AAAA,MACF;AAEA,eAAS,YAAY,KAAKA,IAAG;AAC3B,YAAI,QAAQ,OAAO;AACnB,eAAO,KAAK,IAAIA;AAChB,aAAK,GAAG,IAAI;AACZ,eAAO,WAAW;AAAA,MACpB;AAEA,eAAS,eAAe,KAAK;AAC3B,eAAO,KAAK,GAAG;AAAA,MACjB;AAEA,eAAS,gBAAgB,KAAKA,IAAG;AAC/B,YAAI,QAAQ,KAAK,GAAG;AACpB,eAAO,KAAK,IAAIA;AAAA,MAClB;AAEA,eAAS,YAAYC,SAAQC,OAAM;AACjC,eAAO,OAAOD,WAAU,YAAY,OAAOA,WAAU,YAC3C,EAAE,MAAMC,OAAM,QAAQD,SAAQ,QAAQ,KAAK,IAC3C,EAAE,MAAMC,OAAM,QAAQD,WAAU,CAAC,CAACA,QAAO,OAAO;AAAA,MAC5D;AAEA,eAAS,WAAW,UAAU;AAC5B,YAAIE,SAAQ,aAAa,QAAQ;AACjC,YAAIA,WAAU,QAAW;AACvB,UAAAA,SAAQ,aAAa,QAAQ,IAAIN,UAAS;AAC1C,UAAAA,UAASM,MAAK,IAAI;AAAA,QACpB;AACA,eAAO,YAAYA;AAAA,MACrB;AAEA,eAAS,WAAWC,QAAO;AACzB,gBAAQ,OAAOA,QAAO;AAAA,UACpB,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,KAAKA;AAAA,UACd,KAAK;AACH,mBAAO,KAAK,eAAeA,MAAK;AAAA,UAClC,KAAK;AACH,gBAAIA,WAAU,KAAM,QAAO;AAC3B,gBAAI,WAAW,gBAAgBA,MAAK;AACpC,gBAAID,SAAQ,aAAa,QAAQ;AACjC,gBAAIA,WAAU,QAAW;AACvB,cAAAA,SAAQ,aAAa,QAAQ,IAAI,SAAS;AAC1C,uBAASA,MAAK,IAAIC;AAAA,YACpB;AACA,mBAAO,YAAYD;AAAA,QACvB;AAAA,MACF;AAEA,eAAS,cAAc,MAAME,SAAQ,cAAcC,KAAI;AACrD,YAAIV,MAAK,MAAM,mBAAmB,OAAO;AACvC,cAAI,OAAO,KAAK,WAAW;AAC3B,cAAI,QAAQ,CAAC,KAAK,MAAM,SAAS,SAAS;AACxC,mBAAO,OAAO,UAAU,eAAe,KAAK,cAAc,OAAO;AAAA,UACnE,CAAC;AACC,kBAAM,IAAI,MAAM,oDAAoD,KAAK,KAAK,GAAG,CAAC;AAEpF,cAAI,iBAAiB,KAAK,WAAW;AACrC,cAAI,gBAAgB;AAClB,gBAAI,QAAQ,eAAeS,OAAM;AACjC,gBAAI,CAAC,OAAO;AACV,kBAAI,UAAU,gCAAgCT,MAAK,WAAW,eAAe,MAAM;AACnF,kBAAIA,MAAK,MAAM,kBAAkB,MAAO,CAAAA,MAAK,OAAO,MAAM,OAAO;AAAA,kBAC5D,OAAM,IAAI,MAAM,OAAO;AAAA,YAC9B;AAAA,UACF;AAAA,QACF;AAEA,YAAIW,WAAU,KAAK,WAAW,SAC1B,SAAS,KAAK,WAAW,QACzB,QAAQ,KAAK,WAAW;AAE5B,YAAI;AACJ,YAAIA,UAAS;AACX,qBAAWA,SAAQ,KAAKX,OAAMS,SAAQ,cAAcC,GAAE;AAAA,QACxD,WAAW,OAAO;AAChB,qBAAW,MAAM,KAAKV,OAAMS,SAAQ,cAAcC,GAAE;AACpD,cAAI,KAAK,mBAAmB,MAAO,CAAAV,MAAK,eAAe,UAAU,IAAI;AAAA,QACvE,WAAW,QAAQ;AACjB,qBAAW,OAAO,KAAKA,OAAMU,KAAI,KAAK,SAASD,SAAQ,YAAY;AAAA,QACrE,OAAO;AACL,qBAAW,KAAK,WAAW;AAC3B,cAAI,CAAC,SAAU;AAAA,QACjB;AAEA,YAAI,aAAa;AACf,gBAAM,IAAI,MAAM,qBAAqB,KAAK,UAAU,oBAAoB;AAE1E,YAAIF,SAAQ,YAAY;AACxB,oBAAYA,MAAK,IAAI;AAErB,eAAO;AAAA,UACL,MAAM,eAAeA;AAAA,UACrB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAWA,aAAS,eAAe,QAAQR,OAAM,QAAQ;AAE5C,UAAIQ,SAAQ,UAAU,KAAK,MAAM,QAAQR,OAAM,MAAM;AACrD,UAAIQ,UAAS,EAAG,QAAO,EAAE,OAAOA,QAAO,WAAW,KAAK;AACvD,MAAAA,SAAQ,KAAK,cAAc;AAC3B,WAAK,cAAcA,MAAK,IAAI;AAAA,QAC1B;AAAA,QACA,MAAMR;AAAA,QACN;AAAA,MACF;AACA,aAAO,EAAE,OAAOQ,QAAO,WAAW,MAAM;AAAA,IAC1C;AAUA,aAAS,aAAa,QAAQR,OAAM,QAAQ;AAE1C,UAAI,IAAI,UAAU,KAAK,MAAM,QAAQA,OAAM,MAAM;AACjD,UAAI,KAAK,EAAG,MAAK,cAAc,OAAO,GAAG,CAAC;AAAA,IAC5C;AAWA,aAAS,UAAU,QAAQA,OAAM,QAAQ;AAEvC,eAAS,IAAE,GAAG,IAAE,KAAK,cAAc,QAAQ,KAAK;AAC9C,YAAI,IAAI,KAAK,cAAc,CAAC;AAC5B,YAAI,EAAE,UAAU,UAAU,EAAE,QAAQA,SAAQ,EAAE,UAAU,OAAQ,QAAO;AAAA,MACzE;AACA,aAAO;AAAA,IACT;AAGA,aAAS,YAAY,GAAG;AACtB,aAAO,gBAAgB,IAAI,iBAAiB,IAAI;AAAA,IAClD;AAGA,aAAS,WAAW,GAAG,QAAQ;AAC7B,aAAO,OAAO,CAAC,MAAM,SAAY,KAAK,eAAe,IAAI,eAAe,IAAI;AAAA,IAC9E;AAGA,aAAS,eAAe,GAAG;AACzB,aAAO,mBAAmB,IAAI,oBAAoB,IAAI;AAAA,IACxD;AAGA,aAAS,KAAK,KAAK,WAAW;AAC5B,UAAI,CAAC,IAAI,OAAQ,QAAO;AACxB,UAAIO,QAAO;AACX,eAAS,IAAE,GAAG,IAAE,IAAI,QAAQ;AAC1B,QAAAA,SAAQ,UAAU,GAAG,GAAG;AAC1B,aAAOA;AAAA,IACT;AAAA;AAAA;;;ACpYA;AAAA,sDAAAM,UAAAC,SAAA;AAAA;AAGA,QAAI,QAAQA,QAAO,UAAU,SAASC,SAAQ;AAC5C,WAAK,SAAS,CAAC;AAAA,IACjB;AAGA,UAAM,UAAU,MAAM,SAAS,UAAU,KAAKC,QAAO;AACnD,WAAK,OAAO,GAAG,IAAIA;AAAA,IACrB;AAGA,UAAM,UAAU,MAAM,SAAS,UAAU,KAAK;AAC5C,aAAO,KAAK,OAAO,GAAG;AAAA,IACxB;AAGA,UAAM,UAAU,MAAM,SAAS,UAAU,KAAK;AAC5C,aAAO,KAAK,OAAO,GAAG;AAAA,IACxB;AAGA,UAAM,UAAU,QAAQ,SAAS,cAAc;AAC7C,WAAK,SAAS,CAAC;AAAA,IACjB;AAAA;AAAA;;;ACzBA;AAAA,gEAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,OAAO;AAEX,QAAI,OAAO;AACX,QAAI,OAAO,CAAC,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,EAAE;AACjD,QAAI,OAAO;AACX,QAAI,WAAW;AACf,QAAIC,OAAM;AACV,QAAI,SAAS;AAEb,QAAI,cAAc;AAKlB,QAAIC,OAAM;AACV,QAAI,OAAO;AACX,QAAI,eAAe;AACnB,QAAI,4BAA4B;AAChC,QAAI,wBAAwB;AAG5B,IAAAF,QAAO,UAAU;AAEjB,aAAS,QAAQ,MAAM;AACrB,aAAO,QAAQ,SAAS,SAAS;AACjC,aAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,uBAAO,OAAO,IAAI,CAAC;AAAA,IACrD;AAGA,YAAQ,OAAO;AAAA;AAAA,MAEb,MAAM;AAAA;AAAA,MAEN,MAAM;AAAA,MACN,aAAa;AAAA;AAAA,MAEb,KAAK;AAAA,MACL,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,KAAKE;AAAA;AAAA;AAAA;AAAA,MAIL,OAAO;AAAA,MACP,UAAU;AAAA;AAAA,MAEV,MAAM;AAAA;AAAA,MAEN,MAAM;AAAA,MACN;AAAA;AAAA,MAEA,MAAM;AAAA;AAAA;AAAA,MAGN,gBAAgB;AAAA,MAChB,6BAA6B;AAAA;AAAA,MAE7B,yBAAyB;AAAA,IAC3B;AAGA,YAAQ,OAAO;AAAA,MACb;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,KAAKA;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,MACA,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,6BAA6B;AAAA,MAC7B,yBAAyB;AAAA,IAC3B;AAGA,aAAS,WAAW,MAAM;AAExB,aAAO,OAAO,MAAM,MAAM,OAAO,QAAQ,KAAK,OAAO,QAAQ;AAAA,IAC/D;AAGA,aAAS,KAAK,KAAK;AAEjB,UAAI,UAAU,IAAI,MAAM,IAAI;AAC5B,UAAI,CAAC,QAAS,QAAO;AAErB,UAAI,OAAO,CAAC,QAAQ,CAAC;AACrB,UAAI,QAAQ,CAAC,QAAQ,CAAC;AACtB,UAAI,MAAM,CAAC,QAAQ,CAAC;AAEpB,aAAO,SAAS,KAAK,SAAS,MAAM,OAAO,KACnC,QAAQ,SAAS,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,KAAK;AAAA,IAClE;AAGA,aAAS,KAAK,KAAK,MAAM;AACvB,UAAI,UAAU,IAAI,MAAM,IAAI;AAC5B,UAAI,CAAC,QAAS,QAAO;AAErB,UAAI,OAAO,QAAQ,CAAC;AACpB,UAAI,SAAS,QAAQ,CAAC;AACtB,UAAI,SAAS,QAAQ,CAAC;AACtB,UAAI,WAAW,QAAQ,CAAC;AACxB,cAAS,QAAQ,MAAM,UAAU,MAAM,UAAU,MACxC,QAAQ,MAAM,UAAU,MAAM,UAAU,QACzC,CAAC,QAAQ;AAAA,IACnB;AAGA,QAAI,sBAAsB;AAC1B,aAAS,UAAU,KAAK;AAEtB,UAAI,WAAW,IAAI,MAAM,mBAAmB;AAC5C,aAAO,SAAS,UAAU,KAAK,KAAK,SAAS,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,GAAG,IAAI;AAAA,IAC5E;AAGA,QAAI,mBAAmB;AACvB,aAAS,IAAI,KAAK;AAEhB,aAAO,iBAAiB,KAAK,GAAG,KAAKD,KAAI,KAAK,GAAG;AAAA,IACnD;AAGA,QAAI,WAAW;AACf,aAAS,MAAM,KAAK;AAClB,UAAI,SAAS,KAAK,GAAG,EAAG,QAAO;AAC/B,UAAI;AACF,YAAI,OAAO,GAAG;AACd,eAAO;AAAA,MACT,SAAQ,GAAG;AACT,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA;;;AC7IA;AAAA,0DAAAE,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,aAAaC,KAAI,UAAU,WAAW;AAC9D,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,SAAS,UAAU;AACvB,UAAI,QAAQ;AACZ,UAAI,WAAW,OAAO,WAAW,MAAM;AACrC,YAAIA,IAAG,QAAQ;AACb,mBAASA,IAAG;AACZ,qBAAW;AAAA,QACb,OAAO;AACL,mBAASA,IAAG,KAAK,OAAO,WAAW;AACnC,qBAAW;AAAA,QACb;AAAA,MACF,OAAO;AACL,YAAI,UAAUA,IAAG,WAAWA,IAAG,QAAQ,SAASA,IAAG,MAAM;AACzD,YAAI,YAAY,QAAW;AACzB,cAAI,WAAWA,IAAG,gBAAgB,QAAQA,IAAG,QAAQ,OAAO;AAC5D,cAAIA,IAAG,KAAK,eAAe,QAAQ;AACjC,YAAAA,IAAG,OAAO,MAAM,QAAQ;AACxB,gBAAI,aAAa,cAAc,CAAC;AAChC,uBAAW,KAAK,GAAG;AACnB,kBAAM;AACN,gBAAIA,IAAG,iBAAiB,OAAO;AAC7B,qBAAO,uDAAwEA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,wBAA0BA,IAAG,KAAK,aAAa,OAAO,IAAK;AACzN,kBAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,uBAAO,4CAA+CA,IAAG,KAAK,aAAa,OAAO,IAAK;AAAA,cACzF;AACA,kBAAIA,IAAG,KAAK,SAAS;AACnB,uBAAO,gBAAiBA,IAAG,KAAK,eAAe,OAAO,IAAK,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,cAC5I;AACA,qBAAO;AAAA,YACT,OAAO;AACL,qBAAO;AAAA,YACT;AACA,gBAAI,QAAQ;AACZ,kBAAM,WAAW,IAAI;AACrB,gBAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,kBAAIA,IAAG,OAAO;AACZ,uBAAO,iCAAkC,QAAS;AAAA,cACpD,OAAO;AACL,uBAAO,yBAA0B,QAAS;AAAA,cAC5C;AAAA,YACF,OAAO;AACL,qBAAO,gBAAiB,QAAS;AAAA,YACnC;AACA,gBAAI,eAAe;AACjB,qBAAO;AAAA,YACT;AAAA,UACF,WAAWA,IAAG,KAAK,eAAe,UAAU;AAC1C,YAAAA,IAAG,OAAO,KAAK,QAAQ;AACvB,gBAAI,eAAe;AACjB,qBAAO;AAAA,YACT;AAAA,UACF,OAAO;AACL,kBAAM,IAAIA,IAAG,gBAAgBA,IAAG,QAAQ,SAAS,QAAQ;AAAA,UAC3D;AAAA,QACF,WAAW,QAAQ,QAAQ;AACzB,cAAI,MAAMA,IAAG,KAAK,KAAKA,GAAE;AACzB,cAAI;AACJ,cAAI,aAAa,UAAU,IAAI;AAC/B,cAAI,SAAS,QAAQ;AACrB,cAAI,aAAa;AACjB,cAAI,gBAAgB;AACpB,cAAI,QAAQA,IAAG,SAAS,GAAG,EAAE,QAAQ,qBAAqB,QAAQ,IAAI;AACtE,iBAAO,MAAO,QAAS;AACvB,cAAI,eAAe;AACjB,mBAAO,UAAW,aAAc;AAAA,UAClC;AAAA,QACF,OAAO;AACL,mBAAS,QAAQ,WAAW,QAASA,IAAG,SAAS,QAAQ,WAAW;AACpE,qBAAW,QAAQ;AAAA,QACrB;AAAA,MACF;AACA,UAAI,UAAU;AACZ,YAAI,aAAa,cAAc,CAAC;AAChC,mBAAW,KAAK,GAAG;AACnB,cAAM;AACN,YAAIA,IAAG,KAAK,aAAa;AACvB,iBAAO,MAAO,WAAY;AAAA,QAC5B,OAAO;AACL,iBAAO,MAAO,WAAY;AAAA,QAC5B;AACA,eAAO,MAAO,QAAS;AACvB,YAAIA,IAAG,aAAa,MAAM;AACxB,iBAAO,QAASA,IAAG;AAAA,QACrB;AACA,YAAI,cAAc,WAAW,UAAW,WAAW,KAAM,MAAM,cAC7D,sBAAsB,WAAWA,IAAG,YAAY,QAAQ,IAAI;AAC9D,eAAO,QAAS,cAAe,QAAS,sBAAuB;AAC/D,YAAI,iBAAiB;AACrB,cAAM,WAAW,IAAI;AACrB,YAAI,QAAQ;AACV,cAAI,CAACA,IAAG,MAAO,OAAM,IAAI,MAAM,wCAAwC;AACvE,cAAI,eAAe;AACjB,mBAAO,UAAW,SAAU;AAAA,UAC9B;AACA,iBAAO,kBAAmB,iBAAkB;AAC5C,cAAI,eAAe;AACjB,mBAAO,MAAO,SAAU;AAAA,UAC1B;AACA,iBAAO;AACP,cAAI,eAAe;AACjB,mBAAO,MAAO,SAAU;AAAA,UAC1B;AACA,iBAAO;AACP,cAAI,eAAe;AACjB,mBAAO,UAAW,SAAU;AAAA,UAC9B;AAAA,QACF,OAAO;AACL,iBAAO,WAAY,iBAAkB,yCAA0C,WAAY,4CAA6C,WAAY;AACpJ,cAAI,eAAe;AACjB,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;AC3HA;AAAA,4DAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,eAAeC,KAAI,UAAU,WAAW;AAChE,UAAI,MAAM;AACV,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,MAAMA,IAAG,KAAK,KAAKA,GAAE;AACzB,UAAI,iBAAiB;AACrB,UAAI;AACJ,UAAI,aAAa,UAAU,IAAI;AAC/B,UAAI,iBAAiB,IAAI,QACvB,mBAAmB;AACrB,UAAI,OAAO;AACX,UAAI,MAAM;AACR,YAAI,MAAM,KAAK,IACb,KAAK,KAAK,SAAS;AACrB,eAAO,KAAK,IAAI;AACd,iBAAO,KAAK,MAAM,CAAC;AACnB,cAAKA,IAAG,KAAK,iBAAkB,OAAO,QAAQ,YAAY,OAAO,KAAK,IAAI,EAAE,SAAS,KAAM,SAAS,QAAQA,IAAG,KAAK,eAAe,MAAMA,IAAG,MAAM,GAAG,GAAI;AACvJ,+BAAmB;AACnB,gBAAI,SAAS;AACb,gBAAI,aAAa,cAAc,MAAM,KAAK;AAC1C,gBAAI,gBAAgB,iBAAiB,MAAM;AAC3C,mBAAO,OAAQA,IAAG,SAAS,GAAG,IAAK;AACnC,gBAAI,SAAS;AACb,gBAAI,eAAe;AACjB,qBAAO,UAAW,aAAc;AAChC,gCAAkB;AAAA,YACpB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,UAAI,eAAe;AACjB,YAAI,kBAAkB;AACpB,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO,MAAO,eAAe,MAAM,GAAG,EAAE,IAAK;AAAA,QAC/C;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACzCA;AAAA,4DAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,eAAeC,KAAI,UAAU,WAAW;AAChE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,SAAS,UAAU;AACvB,UAAI,QAAQ,WAAW;AACvB,UAAI,MAAMA,IAAG,KAAK,KAAKA,GAAE;AACzB,UAAI,iBAAiB;AACrB,UAAI;AACJ,UAAI,aAAa,UAAU,IAAI;AAC/B,UAAI,iBAAiB,QAAQ,MAAM,SAASC,OAAM;AAChD,eAAQD,IAAG,KAAK,iBAAkB,OAAOC,SAAQ,YAAY,OAAO,KAAKA,KAAI,EAAE,SAAS,KAAMA,UAAS,QAAQD,IAAG,KAAK,eAAeC,OAAMD,IAAG,MAAM,GAAG;AAAA,MAC1J,CAAC;AACD,UAAI,gBAAgB;AAClB,YAAI,iBAAiB,IAAI;AACzB,eAAO,UAAW,QAAS,oBAAqB,SAAU;AAC1D,YAAI,gBAAgBA,IAAG;AACvB,QAAAA,IAAG,gBAAgB,IAAI,gBAAgB;AACvC,YAAI,OAAO;AACX,YAAI,MAAM;AACR,cAAI,MAAM,KAAK,IACb,KAAK,KAAK,SAAS;AACrB,iBAAO,KAAK,IAAI;AACd,mBAAO,KAAK,MAAM,CAAC;AACnB,gBAAI,SAAS;AACb,gBAAI,aAAa,cAAc,MAAM,KAAK;AAC1C,gBAAI,gBAAgB,iBAAiB,MAAM;AAC3C,mBAAO,OAAQA,IAAG,SAAS,GAAG,IAAK;AACnC,gBAAI,SAAS;AACb,mBAAO,MAAO,SAAU,QAAS,SAAU,SAAU,aAAc,YAAa,SAAU;AAC1F,8BAAkB;AAAA,UACpB;AAAA,QACF;AACA,QAAAA,IAAG,gBAAgB,IAAI,gBAAgB;AACvC,eAAO,MAAO,iBAAkB,WAAY,SAAU;AACtD,YAAIA,IAAG,iBAAiB,OAAO;AAC7B,iBAAO,wDAAyEA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK;AAC/J,cAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,mBAAO;AAAA,UACT;AACA,cAAIA,IAAG,KAAK,SAAS;AACnB,mBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,UACvI;AACA,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AACA,eAAO;AACP,YAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,cAAIA,IAAG,OAAO;AACZ,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO,yBAA0B,QAAS,mCAAoC,QAAS,wBAAyB,QAAS;AACzH,YAAIA,IAAG,KAAK,WAAW;AACrB,iBAAO;AAAA,QACT;AAAA,MACF,OAAO;AACL,YAAI,eAAe;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACxEA;AAAA,8DAAAE,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,iBAAiBC,KAAI,UAAU,WAAW;AAClE,UAAI,MAAM;AACV,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,WAAWA,IAAG,KAAK,eAAe,OAAO;AAC7C,UAAIA,IAAG,KAAK,aAAa,MAAM;AAC7B,eAAO,kBAAmB,WAAY;AAAA,MACxC,WAAW,OAAOA,IAAG,KAAK,YAAY,YAAY;AAChD,eAAO,0BAA2B,WAAY,OAAQA,IAAG,KAAK,eAAe,cAAc,IAAK;AAAA,MAClG;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACbA;AAAA,4DAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,eAAeC,KAAI,UAAU,WAAW;AAChE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,SAAS,UAAU;AACvB,UAAI,UAAUA,IAAG,KAAK,SAAS,WAAW,QAAQ,OAChD;AACF,UAAI,SAAS;AACX,eAAO,gBAAiB,OAAQ,QAASA,IAAG,KAAK,QAAQ,QAAQ,OAAO,UAAUA,IAAG,WAAW,IAAK;AACrG,uBAAe,WAAW;AAAA,MAC5B,OAAO;AACL,uBAAe;AAAA,MACjB;AACA,UAAI,CAAC,SAAS;AACZ,eAAO,gBAAiB,OAAQ,uBAAwB,cAAe;AAAA,MACzE;AACA,aAAO,SAAU,SAAU,cAAe,QAAS,aAAc,OAAQ,aAAc,SAAU;AACjG,UAAI,aAAa,cAAc,CAAC;AAChC,iBAAW,KAAK,GAAG;AACnB,YAAM;AACN,UAAIA,IAAG,iBAAiB,OAAO;AAC7B,eAAO,wDAAyEA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,sCAAuC,OAAQ;AAC9M,YAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,iBAAO;AAAA,QACT;AACA,YAAIA,IAAG,KAAK,SAAS;AACnB,iBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,QACvI;AACA,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AACA,UAAI,QAAQ;AACZ,YAAM,WAAW,IAAI;AACrB,UAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,YAAIA,IAAG,OAAO;AACZ,iBAAO,iCAAkC,QAAS;AAAA,QACpD,OAAO;AACL,iBAAO,yBAA0B,QAAS;AAAA,QAC5C;AAAA,MACF,OAAO;AACL,eAAO,gBAAiB,QAAS;AAAA,MACnC;AACA,aAAO;AACP,UAAI,eAAe;AACjB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACvDA;AAAA,+DAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,kBAAkBC,KAAI,UAAU,WAAW;AACnE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,SAAS,UAAU;AACvB,UAAI,QAAQ,WAAW;AACvB,UAAI,MAAMA,IAAG,KAAK,KAAKA,GAAE;AACzB,UAAI,iBAAiB;AACrB,UAAI;AACJ,UAAI,aAAa,UAAU,IAAI;AAC/B,UAAI,OAAO,MAAM,MACf,WAAW,IAAI,YAAYA,IAAG,YAAY,GAC1C,YAAY,SAAS,UACrB,iBAAiBA,IAAG,QACpB,kBAAmBA,IAAG,KAAK,iBAAkB,OAAO,WAAW,YAAY,OAAO,KAAK,OAAO,EAAE,SAAS,KAAM,YAAY,QAAQA,IAAG,KAAK,eAAe,SAASA,IAAG,MAAM,GAAG;AACjL,aAAO,SAAU,QAAS,mBAAoB,SAAU;AACxD,UAAI,iBAAiB;AACnB,YAAI,gBAAgBA,IAAG;AACvB,QAAAA,IAAG,gBAAgB,IAAI,gBAAgB;AACvC,YAAI,SAAS;AACb,YAAI,aAAa;AACjB,YAAI,gBAAgB;AACpB,eAAO,UAAW,aAAc,wBAAyB,OAAQ,WAAY,OAAQ,QAAS,QAAS,cAAe,OAAQ;AAC9H,YAAI,YAAYA,IAAG,KAAK,YAAYA,IAAG,WAAW,MAAMA,IAAG,KAAK,cAAc,IAAI;AAClF,YAAI,YAAY,QAAQ,MAAM,OAAO;AACrC,YAAI,YAAY,QAAQ,IAAI;AAC5B,YAAI,QAAQA,IAAG,SAAS,GAAG;AAC3B,YAAI,SAAS;AACb,YAAIA,IAAG,KAAK,cAAc,OAAO,SAAS,IAAI,GAAG;AAC/C,iBAAO,MAAOA,IAAG,KAAK,WAAW,OAAO,WAAW,SAAS,IAAK;AAAA,QACnE,OAAO;AACL,iBAAO,UAAW,YAAa,QAAS,YAAa,OAAQ,QAAS;AAAA,QACxE;AACA,eAAO,UAAW,aAAc;AAChC,QAAAA,IAAG,gBAAgB,IAAI,gBAAgB;AACvC,eAAO,MAAO,iBAAkB,WAAY,aAAc;AAAA,MAC5D,OAAO;AACL,eAAO,UAAW,QAAS;AAAA,MAC7B;AACA,UAAI,aAAa,cAAc,CAAC;AAChC,iBAAW,KAAK,GAAG;AACnB,YAAM;AACN,UAAIA,IAAG,iBAAiB,OAAO;AAC7B,eAAO,2DAA4EA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK;AAClK,YAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,iBAAO;AAAA,QACT;AACA,YAAIA,IAAG,KAAK,SAAS;AACnB,iBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,QACvI;AACA,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AACA,UAAI,QAAQ;AACZ,YAAM,WAAW,IAAI;AACrB,UAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,YAAIA,IAAG,OAAO;AACZ,iBAAO,iCAAkC,QAAS;AAAA,QACpD,OAAO;AACL,iBAAO,yBAA0B,QAAS;AAAA,QAC5C;AAAA,MACF,OAAO;AACL,eAAO,gBAAiB,QAAS;AAAA,MACnC;AACA,aAAO;AACP,UAAI,iBAAiB;AACnB,eAAO,gBAAiB,QAAS,mCAAoC,QAAS,wBAAyB,QAAS;AAAA,MAClH;AACA,UAAIA,IAAG,KAAK,WAAW;AACrB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;AChFA;AAAA,mEAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,sBAAsBC,KAAI,UAAU,WAAW;AACvE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,QAAQ,WAAW;AACvB,UAAI,MAAMA,IAAG,KAAK,KAAKA,GAAE;AACzB,UAAI,iBAAiB;AACrB,UAAI;AACJ,UAAI,aAAa,UAAU,IAAI;AAC/B,UAAI,cAAc,CAAC,GACjB,gBAAgB,CAAC,GACjB,iBAAiBA,IAAG,KAAK;AAC3B,WAAK,aAAa,SAAS;AACzB,YAAI,aAAa,YAAa;AAC9B,YAAI,OAAO,QAAQ,SAAS;AAC5B,YAAI,QAAQ,MAAM,QAAQ,IAAI,IAAI,gBAAgB;AAClD,cAAM,SAAS,IAAI;AAAA,MACrB;AACA,aAAO,SAAU,QAAS;AAC1B,UAAI,oBAAoBA,IAAG;AAC3B,aAAO,gBAAiB,OAAQ;AAChC,eAAS,aAAa,eAAe;AACnC,gBAAQ,cAAc,SAAS;AAC/B,YAAI,MAAM,QAAQ;AAChB,iBAAO,WAAY,QAAUA,IAAG,KAAK,YAAY,SAAS,IAAK;AAC/D,cAAI,gBAAgB;AAClB,mBAAO,8CAA+C,QAAS,QAAUA,IAAG,KAAK,aAAa,SAAS,IAAK;AAAA,UAC9G;AACA,cAAI,eAAe;AACjB,mBAAO;AACP,gBAAI,OAAO;AACX,gBAAI,MAAM;AACR,kBAAI,cAAc,KAAK,IACrB,KAAK,KAAK,SAAS;AACrB,qBAAO,KAAK,IAAI;AACd,+BAAe,KAAK,MAAM,CAAC;AAC3B,oBAAI,IAAI;AACN,yBAAO;AAAA,gBACT;AACA,oBAAI,QAAQA,IAAG,KAAK,YAAY,YAAY,GAC1C,WAAW,QAAQ;AACrB,uBAAO,UAAW,WAAY;AAC9B,oBAAI,gBAAgB;AAClB,yBAAO,gDAAiD,QAAS,QAAUA,IAAG,KAAK,aAAa,YAAY,IAAK;AAAA,gBACnH;AACA,uBAAO,kBAAmB,OAAQ,QAASA,IAAG,KAAK,eAAeA,IAAG,KAAK,eAAe,eAAe,KAAK,IAAK;AAAA,cACpH;AAAA,YACF;AACA,mBAAO;AACP,gBAAI,gBAAgB,YAAY,MAC9B,mBAAmB,SAAU,gBAAgB;AAC/C,gBAAIA,IAAG,KAAK,wBAAwB;AAClC,cAAAA,IAAG,YAAYA,IAAG,KAAK,eAAeA,IAAG,KAAK,YAAY,mBAAmB,eAAe,IAAI,IAAI,oBAAoB,QAAQ;AAAA,YAClI;AACA,gBAAI,aAAa,cAAc,CAAC;AAChC,uBAAW,KAAK,GAAG;AACnB,kBAAM;AACN,gBAAIA,IAAG,iBAAiB,OAAO;AAC7B,qBAAO,+DAAgFA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,6BAA+BA,IAAG,KAAK,aAAa,SAAS,IAAK,0BAA6B,mBAAoB,mBAAqB,MAAM,SAAU,cAAgBA,IAAG,KAAK,aAAa,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,MAAM,KAAK,IAAI,CAAC,IAAK;AACvZ,kBAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,uBAAO;AACP,oBAAI,MAAM,UAAU,GAAG;AACrB,yBAAO,cAAeA,IAAG,KAAK,aAAa,MAAM,CAAC,CAAC;AAAA,gBACrD,OAAO;AACL,yBAAO,gBAAiBA,IAAG,KAAK,aAAa,MAAM,KAAK,IAAI,CAAC;AAAA,gBAC/D;AACA,uBAAO,oBAAqBA,IAAG,KAAK,aAAa,SAAS,IAAK;AAAA,cACjE;AACA,kBAAIA,IAAG,KAAK,SAAS;AACnB,uBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,cACvI;AACA,qBAAO;AAAA,YACT,OAAO;AACL,qBAAO;AAAA,YACT;AACA,gBAAI,QAAQ;AACZ,kBAAM,WAAW,IAAI;AACrB,gBAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,kBAAIA,IAAG,OAAO;AACZ,uBAAO,iCAAkC,QAAS;AAAA,cACpD,OAAO;AACL,uBAAO,yBAA0B,QAAS;AAAA,cAC5C;AAAA,YACF,OAAO;AACL,qBAAO,gBAAiB,QAAS;AAAA,YACnC;AAAA,UACF,OAAO;AACL,mBAAO;AACP,gBAAI,OAAO;AACX,gBAAI,MAAM;AACR,kBAAI,cAAc,KAAK,IACrB,KAAK,KAAK,SAAS;AACrB,qBAAO,KAAK,IAAI;AACd,+BAAe,KAAK,MAAM,CAAC;AAC3B,oBAAI,QAAQA,IAAG,KAAK,YAAY,YAAY,GAC1C,mBAAmBA,IAAG,KAAK,aAAa,YAAY,GACpD,WAAW,QAAQ;AACrB,oBAAIA,IAAG,KAAK,wBAAwB;AAClC,kBAAAA,IAAG,YAAYA,IAAG,KAAK,QAAQ,mBAAmB,cAAcA,IAAG,KAAK,YAAY;AAAA,gBACtF;AACA,uBAAO,WAAY,WAAY;AAC/B,oBAAI,gBAAgB;AAClB,yBAAO,gDAAiD,QAAS,QAAUA,IAAG,KAAK,aAAa,YAAY,IAAK;AAAA,gBACnH;AACA,uBAAO;AACP,oBAAIA,IAAG,iBAAiB,OAAO;AAC7B,yBAAO,+DAAgFA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,6BAA+BA,IAAG,KAAK,aAAa,SAAS,IAAK,0BAA6B,mBAAoB,mBAAqB,MAAM,SAAU,cAAgBA,IAAG,KAAK,aAAa,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,MAAM,KAAK,IAAI,CAAC,IAAK;AACvZ,sBAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,2BAAO;AACP,wBAAI,MAAM,UAAU,GAAG;AACrB,6BAAO,cAAeA,IAAG,KAAK,aAAa,MAAM,CAAC,CAAC;AAAA,oBACrD,OAAO;AACL,6BAAO,gBAAiBA,IAAG,KAAK,aAAa,MAAM,KAAK,IAAI,CAAC;AAAA,oBAC/D;AACA,2BAAO,oBAAqBA,IAAG,KAAK,aAAa,SAAS,IAAK;AAAA,kBACjE;AACA,sBAAIA,IAAG,KAAK,SAAS;AACnB,2BAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,kBACvI;AACA,yBAAO;AAAA,gBACT,OAAO;AACL,yBAAO;AAAA,gBACT;AACA,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AACP,cAAI,eAAe;AACjB,8BAAkB;AAClB,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AACA,MAAAA,IAAG,YAAY;AACf,UAAI,iBAAiB,IAAI;AACzB,eAAS,aAAa,aAAa;AACjC,YAAI,OAAO,YAAY,SAAS;AAChC,YAAKA,IAAG,KAAK,iBAAkB,OAAO,QAAQ,YAAY,OAAO,KAAK,IAAI,EAAE,SAAS,KAAM,SAAS,QAAQA,IAAG,KAAK,eAAe,MAAMA,IAAG,MAAM,GAAG,GAAI;AACvJ,iBAAO,MAAO,aAAc,mBAAoB,QAAUA,IAAG,KAAK,YAAY,SAAS,IAAK;AAC5F,cAAI,gBAAgB;AAClB,mBAAO,8CAA+C,QAAS,QAAUA,IAAG,KAAK,aAAa,SAAS,IAAK;AAAA,UAC9G;AACA,iBAAO;AACP,cAAI,SAAS;AACb,cAAI,aAAa,cAAcA,IAAG,KAAK,YAAY,SAAS;AAC5D,cAAI,gBAAgB,iBAAiB,MAAMA,IAAG,KAAK,eAAe,SAAS;AAC3E,iBAAO,OAAQA,IAAG,SAAS,GAAG,IAAK;AACnC,cAAI,SAAS;AACb,iBAAO;AACP,cAAI,eAAe;AACjB,mBAAO,UAAW,aAAc;AAChC,8BAAkB;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AACA,UAAI,eAAe;AACjB,eAAO,QAAS,iBAAkB,UAAW,QAAS;AAAA,MACxD;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACvKA;AAAA,2DAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,cAAcC,KAAI,UAAU,WAAW;AAC/D,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,SAAS,UAAU;AACvB,UAAI,UAAUA,IAAG,KAAK,SAAS,WAAW,QAAQ,OAChD;AACF,UAAI,SAAS;AACX,eAAO,gBAAiB,OAAQ,QAASA,IAAG,KAAK,QAAQ,QAAQ,OAAO,UAAUA,IAAG,WAAW,IAAK;AACrG,uBAAe,WAAW;AAAA,MAC5B,OAAO;AACL,uBAAe;AAAA,MACjB;AACA,UAAI,KAAK,MAAM,MACb,WAAW,WAAW;AACxB,UAAI,CAAC,SAAS;AACZ,eAAO,UAAW,WAAY,uBAAwB,cAAe;AAAA,MACvE;AACA,aAAO,SAAU,SAAU;AAC3B,UAAI,SAAS;AACX,eAAO,gBAAiB,OAAQ,qBAAsB,SAAU,4CAA6C,OAAQ,QAAS,SAAU;AAAA,MAC1I;AACA,aAAO,KAAM,SAAU,uBAAwB,KAAM,SAAU,KAAM,MAAO,WAAY,cAAe,KAAM,mBAAoB,QAAS,OAAQ,WAAY,MAAO,KAAM,WAAY,SAAU;AACjM,UAAI,SAAS;AACX,eAAO;AAAA,MACT;AACA,aAAO,WAAY,SAAU;AAC7B,UAAI,aAAa,cAAc,CAAC;AAChC,iBAAW,KAAK,GAAG;AACnB,YAAM;AACN,UAAIA,IAAG,iBAAiB,OAAO;AAC7B,eAAO,uDAAwEA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,uCAAwC,OAAQ;AAC9M,YAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,iBAAO;AAAA,QACT;AACA,YAAIA,IAAG,KAAK,SAAS;AACnB,iBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,QACvI;AACA,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AACA,UAAI,QAAQ;AACZ,YAAM,WAAW,IAAI;AACrB,UAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,YAAIA,IAAG,OAAO;AACZ,iBAAO,iCAAkC,QAAS;AAAA,QACpD,OAAO;AACL,iBAAO,yBAA0B,QAAS;AAAA,QAC5C;AAAA,MACF,OAAO;AACL,eAAO,gBAAiB,QAAS;AAAA,MACnC;AACA,aAAO;AACP,UAAI,eAAe;AACjB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACjEA;AAAA,6DAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,gBAAgBC,KAAI,UAAU,WAAW;AACjE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAIA,IAAG,KAAK,WAAW,OAAO;AAC5B,YAAI,eAAe;AACjB,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AACA,UAAI,UAAUA,IAAG,KAAK,SAAS,WAAW,QAAQ,OAChD;AACF,UAAI,SAAS;AACX,eAAO,gBAAiB,OAAQ,QAASA,IAAG,KAAK,QAAQ,QAAQ,OAAO,UAAUA,IAAG,WAAW,IAAK;AACrG,uBAAe,WAAW;AAAA,MAC5B,OAAO;AACL,uBAAe;AAAA,MACjB;AACA,UAAI,kBAAkBA,IAAG,KAAK,gBAC5B,gBAAgB,MAAM,QAAQ,eAAe;AAC/C,UAAI,SAAS;AACX,YAAI,UAAU,WAAW,MACvB,YAAY,aAAa,MACzB,cAAc,eAAe;AAC/B,eAAO,UAAW,UAAW,gBAAiB,eAAgB,YAAa,YAAa,eAAgB,UAAW,uBAA0B,UAAW,4BAA6B,UAAW,oBAAqB,cAAe,QAAS,YAAa,SAAU,UAAW,4BAA+B,YAAa;AAC3T,YAAIA,IAAG,OAAO;AACZ,iBAAO,eAAgB,OAAQ,QAAS,UAAW;AAAA,QACrD;AACA,eAAO,MAAO,UAAW,QAAS,UAAW;AAC7C,YAAI,SAAS;AACX,iBAAO,OAAQ,eAAgB,8BAA+B,eAAgB;AAAA,QAChF;AACA,eAAO;AACP,YAAI,mBAAmB,UAAU;AAC/B,iBAAO,OAAQ,eAAgB,UAAW,UAAW;AACrD,cAAI,eAAe;AACjB,mBAAO,2CAA4C,eAAgB;AAAA,UACrE;AACA,iBAAO;AAAA,QACT;AACA,eAAO,OAAQ,UAAW,SAAU,cAAe,UAAY,YAAa,mBAAqB,UAAW;AAC5G,YAAIA,IAAG,OAAO;AACZ,iBAAO,YAAa,OAAQ,cAAe,UAAW,MAAO,QAAS,SAAU,UAAW,MAAO,QAAS;AAAA,QAC7G,OAAO;AACL,iBAAO,MAAO,UAAW,MAAO,QAAS;AAAA,QAC3C;AACA,eAAO,QAAS,UAAW,WAAY,QAAS;AAAA,MAClD,OAAO;AACL,YAAI,UAAUA,IAAG,QAAQ,OAAO;AAChC,YAAI,CAAC,SAAS;AACZ,cAAI,mBAAmB,UAAU;AAC/B,YAAAA,IAAG,OAAO,KAAK,qBAAqB,UAAU,kCAAkCA,IAAG,gBAAgB,GAAG;AACtG,gBAAI,eAAe;AACjB,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,UACT,WAAW,iBAAiB,gBAAgB,QAAQ,OAAO,KAAK,GAAG;AACjE,gBAAI,eAAe;AACjB,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,UACT,OAAO;AACL,kBAAM,IAAI,MAAM,qBAAqB,UAAU,kCAAkCA,IAAG,gBAAgB,GAAG;AAAA,UACzG;AAAA,QACF;AACA,YAAI,YAAY,OAAO,WAAW,YAAY,EAAE,mBAAmB,WAAW,QAAQ;AACtF,YAAI,cAAc,aAAa,QAAQ,QAAQ;AAC/C,YAAI,WAAW;AACb,cAAI,SAAS,QAAQ,UAAU;AAC/B,oBAAU,QAAQ;AAAA,QACpB;AACA,YAAI,eAAe,WAAW;AAC5B,cAAI,eAAe;AACjB,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,QAAQ;AACV,cAAI,CAACA,IAAG,MAAO,OAAM,IAAI,MAAM,6BAA6B;AAC5D,cAAI,aAAa,YAAYA,IAAG,KAAK,YAAY,OAAO,IAAI;AAC5D,iBAAO,kBAAmB,aAAc,MAAO,QAAS;AAAA,QAC1D,OAAO;AACL,iBAAO;AACP,cAAI,aAAa,YAAYA,IAAG,KAAK,YAAY,OAAO;AACxD,cAAI,UAAW,eAAc;AAC7B,cAAI,OAAO,WAAW,YAAY;AAChC,mBAAO,MAAO,aAAc,MAAO,QAAS;AAAA,UAC9C,OAAO;AACL,mBAAO,MAAO,aAAc,WAAY,QAAS;AAAA,UACnD;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AACA,UAAI,aAAa,cAAc,CAAC;AAChC,iBAAW,KAAK,GAAG;AACnB,YAAM;AACN,UAAIA,IAAG,iBAAiB,OAAO;AAC7B,eAAO,yDAA0EA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK;AAChK,YAAI,SAAS;AACX,iBAAO,KAAM;AAAA,QACf,OAAO;AACL,iBAAO,KAAMA,IAAG,KAAK,eAAe,OAAO;AAAA,QAC7C;AACA,eAAO;AACP,YAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,iBAAO;AACP,cAAI,SAAS;AACX,mBAAO,SAAW,eAAgB;AAAA,UACpC,OAAO;AACL,mBAAO,KAAMA,IAAG,KAAK,aAAa,OAAO;AAAA,UAC3C;AACA,iBAAO;AAAA,QACT;AACA,YAAIA,IAAG,KAAK,SAAS;AACnB,iBAAO;AACP,cAAI,SAAS;AACX,mBAAO,oBAAqB;AAAA,UAC9B,OAAO;AACL,mBAAO,KAAMA,IAAG,KAAK,eAAe,OAAO;AAAA,UAC7C;AACA,iBAAO,6CAA8CA,IAAG,aAAc,cAAe,QAAS;AAAA,QAChG;AACA,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AACA,UAAI,QAAQ;AACZ,YAAM,WAAW,IAAI;AACrB,UAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,YAAIA,IAAG,OAAO;AACZ,iBAAO,iCAAkC,QAAS;AAAA,QACpD,OAAO;AACL,iBAAO,yBAA0B,QAAS;AAAA,QAC5C;AAAA,MACF,OAAO;AACL,eAAO,gBAAiB,QAAS;AAAA,MACnC;AACA,aAAO;AACP,UAAI,eAAe;AACjB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACrJA;AAAA,yDAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,YAAYC,KAAI,UAAU,WAAW;AAC7D,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,SAAS,UAAU;AACvB,UAAI,QAAQ,WAAW;AACvB,UAAI,MAAMA,IAAG,KAAK,KAAKA,GAAE;AACzB,UAAI;AACJ,UAAI,aAAa,UAAU,IAAI;AAC/B,UAAI,WAAWA,IAAG,OAAO,MAAM,GAC7B,WAAWA,IAAG,OAAO,MAAM,GAC3B,eAAe,aAAa,WAAcA,IAAG,KAAK,iBAAkB,OAAO,YAAY,YAAY,OAAO,KAAK,QAAQ,EAAE,SAAS,KAAM,aAAa,QAAQA,IAAG,KAAK,eAAe,UAAUA,IAAG,MAAM,GAAG,IAC1M,eAAe,aAAa,WAAcA,IAAG,KAAK,iBAAkB,OAAO,YAAY,YAAY,OAAO,KAAK,QAAQ,EAAE,SAAS,KAAM,aAAa,QAAQA,IAAG,KAAK,eAAe,UAAUA,IAAG,MAAM,GAAG,IAC1M,iBAAiB,IAAI;AACvB,UAAI,gBAAgB,cAAc;AAChC,YAAI;AACJ,YAAI,eAAe;AACnB,YAAI,SAAS;AACb,YAAI,aAAa;AACjB,YAAI,gBAAgB;AACpB,eAAO,UAAW,QAAS,oBAAqB,SAAU;AAC1D,YAAI,gBAAgBA,IAAG;AACvB,QAAAA,IAAG,gBAAgB,IAAI,gBAAgB;AACvC,eAAO,OAAQA,IAAG,SAAS,GAAG,IAAK;AACnC,YAAI,SAAS;AACb,YAAI,eAAe;AACnB,eAAO,gBAAiB,QAAS,mCAAoC,QAAS,wBAAyB,QAAS;AAChH,QAAAA,IAAG,gBAAgB,IAAI,gBAAgB;AACvC,YAAI,cAAc;AAChB,iBAAO,UAAW,aAAc;AAChC,cAAI,SAASA,IAAG,OAAO,MAAM;AAC7B,cAAI,aAAaA,IAAG,aAAa;AACjC,cAAI,gBAAgBA,IAAG,gBAAgB;AACvC,iBAAO,OAAQA,IAAG,SAAS,GAAG,IAAK;AACnC,cAAI,SAAS;AACb,iBAAO,MAAO,SAAU,QAAS,aAAc;AAC/C,cAAI,gBAAgB,cAAc;AAChC,wBAAY,aAAa;AACzB,mBAAO,UAAW,YAAa;AAAA,UACjC,OAAO;AACL,wBAAY;AAAA,UACd;AACA,iBAAO;AACP,cAAI,cAAc;AAChB,mBAAO;AAAA,UACT;AAAA,QACF,OAAO;AACL,iBAAO,WAAY,aAAc;AAAA,QACnC;AACA,YAAI,cAAc;AAChB,cAAI,SAASA,IAAG,OAAO,MAAM;AAC7B,cAAI,aAAaA,IAAG,aAAa;AACjC,cAAI,gBAAgBA,IAAG,gBAAgB;AACvC,iBAAO,OAAQA,IAAG,SAAS,GAAG,IAAK;AACnC,cAAI,SAAS;AACb,iBAAO,MAAO,SAAU,QAAS,aAAc;AAC/C,cAAI,gBAAgB,cAAc;AAChC,wBAAY,aAAa;AACzB,mBAAO,UAAW,YAAa;AAAA,UACjC,OAAO;AACL,wBAAY;AAAA,UACd;AACA,iBAAO;AAAA,QACT;AACA,eAAO,WAAY,SAAU;AAC7B,YAAIA,IAAG,iBAAiB,OAAO;AAC7B,iBAAO,qDAAsEA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,kCAAmC,YAAa;AAC5M,cAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,mBAAO,oCAAuC,YAAa;AAAA,UAC7D;AACA,cAAIA,IAAG,KAAK,SAAS;AACnB,mBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,UACvI;AACA,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AACA,eAAO;AACP,YAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,cAAIA,IAAG,OAAO;AACZ,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AACP,YAAI,eAAe;AACjB,iBAAO;AAAA,QACT;AAAA,MACF,OAAO;AACL,YAAI,eAAe;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACtGA;AAAA,4DAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,eAAeC,KAAI,UAAU,WAAW;AAChE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,SAAS,UAAU;AACvB,UAAI,QAAQ,WAAW;AACvB,UAAI,MAAMA,IAAG,KAAK,KAAKA,GAAE;AACzB,UAAI,iBAAiB;AACrB,UAAI;AACJ,UAAI,aAAa,UAAU,IAAI;AAC/B,UAAI,OAAO,MAAM,MACf,WAAW,IAAI,YAAYA,IAAG,YAAY,GAC1C,YAAY,SAAS,UACrB,iBAAiBA,IAAG;AACtB,aAAO,SAAU,QAAS,mBAAoB,SAAU;AACxD,UAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,YAAI,mBAAmBA,IAAG,OAAO;AACjC,YAAI,qBAAqB,OAAO;AAC9B,iBAAO,MAAO,SAAU,QAAS,QAAS,gBAAiB,QAAQ,SAAU;AAC7E,cAAI,qBAAqB;AACzB,2BAAiBA,IAAG,gBAAgB;AACpC,iBAAO,YAAa,SAAU;AAC9B,cAAI,aAAa,cAAc,CAAC;AAChC,qBAAW,KAAK,GAAG;AACnB,gBAAM;AACN,cAAIA,IAAG,iBAAiB,OAAO;AAC7B,mBAAO,kEAAmFA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,yBAA0B,QAAQ,SAAU;AACrN,gBAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,qBAAO,4CAA8C,QAAQ,SAAU;AAAA,YACzE;AACA,gBAAIA,IAAG,KAAK,SAAS;AACnB,qBAAO,qDAAsDA,IAAG,aAAc,cAAe,QAAS;AAAA,YACxG;AACA,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO;AAAA,UACT;AACA,cAAI,QAAQ;AACZ,gBAAM,WAAW,IAAI;AACrB,cAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,gBAAIA,IAAG,OAAO;AACZ,qBAAO,iCAAkC,QAAS;AAAA,YACpD,OAAO;AACL,qBAAO,yBAA0B,QAAS;AAAA,YAC5C;AAAA,UACF,OAAO;AACL,mBAAO,gBAAiB,QAAS;AAAA,UACnC;AACA,iBAAO;AACP,2BAAiB;AACjB,cAAI,eAAe;AACjB,8BAAkB;AAClB,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,OAAO;AACX,YAAI,MAAM;AACR,cAAI,MAAM,KAAK,IACb,KAAK,KAAK,SAAS;AACrB,iBAAO,KAAK,IAAI;AACd,mBAAO,KAAK,MAAM,CAAC;AACnB,gBAAKA,IAAG,KAAK,iBAAkB,OAAO,QAAQ,YAAY,OAAO,KAAK,IAAI,EAAE,SAAS,KAAM,SAAS,QAAQA,IAAG,KAAK,eAAe,MAAMA,IAAG,MAAM,GAAG,GAAI;AACvJ,qBAAO,MAAO,aAAc,kBAAmB,QAAS,eAAgB,KAAM;AAC9E,kBAAI,YAAY,QAAQ,MAAM,KAAK;AACnC,kBAAI,SAAS;AACb,kBAAI,aAAa,cAAc,MAAM,KAAK;AAC1C,kBAAI,gBAAgB,iBAAiB,MAAM;AAC3C,kBAAI,YAAYA,IAAG,KAAK,YAAYA,IAAG,WAAW,IAAIA,IAAG,KAAK,cAAc,IAAI;AAChF,kBAAI,YAAY,QAAQ,IAAI;AAC5B,kBAAI,QAAQA,IAAG,SAAS,GAAG;AAC3B,kBAAI,SAAS;AACb,kBAAIA,IAAG,KAAK,cAAc,OAAO,SAAS,IAAI,GAAG;AAC/C,uBAAO,MAAOA,IAAG,KAAK,WAAW,OAAO,WAAW,SAAS,IAAK;AAAA,cACnE,OAAO;AACL,uBAAO,UAAW,YAAa,QAAS,YAAa,OAAQ,QAAS;AAAA,cACxE;AACA,qBAAO;AACP,kBAAI,eAAe;AACjB,uBAAO,UAAW,aAAc;AAChC,kCAAkB;AAAA,cACpB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,YAAI,OAAO,oBAAoB,aAAaA,IAAG,KAAK,iBAAkB,OAAO,oBAAoB,YAAY,OAAO,KAAK,gBAAgB,EAAE,SAAS,KAAM,qBAAqB,QAAQA,IAAG,KAAK,eAAe,kBAAkBA,IAAG,MAAM,GAAG,IAAI;AAC9O,cAAI,SAAS;AACb,cAAI,aAAaA,IAAG,aAAa;AACjC,cAAI,gBAAgBA,IAAG,gBAAgB;AACvC,iBAAO,MAAO,aAAc,kBAAmB,QAAS,eAAgB,QAAQ,SAAU,mBAAoB,OAAQ,QAAS,QAAQ,SAAU,OAAQ,OAAQ,QAAS,QAAS,cAAe,OAAQ;AAC1M,cAAI,YAAYA,IAAG,KAAK,YAAYA,IAAG,WAAW,MAAMA,IAAG,KAAK,cAAc,IAAI;AAClF,cAAI,YAAY,QAAQ,MAAM,OAAO;AACrC,cAAI,YAAY,QAAQ,IAAI;AAC5B,cAAI,QAAQA,IAAG,SAAS,GAAG;AAC3B,cAAI,SAAS;AACb,cAAIA,IAAG,KAAK,cAAc,OAAO,SAAS,IAAI,GAAG;AAC/C,mBAAO,MAAOA,IAAG,KAAK,WAAW,OAAO,WAAW,SAAS,IAAK;AAAA,UACnE,OAAO;AACL,mBAAO,UAAW,YAAa,QAAS,YAAa,OAAQ,QAAS;AAAA,UACxE;AACA,cAAI,eAAe;AACjB,mBAAO,WAAY,aAAc;AAAA,UACnC;AACA,iBAAO;AACP,cAAI,eAAe;AACjB,mBAAO,UAAW,aAAc;AAChC,8BAAkB;AAAA,UACpB;AAAA,QACF;AAAA,MACF,WAAYA,IAAG,KAAK,iBAAkB,OAAO,WAAW,YAAY,OAAO,KAAK,OAAO,EAAE,SAAS,KAAM,YAAY,QAAQA,IAAG,KAAK,eAAe,SAASA,IAAG,MAAM,GAAG,GAAI;AAC1K,YAAI,SAAS;AACb,YAAI,aAAa;AACjB,YAAI,gBAAgB;AACpB,eAAO,gBAAiB,OAAQ,WAAsB,OAAQ,QAAS,QAAS,cAAe,OAAQ;AACvG,YAAI,YAAYA,IAAG,KAAK,YAAYA,IAAG,WAAW,MAAMA,IAAG,KAAK,cAAc,IAAI;AAClF,YAAI,YAAY,QAAQ,MAAM,OAAO;AACrC,YAAI,YAAY,QAAQ,IAAI;AAC5B,YAAI,QAAQA,IAAG,SAAS,GAAG;AAC3B,YAAI,SAAS;AACb,YAAIA,IAAG,KAAK,cAAc,OAAO,SAAS,IAAI,GAAG;AAC/C,iBAAO,MAAOA,IAAG,KAAK,WAAW,OAAO,WAAW,SAAS,IAAK;AAAA,QACnE,OAAO;AACL,iBAAO,UAAW,YAAa,QAAS,YAAa,OAAQ,QAAS;AAAA,QACxE;AACA,YAAI,eAAe;AACjB,iBAAO,WAAY,aAAc;AAAA,QACnC;AACA,eAAO;AAAA,MACT;AACA,UAAI,eAAe;AACjB,eAAO,MAAO,iBAAkB,UAAW,QAAS;AAAA,MACtD;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;AC3IA;AAAA,6DAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,gBAAgBC,KAAI,UAAU,WAAW;AACjE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI;AACJ,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,UAAUA,IAAG,KAAK,SAAS,WAAW,QAAQ,OAChD;AACF,UAAI,SAAS;AACX,eAAO,gBAAiB,OAAQ,QAASA,IAAG,KAAK,QAAQ,QAAQ,OAAO,UAAUA,IAAG,WAAW,IAAK;AACrG,uBAAe,WAAW;AAAA,MAC5B,OAAO;AACL,uBAAe;AAAA,MACjB;AACA,UAAI,SAAS,YAAY,WACvB,oBAAoB,SAAS,qBAAqB,oBAClD,cAAcA,IAAG,OAAO,iBAAiB,GACzC,cAAcA,IAAG,KAAK,SAAS,eAAe,YAAY,OAC1D,MAAM,SAAS,MAAM,KACrB,SAAS,SAAS,MAAM,KACxB,gBAAgB;AAClB,UAAI,EAAE,WAAW,OAAO,WAAW,YAAY,YAAY,SAAY;AACrE,cAAM,IAAI,MAAM,WAAW,iBAAiB;AAAA,MAC9C;AACA,UAAI,EAAE,eAAe,gBAAgB,UAAa,OAAO,eAAe,YAAY,OAAO,eAAe,YAAY;AACpH,cAAM,IAAI,MAAM,oBAAoB,4BAA4B;AAAA,MAClE;AACA,UAAI,aAAa;AACf,YAAI,mBAAmBA,IAAG,KAAK,QAAQ,YAAY,OAAO,UAAUA,IAAG,WAAW,GAChF,aAAa,cAAc,MAC3B,YAAY,aAAa,MACzB,gBAAgB,iBAAiB,MACjC,UAAU,OAAO,MACjB,SAAS,SAAU,UAAU;AAC/B,eAAO,oBAAqB,OAAQ,QAAS,mBAAoB;AACjE,2BAAmB,eAAe;AAClC,eAAO,UAAW,aAAc,WAAY,YAAa,eAAgB,mBAAoB,WAAY,YAAa,sBAAyB,YAAa,wBAA2B,YAAa;AACpM,YAAI,gBAAgB;AACpB,YAAI,aAAa,cAAc,CAAC;AAChC,mBAAW,KAAK,GAAG;AACnB,cAAM;AACN,YAAIA,IAAG,iBAAiB,OAAO;AAC7B,iBAAO,mBAAoB,iBAAiB,qBAAqB,sCAA0CA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK;AAC1L,cAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,mBAAO,kBAAoB,oBAAqB;AAAA,UAClD;AACA,cAAIA,IAAG,KAAK,SAAS;AACnB,mBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,UACvI;AACA,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AACA,YAAI,QAAQ;AACZ,cAAM,WAAW,IAAI;AACrB,YAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,cAAIA,IAAG,OAAO;AACZ,mBAAO,iCAAkC,QAAS;AAAA,UACpD,OAAO;AACL,mBAAO,yBAA0B,QAAS;AAAA,UAC5C;AAAA,QACF,OAAO;AACL,iBAAO,gBAAiB,QAAS;AAAA,QACnC;AACA,eAAO;AACP,YAAI,SAAS;AACX,iBAAO,OAAQ,eAAgB,8BAA+B,eAAgB;AAAA,QAChF;AACA,eAAO,MAAO,YAAa,uBAA0B,aAAc,QAAS,eAAgB,uBAAwB,mBAAoB,MAAO,MAAO,OAAQ,eAAgB,SAAU,QAAS,MAAO,SAAU,OAAQ,mBAAoB,QAAS,QAAS,MAAO,SAAU,MAAO,eAAgB,aAAc,aAAc,QAAS,mBAAoB,kBAAmB,QAAS,MAAO,SAAU,OAAQ,eAAgB,QAAS,QAAS,MAAO,SAAU,MAAO,eAAgB,WAAY,QAAS,UAAW,QAAS,eAAgB,OAAQ,QAAS,aAAc,SAAW,MAAO,UAAa,MAAO;AAC9lB,YAAI,YAAY,QAAW;AACzB,0BAAgB;AAChB,2BAAiBA,IAAG,gBAAgB,MAAM;AAC1C,yBAAe;AACf,oBAAU;AAAA,QACZ;AAAA,MACF,OAAO;AACL,YAAI,gBAAgB,OAAO,eAAe,UACxC,SAAS;AACX,YAAI,iBAAiB,SAAS;AAC5B,cAAI,UAAU,MAAO,SAAS;AAC9B,iBAAO;AACP,cAAI,SAAS;AACX,mBAAO,OAAQ,eAAgB,8BAA+B,eAAgB;AAAA,UAChF;AACA,iBAAO,QAAS,eAAgB,uBAAwB,cAAe,MAAO,MAAO,OAAQ,eAAgB,QAAS,QAAS,MAAO,SAAU,OAAQ,cAAe,QAAS,QAAS,MAAO,SAAU,MAAO,eAAgB,WAAY,QAAS,UAAW,QAAS;AAAA,QAC5Q,OAAO;AACL,cAAI,iBAAiB,YAAY,QAAW;AAC1C,yBAAa;AACb,4BAAgB;AAChB,6BAAiBA,IAAG,gBAAgB,MAAM;AAC1C,2BAAe;AACf,sBAAU;AAAA,UACZ,OAAO;AACL,gBAAI,cAAe,gBAAe,KAAK,SAAS,QAAQ,KAAK,EAAE,aAAa,OAAO;AACnF,gBAAI,iBAAiB,gBAAgB,eAAe,OAAO;AACzD,2BAAa;AACb,8BAAgB;AAChB,+BAAiBA,IAAG,gBAAgB,MAAM;AAC1C,wBAAU;AAAA,YACZ,OAAO;AACL,2BAAa;AACb,wBAAU;AAAA,YACZ;AAAA,UACF;AACA,cAAI,UAAU,MAAO,SAAS;AAC9B,iBAAO;AACP,cAAI,SAAS;AACX,mBAAO,OAAQ,eAAgB,8BAA+B,eAAgB;AAAA,UAChF;AACA,iBAAO,MAAO,QAAS,MAAO,SAAU,MAAO,eAAgB,SAAU,QAAS,UAAW,QAAS;AAAA,QACxG;AAAA,MACF;AACA,sBAAgB,iBAAiB;AACjC,UAAI,aAAa,cAAc,CAAC;AAChC,iBAAW,KAAK,GAAG;AACnB,YAAM;AACN,UAAIA,IAAG,iBAAiB,OAAO;AAC7B,eAAO,mBAAoB,iBAAiB,YAAY,sCAA0CA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,8BAA+B,UAAW,cAAe,eAAgB,kBAAmB,aAAc;AAC3R,YAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,iBAAO,4BAA8B,SAAU;AAC/C,cAAI,SAAS;AACX,mBAAO,SAAW;AAAA,UACpB,OAAO;AACL,mBAAO,KAAM,eAAgB;AAAA,UAC/B;AAAA,QACF;AACA,YAAIA,IAAG,KAAK,SAAS;AACnB,iBAAO;AACP,cAAI,SAAS;AACX,mBAAO,oBAAqB;AAAA,UAC9B,OAAO;AACL,mBAAO,KAAM;AAAA,UACf;AACA,iBAAO,6CAA8CA,IAAG,aAAc,cAAe,QAAS;AAAA,QAChG;AACA,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AACA,UAAI,QAAQ;AACZ,YAAM,WAAW,IAAI;AACrB,UAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,YAAIA,IAAG,OAAO;AACZ,iBAAO,iCAAkC,QAAS;AAAA,QACpD,OAAO;AACL,iBAAO,yBAA0B,QAAS;AAAA,QAC5C;AAAA,MACF,OAAO;AACL,eAAO,gBAAiB,QAAS;AAAA,MACnC;AACA,aAAO;AACP,UAAI,eAAe;AACjB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;AClKA;AAAA,kEAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,qBAAqBC,KAAI,UAAU,WAAW;AACtE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI;AACJ,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,UAAUA,IAAG,KAAK,SAAS,WAAW,QAAQ,OAChD;AACF,UAAI,SAAS;AACX,eAAO,gBAAiB,OAAQ,QAASA,IAAG,KAAK,QAAQ,QAAQ,OAAO,UAAUA,IAAG,WAAW,IAAK;AACrG,uBAAe,WAAW;AAAA,MAC5B,OAAO;AACL,uBAAe;AAAA,MACjB;AACA,UAAI,EAAE,WAAW,OAAO,WAAW,WAAW;AAC5C,cAAM,IAAI,MAAM,WAAW,iBAAiB;AAAA,MAC9C;AACA,UAAI,MAAM,YAAY,aAAa,MAAM;AACzC,aAAO;AACP,UAAI,SAAS;AACX,eAAO,OAAQ,eAAgB,8BAA+B,eAAgB;AAAA,MAChF;AACA,aAAO,MAAO,QAAS,aAAc,MAAO,MAAO,eAAgB;AACnE,UAAI,gBAAgB;AACpB,UAAI,aAAa,cAAc,CAAC;AAChC,iBAAW,KAAK,GAAG;AACnB,YAAM;AACN,UAAIA,IAAG,iBAAiB,OAAO;AAC7B,eAAO,mBAAoB,iBAAiB,iBAAiB,sCAA0CA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,yBAA0B,eAAgB;AAChO,YAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,iBAAO;AACP,cAAI,YAAY,YAAY;AAC1B,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO;AAAA,UACT;AACA,iBAAO;AACP,cAAI,SAAS;AACX,mBAAO,SAAW,eAAgB;AAAA,UACpC,OAAO;AACL,mBAAO,KAAM;AAAA,UACf;AACA,iBAAO;AAAA,QACT;AACA,YAAIA,IAAG,KAAK,SAAS;AACnB,iBAAO;AACP,cAAI,SAAS;AACX,mBAAO,oBAAqB;AAAA,UAC9B,OAAO;AACL,mBAAO,KAAM;AAAA,UACf;AACA,iBAAO,6CAA8CA,IAAG,aAAc,cAAe,QAAS;AAAA,QAChG;AACA,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AACA,UAAI,QAAQ;AACZ,YAAM,WAAW,IAAI;AACrB,UAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,YAAIA,IAAG,OAAO;AACZ,iBAAO,iCAAkC,QAAS;AAAA,QACpD,OAAO;AACL,iBAAO,yBAA0B,QAAS;AAAA,QAC5C;AAAA,MACF,OAAO;AACL,eAAO,gBAAiB,QAAS;AAAA,MACnC;AACA,aAAO;AACP,UAAI,eAAe;AACjB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;AC/EA;AAAA,mEAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,sBAAsBC,KAAI,UAAU,WAAW;AACvE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI;AACJ,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,UAAUA,IAAG,KAAK,SAAS,WAAW,QAAQ,OAChD;AACF,UAAI,SAAS;AACX,eAAO,gBAAiB,OAAQ,QAASA,IAAG,KAAK,QAAQ,QAAQ,OAAO,UAAUA,IAAG,WAAW,IAAK;AACrG,uBAAe,WAAW;AAAA,MAC5B,OAAO;AACL,uBAAe;AAAA,MACjB;AACA,UAAI,EAAE,WAAW,OAAO,WAAW,WAAW;AAC5C,cAAM,IAAI,MAAM,WAAW,iBAAiB;AAAA,MAC9C;AACA,UAAI,MAAM,YAAY,cAAc,MAAM;AAC1C,aAAO;AACP,UAAI,SAAS;AACX,eAAO,OAAQ,eAAgB,8BAA+B,eAAgB;AAAA,MAChF;AACA,UAAIA,IAAG,KAAK,YAAY,OAAO;AAC7B,eAAO,MAAO,QAAS;AAAA,MACzB,OAAO;AACL,eAAO,iBAAkB,QAAS;AAAA,MACpC;AACA,aAAO,MAAO,MAAO,MAAO,eAAgB;AAC5C,UAAI,gBAAgB;AACpB,UAAI,aAAa,cAAc,CAAC;AAChC,iBAAW,KAAK,GAAG;AACnB,YAAM;AACN,UAAIA,IAAG,iBAAiB,OAAO;AAC7B,eAAO,mBAAoB,iBAAiB,kBAAkB,sCAA0CA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,yBAA0B,eAAgB;AACjO,YAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,iBAAO;AACP,cAAI,YAAY,aAAa;AAC3B,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO;AAAA,UACT;AACA,iBAAO;AACP,cAAI,SAAS;AACX,mBAAO,SAAW,eAAgB;AAAA,UACpC,OAAO;AACL,mBAAO,KAAM;AAAA,UACf;AACA,iBAAO;AAAA,QACT;AACA,YAAIA,IAAG,KAAK,SAAS;AACnB,iBAAO;AACP,cAAI,SAAS;AACX,mBAAO,oBAAqB;AAAA,UAC9B,OAAO;AACL,mBAAO,KAAM;AAAA,UACf;AACA,iBAAO,6CAA8CA,IAAG,aAAc,cAAe,QAAS;AAAA,QAChG;AACA,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AACA,UAAI,QAAQ;AACZ,YAAM,WAAW,IAAI;AACrB,UAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,YAAIA,IAAG,OAAO;AACZ,iBAAO,iCAAkC,QAAS;AAAA,QACpD,OAAO;AACL,iBAAO,yBAA0B,QAAS;AAAA,QAC5C;AAAA,MACF,OAAO;AACL,eAAO,gBAAiB,QAAS;AAAA,MACnC;AACA,aAAO;AACP,UAAI,eAAe;AACjB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACpFA;AAAA,uEAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,0BAA0BC,KAAI,UAAU,WAAW;AAC3E,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI;AACJ,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,UAAUA,IAAG,KAAK,SAAS,WAAW,QAAQ,OAChD;AACF,UAAI,SAAS;AACX,eAAO,gBAAiB,OAAQ,QAASA,IAAG,KAAK,QAAQ,QAAQ,OAAO,UAAUA,IAAG,WAAW,IAAK;AACrG,uBAAe,WAAW;AAAA,MAC5B,OAAO;AACL,uBAAe;AAAA,MACjB;AACA,UAAI,EAAE,WAAW,OAAO,WAAW,WAAW;AAC5C,cAAM,IAAI,MAAM,WAAW,iBAAiB;AAAA,MAC9C;AACA,UAAI,MAAM,YAAY,kBAAkB,MAAM;AAC9C,aAAO;AACP,UAAI,SAAS;AACX,eAAO,OAAQ,eAAgB,8BAA+B,eAAgB;AAAA,MAChF;AACA,aAAO,kBAAmB,QAAS,cAAe,MAAO,MAAO,eAAgB;AAChF,UAAI,gBAAgB;AACpB,UAAI,aAAa,cAAc,CAAC;AAChC,iBAAW,KAAK,GAAG;AACnB,YAAM;AACN,UAAIA,IAAG,iBAAiB,OAAO;AAC7B,eAAO,mBAAoB,iBAAiB,sBAAsB,sCAA0CA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,yBAA0B,eAAgB;AACrO,YAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,iBAAO;AACP,cAAI,YAAY,iBAAiB;AAC/B,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO;AAAA,UACT;AACA,iBAAO;AACP,cAAI,SAAS;AACX,mBAAO,SAAW,eAAgB;AAAA,UACpC,OAAO;AACL,mBAAO,KAAM;AAAA,UACf;AACA,iBAAO;AAAA,QACT;AACA,YAAIA,IAAG,KAAK,SAAS;AACnB,iBAAO;AACP,cAAI,SAAS;AACX,mBAAO,oBAAqB;AAAA,UAC9B,OAAO;AACL,mBAAO,KAAM;AAAA,UACf;AACA,iBAAO,6CAA8CA,IAAG,aAAc,cAAe,QAAS;AAAA,QAChG;AACA,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AACA,UAAI,QAAQ;AACZ,YAAM,WAAW,IAAI;AACrB,UAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,YAAIA,IAAG,OAAO;AACZ,iBAAO,iCAAkC,QAAS;AAAA,QACpD,OAAO;AACL,iBAAO,yBAA0B,QAAS;AAAA,QAC5C;AAAA,MACF,OAAO;AACL,eAAO,gBAAiB,QAAS;AAAA,MACnC;AACA,aAAO;AACP,UAAI,eAAe;AACjB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;AC/EA;AAAA,iEAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,oBAAoBC,KAAI,UAAU,WAAW;AACrE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,UAAUA,IAAG,KAAK,SAAS,WAAW,QAAQ,OAChD;AACF,UAAI,SAAS;AACX,eAAO,gBAAiB,OAAQ,QAASA,IAAG,KAAK,QAAQ,QAAQ,OAAO,UAAUA,IAAG,WAAW,IAAK;AACrG,uBAAe,WAAW;AAAA,MAC5B,OAAO;AACL,uBAAe;AAAA,MACjB;AACA,UAAI,EAAE,WAAW,OAAO,WAAW,WAAW;AAC5C,cAAM,IAAI,MAAM,WAAW,iBAAiB;AAAA,MAC9C;AACA,aAAO,iBAAkB,OAAQ;AACjC,UAAI,SAAS;AACX,eAAO,MAAO,eAAgB,gCAAiC,eAAgB;AAAA,MACjF;AACA,aAAO,eAAgB,OAAQ,QAAS,QAAS,QAAS,eAAgB;AAC1E,UAAIA,IAAG,KAAK,qBAAqB;AAC/B,eAAO,kCAAmC,OAAQ,iBAAkB,OAAQ,YAAaA,IAAG,KAAK,sBAAuB;AAAA,MAC1H,OAAO;AACL,eAAO,cAAe,OAAQ,2BAA4B,OAAQ;AAAA,MACpE;AACA,aAAO;AACP,UAAI,SAAS;AACX,eAAO;AAAA,MACT;AACA,aAAO;AACP,UAAI,aAAa,cAAc,CAAC;AAChC,iBAAW,KAAK,GAAG;AACnB,YAAM;AACN,UAAIA,IAAG,iBAAiB,OAAO;AAC7B,eAAO,6DAA8EA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,8BAA+B,eAAgB;AACnN,YAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,iBAAO;AACP,cAAI,SAAS;AACX,mBAAO,SAAW;AAAA,UACpB,OAAO;AACL,mBAAO,KAAM,eAAgB;AAAA,UAC/B;AAAA,QACF;AACA,YAAIA,IAAG,KAAK,SAAS;AACnB,iBAAO;AACP,cAAI,SAAS;AACX,mBAAO,oBAAqB;AAAA,UAC9B,OAAO;AACL,mBAAO,KAAM;AAAA,UACf;AACA,iBAAO,6CAA8CA,IAAG,aAAc,cAAe,QAAS;AAAA,QAChG;AACA,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AACA,UAAI,QAAQ;AACZ,YAAM,WAAW,IAAI;AACrB,UAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,YAAIA,IAAG,OAAO;AACZ,iBAAO,iCAAkC,QAAS;AAAA,QACpD,OAAO;AACL,iBAAO,yBAA0B,QAAS;AAAA,QAC5C;AAAA,MACF,OAAO;AACL,eAAO,gBAAiB,QAAS;AAAA,MACnC;AACA,aAAO;AACP,UAAI,eAAe;AACjB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;AC/EA;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,aAAaC,KAAI,UAAU,WAAW;AAC9D,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,QAAQ,WAAW;AACvB,UAAI,MAAMA,IAAG,KAAK,KAAKA,GAAE;AACzB,UAAI;AACJ,UAAI,aAAa,UAAU,IAAI;AAC/B,UAAKA,IAAG,KAAK,iBAAkB,OAAO,WAAW,YAAY,OAAO,KAAK,OAAO,EAAE,SAAS,KAAM,YAAY,QAAQA,IAAG,KAAK,eAAe,SAASA,IAAG,MAAM,GAAG,GAAI;AACnK,YAAI,SAAS;AACb,YAAI,aAAa;AACjB,YAAI,gBAAgB;AACpB,eAAO,UAAW,QAAS;AAC3B,YAAI,gBAAgBA,IAAG;AACvB,QAAAA,IAAG,gBAAgB,IAAI,gBAAgB;AACvC,YAAI,eAAe;AACnB,YAAI;AACJ,YAAI,IAAI,KAAK,WAAW;AACtB,6BAAmB,IAAI,KAAK;AAC5B,cAAI,KAAK,YAAY;AAAA,QACvB;AACA,eAAO,MAAOA,IAAG,SAAS,GAAG,IAAK;AAClC,YAAI,eAAe;AACnB,YAAI,iBAAkB,KAAI,KAAK,YAAY;AAC3C,QAAAA,IAAG,gBAAgB,IAAI,gBAAgB;AACvC,eAAO,UAAW,aAAc;AAChC,YAAI,aAAa,cAAc,CAAC;AAChC,mBAAW,KAAK,GAAG;AACnB,cAAM;AACN,YAAIA,IAAG,iBAAiB,OAAO;AAC7B,iBAAO,sDAAuEA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK;AAC7J,cAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,mBAAO;AAAA,UACT;AACA,cAAIA,IAAG,KAAK,SAAS;AACnB,mBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,UACvI;AACA,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AACA,YAAI,QAAQ;AACZ,cAAM,WAAW,IAAI;AACrB,YAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,cAAIA,IAAG,OAAO;AACZ,mBAAO,iCAAkC,QAAS;AAAA,UACpD,OAAO;AACL,mBAAO,yBAA0B,QAAS;AAAA,UAC5C;AAAA,QACF,OAAO;AACL,iBAAO,gBAAiB,QAAS;AAAA,QACnC;AACA,eAAO,yBAA0B,QAAS,mCAAoC,QAAS,wBAAyB,QAAS;AACzH,YAAIA,IAAG,KAAK,WAAW;AACrB,iBAAO;AAAA,QACT;AAAA,MACF,OAAO;AACL,eAAO;AACP,YAAIA,IAAG,iBAAiB,OAAO;AAC7B,iBAAO,sDAAuEA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK;AAC7J,cAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,mBAAO;AAAA,UACT;AACA,cAAIA,IAAG,KAAK,SAAS;AACnB,mBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,UACvI;AACA,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AACA,eAAO;AACP,YAAI,eAAe;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACnFA;AAAA,4DAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,eAAeC,KAAI,UAAU,WAAW;AAChE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,SAAS,UAAU;AACvB,UAAI,QAAQ,WAAW;AACvB,UAAI,MAAMA,IAAG,KAAK,KAAKA,GAAE;AACzB,UAAI,iBAAiB;AACrB,UAAI;AACJ,UAAI,aAAa,UAAU,IAAI;AAC/B,UAAI,iBAAiB,IAAI,QACvB,aAAa,cAAc,MAC3B,kBAAkB,mBAAmB;AACvC,aAAO,SAAU,QAAS,iBAAkB,aAAc,gBAAiB,SAAU,gBAAiB,kBAAmB;AACzH,UAAI,gBAAgBA,IAAG;AACvB,MAAAA,IAAG,gBAAgB,IAAI,gBAAgB;AACvC,UAAI,OAAO;AACX,UAAI,MAAM;AACR,YAAI,MAAM,KAAK,IACb,KAAK,KAAK,SAAS;AACrB,eAAO,KAAK,IAAI;AACd,iBAAO,KAAK,MAAM,CAAC;AACnB,cAAKA,IAAG,KAAK,iBAAkB,OAAO,QAAQ,YAAY,OAAO,KAAK,IAAI,EAAE,SAAS,KAAM,SAAS,QAAQA,IAAG,KAAK,eAAe,MAAMA,IAAG,MAAM,GAAG,GAAI;AACvJ,gBAAI,SAAS;AACb,gBAAI,aAAa,cAAc,MAAM,KAAK;AAC1C,gBAAI,gBAAgB,iBAAiB,MAAM;AAC3C,mBAAO,OAAQA,IAAG,SAAS,GAAG,IAAK;AACnC,gBAAI,SAAS;AAAA,UACf,OAAO;AACL,mBAAO,UAAW,aAAc;AAAA,UAClC;AACA,cAAI,IAAI;AACN,mBAAO,UAAW,aAAc,SAAU,aAAc,SAAU,SAAU,eAAgB,kBAAmB,SAAU,kBAAmB,OAAQ,KAAM;AAC1J,8BAAkB;AAAA,UACpB;AACA,iBAAO,UAAW,aAAc,SAAU,SAAU,QAAS,aAAc,cAAe,kBAAmB,QAAS,KAAM;AAAA,QAC9H;AAAA,MACF;AACA,MAAAA,IAAG,gBAAgB,IAAI,gBAAgB;AACvC,aAAO,KAAM,iBAAkB,UAAW,SAAU;AACpD,UAAIA,IAAG,iBAAiB,OAAO;AAC7B,eAAO,wDAAyEA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,kCAAmC,kBAAmB;AACrN,YAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,iBAAO;AAAA,QACT;AACA,YAAIA,IAAG,KAAK,SAAS;AACnB,iBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,QACvI;AACA,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AACA,aAAO;AACP,UAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,YAAIA,IAAG,OAAO;AACZ,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO,wBAAyB,QAAS,mCAAoC,QAAS,wBAAyB,QAAS;AACxH,UAAIA,IAAG,KAAK,WAAW;AACrB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACxEA;AAAA,8DAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,iBAAiBC,KAAI,UAAU,WAAW;AAClE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,SAAS,UAAU;AACvB,UAAI,UAAUA,IAAG,KAAK,SAAS,WAAW,QAAQ,OAChD;AACF,UAAI,SAAS;AACX,eAAO,gBAAiB,OAAQ,QAASA,IAAG,KAAK,QAAQ,QAAQ,OAAO,UAAUA,IAAG,WAAW,IAAK;AACrG,uBAAe,WAAW;AAAA,MAC5B,OAAO;AACL,uBAAe;AAAA,MACjB;AACA,UAAI,cAAcA,IAAG,KAAK,SAAS,WAAW;AAC9C,UAAI,SAAS;AACX,eAAO,UAAW,SAAU,oBAAqB,SAAU,QAAS,cAAe,MAAO,eAAgB,YAAa,QAAS,qBAAsB,SAAU;AAChK,YAAI,SAAS;AACX,iBAAO,OAAQ,eAAgB,8BAA+B,eAAgB;AAAA,QAChF;AACA,eAAO,OAAQ,SAAU;AAAA,MAC3B,OAAO;AACL,YAAI,UAAUA,IAAG,WAAW,OAAO;AACnC,eAAO;AACP,YAAI,SAAS;AACX,iBAAO,OAAQ,eAAgB,8BAA+B,eAAgB;AAAA,QAChF;AACA,eAAO,OAAQ,UAAW,WAAY,QAAS;AAAA,MACjD;AACA,UAAI,aAAa,cAAc,CAAC;AAChC,iBAAW,KAAK,GAAG;AACnB,YAAM;AACN,UAAIA,IAAG,iBAAiB,OAAO;AAC7B,eAAO,0DAA2EA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK;AACjK,YAAI,SAAS;AACX,iBAAO,KAAM;AAAA,QACf,OAAO;AACL,iBAAO,KAAMA,IAAG,KAAK,eAAe,OAAO;AAAA,QAC7C;AACA,eAAO;AACP,YAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,iBAAO;AACP,cAAI,SAAS;AACX,mBAAO,SAAW,eAAgB;AAAA,UACpC,OAAO;AACL,mBAAO,KAAMA,IAAG,KAAK,aAAa,OAAO;AAAA,UAC3C;AACA,iBAAO;AAAA,QACT;AACA,YAAIA,IAAG,KAAK,SAAS;AACnB,iBAAO;AACP,cAAI,SAAS;AACX,mBAAO,oBAAqB;AAAA,UAC9B,OAAO;AACL,mBAAO,KAAMA,IAAG,KAAK,eAAe,OAAO;AAAA,UAC7C;AACA,iBAAO,6CAA8CA,IAAG,aAAc,cAAe,QAAS;AAAA,QAChG;AACA,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AACA,UAAI,QAAQ;AACZ,YAAM,WAAW,IAAI;AACrB,UAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,YAAIA,IAAG,OAAO;AACZ,iBAAO,iCAAkC,QAAS;AAAA,QACpD,OAAO;AACL,iBAAO,yBAA0B,QAAS;AAAA,QAC5C;AAAA,MACF,OAAO;AACL,eAAO,gBAAiB,QAAS;AAAA,MACnC;AACA,aAAO;AACP,UAAI,eAAe;AACjB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACpFA;AAAA,iEAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,oBAAoBC,KAAI,UAAU,WAAW;AACrE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,QAAQ,WAAW;AACvB,UAAI,MAAMA,IAAG,KAAK,KAAKA,GAAE;AACzB,UAAI,iBAAiB;AACrB,UAAI;AACJ,UAAI,aAAa,UAAU,IAAI;AAC/B,UAAI,OAAO,QAAQ,MACjB,OAAO,QAAQ,MACf,WAAW,IAAI,YAAYA,IAAG,YAAY,GAC1C,YAAY,SAAS,UACrB,kBAAkB,mBAAmB;AACvC,UAAI,cAAc,OAAO,KAAK,WAAW,CAAC,CAAC,EAAE,OAAO,QAAQ,GAC1D,eAAeA,IAAG,OAAO,qBAAqB,CAAC,GAC/C,iBAAiB,OAAO,KAAK,YAAY,EAAE,OAAO,QAAQ,GAC1D,eAAeA,IAAG,OAAO,sBACzB,kBAAkB,YAAY,UAAU,eAAe,QACvD,gBAAgB,iBAAiB,OACjC,sBAAsB,OAAO,gBAAgB,YAAY,OAAO,KAAK,YAAY,EAAE,QACnF,oBAAoBA,IAAG,KAAK,kBAC5B,mBAAmB,iBAAiB,uBAAuB,mBAC3D,iBAAiBA,IAAG,KAAK,eACzB,iBAAiBA,IAAG;AACtB,UAAI,YAAYA,IAAG,OAAO;AAC1B,UAAI,aAAa,EAAEA,IAAG,KAAK,SAAS,UAAU,UAAU,UAAU,SAASA,IAAG,KAAK,cAAc;AAC/F,YAAI,gBAAgBA,IAAG,KAAK,OAAO,SAAS;AAAA,MAC9C;AAEA,eAAS,SAAS,GAAG;AACnB,eAAO,MAAM;AAAA,MACf;AACA,aAAO,SAAU,QAAS,mBAAoB,aAAc;AAC5D,UAAI,gBAAgB;AAClB,eAAO,UAAW,kBAAmB;AAAA,MACvC;AACA,UAAI,kBAAkB;AACpB,YAAI,gBAAgB;AAClB,iBAAO,MAAO,kBAAmB,QAAS,kBAAmB,qBAAsB,QAAS,iBAAkB,OAAQ,SAAU,OAAQ,MAAO,kBAAmB,cAAe,OAAQ,eAAgB,OAAQ,QAAS,kBAAmB,MAAO,OAAQ;AAAA,QAC9P,OAAO;AACL,iBAAO,eAAgB,OAAQ,SAAU,QAAS;AAAA,QACpD;AACA,YAAI,iBAAiB;AACnB,iBAAO,sBAAuB,OAAQ;AACtC,cAAI,YAAY,QAAQ;AACtB,gBAAI,YAAY,SAAS,GAAG;AAC1B,qBAAO,wBAAyB,cAAe,qBAAsB,OAAQ;AAAA,YAC/E,OAAO;AACL,kBAAI,OAAO;AACX,kBAAI,MAAM;AACR,oBAAI,cAAc,KAAK,IACrB,KAAK,KAAK,SAAS;AACrB,uBAAO,KAAK,IAAI;AACd,iCAAe,KAAK,MAAM,CAAC;AAC3B,yBAAO,SAAU,OAAQ,SAAUA,IAAG,KAAK,eAAe,YAAY,IAAK;AAAA,gBAC7E;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,cAAI,eAAe,QAAQ;AACzB,gBAAI,OAAO;AACX,gBAAI,MAAM;AACR,kBAAI,YAAY,KAAK,IACnB,KAAK,KAAK,SAAS;AACrB,qBAAO,KAAK,IAAI;AACd,6BAAa,KAAK,MAAM,CAAC;AACzB,uBAAO,SAAUA,IAAG,WAAW,UAAU,IAAK,WAAY,OAAQ;AAAA,cACpE;AAAA,YACF;AAAA,UACF;AACA,iBAAO,yBAA0B,OAAQ;AAAA,QAC3C;AACA,YAAI,qBAAqB,OAAO;AAC9B,iBAAO,aAAc,QAAS,MAAO,OAAQ;AAAA,QAC/C,OAAO;AACL,cAAI,oBAAoBA,IAAG;AAC3B,cAAI,sBAAsB,SAAU,OAAO;AAC3C,cAAIA,IAAG,KAAK,wBAAwB;AAClC,YAAAA,IAAG,YAAYA,IAAG,KAAK,YAAYA,IAAG,WAAW,MAAMA,IAAG,KAAK,YAAY;AAAA,UAC7E;AACA,cAAI,eAAe;AACjB,gBAAI,mBAAmB;AACrB,qBAAO,aAAc,QAAS,MAAO,OAAQ;AAAA,YAC/C,OAAO;AACL,qBAAO,MAAO,aAAc;AAC5B,kBAAI,qBAAqB;AACzB,+BAAiBA,IAAG,gBAAgB;AACpC,kBAAI,aAAa,cAAc,CAAC;AAChC,yBAAW,KAAK,GAAG;AACnB,oBAAM;AACN,kBAAIA,IAAG,iBAAiB,OAAO;AAC7B,uBAAO,uEAAwFA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,uCAAyC,sBAAuB;AAC9O,oBAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,yBAAO;AACP,sBAAIA,IAAG,KAAK,wBAAwB;AAClC,2BAAO;AAAA,kBACT,OAAO;AACL,2BAAO;AAAA,kBACT;AACA,yBAAO;AAAA,gBACT;AACA,oBAAIA,IAAG,KAAK,SAAS;AACnB,yBAAO,qDAAsDA,IAAG,aAAc,cAAe,QAAS;AAAA,gBACxG;AACA,uBAAO;AAAA,cACT,OAAO;AACL,uBAAO;AAAA,cACT;AACA,kBAAI,QAAQ;AACZ,oBAAM,WAAW,IAAI;AACrB,kBAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,oBAAIA,IAAG,OAAO;AACZ,yBAAO,iCAAkC,QAAS;AAAA,gBACpD,OAAO;AACL,yBAAO,yBAA0B,QAAS;AAAA,gBAC5C;AAAA,cACF,OAAO;AACL,uBAAO,gBAAiB,QAAS;AAAA,cACnC;AACA,+BAAiB;AACjB,kBAAI,eAAe;AACjB,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF,WAAW,qBAAqB;AAC9B,gBAAI,qBAAqB,WAAW;AAClC,qBAAO,UAAW,QAAS;AAC3B,kBAAI,gBAAgBA,IAAG;AACvB,cAAAA,IAAG,gBAAgB,IAAI,gBAAgB;AACvC,kBAAI,SAAS;AACb,kBAAI,aAAaA,IAAG,aAAa;AACjC,kBAAI,gBAAgBA,IAAG,gBAAgB;AACvC,kBAAI,YAAYA,IAAG,KAAK,yBAAyBA,IAAG,YAAYA,IAAG,KAAK,YAAYA,IAAG,WAAW,MAAMA,IAAG,KAAK,YAAY;AAC5H,kBAAI,YAAY,QAAQ,MAAM,OAAO;AACrC,kBAAI,YAAY,QAAQ,IAAI;AAC5B,kBAAI,QAAQA,IAAG,SAAS,GAAG;AAC3B,kBAAI,SAAS;AACb,kBAAIA,IAAG,KAAK,cAAc,OAAO,SAAS,IAAI,GAAG;AAC/C,uBAAO,MAAOA,IAAG,KAAK,WAAW,OAAO,WAAW,SAAS,IAAK;AAAA,cACnE,OAAO;AACL,uBAAO,UAAW,YAAa,QAAS,YAAa,OAAQ,QAAS;AAAA,cACxE;AACA,qBAAO,WAAY,aAAc,kBAAmB,QAAS,0HAA2H,QAAS,MAAO,OAAQ;AAChN,cAAAA,IAAG,gBAAgB,IAAI,gBAAgB;AAAA,YACzC,OAAO;AACL,kBAAI,SAAS;AACb,kBAAI,aAAaA,IAAG,aAAa;AACjC,kBAAI,gBAAgBA,IAAG,gBAAgB;AACvC,kBAAI,YAAYA,IAAG,KAAK,yBAAyBA,IAAG,YAAYA,IAAG,KAAK,YAAYA,IAAG,WAAW,MAAMA,IAAG,KAAK,YAAY;AAC5H,kBAAI,YAAY,QAAQ,MAAM,OAAO;AACrC,kBAAI,YAAY,QAAQ,IAAI;AAC5B,kBAAI,QAAQA,IAAG,SAAS,GAAG;AAC3B,kBAAI,SAAS;AACb,kBAAIA,IAAG,KAAK,cAAc,OAAO,SAAS,IAAI,GAAG;AAC/C,uBAAO,MAAOA,IAAG,KAAK,WAAW,OAAO,WAAW,SAAS,IAAK;AAAA,cACnE,OAAO;AACL,uBAAO,UAAW,YAAa,QAAS,YAAa,OAAQ,QAAS;AAAA,cACxE;AACA,kBAAI,eAAe;AACjB,uBAAO,WAAY,aAAc;AAAA,cACnC;AAAA,YACF;AAAA,UACF;AACA,UAAAA,IAAG,YAAY;AAAA,QACjB;AACA,YAAI,iBAAiB;AACnB,iBAAO;AAAA,QACT;AACA,eAAO;AACP,YAAI,eAAe;AACjB,iBAAO,UAAW,aAAc;AAChC,4BAAkB;AAAA,QACpB;AAAA,MACF;AACA,UAAI,eAAeA,IAAG,KAAK,eAAe,CAACA,IAAG;AAC9C,UAAI,YAAY,QAAQ;AACtB,YAAI,OAAO;AACX,YAAI,MAAM;AACR,cAAI,cAAc,KAAK,IACrB,KAAK,KAAK,SAAS;AACrB,iBAAO,KAAK,IAAI;AACd,2BAAe,KAAK,MAAM,CAAC;AAC3B,gBAAI,OAAO,QAAQ,YAAY;AAC/B,gBAAKA,IAAG,KAAK,iBAAkB,OAAO,QAAQ,YAAY,OAAO,KAAK,IAAI,EAAE,SAAS,KAAM,SAAS,QAAQA,IAAG,KAAK,eAAe,MAAMA,IAAG,MAAM,GAAG,GAAI;AACvJ,kBAAI,QAAQA,IAAG,KAAK,YAAY,YAAY,GAC1C,YAAY,QAAQ,OACpB,cAAc,gBAAgB,KAAK,YAAY;AACjD,kBAAI,SAAS;AACb,kBAAI,aAAa,cAAc;AAC/B,kBAAI,gBAAgB,iBAAiB,MAAMA,IAAG,KAAK,eAAe,YAAY;AAC9E,kBAAI,YAAYA,IAAG,KAAK,QAAQA,IAAG,WAAW,cAAcA,IAAG,KAAK,YAAY;AAChF,kBAAI,YAAY,QAAQ,IAAIA,IAAG,KAAK,eAAe,YAAY;AAC/D,kBAAI,QAAQA,IAAG,SAAS,GAAG;AAC3B,kBAAI,SAAS;AACb,kBAAIA,IAAG,KAAK,cAAc,OAAO,SAAS,IAAI,GAAG;AAC/C,wBAAQA,IAAG,KAAK,WAAW,OAAO,WAAW,SAAS;AACtD,oBAAI,WAAW;AAAA,cACjB,OAAO;AACL,oBAAI,WAAW;AACf,uBAAO,UAAW,YAAa,QAAS,YAAa;AAAA,cACvD;AACA,kBAAI,aAAa;AACf,uBAAO,MAAO,QAAS;AAAA,cACzB,OAAO;AACL,oBAAI,iBAAiB,cAAc,YAAY,GAAG;AAChD,yBAAO,WAAY,WAAY;AAC/B,sBAAI,gBAAgB;AAClB,2BAAO,gDAAiD,QAAS,QAAUA,IAAG,KAAK,aAAa,YAAY,IAAK;AAAA,kBACnH;AACA,yBAAO,SAAU,aAAc;AAC/B,sBAAI,oBAAoBA,IAAG,WACzB,qBAAqB,gBACrB,mBAAmBA,IAAG,KAAK,aAAa,YAAY;AACtD,sBAAIA,IAAG,KAAK,wBAAwB;AAClC,oBAAAA,IAAG,YAAYA,IAAG,KAAK,QAAQ,mBAAmB,cAAcA,IAAG,KAAK,YAAY;AAAA,kBACtF;AACA,mCAAiBA,IAAG,gBAAgB;AACpC,sBAAI,aAAa,cAAc,CAAC;AAChC,6BAAW,KAAK,GAAG;AACnB,wBAAM;AACN,sBAAIA,IAAG,iBAAiB,OAAO;AAC7B,2BAAO,2DAA4EA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,oCAAsC,mBAAoB;AAC5N,wBAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,6BAAO;AACP,0BAAIA,IAAG,KAAK,wBAAwB;AAClC,+BAAO;AAAA,sBACT,OAAO;AACL,+BAAO,sCAAwC,mBAAoB;AAAA,sBACrE;AACA,6BAAO;AAAA,oBACT;AACA,wBAAIA,IAAG,KAAK,SAAS;AACnB,6BAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,oBACvI;AACA,2BAAO;AAAA,kBACT,OAAO;AACL,2BAAO;AAAA,kBACT;AACA,sBAAI,QAAQ;AACZ,wBAAM,WAAW,IAAI;AACrB,sBAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,wBAAIA,IAAG,OAAO;AACZ,6BAAO,iCAAkC,QAAS;AAAA,oBACpD,OAAO;AACL,6BAAO,yBAA0B,QAAS;AAAA,oBAC5C;AAAA,kBACF,OAAO;AACL,2BAAO,gBAAiB,QAAS;AAAA,kBACnC;AACA,mCAAiB;AACjB,kBAAAA,IAAG,YAAY;AACf,yBAAO;AAAA,gBACT,OAAO;AACL,sBAAI,eAAe;AACjB,2BAAO,WAAY,WAAY;AAC/B,wBAAI,gBAAgB;AAClB,6BAAO,gDAAiD,QAAS,QAAUA,IAAG,KAAK,aAAa,YAAY,IAAK;AAAA,oBACnH;AACA,2BAAO,SAAU,aAAc;AAAA,kBACjC,OAAO;AACL,2BAAO,UAAW,WAAY;AAC9B,wBAAI,gBAAgB;AAClB,6BAAO,gDAAiD,QAAS,QAAUA,IAAG,KAAK,aAAa,YAAY,IAAK;AAAA,oBACnH;AACA,2BAAO;AAAA,kBACT;AAAA,gBACF;AACA,uBAAO,MAAO,QAAS;AAAA,cACzB;AAAA,YACF;AACA,gBAAI,eAAe;AACjB,qBAAO,UAAW,aAAc;AAChC,gCAAkB;AAAA,YACpB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,UAAI,eAAe,QAAQ;AACzB,YAAI,OAAO;AACX,YAAI,MAAM;AACR,cAAI,YAAY,KAAK,IACnB,KAAK,KAAK,SAAS;AACrB,iBAAO,KAAK,IAAI;AACd,yBAAa,KAAK,MAAM,CAAC;AACzB,gBAAI,OAAO,aAAa,UAAU;AAClC,gBAAKA,IAAG,KAAK,iBAAkB,OAAO,QAAQ,YAAY,OAAO,KAAK,IAAI,EAAE,SAAS,KAAM,SAAS,QAAQA,IAAG,KAAK,eAAe,MAAMA,IAAG,MAAM,GAAG,GAAI;AACvJ,kBAAI,SAAS;AACb,kBAAI,aAAaA,IAAG,aAAa,uBAAuBA,IAAG,KAAK,YAAY,UAAU;AACtF,kBAAI,gBAAgBA,IAAG,gBAAgB,wBAAwBA,IAAG,KAAK,eAAe,UAAU;AAChG,kBAAI,gBAAgB;AAClB,uBAAO,MAAO,kBAAmB,QAAS,kBAAmB,qBAAsB,QAAS,iBAAkB,OAAQ,SAAU,OAAQ,MAAO,kBAAmB,cAAe,OAAQ,eAAgB,OAAQ,QAAS,kBAAmB,MAAO,OAAQ;AAAA,cAC9P,OAAO;AACL,uBAAO,eAAgB,OAAQ,SAAU,QAAS;AAAA,cACpD;AACA,qBAAO,UAAWA,IAAG,WAAW,UAAU,IAAK,WAAY,OAAQ;AACnE,kBAAI,YAAYA,IAAG,KAAK,YAAYA,IAAG,WAAW,MAAMA,IAAG,KAAK,YAAY;AAC5E,kBAAI,YAAY,QAAQ,MAAM,OAAO;AACrC,kBAAI,YAAY,QAAQ,IAAI;AAC5B,kBAAI,QAAQA,IAAG,SAAS,GAAG;AAC3B,kBAAI,SAAS;AACb,kBAAIA,IAAG,KAAK,cAAc,OAAO,SAAS,IAAI,GAAG;AAC/C,uBAAO,MAAOA,IAAG,KAAK,WAAW,OAAO,WAAW,SAAS,IAAK;AAAA,cACnE,OAAO;AACL,uBAAO,UAAW,YAAa,QAAS,YAAa,OAAQ,QAAS;AAAA,cACxE;AACA,kBAAI,eAAe;AACjB,uBAAO,WAAY,aAAc;AAAA,cACnC;AACA,qBAAO;AACP,kBAAI,eAAe;AACjB,uBAAO,WAAY,aAAc;AAAA,cACnC;AACA,qBAAO;AACP,kBAAI,eAAe;AACjB,uBAAO,UAAW,aAAc;AAChC,kCAAkB;AAAA,cACpB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,UAAI,eAAe;AACjB,eAAO,MAAO,iBAAkB,UAAW,QAAS;AAAA,MACtD;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;AC9UA;AAAA,oEAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,uBAAuBC,KAAI,UAAU,WAAW;AACxE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,QAAQ,WAAW;AACvB,UAAI,MAAMA,IAAG,KAAK,KAAKA,GAAE;AACzB,UAAI,iBAAiB;AACrB,UAAI;AACJ,UAAI,aAAa,UAAU,IAAI;AAC/B,aAAO,SAAU,QAAS;AAC1B,UAAKA,IAAG,KAAK,iBAAkB,OAAO,WAAW,YAAY,OAAO,KAAK,OAAO,EAAE,SAAS,KAAM,YAAY,QAAQA,IAAG,KAAK,eAAe,SAASA,IAAG,MAAM,GAAG,GAAI;AACnK,YAAI,SAAS;AACb,YAAI,aAAa;AACjB,YAAI,gBAAgB;AACpB,YAAI,OAAO,QAAQ,MACjB,OAAO,QAAQ,MACf,KAAK,MAAM,MACX,eAAe,SAAU,OAAO,QAChC,WAAW,IAAI,YAAYA,IAAG,YAAY,GAC1C,YAAY,SAAS,UACrB,kBAAkB,mBAAmB,MACrC,iBAAiBA,IAAG,KAAK,eACzB,iBAAiBA,IAAG;AACtB,YAAI,gBAAgB;AAClB,iBAAO,UAAW,kBAAmB;AAAA,QACvC;AACA,YAAI,gBAAgB;AAClB,iBAAO,MAAO,kBAAmB,QAAS,kBAAmB,qBAAsB,QAAS,iBAAkB,OAAQ,SAAU,OAAQ,MAAO,kBAAmB,cAAe,OAAQ,eAAgB,OAAQ,QAAS,kBAAmB,MAAO,OAAQ;AAAA,QAC9P,OAAO;AACL,iBAAO,eAAgB,OAAQ,SAAU,QAAS;AAAA,QACpD;AACA,eAAO,mBAAoB,OAAQ;AACnC,YAAI,YAAY;AAChB,YAAI,gBAAgBA,IAAG;AACvB,QAAAA,IAAG,gBAAgB,IAAI,gBAAgB;AACvC,YAAI,QAAQA,IAAG,SAAS,GAAG;AAC3B,YAAI,SAAS;AACb,YAAIA,IAAG,KAAK,cAAc,OAAO,SAAS,IAAI,GAAG;AAC/C,iBAAO,MAAOA,IAAG,KAAK,WAAW,OAAO,WAAW,SAAS,IAAK;AAAA,QACnE,OAAO;AACL,iBAAO,UAAW,YAAa,QAAS,YAAa,OAAQ,QAAS;AAAA,QACxE;AACA,QAAAA,IAAG,gBAAgB,IAAI,gBAAgB;AACvC,eAAO,WAAY,aAAc,kBAAmB,KAAM,eAAgB,OAAQ,OAAQ,KAAM,cAAe,KAAM,mBAAoB,KAAM,sBAAuB,OAAQ;AAC9K,YAAIA,IAAG,iBAAiB,OAAO;AAC7B,iBAAO,gEAAiFA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,iCAAmC,eAAgB;AAC1N,cAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,mBAAO,mCAAsC,eAAgB;AAAA,UAC/D;AACA,cAAIA,IAAG,KAAK,SAAS;AACnB,mBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,UACvI;AACA,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AACA,eAAO;AACP,YAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,cAAIA,IAAG,OAAO;AACZ,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,eAAe;AACjB,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AACA,UAAI,eAAe;AACjB,eAAO,MAAO,iBAAkB,UAAW,QAAS;AAAA,MACtD;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;AChFA;AAAA,+DAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,kBAAkBC,KAAI,UAAU,WAAW;AACnE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,SAAS,UAAU;AACvB,UAAI,UAAUA,IAAG,KAAK,SAAS,WAAW,QAAQ,OAChD;AACF,UAAI,SAAS;AACX,eAAO,gBAAiB,OAAQ,QAASA,IAAG,KAAK,QAAQ,QAAQ,OAAO,UAAUA,IAAG,WAAW,IAAK;AACrG,uBAAe,WAAW;AAAA,MAC5B,OAAO;AACL,uBAAe;AAAA,MACjB;AACA,UAAI,WAAW,WAAW;AAC1B,UAAI,CAAC,SAAS;AACZ,YAAI,QAAQ,SAASA,IAAG,KAAK,gBAAgBA,IAAG,OAAO,cAAc,OAAO,KAAKA,IAAG,OAAO,UAAU,EAAE,QAAQ;AAC7G,cAAI,YAAY,CAAC;AACjB,cAAI,OAAO;AACX,cAAI,MAAM;AACR,gBAAI,WAAW,KAAK,IAClB,KAAK,KAAK,SAAS;AACrB,mBAAO,KAAK,IAAI;AACd,0BAAY,KAAK,MAAM,CAAC;AACxB,kBAAI,eAAeA,IAAG,OAAO,WAAW,SAAS;AACjD,kBAAI,EAAE,iBAAiBA,IAAG,KAAK,iBAAkB,OAAO,gBAAgB,YAAY,OAAO,KAAK,YAAY,EAAE,SAAS,KAAM,iBAAiB,QAAQA,IAAG,KAAK,eAAe,cAAcA,IAAG,MAAM,GAAG,KAAK;AAC1M,0BAAU,UAAU,MAAM,IAAI;AAAA,cAChC;AAAA,YACF;AAAA,UACF;AAAA,QACF,OAAO;AACL,cAAI,YAAY;AAAA,QAClB;AAAA,MACF;AACA,UAAI,WAAW,UAAU,QAAQ;AAC/B,YAAI,oBAAoBA,IAAG,WACzB,gBAAgB,WAAW,UAAU,UAAUA,IAAG,KAAK,cACvD,iBAAiBA,IAAG,KAAK;AAC3B,YAAI,eAAe;AACjB,iBAAO,iBAAkB,OAAQ;AACjC,cAAI,eAAe;AACjB,gBAAI,CAAC,SAAS;AACZ,qBAAO,UAAW,WAAY,uBAAwB,cAAe;AAAA,YACvE;AACA,gBAAI,KAAK,MAAM,MACb,gBAAgB,WAAW,OAAO,MAAM,KAAK,KAC7C,mBAAmB,SAAU,gBAAgB;AAC/C,gBAAIA,IAAG,KAAK,wBAAwB;AAClC,cAAAA,IAAG,YAAYA,IAAG,KAAK,YAAY,mBAAmB,eAAeA,IAAG,KAAK,YAAY;AAAA,YAC3F;AACA,mBAAO,UAAW,SAAU;AAC5B,gBAAI,SAAS;AACX,qBAAO,gBAAiB,OAAQ,qBAAsB,SAAU,4CAA6C,OAAQ,QAAS,SAAU;AAAA,YAC1I;AACA,mBAAO,eAAgB,KAAM,WAAY,KAAM,QAAS,WAAY,cAAe,KAAM,WAAY,SAAU,QAAS,QAAS,MAAO,WAAY,MAAO,KAAM;AACjK,gBAAI,gBAAgB;AAClB,qBAAO,gDAAiD,QAAS,OAAQ,WAAY,MAAO,KAAM;AAAA,YACpG;AACA,mBAAO,YAAa,SAAU;AAC9B,gBAAI,SAAS;AACX,qBAAO;AAAA,YACT;AACA,mBAAO,YAAa,SAAU;AAC9B,gBAAI,aAAa,cAAc,CAAC;AAChC,uBAAW,KAAK,GAAG;AACnB,kBAAM;AACN,gBAAIA,IAAG,iBAAiB,OAAO;AAC7B,qBAAO,2DAA4EA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,oCAAsC,mBAAoB;AAC5N,kBAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,uBAAO;AACP,oBAAIA,IAAG,KAAK,wBAAwB;AAClC,yBAAO;AAAA,gBACT,OAAO;AACL,yBAAO,sCAAwC,mBAAoB;AAAA,gBACrE;AACA,uBAAO;AAAA,cACT;AACA,kBAAIA,IAAG,KAAK,SAAS;AACnB,uBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,cACvI;AACA,qBAAO;AAAA,YACT,OAAO;AACL,qBAAO;AAAA,YACT;AACA,gBAAI,QAAQ;AACZ,kBAAM,WAAW,IAAI;AACrB,gBAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,kBAAIA,IAAG,OAAO;AACZ,uBAAO,iCAAkC,QAAS;AAAA,cACpD,OAAO;AACL,uBAAO,yBAA0B,QAAS;AAAA,cAC5C;AAAA,YACF,OAAO;AACL,qBAAO,gBAAiB,QAAS;AAAA,YACnC;AACA,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO;AACP,gBAAI,OAAO;AACX,gBAAI,MAAM;AACR,kBAAI,cAAc,KAAK,IACrB,KAAK,KAAK,SAAS;AACrB,qBAAO,KAAK,IAAI;AACd,+BAAe,KAAK,MAAM,CAAC;AAC3B,oBAAI,IAAI;AACN,yBAAO;AAAA,gBACT;AACA,oBAAI,QAAQA,IAAG,KAAK,YAAY,YAAY,GAC1C,WAAW,QAAQ;AACrB,uBAAO,UAAW,WAAY;AAC9B,oBAAI,gBAAgB;AAClB,yBAAO,gDAAiD,QAAS,QAAUA,IAAG,KAAK,aAAa,YAAY,IAAK;AAAA,gBACnH;AACA,uBAAO,kBAAmB,OAAQ,QAASA,IAAG,KAAK,eAAeA,IAAG,KAAK,eAAe,eAAe,KAAK,IAAK;AAAA,cACpH;AAAA,YACF;AACA,mBAAO;AACP,gBAAI,gBAAgB,YAAY,MAC9B,mBAAmB,SAAU,gBAAgB;AAC/C,gBAAIA,IAAG,KAAK,wBAAwB;AAClC,cAAAA,IAAG,YAAYA,IAAG,KAAK,eAAeA,IAAG,KAAK,YAAY,mBAAmB,eAAe,IAAI,IAAI,oBAAoB,QAAQ;AAAA,YAClI;AACA,gBAAI,aAAa,cAAc,CAAC;AAChC,uBAAW,KAAK,GAAG;AACnB,kBAAM;AACN,gBAAIA,IAAG,iBAAiB,OAAO;AAC7B,qBAAO,2DAA4EA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,oCAAsC,mBAAoB;AAC5N,kBAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,uBAAO;AACP,oBAAIA,IAAG,KAAK,wBAAwB;AAClC,yBAAO;AAAA,gBACT,OAAO;AACL,yBAAO,sCAAwC,mBAAoB;AAAA,gBACrE;AACA,uBAAO;AAAA,cACT;AACA,kBAAIA,IAAG,KAAK,SAAS;AACnB,uBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,cACvI;AACA,qBAAO;AAAA,YACT,OAAO;AACL,qBAAO;AAAA,YACT;AACA,gBAAI,QAAQ;AACZ,kBAAM,WAAW,IAAI;AACrB,gBAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,kBAAIA,IAAG,OAAO;AACZ,uBAAO,iCAAkC,QAAS;AAAA,cACpD,OAAO;AACL,uBAAO,yBAA0B,QAAS;AAAA,cAC5C;AAAA,YACF,OAAO;AACL,qBAAO,gBAAiB,QAAS;AAAA,YACnC;AACA,mBAAO;AAAA,UACT;AAAA,QACF,OAAO;AACL,cAAI,eAAe;AACjB,gBAAI,CAAC,SAAS;AACZ,qBAAO,UAAW,WAAY,uBAAwB,cAAe;AAAA,YACvE;AACA,gBAAI,KAAK,MAAM,MACb,gBAAgB,WAAW,OAAO,MAAM,KAAK,KAC7C,mBAAmB,SAAU,gBAAgB;AAC/C,gBAAIA,IAAG,KAAK,wBAAwB;AAClC,cAAAA,IAAG,YAAYA,IAAG,KAAK,YAAY,mBAAmB,eAAeA,IAAG,KAAK,YAAY;AAAA,YAC3F;AACA,gBAAI,SAAS;AACX,qBAAO,UAAW,WAAY,wBAAyB,WAAY;AACnE,kBAAIA,IAAG,iBAAiB,OAAO;AAC7B,uBAAO,2DAA4EA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,oCAAsC,mBAAoB;AAC5N,oBAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,yBAAO;AACP,sBAAIA,IAAG,KAAK,wBAAwB;AAClC,2BAAO;AAAA,kBACT,OAAO;AACL,2BAAO,sCAAwC,mBAAoB;AAAA,kBACrE;AACA,yBAAO;AAAA,gBACT;AACA,oBAAIA,IAAG,KAAK,SAAS;AACnB,yBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,gBACvI;AACA,uBAAO;AAAA,cACT,OAAO;AACL,uBAAO;AAAA,cACT;AACA,qBAAO,4FAA6F,WAAY;AAAA,YAClH;AACA,mBAAO,eAAgB,KAAM,WAAY,KAAM,QAAS,WAAY,cAAe,KAAM,eAAgB,QAAS,MAAO,WAAY,MAAO,KAAM;AAClJ,gBAAI,gBAAgB;AAClB,qBAAO,gDAAiD,QAAS,OAAQ,WAAY,MAAO,KAAM;AAAA,YACpG;AACA,mBAAO;AACP,gBAAIA,IAAG,iBAAiB,OAAO;AAC7B,qBAAO,2DAA4EA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,oCAAsC,mBAAoB;AAC5N,kBAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,uBAAO;AACP,oBAAIA,IAAG,KAAK,wBAAwB;AAClC,yBAAO;AAAA,gBACT,OAAO;AACL,yBAAO,sCAAwC,mBAAoB;AAAA,gBACrE;AACA,uBAAO;AAAA,cACT;AACA,kBAAIA,IAAG,KAAK,SAAS;AACnB,uBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,cACvI;AACA,qBAAO;AAAA,YACT,OAAO;AACL,qBAAO;AAAA,YACT;AACA,mBAAO;AACP,gBAAI,SAAS;AACX,qBAAO;AAAA,YACT;AAAA,UACF,OAAO;AACL,gBAAI,OAAO;AACX,gBAAI,MAAM;AACR,kBAAI,cAAc,KAAK,IACrB,KAAK,KAAK,SAAS;AACrB,qBAAO,KAAK,IAAI;AACd,+BAAe,KAAK,MAAM,CAAC;AAC3B,oBAAI,QAAQA,IAAG,KAAK,YAAY,YAAY,GAC1C,mBAAmBA,IAAG,KAAK,aAAa,YAAY,GACpD,WAAW,QAAQ;AACrB,oBAAIA,IAAG,KAAK,wBAAwB;AAClC,kBAAAA,IAAG,YAAYA,IAAG,KAAK,QAAQ,mBAAmB,cAAcA,IAAG,KAAK,YAAY;AAAA,gBACtF;AACA,uBAAO,WAAY,WAAY;AAC/B,oBAAI,gBAAgB;AAClB,yBAAO,gDAAiD,QAAS,QAAUA,IAAG,KAAK,aAAa,YAAY,IAAK;AAAA,gBACnH;AACA,uBAAO;AACP,oBAAIA,IAAG,iBAAiB,OAAO;AAC7B,yBAAO,2DAA4EA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,oCAAsC,mBAAoB;AAC5N,sBAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,2BAAO;AACP,wBAAIA,IAAG,KAAK,wBAAwB;AAClC,6BAAO;AAAA,oBACT,OAAO;AACL,6BAAO,sCAAwC,mBAAoB;AAAA,oBACrE;AACA,2BAAO;AAAA,kBACT;AACA,sBAAIA,IAAG,KAAK,SAAS;AACnB,2BAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,kBACvI;AACA,yBAAO;AAAA,gBACT,OAAO;AACL,yBAAO;AAAA,gBACT;AACA,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,QAAAA,IAAG,YAAY;AAAA,MACjB,WAAW,eAAe;AACxB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;AC7QA;AAAA,kEAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,qBAAqBC,KAAI,UAAU,WAAW;AACtE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,SAAS,UAAU;AACvB,UAAI,UAAUA,IAAG,KAAK,SAAS,WAAW,QAAQ,OAChD;AACF,UAAI,SAAS;AACX,eAAO,gBAAiB,OAAQ,QAASA,IAAG,KAAK,QAAQ,QAAQ,OAAO,UAAUA,IAAG,WAAW,IAAK;AACrG,uBAAe,WAAW;AAAA,MAC5B,OAAO;AACL,uBAAe;AAAA,MACjB;AACA,WAAK,WAAW,YAAYA,IAAG,KAAK,gBAAgB,OAAO;AACzD,YAAI,SAAS;AACX,iBAAO,UAAW,SAAU,WAAY,eAAgB,mBAAoB,eAAgB,qBAAsB,SAAU,8BAA+B,eAAgB,oBAAuB,SAAU;AAAA,QAC9M;AACA,eAAO,cAAe,QAAS,eAAgB,SAAU;AACzD,YAAI,YAAYA,IAAG,OAAO,SAASA,IAAG,OAAO,MAAM,MACjD,eAAe,MAAM,QAAQ,SAAS;AACxC,YAAI,CAAC,aAAa,aAAa,YAAY,aAAa,WAAY,iBAAiB,UAAU,QAAQ,QAAQ,KAAK,KAAK,UAAU,QAAQ,OAAO,KAAK,IAAK;AAC1J,iBAAO,yDAA0D,QAAS,UAAW,QAAS,aAAc,SAAU;AAAA,QACxH,OAAO;AACL,iBAAO,2DAA4D,QAAS;AAC5E,cAAI,UAAU,mBAAmB,eAAe,MAAM;AACtD,iBAAO,UAAWA,IAAG,KAAK,OAAO,EAAE,WAAW,QAAQA,IAAG,KAAK,eAAe,IAAI,IAAK;AACtF,cAAI,cAAc;AAChB,mBAAO;AAAA,UACT;AACA,iBAAO,kDAAqD,SAAU;AAAA,QACxE;AACA,eAAO;AACP,YAAI,SAAS;AACX,iBAAO;AAAA,QACT;AACA,eAAO,WAAY,SAAU;AAC7B,YAAI,aAAa,cAAc,CAAC;AAChC,mBAAW,KAAK,GAAG;AACnB,cAAM;AACN,YAAIA,IAAG,iBAAiB,OAAO;AAC7B,iBAAO,8DAA+EA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK;AACrK,cAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,mBAAO;AAAA,UACT;AACA,cAAIA,IAAG,KAAK,SAAS;AACnB,mBAAO;AACP,gBAAI,SAAS;AACX,qBAAO,oBAAqB;AAAA,YAC9B,OAAO;AACL,qBAAO,KAAM;AAAA,YACf;AACA,mBAAO,6CAA8CA,IAAG,aAAc,cAAe,QAAS;AAAA,UAChG;AACA,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AACA,YAAI,QAAQ;AACZ,cAAM,WAAW,IAAI;AACrB,YAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,cAAIA,IAAG,OAAO;AACZ,mBAAO,iCAAkC,QAAS;AAAA,UACpD,OAAO;AACL,mBAAO,yBAA0B,QAAS;AAAA,UAC5C;AAAA,QACF,OAAO;AACL,iBAAO,gBAAiB,QAAS;AAAA,QACnC;AACA,eAAO;AACP,YAAI,eAAe;AACjB,iBAAO;AAAA,QACT;AAAA,MACF,OAAO;AACL,YAAI,eAAe;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACrFA;AAAA,4DAAAC,UAAAC,SAAA;AAAA;AAGA,IAAAA,QAAO,UAAU;AAAA,MACf,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,UAAU;AAAA,MACV,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,MACT,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,MACV,WAAW;AAAA,MACX,WAAW;AAAA,MACX,eAAe;AAAA,MACf,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,UAAU;AAAA,MACV,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA;AAAA;;;AChCA,IAAAC,iBAAA;AAAA,8DAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,cAAc;AAAlB,QACI,SAAS,eAAkB;AAE/B,IAAAA,QAAO,UAAU,SAAS,QAAQ;AAChC,UAAI,QAAQ;AAAA,QACV;AAAA,UAAE,MAAM;AAAA,UACN,OAAO;AAAA,YAAE,EAAE,WAAW,CAAC,kBAAkB,EAAE;AAAA,YAClC,EAAE,WAAW,CAAC,kBAAkB,EAAE;AAAA,YAAG;AAAA,YAAc;AAAA,UAAQ;AAAA,QAAE;AAAA,QACxE;AAAA,UAAE,MAAM;AAAA,UACN,OAAO,CAAE,aAAa,aAAa,WAAW,QAAS;AAAA,QAAE;AAAA,QAC3D;AAAA,UAAE,MAAM;AAAA,UACN,OAAO,CAAE,YAAY,YAAY,SAAS,YAAY,aAAc;AAAA,QAAE;AAAA,QACxE;AAAA,UAAE,MAAM;AAAA,UACN,OAAO;AAAA,YAAE;AAAA,YAAiB;AAAA,YAAiB;AAAA,YAAY;AAAA,YAAgB;AAAA,YAC9D,EAAE,cAAc,CAAC,wBAAwB,mBAAmB,EAAE;AAAA,UAAE;AAAA,QAAE;AAAA,QAC7E,EAAE,OAAO,CAAE,QAAQ,SAAS,QAAQ,OAAO,SAAS,SAAS,SAAS,IAAK,EAAE;AAAA,MAC/E;AAEA,UAAI,MAAM,CAAE,QAAQ,UAAW;AAC/B,UAAI,WAAW;AAAA,QACb;AAAA,QAAW;AAAA,QAAO;AAAA,QAAM;AAAA,QAAS;AAAA,QAAU;AAAA,QAC3C;AAAA,QAAe;AAAA,QAAW;AAAA,QAC1B;AAAA,QAAY;AAAA,QAAY;AAAA,QACxB;AAAA,QAAoB;AAAA,QACpB;AAAA,QAAmB;AAAA,QAAQ;AAAA,MAC7B;AACA,UAAI,QAAQ,CAAE,UAAU,WAAW,UAAU,SAAS,UAAU,WAAW,MAAO;AAClF,YAAM,MAAM,OAAO,GAAG;AACtB,YAAM,QAAQ,OAAO,KAAK;AAE1B,YAAM,QAAQ,SAAU,OAAO;AAC7B,cAAM,QAAQ,MAAM,MAAM,IAAI,SAAU,SAAS;AAC/C,cAAI;AACJ,cAAI,OAAO,WAAW,UAAU;AAC9B,gBAAI,MAAM,OAAO,KAAK,OAAO,EAAE,CAAC;AAChC,2BAAe,QAAQ,GAAG;AAC1B,sBAAU;AACV,yBAAa,QAAQ,SAAU,GAAG;AAChC,kBAAI,KAAK,CAAC;AACV,oBAAM,IAAI,CAAC,IAAI;AAAA,YACjB,CAAC;AAAA,UACH;AACA,cAAI,KAAK,OAAO;AAChB,cAAI,OAAO,MAAM,IAAI,OAAO,IAAI;AAAA,YAC9B;AAAA,YACA,MAAM,YAAY,OAAO;AAAA,YACzB,YAAY;AAAA,UACd;AACA,iBAAO;AAAA,QACT,CAAC;AAED,cAAM,IAAI,WAAW;AAAA,UACnB,SAAS;AAAA,UACT,MAAM,YAAY;AAAA,QACpB;AAEA,YAAI,MAAM,KAAM,OAAM,MAAM,MAAM,IAAI,IAAI;AAAA,MAC5C,CAAC;AAED,YAAM,WAAW,OAAO,IAAI,OAAO,QAAQ,CAAC;AAC5C,YAAM,SAAS,CAAC;AAEhB,aAAO;AAAA,IACT;AAAA;AAAA;;;ACjEA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,WAAW;AAAA,MACb;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,IACF;AAEA,IAAAA,QAAO,UAAU,SAAU,YAAY,sBAAsB;AAC3D,eAAS,IAAE,GAAG,IAAE,qBAAqB,QAAQ,KAAK;AAChD,qBAAa,KAAK,MAAM,KAAK,UAAU,UAAU,CAAC;AAClD,YAAI,WAAW,qBAAqB,CAAC,EAAE,MAAM,GAAG;AAChD,YAAI,WAAW;AACf,YAAI;AACJ,aAAK,IAAE,GAAG,IAAE,SAAS,QAAQ;AAC3B,qBAAW,SAAS,SAAS,CAAC,CAAC;AAEjC,aAAK,IAAE,GAAG,IAAE,SAAS,QAAQ,KAAK;AAChC,cAAI,MAAM,SAAS,CAAC;AACpB,cAAI,SAAS,SAAS,GAAG;AACzB,cAAI,QAAQ;AACV,qBAAS,GAAG,IAAI;AAAA,cACd,OAAO;AAAA,gBACL;AAAA,gBACA,EAAE,MAAM,iFAAiF;AAAA,cAC3F;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;;;AChDA;AAAA,8DAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,kBAAkB,wBAA2B;AAEjD,IAAAA,QAAO,UAAU;AAYjB,aAAS,aAAa,QAAQ,MAAM,UAAU;AAI5C,UAAIC,QAAO;AACX,UAAI,OAAO,KAAK,MAAM,cAAc;AAClC,cAAM,IAAI,MAAM,yCAAyC;AAE3D,UAAI,OAAO,QAAQ,YAAY;AAC7B,mBAAW;AACX,eAAO;AAAA,MACT;AAEA,UAAI,IAAI,iBAAiB,MAAM,EAAE,KAAK,WAAY;AAChD,YAAI,YAAYA,MAAK,WAAW,QAAQ,QAAW,IAAI;AACvD,eAAO,UAAU,YAAY,cAAc,SAAS;AAAA,MACtD,CAAC;AAED,UAAI,UAAU;AACZ,UAAE;AAAA,UACA,SAAS,GAAG;AAAE,qBAAS,MAAM,CAAC;AAAA,UAAG;AAAA,UACjC;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAGP,eAAS,iBAAiB,KAAK;AAC7B,YAAI,UAAU,IAAI;AAClB,eAAO,WAAW,CAACA,MAAK,UAAU,OAAO,IAC/B,aAAa,KAAKA,OAAM,EAAE,MAAM,QAAQ,GAAG,IAAI,IAC/C,QAAQ,QAAQ;AAAA,MAC5B;AAGA,eAAS,cAAc,WAAW;AAChC,YAAI;AAAE,iBAAOA,MAAK,SAAS,SAAS;AAAA,QAAG,SACjC,GAAG;AACP,cAAI,aAAa,gBAAiB,QAAO,kBAAkB,CAAC;AAC5D,gBAAM;AAAA,QACR;AAGA,iBAAS,kBAAkB,GAAG;AAC5B,cAAI,MAAM,EAAE;AACZ,cAAI,MAAM,GAAG,EAAG,OAAM,IAAI,MAAM,YAAY,MAAM,oBAAoB,EAAE,aAAa,qBAAqB;AAE1G,cAAI,gBAAgBA,MAAK,gBAAgB,GAAG;AAC5C,cAAI,CAAC,eAAe;AAClB,4BAAgBA,MAAK,gBAAgB,GAAG,IAAIA,MAAK,MAAM,WAAW,GAAG;AACrE,0BAAc,KAAK,eAAe,aAAa;AAAA,UACjD;AAEA,iBAAO,cAAc,KAAK,SAAU,KAAK;AACvC,gBAAI,CAAC,MAAM,GAAG,GAAG;AACf,qBAAO,iBAAiB,GAAG,EAAE,KAAK,WAAY;AAC5C,oBAAI,CAAC,MAAM,GAAG,EAAG,CAAAA,MAAK,UAAU,KAAK,KAAK,QAAW,IAAI;AAAA,cAC3D,CAAC;AAAA,YACH;AAAA,UACF,CAAC,EAAE,KAAK,WAAW;AACjB,mBAAO,cAAc,SAAS;AAAA,UAChC,CAAC;AAED,mBAAS,gBAAgB;AACvB,mBAAOA,MAAK,gBAAgB,GAAG;AAAA,UACjC;AAEA,mBAAS,MAAMC,MAAK;AAClB,mBAAOD,MAAK,MAAMC,IAAG,KAAKD,MAAK,SAASC,IAAG;AAAA,UAC7C;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACzFA;AAAA,6DAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,UAAU,SAAS,gBAAgBC,KAAI,UAAU,WAAW;AACjE,UAAI,MAAM;AACV,UAAI,OAAOA,IAAG;AACd,UAAI,WAAWA,IAAG;AAClB,UAAI,UAAUA,IAAG,OAAO,QAAQ;AAChC,UAAI,cAAcA,IAAG,aAAaA,IAAG,KAAK,YAAY,QAAQ;AAC9D,UAAI,iBAAiBA,IAAG,gBAAgB,MAAM;AAC9C,UAAI,gBAAgB,CAACA,IAAG,KAAK;AAC7B,UAAI;AACJ,UAAI,QAAQ,UAAU,YAAY;AAClC,UAAI,SAAS,UAAU;AACvB,UAAI,QAAQ,WAAW;AACvB,UAAI,UAAUA,IAAG,KAAK,SAAS,WAAW,QAAQ,OAChD;AACF,UAAI,SAAS;AACX,eAAO,gBAAiB,OAAQ,QAASA,IAAG,KAAK,QAAQ,QAAQ,OAAO,UAAUA,IAAG,WAAW,IAAK;AACrG,uBAAe,WAAW;AAAA,MAC5B,OAAO;AACL,uBAAe;AAAA,MACjB;AACA,UAAI,QAAQ,MACV,cAAc,eAAe,MAC7B,QAAQ,MAAM,YACd,iBAAiB;AACnB,UAAI,UAAU,SAAS,QAAQ,eAAe;AAC9C,UAAI,WAAW,MAAM,OAAO;AAC1B,wBAAgB,oBAAoB;AACpC,YAAI,kBAAkB,MAAM;AAC5B,eAAO,UAAW,cAAe,sBAAwB,WAAY,wBAA0B,gBAAiB,QAAS,cAAe;AAAA,MAC1I,OAAO;AACL,wBAAgBA,IAAG,cAAc,OAAO,SAASA,IAAG,QAAQA,GAAE;AAC9D,YAAI,CAAC,cAAe;AACpB,uBAAe,oBAAoB;AACnC,wBAAgB,cAAc;AAC9B,mBAAW,MAAM;AACjB,kBAAU,MAAM;AAChB,iBAAS,MAAM;AAAA,MACjB;AACA,UAAI,YAAY,gBAAgB,WAC9B,KAAK,MAAM,MACX,WAAW,YAAY,MACvB,gBAAgB,MAAM;AACxB,UAAI,iBAAiB,CAACA,IAAG,MAAO,OAAM,IAAI,MAAM,8BAA8B;AAC9E,UAAI,EAAE,WAAW,SAAS;AACxB,eAAO,KAAM,YAAa;AAAA,MAC5B;AACA,aAAO,SAAU,QAAS,mBAAoB,SAAU;AACxD,UAAI,WAAW,MAAM,OAAO;AAC1B,0BAAkB;AAClB,eAAO,UAAW,eAAgB,uBAAwB,SAAU;AACpE,YAAI,iBAAiB;AACnB,4BAAkB;AAClB,iBAAO,MAAO,SAAU,QAAS,cAAe,qBAAsB,eAAgB,YAAa,SAAU;AAAA,QAC/G;AAAA,MACF;AACA,UAAI,SAAS;AACX,YAAI,MAAM,YAAY;AACpB,iBAAO,MAAO,cAAc,WAAY;AAAA,QAC1C,OAAO;AACL,iBAAO,MAAO,SAAU,QAAS,cAAc,WAAY;AAAA,QAC7D;AAAA,MACF,WAAW,QAAQ;AACjB,YAAI,MAAMA,IAAG,KAAK,KAAKA,GAAE;AACzB,YAAI,iBAAiB;AACrB,YAAI;AACJ,YAAI,aAAa,UAAU,IAAI;AAC/B,YAAI,SAAS,cAAc;AAC3B,YAAI,aAAa;AACjB,YAAI,gBAAgBA,IAAG;AACvB,QAAAA,IAAG,gBAAgB,IAAI,gBAAgB;AACvC,YAAI,QAAQA,IAAG,SAAS,GAAG,EAAE,QAAQ,qBAAqB,aAAa;AACvE,QAAAA,IAAG,gBAAgB,IAAI,gBAAgB;AACvC,eAAO,MAAO;AAAA,MAChB,OAAO;AACL,YAAI,aAAa,cAAc,CAAC;AAChC,mBAAW,KAAK,GAAG;AACnB,cAAM;AACN,eAAO,OAAQ,gBAAiB;AAChC,YAAIA,IAAG,KAAK,aAAa;AACvB,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AACA,YAAI,YAAY,MAAM,WAAW,OAAO;AACtC,iBAAO,QAAS,QAAS;AAAA,QAC3B,OAAO;AACL,iBAAO,QAAS,eAAgB,QAAS,QAAS,uBAAwBA,IAAG,aAAc;AAAA,QAC7F;AACA,eAAO;AACP,YAAIA,IAAG,aAAa,MAAM;AACxB,iBAAO,QAASA,IAAG;AAAA,QACrB;AACA,YAAI,cAAc,WAAW,UAAW,WAAW,KAAM,MAAM,cAC7D,sBAAsB,WAAWA,IAAG,YAAY,QAAQ,IAAI;AAC9D,eAAO,QAAS,cAAe,QAAS,sBAAuB;AAC/D,YAAI,uBAAuB;AAC3B,cAAM,WAAW,IAAI;AACrB,YAAI,MAAM,WAAW,OAAO;AAC1B,iBAAO,MAAO,SAAU;AACxB,cAAI,eAAe;AACjB,mBAAO;AAAA,UACT;AACA,iBAAO,KAAM,uBAAwB;AAAA,QACvC,OAAO;AACL,cAAI,eAAe;AACjB,wBAAY,iBAAiB;AAC7B,mBAAO,UAAW,YAAa,oBAAqB,SAAU,cAAe,uBAAwB,qBAAsB,SAAU,iDAAkD,YAAa;AAAA,UACtM,OAAO;AACL,mBAAO,MAAO,YAAa,cAAe,SAAU,QAAS,uBAAwB;AAAA,UACvF;AAAA,QACF;AAAA,MACF;AACA,UAAI,MAAM,WAAW;AACnB,eAAO,UAAW,cAAe,OAAQ,QAAS,QAAS,cAAe,MAAO,sBAAuB;AAAA,MAC1G;AACA,aAAO,KAAM;AACb,UAAI,MAAM,OAAO;AACf,YAAI,eAAe;AACjB,iBAAO;AAAA,QACT;AAAA,MACF,OAAO;AACL,eAAO;AACP,YAAI,MAAM,UAAU,QAAW;AAC7B,iBAAO;AACP,cAAI,QAAQ;AACV,mBAAO,KAAM;AAAA,UACf,OAAO;AACL,mBAAO,KAAM;AAAA,UACf;AAAA,QACF,OAAO;AACL,iBAAO,MAAO,CAAC,MAAM,QAAS;AAAA,QAChC;AACA,eAAO;AACP,wBAAgB,MAAM;AACtB,YAAI,aAAa,cAAc,CAAC;AAChC,mBAAW,KAAK,GAAG;AACnB,cAAM;AACN,YAAI,aAAa,cAAc,CAAC;AAChC,mBAAW,KAAK,GAAG;AACnB,cAAM;AACN,YAAIA,IAAG,iBAAiB,OAAO;AAC7B,iBAAO,mBAAoB,iBAAiB,YAAY,sCAA0CA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,4BAA8B,MAAM,UAAW;AAChO,cAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,mBAAO,+BAAiC,MAAM,UAAW;AAAA,UAC3D;AACA,cAAIA,IAAG,KAAK,SAAS;AACnB,mBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,UACvI;AACA,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AACA,YAAI,QAAQ;AACZ,cAAM,WAAW,IAAI;AACrB,YAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,cAAIA,IAAG,OAAO;AACZ,mBAAO,iCAAkC,QAAS;AAAA,UACpD,OAAO;AACL,mBAAO,yBAA0B,QAAS;AAAA,UAC5C;AAAA,QACF,OAAO;AACL,iBAAO,gBAAiB,QAAS;AAAA,QACnC;AACA,YAAI,kBAAkB;AACtB,cAAM,WAAW,IAAI;AACrB,YAAI,SAAS;AACX,cAAI,MAAM,QAAQ;AAChB,gBAAI,MAAM,UAAU,QAAQ;AAC1B,qBAAO,gBAAiB,KAAM,MAAO,QAAS,OAAQ,KAAM,cAAe,KAAM,eAAgB,WAAY,gBAAiB,KAAM,YAAa,WAAY,8BAA+B,WAAY,oCAAuCA,IAAG,YAAa,WAAY,WAAY,kCAAmC,WAAY,oBAAqB,iBAAkB;AAC7W,kBAAIA,IAAG,KAAK,SAAS;AACnB,uBAAO,MAAO,WAAY,eAAgB,eAAgB,OAAQ,WAAY,aAAc,QAAS;AAAA,cACvG;AACA,qBAAO;AAAA,YACT;AAAA,UACF,OAAO;AACL,gBAAI,MAAM,WAAW,OAAO;AAC1B,qBAAO,MAAO,kBAAmB;AAAA,YACnC,OAAO;AACL,qBAAO,UAAW,QAAS,mBAAoB,kBAAmB,yBAA0B,KAAM,MAAO,QAAS,OAAQ,KAAM,cAAe,KAAM,eAAgB,WAAY,gBAAiB,KAAM,YAAa,WAAY,8BAA+B,WAAY,oCAAuCA,IAAG,YAAa,WAAY,WAAY,kCAAmC,WAAY,oBAAqB,iBAAkB;AACjb,kBAAIA,IAAG,KAAK,SAAS;AACnB,uBAAO,MAAO,WAAY,eAAgB,eAAgB,OAAQ,WAAY,aAAc,QAAS;AAAA,cACvG;AACA,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF,WAAW,QAAQ;AACjB,iBAAO;AACP,cAAIA,IAAG,iBAAiB,OAAO;AAC7B,mBAAO,mBAAoB,iBAAiB,YAAY,sCAA0CA,IAAG,YAAa,oBAAqBA,IAAG,KAAK,eAAe,cAAc,IAAK,4BAA8B,MAAM,UAAW;AAChO,gBAAIA,IAAG,KAAK,aAAa,OAAO;AAC9B,qBAAO,+BAAiC,MAAM,UAAW;AAAA,YAC3D;AACA,gBAAIA,IAAG,KAAK,SAAS;AACnB,qBAAO,+BAAgC,cAAe,qCAAsCA,IAAG,aAAc,cAAe,QAAS;AAAA,YACvI;AACA,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO;AAAA,UACT;AACA,iBAAO;AACP,cAAI,CAACA,IAAG,iBAAiB,eAAe;AAEtC,gBAAIA,IAAG,OAAO;AACZ,qBAAO;AAAA,YACT,OAAO;AACL,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF,OAAO;AACL,cAAI,MAAM,WAAW,OAAO;AAC1B,mBAAO,MAAO,kBAAmB;AAAA,UACnC,OAAO;AACL,mBAAO,wBAAyB,YAAa,0CAA2C,YAAa,qCAAsC,YAAa,2CAA4C,KAAM,MAAO,QAAS,OAAQ,KAAM,cAAe,KAAM,eAAgB,WAAY,gBAAiB,KAAM,YAAa,WAAY,8BAA+B,WAAY,oCAAuCA,IAAG,YAAa,QAAS,WAAY,oBAAqB,iBAAkB;AACve,gBAAIA,IAAG,KAAK,SAAS;AACnB,qBAAO,MAAO,WAAY,eAAgB,eAAgB,OAAQ,WAAY,aAAc,QAAS;AAAA,YACvG;AACA,mBAAO,iBAAkB,kBAAmB;AAAA,UAC9C;AAAA,QACF;AACA,eAAO;AACP,YAAI,eAAe;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACnOA;AAAA,4EAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA,MACI,SAAW;AAAA,MACX,KAAO;AAAA,MACP,OAAS;AAAA,MACT,aAAe;AAAA,QACX,aAAe;AAAA,UACX,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,OAAS,EAAE,MAAQ,IAAI;AAAA,QAC3B;AAAA,QACA,oBAAsB;AAAA,UAClB,MAAQ;AAAA,UACR,SAAW;AAAA,QACf;AAAA,QACA,4BAA8B;AAAA,UAC1B,OAAS;AAAA,YACL,EAAE,MAAQ,mCAAmC;AAAA,YAC7C,EAAE,SAAW,EAAE;AAAA,UACnB;AAAA,QACJ;AAAA,QACA,aAAe;AAAA,UACX,MAAQ;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,aAAe;AAAA,UACX,MAAQ;AAAA,UACR,OAAS,EAAE,MAAQ,SAAS;AAAA,UAC5B,aAAe;AAAA,UACf,SAAW,CAAC;AAAA,QAChB;AAAA,MACJ;AAAA,MACA,MAAQ,CAAC,UAAU,SAAS;AAAA,MAC5B,YAAc;AAAA,QACV,KAAO;AAAA,UACH,MAAQ;AAAA,UACR,QAAU;AAAA,QACd;AAAA,QACA,SAAW;AAAA,UACP,MAAQ;AAAA,UACR,QAAU;AAAA,QACd;AAAA,QACA,MAAQ;AAAA,UACJ,MAAQ;AAAA,UACR,QAAU;AAAA,QACd;AAAA,QACA,UAAY;AAAA,UACR,MAAQ;AAAA,QACZ;AAAA,QACA,OAAS;AAAA,UACL,MAAQ;AAAA,QACZ;AAAA,QACA,aAAe;AAAA,UACX,MAAQ;AAAA,QACZ;AAAA,QACA,SAAW;AAAA,QACX,UAAY;AAAA,UACR,MAAQ;AAAA,UACR,SAAW;AAAA,QACf;AAAA,QACA,UAAY;AAAA,UACR,MAAQ;AAAA,UACR,OAAS;AAAA,QACb;AAAA,QACA,YAAc;AAAA,UACV,MAAQ;AAAA,UACR,kBAAoB;AAAA,QACxB;AAAA,QACA,SAAW;AAAA,UACP,MAAQ;AAAA,QACZ;AAAA,QACA,kBAAoB;AAAA,UAChB,MAAQ;AAAA,QACZ;AAAA,QACA,SAAW;AAAA,UACP,MAAQ;AAAA,QACZ;AAAA,QACA,kBAAoB;AAAA,UAChB,MAAQ;AAAA,QACZ;AAAA,QACA,WAAa,EAAE,MAAQ,mCAAmC;AAAA,QAC1D,WAAa,EAAE,MAAQ,2CAA2C;AAAA,QAClE,SAAW;AAAA,UACP,MAAQ;AAAA,UACR,QAAU;AAAA,QACd;AAAA,QACA,iBAAmB,EAAE,MAAQ,IAAI;AAAA,QACjC,OAAS;AAAA,UACL,OAAS;AAAA,YACL,EAAE,MAAQ,IAAI;AAAA,YACd,EAAE,MAAQ,4BAA4B;AAAA,UAC1C;AAAA,UACA,SAAW;AAAA,QACf;AAAA,QACA,UAAY,EAAE,MAAQ,mCAAmC;AAAA,QACzD,UAAY,EAAE,MAAQ,2CAA2C;AAAA,QACjE,aAAe;AAAA,UACX,MAAQ;AAAA,UACR,SAAW;AAAA,QACf;AAAA,QACA,UAAY,EAAE,MAAQ,IAAI;AAAA,QAC1B,eAAiB,EAAE,MAAQ,mCAAmC;AAAA,QAC9D,eAAiB,EAAE,MAAQ,2CAA2C;AAAA,QACtE,UAAY,EAAE,MAAQ,4BAA4B;AAAA,QAClD,sBAAwB,EAAE,MAAQ,IAAI;AAAA,QACtC,aAAe;AAAA,UACX,MAAQ;AAAA,UACR,sBAAwB,EAAE,MAAQ,IAAI;AAAA,UACtC,SAAW,CAAC;AAAA,QAChB;AAAA,QACA,YAAc;AAAA,UACV,MAAQ;AAAA,UACR,sBAAwB,EAAE,MAAQ,IAAI;AAAA,UACtC,SAAW,CAAC;AAAA,QAChB;AAAA,QACA,mBAAqB;AAAA,UACjB,MAAQ;AAAA,UACR,sBAAwB,EAAE,MAAQ,IAAI;AAAA,UACtC,eAAiB,EAAE,QAAU,QAAQ;AAAA,UACrC,SAAW,CAAC;AAAA,QAChB;AAAA,QACA,cAAgB;AAAA,UACZ,MAAQ;AAAA,UACR,sBAAwB;AAAA,YACpB,OAAS;AAAA,cACL,EAAE,MAAQ,IAAI;AAAA,cACd,EAAE,MAAQ,4BAA4B;AAAA,YAC1C;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAiB,EAAE,MAAQ,IAAI;AAAA,QAC/B,OAAS;AAAA,QACT,MAAQ;AAAA,UACJ,MAAQ;AAAA,UACR,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,aAAe;AAAA,QACnB;AAAA,QACA,MAAQ;AAAA,UACJ,OAAS;AAAA,YACL,EAAE,MAAQ,4BAA4B;AAAA,YACtC;AAAA,cACI,MAAQ;AAAA,cACR,OAAS,EAAE,MAAQ,4BAA4B;AAAA,cAC/C,UAAY;AAAA,cACZ,aAAe;AAAA,YACnB;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,QAAU,EAAE,MAAQ,SAAS;AAAA,QAC7B,kBAAoB,EAAE,MAAQ,SAAS;AAAA,QACvC,iBAAmB,EAAE,MAAQ,SAAS;AAAA,QACtC,IAAM,EAAC,MAAQ,IAAG;AAAA,QAClB,MAAQ,EAAC,MAAQ,IAAG;AAAA,QACpB,MAAQ,EAAC,MAAQ,IAAG;AAAA,QACpB,OAAS,EAAE,MAAQ,4BAA4B;AAAA,QAC/C,OAAS,EAAE,MAAQ,4BAA4B;AAAA,QAC/C,OAAS,EAAE,MAAQ,4BAA4B;AAAA,QAC/C,KAAO,EAAE,MAAQ,IAAI;AAAA,MACzB;AAAA,MACA,SAAW;AAAA,IACf;AAAA;AAAA;;;ACvKA;AAAA,kEAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,aAAa;AAEjB,IAAAA,QAAO,UAAU;AAAA,MACf,KAAK;AAAA,MACL,aAAa;AAAA,QACX,aAAa,WAAW,YAAY;AAAA,MACtC;AAAA,MACA,MAAM;AAAA,MACN,cAAc;AAAA,QACZ,QAAQ,CAAC,UAAU;AAAA,QACnB,OAAO,CAAC,UAAU;AAAA,QAClB,YAAY,CAAC,QAAQ;AAAA,QACrB,OAAO,EAAC,KAAK,EAAC,UAAU,CAAC,OAAO,EAAC,EAAC;AAAA,MACpC;AAAA,MACA,YAAY;AAAA,QACV,MAAM,WAAW,WAAW;AAAA,QAC5B,QAAQ,EAAC,MAAM,UAAS;AAAA,QACxB,YAAY,EAAC,MAAM,UAAS;AAAA,QAC5B,cAAc;AAAA,UACZ,MAAM;AAAA,UACN,OAAO,EAAC,MAAM,SAAQ;AAAA,QACxB;AAAA,QACA,YAAY,EAAC,MAAM,SAAQ;AAAA,QAC3B,WAAW,EAAC,MAAM,UAAS;AAAA,QAC3B,OAAO,EAAC,MAAM,UAAS;AAAA,QACvB,OAAO,EAAC,MAAM,UAAS;AAAA,QACvB,OAAO,EAAC,MAAM,UAAS;AAAA,QACvB,QAAQ;AAAA,UACN,OAAO;AAAA,YACL,EAAC,MAAM,UAAS;AAAA,YAChB,EAAC,OAAO,OAAM;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACpCA,IAAAC,mBAAA;AAAA,wDAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,aAAa;AACjB,QAAI,iBAAiB;AACrB,QAAI,mBAAmB;AAEvB,IAAAA,QAAO,UAAU;AAAA,MACf,KAAK;AAAA,MACL,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAUA,aAAS,WAAW,SAASC,aAAY;AAGvC,UAAI,QAAQ,KAAK;AACjB,UAAI,MAAM,SAAS,OAAO;AACxB,cAAM,IAAI,MAAM,aAAa,UAAU,qBAAqB;AAE9D,UAAI,CAAC,WAAW,KAAK,OAAO;AAC1B,cAAM,IAAI,MAAM,aAAa,UAAU,4BAA4B;AAErE,UAAIA,aAAY;AACd,aAAK,gBAAgBA,aAAY,IAAI;AAErC,YAAI,WAAWA,YAAW;AAC1B,YAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,mBAAS,IAAE,GAAG,IAAE,SAAS,QAAQ;AAC/B,qBAAS,SAAS,SAAS,CAAC,GAAGA,WAAU;AAAA,QAC7C,OAAO;AACL,mBAAS,SAAS,UAAUA,WAAU;AAAA,QACxC;AAEA,YAAI,aAAaA,YAAW;AAC5B,YAAI,YAAY;AACd,cAAIA,YAAW,SAAS,KAAK,MAAM,OAAO;AACxC,yBAAa;AAAA,cACX,OAAO;AAAA,gBACL;AAAA,gBACA,EAAE,QAAQ,iFAAiF;AAAA,cAC7F;AAAA,YACF;AAAA,UACF;AACA,UAAAA,YAAW,iBAAiB,KAAK,QAAQ,YAAY,IAAI;AAAA,QAC3D;AAAA,MACF;AAEA,YAAM,SAAS,OAAO,IAAI,MAAM,IAAI,OAAO,IAAI;AAG/C,eAAS,SAASC,UAASC,WAAUF,aAAY;AAC/C,YAAI;AACJ,iBAASG,KAAE,GAAGA,KAAE,MAAM,QAAQA,MAAK;AACjC,cAAI,KAAK,MAAMA,EAAC;AAChB,cAAI,GAAG,QAAQD,WAAU;AACvB,wBAAY;AACZ;AAAA,UACF;AAAA,QACF;AAEA,YAAI,CAAC,WAAW;AACd,sBAAY,EAAE,MAAMA,WAAU,OAAO,CAAC,EAAE;AACxC,gBAAM,KAAK,SAAS;AAAA,QACtB;AAEA,YAAI,OAAO;AAAA,UACT,SAASD;AAAA,UACT,YAAYD;AAAA,UACZ,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,YAAYA,YAAW;AAAA,QACzB;AACA,kBAAU,MAAM,KAAK,IAAI;AACzB,cAAM,OAAOC,QAAO,IAAI;AAAA,MAC1B;AAEA,aAAO;AAAA,IACT;AASA,aAAS,WAAW,SAAS;AAE3B,UAAI,OAAO,KAAK,MAAM,OAAO,OAAO;AACpC,aAAO,OAAO,KAAK,aAAa,KAAK,MAAM,SAAS,OAAO,KAAK;AAAA,IAClE;AASA,aAAS,cAAc,SAAS;AAE9B,UAAI,QAAQ,KAAK;AACjB,aAAO,MAAM,SAAS,OAAO;AAC7B,aAAO,MAAM,IAAI,OAAO;AACxB,aAAO,MAAM,OAAO,OAAO;AAC3B,eAAS,IAAE,GAAG,IAAE,MAAM,QAAQ,KAAK;AACjC,YAAI,QAAQ,MAAM,CAAC,EAAE;AACrB,iBAAS,IAAE,GAAG,IAAE,MAAM,QAAQ,KAAK;AACjC,cAAI,MAAM,CAAC,EAAE,WAAW,SAAS;AAC/B,kBAAM,OAAO,GAAG,CAAC;AACjB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAUA,aAAS,gBAAgBD,aAAY,YAAY;AAC/C,sBAAgB,SAAS;AACzB,UAAI,IAAI,KAAK,mBAAmB,KAAK,oBACF,KAAK,QAAQ,kBAAkB,IAAI;AAEtE,UAAI,EAAEA,WAAU,EAAG,QAAO;AAC1B,sBAAgB,SAAS,EAAE;AAC3B,UAAI;AACF,cAAM,IAAI,MAAM,2CAA4C,KAAK,WAAW,EAAE,MAAM,CAAC;AAAA;AAErF,eAAO;AAAA,IACX;AAAA;AAAA;;;ACjJA,IAAAI,gBAAA;AAAA,4DAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA,MACI,SAAW;AAAA,MACX,KAAO;AAAA,MACP,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY,CAAE,OAAQ;AAAA,MACtB,YAAc;AAAA,QACV,OAAS;AAAA,UACL,MAAQ;AAAA,UACR,OAAS;AAAA,YACL,EAAE,QAAU,wBAAwB;AAAA,YACpC,EAAE,QAAU,eAAe;AAAA,UAC/B;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,sBAAwB;AAAA,IAC5B;AAAA;AAAA;;;AChBA;AAAA,oDAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,gBAAgB;AAApB,QACIC,WAAU;AADd,QAEI,QAAQ;AAFZ,QAGI,eAAe;AAHnB,QAII,kBAAkB;AAJtB,QAKI,UAAU;AALd,QAMI,QAAQ;AANZ,QAOI,kBAAkB;AAPtB,QAQI,OAAO;AAEX,IAAAD,QAAO,UAAU;AAEjB,QAAI,UAAU,WAAW;AACzB,QAAI,UAAU,UAAU;AACxB,QAAI,UAAU,YAAY;AAC1B,QAAI,UAAU,gBAAgB;AAC9B,QAAI,UAAU,iBAAiB;AAC/B,QAAI,UAAU,YAAY;AAC1B,QAAI,UAAU,eAAe;AAC7B,QAAI,UAAU,YAAY;AAC1B,QAAI,UAAU,aAAa;AAE3B,QAAI,UAAU,aAAa;AAC3B,QAAI,UAAU,WAAW;AAEzB,QAAI,UAAU,eAAe;AAC7B,QAAI,gBAAgB;AACpB,QAAI,UAAU,aAAa,cAAc;AACzC,QAAI,UAAU,aAAa,cAAc;AACzC,QAAI,UAAU,gBAAgB,cAAc;AAC5C,QAAI,UAAU,kBAAkB,cAAc;AAE9C,QAAI,eAAe;AACnB,QAAI,kBAAkB,aAAa;AACnC,QAAI,kBAAkB,aAAa;AACnC,QAAI,kBAAkB;AAEtB,QAAI,iBAAiB;AAErB,QAAI,sBAAsB,CAAE,oBAAoB,eAAe,eAAe,gBAAiB;AAC/F,QAAI,oBAAoB,CAAC,aAAa;AAQtC,aAAS,IAAI,MAAM;AACjB,UAAI,EAAE,gBAAgB,KAAM,QAAO,IAAI,IAAI,IAAI;AAC/C,aAAO,KAAK,QAAQ,KAAK,KAAK,IAAI,KAAK,CAAC;AACxC,gBAAU,IAAI;AACd,WAAK,WAAW,CAAC;AACjB,WAAK,QAAQ,CAAC;AACd,WAAK,aAAa,CAAC;AACnB,WAAK,WAAW,QAAQ,KAAK,MAAM;AAEnC,WAAK,SAAS,KAAK,SAAS,IAAI;AAChC,WAAK,kBAAkB,CAAC;AACxB,WAAK,gBAAgB,CAAC;AACtB,WAAK,QAAQ,MAAM;AACnB,WAAK,SAAS,YAAY,IAAI;AAE9B,WAAK,eAAe,KAAK,gBAAgB;AACzC,UAAI,KAAK,iBAAiB,WAAY,MAAK,yBAAyB;AACpE,UAAI,KAAK,cAAc,OAAW,MAAK,YAAY;AACnD,WAAK,YAAY,qBAAqB,IAAI;AAE1C,UAAI,KAAK,QAAS,mBAAkB,IAAI;AACxC,UAAI,KAAK,SAAU,oBAAmB,IAAI;AAC1C,2BAAqB,IAAI;AACzB,UAAI,OAAO,KAAK,QAAQ,SAAU,MAAK,cAAc,KAAK,IAAI;AAC9D,UAAI,KAAK,SAAU,MAAK,WAAW,YAAY,EAAC,YAAY,EAAC,MAAM,UAAS,EAAC,CAAC;AAC9E,wBAAkB,IAAI;AAAA,IACxB;AAYA,aAAS,SAAS,cAAc,MAAM;AACpC,UAAI;AACJ,UAAI,OAAO,gBAAgB,UAAU;AACnC,YAAI,KAAK,UAAU,YAAY;AAC/B,YAAI,CAAC,EAAG,OAAM,IAAI,MAAM,gCAAgC,eAAe,GAAG;AAAA,MAC5E,OAAO;AACL,YAAI,YAAY,KAAK,WAAW,YAAY;AAC5C,YAAI,UAAU,YAAY,KAAK,SAAS,SAAS;AAAA,MACnD;AAEA,UAAI,QAAQ,EAAE,IAAI;AAClB,UAAI,EAAE,WAAW,KAAM,MAAK,SAAS,EAAE;AACvC,aAAO;AAAA,IACT;AAUA,aAAS,QAAQ,QAAQ,OAAO;AAC9B,UAAI,YAAY,KAAK,WAAW,QAAQ,QAAW,KAAK;AACxD,aAAO,UAAU,YAAY,KAAK,SAAS,SAAS;AAAA,IACtD;AAYA,aAAS,UAAU,QAAQ,KAAK,iBAAiB,OAAO;AACtD,UAAI,MAAM,QAAQ,MAAM,GAAE;AACxB,iBAAS,IAAE,GAAG,IAAE,OAAO,QAAQ,IAAK,MAAK,UAAU,OAAO,CAAC,GAAG,QAAW,iBAAiB,KAAK;AAC/F,eAAO;AAAA,MACT;AACA,UAAI,KAAK,KAAK,OAAO,MAAM;AAC3B,UAAI,OAAO,UAAa,OAAO,MAAM;AACnC,cAAM,IAAI,MAAM,0BAA0B;AAC5C,YAAMC,SAAQ,YAAY,OAAO,EAAE;AACnC,kBAAY,MAAM,GAAG;AACrB,WAAK,SAAS,GAAG,IAAI,KAAK,WAAW,QAAQ,iBAAiB,OAAO,IAAI;AACzE,aAAO;AAAA,IACT;AAYA,aAAS,cAAc,QAAQ,KAAK,gBAAgB;AAClD,WAAK,UAAU,QAAQ,KAAK,gBAAgB,IAAI;AAChD,aAAO;AAAA,IACT;AAUA,aAAS,eAAe,QAAQ,iBAAiB;AAC/C,UAAI,UAAU,OAAO;AACrB,UAAI,YAAY,UAAa,OAAO,WAAW;AAC7C,cAAM,IAAI,MAAM,0BAA0B;AAC5C,gBAAU,WAAW,KAAK,MAAM,eAAe,YAAY,IAAI;AAC/D,UAAI,CAAC,SAAS;AACZ,aAAK,OAAO,KAAK,2BAA2B;AAC5C,aAAK,SAAS;AACd,eAAO;AAAA,MACT;AACA,UAAI,QAAQ,KAAK,SAAS,SAAS,MAAM;AACzC,UAAI,CAAC,SAAS,iBAAiB;AAC7B,YAAI,UAAU,wBAAwB,KAAK,WAAW;AACtD,YAAI,KAAK,MAAM,kBAAkB,MAAO,MAAK,OAAO,MAAM,OAAO;AAAA,YAC5D,OAAM,IAAI,MAAM,OAAO;AAAA,MAC9B;AACA,aAAO;AAAA,IACT;AAGA,aAAS,YAAYC,OAAM;AACzB,UAAI,OAAOA,MAAK,MAAM;AACtB,MAAAA,MAAK,MAAM,cAAc,OAAO,QAAQ,WACZA,MAAK,OAAO,IAAI,KAAK,OACrBA,MAAK,UAAU,cAAc,IAC3B,iBACA;AAC9B,aAAOA,MAAK,MAAM;AAAA,IACpB;AASA,aAAS,UAAU,QAAQ;AACzB,UAAI,YAAY,cAAc,MAAM,MAAM;AAC1C,cAAQ,OAAO,WAAW;AAAA,QACxB,KAAK;AAAU,iBAAO,UAAU,YAAY,KAAK,SAAS,SAAS;AAAA,QACnE,KAAK;AAAU,iBAAO,KAAK,UAAU,SAAS;AAAA,QAC9C,KAAK;AAAa,iBAAO,mBAAmB,MAAM,MAAM;AAAA,MAC1D;AAAA,IACF;AAGA,aAAS,mBAAmBA,OAAM,KAAK;AACrC,UAAI,MAAMD,SAAQ,OAAO,KAAKC,OAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG;AACvD,UAAI,KAAK;AACP,YAAI,SAAS,IAAI,QACbC,QAAO,IAAI,MACX,SAAS,IAAI;AACjB,YAAI,IAAI,cAAc,KAAKD,OAAM,QAAQC,OAAM,QAAW,MAAM;AAChE,QAAAD,MAAK,WAAW,GAAG,IAAI,IAAI,aAAa;AAAA,UACtC;AAAA,UACA,UAAU;AAAA,UACV;AAAA,UACA,MAAMC;AAAA,UACN;AAAA,UACA,UAAU;AAAA,QACZ,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF;AAGA,aAAS,cAAcD,OAAM,QAAQ;AACnC,eAASD,SAAQ,YAAY,MAAM;AACnC,aAAOC,MAAK,SAAS,MAAM,KAAKA,MAAK,MAAM,MAAM,KAAKA,MAAK,WAAW,MAAM;AAAA,IAC9E;AAYA,aAAS,aAAa,cAAc;AAClC,UAAI,wBAAwB,QAAQ;AAClC,0BAAkB,MAAM,KAAK,UAAU,YAAY;AACnD,0BAAkB,MAAM,KAAK,OAAO,YAAY;AAChD,eAAO;AAAA,MACT;AACA,cAAQ,OAAO,cAAc;AAAA,QAC3B,KAAK;AACH,4BAAkB,MAAM,KAAK,QAAQ;AACrC,4BAAkB,MAAM,KAAK,KAAK;AAClC,eAAK,OAAO,MAAM;AAClB,iBAAO;AAAA,QACT,KAAK;AACH,cAAI,YAAY,cAAc,MAAM,YAAY;AAChD,cAAI,UAAW,MAAK,OAAO,IAAI,UAAU,QAAQ;AACjD,iBAAO,KAAK,SAAS,YAAY;AACjC,iBAAO,KAAK,MAAM,YAAY;AAC9B,iBAAO;AAAA,QACT,KAAK;AACH,cAAIE,aAAY,KAAK,MAAM;AAC3B,cAAI,WAAWA,aAAYA,WAAU,YAAY,IAAI;AACrD,eAAK,OAAO,IAAI,QAAQ;AACxB,cAAI,KAAK,KAAK,OAAO,YAAY;AACjC,cAAI,IAAI;AACN,iBAAKH,SAAQ,YAAY,EAAE;AAC3B,mBAAO,KAAK,SAAS,EAAE;AACvB,mBAAO,KAAK,MAAM,EAAE;AAAA,UACtB;AAAA,MACJ;AACA,aAAO;AAAA,IACT;AAGA,aAAS,kBAAkBC,OAAM,SAAS,OAAO;AAC/C,eAAS,UAAU,SAAS;AAC1B,YAAI,YAAY,QAAQ,MAAM;AAC9B,YAAI,CAAC,UAAU,SAAS,CAAC,SAAS,MAAM,KAAK,MAAM,IAAI;AACrD,UAAAA,MAAK,OAAO,IAAI,UAAU,QAAQ;AAClC,iBAAO,QAAQ,MAAM;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAIA,aAAS,WAAW,QAAQ,gBAAgB,MAAM,iBAAiB;AACjE,UAAI,OAAO,UAAU,YAAY,OAAO,UAAU;AAChD,cAAM,IAAI,MAAM,oCAAoC;AACtD,UAAIE,aAAY,KAAK,MAAM;AAC3B,UAAI,WAAWA,aAAYA,WAAU,MAAM,IAAI;AAC/C,UAAI,SAAS,KAAK,OAAO,IAAI,QAAQ;AACrC,UAAI,OAAQ,QAAO;AAEnB,wBAAkB,mBAAmB,KAAK,MAAM,kBAAkB;AAElE,UAAI,KAAKH,SAAQ,YAAY,KAAK,OAAO,MAAM,CAAC;AAChD,UAAI,MAAM,gBAAiB,aAAY,MAAM,EAAE;AAE/C,UAAI,eAAe,KAAK,MAAM,mBAAmB,SAAS,CAAC;AAC3D,UAAI;AACJ,UAAI,gBAAgB,EAAE,gBAAgB,MAAM,MAAMA,SAAQ,YAAY,OAAO,OAAO;AAClF,aAAK,eAAe,QAAQ,IAAI;AAElC,UAAI,YAAYA,SAAQ,IAAI,KAAK,MAAM,MAAM;AAE7C,UAAI,YAAY,IAAI,aAAa;AAAA,QAC/B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,UAAI,GAAG,CAAC,KAAK,OAAO,gBAAiB,MAAK,MAAM,EAAE,IAAI;AACtD,WAAK,OAAO,IAAI,UAAU,SAAS;AAEnC,UAAI,gBAAgB,cAAe,MAAK,eAAe,QAAQ,IAAI;AAEnE,aAAO;AAAA,IACT;AAIA,aAAS,SAAS,WAAWE,OAAM;AACjC,UAAI,UAAU,WAAW;AACvB,kBAAU,WAAW;AACrB,qBAAa,SAAS,UAAU;AAChC,qBAAa,SAAS;AACtB,qBAAa,OAAOA,QAAOA,QAAO;AAClC,YAAI,UAAU,OAAO,WAAW;AAC9B,uBAAa,SAAS;AACxB,eAAO;AAAA,MACT;AACA,gBAAU,YAAY;AAEtB,UAAI;AACJ,UAAI,UAAU,MAAM;AAClB,sBAAc,KAAK;AACnB,aAAK,QAAQ,KAAK;AAAA,MACpB;AAEA,UAAI;AACJ,UAAI;AAAE,YAAI,cAAc,KAAK,MAAM,UAAU,QAAQA,OAAM,UAAU,SAAS;AAAA,MAAG,SAC3E,GAAG;AACP,eAAO,UAAU;AACjB,cAAM;AAAA,MACR,UACA;AACE,kBAAU,YAAY;AACtB,YAAI,UAAU,KAAM,MAAK,QAAQ;AAAA,MACnC;AAEA,gBAAU,WAAW;AACrB,gBAAU,OAAO,EAAE;AACnB,gBAAU,SAAS,EAAE;AACrB,gBAAU,OAAO,EAAE;AACnB,aAAO;AAIP,eAAS,eAAe;AAEtB,YAAI,YAAY,UAAU;AAC1B,YAAI,SAAS,UAAU,MAAM,MAAM,SAAS;AAC5C,qBAAa,SAAS,UAAU;AAChC,eAAO;AAAA,MACT;AAAA,IACF;AAGA,aAAS,YAAY,MAAM;AACzB,cAAQ,KAAK,UAAU;AAAA,QACrB,KAAK;AAAQ,iBAAO;AAAA,QACpB,KAAK;AAAM,iBAAO;AAAA,QAClB;AAAS,iBAAO;AAAA,MAClB;AAAA,IACF;AAGA,aAAS,OAAO,QAAQ;AACtB,UAAI,OAAO,IAAK,MAAK,OAAO,KAAK,sBAAsB,OAAO,GAAG;AACjE,aAAO,OAAO;AAAA,IAChB;AAGA,aAAS,QAAQ,QAAQ;AACvB,UAAI,OAAO,GAAI,MAAK,OAAO,KAAK,qBAAqB,OAAO,EAAE;AAC9D,aAAO,OAAO;AAAA,IAChB;AAGA,aAAS,YAAY,QAAQ;AAC3B,UAAI,OAAO,OAAO,OAAO,MAAM,OAAO,OAAO,OAAO;AAClD,cAAM,IAAI,MAAM,iCAAiC;AACnD,aAAO,OAAO,OAAO,OAAO;AAAA,IAC9B;AAUA,aAAS,WAAW,QAAQ,SAAS;AACnC,eAAS,UAAU,KAAK;AACxB,UAAI,CAAC,OAAQ,QAAO;AACpB,gBAAU,WAAW,CAAC;AACtB,UAAI,YAAY,QAAQ,cAAc,SAAY,OAAO,QAAQ;AACjE,UAAI,UAAU,QAAQ,YAAY,SAAY,SAAS,QAAQ;AAE/D,UAAIE,QAAO;AACX,eAAS,IAAE,GAAG,IAAE,OAAO,QAAQ,KAAK;AAClC,YAAI,IAAI,OAAO,CAAC;AAChB,YAAI,EAAG,CAAAA,SAAQ,UAAU,EAAE,WAAW,MAAM,EAAE,UAAU;AAAA,MAC1D;AACA,aAAOA,MAAK,MAAM,GAAG,CAAC,UAAU,MAAM;AAAA,IACxC;AAUA,aAAS,UAAU,MAAM,QAAQ;AAC/B,UAAI,OAAO,UAAU,SAAU,UAAS,IAAI,OAAO,MAAM;AACzD,WAAK,SAAS,IAAI,IAAI;AACtB,aAAO;AAAA,IACT;AAGA,aAAS,qBAAqBH,OAAM;AAClC,UAAI;AACJ,UAAIA,MAAK,MAAM,OAAO;AACpB,sBAAc;AACd,QAAAA,MAAK,cAAc,aAAa,YAAY,KAAK,IAAI;AAAA,MACvD;AACA,UAAIA,MAAK,MAAM,SAAS,MAAO;AAC/B,UAAI,aAAa;AACjB,UAAIA,MAAK,MAAM,MAAO,cAAa,gBAAgB,YAAY,iBAAiB;AAChF,MAAAA,MAAK,cAAc,YAAY,gBAAgB,IAAI;AACnD,MAAAA,MAAK,MAAM,+BAA+B,IAAI;AAAA,IAChD;AAGA,aAAS,kBAAkBA,OAAM;AAC/B,UAAI,cAAcA,MAAK,MAAM;AAC7B,UAAI,CAAC,YAAa;AAClB,UAAI,MAAM,QAAQ,WAAW,EAAG,CAAAA,MAAK,UAAU,WAAW;AAAA,UACrD,UAAS,OAAO,YAAa,CAAAA,MAAK,UAAU,YAAY,GAAG,GAAG,GAAG;AAAA,IACxE;AAGA,aAAS,kBAAkBA,OAAM;AAC/B,eAAS,QAAQA,MAAK,MAAM,SAAS;AACnC,YAAI,SAASA,MAAK,MAAM,QAAQ,IAAI;AACpC,QAAAA,MAAK,UAAU,MAAM,MAAM;AAAA,MAC7B;AAAA,IACF;AAGA,aAAS,mBAAmBA,OAAM;AAChC,eAAS,QAAQA,MAAK,MAAM,UAAU;AACpC,YAAI,UAAUA,MAAK,MAAM,SAAS,IAAI;AACtC,QAAAA,MAAK,WAAW,MAAM,OAAO;AAAA,MAC/B;AAAA,IACF;AAGA,aAAS,YAAYA,OAAM,IAAI;AAC7B,UAAIA,MAAK,SAAS,EAAE,KAAKA,MAAK,MAAM,EAAE;AACpC,cAAM,IAAI,MAAM,4BAA4B,KAAK,kBAAkB;AAAA,IACvE;AAGA,aAAS,qBAAqBA,OAAM;AAClC,UAAI,WAAW,KAAK,KAAKA,MAAK,KAAK;AACnC,eAAS,IAAE,GAAG,IAAE,oBAAoB,QAAQ;AAC1C,eAAO,SAAS,oBAAoB,CAAC,CAAC;AACxC,aAAO;AAAA,IACT;AAGA,aAAS,UAAUA,OAAM;AACvB,UAAI,SAASA,MAAK,MAAM;AACxB,UAAI,WAAW,OAAO;AACpB,QAAAA,MAAK,SAAS,EAAC,KAAK,MAAM,MAAM,MAAM,OAAO,KAAI;AAAA,MACnD,OAAO;AACL,YAAI,WAAW,OAAW,UAAS;AACnC,YAAI,EAAE,OAAO,UAAU,YAAY,OAAO,OAAO,OAAO,QAAQ,OAAO;AACrE,gBAAM,IAAI,MAAM,mDAAmD;AACrE,QAAAA,MAAK,SAAS;AAAA,MAChB;AAAA,IACF;AAGA,aAAS,OAAO;AAAA,IAAC;AAAA;AAAA;;;ACzfjB;AAAA,4EAAAI,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA,MACI,IAAM;AAAA,MACN,SAAW;AAAA,MACX,aAAe;AAAA,MACf,aAAe;AAAA,QACX,aAAe;AAAA,UACX,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,OAAS,EAAE,MAAQ,IAAI;AAAA,QAC3B;AAAA,QACA,iBAAmB;AAAA,UACf,MAAQ;AAAA,UACR,SAAW;AAAA,QACf;AAAA,QACA,yBAA2B;AAAA,UACvB,OAAS,CAAE,EAAE,MAAQ,gCAAgC,GAAG,EAAE,SAAW,EAAE,CAAE;AAAA,QAC7E;AAAA,QACA,aAAe;AAAA,UACX,MAAQ,CAAE,SAAS,WAAW,WAAW,QAAQ,UAAU,UAAU,QAAS;AAAA,QAClF;AAAA,QACA,aAAe;AAAA,UACX,MAAQ;AAAA,UACR,OAAS,EAAE,MAAQ,SAAS;AAAA,UAC5B,UAAY;AAAA,UACZ,aAAe;AAAA,QACnB;AAAA,MACJ;AAAA,MACA,MAAQ;AAAA,MACR,YAAc;AAAA,QACV,IAAM;AAAA,UACF,MAAQ;AAAA,QACZ;AAAA,QACA,SAAW;AAAA,UACP,MAAQ;AAAA,QACZ;AAAA,QACA,OAAS;AAAA,UACL,MAAQ;AAAA,QACZ;AAAA,QACA,aAAe;AAAA,UACX,MAAQ;AAAA,QACZ;AAAA,QACA,SAAW,CAAC;AAAA,QACZ,YAAc;AAAA,UACV,MAAQ;AAAA,UACR,SAAW;AAAA,UACX,kBAAoB;AAAA,QACxB;AAAA,QACA,SAAW;AAAA,UACP,MAAQ;AAAA,QACZ;AAAA,QACA,kBAAoB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACf;AAAA,QACA,SAAW;AAAA,UACP,MAAQ;AAAA,QACZ;AAAA,QACA,kBAAoB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACf;AAAA,QACA,WAAa,EAAE,MAAQ,gCAAgC;AAAA,QACvD,WAAa,EAAE,MAAQ,wCAAwC;AAAA,QAC/D,SAAW;AAAA,UACP,MAAQ;AAAA,UACR,QAAU;AAAA,QACd;AAAA,QACA,iBAAmB;AAAA,UACf,OAAS;AAAA,YACL,EAAE,MAAQ,UAAU;AAAA,YACpB,EAAE,MAAQ,IAAI;AAAA,UAClB;AAAA,UACA,SAAW,CAAC;AAAA,QAChB;AAAA,QACA,OAAS;AAAA,UACL,OAAS;AAAA,YACL,EAAE,MAAQ,IAAI;AAAA,YACd,EAAE,MAAQ,4BAA4B;AAAA,UAC1C;AAAA,UACA,SAAW,CAAC;AAAA,QAChB;AAAA,QACA,UAAY,EAAE,MAAQ,gCAAgC;AAAA,QACtD,UAAY,EAAE,MAAQ,wCAAwC;AAAA,QAC9D,aAAe;AAAA,UACX,MAAQ;AAAA,UACR,SAAW;AAAA,QACf;AAAA,QACA,eAAiB,EAAE,MAAQ,gCAAgC;AAAA,QAC3D,eAAiB,EAAE,MAAQ,wCAAwC;AAAA,QACnE,UAAY,EAAE,MAAQ,4BAA4B;AAAA,QAClD,sBAAwB;AAAA,UACpB,OAAS;AAAA,YACL,EAAE,MAAQ,UAAU;AAAA,YACpB,EAAE,MAAQ,IAAI;AAAA,UAClB;AAAA,UACA,SAAW,CAAC;AAAA,QAChB;AAAA,QACA,aAAe;AAAA,UACX,MAAQ;AAAA,UACR,sBAAwB,EAAE,MAAQ,IAAI;AAAA,UACtC,SAAW,CAAC;AAAA,QAChB;AAAA,QACA,YAAc;AAAA,UACV,MAAQ;AAAA,UACR,sBAAwB,EAAE,MAAQ,IAAI;AAAA,UACtC,SAAW,CAAC;AAAA,QAChB;AAAA,QACA,mBAAqB;AAAA,UACjB,MAAQ;AAAA,UACR,sBAAwB,EAAE,MAAQ,IAAI;AAAA,UACtC,SAAW,CAAC;AAAA,QAChB;AAAA,QACA,cAAgB;AAAA,UACZ,MAAQ;AAAA,UACR,sBAAwB;AAAA,YACpB,OAAS;AAAA,cACL,EAAE,MAAQ,IAAI;AAAA,cACd,EAAE,MAAQ,4BAA4B;AAAA,YAC1C;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,MAAQ;AAAA,UACJ,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,aAAe;AAAA,QACnB;AAAA,QACA,MAAQ;AAAA,UACJ,OAAS;AAAA,YACL,EAAE,MAAQ,4BAA4B;AAAA,YACtC;AAAA,cACI,MAAQ;AAAA,cACR,OAAS,EAAE,MAAQ,4BAA4B;AAAA,cAC/C,UAAY;AAAA,cACZ,aAAe;AAAA,YACnB;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,QAAU,EAAE,MAAQ,SAAS;AAAA,QAC7B,OAAS,EAAE,MAAQ,4BAA4B;AAAA,QAC/C,OAAS,EAAE,MAAQ,4BAA4B;AAAA,QAC/C,OAAS,EAAE,MAAQ,4BAA4B;AAAA,QAC/C,KAAO,EAAE,MAAQ,IAAI;AAAA,MACzB;AAAA,MACA,cAAgB;AAAA,QACZ,kBAAoB,CAAE,SAAU;AAAA,QAChC,kBAAoB,CAAE,SAAU;AAAA,MACpC;AAAA,MACA,SAAW,CAAC;AAAA,IAChB;AAAA;AAAA;;;ACpJA,IAAAC,eAAA;AAAA,0CAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,MAAM;AAAZ,QACC,aAAa;AAMd,IAAAA,QAAO,UAAU,CAAC,oBAAoB,CAAC,MAAM;AAC5C,YAAM,MAAM,IAAI,IAAI;AAAA,QACnB,MAAM;AAAA,QACN,aAAa;AAAA,QACb,gBAAgB;AAAA,QAChB,aAAa;AAAA,QACb,SAAS;AAAA,QACT,UAAU;AAAA,QACV,GAAG;AAAA,MACJ,CAAC;AAED,UAAI,cAAc,UAAU;AAE5B,UAAI,MAAM,cAAc,WAAW;AAEnC,aAAO;AAAA,IACR;AAAA;AAAA;;;ACjCA;AAAA,+CAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA,MACE,OAAS;AAAA,QACP,kBAAkB,CAAC,wBAAwB;AAAA,QAC3C,iBAAiB,CAAC,QAAQ;AAAA,QAC1B,sBAAsB,CAAC,sBAAsB,uBAAuB;AAAA,QACpE,mBAAmB,CAAC,cAAc;AAAA,QAClC,kBAAkB,CAAC,0BAA0B;AAAA,QAC7C,kBAAkB,CAAC,WAAW;AAAA,QAC9B,mBAAmB,CAAC,QAAQ;AAAA,QAC5B,oBAAoB,CAAC,aAAa;AAAA,QAClC,wBAAwB,CAAC,cAAc;AAAA,QACvC,gBAAgB,CAAC,iBAAiB;AAAA,QAClC,6BAA6B,CAAC,6BAA6B;AAAA,QAC3D,wBAAwB,CAAC,iBAAiB;AAAA,QAC1C,qCAAqC,CAAC,6BAA6B;AAAA,QACnE,yBAAyB,CAAC,iBAAiB;AAAA,QAC3C,qBAAqB;AAAA,UACnB;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,2BAA2B,CAAC,iBAAiB;AAAA,QAC7C,wBAAwB,CAAC,iBAAiB;AAAA,QAC1C,uBAAuB,CAAC,gBAAgB;AAAA,MAC1C;AAAA,IACF;AAAA;AAAA;;;ACzBA;AAAA,6CAAAC,UAAAC,SAAA;AAAA;AAWA,QAAM,EAAE,gBAAgB,IAAI;AAC5B,QAAM,EAAE,kBAAkB,UAAU,IAAI;AACxC,QAAM,EAAE,aAAa,IAAI;AACzB,QAAM,YAAY;AAClB,QAAM,MAAM,UAAU;AACtB,QAAM,mBAAmB;AAgBzB,QAAM,kBAAkB,OAAO,OAAO;AAAA,MACrC,MAAM;AAAA,MACN,UAAU;AAAA,MACV,UAAU;AAAA,IACX,CAAC;AAED,QAAM,aAAa,oBAAI,IAAI;AAAA,MAC1B,CAAC,GAAG,CAAC;AAAA,MACL,CAAC,GAAG,CAAC;AAAA,MACL,CAAC,GAAG,CAAC;AAAA,MACL,CAAC,OAAO,CAAC;AAAA,MACT,CAAC,QAAQ,CAAC;AAAA,MACV,CAAC,SAAS,CAAC;AAAA,IACZ,CAAC;AAOD,QAAM,aAAa,oBAAI,QAAQ;AAe/B,aAAS,uBAAuB,EAAE,YAAY,SAAS,GAAG,QAAQ;AACjE,YAAM,SAAS,eAAe,MAAM,WAAW,GAAG,UAAU,IAAI,QAAQ;AAExE,YAAM,qBAAqB,qBAAqB,MAAM;AAEtD,UAAI,eAAe,GAAG,kBAAkB,4BAA4B,UAAU;AAE9E,YAAM,4BAA4B;AAGlC,UAAI,OAAO,WAAW,OAAO,QAAQ,UAAU,GAAG;AACjD,cAAM,sBAAsB,iBAAiB,MAAM,QAAQ;AAE3D,YAAI,eAAe,OAAO,qBAAqB;AAC9C,yBAAe,GAAG,kBAAkB,WAAW,QAAQ,kCAAkC,mBAAmB;AAAA,QAC7G,OAAO;AACN,yBAAe,GAAG,kBAAkB,qBAAqB,QAAQ,gBAAgB,UAAU;AAG3F,qBAAW,CAAC,iBAAiB,WAAW,KAAK,OAAO;AAAA,YACnD,OAAO;AAAA,UACR,GAAG;AACF,gBAAI,YAAY,SAAS,YAAY,MAAM,QAAQ,GAAG;AACrD,8BAAgB,kBAAkB,eAAe,IAAI,QAAQ;AAC7D;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MAGD;AAEA,YAAM,QAAQ,IAAI,UAAU,YAAY;AAExC,UAAI,iBAAiB,2BAA2B;AAC/C,cAAM,kBAAkB;AACxB,cAAM,cAAc,EAAE,YAAY,OAAO;AAAA,MAC1C;AAEA,YAAM;AAAA,IACP;AAKA,QAAM,gCAAN,cAA4C,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMjD,YAAY,QAAQ,iBAAiB;AACpC;AAAA,UACC,6DAA6D,MAAM,MAAM,gBAAgB,OAAO;AAAA,UAChG,EAAE,OAAO,gBAAgB;AAAA,QAC1B;AACA,aAAK,OAAO;AAAA,MACb;AAAA,IACD;AAQA,aAAS,YAAY,QAAQ;AAC5B,UAAI,YAAY;AAGhB,UAAI,OAAO,SAAS,GAAG,GAAG;AAEzB,YAAI,OAAO,WAAW,GAAG,GAAG;AAC3B,uBAAa,OAAO,MAAM,GAAG,OAAO,YAAY,GAAG,CAAC;AAAA,QACrD,OAAO;AACN,uBAAa,OAAO,MAAM,GAAG,OAAO,QAAQ,GAAG,CAAC;AAAA,QACjD;AAEA,mBAAW,OAAO,MAAM,WAAW,SAAS,CAAC;AAAA,MAC9C,OAAO;AACN,qBAAa;AACb,mBAAW;AAAA,MACZ;AAEA,aAAO;AAAA,QACN;AAAA,QACA;AAAA,MACD;AAAA,IACD;AASA,aAAS,kBAAkB,QAAQ,QAAQ;AAC1C,YAAM,EAAE,YAAY,SAAS,IAAI,YAAY,MAAM;AAEnD,aAAO,OAAO,UAAU,UAAU,GAAG,QAAQ,QAAQ;AAAA,IACtD;AAQA,aAAS,qBAAqB,MAAM;AACnC,UAAI,CAAC,KAAK,MAAM;AACf,eAAO,EAAE,GAAG,gBAAgB;AAAA,MAC7B;AAEA,YAAM,SAAS,KAAK,KAAK;AAEzB,UAAI,OAAO,WAAW,aAAa;AAClC,eAAO,EAAE,GAAG,gBAAgB;AAAA,MAC7B;AAGA,UAAI,WAAW,OAAO;AACrB,eAAO;AAAA,MACR;AAEA,UAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AAClD,cAAM,IAAI,UAAU,iDAAiD;AAAA,MACtE;AAGA,UAAI,MAAM,QAAQ,MAAM,GAAG;AAC1B,YAAI,OAAO,QAAQ;AAClB,iBAAO;AAAA,YACN,MAAM;AAAA,YACN,OAAO;AAAA,YACP,UAAU;AAAA,YACV,UAAU,OAAO;AAAA,UAClB;AAAA,QACD;AAGA,eAAO,EAAE,GAAG,gBAAgB;AAAA,MAC7B;AAGA,aAAO;AAAA,IACR;AAQA,aAAS,sBAAsB,YAAY;AAC1C,YAAM,QAAQ,WAAW,MAAM,GAAG;AAElC,aAAO;AAAA,QACN,YAAY,MAAM,IAAI;AAAA,QACtB,YAAY,MAAM,KAAK,GAAG;AAAA,MAC3B;AAAA,IACD;AAOA,aAAS,sBAAsB,cAAc;AAC5C,aAAO,aAAa,WAAW,IAAI,IAChC,MAAM,aAAa,MAAM,CAAC,CAAC,KAC3B;AAAA,IACJ;AAUA,aAAS,wBACR,WACA,oBACA,kBACC;AAED,UAAI,CAAC,WAAW;AACf,eAAO;AAAA,MACR;AAEA,YAAM,EAAE,YAAY,eAAe,IAClC,sBAAsB,kBAAkB;AAEzC,iBAAW,aAAa,WAAW;AAElC,YAAI,OAAO,cAAc,UAAU;AAClC;AAAA,QACD;AAGA,YAAI,cAAc,KAAK;AACtB,iBAAO;AAAA,QACR;AAGA,YAAI,cAAc,oBAAoB;AACrC,iBAAO;AAAA,QACR;AAEA,cAAM,EAAE,YAAY,gBAAgB,YAAY,aAAa,IAC5D,sBAAsB,SAAS;AAGhC,YAAI,iBAAiB,KAAK;AACzB,cAAI,iBAAiB,SAAS,cAAc,GAAG;AAC9C,mBAAO;AAAA,UACR;AAAA,QACD,OAAO;AAEN,cACC,iBAAiB,SAAS,cAAc,KACxC,iBAAiB,gBAChB;AACD,mBAAO;AAAA,UACR;AAAA,QACD;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,YAAY,QAAQ;AAE5B,UAAI,OAAO,OAAO;AAElB,UAAI,CAAC,MAAM;AACV,YAAI,CAAC,OAAO,MAAM;AACjB,iBAAO;AAAA,QACR;AAEA,eAAO,OAAO,KAAK;AAEnB,YAAI,CAAC,MAAM;AACV,iBAAO;AAAA,QACR;AAAA,MACD;AAGA,UAAIC,WAAU,OAAO;AAErB,UAAI,CAACA,UAAS;AACb,QAAAA,WAAU,OAAO,QAAQ,OAAO,KAAK;AAAA,MACtC;AAGA,UAAIA,UAAS;AACZ,eAAO,GAAG,IAAI,IAAIA,QAAO;AAAA,MAC1B;AAEA,aAAO;AAAA,IACR;AAUA,aAAS,kBAAkBC,QAAO,KAAK,WAAW;AACjD,UAAI,OAAOA,WAAU,YAAY;AAChC,cAAM,QAAQ,IAAI;AAAA,UACjB,yBAAyB,GAAG,SAAS,SAAS;AAAA,QAC/C;AAEA,cAAM,kBAAkB;AACxB,cAAM,cAAc,EAAE,KAAK,UAAU;AAErC,cAAM;AAAA,MACP;AAAA,IACD;AAUA,aAAS,sBAAsB,iBAAiB,YAAY,mBAAmB;AAC9E,UAAI,OAAO,gBAAgB,WAAW,YAAY;AACjD,cAAMC,UAAS,gBAAgB,OAAO;AAEtC,0BAAkBA,SAAQ,UAAU,SAAS;AAE7C,eAAOA;AAAA,MACR;AAEA,YAAM,SAAS,CAAC;AAEhB,iBAAW,CAAC,KAAKD,MAAK,KAAK,OAAO,QAAQ,eAAe,GAAG;AAC3D,YAAIA,QAAO;AACV,cAAI,OAAOA,WAAU,UAAU;AAC9B,kBAAM,OAAO,YAAYA,MAAK;AAE9B,gBAAI,OAAOA,OAAM,WAAW,YAAY;AACvC,qBAAO,GAAG,IAAIA,OAAM,OAAO;AAC3B,gCAAkB,OAAO,GAAG,GAAG,KAAK,SAAS;AAAA,YAC9C,WAAW,QAAQ,UAAUA,MAAK,GAAG;AACpC,qBAAO,GAAG,IAAI;AAAA,YACf,OAAO;AACN,qBAAO,GAAG,IAAI,sBAAsBA,QAAO,GAAG;AAAA,YAC/C;AACA;AAAA,UACD;AAEA,4BAAkBA,QAAO,KAAK,SAAS;AAAA,QACxC;AAEA,eAAO,GAAG,IAAIA;AAAA,MACf;AAEA,aAAO;AAAA,IACR;AASA,aAAS,qBAAqB,MAAM,QAAQ;AAC3C,UAAI,CAAC,WAAW,IAAI,IAAI,GAAG;AAC1B,YAAI;AACH,gBAAM,SAAS,qBAAqB,IAAI;AAExC,cAAI,QAAQ;AACX,uBAAW,IAAI,MAAM,IAAI,QAAQ,MAAM,CAAC;AAAA,UACzC;AAAA,QACD,SAAS,KAAK;AACb,gBAAM,IAAI,8BAA8B,QAAQ,GAAG;AAAA,QACpD;AAAA,MACD;AAEA,aAAO,WAAW,IAAI,IAAI;AAAA,IAC3B;AASA,QAAM,SAAN,MAAa;AAAA;AAAA;AAAA;AAAA;AAAA,MAKZ;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,YAAY,QAAQ;AACnB,cAAM,EAAE,SAAS,UAAU,iBAAiB,WAAW,GAAG,UAAU,IACnE;AAGD,cAAM,SAAS,IAAI,aAAa,gBAAgB;AAEhD,eAAO,SAAS,MAAM;AAGtB,eAAO,OAAO,MAAM,SAAS;AAG7B,YAAI,CAAC,UAAU;AACd,gBAAM,IAAI,UAAU,6BAA6B;AAAA,QAClD;AAGA,aAAK,UAAU;AACf,aAAK,WAAW;AAGhB,cAAM;AAAA,UACL,YAAY;AAAA,UACZ,YAAY;AAAA,QACb,IAAI,sBAAsB,QAAQ;AAElC,aAAK,gBAAgB;AAErB,YACC,CAAC,WACD,CAAC,QAAQ,kBAAkB,KAC3B,CAAC,QAAQ,kBAAkB,EAAE,aAC7B,CAAC,QAAQ,kBAAkB,EAAE,UAAU,iBAAiB,GACvD;AACD,gBAAM,IAAI;AAAA,YACT,mCAAmC,iBAAiB,gBAAgB,kBAAkB;AAAA,UACvF;AAAA,QACD;AAEA,aAAK,WACJ,QAAQ,kBAAkB,EAAE,UAAU,iBAAiB;AAExD,YAAI,KAAK,SAAS,0BAA0B,iBAAiB;AAC5D,eAAK,kBAAkB,iBAAiB,gBAAgB;AAAA,YACvD,KAAK,SAAS;AAAA,YACd;AAAA,UACD;AAAA,QACD,OAAO;AACN,eAAK,kBAAkB,CAAC;AAAA,QACzB;AAGA,YAAI;AACH,eAAK,SAAS,wBAAwB,KAAK,eAAe;AAAA,QAC3D,SAAS,OAAO;AACf,gBAAM,IAAI,UAAU,0BAA0B,MAAM,OAAO,IAAI;AAAA,YAC9D,OAAO;AAAA,UACR,CAAC;AAAA,QACF;AAGA,YAAI,KAAK,SAAS,0BAA0B;AAC3C,eAAK,kBAAkB,KAAK,SAAS;AAAA,YACpC,KAAK;AAAA,UACN;AAAA,QACD;AAGA,YAAI,WAAW;AACd,eAAK,YAAY;AAEjB,cAAI,OAAO,cAAc,UAAU;AAClC,kBAAM,EAAE,YAAY,YAAY,mBAAmB,IAClD,sBAAsB,SAAS;AAEhC,iBAAK,iBAAiB;AAEtB,gBACC,CAAC,WACD,CAAC,QAAQ,UAAU,KACnB,CAAC,QAAQ,UAAU,EAAE,cACrB,CAAC,QAAQ,UAAU,EAAE,WAAW,kBAAkB,GACjD;AACD,oBAAM,IAAI;AAAA,gBACT,oCAAoC,kBAAkB,gBAAgB,UAAU;AAAA,cACjF;AAAA,YACD;AAEA,iBAAK,YACJ,QAAQ,UAAU,EAAE,WAAW,kBAAkB;AAAA,UACnD,WAAW,OAAO,cAAc,UAAU;AACzC,iBAAK,iBAAiB,YAAY,SAAS;AAC3C,iBAAK,YAAY;AAAA,UAClB,OAAO;AACN,kBAAM,IAAI;AAAA,cACT;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAGA,YAAI,KAAK,OAAO;AACf,eAAK,sBAAsB;AAC3B,eAAK,oBAAoB,KAAK,KAAK;AAAA,QACpC;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,SAAS;AACR,YAAI,KAAK,aAAa,CAAC,KAAK,gBAAgB;AAC3C,gBAAM,IAAI;AAAA,YACT;AAAA,UACD;AAAA,QACD;AAEA,YAAI,CAAC,KAAK,eAAe;AACxB,gBAAM,IAAI;AAAA,YACT;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,UACN,GAAG;AAAA,UACH,SAAS,OAAO,QAAQ,KAAK,OAAO,EAAE,IAAI,CAAC,CAAC,WAAWE,OAAM,MAAM;AAClE,kBAAM,WAAW,YAAYA,OAAM;AAEnC,gBAAI,CAAC,UAAU;AACd,qBAAO;AAAA,YACR;AAEA,mBAAO,GAAG,SAAS,IAAI,QAAQ;AAAA,UAChC,CAAC;AAAA,UACD,UAAU,KAAK;AAAA,UACf,iBAAiB,sBAAsB,KAAK,eAAe;AAAA,UAC3D,WAAW,KAAK;AAAA,QACjB;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,kBAAkB,QAAQ;AACzB,eAAO,kBAAkB,QAAQ,IAAI;AAAA,MACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,wBAAwB;AACvB,mBAAW,CAAC,QAAQ,cAAc,KAAK,OAAO,QAAQ,KAAK,KAAK,GAAG;AAElE,cAAI,aAAa,MAAM,QAAQ,cAAc,IAC1C,iBACA,CAAC,cAAc;AAGlB,qBAAW,CAAC,IAAI,WAAW,IAAI,WAAW,CAAC,CAAC;AAE5C,gBAAM,OAAO,kBAAkB,QAAQ,IAAI;AAG3C,gBAAM,gBAAgB,WAAW,MAAM,CAAC;AACxC,gBAAM,gBAAgB;AAAA,YACrB,MAAM,MAAM;AAAA,YACZ;AAAA,UACD;AAEA,cAAI,cAAc,QAAQ;AACzB,yBAAa,CAAC,WAAW,CAAC,GAAG,GAAG,aAAa;AAAA,UAC9C;AAEA,eAAK,MAAM,MAAM,IAAI;AAAA,QACtB;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAcA,oBAAoB,aAAa;AAChC,YAAI,CAAC,aAAa;AACjB,gBAAM,IAAI,UAAU,oCAAoC;AAAA,QACzD;AAGA,cAAM,yBAAyB;AAAA,UAC9B,KAAK;AAAA,QACN;AAGA,cAAM,EAAE,YAAY,iBAAiB,IAAI;AAAA,UACxC;AAAA,QACD;AACA,cAAM,eACL,KAAK,QAAQ,gBAAgB,MAC5B,qBAAqB,OAAO,KAAK,QAAQ,GAAG,IAAI;AAClD,cAAM,mBAAmB,cAAc,MAAM,YAC1C,CAAC,kBAAkB,aAAa,KAAK,SAAS,IAC9C,CAAC,gBAAgB;AACpB,cAAM,2BAA2B,CAAC;AAElC,mBAAW,CAAC,QAAQ,WAAW,KAAK,OAAO,QAAQ,WAAW,GAAG;AAEhE,cAAI,WAAW,aAAa;AAC3B;AAAA,UACD;AAWA,cAAI,YAAY,CAAC,MAAM,GAAG;AACzB;AAAA,UACD;AAEA,gBAAM,OAAO,kBAAkB,QAAQ,IAAI;AAE3C,cAAI,CAAC,MAAM;AACV,mCAAuB,YAAY,MAAM,GAAG,IAAI;AAAA,UACjD;AAGA,cAAI,KAAK,MAAM,cAAc,QAAQ;AACpC,gBAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,SAAS,GAAG;AACxC,oBAAM,IAAI;AAAA,gBACT,qBAAqB,MAAM;AAAA,cAC5B;AAAA,YACD;AAEA,uBAAW,QAAQ,KAAK,KAAK,WAAW;AACvC,kBAAI,OAAO,SAAS,UAAU;AAC7B,sBAAM,IAAI;AAAA,kBACT,qBAAqB,MAAM;AAAA,gBAC5B;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAGA,cACC,CAAC;AAAA,YACA,KAAK,MAAM;AAAA,YACX;AAAA,YACA;AAAA,UACD,GACC;AACD,qCAAyB,KAAK,MAAM;AAAA,UACrC;AAEA,gBAAM,eAAe,qBAAqB,MAAM,MAAM;AAEtD,cAAI,cAAc;AACjB,yBAAa,YAAY,MAAM,CAAC,CAAC;AAEjC,gBAAI,aAAa,QAAQ;AACxB,oBAAM,IAAI;AAAA,gBACT,qBAAqB,MAAM;AAAA,EAAO,aAAa,OAC7C,IAAI,WAAS;AACb,sBACC,MAAM,YAAY,0BAClB,MAAM,WAAW,SACjB,OAAO,MAAM,cAAc,eAC1B,YACD,OAAO,MAAM,QAAQ,uBACpB,UACA;AACD,0BAAM,qBAAqB,OAAO;AAAA,sBACjC,MAAM,aAAa;AAAA,oBACpB,EAAE,IAAI,cAAY,IAAI,QAAQ,GAAG;AAEjC,2BAAO,UAAW,KAAK,UAAU,MAAM,IAAI,CAAC,IAAI,MAAM,OAAO;AAAA,yBAA+B,MAAM,OAAO,kBAAkB,2BAA2B,mBAAmB,KAAK,IAAI,CAAC;AAAA;AAAA,kBACpL;AAEA,yBAAO,UAAW,KAAK,UAAU,MAAM,IAAI,CAAC,IAAI,MAAM,OAAO;AAAA;AAAA,gBAC9D,CAAC,EACA,KAAK,EAAE,CAAC;AAAA,cACX;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,YAAI,yBAAyB,SAAS,GAAG;AACxC,gBAAM,QAAQ,IAAI;AAAA,YACjB,iEAAiE,sBAAsB;AAAA,EAAO,yBAAyB,IAAI,YAAU,OAAQ,MAAM,GAAG,EAAE,KAAK,IAAI,CAAC;AAAA,UACnK;AAEA,gBAAM,kBAAkB;AACxB,gBAAM,cAAc;AAAA,YACnB,SAAS;AAAA,YACT,UAAU;AAAA,UACX;AACA,gBAAM;AAAA,QACP;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,OAAO,qBAAqB,gBAAgB;AAC3C,eAAO,qBAAqB,cAAc;AAAA,MAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,OAAO,uBAAuB,YAAY;AACzC,cAAM,gBAAgB,MAAM,QAAQ,UAAU,IAC3C,WAAW,CAAC,IACZ;AAEH,YAAI,WAAW,IAAI,aAAa,GAAG;AAClC,iBAAO,WAAW,IAAI,aAAa;AAAA,QACpC;AAEA,YAAI,OAAO,kBAAkB,UAAU;AACtC,iBAAO,WAAW,IAAI,cAAc,YAAY,CAAC,KAAK;AAAA,QACvD;AAEA,eAAO;AAAA,MACR;AAAA,IACD;AAEA,IAAAJ,QAAO,UAAU,EAAE,OAAO;AAAA;AAAA;;;AClyB1B;AAAA,+DAAAK,UAAAC,SAAA;AAAA;AAoBA,QAAM,eAAe;AACrB,QAAM,EAAE,OAAO,IAAI;AASnB,aAAS,iBAAiB,OAAO,OAAO;AACvC,aAAO,MAAM,OAAO,MAAM,QAAQ,MAAM,SAAS,MAAM;AAAA,IACxD;AAOA,aAAS,uBAAuB,YAAY;AAC3C,YAAM,SAAS,oBAAI,IAAI;AAEvB,iBAAW,aAAa,YAAY;AACnC,cAAM;AAAA,UACL,sBAAsB,EAAE,gBAAgB;AAAA,QACzC,IAAI;AAEJ,YAAI,OAAO,IAAI,eAAe,GAAG;AAChC,iBAAO,IAAI,eAAe,EAAE,KAAK,SAAS;AAAA,QAC3C,OAAO;AACN,iBAAO,IAAI,iBAAiB,CAAC,SAAS,CAAC;AAAA,QACxC;AAAA,MACD;AAEA,aAAO,CAAC,GAAG,OAAO,OAAO,CAAC;AAAA,IAC3B;AASA,aAAS,kCACR,YACA,iBACA,YACC;AAQD,YAAM,WAAW,gBAAgB,MAAM,KAAK;AAG5C,YAAM,YAAY,WAAW,KAAK;AAAA,QACjC;AAAA,QACA,WAAW,SAAS,gBAAgB,IAAI,EAAE,CAAC;AAAA,MAC5C;AAQA,aAAO,WAAW,IAAI,eAAa;AAClC,cAAM,EAAE,OAAO,IAAI;AAEnB,cAAM,QAAQ,IAAI;AAAA,UACjB,OAAO,kCAAkC,aAAa,MAAM,CAAC;AAAA,UAC7D;AAAA,QACD;AACA,cAAMC,SAAQ,MAAM,KAAK,QAAQ;AACjC,cAAM,cAAcA,OAAM,CAAC;AAC3B,cAAM,aAAa,YAAYA,OAAM;AACrC,cAAM,WAAW,aAAa,YAAY;AAE1C,cAAM,oBAAoB,YAAY,QAAQ,GAAG;AACjD,cAAM,mBAAmB,YAAY,YAAY,GAAG;AAEpD,YAAI,cAAc;AAElB,YAAI,sBAAsB,kBAAkB;AAa3C,yBAAe,aAAa;AAC5B,uBAAa,aAAa;AAAA,QAC3B,OAAO;AAmBN,yBAAe;AACf,uBAAa;AAAA,QACd;AAEA,eAAO;AAAA,UACN,aAAa,IAAI,MAAM;AAAA,UACvB,KAAK;AAAA,YACJ,OAAO,CAAC,cAAc,UAAU;AAAA,YAChC,MAAM;AAAA,UACP;AAAA,UACA,sBAAsB,UAAU;AAAA,QACjC;AAAA,MACD,CAAC;AAAA,IACF;AASA,aAAS,uBAAuB,YAAYC,OAAM,YAAY;AAC7D,YAAM,QAAQ,WAAW,SAASA,KAAI;AACtC,YAAM,UAAU,WACd,OAAO,eAAa,UAAU,MAAM,EACpC,IAAI,eAAa,IAAI,UAAU,MAAM,GAAG;AAE1C,aAAO;AAAA,QACN,aACC,QAAQ,UAAU,IACf,QAAQ,KAAK,MAAM,IACnB,GAAG,QAAQ,MAAM,GAAG,QAAQ,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,QAAQ,GAAG,EAAE,CAAC;AAAA,QAC5E,KAAK;AAAA,UACJ;AAAA,UACA,MAAM;AAAA,QACP;AAAA,QACA,sBAAsB,WAAW,CAAC,EAAE;AAAA,MACrC;AAAA,IACD;AAQA,aAAS,wBAAwB,eAAe,YAAY;AAC3D,YAAM,kBAAkB,uBAAuB,aAAa;AAE5D,aAAO,gBAAgB,QAAQ,gBAAc;AAC5C,cAAM,EAAE,gBAAgB,IAAI,WAAW,CAAC,EAAE;AAC1C,cAAM,mBAAmB,IAAI,IAAI,gBAAgB,OAAO;AAExD,mBAAW,aAAa,YAAY;AACnC,2BAAiB,OAAO,UAAU,MAAM;AAAA,QACzC;AAEA,eAAO,iBAAiB,OACrB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,IACC;AAAA,UACA;AAAA,YACC;AAAA,YACA,gBAAgB;AAAA,YAChB;AAAA,UACD;AAAA,QACD;AAAA,MACH,CAAC;AAAA,IACF;AAOA,aAAS,4BAA4B,YAAY;AAMhD,YAAM,eAAe,oBAAI,IAAI;AAO7B,YAAM,uBAAuB,oBAAI,IAAI;AAMrC,eAASC,SAAQ,WAAW,SAAS,GAAGA,UAAS,GAAGA,UAAS;AAC5D,cAAM,YAAY,WAAWA,MAAK;AAElC,YAAI,UAAU,SAAS,WAAW;AACjC,cAAI,aAAa,SAAS,GAAG;AAC5B;AAAA,UACD;AACA,cAAI,UAAU,WAAW,MAAM;AAQ9B,uBAAW,mBAAmB,aAAa,OAAO,GAAG;AACpD,mCAAqB,IAAI,eAAe;AAAA,YACzC;AACA,yBAAa,MAAM;AAAA,UACpB,OAAO;AACN,kBAAM,kBAAkB,aAAa,IAAI,UAAU,MAAM;AAEzD,gBAAI,iBAAiB;AAMpB,mCAAqB,IAAI,eAAe;AAAA,YACzC,OAAO;AACN,oBAAM,gCACL,aAAa,IAAI,IAAI;AAEtB,kBAAI,+BAA+B;AAMlC,qCAAqB,IAAI,6BAA6B;AAAA,cACvD;AAAA,YACD;AAAA,UACD;AAAA,QACD,WAAW,UAAU,SAAS,UAAU;AACvC,cAAI,UAAU,WAAW,MAAM;AAO9B,yBAAa,MAAM;AACnB,yBAAa,IAAI,MAAM,SAAS;AAAA,UACjC,OAAO;AACN,yBAAa,IAAI,UAAU,QAAQ,SAAS;AAAA,UAC7C;AAAA,QACD;AAAA,MACD;AACA,aAAO;AAAA,IACR;AAYA,aAAS,gBAAgB,SAAS;AACjC,YAAM,WAAW,CAAC;AAClB,YAAM,wBAAwB,oBAAI,IAAI;AACtC,YAAM,EAAE,WAAW,IAAI;AAEvB,iBAAW,WAAW,QAAQ,UAAU;AACvC,YAAI,8BAA8B,CAAC;AACnC,YAAI,qBAAqB;AAEzB,eACC,qBAAqB,QAAQ,WAAW,UACxC,iBAAiB,QAAQ,WAAW,kBAAkB,GAAG,OAAO,KAC/D,GACA;AACD,gBAAM,YAAY,QAAQ,WAAW,oBAAoB;AAEzD,cACC,UAAU,WAAW,QACrB,UAAU,WAAW,QAAQ,QAC5B;AACD,oBAAQ,UAAU,MAAM;AAAA,cACvB,KAAK;AACJ,4CAA4B,KAAK,SAAS;AAC1C;AAAA,cAED,KAAK;AACJ,8CAA8B,CAAC;AAC/B;AAAA,YAGF;AAAA,UACD;AAAA,QACD;AAEA,YAAI,4BAA4B,SAAS,GAAG;AAC3C,gBAAM,eAAe,4BAA4B,IAAI,gBAAc;AAAA,YAClE,MAAM;AAAA,YACN,eAAe,UAAU,qBAAqB;AAAA,UAC/C,EAAE;AAEF,cAAI,QAAQ,cAAc;AACzB,oBAAQ,eACP,QAAQ,aAAa,OAAO,YAAY;AAAA,UAC1C,OAAO;AACN,oBAAQ,eAAe;AACvB,kCAAsB,IAAI,4BAA4B,GAAG,EAAE,CAAC;AAAA,UAC7D;AAAA,QACD;AAEA,iBAAS,KAAK,OAAO;AAAA,MACtB;AAEA,YAAM,kCAAkC,QAAQ,WAAW;AAAA,QAC1D,eACC,UAAU,SAAS,aACnB,CAAC,sBAAsB,IAAI,SAAS,KACpC,CAAC,QAAQ,cAAc,IAAI,UAAU,MAAM;AAAA,MAC7C;AAEA,YAAM,iCAAiC,IAAI;AAAA,QAC1C,QAAQ,WAAW;AAAA,UAClB,eACC,UAAU,qBAAqB,SAAS,YACxC,CAAC,QAAQ,cAAc,IAAI,UAAU,MAAM;AAAA,QAC7C;AAAA,MACD;AAMA,UAAI,+BAA+B,OAAO,GAAG;AAC5C,mBAAW,aAAa;AAAA,UACvB,QAAQ;AAAA,QACT,GAAG;AACF,yCAA+B,OAAO,SAAS;AAAA,QAChD;AAAA,MACD;AAEA,YAAM,YAAY;AAAA,QACjB;AAAA,QACA;AAAA,MACD,EAAE;AAAA,QACD,wBAAwB,gCAAgC,UAAU;AAAA,MACnE;AACA,YAAM,eAAe,QAAQ,SAAS,gBAAgB,IAAI,IAAI;AAC9D,YAAM,aAAa,QAAQ,SAAS,cAAc,IAAI,IAAI;AAE1D,YAAM,mBAAmB,UAAU;AAAA,QAClC,CAAC,EAAE,aAAa,KAAK,qBAAqB,MAAM;AAC/C,gBAAM,EAAE,iBAAiB,MAAM,MAAM,OAAO,IAC3C;AAED,cAAI;AAEJ,cAAI,SAAS,UAAU;AACtB,sBAAU,cACP,wFAAwF,WAAW,OACnG;AAAA,UACJ,OAAO;AACN,sBAAU,cACP,mEAAmE,WAAW,OAC9E;AAAA,UACJ;AAEA,gBAAM,MAAM,WAAW,OAAO,gBAAgB,IAAI;AAElD,iBAAO;AAAA,YACN,QAAQ;AAAA,YACR;AAAA,YACA,MACC,SAAS,sBACN,IAAI,MAAM,OAAO,aACjB;AAAA,YACJ,QACC,SAAS,sBACN,IAAI,MAAM,SAAS,eACnB;AAAA,YACJ,UACC,QAAQ,kCAAkC,SAAS,IAAI;AAAA,YACxD,GAAI,QAAQ,eAAe,CAAC,IAAI,EAAE,IAAI;AAAA,UACvC;AAAA,QACD;AAAA,MACD;AAEA,aAAO,EAAE,UAAU,iBAAiB;AAAA,IACrC;AA0BA,IAAAH,QAAO,UAAU,CAAC;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,gCAAgC;AAAA,IACjC,MAAM;AACL,YAAM,kBAAkB,WACtB;AAAA,QACA,eACC,UAAU,SAAS,aAAa,UAAU,SAAS;AAAA,MACrD,EACC;AAAA,QAAI,eACJ,OAAO,OAAO,CAAC,GAAG,WAAW,EAAE,sBAAsB,UAAU,CAAC;AAAA,MACjE,EACC,KAAK,gBAAgB;AAEvB,YAAM,iBAAiB,WACrB,QAAQ,eAAa;AACrB,gBAAQ,UAAU,MAAM;AAAA,UACvB,KAAK;AAAA,UACL,KAAK;AACJ,mBAAO,CAAC;AAAA,UAET,KAAK;AACJ,mBAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,gBACN,MAAM,UAAU;AAAA,gBAChB,QAAQ;AAAA,gBACR,QAAQ,UAAU;AAAA,gBAClB,sBAAsB;AAAA,cACvB;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,MAAM,UAAU,OAAO;AAAA,gBACvB,QAAQ;AAAA,gBACR,QAAQ,UAAU;AAAA,gBAClB,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UAED,KAAK;AACJ,mBAAO;AAAA,cACN;AAAA,gBACC,MAAM;AAAA,gBACN,MAAM,UAAU,OAAO;AAAA,gBACvB,QAAQ;AAAA,gBACR,QAAQ,UAAU;AAAA,gBAClB,sBAAsB;AAAA,cACvB;AAAA,cACA;AAAA,gBACC,MAAM;AAAA,gBACN,MAAM,UAAU,OAAO;AAAA,gBACvB,QAAQ;AAAA,gBACR,QAAQ,UAAU;AAAA,gBAClB,sBAAsB;AAAA,cACvB;AAAA,YACD;AAAA,UAED;AACC,kBAAM,IAAI;AAAA,cACT,gCAAgC,UAAU,IAAI;AAAA,YAC/C;AAAA,QACF;AAAA,MACD,CAAC,EACA,KAAK,gBAAgB;AAGvB,YAAM,gBACL,mBAAmB,aAChB,IAAI;AAAA,QACJ,OAAO,KAAK,eAAe,EAAE,OAAO,YAAU;AAC7C,gBAAM,WAAW,OAAO;AAAA,YACvB,gBAAgB,MAAM;AAAA,UACvB;AAGA,cAAI,aAAa,GAAG;AACnB,mBAAO;AAAA,UACR;AAEA,iBAAO,CAAC,WAAW,EAAE,UAAU,OAAO,CAAC;AAAA,QACxC,CAAC;AAAA,MACF,IACC,oBAAI,IAAI;AAGZ,UAAI,cAAc,OAAO,GAAG;AAC3B,sBAAc,IAAI,IAAI;AAAA,MACvB;AAEA,YAAM,wBAAwB,gBAAgB;AAAA,QAC7C;AAAA,QACA;AAAA,QACA;AAAA,QACA,YAAY;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AACD,YAAM,uBAAuB,gBAAgB;AAAA,QAC5C;AAAA,QACA;AAAA,QACA,UAAU,sBAAsB;AAAA,QAChC,YAAY;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAED,aAAO,kCAAkC,QACtC,qBAAqB,SACpB,OAAO,sBAAsB,gBAAgB,EAC7C,OAAO,qBAAqB,gBAAgB,EAC5C,KAAK,gBAAgB,IACtB,qBAAqB;AAAA,IACzB;AAAA;AAAA;;;ACtkBA;AAAA,wDAAAI,UAAAC,SAAA;AAAA;AAUA,QAAMC,SAAQ,cAAiB,0BAA0B;AAMzD,QAAM,MAAM;AASZ,aAAS,0BAA0B,GAAG,GAAG;AACxC,aAAO,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC;AAAA,IACzE;AASA,aAAS,0BAA0B,GAAG,GAAG;AACxC,aAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;AAAA,IACxC;AAUA,aAAS,kBAAkB;AAC1B,aAAO,OAAO,IAAI;AAAA,IACnB;AAUA,oBAAgB,aAAa,SAAU,YAAY,UAAU,WAAW;AACvE,MAAAA,OAAM,gBAAgB;AAEtB,UAAI,cAAc,OAAO;AACxB,QAAAA,OAAM,qDAAqD;AAC3D,eAAO;AAAA,UACN,OAAO;AAAA,UACP;AAAA,UACA,QAAQ;AAAA,QACT;AAAA,MACD;AAGA,YAAM,oBAAoB,CAAC,GAC1B,QAAQ,CAAC,GACT,MAAM,WAAW,WAAW,GAAG,IAAI,MAAM,IACzCC,QAAO,MAAM,WAAW,MAAM,CAAC,IAAI;AACpC,UAAI,UAAU,OAAO,mBACpB,SAAS;AAOV,eAAS,WAAW,SAAS;AAC5B,cAAM,MAAM,QAAQ;AACpB,cAAM,QAAQ,IAAI,MAAM,CAAC;AACzB,cAAM,MAAM,IAAI,MAAM,CAAC;AAGvB,YAAI,WAAW,SAAS,QAAQ,KAAK;AACpC,4BAAkB,KAAK,OAAO;AAC9B,iBAAO;AAAA,QACR;AAGA,YACE,QAAQ,KAAK,OAAO,KACpB,UAAU,KAAK,IAAI,KAAK,WAAW,GAAG,GACtC;AACD,mBAAS;AAAA,QACV;AAGA,kBAAUA,MAAK,MAAM,KAAK,IAAI,GAAG,OAAO,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC;AAC7D,kBAAU,IAAI;AACd,kBAAU;AACV,eAAO;AAAA,MACR;AAEA,eAAS,QAAQ,aAAW;AAC3B,YAAI,OAAO,OAAO,SAAS,KAAK,KAAK,QAAQ,KAAK;AACjD,gBAAM,KAAK,OAAO;AAAA,QACnB,OAAO;AACN,4BAAkB,KAAK,OAAO;AAAA,QAC/B;AAAA,MACD,CAAC;AAED,UAAI,MAAM,QAAQ;AACjB,QAAAD,OAAM,sBAAsB;AAC5B,YAAI,mBAAmB;AAEvB,mBAAW,WAAW,MAAM,KAAK,yBAAyB,GAAG;AAC5D,cAAI,OAAO,cAAc,cAAc,UAAU,OAAO,GAAG;AAC1D,uBAAW,OAAO;AAMlB,+BAAmB;AAAA,UACpB,OAAO;AACN,8BAAkB,KAAK,OAAO;AAAA,UAC/B;AAAA,QACD;AACA,kBAAUC,MAAK,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC;AAEzC,eAAO;AAAA,UACN,OAAO;AAAA,UACP,UAAU,kBAAkB,KAAK,yBAAyB;AAAA,UAC1D;AAAA,QACD;AAAA,MACD;AAEA,MAAAD,OAAM,mBAAmB;AACzB,aAAO;AAAA,QACN,OAAO;AAAA,QACP;AAAA,QACA,QAAQ,MAAMC;AAAA,MACf;AAAA,IACD;AAEA,IAAAF,QAAO,UAAU;AAAA;AAAA;;;ACzJjB;AAAA,0DAAAG,UAAAC,SAAA;AAAA;AAWA,QAAM,aAAa,OAAO,OAAO,CAAC,CAAC;AAWnC,QAAM,oBAAN,MAAwB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKvB,aAAa,oBAAI,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQrB,IAAI,MAAM,MAAM;AACf,YAAI,KAAK,WAAW,IAAI,IAAI,GAAG;AAC9B,eAAK,WAAW,IAAI,IAAI,EAAE,KAAK,IAAI;AAAA,QACpC,OAAO;AACN,eAAK,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC;AAAA,QACjC;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,IAAI,MAAM;AACT,YAAI,KAAK,WAAW,IAAI,IAAI,GAAG;AAC9B,iBAAO,KAAK,WAAW,IAAI,IAAI;AAAA,QAChC;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,YAAY,UAAU;AACrB,aAAK,WAAW,QAAQ,CAAC,OAAO,SAAS;AACxC,mBAAS,IAAI;AAAA,QACd,CAAC;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,SAAS,SAAS,MAAM;AACvB,YAAI,KAAK,WAAW,IAAI,IAAI,GAAG;AAC9B,eAAK,WAAW,IAAI,IAAI,EAAE,QAAQ,UAAQ,KAAK,GAAG,IAAI,CAAC;AAAA,QACxD;AAAA,MACD;AAAA,IACD;AAEA,IAAAA,QAAO,UAAU,EAAE,kBAAkB;AAAA;AAAA;;;AChFrC;AAAA,wDAAAC,UAAA;AAAA;AAWA,QAAM,EAAE,aAAa,kBAAkB,IAAI;AAC3C,QAAM,EAAE,iBAAiB,IAAI;AAC7B,QAAM,EAAE,cAAc,IAAI;AAC1B,QAAM,EAAE,OAAO,IAAI;AASnB,QAAM,cAAc,oBAAI,IAAI,CAAC,QAAQ,UAAU,CAAC;AAShD,aAAS,2BAA2B,OAAOC,iBAAgBC,aAAY;AACtE,UAAI,WAAW;AACf,UAAI,cAAc,MAAM;AAmBxB,UAAI,MAAM,QAAQA,aAAY;AAC7B,mBAAW;AAAA,MACZ,WAAW,MAAM,QAAQD,kBAAiBC,aAAY;AACrD,mBAAW;AACX,sBAAc,MAAM,QAAQA;AAAA,MAC7B,OAAO;AACN,sBAAc,MAAM,QAAQD,kBAAiBC;AAAA,MAC9C;AAEA,aAAO,IAAI;AAAA,QACV,GAAG,MAAM,QAAQ,MAAM,GAAG,EAAE,CAAC,OAAO,QAAQ,UAAU,WAAW;AAAA,QACjE,EAAE,OAAO,MAAM;AAAA,MAChB;AAAA,IACD;AAEA,QAAM,qBAAqB,uBAAO,oBAAoB;AACtD,QAAM,iBAAiB,uBAAO,gBAAgB;AAC9C,QAAM,aAAa,uBAAO,YAAY;AAStC,QAAM,kBAAN,cAA8B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOzC,YACC,SACA,EAAE,UAAU,eAAe,MAAM,aAAa,cAAc,IAAI,CAAC,GAChE;AACD,cAAM,SAAS;AAAA,UACd;AAAA,UACA,QAAQ;AAAA,QACT,CAAC;AAMD,aAAK,cAAc,IAAI,KAAK;AAE5B,YAAI,WAAW,OAAO,QAAQ,GAAG;AAChC,eAAK,QAAQ,GAAG,UAAU;AAAA,QAC3B,OAAO;AACN,eAAK,QAAQ,UAAU;AAAA,QACxB;AAMA,aAAK,UAAU,IAAI,KAAK,SAAS,KAAK,cAAc;AAMpD,aAAK,kBAAkB,IAAI;AAC3B,eAAO,eAAe,MAAM,oBAAoB,EAAE,UAAU,MAAM,CAAC;AAQnE,aAAK,eAAe;AACpB,eAAO,eAAe,MAAM,gBAAgB,EAAE,UAAU,MAAM,CAAC;AAAA,MAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,UAAU,SAAS;AAClB,eAAO,MAAM,UAAU,OAAO,EAAE,MAAM,WAAS;AAC9C,cAAI,MAAM,SAAS,eAAe;AACjC,kBAAM;AAAA,cACL;AAAA,cACA,KAAK,cAAc;AAAA,cACnB,KAAK,UAAU;AAAA,YAChB;AAAA,UACD;AAEA,gBAAM;AAAA,QACP,CAAC;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,cAAc,SAAS;AACtB,YAAI;AACH,iBAAO,MAAM,cAAc,OAAO;AAAA,QACnC,SAAS,OAAO;AACf,cAAI,MAAM,SAAS,eAAe;AACjC,kBAAM;AAAA,cACL;AAAA,cACA,KAAK,cAAc;AAAA,cACnB,KAAK,UAAU;AAAA,YAChB;AAAA,UACD;AAEA,gBAAM;AAAA,QACP;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,CAAC,kBAAkB,gBAAgB,EAAE,QAAQ;AAM5C,YACC,CAAC,KAAK,gBACN,CAAC,KAAK,kBAAkB,EAAE,SAAS,MAAM,KACzC,OAAO,WACP,OAAO,KAAK,MAAM,EAAE,OAAO,SAAO,CAAC,YAAY,IAAI,GAAG,CAAC,EAAE,WACxD,GACA;AAED,gBAAM,EAAE,SAAS,GAAG,UAAU,IAAI;AAElC,iBAAO;AAAA,QACR;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,CAAC,kBAAkB,cAAc,EAAE,QAAQ;AAC1C,eAAO,IAAI,OAAO,MAAM;AAAA,MACzB;AAAA;AAAA,IAED;AAEA,IAAAF,SAAQ,kBAAkB;AAAA;AAAA;;;ACxN1B;AAAA,4CAAAG,UAAAC,SAAA;AAAA;AA2BA,QAAM,cAAc,oBAAI,IAAI;AAAA,MAC3B,CAAC,aAAa,wBAAwB;AAAA,MACtC,CAAC,eAAe,wBAAwB;AAAA,MACxC;AAAA,QACC;AAAA,QACA;AAAA,MACD;AAAA,IACD,CAAC;AAMD,QAAM,gBAAgB,oBAAI,IAAI;AAAA,MAC7B;AAAA,QACC;AAAA,QACA;AAAA,UACC,aACC;AAAA,UACD,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MACA;AAAA,QACC;AAAA,QACA;AAAA,UACC,aACC;AAAA,UACD,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MACA;AAAA,QACC;AAAA,QACA;AAAA,UACC,aACC;AAAA,QACF;AAAA,MACD;AAAA,IACD,CAAC;AAOD,aAAS,2BAA2B,EAAE,WAAW,GAAG;AACnD,UAAI,OAAO,eAAe,aAAa;AACtC,eAAO;AAAA,MACR;AAEA,UAAI,OAAO,eAAe,UAAU;AACnC,eAAO,+BAA+B,UAAU,+CAA+C,UAAU;AAAA,MAC1G;AAGA,aAAO;AAAA,IACR;AAEA,IAAAA,QAAO,UAAU;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA;AAAA;;;ACxFA;AAAA,4CAAAC,UAAAC,SAAA;AAAA;AAsBA,aAAS,cAAcC,QAAO;AAC7B,aAAO,OAAOA,WAAU,WACrBA,OAAM,WAAW,CAAC,MAAM,QACxBA,OAAM,CAAC,MAAM,OAAQA,OAAM,CAAC,MAAM,OAAQA,OAAM,CAAC,MAAM;AAAA,IAC3D;AAOA,aAAS,gBAAgBA,QAAO;AAC/B,UAAI,CAAC,cAAcA,MAAK,GAAG;AAC1B,eAAOA;AAAA,MACR;AAEA,UAAI,OAAOA,WAAU,UAAU;AAM9B,eAAOA,OAAM,MAAM,CAAC;AAAA,MACrB;AAMA,aAAOA,OAAM,MAAM,CAAC;AAAA,IACrB;AAUA,QAAMC,SAAN,MAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,YAAYC,OAAM,MAAM,EAAE,aAAa,IAAI,CAAC,GAAG;AAC9C,aAAK,OAAOA;AACZ,aAAK,eAAe,gBAAgBA;AACpC,aAAK,MAAM,cAAc,IAAI;AAC7B,aAAK,OAAO,gBAAgB,IAAI;AAChC,aAAK,UAAU;AAAA,MAChB;AAAA,IACD;AAEA,IAAAH,QAAO,UAAU,EAAE,OAAAE,OAAM;AAAA;AAAA;;;AClHzB;AAAA,uDAAAE,UAAAC,SAAA;AAAA;AAuBA,QAAM,gBAAN,MAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQnB,UAAU,MAAM,QAAQ;AACvB,cAAM,EAAE,UAAU,gBAAgB,IAAI;AACtC,cAAM,SAAS,SAAS,MAAM,MAAM,EAAE,gBAAgB,CAAC;AAEvD,YAAI,OAAO,OAAO,SAAS,YAAY;AACtC,gBAAM,IAAI,MAAM,kDAAkD;AAAA,QACnE;AAEA,YAAI,OAAO,IAAI;AACd,iBAAO;AAAA,YACN,IAAI;AAAA,YACJ,YAAY,SAAS,iBAAiB,MAAM,QAAQ;AAAA,cACnD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAGA,eAAO;AAAA,UACN,IAAI;AAAA,UACJ,QAAQ,OAAO,OAAO,IAAI,YAAU;AAAA,YACnC,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,UAAU;AAAA,YACV,SAAS,kBAAkB,MAAM,OAAO;AAAA,YACxC,MAAM,MAAM;AAAA,YACZ,QAAQ,MAAM;AAAA,UACf,EAAE;AAAA,QACH;AAAA,MACD;AAAA,IACD;AAEA,IAAAA,QAAO,UAAU,EAAE,cAAc;AAAA;AAAA;;;AC/DjC;AAAA,mDAAAC,UAAA;AAAA;AAUA,QAAM,cAAN,MAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKjB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,YAAY;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,GAAG;AACF,aAAK,MAAM;AACX,aAAK,WAAW;AAChB,aAAK,mBAAmB;AACxB,aAAK,aAAa;AAClB,aAAK,kBAAkB;AACvB,aAAK,WAAW;AAEhB,eAAO,OAAO,IAAI;AAAA,MACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,OAAOC,YAAW;AACjB,eAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,IAAI,GAAGA,UAAS,CAAC;AAAA,MACnE;AAAA,IACD;AAEA,IAAAD,SAAQ,cAAc;AAAA;AAAA;;;ACvFtB;AAAA,0DAAAE,UAAAC,SAAA;AAAA;AAYA,QAAMC,QAAO,QAAQ,WAAW;AAChC,QAAM,EAAE,OAAAC,OAAM,IAAI;AAkBlB,QAAM,mBAAN,MAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQtB,eAAe,MAAM,QAAQ;AAC5B,cAAM,EAAE,UAAU,IAAI;AACtB,YAAI;AAEJ,YAAI;AACH,mBAAS,UAAU,WAAW,KAAK,SAAS,KAAK,IAAI;AAAA,QACtD,SAAS,IAAI;AAEZ,gBAAM,UAAU,wBAAwB,GAAG,QAAQ,QAAQ,gBAAgB,EAAE,EAAE,KAAK,CAAC;AAErF,iBAAO;AAAA,YACN,IAAI;AAAA,YACJ,QAAQ;AAAA,cACP;AAAA,gBACC,QAAQ;AAAA,gBACR,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV;AAAA,gBACA,MAAM,GAAG;AAAA,gBACT,QAAQ,GAAG;AAAA,cACZ;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,YAAI,OAAO,OAAO,SAAS,YAAY;AACtC,gBAAM,IAAI,MAAM,+CAA+C;AAAA,QAChE;AAEA,eAAO;AAAA,UACN,IAAI;AAAA,UACJ,OAAO,OAAO,IAAI,CAAC,OAAO,MAAM;AAE/B,gBAAI,OAAO,UAAU,UAAU;AAC9B,qBAAO;AAAA,YACR;AAEA,kBAAM,WAAWD,MAAK,KAAK,KAAK,MAAM,GAAG,CAAC,IAAI,MAAM,QAAQ,EAAE;AAE9D,mBAAO,IAAIC,OAAM,UAAU,MAAM,MAAM;AAAA,cACtC,cAAc,KAAK;AAAA,YACpB,CAAC;AAAA,UACF,CAAC;AAAA,QACF;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,gBAAgB,MAAM,UAAU,QAAQ;AACvC,cAAM,EAAE,UAAU,IAAI;AAEtB,eAAO,UAAU,YAAY,UAAU,KAAK,IAAI;AAAA,MACjD;AAAA,IACD;AAEA,IAAAF,QAAO,UAAU,EAAE,iBAAiB;AAAA;AAAA;;;ACnGpC;AAAA,mDAAAG,UAAAC,SAAA;AAAA;AAeA,aAAS,0BAA0B,OAAO,UAAU;AACnD,UAAI,UAAU,UAAU;AACvB,eAAO;AAAA,MACR;AAEA,UACC,OAAO,UAAU,OAAO,YACxB,MAAM,QAAQ,KAAK,MAAM,MAAM,QAAQ,QAAQ,GAC9C;AACD,eAAO;AAAA,MACR;AAEA,UAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,eACC,MAAM,WAAW,SAAS,UAC1B,MAAM;AAAA,UAAK,CAACC,QAAO,MAClB,0BAA0BA,QAAO,SAAS,CAAC,CAAC;AAAA,QAC7C;AAAA,MAEF;AAEA,UAAI,OAAO,UAAU,UAAU;AAC9B,YAAI,UAAU,QAAQ,aAAa,MAAM;AACxC,iBAAO;AAAA,QACR;AAEA,cAAM,YAAY,OAAO,KAAK,KAAK;AACnC,cAAM,eAAe,OAAO,KAAK,QAAQ;AAEzC,eACC,UAAU,WAAW,aAAa,UAClC,UAAU;AAAA,UACT,cACC,CAAC,OAAO,OAAO,UAAU,QAAQ,KACjC;AAAA,YACC,MAAM,QAAQ;AAAA,YACd,SAAS,QAAQ;AAAA,UAClB;AAAA,QACF;AAAA,MAEF;AAEA,aAAO;AAAA,IACR;AAEA,IAAAD,QAAO,UAAU;AAAA,MAChB;AAAA,IACD;AAAA;AAAA;;;AC9DA;AAAA,wDAAAE,UAAAC,SAAA;AAAA;AAcA,QAAM,iBAAN,MAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKpB,YAAY;AAAA,QACX,cAAc,WAAW,SAAS,gBAAgB,MAAM;AAAA,QAAC;AAAA,MAC1D,IAAI,CAAC,GAAG;AACP,aAAK,cAAc;AAAA,MACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,yBAAyB,UAAU;AAClC,aAAK;AAAA,UACJ,wCAAwC,QAAQ;AAAA,UAChD;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,uBAAuB,gBAAgB;AACtC,aAAK;AAAA,UACJ,6CAA6C,cAAc;AAAA,UAC3D;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,0BAA0B;AACzB,aAAK;AAAA,UACJ;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,wBAAwB,MAAM,SAAS;AACtC,aAAK,YAAY,SAAS,sBAAsB,IAAI,EAAE;AAAA,MACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,2BAA2B,QAAQ;AAClC,aAAK;AAAA,UACJ,WAAW,MAAM;AAAA,UACjB;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,IAAAA,QAAO,UAAU,EAAE,eAAe;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UC3DjC,SAASC,GAAMC,IAAAA;AAGZ,cAAIC,IACAC,IACAC,IACAC,IACAC,IACAC;AAEJ,mBAASC,GAASC,IAAAA;AACd,gBAAcC,IAAKC,IAAfC,KAAM,CAAA;AACV,iBAAKF,MAAOD,GACJA,CAAAA,GAAII,eAAeH,EAAAA,MACnBC,KAAMF,GAAIC,EAAAA,GAENE,GAAIF,EAAAA,IADW,YAAA,OAARC,MAA4B,SAARA,KAChBH,GAASG,EAAAA,IAETA;AAIvB,mBAAOC;UAAAA;AAgMX,mBAASE,GAAUC,IAAQL,IAAAA;AACvBM,iBAAKD,SAASA,IACdC,KAAKN,MAAMA;UAAAA;AAiBf,mBAASO,GAAQC,IAAMC,IAAMC,IAAMC,IAAAA;AAC/BL,iBAAKE,OAAOA,IACZF,KAAKG,OAAOA,IACZH,KAAKI,OAAOA,IACZJ,KAAKK,MAAMA;UAAAA;AAGf,mBAASC,KAAAA;UAAAA;AAuHT,mBAASC,GAAOL,IAAAA;AACZ,mBAAY,QAARA,OAGmB,YAAA,OAATA,MAA0C,YAAA,OAAdA,GAAKM;UAAAA;AAGnD,mBAASC,GAAWC,IAAUhB,IAAAA;AAC1B,oBAAQgB,OAAaxB,GAAOyB,oBAAoBD,OAAaxB,GAAO0B,kBAAkB,iBAAiBlB;UAAAA;AAG3G,mBAASmB,GAA2BC,IAAWC,IAAAA;AAC3C,qBAASC,KAAIF,GAAUG,SAAS,GAAGD,MAAK,GAAA,EAAKA,GACzC,KAAIF,GAAUE,EAAAA,EAAGd,SAASa,GACtB,QAAA;AAGR,mBAAA;UAAO;AAwQX,mBAASG,GAASC,IAAMC,IAAAA;AAEpB,mBADiB,IAAId,KACHY,SAASC,IAAMC,EAAAA;UAAAA;AAQrC,mBAASC,GAAmBC,IAASC,IAAAA;AACjC,gBAAIC;AAiBJ,mBAfAA,MAjnBJ,SAAoBC,IAAOC,IAAAA;AACvB,kBAAIC,IAAMC,IAAKZ,IAAGa;AAKlB,mBAHAD,KAAMH,GAAMR,QACZD,KAAI,GAEGY,KAGCF,CAAAA,GAAKD,GADTI,KAAUb,MADVW,KAAOC,OAAQ,EAAA,CAAA,IAGXA,KAAMD,MAENX,KAAIa,KAAU,GACdD,MAAOD,KAAO;AAGtB,qBAAOX;YAAAA,GAimBaO,KAAQ,SAAgBO,IAAAA;AACxC,qBAAOA,GAAMC,MAAM,CAAA,IAAKT,GAAQS,MAAM,CAAA;YAAA,EAAA,GAG1CT,GAAQU,gBAAgB,CAACV,GAAQS,MAAM,CAAA,GAAIT,GAAQS,MAAM,CAAA,CAAA,GAErDP,OAAWD,GAAON,WAClBK,GAAQU,cAAc,CAAA,IAAKT,GAAOC,EAAAA,EAAQO,MAAM,CAAA,KAGpDP,MAAU,MACI,MACVF,GAAQU,cAAc,CAAA,IAAKT,GAAOC,EAAAA,EAAQO,MAAM,CAAA,IAG7CT;UAAAA;AA2GX,iBAxtBApC,KAAS,EACL+C,sBAAsB,wBACtBC,mBAAmB,qBACnBC,iBAAiB,mBACjBC,cAAc,gBACdC,yBAAyB,2BACzBC,iBAAiB,mBACjBC,gBAAgB,kBAChBC,kBAAkB,oBAClBC,gBAAgB,kBAChBC,gBAAgB,kBAChBC,aAAa,eACbC,iBAAiB,mBACjBC,WAAW,aACXC,kBAAkB,oBAClBC,iBAAiB,mBACjBC,oBAAoB,sBACpBC,yBAAyB,2BACzBC,uBAAuB,yBACvBC,mBAAmB,qBACnBC,mBAAmB,qBACnBC,oBAAoB,sBACpBC,kBAAkB,oBAClBC,gBAAgB,kBAChBC,sBAAsB,wBACtBC,0BAA0B,4BAC1BC,wBAAwB,0BACxBC,iBAAiB,mBACjBC,qBAAqB,uBACrBC,cAAc,gBACdC,gBAAgB,kBAChBC,gBAAgB,kBAChBC,qBAAqB,uBACrBC,oBAAoB,sBACpBC,qBAAqB,uBACrBC,YAAY,cACZC,aAAa,eACbC,kBAAkB,oBAClBC,mBAAmB,qBACnBC,wBAAwB,0BACxBC,0BAA0B,4BAC1BC,iBAAiB,mBACjBC,SAAS,WACTC,kBAAkB,oBAClBC,mBAAmB,qBACnBC,kBAAkB,oBAClBC,cAAc,gBACdC,kBAAkB,oBAClBC,iBAAiB,mBACjBC,eAAe,iBACftE,kBAAkB,oBAClBC,eAAe,iBACfsE,mBAAmB,qBACnBC,SAAS,WACTC,UAAU,YACVC,oBAAoB,sBACpBC,aAAa,eACbC,iBAAiB,mBACjBC,oBAAoB,sBACpBC,eAAe,iBACfC,OAAO,SACPC,iBAAiB,mBACjBC,YAAY,cACZC,0BAA0B,4BAC1BC,iBAAiB,mBACjBC,iBAAiB,mBACjBC,gBAAgB,kBAChBC,gBAAgB,kBAChBC,cAAc,gBACdC,iBAAiB,mBACjBC,kBAAkB,oBAClBC,qBAAqB,uBACrBC,oBAAoB,sBACpBC,gBAAgB,kBAChBC,eAAe,iBACfC,iBAAiB,kBAAA,GAGrBrH,KAAc,EACV6C,sBAAsB,CAAC,QAAQ,OAAA,GAC/BC,mBAAmB,CAAC,QAAQ,OAAA,GAC5BC,iBAAiB,CAAC,UAAA,GAClBC,cAAc,CAAC,UAAA,GACfC,yBAAyB,CAAC,UAAU,MAAA,GACpCC,iBAAiB,CAAC,UAAA,GAClBC,gBAAgB,CAAC,MAAA,GACjBC,kBAAkB,CAAC,QAAQ,OAAA,GAC3BC,gBAAgB,CAAC,OAAA,GACjBC,gBAAgB,CAAC,UAAU,WAAA,GAC3BC,aAAa,CAAC,SAAS,MAAA,GACvBC,iBAAiB,CAAC,YAAA,GAClBC,WAAW,CAAC,MAAA,GACZC,kBAAkB,CAAC,MAAM,cAAc,MAAA,GACvCC,iBAAiB,CAAC,MAAM,cAAc,MAAA,GACtCC,oBAAoB,CAAC,QAAQ,OAAA,GAC7BC,yBAAyB,CAAC,UAAU,UAAU,MAAA,GAC9CC,uBAAuB,CAAC,QAAQ,cAAc,WAAA,GAC9CC,mBAAmB,CAAC,OAAA,GACpBC,mBAAmB,CAAA,GACnBC,oBAAoB,CAAA,GACpBC,kBAAkB,CAAC,QAAQ,MAAA,GAC3BC,gBAAgB,CAAA,GAChBC,sBAAsB,CAAC,QAAA,GACvBC,0BAA0B,CAAC,aAAA,GAC3BC,wBAAwB,CAAC,eAAe,cAAc,QAAA,GACtDC,iBAAiB,CAAC,YAAY,OAAA,GAC9BC,qBAAqB,CAAC,YAAA,GACtBC,cAAc,CAAC,QAAQ,QAAQ,UAAU,MAAA,GACzCC,gBAAgB,CAAC,QAAQ,SAAS,MAAA,GAClCC,gBAAgB,CAAC,QAAQ,SAAS,MAAA,GAClCC,qBAAqB,CAAC,MAAM,UAAU,MAAA,GACtCC,oBAAoB,CAAC,MAAM,UAAU,MAAA,GACrCC,qBAAqB,CAAC,UAAU,UAAU,MAAA,GAC1CC,YAAY,CAAA,GACZC,aAAa,CAAC,QAAQ,cAAc,WAAA,GACpCC,kBAAkB,CAAC,QAAA,GACnBC,mBAAmB,CAAC,cAAc,QAAA,GAClCC,wBAAwB,CAAC,OAAA,GACzBC,0BAA0B,CAAC,OAAA,GAC3BC,iBAAiB,CAAC,YAAY,OAAA,GAC9BC,SAAS,CAAA,GACTC,kBAAkB,CAAC,SAAS,MAAA,GAC5BC,mBAAmB,CAAC,QAAQ,OAAA,GAC5BC,kBAAkB,CAAC,UAAU,UAAA,GAC7BC,cAAc,CAAC,QAAQ,UAAA,GACvBC,kBAAkB,CAAC,OAAO,OAAA,GAC1BC,iBAAiB,CAAA,GACjBC,eAAe,CAAC,UAAU,WAAA,GAC1BtE,kBAAkB,CAAC,YAAA,GACnBC,eAAe,CAAC,YAAA,GAChBsE,mBAAmB,CAAA,GACnBC,SAAS,CAAC,MAAA,GACVC,UAAU,CAAC,OAAO,OAAA,GAClBC,oBAAoB,CAAC,OAAO,OAAA,GAC5BC,aAAa,CAAE,UAAA,GACfC,iBAAiB,CAAC,UAAA,GAClBC,oBAAoB,CAAC,aAAA,GACrBC,eAAe,CAAC,UAAA,GAChBC,OAAO,CAAA,GACPC,iBAAiB,CAAC,gBAAgB,OAAA,GAClCC,YAAY,CAAC,QAAQ,YAAA,GACrBC,0BAA0B,CAAC,OAAO,OAAA,GAClCC,iBAAiB,CAAA,GACjBC,iBAAiB,CAAC,UAAU,aAAA,GAC5BC,gBAAgB,CAAA,GAChBC,gBAAgB,CAAC,UAAA,GACjBC,cAAc,CAAC,SAAS,WAAW,WAAA,GACnCC,iBAAiB,CAAC,UAAA,GAClBC,kBAAkB,CAAC,UAAA,GACnBC,qBAAqB,CAAC,cAAA,GACtBC,oBAAoB,CAAC,MAAM,MAAA,GAC3BC,gBAAgB,CAAC,QAAQ,MAAA,GACzBC,eAAe,CAAC,UAAU,MAAA,GAC1BC,iBAAiB,CAAC,UAAA,EAAA,GAQtBtH,KAAgB,EACZuH,OALJrH,KAAQ,CAAA,GAMJsH,MALJrH,KAAO,CAAA,GAMHsH,QALJrH,KAAS,CAAA,EAAA,GAaTO,GAAU+G,UAAUC,UAAU,SAAiB5G,IAAAA;AAC3CF,iBAAKD,OAAOC,KAAKN,GAAAA,IAAOQ;UAAAA,GAG5BJ,GAAU+G,UAAUE,SAAS,WAAA;AACzB,mBAAIC,MAAMC,QAAQjH,KAAKD,MAAAA,KACnBC,KAAKD,OAAOmH,OAAOlH,KAAKN,KAAK,CAAA,GAAA,SAG7BM,KAAK8G,QAAQ,IAAA,GAAA;UACN,GAefxG,GAAWuG,UAAU1G,OAAO,WAAA;AACxB,gBAAIa,IAAGmG,IAAIC,IAAGC,IAAIC;AAElB,qBAASC,GAAUD,IAAQnH,IAAAA;AACvB,kBAAI6G,MAAMC,QAAQ9G,EAAAA,EACd,MAAKiH,KAAI,GAAGC,KAAKlH,GAAKc,QAAQmG,KAAIC,IAAAA,EAAMD,GACpCE,CAAAA,GAAOE,KAAKrH,GAAKiH,EAAAA,CAAAA;kBAGrBE,CAAAA,GAAOE,KAAKrH,EAAAA;YAAAA;AAKpB,gBAAA,CAAKH,KAAKyH,UAAUtH,KAChB,QAAO;AAKX,iBADAmH,KAAS,CAAA,GACJtG,KAAI,GAAGmG,KAAKnH,KAAK0H,YAAYzG,QAAQD,KAAImG,IAAAA,EAAMnG,GAEhDuG,CAAAA,GAAUD,IADAtH,KAAK0H,YAAY1G,EAAAA,EACDb,IAAAA;AAG9B,mBADAoH,GAAUD,IAAQtH,KAAKyH,UAAUtH,IAAAA,GAC1BmH;UAAAA,GAKXhH,GAAWuG,UAAUrG,OAAO,WAAA;AAExB,mBADWR,KAAK6B,QAAAA,EACJrB,QAAQR,KAAKyH,UAAUrH;UAAAA,GAKvCE,GAAWuG,UAAUc,UAAU,WAAA;AAC3B,gBAAI3G,IAAGmG,IAAIG;AAIX,iBADAA,KAAS,CAAA,GACJtG,KAAI,GAAGmG,KAAKnH,KAAK0H,YAAYzG,QAAQD,KAAImG,IAAAA,EAAMnG,GAChDsG,CAAAA,GAAOE,KAAKxH,KAAK0H,YAAY1G,EAAAA,EAAGd,IAAAA;AAGpC,mBAAOoH;UAAAA,GAKXhH,GAAWuG,UAAUhF,UAAU,WAAA;AAC3B,mBAAO7B,KAAKyH,UAAUvH;UAAAA,GAG1BI,GAAWuG,UAAUe,YAAY,SAAmBC,IAAUC,IAAAA;AAC1D,gBAAIC,IAAUT;AAYd,mBAVAA,KAAAA,QAEAS,KAAY/H,KAAKyH,WACjBzH,KAAKyH,YAAYK,IACjB9H,KAAKgI,UAAU,MACXH,OACAP,KAASO,GAASI,KAAKjI,MAAM8H,GAAQ5H,MAAMF,KAAK0H,YAAY1H,KAAK0H,YAAYzG,SAAS,CAAA,EAAGf,IAAAA,IAE7FF,KAAKyH,YAAYM,IAEVT;UAAAA,GAKXhH,GAAWuG,UAAUqB,SAAS,SAAgBC,IAAAA;AAC1CnI,iBAAKgI,UAAUG;UAAAA,GAKnB7H,GAAWuG,UAAUuB,OAAO,WAAA;AACxBpI,iBAAKkI,OAAO5I,EAAAA;UAAAA,GAKhBgB,GAAWuG,UAAiB,QAAI,WAAA;AAC5B7G,iBAAKkI,OAAO7I,EAAAA;UAAAA,GAKhBiB,GAAWuG,UAAUE,SAAS,WAAA;AAC1B/G,iBAAKkI,OAAO3I,EAAAA;UAAAA,GAGhBe,GAAWuG,UAAUwB,eAAe,SAASlH,IAAMC,IAAAA;AAC/CpB,iBAAKoB,UAAUA,IACfpB,KAAKmB,OAAOA,IACZnB,KAAKsI,aAAa,CAAA,GAClBtI,KAAK0H,cAAc,CAAA,GACnB1H,KAAKyH,YAAY,MACjBzH,KAAKgI,UAAU,MACfhI,KAAKuI,aAAa,MACO,gBAArBnH,GAAQoH,WACRxI,KAAKuI,aAAaE,OAAOC,OACU,cAAA,OAArBtH,GAAQoH,aACtBxI,KAAKuI,aAAanH,GAAQoH,WAG9BxI,KAAK2I,SAASvJ,IACVgC,GAAQsH,SACR1I,KAAK2I,SAASF,OAAOG,OAAOH,OAAOI,OAAO7I,KAAK2I,MAAAA,GAASvH,GAAQsH,IAAAA;UAAAA,GAwBxEpI,GAAWuG,UAAU3F,WAAW,SAAkBC,IAAMC,IAAAA;AACpD,gBAAI0H,IACAhI,IACAgH,IACA5H,IACAQ,IACAd,IACAF,IACAmC,IACAkH,IACAC,IACAjI,IACAkI;AAcJ,iBAZAjJ,KAAKqI,aAAalH,IAAMC,EAAAA,GAExB6H,KAAW,CAAA,GAGXH,KAAW9I,KAAKsI,YAChBxH,KAAYd,KAAK0H,aAGjBoB,GAAStB,KAAK,IAAIvH,GAAQkB,IAAM,MAAM,MAAM,IAAA,CAAA,GAC5CL,GAAU0G,KAAK,IAAIvH,GAAQ,MAAM,MAAM,MAAM,IAAA,CAAA,GAEtC6I,GAAS7H,SAGZ,MAFA6G,KAAUgB,GAASI,IAAAA,OAEHD,IAAAA;AAWhB,kBAAInB,GAAQ5H,MAAM;AAId,oBAFAN,KAAMI,KAAK4H,UAAUxG,GAAQ+H,OAAOrB,EAAAA,GAEhC9H,KAAKgI,YAAY3I,MAASO,OAAQP,GAClC;AAMJ,oBAHAyJ,GAAStB,KAAKyB,EAAAA,GACdnI,GAAU0G,KAAKM,EAAAA,GAEX9H,KAAKgI,YAAY1I,MAAQM,OAAQN,GACjC;AAMJ,oBAFAoB,MADAR,KAAO4H,GAAQ5H,MACCM,QAAQsH,GAAQ1H,MAAAA,EAChC4I,KAAahJ,KAAK2I,OAAOjI,EAAAA,IACR;AACb,sBAAA,CAAIV,KAAKuI,WAGL,OAAM,IAAIa,MAAM,uBAAuB1I,KAAW,GAAA;AAFlDsI,kBAAAA,KAAahJ,KAAKuI,WAAWrI,EAAAA;gBAAAA;AAOrC,qBADA2B,KAAUmH,GAAW/H,SACbY,MAAW,MAAM,IAGrB,KADAd,KAAYb,GADZR,KAAMsJ,GAAWnH,EAAAA,CAAAA;AAMjB,sBAAImF,MAAMC,QAAQlG,EAAAA,GAAAA;AAEd,yBADAgI,KAAWhI,GAAUE,SACb8H,MAAY,MAAM,IACtB,KAAKhI,GAAUgI,EAAAA,KAAAA,CAIXlI,GAA2BC,IAAWC,GAAUgI,EAAAA,CAAAA,GAApD;AAIA,0BAAItI,GAAWC,IAAUsI,GAAWnH,EAAAA,CAAAA,EAChCiG,CAAAA,KAAU,IAAI7H,GAAQc,GAAUgI,EAAAA,GAAW,CAACrJ,IAAKqJ,EAAAA,GAAW,YAAY,IAAA;2BACrE;AAAA,4BAAA,CAAIxI,GAAOQ,GAAUgI,EAAAA,CAAAA,EAGxB;AAFAjB,wBAAAA,KAAU,IAAI7H,GAAQc,GAAUgI,EAAAA,GAAW,CAACrJ,IAAKqJ,EAAAA,GAAW,MAAM,IAAA;sBAAA;AAItED,sBAAAA,GAAStB,KAAKM,EAAAA;oBAAAA;kBAAAA,WAEXvH,GAAOQ,EAAAA,GAAY;AAC1B,wBAAIF,GAA2BC,IAAWC,EAAAA,EACxC;AAGF+H,oBAAAA,GAAStB,KAAK,IAAIvH,GAAQc,IAAWrB,IAAK,MAAM,IAAA,CAAA;kBAAA;;cAAA;YAAA,WArExDoI,KAAUhH,GAAUoI,IAAAA,GAEpBtJ,KAAMI,KAAK4H,UAAUxG,GAAQiI,OAAOvB,EAAAA,GAEhC9H,KAAKgI,YAAY3I,MAASO,OAAQP,GAClC;UAAA,GAuEhBiB,GAAWuG,UAAUC,UAAU,SAAiB3F,IAAMC,IAAAA;AAClD,gBAAI0H,IACAhI,IACAZ,IACAQ,IACAc,IACAsG,IACAjG,IACAkH,IACAC,IACAjI,IACAkI,IACAK,IACA5J;AAEJ,qBAAS6J,EAAWzB,IAAAA;AAChB,kBAAI9G,IACAtB,IACA8J,IACAzJ;AAEJ,kBAAI+H,GAAQzH,IAAI0G,OAAAA;AAOZ,qBALArH,KAAMoI,GAAQzH,IAAIX,KAClBK,KAAS+H,GAAQzH,IAAIN,QAGrBiB,KAAI8H,GAAS7H,QACND,OAEH,MADAwI,KAAWV,GAAS9H,EAAAA,GACPX,OAAOmJ,GAASnJ,IAAIN,WAAWA,IAAQ;AAChD,sBAAKyJ,GAASnJ,IAAIX,MAAMA,GACpB;AAAA,oBAEF8J,GAASnJ,IAAIX;gBAAAA;;YAAAA;AAsB/B,iBAhBAM,KAAKqI,aAAalH,IAAMC,EAAAA,GAExB6H,KAAW,CAAA,GAGXH,KAAW9I,KAAKsI,YAChBxH,KAAYd,KAAK0H,aAMjBI,KAAU,IAAI7H,GAAQkB,IAAM,MAAM,MAAM,IAAIrB,GAH5CwJ,KAAQ,EACJnI,MAAMA,GAAAA,GAEmD,MAAA,CAAA,GAC7D2H,GAAStB,KAAKM,EAAAA,GACdhH,GAAU0G,KAAKM,EAAAA,GAERgB,GAAS7H,SAGZ,MAFA6G,KAAUgB,GAASI,IAAAA,OAEHD,IAAhB;AAqCA,kBAAA,YAfAzH,KAASxB,KAAK4H,UAAUxG,GAAQ+H,OAAOrB,EAAAA,MAIXtG,OAAWnC,MAASmC,OAAWlC,MAAQkC,OAAWjC,OAE1EuI,GAAQzH,IAAIyG,QAAQtF,EAAAA,GACpBsG,GAAQ5H,OAAOsB,KAGfxB,KAAKgI,YAAYzI,MAAUiC,OAAWjC,OACtCgK,EAAWzB,EAAAA,GACXA,GAAQ5H,OAAO,OAGfF,KAAKgI,YAAY3I,MAASmC,OAAWnC,GACrC,QAAOiK,GAAMnI;AAKjB,mBADAjB,KAAO4H,GAAQ5H,UAKf4I,GAAStB,KAAKyB,EAAAA,GACdnI,GAAU0G,KAAKM,EAAAA,GAEX9H,KAAKgI,YAAY1I,MAAQkC,OAAWlC,KAAxC;AAMA,oBAFAoB,KAAWR,GAAKM,QAAQsH,GAAQ1H,MAAAA,EAChC4I,KAAahJ,KAAK2I,OAAOjI,EAAAA,IACR;AACb,sBAAA,CAAIV,KAAKuI,WAGL,OAAM,IAAIa,MAAM,uBAAuB1I,KAAW,GAAA;AAFlDsI,kBAAAA,KAAahJ,KAAKuI,WAAWrI,EAAAA;gBAAAA;AAOrC,qBADA2B,KAAUmH,GAAW/H,SACbY,MAAW,MAAM,IAGrB,KADAd,KAAYb,GADZR,IAAMsJ,GAAWnH,EAAAA,CAAAA,EAMjB,KAAImF,MAAMC,QAAQlG,EAAAA,GAAAA;AAEd,uBADAgI,KAAWhI,GAAUE,SACb8H,MAAY,MAAM,IACtB,KAAKhI,GAAUgI,EAAAA,GAAf;AAGA,wBAAItI,GAAWC,IAAUsI,GAAWnH,EAAAA,CAAAA,EAChCiG,CAAAA,KAAU,IAAI7H,GAAQc,GAAUgI,EAAAA,GAAW,CAACrJ,GAAKqJ,EAAAA,GAAW,YAAY,IAAIjJ,GAAUiB,IAAWgI,EAAAA,CAAAA;yBAC9F;AAAA,0BAAA,CAAIxI,GAAOQ,GAAUgI,EAAAA,CAAAA,EAGxB;AAFAjB,sBAAAA,KAAU,IAAI7H,GAAQc,GAAUgI,EAAAA,GAAW,CAACrJ,GAAKqJ,EAAAA,GAAW,MAAM,IAAIjJ,GAAUiB,IAAWgI,EAAAA,CAAAA;oBAAAA;AAI/FD,oBAAAA,GAAStB,KAAKM,EAAAA;kBAAAA;gBAAAA,MAEXvH,CAAAA,GAAOQ,EAAAA,KACd+H,GAAStB,KAAK,IAAIvH,GAAQc,IAAWrB,GAAK,MAAM,IAAII,GAAUI,IAAMR,CAAAA,CAAAA,CAAAA;cAAAA;YAAAA,WAvFxEoI,KAAUhH,GAAUoI,IAAAA,GAAAA,YAEpB1H,KAASxB,KAAK4H,UAAUxG,GAAQiI,OAAOvB,EAAAA,MAIXtG,OAAWnC,MAASmC,OAAWlC,MAAQkC,OAAWjC,MAE1EuI,GAAQzH,IAAIyG,QAAQtF,EAAAA,GAGpBxB,KAAKgI,YAAYzI,MAAUiC,OAAWjC,MACtCgK,EAAWzB,EAAAA,GAGX9H,KAAKgI,YAAY3I,MAASmC,OAAWnC,GACrC,QAAOiK,GAAMnI;AA4EzB,mBAAOmI,GAAMnI;UAAAA,GAiIjBlC,GAAQC,SAASA,IACjBD,GAAQiC,WAAWA,IACnBjC,GAAQ6H,UA3HR,SAAiB3F,IAAMC,IAAAA;AAEnB,mBADiB,IAAId,KACHwG,QAAQ3F,IAAMC,EAAAA;UAAAA,GA0HpCnC,GAAQwK,iBAlGR,SAAwBC,IAAMC,IAAkBpI,IAAAA;AAE5C,gBAAmBD,IAASM,IAAKZ,IAAG4I,IAAhCC,KAAW,CAAA;AAEf,gBAAA,CAAKH,GAAK3H,MACN,OAAM,IAAIqH,MAAM,wCAAA;AAIpB,gBAAA,CAAK7H,GAAON,QAAQ;AAChB,kBAAI0I,GAAiB1I,QAAQ;AACzB,qBAAKD,KAAI,GAAGY,KAAM+H,GAAiB1I,QAAQD,KAAIY,IAAKZ,MAAK,EAAA,EACrDM,KAAU9B,GAASmK,GAAiB3I,EAAAA,CAAAA,GAC5BgB,gBAAgB,CAAC,GAAG0H,GAAK3H,MAAM,CAAA,CAAA,GACvC8H,GAASrC,KAAKlG,EAAAA;AAElBoI,gBAAAA,GAAKI,kBAAkBD;cAAAA;AAE3B,qBAAOH;YAAAA;AAGX,iBAAK1I,KAAI,GAAGY,KAAM+H,GAAiB1I,QAAQD,KAAIY,IAAKZ,MAAK,EACrD6I,CAAAA,GAASrC,KAAKnG,GAAmB7B,GAASmK,GAAiB3I,EAAAA,CAAAA,GAAKO,EAAAA,CAAAA;AAsEpE,mBAlEAqI,KAAS,GACT1I,GAASwI,IAAM,EACXP,OAAO,SAAUjJ,IAAAA;AAGb,uBAFIoB,IAEGsI,KAASC,GAAS5I,UAAAA,GACrBK,KAAUuI,GAASD,EAAAA,GACP5H,cAAc,CAAA,IAAK9B,GAAK6B,MAAM,CAAA,KAItCT,CAAAA,GAAQU,cAAc,CAAA,MAAO9B,GAAK6B,MAAM,CAAA,KACnC7B,GAAK4J,oBACN5J,GAAK4J,kBAAkB,CAAA,IAE3B5J,GAAK4J,gBAAgBtC,KAAKlG,EAAAA,GAC1BuI,GAAS3C,OAAO0C,IAAQ,CAAA,KAExBA,MAAU;AAKlB,qBAAIA,OAAWC,GAAS5I,SACb9B,GAAcuH,QAGrBmD,GAASD,EAAAA,EAAQ5H,cAAc,CAAA,IAAK9B,GAAK6B,MAAM,CAAA,IACxC5C,GAAcwH,OAAAA;YADzB,EAAA,CAAA,GAMRiD,KAAS,GACT1I,GAASwI,IAAM,EACXL,OAAO,SAAUnJ,IAAAA;AAGb,uBAFIoB,IAEGsI,KAASC,GAAS5I,WACrBK,KAAUuI,GAASD,EAAAA,GAAAA,EACf1J,GAAK6B,MAAM,CAAA,IAAKT,GAAQU,cAAc,CAAA,MAItC9B,CAAAA,GAAK6B,MAAM,CAAA,MAAOT,GAAQU,cAAc,CAAA,KACnC9B,GAAK6J,qBACN7J,GAAK6J,mBAAmB,CAAA,IAE5B7J,GAAK6J,iBAAiBvC,KAAKlG,EAAAA,GAC3BuI,GAAS3C,OAAO0C,IAAQ,CAAA,KAExBA,MAAU;AAKlB,qBAAIA,OAAWC,GAAS5I,SACb9B,GAAcuH,QAGrBmD,GAASD,EAAAA,EAAQ5H,cAAc,CAAA,IAAK9B,GAAK6B,MAAM,CAAA,IACxC5C,GAAcwH,OAAAA;YADzB,EAAA,CAAA,GAMD+C;UAAAA,GAOXzK,GAAQG,cAAcA,IACtBH,GAAQE,gBAAgBA,IACxBF,GAAQqB,aAAaA,IACrBrB,GAAQ+K,mBAAmB,WAAA;AAAc,mBAAOhL,GAAM,CAAA,CAAA;UAAA,GAE/CC;QAAAA,GACTA,EAAAA;MAAAA,EAAAA,GAAAA,IAAAA,GAAAA,SAAAA,IAAAA;AC3xByCgL,QAAAA,GAAOhL,YAC9CgL,GAAAA,WAEK,WAAA;AASP,mBAASC,GAAgBC,IAASC,IAAUC,IAAOC,IAAAA;AACjDtK,iBAAKmK,UAAWA,IAChBnK,KAAKoK,WAAWA,IAChBpK,KAAKqK,QAAWA,IAChBrK,KAAKsK,WAAWA,IAChBtK,KAAKuK,OAAW,eAEuB,cAAA,OAA5BnB,MAAMoB,qBACfpB,MAAMoB,kBAAkBxK,MAAMkK,EAAAA;UAAAA;AA41FlC,kBA12FA,SAAsBO,IAAO1K,IAAAA;AAC3B,qBAAS2K,KAAAA;AAAS1K,mBAAK2K,cAAcF;YAAAA;AACrCC,YAAAA,GAAK7D,YAAY9G,GAAO8G,WACxB4D,GAAM5D,YAAY,IAAI6D;UAAAA,GAeXR,IAAiBd,KAAAA,GAE9Bc,GAAgBU,eAAe,SAASR,IAAUC,IAAAA;AAChD,gBAAIQ,KAA2B,EACzBC,SAAS,SAASC,IAAAA;AAChB,qBAAO,MAAOC,GAAcD,GAAYE,IAAAA,IAAQ;YAAA,GAGlDC,OAAS,SAASH,IAAAA;AAChB,kBACI/J,IADAmK,KAAe;AAGnB,mBAAKnK,KAAI,GAAGA,KAAI+J,GAAYK,MAAMnK,QAAQD,KACxCmK,CAAAA,MAAgBJ,GAAYK,MAAMpK,EAAAA,aAAcgG,QAC5CqE,GAAYN,GAAYK,MAAMpK,EAAAA,EAAG,CAAA,CAAA,IAAM,MAAMqK,GAAYN,GAAYK,MAAMpK,EAAAA,EAAG,CAAA,CAAA,IAC9EqK,GAAYN,GAAYK,MAAMpK,EAAAA,CAAAA;AAGpC,qBAAO,OAAO+J,GAAYO,WAAW,MAAM,MAAMH,KAAe;YAAA,GAGlEI,KAAK,SAASR,IAAAA;AACZ,qBAAO;YAAA,GAGTS,KAAK,SAAST,IAAAA;AACZ,qBAAO;YAAA,GAGTU,OAAO,SAASV,IAAAA;AACd,qBAAOA,GAAYW;YAAAA,EAAAA;AAI3B,qBAASC,GAAIC,IAAAA;AACX,qBAAOA,GAAGC,WAAW,CAAA,EAAGC,SAAS,EAAA,EAAIC,YAAAA;YAAAA;AAGvC,qBAASf,GAAcgB,IAAAA;AACrB,qBAAOA,GACJlF,QAAQ,OAAO,MAAA,EACfA,QAAQ,MAAO,KAAA,EACfA,QAAQ,OAAO,KAAA,EACfA,QAAQ,OAAO,KAAA,EACfA,QAAQ,OAAO,KAAA,EACfA,QAAQ,OAAO,KAAA,EACfA,QAAQ,iBAAyB,SAAS8E,IAAAA;AAAM,uBAAO,SAASD,GAAIC,EAAAA;cAAAA,EAAAA,EACpE9E,QAAQ,0BAAyB,SAAS8E,IAAAA;AAAM,uBAAO,QAASD,GAAIC,EAAAA;cAAAA,EAAAA;YAAAA;AAGzE,qBAASP,GAAYW,IAAAA;AACnB,qBAAOA,GACJlF,QAAQ,OAAO,MAAA,EACfA,QAAQ,OAAO,KAAA,EACfA,QAAQ,OAAO,KAAA,EACfA,QAAQ,MAAO,KAAA,EACfA,QAAQ,OAAO,KAAA,EACfA,QAAQ,OAAO,KAAA,EACfA,QAAQ,OAAO,KAAA,EACfA,QAAQ,OAAO,KAAA,EACfA,QAAQ,iBAAyB,SAAS8E,IAAAA;AAAM,uBAAO,SAASD,GAAIC,EAAAA;cAAAA,EAAAA,EACpE9E,QAAQ,0BAAyB,SAAS8E,IAAAA;AAAM,uBAAO,QAASD,GAAIC,EAAAA;cAAAA,EAAAA;YAAAA;AA6CzE,mBAAO,eAtCP,SAA0BxB,IAAAA;AACxB,kBACIpJ,IAAGoG,IANoB2D,IAKvBkB,KAAe,IAAIjF,MAAMoD,GAASnJ,MAAAA;AAGtC,mBAAKD,KAAI,GAAGA,KAAIoJ,GAASnJ,QAAQD,KAC/BiL,CAAAA,GAAajL,EAAAA,KATY+J,KASaX,GAASpJ,EAAAA,GAR1C6J,GAAyBE,GAAYvK,IAAAA,EAAMuK,EAAAA;AAalD,kBAFAkB,GAAaC,KAAAA,GAETD,GAAahL,SAAS,GAAG;AAC3B,qBAAKD,KAAI,GAAGoG,KAAI,GAAGpG,KAAIiL,GAAahL,QAAQD,KACtCiL,CAAAA,GAAajL,KAAI,CAAA,MAAOiL,GAAajL,EAAAA,MACvCiL,GAAa7E,EAAAA,IAAK6E,GAAajL,EAAAA,GAC/BoG;AAGJ6E,gBAAAA,GAAahL,SAASmG;cAAAA;AAGxB,sBAAQ6E,GAAahL,QAAAA;gBACnB,KAAK;AACH,yBAAOgL,GAAa,CAAA;gBAEtB,KAAK;AACH,yBAAOA,GAAa,CAAA,IAAK,SAASA,GAAa,CAAA;gBAEjD;AACE,yBAAOA,GAAaE,MAAM,GAAA,EAAI,EAAGC,KAAK,IAAA,IAClC,UACAH,GAAaA,GAAahL,SAAS,CAAA;cAAA;YAAA,GAQPmJ,EAAAA,IAAY,WAJlD,SAAuBC,IAAAA;AACrB,qBAAOA,KAAQ,MAAOW,GAAcX,EAAAA,IAAS,MAAO;YAAA,GAGoBA,EAAAA,IAAS;UAAA,GA8uF9E,EACLgC,aAAanC,IACboC,OA7uFF,SAAmBC,IAAOC,IAAAA;AACxBA,YAAAA,KAAAA,WAAUA,KAAqBA,KAAU,CAAA;AAEzC,gBA+JIC,IAwH8BrC,IAAUC,IAAOC,IAvR/CoC,KAAa,CAAA,GAEbC,KAAyB,EAAEC,OAAOC,GAAAA,GAClCC,KAAyBD,IAOzBE,KAASC,GAAuB,KAAA,KAAK,GACrCC,KAAS,wBACTC,KAASC,GAAqB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GAAA,MAAM,KAAM,GAGjHC,KAASJ,GAAuB,KAAA,KAAK,GAGrCK,KAAUL,GAAuB,KAAA,KAAK,GAGtCM,KAAUN,GAAuB,KAAA,KAAK,GAItCO,KAAUP,GAAuB,KAAA,KAAK,GACtCQ,KAAU,SAASxB,IAAGyB,IAAAA;AACpB,qBAAO,CAACzB,EAAAA,EAAG0B,OAAOD,GAAGE,KAAI,SAAU3B,IAAAA;AAAK,uBAAOA,GAAE,CAAA;cAAA,EAAA,CAAA;YAAA,GAYnD4B,KAAUZ,GAAuB,KAAA,KAAK,GAOtCa,KAAUb,GAAuB,KAAA,KAAK,GAGtCc,KAAUd,GAAuB,KAAA,KAAK,GAGtCe,IAAUf,GAAuB,KAAA,KAAK,GAEtCgB,IAAUhB,GAAuB,KAAA,KAAK,GAEtCiB,IAAU,UACVC,IAAUf,GAAqB,CAAC,KAAK,KAAK,GAAA,GAAA,OAAM,KAAO,GAEvDgB,IAAUnB,GAAuB,KAAA,KAAK,GACtCoB,IAAU,SAASC,IAAAA;AAAK,sBAAQA,MAAK,MAAM;YAAA,GAC3CC,IAAU,SACVC,IAAUpB,GAAqB,CAAC,KAAK,GAAA,GAAA,OAAM,KAAO,GAElDqB,IAAUxB,GAAuB,KAAA,KAAK,GAItCyB,IAAU,SAASlE,IAAMmE,IAAIC,IAAAA;AACvB,qBAAO,EAAEnO,MAAM,aAAa+J,MAAMA,IAAMqE,UAAUF,IAAIC,OAAOA,GAAAA;YAAAA,GAInEE,IAAU7B,GAAuB,KAAA,KAAM,GACvC8B,IAAU,WACVC,IAAU5B,GAAqB,CAAC,MAAM,GAAA,GAAA,MAAO,KAAM,GAEnD6B,IAAUhC,GAAuB,MAAA,KAAM,GACvCiC,IA4HK,EAAEzO,MAAM,MAAA,GA3Hb0O,IAAU,SAASb,IAAGc,IAAAA;AAAK,qBAAOd,KAAIc;YAAAA,GACtCC,IAAU,SAASC,IAAAA;AACX,qBAAO,EAAE7O,MAAM,WAAWmO,QAqnFf3C,KArnFkCqD,GAAEjD,KAAK,EAAA,GAsnFrDJ,GAAElF,QAAQ,WAAU,SAASwI,IAAO1D,IAAAA;AACzC,wBAAOA,IAAAA;kBACL,KAAK;AAAK,2BAAO;kBACjB,KAAK;AAAK,2BAAO;kBACjB,KAAK;AAAK,2BAAO;kBACjB,KAAK;AAAK,2BAAO;kBACjB,KAAK;AAAK,2BAAO;kBACjB,KAAK;AAAK,2BAAO;kBACjB;AAAS,2BAAOA;gBAAAA;cAAAA,EAAAA,GAAAA;AATtB,kBAAqBI;YAAAA,GAlnFnBuD,IAAUvC,GAAuB,KAAA,KAAK,GACtCwC,IAAU,WACVC,IAAUtC,GAAqB,CAAC,MAAM,GAAA,GAAA,MAAM,KAAM,GAClDuC,IAAU,UACVC,IAAUxC,GAAqB,CAAC,CAAC,KAAK,GAAA,CAAA,GAAA,OAAO,KAAO,GAQpDyC,IAAU5C,GAAuB,SAAA,KAAS,GAC1C6C,IAAU,UACVC,IAAU3C,GAAqB,CAAC,KAAK,GAAA,GAAA,MAAM,KAAM,GAEjD4C,IAAU/C,GAAuB,KAAA,KAAK,GAEtCgD,IAAU,WACVC,IAAU9C,GAAqB,CAAC,KAAK,KAAK,KAAK,GAAA,GAAA,OAAM,KAAO,GAE5D+C,IAAUlD,GAAuB,KAAA,KAAK,GAMtCmD,IAAU,YACVC,IAAUjD,GAAqB,CAAC,KAAK,IAAA,GAAA,MAAO,KAAM,GAGlDkD,IAAU,aACVC,IAAUnD,GAAqB,CAAC,KAAK,MAAM,GAAA,GAAA,MAAM,KAAM,GAMvDoD,KAAUvD,GAAuB,SAAA,KAAS,GAG1CwD,KAAUxD,GAAuB,aAAA,KAAa,GAC9CyD,KAAU,SAAShD,IAAAA;AAAM,qBAAO,EAAEjN,MAAM,WAAWkQ,WAAWjD,GAAAA;YAAAA,GAE9DkD,KAAU3D,GAAuB,QAAA,KAAQ,GAEzC4D,KAAU5D,GAAuB,SAAA,KAAS,GAG1C6D,KAAU7D,GAAuB,gBAAA,KAAgB,GAGjD8D,KAAW9D,GAAuB,eAAA,KAAe,GAGjD+D,KAAW/D,GAAuB,eAAA,KAAe,GAGjDgE,KAAWhE,GAAuB,oBAAA,KAAoB,GAGtDiE,KAAWjE,GAAuB,KAAA,KAAK,GAKvCkE,KAAuB,GAEvBC,KAAuB,CAAC,EAAEC,MAAM,GAAGC,QAAQ,EAAA,CAAA,GAC3CC,KAAuB,GACvBC,KAAuB,CAAA,GACvBC,KAEmB,CAAA;AAIvB,gBAAI,eAAehF,IAAS;AAC1B,kBAAA,EAAMA,GAAQiF,aAAa9E,IACzB,OAAM,IAAIvD,MAAM,oCAAqCoD,GAAQiF,YAAY,IAAA;AAG3E3E,cAAAA,KAAwBH,GAAuBH,GAAQiF,SAAAA;YAAAA;AA2BzD,qBAASzE,GAAuB/B,IAAMyG,IAAAA;AACpC,qBAAO,EAAElR,MAAM,WAAWyK,MAAMA,IAAMyG,YAAYA,GAAAA;YAAAA;AAGpD,qBAASvE,GAAqB/B,IAAOE,IAAUoG,IAAAA;AAC7C,qBAAO,EAAElR,MAAM,SAAS4K,OAAOA,IAAOE,UAAUA,IAAUoG,YAAYA,GAAAA;YAAAA;AAexE,qBAASC,GAAsBC,IAAAA;AAC7B,kBAAwCC,IAApCC,KAAUX,GAAoBS,EAAAA;AAElC,kBAAIE,GACF,QAAOA;AAGP,mBADAD,KAAID,KAAM,GAAA,CACFT,GAAoBU,EAAAA,IAC1BA,CAAAA;AASF,mBALAC,KAAU,EACRV,OAFFU,KAAUX,GAAoBU,EAAAA,GAEZT,MAChBC,QAAQS,GAAQT,OAAAA,GAGXQ,KAAID,KACmB,QAAxBrF,GAAMV,WAAWgG,EAAAA,KACnBC,GAAQV,QACRU,GAAQT,SAAS,KAEjBS,GAAQT,UAGVQ;AAIF,qBADAV,GAAoBS,EAAAA,IAAOE,IACpBA;YAAAA;AAIX,qBAASC,GAAoBC,IAAUC,IAAAA;AACrC,kBAAIC,KAAkBP,GAAsBK,EAAAA,GACxCG,KAAkBR,GAAsBM,EAAAA;AAE5C,qBAAO,EACLrF,OAAO,EACLwF,QAAQJ,IACRZ,MAAQc,GAAgBd,MACxBC,QAAQa,GAAgBb,OAAAA,GAE1B7F,KAAK,EACH4G,QAAQH,IACRb,MAAQe,GAAcf,MACtBC,QAAQc,GAAcd,OAAAA,EAAAA;YAAAA;AAK5B,qBAASgB,GAASjI,IAAAA;AACZ8G,mBAAcI,OAEdJ,KAAcI,OAChBA,KAAiBJ,IACjBK,KAAsB,CAAA,IAGxBA,GAAoB/J,KAAK4C,EAAAA;YAAAA;AAgB3B,qBAASyC,KAAAA;AACP,kBAAIyF,IAAIC,IAAIC,IA5RQ/E,IA8RhB/N,KAAuB,KAAdwR,KAAmB,GAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,qBAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAGhBgL,KAAKpB,KACLqB,KAAKK,GAAAA,OACMlG,OACT8F,KAAKK,GAAAA,OACMnG,MACJkG,GAAAA,MACMlG,KAGT4F,KADAC,KA9SqB,OADP9E,KA+SF+E,IA9SFvR,SAAewM,GAAG,CAAA,IAAK,EAAEjN,MAAM,WAAWkQ,WAAWjD,GAAAA,KAyTnEyD,KAAcoB,IACdA,KAAK5F,KAEH4F,OAAO5F,OACT4F,KAAKpB,KACLqB,KAAKK,GAAAA,OACMlG,OAET6F,KAAAA,SAEFD,KAAKC,KAGPG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;YAAAA;AAGT,qBAASM,KAAAA;AACP,kBAAIN,IAAIC,IAEJ7S,KAAuB,KAAdwR,KAAmB,GAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,kBAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAWhB,mBARAgL,KAAK,CAAA,GACiC,OAAlC/F,GAAMV,WAAWqF,EAAAA,KACnBqB,KAtVS,KAuVTrB,SAEAqB,KAAK7F,IACwB2F,GAAStF,EAAAA,IAEjCwF,OAAO7F,KACZ4F,CAAAA,GAAG9K,KAAK+K,EAAAA,GAC8B,OAAlChG,GAAMV,WAAWqF,EAAAA,KACnBqB,KA/VO,KAgWPrB,SAEAqB,KAAK7F,IACwB2F,GAAStF,EAAAA;AAM1C,qBAFA2F,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;YAAAA;AAGT,qBAASQ,KAAAA;AACP,kBAAIR,IAAIC,IAAIC,IAER9S,KAAuB,KAAdwR,KAAmB,GAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,kBAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAYhB,kBARAiL,KAAK,CAAA,GACDtF,GAAO8F,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC3BsB,KAAKjG,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAsB,KAAK9F,IACwB2F,GAASnF,EAAAA,IAEpCsF,OAAO9F,GACT,QAAO8F,OAAO9F,KACZ6F,CAAAA,GAAG/K,KAAKgL,EAAAA,GACJvF,GAAO8F,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC3BsB,KAAKjG,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAsB,KAAK9F,IACwB2F,GAASnF,EAAAA;kBAI1CqF,CAAAA,KAAK7F;AAUP,qBARI6F,OAAO7F,OAET6F,KAAYA,GA7YoBnG,KAAK,EAAA,IA+YvCkG,KAAKC,IAELG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;YAAAA;AAGT,qBAASW,KAAAA;AACP,kBAAIX,IAAIC,IAAIC,IAER9S,KAAuB,KAAdwR,KAAmB,GAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,qBAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAGhBgL,KAAKpB,KACLqB,KAAKK,GAAAA,OACMlG,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBsB,KAraO,KAsaPtB,SAEAsB,KAAK9F,IACwB2F,GAASjF,EAAAA,IAEpCoF,OAAO9F,MACJkG,GAAAA,MACMlG,KAGT4F,KADAC,KA7ayB,WAob3BrB,KAAcoB,IACdA,KAAK5F,QAGPwE,KAAcoB,IACdA,KAAK5F,KAEH4F,OAAO5F,OACT4F,KAAKpB,KACLqB,KAAKK,GAAAA,OACMlG,MAC6B,QAAlCH,GAAMV,WAAWqF,EAAAA,KACnBsB,KA/bM,KAgcNtB,SAEAsB,KAAK9F,IACwB2F,GAAShF,EAAAA,IAEpCmF,OAAO9F,MACJkG,GAAAA,MACMlG,KAGT4F,KADAC,KAvcwB,aA8c1BrB,KAAcoB,IACdA,KAAK5F,QAGPwE,KAAcoB,IACdA,KAAK5F,KAEH4F,OAAO5F,OACT4F,KAAKpB,KACLqB,KAAKK,GAAAA,OACMlG,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBsB,KAzdI,KA0dJtB,SAEAsB,KAAK9F,IACwB2F,GAAS/E,EAAAA,IAEpCkF,OAAO9F,MACJkG,GAAAA,MACMlG,KAGT4F,KADAC,KAjesB,cAwexBrB,KAAcoB,IACdA,KAAK5F,QAGPwE,KAAcoB,IACdA,KAAK5F,KAEH4F,OAAO5F,OACT4F,KAAKpB,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBqB,KA/fG,KAggBHrB,SAEAqB,KAAK7F,IACwB2F,GAAStF,EAAAA,IAEpCwF,OAAO7F,OACT8F,KAAKI,GAAAA,OACMlG,KAGT4F,KADAC,KA3fsB,gBAkgBxBrB,KAAcoB,IACdA,KAAK5F,QAMbgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;YAAAA;AA0GT,qBAASO,KAAAA;AACP,kBAAIP,IAAIC,IAAIC,IAAIU,IAAIC,IAAIC,IAAIC,IAAIC,IAE5B5T,KAAuB,KAAdwR,KAAmB,GAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,kBAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAKhB,kBAFAgL,KAAKpB,KACLqB,KAAKgB,GAAAA,OACM7G,IAAY;AAmCrB,qBAlCA8F,KAAK,CAAA,GACLU,KAAKhC,KACLiC,KAAKP,GAAAA,OACMlG,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBkC,KAxoBM,KAyoBNlC,SAEAkC,KAAK1G,IACwB2F,GAAS9E,EAAAA,IAEpC6F,OAAO1G,OACT2G,KAAKT,GAAAA,OACMlG,OACT4G,KAAKC,GAAAA,OACM7G,KAETwG,KADAC,KAAK,CAACA,IAAIC,IAAIC,IAAIC,EAAAA,KAWtBpC,KAAcgC,IACdA,KAAKxG,QAGPwE,KAAcgC,IACdA,KAAKxG,KAEAwG,OAAOxG,KACZ8F,CAAAA,GAAGhL,KAAK0L,EAAAA,GACRA,KAAKhC,KACLiC,KAAKP,GAAAA,OACMlG,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBkC,KA3qBI,KA4qBJlC,SAEAkC,KAAK1G,IACwB2F,GAAS9E,EAAAA,IAEpC6F,OAAO1G,OACT2G,KAAKT,GAAAA,OACMlG,OACT4G,KAAKC,GAAAA,OACM7G,KAETwG,KADAC,KAAK,CAACA,IAAIC,IAAIC,IAAIC,EAAAA,KAWtBpC,KAAcgC,IACdA,KAAKxG,QAGPwE,KAAcgC,IACdA,KAAKxG;AAGL8F,gBAAAA,OAAO9F,KAGT4F,KADAC,KAAK/E,GAAQ+E,IAAIC,EAAAA,KAGjBtB,KAAcoB,IACdA,KAAK5F;cAAAA,MAGPwE,MAAcoB,IACdA,KAAK5F;AAKP,qBAFAgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;YAAAA;AAGT,qBAASkB,KAAAA;AACP,kBAAIlB,IAAIC,IAAIC,IAvtBS9D,IAAI1C,IAytBrBtM,KAAuB,KAAdwR,KAAmB,GAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,qBAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAGhBgL,KAAKpB,KACLqB,KAAKU,GAAAA,OACMvG,OACT6F,KAAK,OAEHA,OAAO7F,OACT8F,KAAKe,GAAAA,OACM7G,MAzuBYV,KA2uBJwG,IACjBF,KADAC,MA3uBiB7D,KA2uBJ6D,MAzuBJ,EAAE/R,MAAMkO,IAAI+E,MAAM,EAAEjT,MAAM,YAAA,GAAekT,OAAO1H,GAAAA,IADvCA,OAivBpBkF,KAAcoB,IACdA,KAAK5F,KAGPgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;YAAAA;AAGT,qBAASiB,KAAAA;AACP,kBAAIjB,IAAIC,IAAIC,IAAIU,IAAIC,IAAIC,IAxvBH/E,IA0vBjB3O,KAAuB,KAAdwR,KAAmB,GAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,kBAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAKhB,kBAFAgL,KAAKpB,KACLqB,KAAKoB,GAAAA,OACMjH,IAAY;AAiBrB,qBAhBA8F,KAAK,CAAA,GACLU,KAAKhC,KACLiC,KAAKF,GAAAA,OACMvG,OACT0G,KAAKO,GAAAA,OACMjH,KAETwG,KADAC,KAAK,CAACA,IAAIC,EAAAA,KAOZlC,KAAcgC,IACdA,KAAKxG,KAEAwG,OAAOxG,KACZ8F,CAAAA,GAAGhL,KAAK0L,EAAAA,GACRA,KAAKhC,KACLiC,KAAKF,GAAAA,OACMvG,OACT0G,KAAKO,GAAAA,OACMjH,KAETwG,KADAC,KAAK,CAACA,IAAIC,EAAAA,KAOZlC,KAAcgC,IACdA,KAAKxG;AAGL8F,gBAAAA,OAAO9F,MAxyBQ2B,KA0yBJkE,IACbD,KADAC,KAAiBC,GAzyBJoB,QAAO,SAAUC,IAAMC,IAAAA;AAChC,yBAAO,EAAEtT,MAAMsT,GAAI,CAAA,GAAIL,MAAMI,IAAMH,OAAOI,GAAI,CAAA,EAAA;gBAAA,IAC7CzF,EAAAA,MA0yBL6C,KAAcoB,IACdA,KAAK5F;cAAAA,MAGPwE,MAAcoB,IACdA,KAAK5F;AAKP,qBAFAgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;YAAAA;AAGT,qBAASqB,KAAAA;AACP,kBAAIrB,IAAIC,IAAIC,IAAIU,IApzBKa,IAASC,IAClB7E,IAqzBRzP,KAAuB,KAAdwR,KAAmB,GAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,kBAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAchB,kBAXAgL,KAAKpB,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBqB,KAn0BU,KAo0BVrB,SAEAqB,KAAK7F,IACwB2F,GAASzE,EAAAA,IAEpC2E,OAAO7F,OACT6F,KAAK,OAEHA,OAAO7F,IAAY;AAGrB,oBAFA8F,KAAK,CAAA,IACLU,KAAKe,GAAAA,OACMvH,GACT,QAAOwG,OAAOxG,KACZ8F,CAAAA,GAAGhL,KAAK0L,EAAAA,GACRA,KAAKe,GAAAA;oBAGPzB,CAAAA,KAAK9F;AAEH8F,gBAAAA,OAAO9F,MAr1BQqH,KAu1BJxB,IAt1BLpD,KAAkB,OADA6E,KAu1BTxB,IAt1BFvR,SAAe+S,GAAG,CAAA,IAAK,EAAExT,MAAM,YAAYkQ,WAAWsD,GAAAA,GAChED,OAAS5E,GAAE4E,UAAAA,OAs1BhBzB,KADAC,KAp1BSpD,OAu1BT+B,KAAcoB,IACdA,KAAK5F;cAAAA,MAGPwE,MAAcoB,IACdA,KAAK5F;AAKP,qBAFAgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;YAAAA;AAGT,qBAAS2B,KAAAA;AACP,kBAAI3B,IAEA5S,KAAuB,KAAdwR,KAAmB,GAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,qBAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,YAGhBgL,MA2CF,WAAA;AACE,oBAAIA,IAAIC,IAEJ7S,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,uBAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAIsB,OAAlCiF,GAAMV,WAAWqF,EAAAA,KACnBqB,KAv6BU,KAw6BVrB,SAEAqB,KAAK7F,IACwB2F,GAASxE,EAAAA,IAEpC0E,OAAO7F,OAET6F,KA76B+B,EAAE/R,MAAM,YAAYmO,OA66BtC4D,GAAAA,IAEfD,KAAKC,IAELG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;cAAAA,GAvEF4B,OACMxH,OACT4F,MAwEJ,WAAA;AACE,oBAAIA,IAAIC,IAAIC,IAER9S,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,uBAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAGhBgL,KAAKpB,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBqB,KAn8BU,KAo8BVrB,SAEAqB,KAAK7F,IACwB2F,GAASvE,EAAAA,IAEpCyE,OAAO7F,OACT6F,KAAK,OAEHA,OAAO7F,OACT8F,KAAKM,GAAAA,OACMpG,KAGT4F,KADAC,KA98B6B,EAAE/R,MAAM,cAAcmO,OA88BtC6D,GAAAA,KAOftB,KAAcoB,IACdA,KAAK5F,KAGPgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;cAAAA,GAhHA6B,OACMzH,OACT4F,MAiHN,WAAA;AACE,oBAAIA,IAAIC,IAAQW,IAAQE,IAEpB1T,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,uBAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAGhBgL,KAAKpB,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBqB,KA3+BU,KA4+BVrB,SAEAqB,KAAK7F,IACwB2F,GAAStE,CAAAA,IAEpCwE,OAAO7F,MACJkG,GAAAA,MACMlG,OACTwG,MAmON,WAAA;AACE,sBAAIZ,IAAIC,IAAQW,IAAQE,IAEpB1T,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,yBAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAGhBgL,KAAKpB,KACLqB,KAAK6B,GAAAA,OACM1H,MACJkG,GAAAA,MACMlG,OACTwG,MAjJN,WAAA;AACE,wBAAIZ,IAAIC,IAAIC,IAER9S,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,2BAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAGhBgL,KAAKpB,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBqB,KAlnCU,KAmnCVrB,SAEAqB,KAAK7F,IACwB2F,GAASzE,EAAAA,IAEpC2E,OAAO7F,OACT6F,KAAK,OAEHA,OAAO7F,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBsB,KAzmCQ,KA0mCRtB,SAEAsB,KAAK9F,IACwB2F,GAASlE,CAAAA,IAEpCqE,OAAO9F,MAET6F,KAAKnE,EAAQmE,EAAAA,GACbD,KAAKC,OAELrB,KAAcoB,IACdA,KAAK5F,QAGPwE,KAAcoB,IACdA,KAAK5F,KAGPgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;kBAAAA,GAmGE+B,OACM3H,MACJkG,GAAAA,MACMlG,OACT0G,MA+bV,WAAA;AACE,wBAAId,IAAIC,IAAQW,IAAIC,IAAIC,IAEpB1T,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,wBAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAWhB,wBARAgL,KAAKpB,IA3oDO,YA4oDR3E,GAAM+H,OAAOpD,IAAa,CAAA,KAC5BqB,KA7oDU,SA8oDVrB,MAAe,MAEfqB,KAAK7F,IACwB2F,GAASzC,CAAAA,IAEpC2C,OAAO7F,GAET,KADKkG,GAAAA,MACMlG,IAAY;AASrB,0BARAwG,KAAK,CAAA,GACDrD,EAAQkD,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BiC,KAAK5G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAiC,KAAKzG,IACwB2F,GAASvC,CAAAA,IAEpCqD,OAAOzG,GACT,QAAOyG,OAAOzG,KACZwG,CAAAA,GAAG1L,KAAK2L,EAAAA,GACJtD,EAAQkD,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BiC,KAAK5G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAiC,KAAKzG,IACwB2F,GAASvC,CAAAA;0BAI1CoD,CAAAA,KAAKxG;AAEHwG,sBAAAA,OAAOxG,OACTyG,KAAKP,GAAAA,OACMlG,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBkC,KA5qDE,KA6qDFlC,SAEAkC,KAAK1G,IACwB2F,GAAStC,CAAAA,IAEpCqD,OAAO1G,MAET6F,KAlrDuB,EAAE/R,MAAM,QAAQmO,OAkrD1BuE,GAlrDmC9G,KAAK,EAAA,EAAA,GAmrDrDkG,KAAKC,OAELrB,KAAcoB,IACdA,KAAK5F,QAOTwE,KAAcoB,IACdA,KAAK5F;oBAAAA,MAGPwE,MAAcoB,IACdA,KAAK5F;wBAGPwE,MAAcoB,IACdA,KAAK5F;AAKP,2BAFAgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;kBAAAA,GAjhBMiC,OACM7H,OACT0G,MA0jBZ,WAAA;AACE,wBAAId,IAAIC,IAAIC,IAAIU,IAAIC,IAlvDUqB,IAovD1B9U,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,wBAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAWhB,wBARAgL,KAAKpB,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBqB,KAjwDU,KAkwDVrB,SAEAqB,KAAK7F,IACwB2F,GAASnC,CAAAA,IAEpCqC,OAAO7F,IAAY;AASrB,0BARA8F,KAAK,CAAA,IACLU,KAAKuB,GAAAA,OACM/H,OACTwG,KAAKwB,GAAAA,OACMhI,OACTwG,KAAKyB,GAAAA,IAGLzB,OAAOxG,GACT,QAAOwG,OAAOxG,KACZ8F,CAAAA,GAAGhL,KAAK0L,EAAAA,IACRA,KAAKuB,GAAAA,OACM/H,OACTwG,KAAKwB,GAAAA,OACMhI,OACTwG,KAAKyB,GAAAA;0BAKXnC,CAAAA,KAAK9F;AAEH8F,sBAAAA,OAAO9F,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBgC,KAhyDM,KAiyDNhC,SAEAgC,KAAKxG,IACwB2F,GAASnC,CAAAA,IAEpCgD,OAAOxG,OACTyG,MA5FR,WAAA;AACE,4BAAIb,IAAIC,IAEJ7S,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,4BAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAWhB,4BARAgL,KAAK,CAAA,GACDtC,EAAQ+C,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BqB,KAAKhG,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAqB,KAAK7F,IACwB2F,GAASpC,CAAAA,IAEpCsC,OAAO7F,GACT,QAAO6F,OAAO7F,KACZ4F,CAAAA,GAAG9K,KAAK+K,EAAAA,GACJvC,EAAQ+C,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BqB,KAAKhG,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAqB,KAAK7F,IACwB2F,GAASpC,CAAAA;4BAI1CqC,CAAAA,KAAK5F;AAKP,+BAFAgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;sBAAAA,GAuDIsC,OACMlI,OACTyG,KAAK,OAEHA,OAAOzG,MAzyDa8H,KA2yDLrB,IAAjBZ,KA1yDO,EACL/R,MAAM,UAAUmO,OAAO,IAAIkG,OAyyDhBrC,GAzyD+BpG,KAAK,EAAA,GAAKoI,KAAOA,GAAKpI,KAAK,EAAA,IAAM,EAAA,EAAA,GA0yD7EkG,KAAKC,OAELrB,KAAcoB,IACdA,KAAK5F,QAGPwE,KAAcoB,IACdA,KAAK5F,QAGPwE,KAAcoB,IACdA,KAAK5F;oBAAAA,MAGPwE,MAAcoB,IACdA,KAAK5F;AAKP,2BAFAgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;kBAAAA,GAzoBQwC,IAEH1B,OAAO1G,MAET6F,KAAK9D,EAAQ8D,IAAIW,IAAIE,EAAAA,GACrBd,KAAKC,OAELrB,KAAcoB,IACdA,KAAK5F,QAebwE,KAAcoB,IACdA,KAAK5F,KAEH4F,OAAO5F,OACT4F,KAAKpB,KACLqB,KAAK6B,GAAAA,OACM1H,MACJkG,GAAAA,MACMlG,OACTwG,MAjPR,WAAA;AACE,wBAAIZ,IAAIC,IAAIC,IAER9S,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,2BAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAGhBgL,KAAKpB,IACDjD,EAAQ8E,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BqB,KAAKhG,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAqB,KAAK7F,IACwB2F,GAASnE,CAAAA,IAEpCqE,OAAO7F,OACT6F,KAAK,OAEHA,OAAO7F,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBsB,KA/iCQ,KAgjCRtB,SAEAsB,KAAK9F,IACwB2F,GAASlE,CAAAA,IAEpCqE,OAAO9F,MAET6F,KAAKnE,EAAQmE,EAAAA,GACbD,KAAKC,OAELrB,KAAcoB,IACdA,KAAK5F,QAGPwE,KAAcoB,IACdA,KAAK5F,KAEH4F,OAAO5F,OACL4B,EAAQyE,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BoB,KAAK/F,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAoB,KAAK5F,IACwB2F,GAAS9D,CAAAA,KAI1CmE,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;kBAAAA,GA0LIyC,OACMrI,MACJkG,GAAAA,MACMlG,OACT0G,MA+CZ,WAAA;AACE,wBAAId,IAAIC,IAAIC,IAAIU,IAAIC,IAAIC,IAEpB1T,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,wBAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAWhB,wBARAgL,KAAKpB,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBqB,KA1zCU,KA2zCVrB,SAEAqB,KAAK7F,IACwB2F,GAASxD,CAAAA,IAEpC0D,OAAO7F,IAAY;AAuCrB,2BAtCA8F,KAAK,CAAA,GACD1D,EAAQiE,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BgC,KAAK3G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAgC,KAAKxG,IACwB2F,GAAStD,CAAAA,IAEpCmE,OAAOxG,OACTwG,KAAKhC,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBiC,KAx0CM,MAy0CNjC,SAEAiC,KAAKzG,IACwB2F,GAASrD,CAAAA,IAEpCmE,OAAOzG,MACLH,GAAMtL,SAASiQ,MACjBkC,KAAK7G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAkC,KAAK1G,IACwB2F,GAASpD,CAAAA,IAEpCmE,OAAO1G,MAETyG,KAAKjE,EAAQiE,IAAIC,EAAAA,GACjBF,KAAKC,OAELjC,KAAcgC,IACdA,KAAKxG,QAGPwE,KAAcgC,IACdA,KAAKxG,MAGFwG,OAAOxG,KACZ8F,CAAAA,GAAGhL,KAAK0L,EAAAA,GACJpE,EAAQiE,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BgC,KAAK3G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAgC,KAAKxG,IACwB2F,GAAStD,CAAAA,IAEpCmE,OAAOxG,OACTwG,KAAKhC,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBiC,KA/2CI,MAg3CJjC,SAEAiC,KAAKzG,IACwB2F,GAASrD,CAAAA,IAEpCmE,OAAOzG,MACLH,GAAMtL,SAASiQ,MACjBkC,KAAK7G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAkC,KAAK1G,IACwB2F,GAASpD,CAAAA,IAEpCmE,OAAO1G,MAETyG,KAAKjE,EAAQiE,IAAIC,EAAAA,GACjBF,KAAKC,OAELjC,KAAcgC,IACdA,KAAKxG,QAGPwE,KAAcgC,IACdA,KAAKxG;AAIP8F,sBAAAA,OAAO9F,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBgC,KAj5CM,KAk5CNhC,SAEAgC,KAAKxG,IACwB2F,GAASxD,CAAAA,IAEpCqE,OAAOxG,MAET6F,KAAKnD,EAAQoD,EAAAA,GACbF,KAAKC,OAELrB,KAAcoB,IACdA,KAAK5F,QAGPwE,KAAcoB,IACdA,KAAK5F;oBAAAA,MAGPwE,MAAcoB,IACdA,KAAK5F;AAEP,wBAAI4F,OAAO5F,GAST,KARA4F,KAAKpB,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBqB,KA/5CQ,KAg6CRrB,SAEAqB,KAAK7F,IACwB2F,GAAS9C,CAAAA,IAEpCgD,OAAO7F,IAAY;AAuCrB,2BAtCA8F,KAAK,CAAA,GACDhD,EAAQuD,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BgC,KAAK3G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAgC,KAAKxG,IACwB2F,GAAS5C,CAAAA,IAEpCyD,OAAOxG,OACTwG,KAAKhC,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBiC,KAx7CI,MAy7CJjC,SAEAiC,KAAKzG,IACwB2F,GAASrD,CAAAA,IAEpCmE,OAAOzG,MACLH,GAAMtL,SAASiQ,MACjBkC,KAAK7G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAkC,KAAK1G,IACwB2F,GAASpD,CAAAA,IAEpCmE,OAAO1G,MAETyG,KAAKjE,EAAQiE,IAAIC,EAAAA,GACjBF,KAAKC,OAELjC,KAAcgC,IACdA,KAAKxG,QAGPwE,KAAcgC,IACdA,KAAKxG,MAGFwG,OAAOxG,KACZ8F,CAAAA,GAAGhL,KAAK0L,EAAAA,GACJ1D,EAAQuD,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BgC,KAAK3G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAgC,KAAKxG,IACwB2F,GAAS5C,CAAAA,IAEpCyD,OAAOxG,OACTwG,KAAKhC,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBiC,KA/9CE,MAg+CFjC,SAEAiC,KAAKzG,IACwB2F,GAASrD,CAAAA,IAEpCmE,OAAOzG,MACLH,GAAMtL,SAASiQ,MACjBkC,KAAK7G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAkC,KAAK1G,IACwB2F,GAASpD,CAAAA,IAEpCmE,OAAO1G,MAETyG,KAAKjE,EAAQiE,IAAIC,EAAAA,GACjBF,KAAKC,OAELjC,KAAcgC,IACdA,KAAKxG,QAGPwE,KAAcgC,IACdA,KAAKxG;AAIP8F,sBAAAA,OAAO9F,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBgC,KAt/CI,KAu/CJhC,SAEAgC,KAAKxG,IACwB2F,GAAS9C,CAAAA,IAEpC2D,OAAOxG,MAET6F,KAAKnD,EAAQoD,EAAAA,GACbF,KAAKC,OAELrB,KAAcoB,IACdA,KAAK5F,QAGPwE,KAAcoB,IACdA,KAAK5F;oBAAAA,MAGPwE,MAAcoB,IACdA,KAAK5F;AAMT,2BAFAgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;kBAAAA,GA9RQ0C,OACMtI,OACT0G,MA+Rd,WAAA;AACE,wBAAId,IAAIC,IAAIC,IAAIU,IA9gDK7E,IAAGc,IAER8F,IA8gDZvV,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,wBAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAahB,yBAVAgL,KAAKpB,IACLqB,KAAKrB,IACLsB,KAAK,CAAA,GACD9C,EAAQqD,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BgC,KAAK3G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAgC,KAAKxG,IACwB2F,GAAS1C,CAAAA,IAEjCuD,OAAOxG,KACZ8F,CAAAA,GAAGhL,KAAK0L,EAAAA,GACJxD,EAAQqD,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BgC,KAAK3G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAgC,KAAKxG,IACwB2F,GAAS1C,CAAAA;AAyB1C,wBAtBI6C,OAAO9F,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBgC,KAzkDQ,KA0kDRhC,SAEAgC,KAAKxG,IACwB2F,GAAS7D,CAAAA,IAEpC0E,OAAOxG,KAET6F,KADAC,KAAK,CAACA,IAAIU,EAAAA,KAGVhC,KAAcqB,IACdA,KAAK7F,QAGPwE,KAAcqB,IACdA,KAAK7F,KAEH6F,OAAO7F,OACT6F,KAAK,OAEHA,OAAO7F,IAAY;AASrB,0BARA8F,KAAK,CAAA,GACD9C,EAAQqD,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BgC,KAAK3G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAgC,KAAKxG,IACwB2F,GAAS1C,CAAAA,IAEpCuD,OAAOxG,GACT,QAAOwG,OAAOxG,KACZ8F,CAAAA,GAAGhL,KAAK0L,EAAAA,GACJxD,EAAQqD,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BgC,KAAK3G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAgC,KAAKxG,IACwB2F,GAAS1C,CAAAA;0BAI1C6C,CAAAA,KAAK9F;AAEH8F,sBAAAA,OAAO9F,MA1lDWyC,KA4lDHqD,IA1lDLyC,MAFK5G,KA4lDJkE,MA1lDqB,CAAA,EAAG7E,OAAOwH,MAAM,CAAA,GAAI7G,EAAAA,EAAGjC,KAAK,EAAA,IAAM,IA0lDpEmG,KAzlDa,EAAE/R,MAAM,WAAWmO,OAAOwG,WAAWF,KAAkB9F,GAAE/C,KAAK,EAAA,CAAA,EAAA,GA0lD3EkG,KAAKC,OAELrB,KAAcoB,IACdA,KAAK5F;oBAAAA,MAGPwE,MAAcoB,IACdA,KAAK5F;AAKP,2BAFAgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;kBAAAA,GA3XU8C,OACM1I,OACT0G,MA4XhB,WAAA;AACE,wBAAId,IAAIC,IAEJ7S,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,2BAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,YAIhBiL,KAAKO,GAAAA,OACMpG,OAET6F,KAvnD+B,EAAE/R,MAAM,WAAWmO,OAunDrC4D,GAAAA,IAEfD,KAAKC,IAELG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;kBAAAA,GAlZY+C,IAGLjC,OAAO1G,MAET6F,KAAK9D,EAAQ8D,IAAIW,IAAIE,EAAAA,GACrBd,KAAKC,OAELrB,KAAcoB,IACdA,KAAK5F,QAebwE,KAAcoB,IACdA,KAAK5F,KAEH4F,OAAO5F,OACT4F,KAAKpB,KACLqB,KAAK6B,GAAAA,OACM1H,OAET6F,KAlyC8B,EAAE/R,MAAM,aAAa+J,MAkyCtCgI,GAAAA,IAEfD,KAAKC,MAITG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;gBAAAA,GA1UEgD,OACM5I,MACJkG,GAAAA,MACMlG,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBkC,KAv/BE,KAw/BFlC,SAEAkC,KAAK1G,IACwB2F,GAASrE,CAAAA,IAEpCoF,OAAO1G,KAGT4F,KADAC,KAAaW,MAGbhC,KAAcoB,IACdA,KAAK5F,QAebwE,KAAcoB,IACdA,KAAK5F,KAGPgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;cAAAA,GA9KEiD,OACM7I,OACT4F,MAurCR,WAAA;AACE,oBAAIA,IAAIC,IAAIC,IAAIU,IAAIC,IAAIC,IAAIC,IAn+DPrS,IAq+DjBtB,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,oBAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAWhB,oBARAgL,KAAKpB,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBqB,KAviEU,KAwiEVrB,SAEAqB,KAAK7F,IACwB2F,GAAS7D,CAAAA,IAEpC+D,OAAO7F,GAET,MADA8F,KAAKM,GAAAA,OACMpG,IAAY;AAuBrB,uBAtBAwG,KAAK,CAAA,GACLC,KAAKjC,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBkC,KAnjEM,KAojENlC,SAEAkC,KAAK1G,IACwB2F,GAAS7D,CAAAA,IAEpC4E,OAAO1G,OACT2G,KAAKP,GAAAA,OACMpG,KAETyG,KADAC,KAAK,CAACA,IAAIC,EAAAA,KAOZnC,KAAciC,IACdA,KAAKzG,KAEAyG,OAAOzG,KACZwG,CAAAA,GAAG1L,KAAK2L,EAAAA,GACRA,KAAKjC,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBkC,KA1kEI,KA2kEJlC,SAEAkC,KAAK1G,IACwB2F,GAAS7D,CAAAA,IAEpC4E,OAAO1G,OACT2G,KAAKP,GAAAA,OACMpG,KAETyG,KADAC,KAAK,CAACA,IAAIC,EAAAA,KAOZnC,KAAciC,IACdA,KAAKzG;AAGLwG,kBAAAA,OAAOxG,MAviEM1L,KAyiEFwR,IAAbD,KAxiEK,EAAE/R,MAAM,SAAS+J,MAwiEL2I,GAxiEcU,QAAO,SAASC,IAAMhC,IAAAA;AAAI,2BAAOgC,KAAOhC,GAAE,CAAA,IAAKA,GAAE,CAAA;kBAAA,IAAO7Q,EAAAA,EAAAA,GAyiEvFsR,KAAKC,OAELrB,KAAcoB,IACdA,KAAK5F;gBAAAA,MAGPwE,MAAcoB,IACdA,KAAK5F;oBAGPwE,MAAcoB,IACdA,KAAK5F;AAKP,uBAFAgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;cAAAA,GA/wCIkD,OACM9I,OACT4F,MAgxCV,WAAA;AACE,oBAAIA,IAAIC,IAAQW,IAAQE,IAEpB1T,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,uBAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAGhBgL,KAAKpB,IAtkEO,YAukER3E,GAAM+H,OAAOpD,IAAa,CAAA,KAC5BqB,KAxkEU,SAykEVrB,MAAe,MAEfqB,KAAK7F,IACwB2F,GAAS9B,EAAAA,IAEpCgC,OAAO7F,MACJkG,GAAAA,MACMlG,OACTwG,KAAKL,GAAAA,OACMnG,MACJkG,GAAAA,MACMlG,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBkC,KA5mEE,KA6mEFlC,SAEAkC,KAAK1G,IACwB2F,GAAStC,CAAAA,IAEpCqD,OAAO1G,KAGT4F,KADAC,KA5lEwB,EAAE/R,MAAM,OAAOkQ,WA4lE1BwC,GAAAA,KAGbhC,KAAcoB,IACdA,KAAK5F,QAebwE,KAAcoB,IACdA,KAAK5F,KAGPgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;cAAAA,GA70CMmD,OACM/I,OACT4F,MA80CZ,WAAA;AACE,oBAAIA,IAAIC,IAAQW,IAAQE,IAEpB1T,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,uBAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAGhBgL,KAAKpB,IAnoEO,gBAooER3E,GAAM+H,OAAOpD,IAAa,CAAA,KAC5BqB,KAroEU,aAsoEVrB,MAAe,MAEfqB,KAAK7F,IACwB2F,GAAS7B,EAAAA,IAEpC+B,OAAO7F,MACJkG,GAAAA,MACMlG,OACTwG,KAAKL,GAAAA,OACMnG,MACJkG,GAAAA,MACMlG,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBkC,KA5qEE,KA6qEFlC,SAEAkC,KAAK1G,IACwB2F,GAAStC,CAAAA,IAEpCqD,OAAO1G,MAET6F,KAAK9B,GAAQyC,EAAAA,GACbZ,KAAKC,OAELrB,KAAcoB,IACdA,KAAK5F,QAebwE,KAAcoB,IACdA,KAAK5F,KAGPgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;cAAAA,GA34CQoD,OACMhJ,OACT4F,MA44Cd,WAAA;AACE,oBAAIA,IAAIC,IAAQW,IAAQE,IAEpB1T,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,uBAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAGhBgL,KAAKpB,IAhsEO,WAisER3E,GAAM+H,OAAOpD,IAAa,CAAA,KAC5BqB,KAlsEU,QAmsEVrB,MAAe,MAEfqB,KAAK7F,IACwB2F,GAAS1B,EAAAA,IAEpC4B,OAAO7F,MACJkG,GAAAA,MACMlG,OACTwG,KAAKL,GAAAA,OACMnG,MACJkG,GAAAA,MACMlG,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBkC,KA5uEE,KA6uEFlC,SAEAkC,KAAK1G,IACwB2F,GAAStC,CAAAA,IAEpCqD,OAAO1G,MAET6F,KAAK9B,GAAQyC,EAAAA,GACbZ,KAAKC,OAELrB,KAAcoB,IACdA,KAAK5F,QAebwE,KAAcoB,IACdA,KAAK5F,KAGPgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;cAAAA,GAz8CUqD,OACMjJ,OACT4F,MA08ChB,WAAA;AACE,oBAAIA,IAAIC,IAAQW,IAAQE,IAEpB1T,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,uBAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAGhBgL,KAAKpB,IA9vEO,YA+vER3E,GAAM+H,OAAOpD,IAAa,CAAA,KAC5BqB,KAhwEU,SAiwEVrB,MAAe,MAEfqB,KAAK7F,IACwB2F,GAASzB,EAAAA,IAEpC2B,OAAO7F,MACJkG,GAAAA,MACMlG,OACTwG,MAr2DN,WAAA;AACE,sBAAIZ,IAAIC,IAAIC,IAAIU,IAAIC,IAAIC,IAAIC,IAAIC,IAE5B5T,KAAuB,KAAdwR,KAAmB,GAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,sBAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAKhB,sBAFAgL,KAAKpB,KACLqB,KAAKiB,GAAAA,OACM9G,IAAY;AAmCrB,yBAlCA8F,KAAK,CAAA,GACLU,KAAKhC,KACLiC,KAAKP,GAAAA,OACMlG,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBkC,KAjiBM,KAkiBNlC,SAEAkC,KAAK1G,IACwB2F,GAAS9E,EAAAA,IAEpC6F,OAAO1G,OACT2G,KAAKT,GAAAA,OACMlG,OACT4G,KAAKE,GAAAA,OACM9G,KAETwG,KADAC,KAAK,CAACA,IAAIC,IAAIC,IAAIC,EAAAA,KAWtBpC,KAAcgC,IACdA,KAAKxG,QAGPwE,KAAcgC,IACdA,KAAKxG,KAEAwG,OAAOxG,KACZ8F,CAAAA,GAAGhL,KAAK0L,EAAAA,GACRA,KAAKhC,KACLiC,KAAKP,GAAAA,OACMlG,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBkC,KApkBI,KAqkBJlC,SAEAkC,KAAK1G,IACwB2F,GAAS9E,EAAAA,IAEpC6F,OAAO1G,OACT2G,KAAKT,GAAAA,OACMlG,OACT4G,KAAKE,GAAAA,OACM9G,KAETwG,KADAC,KAAK,CAACA,IAAIC,IAAIC,IAAIC,EAAAA,KAWtBpC,KAAcgC,IACdA,KAAKxG,QAGPwE,KAAcgC,IACdA,KAAKxG;AAGL8F,oBAAAA,OAAO9F,KAGT4F,KADAC,KAAK/E,GAAQ+E,IAAIC,EAAAA,KAGjBtB,KAAcoB,IACdA,KAAK5F;kBAAAA,MAGPwE,MAAcoB,IACdA,KAAK5F;AAKP,yBAFAgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;gBAAAA,GAiwDEsD,OACMlJ,MACJkG,GAAAA,MACMlG,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBkC,KA5yEE,KA6yEFlC,SAEAkC,KAAK1G,IACwB2F,GAAStC,CAAAA,IAEpCqD,OAAO1G,KAGT4F,KADAC,KApxEwB,EAAE/R,MAAM,OAAOkQ,WAoxE1BwC,GAAAA,KAGbhC,KAAcoB,IACdA,KAAK5F,QAebwE,KAAcoB,IACdA,KAAK5F,KAGPgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;cAAAA,GAvgDYuD,OACMnJ,OACT4F,MAwgDlB,WAAA;AACE,oBAAIA,IAAIC,IAEJ7S,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,uBAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAxzEJ,mBA4zERiF,GAAM+H,OAAOpD,IAAa,EAAA,KAC5BqB,KA7zEU,gBA8zEVrB,MAAe,OAEfqB,KAAK7F,IACwB2F,GAASxB,EAAAA,IAEpC0B,OAAO7F,OAET6F,KAn0E8BuD,GAAI,CAAA,IAq0EpCxD,KAAKC,IAELG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;cAAAA,GApiDcyD,OACMrJ,OACT4F,MAqiDpB,WAAA;AACE,oBAAIA,IAAIC,IAEJ7S,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,uBAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAp1EJ,kBAw1ERiF,GAAM+H,OAAOpD,IAAa,EAAA,KAC5BqB,KAz1EU,eA01EVrB,MAAe,OAEfqB,KAAK7F,IACwB2F,GAASvB,EAAAA,IAEpCyB,OAAO7F,OAET6F,KA/1E+ByD,GAAQ,CAAA,IAi2EzC1D,KAAKC,IAELG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;cAAAA,GAjkDgB2D,OACMvJ,OACT4F,MAkkDtB,WAAA;AACE,oBAAIA,IAAIC,IAAQW,IAAIC,IAAIC,IAEpB1T,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,oBAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAWhB,oBARAgL,KAAKpB,IAn3EQ,kBAo3ET3E,GAAM+H,OAAOpD,IAAa,EAAA,KAC5BqB,KAr3EW,eAs3EXrB,MAAe,OAEfqB,KAAK7F,IACwB2F,GAAStB,EAAAA,IAEpCwB,OAAO7F,GAET,KADKkG,GAAAA,MACMlG,IAAY;AASrB,sBARAwG,KAAK,CAAA,GACDxD,EAAQqD,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BiC,KAAK5G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAiC,KAAKzG,IACwB2F,GAAS1C,CAAAA,IAEpCwD,OAAOzG,GACT,QAAOyG,OAAOzG,KACZwG,CAAAA,GAAG1L,KAAK2L,EAAAA,GACJzD,EAAQqD,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BiC,KAAK5G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAiC,KAAKzG,IACwB2F,GAAS1C,CAAAA;sBAI1CuD,CAAAA,KAAKxG;AAEHwG,kBAAAA,OAAOxG,OACTyG,KAAKP,GAAAA,OACMlG,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBkC,KA/7EE,KAg8EFlC,SAEAkC,KAAK1G,IACwB2F,GAAStC,CAAAA,IAEpCqD,OAAO1G,MAET6F,KA95EwBuD,GAAII,SA85EdhD,GA95EyB9G,KAAK,EAAA,GAAK,EAAA,CAAA,GA+5EjDkG,KAAKC,OAELrB,KAAcoB,IACdA,KAAK5F,QAOTwE,KAAcoB,IACdA,KAAK5F;gBAAAA,MAGPwE,MAAcoB,IACdA,KAAK5F;oBAGPwE,MAAcoB,IACdA,KAAK5F;AAKP,uBAFAgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;cAAAA,GAppDkB6D,OACMzJ,OACT4F,MAqpDxB,WAAA;AACE,oBAAIA,IAAIC,IAAQW,IAAIC,IAAIC,IAEpB1T,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,oBAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAWhB,oBARAgL,KAAKpB,IAr8EQ,uBAs8ET3E,GAAM+H,OAAOpD,IAAa,EAAA,KAC5BqB,KAv8EW,oBAw8EXrB,MAAe,OAEfqB,KAAK7F,IACwB2F,GAASrB,EAAAA,IAEpCuB,OAAO7F,GAET,KADKkG,GAAAA,MACMlG,IAAY;AASrB,sBARAwG,KAAK,CAAA,GACDxD,EAAQqD,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BiC,KAAK5G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAiC,KAAKzG,IACwB2F,GAAS1C,CAAAA,IAEpCwD,OAAOzG,GACT,QAAOyG,OAAOzG,KACZwG,CAAAA,GAAG1L,KAAK2L,EAAAA,GACJzD,EAAQqD,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BiC,KAAK5G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAiC,KAAKzG,IACwB2F,GAAS1C,CAAAA;sBAI1CuD,CAAAA,KAAKxG;AAEHwG,kBAAAA,OAAOxG,OACTyG,KAAKP,GAAAA,OACMlG,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBkC,KAphFE,KAqhFFlC,SAEAkC,KAAK1G,IACwB2F,GAAStC,CAAAA,IAEpCqD,OAAO1G,MAET6F,KAh/EwByD,GAAQE,SAg/ElBhD,GAh/E6B9G,KAAK,EAAA,GAAK,EAAA,CAAA,GAi/ErDkG,KAAKC,OAELrB,KAAcoB,IACdA,KAAK5F,QAOTwE,KAAcoB,IACdA,KAAK5F;gBAAAA,MAGPwE,MAAcoB,IACdA,KAAK5F;oBAGPwE,MAAcoB,IACdA,KAAK5F;AAKP,uBAFAgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;cAAAA,GAvuDoB8D,OACM1J,OACT4F,MAwuD1B,WAAA;AACE,oBAAIA,IAAIC,IAAIC,IAER9S,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,uBAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAGhBgL,KAAKpB,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBqB,KAzhFW,KA0hFXrB,SAEAqB,KAAK7F,IACwB2F,GAASpB,EAAAA,IAEpCsB,OAAO7F,OACT8F,KAAKM,GAAAA,OACMpG,KAGT4F,KADAC,KAhiFO,EAAE/R,MAAM,SAAS+J,MAgiFViI,GAAAA,KAOhBtB,KAAcoB,IACdA,KAAK5F,KAGPgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;cAAAA,GA7wDsB+D,IAc7B3D,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;YAAAA;AAwPT,qBAAS8B,KAAAA;AACP,kBAAI9B,IAAIC,IAAIC,IAAIU,IAAIC,IAAIC,IA3nCH/E,IAAG2F,IA6nCpBtU,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,kBAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAKhB,kBAFAgL,KAAKpB,KACLqB,KAAKO,GAAAA,OACMpG,IAAY;AAuBrB,qBAtBA8F,KAAK,CAAA,GACLU,KAAKhC,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBiC,KA9oCQ,KA+oCRjC,SAEAiC,KAAKzG,IACwB2F,GAAS7D,CAAAA,IAEpC2E,OAAOzG,OACT0G,KAAKN,GAAAA,OACMpG,KAETwG,KADAC,KAAK,CAACA,IAAIC,EAAAA,KAOZlC,KAAcgC,IACdA,KAAKxG,KAEAwG,OAAOxG,KACZ8F,CAAAA,GAAGhL,KAAK0L,EAAAA,GACRA,KAAKhC,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBiC,KArqCM,KAsqCNjC,SAEAiC,KAAKzG,IACwB2F,GAAS7D,CAAAA,IAEpC2E,OAAOzG,OACT0G,KAAKN,GAAAA,OACMpG,KAETwG,KADAC,KAAK,CAACA,IAAIC,EAAAA,KAOZlC,KAAcgC,IACdA,KAAKxG;AAGL8F,gBAAAA,OAAO9F,MAvrCQ2B,KAyrCJkE,IAzrCOyB,KAyrCHxB,IACjBF,KADAC,KAxrCS,CAAA,EAAG7E,OAAOwH,MAAM,CAAC7G,EAAAA,GAAI2F,EAAAA,EAAI5H,KAAK,EAAA,MA2rCvC8E,KAAcoB,IACdA,KAAK5F;cAAAA,MAGPwE,MAAcoB,IACdA,KAAK5F;AAKP,qBAFAgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;YAAAA;AAsqBT,qBAASmC,KAAAA;AACP,kBAAInC,IAAIC,IAAIC,IAAIU,IAEZxT,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,kBAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAWhB,kBARAgL,KAAKpB,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBqB,KAx4DU,KAy4DVrB,SAEAqB,KAAK7F,IACwB2F,GAAStE,CAAAA,IAEpCwE,OAAO7F,IAAY;AAYrB,oBAXA8F,KAAK,CAAA,GACDrC,EAAQ4C,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BgC,KAAK3G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAgC,KAAKxG,IACwB2F,GAASjC,CAAAA,IAEpC8C,OAAOxG,OACTwG,KAAKwB,GAAAA,IAEHxB,OAAOxG,GACT,QAAOwG,OAAOxG,KACZ8F,CAAAA,GAAGhL,KAAK0L,EAAAA,GACJ/C,EAAQ4C,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BgC,KAAK3G,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAgC,KAAKxG,IACwB2F,GAASjC,CAAAA,IAEpC8C,OAAOxG,OACTwG,KAAKwB,GAAAA;oBAITlC,CAAAA,KAAK9F;AAEH8F,gBAAAA,OAAO9F,MAC6B,OAAlCH,GAAMV,WAAWqF,EAAAA,KACnBgC,KA36DM,KA46DNhC,SAEAgC,KAAKxG,IACwB2F,GAASrE,CAAAA,IAEpCkF,OAAOxG,KAGT4F,KADAC,KAv3D4B,MAu3DfC,GAv3DwBpG,KAAK,EAAA,IAAM,OA03DhD8E,KAAcoB,IACdA,KAAK5F,QAGPwE,KAAcoB,IACdA,KAAK5F;cAAAA,MAGPwE,MAAcoB,IACdA,KAAK5F;AAKP,qBAFAgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;YAAAA;AAGT,qBAASoC,KAAAA;AACP,kBAAIpC,IAAIC,IAAIC,IAER9S,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,qBAAI+S,MACFvB,KAAcuB,GAAOE,SAEdF,GAAOnL,WAGhBgL,KAAKpB,IACiC,OAAlC3E,GAAMV,WAAWqF,EAAAA,KACnBqB,KA97DU,MA+7DVrB,SAEAqB,KAAK7F,IACwB2F,GAASrD,CAAAA,IAEpCuD,OAAO7F,MACLH,GAAMtL,SAASiQ,MACjBsB,KAAKjG,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAsB,KAAK9F,IACwB2F,GAASpD,CAAAA,IAEpCuD,OAAO9F,KAGT4F,KADAC,KAx6D6B,OAw6DhBC,MAGbtB,KAAcoB,IACdA,KAAK5F,QAGPwE,KAAcoB,IACdA,KAAK5F,KAGPgG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;YAAAA;AAGT,qBAASqC,KAAAA;AACP,kBAAIrC,IAAIC,IAAIC,IAER9S,KAAuB,KAAdwR,KAAmB,IAC5BuB,KAASC,GAAiBhT,EAAAA;AAE9B,kBAAI+S,GAGF,QAFAvB,KAAcuB,GAAOE,SAEdF,GAAOnL;AAYhB,kBARAiL,KAAK,CAAA,GACDlC,EAAQ0C,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BsB,KAAKjG,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAsB,KAAK9F,IACwB2F,GAAS/B,CAAAA,IAEpCkC,OAAO9F,GACT,QAAO8F,OAAO9F,KACZ6F,CAAAA,GAAG/K,KAAKgL,EAAAA,GACJnC,EAAQ0C,KAAKxG,GAAMyG,OAAO9B,EAAAA,CAAAA,KAC5BsB,KAAKjG,GAAMyG,OAAO9B,EAAAA,GAClBA,SAEAsB,KAAK9F,IACwB2F,GAAS/B,CAAAA;kBAI1CiC,CAAAA,KAAK7F;AAUP,qBARI6F,OAAO7F,OAET6F,KAAaA,GA19DsBnG,KAAK,EAAA,IA49D1CkG,KAAKC,IAELG,GAAiBhT,EAAAA,IAAO,EAAEiT,SAASzB,IAAa5J,QAAQgL,GAAAA,GAEjDA;YAAAA;AA+mBP,qBAASwD,GAAIQ,IAAAA;AAAK,qBAAO,EAAE9V,MAAM,aAAa+V,OAAO,EAAE/V,MAAM,WAAWmO,OAAO2H,GAAAA,EAAAA;YAAAA;AAC/E,qBAASN,GAAQM,IAAAA;AAAK,qBAAO,EAAE9V,MAAM,kBAAkB+V,OAAO,EAAE/V,MAAM,WAAWmO,OAAO2H,GAAAA,EAAAA;YAAAA;AAkB1F,iBAFA7J,KAAaK,GAAAA,OAEMJ,MAAcwE,OAAgB3E,GAAMtL,OACrD,QAAOwL;AAMP,kBAJIA,OAAeC,MAAcwE,KAAc3E,GAAMtL,UACnDoR,GA7gFK,EAAE7R,MAAM,MAAA,CAAA,GAyEiB4J,KAw8E9BmH,IAx8EwClH,KAy8ExCiH,KAAiB/E,GAAMtL,SAASsL,GAAMyG,OAAO1B,EAAAA,IAAkB,MAz8EhBhH,KA08E/CgH,KAAiB/E,GAAMtL,SACnB8Q,GAAoBT,IAAgBA,KAAiB,CAAA,IACrDS,GAAoBT,IAAgBA,EAAAA,GA38EnC,IAAIpH,GACTA,GAAgBU,aAAaR,IAAUC,EAAAA,GACvCD,IACAC,IACAC,EAAAA;UAAAA,EAAAA;QAAAA,GAnaakM;MAAAA,EAAAA;ACyBrB,eAASC,EAAQhX,IAAKiJ,IAAAA;AAClB,iBAAS1H,KAAI,GAAGA,KAAI0H,GAAKzH,QAAAA,EAAUD,IAAG;AAClC,cAAW,QAAPvB,GAAe,QAAOA;AAC1BA,UAAAA,KAAMA,GAAIiJ,GAAK1H,EAAAA,CAAAA;QAAAA;AAEnB,eAAOvB;MAAAA;AA6CX,UAAMiX,IAAmC,cAAA,OAAZC,UAAyB,oBAAIA,YAAU;AASpE,eAASC,EAAWC,IAAAA;AAChB,YAAgB,QAAZA,GACA,QAAO,WAAA;AAAA,iBAAA;QAAM;AAGjB,YAAqB,QAAjBH,GAAuB;AACvB,cAAII,KAAUJ,EAAcK,IAAIF,EAAAA;AAChC,iBAAe,QAAXC,OAGJA,KAAUE,EAAgBH,EAAAA,GAC1BH,EAAcO,IAAIJ,IAAUC,EAAAA,IAHjBA;QAAAA;AAOf,eAAOE,EAAgBH,EAAAA;MAAAA;AAQ3B,eAASG,EAAgBH,IAAAA;AACrB,gBAAOA,GAASrW,MAAAA;UACZ,KAAK;AACD,mBAAO,WAAA;AAAA,qBAAA;YAAM;UAEjB,KAAK;AACD,gBAAMmO,KAAQkI,GAASlI,MAAMuI,YAAAA;AAC7B,mBAAO,SAAChX,IAAMiX,IAAU3K,IAAAA;AACpB,kBAAM4K,KAAe5K,MAAWA,GAAQ4K,eAAgB;AACxD,qBAAOzI,OAAUzO,GAAKkX,EAAAA,EAAaF,YAAAA;YAAAA;UAI3C,KAAK;AACD,mBAAO,SAAChX,IAAMiX,IAAAA;AACV,qBAA2B,MAApBA,GAASlW;YAAAA;UAGxB,KAAK;AACD,gBAAMd,KAAO0W,GAAStM,KAAK8M,MAAM,GAAA;AACjC,mBAAO,SAACnX,IAAMiX,IAAAA;AAEV,sBAvFhB,SAASG,GAAOpX,IAAMqX,IAAUpX,IAAMqX,IAAAA;AAElC,yBADI3V,KAAU0V,IACLvW,KAAIwW,IAAexW,KAAIb,GAAKc,QAAAA,EAAUD,IAAG;AAC9C,sBAAe,QAAXa,GACA,QAAA;AAEJ,sBAAM4V,KAAQ5V,GAAQ1B,GAAKa,EAAAA,CAAAA;AAC3B,sBAAIgG,MAAMC,QAAQwQ,EAAAA,GAAQ;AACtB,6BAASC,KAAI,GAAGA,KAAID,GAAMxW,QAAAA,EAAUyW,GAChC,KAAIJ,GAAOpX,IAAMuX,GAAMC,EAAAA,GAAIvX,IAAMa,KAAI,CAAA,EACjC,QAAA;AAGR,2BAAA;kBAAO;AAEXa,kBAAAA,KAAU4V;gBAAAA;AAEd,uBAAOvX,OAAS2B;cAAAA,GAsEU3B,IADGiX,GAAShX,GAAKc,SAAS,CAAA,GACVd,IAAM,CAAA;YAAA;UAI5C,KAAK;AACD,gBAAMwX,KAAWd,GAASnG,UAAU/C,IAAIiJ,CAAAA;AACxC,mBAAO,SAAC1W,IAAMiX,IAAU3K,IAAAA;AACpB,uBAASxL,KAAI,GAAGA,KAAI2W,GAAS1W,QAAAA,EAAUD,GACnC,KAAI2W,GAAS3W,EAAAA,EAAGd,IAAMiX,IAAU3K,EAAAA,EAAY,QAAA;AAEhD,qBAAA;YAAO;UAIf,KAAK;AACD,gBAAMmL,KAAWd,GAASnG,UAAU/C,IAAIiJ,CAAAA;AACxC,mBAAO,SAAC1W,IAAMiX,IAAU3K,IAAAA;AACpB,uBAASxL,KAAI,GAAGA,KAAI2W,GAAS1W,QAAAA,EAAUD,GACnC,KAAA,CAAK2W,GAAS3W,EAAAA,EAAGd,IAAMiX,IAAU3K,EAAAA,EAAY,QAAA;AAEjD,qBAAA;YAAO;UAIf,KAAK;AACD,gBAAMmL,KAAWd,GAASnG,UAAU/C,IAAIiJ,CAAAA;AACxC,mBAAO,SAAC1W,IAAMiX,IAAU3K,IAAAA;AACpB,uBAASxL,KAAI,GAAGA,KAAI2W,GAAS1W,QAAAA,EAAUD,GACnC,KAAI2W,GAAS3W,EAAAA,EAAGd,IAAMiX,IAAU3K,EAAAA,EAAY,QAAA;AAEhD,qBAAA;YAAO;UAIf,KAAK;AACD,gBAAMmL,KAAWd,GAASnG,UAAU/C,IAAIiJ,CAAAA;AACxC,mBAAO,SAAC1W,IAAMiX,IAAU3K,IAAAA;AACpB,kBAAIlF,KAAAA,OAEE+G,KAAI,CAAA;AAkBV,qBAjBAuJ,EAAW1W,SAAShB,IAAM,EACtBiJ,OAAAA,SAAOjJ,IAAMH,IAAAA;AACK,wBAAVA,MAAkBsO,GAAEwJ,QAAQ9X,EAAAA;AAEhC,yBAASiB,KAAI,GAAGA,KAAI2W,GAAS1W,QAAAA,EAAUD,GACnC,KAAI2W,GAAS3W,EAAAA,EAAGd,IAAMmO,IAAG7B,EAAAA,EAGrB,QAFAlF,KAAAA,MAAS,KACTtH,KAAAA,MAAAA;cAAAA,GAKZqJ,OAAAA,WAAAA;AAAWgF,gBAAAA,GAAEyJ,MAAAA;cAAAA,GACbpP,MAAM8D,MAAWA,GAAQuL,aACzBvP,UAAUgE,MAAWA,GAAQhE,YAAY,YAAA,CAAA,GAGtClB;YAAAA;UAIf,KAAK;AACD,gBAAMmM,KAAOmD,EAAWC,GAASpD,IAAAA,GAC3BC,KAAQkD,EAAWC,GAASnD,KAAAA;AAClC,mBAAO,SAACxT,IAAMiX,IAAU3K,IAAAA;AACpB,qBAAA,CAAA,EAAI2K,GAASlW,SAAS,KAAKyS,GAAMxT,IAAMiX,IAAU3K,EAAAA,MACtCiH,GAAK0D,GAAS,CAAA,GAAIA,GAAShL,MAAM,CAAA,GAAIK,EAAAA;YAAAA;UAMxD,KAAK;AACD,gBAAMiH,KAAOmD,EAAWC,GAASpD,IAAAA,GAC3BC,KAAQkD,EAAWC,GAASnD,KAAAA;AAClC,mBAAO,SAACxT,IAAMiX,IAAU3K,IAAAA;AACpB,kBAAIkH,GAAMxT,IAAMiX,IAAU3K,EAAAA;AACtB,yBAASxL,KAAI,GAAGgX,KAAIb,GAASlW,QAAQD,KAAIgX,IAAAA,EAAKhX,GAC1C,KAAIyS,GAAK0D,GAASnW,EAAAA,GAAImW,GAAShL,MAAMnL,KAAI,CAAA,GAAIwL,EAAAA,EACzC,QAAA;;AAIZ,qBAAA;YAAO;UAIf,KAAK;AACD,gBAAMrM,KAAO0W,GAAStM,KAAK8M,MAAM,GAAA;AACjC,oBAAQR,GAASjI,UAAAA;cACb,KAAA;AACI,uBAAO,SAAC1O,IAAAA;AAAI,yBAA4B,QAAvBuW,EAAQvW,IAAMC,EAAAA;gBAAAA;cACnC,KAAK;AACD,wBAAQ0W,GAASlI,MAAMnO,MAAAA;kBACnB,KAAK;AACD,2BAAO,SAACN,IAAAA;AACJ,0BAAM2R,KAAI4E,EAAQvW,IAAMC,EAAAA;AACxB,6BAAoB,YAAA,OAAN0R,MAAkBgF,GAASlI,MAAMA,MAAMoE,KAAKlB,EAAAA;oBAAAA;kBAElE,KAAK;AACD,wBAAM/G,KAAAA,GAAO4C,OAAMmJ,GAASlI,MAAMA,KAAAA;AAClC,2BAAO,SAACzO,IAAAA;AAAI,6BAAK4K,OAAAA,GAAO4C,OAAQ+I,EAAQvW,IAAMC,EAAAA,CAAAA;oBAAAA;kBAElD,KAAK;AACD,2BAAO,SAACD,IAAAA;AAAI,6BAAK2W,GAASlI,MAAMA,UAAKsJ,EAAYxB,EAAQvW,IAAMC,EAAAA,CAAAA;oBAAAA;gBAAAA;AAEvE,sBAAM,IAAIiJ,MAAAA,gCAAKsE,OAAiCmJ,GAASlI,MAAMnO,IAAAA,CAAAA;cACnE,KAAK;AACD,wBAAQqW,GAASlI,MAAMnO,MAAAA;kBACnB,KAAK;AACD,2BAAO,SAACN,IAAAA;AAAI,6BAAA,CAAM2W,GAASlI,MAAMA,MAAMoE,KAAK0D,EAAQvW,IAAMC,EAAAA,CAAAA;oBAAAA;kBAC9D,KAAK;AACD,wBAAM2K,KAAAA,GAAO4C,OAAMmJ,GAASlI,MAAMA,KAAAA;AAClC,2BAAO,SAACzO,IAAAA;AAAI,6BAAK4K,OAAAA,GAAO4C,OAAQ+I,EAAQvW,IAAMC,EAAAA,CAAAA;oBAAAA;kBAElD,KAAK;AACD,2BAAO,SAACD,IAAAA;AAAI,6BAAK2W,GAASlI,MAAMA,UAAKsJ,EAAYxB,EAAQvW,IAAMC,EAAAA,CAAAA;oBAAAA;gBAAAA;AAEvE,sBAAM,IAAIiJ,MAAAA,gCAAKsE,OAAiCmJ,GAASlI,MAAMnO,IAAAA,CAAAA;cACnE,KAAK;AACD,uBAAO,SAACN,IAAAA;AAAI,yBAAKuW,EAAQvW,IAAMC,EAAAA,KAAS0W,GAASlI,MAAMA;gBAAAA;cAC3D,KAAK;AACD,uBAAO,SAACzO,IAAAA;AAAI,yBAAKuW,EAAQvW,IAAMC,EAAAA,IAAQ0W,GAASlI,MAAMA;gBAAAA;cAC1D,KAAK;AACD,uBAAO,SAACzO,IAAAA;AAAI,yBAAKuW,EAAQvW,IAAMC,EAAAA,IAAQ0W,GAASlI,MAAMA;gBAAAA;cAC1D,KAAK;AACD,uBAAO,SAACzO,IAAAA;AAAI,yBAAKuW,EAAQvW,IAAMC,EAAAA,KAAS0W,GAASlI,MAAMA;gBAAAA;YAAAA;AAE/D,kBAAM,IAAIvF,MAAAA,qBAAKsE,OAAsBmJ,GAASjI,QAAAA,CAAAA;UAGlD,KAAK;AACD,gBAAM6E,IAAOmD,EAAWC,GAASpD,IAAAA,GAC3BC,IAAQkD,EAAWC,GAASnD,KAAAA;AAClC,mBAAO,SAACxT,IAAMiX,IAAU3K,IAAAA;AAAO,qBAC3BkH,EAAMxT,IAAMiX,IAAU3K,EAAAA,KAClB0L,EAAQhY,IAAMuT,GAAM0D,IA1QtB,aA0Q2C3K,EAAAA,KACzCqK,GAASpD,KAAKM,WACdN,EAAKvT,IAAMiX,IAAU3K,EAAAA,KACrB0L,EAAQhY,IAAMwT,GAAOyD,IA5QtB,cA4Q4C3K,EAAAA;YAAAA;UAGvD,KAAK;AACD,gBAAMiH,IAAOmD,EAAWC,GAASpD,IAAAA,GAC3BC,IAAQkD,EAAWC,GAASnD,KAAAA;AAClC,mBAAO,SAACxT,IAAMiX,IAAU3K,IAAAA;AAAO,qBAC3BkH,EAAMxT,IAAMiX,IAAU3K,EAAAA,KAClB2L,EAASjY,IAAMuT,GAAM0D,IArRvB,aAqR4C3K,EAAAA,KAC1CqK,GAASnD,MAAMK,WACfN,EAAKvT,IAAMiX,IAAU3K,EAAAA,KACrB2L,EAASjY,IAAMwT,GAAOyD,IAvRvB,cAuR6C3K,EAAAA;YAAAA;UAGxD,KAAK;AACD,gBAAMsJ,IAAMe,GAASN,MAAM5H,OACrB+E,IAAQkD,EAAWC,GAASnD,KAAAA;AAClC,mBAAO,SAACxT,IAAMiX,IAAU3K,IAAAA;AAAO,qBAC3BkH,EAAMxT,IAAMiX,IAAU3K,EAAAA,KAClB4L,EAASlY,IAAMiX,IAAUrB,GAAKtJ,EAAAA;YAAAA;UAG1C,KAAK;AACD,gBAAMsJ,IAAAA,CAAOe,GAASN,MAAM5H,OACtB+E,IAAQkD,EAAWC,GAASnD,KAAAA;AAClC,mBAAO,SAACxT,IAAMiX,IAAU3K,IAAAA;AAAO,qBAC3BkH,EAAMxT,IAAMiX,IAAU3K,EAAAA,KAClB4L,EAASlY,IAAMiX,IAAUrB,GAAKtJ,EAAAA;YAAAA;UAG1C,KAAK;AAED,gBAAMjC,IAAOsM,GAAStM,KAAK2M,YAAAA;AAE3B,mBAAO,SAAChX,IAAMiX,IAAU3K,IAAAA;AAEpB,kBAAIA,MAAWA,GAAQ6L,WACnB,QAAO7L,GAAQ6L,WAAWxB,GAAStM,MAAMrK,IAAMiX,EAAAA;AAGnD,kBAAI3K,MAAWA,GAAQ4K,YAAa,QAAA;AAEpC,sBAAO7M,GAAAA;gBACH,KAAK;AACD,sBAA2B,gBAAxBrK,GAAKM,KAAK2L,MAAAA,EAAO,EAAoB,QAAA;gBAE5C,KAAK;AACD,yBAAgC,kBAAzBjM,GAAKM,KAAK2L,MAAAA,GAAO;gBAC5B,KAAK;AACD,sBAA2B,cAAxBjM,GAAKM,KAAK2L,MAAAA,EAAO,EAAkB,QAAA;gBAE1C,KAAK;AACD,yBAAgC,iBAAzBjM,GAAKM,KAAK2L,MAAAA,GAAO,KACI,cAAxBjM,GAAKM,KAAK2L,MAAAA,EAAO,KAEC,iBAAdjM,GAAKM,SACgB,MAApB2W,GAASlW,UAAqC,mBAArBkW,GAAS,CAAA,EAAG3W,SAE5B,mBAAdN,GAAKM;gBACb,KAAK;AACD,yBAAqB,0BAAdN,GAAKM,QACM,yBAAdN,GAAKM,QACS,8BAAdN,GAAKM;cAAAA;AAEjB,oBAAM,IAAI4I,MAAAA,uBAAKsE,OAAwBmJ,GAAStM,IAAAA,CAAAA;YAAAA;QAAAA;AAK5D,cAAM,IAAInB,MAAAA,0BAAKsE,OAA2BmJ,GAASrW,IAAAA,CAAAA;MAAAA;AAkDvD,eAAS8X,EAAepY,IAAMsM,IAAAA;AAC1B,YAAM4K,KAAe5K,MAAWA,GAAQ4K,eAAgB,QAElD1W,KAAWR,GAAKkX,EAAAA;AACtB,eAAI5K,MAAWA,GAAQuL,eAAevL,GAAQuL,YAAYrX,EAAAA,IAC/C8L,GAAQuL,YAAYrX,EAAAA,IAE3BkX,EAAWxY,YAAYsB,EAAAA,IAChBkX,EAAWxY,YAAYsB,EAAAA,IAE9B8L,MAAuC,cAAA,OAArBA,GAAQhE,WACnBgE,GAAQhE,SAAStI,EAAAA,IAGrBuI,OAAOC,KAAKxI,EAAAA,EAAMqY,QAAO,SAAU7Y,IAAAA;AACtC,iBAAOA,OAAQ0X;QAAAA,EAAAA;MAAAA;AAWvB,eAAS7W,EAAOL,IAAMsM,IAAAA;AAClB,YAAM4K,KAAe5K,MAAWA,GAAQ4K,eAAgB;AACxD,eAAgB,SAATlX,MAAiC,aAAhB+X,EAAO/X,EAAAA,KAAkD,YAAA,OAAtBA,GAAKkX,EAAAA;MAAAA;AAapE,eAASc,EAAQhY,IAAM4W,IAASK,IAAUqB,IAAMhM,IAAAA;AAC5C,YAAOzM,KAAP0Y,EAAiBtB,IAAAA,CAAAA,EAAAA,CAAAA;AACjB,YAAA,CAAKpX,GAAU,QAAA;AAEf,iBADM2I,KAAO4P,EAAevY,IAAQyM,EAAAA,GAC3BxL,KAAI,GAAGA,KAAI0H,GAAKzH,QAAAA,EAAUD,IAAG;AAClC,cAAM0X,KAAW3Y,GAAO2I,GAAK1H,EAAAA,CAAAA;AAC7B,cAAIgG,MAAMC,QAAQyR,EAAAA,GAAW;AACzB,gBAAMC,KAAaD,GAASE,QAAQ1Y,EAAAA;AACpC,gBAAIyY,KAAa,EAAK;AACtB,gBAAIE,KAAAA,QAAYC,KAAAA;AAtbV,4BAubFN,MACAK,KAAa,GACbC,KAAaH,OAEbE,KAAaF,KAAa,GAC1BG,KAAaJ,GAASzX;AAE1B,qBAASyW,KAAImB,IAAYnB,KAAIoB,IAAAA,EAAcpB,GACvC,KAAInX,EAAOmY,GAAShB,EAAAA,GAAIlL,EAAAA,KAAYsK,GAAQ4B,GAAShB,EAAAA,GAAIP,IAAU3K,EAAAA,EAC/D,QAAA;UAAO;QAAA;AAKvB,eAAA;MAAO;AAaX,eAAS2L,EAASjY,IAAM4W,IAASK,IAAUqB,IAAMhM,IAAAA;AAC7C,YAAOzM,KAAP0Y,EAAiBtB,IAAAA,CAAAA,EAAAA,CAAAA;AACjB,YAAA,CAAKpX,GAAU,QAAA;AAEf,iBADM2I,KAAO4P,EAAevY,IAAQyM,EAAAA,GAC3BxL,KAAI,GAAGA,KAAI0H,GAAKzH,QAAAA,EAAUD,IAAG;AAClC,cAAM0X,KAAW3Y,GAAO2I,GAAK1H,EAAAA,CAAAA;AAC7B,cAAIgG,MAAMC,QAAQyR,EAAAA,GAAW;AACzB,gBAAMK,KAAML,GAASE,QAAQ1Y,EAAAA;AAC7B,gBAAI6Y,KAAM,EAAK;AACf,gBA3dM,gBA2dFP,MAAsBO,KAAM,KAAKxY,EAAOmY,GAASK,KAAM,CAAA,GAAIvM,EAAAA,KAAYsK,GAAQ4B,GAASK,KAAM,CAAA,GAAI5B,IAAU3K,EAAAA,EAC5G,QAAA;AAEJ,gBA7dO,iBA6dHgM,MAAuBO,KAAML,GAASzX,SAAS,KAAKV,EAAOmY,GAASK,KAAM,CAAA,GAAIvM,EAAAA,KAAasK,GAAQ4B,GAASK,KAAM,CAAA,GAAI5B,IAAU3K,EAAAA,EAChI,QAAA;UAAO;QAAA;AAInB,eAAA;MAAO;AAaX,eAAS4L,EAASlY,IAAMiX,IAAUrB,IAAKtJ,IAAAA;AACnC,YAAY,MAARsJ,GAAa,QAAA;AACjB,YAAO/V,KAAP0Y,EAAiBtB,IAAAA,CAAAA,EAAAA,CAAAA;AACjB,YAAA,CAAKpX,GAAU,QAAA;AAEf,iBADM2I,KAAO4P,EAAevY,IAAQyM,EAAAA,GAC3BxL,KAAI,GAAGA,KAAI0H,GAAKzH,QAAAA,EAAUD,IAAG;AAClC,cAAM0X,KAAW3Y,GAAO2I,GAAK1H,EAAAA,CAAAA;AAC7B,cAAIgG,MAAMC,QAAQyR,EAAAA,GAAU;AACxB,gBAAMK,KAAMjD,KAAM,IAAI4C,GAASzX,SAAS6U,KAAMA,KAAM;AACpD,gBAAIiD,MAAO,KAAKA,KAAML,GAASzX,UAAUyX,GAASK,EAAAA,MAAS7Y,GACvD,QAAA;UAAO;QAAA;AAInB,eAAA;MAAO;AAuCX,eAASgB,EAAS8X,IAAKnC,IAAUzV,IAASoL,IAAAA;AACtC,YAAKqK,IAAL;AACA,cAAMM,KAAW,CAAA,GACXL,KAAUF,EAAWC,EAAAA,GACrBoC,MAjCV,SAASC,GAASrC,IAAUU,IAAAA;AACxB,gBAAgB,QAAZV,MAAuC,YAAnBoB,EAAOpB,EAAAA,EAAwB,QAAO,CAAA;AAC9C,oBAAZU,OAAoBA,KAAWV;AAGnC,qBAFMsC,KAAUtC,GAAS9C,UAAU,CAACwD,EAAAA,IAAY,CAAA,GAC1C7O,KAAOD,OAAOC,KAAKmO,EAAAA,GAChB7V,KAAI,GAAGA,KAAI0H,GAAKzH,QAAAA,EAAUD,IAAG;AAClC,kBAAM6Q,KAAInJ,GAAK1H,EAAAA,GACToY,KAAMvC,GAAShF,EAAAA;AACrBsH,cAAAA,GAAQ3R,KAAI0N,MAAZiE,IAAOE,EAASH,GAASE,IAAW,WAANvH,KAAeuH,KAAM7B,EAAAA,CAAAA,CAAAA;YAAAA;AAEvD,mBAAO4B;UAAAA,GAuBsBtC,EAAAA,EAAUlJ,IAAIiJ,CAAAA;AAC3CgB,YAAW1W,SAAS8X,IAAK,EACrB7P,OAAAA,SAAOjJ,IAAMH,IAAAA;AAET,gBADc,QAAVA,MAAkBoX,GAASU,QAAQ9X,EAAAA,GACnC+W,GAAQ5W,IAAMiX,IAAU3K,EAAAA,EACxB,KAAIyM,GAAYhY,OACZ,UAASD,KAAI,GAAGgX,KAAIiB,GAAYhY,QAAQD,KAAIgX,IAAAA,EAAKhX,IAAG;AAC5CiY,cAAAA,GAAYjY,EAAAA,EAAGd,IAAMiX,IAAU3K,EAAAA,KAC/BpL,GAAQlB,IAAMH,IAAQoX,EAAAA;AAE1B,uBAASO,KAAI,GAAG4B,KAAInC,GAASlW,QAAQyW,KAAI4B,IAAAA,EAAK5B,IAAG;AAC7C,oBAAM6B,KAAqBpC,GAAShL,MAAMuL,KAAI,CAAA;AAC1CuB,gBAAAA,GAAYjY,EAAAA,EAAGmW,GAASO,EAAAA,GAAI6B,IAAoB/M,EAAAA,KAChDpL,GAAQ+V,GAASO,EAAAA,GAAI3X,IAAQwZ,EAAAA;cAAAA;YAAAA;gBAKzCnY,CAAAA,GAAQlB,IAAMH,IAAQoX,EAAAA;UAAAA,GAIlC9N,OAAAA,WAAAA;AAAW8N,YAAAA,GAASW,MAAAA;UAAAA,GACpBpP,MAAM8D,MAAWA,GAAQuL,aACzBvP,UAAUgE,MAAWA,GAAQhE,YAAY,YAAA,CAAA;QAAA;MAAA;AAajD,eAAS8G,EAAM0J,IAAKnC,IAAUrK,IAAAA;AAC1B,YAAM2M,KAAU,CAAA;AAIhB,eAHAjY,EAAS8X,IAAKnC,KAAU,SAAU3W,IAAAA;AAC9BiZ,UAAAA,GAAQ3R,KAAKtH,EAAAA;QAAAA,IACdsM,EAAAA,GACI2M;MAAAA;AAQX,eAAS7M,EAAMuK,IAAAA;AACX,eAAO2C,EAAOlN,MAAMuK,EAAAA;MAAAA;AAUxB,eAAS4C,EAAMT,IAAKnC,IAAUrK,IAAAA;AAC1B,eAAO8C,EAAM0J,IAAK1M,EAAMuK,EAAAA,GAAWrK,EAAAA;MAAAA;AAAAA,aAGvCiN,EAAMnN,QAAQA,GACdmN,EAAMnK,QAAQA,GACdmK,EAAMvY,WAAWA,GACjBuY,EAAMC,UAvPN,SAAiBxZ,IAAM2W,IAAUM,IAAU3K,IAAAA;AACvC,eAAA,CAAKqK,MAAAA,CAAAA,CACA3W,OACAiX,OAAYA,KAAW,CAAA,IAErBP,EAAWC,EAAAA,EAAU3W,IAAMiX,IAAU3K,EAAAA;MAAAA,GAmPhDiN,EAAMA,QAAQA,GAAAA;IAAAA,EAAAA;;;;;ACtnBd;AAAA,8CAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,UAAU;AAkBhB,QAAM,wBAAN,MAA4B;AAAA;AAAA;AAAA;AAAA;AAAA,MAK3B;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,YACC,QACA,QACAC,OACA,WACA,gBACA,iBACC;AACD,aAAK,SAAS;AACd,aAAK,SAAS;AACd,aAAK,OAAOA;AACZ,aAAK,YAAY;AACjB,aAAK,iBAAiB;AACtB,aAAK,kBAAkB;AAAA,MACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,QAAQ,eAAe;AACtB,eACC,KAAK,iBAAiB,cAAc,kBACpC,KAAK,kBAAkB,cAAc,oBACpC,KAAK,UAAU,cAAc,SAAS,KAAK;AAAA,MAE9C;AAAA,IACD;AAMA,QAAM,gBAAgB,oBAAI,IAAI;AAO9B,aAAS,SAAS,QAAQ;AACzB,aAAO,CAAC,GAAG,IAAI,IAAI,OAAO,KAAK,CAAC,CAAC;AAAA,IAClC;AAOA,aAAS,gBAAgB,QAAQ;AAChC,UAAI,OAAO,WAAW,GAAG;AACxB,eAAO,CAAC;AAAA,MACT;AAEA,UAAI,SAAS,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC;AAEnC,iBAAW,SAAS,OAAO,MAAM,CAAC,GAAG;AACpC,iBAAS,OAAO,OAAO,OAAK,MAAM,SAAS,CAAC,CAAC;AAAA,MAC9C;AACA,aAAO;AAAA,IACR;AAOA,aAAS,sBAAsB,gBAAgB;AAC9C,UAAI,iBAAiB;AACrB,UAAI,kBAAkB;AAOtB,eAAS,gBAAgB,UAAU;AAClC,gBAAQ,SAAS,MAAM;AAAA,UACtB,KAAK;AACJ;AACA,mBAAO,CAAC,SAAS,KAAK;AAAA,UAEvB,KAAK;AACJ,qBAAS,UAAU,IAAI,eAAe;AACtC,mBAAO;AAAA,UAER,KAAK,WAAW;AACf,kBAAM,qBACL,SAAS,UAAU,IAAI,eAAe;AAEvC,gBAAI,mBAAmB,MAAM,OAAO,GAAG;AACtC,qBAAO,MAAM,GAAG,kBAAkB;AAAA,YACnC;AACA,mBAAO;AAAA,UACR;AAAA,UAEA,KAAK,YAAY;AAChB,kBAAM,qBAAqB,SAAS,UAClC,IAAI,eAAe,EACnB,OAAO,uBAAqB,iBAAiB;AAG/C,gBAAI,CAAC,mBAAmB,QAAQ;AAC/B,qBAAO;AAAA,YACR;AAMA,mBAAO,aAAa,GAAG,kBAAkB;AAAA,UAC1C;AAAA,UAEA,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACJ;AACA,mBAAO;AAAA,UAER,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACJ,4BAAgB,SAAS,IAAI;AAC7B,mBAAO,gBAAgB,SAAS,KAAK;AAAA,UAEtC,KAAK;AAEJ,gBAAI,SAAS,SAAS,YAAY;AACjC,qBAAO;AAAA,gBACN;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AACA,mBAAO;AAAA,UAER;AACC,mBAAO;AAAA,QACT;AAAA,MACD;AAEA,YAAM,YAAY,gBAAgB,cAAc;AAEhD,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAQA,aAAS,uBAAuB,UAAU;AACzC,UAAI,aAAa,KAAK;AACrB,eAAO;AAAA,UACN,MAAM;AAAA,UACN,OAAO;AAAA,QACR;AAAA,MACD;AAEA,UAAI,aAAa,KAAK,QAAQ,GAAG;AAChC,eAAO;AAAA,UACN,MAAM;AAAA,UACN,OAAO;AAAA,QACR;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,iBAAiB,UAAU;AACnC,UAAI;AACH,eAAO,QAAQ,MAAM,QAAQ;AAAA,MAC9B,SAAS,KAAK;AACb,YACC,IAAI,YACJ,IAAI,SAAS,SACb,OAAO,IAAI,SAAS,MAAM,WAAW,UACpC;AACD,gBAAM,IAAI;AAAA,YACT,6BAA6B,QAAQ,iBAAiB,IAAI,SAAS,MAAM,MAAM,KAAK,IAAI,OAAO;AAAA,YAC/F;AAAA,cACC,OAAO;AAAA,YACR;AAAA,UACD;AAAA,QACD;AACA,cAAM;AAAA,MACP;AAAA,IACD;AAOA,aAASC,OAAM,QAAQ;AACtB,UAAI,cAAc,IAAI,MAAM,GAAG;AAC9B,eAAO,cAAc,IAAI,MAAM;AAAA,MAChC;AAEA,YAAM,cAAc,OAAO,QAAQ,WAAW,EAAE;AAChD,YAAM,iBACL,uBAAuB,WAAW,KAAK,iBAAiB,WAAW;AACpE,YAAM,EAAE,WAAW,gBAAgB,gBAAgB,IAClD,sBAAsB,cAAc;AAErC,YAAM,SAAS,IAAI;AAAA,QAClB;AAAA,QACA,OAAO,SAAS,OAAO;AAAA,QACvB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAEA,oBAAc,IAAI,QAAQ,MAAM;AAChC,aAAO;AAAA,IACR;AAUA,aAAS,QAAQC,OAAMF,OAAM,UAAU,SAAS;AAC/C,aAAO,QAAQ,QAAQE,OAAMF,OAAM,UAAU,OAAO;AAAA,IACrD;AAMA,IAAAD,QAAO,UAAU;AAAA,MAChB,OAAAE;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA;AAAA;;;AC3UA;AAAA,4DAAAE,UAAAC,SAAA;AAAA;AAWA,QAAM,EAAE,OAAAC,QAAO,QAAQ,IAAI;AAC3B,QAAM,KAAK;AAiBX,QAAM,kBAAkB;AACxB,QAAM,iBAAiB;AAQvB,aAAS,mBAAmB,GAAG,GAAG;AACjC,aAAO,EAAE,QAAQ,CAAC;AAAA,IACnB;AAKA,QAAM,gBAAN,MAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMnB,YAAY,SAAS,gBAAgB;AAKpC,aAAK,UAAU;AAMf,aAAK,iBAAiB;AAOtB,aAAK,2BAA2B,oBAAI,IAAI;AAOxC,aAAK,0BAA0B,oBAAI,IAAI;AAOvC,aAAK,wBAAwB,CAAC;AAO9B,aAAK,uBAAuB,CAAC;AAE7B,gBAAQ,YAAY,iBAAe;AAClC,gBAAM,WAAWA,OAAM,WAAW;AAMlC,cAAI,SAAS,WAAW;AACvB,kBAAM,UAAU,SAAS,SACtB,KAAK,0BACL,KAAK;AAER,qBAAS,UAAU,QAAQ,cAAY;AACtC,kBAAI,CAAC,QAAQ,IAAI,QAAQ,GAAG;AAC3B,wBAAQ,IAAI,UAAU,CAAC,CAAC;AAAA,cACzB;AACA,sBAAQ,IAAI,QAAQ,EAAE,KAAK,QAAQ;AAAA,YACpC,CAAC;AACD;AAAA,UACD;AAQA,gBAAM,YAAY,SAAS,SACxB,KAAK,uBACL,KAAK;AAER,oBAAU,KAAK,QAAQ;AAAA,QACxB,CAAC;AAGD,aAAK,sBAAsB,KAAK,kBAAkB;AAClD,aAAK,qBAAqB,KAAK,kBAAkB;AACjD,aAAK,yBAAyB;AAAA,UAAQ,kBACrC,aAAa,KAAK,kBAAkB;AAAA,QACrC;AACA,aAAK,wBAAwB;AAAA,UAAQ,kBACpC,aAAa,KAAK,kBAAkB;AAAA,QACrC;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,QAAQC,OAAM,UAAU,UAAU;AACjC,eAAO,QAAQA,OAAM,SAAS,MAAM,UAAU,KAAK,cAAc;AAAA,MAClE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,mBAAmBA,OAAM,UAAU,QAAQ;AAC1C,cAAM,cAAc,KAAK,gBAAgB,eAAe;AACxD,cAAM,YAAY,CAAC;AAOnB,cAAM,uBACJ,SACE,KAAK,0BACL,KAAK,0BACN,IAAIA,MAAK,WAAW,CAAC,KAAK,CAAC;AAC9B,cAAM,mBAAmB,SACtB,KAAK,uBACL,KAAK;AAMR,YAAI,2BAA2B;AAC/B,YAAI,wBAAwB;AAE5B,eACC,2BAA2B,oBAAoB,UAC/C,wBAAwB,iBAAiB,QACxC;AAMD,gBAAM,2BACL,2BAA2B,oBAAoB;AAChD,gBAAM,0BACL,wBAAwB,iBAAiB;AAC1C,gBAAM,kBAAkB,iBAAiB,qBAAqB;AAC9D,gBAAM,mBACL,oBAAoB,wBAAwB;AAG7C,gBAAM,gCACL,2BACA,4BACA,gBAAgB,QAAQ,gBAAgB,IAAI;AAE7C,cAAI,CAAC,4BAA4B,+BAA+B;AAC/D;AAEA,gBAAI,KAAK,QAAQA,OAAM,UAAU,eAAe,GAAG;AAClD,wBAAU,KAAK,gBAAgB,MAAM;AAAA,YACtC;AAAA,UACD,OAAO;AACN;AAEA,gBAAI,KAAK,QAAQA,OAAM,UAAU,gBAAgB,GAAG;AACnD,wBAAU,KAAK,iBAAiB,MAAM;AAAA,YACvC;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA,IACD;AAUA,QAAM,sBAAN,MAA0B;AAAA;AAAA;AAAA;AAAA;AAAA,MAKzB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,OAAO,YAAY,oBAAI,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,MAM/B,YAAY,UAAU;AACrB,aAAK,YAAY;AAAA,MAClB;AAAA,MAEA,OAAO,YAAY,UAAU;AAC5B,YAAI,CAAC,KAAK,UAAU,IAAI,QAAQ,GAAG;AAClC,eAAK,UAAU,IAAI,UAAU,IAAI,KAAK,QAAQ,CAAC;AAAA,QAChD;AAEA,eAAO,KAAK,UAAU,IAAI,QAAQ;AAAA,MACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,aAAa,YAAY,SAAS,EAAE,MAAM,IAAI,CAAC,GAAG;AACjD,cAAM,UAAU,IAAI,cAAc,SAAS;AAAA,UAC1C,aAAa,WAAW,eAAe,KAAK,UAAU;AAAA,UACtD,UAAU,GAAG;AAAA,UACb,YAAY,KAAK,UAAU,yBAAyB,MAAM;AAAA,UAC1D,aAAa,KAAK,UAAU;AAAA,QAC7B,CAAC;AAED,cAAM,kBAAkB,CAAC;AAEzB,mBAAW,QAAQ,SAAS,WAAW,SAAS,GAAG;AAClD,kBAAQ,KAAK,MAAM;AAAA,YAClB,KAAK,iBAAiB;AACrB,kBAAI;AACH,oBAAI,KAAK,UAAU,GAAG;AACrB,0BACE;AAAA,oBACA,KAAK;AAAA,oBACL;AAAA,oBACA;AAAA,kBACD,EACC,QAAQ,cAAY;AACpB,4BAAQ;AAAA,sBACP;AAAA,sBACA,GAAI,KAAK,QAAQ,CAAC,KAAK,MAAM;AAAA,oBAC9B;AAAA,kBACD,CAAC;AACF,kCAAgB,QAAQ,KAAK,MAAM;AAAA,gBACpC,OAAO;AACN,kCAAgB,MAAM;AACtB,0BACE;AAAA,oBACA,KAAK;AAAA,oBACL;AAAA,oBACA;AAAA,kBACD,EACC,QAAQ,cAAY;AACpB,4BAAQ;AAAA,sBACP;AAAA,sBACA,GAAI,KAAK,QAAQ,CAAC,KAAK,MAAM;AAAA,oBAC9B;AAAA,kBACD,CAAC;AAAA,gBACH;AAAA,cACD,SAAS,KAAK;AACb,oBAAI,cAAc,KAAK;AACvB,sBAAM;AAAA,cACP;AACA;AAAA,YACD;AAAA,YAEA,KAAK,gBAAgB;AACpB,sBAAQ,SAAS,KAAK,QAAQ,GAAG,KAAK,IAAI;AAC1C;AAAA,YACD;AAAA,YAEA;AACC,oBAAM,IAAI;AAAA,gBACT,kCAAkC,KAAK,IAAI;AAAA,cAC5C;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,IAAAF,QAAO,UAAU,EAAE,oBAAoB;AAAA;AAAA;;;AC5UvC;AAAA,iDAAAG,UAAAC,SAAA;AAAA;AAiCA,aAAS,aAAaC,QAAOC,OAAM;AAClC,aAAO;AAAA,QACN,OAAO,CAACD,QAAOA,MAAK;AAAA,QACpB,MAAAC;AAAA,MACD;AAAA,IACD;AAQA,aAAS,eAAeA,OAAM;AAC7B,UAAI,OAAOA,UAAS,UAAU;AAC7B,cAAM,IAAI,UAAU,yBAAyB;AAAA,MAC9C;AAAA,IACD;AASA,QAAM,YAAN,MAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,YAAY,EAAE,WAAW,GAAG;AAC3B,aAAK,cAAc;AAAA,MACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,gBAAgB,aAAaA,OAAM;AAClC,uBAAeA,KAAI;AAEnB,cAAM,QAAQ,KAAK,YAAY,SAAS,WAAW;AAEnD,eAAO,KAAK,qBAAqB,OAAOA,KAAI;AAAA,MAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,qBAAqB,OAAOA,OAAM;AACjC,uBAAeA,KAAI;AAEnB,eAAO,aAAa,MAAM,CAAC,GAAGA,KAAI;AAAA,MACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,iBAAiB,aAAaA,OAAM;AACnC,uBAAeA,KAAI;AAEnB,cAAM,QAAQ,KAAK,YAAY,SAAS,WAAW;AAEnD,eAAO,KAAK,sBAAsB,OAAOA,KAAI;AAAA,MAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,sBAAsB,OAAOA,OAAM;AAClC,uBAAeA,KAAI;AAEnB,eAAO,aAAa,MAAM,CAAC,GAAGA,KAAI;AAAA,MACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,YAAY,aAAaA,OAAM;AAC9B,uBAAeA,KAAI;AAEnB,cAAM,QAAQ,KAAK,YAAY,SAAS,WAAW;AAEnD,eAAO,KAAK,iBAAiB,OAAOA,KAAI;AAAA,MACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,iBAAiB,OAAOA,OAAM;AAC7B,uBAAeA,KAAI;AAEnB,eAAO;AAAA,UACN;AAAA,UACA,MAAAA;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,OAAO,aAAa;AACnB,cAAM,QAAQ,KAAK,YAAY,SAAS,WAAW;AAEnD,eAAO,KAAK,YAAY,KAAK;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,YAAY,OAAO;AAClB,eAAO;AAAA,UACN;AAAA,UACA,MAAM;AAAA,QACP;AAAA,MACD;AAAA,IACD;AAEA,IAAAF,QAAO,UAAU,EAAE,UAAU;AAAA;AAAA;;;ACtM7B;AAAA,kDAAAG,UAAAC,SAAA;AAAA;AAeA,aAAS,wBAAwB;AAChC,aAAO;AAAA,IACR;AASA,aAAS,YAAYC,OAAM,MAAM;AAChC,UAAI,CAAC,MAAM;AACV,eAAOA;AAAA,MACR;AAEA,YAAM,UAAU,sBAAsB;AAGtC,aAAOA,MAAK,QAAQ,SAAS,CAAC,WAAW,uBAAuB;AAC/D,cAAM,OAAO,mBAAmB,KAAK;AAErC,YAAI,QAAQ,MAAM;AACjB,iBAAO,KAAK,IAAI;AAAA,QACjB;AAGA,eAAO;AAAA,MACR,CAAC;AAAA,IACF;AAEA,IAAAD,QAAO,UAAU;AAAA,MAChB;AAAA,MACA;AAAA,IACD;AAAA;AAAA;;;ACjDA;AAAA,kDAAAE,UAAAC,SAAA;AAAA;AAWA,QAAMC,UAAS;AACf,QAAM,EAAE,UAAU,IAAI;AACtB,QAAM,EAAE,YAAY,IAAI;AACxB,QAAM,mBAAmB;AAkCzB,QAAM,oBAAoB;AAAA,MACzB,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE;AAAA,MAC5B,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE;AAAA,IAC3B;AAeA,aAAS,0BACR,EAAE,MAAM,QAAQ,SAAS,UAAU,GACnC,UACC;AACD,YAAM,eAAe,SAAS,gBAAgB,IAAI,IAAI;AACtD,YAAM,aAAa,SAAS,cAAc,IAAI,IAAI;AAGlD,YAAM,eAAe,YAAY,SAAS,UAAU,UAAU;AAC9D,YAAM,iBACL,cAAc,SAAS,YAAY,YAAY;AAEhD,aAAO;AAAA,QACN,MAAM,OAAO;AAAA,QACb,QAAQ,SAAS;AAAA,QACjB,SAAS;AAAA,QACT,WAAW;AAAA,MACZ;AAAA,IACD;AAQA,aAAS,yBAAyB,QAAQ;AACzC,aAAO,OAAO,OAAO,iBAAiB,OAAO,MAAM,IAChD,SAAS,MAAM,kCAAkC,iBAAiB,MAAM,MAAM,EAAE,KAAK,IAAI,CAAC,KAC1F,wBAAwB,MAAM;AAAA,IAClC;AAUA,aAAS,qBAAqB,SAAS,UAAU,UAAU;AAC1D,YAAM;AAAA,QACL,SAAS;AAAA,QACT,MAAM;AAAA,QACN,UAAU,yBAAyB,QAAQ,MAAM;AAAA,MAClD,IAAI;AAEJ,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA,GAAG;AAAA,UACF;AAAA,YACC,MAAM,IAAI,MAAM;AAAA,YAChB,QAAQ,IAAI,MAAM;AAAA,YAClB,SAAS,IAAI,IAAI;AAAA,YACjB,WAAW,IAAI,IAAI;AAAA,UACpB;AAAA,UACA;AAAA,QACD;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAOA,aAAS,+BAA+B,MAAM;AAE7C,UAAI,KAAK,WAAW,GAAG;AAEtB,eAAO,OAAO,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,MACjC;AAGA,UAAI,OAAO,KAAK,CAAC,MAAM,UAAU;AAChC,eAAO;AAAA,UACN,MAAM,KAAK,CAAC;AAAA,UACZ,SAAS,KAAK,CAAC;AAAA,UACf,MAAM,KAAK,CAAC;AAAA,UACZ,KAAK,KAAK,CAAC;AAAA,QACZ;AAAA,MACD;AAGA,aAAO;AAAA,QACN,MAAM,KAAK,CAAC;AAAA,QACZ,KAAK,KAAK,CAAC;AAAA,QACX,SAAS,KAAK,CAAC;AAAA,QACf,MAAM,KAAK,CAAC;AAAA,QACZ,KAAK,KAAK,CAAC;AAAA,MACZ;AAAA,IACD;AAQA,aAAS,oBAAoB,YAAY;AACxC,UAAI,WAAW,MAAM;AACpB,QAAAA,QAAO,OAAO,WAAW,SAAS,UAAU,wBAAwB;AAAA,MACrE,OAAO;AACN,QAAAA;AAAA,UACC,WAAW;AAAA,UACX;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAQA,aAAS,mBAAmB,YAAY;AACvC,UAAI,WAAW,IAAI,OAAO;AACzB,eAAO,WAAW;AAAA,MACnB;AACA,aAAO,EAAE,OAAO,WAAW,KAAK,KAAK,KAAK;AAAA,IAC3C;AAOA,aAAS,SAAS,KAAK;AACtB,UAAI,CAAC,KAAK;AACT,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,QACN,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC;AAAA,QAClC,MAAM,IAAI;AAAA,MACX;AAAA,IACD;AAOA,aAAS,eAAe,KAAK;AAC5B,UAAI,KAAK;AACR,QAAAA;AAAA,UACC,IAAI,SACH,OAAO,IAAI,MAAM,CAAC,MAAM,YACxB,OAAO,IAAI,MAAM,CAAC,MAAM;AAAA,UACzB,0BAA0B,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AAAA,QACvD;AAAA,MACD;AAAA,IACD;AASA,aAAS,oBAAoB,GAAG,GAAG;AAClC,aAAO,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;AAAA,IACzD;AAQA,aAAS,WAAW,OAAO,YAAY;AACtC,iBAAW,OAAO,OAAO;AACxB,uBAAe,GAAG;AAAA,MACnB;AAEA,UAAI,MAAM,WAAW,GAAG;AACvB,eAAO;AAAA,MACR;AACA,UAAI,MAAM,WAAW,GAAG;AACvB,eAAO,SAAS,MAAM,CAAC,CAAC;AAAA,MACzB;AAEA,YAAM,KAAK,mBAAmB;AAE9B,YAAM,eAAe,WAAW;AAChC,YAAM,QAAQ,MAAM,CAAC,EAAE,MAAM,CAAC;AAC9B,YAAM,MAAM,MAAM,GAAG,EAAE,EAAE,MAAM,CAAC;AAChC,UAAIC,QAAO;AACX,UAAI,UAAU,OAAO;AAErB,iBAAW,OAAO,OAAO;AACxB,QAAAD;AAAA,UACC,IAAI,MAAM,CAAC,KAAK;AAAA,UAChB;AAAA,QACD;AAEA,YAAI,IAAI,MAAM,CAAC,KAAK,GAAG;AACtB,UAAAC,SAAQ,aAAa;AAAA,YACpB,KAAK,IAAI,GAAG,OAAO,OAAO;AAAA,YAC1B,IAAI,MAAM,CAAC;AAAA,UACZ;AAAA,QACD;AACA,QAAAA,SAAQ,IAAI;AACZ,kBAAU,IAAI,MAAM,CAAC;AAAA,MACtB;AACA,MAAAA,SAAQ,aAAa,MAAM,KAAK,IAAI,GAAG,OAAO,OAAO,GAAG,GAAG;AAE3D,aAAO,EAAE,OAAO,CAAC,OAAO,GAAG,GAAG,MAAAA,MAAK;AAAA,IACpC;AASA,aAAS,eAAe,YAAY,YAAY;AAC/C,UAAI,OAAO,WAAW,QAAQ,YAAY;AACzC,eAAO;AAAA,MACR;AAEA,YAAM,YAAY,IAAI,UAAU,EAAE,WAAW,CAAC;AAG9C,YAAM,MAAM,WAAW,IAAI,SAAS;AAGpC,UAAI,OAAO,OAAO,YAAY,KAAK;AAClC,eAAO,WAAW,MAAM,KAAK,GAAG,GAAG,UAAU;AAAA,MAC9C;AAEA,qBAAe,GAAG;AAClB,aAAO,SAAS,GAAG;AAAA,IACpB;AASA,aAAS,eAAe,YAAY,YAAY,UAAU;AACzD,UAAI,CAAC,WAAW,WAAW,CAAC,MAAM,QAAQ,WAAW,OAAO,GAAG;AAC9D,eAAO,CAAC;AAAA,MACT;AAEA,aACC,WAAW,QACT,IAAI,iBAAe;AACnB,cAAM,eACL,YAAY,QAAQ,SAAS,YAAY,SAAS;AAEnD,eAAO;AAAA,UACN,GAAG;AAAA,UACH,MAAM,YAAY,cAAc,YAAY,IAAI;AAAA,UAChD,KAAK,eAAe,aAAa,UAAU;AAAA,QAC5C;AAAA,MACD,CAAC,EAGA,OAAO,CAAC,EAAE,IAAI,MAAM,GAAG;AAAA,IAE3B;AAeA,aAAS,cAAc,SAAS;AAC/B,YAAM,EAAE,SAAS,IAAI;AAGrB,YAAM,eAAe,SAAS,gBAAgB,IAAI,IAAI;AACtD,YAAM,aAAa,SAAS,cAAc,IAAI,IAAI;AAElD,YAAM,UAAU;AAAA,QACf,QAAQ,QAAQ;AAAA,QAChB,UAAU,QAAQ;AAAA,QAClB,SAAS,QAAQ;AAAA,QACjB,MAAM,QAAQ,IAAI,MAAM,OAAO;AAAA,QAC/B,QAAQ,QAAQ,IAAI,MAAM,SAAS;AAAA,MACpC;AAMA,UAAI,QAAQ,WAAW;AACtB,gBAAQ,YAAY,QAAQ;AAAA,MAC7B;AAEA,UAAI,QAAQ,IAAI,KAAK;AACpB,gBAAQ,UAAU,QAAQ,IAAI,IAAI,OAAO;AACzC,gBAAQ,YAAY,QAAQ,IAAI,IAAI,SAAS;AAAA,MAC9C;AAEA,UAAI,QAAQ,KAAK;AAChB,gBAAQ,MAAM,QAAQ;AAAA,MACvB;AAEA,UAAI,QAAQ,eAAe,QAAQ,YAAY,SAAS,GAAG;AAC1D,gBAAQ,cAAc,QAAQ;AAAA,MAC/B;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,oBAAoB,SAAS,UAAU;AAC/C,UAAI,WAAW,MAAM,QAAQ,OAAO,GAAG;AACtC,gBAAQ,QAAQ,gBAAc;AAC7B,cAAI,WAAW,WAAW;AACzB,kBAAM,EAAE,UAAU,IAAI;AAEtB,gBAAI,CAAC,UAAU;AACd,oBAAM,IAAI;AAAA,gBACT,mEAAmE,SAAS;AAAA,cAC7E;AAAA,YACD;AAEA,gBAAI,CAAC,SAAS,SAAS,GAAG;AACzB,oBAAM,IAAI;AAAA,gBACT,mEAAmE,SAAS,oDAAoD,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAAA,cAClK;AAAA,YACD;AAEA,gBAAI,WAAW,MAAM;AACpB,oBAAM,IAAI;AAAA,gBACT;AAAA,cACD;AAAA,YACD;AAAA,UACD,WAAW,CAAC,WAAW,MAAM;AAC5B,kBAAM,IAAI;AAAA,cACT;AAAA,YACD;AAAA,UACD;AAEA,cAAI,OAAO,WAAW,QAAQ,YAAY;AACzC,kBAAM,IAAI;AAAA,cACT,8EAA8E,KAAK,UAAU,YAAY,MAAM,CAAC,CAAC;AAAA,YAClH;AAAA,UACD;AAAA,QACD,CAAC;AAAA,MACF;AAAA,IACD;AASA,aAAS,6BAA6B,YAAY,UAAU;AAC3D,UAAI,WAAW,WAAW;AACzB,YAAI,CAAC,UAAU;AACd,gBAAM,IAAI;AAAA,YACT;AAAA,UACD;AAAA,QACD;AACA,cAAM,KAAK,WAAW;AAEtB,YAAI,WAAW,SAAS;AACvB,gBAAM,IAAI;AAAA,YACT;AAAA,UACD;AAAA,QACD;AACA,YAAI,CAAC,YAAY,CAAC,OAAO,OAAO,UAAU,EAAE,GAAG;AAC9C,gBAAM,IAAI;AAAA,YACT,gDAAgD,EAAE,oDAAoD,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAAA,UACxI;AAAA,QACD;AACA,eAAO,SAAS,EAAE;AAAA,MACnB;AAEA,UAAI,WAAW,SAAS;AACvB,eAAO,WAAW;AAAA,MACnB;AAEA,YAAM,IAAI;AAAA,QACT;AAAA,MACD;AAAA,IACD;AAMA,QAAM,aAAN,MAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKhB,WAAW,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMZ;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,YAAY,EAAE,YAAY,YAAY,UAAU,eAAe,MAAM,GAAG;AACvE,aAAK,cAAc;AACnB,aAAK,cAAc;AACnB,aAAK,YAAY;AACjB,aAAK,gBAAgB;AAAA,MACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,eAAe,QAAQ,aAAa,MAAM;AACzC,cAAM,aAAa,4BAA4B,GAAG,IAAI;AACtD,cAAM,iBAAiB,KAAK,YAAY,MAAM;AAC9C,cAAM,WAAW,gBAAgB,MAAM;AAEvC,4BAAoB,UAAU;AAE9B,cAAM,kBAAkB;AAAA,UACvB;AAAA,UACA;AAAA,QACD;AAEA,4BAAoB,WAAW,SAAS,QAAQ;AAEhD,aAAK,SAAS;AAAA,UACb,cAAc;AAAA,YACb;AAAA,YACA;AAAA,YACA,SAAS,YAAY,iBAAiB,WAAW,IAAI;AAAA,YACrD,WAAW,WAAW;AAAA,YACtB,KAAK,WAAW,MACb,mBAAmB,UAAU,IAC7B,KAAK,YAAY,OAAO,WAAW,IAAI;AAAA,YAC1C,KAAK,KAAK,gBACP,OACA,eAAe,YAAY,KAAK,WAAW;AAAA,YAC9C,aAAa,KAAK,gBACf,CAAC,IACD,eAAe,YAAY,KAAK,aAAa,QAAQ;AAAA,YACxD,UAAU,KAAK;AAAA,UAChB,CAAC;AAAA,QACF;AAEA,eAAO,KAAK,SAAS,GAAG,EAAE;AAAA,MAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,SAAS,YAAY;AACpB,cAAM,UAAU,qBAAqB,YAAY,GAAG,KAAK,SAAS;AAClE,aAAK,SAAS,KAAK,OAAO;AAC1B,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,SAAS,YAAY;AACpB,cAAM,UAAU,qBAAqB,YAAY,GAAG,KAAK,SAAS;AAClE,gBAAQ,QAAQ;AAChB,aAAK,SAAS,KAAK,OAAO;AAC1B,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,WAAW,YAAY;AACtB,cAAM,UAAU,qBAAqB,YAAY,GAAG,KAAK,SAAS;AAClE,aAAK,SAAS,KAAK,OAAO;AAC1B,eAAO;AAAA,MACR;AAAA,IACD;AAEA,IAAAF,QAAO,UAAU;AAAA,MAChB;AAAA,MACA;AAAA,IACD;AAAA;AAAA;;;AC3lBA;AAAA,6CAAAG,UAAAC,SAAA;AAAA;AAYA,QAAMC,QAAO,QAAQ,WAAW;AAAhC,QACC,cAAc;AADf,QAEC,MAAM;AAFP,QAGC,MAAM;AAHP,QAIC,YAAY;AAJb,QAKC,EAAE,WAAW,IAAI;AALlB,QAMC,yBAAyB;AAN1B,QAOC,EAAE,oBAAoB,IAAI;AAP3B,QAQC,kBAAkB;AARnB,QASC,EAAE,kBAAkB,IAAI;AATzB,QAUC,SAAS;AACV,QAAM,EAAE,gBAAgB,IAAI;AAC5B,QAAM,EAAE,WAAW,QAAQ,IAAI;AAC/B,QAAM,EAAE,qBAAqB,IAAI;AACjC,QAAM;AAAA,MACL;AAAA,MACA;AAAA,IACD,IAAI;AACJ,QAAM,EAAE,gBAAgB,IAAI;AAC5B,QAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AACJ,QAAMC,SAAQ,cAAiB,eAAe;AAC9C,QAAM,qBAAqB;AAC3B,QAAM,uBAAuB;AAC7B,QAAM,gBAAgB,IAAI,oBAAoB;AAC9C,QAAM,EAAE,OAAAC,OAAM,IAAI;AAClB,QAAM,EAAE,cAAc,IAAI;AAC1B,QAAM,EAAE,YAAY,IAAI;AACxB,QAAM,EAAE,iBAAiB,IAAI;AAC7B,QAAM,EAAE,0BAA0B,IAAI;AACtC,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,EAAE,eAAe,IAAI;AAC3B,QAAM,EAAE,oBAAoB,IAAI;AAChC,QAAM,EAAE,YAAY,0BAA0B,IAAI;AA+FlD,aAAS,QAAQC,QAAO;AACvB,aAAO,MAAM,QAAQA,MAAK,IAAIA,SAAQ,CAACA,MAAK;AAAA,IAC7C;AAaA,aAAS,mCACR,QACA,KACA,QACA,QACA,aACA,mBACA,UACC;AACD,YAAM,oBAAoB,OAAO,QAAQ,MAAM;AAC/C,YAAM,iBAAiB,oBACpB,QAAQ,iBAAiB,IACzB,CAAC,KAAK;AACT,YAAM,mBAAmB,0BAA0B,eAAe,CAAC,CAAC;AACpE,YAAM,iBAAiB,0BAA0B,YAAY,CAAC,CAAC;AAC/D,YAAM,eAAe,qBAAqB;AAE1C,UAAI,CAAC,cAAc;AAClB;AAAA,MACD;AAEA,YAAM,oBAAoB,oBACvB,6BAA6B,gBAAgB,MAC7C;AACH,UAAI;AAEJ,UACE,eAAe,WAAW,KAAK,YAAY,WAAW,KACvD,qBAAqB,OACpB;AACD,kBAAU,0BAA0B,MAAM,KAAK,iBAAiB;AAAA,MACjE,WACC,CAAC;AAAA,QACA,YAAY,MAAM,CAAC;AAAA,QACnB,eAAe,MAAM,CAAC;AAAA,MACvB,GACC;AACD,kBACC,kBAAkB,WAAW,IAC1B,0BAA0B,MAAM,KAAK,iBAAiB,OACtD,0BAA0B,MAAM,KAAK,iBAAiB;AAAA,MAC3D;AAEA,UAAI,SAAS;AACZ,cAAM,kBAAkB,0BAA0B,QAAQ;AAC1D,cAAM,aAAa;AAAA,UAClB;AAAA,UACA;AAAA,QACD;AAEA,YAAI,oBAAoB,GAAG;AAC1B,iBAAO,WAAW,UAAU;AAAA,QAC7B,WAAW,oBAAoB,GAAG;AACjC,iBAAO,SAAS,UAAU;AAAA,QAC3B;AAAA,MACD;AAAA,IACD;AAgBA,aAAS,wBACR,EAAE,MAAM,OAAAA,QAAO,eAAe,MAAAC,MAAK,GACnC,YACA,UACA,YACA,QACC;AACD,YAAM,UAAU,OAAO,KAAK,cAAc,gBAAgBD,MAAK,CAAC;AAChE,YAAM,iBAAiB,QAAQ,SAAS,UAAU,CAAC,IAAI;AACvD,YAAM,aAAa,CAAC;AACpB,YAAM,kBAAkB,EAAE,MAAAC,OAAM,OAAAD,QAAO,QAAQ;AAE/C,iBAAW,UAAU,gBAAgB;AACpC,cAAM,MAAM,WAAW,OAAOC,KAAI;AAGlC,YAAI,WAAW,QAAQ,CAAC,CAAC,WAAW,MAAM,GAAG;AAC5C,cAAI,SAAS,qBAAqB;AACjC,kBAAM,EAAE,MAAM,OAAO,IAAI;AAAA,cACxB,IAAI;AAAA,cACJ;AAAA,YACD;AAEA,uBAAW,KAAK;AAAA,cACf;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACD,CAAC;AAAA,UACF,OAAO;AACN,kBAAM,EAAE,MAAM,OAAO,IAAI;AAAA,cACxB,IAAI;AAAA,cACJ;AAAA,YACD;AAEA,uBAAW,KAAK;AAAA,cACf;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD,OAAO;AACN,iBAAO,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,QAChC;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAWA,aAAS,kCACR,YACA,YACA,UACA,QACC;AACD,YAAM,oBAAoB,CAAC;AAE3B,UAAI,WAAW,sBAAsB;AACpC,cAAM,EAAE,YAAY,mBAAmB,UAAU,mBAAmB,IACnE,WAAW,qBAAqB;AAEjC,YAAI,MAAM,QAAQ,kBAAkB,GAAG;AACtC,6BAAmB,QAAQ,aAAW,OAAO,SAAS,OAAO,CAAC;AAAA,QAC/D;AAEA,0BAAkB,QAAQ,eAAa;AACtC,gBAAM,aAAa;AAAA,YAClB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAEA,4BAAkB,KAAK,GAAG,UAAU;AAAA,QACrC,CAAC;AAAA,MACF;AAEA,aAAO;AAAA,IACR;AAcA,aAAS,kBAAkB,UAAU;AACpC,YAAM,QAAQ,SAAS,MAAMJ,MAAK,GAAG;AACrC,YAAMK,SAAQ,MAAM,YAAY,QAAQ;AAExC,aAAOA,WAAU,KAAK,WAAW,MAAM,MAAMA,MAAK,EAAE,KAAKL,MAAK,GAAG;AAAA,IAClE;AASA,aAAS,uBAAuB,iBAAiB,QAAQ;AACxD,YAAM,gBAAgB,OAAO,iBAAiB;AAC9C,YAAM,sBAAsB,cAAc,mBAAmB;AAC7D,YAAM,qBAAqB,gBAAgB,sBAAsB;AACjE,YAAM,6BAA6B,OAAO,6BACvC,KAAK,OAAO,0BAA0B,MACtC;AAEH,UAAI,gCACH,gBAAgB;AAEjB,UAAI,OAAO,kCAAkC,WAAW;AACvD,wCAAgC,gCAC7B,UACA;AAAA,MACJ;AACA,UAAI,OAAO,kCAAkC,UAAU;AACtD,YAAI,OAAO,cAAc,kCAAkC,WAAW;AACrE,0CACC,cAAc,gCAAgC,SAAS;AAAA,QACzD,OAAO;AACN,0CACC,cAAc,kCAAkC,SAC7C,QACA;AAAA,YACA,cAAc;AAAA,UACf;AAAA,QACJ;AAAA,MACD;AAEA,YAAM,4BACL,cAAc,8BAA8B,SACzC,QACA;AAAA,QACA,cAAc;AAAA,MACf;AAEH,UAAI,aAAa,gBAAgB;AAEjC,UAAI,OAAO,eAAe,YAAY;AACrC,qBAAa,MAAM;AAAA,MACpB;AAEA,aAAO;AAAA,QACN,UAAU,kBAAkB,gBAAgB,YAAY,SAAS;AAAA,QACjE,mBAAmB,CAAC;AAAA,QACpB,kBACC,uBAAuB,CAAC,qBACrB,cAAc,0BAA0B,KACxC;AAAA,QACJ;AAAA,QACA;AAAA,QACA,cAAc,QAAQ,gBAAgB,YAAY;AAAA,QAClD,OAAO,gBAAgB;AAAA,QACvB;AAAA,MACD;AAAA,IACD;AASA,aAAS,UAAU,MAAM,UAAU,OAAO;AACzC,YAAM,EAAE,MAAM,IAAI,IAAI;AAEtB,UAAI,CAAC,MAAM,OAAO;AACjB,cAAM,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;AAAA,MAC9B;AAEA,YAAM,YAAY,MAAM;AAExB,UAAI,YAAY,MAAM,MAAM,OAAO,SAAS,GAAG;AAC9C,cAAM,MAAM,OAAO,KAAK,CAAC,CAAC;AAAA,MAC3B;AAEA,UAAI,KAAK;AACR,cAAM,MAAM,OAAO,SAAS,EAAE,IAAI,MAAM,CAAC;AACzC,cAAM,MAAM,OAAO,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE;AACxD,cAAM,MAAM,OAAO,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS;AAAA,MACnD,OAAO;AACN,cAAM,MAAM,OAAO,SAAS,EAAE,IAAI,MAAM,EAAE,OAAO,EAAE;AACnD,cAAM,MAAM,OAAO,SAAS,EAAE,IAAI,EAAE,SAAS;AAAA,MAC9C;AAAA,IACD;AAQA,aAAS,eAAe,YAAYM,iBAAgB;AACnD,UAAI,MAAM,QAAQ,UAAU,GAAG;AAC9B,eAAO,gBAAgBA,iBAAgB,WAAW,MAAM,CAAC,CAAC;AAAA,MAC3D;AACA,aAAOA,mBAAkB,CAAC;AAAA,IAC3B;AASA,aAAS,aAAa,KAAK,iBAAiB,aAAa;AACxD,YAAM,gBAAgB,gBAAgB;AACtC,YAAM,eAAe,cAAc,gBAAgB,CAAC;AACpD,YAAM,cAAc,gBAAgB,eAAe;AAEnD,aAAO,YAAY,QAAQ,KAAK;AAAA,QAC/B,YAAY;AAAA,QACZ,aAAa,aAAa;AAAA,QAC1B,eAAe,aAAa;AAAA,QAC5B,aAAa,OAAO,gBAAgB,WAAW,cAAc;AAAA,QAC7D,YAAY,gBAAgB,cAAc;AAAA,QAC1C,kBAAkB,eAAe,IAAI;AAAA,QACrC,UAAU,UAAU;AAAA,QACpB,KAAK,aAAa;AAAA,MACnB,CAAC;AAAA,IACF;AAUA,aAAS,oBAAoB,MAAM,aAAa;AAC/C,UACC,CAAC,QACD,OAAO,SAAS,YAChB,OAAO,KAAK,WAAW,YACtB;AACD,cAAM,IAAI;AAAA,UACT,6BAA6B,YAAY,EAAE;AAAA,QAC5C;AAAA,MACD;AAEA,UAAI;AACH,eAAO,KAAK,OAAO,WAAW;AAAA,MAC/B,SAAS,IAAI;AACZ,WAAG,UAAU,6BAA6B,YAAY,EAAE,MAAM,GAAG,OAAO;AACxE,cAAM;AAAA,MACP;AAAA,IACD;AAqBA,aAAS,SACR,YACA,iBACA,YACA,UACA,iBACA,UACA,UACA,qBACA,KACA,kBACA,YACA,OACA,OACA,QACC;AACD,YAAM,UAAU,IAAI,kBAAkB;AAOtC,YAAM,cAAc,IAAI,YAAY;AAAA,QACnC;AAAA,QACA;AAAA,QACA,kBAAkB,oBAAoB;AAAA,QACtC;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAED,YAAM,QAAQ,WAAW,SAAS;AAElC,aAAO,KAAK,eAAe,EAAE,QAAQ,YAAU;AAC9C,cAAM,WAAW,OAAO,uBAAuB,gBAAgB,MAAM,CAAC;AAGtE,YAAI,aAAa,GAAG;AACnB;AAAA,QACD;AAEA,YAAI,cAAc,CAAC,WAAW,EAAE,QAAQ,SAAS,CAAC,GAAG;AACpD;AAAA,QACD;AAEA,cAAM,OAAO,WAAW,MAAM;AAE9B,YAAI,CAAC,MAAM;AACV,iBAAO,SAAS,EAAE,OAAO,CAAC;AAC1B;AAAA,QACD;AAEA,cAAM,cAAc,YAAY,OAAO;AAAA,UACtC,IAAI;AAAA,UACJ,SAAS;AAAA,YACR,gBAAgB,MAAM;AAAA,YACtB,sBAAsB,KAAK,MAAM,iBAAiB;AAAA,UACnD;AAAA,UACA,UAAU,MAAM;AACf,kBAAM,UAAU,OAAO;AAAA,cACtB;AAAA,cACA;AAAA,cACA,GAAG;AAAA,YACJ;AAEA,gBAAI,QAAQ,OAAO,EAAE,KAAK,QAAQ,KAAK,KAAK,UAAU;AACrD,oBAAM,IAAI;AAAA,gBACT;AAAA,cACD;AAAA,YACD;AAEA,gBACC,QAAQ,eACR,EAAE,KAAK,QAAQ,KAAK,KAAK,mBAAmB,OAC3C;AACD,kBACC,KAAK,QACL,KAAK,KAAK,QACV,OAAO,KAAK,KAAK,KAAK,eAAe,aACpC;AAED,sBAAM,IAAI;AAAA,kBACT;AAAA,gBACD;AAAA,cACD;AACA,oBAAM,IAAI;AAAA,gBACT;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD,CAAC;AAED,cAAM,sBACL,OAAO,WAAW,QACf,OAAO;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,QACD,EAAE,MAAM,WAAW,IAClB,oBAAoB,MAAM,WAAW;AAEzC,cAAM,gBAAgB,QACnB,oBAAoB,SACpB;AAEH,YAAI,OAAO;AACV;AAAA,YACC,oBAAoB;AAAA,YACpB,EAAE,MAAM,SAAS,KAAK,OAAO;AAAA,YAC7B;AAAA,UACD;AAAA,QACD;AAOA,iBAAS,oBAAoB,cAAc;AAC1C,iBAAO,SAAS,oBAAoB,cAAc;AACjD,gBAAI;AACH,oBAAM,qBAAqB,aAAa,GAAG,YAAY;AAEvD,oBAAM,qBAAqB,QACxB,mBAAmB,SACnB;AAEH,kBAAI,OAAO;AACV;AAAA,kBACC,mBAAmB;AAAA,kBACnB,EAAE,MAAM,SAAS,KAAK,OAAO;AAAA,kBAC7B;AAAA,gBACD;AAAA,cACD;AAEA,qBAAO;AAAA,YACR,SAAS,GAAG;AACX,gBAAE,SAAS;AACX,oBAAM;AAAA,YACP;AAAA,UACD;AAAA,QACD;AAEA,YAAI,OAAO,kBAAkB,eAAe,kBAAkB,MAAM;AACnE,gBAAM,IAAI;AAAA,YACT,mCAAmC,MAAM;AAAA,UAC1C;AAAA,QACD;AAGA,eAAO,KAAK,aAAa,EAAE,QAAQ,cAAY;AAC9C,gBAAM,eACL,OAAO,WAAW,QACf,OAAO,KAAK,QAAQ,cAAc,QAAQ,GAAG,KAAK,IAClD,cAAc,QAAQ;AAE1B,kBAAQ,IAAI,UAAU,oBAAoB,YAAY,CAAC;AAAA,QACxD,CAAC;AAAA,MACF,CAAC;AAED,YAAM,YAAY,oBAAoB,YAAY,QAAQ;AAE1D,gBAAU,aAAa,YAAY,SAAS,EAAE,MAAM,CAAC;AAErD,aAAO;AAAA,IACR;AAOA,aAAS,WAAW,kBAAkB;AACrC,UAAI,OAAO,qBAAqB,UAAU;AACzC,cAAM,EAAE,QAAQ,MAAAC,MAAK,IAAI;AACzB,cAAM,MAAM,SAAS,WAAW;AAEhC,eAAO,MAAMA;AAAA,MACd;AAEA,aAAO,OAAO,gBAAgB;AAAA,IAC/B;AAOA,aAAS,aAAa,KAAK;AAC1B,UAAI,KAAK;AACR,eAAO;AAAA,MACR;AACA,UAAI,OAAO,YAAY,UAAU;AAChC,eAAO,QAAQ,IAAI;AAAA,MACpB;AAIA,aAAO;AAAA,IACR;AAMA,QAAM,mBAAmB,oBAAI,QAAQ;AAUrC,QAAM,SAAN,MAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASZ,YAAY;AAAA,QACX;AAAA,QACA,aAAa;AAAA,QACb,QAAQ,CAAC;AAAA,QACT,iBAAiB,IAAI,eAAe;AAAA,MACrC,IAAI,CAAC,GAAG;AACP,cAAM,iBAAiB,CAAC;AAExB,YAAI,eAAe,QAAQ;AAC1B,gBAAM,IAAI;AAAA,YACT,4DAA4D,UAAU;AAAA,UACvE;AAAA,QACD;AAEA,cAAM,QAAQ,UAAQ;AACrB,cAAI,cAAc,IAAI,IAAI,GAAG;AAC5B,kBAAM,mBAAmB,cAAc,IAAI,IAAI;AAC/C,kBAAM,mBACL,2BAA2B,gBAAgB;AAC5C,kBAAM,UAAU,aAAa,IAAI,kBAAkB,gBAAgB;AAEnE,gBAAI,OAAO,iBAAiB,eAAe,aAAa;AACvD,oBAAM,IAAI,MAAM,OAAO;AAAA,YACxB;AAGA,gBAAI,OAAO,iBAAiB,eAAe,UAAU;AACpD,6BAAe,KAAK,iBAAiB,UAAU;AAAA,YAChD;AAEA,2BAAe,wBAAwB,MAAM,OAAO;AAEpD;AAAA,UACD;AAEA,cAAI,CAAC,YAAY,IAAI,IAAI,GAAG;AAC3B,kBAAM,IAAI,MAAM,iBAAiB,IAAI,IAAI;AAAA,UAC1C;AAEA,yBAAe,KAAK,IAAI;AAAA,QACzB,CAAC;AAED,yBAAiB,IAAI,MAAM;AAAA,UAC1B,KAAK,aAAa,GAAG;AAAA,UACrB,OAAO;AAAA,UACP,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,wBAAwB,CAAC;AAAA,UACzB;AAAA,QACD,CAAC;AAED,aAAK,UAAU,IAAI;AAAA,MACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,WAAW,UAAU;AACpB,eAAO,IAAI;AAAA,MACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,QAAQ,MAAM;AACb,eAAO,iBAAiB,IAAI,IAAI,EAAE,MAAM,SAAS,IAAI;AAAA,MACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,OAAO,kBAAkB,QAAQ,mBAAmB;AACnD,QAAAN,OAAM,QAAQ;AAEd,cAAM,EAAE,IAAI,IAAI,iBAAiB,IAAI,IAAI;AAEzC,cAAM,UACL,OAAO,sBAAsB,WAC1B,EAAE,UAAU,kBAAkB,IAC9B,qBAAqB,CAAC;AAE1B,cAAM,cAAc,UAAU,CAAC;AAS/B,YAAI,cAAc;AAElB,YACC,CAAC,MAAM,QAAQ,WAAW,KAC1B,OAAO,YAAY,cAAc,YAChC;AACD,wBAAc,IAAI,gBAAgB,aAAa;AAAA,YAC9C,UAAU;AAAA,UACX,CAAC;AACD,sBAAY,cAAc;AAAA,QAC3B;AAEA,eAAO,KAAK;AAAA,UACX,KAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,uCACC,kBACA,QACA,SACA,oBACC;AACD,cAAM,QAAQ,iBAAiB,IAAI,IAAI;AACvC,cAAM,WAAW,QAAQ,YAAY;AACrC,cAAM,mBAAmB,kBAAkB,QAAQ;AACnD,cAAM,mBAAmB,QAAQ,oBAAoB;AACrD,cAAMM,QAAO,WAAW,gBAAgB;AACxC,cAAM,OAAO,IAAIL,OAAM,kBAAkBK,OAAM;AAAA,UAC9C,cAAc;AAAA,QACf,CAAC;AAED,cAAMC,cAAa,QAAQ,eAAe,aAAW,CAAC,OAAO;AAC7D,cAAMC,eACL,QAAQ,gBAAgB,kBAAgB,aAAa,KAAK;AAE3D,cAAM,mBAAmB,IAAI,iBAAiB;AAC9C,cAAM,mBAAmB,iBAAiB,eAAe,MAAM;AAAA,UAC9D,WAAW;AAAA,YACV,YAAAD;AAAA,YACA,aAAAC;AAAA,UACD;AAAA,QACD,CAAC;AAED,YAAI,CAAC,iBAAiB,IAAI;AACzB,iBAAO,iBAAiB;AAAA,QACzB;AAEA,cAAM,kBACL,QAAQ,oBACP,mBAAiB,cAAc,SAAS,KAAK;AAC/C,cAAM,kBAAkBT,MAAK,QAAQ,QAAQ;AAC7C,cAAM,EAAE,MAAM,IAAI;AAElB,cAAM,eAAe,MAAM,IAAI,WAAS;AACvC,UAAAC,OAAM,8BAA8B,MAAM,QAAQ,WAAW;AAG7D,cAAI,OAAO,UAAU,UAAU;AAC9B,mBAAO,KAAK;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAGA,cAAI,CAAC,gBAAgB,MAAM,MAAM,MAAM,IAAI,GAAG;AAC7C,YAAAA,OAAM,8BAA8B;AACpC,mBAAO,CAAC;AAAA,UACT;AAGA,cACC,uBACCM,UAAS,MAAM,WACfP,MAAK,QAAQ,MAAM,IAAI,MAAM,kBAC7B;AACD,YAAAC;AAAA,cACC;AAAA,YACD;AACA,mBAAO,KAAK;AAAA,cACX,MAAM;AAAA,cACN;AAAA,cACA;AAAA,gBACC,GAAG;AAAA,gBACH,UAAU,MAAM;AAAA,gBAChB,kBAAkB,MAAM;AAAA,cACzB;AAAA,YACD;AAAA,UACD;AAEA,gBAAM,iBAAiB;AAGvB,iBAAO,KAAK,6BAA6B,OAAO,QAAQ;AAAA,YACvD,GAAG;AAAA,YACH,UAAU,MAAM;AAAA,YAChB,kBAAkB,MAAM;AAAA,UACzB,CAAC;AAAA,QACF,CAAC;AAED,eAAO,iBAAiB,gBAAgB,MAAM,cAAc;AAAA,UAC3D,WAAW;AAAA,YACV,YAAAO;AAAA,YACA,aAAAC;AAAA,UACD;AAAA,QACD,CAAC;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,6BAA6B,MAAM,gBAAgB,iBAAiB;AACnE,cAAM,QAAQ,iBAAiB,IAAI,IAAI;AACvC,cAAM,SAAS,kBAAkB,CAAC;AAClC,cAAM,EAAE,WAAW,CAAC,GAAG,gBAAgB,IAAI;AAC3C,cAAM,UAAU,uBAAuB,iBAAiB,MAAM;AAE9D,YAAI,CAAC,MAAM,gBAAgB;AAC1B,cAAI;AAEJ,cAAI,QAAQ,OAAO;AAClB,gBAAI,UAAU;AAAA,UACf;AAEA,gBAAM,gBAAgB,IAAI,cAAc;AACxC,gBAAM,cAAc,cAAc,UAAU,MAAM,MAAM;AAExD,cAAI,QAAQ,OAAO;AAClB,kBAAM,OAAO,QAAQ,CAAC;AAEtB,sBAAU,MAAM,EAAE,MAAM,QAAQ,GAAG,KAAK;AAAA,UACzC;AAEA,cAAI,CAAC,YAAY,IAAI;AACpB,mBAAO,YAAY;AAAA,UACpB;AAEA,gBAAM,iBAAiB,YAAY;AAAA,QACpC,OAAO;AAUN,cAAI,MAAM,eAAe,iBAAiB,MAAM;AAC/C,kBAAM,iBAAiB,IAAI,WAAW;AAAA,cACrC,MAAM,MAAM,eAAe;AAAA,cAC3B,KAAK,MAAM,eAAe;AAAA,cAC1B,QAAQ,MAAM,eAAe;AAAA,cAC7B,gBAAgB,MAAM,eAAe;AAAA,cACrC,aAAa,MAAM,eAAe;AAAA,cAClC,cAAc;AAAA,gBACb,MAAM,eAAe;AAAA,gBACrB;AAAA,cACD;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAEA,cAAM,aAAa,MAAM;AACzB,cAAM,SAAS,IAAI,WAAW;AAAA,UAC7B,YAAY,YAAU,OAAO,kBAAkB,MAAM;AAAA,UACrD,UAAU,OAAO;AAAA,UACjB;AAAA,UACA,cAAc,QAAQ;AAAA,QACvB,CAAC;AAOD,mBAAW,uBAAuB,eAAe;AAEjD,cAAM,qBAAqB;AAAA,UAC1B,OAAO,CAAC;AAAA,QACT;AAQA,YAAI,QAAQ,mBAAmB;AAE9B,cAAI,QAAQ,kBAAkB;AAC7B,gBAAI,WAAW,sBAAsB;AACpC,yBAAW,qBAAqB,EAAE,QAAQ,CAAAL,UAAQ;AACjD,sBAAM,MAAM,WAAW,OAAOA,KAAI;AAClC,sBAAM,QAAQ,WAAW,SAASA,KAAI;AAEtC,uBAAO,WAAW;AAAA,kBACjB,SAAS,IAAI,WAAW,KAAK,MAAM,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,gEAAgE,QAAQ,gBAAgB;AAAA,kBAC9I;AAAA,gBACD,CAAC;AAAA,cACF,CAAC;AAAA,YACF;AAAA,UACD,OAAO;AACN,kBAAM,qBAAqB,WAAW,oBAAoB;AAE1D,gBAAI,oBAAoB;AACvB,iCAAmB,SAAS,QAAQ,aAAW;AAC9C,uBAAO,SAAS,OAAO;AAAA,cACxB,CAAC;AAED,yBAAW;AAAA,gBACV,QAAQ;AAAA,gBACR;AAAA,cACD,KAAK,mBAAmB,SAAS;AAChC,uBAAO,KAAK,aAAa,KAAK,EAAE,QAAQ,YAAU;AACjD,wBAAM,OAAO,OAAO,kBAAkB,MAAM;AAC5C,wBAAM,YAAY,aAAa,MAAM,MAAM;AAE3C,sBAAI,CAAC,MAAM;AACV,2BAAO,SAAS;AAAA,sBACf;AAAA,sBACA;AAAA,oBACD,CAAC;AACD;AAAA,kBACD;AAEA,sBACC,OAAO,OAAO,mBAAmB,OAAO,MAAM,GAC7C;AACD,2BAAO,SAAS;AAAA,sBACf,SAAS,SAAS,MAAM;AAAA,sBACxB;AAAA,oBACD,CAAC;AACD;AAAA,kBACD;AAEA,sBAAI;AACH,0BAAM,oBAAoB,QAAQ,SAAS;AAC3C,wBAAI,cAAc;AAElB,yCAAqB,QAAQ,YAAY,CAAC,CAAC;AAqB3C,wBAAI,wBAAwB;AAE5B;AAAA;AAAA;AAAA;AAAA,sBAIC,YAAY,WAAW;AAAA;AAAA;AAAA,sBAIvB,OAAO,SACP,OAAO,OAAO,OAAO,OAAO,MAAM;AAAA,sBACjC;AAID,oCAAc;AAAA,wBACb,YAAY,CAAC;AAAA;AAAA,wBACb,GAAG,OAAO,MAAM,MAAM,EAAE,MAAM,CAAC;AAAA;AAAA,sBAChC;AAGA,0BAAI,OAAO,MAAM,MAAM,EAAE,CAAC,IAAI,GAAG;AAChC,gDAAwB;AAAA,sBACzB;AAAA,oBACD,OAAO;AAIN,4BAAM,gBAAgB,YAAY,MAAM,CAAC;AACzC,4BAAM,gBAAgB;AAAA,wBACrB,KAAK,MAAM;AAAA,wBACX;AAAA,sBACD;AAEA,0BAAI,cAAc,QAAQ;AACzB,sCAAc;AAAA,0BACb,YAAY,CAAC;AAAA,0BACb,GAAG;AAAA,wBACJ;AAAA,sBACD;AAAA,oBACD;AAEA,wBACC,QAAQ,8BAA8B,OACrC;AACD;AAAA,wBACC;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA,QAAQ;AAAA,sBACT;AAAA,oBACD;AAEA,wBAAI,uBAAuB;AAC1B,6BAAO,oBAAoB;AAAA,wBAC1B,CAAC,MAAM,GAAG;AAAA,sBACX,CAAC;AAAA,oBACF;AAEA,uCAAmB,MAAM,MAAM,IAAI;AAAA,kBACpC,SAAS,KAAK;AAKb,wBACC,IAAI,SACJ,sCACC;AACD,4BAAM;AAAA,oBACP;AAMA,wBACC,IAAI,oBACJ,6BACC;AACD,6BAAO,SAAS;AAAA,wBACf;AAAA,wBACA,SAAS,kCAAkC,MAAM;AAAA,uCAAwD,IAAI,YAAY,QAAQ;AAAA;AAAA,wBACjI;AAAA,sBACD,CAAC;AACD;AAAA,oBACD;AAEA,wBAAI,cAAc,IAAI,QACpB;AAAA,sBACA,IAAI,QAAQ,WAAW,cAAc,IAClC,IAAI,QAAQ,QAAQ,KAAK,EAAE,IAAI,IAC/B,IAAI,QAAQ,QAAQ,GAAG,IAAI;AAAA,oBAC/B,EACC,KAAK;AAEP,wBAAI,IAAI,iBAAiB;AACxB,qCAAe,gBAAgB,SAAS;AAAA,oBACzC;AAEA,2BAAO,SAAS;AAAA,sBACf;AAAA,sBACA,SAAS,kCAAkC,MAAM;AAAA,GAAoB,WAAW;AAAA;AAAA,sBAChF;AAAA,oBACD,CAAC;AAAA,kBACF;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,cAAM,oBACL,QAAQ,qBAAqB,CAAC,QAAQ,mBACnC;AAAA,UACA;AAAA,UACA,YAAU,OAAO,kBAAkB,MAAM;AAAA,UACzC,OAAO;AAAA,UACP;AAAA,QACD,IACC,CAAC;AAEL,cAAM,kBAAkB,OAAO;AAAA,UAC9B,CAAC;AAAA,UACD,OAAO;AAAA,UACP,mBAAmB;AAAA,QACpB;AAEA,mBAAW,WAAW;AAEtB,YAAI;AACH;AAAA,YACC;AAAA,YACA;AAAA,YACA,YAAU,OAAO,kBAAkB,MAAM;AAAA,YACzC,OAAO;AAAA,YACP;AAAA,YACA;AAAA,YACA,QAAQ;AAAA,YACR;AAAA,YACA,MAAM;AAAA,YACN,gBAAgB;AAAA,YAChB,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR;AAAA,YACA;AAAA,UACD;AAAA,QACD,SAAS,KAAK;AACb,cAAI,WAAW;AAAA,yBAA4B,QAAQ,QAAQ;AAC3D,UAAAH,OAAM,oCAAoC;AAC1C,UAAAA,OAAM,aAAa,QAAQ,QAAQ;AACnC,cAAI,IAAI,aAAa;AACpB,kBAAM,EAAE,KAAK,IAAI,WAAW,OAAO,IAAI,WAAW,EAAE;AAEpD,YAAAA,OAAM,SAAS,IAAI;AACnB,gBAAI,WAAW,IAAI,IAAI;AAAA,UACxB;AACA,UAAAA,OAAM,mBAAmB,gBAAgB,aAAa;AACtD,UAAAA,OAAM,aAAa,QAAQ;AAE3B,cAAI,IAAI,QAAQ;AACf,gBAAI,WAAW;AAAA,SAAY,IAAI,MAAM;AAAA,UACtC;AAEA,gBAAM;AAAA,QACP;AAEA,eAAO,uBAAuB;AAAA,UAC7B,UAAU,OAAO;AAAA,UACjB;AAAA,UACA,YAAY;AAAA,UACZ,cAAc,QAAQ;AAAA,UACtB,UAAU,OAAO,SAAS;AAAA,YACzB,CAAC,UAAU,aACV,SAAS,OAAO,SAAS,QACzB,SAAS,SAAS,SAAS;AAAA,UAC7B;AAAA,UACA,+BACC,QAAQ;AAAA,UACT,YAAY,QAAQ;AAAA,UACpB;AAAA,QACD,CAAC;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,+CACC,kBACA,gBACA,iBACC;AACD,cAAM,QAAQ,iBAAiB,IAAI,IAAI;AACvC,cAAM,WAAW;AAAA,UAChB,gBAAgB,YAAY;AAAA,QAC7B;AACA,YAAIM;AAGJ,YAAI,OAAO,qBAAqB,UAAU;AACzC,gBAAM,iBAAiB;AACvB,UAAAA,QAAO;AAAA,QACR,OAAO;AACN,gBAAM,iBAAiB;AACvB,UAAAA,QAAO,iBAAiB;AAAA,QACzB;AAEA,cAAM,OAAO,IAAIL,OAAM,UAAUK,OAAM;AAAA,UACtC,cAAc,gBAAgB;AAAA,QAC/B,CAAC;AAED,eAAO,KAAK;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,2BACC,kBACA,aACA,SACA,YAAY,OACX;AACD,QAAAN,OAAM,wBAAwB,QAAQ,QAAQ;AAG9C,cAAM,WAAW,QAAQ,YAAY;AAGrC,yBAAiB,IAAI,IAAI,EAAE,kBAAkB;AAC7C,cAAM,SAAS,YAAY,UAAU,QAAQ;AAE7C,YAAI,CAAC,QAAQ;AACZ,iBAAO;AAAA,YACN;AAAA,cACC,QAAQ;AAAA,cACR,UAAU;AAAA,cACV,SAAS,uCAAuC,QAAQ;AAAA,cACxD,MAAM;AAAA,cACN,QAAQ;AAAA,YACT;AAAA,UACD;AAAA,QACD;AAGA,YAAI,OAAO,WAAW;AACrB,UAAAA,OAAM,2BAA2B,OAAO,SAAS;AACjD,gBAAM,EAAE,YAAAO,aAAY,aAAAC,cAAa,gBAAgB,IAChD,OAAO;AACR,gBAAM,eAAe,QAAQ,gBAAgB,CAAC;AAE9C,iBAAO,KAAK;AAAA,YACX;AAAA,YACA;AAAA,YACA,EAAE,GAAG,SAAS,UAAU,cAAc,aAAAA,cAAa,YAAAD,YAAW;AAAA,YAC9D;AAAA,UACD;AAAA,QACD;AAGA,YAAI,cAAc,QAAQ,cAAc,QAAQ,cAAc;AAC7D,iBAAO,KAAK;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAEA,eAAO,KAAK;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,+BAA+B,UAAU;AACxC,cAAM,WAAW,CAAC;AAClB,cAAM,qBAAqB,CAAC;AAC5B,cAAM,QAAQ,iBAAiB,IAAI,IAAI;AAEvC,mBAAW,WAAW,UAAU;AAC/B,cAAI,QAAQ,cAAc;AACzB,+BAAmB,KAAK,OAAO;AAAA,UAChC,OAAO;AACN,qBAAS,KAAK,OAAO;AAAA,UACtB;AAAA,QACD;AAEA,cAAM,yBAAyB;AAE/B,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,gBAAgB;AACf,eAAO,iBAAiB,IAAI,IAAI,EAAE;AAAA,MACnC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,WAAW;AACV,eAAO,iBAAiB,IAAI,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;AAAA,MACzD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,kBAAkB;AACjB,eAAO,iBAAiB,IAAI,IAAI,EAAE,aAAa;AAAA,MAChD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,wBAAwB;AACvB,eAAO,iBAAiB,IAAI,IAAI,EAAE;AAAA,MACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,aAAaD,OAAM,QAAQ,mBAAmB;AAC7C,YAAI,UACH,aACA,QAAQ,OACR,aAAa,GACb,cAAcA,OACd,oBACA;AACD,cAAM,UACL,OAAO,sBAAsB,WAC1B,EAAE,UAAU,kBAAkB,IAC9B,qBAAqB,CAAC;AAC1B,cAAM,uBACL,QAAQ,YAAY,GAAGA,MAAK,MAAM,GAAG,EAAE,CAAC;AACzC,cAAM,YACL,OAAO,QAAQ,QAAQ,cAAc,QAAQ,MAAM;AACpD,cAAM,QAAQ,SAAS;AAEvB,cAAM,QAAQ,iBAAiB,IAAI,IAAI;AAGvC,YAAI,OAAO;AACV,iBAAO,MAAM;AACb,gBAAM,YAAY;AAAA,QACnB;AAWA,WAAG;AACF;AACA,cAAI;AAEJ,cAAI,OAAO;AACV,qBAAS,UAAU;AAAA,UACpB;AAEA,UAAAN;AAAA,YACC,oBAAoB,oBAAoB,UAAU,UAAU;AAAA,UAC7D;AACA,qBAAW,KAAK,OAAO,aAAa,QAAQ,OAAO;AAEnD,UAAAA;AAAA,YACC,6BAA6B,oBAAoB,UAAU,UAAU;AAAA,UACtE;AACA,cAAI;AAEJ,cAAI,OAAO;AACV,gBAAI,UAAU;AAAA,UACf;AAEA,wBAAc,gBAAgB;AAAA,YAC7B;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAEA,cAAI,OAAO;AACV,gBAAI,YAAY,OAAO;AACtB,oBAAM,OAAO,QAAQ,CAAC;AAEtB,wBAAU,MAAM,EAAE,MAAM,MAAM,GAAG,KAAK;AACtC,oBAAM;AAAA,YACP,OAAO;AACN,wBAAU,GAAG,EAAE,MAAM,MAAM,GAAG,KAAK;AAAA,YACpC;AAAA,UACD;AAMA,cAAI,SAAS,WAAW,KAAK,SAAS,CAAC,EAAE,OAAO;AAC/C;AAAA,UACD;AAGA,kBAAQ,SAAS,YAAY;AAG7B,+BAAqB;AACrB,yBAAe;AACf,wBAAc,YAAY;AAE1B,cAAI,OAAO;AACV,qBAAS,QAAQ,MAAM;AACvB,kBAAM,YAAY,MAAM,MAAM,OAAO,SAAS;AAE9C,kBAAM,MAAM,OAAO,SAAS,EAAE,QAAQ;AAAA,UACvC;AAGA,cACC,aAAa,KACb,YAAY,WAAW,mBAAmB,UAC1C,gBAAgB,oBACf;AACD,YAAAA;AAAA,cACC,sCAAsC,UAAU;AAAA,YACjD;AACA,kBAAM,eAAe;AAAA,cACpB,QAAQ,YAAY;AAAA,YACrB;AACA;AAAA,UACD;AAAA,QACD,SAAS,YAAY,SAAS,aAAa;AAM3C,YAAI,YAAY,OAAO;AACtB,cAAI;AAEJ,cAAI,OAAO;AACV,qBAAS,UAAU;AAAA,UACpB;AAEA,sBAAY,WAAW,KAAK,OAAO,aAAa,QAAQ,OAAO;AAE/D,cAAI,OAAO;AACV,sBAAU,GAAG,EAAE,MAAM,MAAM,GAAG,KAAK;AACnC,kBAAM,MAAM,OAAO,GAAG,EAAE,EAAE,QAAQ,QAAQ,MAAM;AAAA,UACjD;AAAA,QACD;AAGA,oBAAY,QAAQ;AACpB,oBAAY,SAAS;AAErB,eAAO;AAAA,MACR;AAAA,IACD;AAEA,IAAAF,QAAO,UAAU;AAAA,MAChB;AAAA,IACD;AAAA;AAAA;;;AC7lDA,IAAAW,kBAAA;AAAA,4CAAAC,UAAAC,SAAA;AAAA;AAEA,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,kBAAkB;AAExB,IAAAA,QAAO,UAAU;AAAA,MAChB;AAAA;AAAA,MAGA;AAAA,IACD;AAAA;AAAA;;;ACVA;AAAA,6CAAAC,UAAAC,SAAA;AAAA;AAMA,QAAM,kBAAkB;AASxB,aAAS,qBAAqB,MAAM,QAAQ;AAC3C,UAAI,iBAAiB;AAOrB,UAAI,eAAe,SAAS,IAAI,GAAG;AAClC,yBAAiB,eAAe,QAAQ,QAAQ,GAAG;AAAA,MACpD;AAEA,UAAI,eAAe,OAAO,CAAC,MAAM,KAAK;AAKrC,cAAM,6BAA6B,IAAI;AAAA,UACrC,mBAAmB,MAAM;AAAA,UACzB;AAAA,QACD,GACA,yBAAyB,IAAI,OAAO,IAAI,MAAM,SAAS,GAAG;AAE3D,YAAI,2BAA2B,KAAK,cAAc,GAAG;AACpD,2BAAiB,eAAe;AAAA,YAC/B;AAAA,YACA,MAAM,MAAM;AAAA,UACb;AAAA,QACD,WAAW,CAAC,uBAAuB,KAAK,eAAe,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG;AAKtE,2BAAiB,eAAe;AAAA,YAC/B;AAAA,YACA,OAAO,MAAM;AAAA,UACd;AAAA,QACD;AAAA,MACD,WAAW,CAAC,eAAe,WAAW,GAAG,MAAM,GAAG,GAAG;AACpD,yBAAiB,GAAG,MAAM,IAAI,cAAc;AAAA,MAC7C;AAEA,aAAO;AAAA,IACR;AAQA,aAAS,iBAAiB,UAAU,QAAQ;AAC3C,UAAI,SAAS,CAAC,MAAM,KAAK;AACxB,YAAI,cAAc,IAAI,OAAO,aAAa,MAAM,KAAK,GAAG,EAAE;AAAA,UACzD;AAAA,QACD;AAEA,YAAI,aAAa;AAChB,iBAAO,YAAY,CAAC;AAAA,QACrB;AAEA,sBAAc,IAAI,OAAO,aAAa,MAAM,UAAU,GAAG,EAAE;AAAA,UAC1D;AAAA,QACD;AACA,YAAI,aAAa;AAChB,iBAAO,GAAG,YAAY,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC;AAAA,QAC3C;AAAA,MACD,WAAW,SAAS,WAAW,GAAG,MAAM,GAAG,GAAG;AAC7C,eAAO,SAAS,MAAM,OAAO,SAAS,CAAC;AAAA,MACxC;AAEA,aAAO;AAAA,IACR;AAOA,aAAS,qBAAqB,MAAM;AACnC,YAAMC,SAAQ,KAAK,MAAM,eAAe;AAExC,aAAOA,SAAQA,OAAM,CAAC,IAAI;AAAA,IAC3B;AAMA,IAAAD,QAAO,UAAU;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA;AAAA;;;AC5GA;AAAA,qDAAAE,UAAAC,SAAA;AAAA;AAaA,aAAS,sBAAsB,UAAU;AACxC,YAAM,OAAO;AAAA,QACZ,YAAY;AAAA,QACZ,iBAAiB;AAAA,QACjB,cAAc;AAAA,QACd,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,MACtB;AAEA,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACzC,cAAM,UAAU,SAAS,CAAC;AAE1B,YAAI,QAAQ,SAAS,QAAQ,aAAa,GAAG;AAC5C,eAAK;AACL,cAAI,QAAQ,OAAO;AAClB,iBAAK;AAAA,UACN;AACA,cAAI,QAAQ,KAAK;AAChB,iBAAK;AAAA,UACN;AAAA,QACD,OAAO;AACN,eAAK;AACL,cAAI,QAAQ,KAAK;AAChB,iBAAK;AAAA,UACN;AAAA,QACD;AAAA,MACD;AACA,aAAO;AAAA,IACR;AAEA,IAAAA,QAAO,UAAU;AAAA,MAChB;AAAA,IACD;AAAA;AAAA;;;AC7CA;AAAA,sCAAAC,UAAA;AAIA,IAAAA,SAAQ,YAAY,SAAS,UAAW,GAAG;AACzC,UAAG,eAAe,OAAO,EAAG,QAAO;AAEnC,UAAG,KAAK,OAAO,SAAS,CAAC;AACvB,eAAO,KAAK,UAAU,aAAa,EAAE,SAAS,QAAQ,CAAC;AAEzD,UAAG,KAAK,EAAE;AACR,YAAK,EAAE,OAAO;AAEhB,UAAG,KAAK,aAAa,OAAO,GAAG;AAC7B,YAAI,IAAI;AACR,YAAI,QAAQ,MAAM,QAAQ,CAAC;AAC3B,YAAI,QAAQ,MAAM;AAClB,YAAIC,SAAQ;AAEZ,iBAAQ,KAAK,GAAG;AACd,cAAI,SAAS,cAAc,OAAO,EAAE,CAAC,KAAM,CAAC,SAAS,gBAAgB,OAAO,EAAE,CAAC;AAC/E,cAAG,OAAO,eAAe,KAAK,GAAG,CAAC,KAAK,CAAC,QAAQ;AAC9C,gBAAG,CAACA;AACF,mBAAK;AACP,YAAAA,SAAQ;AACR,gBAAI,OAAO;AACT,kBAAG,EAAE,CAAC,KAAK;AACT,qBAAK;AAAA;AAEL,qBAAK,UAAU,EAAE,CAAC,CAAC;AAAA,YACvB,WAAW,EAAE,CAAC,MAAM,QAAS;AAC3B,mBAAK,UAAU,CAAC,IAAI,MAAM,UAAU,EAAE,CAAC,CAAC;AAAA,YAC1C;AAAA,UACF;AAAA,QACF;AAEA,aAAK,QAAQ,MAAM;AAEnB,eAAO;AAAA,MACT,WAAW,aAAa,OAAO,GAAG;AAChC,eAAO,KAAK,UAAU,KAAK,KAAK,CAAC,IAAI,MAAM,IAAI,CAAC;AAAA,MAClD,WAAW,gBAAgB,OAAO,GAAG;AACnC,eAAO;AAAA,MACT;AACE,eAAO,KAAK,UAAU,CAAC;AAAA,IAC3B;AAEA,IAAAD,SAAQ,QAAQ,SAAU,GAAG;AAC3B,aAAO,KAAK,MAAM,GAAG,SAAU,KAAKE,QAAO;AACzC,YAAG,aAAa,OAAOA,QAAO;AAC5B,cAAG,YAAY,KAAKA,MAAK;AACvB,mBAAO,OAAO,KAAKA,OAAM,UAAU,CAAC,GAAG,QAAQ;AAAA;AAE/C,mBAAO,KAAK,KAAKA,MAAK,IAAIA,OAAM,UAAU,CAAC,IAAIA;AAAA,QACnD;AACA,eAAOA;AAAA,MACT,CAAC;AAAA,IACH;AAAA;AAAA;;;ACzDA,IAAAC,eAAA;AAAA,mCAAAC,UAAAC,SAAA;AAAA;AAEA,QAAM,eAAe,QAAQ,QAAQ;AACrC,QAAM,QAAQ;AAEd,QAAM,YAAY,aAAW;AAC5B,YAAM,WAAW;AAAA,QAChB,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,QACT,QAAQ;AAAA,MACT;AACA,UAAI,QAAQ,WAAW,QAAQ,KAAK;AACnC,cAAM,UAAU,QAAQ,WAAW,UAAU,KAAK,QAAQ,GAAG,EAAE,CAAC;AAChE,eAAO,KAAK,QAAQ,SAAS,OAAO,CAAC,GAAG,OAAO;AAAA,MAChD;AAEA,aAAO,oBAAI,IAAI;AAAA,IAChB;AAEA,QAAM,mBAAmB;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAEA,QAAM,OAAN,cAAmB,aAAa;AAAA,MAC/B,YAAY,KAAK,EAAC,aAAa,MAAM,GAAG,QAAO,IAAI,CAAC,GAAG;AACtD,cAAM;AACN,aAAK,OAAO;AAAA,UACX,WAAW;AAAA,UACX,WAAW,MAAM;AAAA,UACjB,aAAa,MAAM;AAAA,UACnB,GAAK,OAAO,QAAQ,WAAY,EAAC,IAAG,IAAI;AAAA,UACxC,GAAG;AAAA,QACJ;AAEA,YAAI,CAAC,KAAK,KAAK,OAAO;AACrB,gBAAM,iBAAiB,EAAC,GAAG,KAAK,KAAI;AACpC,eAAK,KAAK,QAAQ,UAAU,cAAc;AAAA,QAC3C;AAEA,YAAI,KAAK,KAAK,aAAa;AAC1B,gBAAM,cAAc,KAAK,KAAK;AAC9B,eAAK,KAAK,YAAY,YAAY,UAAU,KAAK,WAAW;AAC5D,eAAK,KAAK,cAAc,YAAY,YAAY,KAAK,WAAW;AAAA,QACjE;AAEA,YAAI,OAAO,KAAK,KAAK,MAAM,OAAO,cAAc,YAAY;AAC3D,eAAK,KAAK,MAAM,GAAG,SAAS,WAAS,KAAK,KAAK,SAAS,KAAK,CAAC;AAAA,QAC/D;AAEA,aAAK,KAAK,MAAM,YAAY,KAAK,KAAK;AAEtC,cAAM,mBAAmB,cAAY,mBAAoB;AACxD,2BAAiB,CAAC,KAAK,GAAG,KAAK,OAAO,aAAa,aAChD,SAAS,KAAK,KAAK,MAAM,SAAS,IAClC,UAAU;AACZ,kBAAM,OAAO,MAAM,KAAK,KAAK,YAAY,GAAG;AAC5C,gBAAI,KAAK,KAAK,MAAM,aAAa,CAAC,IAAI,SAAS,KAAK,KAAK,MAAM,SAAS,GAAG;AAC1E;AAAA,YACD;AAEA,gBAAI,OAAO,KAAK,YAAY,YAAY,KAAK,IAAI,IAAI,KAAK,SAAS;AAClE,mBAAK,OAAO,GAAG;AACf;AAAA,YACD;AAEA,kBAAM,CAAC,KAAK,gBAAgB,GAAG,GAAG,KAAK,KAAK;AAAA,UAC7C;AAAA,QACD;AAGA,YAAI,OAAO,KAAK,KAAK,MAAM,OAAO,QAAQ,MAAM,cAAc,KAAK,KAAK,iBAAiB,KAAK;AAC7F,eAAK,WAAW,iBAAiB,KAAK,KAAK,KAAK;AAAA,QACjD,WAAW,OAAO,KAAK,KAAK,MAAM,aAAa,cAAc,KAAK,KAAK,MAAM,QACzE,KAAK,sBAAsB,GAAG;AACjC,eAAK,WAAW,iBAAiB,KAAK,KAAK,MAAM,SAAS,KAAK,KAAK,KAAK,KAAK,CAAC;AAAA,QAChF;AAAA,MACD;AAAA,MAEA,wBAAwB;AACvB,eAAO,iBAAiB,SAAS,KAAK,KAAK,MAAM,KAAK,OAAO,KACzD,iBAAiB,UAAU,aAAW,KAAK,KAAK,MAAM,KAAK,IAAI,SAAS,OAAO,CAAC,KAAK;AAAA,MAC1F;AAAA,MAEA,cAAc,KAAK;AAClB,eAAO,GAAG,KAAK,KAAK,SAAS,IAAI,GAAG;AAAA,MACrC;AAAA,MAEA,mBAAmBC,OAAM;AACxB,eAAOA,MAAK,IAAI,SAAO,GAAG,KAAK,KAAK,SAAS,IAAI,GAAG,EAAE;AAAA,MACvD;AAAA,MAEA,gBAAgB,KAAK;AACpB,eAAO,IACL,MAAM,GAAG,EACT,OAAO,CAAC,EACR,KAAK,GAAG;AAAA,MACX;AAAA,MAEA,IAAI,KAAK,SAAS;AACjB,cAAM,EAAC,MAAK,IAAI,KAAK;AACrB,cAAMC,WAAU,MAAM,QAAQ,GAAG;AACjC,cAAM,cAAcA,WAAU,KAAK,mBAAmB,GAAG,IAAI,KAAK,cAAc,GAAG;AACnF,YAAIA,YAAW,MAAM,YAAY,QAAW;AAC3C,gBAAMC,YAAW,CAAC;AAClB,qBAAWC,QAAO,aAAa;AAC9B,YAAAD,UAAS;AAAA,cAAK,QAAQ,QAAQ,EAC5B,KAAK,MAAM,MAAM,IAAIC,IAAG,CAAC,EACzB,KAAK,UAAS,OAAO,SAAS,WAAY,KAAK,KAAK,YAAY,IAAI,IAAK,KAAK,KAAK,cAAc,KAAK,KAAK,YAAY,IAAI,IAAI,IAAK,EACpI,KAAK,UAAQ;AACb,oBAAI,SAAS,UAAa,SAAS,MAAM;AACxC,yBAAO;AAAA,gBACR;AAEA,oBAAI,OAAO,KAAK,YAAY,YAAY,KAAK,IAAI,IAAI,KAAK,SAAS;AAClE,yBAAO,KAAK,OAAOA,IAAG,EAAE,KAAK,MAAM,MAAS;AAAA,gBAC7C;AAEA,uBAAQ,WAAW,QAAQ,MAAO,OAAO,KAAK;AAAA,cAC/C,CAAC;AAAA,YACF;AAAA,UACD;AAEA,iBAAO,QAAQ,WAAWD,SAAQ,EAChC,KAAK,YAAU;AACf,kBAAM,OAAO,CAAC;AACd,uBAAWE,UAAS,QAAQ;AAC3B,mBAAK,KAAKA,OAAM,KAAK;AAAA,YACtB;AAEA,mBAAO;AAAA,UACR,CAAC;AAAA,QACH;AAEA,eAAO,QAAQ,QAAQ,EACrB,KAAK,MAAMH,WAAU,MAAM,QAAQ,WAAW,IAAI,MAAM,IAAI,WAAW,CAAC,EACxE,KAAK,UAAS,OAAO,SAAS,WAAY,KAAK,KAAK,YAAY,IAAI,IAAK,KAAK,KAAK,cAAc,KAAK,KAAK,YAAY,IAAI,IAAI,IAAK,EACpI,KAAK,UAAQ;AACb,cAAI,SAAS,UAAa,SAAS,MAAM;AACxC,mBAAO;AAAA,UACR;AAEA,cAAIA,UAAS;AACZ,mBAAO,KAAK,IAAI,CAAC,KAAKI,WAAU;AAC/B,kBAAK,OAAO,QAAQ,UAAW;AAC9B,sBAAM,KAAK,KAAK,YAAY,GAAG;AAAA,cAChC;AAEA,kBAAI,QAAQ,UAAa,QAAQ,MAAM;AACtC,uBAAO;AAAA,cACR;AAEA,kBAAI,OAAO,IAAI,YAAY,YAAY,KAAK,IAAI,IAAI,IAAI,SAAS;AAChE,qBAAK,OAAO,IAAIA,MAAK,CAAC,EAAE,KAAK,MAAM,MAAS;AAC5C,uBAAO;AAAA,cACR;AAEA,qBAAQ,WAAW,QAAQ,MAAO,MAAM,IAAI;AAAA,YAC7C,CAAC;AAAA,UACF;AAEA,cAAI,OAAO,KAAK,YAAY,YAAY,KAAK,IAAI,IAAI,KAAK,SAAS;AAClE,mBAAO,KAAK,OAAO,GAAG,EAAE,KAAK,MAAM,MAAS;AAAA,UAC7C;AAEA,iBAAQ,WAAW,QAAQ,MAAO,OAAO,KAAK;AAAA,QAC/C,CAAC;AAAA,MACH;AAAA,MAEA,IAAI,KAAKD,QAAO,KAAK;AACpB,cAAM,cAAc,KAAK,cAAc,GAAG;AAC1C,YAAI,OAAO,QAAQ,aAAa;AAC/B,gBAAM,KAAK,KAAK;AAAA,QACjB;AAEA,YAAI,QAAQ,GAAG;AACd,gBAAM;AAAA,QACP;AAEA,cAAM,EAAC,MAAK,IAAI,KAAK;AAErB,eAAO,QAAQ,QAAQ,EACrB,KAAK,MAAM;AACX,gBAAM,UAAW,OAAO,QAAQ,WAAa,KAAK,IAAI,IAAI,MAAO;AACjE,cAAI,OAAOA,WAAU,UAAU;AAC9B,iBAAK,KAAK,SAAS,6BAA6B;AAAA,UACjD;AAEA,UAAAA,SAAQ,EAAC,OAAAA,QAAO,QAAO;AACvB,iBAAO,KAAK,KAAK,UAAUA,MAAK;AAAA,QACjC,CAAC,EACA,KAAK,CAAAA,WAAS,MAAM,IAAI,aAAaA,QAAO,GAAG,CAAC,EAChD,KAAK,MAAM,IAAI;AAAA,MAClB;AAAA,MAEA,OAAO,KAAK;AACX,cAAM,EAAC,MAAK,IAAI,KAAK;AACrB,YAAI,MAAM,QAAQ,GAAG,GAAG;AACvB,gBAAME,eAAc,KAAK,mBAAmB,GAAG;AAC/C,cAAI,MAAM,eAAe,QAAW;AACnC,kBAAMJ,YAAW,CAAC;AAClB,uBAAWC,QAAOG,cAAa;AAC9B,cAAAJ,UAAS,KAAK,MAAM,OAAOC,IAAG,CAAC;AAAA,YAChC;AAEA,mBAAO,QAAQ,WAAWD,SAAQ,EAChC,KAAK,YAAU,OAAO,MAAM,OAAK,EAAE,UAAU,IAAI,CAAC;AAAA,UACrD;AAEA,iBAAO,QAAQ,QAAQ,EACrB,KAAK,MAAM,MAAM,WAAWI,YAAW,CAAC;AAAA,QAC3C;AAEA,cAAM,cAAc,KAAK,cAAc,GAAG;AAC1C,eAAO,QAAQ,QAAQ,EACrB,KAAK,MAAM,MAAM,OAAO,WAAW,CAAC;AAAA,MACvC;AAAA,MAEA,QAAQ;AACP,cAAM,EAAC,MAAK,IAAI,KAAK;AACrB,eAAO,QAAQ,QAAQ,EACrB,KAAK,MAAM,MAAM,MAAM,CAAC;AAAA,MAC3B;AAAA,MAEA,IAAI,KAAK;AACR,cAAM,cAAc,KAAK,cAAc,GAAG;AAC1C,cAAM,EAAC,MAAK,IAAI,KAAK;AACrB,eAAO,QAAQ,QAAQ,EACrB,KAAK,YAAY;AACjB,cAAI,OAAO,MAAM,QAAQ,YAAY;AACpC,mBAAO,MAAM,IAAI,WAAW;AAAA,UAC7B;AAEA,gBAAMF,SAAQ,MAAM,MAAM,IAAI,WAAW;AACzC,iBAAOA,WAAU;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,MAEA,aAAa;AACZ,cAAM,EAAC,MAAK,IAAI,KAAK;AACrB,YAAI,OAAO,MAAM,eAAe,YAAY;AAC3C,iBAAO,MAAM,WAAW;AAAA,QACzB;AAAA,MACD;AAAA,IACD;AAEA,IAAAL,QAAO,UAAU;AAAA;AAAA;;;AClQjB,IAAAQ,eAAA;AAAA,sCAAAC,UAAA;AAAA;AAKA,QAAM,EAAC,OAAO,QAAQ,WAAW,WAAU,IAAI;AAC/C,QAAM,EAAC,MAAAC,MAAI,IAAI;AAEf,QAAM,YAAY;AAClB,QAAM,YAAY;AAElB,QAAM,SAAS,CAAC;AAChB,QAAM,SAAS;AAEf,QAAM,OAAO,CAAC,GAAGC,WAAUA;AAE3B,QAAM,aAAa,CAAAA,WACjBA,kBAAiB,YAAY,UAAUA,MAAK,IAAIA;AAGlD,QAAM,aAAa,CAAC,GAAGA,WACrB,OAAOA,WAAU,YAAY,IAAI,UAAUA,MAAK,IAAIA;AAGtD,QAAMC,YAAW,CAAC,OAAO,MAAM,QAAQ,MAAM,YAAU;AACrD,eAAS,KAAKF,MAAK,MAAM,GAAG,EAAC,OAAM,IAAI,IAAI,IAAI,GAAG,IAAI,QAAQ,KAAK;AACjE,cAAM,IAAI,GAAG,CAAC;AACd,cAAMC,SAAQ,OAAO,CAAC;AACtB,YAAIA,kBAAiB,WAAW;AAC9B,gBAAM,MAAM,MAAM,CAACA,MAAK;AACxB,cAAI,OAAO,QAAQ,UAAU,CAAC,OAAO,IAAI,GAAG,GAAG;AAC7C,mBAAO,IAAI,GAAG;AACd,mBAAO,CAAC,IAAI;AACZ,iBAAK,KAAK,EAAE,GAAG,QAAQ,GAAG,GAAG,IAAI,CAAC;AAAA,UACpC;AAEE,mBAAO,CAAC,IAAI,EAAE,KAAK,QAAQ,GAAG,GAAG;AAAA,QACrC,WACS,OAAO,CAAC,MAAM;AACrB,iBAAO,CAAC,IAAI,EAAE,KAAK,QAAQ,GAAGA,MAAK;AAAA,MACvC;AACA,aAAO;AAAA,IACT;AAEA,QAAM,MAAM,CAAC,OAAO,OAAOA,WAAU;AACnC,YAAME,SAAQ,UAAU,MAAM,KAAKF,MAAK,IAAI,CAAC;AAC7C,YAAM,IAAIA,QAAOE,MAAK;AACtB,aAAOA;AAAA,IACT;AAQA,QAAMC,SAAQ,CAACC,OAAM,YAAY;AAC/B,YAAM,QAAQ,OAAOA,OAAM,UAAU,EAAE,IAAI,UAAU;AACrD,YAAM,IAAI,WAAW;AAErB,UAAIJ,SAAQ,MAAM,CAAC;AAEnB,UAAI,OAAOA,WAAU,UAAUA,QAAO;AACpC,cAAM,OAAO,CAAC;AACd,cAAM,SAASC,UAAS,OAAO,MAAM,oBAAI,OAAK,CAAC;AAC/C,QAAAD,SAAQ,OAAOA,MAAK;AAEpB,YAAI,IAAI;AACR,eAAO,IAAI,KAAK,QAAQ;AAEtB,gBAAM,EAAC,GAAG,GAAG,EAAC,IAAI,KAAK,GAAG;AAC1B,YAAE,CAAC,IAAI,EAAE,KAAK,GAAG,GAAG,OAAO,CAAC,CAAC;AAAA,QAC/B;AAAA,MACF;AAEA,aAAO,EAAE,KAAK,EAAC,IAAIA,OAAK,GAAG,IAAIA,MAAK;AAAA,IACtC;AACA,IAAAF,SAAQ,QAAQK;AAShB,QAAM,YAAY,CAACH,QAAO,UAAU,UAAU;AAC5C,YAAM,IAAI,YAAY,OAAO,aAAa,SAChC,CAAC,GAAG,MAAO,MAAM,MAAM,KAAK,SAAS,QAAQ,CAAC,IAAI,IAAI,SACrD,YAAY;AACvB,YAAM,QAAQ,oBAAI;AAClB,YAAM,QAAQ,CAAC;AACf,YAAM,SAAS,CAAC;AAChB,UAAI,IAAI,CAAC,IAAI,OAAO,OAAO,EAAE,KAAK,EAAC,IAAIA,OAAK,GAAG,IAAIA,MAAK,CAAC;AACzD,UAAI,WAAW,CAAC;AAChB,aAAO,IAAI,MAAM,QAAQ;AACvB,mBAAW;AACX,eAAO,CAAC,IAAI,WAAW,MAAM,GAAG,GAAGK,UAAS,KAAK;AAAA,MACnD;AACA,aAAO,MAAM,OAAO,KAAK,GAAG,IAAI;AAChC,eAASA,SAAQ,KAAKL,QAAO;AAC3B,YAAI,UAAU;AACZ,qBAAW,CAAC;AACZ,iBAAOA;AAAA,QACT;AACA,cAAM,QAAQ,EAAE,KAAK,MAAM,KAAKA,MAAK;AACrC,gBAAQ,OAAO,OAAO;AAAA,UACpB,KAAK;AACH,gBAAI,UAAU,KAAM,QAAO;AAAA,UAC7B,KAAK;AACH,mBAAO,MAAM,IAAI,KAAK,KAAK,IAAI,OAAO,OAAO,KAAK;AAAA,QACtD;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,IAAAF,SAAQ,YAAY;AAOpB,QAAM,SAAS,CAAAE,WAAS,OAAO,UAAUA,MAAK,CAAC;AAC/C,IAAAF,SAAQ,SAAS;AAOjB,QAAM,WAAW,CAAAE,WAASG,OAAM,WAAWH,MAAK,CAAC;AACjD,IAAAF,SAAQ,WAAW;AAAA;AAAA;;;ACnInB,IAAAQ,iBAAA;AAAA,yCAAAC,UAAAC,SAAA;AAAA,QAAM,KAAK,QAAQ,IAAI;AACvB,QAAMC,QAAO,QAAQ,MAAM;AAC3B,QAAM,UAAU;AAEhB,aAAS,SAAS,UAAU,cAAc;AACxC,UAAI;AACJ,UAAI;AACF,iBAAS,SAAS,QAAQ;AAAA,MAC5B,SAAS,IAAI;AACX,iBAAS;AAAA,MACX;AACA,aAAO;AAAA,IACT;AAQA,aAAS,SAAS,UAAU;AAC1B,aAAO,QAAQ;AAAA,QACb,GAAG,aAAa,UAAU;AAAA,UACxB,UAAU;AAAA,QACZ,CAAC;AAAA,MACH;AAAA,IACF;AAQA,aAAS,UAAU,UAAU,MAAM;AACjC,SAAG,UAAUA,MAAK,QAAQ,QAAQ,GAAG;AAAA,QACnC,WAAW;AAAA,MACb,CAAC;AACD,SAAG,cAAc,UAAU,QAAQ,UAAU,IAAI,CAAC;AAAA,IACpD;AAEA,IAAAD,QAAO,UAAU,EAAE,UAAU,UAAU,UAAU;AAAA;AAAA;;;ACzCjD;AAAA,uCAAAE,UAAAC,SAAA;AAAA,QAAM,KAAK,QAAQ,IAAI;AACvB,QAAMC,QAAO,QAAQ,MAAM;AAE3B,aAAS,IAAI,YAAY;AACvB,UAAI,CAAC,GAAG,WAAW,UAAU,GAAG;AAC9B,eAAO;AAAA,MACT;AAEA,UAAI;AACF,YAAI,GAAG,SAAS,UAAU,EAAE,YAAY,GAAG;AAEzC,aAAG,YAAY,UAAU,EAAE,QAAQ,UAAQ;AACzC,kBAAM,UAAUA,MAAK,KAAK,YAAY,IAAI;AAE1C,gBAAI,GAAG,SAAS,OAAO,EAAE,OAAO,GAAG;AACjC,iBAAG,WAAW,OAAO;AAAA,YACvB;AAAA,UACF,CAAC;AACD,aAAG,UAAU,UAAU;AAAA,QACzB,OAAO;AACL,aAAG,WAAW,UAAU;AAAA,QAC1B;AAEA,eAAO;AAAA,MACT,SAAS,OAAO;AACd,gBAAQ,MAAM,wBAAwB,UAAU,KAAK,MAAM,OAAO,EAAE;AAAA,MACtE;AAAA,IACF;AAEA,IAAAD,QAAO,UAAU,EAAE,IAAI;AAAA;AAAA;;;AC7BvB,IAAAE,iBAAA;AAAA,yCAAAC,UAAAC,SAAA;AAAA,QAAMC,QAAO,QAAQ,MAAM;AAC3B,QAAM,KAAK,QAAQ,IAAI;AACvB,QAAM,OAAO;AACb,QAAM,EAAE,WAAW,SAAS,IAAI;AAChC,QAAM,EAAE,IAAI,IAAI;AAEhB,QAAMC,SAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUZ,MAAM,SAAU,OAAO,UAAU;AAC/B,cAAM,KAAK;AACX,WAAG,OAAO,IAAI,KAAK;AAEnB,WAAG,YAAY,CAAC;AAChB,WAAG,cAAc,CAAC;AAElB,WAAG,cAAc,WAAWD,MAAK,QAAQ,UAAU,KAAK,IAAIA,MAAK,QAAQ,WAAW,cAAc,KAAK;AAEvG,YAAI,GAAG,WAAW,GAAG,WAAW,GAAG;AACjC,aAAG,aAAa,SAAS,GAAG,aAAa,CAAC,CAAC;AAAA,QAC7C;AAAA,MACF;AAAA,MAEA,IAAI,aAAa;AACf,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,IAAI,WAAWE,QAAO;AACpB,aAAK,cAAcA;AAAA,MACrB;AAAA,MAEA,IAAI,WAAW;AACb,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,IAAI,SAASA,QAAO;AAClB,aAAK,YAAYA;AAAA,MACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,UAAU,SAAU,YAAY;AAC9B,cAAM,KAAK;AACX,cAAM,MAAMF,MAAK,QAAQ,UAAU;AACnC,cAAM,QAAQA,MAAK,SAAS,UAAU;AAEtC,WAAG,KAAK,OAAO,GAAG;AAAA,MACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,KAAK,WAAY;AACf,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,MAAM,WAAY;AAChB,eAAO,OAAO,KAAK,KAAK,UAAU;AAAA,MACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,QAAQ,SAAU,KAAKE,QAAO;AAC5B,aAAK,SAAS,GAAG,IAAI;AACrB,aAAK,WAAW,GAAG,IAAIA;AAAA,MACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,WAAW,SAAU,KAAK;AACxB,eAAO,KAAK,SAAS,GAAG;AACxB,eAAO,KAAK,WAAW,GAAG;AAAA,MAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,QAAQ,SAAU,KAAK;AACrB,aAAK,SAAS,GAAG,IAAI;AACrB,eAAO,KAAK,WAAW,GAAG;AAAA,MAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,QAAQ,WAAY;AAClB,cAAM,KAAK;AACX,cAAM,MAAM,CAAC;AAEb,cAAMC,QAAO,OAAO,KAAK,GAAG,QAAQ;AAGpC,YAAIA,MAAK,WAAW,GAAG;AACrB;AAAA,QACF;AAEA,QAAAA,MAAK,QAAQ,SAAU,KAAK;AAC1B,cAAI,GAAG,IAAI,GAAG,WAAW,GAAG;AAAA,QAC9B,CAAC;AAED,WAAG,WAAW,CAAC;AACf,WAAG,aAAa;AAAA,MAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,MAAM,SAAU,SAAS;AACvB,cAAM,KAAK;AACX,SAAC,WAAW,GAAG,OAAO;AACtB,kBAAU,GAAG,aAAa,GAAG,UAAU;AAAA,MACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,iBAAiB,WAAY;AAC3B,eAAO,IAAI,KAAK,WAAW;AAAA,MAC7B;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,SAAS,WAAY;AACnB,cAAM,KAAK;AACX,WAAG,WAAW,CAAC;AACf,WAAG,aAAa,CAAC;AAEjB,WAAG,gBAAgB;AAAA,MACrB;AAAA,IACF;AAEA,IAAAJ,QAAO,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASf,MAAM,SAAU,OAAO,UAAU;AAC/B,eAAO,KAAK,OAAO,OAAO,QAAQ;AAAA,MACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,QAAQ,SAAU,OAAO,UAAU;AACjC,cAAM,MAAM,OAAO,OAAOE,MAAK;AAC/B,YAAI,KAAK,OAAO,QAAQ;AACxB,eAAO;AAAA,MACT;AAAA,MAEA,gBAAgB,SAAU,UAAU;AAClC,cAAM,MAAM,OAAO,OAAOA,MAAK;AAC/B,YAAI,SAAS,QAAQ;AACrB,eAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,gBAAgB,SAAU,OAAO,UAAU;AACzC,cAAM,WAAW,WAAWD,MAAK,QAAQ,UAAU,KAAK,IAAIA,MAAK,QAAQ,WAAW,cAAc,KAAK;AACvG,eAAO,IAAI,QAAQ;AAAA,MACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,UAAU,SAAU,UAAU;AAC5B,cAAM,WAAW,WAAWA,MAAK,QAAQ,QAAQ,IAAIA,MAAK,QAAQ,WAAW,YAAY;AACzF,eAAO,IAAI,QAAQ;AAAA,MACrB;AAAA,IACF;AAAA;AAAA;;;ACrNA,IAAAI,iBAAA;AAAA,2CAAAC,UAAAC,SAAA;AAAA,QAAIC,QAAO,QAAQ,MAAM;AACzB,QAAI,SAAS,QAAQ,QAAQ;AAE7B,IAAAD,QAAO,UAAU;AAAA,MACf,gBAAgB,SAAU,UAAU,aAAa;AAC/C,YAAI,QAAQC,MAAK,SAAS,QAAQ;AAClC,YAAI,MAAMA,MAAK,QAAQ,QAAQ;AAC/B,eAAO,KAAK,OAAO,OAAO,KAAK,WAAW;AAAA,MAC5C;AAAA,MAEA,QAAQ,SAAU,SAAS,OAAO,aAAa;AAC7C,YAAI,KAAK,QAAQ,IAAI;AACrB,YAAI,YAAY;AAChB,YAAIC,SAAQ,UAAU,KAAK,SAAS,KAAK;AACzC,YAAI,oBAAoB,CAAC;AAEzB,YAAI,sBAAsB,SAASC,uBAAsB;AACvD,gBAAM,gBAAgBD,OAAM,KAAK;AAEjC,wBAAc,QAAQ,SAAS,QAAQ,OAAO;AAC5C,gBAAI;AACF,iBAAG,SAAS,KAAK;AAAA,YACnB,SAAS,KAAK;AACZ,kBAAI,IAAI,SAAS,UAAU;AACzB,gBAAAA,OAAM,UAAU,KAAK;AAAA,cACvB;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH;AAEA,4BAAoB;AAEpB,eAAO;AAAA;AAAA;AAAA;AAAA;AAAA,UAKL,OAAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQP,SAAS,SAAU,QAAQ;AACzB,mBAAO,OAAO,WAAW,KAAK,EAAE,OAAO,MAAM,EAAE,OAAO,KAAK;AAAA,UAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,gBAAgB,SAAU,MAAM;AAC9B,mBAAO,KAAK,kBAAkB,IAAI,EAAE;AAAA,UACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWA,cAAc,SAAU,OAAO;AAC7B,gBAAI,KAAK;AACT,oBAAQ,SAAS,CAAC;AAElB,gBAAI,MAAM;AAAA,cACR,cAAc,CAAC;AAAA,cACf,eAAe,CAAC;AAAA,cAChB,iBAAiB,CAAC;AAAA,YACpB;AAEA,eAAG,iBAAiB,KAAK,EAAE,QAAQ,SAAU,OAAO;AAClD,kBAAI,MAAM,SAAS;AACjB,oBAAI,aAAa,KAAK,MAAM,GAAG;AAC/B;AAAA,cACF;AACA,kBAAI,MAAM,UAAU;AAClB,oBAAI,cAAc,KAAK,MAAM,GAAG;AAChC;AAAA,cACF;AACA,kBAAI,gBAAgB,KAAK,MAAM,GAAG;AAAA,YACpC,CAAC;AACD,mBAAO;AAAA,UACT;AAAA,UAEA,mBAAmB,SAAU,MAAM;AACjC,gBAAI;AAEJ,gBAAI;AACF,sBAAQ,GAAG,SAAS,IAAI;AAAA,YAC1B,SAAS,IAAI;AACX,mBAAK,YAAY,IAAI;AACrB,qBAAO,EAAE,KAAK,MAAM,UAAU,MAAM,KAAK,GAAG;AAAA,YAC9C;AAEA,gBAAI,aAAa;AACf,qBAAO,KAAK,gCAAgC,IAAI;AAAA,YAClD;AAEA,mBAAO,KAAK,oCAAoC,MAAM,KAAK;AAAA,UAC7D;AAAA,UAEA,qCAAqC,SAAU,MAAM,OAAO;AAC1D,gBAAI,OAAOA,OAAM,OAAO,IAAI;AAC5B,gBAAI,cAAc,CAAC,CAAC;AAEpB,gBAAI,QAAQ,MAAM;AAClB,gBAAI,QAAQ,MAAM,MAAM,QAAQ;AAEhC,gBAAI;AACJ,gBAAI;AAEJ,gBAAI,CAAC,MAAM;AACT,qBAAO,EAAE,MAAM,OAAO,OAAO,MAAM;AAAA,YACrC,OAAO;AACL,gCAAkB,UAAU,KAAK;AACjC,gCAAkB,UAAU,KAAK;AAAA,YACnC;AAEA,gBAAI,SAAU,kBAAkB,IAAI,IAAI;AAAA,cACtC,KAAK;AAAA,cACL,SAAS,CAAC,eAAe,mBAAmB;AAAA,cAC5C;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAAA,UAEA,iCAAiC,SAAU,MAAM;AAC/C,gBAAI,OAAOA,OAAM,OAAO,IAAI;AAC5B,gBAAI,cAAc,CAAC,CAAC;AAEpB,gBAAI;AACJ,gBAAI;AACF,8BAAgB,GAAG,aAAa,IAAI;AAAA,YACtC,SAAS,IAAI;AACX,8BAAgB;AAAA,YAClB;AAEA,gBAAI,cAAc;AAClB,gBAAI,OAAO,KAAK,QAAQ,aAAa;AAErC,gBAAI,CAAC,MAAM;AACT,qBAAO,EAAE,KAAW;AAAA,YACtB,OAAO;AACL,4BAAc,SAAS,KAAK;AAAA,YAC9B;AAEA,gBAAI,SAAU,kBAAkB,IAAI,IAAI;AAAA,cACtC,KAAK;AAAA,cACL,SAAS,CAAC,eAAe;AAAA,cACzB;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUA,iBAAiB,SAAU,OAAO;AAChC,gBAAI,KAAK;AACT,oBAAQ,SAAS,CAAC;AAElB,mBAAO,GACJ,iBAAiB,KAAK,EACtB,OAAO,SAAU,OAAO;AACvB,qBAAO,MAAM;AAAA,YACf,CAAC,EACA,IAAI,SAAU,OAAO;AACpB,qBAAO,MAAM;AAAA,YACf,CAAC;AAAA,UACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,kBAAkB,SAAU,OAAO;AACjC,oBAAQ,SAAS,CAAC;AAElB,gBAAI,KAAK;AACT,gBAAI,WAAW,MAAM,IAAI,SAAU,MAAM;AACvC,qBAAO,GAAG,kBAAkB,IAAI;AAAA,YAClC,CAAC;AAGD,mBAAO;AAAA,UACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASA,aAAa,SAAU,WAAW;AAChC,mBAAO,kBAAkB,SAAS;AAClC,YAAAA,OAAM,UAAU,SAAS;AAAA,UAC3B;AAAA;AAAA;AAAA;AAAA;AAAA,UAMA,iBAAiB,WAAY;AAC3B,YAAAA,OAAM,gBAAgB;AAAA,UACxB;AAAA;AAAA;AAAA;AAAA,UAKA,SAAS,WAAY;AACnB,gCAAoB,CAAC;AACrB,YAAAA,OAAM,QAAQ;AAAA,UAChB;AAAA,UAEA,8BAA8B,SAAU,YAAY;AAClD,gBAAI,gBAAgB,GAAG,aAAa,WAAW,GAAG;AAClD,gBAAI,OAAO,KAAK,QAAQ,aAAa;AACrC,gBAAI,OAAO,OAAO,OAAO,WAAW,MAAM,EAAE,KAAW,CAAC;AACxD,mBAAO,KAAK;AACZ,mBAAO,KAAK;AACZ,mBAAO;AAAA,UACT;AAAA,UAEA,kCAAkC,SAAU,YAAY;AACtD,gBAAI,OAAO,GAAG,SAAS,WAAW,GAAG;AACrC,gBAAI,OAAO,OAAO,OAAO,WAAW,MAAM;AAAA,cACxC,MAAM,KAAK;AAAA,cACX,OAAO,KAAK,MAAM,QAAQ;AAAA,YAC5B,CAAC;AACD,mBAAO,KAAK;AACZ,mBAAO;AAAA,UACT;AAAA;AAAA;AAAA;AAAA;AAAA,UAMA,WAAW,SAAU,SAAS;AAC5B,gCAAoB;AAEpB,sBAAU,OAAO,YAAY,cAAc,OAAO;AAElD,gBAAI,UAAU;AACd,gBAAIE,QAAO,OAAO,KAAK,OAAO;AAE9B,gBAAIA,MAAK,WAAW,GAAG;AACrB;AAAA,YACF;AAEA,gBAAI,KAAK;AAET,YAAAA,MAAK,QAAQ,SAAU,WAAW;AAChC,kBAAI,aAAa,QAAQ,SAAS;AAElC,kBAAI;AACF,oBAAI,OAAO,cACP,GAAG,6BAA6B,UAAU,IAC1C,GAAG,iCAAiC,UAAU;AAClD,gBAAAF,OAAM,OAAO,WAAW,IAAI;AAAA,cAC9B,SAAS,KAAK;AAGZ,oBAAI,IAAI,SAAS,UAAU;AACzB,wBAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF,CAAC;AAED,YAAAA,OAAM,KAAK,OAAO;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;AClSA;AAAA,gEAAAG,UAAAC,SAAA;AAAA,IAAAA,QAAO,UAAU,SAAU,KAAK,MAAM;AAClC,UAAI,CAAC,KAAM,QAAO,CAAC;AACnB,UAAI,OAAO,SAAS,WAAY,QAAO,EAAE,KAAK,KAAK;AACnD,UAAI,QAAQ,KAAK,SAAS;AAC1B,UAAI,OAAO,UAAU,SAAU,SAAQ,MAAM,QAAM,CAAC,EAAE,KAAK,GAAG;AAC9D,UAAI,SAAU,OAAO,KAAK,WAAW,YAAa,KAAK,SAAS;AAChE,UAAI,WAAW,KAAK,YAAY,SAAS,KAAKC,QAAO;AAAE,eAAOA;AAAA,MAAO;AAErE,UAAI,MAAM,KAAK,OAAQ,0BAAU,GAAG;AAChC,eAAO,SAAUC,OAAM;AACnB,iBAAO,SAAU,GAAG,GAAG;AACnB,gBAAI,OAAO,EAAE,KAAK,GAAG,OAAOA,MAAK,CAAC,EAAE;AACpC,gBAAI,OAAO,EAAE,KAAK,GAAG,OAAOA,MAAK,CAAC,EAAE;AACpC,mBAAO,EAAE,MAAM,IAAI;AAAA,UACvB;AAAA,QACJ;AAAA,MACJ,GAAG,KAAK,GAAG;AAEX,UAAI,OAAO,CAAC;AACZ,cAAQ,SAAS,UAAW,QAAQ,KAAKA,OAAM,OAAO;AAClD,YAAIC,UAAS,QAAS,OAAO,IAAI,MAAM,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAK;AACjE,YAAI,iBAAiB,QAAQ,OAAO;AAEpC,YAAID,SAAQA,MAAK,UAAU,OAAOA,MAAK,WAAW,YAAY;AAC1D,UAAAA,QAAOA,MAAK,OAAO;AAAA,QACvB;AAEA,QAAAA,QAAO,SAAS,KAAK,QAAQ,KAAKA,KAAI;AAEtC,YAAIA,UAAS,QAAW;AACpB;AAAA,QACJ;AACA,YAAI,OAAOA,UAAS,YAAYA,UAAS,MAAM;AAC3C,iBAAO,KAAK,UAAUA,KAAI;AAAA,QAC9B;AACA,YAAIE,SAAQF,KAAI,GAAG;AACf,cAAI,MAAM,CAAC;AACX,mBAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AAClC,gBAAI,OAAO,UAAUA,OAAM,GAAGA,MAAK,CAAC,GAAG,QAAM,CAAC,KAAK,KAAK,UAAU,IAAI;AACtE,gBAAI,KAAKC,UAAS,QAAQ,IAAI;AAAA,UAClC;AACA,iBAAO,MAAM,IAAI,KAAK,GAAG,IAAIA,UAAS;AAAA,QAC1C,OACK;AACD,cAAI,KAAK,QAAQD,KAAI,MAAM,IAAI;AAC3B,gBAAI,OAAQ,QAAO,KAAK,UAAU,WAAW;AAC7C,kBAAM,IAAI,UAAU,uCAAuC;AAAA,UAC/D,MACK,MAAK,KAAKA,KAAI;AAEnB,cAAIG,QAAO,WAAWH,KAAI,EAAE,KAAK,OAAO,IAAIA,KAAI,CAAC;AACjD,cAAI,MAAM,CAAC;AACX,mBAAS,IAAI,GAAG,IAAIG,MAAK,QAAQ,KAAK;AAClC,gBAAI,MAAMA,MAAK,CAAC;AAChB,gBAAIJ,SAAQ,UAAUC,OAAM,KAAKA,MAAK,GAAG,GAAG,QAAM,CAAC;AAEnD,gBAAG,CAACD,OAAO;AAEX,gBAAI,WAAW,KAAK,UAAU,GAAG,IAC3B,iBACAA;AACN;AACA,gBAAI,KAAKE,UAAS,QAAQ,QAAQ;AAAA,UACtC;AACA,eAAK,OAAO,KAAK,QAAQD,KAAI,GAAG,CAAC;AACjC,iBAAO,MAAM,IAAI,KAAK,GAAG,IAAIC,UAAS;AAAA,QAC1C;AAAA,MACJ,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC;AAAA,IAC9B;AAEA,QAAIC,WAAU,MAAM,WAAW,SAAU,GAAG;AACxC,aAAO,CAAC,EAAE,SAAS,KAAK,CAAC,MAAM;AAAA,IACnC;AAEA,QAAI,aAAa,OAAO,QAAQ,SAAU,KAAK;AAC3C,UAAI,MAAM,OAAO,UAAU,kBAAkB,WAAY;AAAE,eAAO;AAAA,MAAK;AACvE,UAAIC,QAAO,CAAC;AACZ,eAAS,OAAO,KAAK;AACjB,YAAI,IAAI,KAAK,KAAK,GAAG,EAAG,CAAAA,MAAK,KAAK,GAAG;AAAA,MACzC;AACA,aAAOA;AAAA,IACX;AAAA;AAAA;;;ACjFA;AAAA,4DAAAC,UAAAC,SAAA;AAAA;AAUA,QAAM,KAAK,QAAQ,SAAS;AAC5B,QAAM,iBAAiB;AACvB,QAAM,YAAY;AAClB,QAAM,MAAM;AACZ,QAAMC,UAAS;AACf,QAAM,OAAO;AAEb,QAAMC,SAAQ,cAAiB,0BAA0B;AAYzD,QAAM,kBAAkB,oBAAI,QAAQ;AACpC,QAAM,cAAc,WAAW,QAAQ;AAEvC,QAAM,uBAAuB,CAAC,YAAY,SAAS;AACnD,QAAM,mCAAmC,kCAAkC,qBACzE,IAAI,cAAY,IAAI,QAAQ,GAAG,EAC/B,KAAK,IAAI,CAAC;AAOZ,aAAS,qBAAqB,eAAe;AAC5C,aAAO,qBAAqB,SAAS,aAAa;AAAA,IACnD;AAOA,aAAS,gBAAgB,QAAQ;AAChC,UAAI,CAAC,gBAAgB,IAAI,MAAM,GAAG;AACjC,wBAAgB;AAAA,UACf;AAAA,UACA,KAAK,GAAG,IAAI,OAAO,IAAI,WAAW,IAAI,UAAU,MAAM,CAAC,EAAE;AAAA,QAC1D;AAAA,MACD;AAEA,aAAO,gBAAgB,IAAI,MAAM;AAAA,IAClC;AAWA,QAAM,kBAAN,MAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMrB,YAAY,mBAAmB,eAAe;AAC7C,QAAAD,QAAO,mBAAmB,iCAAiC;AAC3D,QAAAA,QAAO,eAAe,4BAA4B;AAClD,QAAAA;AAAA,UACC,qBAAqB,aAAa;AAAA,UAClC;AAAA,QACD;AAEA,QAAAC,OAAM,sBAAsB,iBAAiB,EAAE;AAE/C,cAAM,cAAc,kBAAkB;AAEtC,QAAAA,OAAM,UAAU,aAAa,8BAA8B;AAE3D,aAAK,iBAAiB,eAAe;AAAA,UACpC;AAAA,UACA;AAAA,UACA;AAAA,QACD;AACA,aAAK,oBAAoB;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,qBAAqB,UAAU,QAAQ;AACtC,cAAM,gBAAgB,KAAK,0BAA0B,UAAU,MAAM;AAErE,YAAI,CAAC,eAAe;AACnB,iBAAO;AAAA,QACR;AAQA,cAAM,UAAU,EAAE,GAAG,cAAc;AAGnC,YAAI,QAAQ,WAAW,MAAM;AAC5B,UAAAA;AAAA,YACC,mDAAmD,QAAQ;AAAA,UAC5D;AACA,kBAAQ,SAAS,GAAG,aAAa,UAAU,OAAO;AAAA,QACnD;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,0BAA0B,UAAU,QAAQ;AAS3C,cAAM,iBAAiB,KAAK,eAAe,kBAAkB,QAAQ;AAErE,YAAI,eAAe,UAAU;AAC5B,UAAAA,OAAM,sCAAsC,QAAQ,EAAE;AACtD,iBAAO;AAAA,QACR;AAEA,cAAM,eAAe,gBAAgB,MAAM;AAC3C,cAAM,UACL,eAAe,WACf,eAAe,KAAK,iBAAiB;AAEtC,YAAI,SAAS;AACZ,UAAAA,OAAM,6CAA6C,QAAQ,EAAE;AAC7D,iBAAO;AAAA,QACR;AAEA,eAAO,eAAe,KAAK;AAAA,MAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaA,qBAAqB,UAAU,QAAQ,QAAQ;AAC9C,YAAI,UAAU,OAAO,OAAO,QAAQ,QAAQ,GAAG;AAC9C;AAAA,QACD;AAEA,cAAM,iBAAiB,KAAK,eAAe,kBAAkB,QAAQ;AAErE,YAAI,kBAAkB,CAAC,eAAe,UAAU;AAC/C,UAAAA,OAAM,2BAA2B,QAAQ,EAAE;AAG3C,gBAAM,oBAAoB,OAAO,OAAO,CAAC,GAAG,MAAM;AAOlD,cAAI,OAAO,OAAO,mBAAmB,QAAQ,GAAG;AAC/C,8BAAkB,SAAS;AAAA,UAC5B;AAEA,yBAAe,KAAK,UAAU;AAC9B,yBAAe,KAAK,eAAe,gBAAgB,MAAM;AAAA,QAC1D;AAAA,MACD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,YAAY;AACX,QAAAA,OAAM,8BAA8B,KAAK,iBAAiB,EAAE;AAC5D,aAAK,eAAe,UAAU;AAAA,MAC/B;AAAA,IACD;AAEA,IAAAF,QAAO,UAAU;AAAA;AAAA;;;AC3NjB;AAAA,sCAAAG,UAAAC,SAAA;AAAA,QAAM,OAAN,MAAW;AAAA;AAAA;AAAA,MAIV,YAAYC,QAAO;AAClB,aAAK,QAAQA;AAGb,aAAK,OAAO;AAAA,MACb;AAAA,IACD;AAEA,QAAM,QAAN,MAAY;AAAA;AAAA;AAAA;AAAA;AAAA,MAMX,cAAc;AACb,aAAK,MAAM;AAAA,MACZ;AAAA,MAEA,QAAQA,QAAO;AACd,cAAMC,QAAO,IAAI,KAAKD,MAAK;AAE3B,YAAI,KAAK,OAAO;AACf,eAAK,MAAM,OAAOC;AAClB,eAAK,QAAQA;AAAA,QACd,OAAO;AACN,eAAK,QAAQA;AACb,eAAK,QAAQA;AAAA,QACd;AAEA,aAAK;AAAA,MACN;AAAA,MAEA,UAAU;AACT,cAAM,UAAU,KAAK;AACrB,YAAI,CAAC,SAAS;AACb;AAAA,QACD;AAEA,aAAK,QAAQ,KAAK,MAAM;AACxB,aAAK;AACL,eAAO,QAAQ;AAAA,MAChB;AAAA,MAEA,QAAQ;AACP,aAAK,QAAQ;AACb,aAAK,QAAQ;AACb,aAAK,QAAQ;AAAA,MACd;AAAA,MAEA,IAAI,OAAO;AACV,eAAO,KAAK;AAAA,MACb;AAAA,MAEA,EAAG,OAAO,QAAQ,IAAI;AACrB,YAAI,UAAU,KAAK;AAEnB,eAAO,SAAS;AACf,gBAAM,QAAQ;AACd,oBAAU,QAAQ;AAAA,QACnB;AAAA,MACD;AAAA,IACD;AAEA,IAAAF,QAAO,UAAU;AAAA;AAAA;;;ACnEjB;AAAA,kCAAAG,UAAAC,SAAA;AAAA;AACA,QAAM,QAAQ;AAEd,QAAM,SAAS,iBAAe;AAC7B,UAAI,GAAG,OAAO,UAAU,WAAW,KAAK,gBAAgB,aAAa,cAAc,IAAI;AACtF,cAAM,IAAI,UAAU,qDAAqD;AAAA,MAC1E;AAEA,YAAM,QAAQ,IAAI,MAAM;AACxB,UAAI,cAAc;AAElB,YAAM,OAAO,MAAM;AAClB;AAEA,YAAI,MAAM,OAAO,GAAG;AACnB,gBAAM,QAAQ,EAAE;AAAA,QACjB;AAAA,MACD;AAEA,YAAM,MAAM,OAAO,IAAIC,aAAY,SAAS;AAC3C;AAEA,cAAM,UAAU,YAAY,GAAG,GAAG,IAAI,GAAG;AAEzC,QAAAA,SAAQ,MAAM;AAEd,YAAI;AACH,gBAAM;AAAA,QACP,QAAQ;AAAA,QAAC;AAET,aAAK;AAAA,MACN;AAEA,YAAM,UAAU,CAAC,IAAIA,aAAY,SAAS;AACzC,cAAM,QAAQ,IAAI,KAAK,MAAM,IAAIA,UAAS,GAAG,IAAI,CAAC;AAElD,SAAC,YAAY;AAKZ,gBAAM,QAAQ,QAAQ;AAEtB,cAAI,cAAc,eAAe,MAAM,OAAO,GAAG;AAChD,kBAAM,QAAQ,EAAE;AAAA,UACjB;AAAA,QACD,GAAG;AAAA,MACJ;AAEA,YAAM,YAAY,CAAC,OAAO,SAAS,IAAI,QAAQ,CAAAA,aAAW;AACzD,gBAAQ,IAAIA,UAAS,GAAG,IAAI;AAAA,MAC7B,CAAC;AAED,aAAO,iBAAiB,WAAW;AAAA,QAClC,aAAa;AAAA,UACZ,KAAK,MAAM;AAAA,QACZ;AAAA,QACA,cAAc;AAAA,UACb,KAAK,MAAM,MAAM;AAAA,QAClB;AAAA,QACA,YAAY;AAAA,UACX,OAAO,MAAM;AACZ,kBAAM,MAAM;AAAA,UACb;AAAA,QACD;AAAA,MACD,CAAC;AAED,aAAO;AAAA,IACR;AAEA,IAAAD,QAAO,UAAU;AAAA;AAAA;;;ACtEjB;AAAA,mCAAAE,UAAAC,SAAA;AAAA;AACA,QAAM,SAAS;AAEf,QAAM,WAAN,cAAuB,MAAM;AAAA,MAC5B,YAAYC,QAAO;AAClB,cAAM;AACN,aAAK,QAAQA;AAAA,MACd;AAAA,IACD;AAGA,QAAM,cAAc,OAAO,SAAS,WAAW,OAAO,MAAM,OAAO;AAGnE,QAAM,SAAS,OAAM,YAAW;AAC/B,YAAM,SAAS,MAAM,QAAQ,IAAI,OAAO;AACxC,UAAI,OAAO,CAAC,MAAM,MAAM;AACvB,cAAM,IAAI,SAAS,OAAO,CAAC,CAAC;AAAA,MAC7B;AAEA,aAAO;AAAA,IACR;AAEA,QAAM,UAAU,OAAO,UAAU,QAAQ,YAAY;AACpD,gBAAU;AAAA,QACT,aAAa;AAAA,QACb,eAAe;AAAA,QACf,GAAG;AAAA,MACJ;AAEA,YAAM,QAAQ,OAAO,QAAQ,WAAW;AAGxC,YAAM,QAAQ,CAAC,GAAG,QAAQ,EAAE,IAAI,aAAW,CAAC,SAAS,MAAM,aAAa,SAAS,MAAM,CAAC,CAAC;AAGzF,YAAM,aAAa,OAAO,QAAQ,gBAAgB,IAAI,QAAQ;AAE9D,UAAI;AACH,cAAM,QAAQ,IAAI,MAAM,IAAI,aAAW,WAAW,QAAQ,OAAO,CAAC,CAAC;AAAA,MACpE,SAAS,OAAO;AACf,YAAI,iBAAiB,UAAU;AAC9B,iBAAO,MAAM;AAAA,QACd;AAEA,cAAM;AAAA,MACP;AAAA,IACD;AAEA,IAAAD,QAAO,UAAU;AAAA;AAAA;;;ACjDjB;AAAA,sCAAAE,UAAAC,SAAA;AAAA;AACA,QAAMC,QAAO,QAAQ,MAAM;AAC3B,QAAM,KAAK,QAAQ,IAAI;AACvB,QAAM,EAAC,WAAAC,WAAS,IAAI,QAAQ,MAAM;AAClC,QAAM,UAAU;AAEhB,QAAM,SAASA,WAAU,GAAG,IAAI;AAChC,QAAM,UAAUA,WAAU,GAAG,KAAK;AAElC,QAAM,eAAe;AAAA,MACpB,WAAW;AAAA,MACX,MAAM;AAAA,IACP;AAEA,aAAS,UAAU,EAAC,KAAI,GAAG;AAC1B,UAAI,QAAQ,cAAc;AACzB;AAAA,MACD;AAEA,YAAM,IAAI,MAAM,2BAA2B,IAAI,EAAE;AAAA,IAClD;AAEA,QAAM,YAAY,CAAC,MAAM,SAAS,SAAS,UAAa,KAAK,aAAa,IAAI,CAAC,EAAE;AAEjF,IAAAF,QAAO,UAAU,OAAO,OAAO,YAAY;AAC1C,gBAAU;AAAA,QACT,KAAK,QAAQ,IAAI;AAAA,QACjB,MAAM;AAAA,QACN,eAAe;AAAA,QACf,GAAG;AAAA,MACJ;AAEA,gBAAU,OAAO;AAEjB,YAAM,SAAS,QAAQ,gBAAgB,SAAS;AAEhD,aAAO,QAAQ,OAAO,OAAM,UAAS;AACpC,YAAI;AACH,gBAAM,OAAO,MAAM,OAAOC,MAAK,QAAQ,QAAQ,KAAK,KAAK,CAAC;AAC1D,iBAAO,UAAU,QAAQ,MAAM,IAAI;AAAA,QACpC,QAAQ;AACP,iBAAO;AAAA,QACR;AAAA,MACD,GAAG,OAAO;AAAA,IACX;AAEA,IAAAD,QAAO,QAAQ,OAAO,CAAC,OAAO,YAAY;AACzC,gBAAU;AAAA,QACT,KAAK,QAAQ,IAAI;AAAA,QACjB,eAAe;AAAA,QACf,MAAM;AAAA,QACN,GAAG;AAAA,MACJ;AAEA,gBAAU,OAAO;AAEjB,YAAM,SAAS,QAAQ,gBAAgB,GAAG,WAAW,GAAG;AAExD,iBAAW,SAAS,OAAO;AAC1B,YAAI;AACH,gBAAM,OAAO,OAAOC,MAAK,QAAQ,QAAQ,KAAK,KAAK,CAAC;AAEpD,cAAI,UAAU,QAAQ,MAAM,IAAI,GAAG;AAClC,mBAAO;AAAA,UACR;AAAA,QACD,QAAQ;AAAA,QAAC;AAAA,MACV;AAAA,IACD;AAAA;AAAA;;;ACnEA;AAAA,sCAAAE,UAAAC,SAAA;AAAA;AACA,QAAM,KAAK,QAAQ,IAAI;AACvB,QAAM,EAAC,WAAAC,WAAS,IAAI,QAAQ,MAAM;AAElC,QAAM,UAAUA,WAAU,GAAG,MAAM;AAEnC,IAAAD,QAAO,UAAU,OAAME,UAAQ;AAC9B,UAAI;AACH,cAAM,QAAQA,KAAI;AAClB,eAAO;AAAA,MACR,SAAS,GAAG;AACX,eAAO;AAAA,MACR;AAAA,IACD;AAEA,IAAAF,QAAO,QAAQ,OAAO,CAAAE,UAAQ;AAC7B,UAAI;AACH,WAAG,WAAWA,KAAI;AAClB,eAAO;AAAA,MACR,SAAS,GAAG;AACX,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA;;;ACtBA;AAAA,kCAAAC,UAAAC,SAAA;AAAA;AACA,QAAMC,QAAO,QAAQ,MAAM;AAC3B,QAAM,aAAa;AACnB,QAAM,aAAa;AAEnB,QAAM,OAAO,uBAAO,aAAa;AAEjC,IAAAD,QAAO,UAAU,OAAO,MAAM,UAAU,CAAC,MAAM;AAC9C,UAAI,YAAYC,MAAK,QAAQ,QAAQ,OAAO,EAAE;AAC9C,YAAM,EAAC,MAAAC,MAAI,IAAID,MAAK,MAAM,SAAS;AACnC,YAAM,QAAQ,CAAC,EAAE,OAAO,IAAI;AAE5B,YAAM,aAAa,OAAM,kBAAiB;AACzC,YAAI,OAAO,SAAS,YAAY;AAC/B,iBAAO,WAAW,OAAO,aAAa;AAAA,QACvC;AAEA,cAAM,YAAY,MAAM,KAAK,cAAc,GAAG;AAC9C,YAAI,OAAO,cAAc,UAAU;AAClC,iBAAO,WAAW,CAAC,SAAS,GAAG,aAAa;AAAA,QAC7C;AAEA,eAAO;AAAA,MACR;AAGA,aAAO,MAAM;AAEZ,cAAM,YAAY,MAAM,WAAW,EAAC,GAAG,SAAS,KAAK,UAAS,CAAC;AAE/D,YAAI,cAAc,MAAM;AACvB;AAAA,QACD;AAEA,YAAI,WAAW;AACd,iBAAOA,MAAK,QAAQ,WAAW,SAAS;AAAA,QACzC;AAEA,YAAI,cAAcC,OAAM;AACvB;AAAA,QACD;AAEA,oBAAYD,MAAK,QAAQ,SAAS;AAAA,MACnC;AAAA,IACD;AAEA,IAAAD,QAAO,QAAQ,OAAO,CAAC,MAAM,UAAU,CAAC,MAAM;AAC7C,UAAI,YAAYC,MAAK,QAAQ,QAAQ,OAAO,EAAE;AAC9C,YAAM,EAAC,MAAAC,MAAI,IAAID,MAAK,MAAM,SAAS;AACnC,YAAM,QAAQ,CAAC,EAAE,OAAO,IAAI;AAE5B,YAAM,aAAa,mBAAiB;AACnC,YAAI,OAAO,SAAS,YAAY;AAC/B,iBAAO,WAAW,KAAK,OAAO,aAAa;AAAA,QAC5C;AAEA,cAAM,YAAY,KAAK,cAAc,GAAG;AACxC,YAAI,OAAO,cAAc,UAAU;AAClC,iBAAO,WAAW,KAAK,CAAC,SAAS,GAAG,aAAa;AAAA,QAClD;AAEA,eAAO;AAAA,MACR;AAGA,aAAO,MAAM;AACZ,cAAM,YAAY,WAAW,EAAC,GAAG,SAAS,KAAK,UAAS,CAAC;AAEzD,YAAI,cAAc,MAAM;AACvB;AAAA,QACD;AAEA,YAAI,WAAW;AACd,iBAAOA,MAAK,QAAQ,WAAW,SAAS;AAAA,QACzC;AAEA,YAAI,cAAcC,OAAM;AACvB;AAAA,QACD;AAEA,oBAAYD,MAAK,QAAQ,SAAS;AAAA,MACnC;AAAA,IACD;AAEA,IAAAD,QAAO,QAAQ,SAAS;AAExB,IAAAA,QAAO,QAAQ,KAAK,SAAS,WAAW;AAExC,IAAAA,QAAO,QAAQ,OAAO;AAAA;AAAA;;;ACxFtB;AAAA,oCAAAG,UAAAC,SAAA;AAAA,KAAC,MAAI;AAAC,UAAI,IAAE,EAAC,wEAAwEC,IAAE;AAAC,iBAAS,yBAAyBA,IAAE;AAAC,iBAAO,QAAQ,QAAQ,EAAE,KAAK,WAAU;AAAC,gBAAIC,KAAE,IAAI,MAAM,yBAAuBD,KAAE,GAAG;AAAE,kBAAMC,GAAE,OAAK,oBAAmBA;AAAA,UAAC,CAAC;AAAA,QAAC;AAAC,iCAAyB,OAAK,MAAI,CAAC,GAAE,yBAAyB,UAAQ,0BAAyB,yBAAyB,KAAG,yEAAwED,GAAE,UAAQ;AAAA,MAAwB,GAAE,GAAGA,IAAE;AAAC;AAAa,QAAAA,GAAE,UAAQ,QAAQ,IAAI;AAAA,MAAC,GAAE,UAAUA,IAAE;AAAC;AAAa,QAAAA,GAAE,UAAQ,QAAQ,SAAS;AAAA,MAAC,GAAE,cAAcA,IAAE;AAAC;AAAa,QAAAA,GAAE,UAAQ,QAAQ,aAAa;AAAA,MAAC,GAAE,YAAYA,IAAE;AAAC;AAAa,QAAAA,GAAE,UAAQ,QAAQ,WAAW;AAAA,MAAC,GAAE,GAAGA,IAAE;AAAC;AAAa,QAAAA,GAAE,UAAQ,QAAQ,IAAI;AAAA,MAAC,GAAE,KAAKA,IAAE;AAAC;AAAa,QAAAA,GAAE,UAAQ,QAAQ,MAAM;AAAA,MAAC,GAAE,oFAAoFA,IAAEC,IAAEC,IAAE;AAAC;AAAa,YAAI,IAAE,OAAO,gBAAe,IAAE,CAACF,IAAEC,OAAI,EAAED,IAAE,QAAO,EAAC,OAAMC,IAAE,cAAa,KAAE,CAAC,GAAE,IAAEC,GAAE,WAAW,GAAE,IAAEA,GAAE,SAAS,GAAE,IAAEA,GAAE,aAAa,GAAE,IAAEA,GAAE,0FAA0F,GAAE,IAAEA,GAAE,IAAI,GAAE,IAAEA,GAAE,IAAI,GAAE,IAAEA,GAAE,MAAM;AAAE,iBAAS,EAAEF,IAAE;AAAC,iBAAOA,GAAE,WAAW,SAAS,IAAEA,KAAEA,GAAE,QAAQ,OAAM,GAAG;AAAA,QAAC;AAAC,UAAE,GAAE,OAAO;AAAE,cAAM,IAAE,EAAE,CAAAA,OAAG;AAAC,gBAAMC,KAAE,EAAED,EAAC;AAAE,iBAAM,CAACE,OAAKC,OAAI;AAAC,kBAAMC,KAAE,GAAGJ,EAAC,IAAIG,GAAE,KAAK,GAAG,CAAC;AAAG,gBAAIE,KAAE,QAAMH,KAAE,SAAOA,GAAE,IAAIE,EAAC;AAAE,mBAAO,WAASC,OAAIA,KAAE,QAAQ,MAAMJ,IAAE,GAAEE,EAAC,GAAE,QAAMD,MAAGA,GAAE,IAAIE,IAAEC,EAAC,IAAGA;AAAA,UAAC;AAAA,QAAC,GAAE,SAAS,GAAE,IAAE,EAAE,YAAY,GAAE,IAAE,EAAE,cAAc,GAAE,IAAE,EAAE,UAAU,GAAE,IAAE,EAAE,CAACL,IAAEC,IAAEC,OAAI;AAAC,qBAAO;AAAC,kBAAMC,KAAE,EAAE,MAAM,KAAKH,IAAEC,EAAC;AAAE,gBAAG,EAAEC,IAAEC,EAAC,EAAE,QAAOA;AAAE,kBAAMG,KAAE,EAAE,QAAQN,EAAC;AAAE,gBAAGM,OAAIN,GAAE;AAAO,YAAAA,KAAEM;AAAA,UAAC;AAAA,QAAC,GAAE,QAAQ,GAAE,IAAE,oBAAmB,IAAE,EAAE,CAAAN,OAAG;AAAC,gBAAMC,KAAE,EAAED,EAAC;AAAE,iBAAO,EAAE,KAAKC,EAAC,IAAEA,KAAE,KAAKA,EAAC;AAAA,QAAE,GAAE,uBAAuB;AAAE,iBAAS,GAAGD,IAAEC,KAAE,OAAG;AAAC,gBAAMC,KAAEF,GAAE;AAAO,cAAIG,KAAE,GAAEC,KAAE,IAAGE,KAAE,GAAED,KAAE,IAAGE,KAAE,GAAEC,KAAE,GAAEC,KAAE,GAAEC,KAAE,GAAEC,KAAE;AAAE,mBAAS,EAAEV,IAAEC,IAAE;AAAC,gBAAIE,KAAE,GAAEE,KAAE;AAAE,mBAAKF,KAAEH,MAAG;AAAC,kBAAIA,KAAED,GAAE,WAAWG,EAAC;AAAE,kBAAGF,MAAG,MAAIA,MAAG,GAAG,CAAAK,KAAE,KAAGA,KAAEL,KAAE;AAAA,uBAAWA,MAAG,MAAIA,MAAG,GAAG,CAAAK,KAAE,KAAGA,KAAEL,KAAE,KAAG;AAAA,mBAAO;AAAC,oBAAG,EAAEA,MAAG,MAAIA,MAAG,KAAK;AAAM,gBAAAK,KAAE,KAAGA,KAAEL,KAAE,KAAG;AAAA,cAAE;AAAC,cAAAE,MAAIC;AAAA,YAAG;AAAC,mBAAOA,KAAEH,OAAIK,KAAE,KAAIA;AAAA,UAAC;AAAC,mBAAS,EAAEN,IAAE;AAAC,YAAAG,KAAEH,IAAEI,KAAE,IAAGE,KAAE,GAAED,KAAE,IAAGM,KAAE;AAAA,UAAC;AAAC,mBAAS,IAAG;AAAC,gBAAIV,KAAEE;AAAE,gBAAG,OAAKH,GAAE,WAAWG,EAAC,EAAE,CAAAA;AAAA,gBAAS,MAAIA,MAAIA,KAAEH,GAAE,UAAQ,EAAEA,GAAE,WAAWG,EAAC,CAAC,IAAG,CAAAA;AAAI,gBAAGA,KAAEH,GAAE,UAAQ,OAAKA,GAAE,WAAWG,EAAC,GAAE;AAAC,kBAAGA,MAAI,EAAEA,KAAEH,GAAE,UAAQ,EAAEA,GAAE,WAAWG,EAAC,CAAC,GAAG,QAAOQ,KAAE,GAAEX,GAAE,UAAUC,IAAEE,EAAC;AAAE,mBAAIA,MAAIA,KAAEH,GAAE,UAAQ,EAAEA,GAAE,WAAWG,EAAC,CAAC,IAAG,CAAAA;AAAA,YAAG;AAAC,gBAAID,KAAEC;AAAE,gBAAGA,KAAEH,GAAE,WAAS,OAAKA,GAAE,WAAWG,EAAC,KAAG,QAAMH,GAAE,WAAWG,EAAC,GAAG,KAAGA,OAAKA,KAAEH,GAAE,UAAQ,OAAKA,GAAE,WAAWG,EAAC,KAAG,OAAKH,GAAE,WAAWG,EAAC,MAAIA,MAAIA,KAAEH,GAAE,UAAQ,EAAEA,GAAE,WAAWG,EAAC,CAAC,GAAE;AAAC,mBAAIA,MAAIA,KAAEH,GAAE,UAAQ,EAAEA,GAAE,WAAWG,EAAC,CAAC,IAAG,CAAAA;AAAI,cAAAD,KAAEC;AAAA,YAAC,MAAM,CAAAQ,KAAE;AAAE,mBAAOX,GAAE,UAAUC,IAAEC,EAAC;AAAA,UAAC;AAAC,mBAAS,IAAG;AAAC,gBAAID,KAAE,IAAGG,KAAED;AAAE,uBAAO;AAAC,kBAAGA,MAAGD,IAAE;AAAC,gBAAAD,MAAGD,GAAE,UAAUI,IAAED,EAAC,GAAEQ,KAAE;AAAE;AAAA,cAAK;AAAC,oBAAML,KAAEN,GAAE,WAAWG,EAAC;AAAE,kBAAG,OAAKG,IAAE;AAAC,gBAAAL,MAAGD,GAAE,UAAUI,IAAED,EAAC,GAAEA;AAAI;AAAA,cAAK;AAAC,kBAAG,OAAKG,IAAE;AAAC,oBAAGA,MAAG,KAAGA,MAAG,IAAG;AAAC,sBAAG,EAAEA,EAAC,GAAE;AAAC,oBAAAL,MAAGD,GAAE,UAAUI,IAAED,EAAC,GAAEQ,KAAE;AAAE;AAAA,kBAAK;AAAC,kBAAAA,KAAE;AAAA,gBAAC;AAAC,gBAAAR;AAAA,cAAG,OAAK;AAAC,oBAAGF,MAAGD,GAAE,UAAUI,IAAED,EAAC,GAAEA,MAAIA,MAAGD,IAAE;AAAC,kBAAAS,KAAE;AAAE;AAAA,gBAAK;AAAC,wBAAOX,GAAE,WAAWG,IAAG,GAAE;AAAA,kBAAC,KAAK;AAAG,oBAAAF,MAAG;AAAI;AAAA,kBAAM,KAAK;AAAG,oBAAAA,MAAG;AAAK;AAAA,kBAAM,KAAK;AAAG,oBAAAA,MAAG;AAAI;AAAA,kBAAM,KAAK;AAAG,oBAAAA,MAAG;AAAK;AAAA,kBAAM,KAAK;AAAI,oBAAAA,MAAG;AAAK;AAAA,kBAAM,KAAK;AAAI,oBAAAA,MAAG;AAAK;AAAA,kBAAM,KAAK;AAAI,oBAAAA,MAAG;AAAK;AAAA,kBAAM,KAAK;AAAI,oBAAAA,MAAG;AAAK;AAAA,kBAAM,KAAK;AAAI,0BAAMD,KAAE,EAAE,CAAC;AAAE,oBAAAA,MAAG,IAAEC,MAAG,OAAO,aAAaD,EAAC,IAAEW,KAAE;AAAE;AAAA,kBAAM;AAAQ,oBAAAA,KAAE;AAAA,gBAAC;AAAC,gBAAAP,KAAED;AAAA,cAAC;AAAA,YAAC;AAAC,mBAAOF;AAAA,UAAC;AAAC,mBAAS,IAAG;AAAC,gBAAGG,KAAE,IAAGO,KAAE,GAAEL,KAAEH,IAAEK,KAAED,IAAEG,KAAED,IAAEN,MAAGD,GAAE,QAAOI,KAAEJ,IAAEG,KAAE;AAAG,gBAAIJ,KAAED,GAAE,WAAWG,EAAC;AAAE,gBAAG,GAAGF,EAAC,GAAE;AAAC,iBAAE;AAAC,gBAAAE,MAAIC,MAAG,OAAO,aAAaH,EAAC,GAAEA,KAAED,GAAE,WAAWG,EAAC;AAAA,cAAC,SAAO,GAAGF,EAAC;AAAG,qBAAOI,KAAE;AAAA,YAAE;AAAC,gBAAG,EAAEJ,EAAC,EAAE,QAAOE,MAAIC,MAAG,OAAO,aAAaH,EAAC,GAAE,OAAKA,MAAG,OAAKD,GAAE,WAAWG,EAAC,MAAIA,MAAIC,MAAG,OAAMG,MAAIE,KAAEN,IAAEE,KAAE;AAAG,oBAAOJ,IAAE;AAAA,cAAC,KAAK;AAAI,uBAAOE,MAAIE,KAAE;AAAA,cAAE,KAAK;AAAI,uBAAOF,MAAIE,KAAE;AAAA,cAAE,KAAK;AAAG,uBAAOF,MAAIE,KAAE;AAAA,cAAE,KAAK;AAAG,uBAAOF,MAAIE,KAAE;AAAA,cAAE,KAAK;AAAG,uBAAOF,MAAIE,KAAE;AAAA,cAAE,KAAK;AAAG,uBAAOF,MAAIE,KAAE;AAAA,cAAE,KAAK;AAAG,uBAAOF,MAAIC,KAAE,EAAE,GAAEC,KAAE;AAAA,cAAG,KAAK;AAAG,sBAAMG,KAAEL,KAAE;AAAE,oBAAG,OAAKH,GAAE,WAAWG,KAAE,CAAC,GAAE;AAAC,uBAAIA,MAAG,GAAEA,KAAED,MAAG,CAAC,EAAEF,GAAE,WAAWG,EAAC,CAAC,IAAG,CAAAA;AAAI,yBAAOC,KAAEJ,GAAE,UAAUQ,IAAEL,EAAC,GAAEE,KAAE;AAAA,gBAAE;AAAC,oBAAG,OAAKL,GAAE,WAAWG,KAAE,CAAC,GAAE;AAAC,kBAAAA,MAAG;AAAE,wBAAMF,KAAEC,KAAE;AAAE,sBAAII,KAAE;AAAG,yBAAKH,KAAEF,MAAG;AAAC,0BAAMA,KAAED,GAAE,WAAWG,EAAC;AAAE,wBAAG,OAAKF,MAAG,OAAKD,GAAE,WAAWG,KAAE,CAAC,GAAE;AAAC,sBAAAA,MAAG,GAAEG,KAAE;AAAG;AAAA,oBAAK;AAAC,oBAAAH,MAAI,EAAEF,EAAC,MAAI,OAAKA,MAAG,OAAKD,GAAE,WAAWG,EAAC,KAAGA,MAAII,MAAIE,KAAEN;AAAA,kBAAE;AAAC,yBAAOG,OAAIH,MAAIQ,KAAE,IAAGP,KAAEJ,GAAE,UAAUQ,IAAEL,EAAC,GAAEE,KAAE;AAAA,gBAAE;AAAC,uBAAOD,MAAG,OAAO,aAAaH,EAAC,GAAEE,MAAIE,KAAE;AAAA,cAAG,KAAK;AAAG,oBAAGD,MAAG,OAAO,aAAaH,EAAC,GAAEE,MAAIA,OAAID,MAAG,CAAC,EAAEF,GAAE,WAAWG,EAAC,CAAC,EAAE,QAAOE,KAAE;AAAA,cAAG,KAAK;AAAA,cAAG,KAAK;AAAA,cAAG,KAAK;AAAA,cAAG,KAAK;AAAA,cAAG,KAAK;AAAA,cAAG,KAAK;AAAA,cAAG,KAAK;AAAA,cAAG,KAAK;AAAA,cAAG,KAAK;AAAA,cAAG,KAAK;AAAG,uBAAOD,MAAG,EAAE,GAAEC,KAAE;AAAA,cAAG;AAAQ,uBAAKF,KAAED,MAAG,EAAED,EAAC,IAAG,CAAAE,MAAIF,KAAED,GAAE,WAAWG,EAAC;AAAE,oBAAGG,OAAIH,IAAE;AAAC,0BAAOC,KAAEJ,GAAE,UAAUM,IAAEH,EAAC,GAAEC,IAAE;AAAA,oBAAC,KAAI;AAAO,6BAAOC,KAAE;AAAA,oBAAE,KAAI;AAAQ,6BAAOA,KAAE;AAAA,oBAAE,KAAI;AAAO,6BAAOA,KAAE;AAAA,kBAAC;AAAC,yBAAOA,KAAE;AAAA,gBAAE;AAAC,uBAAOD,MAAG,OAAO,aAAaH,EAAC,GAAEE,MAAIE,KAAE;AAAA,YAAE;AAAA,UAAC;AAAC,mBAAS,EAAEL,IAAE;AAAC,gBAAG,GAAGA,EAAC,KAAG,EAAEA,EAAC,EAAE,QAAM;AAAG,oBAAOA,IAAE;AAAA,cAAC,KAAK;AAAA,cAAI,KAAK;AAAA,cAAG,KAAK;AAAA,cAAI,KAAK;AAAA,cAAG,KAAK;AAAA,cAAG,KAAK;AAAA,cAAG,KAAK;AAAA,cAAG,KAAK;AAAG,uBAAM;AAAA,YAAE;AAAC,mBAAM;AAAA,UAAE;AAAC,mBAAS,IAAG;AAAC,gBAAIA;AAAE,eAAE;AAAC,cAAAA,KAAE,EAAE;AAAA,YAAC,SAAOA,MAAG,MAAIA,MAAG;AAAI,mBAAOA;AAAA,UAAC;AAAC,iBAAO,EAAE,GAAE,eAAe,GAAE,EAAE,GAAE,aAAa,GAAE,EAAE,GAAE,YAAY,GAAE,EAAE,GAAE,YAAY,GAAE,EAAE,GAAE,UAAU,GAAE,EAAE,GAAE,2BAA2B,GAAE,EAAE,GAAE,mBAAmB,GAAE,EAAC,aAAY,GAAE,aAAY,EAAE,MAAIG,IAAE,aAAa,GAAE,MAAKF,KAAE,IAAE,GAAE,UAAS,EAAE,MAAII,IAAE,UAAU,GAAE,eAAc,EAAE,MAAID,IAAE,eAAe,GAAE,gBAAe,EAAE,MAAIE,IAAE,gBAAgB,GAAE,gBAAe,EAAE,MAAIH,KAAEG,IAAE,gBAAgB,GAAE,mBAAkB,EAAE,MAAIE,IAAE,mBAAmB,GAAE,wBAAuB,EAAE,MAAIF,KAAEI,IAAE,wBAAwB,GAAE,eAAc,EAAE,MAAIC,IAAE,eAAe,EAAC;AAAA,QAAC;AAAC,iBAAS,GAAGX,IAAE;AAAC,iBAAO,OAAKA,MAAG,MAAIA;AAAA,QAAC;AAAC,iBAAS,EAAEA,IAAE;AAAC,iBAAO,OAAKA,MAAG,OAAKA;AAAA,QAAC;AAAC,iBAAS,EAAEA,IAAE;AAAC,iBAAOA,MAAG,MAAIA,MAAG;AAAA,QAAE;AAAC,YAAI,GAAE;AAAE,UAAE,IAAG,eAAe,GAAE,EAAE,IAAG,cAAc,GAAE,EAAE,GAAE,aAAa,GAAE,EAAE,GAAE,SAAS,IAAG,IAAE,MAAI,IAAE,CAAC,IAAI,EAAE,WAAS,EAAE,IAAE,YAAW,EAAE,EAAE,iBAAe,EAAE,IAAE,kBAAiB,EAAE,EAAE,QAAM,EAAE,IAAE,SAAQ,EAAE,EAAE,KAAG,EAAE,IAAE,MAAK,EAAE,EAAE,KAAG,EAAE,IAAE,MAAK,EAAE,EAAE,KAAG,EAAE,IAAE,MAAK,EAAE,EAAE,KAAG,EAAE,IAAE,MAAK,EAAE,EAAE,KAAG,EAAE,IAAE,MAAK,EAAE,EAAE,KAAG,EAAE,IAAE,MAAK,EAAE,EAAE,KAAG,EAAE,IAAE,MAAK,EAAE,EAAE,KAAG,EAAE,IAAE,MAAK,EAAE,EAAE,KAAG,EAAE,IAAE,MAAK,EAAE,EAAE,KAAG,EAAE,IAAE,MAAK,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,GAAG,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,IAAE,EAAE,IAAE,KAAI,EAAE,EAAE,WAAS,E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AAG,IAAG,GAAE,KAAI,GAAE,IAAG,IAAG,IAAG,IAAG,GAAE,GAAE,IAAG,GAAE,IAAG,IAAG,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,IAAG,IAAG,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,GAAE,GAAE,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,GAAE,GAAE,KAAI,IAAG,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,GAAE,IAAG,IAAG,IAAG,GAAE,KAAI,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,IAAG,IAAG,GAAE,GAAE,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,KAAI,IAAG,KAAI,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,KAAI,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,KAAI,GAAE,KAAI,GAAE,IAAG,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,IAAG,GAAE,IAAG,KAAI,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,IAAG,IAAG,MAAK,GAAE,GAAE,IAAG,OAAM,IAAG,MAAK,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,KAAI,GAAE,GAAE,IAAG,GAAE,GAAE,IAAG,GAAE,IAAG,GAAE,OAAM,GAAE,MAAK,GAAE,KAAI,IAAG,GAAE,IAAG,KAAI,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,KAAI,GAAE,MAAK,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,GAAE,IAAG,GAAE,IAAG,GAAE,GAAE,IAAG,MAAK,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,KAAI,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,IAAG,KAAI,IAAG,KAAI,GAAE,GAAE,GAAE,KAAI,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,KAAI,GAAE,KAAI,GAAE,GAAE,GAAE,MAAK,GAAE,QAAO,GAAG,GAAE,IAAE,CAAC,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,IAAG,KAAI,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,IAAG,KAAI,IAAG,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,GAAE,GAAE,IAAG,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,IAAG,GAAE,IAAG,IAAG,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,GAAE,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,IAAG,IAAG,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,IAAG,IAAG,GAAE,IAAG,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,IAAG,IAAG,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,IAAG,IAAG,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,GAAE,KAAI,IAAG,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,IAAG,IAAG,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,IAAG,GAAE,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,IAAG,IAAG,KAAI,IAAG,IAAG,GAAE,GAAE,IAAG,IAAG,GAAE,IAAG,IAAG,KAAI,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,GAAE,IAAG,IAAG,KAAI,IAAG,IAAG,GAAE,GAAE,IAAG,GAAE,IAAG,KAAI,GAAE,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,MAAK,IAAG,IAAG,MAAK,IAAG,GAAE,IAAG,MAAK,GAAE,KAAI,MAAK,IAAG,MAAK,KAAI,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,GAAE,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,MAAK,IAAG,IAAG,IAAG,KAAI,MAAK,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,KAAI,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,KAAI,M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OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,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A;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,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,IACF;AAEA,QAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAM,cAAc,IAAI,OAAO,GAAG,OAC3B,GAAG,QAAQ,KAAK,GAAG,CAAC,SAClB,QAAQ,KAAK,GAAG,CAAC,SAAS,IAAI;AACvC,QAAM,UAAU;AAEhB,IAAAA,QAAO,UAAU,SAAS,aAAaC,OAAM;AAC3C,aAAO,QAAQ,aAAaA,KAAI;AAAA,IAClC;AAAA;AAAA;;;ACrNA,IAAAC,mBAAA;AAAA,sCAAAC,UAAAC,SAAA;AAAA,aAAS,QAAQ,OAAOC,OAAM;AAC5B,YAAM,UAAU,CAAC;AACjB,UAAI,SAAS,MAAM,KAAKA,KAAI;AAE5B,aAAO,QAAQ;AACb,gBAAQ,KAAK,EAAE,OAAO,OAAO,OAAO,QAAQ,OAAO,CAAC,EAAE,OAAO,CAAC;AAC9D,iBAAS,MAAM,KAAKA,KAAI;AAAA,MAC1B;AAEA,aAAO;AAAA,IACT;AAEA,IAAAD,QAAO,UAAU;AAAA;AAAA;;;ACZjB;AAAA,wCAAAE,UAAAC,SAAA;AAAA,QAAM,UAAU;AAEhB,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,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,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,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,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,IACF;AAGA,iBAAa,WAAW,IAAI,CAAC,MAAM,EAAE,QAAQ,MAAM,kBAAkB,CAAC;AACtE,QAAM,aAAa,IAAI,OAAO,aAAa,WAAW,KAAK,GAAG,CAAC,QAAQ,IAAI;AAE3E,IAAAA,QAAO,UAAU,SAAS,YAAYC,OAAM;AAC1C,aAAO,QAAQ,YAAYA,KAAI;AAAA,IACjC;AAAA;AAAA;;;ACvPA,IAAAC,mBAAA;AAAA,uCAAAC,UAAAC,SAAA;AAAA,aAAS,QAAQ,OAAOC,OAAM;AAC5B,YAAM,UAAU,CAAC;AACjB,UAAI,SAAS,MAAM,KAAKA,KAAI;AAE5B,aAAO,QAAQ;AACb,gBAAQ,KAAK,EAAE,OAAO,OAAO,OAAO,QAAQ,OAAO,CAAC,EAAE,OAAO,CAAC;AAC9D,iBAAS,MAAM,KAAKA,KAAI;AAAA,MAC1B;AAEA,aAAO;AAAA,IACT;AAEA,IAAAD,QAAO,UAAU;AAAA;AAAA;;;ACZjB;AAAA,uCAAAE,UAAAC,SAAA;AAAA,QAAI,UAAU;AAAA,MACZ;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,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,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,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,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,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,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,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,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;AAA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;EACA;EACA;CACH;AAGD,IAAM,kCAAqD,OAAO,OAAO;EACrE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACH;AAGD,IAAM,kCAAqD,OAAO,OAAO;EACrE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACH;AAeM,IAAM,yBAAiD,OAAO,OAAO;EACxE,WAAW;EACX,WAAW;CACd;AAGD,IAAM,wBAAwB,CAC1B,aACA,QACA,YACA,6BACS;AACT,MAAI,CAAC,YAAY,WAAW,MAAM,GAAG;AACjC,WAAO;EACX;AAEA,QAAM,gBAAgB,YAAY,OAAO,MAAM;AAE/C,SACI,CAAC,UAAU,aAAa,KACvB,4BAA4B,MAAM,KAAK,aAAa,KACrD,OAAO,YAAY,aAAa;AAExC;AAGA,IAAM,gCAAgC;AAS/B,IAAM,uBAAuB,CAAC,gBAAgC;AACjE,MAAI,YAAY,WAAW,GAAG;AAC1B,WAAO;EACX;AAEA,QAAM,wBAAwB,YAAY,YAAW;AAErD,MACI,gCAAgC,KAAK,CAAC,WAClC,sBACI,uBACA,QACA,mCACA,IAAI,CACP,GAEP;AACE,WAAO;EACX;AAEA,SAAO,gCAAgC,KAAK,CAAC,WACzC,sBACI,uBACA,QACA,mCACA,KAAK,CACR;AAET;AASO,IAAM,wBAAwB,CACjC,YACQ;AAER,QAAM,aAAa,MAAM,KAAK,QAAQ,KAAK;AAE3C,QAAM,yBAAyB,CAC3B,YACA,aACM;AACN,aAASI,SAAQ,YAAYA,SAAQ,UAAUA,UAAS,GAA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;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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA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A,KACF,OAAO,oBAAoB,MAAM,eAAe,OAAO;AAAA,EAC1D;AAEN;;;ACrCO,IAAM,SAAS;AAAA,EACpB;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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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;AACF;;;AC3hCA,IAAME,kBAAiB;AACvB,IAAMC,cAAa;AACnB,IAAMC,cAAa;AACnB,IAAMC,QAAO;AAYN,SAAS,cAAc,QAAQ;AAC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ACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,MAAM,SAAS;AAAA,EAChB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,SAAS,SAAS;AAAA,EACnB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,SAAS,SAAS;AAAA,EACnB,CAAC,SAAS,SAAS;AAAA,EACnB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,MAAM,WAAW;AAAA,EAClB,CAAC,MAAM,SAAS;AAAA,EAChB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,SAAS,SAAS;AAAA,EACnB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,SAAS,SAAS;AAAA,EACnB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,MAAM,UAAU;AAAA,EACjB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,MAAM,QAAQ;AAAA,EACf;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,MAAM,SAAS;AAAA,EAChB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,MAAM,OAAO;AAAA,EACd;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,MAAM,SAAS;AAAA,EAChB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,MAAM,SAAS;AAAA,EAChB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,MAAM,QAAQ;AAAA,EACf;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,SAAS,QAAQ;AAAA,EAClB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,SAAS,qCAAqC;AAAA,EAC/C;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,SAAS,QAAQ;AAAA,EAClB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,MAAM,iBAAiB;AAAA,EACxB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,CAAC,MAAM,OAAO;AAAA,EACd;AAAA,IACC;AAAA,IACA;AAAA,I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",
  "names": ["exports", "node", "keys", "node", "value", "getKeys", "KEYS", "index", "match", "replace", "it", "path", "exports", "o", "exports", "o", "exports", "o", "exports", "o", "exports", "o", "require_eslint_utils", "exports", "exports", "node", "value", "exports", "exports", "AST_NODE_TYPES", "AST_TOKEN_TYPES", "exports", "exports", "exports", "o", "exports", "require_ts_estree", "exports", "require_predicates", "exports", "node", "exports", "exports", "first", "keys", "value", "exports", "defaultOptions", "exports", "exports", "exports", "exports", "value", "exports", "create", "defaultOptions", "require_eslint_utils", "exports", "exports", "exports", "exports", "exports", "module", "exports", "module", "parse", "match", "exports", "module", "disable", "debug", "self", "index", "match", "formatter", "extend", "search", "skip", "exports", "module", "index", "match", "exports", "module", "position", "exports", "module", "min", "version", "exports", "module", "useColors", "debug", "keys", "exports", "module", "exports", "module", "debug", "cache", "require_eslint_visitor_keys", "exports", "node", "keys", "exports", "module", "node", "exports", "module", "ch", "exports", "module", "code", "trail", "exports", "exports", "module", "global", "code", "i", "TokenType", "hasOwnProperty", "toString", "hasOwn", "isArray", "Position", "SourceLocation", "defaultOptions", "text", "Parser", "parse", "node", "ref", "extend", "parseExpressionAt", "tokenizer", "match", "DestructuringErrors", "list", "skip", "ecmaVersion", "value", "first", "close", "TokContext", "index", "base", "empty", "Scope", "Node", "BranchID", "self", "RegExpValidationState", "min", "max", "trail", "count", "Token", "position", "word", "version", "exports", "module", "exports", "module", "plugin", "count", "node", "code", "require_eslint_visitor_keys", "exports", "node", "keys", "exports", "code", "value", "version", "text", "node", "parse", "exports", "module", "string", "require_ast_utils", "exports", "module", "exports", "module", "exports", "module", "require_ast_utils", "exports", "module", "index", "node", "match", "exports", "module", "node", "index", "exports", "module", "value", "node", "first", "exports", "module", "node", "first", "exports", "module", "exports", "module", "node", "exports", "module", "value", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "definition", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "match", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "keys", "text", "node", "exports", "module", "string", "value", "exports", "module", "node", "exports", "module", "node", "first", "exports", "module", "node", "exports", "module", "node", "value", "exports", "module", "node", "exports", "module", "node", "first", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "exports", "module", "node", "value", "exports", "module", "node", "match", "exports", "module", "node", "exports", "module", "node", "exports", "module", "text", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "index", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "order", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "value", "index", "node", "string", "exports", "module", "node", "indent", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "previous", "exports", "module", "text", "node", "match", "index", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "match", "configure", "skip", "exports", "module", "base", "node", "exports", "module", "max", "node", "exports", "module", "node", "exports", "module", "tabWidth", "match", "node", "value", "exports", "module", "max", "text", "exports", "module", "map", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "count", "max", "exports", "module", "node", "exports", "module", "value", "match", "commentTextPrefix", "commentTextStartIndex", "idx", "index", "exports", "module", "node", "exports", "module", "map", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "count", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "min", "max", "version", "value", "code", "trail", "base", "index", "count", "ignoreCase", "node", "global", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "index", "exports", "module", "node", "text", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "path", "value", "exports", "module", "node", "exports", "module", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "index", "node", "exports", "module", "node", "code", "exports", "module", "node", "exports", "module", "node", "isString", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "isString", "exports", "module", "node", "exports", "module", "node", "match", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "definition", "exports", "module", "node", "base", "exports", "module", "node", "value", "exports", "module", "exports", "module", "code", "exports", "module", "code", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "match", "exports", "module", "node", "index", "previous", "match", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "match", "exports", "module", "node", "exports", "module", "value", "exports", "module", "node", "exports", "module", "max", "node", "index", "exports", "module", "index", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "match", "exports", "module", "node", "path", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "match", "exports", "module", "node", "index", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "isString", "node", "match", "index", "exports", "module", "node", "exports", "module", "node", "exports", "module", "define", "value", "match", "index", "close", "ignoreCase", "isString", "path", "cache", "exports", "module", "path", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "value", "exports", "module", "SPACES", "node", "exports", "module", "index", "node", "exports", "module", "node", "exports", "module", "node", "index", "exports", "module", "node", "match", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "index", "exports", "module", "node", "exports", "module", "node", "index", "match", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "definition", "exports", "module", "node", "exports", "module", "debug", "node", "keys", "exports", "module", "node", "root", "exports", "module", "node", "text", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "text", "exports", "module", "node", "exports", "module", "node", "list", "exports", "module", "node", "exports", "module", "index", "self", "exports", "module", "definition", "node", "exports", "module", "node", "definition", "exports", "module", "node", "list", "exports", "module", "node", "path", "group", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "value", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "match", "value", "exports", "module", "node", "exports", "module", "index", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "index", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "value", "node", "first", "exports", "module", "node", "first", "exports", "module", "node", "exports", "module", "match", "node", "value", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "first", "exports", "module", "node", "text", "match", "configure", "pairs", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "base", "node", "text", "exports", "module", "previous", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "text", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "index", "exports", "module", "node", "messageArg", "optionsArg", "exports", "module", "node", "exports", "module", "match", "node", "exports", "module", "index", "node", "exports", "module", "node", "exports", "module", "text", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "text", "exports", "module", "ignoreCase", "node", "index", "exports", "module", "code", "exports", "module", "node", "order", "index", "exports", "module", "ignoreCase", "node", "index", "exports", "module", "node", "exports", "module", "node", "text", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "word", "exports", "module", "escape", "markers", "node", "match", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "text", "exports", "module", "node", "exports", "module", "node", "value", "exports", "module", "node", "value", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "node", "exports", "module", "exports", "module", "ok", "value", "exports", "module", "require_utils", "exports", "module", "search", "index", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "search", "exports", "module", "exports", "module", "count", "exports", "module", "count", "exports", "module", "filter", "skip", "count", "exports", "module", "exports", "module", "assert", "map", "skip", "filter", "count", "node", "index", "exports", "module", "debug", "node", "value", "text", "index", "exports", "module", "debug", "exports", "module", "assert", "create", "list", "count", "exports", "module", "all", "value", "exports", "module", "exports", "module", "index", "exports", "module", "assert", "debug", "node", "preprocess", "postprocess", "exports", "module", "list", "i$", "exports", "module", "map", "filter", "first", "empty", "unique", "concat", "concatMap", "any", "all", "scan", "take", "sum", "max", "min", "last", "i$", "ref$", "len$", "results$", "exports", "module", "keys", "empty", "map", "filter", "value", "values", "exports", "module", "it", "exports", "module", "max", "min", "it", "require_lib", "exports", "module", "exports", "module", "open", "close", "string", "node", "exports", "module", "exports", "module", "any", "all", "it", "ref$", "types", "require_lib", "exports", "module", "exports", "module", "value", "it", "replace", "all", "node", "types", "require_lib", "exports", "module", "parse", "string", "exports", "value", "string", "match", "node", "text", "index", "exports", "module", "first", "text", "match", "node", "index", "cache", "value", "require_source_code", "exports", "module", "exports", "SKIP", "replace", "node", "path", "wrap", "result", "previous", "root", "traverse", "element", "key", "search", "comment", "require_package", "exports", "module", "exports", "node", "exports", "assert", "node", "index", "assign", "previous", "value", "defaultOptions", "version", "exports", "module", "value", "exports", "module", "debug", "node", "text", "match", "exports", "exports", "module", "exports", "module", "index", "value", "exports", "module", "match", "exports", "module", "index", "open", "close", "exports", "module", "cache", "exports", "module", "exports", "exports", "max", "exports", "position", "exports", "unescape", "exports", "i", "acc", "map", "index", "start", "final", "close", "exports", "escape", "exports", "exports", "ext", "path", "filter", "list", "match", "i", "open", "close", "exports", "module", "exports", "module", "value", "first", "exports", "module", "exports", "module", "value", "first", "result", "keys", "exports", "assertPath", "path", "code", "dirname", "base", "normalize", "isAbsolute", "parse", "resolve", "string", "first", "compare", "value", "c", "match", "idx", "open", "close", "exports", "assertPath", "path", "code", "dirname", "base", "isPathSeparator", "normalize", "isAbsolute", "parse", "resolve", "string", "first", "compare", "value", "c", "match", "idx", "open", "close", "require_cjs", "exports", "value", "definition", "first", "merge", "require_cjs", "exports", "value", "debug", "index", "isString", "cache", "path", "normalize", "match", "merge", "sets", "length", "slice", "xl", "x", "join", "subexp", "str", "typeOf", "o", "undefined", "Object", "prototype", "toString", "call", "split", "pop", "shift", "toLowerCase", "toUpperCase", "toArray", "obj", "Array", "setInterval", "assign", "target", "source", "key", "buildExps", "isIRI", "ALPHA$$", "CR$", "DIGIT$$", "DQUOTE$$", "HEXDIG$$", "SP$$", "PCT_ENCODED$", "SUB_DELIMS$$", "RESERVED$$", "GEN_DELIMS$$", "UCSCHAR$$", "SCHEME$", "USERINFO$", "UNRESERVED$$", "DEC_OCTET$", "DEC_OCTET_RELAXED$", "H16$", "LS32$", "IPV4ADDRESS$", "IPV6ADDRESS1$", "IPV6ADDRESS2$", "IPV6ADDRESS3$", "IPV6ADDRESS4$", "IPV6ADDRESS5$", "IPV6ADDRESS6$", "IPV6ADDRESS7$", "IPV6ADDRESS8$", "IPV6ADDRESS9$", "ZONEID$", "IPV6ADDRESS$", "IP_LITERAL$", "IPV6ADDRZ_RELAXED$", "IPVFUTURE$", "HOST$", "REG_NAME$", "PORT$", "AUTHORITY$", "PCHAR$", "SEGMENT$", "SEGMENT_NZ$", "SEGMENT_NZ_NC$", "PATH_ABEMPTY$", "PATH_ABSOLUTE$", "PATH$", "PATH_NOSCHEME$", "PATH_ROOTLESS$", "PATH_EMPTY$", "QUERY$", "IPRIVATE$$", "FRAGMENT$", "HIER_PART$", "URI$", "RELATIVE_PART$", "RELATIVE$", "URI_REFERENCE$", "ABSOLUTE_URI$", "GENERIC_REF$", "RELATIVE_REF$", "ABSOLUTE_REF$", "SAMEDOC_REF$", "AUTHORITY_REF$", "RegExp", "maxInt", "base", "tMin", "tMax", "skew", "damp", "initialBias", "initialN", "delimiter", "regexPunycode", "regexNonASCII", "regexSeparators", "errors", "baseMinusTMin", "floor", "Math", "stringFromCharCode", "String", "fromCharCode", "error", "type", "RangeError", "map", "array", "fn", "result", "mapDomain", "string", "parts", "replace", "labels", "encoded", "ucs2decode", "output", "counter", "value", "charCodeAt", "extra", "push", "ucs2encode", "fromCodePoint", "basicToDigit", "codePoint", "digitToBasic", "digit", "flag", "adapt", "delta", "numPoints", "firstTime", "k", "decode", "input", "inputLength", "i", "n", "bias", "basic", "lastIndexOf", "j", "index", "oldi", "w", "t", "baseMinusT", "out", "splice", "encode", "currentValue", "basicLength", "handledCPCount", "m", "handledCPCountPlusOne", "q", "qMinusT", "toUnicode", "test", "toASCII", "punycode", "SCHEMES", "pctEncChar", "chr", "c", "e", "pctDecChars", "newStr", "il", "parseInt", "substr", "c2", "c3", "_normalizeComponentEncoding", "components", "protocol", "decodeUnreserved", "decStr", "match", "UNRESERVED", "scheme", "PCT_ENCODED", "NOT_SCHEME", "userinfo", "NOT_USERINFO", "host", "NOT_HOST", "path", "NOT_PATH", "NOT_PATH_NOSCHEME", "query", "NOT_QUERY", "fragment", "NOT_FRAGMENT", "_stripLeadingZeros", "_normalizeIPv4", "matches", "IPV4ADDRESS", "address", "_normalizeIPv6", "IPV6ADDRESS", "zone", "reverse", "last", "first", "firstFields", "lastFields", "isLastFieldIPv4Address", "fieldCount", "lastFieldsStart", "fields", "allZeroFields", "reduce", "acc", "field", "lastLongest", "longestZeroFields", "sort", "a", "b", "newHost", "newFirst", "newLast", "URI_PARSE", "NO_MATCH_IS_UNDEFINED", "parse", "uriString", "options", "iri", "IRI_PROTOCOL", "URI_PROTOCOL", "reference", "port", "isNaN", "indexOf", "schemeHandler", "unicodeSupport", "domainHost", "_recomposeAuthority", "uriTokens", "_", "$1", "$2", "RDS1", "RDS2", "RDS3", "RDS5", "removeDotSegments", "im", "s", "Error", "serialize", "authority", "charAt", "absolutePath", "resolveComponents", "relative", "skipNormalization", "tolerant", "resolve", "baseURI", "relativeURI", "schemelessOptions", "normalize", "uri", "equal", "uriA", "uriB", "escapeComponent", "ESCAPE", "unescapeComponent", "handler", "secure", "http", "isSecure", "wsComponents", "resourceName", "ws", "O", "ATEXT$$", "QTEXT$$", "VCHAR$$", "SOME_DELIMS$$", "NOT_LOCAL_PART", "NOT_HFNAME", "NOT_HFVALUE", "mailtoComponents", "to", "unknownHeaders", "headers", "hfields", "hfield", "toAddrs", "subject", "body", "addr", "toAddr", "atIdx", "localPart", "domain", "name", "URN_PARSE", "urnComponents", "nid", "nss", "urnScheme", "uriComponents", "UUID", "uuidComponents", "uuid", "https", "wss", "mailto", "urn", "exports", "module", "keys", "exports", "module", "value", "exports", "module", "code", "path", "exports", "module", "exports", "module", "exports", "module", "URI", "resolve", "root", "count", "normalize", "self", "exports", "module", "resolve", "exports", "module", "node", "keys", "value", "exports", "module", "it", "$rulesGroup", "$rule", "exports", "module", "resolve", "root", "self", "patterns", "localRefs", "baseId", "v", "refVal", "code", "index", "value", "schema", "it", "compile", "exports", "module", "Cache", "value", "exports", "module", "URI", "URL", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "$sch", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "it", "exports", "module", "require_rules", "exports", "module", "exports", "module", "exports", "module", "self", "ref", "exports", "module", "it", "exports", "module", "exports", "module", "require_keyword", "exports", "module", "definition", "keyword", "dataType", "i", "require_data", "exports", "module", "exports", "module", "resolve", "self", "root", "serialize", "text", "exports", "module", "require_ajv", "exports", "module", "exports", "module", "exports", "module", "version", "value", "result", "plugin", "exports", "module", "match", "node", "index", "exports", "module", "debug", "text", "exports", "module", "exports", "originalLength", "baseLength", "exports", "module", "exports", "module", "value", "VFile", "path", "exports", "module", "exports", "extension", "exports", "module", "path", "VFile", "exports", "module", "value", "exports", "module", "clone", "exports", "Syntax", "VisitorOption", "VisitorKeys", "BREAK", "SKIP", "REMOVE", "deepCopy", "obj", "key", "val", "ret", "hasOwnProperty", "Reference", "parent", "this", "Element", "node", "path", "wrap", "ref", "Controller", "isNode", "type", "isProperty", "nodeType", "ObjectExpression", "ObjectPattern", "candidateExistsInLeaveList", "leavelist", "candidate", "i", "length", "traverse", "root", "visitor", "extendCommentRange", "comment", "tokens", "target", "array", "func", "diff", "len", "current", "token", "range", "extendedRange", "AssignmentExpression", "AssignmentPattern", "ArrayExpression", "ArrayPattern", "ArrowFunctionExpression", "AwaitExpression", "BlockStatement", "BinaryExpression", "BreakStatement", "CallExpression", "CatchClause", "ChainExpression", "ClassBody", "ClassDeclaration", "ClassExpression", "ComprehensionBlock", "ComprehensionExpression", "ConditionalExpression", "ContinueStatement", "DebuggerStatement", "DirectiveStatement", "DoWhileStatement", "EmptyStatement", "ExportAllDeclaration", "ExportDefaultDeclaration", "ExportNamedDeclaration", "ExportSpecifier", "ExpressionStatement", "ForStatement", "ForInStatement", "ForOfStatement", "FunctionDeclaration", "FunctionExpression", "GeneratorExpression", "Identifier", "IfStatement", "ImportExpression", "ImportDeclaration", "ImportDefaultSpecifier", "ImportNamespaceSpecifier", "ImportSpecifier", "Literal", "LabeledStatement", "LogicalExpression", "MemberExpression", "MetaProperty", "MethodDefinition", "ModuleSpecifier", "NewExpression", "PrivateIdentifier", "Program", "Property", "PropertyDefinition", "RestElement", "ReturnStatement", "SequenceExpression", "SpreadElement", "Super", "SwitchStatement", "SwitchCase", "TaggedTemplateExpression", "TemplateElement", "TemplateLiteral", "ThisExpression", "ThrowStatement", "TryStatement", "UnaryExpression", "UpdateExpression", "VariableDeclaration", "VariableDeclarator", "WhileStatement", "WithStatement", "YieldExpression", "Break", "Skip", "Remove", "prototype", "replace", "remove", "Array", "isArray", "splice", "iz", "j", "jz", "result", "addToPath", "push", "__current", "__leavelist", "parents", "__execute", "callback", "element", "previous", "__state", "call", "notify", "flag", "skip", "__initialize", "__worklist", "__fallback", "fallback", "Object", "keys", "__keys", "assign", "create", "worklist", "current2", "candidates", "sentinel", "pop", "enter", "Error", "leave", "outer", "removeElem", "nextElem", "attachComments", "tree", "providedComments", "cursor", "comments", "leadingComments", "trailingComments", "cloneEnvironment", "module", "peg$SyntaxError", "message", "expected", "found", "location", "name", "captureStackTrace", "child", "ctor", "constructor", "buildMessage", "DESCRIBE_EXPECTATION_FNS", "literal", "expectation", "literalEscape", "text", "class", "escapedParts", "parts", "classEscape", "inverted", "any", "end", "other", "description", "hex", "ch", "charCodeAt", "toString", "toUpperCase", "s", "descriptions", "sort", "slice", "join", "SyntaxError", "parse", "input", "options", "peg$result", "peg$FAILED", "peg$startRuleFunctions", "start", "peg$parsestart", "peg$startRuleFunction", "peg$c3", "peg$literalExpectation", "peg$c4", "peg$c5", "peg$classExpectation", "peg$c8", "peg$c11", "peg$c14", "peg$c18", "peg$c19", "ss", "concat", "map", "peg$c23", "peg$c26", "peg$c29", "peg$c32", "peg$c34", "peg$c36", "peg$c37", "peg$c39", "peg$c40", "a", "peg$c41", "peg$c42", "peg$c44", "peg$c46", "op", "value", "operator", "peg$c49", "peg$c50", "peg$c51", "peg$c53", "peg$c54", "peg$c55", "b", "peg$c56", "d", "match", "peg$c58", "peg$c59", "peg$c60", "peg$c61", "peg$c62", "peg$c66", "peg$c67", "peg$c68", "peg$c70", "peg$c72", "peg$c73", "peg$c75", "peg$c77", "peg$c78", "peg$c81", "peg$c82", "peg$c86", "peg$c89", "peg$c90", "selectors", "peg$c92", "peg$c94", "peg$c97", "peg$c100", "peg$c103", "peg$c106", "peg$c109", "peg$currPos", "peg$posDetailsCache", "line", "column", "peg$maxFailPos", "peg$maxFailExpected", "peg$silentFails", "startRule", "ignoreCase", "peg$computePosDetails", "pos", "p", "details", "peg$computeLocation", "startPos", "endPos", "startPosDetails", "endPosDetails", "offset", "peg$fail", "s0", "s1", "s2", "cached", "peg$resultsCache", "nextPos", "peg$parse_", "peg$parseselectors", "peg$parseidentifierName", "test", "charAt", "peg$parsebinaryOp", "s3", "s4", "s5", "s6", "s7", "peg$parseselector", "peg$parsehasSelector", "left", "right", "peg$parsesequence", "reduce", "memo", "rhs", "subject", "as", "peg$parseatom", "peg$parsewildcard", "peg$parseidentifier", "peg$parseattrName", "peg$parseattrEqOps", "substr", "peg$parsetype", "flgs", "peg$parsere_character_class", "peg$parsere_escape", "peg$parsere_chars", "peg$parseflags", "RegExp", "peg$parseregex", "peg$parseattrOps", "peg$parsestring", "leadingDecimals", "apply", "parseFloat", "peg$parsenumber", "peg$parsepath", "peg$parseattrValue", "peg$parseattr", "peg$parsefield", "peg$parsenegation", "peg$parsematches", "peg$parseis", "peg$parsehasSelectors", "peg$parsehas", "nth", "peg$parsefirstChild", "nthLast", "peg$parselastChild", "parseInt", "peg$parsenthChild", "peg$parsenthLastChild", "peg$parseclass", "n", "index", "factory", "getPath", "MATCHER_CACHE", "WeakMap", "getMatcher", "selector", "matcher", "get", "generateMatcher", "set", "toLowerCase", "ancestry", "nodeTypeKey", "split", "inPath", "ancestor", "fromPathIndex", "field", "k", "matchers", "estraverse", "unshift", "shift", "visitorKeys", "l", "_typeof", "sibling", "adjacent", "nthChild", "matchClass", "getVisitorKeys", "filter", "side", "_slicedToArray", "listProp", "startIndex", "indexOf", "lowerBound", "upperBound", "idx", "ast", "altSubjects", "subjects", "results", "sel", "_toConsumableArray", "m", "succeedingAncestry", "parser", "query", "matches", "exports", "module", "root", "parse", "node", "exports", "module", "parse", "node", "exports", "module", "index", "text", "exports", "module", "text", "exports", "module", "assert", "text", "exports", "module", "path", "debug", "VFile", "value", "node", "index", "defaultOptions", "text", "preprocess", "postprocess", "require_linter", "exports", "module", "exports", "module", "match", "exports", "module", "exports", "first", "value", "require_src", "exports", "module", "keys", "isArray", "promises", "key", "value", "index", "keyPrefixed", "require_cjs", "exports", "keys", "value", "resolver", "index", "parse", "text", "replace", "require_utils", "exports", "module", "path", "exports", "module", "path", "require_cache", "exports", "module", "path", "cache", "value", "keys", "require_cache", "exports", "module", "path", "cache", "removeNotFoundFiles", "keys", "exports", "module", "value", "node", "indent", "isArray", "keys", "exports", "module", "assert", "debug", "exports", "module", "value", "node", "exports", "module", "resolve", "exports", "module", "value", "exports", "module", "path", "promisify", "exports", "module", "promisify", "path", "exports", "module", "path", "root", "exports", "module", "e", "t", "i", "n", "a", "l", "c", "y", "E", "w", "C", "S", "I", "N", "O", "j", "F", "createJiti", "B", "$", "it", "fileURLToPath", "pathToFileURL", "escapeStringRegexp", "debug", "_createJiti", "require_package", "exports", "module", "exports", "module", "path", "pathToFileURL", "debug", "createJiti", "version", "exports", "module", "path", "value", "dirPath", "directoryFilter", "entryFilter", "resolve", "value", "count", "nativeFsp", "value", "path", "init_src", "exports", "module", "path", "debug", "patterns", "value", "hfs", "promises", "index", "cache", "text", "plugin", "exports", "MAX_TASK_TIMEOUT", "MAX_TASK_DELAY", "MAX_CONCURRENCY", "debug", "isTimeToRetry", "isTimeToBail", "createPromise", "resolve", "RetryTask", "Retrier", "value", "count", "exports", "createRequire", "resolve", "exports", "module", "path", "pathToFileURL", "version", "Retrier", "resolve", "debug", "index", "promises", "patterns", "code", "formatter", "exports", "module", "exports", "module", "assert", "readFileSync", "path", "hasOwnProperty", "text", "node", "isArray", "value", "content", "code", "previous", "hasSuggestions", "index", "require_rule_tester", "exports", "module", "exports", "module", "exports", "module", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "require_eslint_visitor_keys", "exports", "node", "keys", "exports", "exports", "o", "require_dist", "exports", "require_assert", "exports", "assert", "value", "exports", "exports", "node", "exports", "DefinitionType", "exports", "node", "exports", "node", "exports", "exports", "node", "exports", "node", "exports", "node", "exports", "node", "exports", "node", "exports", "node", "exports", "node", "exports", "node", "exports", "node", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "require_lib", "exports", "exports", "exports", "exports", "require_lib", "exports", "exports", "ReferenceFlag", "ReferenceTypeFlag", "exports", "exports", "exports", "exports", "exports", "exports", "ScopeType", "exports", "resolve", "node", "assign", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "node", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "node", "exports", "node", "exports", "node", "exports", "node", "exports", "node", "exports", "node", "exports", "node", "exports", "definition", "node", "exports", "exports", "exports", "node", "exports", "require_dist", "exports", "require_Scope", "exports", "o", "Scope", "exports", "exports", "exports", "isArray", "exports", "exports", "require_dist", "exports", "o", "require_format", "exports", "module", "exports", "module", "hasOwn", "isArray", "isPlainObject", "setProperty", "getProperty", "extend", "exports", "module", "root", "pluralize", "word", "match", "index", "replace", "count", "single", "exports", "module", "exports", "module", "global", "window", "document", "normalize", "charmap", "code", "exports", "node", "exports", "SKIP", "visit", "node", "path", "require_directives", "exports", "visit", "onError", "handle", "version", "node", "exports", "visit", "root", "node", "exports", "exports", "value", "res", "exports", "count", "res", "exports", "visit", "node", "anchors", "count", "exports", "value", "exports", "value", "match", "map", "node", "exports", "path", "value", "it", "node", "exports", "indent", "exports", "text", "indent", "i", "end", "exports", "value", "indent", "code", "blockQuote", "exports", "match", "node", "exports", "value", "indent", "flow", "exports", "debug", "exports", "merge", "value", "map", "it", "exports", "merge", "map", "value", "node", "exports", "value", "exports", "flow", "stringify", "indent", "comment", "str", "exports", "it", "map", "add", "value", "node", "exports", "map", "onError", "exports", "value", "idx", "it", "exports", "seq", "onError", "exports", "string", "value", "exports", "value", "exports", "value", "exports", "value", "exports", "value", "node", "exports", "value", "node", "exports", "map", "string", "require_schema", "exports", "map", "value", "onError", "exports", "value", "onError", "exports", "onError", "pairs", "it", "value", "keys", "exports", "pairs", "map", "value", "omap", "onError", "require_bool", "exports", "value", "require_float", "exports", "value", "node", "require_int", "exports", "value", "n", "node", "exports", "value", "set", "map", "onError", "exports", "res", "node", "value", "match", "require_schema", "exports", "map", "string", "merge", "pairs", "exports", "map", "string", "merge", "pairs", "keys", "tags", "exports", "map", "string", "merge", "exports", "exports", "value", "version", "path", "node", "flow", "count", "res", "exports", "code", "count", "exports", "flow", "onError", "exports", "it", "exports", "indent", "onError", "exports", "search", "exports", "onError", "map", "value", "exports", "onError", "value", "node", "exports", "onError", "exports", "onError", "value", "map", "exports", "onError", "node", "exports", "onError", "content", "value", "end", "indent", "first", "exports", "onError", "value", "code", "first", "match", "ok", "exports", "onError", "value", "tag", "exports", "exports", "onError", "node", "exports", "value", "onError", "exports", "code", "it", "exports", "onError", "code", "value", "indent", "exports", "value", "exports", "SKIP", "visit", "path", "index", "exports", "exports", "isEmpty", "indent", "i", "ch", "exports", "exports", "list", "it", "map", "start", "indent", "exports", "lineCounter", "parse", "value", "indent", "require_dist", "exports", "visit", "require_unicode", "exports", "module", "require_util", "exports", "module", "exports", "module", "root", "parse", "text", "value", "key", "token", "c", "escape", "buffer", "count", "push", "require_stringify", "exports", "module", "value", "indent", "keys", "require_lib", "exports", "module", "parse", "JSON5", "exports", "module", "text", "exports", "module", "text", "exports", "module", "text", "exports", "module", "text", "require_matcher", "exports", "module", "text", "exports", "module", "text", "require_matcher", "exports", "module", "text", "exports", "module", "text", "exports", "module", "text", "exports", "module", "word", "text", "match", "exports", "module", "text", "match", "exports", "module", "text", "match", "exports", "module", "index", "parse", "exports", "module", "filter", "text", "index", "writeGood", "value", "value", "string", "value", "index", "value", "ok", "index", "any", "all", "node", "value", "is", "node", "index", "value", "visit", "node", "index", "emptyNodes", "toString", "value", "index", "index", "position", "previous", "toString", "handler", "index", "node", "position", "word", "phrases", "emptyNodes", "toString", "value", "index", "value", "open", "close", "index", "list", "point", "node", "patterns", "normalize", "node", "handle", "match", "position", "toString", "index", "index", "value", "code", "formatter", "own", "index", "flow", "index", "matter", "code", "ok", "self", "position", "bufferIndex", "string", "exit", "index", "matter", "open", "node", "fence", "close", "handle", "pick", "emptyOptions", "self", "value", "count", "index", "escapeStringRegexp", "string", "list", "pairs", "node", "index", "handler", "replace", "match", "position", "value", "escapeStringRegexp", "node", "domain", "path", "match", "trail", "code", "value", "node", "value", "exit", "index", "node", "exit", "value", "value", "row", "sizes", "columnIndex", "code", "node", "exit", "value", "list", "index", "index", "value", "index", "count", "max", "node", "node", "exit", "value", "map", "node", "exit", "value", "code", "code", "node", "exit", "open", "close", "emptyOptions", "toString", "value", "index", "node", "toString", "node", "exit", "subexit", "value", "node", "node", "exit", "value", "node", "exit", "value", "node", "value", "index", "match", "position", "node", "toString", "node", "exit", "value", "node", "exit", "value", "text", "node", "exit", "index", "value", "node", "exit", "value", "map", "index", "node", "exit", "value", "node", "node", "exit", "open", "close", "node", "value", "own", "value", "value", "base", "code", "value", "head", "value", "node", "exit", "index", "node", "index", "value", "list", "all", "index", "extension", "code", "value", "list", "path", "text", "code", "ok", "self", "trail", "index", "constructs", "index", "resolve", "index", "open", "text", "ok", "attentionMarkers", "previous", "code", "close", "point", "ok", "code", "open", "ok", "max", "code", "ok", "code", "exit", "ok", "self", "code", "ok", "code", "ok", "self", "max", "code", "open", "value", "ok", "self", "code", "effects", "nok", "start", "ok", "self", "code", "furtherStart", "previous", "index", "code", "ok", "self", "index", "count", "list", "index", "previous", "start", "ok", "previous", "code", "self", "ok", "max", "code", "ok", "self", "code", "ok", "code", "escape", "ok", "code", "definition", "ok", "self", "code", "titleBefore", "ok", "code", "content", "text", "ok", "code", "index", "ok", "self", "code", "open", "value", "ok", "self", "index", "code", "open", "value", "index", "open", "close", "text", "ok", "self", "code", "ok", "self", "code", "open", "ok", "self", "code", "ok", "code", "thematicBreak", "ok", "code", "list", "ok", "self", "code", "thematicBreak", "index", "content", "text", "definition", "heading", "ok", "self", "code", "paragraph", "tokenizeIndent", "ok", "self", "index", "code", "string", "single", "index", "open", "text", "insideSpan", "ok", "previous", "code", "index", "add", "index", "ok", "self", "code", "index", "map", "ok", "self", "open", "code", "close", "emptyOptions", "self", "content", "previous", "code", "document", "self", "code", "point", "index", "ok", "self", "code", "text", "self", "constructs", "code", "list", "index", "document", "flow", "string", "text", "document", "list", "definition", "flow", "thematicBreak", "string", "text", "point", "exit", "value", "code", "constructs", "map", "all", "list", "ok", "from", "index", "constructs", "create", "content", "document", "text", "search", "value", "match", "code", "value", "position", "point", "own", "value", "opener", "link", "heading", "blockQuote", "codeText", "definition", "emphasis", "hardBreak", "html", "image", "listItem", "list", "paragraph", "strong", "thematicBreak", "exit", "index", "handler", "point", "create", "open", "node", "close", "toString", "data", "text", "string", "extension", "self", "emptyNodes", "toString", "value", "index", "emptyNodes", "toString", "value", "index", "own", "index", "node", "index", "index", "previous", "position", "node", "value", "toString", "index", "previous", "first", "toString", "index", "position", "node", "toString", "index", "previous", "visit", "index", "index", "index", "toString", "previous", "index", "previous", "toString", "index", "previous", "position", "node", "toString", "index", "toString", "index", "toString", "previous", "position", "value", "index", "previous", "position", "toString", "index", "previous", "toString", "count", "index", "position", "previous", "index", "toString", "node", "position", "toString", "previous", "index", "index", "node", "value", "paragraph", "index", "previous", "node", "toString", "first", "index", "paragraph", "word", "toString", "value", "sibling", "self", "value", "parser", "list", "value", "pipeline", "index", "value", "index", "import_node_path", "import_node_url", "value", "index", "field", "dirname", "path", "decoder", "self", "value", "own", "index", "extend", "value", "self", "resolve", "file", "tree", "compiler", "add", "plugin", "parameters", "node", "isUint8Array", "value", "filter", "index", "node", "text", "plugin", "en_default", "emptyNodes", "toString", "value", "index", "emptyOptions", "emptyList", "createPlugin", "handle", "match", "toString", "add", "key", "value", "createPlugin", "pluralize", "en_default", "retextRuleListSchema", "sentenceWeight", "base", "percentage", "sentenceWeight", "wordWeight", "base", "emptyNodes", "toString", "value", "index", "weight", "base", "sentenceWeight", "wordWeight", "percentage", "base", "import_pluralize", "own", "value", "normalize", "index", "one", "count", "pluralize", "emptyOptions", "node", "value", "toString", "index", "combine", "done", "value", "reduce", "first", "fn", "root", "word", "found", "matchCase", "i", "caseMatched", "node", "s", "root", "empty", "node", "text", "idx", "s", "entries", "word", "root", "ImplITrieNode", "node", "keys", "word", "keys", "compare", "value", "map", "normalize", "word", "opMap", "text", "match", "filter", "ignoreCase", "word", "timeout", "value", "maxCost", "root", "debug", "node", "weightMap", "n", "GTrie", "keys", "index", "idx", "StringTableBuilder", "forms", "code", "codes", "Utf8Accumulator", "CharIndex", "map", "list", "count", "nodeIdx", "resolve", "value", "text", "toUint8Array", "TrieBlobINode", "node", "idx", "word", "TrieBlob", "count", "offset", "i", "compare", "nodes", "TrieBlobBuilder", "pos", "root", "map", "code", "ITrieImpl", "filter", "word", "root", "text", "node", "root", "word", "root", "n", "root", "n", "r", "node", "word", "CTrieRoot", "count", "process", "root", "word", "TrieNodeTrie", "root", "word", "node", "i", "fnMap", "index", "map", "all", "ImplSequence", "iter", "splitLine", "decodeLine", "root", "iter", "base", "decodeLine", "root", "iter", "value", "root", "acc", "s", "nodes", "node", "map", "node", "acc", "toUint8Array", "match", "version", "text", "text", "ignoreCase", "isString", "idx", "word", "forms", "paragraph", "text", "base", "line", "forms", "normalizeMap", "map", "costs", "pairs", "value", "cs", "word", "word", "text", "word", "ignoreCase", "forms", "word", "forms", "ignoreCase", "map", "resolve", "value", "isDefined", "hasOwnProperty", "isCircular", "cache", "sameValueEqual", "index", "toString", "areArraysEqual", "areDatesEqual", "areMapsEqual", "areObjectsEqual", "areRegExpsEqual", "areSetsEqual", "compare", "cache", "areArrayBuffersEqual", "areDataViewsEqual", "areErrorsEqual", "arePrimitiveWrappersEqual", "areTypedArraysEqual", "areUrlsEqual", "symbolCSpell", "globalThisCSpell", "_measurePerfStart", "_measurePerfEnd", "measurePerf", "isEnabledPerformanceMeasurements", "makeDisposableFunction", "isEnabledPerformanceMeasurements", "globalThisCSpell", "symbolCSpell", "value", "clean", "match", "resolve", "index", "map", "word", "root", "node", "isDefined", "word", "ignoreCase", "forms", "findResult", "filter", "clean", "measurePerf", "measurePerf", "opAppendSync", "opCombineSync", "combine", "opConcatMapSync", "done", "value", "opFilterSync", "value", "opMapSync", "value", "pipeSync", "opCombineSync", "word", "value", "unique", "s", "isDefined", "pipeSync", "opFilterSync", "opConcatMapSync", "assert", "assert", "normalize", "value", "assert", "isIterable", "content", "isIterable", "pipeSync", "opAppendSync", "word", "index", "word", "ignoreCase", "createCache", "pipeSync", "opFilterSync", "opMapSync", "word", "ignoreCase", "createCache", "word", "ignoreCase", "filter", "isDefined", "unique", "pipeSync", "word", "index", "createCache", "isDefined", "import_node_path", "import_node_url", "path", "idx", "Path", "assert", "pathname", "path", "first", "value", "value", "import_node_url", "value", "toUint8Array", "decode", "CFileResource", "content", "text", "encoding", "baseFilename", "gz", "value", "match", "FetchUrlError", "code", "content", "content", "pipeline", "regExAllUpper", "regExAccents", "escape", "char", "assertPath", "path", "TypeError", "JSON", "stringify", "normalizeStringPosix", "allowAboveRoot", "code", "res", "lastSegmentLength", "lastSlash", "dots", "i", "length", "charCodeAt", "lastSlashIndex", "lastIndexOf", "slice", "posix", "resolve", "cwd", "resolvedPath", "resolvedAbsolute", "arguments", "process", "normalize", "isAbsolute", "trailingSeparator", "join", "joined", "arg", "relative", "from", "to", "fromStart", "fromEnd", "fromLen", "toStart", "toLen", "lastCommonSep", "fromCode", "out", "_makeLong", "dirname", "hasRoot", "end", "matchedSlash", "basename", "ext", "start", "extIdx", "firstNonSlashEnd", "extname", "startDot", "startPart", "preDotState", "format", "pathObject", "sep", "dir", "root", "base", "name", "parse", "ret", "delimiter", "win32", "module", "exports", "__webpack_module_cache__", "__webpack_require__", "moduleId", "cachedModule", "__webpack_modules__", "d", "definition", "key", "o", "Object", "defineProperty", "enumerable", "get", "obj", "prop", "prototype", "hasOwnProperty", "call", "r", "Symbol", "toStringTag", "value", "isWindows", "platform", "navigator", "userAgent", "indexOf", "_schemePattern", "_singleSlashStart", "_doubleSlashStart", "_validateUri", "_strict", "scheme", "Error", "authority", "query", "fragment", "test", "_empty", "_slash", "_regexp", "URI", "thing", "fsPath", "with", "toString", "schemeOrData", "this", "uriToFsPath", "change", "Uri", "match", "exec", "percentDecode", "replace", "idx", "substring", "components", "result", "skipEncoding", "_asFormatted", "toJSON", "data", "_formatted", "external", "_fsPath", "_sep", "_pathSepMarker", "$mid", "encodeTable", "encodeURIComponentFast", "uriComponent", "isPath", "isAuthority", "nativeEncodePos", "pos", "encodeURIComponent", "charAt", "substr", "escaped", "encodeURIComponentMinimal", "uri", "keepDriveLetterCasing", "toLowerCase", "encoder", "userinfo", "String", "fromCharCode", "decodeURIComponentGraceful", "str", "decodeURIComponent", "_rEncodedAsHex", "posixPath", "slash", "Utils", "t", "joinPath", "paths", "resolvePath", "slashAdded", "import_node_assert", "isWindows", "path", "keys", "path", "base", "isWindows", "assert", "text", "word", "word", "match", "text", "pipeSync", "opMapSync", "textOffset", "opConcatMapSync", "isUpperCase", "regExAllUpper", "ucFirst", "removeAccents", "regExAccents", "isUpperCase", "match", "removeAccents", "ucFirst", "import_node_fs", "import_node_module", "path", "import_node_url", "import_node_zlib", "value", "JSON5", "content", "parseYaml", "definition", "text", "word", "createSuggestOptions", "text", "text", "writeGoodModule", "isRecord", "value", "version", "plugin"]
}
